├── .changeset ├── README.md └── config.json ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.yaml │ └── feature_request.yaml ├── renovate.json └── workflows │ ├── lint.yml │ ├── release.yml │ └── run-tests.yml ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .vscode └── settings.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── eslint.config.js ├── package.json ├── playground ├── .gitignore ├── .npmrc ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src │ ├── app.d.ts │ ├── app.html │ ├── lib │ │ └── index.ts │ └── routes │ │ ├── +layout.svelte │ │ ├── +page.server.ts │ │ ├── +page.svelte │ │ ├── Component.svelte │ │ ├── reset │ │ └── +server.ts │ │ └── values.ts ├── static │ └── favicon.png ├── svelte.config.js ├── tsconfig.json └── vite.config.ts ├── playwright.config.ts ├── pnpm-lock.yaml ├── src ├── app.d.ts ├── app.html ├── index.test.ts ├── lib │ ├── index.ts │ └── optimistikit.svelte.ts └── routes │ └── +page.svelte ├── static └── favicon.png ├── svelte.config.js ├── tests ├── extends.ts └── index.test.ts ├── tsconfig.json └── vite.config.ts /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "public", 8 | "baseBranch": "main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } 12 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: paoloricciuti 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yaml: -------------------------------------------------------------------------------- 1 | name: "\U0001F41E Bug report" 2 | description: Report an issue 3 | body: 4 | - type: markdown 5 | attributes: 6 | value: | 7 | First thing first, thanks for reporting! 8 | - type: textarea 9 | id: bug-description 10 | attributes: 11 | label: Describe the bug 12 | description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description. Thanks! 13 | placeholder: Bug description 14 | validations: 15 | required: true 16 | - type: textarea 17 | id: reproduction 18 | attributes: 19 | label: Reproduction 20 | description: Please provide a link to a repo or better a stackblitz/replit that can reproduce the problem you ran into. This will speed up the fixing. 21 | placeholder: Reproduction 22 | validations: 23 | required: true 24 | - type: textarea 25 | id: logs 26 | attributes: 27 | label: Logs 28 | description: 'Please include browser console and server logs around the time this bug occurred. Optional if provided reproduction. Please try not to insert an image but copy paste the log text.' 29 | render: shell 30 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yaml: -------------------------------------------------------------------------------- 1 | name: "\U0001F4A1 Feature Request" 2 | description: Request a new feature 3 | body: 4 | - type: markdown 5 | attributes: 6 | value: | 7 | Thank you for taking the time to propose a new idea 8 | - type: textarea 9 | id: problem 10 | attributes: 11 | label: Describe the problem 12 | description: Please provide a clear and concise description the problem this feature would solve. The more information you can provide here, the better. 13 | placeholder: I would like to... 14 | validations: 15 | required: true 16 | - type: textarea 17 | id: solution 18 | attributes: 19 | label: Describe the proposed solution 20 | description: Try to provide a description of the API you would like to see implemented 21 | placeholder: I would like to see... 22 | validations: 23 | required: true 24 | -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": ["config:recommended", "group:linters", ":labels(maintenance,renovatebot)"], 4 | "rangeStrategy": "replace" 5 | } 6 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint 2 | on: 3 | push: 4 | branches: [main] 5 | pull_request: 6 | branches: [main] 7 | jobs: 8 | test: 9 | timeout-minutes: 60 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | - uses: pnpm/action-setup@v4 14 | with: 15 | version: 9 16 | - uses: actions/setup-node@v4 17 | with: 18 | node-version: 20 19 | - name: Install dependencies 20 | run: pnpm install --frozen-lockfile 21 | - name: Run Playwright tests 22 | run: pnpm lint 23 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Publish 2 | on: 3 | push: 4 | branches: 5 | - 'main' 6 | - 'legacy' 7 | 8 | concurrency: ${{ github.workflow }}-${{ github.ref }} 9 | 10 | jobs: 11 | publish: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4 15 | - uses: pnpm/action-setup@v4 16 | with: 17 | version: 9 18 | - uses: actions/setup-node@v4 19 | with: 20 | node-version: 22.x 21 | cache: 'pnpm' 22 | 23 | - run: pnpm install --frozen-lockfile 24 | - name: Create Release Pull Request or Publish 25 | id: changesets 26 | uses: changesets/action@v1 27 | with: 28 | publish: pnpm run release 29 | env: 30 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 31 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 32 | RELEASE_TAG: ${{ github.ref == 'refs/heads/legacy' && '--tag legacy' || '' }} 33 | -------------------------------------------------------------------------------- /.github/workflows/run-tests.yml: -------------------------------------------------------------------------------- 1 | name: Playwright Tests 2 | on: 3 | push: 4 | branches: [main] 5 | pull_request: 6 | branches: [main] 7 | jobs: 8 | test: 9 | timeout-minutes: 60 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | - uses: pnpm/action-setup@v4 14 | with: 15 | version: 9 16 | - uses: actions/setup-node@v4 17 | with: 18 | node-version: 20 19 | - name: Install dependencies 20 | run: pnpm install --frozen-lockfile 21 | - name: Install Playwright Browsers 22 | run: npx playwright install --with-deps 23 | - name: Run Playwright tests 24 | run: npx playwright test 25 | - uses: actions/upload-artifact@v4 26 | if: always() 27 | with: 28 | name: playwright-report 29 | path: playwright-report/ 30 | retention-days: 30 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /dist 5 | /.svelte-kit 6 | /package 7 | .env 8 | .env.* 9 | !.env.example 10 | vite.config.js.timestamp-* 11 | vite.config.ts.timestamp-* 12 | test-results -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore files for PNPM, NPM and YARN 2 | pnpm-lock.yaml 3 | package-lock.json 4 | yarn.lock 5 | 6 | .svelte-kit -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "all", 5 | "printWidth": 100, 6 | "semi": true, 7 | "tabWidth": 4, 8 | "plugins": ["prettier-plugin-svelte"], 9 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 10 | } 11 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": ["optimistikit"] 3 | } 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # optimistikit 2 | 3 | ## 1.0.2 4 | 5 | ### Patch Changes 6 | 7 | - a3f9e83: fix: correct peer dependencies 8 | 9 | ## 1.0.1 10 | 11 | ### Patch Changes 12 | 13 | - 679bd5f: fix: use $effect.pre 14 | 15 | ## 1.0.0 16 | 17 | ### Major Changes 18 | 19 | - 89344ec: breaking: switch main publishing line to svelte 5 20 | 21 | ## 0.0.6 22 | 23 | ### Patch Changes 24 | 25 | - b3a2f23: fix: changeset release 26 | 27 | ## 0.0.5 28 | 29 | ### Patch Changes 30 | 31 | - 30c3a3b: fix: make it work properly with svelte 5 32 | 33 | ## 0.0.4 34 | 35 | ### Patch Changes 36 | 37 | - 29eee93: fix: add svelte 5 peer dep 38 | 39 | ## 0.0.3 40 | 41 | ### Patch Changes 42 | 43 | - bb464bd: fix: sveltekit peer dep 44 | 45 | ## 0.0.2 46 | 47 | ### Patch Changes 48 | 49 | - 705779a: fix: readme 50 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | - Demonstrating empathy and kindness toward other people 21 | - Being respectful of differing opinions, viewpoints, and experiences 22 | - Giving and gracefully accepting constructive feedback 23 | - Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | - Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | - The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | - Trolling, insulting or derogatory comments, and personal or political attacks 33 | - Public or private harassment 34 | - Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | - Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | ricciutipaolo@gmail.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Paolo Ricciuti 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # optimistikit 2 | 3 | Optimistic UI is not easy...but it can be easier then ever in SvelteKit with Optimistikit! 4 | 5 | > **Warning** 6 | > 7 | > This package is meant to be used with Svelte-Kit as the name suggest. Because it uses api that are **only** present in Svelte-Kit it will not work in your normal svelte project. 8 | 9 | [![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](https://choosealicense.com/licenses/mit/) 10 | 11 | ![npm](https://img.shields.io/npm/v/optimistikit) 12 | 13 | ![npm](https://img.shields.io/npm/dt/optimistikit) 14 | 15 | ![GitHub last commit](https://img.shields.io/github/last-commit/paoloricciuti/optimistikit) 16 | 17 | ## Contributing 18 | 19 | Contributions are always welcome! 20 | 21 | For the moment there's no code of conduct neither a contributing guideline but if you found a problem or have an idea feel free to [open an issue](https://github.com/paoloricciuti/optimistikit/issues/new) 22 | 23 | If you want the fastest way to open a PR try out Codeflow 24 | 25 | [![Open in Codeflow](https://developer.stackblitz.com/img/open_in_codeflow.svg)](https://pr.new/paoloricciuti/optimistikit/) 26 | 27 | ## Authors 28 | 29 | - [@paoloricciuti](https://www.github.com/paoloricciuti) 30 | 31 | ## Installation 32 | 33 | Install optimistikit with npm 34 | 35 | ```bash 36 | npm install optimistikit@latest 37 | ``` 38 | 39 | ## Usage/Examples 40 | 41 | The concept behind optimistikit is quite straightforward. Instead of using the `data` props from SvelteKit you can call the function `optimistikit` and get back a function to call whenever data changes and an action to apply to all of your forms. 42 | 43 | ### Basic example 44 | 45 | Imagine you have this `+page.server.ts` 46 | 47 | ```ts 48 | export async function load() { 49 | const comments = await db.select(comments); 50 | return { 51 | comments, 52 | }; 53 | } 54 | 55 | export const actions = { 56 | async add({ request }) { 57 | const formData = await request.formData(); 58 | const new_comment = formData.get('comment'); 59 | if (new_comment) { 60 | await db.insert(comments).values({ 61 | content: new_comment, 62 | }); 63 | } 64 | }, 65 | }; 66 | ``` 67 | 68 | and this `+page.svelte` 69 | 70 | ```svelte 71 | 74 | 75 |
76 | 77 | 78 |
79 | 84 | ``` 85 | 86 | if you want to optimistically add the comment using `optimistikit` you would need the following updated to `+page.svelte` 87 | 88 | ```svelte 89 | 94 | 95 |
{ 97 | const new_comment = formData.get('comment'); 98 | if (new_comment) { 99 | // just mutate `data` 100 | data.comments.push({ 101 | content: new_comment, 102 | }); 103 | } 104 | }} 105 | method="post" 106 | action="?/add" 107 | > 108 | 109 | 110 |
111 | 117 | ``` 118 | 119 | ### Keyed forms 120 | 121 | Sometimes the resource that you are updating on the server is always the same resource (eg. updating a comment). When that's the case we want to cancel every concurrent request. You can do this by adding an unique `data-key` attribute to the form. 122 | 123 | ```ts 124 | export async function load() { 125 | const comments = await db.select(comments); 126 | return { 127 | comments, 128 | }; 129 | } 130 | 131 | export const actions = { 132 | // other actions 133 | async edit({ request }) { 134 | const formData = await request.formData(); 135 | const new_comment = formData.get('comment'); 136 | const id = formData.get('id'); 137 | if (new_comment && id) { 138 | await db 139 | .update(comments) 140 | .values({ 141 | content: new_comment, 142 | }) 143 | .where({ 144 | id, 145 | }); 146 | } 147 | }, 148 | }; 149 | ``` 150 | 151 | and this is the `+page.svelte` 152 | 153 | ```svelte 154 | 160 | 161 | 162 | 187 | ``` 188 | 189 | ### Use in nested components 190 | 191 | If you have a form in a nested component it can be tedious to pass either `data` or the `enhance` action around. To solver this problem there's another export from `optimistikit` that allows you to grab the action directly 192 | 193 | ```svelte 194 | 200 | 201 |
{ 203 | // your logic 204 | }} 205 | > 206 | 207 |
208 | ``` 209 | 210 | ### Options 211 | 212 | The function `optimistikit` can optionally receive an object as argument where you can specify two values: 213 | 214 | - `key`: a string that allows you to have different actions/stores in the same route. Most of the times you will probably not need this since specifying a key also means that the updates from the forms will involve only the state returned from that specific `optimistikit` function. 215 | - `enhance`: some libraries like [superforms](https://superforms.rocks) provide a custom `enhance` function that is different from the one provided by SvelteKit. To allow you to use this libraries together with `optimistikit` you can pass a custom `enhance` function. It's important for this function to have the same signature as the sveltekit one. 216 | 217 | ## What about svelte 4? 218 | 219 | If you are using `svelte@4` you really should upgrade to `svelte@5`...but if you can't you can use the legacy tag of this library that uses a store and has a slightly different and less ergonomic API. 220 | 221 | You can install it like this: 222 | 223 | ```bash 224 | npm i optimistikit@legacy 225 | ``` 226 | 227 | Check the documentation [here!](https://github.com/paoloricciuti/optimistikit/tree/legacy#) 228 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js'; 2 | import eslintConfigPrettier from 'eslint-config-prettier'; 3 | import eslintPluginSvelte from 'eslint-plugin-svelte'; 4 | import globals from 'globals'; 5 | import svelteParser from 'svelte-eslint-parser'; 6 | import tsEslint from 'typescript-eslint'; 7 | 8 | export default tsEslint.config( 9 | js.configs.recommended, 10 | ...tsEslint.configs.recommended, 11 | ...eslintPluginSvelte.configs['flat/recommended'], 12 | eslintConfigPrettier, 13 | { 14 | languageOptions: { 15 | ecmaVersion: 2020, 16 | sourceType: 'module', 17 | globals: { 18 | ...globals.node, 19 | ...globals.browser, 20 | ...globals.es2017, 21 | }, 22 | parser: tsEslint.parser, 23 | parserOptions: { 24 | extraFileExtensions: ['.svelte'], 25 | }, 26 | }, 27 | plugins: { 28 | '@typescript-eslint': tsEslint.plugin, 29 | }, 30 | }, 31 | { 32 | files: ['**/*.svelte'], 33 | languageOptions: { 34 | parser: svelteParser, 35 | parserOptions: { 36 | parser: tsEslint.parser, 37 | svelteFeatures: { 38 | experimentalGenerics: true, 39 | }, 40 | }, 41 | }, 42 | }, 43 | { 44 | ignores: ['**/.svelte-kit', '**/build', '**/node_modules', '**/static', '**/dist'], 45 | }, 46 | { 47 | rules: { 48 | '@typescript-eslint/no-unused-vars': [ 49 | 'error', 50 | { 51 | argsIgnorePattern: '^(_|\\$\\$)', 52 | varsIgnorePattern: '^(_|\\$\\$)', 53 | caughtErrorsIgnorePattern: '^(_|\\$\\$)', 54 | }, 55 | ], 56 | 'svelte/require-each-key': 'off', 57 | }, 58 | }, 59 | ); 60 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "optimistikit", 3 | "version": "1.0.2", 4 | "repository": "git+https://github.com/paoloricciuti/optimistikit.git", 5 | "author": "Paolo Ricciuti", 6 | "license": "MIT", 7 | "homepage": "https://github.com/paoloricciuti/optimistikit", 8 | "keywords": [ 9 | "sveltekit", 10 | "svelte", 11 | "optimistic", 12 | "optimistic ui", 13 | "optimistic update" 14 | ], 15 | "scripts": { 16 | "dev": "vite dev", 17 | "build": "vite build && npm run package", 18 | "preview": "vite preview", 19 | "package": "svelte-kit sync && svelte-package && publint", 20 | "prepublishOnly": "npm run package", 21 | "test": "npm run test:integration && npm run test:unit", 22 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 23 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 24 | "lint": "prettier --check . && eslint .", 25 | "format": "prettier --write .", 26 | "test:integration": "playwright test", 27 | "test:integration:ui": "playwright test --ui", 28 | "test:unit": "vitest", 29 | "build:playground": "cd playground && pnpm install --frozen-lockfile && pnpm run build", 30 | "preview:playground": "cd playground && pnpm run preview", 31 | "changeset": "changeset", 32 | "release": "pnpm run build && changeset publish $(echo \"$RELEASE_TAG\")" 33 | }, 34 | "exports": { 35 | ".": { 36 | "types": "./dist/index.d.ts", 37 | "svelte": "./dist/index.js" 38 | } 39 | }, 40 | "files": [ 41 | "dist", 42 | "!dist/**/*.test.*", 43 | "!dist/**/*.spec.*" 44 | ], 45 | "peerDependencies": { 46 | "@sveltejs/kit": "^2.0.0", 47 | "svelte": "^5.0.0 || ^5.0.0-next.1" 48 | }, 49 | "devDependencies": { 50 | "@changesets/cli": "^2.27.7", 51 | "@playwright/test": "^1.45.3", 52 | "@sveltejs/adapter-auto": "^6.0.0", 53 | "@sveltejs/kit": "^2.5.18", 54 | "@sveltejs/package": "^2.3.2", 55 | "@sveltejs/vite-plugin-svelte": "5.1.0", 56 | "@types/eslint": "^9.0.0", 57 | "eslint": "^9.8.0", 58 | "eslint-config-prettier": "^10.0.0", 59 | "eslint-plugin-svelte": "^3.0.0", 60 | "globals": "^16.0.0", 61 | "prettier": "^3.3.3", 62 | "prettier-plugin-svelte": "^3.2.6", 63 | "publint": "^0.3.0", 64 | "svelte": "5.33.14", 65 | "svelte-check": "^4.0.0", 66 | "tslib": "^2.6.3", 67 | "typescript": "^5.5.4", 68 | "typescript-eslint": "8.33.1", 69 | "vite": "^6.0.1", 70 | "vitest": "^3.0.0" 71 | }, 72 | "svelte": "./dist/index.js", 73 | "types": "./dist/index.d.ts", 74 | "type": "module" 75 | } 76 | -------------------------------------------------------------------------------- /playground/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | -------------------------------------------------------------------------------- /playground/.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /playground/README.md: -------------------------------------------------------------------------------- 1 | # create-svelte 2 | 3 | Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). 4 | 5 | ## Creating a project 6 | 7 | If you're seeing this, you've probably already done this step. Congrats! 8 | 9 | ```bash 10 | # create a new project in the current directory 11 | npm create svelte@latest 12 | 13 | # create a new project in my-app 14 | npm create svelte@latest my-app 15 | ``` 16 | 17 | ## Developing 18 | 19 | Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: 20 | 21 | ```bash 22 | npm run dev 23 | 24 | # or start the server and open the app in a new browser tab 25 | npm run dev -- --open 26 | ``` 27 | 28 | ## Building 29 | 30 | To create a production version of your app: 31 | 32 | ```bash 33 | npm run build 34 | ``` 35 | 36 | You can preview the production build with `npm run preview`. 37 | 38 | > To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. 39 | -------------------------------------------------------------------------------- /playground/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "playground-5", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite dev", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 10 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" 11 | }, 12 | "devDependencies": { 13 | "@sveltejs/adapter-auto": "^6.0.0", 14 | "@sveltejs/kit": "^2.5.18", 15 | "@sveltejs/vite-plugin-svelte": "5.1.0", 16 | "svelte": "5.33.14", 17 | "svelte-check": "^4.0.0", 18 | "tslib": "^2.6.3", 19 | "typescript": "^5.5.4", 20 | "vite": "^6.0.1" 21 | }, 22 | "type": "module", 23 | "dependencies": { 24 | "optimistikit": "link:.." 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /playground/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | optimistikit: 12 | specifier: link:.. 13 | version: link:.. 14 | devDependencies: 15 | '@sveltejs/adapter-auto': 16 | specifier: ^6.0.0 17 | version: 6.0.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1)) 18 | '@sveltejs/kit': 19 | specifier: ^2.5.18 20 | version: 2.5.18(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1) 21 | '@sveltejs/vite-plugin-svelte': 22 | specifier: 5.1.0 23 | version: 5.1.0(svelte@5.33.14)(vite@6.0.1) 24 | svelte: 25 | specifier: 5.33.14 26 | version: 5.33.14 27 | svelte-check: 28 | specifier: ^4.0.0 29 | version: 4.0.0(svelte@5.33.14)(typescript@5.5.4) 30 | tslib: 31 | specifier: ^2.6.3 32 | version: 2.6.3 33 | typescript: 34 | specifier: ^5.5.4 35 | version: 5.5.4 36 | vite: 37 | specifier: ^6.0.1 38 | version: 6.0.1 39 | 40 | packages: 41 | 42 | '@ampproject/remapping@2.3.0': 43 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 44 | engines: {node: '>=6.0.0'} 45 | 46 | '@esbuild/aix-ppc64@0.24.0': 47 | resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} 48 | engines: {node: '>=18'} 49 | cpu: [ppc64] 50 | os: [aix] 51 | 52 | '@esbuild/android-arm64@0.24.0': 53 | resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} 54 | engines: {node: '>=18'} 55 | cpu: [arm64] 56 | os: [android] 57 | 58 | '@esbuild/android-arm@0.24.0': 59 | resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} 60 | engines: {node: '>=18'} 61 | cpu: [arm] 62 | os: [android] 63 | 64 | '@esbuild/android-x64@0.24.0': 65 | resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} 66 | engines: {node: '>=18'} 67 | cpu: [x64] 68 | os: [android] 69 | 70 | '@esbuild/darwin-arm64@0.24.0': 71 | resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} 72 | engines: {node: '>=18'} 73 | cpu: [arm64] 74 | os: [darwin] 75 | 76 | '@esbuild/darwin-x64@0.24.0': 77 | resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} 78 | engines: {node: '>=18'} 79 | cpu: [x64] 80 | os: [darwin] 81 | 82 | '@esbuild/freebsd-arm64@0.24.0': 83 | resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} 84 | engines: {node: '>=18'} 85 | cpu: [arm64] 86 | os: [freebsd] 87 | 88 | '@esbuild/freebsd-x64@0.24.0': 89 | resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} 90 | engines: {node: '>=18'} 91 | cpu: [x64] 92 | os: [freebsd] 93 | 94 | '@esbuild/linux-arm64@0.24.0': 95 | resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} 96 | engines: {node: '>=18'} 97 | cpu: [arm64] 98 | os: [linux] 99 | 100 | '@esbuild/linux-arm@0.24.0': 101 | resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} 102 | engines: {node: '>=18'} 103 | cpu: [arm] 104 | os: [linux] 105 | 106 | '@esbuild/linux-ia32@0.24.0': 107 | resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} 108 | engines: {node: '>=18'} 109 | cpu: [ia32] 110 | os: [linux] 111 | 112 | '@esbuild/linux-loong64@0.24.0': 113 | resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} 114 | engines: {node: '>=18'} 115 | cpu: [loong64] 116 | os: [linux] 117 | 118 | '@esbuild/linux-mips64el@0.24.0': 119 | resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} 120 | engines: {node: '>=18'} 121 | cpu: [mips64el] 122 | os: [linux] 123 | 124 | '@esbuild/linux-ppc64@0.24.0': 125 | resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} 126 | engines: {node: '>=18'} 127 | cpu: [ppc64] 128 | os: [linux] 129 | 130 | '@esbuild/linux-riscv64@0.24.0': 131 | resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} 132 | engines: {node: '>=18'} 133 | cpu: [riscv64] 134 | os: [linux] 135 | 136 | '@esbuild/linux-s390x@0.24.0': 137 | resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} 138 | engines: {node: '>=18'} 139 | cpu: [s390x] 140 | os: [linux] 141 | 142 | '@esbuild/linux-x64@0.24.0': 143 | resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} 144 | engines: {node: '>=18'} 145 | cpu: [x64] 146 | os: [linux] 147 | 148 | '@esbuild/netbsd-x64@0.24.0': 149 | resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} 150 | engines: {node: '>=18'} 151 | cpu: [x64] 152 | os: [netbsd] 153 | 154 | '@esbuild/openbsd-arm64@0.24.0': 155 | resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} 156 | engines: {node: '>=18'} 157 | cpu: [arm64] 158 | os: [openbsd] 159 | 160 | '@esbuild/openbsd-x64@0.24.0': 161 | resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} 162 | engines: {node: '>=18'} 163 | cpu: [x64] 164 | os: [openbsd] 165 | 166 | '@esbuild/sunos-x64@0.24.0': 167 | resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} 168 | engines: {node: '>=18'} 169 | cpu: [x64] 170 | os: [sunos] 171 | 172 | '@esbuild/win32-arm64@0.24.0': 173 | resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} 174 | engines: {node: '>=18'} 175 | cpu: [arm64] 176 | os: [win32] 177 | 178 | '@esbuild/win32-ia32@0.24.0': 179 | resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} 180 | engines: {node: '>=18'} 181 | cpu: [ia32] 182 | os: [win32] 183 | 184 | '@esbuild/win32-x64@0.24.0': 185 | resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} 186 | engines: {node: '>=18'} 187 | cpu: [x64] 188 | os: [win32] 189 | 190 | '@jridgewell/gen-mapping@0.3.5': 191 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 192 | engines: {node: '>=6.0.0'} 193 | 194 | '@jridgewell/resolve-uri@3.1.2': 195 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 196 | engines: {node: '>=6.0.0'} 197 | 198 | '@jridgewell/set-array@1.2.1': 199 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 200 | engines: {node: '>=6.0.0'} 201 | 202 | '@jridgewell/sourcemap-codec@1.5.0': 203 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 204 | 205 | '@jridgewell/trace-mapping@0.3.25': 206 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 207 | 208 | '@polka/url@1.0.0-next.25': 209 | resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} 210 | 211 | '@rollup/rollup-android-arm-eabi@4.27.4': 212 | resolution: {integrity: sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==} 213 | cpu: [arm] 214 | os: [android] 215 | 216 | '@rollup/rollup-android-arm64@4.27.4': 217 | resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==} 218 | cpu: [arm64] 219 | os: [android] 220 | 221 | '@rollup/rollup-darwin-arm64@4.27.4': 222 | resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==} 223 | cpu: [arm64] 224 | os: [darwin] 225 | 226 | '@rollup/rollup-darwin-x64@4.27.4': 227 | resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==} 228 | cpu: [x64] 229 | os: [darwin] 230 | 231 | '@rollup/rollup-freebsd-arm64@4.27.4': 232 | resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==} 233 | cpu: [arm64] 234 | os: [freebsd] 235 | 236 | '@rollup/rollup-freebsd-x64@4.27.4': 237 | resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==} 238 | cpu: [x64] 239 | os: [freebsd] 240 | 241 | '@rollup/rollup-linux-arm-gnueabihf@4.27.4': 242 | resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==} 243 | cpu: [arm] 244 | os: [linux] 245 | 246 | '@rollup/rollup-linux-arm-musleabihf@4.27.4': 247 | resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==} 248 | cpu: [arm] 249 | os: [linux] 250 | 251 | '@rollup/rollup-linux-arm64-gnu@4.27.4': 252 | resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==} 253 | cpu: [arm64] 254 | os: [linux] 255 | 256 | '@rollup/rollup-linux-arm64-musl@4.27.4': 257 | resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==} 258 | cpu: [arm64] 259 | os: [linux] 260 | 261 | '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': 262 | resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==} 263 | cpu: [ppc64] 264 | os: [linux] 265 | 266 | '@rollup/rollup-linux-riscv64-gnu@4.27.4': 267 | resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==} 268 | cpu: [riscv64] 269 | os: [linux] 270 | 271 | '@rollup/rollup-linux-s390x-gnu@4.27.4': 272 | resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==} 273 | cpu: [s390x] 274 | os: [linux] 275 | 276 | '@rollup/rollup-linux-x64-gnu@4.27.4': 277 | resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==} 278 | cpu: [x64] 279 | os: [linux] 280 | 281 | '@rollup/rollup-linux-x64-musl@4.27.4': 282 | resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==} 283 | cpu: [x64] 284 | os: [linux] 285 | 286 | '@rollup/rollup-win32-arm64-msvc@4.27.4': 287 | resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==} 288 | cpu: [arm64] 289 | os: [win32] 290 | 291 | '@rollup/rollup-win32-ia32-msvc@4.27.4': 292 | resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==} 293 | cpu: [ia32] 294 | os: [win32] 295 | 296 | '@rollup/rollup-win32-x64-msvc@4.27.4': 297 | resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==} 298 | cpu: [x64] 299 | os: [win32] 300 | 301 | '@sveltejs/acorn-typescript@1.0.5': 302 | resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==} 303 | peerDependencies: 304 | acorn: ^8.9.0 305 | 306 | '@sveltejs/adapter-auto@6.0.0': 307 | resolution: {integrity: sha512-7mR2/G7vlXakaOj6QBSG9dwBfTgWjV+UnEMB5Z6Xu0ZbdXda6c0su1fNkg0ab0zlilSkloMA2NjCna02/DR7sA==} 308 | peerDependencies: 309 | '@sveltejs/kit': ^2.0.0 310 | 311 | '@sveltejs/kit@2.5.18': 312 | resolution: {integrity: sha512-+g06hvpVAnH7b4CDjhnTDgFWBKBiQJpuSmQeGYOuzbO3SC3tdYjRNlDCrafvDtKbGiT2uxY5Dn9qdEUGVZdWOQ==} 313 | engines: {node: '>=18.13'} 314 | hasBin: true 315 | peerDependencies: 316 | '@sveltejs/vite-plugin-svelte': ^3.0.0 317 | svelte: ^4.0.0 || ^5.0.0-next.0 318 | vite: ^5.0.3 319 | 320 | '@sveltejs/vite-plugin-svelte-inspector@4.0.1': 321 | resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} 322 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 323 | peerDependencies: 324 | '@sveltejs/vite-plugin-svelte': ^5.0.0 325 | svelte: ^5.0.0 326 | vite: ^6.0.0 327 | 328 | '@sveltejs/vite-plugin-svelte@5.1.0': 329 | resolution: {integrity: sha512-wojIS/7GYnJDYIg1higWj2ROA6sSRWvcR1PO/bqEyFr/5UZah26c8Cz4u0NaqjPeVltzsVpt2Tm8d2io0V+4Tw==} 330 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 331 | peerDependencies: 332 | svelte: ^5.0.0 333 | vite: ^6.0.0 334 | 335 | '@types/cookie@0.6.0': 336 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 337 | 338 | '@types/estree@1.0.6': 339 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 340 | 341 | acorn@8.12.1: 342 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 343 | engines: {node: '>=0.4.0'} 344 | hasBin: true 345 | 346 | anymatch@3.1.3: 347 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 348 | engines: {node: '>= 8'} 349 | 350 | aria-query@5.3.1: 351 | resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} 352 | engines: {node: '>= 0.4'} 353 | 354 | axobject-query@4.1.0: 355 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 356 | engines: {node: '>= 0.4'} 357 | 358 | binary-extensions@2.3.0: 359 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 360 | engines: {node: '>=8'} 361 | 362 | braces@3.0.3: 363 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 364 | engines: {node: '>=8'} 365 | 366 | chokidar@3.6.0: 367 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 368 | engines: {node: '>= 8.10.0'} 369 | 370 | clsx@2.1.1: 371 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 372 | engines: {node: '>=6'} 373 | 374 | cookie@0.6.0: 375 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 376 | engines: {node: '>= 0.6'} 377 | 378 | debug@4.4.1: 379 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 380 | engines: {node: '>=6.0'} 381 | peerDependencies: 382 | supports-color: '*' 383 | peerDependenciesMeta: 384 | supports-color: 385 | optional: true 386 | 387 | deepmerge@4.3.1: 388 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 389 | engines: {node: '>=0.10.0'} 390 | 391 | devalue@5.0.0: 392 | resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} 393 | 394 | esbuild@0.24.0: 395 | resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} 396 | engines: {node: '>=18'} 397 | hasBin: true 398 | 399 | esm-env@1.0.0: 400 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 401 | 402 | esm-env@1.2.1: 403 | resolution: {integrity: sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==} 404 | 405 | esrap@1.4.6: 406 | resolution: {integrity: sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==} 407 | 408 | fdir@6.3.0: 409 | resolution: {integrity: sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==} 410 | peerDependencies: 411 | picomatch: ^3 || ^4 412 | peerDependenciesMeta: 413 | picomatch: 414 | optional: true 415 | 416 | fill-range@7.1.1: 417 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 418 | engines: {node: '>=8'} 419 | 420 | fsevents@2.3.3: 421 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 422 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 423 | os: [darwin] 424 | 425 | glob-parent@5.1.2: 426 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 427 | engines: {node: '>= 6'} 428 | 429 | globalyzer@0.1.0: 430 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 431 | 432 | globrex@0.1.2: 433 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 434 | 435 | import-meta-resolve@4.1.0: 436 | resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 437 | 438 | is-binary-path@2.1.0: 439 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 440 | engines: {node: '>=8'} 441 | 442 | is-extglob@2.1.1: 443 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 444 | engines: {node: '>=0.10.0'} 445 | 446 | is-glob@4.0.3: 447 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 448 | engines: {node: '>=0.10.0'} 449 | 450 | is-number@7.0.0: 451 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 452 | engines: {node: '>=0.12.0'} 453 | 454 | is-reference@3.0.3: 455 | resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} 456 | 457 | kleur@4.1.5: 458 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 459 | engines: {node: '>=6'} 460 | 461 | locate-character@3.0.0: 462 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 463 | 464 | magic-string@0.30.10: 465 | resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} 466 | 467 | magic-string@0.30.17: 468 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 469 | 470 | mri@1.2.0: 471 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 472 | engines: {node: '>=4'} 473 | 474 | mrmime@2.0.0: 475 | resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} 476 | engines: {node: '>=10'} 477 | 478 | ms@2.1.3: 479 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 480 | 481 | nanoid@3.3.7: 482 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 483 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 484 | hasBin: true 485 | 486 | normalize-path@3.0.0: 487 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 488 | engines: {node: '>=0.10.0'} 489 | 490 | picocolors@1.0.1: 491 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} 492 | 493 | picocolors@1.1.1: 494 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 495 | 496 | picomatch@2.3.1: 497 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 498 | engines: {node: '>=8.6'} 499 | 500 | postcss@8.4.49: 501 | resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} 502 | engines: {node: ^10 || ^12 || >=14} 503 | 504 | readdirp@3.6.0: 505 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 506 | engines: {node: '>=8.10.0'} 507 | 508 | rollup@4.27.4: 509 | resolution: {integrity: sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==} 510 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 511 | hasBin: true 512 | 513 | sade@1.8.1: 514 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 515 | engines: {node: '>=6'} 516 | 517 | set-cookie-parser@2.6.0: 518 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 519 | 520 | sirv@2.0.4: 521 | resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} 522 | engines: {node: '>= 10'} 523 | 524 | source-map-js@1.2.1: 525 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 526 | engines: {node: '>=0.10.0'} 527 | 528 | svelte-check@4.0.0: 529 | resolution: {integrity: sha512-QgKO6OQbee9B2dyWZgrGruS3WHKrUZ718Ug53nK45vamsx93Al3on6tOrxyCMVX+OMOLLlrenn7b2VAomePwxQ==} 530 | engines: {node: '>= 18.0.0'} 531 | hasBin: true 532 | peerDependencies: 533 | svelte: ^4.0.0 || ^5.0.0-next.0 534 | typescript: '>=5.0.0' 535 | 536 | svelte@5.33.14: 537 | resolution: {integrity: sha512-kRlbhIlMTijbFmVDQFDeKXPLlX1/ovXwV0I162wRqQhRcygaqDIcu1d/Ese3H2uI+yt3uT8E7ndgDthQv5v5BA==} 538 | engines: {node: '>=18'} 539 | 540 | tiny-glob@0.2.9: 541 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 542 | 543 | to-regex-range@5.0.1: 544 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 545 | engines: {node: '>=8.0'} 546 | 547 | totalist@3.0.1: 548 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 549 | engines: {node: '>=6'} 550 | 551 | tslib@2.6.3: 552 | resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} 553 | 554 | typescript@5.5.4: 555 | resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} 556 | engines: {node: '>=14.17'} 557 | hasBin: true 558 | 559 | vite@6.0.1: 560 | resolution: {integrity: sha512-Ldn6gorLGr4mCdFnmeAOLweJxZ34HjKnDm4HGo6P66IEqTxQb36VEdFJQENKxWjupNfoIjvRUnswjn1hpYEpjQ==} 561 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 562 | hasBin: true 563 | peerDependencies: 564 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 565 | jiti: '>=1.21.0' 566 | less: '*' 567 | lightningcss: ^1.21.0 568 | sass: '*' 569 | sass-embedded: '*' 570 | stylus: '*' 571 | sugarss: '*' 572 | terser: ^5.16.0 573 | tsx: ^4.8.1 574 | yaml: ^2.4.2 575 | peerDependenciesMeta: 576 | '@types/node': 577 | optional: true 578 | jiti: 579 | optional: true 580 | less: 581 | optional: true 582 | lightningcss: 583 | optional: true 584 | sass: 585 | optional: true 586 | sass-embedded: 587 | optional: true 588 | stylus: 589 | optional: true 590 | sugarss: 591 | optional: true 592 | terser: 593 | optional: true 594 | tsx: 595 | optional: true 596 | yaml: 597 | optional: true 598 | 599 | vitefu@1.0.6: 600 | resolution: {integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==} 601 | peerDependencies: 602 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 603 | peerDependenciesMeta: 604 | vite: 605 | optional: true 606 | 607 | zimmerframe@1.1.2: 608 | resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} 609 | 610 | snapshots: 611 | 612 | '@ampproject/remapping@2.3.0': 613 | dependencies: 614 | '@jridgewell/gen-mapping': 0.3.5 615 | '@jridgewell/trace-mapping': 0.3.25 616 | 617 | '@esbuild/aix-ppc64@0.24.0': 618 | optional: true 619 | 620 | '@esbuild/android-arm64@0.24.0': 621 | optional: true 622 | 623 | '@esbuild/android-arm@0.24.0': 624 | optional: true 625 | 626 | '@esbuild/android-x64@0.24.0': 627 | optional: true 628 | 629 | '@esbuild/darwin-arm64@0.24.0': 630 | optional: true 631 | 632 | '@esbuild/darwin-x64@0.24.0': 633 | optional: true 634 | 635 | '@esbuild/freebsd-arm64@0.24.0': 636 | optional: true 637 | 638 | '@esbuild/freebsd-x64@0.24.0': 639 | optional: true 640 | 641 | '@esbuild/linux-arm64@0.24.0': 642 | optional: true 643 | 644 | '@esbuild/linux-arm@0.24.0': 645 | optional: true 646 | 647 | '@esbuild/linux-ia32@0.24.0': 648 | optional: true 649 | 650 | '@esbuild/linux-loong64@0.24.0': 651 | optional: true 652 | 653 | '@esbuild/linux-mips64el@0.24.0': 654 | optional: true 655 | 656 | '@esbuild/linux-ppc64@0.24.0': 657 | optional: true 658 | 659 | '@esbuild/linux-riscv64@0.24.0': 660 | optional: true 661 | 662 | '@esbuild/linux-s390x@0.24.0': 663 | optional: true 664 | 665 | '@esbuild/linux-x64@0.24.0': 666 | optional: true 667 | 668 | '@esbuild/netbsd-x64@0.24.0': 669 | optional: true 670 | 671 | '@esbuild/openbsd-arm64@0.24.0': 672 | optional: true 673 | 674 | '@esbuild/openbsd-x64@0.24.0': 675 | optional: true 676 | 677 | '@esbuild/sunos-x64@0.24.0': 678 | optional: true 679 | 680 | '@esbuild/win32-arm64@0.24.0': 681 | optional: true 682 | 683 | '@esbuild/win32-ia32@0.24.0': 684 | optional: true 685 | 686 | '@esbuild/win32-x64@0.24.0': 687 | optional: true 688 | 689 | '@jridgewell/gen-mapping@0.3.5': 690 | dependencies: 691 | '@jridgewell/set-array': 1.2.1 692 | '@jridgewell/sourcemap-codec': 1.5.0 693 | '@jridgewell/trace-mapping': 0.3.25 694 | 695 | '@jridgewell/resolve-uri@3.1.2': {} 696 | 697 | '@jridgewell/set-array@1.2.1': {} 698 | 699 | '@jridgewell/sourcemap-codec@1.5.0': {} 700 | 701 | '@jridgewell/trace-mapping@0.3.25': 702 | dependencies: 703 | '@jridgewell/resolve-uri': 3.1.2 704 | '@jridgewell/sourcemap-codec': 1.5.0 705 | 706 | '@polka/url@1.0.0-next.25': {} 707 | 708 | '@rollup/rollup-android-arm-eabi@4.27.4': 709 | optional: true 710 | 711 | '@rollup/rollup-android-arm64@4.27.4': 712 | optional: true 713 | 714 | '@rollup/rollup-darwin-arm64@4.27.4': 715 | optional: true 716 | 717 | '@rollup/rollup-darwin-x64@4.27.4': 718 | optional: true 719 | 720 | '@rollup/rollup-freebsd-arm64@4.27.4': 721 | optional: true 722 | 723 | '@rollup/rollup-freebsd-x64@4.27.4': 724 | optional: true 725 | 726 | '@rollup/rollup-linux-arm-gnueabihf@4.27.4': 727 | optional: true 728 | 729 | '@rollup/rollup-linux-arm-musleabihf@4.27.4': 730 | optional: true 731 | 732 | '@rollup/rollup-linux-arm64-gnu@4.27.4': 733 | optional: true 734 | 735 | '@rollup/rollup-linux-arm64-musl@4.27.4': 736 | optional: true 737 | 738 | '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': 739 | optional: true 740 | 741 | '@rollup/rollup-linux-riscv64-gnu@4.27.4': 742 | optional: true 743 | 744 | '@rollup/rollup-linux-s390x-gnu@4.27.4': 745 | optional: true 746 | 747 | '@rollup/rollup-linux-x64-gnu@4.27.4': 748 | optional: true 749 | 750 | '@rollup/rollup-linux-x64-musl@4.27.4': 751 | optional: true 752 | 753 | '@rollup/rollup-win32-arm64-msvc@4.27.4': 754 | optional: true 755 | 756 | '@rollup/rollup-win32-ia32-msvc@4.27.4': 757 | optional: true 758 | 759 | '@rollup/rollup-win32-x64-msvc@4.27.4': 760 | optional: true 761 | 762 | '@sveltejs/acorn-typescript@1.0.5(acorn@8.12.1)': 763 | dependencies: 764 | acorn: 8.12.1 765 | 766 | '@sveltejs/adapter-auto@6.0.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1))': 767 | dependencies: 768 | '@sveltejs/kit': 2.5.18(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1) 769 | import-meta-resolve: 4.1.0 770 | 771 | '@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1)': 772 | dependencies: 773 | '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.33.14)(vite@6.0.1) 774 | '@types/cookie': 0.6.0 775 | cookie: 0.6.0 776 | devalue: 5.0.0 777 | esm-env: 1.0.0 778 | import-meta-resolve: 4.1.0 779 | kleur: 4.1.5 780 | magic-string: 0.30.10 781 | mrmime: 2.0.0 782 | sade: 1.8.1 783 | set-cookie-parser: 2.6.0 784 | sirv: 2.0.4 785 | svelte: 5.33.14 786 | tiny-glob: 0.2.9 787 | vite: 6.0.1 788 | 789 | '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1)': 790 | dependencies: 791 | '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.33.14)(vite@6.0.1) 792 | debug: 4.4.1 793 | svelte: 5.33.14 794 | vite: 6.0.1 795 | transitivePeerDependencies: 796 | - supports-color 797 | 798 | '@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1)': 799 | dependencies: 800 | '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1) 801 | debug: 4.4.1 802 | deepmerge: 4.3.1 803 | kleur: 4.1.5 804 | magic-string: 0.30.17 805 | svelte: 5.33.14 806 | vite: 6.0.1 807 | vitefu: 1.0.6(vite@6.0.1) 808 | transitivePeerDependencies: 809 | - supports-color 810 | 811 | '@types/cookie@0.6.0': {} 812 | 813 | '@types/estree@1.0.6': {} 814 | 815 | acorn@8.12.1: {} 816 | 817 | anymatch@3.1.3: 818 | dependencies: 819 | normalize-path: 3.0.0 820 | picomatch: 2.3.1 821 | 822 | aria-query@5.3.1: {} 823 | 824 | axobject-query@4.1.0: {} 825 | 826 | binary-extensions@2.3.0: {} 827 | 828 | braces@3.0.3: 829 | dependencies: 830 | fill-range: 7.1.1 831 | 832 | chokidar@3.6.0: 833 | dependencies: 834 | anymatch: 3.1.3 835 | braces: 3.0.3 836 | glob-parent: 5.1.2 837 | is-binary-path: 2.1.0 838 | is-glob: 4.0.3 839 | normalize-path: 3.0.0 840 | readdirp: 3.6.0 841 | optionalDependencies: 842 | fsevents: 2.3.3 843 | 844 | clsx@2.1.1: {} 845 | 846 | cookie@0.6.0: {} 847 | 848 | debug@4.4.1: 849 | dependencies: 850 | ms: 2.1.3 851 | 852 | deepmerge@4.3.1: {} 853 | 854 | devalue@5.0.0: {} 855 | 856 | esbuild@0.24.0: 857 | optionalDependencies: 858 | '@esbuild/aix-ppc64': 0.24.0 859 | '@esbuild/android-arm': 0.24.0 860 | '@esbuild/android-arm64': 0.24.0 861 | '@esbuild/android-x64': 0.24.0 862 | '@esbuild/darwin-arm64': 0.24.0 863 | '@esbuild/darwin-x64': 0.24.0 864 | '@esbuild/freebsd-arm64': 0.24.0 865 | '@esbuild/freebsd-x64': 0.24.0 866 | '@esbuild/linux-arm': 0.24.0 867 | '@esbuild/linux-arm64': 0.24.0 868 | '@esbuild/linux-ia32': 0.24.0 869 | '@esbuild/linux-loong64': 0.24.0 870 | '@esbuild/linux-mips64el': 0.24.0 871 | '@esbuild/linux-ppc64': 0.24.0 872 | '@esbuild/linux-riscv64': 0.24.0 873 | '@esbuild/linux-s390x': 0.24.0 874 | '@esbuild/linux-x64': 0.24.0 875 | '@esbuild/netbsd-x64': 0.24.0 876 | '@esbuild/openbsd-arm64': 0.24.0 877 | '@esbuild/openbsd-x64': 0.24.0 878 | '@esbuild/sunos-x64': 0.24.0 879 | '@esbuild/win32-arm64': 0.24.0 880 | '@esbuild/win32-ia32': 0.24.0 881 | '@esbuild/win32-x64': 0.24.0 882 | 883 | esm-env@1.0.0: {} 884 | 885 | esm-env@1.2.1: {} 886 | 887 | esrap@1.4.6: 888 | dependencies: 889 | '@jridgewell/sourcemap-codec': 1.5.0 890 | 891 | fdir@6.3.0: {} 892 | 893 | fill-range@7.1.1: 894 | dependencies: 895 | to-regex-range: 5.0.1 896 | 897 | fsevents@2.3.3: 898 | optional: true 899 | 900 | glob-parent@5.1.2: 901 | dependencies: 902 | is-glob: 4.0.3 903 | 904 | globalyzer@0.1.0: {} 905 | 906 | globrex@0.1.2: {} 907 | 908 | import-meta-resolve@4.1.0: {} 909 | 910 | is-binary-path@2.1.0: 911 | dependencies: 912 | binary-extensions: 2.3.0 913 | 914 | is-extglob@2.1.1: {} 915 | 916 | is-glob@4.0.3: 917 | dependencies: 918 | is-extglob: 2.1.1 919 | 920 | is-number@7.0.0: {} 921 | 922 | is-reference@3.0.3: 923 | dependencies: 924 | '@types/estree': 1.0.6 925 | 926 | kleur@4.1.5: {} 927 | 928 | locate-character@3.0.0: {} 929 | 930 | magic-string@0.30.10: 931 | dependencies: 932 | '@jridgewell/sourcemap-codec': 1.5.0 933 | 934 | magic-string@0.30.17: 935 | dependencies: 936 | '@jridgewell/sourcemap-codec': 1.5.0 937 | 938 | mri@1.2.0: {} 939 | 940 | mrmime@2.0.0: {} 941 | 942 | ms@2.1.3: {} 943 | 944 | nanoid@3.3.7: {} 945 | 946 | normalize-path@3.0.0: {} 947 | 948 | picocolors@1.0.1: {} 949 | 950 | picocolors@1.1.1: {} 951 | 952 | picomatch@2.3.1: {} 953 | 954 | postcss@8.4.49: 955 | dependencies: 956 | nanoid: 3.3.7 957 | picocolors: 1.1.1 958 | source-map-js: 1.2.1 959 | 960 | readdirp@3.6.0: 961 | dependencies: 962 | picomatch: 2.3.1 963 | 964 | rollup@4.27.4: 965 | dependencies: 966 | '@types/estree': 1.0.6 967 | optionalDependencies: 968 | '@rollup/rollup-android-arm-eabi': 4.27.4 969 | '@rollup/rollup-android-arm64': 4.27.4 970 | '@rollup/rollup-darwin-arm64': 4.27.4 971 | '@rollup/rollup-darwin-x64': 4.27.4 972 | '@rollup/rollup-freebsd-arm64': 4.27.4 973 | '@rollup/rollup-freebsd-x64': 4.27.4 974 | '@rollup/rollup-linux-arm-gnueabihf': 4.27.4 975 | '@rollup/rollup-linux-arm-musleabihf': 4.27.4 976 | '@rollup/rollup-linux-arm64-gnu': 4.27.4 977 | '@rollup/rollup-linux-arm64-musl': 4.27.4 978 | '@rollup/rollup-linux-powerpc64le-gnu': 4.27.4 979 | '@rollup/rollup-linux-riscv64-gnu': 4.27.4 980 | '@rollup/rollup-linux-s390x-gnu': 4.27.4 981 | '@rollup/rollup-linux-x64-gnu': 4.27.4 982 | '@rollup/rollup-linux-x64-musl': 4.27.4 983 | '@rollup/rollup-win32-arm64-msvc': 4.27.4 984 | '@rollup/rollup-win32-ia32-msvc': 4.27.4 985 | '@rollup/rollup-win32-x64-msvc': 4.27.4 986 | fsevents: 2.3.3 987 | 988 | sade@1.8.1: 989 | dependencies: 990 | mri: 1.2.0 991 | 992 | set-cookie-parser@2.6.0: {} 993 | 994 | sirv@2.0.4: 995 | dependencies: 996 | '@polka/url': 1.0.0-next.25 997 | mrmime: 2.0.0 998 | totalist: 3.0.1 999 | 1000 | source-map-js@1.2.1: {} 1001 | 1002 | svelte-check@4.0.0(svelte@5.33.14)(typescript@5.5.4): 1003 | dependencies: 1004 | '@jridgewell/trace-mapping': 0.3.25 1005 | chokidar: 3.6.0 1006 | fdir: 6.3.0 1007 | picocolors: 1.0.1 1008 | sade: 1.8.1 1009 | svelte: 5.33.14 1010 | typescript: 5.5.4 1011 | transitivePeerDependencies: 1012 | - picomatch 1013 | 1014 | svelte@5.33.14: 1015 | dependencies: 1016 | '@ampproject/remapping': 2.3.0 1017 | '@jridgewell/sourcemap-codec': 1.5.0 1018 | '@sveltejs/acorn-typescript': 1.0.5(acorn@8.12.1) 1019 | '@types/estree': 1.0.6 1020 | acorn: 8.12.1 1021 | aria-query: 5.3.1 1022 | axobject-query: 4.1.0 1023 | clsx: 2.1.1 1024 | esm-env: 1.2.1 1025 | esrap: 1.4.6 1026 | is-reference: 3.0.3 1027 | locate-character: 3.0.0 1028 | magic-string: 0.30.17 1029 | zimmerframe: 1.1.2 1030 | 1031 | tiny-glob@0.2.9: 1032 | dependencies: 1033 | globalyzer: 0.1.0 1034 | globrex: 0.1.2 1035 | 1036 | to-regex-range@5.0.1: 1037 | dependencies: 1038 | is-number: 7.0.0 1039 | 1040 | totalist@3.0.1: {} 1041 | 1042 | tslib@2.6.3: {} 1043 | 1044 | typescript@5.5.4: {} 1045 | 1046 | vite@6.0.1: 1047 | dependencies: 1048 | esbuild: 0.24.0 1049 | postcss: 8.4.49 1050 | rollup: 4.27.4 1051 | optionalDependencies: 1052 | fsevents: 2.3.3 1053 | 1054 | vitefu@1.0.6(vite@6.0.1): 1055 | optionalDependencies: 1056 | vite: 6.0.1 1057 | 1058 | zimmerframe@1.1.2: {} 1059 | -------------------------------------------------------------------------------- /playground/src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface PageState {} 9 | // interface Platform {} 10 | } 11 | } 12 | 13 | export {}; 14 | -------------------------------------------------------------------------------- /playground/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /playground/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | // place files you want to import through the `$lib` alias in this folder. 2 | -------------------------------------------------------------------------------- /playground/src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | {@render children()} 10 | -------------------------------------------------------------------------------- /playground/src/routes/+page.server.ts: -------------------------------------------------------------------------------- 1 | import { values } from './values'; 2 | 3 | function wait(ms: number) { 4 | return new Promise((r) => { 5 | setTimeout(r, ms); 6 | }); 7 | } 8 | 9 | export function load() { 10 | return values; 11 | } 12 | 13 | export const actions = { 14 | async list() { 15 | await wait(2000); 16 | values.list.push(values.list.length); 17 | }, 18 | async count() { 19 | await wait(2000); 20 | values.count++; 21 | }, 22 | }; 23 | -------------------------------------------------------------------------------- /playground/src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 16 | 17 |
{ 21 | data.list.push(data.list.length); 22 | }} 23 | > 24 | 25 |
26 | 27 |
{ 32 | data.count++; 33 | }} 34 | > 35 | 36 |
37 | 38 | 39 | 40 | 45 | 46 | 51 | 52 |

53 | {optimistic_data.count} 54 |

55 | 56 |

57 | {data.count} 58 |

59 | -------------------------------------------------------------------------------- /playground/src/routes/Component.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |
{ 14 | data.list.push(data.list.length); 15 | }} 16 | > 17 | 18 |
19 | 20 |
{ 25 | data.count++; 26 | }} 27 | > 28 | 29 |
30 | -------------------------------------------------------------------------------- /playground/src/routes/reset/+server.ts: -------------------------------------------------------------------------------- 1 | import { values } from '../values'; 2 | 3 | export function POST() { 4 | values.count = 0; 5 | values.list = []; 6 | return new Response(null, { 7 | status: 201, 8 | }); 9 | } 10 | -------------------------------------------------------------------------------- /playground/src/routes/values.ts: -------------------------------------------------------------------------------- 1 | export const values = { 2 | list: [] as number[], 3 | count: 0, 4 | }; 5 | -------------------------------------------------------------------------------- /playground/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paoloricciuti/optimistikit/364a3ad7925941e738a0491ce2eaa06a71df20f6/playground/static/favicon.png -------------------------------------------------------------------------------- /playground/svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 7 | // for more information about preprocessors 8 | preprocess: vitePreprocess(), 9 | 10 | kit: { 11 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 12 | // If your environment is not supported or you settled on a specific environment, switch out the adapter. 13 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 14 | adapter: adapter(), 15 | }, 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /playground/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true, 12 | "moduleResolution": "bundler" 13 | } 14 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 15 | // except $lib which is handled by https://kit.svelte.dev/docs/configuration#files 16 | // 17 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 18 | // from the referenced tsconfig.json - TypeScript does not merge them in 19 | } 20 | -------------------------------------------------------------------------------- /playground/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()], 6 | }); 7 | -------------------------------------------------------------------------------- /playwright.config.ts: -------------------------------------------------------------------------------- 1 | import type { PlaywrightTestConfig } from '@playwright/test'; 2 | 3 | const config: PlaywrightTestConfig = { 4 | webServer: { 5 | command: `pnpm run build && pnpm run build:playground && pnpm run preview:playground`, 6 | port: 4173, 7 | stderr: 'pipe', 8 | stdout: 'pipe', 9 | }, 10 | testDir: 'tests', 11 | testMatch: /(.+\.)?(test|spec)\.[jt]s/, 12 | }; 13 | 14 | export default config; 15 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@changesets/cli': 12 | specifier: ^2.27.7 13 | version: 2.27.7 14 | '@playwright/test': 15 | specifier: ^1.45.3 16 | version: 1.45.3 17 | '@sveltejs/adapter-auto': 18 | specifier: ^6.0.0 19 | version: 6.0.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1)) 20 | '@sveltejs/kit': 21 | specifier: ^2.5.18 22 | version: 2.5.18(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1) 23 | '@sveltejs/package': 24 | specifier: ^2.3.2 25 | version: 2.3.2(svelte@5.33.14)(typescript@5.5.4) 26 | '@sveltejs/vite-plugin-svelte': 27 | specifier: 5.1.0 28 | version: 5.1.0(svelte@5.33.14)(vite@6.0.1) 29 | '@types/eslint': 30 | specifier: ^9.0.0 31 | version: 9.6.0 32 | eslint: 33 | specifier: ^9.8.0 34 | version: 9.8.0 35 | eslint-config-prettier: 36 | specifier: ^10.0.0 37 | version: 10.0.1(eslint@9.8.0) 38 | eslint-plugin-svelte: 39 | specifier: ^3.0.0 40 | version: 3.0.2(eslint@9.8.0)(svelte@5.33.14) 41 | globals: 42 | specifier: ^16.0.0 43 | version: 16.0.0 44 | prettier: 45 | specifier: ^3.3.3 46 | version: 3.3.3 47 | prettier-plugin-svelte: 48 | specifier: ^3.2.6 49 | version: 3.2.6(prettier@3.3.3)(svelte@5.33.14) 50 | publint: 51 | specifier: ^0.3.0 52 | version: 0.3.0 53 | svelte: 54 | specifier: 5.33.14 55 | version: 5.33.14 56 | svelte-check: 57 | specifier: ^4.0.0 58 | version: 4.0.0(svelte@5.33.14)(typescript@5.5.4) 59 | tslib: 60 | specifier: ^2.6.3 61 | version: 2.6.3 62 | typescript: 63 | specifier: ^5.5.4 64 | version: 5.5.4 65 | typescript-eslint: 66 | specifier: 8.33.1 67 | version: 8.33.1(eslint@9.8.0)(typescript@5.5.4) 68 | vite: 69 | specifier: ^6.0.1 70 | version: 6.0.1 71 | vitest: 72 | specifier: ^3.0.0 73 | version: 3.0.0 74 | 75 | packages: 76 | 77 | '@ampproject/remapping@2.3.0': 78 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 79 | engines: {node: '>=6.0.0'} 80 | 81 | '@babel/runtime@7.25.0': 82 | resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} 83 | engines: {node: '>=6.9.0'} 84 | 85 | '@changesets/apply-release-plan@7.0.4': 86 | resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} 87 | 88 | '@changesets/assemble-release-plan@6.0.3': 89 | resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==} 90 | 91 | '@changesets/changelog-git@0.2.0': 92 | resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} 93 | 94 | '@changesets/cli@2.27.7': 95 | resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==} 96 | hasBin: true 97 | 98 | '@changesets/config@3.0.2': 99 | resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==} 100 | 101 | '@changesets/errors@0.2.0': 102 | resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} 103 | 104 | '@changesets/get-dependents-graph@2.1.1': 105 | resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==} 106 | 107 | '@changesets/get-release-plan@4.0.3': 108 | resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==} 109 | 110 | '@changesets/get-version-range-type@0.4.0': 111 | resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} 112 | 113 | '@changesets/git@3.0.0': 114 | resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} 115 | 116 | '@changesets/logger@0.1.0': 117 | resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} 118 | 119 | '@changesets/parse@0.4.0': 120 | resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} 121 | 122 | '@changesets/pre@2.0.0': 123 | resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} 124 | 125 | '@changesets/read@0.6.0': 126 | resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} 127 | 128 | '@changesets/should-skip-package@0.1.0': 129 | resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==} 130 | 131 | '@changesets/types@4.1.0': 132 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} 133 | 134 | '@changesets/types@6.0.0': 135 | resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} 136 | 137 | '@changesets/write@0.3.1': 138 | resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} 139 | 140 | '@esbuild/aix-ppc64@0.24.0': 141 | resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} 142 | engines: {node: '>=18'} 143 | cpu: [ppc64] 144 | os: [aix] 145 | 146 | '@esbuild/android-arm64@0.24.0': 147 | resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} 148 | engines: {node: '>=18'} 149 | cpu: [arm64] 150 | os: [android] 151 | 152 | '@esbuild/android-arm@0.24.0': 153 | resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} 154 | engines: {node: '>=18'} 155 | cpu: [arm] 156 | os: [android] 157 | 158 | '@esbuild/android-x64@0.24.0': 159 | resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} 160 | engines: {node: '>=18'} 161 | cpu: [x64] 162 | os: [android] 163 | 164 | '@esbuild/darwin-arm64@0.24.0': 165 | resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} 166 | engines: {node: '>=18'} 167 | cpu: [arm64] 168 | os: [darwin] 169 | 170 | '@esbuild/darwin-x64@0.24.0': 171 | resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} 172 | engines: {node: '>=18'} 173 | cpu: [x64] 174 | os: [darwin] 175 | 176 | '@esbuild/freebsd-arm64@0.24.0': 177 | resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} 178 | engines: {node: '>=18'} 179 | cpu: [arm64] 180 | os: [freebsd] 181 | 182 | '@esbuild/freebsd-x64@0.24.0': 183 | resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} 184 | engines: {node: '>=18'} 185 | cpu: [x64] 186 | os: [freebsd] 187 | 188 | '@esbuild/linux-arm64@0.24.0': 189 | resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} 190 | engines: {node: '>=18'} 191 | cpu: [arm64] 192 | os: [linux] 193 | 194 | '@esbuild/linux-arm@0.24.0': 195 | resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} 196 | engines: {node: '>=18'} 197 | cpu: [arm] 198 | os: [linux] 199 | 200 | '@esbuild/linux-ia32@0.24.0': 201 | resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} 202 | engines: {node: '>=18'} 203 | cpu: [ia32] 204 | os: [linux] 205 | 206 | '@esbuild/linux-loong64@0.24.0': 207 | resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} 208 | engines: {node: '>=18'} 209 | cpu: [loong64] 210 | os: [linux] 211 | 212 | '@esbuild/linux-mips64el@0.24.0': 213 | resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} 214 | engines: {node: '>=18'} 215 | cpu: [mips64el] 216 | os: [linux] 217 | 218 | '@esbuild/linux-ppc64@0.24.0': 219 | resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} 220 | engines: {node: '>=18'} 221 | cpu: [ppc64] 222 | os: [linux] 223 | 224 | '@esbuild/linux-riscv64@0.24.0': 225 | resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} 226 | engines: {node: '>=18'} 227 | cpu: [riscv64] 228 | os: [linux] 229 | 230 | '@esbuild/linux-s390x@0.24.0': 231 | resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} 232 | engines: {node: '>=18'} 233 | cpu: [s390x] 234 | os: [linux] 235 | 236 | '@esbuild/linux-x64@0.24.0': 237 | resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} 238 | engines: {node: '>=18'} 239 | cpu: [x64] 240 | os: [linux] 241 | 242 | '@esbuild/netbsd-x64@0.24.0': 243 | resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} 244 | engines: {node: '>=18'} 245 | cpu: [x64] 246 | os: [netbsd] 247 | 248 | '@esbuild/openbsd-arm64@0.24.0': 249 | resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} 250 | engines: {node: '>=18'} 251 | cpu: [arm64] 252 | os: [openbsd] 253 | 254 | '@esbuild/openbsd-x64@0.24.0': 255 | resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} 256 | engines: {node: '>=18'} 257 | cpu: [x64] 258 | os: [openbsd] 259 | 260 | '@esbuild/sunos-x64@0.24.0': 261 | resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} 262 | engines: {node: '>=18'} 263 | cpu: [x64] 264 | os: [sunos] 265 | 266 | '@esbuild/win32-arm64@0.24.0': 267 | resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} 268 | engines: {node: '>=18'} 269 | cpu: [arm64] 270 | os: [win32] 271 | 272 | '@esbuild/win32-ia32@0.24.0': 273 | resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} 274 | engines: {node: '>=18'} 275 | cpu: [ia32] 276 | os: [win32] 277 | 278 | '@esbuild/win32-x64@0.24.0': 279 | resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} 280 | engines: {node: '>=18'} 281 | cpu: [x64] 282 | os: [win32] 283 | 284 | '@eslint-community/eslint-utils@4.4.0': 285 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 286 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 287 | peerDependencies: 288 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 289 | 290 | '@eslint-community/eslint-utils@4.4.1': 291 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 292 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 293 | peerDependencies: 294 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 295 | 296 | '@eslint-community/eslint-utils@4.7.0': 297 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 298 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 299 | peerDependencies: 300 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 301 | 302 | '@eslint-community/regexpp@4.11.0': 303 | resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} 304 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 305 | 306 | '@eslint/config-array@0.17.1': 307 | resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} 308 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 309 | 310 | '@eslint/eslintrc@3.1.0': 311 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 312 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 313 | 314 | '@eslint/js@9.8.0': 315 | resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==} 316 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 317 | 318 | '@eslint/object-schema@2.1.4': 319 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 320 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 321 | 322 | '@humanwhocodes/module-importer@1.0.1': 323 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 324 | engines: {node: '>=12.22'} 325 | 326 | '@humanwhocodes/retry@0.3.0': 327 | resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} 328 | engines: {node: '>=18.18'} 329 | 330 | '@jridgewell/gen-mapping@0.3.5': 331 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 332 | engines: {node: '>=6.0.0'} 333 | 334 | '@jridgewell/resolve-uri@3.1.2': 335 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 336 | engines: {node: '>=6.0.0'} 337 | 338 | '@jridgewell/set-array@1.2.1': 339 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 340 | engines: {node: '>=6.0.0'} 341 | 342 | '@jridgewell/sourcemap-codec@1.5.0': 343 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 344 | 345 | '@jridgewell/trace-mapping@0.3.25': 346 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 347 | 348 | '@manypkg/find-root@1.1.0': 349 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 350 | 351 | '@manypkg/get-packages@1.1.3': 352 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 353 | 354 | '@nodelib/fs.scandir@2.1.5': 355 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 356 | engines: {node: '>= 8'} 357 | 358 | '@nodelib/fs.stat@2.0.5': 359 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 360 | engines: {node: '>= 8'} 361 | 362 | '@nodelib/fs.walk@1.2.8': 363 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 364 | engines: {node: '>= 8'} 365 | 366 | '@playwright/test@1.45.3': 367 | resolution: {integrity: sha512-UKF4XsBfy+u3MFWEH44hva1Q8Da28G6RFtR2+5saw+jgAFQV5yYnB1fu68Mz7fO+5GJF3wgwAIs0UelU8TxFrA==} 368 | engines: {node: '>=18'} 369 | hasBin: true 370 | 371 | '@polka/url@1.0.0-next.25': 372 | resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} 373 | 374 | '@publint/pack@0.1.0': 375 | resolution: {integrity: sha512-NvV5jPAQIMCoHvaJ0ZhfouBJ2woFYYf+o6B7dCHGh/tLKSPVoxhjffi35xPuMHgOv65aTOKUzML5XwQF9EkDAA==} 376 | engines: {node: '>=18'} 377 | 378 | '@rollup/rollup-android-arm-eabi@4.27.4': 379 | resolution: {integrity: sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==} 380 | cpu: [arm] 381 | os: [android] 382 | 383 | '@rollup/rollup-android-arm64@4.27.4': 384 | resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==} 385 | cpu: [arm64] 386 | os: [android] 387 | 388 | '@rollup/rollup-darwin-arm64@4.27.4': 389 | resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==} 390 | cpu: [arm64] 391 | os: [darwin] 392 | 393 | '@rollup/rollup-darwin-x64@4.27.4': 394 | resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==} 395 | cpu: [x64] 396 | os: [darwin] 397 | 398 | '@rollup/rollup-freebsd-arm64@4.27.4': 399 | resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==} 400 | cpu: [arm64] 401 | os: [freebsd] 402 | 403 | '@rollup/rollup-freebsd-x64@4.27.4': 404 | resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==} 405 | cpu: [x64] 406 | os: [freebsd] 407 | 408 | '@rollup/rollup-linux-arm-gnueabihf@4.27.4': 409 | resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==} 410 | cpu: [arm] 411 | os: [linux] 412 | 413 | '@rollup/rollup-linux-arm-musleabihf@4.27.4': 414 | resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==} 415 | cpu: [arm] 416 | os: [linux] 417 | 418 | '@rollup/rollup-linux-arm64-gnu@4.27.4': 419 | resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==} 420 | cpu: [arm64] 421 | os: [linux] 422 | 423 | '@rollup/rollup-linux-arm64-musl@4.27.4': 424 | resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==} 425 | cpu: [arm64] 426 | os: [linux] 427 | 428 | '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': 429 | resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==} 430 | cpu: [ppc64] 431 | os: [linux] 432 | 433 | '@rollup/rollup-linux-riscv64-gnu@4.27.4': 434 | resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==} 435 | cpu: [riscv64] 436 | os: [linux] 437 | 438 | '@rollup/rollup-linux-s390x-gnu@4.27.4': 439 | resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==} 440 | cpu: [s390x] 441 | os: [linux] 442 | 443 | '@rollup/rollup-linux-x64-gnu@4.27.4': 444 | resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==} 445 | cpu: [x64] 446 | os: [linux] 447 | 448 | '@rollup/rollup-linux-x64-musl@4.27.4': 449 | resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==} 450 | cpu: [x64] 451 | os: [linux] 452 | 453 | '@rollup/rollup-win32-arm64-msvc@4.27.4': 454 | resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==} 455 | cpu: [arm64] 456 | os: [win32] 457 | 458 | '@rollup/rollup-win32-ia32-msvc@4.27.4': 459 | resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==} 460 | cpu: [ia32] 461 | os: [win32] 462 | 463 | '@rollup/rollup-win32-x64-msvc@4.27.4': 464 | resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==} 465 | cpu: [x64] 466 | os: [win32] 467 | 468 | '@sveltejs/acorn-typescript@1.0.5': 469 | resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==} 470 | peerDependencies: 471 | acorn: ^8.9.0 472 | 473 | '@sveltejs/adapter-auto@6.0.0': 474 | resolution: {integrity: sha512-7mR2/G7vlXakaOj6QBSG9dwBfTgWjV+UnEMB5Z6Xu0ZbdXda6c0su1fNkg0ab0zlilSkloMA2NjCna02/DR7sA==} 475 | peerDependencies: 476 | '@sveltejs/kit': ^2.0.0 477 | 478 | '@sveltejs/kit@2.5.18': 479 | resolution: {integrity: sha512-+g06hvpVAnH7b4CDjhnTDgFWBKBiQJpuSmQeGYOuzbO3SC3tdYjRNlDCrafvDtKbGiT2uxY5Dn9qdEUGVZdWOQ==} 480 | engines: {node: '>=18.13'} 481 | hasBin: true 482 | peerDependencies: 483 | '@sveltejs/vite-plugin-svelte': ^3.0.0 484 | svelte: ^4.0.0 || ^5.0.0-next.0 485 | vite: ^5.0.3 486 | 487 | '@sveltejs/package@2.3.2': 488 | resolution: {integrity: sha512-6M8/Te7iXRG7SiH92wugqfyoJpuepjn78L433LnXicUeMso9M/N4vdL9DPK3MfTkVVY4klhNRptVqme3p4oZWA==} 489 | engines: {node: ^16.14 || >=18} 490 | hasBin: true 491 | peerDependencies: 492 | svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 493 | 494 | '@sveltejs/vite-plugin-svelte-inspector@4.0.1': 495 | resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} 496 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 497 | peerDependencies: 498 | '@sveltejs/vite-plugin-svelte': ^5.0.0 499 | svelte: ^5.0.0 500 | vite: ^6.0.0 501 | 502 | '@sveltejs/vite-plugin-svelte@5.1.0': 503 | resolution: {integrity: sha512-wojIS/7GYnJDYIg1higWj2ROA6sSRWvcR1PO/bqEyFr/5UZah26c8Cz4u0NaqjPeVltzsVpt2Tm8d2io0V+4Tw==} 504 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 505 | peerDependencies: 506 | svelte: ^5.0.0 507 | vite: ^6.0.0 508 | 509 | '@types/cookie@0.6.0': 510 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 511 | 512 | '@types/eslint@9.6.0': 513 | resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} 514 | 515 | '@types/estree@1.0.5': 516 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 517 | 518 | '@types/estree@1.0.6': 519 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 520 | 521 | '@types/json-schema@7.0.15': 522 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 523 | 524 | '@types/node@12.20.55': 525 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 526 | 527 | '@types/semver@7.5.8': 528 | resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} 529 | 530 | '@typescript-eslint/eslint-plugin@8.33.1': 531 | resolution: {integrity: sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==} 532 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 533 | peerDependencies: 534 | '@typescript-eslint/parser': ^8.33.1 535 | eslint: ^8.57.0 || ^9.0.0 536 | typescript: '>=4.8.4 <5.9.0' 537 | 538 | '@typescript-eslint/parser@8.33.1': 539 | resolution: {integrity: sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==} 540 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 541 | peerDependencies: 542 | eslint: ^8.57.0 || ^9.0.0 543 | typescript: '>=4.8.4 <5.9.0' 544 | 545 | '@typescript-eslint/project-service@8.33.1': 546 | resolution: {integrity: sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==} 547 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 548 | peerDependencies: 549 | typescript: '>=4.8.4 <5.9.0' 550 | 551 | '@typescript-eslint/scope-manager@8.33.1': 552 | resolution: {integrity: sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==} 553 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 554 | 555 | '@typescript-eslint/tsconfig-utils@8.33.1': 556 | resolution: {integrity: sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==} 557 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 558 | peerDependencies: 559 | typescript: '>=4.8.4 <5.9.0' 560 | 561 | '@typescript-eslint/type-utils@8.33.1': 562 | resolution: {integrity: sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==} 563 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 564 | peerDependencies: 565 | eslint: ^8.57.0 || ^9.0.0 566 | typescript: '>=4.8.4 <5.9.0' 567 | 568 | '@typescript-eslint/types@8.33.1': 569 | resolution: {integrity: sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==} 570 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 571 | 572 | '@typescript-eslint/typescript-estree@8.33.1': 573 | resolution: {integrity: sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==} 574 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 575 | peerDependencies: 576 | typescript: '>=4.8.4 <5.9.0' 577 | 578 | '@typescript-eslint/utils@8.33.1': 579 | resolution: {integrity: sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==} 580 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 581 | peerDependencies: 582 | eslint: ^8.57.0 || ^9.0.0 583 | typescript: '>=4.8.4 <5.9.0' 584 | 585 | '@typescript-eslint/visitor-keys@8.33.1': 586 | resolution: {integrity: sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==} 587 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 588 | 589 | '@vitest/expect@3.0.0': 590 | resolution: {integrity: sha512-Qx+cHyB59mWrQywT3/dZIIpSKwIpWbYFdBX2zixMYpOGZmbaP2jbbd4i/TAKJq/jBgSfww++d6YnrlGMFb2XBg==} 591 | 592 | '@vitest/mocker@3.0.0': 593 | resolution: {integrity: sha512-8ytqYjIRzAM90O7n8A0TCbziTnouIG+UGuMHmoRJpKh4vvah4uENw5UAMMNjdKCtzgMiTrZ9XU+xzwCwcxuxGQ==} 594 | peerDependencies: 595 | msw: ^2.4.9 596 | vite: ^5.0.0 || ^6.0.0 597 | peerDependenciesMeta: 598 | msw: 599 | optional: true 600 | vite: 601 | optional: true 602 | 603 | '@vitest/pretty-format@3.0.0': 604 | resolution: {integrity: sha512-24y+MS04ZHZbbbfAvfpi9hM2oULePbiL6Dir8r1nFMN97hxuL0gEXKWRGmlLPwzKDtaOKNjtyTx0+GiZcWCxDA==} 605 | 606 | '@vitest/runner@3.0.0': 607 | resolution: {integrity: sha512-6MCYobtatsgG3DlM+dk6njP+R+28iSUqWbJzXp/nuOy6SkAKzJ1wby3fDgimmy50TeK8g6y+E6rP12REyinYPw==} 608 | 609 | '@vitest/snapshot@3.0.0': 610 | resolution: {integrity: sha512-W0X6fJFJ3RbSThncSYUNSnXkMJFyXX9sOvxP1HSQRsWCLB1U3JnZc0SrLpLzcyByMUDXHsiXQ+x+xsr/G5fXNw==} 611 | 612 | '@vitest/spy@3.0.0': 613 | resolution: {integrity: sha512-pfK5O3lRqeCG8mbV+Lr8lLUBicFRm5TlggF7bLZpzpo111LKhMN/tZRXvyOGOgbktxAR9bTf4x8U6RtHuFBTVA==} 614 | 615 | '@vitest/utils@3.0.0': 616 | resolution: {integrity: sha512-l300v2/4diHyv5ZiQOj6y/H6VbaTWM6i1c2lC3lUZ5nn9rv9C+WneS/wqyaGLwM37reoh/QkrrYMSMKdfnDZpw==} 617 | 618 | acorn-jsx@5.3.2: 619 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 620 | peerDependencies: 621 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 622 | 623 | acorn@8.12.1: 624 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 625 | engines: {node: '>=0.4.0'} 626 | hasBin: true 627 | 628 | ajv@6.12.6: 629 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 630 | 631 | ansi-colors@4.1.3: 632 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 633 | engines: {node: '>=6'} 634 | 635 | ansi-regex@5.0.1: 636 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 637 | engines: {node: '>=8'} 638 | 639 | ansi-styles@3.2.1: 640 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 641 | engines: {node: '>=4'} 642 | 643 | ansi-styles@4.3.0: 644 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 645 | engines: {node: '>=8'} 646 | 647 | anymatch@3.1.3: 648 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 649 | engines: {node: '>= 8'} 650 | 651 | argparse@1.0.10: 652 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 653 | 654 | argparse@2.0.1: 655 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 656 | 657 | aria-query@5.3.1: 658 | resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} 659 | engines: {node: '>= 0.4'} 660 | 661 | array-union@2.1.0: 662 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 663 | engines: {node: '>=8'} 664 | 665 | assertion-error@2.0.1: 666 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 667 | engines: {node: '>=12'} 668 | 669 | axobject-query@4.1.0: 670 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 671 | engines: {node: '>= 0.4'} 672 | 673 | balanced-match@1.0.2: 674 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 675 | 676 | better-path-resolve@1.0.0: 677 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 678 | engines: {node: '>=4'} 679 | 680 | binary-extensions@2.3.0: 681 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 682 | engines: {node: '>=8'} 683 | 684 | brace-expansion@1.1.11: 685 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 686 | 687 | brace-expansion@2.0.1: 688 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 689 | 690 | braces@3.0.3: 691 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 692 | engines: {node: '>=8'} 693 | 694 | cac@6.7.14: 695 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 696 | engines: {node: '>=8'} 697 | 698 | callsites@3.1.0: 699 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 700 | engines: {node: '>=6'} 701 | 702 | chai@5.1.2: 703 | resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} 704 | engines: {node: '>=12'} 705 | 706 | chalk@2.4.2: 707 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 708 | engines: {node: '>=4'} 709 | 710 | chalk@4.1.2: 711 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 712 | engines: {node: '>=10'} 713 | 714 | chardet@0.7.0: 715 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 716 | 717 | check-error@2.1.1: 718 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 719 | engines: {node: '>= 16'} 720 | 721 | chokidar@3.6.0: 722 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 723 | engines: {node: '>= 8.10.0'} 724 | 725 | ci-info@3.9.0: 726 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 727 | engines: {node: '>=8'} 728 | 729 | clsx@2.1.1: 730 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 731 | engines: {node: '>=6'} 732 | 733 | color-convert@1.9.3: 734 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 735 | 736 | color-convert@2.0.1: 737 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 738 | engines: {node: '>=7.0.0'} 739 | 740 | color-name@1.1.3: 741 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 742 | 743 | color-name@1.1.4: 744 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 745 | 746 | concat-map@0.0.1: 747 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 748 | 749 | cookie@0.6.0: 750 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 751 | engines: {node: '>= 0.6'} 752 | 753 | cross-spawn@5.1.0: 754 | resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} 755 | 756 | cross-spawn@7.0.3: 757 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 758 | engines: {node: '>= 8'} 759 | 760 | cssesc@3.0.0: 761 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 762 | engines: {node: '>=4'} 763 | hasBin: true 764 | 765 | debug@4.3.6: 766 | resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} 767 | engines: {node: '>=6.0'} 768 | peerDependencies: 769 | supports-color: '*' 770 | peerDependenciesMeta: 771 | supports-color: 772 | optional: true 773 | 774 | debug@4.4.0: 775 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 776 | engines: {node: '>=6.0'} 777 | peerDependencies: 778 | supports-color: '*' 779 | peerDependenciesMeta: 780 | supports-color: 781 | optional: true 782 | 783 | debug@4.4.1: 784 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 785 | engines: {node: '>=6.0'} 786 | peerDependencies: 787 | supports-color: '*' 788 | peerDependenciesMeta: 789 | supports-color: 790 | optional: true 791 | 792 | dedent-js@1.0.1: 793 | resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} 794 | 795 | deep-eql@5.0.2: 796 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 797 | engines: {node: '>=6'} 798 | 799 | deep-is@0.1.4: 800 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 801 | 802 | deepmerge@4.3.1: 803 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 804 | engines: {node: '>=0.10.0'} 805 | 806 | detect-indent@6.1.0: 807 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 808 | engines: {node: '>=8'} 809 | 810 | devalue@5.0.0: 811 | resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} 812 | 813 | dir-glob@3.0.1: 814 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 815 | engines: {node: '>=8'} 816 | 817 | enquirer@2.4.1: 818 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 819 | engines: {node: '>=8.6'} 820 | 821 | es-module-lexer@1.6.0: 822 | resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} 823 | 824 | esbuild@0.24.0: 825 | resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} 826 | engines: {node: '>=18'} 827 | hasBin: true 828 | 829 | escape-string-regexp@1.0.5: 830 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 831 | engines: {node: '>=0.8.0'} 832 | 833 | escape-string-regexp@4.0.0: 834 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 835 | engines: {node: '>=10'} 836 | 837 | eslint-compat-utils@0.6.4: 838 | resolution: {integrity: sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==} 839 | engines: {node: '>=12'} 840 | peerDependencies: 841 | eslint: '>=6.0.0' 842 | 843 | eslint-config-prettier@10.0.1: 844 | resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==} 845 | hasBin: true 846 | peerDependencies: 847 | eslint: '>=7.0.0' 848 | 849 | eslint-plugin-svelte@3.0.2: 850 | resolution: {integrity: sha512-+0QglmWNryvXXxRQKzLF3i+AreTsueCw7PBb0nGVBq+F9HoYqAjQeJ/9N6vFAtjMjK3wgsETrLVyBKPdeufN6Q==} 851 | engines: {node: ^18.20.4 || ^20.18.0 || >=22.10.0} 852 | peerDependencies: 853 | eslint: ^8.57.1 || ^9.0.0 854 | svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 855 | peerDependenciesMeta: 856 | svelte: 857 | optional: true 858 | 859 | eslint-scope@8.0.2: 860 | resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} 861 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 862 | 863 | eslint-scope@8.2.0: 864 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} 865 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 866 | 867 | eslint-visitor-keys@3.4.3: 868 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 869 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 870 | 871 | eslint-visitor-keys@4.0.0: 872 | resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} 873 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 874 | 875 | eslint-visitor-keys@4.2.0: 876 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 877 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 878 | 879 | eslint@9.8.0: 880 | resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==} 881 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 882 | hasBin: true 883 | 884 | esm-env@1.0.0: 885 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 886 | 887 | esm-env@1.2.1: 888 | resolution: {integrity: sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==} 889 | 890 | espree@10.1.0: 891 | resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} 892 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 893 | 894 | esprima@4.0.1: 895 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 896 | engines: {node: '>=4'} 897 | hasBin: true 898 | 899 | esquery@1.6.0: 900 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 901 | engines: {node: '>=0.10'} 902 | 903 | esrap@1.4.6: 904 | resolution: {integrity: sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==} 905 | 906 | esrecurse@4.3.0: 907 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 908 | engines: {node: '>=4.0'} 909 | 910 | estraverse@5.3.0: 911 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 912 | engines: {node: '>=4.0'} 913 | 914 | estree-walker@3.0.3: 915 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 916 | 917 | esutils@2.0.3: 918 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 919 | engines: {node: '>=0.10.0'} 920 | 921 | expect-type@1.1.0: 922 | resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} 923 | engines: {node: '>=12.0.0'} 924 | 925 | extendable-error@0.1.7: 926 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 927 | 928 | external-editor@3.1.0: 929 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 930 | engines: {node: '>=4'} 931 | 932 | fast-deep-equal@3.1.3: 933 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 934 | 935 | fast-glob@3.3.2: 936 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 937 | engines: {node: '>=8.6.0'} 938 | 939 | fast-json-stable-stringify@2.1.0: 940 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 941 | 942 | fast-levenshtein@2.0.6: 943 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 944 | 945 | fastq@1.17.1: 946 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 947 | 948 | fdir@6.3.0: 949 | resolution: {integrity: sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==} 950 | peerDependencies: 951 | picomatch: ^3 || ^4 952 | peerDependenciesMeta: 953 | picomatch: 954 | optional: true 955 | 956 | file-entry-cache@8.0.0: 957 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 958 | engines: {node: '>=16.0.0'} 959 | 960 | fill-range@7.1.1: 961 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 962 | engines: {node: '>=8'} 963 | 964 | find-up@4.1.0: 965 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 966 | engines: {node: '>=8'} 967 | 968 | find-up@5.0.0: 969 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 970 | engines: {node: '>=10'} 971 | 972 | find-yarn-workspace-root2@1.2.16: 973 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} 974 | 975 | flat-cache@4.0.1: 976 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 977 | engines: {node: '>=16'} 978 | 979 | flatted@3.3.1: 980 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 981 | 982 | fs-extra@7.0.1: 983 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 984 | engines: {node: '>=6 <7 || >=8'} 985 | 986 | fs-extra@8.1.0: 987 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 988 | engines: {node: '>=6 <7 || >=8'} 989 | 990 | fsevents@2.3.2: 991 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 992 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 993 | os: [darwin] 994 | 995 | fsevents@2.3.3: 996 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 997 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 998 | os: [darwin] 999 | 1000 | get-func-name@2.0.2: 1001 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} 1002 | 1003 | glob-parent@5.1.2: 1004 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1005 | engines: {node: '>= 6'} 1006 | 1007 | glob-parent@6.0.2: 1008 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1009 | engines: {node: '>=10.13.0'} 1010 | 1011 | globals@14.0.0: 1012 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1013 | engines: {node: '>=18'} 1014 | 1015 | globals@16.0.0: 1016 | resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} 1017 | engines: {node: '>=18'} 1018 | 1019 | globalyzer@0.1.0: 1020 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 1021 | 1022 | globby@11.1.0: 1023 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1024 | engines: {node: '>=10'} 1025 | 1026 | globrex@0.1.2: 1027 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1028 | 1029 | graceful-fs@4.2.11: 1030 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1031 | 1032 | graphemer@1.4.0: 1033 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1034 | 1035 | has-flag@3.0.0: 1036 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1037 | engines: {node: '>=4'} 1038 | 1039 | has-flag@4.0.0: 1040 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1041 | engines: {node: '>=8'} 1042 | 1043 | human-id@1.0.2: 1044 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} 1045 | 1046 | iconv-lite@0.4.24: 1047 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1048 | engines: {node: '>=0.10.0'} 1049 | 1050 | ignore@5.3.1: 1051 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 1052 | engines: {node: '>= 4'} 1053 | 1054 | ignore@7.0.4: 1055 | resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} 1056 | engines: {node: '>= 4'} 1057 | 1058 | import-fresh@3.3.0: 1059 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1060 | engines: {node: '>=6'} 1061 | 1062 | import-meta-resolve@4.1.0: 1063 | resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 1064 | 1065 | imurmurhash@0.1.4: 1066 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1067 | engines: {node: '>=0.8.19'} 1068 | 1069 | is-binary-path@2.1.0: 1070 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1071 | engines: {node: '>=8'} 1072 | 1073 | is-extglob@2.1.1: 1074 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1075 | engines: {node: '>=0.10.0'} 1076 | 1077 | is-glob@4.0.3: 1078 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1079 | engines: {node: '>=0.10.0'} 1080 | 1081 | is-number@7.0.0: 1082 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1083 | engines: {node: '>=0.12.0'} 1084 | 1085 | is-path-inside@3.0.3: 1086 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1087 | engines: {node: '>=8'} 1088 | 1089 | is-reference@3.0.3: 1090 | resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} 1091 | 1092 | is-subdir@1.2.0: 1093 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 1094 | engines: {node: '>=4'} 1095 | 1096 | is-windows@1.0.2: 1097 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 1098 | engines: {node: '>=0.10.0'} 1099 | 1100 | isexe@2.0.0: 1101 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1102 | 1103 | js-yaml@3.14.1: 1104 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1105 | hasBin: true 1106 | 1107 | js-yaml@4.1.0: 1108 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1109 | hasBin: true 1110 | 1111 | json-buffer@3.0.1: 1112 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1113 | 1114 | json-schema-traverse@0.4.1: 1115 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1116 | 1117 | json-stable-stringify-without-jsonify@1.0.1: 1118 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1119 | 1120 | jsonfile@4.0.0: 1121 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 1122 | 1123 | keyv@4.5.4: 1124 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1125 | 1126 | kleur@4.1.5: 1127 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1128 | engines: {node: '>=6'} 1129 | 1130 | known-css-properties@0.35.0: 1131 | resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} 1132 | 1133 | levn@0.4.1: 1134 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1135 | engines: {node: '>= 0.8.0'} 1136 | 1137 | lilconfig@2.1.0: 1138 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1139 | engines: {node: '>=10'} 1140 | 1141 | load-yaml-file@0.2.0: 1142 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} 1143 | engines: {node: '>=6'} 1144 | 1145 | locate-character@3.0.0: 1146 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 1147 | 1148 | locate-path@5.0.0: 1149 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1150 | engines: {node: '>=8'} 1151 | 1152 | locate-path@6.0.0: 1153 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1154 | engines: {node: '>=10'} 1155 | 1156 | lodash.merge@4.6.2: 1157 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1158 | 1159 | lodash.startcase@4.4.0: 1160 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 1161 | 1162 | loupe@3.1.1: 1163 | resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} 1164 | 1165 | loupe@3.1.2: 1166 | resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} 1167 | 1168 | lower-case@2.0.2: 1169 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 1170 | 1171 | lru-cache@4.1.5: 1172 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} 1173 | 1174 | magic-string@0.30.10: 1175 | resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} 1176 | 1177 | magic-string@0.30.17: 1178 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1179 | 1180 | merge2@1.4.1: 1181 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1182 | engines: {node: '>= 8'} 1183 | 1184 | micromatch@4.0.7: 1185 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} 1186 | engines: {node: '>=8.6'} 1187 | 1188 | minimatch@3.1.2: 1189 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1190 | 1191 | minimatch@9.0.5: 1192 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1193 | engines: {node: '>=16 || 14 >=14.17'} 1194 | 1195 | mri@1.2.0: 1196 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1197 | engines: {node: '>=4'} 1198 | 1199 | mrmime@2.0.0: 1200 | resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} 1201 | engines: {node: '>=10'} 1202 | 1203 | ms@2.1.2: 1204 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1205 | 1206 | ms@2.1.3: 1207 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1208 | 1209 | nanoid@3.3.7: 1210 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1211 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1212 | hasBin: true 1213 | 1214 | natural-compare@1.4.0: 1215 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1216 | 1217 | no-case@3.0.4: 1218 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 1219 | 1220 | normalize-path@3.0.0: 1221 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1222 | engines: {node: '>=0.10.0'} 1223 | 1224 | optionator@0.9.4: 1225 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1226 | engines: {node: '>= 0.8.0'} 1227 | 1228 | os-tmpdir@1.0.2: 1229 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 1230 | engines: {node: '>=0.10.0'} 1231 | 1232 | outdent@0.5.0: 1233 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 1234 | 1235 | p-filter@2.1.0: 1236 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 1237 | engines: {node: '>=8'} 1238 | 1239 | p-limit@2.3.0: 1240 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1241 | engines: {node: '>=6'} 1242 | 1243 | p-limit@3.1.0: 1244 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1245 | engines: {node: '>=10'} 1246 | 1247 | p-locate@4.1.0: 1248 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1249 | engines: {node: '>=8'} 1250 | 1251 | p-locate@5.0.0: 1252 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1253 | engines: {node: '>=10'} 1254 | 1255 | p-map@2.1.0: 1256 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 1257 | engines: {node: '>=6'} 1258 | 1259 | p-try@2.2.0: 1260 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1261 | engines: {node: '>=6'} 1262 | 1263 | package-manager-detector@0.2.8: 1264 | resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} 1265 | 1266 | parent-module@1.0.1: 1267 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1268 | engines: {node: '>=6'} 1269 | 1270 | pascal-case@3.1.2: 1271 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 1272 | 1273 | path-exists@4.0.0: 1274 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1275 | engines: {node: '>=8'} 1276 | 1277 | path-key@3.1.1: 1278 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1279 | engines: {node: '>=8'} 1280 | 1281 | path-type@4.0.0: 1282 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1283 | engines: {node: '>=8'} 1284 | 1285 | pathe@2.0.1: 1286 | resolution: {integrity: sha512-6jpjMpOth5S9ITVu5clZ7NOgHNsv5vRQdheL9ztp2vZmM6fRbLvyua1tiBIL4lk8SAe3ARzeXEly6siXCjDHDw==} 1287 | 1288 | pathval@2.0.0: 1289 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1290 | engines: {node: '>= 14.16'} 1291 | 1292 | picocolors@1.0.1: 1293 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} 1294 | 1295 | picocolors@1.1.1: 1296 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1297 | 1298 | picomatch@2.3.1: 1299 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1300 | engines: {node: '>=8.6'} 1301 | 1302 | pify@4.0.1: 1303 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 1304 | engines: {node: '>=6'} 1305 | 1306 | pkg-dir@4.2.0: 1307 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 1308 | engines: {node: '>=8'} 1309 | 1310 | playwright-core@1.45.3: 1311 | resolution: {integrity: sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==} 1312 | engines: {node: '>=18'} 1313 | hasBin: true 1314 | 1315 | playwright@1.45.3: 1316 | resolution: {integrity: sha512-QhVaS+lpluxCaioejDZ95l4Y4jSFCsBvl2UZkpeXlzxmqS+aABr5c82YmfMHrL6x27nvrvykJAFpkzT2eWdJww==} 1317 | engines: {node: '>=18'} 1318 | hasBin: true 1319 | 1320 | postcss-load-config@3.1.4: 1321 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1322 | engines: {node: '>= 10'} 1323 | peerDependencies: 1324 | postcss: '>=8.0.9' 1325 | ts-node: '>=9.0.0' 1326 | peerDependenciesMeta: 1327 | postcss: 1328 | optional: true 1329 | ts-node: 1330 | optional: true 1331 | 1332 | postcss-safe-parser@7.0.1: 1333 | resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} 1334 | engines: {node: '>=18.0'} 1335 | peerDependencies: 1336 | postcss: ^8.4.31 1337 | 1338 | postcss-scss@4.0.9: 1339 | resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} 1340 | engines: {node: '>=12.0'} 1341 | peerDependencies: 1342 | postcss: ^8.4.29 1343 | 1344 | postcss-selector-parser@7.1.0: 1345 | resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} 1346 | engines: {node: '>=4'} 1347 | 1348 | postcss@8.4.49: 1349 | resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} 1350 | engines: {node: ^10 || ^12 || >=14} 1351 | 1352 | preferred-pm@3.1.4: 1353 | resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} 1354 | engines: {node: '>=10'} 1355 | 1356 | prelude-ls@1.2.1: 1357 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1358 | engines: {node: '>= 0.8.0'} 1359 | 1360 | prettier-plugin-svelte@3.2.6: 1361 | resolution: {integrity: sha512-Y1XWLw7vXUQQZmgv1JAEiLcErqUniAF2wO7QJsw8BVMvpLET2dI5WpEIEJx1r11iHVdSMzQxivyfrH9On9t2IQ==} 1362 | peerDependencies: 1363 | prettier: ^3.0.0 1364 | svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 1365 | 1366 | prettier@2.8.8: 1367 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 1368 | engines: {node: '>=10.13.0'} 1369 | hasBin: true 1370 | 1371 | prettier@3.3.3: 1372 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 1373 | engines: {node: '>=14'} 1374 | hasBin: true 1375 | 1376 | pseudomap@1.0.2: 1377 | resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} 1378 | 1379 | publint@0.3.0: 1380 | resolution: {integrity: sha512-B7efom03c86OGqN1Jp2mDduiamb5apEuolvlbUeHaa14geCzJKz35oPIiKoXPMvM3tGABEZ1oLfY6xJNvOh69g==} 1381 | engines: {node: '>=18'} 1382 | hasBin: true 1383 | 1384 | punycode@2.3.1: 1385 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1386 | engines: {node: '>=6'} 1387 | 1388 | queue-microtask@1.2.3: 1389 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1390 | 1391 | read-yaml-file@1.1.0: 1392 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 1393 | engines: {node: '>=6'} 1394 | 1395 | readdirp@3.6.0: 1396 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1397 | engines: {node: '>=8.10.0'} 1398 | 1399 | regenerator-runtime@0.14.1: 1400 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 1401 | 1402 | resolve-from@4.0.0: 1403 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1404 | engines: {node: '>=4'} 1405 | 1406 | resolve-from@5.0.0: 1407 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1408 | engines: {node: '>=8'} 1409 | 1410 | reusify@1.0.4: 1411 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1412 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1413 | 1414 | rollup@4.27.4: 1415 | resolution: {integrity: sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==} 1416 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1417 | hasBin: true 1418 | 1419 | run-parallel@1.2.0: 1420 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1421 | 1422 | sade@1.8.1: 1423 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1424 | engines: {node: '>=6'} 1425 | 1426 | safer-buffer@2.1.2: 1427 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1428 | 1429 | semver@7.6.3: 1430 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1431 | engines: {node: '>=10'} 1432 | hasBin: true 1433 | 1434 | set-cookie-parser@2.6.0: 1435 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 1436 | 1437 | shebang-command@1.2.0: 1438 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} 1439 | engines: {node: '>=0.10.0'} 1440 | 1441 | shebang-command@2.0.0: 1442 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1443 | engines: {node: '>=8'} 1444 | 1445 | shebang-regex@1.0.0: 1446 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} 1447 | engines: {node: '>=0.10.0'} 1448 | 1449 | shebang-regex@3.0.0: 1450 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1451 | engines: {node: '>=8'} 1452 | 1453 | siginfo@2.0.0: 1454 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1455 | 1456 | signal-exit@3.0.7: 1457 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1458 | 1459 | sirv@2.0.4: 1460 | resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} 1461 | engines: {node: '>= 10'} 1462 | 1463 | slash@3.0.0: 1464 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1465 | engines: {node: '>=8'} 1466 | 1467 | source-map-js@1.2.1: 1468 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1469 | engines: {node: '>=0.10.0'} 1470 | 1471 | spawndamnit@2.0.0: 1472 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} 1473 | 1474 | sprintf-js@1.0.3: 1475 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 1476 | 1477 | stackback@0.0.2: 1478 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1479 | 1480 | std-env@3.8.0: 1481 | resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} 1482 | 1483 | strip-ansi@6.0.1: 1484 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1485 | engines: {node: '>=8'} 1486 | 1487 | strip-bom@3.0.0: 1488 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1489 | engines: {node: '>=4'} 1490 | 1491 | strip-json-comments@3.1.1: 1492 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1493 | engines: {node: '>=8'} 1494 | 1495 | supports-color@5.5.0: 1496 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1497 | engines: {node: '>=4'} 1498 | 1499 | supports-color@7.2.0: 1500 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1501 | engines: {node: '>=8'} 1502 | 1503 | svelte-check@4.0.0: 1504 | resolution: {integrity: sha512-QgKO6OQbee9B2dyWZgrGruS3WHKrUZ718Ug53nK45vamsx93Al3on6tOrxyCMVX+OMOLLlrenn7b2VAomePwxQ==} 1505 | engines: {node: '>= 18.0.0'} 1506 | hasBin: true 1507 | peerDependencies: 1508 | svelte: ^4.0.0 || ^5.0.0-next.0 1509 | typescript: '>=5.0.0' 1510 | 1511 | svelte-eslint-parser@1.0.0: 1512 | resolution: {integrity: sha512-diZzpeeFhAxormeIhmRS4vXx98GG6T7Dq5y1a6qffqs/5MBrBqqDg8bj88iEohp6bvhU4MIABJmOTa0gXWcbSQ==} 1513 | engines: {node: ^18.20.4 || ^20.18.0 || >=22.10.0} 1514 | peerDependencies: 1515 | svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 1516 | peerDependenciesMeta: 1517 | svelte: 1518 | optional: true 1519 | 1520 | svelte2tsx@0.7.13: 1521 | resolution: {integrity: sha512-aObZ93/kGAiLXA/I/kP+x9FriZM+GboB/ReOIGmLNbVGEd2xC+aTCppm3mk1cc9I/z60VQf7b2QDxC3jOXu3yw==} 1522 | peerDependencies: 1523 | svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 1524 | typescript: ^4.9.4 || ^5.0.0 1525 | 1526 | svelte@5.33.14: 1527 | resolution: {integrity: sha512-kRlbhIlMTijbFmVDQFDeKXPLlX1/ovXwV0I162wRqQhRcygaqDIcu1d/Ese3H2uI+yt3uT8E7ndgDthQv5v5BA==} 1528 | engines: {node: '>=18'} 1529 | 1530 | term-size@2.2.1: 1531 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 1532 | engines: {node: '>=8'} 1533 | 1534 | text-table@0.2.0: 1535 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1536 | 1537 | tiny-glob@0.2.9: 1538 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 1539 | 1540 | tinybench@2.9.0: 1541 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1542 | 1543 | tinyexec@0.3.2: 1544 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1545 | 1546 | tinypool@1.0.2: 1547 | resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} 1548 | engines: {node: ^18.0.0 || >=20.0.0} 1549 | 1550 | tinyrainbow@2.0.0: 1551 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 1552 | engines: {node: '>=14.0.0'} 1553 | 1554 | tinyspy@3.0.2: 1555 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 1556 | engines: {node: '>=14.0.0'} 1557 | 1558 | tmp@0.0.33: 1559 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 1560 | engines: {node: '>=0.6.0'} 1561 | 1562 | to-regex-range@5.0.1: 1563 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1564 | engines: {node: '>=8.0'} 1565 | 1566 | totalist@3.0.1: 1567 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 1568 | engines: {node: '>=6'} 1569 | 1570 | ts-api-utils@2.1.0: 1571 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1572 | engines: {node: '>=18.12'} 1573 | peerDependencies: 1574 | typescript: '>=4.8.4' 1575 | 1576 | tslib@2.6.3: 1577 | resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} 1578 | 1579 | type-check@0.4.0: 1580 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1581 | engines: {node: '>= 0.8.0'} 1582 | 1583 | typescript-eslint@8.33.1: 1584 | resolution: {integrity: sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==} 1585 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1586 | peerDependencies: 1587 | eslint: ^8.57.0 || ^9.0.0 1588 | typescript: '>=4.8.4 <5.9.0' 1589 | 1590 | typescript@5.5.4: 1591 | resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} 1592 | engines: {node: '>=14.17'} 1593 | hasBin: true 1594 | 1595 | universalify@0.1.2: 1596 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 1597 | engines: {node: '>= 4.0.0'} 1598 | 1599 | uri-js@4.4.1: 1600 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1601 | 1602 | util-deprecate@1.0.2: 1603 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1604 | 1605 | vite-node@3.0.0: 1606 | resolution: {integrity: sha512-V5p05fpAzkHM3aYChsHWV1RTeLAhPejbKX6MqiWWyuIfNcDgXq5p0GnYV6Wa4OAU588XC70XCJB9chRZsOh4yg==} 1607 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1608 | hasBin: true 1609 | 1610 | vite@6.0.1: 1611 | resolution: {integrity: sha512-Ldn6gorLGr4mCdFnmeAOLweJxZ34HjKnDm4HGo6P66IEqTxQb36VEdFJQENKxWjupNfoIjvRUnswjn1hpYEpjQ==} 1612 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1613 | hasBin: true 1614 | peerDependencies: 1615 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1616 | jiti: '>=1.21.0' 1617 | less: '*' 1618 | lightningcss: ^1.21.0 1619 | sass: '*' 1620 | sass-embedded: '*' 1621 | stylus: '*' 1622 | sugarss: '*' 1623 | terser: ^5.16.0 1624 | tsx: ^4.8.1 1625 | yaml: ^2.4.2 1626 | peerDependenciesMeta: 1627 | '@types/node': 1628 | optional: true 1629 | jiti: 1630 | optional: true 1631 | less: 1632 | optional: true 1633 | lightningcss: 1634 | optional: true 1635 | sass: 1636 | optional: true 1637 | sass-embedded: 1638 | optional: true 1639 | stylus: 1640 | optional: true 1641 | sugarss: 1642 | optional: true 1643 | terser: 1644 | optional: true 1645 | tsx: 1646 | optional: true 1647 | yaml: 1648 | optional: true 1649 | 1650 | vitefu@1.0.6: 1651 | resolution: {integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==} 1652 | peerDependencies: 1653 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 1654 | peerDependenciesMeta: 1655 | vite: 1656 | optional: true 1657 | 1658 | vitest@3.0.0: 1659 | resolution: {integrity: sha512-fwfPif+EV0jyms9h1Crb6rwJttH/KBzKrcUesjxHgldmc6R0FaMNLsd+Rgc17NoxzLcb/sYE2Xs9NQ/vnTBf6Q==} 1660 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1661 | hasBin: true 1662 | peerDependencies: 1663 | '@edge-runtime/vm': '*' 1664 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1665 | '@vitest/browser': 3.0.0 1666 | '@vitest/ui': 3.0.0 1667 | happy-dom: '*' 1668 | jsdom: '*' 1669 | peerDependenciesMeta: 1670 | '@edge-runtime/vm': 1671 | optional: true 1672 | '@types/node': 1673 | optional: true 1674 | '@vitest/browser': 1675 | optional: true 1676 | '@vitest/ui': 1677 | optional: true 1678 | happy-dom: 1679 | optional: true 1680 | jsdom: 1681 | optional: true 1682 | 1683 | which-pm@2.2.0: 1684 | resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} 1685 | engines: {node: '>=8.15'} 1686 | 1687 | which@1.3.1: 1688 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 1689 | hasBin: true 1690 | 1691 | which@2.0.2: 1692 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1693 | engines: {node: '>= 8'} 1694 | hasBin: true 1695 | 1696 | why-is-node-running@2.3.0: 1697 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1698 | engines: {node: '>=8'} 1699 | hasBin: true 1700 | 1701 | word-wrap@1.2.5: 1702 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1703 | engines: {node: '>=0.10.0'} 1704 | 1705 | yallist@2.1.2: 1706 | resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} 1707 | 1708 | yaml@1.10.2: 1709 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1710 | engines: {node: '>= 6'} 1711 | 1712 | yocto-queue@0.1.0: 1713 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1714 | engines: {node: '>=10'} 1715 | 1716 | zimmerframe@1.1.2: 1717 | resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} 1718 | 1719 | snapshots: 1720 | 1721 | '@ampproject/remapping@2.3.0': 1722 | dependencies: 1723 | '@jridgewell/gen-mapping': 0.3.5 1724 | '@jridgewell/trace-mapping': 0.3.25 1725 | 1726 | '@babel/runtime@7.25.0': 1727 | dependencies: 1728 | regenerator-runtime: 0.14.1 1729 | 1730 | '@changesets/apply-release-plan@7.0.4': 1731 | dependencies: 1732 | '@babel/runtime': 7.25.0 1733 | '@changesets/config': 3.0.2 1734 | '@changesets/get-version-range-type': 0.4.0 1735 | '@changesets/git': 3.0.0 1736 | '@changesets/should-skip-package': 0.1.0 1737 | '@changesets/types': 6.0.0 1738 | '@manypkg/get-packages': 1.1.3 1739 | detect-indent: 6.1.0 1740 | fs-extra: 7.0.1 1741 | lodash.startcase: 4.4.0 1742 | outdent: 0.5.0 1743 | prettier: 2.8.8 1744 | resolve-from: 5.0.0 1745 | semver: 7.6.3 1746 | 1747 | '@changesets/assemble-release-plan@6.0.3': 1748 | dependencies: 1749 | '@babel/runtime': 7.25.0 1750 | '@changesets/errors': 0.2.0 1751 | '@changesets/get-dependents-graph': 2.1.1 1752 | '@changesets/should-skip-package': 0.1.0 1753 | '@changesets/types': 6.0.0 1754 | '@manypkg/get-packages': 1.1.3 1755 | semver: 7.6.3 1756 | 1757 | '@changesets/changelog-git@0.2.0': 1758 | dependencies: 1759 | '@changesets/types': 6.0.0 1760 | 1761 | '@changesets/cli@2.27.7': 1762 | dependencies: 1763 | '@babel/runtime': 7.25.0 1764 | '@changesets/apply-release-plan': 7.0.4 1765 | '@changesets/assemble-release-plan': 6.0.3 1766 | '@changesets/changelog-git': 0.2.0 1767 | '@changesets/config': 3.0.2 1768 | '@changesets/errors': 0.2.0 1769 | '@changesets/get-dependents-graph': 2.1.1 1770 | '@changesets/get-release-plan': 4.0.3 1771 | '@changesets/git': 3.0.0 1772 | '@changesets/logger': 0.1.0 1773 | '@changesets/pre': 2.0.0 1774 | '@changesets/read': 0.6.0 1775 | '@changesets/should-skip-package': 0.1.0 1776 | '@changesets/types': 6.0.0 1777 | '@changesets/write': 0.3.1 1778 | '@manypkg/get-packages': 1.1.3 1779 | '@types/semver': 7.5.8 1780 | ansi-colors: 4.1.3 1781 | chalk: 2.4.2 1782 | ci-info: 3.9.0 1783 | enquirer: 2.4.1 1784 | external-editor: 3.1.0 1785 | fs-extra: 7.0.1 1786 | human-id: 1.0.2 1787 | mri: 1.2.0 1788 | outdent: 0.5.0 1789 | p-limit: 2.3.0 1790 | preferred-pm: 3.1.4 1791 | resolve-from: 5.0.0 1792 | semver: 7.6.3 1793 | spawndamnit: 2.0.0 1794 | term-size: 2.2.1 1795 | 1796 | '@changesets/config@3.0.2': 1797 | dependencies: 1798 | '@changesets/errors': 0.2.0 1799 | '@changesets/get-dependents-graph': 2.1.1 1800 | '@changesets/logger': 0.1.0 1801 | '@changesets/types': 6.0.0 1802 | '@manypkg/get-packages': 1.1.3 1803 | fs-extra: 7.0.1 1804 | micromatch: 4.0.7 1805 | 1806 | '@changesets/errors@0.2.0': 1807 | dependencies: 1808 | extendable-error: 0.1.7 1809 | 1810 | '@changesets/get-dependents-graph@2.1.1': 1811 | dependencies: 1812 | '@changesets/types': 6.0.0 1813 | '@manypkg/get-packages': 1.1.3 1814 | chalk: 2.4.2 1815 | fs-extra: 7.0.1 1816 | semver: 7.6.3 1817 | 1818 | '@changesets/get-release-plan@4.0.3': 1819 | dependencies: 1820 | '@babel/runtime': 7.25.0 1821 | '@changesets/assemble-release-plan': 6.0.3 1822 | '@changesets/config': 3.0.2 1823 | '@changesets/pre': 2.0.0 1824 | '@changesets/read': 0.6.0 1825 | '@changesets/types': 6.0.0 1826 | '@manypkg/get-packages': 1.1.3 1827 | 1828 | '@changesets/get-version-range-type@0.4.0': {} 1829 | 1830 | '@changesets/git@3.0.0': 1831 | dependencies: 1832 | '@babel/runtime': 7.25.0 1833 | '@changesets/errors': 0.2.0 1834 | '@changesets/types': 6.0.0 1835 | '@manypkg/get-packages': 1.1.3 1836 | is-subdir: 1.2.0 1837 | micromatch: 4.0.7 1838 | spawndamnit: 2.0.0 1839 | 1840 | '@changesets/logger@0.1.0': 1841 | dependencies: 1842 | chalk: 2.4.2 1843 | 1844 | '@changesets/parse@0.4.0': 1845 | dependencies: 1846 | '@changesets/types': 6.0.0 1847 | js-yaml: 3.14.1 1848 | 1849 | '@changesets/pre@2.0.0': 1850 | dependencies: 1851 | '@babel/runtime': 7.25.0 1852 | '@changesets/errors': 0.2.0 1853 | '@changesets/types': 6.0.0 1854 | '@manypkg/get-packages': 1.1.3 1855 | fs-extra: 7.0.1 1856 | 1857 | '@changesets/read@0.6.0': 1858 | dependencies: 1859 | '@babel/runtime': 7.25.0 1860 | '@changesets/git': 3.0.0 1861 | '@changesets/logger': 0.1.0 1862 | '@changesets/parse': 0.4.0 1863 | '@changesets/types': 6.0.0 1864 | chalk: 2.4.2 1865 | fs-extra: 7.0.1 1866 | p-filter: 2.1.0 1867 | 1868 | '@changesets/should-skip-package@0.1.0': 1869 | dependencies: 1870 | '@babel/runtime': 7.25.0 1871 | '@changesets/types': 6.0.0 1872 | '@manypkg/get-packages': 1.1.3 1873 | 1874 | '@changesets/types@4.1.0': {} 1875 | 1876 | '@changesets/types@6.0.0': {} 1877 | 1878 | '@changesets/write@0.3.1': 1879 | dependencies: 1880 | '@babel/runtime': 7.25.0 1881 | '@changesets/types': 6.0.0 1882 | fs-extra: 7.0.1 1883 | human-id: 1.0.2 1884 | prettier: 2.8.8 1885 | 1886 | '@esbuild/aix-ppc64@0.24.0': 1887 | optional: true 1888 | 1889 | '@esbuild/android-arm64@0.24.0': 1890 | optional: true 1891 | 1892 | '@esbuild/android-arm@0.24.0': 1893 | optional: true 1894 | 1895 | '@esbuild/android-x64@0.24.0': 1896 | optional: true 1897 | 1898 | '@esbuild/darwin-arm64@0.24.0': 1899 | optional: true 1900 | 1901 | '@esbuild/darwin-x64@0.24.0': 1902 | optional: true 1903 | 1904 | '@esbuild/freebsd-arm64@0.24.0': 1905 | optional: true 1906 | 1907 | '@esbuild/freebsd-x64@0.24.0': 1908 | optional: true 1909 | 1910 | '@esbuild/linux-arm64@0.24.0': 1911 | optional: true 1912 | 1913 | '@esbuild/linux-arm@0.24.0': 1914 | optional: true 1915 | 1916 | '@esbuild/linux-ia32@0.24.0': 1917 | optional: true 1918 | 1919 | '@esbuild/linux-loong64@0.24.0': 1920 | optional: true 1921 | 1922 | '@esbuild/linux-mips64el@0.24.0': 1923 | optional: true 1924 | 1925 | '@esbuild/linux-ppc64@0.24.0': 1926 | optional: true 1927 | 1928 | '@esbuild/linux-riscv64@0.24.0': 1929 | optional: true 1930 | 1931 | '@esbuild/linux-s390x@0.24.0': 1932 | optional: true 1933 | 1934 | '@esbuild/linux-x64@0.24.0': 1935 | optional: true 1936 | 1937 | '@esbuild/netbsd-x64@0.24.0': 1938 | optional: true 1939 | 1940 | '@esbuild/openbsd-arm64@0.24.0': 1941 | optional: true 1942 | 1943 | '@esbuild/openbsd-x64@0.24.0': 1944 | optional: true 1945 | 1946 | '@esbuild/sunos-x64@0.24.0': 1947 | optional: true 1948 | 1949 | '@esbuild/win32-arm64@0.24.0': 1950 | optional: true 1951 | 1952 | '@esbuild/win32-ia32@0.24.0': 1953 | optional: true 1954 | 1955 | '@esbuild/win32-x64@0.24.0': 1956 | optional: true 1957 | 1958 | '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)': 1959 | dependencies: 1960 | eslint: 9.8.0 1961 | eslint-visitor-keys: 3.4.3 1962 | 1963 | '@eslint-community/eslint-utils@4.4.1(eslint@9.8.0)': 1964 | dependencies: 1965 | eslint: 9.8.0 1966 | eslint-visitor-keys: 3.4.3 1967 | 1968 | '@eslint-community/eslint-utils@4.7.0(eslint@9.8.0)': 1969 | dependencies: 1970 | eslint: 9.8.0 1971 | eslint-visitor-keys: 3.4.3 1972 | 1973 | '@eslint-community/regexpp@4.11.0': {} 1974 | 1975 | '@eslint/config-array@0.17.1': 1976 | dependencies: 1977 | '@eslint/object-schema': 2.1.4 1978 | debug: 4.4.0 1979 | minimatch: 3.1.2 1980 | transitivePeerDependencies: 1981 | - supports-color 1982 | 1983 | '@eslint/eslintrc@3.1.0': 1984 | dependencies: 1985 | ajv: 6.12.6 1986 | debug: 4.4.0 1987 | espree: 10.1.0 1988 | globals: 14.0.0 1989 | ignore: 5.3.1 1990 | import-fresh: 3.3.0 1991 | js-yaml: 4.1.0 1992 | minimatch: 3.1.2 1993 | strip-json-comments: 3.1.1 1994 | transitivePeerDependencies: 1995 | - supports-color 1996 | 1997 | '@eslint/js@9.8.0': {} 1998 | 1999 | '@eslint/object-schema@2.1.4': {} 2000 | 2001 | '@humanwhocodes/module-importer@1.0.1': {} 2002 | 2003 | '@humanwhocodes/retry@0.3.0': {} 2004 | 2005 | '@jridgewell/gen-mapping@0.3.5': 2006 | dependencies: 2007 | '@jridgewell/set-array': 1.2.1 2008 | '@jridgewell/sourcemap-codec': 1.5.0 2009 | '@jridgewell/trace-mapping': 0.3.25 2010 | 2011 | '@jridgewell/resolve-uri@3.1.2': {} 2012 | 2013 | '@jridgewell/set-array@1.2.1': {} 2014 | 2015 | '@jridgewell/sourcemap-codec@1.5.0': {} 2016 | 2017 | '@jridgewell/trace-mapping@0.3.25': 2018 | dependencies: 2019 | '@jridgewell/resolve-uri': 3.1.2 2020 | '@jridgewell/sourcemap-codec': 1.5.0 2021 | 2022 | '@manypkg/find-root@1.1.0': 2023 | dependencies: 2024 | '@babel/runtime': 7.25.0 2025 | '@types/node': 12.20.55 2026 | find-up: 4.1.0 2027 | fs-extra: 8.1.0 2028 | 2029 | '@manypkg/get-packages@1.1.3': 2030 | dependencies: 2031 | '@babel/runtime': 7.25.0 2032 | '@changesets/types': 4.1.0 2033 | '@manypkg/find-root': 1.1.0 2034 | fs-extra: 8.1.0 2035 | globby: 11.1.0 2036 | read-yaml-file: 1.1.0 2037 | 2038 | '@nodelib/fs.scandir@2.1.5': 2039 | dependencies: 2040 | '@nodelib/fs.stat': 2.0.5 2041 | run-parallel: 1.2.0 2042 | 2043 | '@nodelib/fs.stat@2.0.5': {} 2044 | 2045 | '@nodelib/fs.walk@1.2.8': 2046 | dependencies: 2047 | '@nodelib/fs.scandir': 2.1.5 2048 | fastq: 1.17.1 2049 | 2050 | '@playwright/test@1.45.3': 2051 | dependencies: 2052 | playwright: 1.45.3 2053 | 2054 | '@polka/url@1.0.0-next.25': {} 2055 | 2056 | '@publint/pack@0.1.0': {} 2057 | 2058 | '@rollup/rollup-android-arm-eabi@4.27.4': 2059 | optional: true 2060 | 2061 | '@rollup/rollup-android-arm64@4.27.4': 2062 | optional: true 2063 | 2064 | '@rollup/rollup-darwin-arm64@4.27.4': 2065 | optional: true 2066 | 2067 | '@rollup/rollup-darwin-x64@4.27.4': 2068 | optional: true 2069 | 2070 | '@rollup/rollup-freebsd-arm64@4.27.4': 2071 | optional: true 2072 | 2073 | '@rollup/rollup-freebsd-x64@4.27.4': 2074 | optional: true 2075 | 2076 | '@rollup/rollup-linux-arm-gnueabihf@4.27.4': 2077 | optional: true 2078 | 2079 | '@rollup/rollup-linux-arm-musleabihf@4.27.4': 2080 | optional: true 2081 | 2082 | '@rollup/rollup-linux-arm64-gnu@4.27.4': 2083 | optional: true 2084 | 2085 | '@rollup/rollup-linux-arm64-musl@4.27.4': 2086 | optional: true 2087 | 2088 | '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': 2089 | optional: true 2090 | 2091 | '@rollup/rollup-linux-riscv64-gnu@4.27.4': 2092 | optional: true 2093 | 2094 | '@rollup/rollup-linux-s390x-gnu@4.27.4': 2095 | optional: true 2096 | 2097 | '@rollup/rollup-linux-x64-gnu@4.27.4': 2098 | optional: true 2099 | 2100 | '@rollup/rollup-linux-x64-musl@4.27.4': 2101 | optional: true 2102 | 2103 | '@rollup/rollup-win32-arm64-msvc@4.27.4': 2104 | optional: true 2105 | 2106 | '@rollup/rollup-win32-ia32-msvc@4.27.4': 2107 | optional: true 2108 | 2109 | '@rollup/rollup-win32-x64-msvc@4.27.4': 2110 | optional: true 2111 | 2112 | '@sveltejs/acorn-typescript@1.0.5(acorn@8.12.1)': 2113 | dependencies: 2114 | acorn: 8.12.1 2115 | 2116 | '@sveltejs/adapter-auto@6.0.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1))': 2117 | dependencies: 2118 | '@sveltejs/kit': 2.5.18(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1) 2119 | import-meta-resolve: 4.1.0 2120 | 2121 | '@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1)': 2122 | dependencies: 2123 | '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.33.14)(vite@6.0.1) 2124 | '@types/cookie': 0.6.0 2125 | cookie: 0.6.0 2126 | devalue: 5.0.0 2127 | esm-env: 1.0.0 2128 | import-meta-resolve: 4.1.0 2129 | kleur: 4.1.5 2130 | magic-string: 0.30.10 2131 | mrmime: 2.0.0 2132 | sade: 1.8.1 2133 | set-cookie-parser: 2.6.0 2134 | sirv: 2.0.4 2135 | svelte: 5.33.14 2136 | tiny-glob: 0.2.9 2137 | vite: 6.0.1 2138 | 2139 | '@sveltejs/package@2.3.2(svelte@5.33.14)(typescript@5.5.4)': 2140 | dependencies: 2141 | chokidar: 3.6.0 2142 | kleur: 4.1.5 2143 | sade: 1.8.1 2144 | semver: 7.6.3 2145 | svelte: 5.33.14 2146 | svelte2tsx: 0.7.13(svelte@5.33.14)(typescript@5.5.4) 2147 | transitivePeerDependencies: 2148 | - typescript 2149 | 2150 | '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1)': 2151 | dependencies: 2152 | '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.33.14)(vite@6.0.1) 2153 | debug: 4.4.1 2154 | svelte: 5.33.14 2155 | vite: 6.0.1 2156 | transitivePeerDependencies: 2157 | - supports-color 2158 | 2159 | '@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1)': 2160 | dependencies: 2161 | '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.33.14)(vite@6.0.1))(svelte@5.33.14)(vite@6.0.1) 2162 | debug: 4.4.1 2163 | deepmerge: 4.3.1 2164 | kleur: 4.1.5 2165 | magic-string: 0.30.17 2166 | svelte: 5.33.14 2167 | vite: 6.0.1 2168 | vitefu: 1.0.6(vite@6.0.1) 2169 | transitivePeerDependencies: 2170 | - supports-color 2171 | 2172 | '@types/cookie@0.6.0': {} 2173 | 2174 | '@types/eslint@9.6.0': 2175 | dependencies: 2176 | '@types/estree': 1.0.5 2177 | '@types/json-schema': 7.0.15 2178 | 2179 | '@types/estree@1.0.5': {} 2180 | 2181 | '@types/estree@1.0.6': {} 2182 | 2183 | '@types/json-schema@7.0.15': {} 2184 | 2185 | '@types/node@12.20.55': {} 2186 | 2187 | '@types/semver@7.5.8': {} 2188 | 2189 | '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)': 2190 | dependencies: 2191 | '@eslint-community/regexpp': 4.11.0 2192 | '@typescript-eslint/parser': 8.33.1(eslint@9.8.0)(typescript@5.5.4) 2193 | '@typescript-eslint/scope-manager': 8.33.1 2194 | '@typescript-eslint/type-utils': 8.33.1(eslint@9.8.0)(typescript@5.5.4) 2195 | '@typescript-eslint/utils': 8.33.1(eslint@9.8.0)(typescript@5.5.4) 2196 | '@typescript-eslint/visitor-keys': 8.33.1 2197 | eslint: 9.8.0 2198 | graphemer: 1.4.0 2199 | ignore: 7.0.4 2200 | natural-compare: 1.4.0 2201 | ts-api-utils: 2.1.0(typescript@5.5.4) 2202 | typescript: 5.5.4 2203 | transitivePeerDependencies: 2204 | - supports-color 2205 | 2206 | '@typescript-eslint/parser@8.33.1(eslint@9.8.0)(typescript@5.5.4)': 2207 | dependencies: 2208 | '@typescript-eslint/scope-manager': 8.33.1 2209 | '@typescript-eslint/types': 8.33.1 2210 | '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.5.4) 2211 | '@typescript-eslint/visitor-keys': 8.33.1 2212 | debug: 4.4.0 2213 | eslint: 9.8.0 2214 | typescript: 5.5.4 2215 | transitivePeerDependencies: 2216 | - supports-color 2217 | 2218 | '@typescript-eslint/project-service@8.33.1(typescript@5.5.4)': 2219 | dependencies: 2220 | '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.5.4) 2221 | '@typescript-eslint/types': 8.33.1 2222 | debug: 4.4.0 2223 | typescript: 5.5.4 2224 | transitivePeerDependencies: 2225 | - supports-color 2226 | 2227 | '@typescript-eslint/scope-manager@8.33.1': 2228 | dependencies: 2229 | '@typescript-eslint/types': 8.33.1 2230 | '@typescript-eslint/visitor-keys': 8.33.1 2231 | 2232 | '@typescript-eslint/tsconfig-utils@8.33.1(typescript@5.5.4)': 2233 | dependencies: 2234 | typescript: 5.5.4 2235 | 2236 | '@typescript-eslint/type-utils@8.33.1(eslint@9.8.0)(typescript@5.5.4)': 2237 | dependencies: 2238 | '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.5.4) 2239 | '@typescript-eslint/utils': 8.33.1(eslint@9.8.0)(typescript@5.5.4) 2240 | debug: 4.4.0 2241 | eslint: 9.8.0 2242 | ts-api-utils: 2.1.0(typescript@5.5.4) 2243 | typescript: 5.5.4 2244 | transitivePeerDependencies: 2245 | - supports-color 2246 | 2247 | '@typescript-eslint/types@8.33.1': {} 2248 | 2249 | '@typescript-eslint/typescript-estree@8.33.1(typescript@5.5.4)': 2250 | dependencies: 2251 | '@typescript-eslint/project-service': 8.33.1(typescript@5.5.4) 2252 | '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.5.4) 2253 | '@typescript-eslint/types': 8.33.1 2254 | '@typescript-eslint/visitor-keys': 8.33.1 2255 | debug: 4.4.0 2256 | fast-glob: 3.3.2 2257 | is-glob: 4.0.3 2258 | minimatch: 9.0.5 2259 | semver: 7.6.3 2260 | ts-api-utils: 2.1.0(typescript@5.5.4) 2261 | typescript: 5.5.4 2262 | transitivePeerDependencies: 2263 | - supports-color 2264 | 2265 | '@typescript-eslint/utils@8.33.1(eslint@9.8.0)(typescript@5.5.4)': 2266 | dependencies: 2267 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.8.0) 2268 | '@typescript-eslint/scope-manager': 8.33.1 2269 | '@typescript-eslint/types': 8.33.1 2270 | '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.5.4) 2271 | eslint: 9.8.0 2272 | typescript: 5.5.4 2273 | transitivePeerDependencies: 2274 | - supports-color 2275 | 2276 | '@typescript-eslint/visitor-keys@8.33.1': 2277 | dependencies: 2278 | '@typescript-eslint/types': 8.33.1 2279 | eslint-visitor-keys: 4.2.0 2280 | 2281 | '@vitest/expect@3.0.0': 2282 | dependencies: 2283 | '@vitest/spy': 3.0.0 2284 | '@vitest/utils': 3.0.0 2285 | chai: 5.1.2 2286 | tinyrainbow: 2.0.0 2287 | 2288 | '@vitest/mocker@3.0.0(vite@6.0.1)': 2289 | dependencies: 2290 | '@vitest/spy': 3.0.0 2291 | estree-walker: 3.0.3 2292 | magic-string: 0.30.17 2293 | optionalDependencies: 2294 | vite: 6.0.1 2295 | 2296 | '@vitest/pretty-format@3.0.0': 2297 | dependencies: 2298 | tinyrainbow: 2.0.0 2299 | 2300 | '@vitest/runner@3.0.0': 2301 | dependencies: 2302 | '@vitest/utils': 3.0.0 2303 | pathe: 2.0.1 2304 | 2305 | '@vitest/snapshot@3.0.0': 2306 | dependencies: 2307 | '@vitest/pretty-format': 3.0.0 2308 | magic-string: 0.30.17 2309 | pathe: 2.0.1 2310 | 2311 | '@vitest/spy@3.0.0': 2312 | dependencies: 2313 | tinyspy: 3.0.2 2314 | 2315 | '@vitest/utils@3.0.0': 2316 | dependencies: 2317 | '@vitest/pretty-format': 3.0.0 2318 | loupe: 3.1.2 2319 | tinyrainbow: 2.0.0 2320 | 2321 | acorn-jsx@5.3.2(acorn@8.12.1): 2322 | dependencies: 2323 | acorn: 8.12.1 2324 | 2325 | acorn@8.12.1: {} 2326 | 2327 | ajv@6.12.6: 2328 | dependencies: 2329 | fast-deep-equal: 3.1.3 2330 | fast-json-stable-stringify: 2.1.0 2331 | json-schema-traverse: 0.4.1 2332 | uri-js: 4.4.1 2333 | 2334 | ansi-colors@4.1.3: {} 2335 | 2336 | ansi-regex@5.0.1: {} 2337 | 2338 | ansi-styles@3.2.1: 2339 | dependencies: 2340 | color-convert: 1.9.3 2341 | 2342 | ansi-styles@4.3.0: 2343 | dependencies: 2344 | color-convert: 2.0.1 2345 | 2346 | anymatch@3.1.3: 2347 | dependencies: 2348 | normalize-path: 3.0.0 2349 | picomatch: 2.3.1 2350 | 2351 | argparse@1.0.10: 2352 | dependencies: 2353 | sprintf-js: 1.0.3 2354 | 2355 | argparse@2.0.1: {} 2356 | 2357 | aria-query@5.3.1: {} 2358 | 2359 | array-union@2.1.0: {} 2360 | 2361 | assertion-error@2.0.1: {} 2362 | 2363 | axobject-query@4.1.0: {} 2364 | 2365 | balanced-match@1.0.2: {} 2366 | 2367 | better-path-resolve@1.0.0: 2368 | dependencies: 2369 | is-windows: 1.0.2 2370 | 2371 | binary-extensions@2.3.0: {} 2372 | 2373 | brace-expansion@1.1.11: 2374 | dependencies: 2375 | balanced-match: 1.0.2 2376 | concat-map: 0.0.1 2377 | 2378 | brace-expansion@2.0.1: 2379 | dependencies: 2380 | balanced-match: 1.0.2 2381 | 2382 | braces@3.0.3: 2383 | dependencies: 2384 | fill-range: 7.1.1 2385 | 2386 | cac@6.7.14: {} 2387 | 2388 | callsites@3.1.0: {} 2389 | 2390 | chai@5.1.2: 2391 | dependencies: 2392 | assertion-error: 2.0.1 2393 | check-error: 2.1.1 2394 | deep-eql: 5.0.2 2395 | loupe: 3.1.1 2396 | pathval: 2.0.0 2397 | 2398 | chalk@2.4.2: 2399 | dependencies: 2400 | ansi-styles: 3.2.1 2401 | escape-string-regexp: 1.0.5 2402 | supports-color: 5.5.0 2403 | 2404 | chalk@4.1.2: 2405 | dependencies: 2406 | ansi-styles: 4.3.0 2407 | supports-color: 7.2.0 2408 | 2409 | chardet@0.7.0: {} 2410 | 2411 | check-error@2.1.1: {} 2412 | 2413 | chokidar@3.6.0: 2414 | dependencies: 2415 | anymatch: 3.1.3 2416 | braces: 3.0.3 2417 | glob-parent: 5.1.2 2418 | is-binary-path: 2.1.0 2419 | is-glob: 4.0.3 2420 | normalize-path: 3.0.0 2421 | readdirp: 3.6.0 2422 | optionalDependencies: 2423 | fsevents: 2.3.3 2424 | 2425 | ci-info@3.9.0: {} 2426 | 2427 | clsx@2.1.1: {} 2428 | 2429 | color-convert@1.9.3: 2430 | dependencies: 2431 | color-name: 1.1.3 2432 | 2433 | color-convert@2.0.1: 2434 | dependencies: 2435 | color-name: 1.1.4 2436 | 2437 | color-name@1.1.3: {} 2438 | 2439 | color-name@1.1.4: {} 2440 | 2441 | concat-map@0.0.1: {} 2442 | 2443 | cookie@0.6.0: {} 2444 | 2445 | cross-spawn@5.1.0: 2446 | dependencies: 2447 | lru-cache: 4.1.5 2448 | shebang-command: 1.2.0 2449 | which: 1.3.1 2450 | 2451 | cross-spawn@7.0.3: 2452 | dependencies: 2453 | path-key: 3.1.1 2454 | shebang-command: 2.0.0 2455 | which: 2.0.2 2456 | 2457 | cssesc@3.0.0: {} 2458 | 2459 | debug@4.3.6: 2460 | dependencies: 2461 | ms: 2.1.2 2462 | 2463 | debug@4.4.0: 2464 | dependencies: 2465 | ms: 2.1.3 2466 | 2467 | debug@4.4.1: 2468 | dependencies: 2469 | ms: 2.1.3 2470 | 2471 | dedent-js@1.0.1: {} 2472 | 2473 | deep-eql@5.0.2: {} 2474 | 2475 | deep-is@0.1.4: {} 2476 | 2477 | deepmerge@4.3.1: {} 2478 | 2479 | detect-indent@6.1.0: {} 2480 | 2481 | devalue@5.0.0: {} 2482 | 2483 | dir-glob@3.0.1: 2484 | dependencies: 2485 | path-type: 4.0.0 2486 | 2487 | enquirer@2.4.1: 2488 | dependencies: 2489 | ansi-colors: 4.1.3 2490 | strip-ansi: 6.0.1 2491 | 2492 | es-module-lexer@1.6.0: {} 2493 | 2494 | esbuild@0.24.0: 2495 | optionalDependencies: 2496 | '@esbuild/aix-ppc64': 0.24.0 2497 | '@esbuild/android-arm': 0.24.0 2498 | '@esbuild/android-arm64': 0.24.0 2499 | '@esbuild/android-x64': 0.24.0 2500 | '@esbuild/darwin-arm64': 0.24.0 2501 | '@esbuild/darwin-x64': 0.24.0 2502 | '@esbuild/freebsd-arm64': 0.24.0 2503 | '@esbuild/freebsd-x64': 0.24.0 2504 | '@esbuild/linux-arm': 0.24.0 2505 | '@esbuild/linux-arm64': 0.24.0 2506 | '@esbuild/linux-ia32': 0.24.0 2507 | '@esbuild/linux-loong64': 0.24.0 2508 | '@esbuild/linux-mips64el': 0.24.0 2509 | '@esbuild/linux-ppc64': 0.24.0 2510 | '@esbuild/linux-riscv64': 0.24.0 2511 | '@esbuild/linux-s390x': 0.24.0 2512 | '@esbuild/linux-x64': 0.24.0 2513 | '@esbuild/netbsd-x64': 0.24.0 2514 | '@esbuild/openbsd-arm64': 0.24.0 2515 | '@esbuild/openbsd-x64': 0.24.0 2516 | '@esbuild/sunos-x64': 0.24.0 2517 | '@esbuild/win32-arm64': 0.24.0 2518 | '@esbuild/win32-ia32': 0.24.0 2519 | '@esbuild/win32-x64': 0.24.0 2520 | 2521 | escape-string-regexp@1.0.5: {} 2522 | 2523 | escape-string-regexp@4.0.0: {} 2524 | 2525 | eslint-compat-utils@0.6.4(eslint@9.8.0): 2526 | dependencies: 2527 | eslint: 9.8.0 2528 | semver: 7.6.3 2529 | 2530 | eslint-config-prettier@10.0.1(eslint@9.8.0): 2531 | dependencies: 2532 | eslint: 9.8.0 2533 | 2534 | eslint-plugin-svelte@3.0.2(eslint@9.8.0)(svelte@5.33.14): 2535 | dependencies: 2536 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.8.0) 2537 | '@jridgewell/sourcemap-codec': 1.5.0 2538 | eslint: 9.8.0 2539 | eslint-compat-utils: 0.6.4(eslint@9.8.0) 2540 | esutils: 2.0.3 2541 | known-css-properties: 0.35.0 2542 | postcss: 8.4.49 2543 | postcss-load-config: 3.1.4(postcss@8.4.49) 2544 | postcss-safe-parser: 7.0.1(postcss@8.4.49) 2545 | semver: 7.6.3 2546 | svelte-eslint-parser: 1.0.0(svelte@5.33.14) 2547 | optionalDependencies: 2548 | svelte: 5.33.14 2549 | transitivePeerDependencies: 2550 | - ts-node 2551 | 2552 | eslint-scope@8.0.2: 2553 | dependencies: 2554 | esrecurse: 4.3.0 2555 | estraverse: 5.3.0 2556 | 2557 | eslint-scope@8.2.0: 2558 | dependencies: 2559 | esrecurse: 4.3.0 2560 | estraverse: 5.3.0 2561 | 2562 | eslint-visitor-keys@3.4.3: {} 2563 | 2564 | eslint-visitor-keys@4.0.0: {} 2565 | 2566 | eslint-visitor-keys@4.2.0: {} 2567 | 2568 | eslint@9.8.0: 2569 | dependencies: 2570 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) 2571 | '@eslint-community/regexpp': 4.11.0 2572 | '@eslint/config-array': 0.17.1 2573 | '@eslint/eslintrc': 3.1.0 2574 | '@eslint/js': 9.8.0 2575 | '@humanwhocodes/module-importer': 1.0.1 2576 | '@humanwhocodes/retry': 0.3.0 2577 | '@nodelib/fs.walk': 1.2.8 2578 | ajv: 6.12.6 2579 | chalk: 4.1.2 2580 | cross-spawn: 7.0.3 2581 | debug: 4.3.6 2582 | escape-string-regexp: 4.0.0 2583 | eslint-scope: 8.0.2 2584 | eslint-visitor-keys: 4.0.0 2585 | espree: 10.1.0 2586 | esquery: 1.6.0 2587 | esutils: 2.0.3 2588 | fast-deep-equal: 3.1.3 2589 | file-entry-cache: 8.0.0 2590 | find-up: 5.0.0 2591 | glob-parent: 6.0.2 2592 | ignore: 5.3.1 2593 | imurmurhash: 0.1.4 2594 | is-glob: 4.0.3 2595 | is-path-inside: 3.0.3 2596 | json-stable-stringify-without-jsonify: 1.0.1 2597 | levn: 0.4.1 2598 | lodash.merge: 4.6.2 2599 | minimatch: 3.1.2 2600 | natural-compare: 1.4.0 2601 | optionator: 0.9.4 2602 | strip-ansi: 6.0.1 2603 | text-table: 0.2.0 2604 | transitivePeerDependencies: 2605 | - supports-color 2606 | 2607 | esm-env@1.0.0: {} 2608 | 2609 | esm-env@1.2.1: {} 2610 | 2611 | espree@10.1.0: 2612 | dependencies: 2613 | acorn: 8.12.1 2614 | acorn-jsx: 5.3.2(acorn@8.12.1) 2615 | eslint-visitor-keys: 4.0.0 2616 | 2617 | esprima@4.0.1: {} 2618 | 2619 | esquery@1.6.0: 2620 | dependencies: 2621 | estraverse: 5.3.0 2622 | 2623 | esrap@1.4.6: 2624 | dependencies: 2625 | '@jridgewell/sourcemap-codec': 1.5.0 2626 | 2627 | esrecurse@4.3.0: 2628 | dependencies: 2629 | estraverse: 5.3.0 2630 | 2631 | estraverse@5.3.0: {} 2632 | 2633 | estree-walker@3.0.3: 2634 | dependencies: 2635 | '@types/estree': 1.0.6 2636 | 2637 | esutils@2.0.3: {} 2638 | 2639 | expect-type@1.1.0: {} 2640 | 2641 | extendable-error@0.1.7: {} 2642 | 2643 | external-editor@3.1.0: 2644 | dependencies: 2645 | chardet: 0.7.0 2646 | iconv-lite: 0.4.24 2647 | tmp: 0.0.33 2648 | 2649 | fast-deep-equal@3.1.3: {} 2650 | 2651 | fast-glob@3.3.2: 2652 | dependencies: 2653 | '@nodelib/fs.stat': 2.0.5 2654 | '@nodelib/fs.walk': 1.2.8 2655 | glob-parent: 5.1.2 2656 | merge2: 1.4.1 2657 | micromatch: 4.0.7 2658 | 2659 | fast-json-stable-stringify@2.1.0: {} 2660 | 2661 | fast-levenshtein@2.0.6: {} 2662 | 2663 | fastq@1.17.1: 2664 | dependencies: 2665 | reusify: 1.0.4 2666 | 2667 | fdir@6.3.0: {} 2668 | 2669 | file-entry-cache@8.0.0: 2670 | dependencies: 2671 | flat-cache: 4.0.1 2672 | 2673 | fill-range@7.1.1: 2674 | dependencies: 2675 | to-regex-range: 5.0.1 2676 | 2677 | find-up@4.1.0: 2678 | dependencies: 2679 | locate-path: 5.0.0 2680 | path-exists: 4.0.0 2681 | 2682 | find-up@5.0.0: 2683 | dependencies: 2684 | locate-path: 6.0.0 2685 | path-exists: 4.0.0 2686 | 2687 | find-yarn-workspace-root2@1.2.16: 2688 | dependencies: 2689 | micromatch: 4.0.7 2690 | pkg-dir: 4.2.0 2691 | 2692 | flat-cache@4.0.1: 2693 | dependencies: 2694 | flatted: 3.3.1 2695 | keyv: 4.5.4 2696 | 2697 | flatted@3.3.1: {} 2698 | 2699 | fs-extra@7.0.1: 2700 | dependencies: 2701 | graceful-fs: 4.2.11 2702 | jsonfile: 4.0.0 2703 | universalify: 0.1.2 2704 | 2705 | fs-extra@8.1.0: 2706 | dependencies: 2707 | graceful-fs: 4.2.11 2708 | jsonfile: 4.0.0 2709 | universalify: 0.1.2 2710 | 2711 | fsevents@2.3.2: 2712 | optional: true 2713 | 2714 | fsevents@2.3.3: 2715 | optional: true 2716 | 2717 | get-func-name@2.0.2: {} 2718 | 2719 | glob-parent@5.1.2: 2720 | dependencies: 2721 | is-glob: 4.0.3 2722 | 2723 | glob-parent@6.0.2: 2724 | dependencies: 2725 | is-glob: 4.0.3 2726 | 2727 | globals@14.0.0: {} 2728 | 2729 | globals@16.0.0: {} 2730 | 2731 | globalyzer@0.1.0: {} 2732 | 2733 | globby@11.1.0: 2734 | dependencies: 2735 | array-union: 2.1.0 2736 | dir-glob: 3.0.1 2737 | fast-glob: 3.3.2 2738 | ignore: 5.3.1 2739 | merge2: 1.4.1 2740 | slash: 3.0.0 2741 | 2742 | globrex@0.1.2: {} 2743 | 2744 | graceful-fs@4.2.11: {} 2745 | 2746 | graphemer@1.4.0: {} 2747 | 2748 | has-flag@3.0.0: {} 2749 | 2750 | has-flag@4.0.0: {} 2751 | 2752 | human-id@1.0.2: {} 2753 | 2754 | iconv-lite@0.4.24: 2755 | dependencies: 2756 | safer-buffer: 2.1.2 2757 | 2758 | ignore@5.3.1: {} 2759 | 2760 | ignore@7.0.4: {} 2761 | 2762 | import-fresh@3.3.0: 2763 | dependencies: 2764 | parent-module: 1.0.1 2765 | resolve-from: 4.0.0 2766 | 2767 | import-meta-resolve@4.1.0: {} 2768 | 2769 | imurmurhash@0.1.4: {} 2770 | 2771 | is-binary-path@2.1.0: 2772 | dependencies: 2773 | binary-extensions: 2.3.0 2774 | 2775 | is-extglob@2.1.1: {} 2776 | 2777 | is-glob@4.0.3: 2778 | dependencies: 2779 | is-extglob: 2.1.1 2780 | 2781 | is-number@7.0.0: {} 2782 | 2783 | is-path-inside@3.0.3: {} 2784 | 2785 | is-reference@3.0.3: 2786 | dependencies: 2787 | '@types/estree': 1.0.6 2788 | 2789 | is-subdir@1.2.0: 2790 | dependencies: 2791 | better-path-resolve: 1.0.0 2792 | 2793 | is-windows@1.0.2: {} 2794 | 2795 | isexe@2.0.0: {} 2796 | 2797 | js-yaml@3.14.1: 2798 | dependencies: 2799 | argparse: 1.0.10 2800 | esprima: 4.0.1 2801 | 2802 | js-yaml@4.1.0: 2803 | dependencies: 2804 | argparse: 2.0.1 2805 | 2806 | json-buffer@3.0.1: {} 2807 | 2808 | json-schema-traverse@0.4.1: {} 2809 | 2810 | json-stable-stringify-without-jsonify@1.0.1: {} 2811 | 2812 | jsonfile@4.0.0: 2813 | optionalDependencies: 2814 | graceful-fs: 4.2.11 2815 | 2816 | keyv@4.5.4: 2817 | dependencies: 2818 | json-buffer: 3.0.1 2819 | 2820 | kleur@4.1.5: {} 2821 | 2822 | known-css-properties@0.35.0: {} 2823 | 2824 | levn@0.4.1: 2825 | dependencies: 2826 | prelude-ls: 1.2.1 2827 | type-check: 0.4.0 2828 | 2829 | lilconfig@2.1.0: {} 2830 | 2831 | load-yaml-file@0.2.0: 2832 | dependencies: 2833 | graceful-fs: 4.2.11 2834 | js-yaml: 3.14.1 2835 | pify: 4.0.1 2836 | strip-bom: 3.0.0 2837 | 2838 | locate-character@3.0.0: {} 2839 | 2840 | locate-path@5.0.0: 2841 | dependencies: 2842 | p-locate: 4.1.0 2843 | 2844 | locate-path@6.0.0: 2845 | dependencies: 2846 | p-locate: 5.0.0 2847 | 2848 | lodash.merge@4.6.2: {} 2849 | 2850 | lodash.startcase@4.4.0: {} 2851 | 2852 | loupe@3.1.1: 2853 | dependencies: 2854 | get-func-name: 2.0.2 2855 | 2856 | loupe@3.1.2: {} 2857 | 2858 | lower-case@2.0.2: 2859 | dependencies: 2860 | tslib: 2.6.3 2861 | 2862 | lru-cache@4.1.5: 2863 | dependencies: 2864 | pseudomap: 1.0.2 2865 | yallist: 2.1.2 2866 | 2867 | magic-string@0.30.10: 2868 | dependencies: 2869 | '@jridgewell/sourcemap-codec': 1.5.0 2870 | 2871 | magic-string@0.30.17: 2872 | dependencies: 2873 | '@jridgewell/sourcemap-codec': 1.5.0 2874 | 2875 | merge2@1.4.1: {} 2876 | 2877 | micromatch@4.0.7: 2878 | dependencies: 2879 | braces: 3.0.3 2880 | picomatch: 2.3.1 2881 | 2882 | minimatch@3.1.2: 2883 | dependencies: 2884 | brace-expansion: 1.1.11 2885 | 2886 | minimatch@9.0.5: 2887 | dependencies: 2888 | brace-expansion: 2.0.1 2889 | 2890 | mri@1.2.0: {} 2891 | 2892 | mrmime@2.0.0: {} 2893 | 2894 | ms@2.1.2: {} 2895 | 2896 | ms@2.1.3: {} 2897 | 2898 | nanoid@3.3.7: {} 2899 | 2900 | natural-compare@1.4.0: {} 2901 | 2902 | no-case@3.0.4: 2903 | dependencies: 2904 | lower-case: 2.0.2 2905 | tslib: 2.6.3 2906 | 2907 | normalize-path@3.0.0: {} 2908 | 2909 | optionator@0.9.4: 2910 | dependencies: 2911 | deep-is: 0.1.4 2912 | fast-levenshtein: 2.0.6 2913 | levn: 0.4.1 2914 | prelude-ls: 1.2.1 2915 | type-check: 0.4.0 2916 | word-wrap: 1.2.5 2917 | 2918 | os-tmpdir@1.0.2: {} 2919 | 2920 | outdent@0.5.0: {} 2921 | 2922 | p-filter@2.1.0: 2923 | dependencies: 2924 | p-map: 2.1.0 2925 | 2926 | p-limit@2.3.0: 2927 | dependencies: 2928 | p-try: 2.2.0 2929 | 2930 | p-limit@3.1.0: 2931 | dependencies: 2932 | yocto-queue: 0.1.0 2933 | 2934 | p-locate@4.1.0: 2935 | dependencies: 2936 | p-limit: 2.3.0 2937 | 2938 | p-locate@5.0.0: 2939 | dependencies: 2940 | p-limit: 3.1.0 2941 | 2942 | p-map@2.1.0: {} 2943 | 2944 | p-try@2.2.0: {} 2945 | 2946 | package-manager-detector@0.2.8: {} 2947 | 2948 | parent-module@1.0.1: 2949 | dependencies: 2950 | callsites: 3.1.0 2951 | 2952 | pascal-case@3.1.2: 2953 | dependencies: 2954 | no-case: 3.0.4 2955 | tslib: 2.6.3 2956 | 2957 | path-exists@4.0.0: {} 2958 | 2959 | path-key@3.1.1: {} 2960 | 2961 | path-type@4.0.0: {} 2962 | 2963 | pathe@2.0.1: {} 2964 | 2965 | pathval@2.0.0: {} 2966 | 2967 | picocolors@1.0.1: {} 2968 | 2969 | picocolors@1.1.1: {} 2970 | 2971 | picomatch@2.3.1: {} 2972 | 2973 | pify@4.0.1: {} 2974 | 2975 | pkg-dir@4.2.0: 2976 | dependencies: 2977 | find-up: 4.1.0 2978 | 2979 | playwright-core@1.45.3: {} 2980 | 2981 | playwright@1.45.3: 2982 | dependencies: 2983 | playwright-core: 1.45.3 2984 | optionalDependencies: 2985 | fsevents: 2.3.2 2986 | 2987 | postcss-load-config@3.1.4(postcss@8.4.49): 2988 | dependencies: 2989 | lilconfig: 2.1.0 2990 | yaml: 1.10.2 2991 | optionalDependencies: 2992 | postcss: 8.4.49 2993 | 2994 | postcss-safe-parser@7.0.1(postcss@8.4.49): 2995 | dependencies: 2996 | postcss: 8.4.49 2997 | 2998 | postcss-scss@4.0.9(postcss@8.4.49): 2999 | dependencies: 3000 | postcss: 8.4.49 3001 | 3002 | postcss-selector-parser@7.1.0: 3003 | dependencies: 3004 | cssesc: 3.0.0 3005 | util-deprecate: 1.0.2 3006 | 3007 | postcss@8.4.49: 3008 | dependencies: 3009 | nanoid: 3.3.7 3010 | picocolors: 1.1.1 3011 | source-map-js: 1.2.1 3012 | 3013 | preferred-pm@3.1.4: 3014 | dependencies: 3015 | find-up: 5.0.0 3016 | find-yarn-workspace-root2: 1.2.16 3017 | path-exists: 4.0.0 3018 | which-pm: 2.2.0 3019 | 3020 | prelude-ls@1.2.1: {} 3021 | 3022 | prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@5.33.14): 3023 | dependencies: 3024 | prettier: 3.3.3 3025 | svelte: 5.33.14 3026 | 3027 | prettier@2.8.8: {} 3028 | 3029 | prettier@3.3.3: {} 3030 | 3031 | pseudomap@1.0.2: {} 3032 | 3033 | publint@0.3.0: 3034 | dependencies: 3035 | '@publint/pack': 0.1.0 3036 | package-manager-detector: 0.2.8 3037 | picocolors: 1.1.1 3038 | sade: 1.8.1 3039 | 3040 | punycode@2.3.1: {} 3041 | 3042 | queue-microtask@1.2.3: {} 3043 | 3044 | read-yaml-file@1.1.0: 3045 | dependencies: 3046 | graceful-fs: 4.2.11 3047 | js-yaml: 3.14.1 3048 | pify: 4.0.1 3049 | strip-bom: 3.0.0 3050 | 3051 | readdirp@3.6.0: 3052 | dependencies: 3053 | picomatch: 2.3.1 3054 | 3055 | regenerator-runtime@0.14.1: {} 3056 | 3057 | resolve-from@4.0.0: {} 3058 | 3059 | resolve-from@5.0.0: {} 3060 | 3061 | reusify@1.0.4: {} 3062 | 3063 | rollup@4.27.4: 3064 | dependencies: 3065 | '@types/estree': 1.0.6 3066 | optionalDependencies: 3067 | '@rollup/rollup-android-arm-eabi': 4.27.4 3068 | '@rollup/rollup-android-arm64': 4.27.4 3069 | '@rollup/rollup-darwin-arm64': 4.27.4 3070 | '@rollup/rollup-darwin-x64': 4.27.4 3071 | '@rollup/rollup-freebsd-arm64': 4.27.4 3072 | '@rollup/rollup-freebsd-x64': 4.27.4 3073 | '@rollup/rollup-linux-arm-gnueabihf': 4.27.4 3074 | '@rollup/rollup-linux-arm-musleabihf': 4.27.4 3075 | '@rollup/rollup-linux-arm64-gnu': 4.27.4 3076 | '@rollup/rollup-linux-arm64-musl': 4.27.4 3077 | '@rollup/rollup-linux-powerpc64le-gnu': 4.27.4 3078 | '@rollup/rollup-linux-riscv64-gnu': 4.27.4 3079 | '@rollup/rollup-linux-s390x-gnu': 4.27.4 3080 | '@rollup/rollup-linux-x64-gnu': 4.27.4 3081 | '@rollup/rollup-linux-x64-musl': 4.27.4 3082 | '@rollup/rollup-win32-arm64-msvc': 4.27.4 3083 | '@rollup/rollup-win32-ia32-msvc': 4.27.4 3084 | '@rollup/rollup-win32-x64-msvc': 4.27.4 3085 | fsevents: 2.3.3 3086 | 3087 | run-parallel@1.2.0: 3088 | dependencies: 3089 | queue-microtask: 1.2.3 3090 | 3091 | sade@1.8.1: 3092 | dependencies: 3093 | mri: 1.2.0 3094 | 3095 | safer-buffer@2.1.2: {} 3096 | 3097 | semver@7.6.3: {} 3098 | 3099 | set-cookie-parser@2.6.0: {} 3100 | 3101 | shebang-command@1.2.0: 3102 | dependencies: 3103 | shebang-regex: 1.0.0 3104 | 3105 | shebang-command@2.0.0: 3106 | dependencies: 3107 | shebang-regex: 3.0.0 3108 | 3109 | shebang-regex@1.0.0: {} 3110 | 3111 | shebang-regex@3.0.0: {} 3112 | 3113 | siginfo@2.0.0: {} 3114 | 3115 | signal-exit@3.0.7: {} 3116 | 3117 | sirv@2.0.4: 3118 | dependencies: 3119 | '@polka/url': 1.0.0-next.25 3120 | mrmime: 2.0.0 3121 | totalist: 3.0.1 3122 | 3123 | slash@3.0.0: {} 3124 | 3125 | source-map-js@1.2.1: {} 3126 | 3127 | spawndamnit@2.0.0: 3128 | dependencies: 3129 | cross-spawn: 5.1.0 3130 | signal-exit: 3.0.7 3131 | 3132 | sprintf-js@1.0.3: {} 3133 | 3134 | stackback@0.0.2: {} 3135 | 3136 | std-env@3.8.0: {} 3137 | 3138 | strip-ansi@6.0.1: 3139 | dependencies: 3140 | ansi-regex: 5.0.1 3141 | 3142 | strip-bom@3.0.0: {} 3143 | 3144 | strip-json-comments@3.1.1: {} 3145 | 3146 | supports-color@5.5.0: 3147 | dependencies: 3148 | has-flag: 3.0.0 3149 | 3150 | supports-color@7.2.0: 3151 | dependencies: 3152 | has-flag: 4.0.0 3153 | 3154 | svelte-check@4.0.0(svelte@5.33.14)(typescript@5.5.4): 3155 | dependencies: 3156 | '@jridgewell/trace-mapping': 0.3.25 3157 | chokidar: 3.6.0 3158 | fdir: 6.3.0 3159 | picocolors: 1.0.1 3160 | sade: 1.8.1 3161 | svelte: 5.33.14 3162 | typescript: 5.5.4 3163 | transitivePeerDependencies: 3164 | - picomatch 3165 | 3166 | svelte-eslint-parser@1.0.0(svelte@5.33.14): 3167 | dependencies: 3168 | eslint-scope: 8.2.0 3169 | eslint-visitor-keys: 4.2.0 3170 | espree: 10.1.0 3171 | postcss: 8.4.49 3172 | postcss-scss: 4.0.9(postcss@8.4.49) 3173 | postcss-selector-parser: 7.1.0 3174 | optionalDependencies: 3175 | svelte: 5.33.14 3176 | 3177 | svelte2tsx@0.7.13(svelte@5.33.14)(typescript@5.5.4): 3178 | dependencies: 3179 | dedent-js: 1.0.1 3180 | pascal-case: 3.1.2 3181 | svelte: 5.33.14 3182 | typescript: 5.5.4 3183 | 3184 | svelte@5.33.14: 3185 | dependencies: 3186 | '@ampproject/remapping': 2.3.0 3187 | '@jridgewell/sourcemap-codec': 1.5.0 3188 | '@sveltejs/acorn-typescript': 1.0.5(acorn@8.12.1) 3189 | '@types/estree': 1.0.6 3190 | acorn: 8.12.1 3191 | aria-query: 5.3.1 3192 | axobject-query: 4.1.0 3193 | clsx: 2.1.1 3194 | esm-env: 1.2.1 3195 | esrap: 1.4.6 3196 | is-reference: 3.0.3 3197 | locate-character: 3.0.0 3198 | magic-string: 0.30.17 3199 | zimmerframe: 1.1.2 3200 | 3201 | term-size@2.2.1: {} 3202 | 3203 | text-table@0.2.0: {} 3204 | 3205 | tiny-glob@0.2.9: 3206 | dependencies: 3207 | globalyzer: 0.1.0 3208 | globrex: 0.1.2 3209 | 3210 | tinybench@2.9.0: {} 3211 | 3212 | tinyexec@0.3.2: {} 3213 | 3214 | tinypool@1.0.2: {} 3215 | 3216 | tinyrainbow@2.0.0: {} 3217 | 3218 | tinyspy@3.0.2: {} 3219 | 3220 | tmp@0.0.33: 3221 | dependencies: 3222 | os-tmpdir: 1.0.2 3223 | 3224 | to-regex-range@5.0.1: 3225 | dependencies: 3226 | is-number: 7.0.0 3227 | 3228 | totalist@3.0.1: {} 3229 | 3230 | ts-api-utils@2.1.0(typescript@5.5.4): 3231 | dependencies: 3232 | typescript: 5.5.4 3233 | 3234 | tslib@2.6.3: {} 3235 | 3236 | type-check@0.4.0: 3237 | dependencies: 3238 | prelude-ls: 1.2.1 3239 | 3240 | typescript-eslint@8.33.1(eslint@9.8.0)(typescript@5.5.4): 3241 | dependencies: 3242 | '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) 3243 | '@typescript-eslint/parser': 8.33.1(eslint@9.8.0)(typescript@5.5.4) 3244 | '@typescript-eslint/utils': 8.33.1(eslint@9.8.0)(typescript@5.5.4) 3245 | eslint: 9.8.0 3246 | typescript: 5.5.4 3247 | transitivePeerDependencies: 3248 | - supports-color 3249 | 3250 | typescript@5.5.4: {} 3251 | 3252 | universalify@0.1.2: {} 3253 | 3254 | uri-js@4.4.1: 3255 | dependencies: 3256 | punycode: 2.3.1 3257 | 3258 | util-deprecate@1.0.2: {} 3259 | 3260 | vite-node@3.0.0: 3261 | dependencies: 3262 | cac: 6.7.14 3263 | debug: 4.4.0 3264 | es-module-lexer: 1.6.0 3265 | pathe: 2.0.1 3266 | vite: 6.0.1 3267 | transitivePeerDependencies: 3268 | - '@types/node' 3269 | - jiti 3270 | - less 3271 | - lightningcss 3272 | - sass 3273 | - sass-embedded 3274 | - stylus 3275 | - sugarss 3276 | - supports-color 3277 | - terser 3278 | - tsx 3279 | - yaml 3280 | 3281 | vite@6.0.1: 3282 | dependencies: 3283 | esbuild: 0.24.0 3284 | postcss: 8.4.49 3285 | rollup: 4.27.4 3286 | optionalDependencies: 3287 | fsevents: 2.3.3 3288 | 3289 | vitefu@1.0.6(vite@6.0.1): 3290 | optionalDependencies: 3291 | vite: 6.0.1 3292 | 3293 | vitest@3.0.0: 3294 | dependencies: 3295 | '@vitest/expect': 3.0.0 3296 | '@vitest/mocker': 3.0.0(vite@6.0.1) 3297 | '@vitest/pretty-format': 3.0.0 3298 | '@vitest/runner': 3.0.0 3299 | '@vitest/snapshot': 3.0.0 3300 | '@vitest/spy': 3.0.0 3301 | '@vitest/utils': 3.0.0 3302 | chai: 5.1.2 3303 | debug: 4.4.0 3304 | expect-type: 1.1.0 3305 | magic-string: 0.30.17 3306 | pathe: 2.0.1 3307 | std-env: 3.8.0 3308 | tinybench: 2.9.0 3309 | tinyexec: 0.3.2 3310 | tinypool: 1.0.2 3311 | tinyrainbow: 2.0.0 3312 | vite: 6.0.1 3313 | vite-node: 3.0.0 3314 | why-is-node-running: 2.3.0 3315 | transitivePeerDependencies: 3316 | - jiti 3317 | - less 3318 | - lightningcss 3319 | - msw 3320 | - sass 3321 | - sass-embedded 3322 | - stylus 3323 | - sugarss 3324 | - supports-color 3325 | - terser 3326 | - tsx 3327 | - yaml 3328 | 3329 | which-pm@2.2.0: 3330 | dependencies: 3331 | load-yaml-file: 0.2.0 3332 | path-exists: 4.0.0 3333 | 3334 | which@1.3.1: 3335 | dependencies: 3336 | isexe: 2.0.0 3337 | 3338 | which@2.0.2: 3339 | dependencies: 3340 | isexe: 2.0.0 3341 | 3342 | why-is-node-running@2.3.0: 3343 | dependencies: 3344 | siginfo: 2.0.0 3345 | stackback: 0.0.2 3346 | 3347 | word-wrap@1.2.5: {} 3348 | 3349 | yallist@2.1.2: {} 3350 | 3351 | yaml@1.10.2: {} 3352 | 3353 | yocto-queue@0.1.0: {} 3354 | 3355 | zimmerframe@1.1.2: {} 3356 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface PageState {} 9 | // interface Platform {} 10 | } 11 | } 12 | 13 | export {}; 14 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /src/index.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | 3 | describe('sum test', () => { 4 | it('adds 1 + 2 to equal 3', () => { 5 | expect(1 + 2).toBe(3); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | // Reexport your entry components here 2 | import { optimistikit, get_action } from './optimistikit.svelte.js'; 3 | 4 | export { optimistikit, get_action as getAction }; 5 | -------------------------------------------------------------------------------- /src/lib/optimistikit.svelte.ts: -------------------------------------------------------------------------------- 1 | import { applyAction, enhance as default_enhance } from '$app/forms'; 2 | import { invalidateAll } from '$app/navigation'; 3 | import { getContext, setContext } from 'svelte'; 4 | import { SvelteSet } from 'svelte/reactivity'; 5 | 6 | type OptimistikitOptions = { 7 | key: string; 8 | enhance: typeof default_enhance; 9 | }; 10 | 11 | export function optimistikit( 12 | og_data: () => T, 13 | { key = 'default', enhance = default_enhance } = {} as OptimistikitOptions, 14 | ) { 15 | const data = $state($state.snapshot(og_data()) as T); 16 | const updates = new SvelteSet<{ optimistic_update: (data: T) => void; data?: T }>(); 17 | 18 | $effect.pre(() => { 19 | let final_data = $state.snapshot(og_data()) as T; 20 | updates.forEach((update) => { 21 | if (update.data) { 22 | final_data = update.data; 23 | } else { 24 | update.optimistic_update(final_data); 25 | update.data = $state.snapshot(final_data) as T; 26 | } 27 | }); 28 | for (const key in final_data) { 29 | data[key] = final_data[key]; 30 | } 31 | }); 32 | const abort_controllers = new WeakMap(); 33 | const updates_fns = new WeakMap< 34 | HTMLFormElement, 35 | typeof updates | Map 36 | >(); 37 | function optimistic_action( 38 | node: HTMLFormElement, 39 | optimistic_fn: ( 40 | data: T, 41 | ...rest: Parameters[1]>> 42 | ) => void, 43 | ) { 44 | let fn = optimistic_fn; 45 | const ret = enhance(node, (props) => { 46 | const key = node.dataset.key; 47 | if (key) { 48 | abort_controllers.get(props.formElement)?.abort(); 49 | } 50 | abort_controllers.set(props.formElement, props.controller); 51 | const update_fn = { optimistic_update: (data: T) => fn(data, props) }; 52 | if (!updates_fns.has(props.formElement)) { 53 | updates_fns.set( 54 | props.formElement, 55 | key != null ? new Map([[key, new SvelteSet()]]) : new SvelteSet(), 56 | ); 57 | } 58 | const set_or_map = updates_fns.get(props.formElement)!; 59 | if (set_or_map instanceof Map) { 60 | set_or_map.get(key!)!.add(update_fn); 61 | } else { 62 | set_or_map.add(update_fn); 63 | } 64 | updates.add(update_fn); 65 | return async ({ action, result }) => { 66 | if (key) { 67 | const set_or_map = updates_fns.get(props.formElement)!; 68 | if (set_or_map instanceof Map) { 69 | for (const update_fn of set_or_map.get(key)!.values?.() ?? []) { 70 | updates.delete(update_fn); 71 | } 72 | } 73 | } else { 74 | updates.delete(update_fn); 75 | } 76 | await invalidateAll(); 77 | if ( 78 | location.origin + location.pathname === action.origin + action.pathname || 79 | result.type === 'redirect' || 80 | result.type === 'error' 81 | ) { 82 | applyAction(result); 83 | } 84 | }; 85 | }); 86 | return { 87 | update(new_fn: typeof optimistic_fn) { 88 | fn = new_fn; 89 | }, 90 | destroy: ret.destroy, 91 | }; 92 | } 93 | setContext(key, { 94 | optimistic_action, 95 | }); 96 | return { 97 | get data() { 98 | return data; 99 | }, 100 | enhance: optimistic_action, 101 | }; 102 | } 103 | 104 | export function get_action(key = 'default') { 105 | return ( 106 | getContext<{ 107 | optimistic_action: ( 108 | node: HTMLFormElement, 109 | update: (data: T, formData: FormData) => void, 110 | ) => ReturnType; 111 | }>(key)?.optimistic_action ?? (() => {}) 112 | ); 113 | } 114 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 |

Welcome to your library project

2 |

Create your package using @sveltejs/package and preview/showcase your work with SvelteKit

3 |

Visit kit.svelte.dev to read the documentation

4 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paoloricciuti/optimistikit/364a3ad7925941e738a0491ce2eaa06a71df20f6/static/favicon.png -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 7 | // for more information about preprocessors 8 | preprocess: vitePreprocess(), 9 | 10 | kit: { 11 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 12 | // If your environment is not supported or you settled on a specific environment, switch out the adapter. 13 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 14 | adapter: adapter(), 15 | }, 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /tests/extends.ts: -------------------------------------------------------------------------------- 1 | import { test as base } from '@playwright/test'; 2 | 3 | export const test = base.extend({ 4 | page: async ({ page, javaScriptEnabled, baseURL }, use) => { 5 | // automatically wait for kit started event after navigation functions if js is enabled 6 | const page_navigation_functions = ['goto', 'goBack', 'reload'] as const; 7 | page_navigation_functions.forEach((fn) => { 8 | const pageFn = page[fn]; 9 | if (!pageFn) { 10 | throw new Error(`function does not exist on page: ${fn}`); 11 | } 12 | // substitute the actual function with a new function that waits 13 | // for the selector that we've set in +layout.svelte 14 | page[fn] = async function (...args: Parameters) { 15 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 16 | // @ts-expect-error 17 | const res = await pageFn.call(page, ...args); 18 | if ( 19 | javaScriptEnabled && 20 | (args[1] as { waitForStarted: boolean })?.waitForStarted !== false 21 | ) { 22 | await page.waitForSelector('body[data-kit-started]', { 23 | timeout: 15000, 24 | }); 25 | } 26 | return res; 27 | }; 28 | }); 29 | try { 30 | await use(page); 31 | } finally { 32 | console.log('resetting'); 33 | await fetch(`${baseURL}/reset`, { method: 'post' }); 34 | } 35 | }, 36 | }); 37 | -------------------------------------------------------------------------------- /tests/index.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from '@playwright/test'; 2 | import { test } from './extends.js'; 3 | 4 | test.describe('non keyed forms', () => { 5 | test("optimistic data update immediately and actual data updates after the invalidation happens and it's has the same value", async ({ 6 | page, 7 | }) => { 8 | await page.goto('/'); 9 | const add_to_list_button = page.getByTestId('add-button'); 10 | await add_to_list_button.click(); 11 | let optimistic_list = page.getByTestId('optimistic-list'); 12 | let list = page.getByTestId('list'); 13 | expect(optimistic_list.locator('li')).toHaveCount(1); 14 | expect(list.locator('li')).toHaveCount(0); 15 | await page.waitForRequest((req) => { 16 | const url = new URL(req.url()); 17 | return url.pathname === '/__data.json'; 18 | }); 19 | optimistic_list = page.getByTestId('optimistic-list'); 20 | list = page.getByTestId('list'); 21 | expect(optimistic_list.locator('li')).toHaveCount(1); 22 | expect(list.locator('li')).toHaveCount(1); 23 | }); 24 | 25 | test("optimistic data update immediately and actual data updates after the invalidation happens and it's has the same value (form in component)", async ({ 26 | page, 27 | }) => { 28 | await page.goto('/'); 29 | const add_to_list_button = page.getByTestId('add-button-component'); 30 | await add_to_list_button.click(); 31 | let optimistic_list = page.getByTestId('optimistic-list'); 32 | let list = page.getByTestId('list'); 33 | expect(optimistic_list.locator('li')).toHaveCount(1); 34 | expect(list.locator('li')).toHaveCount(0); 35 | await page.waitForRequest((req) => { 36 | const url = new URL(req.url()); 37 | return url.pathname === '/__data.json'; 38 | }); 39 | optimistic_list = page.getByTestId('optimistic-list'); 40 | list = page.getByTestId('list'); 41 | expect(optimistic_list.locator('li')).toHaveCount(1); 42 | expect(list.locator('li')).toHaveCount(1); 43 | }); 44 | }); 45 | 46 | test.describe('keyed forms', () => { 47 | test("optimistic data update immediately and actual data updates after the invalidation happens and it's has the same value (form in component, old requests from the same form are cancelled)", async ({ 48 | page, 49 | }) => { 50 | await page.goto('/'); 51 | const up_count_button = page.getByTestId('up-count-component'); 52 | let cancelled_req = 0; 53 | page.on('request', async (req) => { 54 | if (req.method() === 'POST') { 55 | const res = await req.response(); 56 | if (res === null) { 57 | cancelled_req += 1; 58 | } 59 | } 60 | }); 61 | await up_count_button.click(); 62 | const optimistic_count = page.getByTestId('optimistic-count'); 63 | const count = page.getByTestId('count'); 64 | await expect(optimistic_count).toHaveText('1'); 65 | await expect(count).toHaveText('0'); 66 | await up_count_button.click(); 67 | await expect(optimistic_count).toHaveText('2'); 68 | await expect(count).toHaveText('0'); 69 | expect(cancelled_req).toBe(1); 70 | await page.waitForRequest((req) => { 71 | const url = new URL(req.url()); 72 | return url.pathname === '/__data.json'; 73 | }); 74 | await expect(optimistic_count).toHaveText('2'); 75 | await expect(count).toHaveText('2'); 76 | }); 77 | 78 | test("optimistic data update immediately and actual data updates after the invalidation happens and it's has the same value (old requests from the same form are cancelled)", async ({ 79 | page, 80 | }) => { 81 | await page.goto('/'); 82 | const up_count_button = page.getByTestId('up-count'); 83 | let cancelled_req = 0; 84 | page.on('request', async (req) => { 85 | if (req.method() === 'POST') { 86 | const res = await req.response(); 87 | if (res === null) { 88 | cancelled_req += 1; 89 | } 90 | } 91 | }); 92 | await up_count_button.click(); 93 | const optimistic_count = page.getByTestId('optimistic-count'); 94 | const count = page.getByTestId('count'); 95 | await expect(optimistic_count).toHaveText('1'); 96 | await expect(count).toHaveText('0'); 97 | await up_count_button.click(); 98 | await expect(optimistic_count).toHaveText('2'); 99 | await expect(count).toHaveText('0'); 100 | expect(cancelled_req).toBe(1); 101 | await page.waitForRequest((req) => { 102 | const url = new URL(req.url()); 103 | return url.pathname === '/__data.json'; 104 | }); 105 | await expect(optimistic_count).toHaveText('2'); 106 | await expect(count).toHaveText('2'); 107 | }); 108 | }); 109 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true, 12 | "module": "NodeNext", 13 | "moduleResolution": "NodeNext" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vitest/config'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()], 6 | test: { 7 | include: ['src/**/*.{test,spec}.{js,ts}'], 8 | }, 9 | }); 10 | --------------------------------------------------------------------------------