├── .eslintignore ├── .eslintrc.cjs ├── .github └── workflows │ ├── ci.yml │ └── release.yml ├── .gitignore ├── .prettierignore ├── .prettierrc.cjs ├── LICENSE ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src ├── cache.ts ├── core.test.tsx ├── core.ts ├── extra.test.tsx ├── extra.ts ├── index.ts ├── lru.test.ts ├── lru.ts ├── store.test.ts ├── store.ts └── utils.ts ├── tsconfig.json ├── tsup.config.ts └── vitest.config.ts /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | vite.config.ts 3 | dist/ 4 | tsup.config.ts 5 | jest.config.ts 6 | jest.setup.ts 7 | vite.config.ts 8 | vitest.config.ts 9 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: "tronikelis-solid", 3 | parserOptions: { 4 | tsconfigRootDir: __dirname, 5 | project: ["./tsconfig.json"], 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: 4 | push: 5 | workflow_call: 6 | 7 | jobs: 8 | ci: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Cloning repo 12 | uses: actions/checkout@v3 13 | 14 | - name: Install pnpm 15 | uses: pnpm/action-setup@v2 16 | with: 17 | version: 8 18 | 19 | - name: Setup Node.js environment 20 | uses: actions/setup-node@v3 21 | with: 22 | node-version: 20 23 | cache: pnpm 24 | 25 | - name: Install deps 26 | run: pnpm i --frozen-lockfile 27 | 28 | - name: ESLint 29 | run: pnpm lint 30 | 31 | - name: tsc 32 | run: pnpm tsc 33 | 34 | - name: test 35 | run: pnpm test 36 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | release: 5 | types: ["created"] 6 | push: 7 | 8 | jobs: 9 | ci: 10 | uses: "./.github/workflows/ci.yml" 11 | secrets: inherit 12 | 13 | build-release: 14 | runs-on: "ubuntu-latest" 15 | needs: ["ci"] 16 | permissions: 17 | contents: read 18 | id-token: write 19 | steps: 20 | - uses: actions/checkout@v3 21 | 22 | - name: Install pnpm 23 | uses: pnpm/action-setup@v2 24 | with: 25 | version: 8 26 | 27 | - uses: actions/setup-node@v3 28 | with: 29 | node-version: 20 30 | registry-url: "https://registry.npmjs.org" 31 | cache: pnpm 32 | 33 | - name: Install deps 34 | run: pnpm i --frozen-lockfile 35 | 36 | - name: Build 37 | run: pnpm build 38 | 39 | - name: publish 40 | run: | 41 | if [ "${{ github.event_name }}" == "release" ]; then 42 | # This is a release, publish without a tag 43 | npm publish --provenance --access public 44 | else 45 | branch="${{ github.ref_name }}" 46 | tmp=$(mktemp) 47 | short_sha=$(echo "${{ github.sha }}" | cut -c 1-32) 48 | 49 | # skip tag push events 50 | if [[ $branch == *v* && $branch == *.* ]]; then 51 | exit 0 52 | fi 53 | 54 | jq --arg x "-$short_sha" '.version += $x' package.json > "$tmp" && mv "$tmp" package.json 55 | 56 | if [ $branch != "master" ]; then 57 | # This is not the master branch, publish with the branch name as a tag 58 | npm publish --provenance --access public --tag "dev-$branch" 59 | fi 60 | fi 61 | env: 62 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 63 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | vite.config.ts 27 | dev/ 28 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /.prettierrc.cjs: -------------------------------------------------------------------------------- 1 | const config = require("prettier-config-tronikelis"); 2 | 3 | module.exports = { 4 | ...config, 5 | plugins: [], 6 | }; 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Donatas 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 | 2 |

solid-swr

3 | 4 |

Swr ideaology brought to solid

5 | 6 |
7 | 8 | 9 | 10 |
11 | 12 |
13 | 14 | 15 | - [Introduction](#introduction) 16 | - [Features](#features) 17 | - [Install](#install) 18 | - [Quick start](#quick-start) 19 | - [Explanation](#explanation) 20 | - [Ideaology](#ideaology) 21 | - [The "key"](#the-key) 22 | - [Solid store as a source of truth](#solid-store-as-a-source-of-truth) 23 | - [Behavior can be customized through public core APIs](#behavior-can-be-customized-through-public-core-apis) 24 | - [Core](#core) 25 | - [Store](#store) 26 | - [Cache](#cache) 27 | - [Methods](#methods) 28 | - [createRevalidator](#createrevalidator) 29 | - [createMutator](#createmutator) 30 | - [useSwr](#useswr) 31 | - [Options](#options) 32 | - [Passing options](#passing-options) 33 | - [Reading options](#reading-options) 34 | - [Extra](#extra) 35 | - [useSwrFull](#useswrfull) 36 | - [useMatchMutate](#usematchmutate) 37 | - [useMatchRevalidate](#usematchrevalidate) 38 | - [useSwrInfinite](#useswrinfinite) 39 | 40 | 41 | # Introduction 42 | 43 | Quote from [vercel's SWR](https://swr.vercel.app/) for react: 44 | 45 | > The name “SWR” is derived from stale-while-revalidate, a HTTP cache invalidation strategy popularized by HTTP RFC 5861. SWR is a strategy to first return the data from cache (stale), then send the fetch request (revalidate), and finally come with the up-to-date data. 46 | > 47 | > With SWR, components will get a stream of data updates constantly and automatically. And the UI will be always fast and reactive. 48 | 49 | # Features 50 | 51 | - 💙 Built for **solid** 52 | - ⚡ Blazingly **fast** with **reconciled** solid stores and zero* extra hook allocation 53 | - ♻️ **Reusable** and **lightweight** data fetching 54 | - 📦 Optional built-in **cache** and request **deduplication** 55 | - 🔄 **Local mutation** (optimistic UI) 56 | - 🔥 **0** dependencies 57 | - 😉 And much more! 58 | 59 | 60 | For v4 docs [readme](https://github.com/Tronikelis/solid-swr/blob/424e295a8c8fde642be95370cf96fed04517ee49/README.md) 61 | 62 | # Install 63 | 64 | ``` 65 | pnpm i solid-swr 66 | ``` 67 | 68 | # Quick start 69 | 70 | ```tsx 71 | import { useSwr, SwrProvider, Store } from "solid-swr" 72 | import { LRU, createCache } from "solid-swr/cache" 73 | 74 | function App() { 75 | const { v, mutate, revalidate } = useSwr(() => "/api/user/2") 76 | 77 | const onClick = () => { 78 | mutate({ name: "user2" }) 79 | // if you need to revalidate 80 | revalidate() 81 | } 82 | 83 | return ( 84 |
85 | {v().isLoading} 86 | {v().data} 87 |
88 | ) 89 | } 90 | 91 | function Root(props) { 92 | return ( 93 | 94 | {props.children} 95 | 96 | ) 97 | } 98 | ``` 99 | 100 | ## Explanation 101 | 102 | Hook returns 3 values which you can destructure: 103 | 104 | - `v`: function that indexes into solid store 105 | - `mutate`: basically `setStore` but scoped to the key 106 | - `revalidate`: call fetcher again (not guaranteed to be called due to deduplication), this function returns the result of the fetch call 107 | 108 | # Ideaology 109 | 110 | Here I want to share some context about the ideaology of this library and swr in general 111 | 112 | ## The "key" 113 | 114 | The key is a `string` which is used as an ID into some server side state 115 | 116 | ```ts 117 | const key = "api/user/id" 118 | useSwr(() => key) 119 | ``` 120 | 121 | The key is almost always used as a url to a backend resource 122 | 123 | ## Solid store as a source of truth 124 | 125 | Everything is stored in a solid store, i.e. isLoading, data, err, etc... 126 | All hooks / utilities, talk to a single object through a `Store` interface 127 | 128 | This way, solid handles the syncing of changes to listeners, 129 | thus: 130 | 131 | 1. we avoid implementing syncing *cough* *cough* `solid-swr@v4` 132 | 2. we avoid duplicating large amounts of js objects, again *cough* *cough* `solid-swr@v4` 133 | 3. And most importantly, this gives us `O(1)` time complexity to call `useSwr` 134 | 135 |
136 | Simple graph explaining what I've said 137 | 138 |
139 | 140 | ## Behavior can be customized through public core APIs 141 | 142 | In v5, `useSwr` is a **core** hook, meaning that it is simple and *meant* to be extended 143 | 144 | In fact, `useSwr` is just a simple function that uses other public apis: 145 | 146 | - `createRevalidator` 147 | - `createMutator` 148 | 149 | An excerpt from `useSwr` as of the time I'm writing this 150 | 151 | ```ts 152 | const runWithKey = any>(fn: T): ReturnType | undefined => { 153 | const k = key(); 154 | if (!k) return; 155 | return fn(k); 156 | }; 157 | 158 | const revalidator = createRevalidator(ctx); 159 | const mutator = createMutator(ctx); 160 | 161 | // as you can see, revalidate is just a convenience method to call revalidtor 162 | const revalidate = () => runWithKey(k => revalidator(k)); 163 | // mutate is exactly the same 164 | const mutate = (payload: Mutator) => runWithKey(k => mutator(k, payload)); 165 | ``` 166 | 167 | If you at any time need a revalidator, or a mutator, just use `createRevalidator` or `createMutator`, 168 | or create new abstractions with these 2, just like pretty much all hooks in this lib 169 | 170 | # Core 171 | 172 | This is the most important part of the library which contains all core utilities 173 | for you to manage server side state with swr 174 | 175 | ## Store 176 | 177 | This is by far **THE** most important part of the library 178 | 179 | The store is a solid.js store object with the key `string` as the key 180 | 181 | ```ts 182 | export type SolidStore = { 183 | [key: string]: StoreItem | undefined; 184 | }; 185 | ``` 186 | 187 | Each item in the store contains these properties: 188 | 189 | - `data`: a generic value 190 | - `err`: a generic value 191 | - `isLoading`: a boolean 192 | 193 | For more info I suggest you looking at the `src/store.ts` everything is there 194 | 195 | ### Cache 196 | 197 | A separate user-provided cache is used to remove items from the store 198 | 199 | Connect your cache with the store like so: 200 | 201 | ```ts 202 | export type StoreCache = { 203 | /** item has been inserted into store */ 204 | insert: (key: string, onTrim: OnTrimFn) => void; 205 | /** item has been looked up */ 206 | lookup: (key: string, onTrim: OnTrimFn) => void; 207 | }; 208 | 209 | ``` 210 | 211 | ```ts 212 | const store = new Store({ 213 | lookup: (key, onTrim) => lru.get(key), 214 | insert: (key, onTrim) => lru.set(key, true, onTrim) 215 | }) 216 | ``` 217 | 218 | `solid-swr` provides this behavior ootb 219 | 220 | 221 | ```ts 222 | import { LRU, createCache } from "solid-swr/cache" 223 | 224 | new Store(createCache(new LRU())) 225 | ``` 226 | 227 | The `onTrim` is how the store connects to the cache, 228 | call `onTrim(key)` to remove a key from the solid store 229 | 230 | In the case above when `lru` tries to set a key it will trim the cache, 231 | thus removing (if needed) a key 232 | 233 | 234 | ### Methods 235 | 236 | Store can be mutated / read with its public methods 237 | 238 | - `lookupOrDef`: gets the correct item or returns default 239 | - `update`: update store while reconciling data 240 | - `updateProduce`: update store with solid `produce` util 241 | 242 | ## createRevalidator 243 | 244 | ```ts 245 | import { createRevalidator } from "solid-swr" 246 | ``` 247 | 248 | Create a function that revalidates (calls fetcher) a key 249 | 250 | This function also deduplicates requests, so when you call it, the actual fetcher call 251 | is not guaranteed 252 | 253 | ## createMutator 254 | 255 | ```ts 256 | import { createMutator } from "solid-swr" 257 | ``` 258 | 259 | Create a function that can change any key in the store 260 | 261 | ## useSwr 262 | 263 | ```ts 264 | import { useSwr } from "solid-swr" 265 | ``` 266 | 267 | Hook that uses `createRevalidator` and `createMutator` to create the swr behavior 268 | that we all love 269 | 270 | Returns: 271 | 272 | - `mutate`: `createMutator` scoped to a key 273 | - `revalidate`: `createRevalidator` scoped to a key 274 | - `v`: a function that indexes into a solid store 275 | 276 | 277 | ## Options 278 | 279 | ``` 280 | src/core.ts 281 | ``` 282 | 283 | ```ts 284 | export type SwrOpts = { 285 | store: Store; 286 | 287 | fetcher: (key: string, { signal }: FetcherOpts) => Promise; 288 | /** gets direct store references (don't mutate) */ 289 | onSuccess: (key: string, res: D) => void; 290 | /** gets direct store references (don't mutate) */ 291 | onError: (key: string, err: E) => void; 292 | 293 | /** gets direct references to response (don't mutate) */ 294 | onSuccessDeduped: (key: string, res: D) => void; 295 | /** gets direct reference to response (don't mutate) */ 296 | onErrorDeduped: (key: string, err: E) => void; 297 | }; 298 | ``` 299 | 300 | ### Passing options 301 | 302 | Options can be passed either to a `useSwr` hook instance or 303 | with `SwrProvider` 304 | 305 | ### Reading options 306 | 307 | Options can be read with `useSwrContext` 308 | 309 | # Extra 310 | 311 | ```ts 312 | import * as extra from "solid-swr/extra" 313 | ``` 314 | 315 | All of the recipes shown here could have been created by using the [#core](#Core) utils 316 | 317 | If you have come up with an awesome recipe that's not shown here, 318 | I would love to add it to `solid-swr` 319 | 320 | I encourage you to take a look at `src/extra.tx` to get more context about inner 321 | workings of these recipes 322 | 323 | ## useSwrFull 324 | 325 | This is similar to the default swr in `solid-swr@v4` 326 | 327 | Basically it is [core](#useswr) hook with extra options: 328 | 329 | ```ts 330 | export type SwrFullOpts = { 331 | keepPreviousData: boolean; 332 | revalidateOnFocus: boolean; 333 | revalidateOnOnline: boolean; 334 | fallback: Fallback; 335 | refreshInterval: number; 336 | }; 337 | ``` 338 | 339 | Setting these options is the same as [in core](#options) but with `useSwrFull*` utils 340 | 341 | ## useMatchMutate 342 | 343 | Uses [createMutator](#createmutator) to mutate multiple keys at once 344 | 345 | ## useMatchRevalidate 346 | 347 | Uses [createRevalidator](#createrevalidator) to revalidate multiple keys at once 348 | 349 | This hook also skips revalidating items from the store which do not have any hooks attached to them, 350 | this is known by looking at `_mountedCount` number 351 | 352 | ## useSwrInfinite 353 | 354 | Used for infinite loading, returns an array of accessors into correct store index 355 | 356 | ```ts 357 | import { useSwrInfinite } from "solid-swr/store" 358 | 359 | const { data } = useSwrInfinite((index, prevData) => `https://example.com?page=${index}`) 360 | 361 | // here we get first item, then we access the store with second () 362 | // then get the actual `data` that we need 363 | const firstItemData = data()[0]().data 364 | ``` 365 | 366 | 367 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "solid-swr", 3 | "description": "The beloved swr package ported over to solid", 4 | "version": "5.0.2", 5 | "type": "module", 6 | "main": "./dist/index.cjs", 7 | "types": "./dist/index.d.ts", 8 | "module": "./dist/index.js", 9 | "exports": { 10 | ".": { 11 | "import": "./dist/index.js", 12 | "require": "./dist/index.cjs" 13 | }, 14 | "./cache": { 15 | "import": "./dist/cache.js", 16 | "require": "./dist/cache.cjs" 17 | }, 18 | "./extra": { 19 | "import": "./dist/extra.js", 20 | "require": "./dist/extra.cjs" 21 | } 22 | }, 23 | "files": [ 24 | "dist" 25 | ], 26 | "keywords": [ 27 | "solid", 28 | "solidjs", 29 | "swr", 30 | "solid-swr", 31 | "hooks", 32 | "request", 33 | "cache", 34 | "fetch" 35 | ], 36 | "author": "tronikelis", 37 | "repository": { 38 | "type": "git", 39 | "url": "https://github.com/tronikelis/solid-swr" 40 | }, 41 | "license": "MIT", 42 | "scripts": { 43 | "dev": "vite", 44 | "build": "tsup", 45 | "lint": "eslint . -c ./.eslintrc.cjs", 46 | "test": "vitest", 47 | "tsc": "tsc --noEmit" 48 | }, 49 | "peerDependencies": { 50 | "solid-js": "1.x.x" 51 | }, 52 | "devDependencies": { 53 | "@solidjs/testing-library": "0.8.5", 54 | "@testing-library/jest-dom": "6.3.0", 55 | "@types/node": "20.11.16", 56 | "eslint": "8.56.0", 57 | "eslint-config-tronikelis-solid": "10.0.0", 58 | "jsdom": "24.0.0", 59 | "prettier": "3.2.4", 60 | "prettier-config-tronikelis": "3.0.0", 61 | "tsup": "8.3.5", 62 | "typescript": "5.3.3", 63 | "vite": "5.0.12", 64 | "vite-plugin-solid": "2.9.1", 65 | "vite-tsconfig-paths": "4.3.1", 66 | "vitest": "1.2.2" 67 | }, 68 | "browser": {}, 69 | "packageManager": "pnpm@8.15.8+sha512.d1a029e1a447ad90bc96cd58b0fad486d2993d531856396f7babf2d83eb1823bb83c5a3d0fc18f675b2d10321d49eb161fece36fe8134aa5823ecd215feed392" 70 | } 71 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | solid-js: 9 | specifier: 1.x.x 10 | version: 1.8.12 11 | 12 | devDependencies: 13 | '@solidjs/testing-library': 14 | specifier: 0.8.5 15 | version: 0.8.5(@solidjs/router@0.11.3)(solid-js@1.8.12) 16 | '@testing-library/jest-dom': 17 | specifier: 6.3.0 18 | version: 6.3.0(vitest@1.2.2) 19 | '@types/node': 20 | specifier: 20.11.16 21 | version: 20.11.16 22 | eslint: 23 | specifier: 8.56.0 24 | version: 8.56.0 25 | eslint-config-tronikelis-solid: 26 | specifier: 10.0.0 27 | version: 10.0.0(eslint@8.56.0)(prettier@3.2.4)(typescript@5.3.3) 28 | jsdom: 29 | specifier: 24.0.0 30 | version: 24.0.0 31 | prettier: 32 | specifier: 3.2.4 33 | version: 3.2.4 34 | prettier-config-tronikelis: 35 | specifier: 3.0.0 36 | version: 3.0.0(prettier@3.2.4) 37 | tsup: 38 | specifier: 8.3.5 39 | version: 8.3.5(typescript@5.3.3) 40 | typescript: 41 | specifier: 5.3.3 42 | version: 5.3.3 43 | vite: 44 | specifier: 5.0.12 45 | version: 5.0.12(@types/node@20.11.16) 46 | vite-plugin-solid: 47 | specifier: 2.9.1 48 | version: 2.9.1(@testing-library/jest-dom@6.3.0)(solid-js@1.8.12)(vite@5.0.12) 49 | vite-tsconfig-paths: 50 | specifier: 4.3.1 51 | version: 4.3.1(typescript@5.3.3)(vite@5.0.12) 52 | vitest: 53 | specifier: 1.2.2 54 | version: 1.2.2(@types/node@20.11.16)(jsdom@24.0.0) 55 | 56 | packages: 57 | 58 | /@aashutoshrathi/word-wrap@1.2.6: 59 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 60 | engines: {node: '>=0.10.0'} 61 | dev: true 62 | 63 | /@adobe/css-tools@4.3.3: 64 | resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} 65 | dev: true 66 | 67 | /@ampproject/remapping@2.2.1: 68 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 69 | engines: {node: '>=6.0.0'} 70 | dependencies: 71 | '@jridgewell/gen-mapping': 0.3.3 72 | '@jridgewell/trace-mapping': 0.3.22 73 | dev: true 74 | 75 | /@babel/code-frame@7.23.5: 76 | resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} 77 | engines: {node: '>=6.9.0'} 78 | dependencies: 79 | '@babel/highlight': 7.23.4 80 | chalk: 2.4.2 81 | dev: true 82 | 83 | /@babel/compat-data@7.23.5: 84 | resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} 85 | engines: {node: '>=6.9.0'} 86 | dev: true 87 | 88 | /@babel/core@7.23.9: 89 | resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} 90 | engines: {node: '>=6.9.0'} 91 | dependencies: 92 | '@ampproject/remapping': 2.2.1 93 | '@babel/code-frame': 7.23.5 94 | '@babel/generator': 7.23.6 95 | '@babel/helper-compilation-targets': 7.23.6 96 | '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) 97 | '@babel/helpers': 7.23.9 98 | '@babel/parser': 7.23.9 99 | '@babel/template': 7.23.9 100 | '@babel/traverse': 7.23.9 101 | '@babel/types': 7.23.9 102 | convert-source-map: 2.0.0 103 | debug: 4.3.4 104 | gensync: 1.0.0-beta.2 105 | json5: 2.2.3 106 | semver: 6.3.1 107 | transitivePeerDependencies: 108 | - supports-color 109 | dev: true 110 | 111 | /@babel/generator@7.23.6: 112 | resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} 113 | engines: {node: '>=6.9.0'} 114 | dependencies: 115 | '@babel/types': 7.23.9 116 | '@jridgewell/gen-mapping': 0.3.3 117 | '@jridgewell/trace-mapping': 0.3.22 118 | jsesc: 2.5.2 119 | dev: true 120 | 121 | /@babel/helper-compilation-targets@7.23.6: 122 | resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} 123 | engines: {node: '>=6.9.0'} 124 | dependencies: 125 | '@babel/compat-data': 7.23.5 126 | '@babel/helper-validator-option': 7.23.5 127 | browserslist: 4.22.3 128 | lru-cache: 5.1.1 129 | semver: 6.3.1 130 | dev: true 131 | 132 | /@babel/helper-environment-visitor@7.22.20: 133 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} 134 | engines: {node: '>=6.9.0'} 135 | dev: true 136 | 137 | /@babel/helper-function-name@7.23.0: 138 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} 139 | engines: {node: '>=6.9.0'} 140 | dependencies: 141 | '@babel/template': 7.23.9 142 | '@babel/types': 7.23.9 143 | dev: true 144 | 145 | /@babel/helper-hoist-variables@7.22.5: 146 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} 147 | engines: {node: '>=6.9.0'} 148 | dependencies: 149 | '@babel/types': 7.23.9 150 | dev: true 151 | 152 | /@babel/helper-module-imports@7.18.6: 153 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 154 | engines: {node: '>=6.9.0'} 155 | dependencies: 156 | '@babel/types': 7.23.9 157 | dev: true 158 | 159 | /@babel/helper-module-imports@7.22.15: 160 | resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} 161 | engines: {node: '>=6.9.0'} 162 | dependencies: 163 | '@babel/types': 7.23.9 164 | dev: true 165 | 166 | /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): 167 | resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} 168 | engines: {node: '>=6.9.0'} 169 | peerDependencies: 170 | '@babel/core': ^7.0.0 171 | dependencies: 172 | '@babel/core': 7.23.9 173 | '@babel/helper-environment-visitor': 7.22.20 174 | '@babel/helper-module-imports': 7.22.15 175 | '@babel/helper-simple-access': 7.22.5 176 | '@babel/helper-split-export-declaration': 7.22.6 177 | '@babel/helper-validator-identifier': 7.22.20 178 | dev: true 179 | 180 | /@babel/helper-plugin-utils@7.22.5: 181 | resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} 182 | engines: {node: '>=6.9.0'} 183 | dev: true 184 | 185 | /@babel/helper-simple-access@7.22.5: 186 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} 187 | engines: {node: '>=6.9.0'} 188 | dependencies: 189 | '@babel/types': 7.23.9 190 | dev: true 191 | 192 | /@babel/helper-split-export-declaration@7.22.6: 193 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} 194 | engines: {node: '>=6.9.0'} 195 | dependencies: 196 | '@babel/types': 7.23.9 197 | dev: true 198 | 199 | /@babel/helper-string-parser@7.23.4: 200 | resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} 201 | engines: {node: '>=6.9.0'} 202 | dev: true 203 | 204 | /@babel/helper-validator-identifier@7.22.20: 205 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 206 | engines: {node: '>=6.9.0'} 207 | dev: true 208 | 209 | /@babel/helper-validator-option@7.23.5: 210 | resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} 211 | engines: {node: '>=6.9.0'} 212 | dev: true 213 | 214 | /@babel/helpers@7.23.9: 215 | resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} 216 | engines: {node: '>=6.9.0'} 217 | dependencies: 218 | '@babel/template': 7.23.9 219 | '@babel/traverse': 7.23.9 220 | '@babel/types': 7.23.9 221 | transitivePeerDependencies: 222 | - supports-color 223 | dev: true 224 | 225 | /@babel/highlight@7.23.4: 226 | resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} 227 | engines: {node: '>=6.9.0'} 228 | dependencies: 229 | '@babel/helper-validator-identifier': 7.22.20 230 | chalk: 2.4.2 231 | js-tokens: 4.0.0 232 | dev: true 233 | 234 | /@babel/parser@7.23.9: 235 | resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} 236 | engines: {node: '>=6.0.0'} 237 | hasBin: true 238 | dependencies: 239 | '@babel/types': 7.23.9 240 | dev: true 241 | 242 | /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): 243 | resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} 244 | engines: {node: '>=6.9.0'} 245 | peerDependencies: 246 | '@babel/core': ^7.0.0-0 247 | dependencies: 248 | '@babel/core': 7.23.9 249 | '@babel/helper-plugin-utils': 7.22.5 250 | dev: true 251 | 252 | /@babel/runtime@7.23.9: 253 | resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} 254 | engines: {node: '>=6.9.0'} 255 | dependencies: 256 | regenerator-runtime: 0.14.1 257 | dev: true 258 | 259 | /@babel/template@7.23.9: 260 | resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} 261 | engines: {node: '>=6.9.0'} 262 | dependencies: 263 | '@babel/code-frame': 7.23.5 264 | '@babel/parser': 7.23.9 265 | '@babel/types': 7.23.9 266 | dev: true 267 | 268 | /@babel/traverse@7.23.9: 269 | resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} 270 | engines: {node: '>=6.9.0'} 271 | dependencies: 272 | '@babel/code-frame': 7.23.5 273 | '@babel/generator': 7.23.6 274 | '@babel/helper-environment-visitor': 7.22.20 275 | '@babel/helper-function-name': 7.23.0 276 | '@babel/helper-hoist-variables': 7.22.5 277 | '@babel/helper-split-export-declaration': 7.22.6 278 | '@babel/parser': 7.23.9 279 | '@babel/types': 7.23.9 280 | debug: 4.3.4 281 | globals: 11.12.0 282 | transitivePeerDependencies: 283 | - supports-color 284 | dev: true 285 | 286 | /@babel/types@7.23.9: 287 | resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} 288 | engines: {node: '>=6.9.0'} 289 | dependencies: 290 | '@babel/helper-string-parser': 7.23.4 291 | '@babel/helper-validator-identifier': 7.22.20 292 | to-fast-properties: 2.0.0 293 | dev: true 294 | 295 | /@esbuild/aix-ppc64@0.19.12: 296 | resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} 297 | engines: {node: '>=12'} 298 | cpu: [ppc64] 299 | os: [aix] 300 | requiresBuild: true 301 | dev: true 302 | optional: true 303 | 304 | /@esbuild/aix-ppc64@0.24.0: 305 | resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} 306 | engines: {node: '>=18'} 307 | cpu: [ppc64] 308 | os: [aix] 309 | requiresBuild: true 310 | dev: true 311 | optional: true 312 | 313 | /@esbuild/android-arm64@0.19.12: 314 | resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} 315 | engines: {node: '>=12'} 316 | cpu: [arm64] 317 | os: [android] 318 | requiresBuild: true 319 | dev: true 320 | optional: true 321 | 322 | /@esbuild/android-arm64@0.24.0: 323 | resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} 324 | engines: {node: '>=18'} 325 | cpu: [arm64] 326 | os: [android] 327 | requiresBuild: true 328 | dev: true 329 | optional: true 330 | 331 | /@esbuild/android-arm@0.19.12: 332 | resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} 333 | engines: {node: '>=12'} 334 | cpu: [arm] 335 | os: [android] 336 | requiresBuild: true 337 | dev: true 338 | optional: true 339 | 340 | /@esbuild/android-arm@0.24.0: 341 | resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} 342 | engines: {node: '>=18'} 343 | cpu: [arm] 344 | os: [android] 345 | requiresBuild: true 346 | dev: true 347 | optional: true 348 | 349 | /@esbuild/android-x64@0.19.12: 350 | resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} 351 | engines: {node: '>=12'} 352 | cpu: [x64] 353 | os: [android] 354 | requiresBuild: true 355 | dev: true 356 | optional: true 357 | 358 | /@esbuild/android-x64@0.24.0: 359 | resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} 360 | engines: {node: '>=18'} 361 | cpu: [x64] 362 | os: [android] 363 | requiresBuild: true 364 | dev: true 365 | optional: true 366 | 367 | /@esbuild/darwin-arm64@0.19.12: 368 | resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} 369 | engines: {node: '>=12'} 370 | cpu: [arm64] 371 | os: [darwin] 372 | requiresBuild: true 373 | dev: true 374 | optional: true 375 | 376 | /@esbuild/darwin-arm64@0.24.0: 377 | resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} 378 | engines: {node: '>=18'} 379 | cpu: [arm64] 380 | os: [darwin] 381 | requiresBuild: true 382 | dev: true 383 | optional: true 384 | 385 | /@esbuild/darwin-x64@0.19.12: 386 | resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} 387 | engines: {node: '>=12'} 388 | cpu: [x64] 389 | os: [darwin] 390 | requiresBuild: true 391 | dev: true 392 | optional: true 393 | 394 | /@esbuild/darwin-x64@0.24.0: 395 | resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} 396 | engines: {node: '>=18'} 397 | cpu: [x64] 398 | os: [darwin] 399 | requiresBuild: true 400 | dev: true 401 | optional: true 402 | 403 | /@esbuild/freebsd-arm64@0.19.12: 404 | resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} 405 | engines: {node: '>=12'} 406 | cpu: [arm64] 407 | os: [freebsd] 408 | requiresBuild: true 409 | dev: true 410 | optional: true 411 | 412 | /@esbuild/freebsd-arm64@0.24.0: 413 | resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} 414 | engines: {node: '>=18'} 415 | cpu: [arm64] 416 | os: [freebsd] 417 | requiresBuild: true 418 | dev: true 419 | optional: true 420 | 421 | /@esbuild/freebsd-x64@0.19.12: 422 | resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} 423 | engines: {node: '>=12'} 424 | cpu: [x64] 425 | os: [freebsd] 426 | requiresBuild: true 427 | dev: true 428 | optional: true 429 | 430 | /@esbuild/freebsd-x64@0.24.0: 431 | resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} 432 | engines: {node: '>=18'} 433 | cpu: [x64] 434 | os: [freebsd] 435 | requiresBuild: true 436 | dev: true 437 | optional: true 438 | 439 | /@esbuild/linux-arm64@0.19.12: 440 | resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} 441 | engines: {node: '>=12'} 442 | cpu: [arm64] 443 | os: [linux] 444 | requiresBuild: true 445 | dev: true 446 | optional: true 447 | 448 | /@esbuild/linux-arm64@0.24.0: 449 | resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} 450 | engines: {node: '>=18'} 451 | cpu: [arm64] 452 | os: [linux] 453 | requiresBuild: true 454 | dev: true 455 | optional: true 456 | 457 | /@esbuild/linux-arm@0.19.12: 458 | resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} 459 | engines: {node: '>=12'} 460 | cpu: [arm] 461 | os: [linux] 462 | requiresBuild: true 463 | dev: true 464 | optional: true 465 | 466 | /@esbuild/linux-arm@0.24.0: 467 | resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} 468 | engines: {node: '>=18'} 469 | cpu: [arm] 470 | os: [linux] 471 | requiresBuild: true 472 | dev: true 473 | optional: true 474 | 475 | /@esbuild/linux-ia32@0.19.12: 476 | resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} 477 | engines: {node: '>=12'} 478 | cpu: [ia32] 479 | os: [linux] 480 | requiresBuild: true 481 | dev: true 482 | optional: true 483 | 484 | /@esbuild/linux-ia32@0.24.0: 485 | resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} 486 | engines: {node: '>=18'} 487 | cpu: [ia32] 488 | os: [linux] 489 | requiresBuild: true 490 | dev: true 491 | optional: true 492 | 493 | /@esbuild/linux-loong64@0.19.12: 494 | resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} 495 | engines: {node: '>=12'} 496 | cpu: [loong64] 497 | os: [linux] 498 | requiresBuild: true 499 | dev: true 500 | optional: true 501 | 502 | /@esbuild/linux-loong64@0.24.0: 503 | resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} 504 | engines: {node: '>=18'} 505 | cpu: [loong64] 506 | os: [linux] 507 | requiresBuild: true 508 | dev: true 509 | optional: true 510 | 511 | /@esbuild/linux-mips64el@0.19.12: 512 | resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} 513 | engines: {node: '>=12'} 514 | cpu: [mips64el] 515 | os: [linux] 516 | requiresBuild: true 517 | dev: true 518 | optional: true 519 | 520 | /@esbuild/linux-mips64el@0.24.0: 521 | resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} 522 | engines: {node: '>=18'} 523 | cpu: [mips64el] 524 | os: [linux] 525 | requiresBuild: true 526 | dev: true 527 | optional: true 528 | 529 | /@esbuild/linux-ppc64@0.19.12: 530 | resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} 531 | engines: {node: '>=12'} 532 | cpu: [ppc64] 533 | os: [linux] 534 | requiresBuild: true 535 | dev: true 536 | optional: true 537 | 538 | /@esbuild/linux-ppc64@0.24.0: 539 | resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} 540 | engines: {node: '>=18'} 541 | cpu: [ppc64] 542 | os: [linux] 543 | requiresBuild: true 544 | dev: true 545 | optional: true 546 | 547 | /@esbuild/linux-riscv64@0.19.12: 548 | resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} 549 | engines: {node: '>=12'} 550 | cpu: [riscv64] 551 | os: [linux] 552 | requiresBuild: true 553 | dev: true 554 | optional: true 555 | 556 | /@esbuild/linux-riscv64@0.24.0: 557 | resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} 558 | engines: {node: '>=18'} 559 | cpu: [riscv64] 560 | os: [linux] 561 | requiresBuild: true 562 | dev: true 563 | optional: true 564 | 565 | /@esbuild/linux-s390x@0.19.12: 566 | resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} 567 | engines: {node: '>=12'} 568 | cpu: [s390x] 569 | os: [linux] 570 | requiresBuild: true 571 | dev: true 572 | optional: true 573 | 574 | /@esbuild/linux-s390x@0.24.0: 575 | resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} 576 | engines: {node: '>=18'} 577 | cpu: [s390x] 578 | os: [linux] 579 | requiresBuild: true 580 | dev: true 581 | optional: true 582 | 583 | /@esbuild/linux-x64@0.19.12: 584 | resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} 585 | engines: {node: '>=12'} 586 | cpu: [x64] 587 | os: [linux] 588 | requiresBuild: true 589 | dev: true 590 | optional: true 591 | 592 | /@esbuild/linux-x64@0.24.0: 593 | resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} 594 | engines: {node: '>=18'} 595 | cpu: [x64] 596 | os: [linux] 597 | requiresBuild: true 598 | dev: true 599 | optional: true 600 | 601 | /@esbuild/netbsd-x64@0.19.12: 602 | resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} 603 | engines: {node: '>=12'} 604 | cpu: [x64] 605 | os: [netbsd] 606 | requiresBuild: true 607 | dev: true 608 | optional: true 609 | 610 | /@esbuild/netbsd-x64@0.24.0: 611 | resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} 612 | engines: {node: '>=18'} 613 | cpu: [x64] 614 | os: [netbsd] 615 | requiresBuild: true 616 | dev: true 617 | optional: true 618 | 619 | /@esbuild/openbsd-arm64@0.24.0: 620 | resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} 621 | engines: {node: '>=18'} 622 | cpu: [arm64] 623 | os: [openbsd] 624 | requiresBuild: true 625 | dev: true 626 | optional: true 627 | 628 | /@esbuild/openbsd-x64@0.19.12: 629 | resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} 630 | engines: {node: '>=12'} 631 | cpu: [x64] 632 | os: [openbsd] 633 | requiresBuild: true 634 | dev: true 635 | optional: true 636 | 637 | /@esbuild/openbsd-x64@0.24.0: 638 | resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} 639 | engines: {node: '>=18'} 640 | cpu: [x64] 641 | os: [openbsd] 642 | requiresBuild: true 643 | dev: true 644 | optional: true 645 | 646 | /@esbuild/sunos-x64@0.19.12: 647 | resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} 648 | engines: {node: '>=12'} 649 | cpu: [x64] 650 | os: [sunos] 651 | requiresBuild: true 652 | dev: true 653 | optional: true 654 | 655 | /@esbuild/sunos-x64@0.24.0: 656 | resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} 657 | engines: {node: '>=18'} 658 | cpu: [x64] 659 | os: [sunos] 660 | requiresBuild: true 661 | dev: true 662 | optional: true 663 | 664 | /@esbuild/win32-arm64@0.19.12: 665 | resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} 666 | engines: {node: '>=12'} 667 | cpu: [arm64] 668 | os: [win32] 669 | requiresBuild: true 670 | dev: true 671 | optional: true 672 | 673 | /@esbuild/win32-arm64@0.24.0: 674 | resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} 675 | engines: {node: '>=18'} 676 | cpu: [arm64] 677 | os: [win32] 678 | requiresBuild: true 679 | dev: true 680 | optional: true 681 | 682 | /@esbuild/win32-ia32@0.19.12: 683 | resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} 684 | engines: {node: '>=12'} 685 | cpu: [ia32] 686 | os: [win32] 687 | requiresBuild: true 688 | dev: true 689 | optional: true 690 | 691 | /@esbuild/win32-ia32@0.24.0: 692 | resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} 693 | engines: {node: '>=18'} 694 | cpu: [ia32] 695 | os: [win32] 696 | requiresBuild: true 697 | dev: true 698 | optional: true 699 | 700 | /@esbuild/win32-x64@0.19.12: 701 | resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} 702 | engines: {node: '>=12'} 703 | cpu: [x64] 704 | os: [win32] 705 | requiresBuild: true 706 | dev: true 707 | optional: true 708 | 709 | /@esbuild/win32-x64@0.24.0: 710 | resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} 711 | engines: {node: '>=18'} 712 | cpu: [x64] 713 | os: [win32] 714 | requiresBuild: true 715 | dev: true 716 | optional: true 717 | 718 | /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): 719 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 720 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 721 | peerDependencies: 722 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 723 | dependencies: 724 | eslint: 8.56.0 725 | eslint-visitor-keys: 3.4.3 726 | dev: true 727 | 728 | /@eslint-community/regexpp@4.10.0: 729 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 730 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 731 | dev: true 732 | 733 | /@eslint/eslintrc@2.1.4: 734 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 735 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 736 | dependencies: 737 | ajv: 6.12.6 738 | debug: 4.3.4 739 | espree: 9.6.1 740 | globals: 13.24.0 741 | ignore: 5.3.1 742 | import-fresh: 3.3.0 743 | js-yaml: 4.1.0 744 | minimatch: 3.1.2 745 | strip-json-comments: 3.1.1 746 | transitivePeerDependencies: 747 | - supports-color 748 | dev: true 749 | 750 | /@eslint/js@8.56.0: 751 | resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} 752 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 753 | dev: true 754 | 755 | /@humanwhocodes/config-array@0.11.14: 756 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} 757 | engines: {node: '>=10.10.0'} 758 | dependencies: 759 | '@humanwhocodes/object-schema': 2.0.2 760 | debug: 4.3.4 761 | minimatch: 3.1.2 762 | transitivePeerDependencies: 763 | - supports-color 764 | dev: true 765 | 766 | /@humanwhocodes/module-importer@1.0.1: 767 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 768 | engines: {node: '>=12.22'} 769 | dev: true 770 | 771 | /@humanwhocodes/object-schema@2.0.2: 772 | resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} 773 | dev: true 774 | 775 | /@isaacs/cliui@8.0.2: 776 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 777 | engines: {node: '>=12'} 778 | dependencies: 779 | string-width: 5.1.2 780 | string-width-cjs: /string-width@4.2.3 781 | strip-ansi: 7.1.0 782 | strip-ansi-cjs: /strip-ansi@6.0.1 783 | wrap-ansi: 8.1.0 784 | wrap-ansi-cjs: /wrap-ansi@7.0.0 785 | dev: true 786 | 787 | /@jest/schemas@29.6.3: 788 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} 789 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 790 | dependencies: 791 | '@sinclair/typebox': 0.27.8 792 | dev: true 793 | 794 | /@jridgewell/gen-mapping@0.3.3: 795 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 796 | engines: {node: '>=6.0.0'} 797 | dependencies: 798 | '@jridgewell/set-array': 1.1.2 799 | '@jridgewell/sourcemap-codec': 1.4.15 800 | '@jridgewell/trace-mapping': 0.3.22 801 | dev: true 802 | 803 | /@jridgewell/resolve-uri@3.1.1: 804 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 805 | engines: {node: '>=6.0.0'} 806 | dev: true 807 | 808 | /@jridgewell/set-array@1.1.2: 809 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 810 | engines: {node: '>=6.0.0'} 811 | dev: true 812 | 813 | /@jridgewell/sourcemap-codec@1.4.15: 814 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 815 | dev: true 816 | 817 | /@jridgewell/trace-mapping@0.3.22: 818 | resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} 819 | dependencies: 820 | '@jridgewell/resolve-uri': 3.1.1 821 | '@jridgewell/sourcemap-codec': 1.4.15 822 | dev: true 823 | 824 | /@nodelib/fs.scandir@2.1.5: 825 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 826 | engines: {node: '>= 8'} 827 | dependencies: 828 | '@nodelib/fs.stat': 2.0.5 829 | run-parallel: 1.2.0 830 | dev: true 831 | 832 | /@nodelib/fs.stat@2.0.5: 833 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 834 | engines: {node: '>= 8'} 835 | dev: true 836 | 837 | /@nodelib/fs.walk@1.2.8: 838 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 839 | engines: {node: '>= 8'} 840 | dependencies: 841 | '@nodelib/fs.scandir': 2.1.5 842 | fastq: 1.17.0 843 | dev: true 844 | 845 | /@pkgjs/parseargs@0.11.0: 846 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 847 | engines: {node: '>=14'} 848 | requiresBuild: true 849 | dev: true 850 | optional: true 851 | 852 | /@pkgr/core@0.1.1: 853 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} 854 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 855 | dev: true 856 | 857 | /@rollup/rollup-android-arm-eabi@4.28.1: 858 | resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==} 859 | cpu: [arm] 860 | os: [android] 861 | requiresBuild: true 862 | dev: true 863 | optional: true 864 | 865 | /@rollup/rollup-android-arm-eabi@4.9.6: 866 | resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} 867 | cpu: [arm] 868 | os: [android] 869 | requiresBuild: true 870 | dev: true 871 | optional: true 872 | 873 | /@rollup/rollup-android-arm64@4.28.1: 874 | resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} 875 | cpu: [arm64] 876 | os: [android] 877 | requiresBuild: true 878 | dev: true 879 | optional: true 880 | 881 | /@rollup/rollup-android-arm64@4.9.6: 882 | resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} 883 | cpu: [arm64] 884 | os: [android] 885 | requiresBuild: true 886 | dev: true 887 | optional: true 888 | 889 | /@rollup/rollup-darwin-arm64@4.28.1: 890 | resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} 891 | cpu: [arm64] 892 | os: [darwin] 893 | requiresBuild: true 894 | dev: true 895 | optional: true 896 | 897 | /@rollup/rollup-darwin-arm64@4.9.6: 898 | resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} 899 | cpu: [arm64] 900 | os: [darwin] 901 | requiresBuild: true 902 | dev: true 903 | optional: true 904 | 905 | /@rollup/rollup-darwin-x64@4.28.1: 906 | resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} 907 | cpu: [x64] 908 | os: [darwin] 909 | requiresBuild: true 910 | dev: true 911 | optional: true 912 | 913 | /@rollup/rollup-darwin-x64@4.9.6: 914 | resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} 915 | cpu: [x64] 916 | os: [darwin] 917 | requiresBuild: true 918 | dev: true 919 | optional: true 920 | 921 | /@rollup/rollup-freebsd-arm64@4.28.1: 922 | resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} 923 | cpu: [arm64] 924 | os: [freebsd] 925 | requiresBuild: true 926 | dev: true 927 | optional: true 928 | 929 | /@rollup/rollup-freebsd-x64@4.28.1: 930 | resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} 931 | cpu: [x64] 932 | os: [freebsd] 933 | requiresBuild: true 934 | dev: true 935 | optional: true 936 | 937 | /@rollup/rollup-linux-arm-gnueabihf@4.28.1: 938 | resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} 939 | cpu: [arm] 940 | os: [linux] 941 | requiresBuild: true 942 | dev: true 943 | optional: true 944 | 945 | /@rollup/rollup-linux-arm-gnueabihf@4.9.6: 946 | resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} 947 | cpu: [arm] 948 | os: [linux] 949 | requiresBuild: true 950 | dev: true 951 | optional: true 952 | 953 | /@rollup/rollup-linux-arm-musleabihf@4.28.1: 954 | resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} 955 | cpu: [arm] 956 | os: [linux] 957 | requiresBuild: true 958 | dev: true 959 | optional: true 960 | 961 | /@rollup/rollup-linux-arm64-gnu@4.28.1: 962 | resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} 963 | cpu: [arm64] 964 | os: [linux] 965 | requiresBuild: true 966 | dev: true 967 | optional: true 968 | 969 | /@rollup/rollup-linux-arm64-gnu@4.9.6: 970 | resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} 971 | cpu: [arm64] 972 | os: [linux] 973 | requiresBuild: true 974 | dev: true 975 | optional: true 976 | 977 | /@rollup/rollup-linux-arm64-musl@4.28.1: 978 | resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} 979 | cpu: [arm64] 980 | os: [linux] 981 | requiresBuild: true 982 | dev: true 983 | optional: true 984 | 985 | /@rollup/rollup-linux-arm64-musl@4.9.6: 986 | resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} 987 | cpu: [arm64] 988 | os: [linux] 989 | requiresBuild: true 990 | dev: true 991 | optional: true 992 | 993 | /@rollup/rollup-linux-loongarch64-gnu@4.28.1: 994 | resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==} 995 | cpu: [loong64] 996 | os: [linux] 997 | requiresBuild: true 998 | dev: true 999 | optional: true 1000 | 1001 | /@rollup/rollup-linux-powerpc64le-gnu@4.28.1: 1002 | resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} 1003 | cpu: [ppc64] 1004 | os: [linux] 1005 | requiresBuild: true 1006 | dev: true 1007 | optional: true 1008 | 1009 | /@rollup/rollup-linux-riscv64-gnu@4.28.1: 1010 | resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} 1011 | cpu: [riscv64] 1012 | os: [linux] 1013 | requiresBuild: true 1014 | dev: true 1015 | optional: true 1016 | 1017 | /@rollup/rollup-linux-riscv64-gnu@4.9.6: 1018 | resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} 1019 | cpu: [riscv64] 1020 | os: [linux] 1021 | requiresBuild: true 1022 | dev: true 1023 | optional: true 1024 | 1025 | /@rollup/rollup-linux-s390x-gnu@4.28.1: 1026 | resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} 1027 | cpu: [s390x] 1028 | os: [linux] 1029 | requiresBuild: true 1030 | dev: true 1031 | optional: true 1032 | 1033 | /@rollup/rollup-linux-x64-gnu@4.28.1: 1034 | resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} 1035 | cpu: [x64] 1036 | os: [linux] 1037 | requiresBuild: true 1038 | dev: true 1039 | optional: true 1040 | 1041 | /@rollup/rollup-linux-x64-gnu@4.9.6: 1042 | resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} 1043 | cpu: [x64] 1044 | os: [linux] 1045 | requiresBuild: true 1046 | dev: true 1047 | optional: true 1048 | 1049 | /@rollup/rollup-linux-x64-musl@4.28.1: 1050 | resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} 1051 | cpu: [x64] 1052 | os: [linux] 1053 | requiresBuild: true 1054 | dev: true 1055 | optional: true 1056 | 1057 | /@rollup/rollup-linux-x64-musl@4.9.6: 1058 | resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} 1059 | cpu: [x64] 1060 | os: [linux] 1061 | requiresBuild: true 1062 | dev: true 1063 | optional: true 1064 | 1065 | /@rollup/rollup-win32-arm64-msvc@4.28.1: 1066 | resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} 1067 | cpu: [arm64] 1068 | os: [win32] 1069 | requiresBuild: true 1070 | dev: true 1071 | optional: true 1072 | 1073 | /@rollup/rollup-win32-arm64-msvc@4.9.6: 1074 | resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} 1075 | cpu: [arm64] 1076 | os: [win32] 1077 | requiresBuild: true 1078 | dev: true 1079 | optional: true 1080 | 1081 | /@rollup/rollup-win32-ia32-msvc@4.28.1: 1082 | resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} 1083 | cpu: [ia32] 1084 | os: [win32] 1085 | requiresBuild: true 1086 | dev: true 1087 | optional: true 1088 | 1089 | /@rollup/rollup-win32-ia32-msvc@4.9.6: 1090 | resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} 1091 | cpu: [ia32] 1092 | os: [win32] 1093 | requiresBuild: true 1094 | dev: true 1095 | optional: true 1096 | 1097 | /@rollup/rollup-win32-x64-msvc@4.28.1: 1098 | resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} 1099 | cpu: [x64] 1100 | os: [win32] 1101 | requiresBuild: true 1102 | dev: true 1103 | optional: true 1104 | 1105 | /@rollup/rollup-win32-x64-msvc@4.9.6: 1106 | resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} 1107 | cpu: [x64] 1108 | os: [win32] 1109 | requiresBuild: true 1110 | dev: true 1111 | optional: true 1112 | 1113 | /@sinclair/typebox@0.27.8: 1114 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} 1115 | dev: true 1116 | 1117 | /@solidjs/router@0.11.3(solid-js@1.8.12): 1118 | resolution: {integrity: sha512-clSgyvzNnAw5iwnqHFNdzvvgt1eHbg81hu3A7H/qYz0+J5D0XIk7oqaOI7SRWCTnV8Rg9q4K83VV4foCOb+jcw==} 1119 | peerDependencies: 1120 | solid-js: ^1.8.6 1121 | dependencies: 1122 | solid-js: 1.8.12 1123 | dev: true 1124 | 1125 | /@solidjs/testing-library@0.8.5(@solidjs/router@0.11.3)(solid-js@1.8.12): 1126 | resolution: {integrity: sha512-L9TowCoqdRQGB8ikODh9uHXrYTjCUZseVUG0tIVa836//qeSqXP4m0BKG66v9Zp1y1wRxok5qUW97GwrtEBMcw==} 1127 | engines: {node: '>= 14'} 1128 | peerDependencies: 1129 | '@solidjs/router': '>=0.6.0' 1130 | solid-js: '>=1.0.0' 1131 | dependencies: 1132 | '@solidjs/router': 0.11.3(solid-js@1.8.12) 1133 | '@testing-library/dom': 9.3.4 1134 | solid-js: 1.8.12 1135 | dev: true 1136 | 1137 | /@testing-library/dom@9.3.4: 1138 | resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} 1139 | engines: {node: '>=14'} 1140 | dependencies: 1141 | '@babel/code-frame': 7.23.5 1142 | '@babel/runtime': 7.23.9 1143 | '@types/aria-query': 5.0.4 1144 | aria-query: 5.1.3 1145 | chalk: 4.1.2 1146 | dom-accessibility-api: 0.5.16 1147 | lz-string: 1.5.0 1148 | pretty-format: 27.5.1 1149 | dev: true 1150 | 1151 | /@testing-library/jest-dom@6.3.0(vitest@1.2.2): 1152 | resolution: {integrity: sha512-hJVIrkFizEQxoWsGBlycTcQhrpoCH4DhXfrnHFFXgkx3Xdm15zycsq5Ep+vpw4W8S0NJa8cxDHcuJib+1tEbhg==} 1153 | engines: {node: '>=14', npm: '>=6', yarn: '>=1'} 1154 | peerDependencies: 1155 | '@jest/globals': '>= 28' 1156 | '@types/bun': latest 1157 | '@types/jest': '>= 28' 1158 | jest: '>= 28' 1159 | vitest: '>= 0.32' 1160 | peerDependenciesMeta: 1161 | '@jest/globals': 1162 | optional: true 1163 | '@types/bun': 1164 | optional: true 1165 | '@types/jest': 1166 | optional: true 1167 | jest: 1168 | optional: true 1169 | vitest: 1170 | optional: true 1171 | dependencies: 1172 | '@adobe/css-tools': 4.3.3 1173 | '@babel/runtime': 7.23.9 1174 | aria-query: 5.3.0 1175 | chalk: 3.0.0 1176 | css.escape: 1.5.1 1177 | dom-accessibility-api: 0.6.3 1178 | lodash: 4.17.21 1179 | redent: 3.0.0 1180 | vitest: 1.2.2(@types/node@20.11.16)(jsdom@24.0.0) 1181 | dev: true 1182 | 1183 | /@types/aria-query@5.0.4: 1184 | resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} 1185 | dev: true 1186 | 1187 | /@types/babel__core@7.20.5: 1188 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 1189 | dependencies: 1190 | '@babel/parser': 7.23.9 1191 | '@babel/types': 7.23.9 1192 | '@types/babel__generator': 7.6.8 1193 | '@types/babel__template': 7.4.4 1194 | '@types/babel__traverse': 7.20.5 1195 | dev: true 1196 | 1197 | /@types/babel__generator@7.6.8: 1198 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 1199 | dependencies: 1200 | '@babel/types': 7.23.9 1201 | dev: true 1202 | 1203 | /@types/babel__template@7.4.4: 1204 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 1205 | dependencies: 1206 | '@babel/parser': 7.23.9 1207 | '@babel/types': 7.23.9 1208 | dev: true 1209 | 1210 | /@types/babel__traverse@7.20.5: 1211 | resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} 1212 | dependencies: 1213 | '@babel/types': 7.23.9 1214 | dev: true 1215 | 1216 | /@types/estree@1.0.5: 1217 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 1218 | dev: true 1219 | 1220 | /@types/estree@1.0.6: 1221 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 1222 | dev: true 1223 | 1224 | /@types/json-schema@7.0.15: 1225 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 1226 | dev: true 1227 | 1228 | /@types/node@20.11.16: 1229 | resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} 1230 | dependencies: 1231 | undici-types: 5.26.5 1232 | dev: true 1233 | 1234 | /@types/semver@7.5.6: 1235 | resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} 1236 | dev: true 1237 | 1238 | /@typescript-eslint/eslint-plugin@6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.3): 1239 | resolution: {integrity: sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg==} 1240 | engines: {node: ^16.0.0 || >=18.0.0} 1241 | peerDependencies: 1242 | '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha 1243 | eslint: ^7.0.0 || ^8.0.0 1244 | typescript: '*' 1245 | peerDependenciesMeta: 1246 | typescript: 1247 | optional: true 1248 | dependencies: 1249 | '@eslint-community/regexpp': 4.10.0 1250 | '@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.3) 1251 | '@typescript-eslint/scope-manager': 6.15.0 1252 | '@typescript-eslint/type-utils': 6.15.0(eslint@8.56.0)(typescript@5.3.3) 1253 | '@typescript-eslint/utils': 6.15.0(eslint@8.56.0)(typescript@5.3.3) 1254 | '@typescript-eslint/visitor-keys': 6.15.0 1255 | debug: 4.3.4 1256 | eslint: 8.56.0 1257 | graphemer: 1.4.0 1258 | ignore: 5.3.1 1259 | natural-compare: 1.4.0 1260 | semver: 7.5.4 1261 | ts-api-utils: 1.0.3(typescript@5.3.3) 1262 | typescript: 5.3.3 1263 | transitivePeerDependencies: 1264 | - supports-color 1265 | dev: true 1266 | 1267 | /@typescript-eslint/parser@6.15.0(eslint@8.56.0)(typescript@5.3.3): 1268 | resolution: {integrity: sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==} 1269 | engines: {node: ^16.0.0 || >=18.0.0} 1270 | peerDependencies: 1271 | eslint: ^7.0.0 || ^8.0.0 1272 | typescript: '*' 1273 | peerDependenciesMeta: 1274 | typescript: 1275 | optional: true 1276 | dependencies: 1277 | '@typescript-eslint/scope-manager': 6.15.0 1278 | '@typescript-eslint/types': 6.15.0 1279 | '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.3.3) 1280 | '@typescript-eslint/visitor-keys': 6.15.0 1281 | debug: 4.3.4 1282 | eslint: 8.56.0 1283 | typescript: 5.3.3 1284 | transitivePeerDependencies: 1285 | - supports-color 1286 | dev: true 1287 | 1288 | /@typescript-eslint/scope-manager@6.15.0: 1289 | resolution: {integrity: sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==} 1290 | engines: {node: ^16.0.0 || >=18.0.0} 1291 | dependencies: 1292 | '@typescript-eslint/types': 6.15.0 1293 | '@typescript-eslint/visitor-keys': 6.15.0 1294 | dev: true 1295 | 1296 | /@typescript-eslint/scope-manager@6.20.0: 1297 | resolution: {integrity: sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==} 1298 | engines: {node: ^16.0.0 || >=18.0.0} 1299 | dependencies: 1300 | '@typescript-eslint/types': 6.20.0 1301 | '@typescript-eslint/visitor-keys': 6.20.0 1302 | dev: true 1303 | 1304 | /@typescript-eslint/type-utils@6.15.0(eslint@8.56.0)(typescript@5.3.3): 1305 | resolution: {integrity: sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ==} 1306 | engines: {node: ^16.0.0 || >=18.0.0} 1307 | peerDependencies: 1308 | eslint: ^7.0.0 || ^8.0.0 1309 | typescript: '*' 1310 | peerDependenciesMeta: 1311 | typescript: 1312 | optional: true 1313 | dependencies: 1314 | '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.3.3) 1315 | '@typescript-eslint/utils': 6.15.0(eslint@8.56.0)(typescript@5.3.3) 1316 | debug: 4.3.4 1317 | eslint: 8.56.0 1318 | ts-api-utils: 1.0.3(typescript@5.3.3) 1319 | typescript: 5.3.3 1320 | transitivePeerDependencies: 1321 | - supports-color 1322 | dev: true 1323 | 1324 | /@typescript-eslint/types@6.15.0: 1325 | resolution: {integrity: sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==} 1326 | engines: {node: ^16.0.0 || >=18.0.0} 1327 | dev: true 1328 | 1329 | /@typescript-eslint/types@6.20.0: 1330 | resolution: {integrity: sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==} 1331 | engines: {node: ^16.0.0 || >=18.0.0} 1332 | dev: true 1333 | 1334 | /@typescript-eslint/typescript-estree@6.15.0(typescript@5.3.3): 1335 | resolution: {integrity: sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==} 1336 | engines: {node: ^16.0.0 || >=18.0.0} 1337 | peerDependencies: 1338 | typescript: '*' 1339 | peerDependenciesMeta: 1340 | typescript: 1341 | optional: true 1342 | dependencies: 1343 | '@typescript-eslint/types': 6.15.0 1344 | '@typescript-eslint/visitor-keys': 6.15.0 1345 | debug: 4.3.4 1346 | globby: 11.1.0 1347 | is-glob: 4.0.3 1348 | semver: 7.5.4 1349 | ts-api-utils: 1.0.3(typescript@5.3.3) 1350 | typescript: 5.3.3 1351 | transitivePeerDependencies: 1352 | - supports-color 1353 | dev: true 1354 | 1355 | /@typescript-eslint/typescript-estree@6.20.0(typescript@5.3.3): 1356 | resolution: {integrity: sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==} 1357 | engines: {node: ^16.0.0 || >=18.0.0} 1358 | peerDependencies: 1359 | typescript: '*' 1360 | peerDependenciesMeta: 1361 | typescript: 1362 | optional: true 1363 | dependencies: 1364 | '@typescript-eslint/types': 6.20.0 1365 | '@typescript-eslint/visitor-keys': 6.20.0 1366 | debug: 4.3.4 1367 | globby: 11.1.0 1368 | is-glob: 4.0.3 1369 | minimatch: 9.0.3 1370 | semver: 7.5.4 1371 | ts-api-utils: 1.0.3(typescript@5.3.3) 1372 | typescript: 5.3.3 1373 | transitivePeerDependencies: 1374 | - supports-color 1375 | dev: true 1376 | 1377 | /@typescript-eslint/utils@6.15.0(eslint@8.56.0)(typescript@5.3.3): 1378 | resolution: {integrity: sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw==} 1379 | engines: {node: ^16.0.0 || >=18.0.0} 1380 | peerDependencies: 1381 | eslint: ^7.0.0 || ^8.0.0 1382 | dependencies: 1383 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 1384 | '@types/json-schema': 7.0.15 1385 | '@types/semver': 7.5.6 1386 | '@typescript-eslint/scope-manager': 6.15.0 1387 | '@typescript-eslint/types': 6.15.0 1388 | '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.3.3) 1389 | eslint: 8.56.0 1390 | semver: 7.5.4 1391 | transitivePeerDependencies: 1392 | - supports-color 1393 | - typescript 1394 | dev: true 1395 | 1396 | /@typescript-eslint/utils@6.20.0(eslint@8.56.0)(typescript@5.3.3): 1397 | resolution: {integrity: sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==} 1398 | engines: {node: ^16.0.0 || >=18.0.0} 1399 | peerDependencies: 1400 | eslint: ^7.0.0 || ^8.0.0 1401 | dependencies: 1402 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 1403 | '@types/json-schema': 7.0.15 1404 | '@types/semver': 7.5.6 1405 | '@typescript-eslint/scope-manager': 6.20.0 1406 | '@typescript-eslint/types': 6.20.0 1407 | '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) 1408 | eslint: 8.56.0 1409 | semver: 7.5.4 1410 | transitivePeerDependencies: 1411 | - supports-color 1412 | - typescript 1413 | dev: true 1414 | 1415 | /@typescript-eslint/visitor-keys@6.15.0: 1416 | resolution: {integrity: sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==} 1417 | engines: {node: ^16.0.0 || >=18.0.0} 1418 | dependencies: 1419 | '@typescript-eslint/types': 6.15.0 1420 | eslint-visitor-keys: 3.4.3 1421 | dev: true 1422 | 1423 | /@typescript-eslint/visitor-keys@6.20.0: 1424 | resolution: {integrity: sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==} 1425 | engines: {node: ^16.0.0 || >=18.0.0} 1426 | dependencies: 1427 | '@typescript-eslint/types': 6.20.0 1428 | eslint-visitor-keys: 3.4.3 1429 | dev: true 1430 | 1431 | /@ungap/structured-clone@1.2.0: 1432 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 1433 | dev: true 1434 | 1435 | /@vitest/expect@1.2.2: 1436 | resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==} 1437 | dependencies: 1438 | '@vitest/spy': 1.2.2 1439 | '@vitest/utils': 1.2.2 1440 | chai: 4.4.1 1441 | dev: true 1442 | 1443 | /@vitest/runner@1.2.2: 1444 | resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==} 1445 | dependencies: 1446 | '@vitest/utils': 1.2.2 1447 | p-limit: 5.0.0 1448 | pathe: 1.1.2 1449 | dev: true 1450 | 1451 | /@vitest/snapshot@1.2.2: 1452 | resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==} 1453 | dependencies: 1454 | magic-string: 0.30.6 1455 | pathe: 1.1.2 1456 | pretty-format: 29.7.0 1457 | dev: true 1458 | 1459 | /@vitest/spy@1.2.2: 1460 | resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==} 1461 | dependencies: 1462 | tinyspy: 2.2.0 1463 | dev: true 1464 | 1465 | /@vitest/utils@1.2.2: 1466 | resolution: {integrity: sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==} 1467 | dependencies: 1468 | diff-sequences: 29.6.3 1469 | estree-walker: 3.0.3 1470 | loupe: 2.3.7 1471 | pretty-format: 29.7.0 1472 | dev: true 1473 | 1474 | /acorn-jsx@5.3.2(acorn@8.11.3): 1475 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 1476 | peerDependencies: 1477 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 1478 | dependencies: 1479 | acorn: 8.11.3 1480 | dev: true 1481 | 1482 | /acorn-walk@8.3.2: 1483 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 1484 | engines: {node: '>=0.4.0'} 1485 | dev: true 1486 | 1487 | /acorn@8.11.3: 1488 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 1489 | engines: {node: '>=0.4.0'} 1490 | hasBin: true 1491 | dev: true 1492 | 1493 | /agent-base@7.1.0: 1494 | resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} 1495 | engines: {node: '>= 14'} 1496 | dependencies: 1497 | debug: 4.3.4 1498 | transitivePeerDependencies: 1499 | - supports-color 1500 | dev: true 1501 | 1502 | /ajv@6.12.6: 1503 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1504 | dependencies: 1505 | fast-deep-equal: 3.1.3 1506 | fast-json-stable-stringify: 2.1.0 1507 | json-schema-traverse: 0.4.1 1508 | uri-js: 4.4.1 1509 | dev: true 1510 | 1511 | /ansi-regex@5.0.1: 1512 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 1513 | engines: {node: '>=8'} 1514 | dev: true 1515 | 1516 | /ansi-regex@6.1.0: 1517 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 1518 | engines: {node: '>=12'} 1519 | dev: true 1520 | 1521 | /ansi-styles@3.2.1: 1522 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 1523 | engines: {node: '>=4'} 1524 | dependencies: 1525 | color-convert: 1.9.3 1526 | dev: true 1527 | 1528 | /ansi-styles@4.3.0: 1529 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1530 | engines: {node: '>=8'} 1531 | dependencies: 1532 | color-convert: 2.0.1 1533 | dev: true 1534 | 1535 | /ansi-styles@5.2.0: 1536 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 1537 | engines: {node: '>=10'} 1538 | dev: true 1539 | 1540 | /ansi-styles@6.2.1: 1541 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 1542 | engines: {node: '>=12'} 1543 | dev: true 1544 | 1545 | /any-promise@1.3.0: 1546 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 1547 | dev: true 1548 | 1549 | /argparse@2.0.1: 1550 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 1551 | dev: true 1552 | 1553 | /aria-query@5.1.3: 1554 | resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} 1555 | dependencies: 1556 | deep-equal: 2.2.3 1557 | dev: true 1558 | 1559 | /aria-query@5.3.0: 1560 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 1561 | dependencies: 1562 | dequal: 2.0.3 1563 | dev: true 1564 | 1565 | /array-buffer-byte-length@1.0.0: 1566 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 1567 | dependencies: 1568 | call-bind: 1.0.5 1569 | is-array-buffer: 3.0.4 1570 | dev: true 1571 | 1572 | /array-union@2.1.0: 1573 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 1574 | engines: {node: '>=8'} 1575 | dev: true 1576 | 1577 | /assertion-error@1.1.0: 1578 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 1579 | dev: true 1580 | 1581 | /asynckit@0.4.0: 1582 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 1583 | dev: true 1584 | 1585 | /available-typed-arrays@1.0.6: 1586 | resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} 1587 | engines: {node: '>= 0.4'} 1588 | dev: true 1589 | 1590 | /babel-plugin-jsx-dom-expressions@0.37.16(@babel/core@7.23.9): 1591 | resolution: {integrity: sha512-ItMD16axbk+FqVb9vIbc7AOpNowy46VaSUHaMYPn+erPGpMCxsahQ1Iv+qhPMthjxtn5ROVMZ5AJtQvzjxjiNA==} 1592 | peerDependencies: 1593 | '@babel/core': ^7.20.12 1594 | dependencies: 1595 | '@babel/core': 7.23.9 1596 | '@babel/helper-module-imports': 7.18.6 1597 | '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) 1598 | '@babel/types': 7.23.9 1599 | html-entities: 2.3.3 1600 | validate-html-nesting: 1.2.2 1601 | dev: true 1602 | 1603 | /babel-preset-solid@1.8.12(@babel/core@7.23.9): 1604 | resolution: {integrity: sha512-Fx1dYokeRwouWqjLkdobA6qvTAPxFSEU2c5PlkfJjlNyONlSMJQPaX0Bae5pc+5/LNteb9BseOp4UHwQu6VC9Q==} 1605 | peerDependencies: 1606 | '@babel/core': ^7.0.0 1607 | dependencies: 1608 | '@babel/core': 7.23.9 1609 | babel-plugin-jsx-dom-expressions: 0.37.16(@babel/core@7.23.9) 1610 | dev: true 1611 | 1612 | /balanced-match@1.0.2: 1613 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1614 | dev: true 1615 | 1616 | /brace-expansion@1.1.11: 1617 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1618 | dependencies: 1619 | balanced-match: 1.0.2 1620 | concat-map: 0.0.1 1621 | dev: true 1622 | 1623 | /brace-expansion@2.0.1: 1624 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1625 | dependencies: 1626 | balanced-match: 1.0.2 1627 | dev: true 1628 | 1629 | /braces@3.0.2: 1630 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1631 | engines: {node: '>=8'} 1632 | dependencies: 1633 | fill-range: 7.0.1 1634 | dev: true 1635 | 1636 | /browserslist@4.22.3: 1637 | resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} 1638 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1639 | hasBin: true 1640 | dependencies: 1641 | caniuse-lite: 1.0.30001583 1642 | electron-to-chromium: 1.4.656 1643 | node-releases: 2.0.14 1644 | update-browserslist-db: 1.0.13(browserslist@4.22.3) 1645 | dev: true 1646 | 1647 | /bundle-require@5.0.0(esbuild@0.24.0): 1648 | resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} 1649 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1650 | peerDependencies: 1651 | esbuild: '>=0.18' 1652 | dependencies: 1653 | esbuild: 0.24.0 1654 | load-tsconfig: 0.2.5 1655 | dev: true 1656 | 1657 | /cac@6.7.14: 1658 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 1659 | engines: {node: '>=8'} 1660 | dev: true 1661 | 1662 | /call-bind@1.0.5: 1663 | resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} 1664 | dependencies: 1665 | function-bind: 1.1.2 1666 | get-intrinsic: 1.2.2 1667 | set-function-length: 1.2.0 1668 | dev: true 1669 | 1670 | /callsites@3.1.0: 1671 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1672 | engines: {node: '>=6'} 1673 | dev: true 1674 | 1675 | /caniuse-lite@1.0.30001583: 1676 | resolution: {integrity: sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q==} 1677 | dev: true 1678 | 1679 | /chai@4.4.1: 1680 | resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} 1681 | engines: {node: '>=4'} 1682 | dependencies: 1683 | assertion-error: 1.1.0 1684 | check-error: 1.0.3 1685 | deep-eql: 4.1.3 1686 | get-func-name: 2.0.2 1687 | loupe: 2.3.7 1688 | pathval: 1.1.1 1689 | type-detect: 4.0.8 1690 | dev: true 1691 | 1692 | /chalk@2.4.2: 1693 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1694 | engines: {node: '>=4'} 1695 | dependencies: 1696 | ansi-styles: 3.2.1 1697 | escape-string-regexp: 1.0.5 1698 | supports-color: 5.5.0 1699 | dev: true 1700 | 1701 | /chalk@3.0.0: 1702 | resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} 1703 | engines: {node: '>=8'} 1704 | dependencies: 1705 | ansi-styles: 4.3.0 1706 | supports-color: 7.2.0 1707 | dev: true 1708 | 1709 | /chalk@4.1.2: 1710 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1711 | engines: {node: '>=10'} 1712 | dependencies: 1713 | ansi-styles: 4.3.0 1714 | supports-color: 7.2.0 1715 | dev: true 1716 | 1717 | /check-error@1.0.3: 1718 | resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} 1719 | dependencies: 1720 | get-func-name: 2.0.2 1721 | dev: true 1722 | 1723 | /chokidar@4.0.1: 1724 | resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} 1725 | engines: {node: '>= 14.16.0'} 1726 | dependencies: 1727 | readdirp: 4.0.2 1728 | dev: true 1729 | 1730 | /color-convert@1.9.3: 1731 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1732 | dependencies: 1733 | color-name: 1.1.3 1734 | dev: true 1735 | 1736 | /color-convert@2.0.1: 1737 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1738 | engines: {node: '>=7.0.0'} 1739 | dependencies: 1740 | color-name: 1.1.4 1741 | dev: true 1742 | 1743 | /color-name@1.1.3: 1744 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1745 | dev: true 1746 | 1747 | /color-name@1.1.4: 1748 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1749 | dev: true 1750 | 1751 | /combined-stream@1.0.8: 1752 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 1753 | engines: {node: '>= 0.8'} 1754 | dependencies: 1755 | delayed-stream: 1.0.0 1756 | dev: true 1757 | 1758 | /commander@4.1.1: 1759 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1760 | engines: {node: '>= 6'} 1761 | dev: true 1762 | 1763 | /concat-map@0.0.1: 1764 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1765 | dev: true 1766 | 1767 | /consola@3.2.3: 1768 | resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} 1769 | engines: {node: ^14.18.0 || >=16.10.0} 1770 | dev: true 1771 | 1772 | /convert-source-map@2.0.0: 1773 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1774 | dev: true 1775 | 1776 | /cross-spawn@7.0.3: 1777 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1778 | engines: {node: '>= 8'} 1779 | dependencies: 1780 | path-key: 3.1.1 1781 | shebang-command: 2.0.0 1782 | which: 2.0.2 1783 | dev: true 1784 | 1785 | /css.escape@1.5.1: 1786 | resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} 1787 | dev: true 1788 | 1789 | /cssstyle@4.0.1: 1790 | resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} 1791 | engines: {node: '>=18'} 1792 | dependencies: 1793 | rrweb-cssom: 0.6.0 1794 | dev: true 1795 | 1796 | /csstype@3.1.3: 1797 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 1798 | 1799 | /data-urls@5.0.0: 1800 | resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} 1801 | engines: {node: '>=18'} 1802 | dependencies: 1803 | whatwg-mimetype: 4.0.0 1804 | whatwg-url: 14.0.0 1805 | dev: true 1806 | 1807 | /debug@4.3.4: 1808 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1809 | engines: {node: '>=6.0'} 1810 | peerDependencies: 1811 | supports-color: '*' 1812 | peerDependenciesMeta: 1813 | supports-color: 1814 | optional: true 1815 | dependencies: 1816 | ms: 2.1.2 1817 | dev: true 1818 | 1819 | /debug@4.4.0: 1820 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 1821 | engines: {node: '>=6.0'} 1822 | peerDependencies: 1823 | supports-color: '*' 1824 | peerDependenciesMeta: 1825 | supports-color: 1826 | optional: true 1827 | dependencies: 1828 | ms: 2.1.3 1829 | dev: true 1830 | 1831 | /decimal.js@10.4.3: 1832 | resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} 1833 | dev: true 1834 | 1835 | /deep-eql@4.1.3: 1836 | resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} 1837 | engines: {node: '>=6'} 1838 | dependencies: 1839 | type-detect: 4.0.8 1840 | dev: true 1841 | 1842 | /deep-equal@2.2.3: 1843 | resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} 1844 | engines: {node: '>= 0.4'} 1845 | dependencies: 1846 | array-buffer-byte-length: 1.0.0 1847 | call-bind: 1.0.5 1848 | es-get-iterator: 1.1.3 1849 | get-intrinsic: 1.2.2 1850 | is-arguments: 1.1.1 1851 | is-array-buffer: 3.0.4 1852 | is-date-object: 1.0.5 1853 | is-regex: 1.1.4 1854 | is-shared-array-buffer: 1.0.2 1855 | isarray: 2.0.5 1856 | object-is: 1.1.5 1857 | object-keys: 1.1.1 1858 | object.assign: 4.1.5 1859 | regexp.prototype.flags: 1.5.1 1860 | side-channel: 1.0.4 1861 | which-boxed-primitive: 1.0.2 1862 | which-collection: 1.0.1 1863 | which-typed-array: 1.1.14 1864 | dev: true 1865 | 1866 | /deep-is@0.1.4: 1867 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1868 | dev: true 1869 | 1870 | /define-data-property@1.1.1: 1871 | resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} 1872 | engines: {node: '>= 0.4'} 1873 | dependencies: 1874 | get-intrinsic: 1.2.2 1875 | gopd: 1.0.1 1876 | has-property-descriptors: 1.0.1 1877 | dev: true 1878 | 1879 | /define-properties@1.2.1: 1880 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 1881 | engines: {node: '>= 0.4'} 1882 | dependencies: 1883 | define-data-property: 1.1.1 1884 | has-property-descriptors: 1.0.1 1885 | object-keys: 1.1.1 1886 | dev: true 1887 | 1888 | /delayed-stream@1.0.0: 1889 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 1890 | engines: {node: '>=0.4.0'} 1891 | dev: true 1892 | 1893 | /dequal@2.0.3: 1894 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1895 | engines: {node: '>=6'} 1896 | dev: true 1897 | 1898 | /diff-sequences@29.6.3: 1899 | resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} 1900 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1901 | dev: true 1902 | 1903 | /dir-glob@3.0.1: 1904 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1905 | engines: {node: '>=8'} 1906 | dependencies: 1907 | path-type: 4.0.0 1908 | dev: true 1909 | 1910 | /doctrine@3.0.0: 1911 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1912 | engines: {node: '>=6.0.0'} 1913 | dependencies: 1914 | esutils: 2.0.3 1915 | dev: true 1916 | 1917 | /dom-accessibility-api@0.5.16: 1918 | resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} 1919 | dev: true 1920 | 1921 | /dom-accessibility-api@0.6.3: 1922 | resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} 1923 | dev: true 1924 | 1925 | /eastasianwidth@0.2.0: 1926 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1927 | dev: true 1928 | 1929 | /electron-to-chromium@1.4.656: 1930 | resolution: {integrity: sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q==} 1931 | dev: true 1932 | 1933 | /emoji-regex@8.0.0: 1934 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1935 | dev: true 1936 | 1937 | /emoji-regex@9.2.2: 1938 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1939 | dev: true 1940 | 1941 | /entities@4.5.0: 1942 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1943 | engines: {node: '>=0.12'} 1944 | dev: true 1945 | 1946 | /es-get-iterator@1.1.3: 1947 | resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} 1948 | dependencies: 1949 | call-bind: 1.0.5 1950 | get-intrinsic: 1.2.2 1951 | has-symbols: 1.0.3 1952 | is-arguments: 1.1.1 1953 | is-map: 2.0.2 1954 | is-set: 2.0.2 1955 | is-string: 1.0.7 1956 | isarray: 2.0.5 1957 | stop-iteration-iterator: 1.0.0 1958 | dev: true 1959 | 1960 | /esbuild@0.19.12: 1961 | resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} 1962 | engines: {node: '>=12'} 1963 | hasBin: true 1964 | requiresBuild: true 1965 | optionalDependencies: 1966 | '@esbuild/aix-ppc64': 0.19.12 1967 | '@esbuild/android-arm': 0.19.12 1968 | '@esbuild/android-arm64': 0.19.12 1969 | '@esbuild/android-x64': 0.19.12 1970 | '@esbuild/darwin-arm64': 0.19.12 1971 | '@esbuild/darwin-x64': 0.19.12 1972 | '@esbuild/freebsd-arm64': 0.19.12 1973 | '@esbuild/freebsd-x64': 0.19.12 1974 | '@esbuild/linux-arm': 0.19.12 1975 | '@esbuild/linux-arm64': 0.19.12 1976 | '@esbuild/linux-ia32': 0.19.12 1977 | '@esbuild/linux-loong64': 0.19.12 1978 | '@esbuild/linux-mips64el': 0.19.12 1979 | '@esbuild/linux-ppc64': 0.19.12 1980 | '@esbuild/linux-riscv64': 0.19.12 1981 | '@esbuild/linux-s390x': 0.19.12 1982 | '@esbuild/linux-x64': 0.19.12 1983 | '@esbuild/netbsd-x64': 0.19.12 1984 | '@esbuild/openbsd-x64': 0.19.12 1985 | '@esbuild/sunos-x64': 0.19.12 1986 | '@esbuild/win32-arm64': 0.19.12 1987 | '@esbuild/win32-ia32': 0.19.12 1988 | '@esbuild/win32-x64': 0.19.12 1989 | dev: true 1990 | 1991 | /esbuild@0.24.0: 1992 | resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} 1993 | engines: {node: '>=18'} 1994 | hasBin: true 1995 | requiresBuild: true 1996 | optionalDependencies: 1997 | '@esbuild/aix-ppc64': 0.24.0 1998 | '@esbuild/android-arm': 0.24.0 1999 | '@esbuild/android-arm64': 0.24.0 2000 | '@esbuild/android-x64': 0.24.0 2001 | '@esbuild/darwin-arm64': 0.24.0 2002 | '@esbuild/darwin-x64': 0.24.0 2003 | '@esbuild/freebsd-arm64': 0.24.0 2004 | '@esbuild/freebsd-x64': 0.24.0 2005 | '@esbuild/linux-arm': 0.24.0 2006 | '@esbuild/linux-arm64': 0.24.0 2007 | '@esbuild/linux-ia32': 0.24.0 2008 | '@esbuild/linux-loong64': 0.24.0 2009 | '@esbuild/linux-mips64el': 0.24.0 2010 | '@esbuild/linux-ppc64': 0.24.0 2011 | '@esbuild/linux-riscv64': 0.24.0 2012 | '@esbuild/linux-s390x': 0.24.0 2013 | '@esbuild/linux-x64': 0.24.0 2014 | '@esbuild/netbsd-x64': 0.24.0 2015 | '@esbuild/openbsd-arm64': 0.24.0 2016 | '@esbuild/openbsd-x64': 0.24.0 2017 | '@esbuild/sunos-x64': 0.24.0 2018 | '@esbuild/win32-arm64': 0.24.0 2019 | '@esbuild/win32-ia32': 0.24.0 2020 | '@esbuild/win32-x64': 0.24.0 2021 | dev: true 2022 | 2023 | /escalade@3.1.1: 2024 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 2025 | engines: {node: '>=6'} 2026 | dev: true 2027 | 2028 | /escape-string-regexp@1.0.5: 2029 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 2030 | engines: {node: '>=0.8.0'} 2031 | dev: true 2032 | 2033 | /escape-string-regexp@4.0.0: 2034 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 2035 | engines: {node: '>=10'} 2036 | dev: true 2037 | 2038 | /eslint-config-prettier@9.1.0(eslint@8.56.0): 2039 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 2040 | hasBin: true 2041 | peerDependencies: 2042 | eslint: '>=7.0.0' 2043 | dependencies: 2044 | eslint: 8.56.0 2045 | dev: true 2046 | 2047 | /eslint-config-tronikelis-solid@10.0.0(eslint@8.56.0)(prettier@3.2.4)(typescript@5.3.3): 2048 | resolution: {integrity: sha512-iWYSYUYvLhdM6XNdlHH2744b7bM5gDD5ykkBxjb5PsDBIYjvyozs4zlazLCqR9LfmoeaB1dXmlPX8a2IWcX0+w==} 2049 | peerDependencies: 2050 | eslint: '*' 2051 | prettier: '*' 2052 | dependencies: 2053 | eslint: 8.56.0 2054 | eslint-config-tronikelis: 9.0.0(eslint@8.56.0)(prettier@3.2.4)(typescript@5.3.3) 2055 | eslint-plugin-solid: 0.13.1(eslint@8.56.0)(typescript@5.3.3) 2056 | prettier: 3.2.4 2057 | transitivePeerDependencies: 2058 | - '@types/eslint' 2059 | - supports-color 2060 | - typescript 2061 | dev: true 2062 | 2063 | /eslint-config-tronikelis@9.0.0(eslint@8.56.0)(prettier@3.2.4)(typescript@5.3.3): 2064 | resolution: {integrity: sha512-1ABw/uHqz8V64SwXRRNCrEHs5ykA/diecoQlAMks0v5qEpRS4etxmEmJK2xKAkhXv4swkdq8spHfiiyLjxa2vg==} 2065 | peerDependencies: 2066 | eslint: '*' 2067 | prettier: '*' 2068 | dependencies: 2069 | '@typescript-eslint/eslint-plugin': 6.15.0(@typescript-eslint/parser@6.15.0)(eslint@8.56.0)(typescript@5.3.3) 2070 | '@typescript-eslint/parser': 6.15.0(eslint@8.56.0)(typescript@5.3.3) 2071 | eslint: 8.56.0 2072 | eslint-config-prettier: 9.1.0(eslint@8.56.0) 2073 | eslint-plugin-prettier: 5.1.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.4) 2074 | eslint-plugin-simple-import-sort: 10.0.0(eslint@8.56.0) 2075 | prettier: 3.2.4 2076 | transitivePeerDependencies: 2077 | - '@types/eslint' 2078 | - supports-color 2079 | - typescript 2080 | dev: true 2081 | 2082 | /eslint-plugin-prettier@5.1.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.4): 2083 | resolution: {integrity: sha512-WQpV3mSmIobb77s4qiCZu3dBrZZ0rj8ckSfBtRrgNK9Wnh2s3eiaxNTWloz1LJ1WtvqZES/PAI7PLvsrGt/CEA==} 2084 | engines: {node: ^14.18.0 || >=16.0.0} 2085 | peerDependencies: 2086 | '@types/eslint': '>=8.0.0' 2087 | eslint: '>=8.0.0' 2088 | eslint-config-prettier: '*' 2089 | prettier: '>=3.0.0' 2090 | peerDependenciesMeta: 2091 | '@types/eslint': 2092 | optional: true 2093 | eslint-config-prettier: 2094 | optional: true 2095 | dependencies: 2096 | eslint: 8.56.0 2097 | eslint-config-prettier: 9.1.0(eslint@8.56.0) 2098 | prettier: 3.2.4 2099 | prettier-linter-helpers: 1.0.0 2100 | synckit: 0.8.8 2101 | dev: true 2102 | 2103 | /eslint-plugin-simple-import-sort@10.0.0(eslint@8.56.0): 2104 | resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} 2105 | peerDependencies: 2106 | eslint: '>=5.0.0' 2107 | dependencies: 2108 | eslint: 8.56.0 2109 | dev: true 2110 | 2111 | /eslint-plugin-solid@0.13.1(eslint@8.56.0)(typescript@5.3.3): 2112 | resolution: {integrity: sha512-PdNrAylFzeh/SbnLc2pQ432l+bXFGzXj/qNqkh5QNVZCoWIdSs0CJA2D7hqW0DloztwUrzkVZCDWFWc3iRAm/Q==} 2113 | engines: {node: '>=12.0.0'} 2114 | peerDependencies: 2115 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 2116 | dependencies: 2117 | '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) 2118 | eslint: 8.56.0 2119 | is-html: 2.0.0 2120 | kebab-case: 1.0.2 2121 | known-css-properties: 0.24.0 2122 | style-to-object: 0.3.0 2123 | transitivePeerDependencies: 2124 | - supports-color 2125 | - typescript 2126 | dev: true 2127 | 2128 | /eslint-scope@7.2.2: 2129 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 2130 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2131 | dependencies: 2132 | esrecurse: 4.3.0 2133 | estraverse: 5.3.0 2134 | dev: true 2135 | 2136 | /eslint-visitor-keys@3.4.3: 2137 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 2138 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2139 | dev: true 2140 | 2141 | /eslint@8.56.0: 2142 | resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} 2143 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2144 | hasBin: true 2145 | dependencies: 2146 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 2147 | '@eslint-community/regexpp': 4.10.0 2148 | '@eslint/eslintrc': 2.1.4 2149 | '@eslint/js': 8.56.0 2150 | '@humanwhocodes/config-array': 0.11.14 2151 | '@humanwhocodes/module-importer': 1.0.1 2152 | '@nodelib/fs.walk': 1.2.8 2153 | '@ungap/structured-clone': 1.2.0 2154 | ajv: 6.12.6 2155 | chalk: 4.1.2 2156 | cross-spawn: 7.0.3 2157 | debug: 4.3.4 2158 | doctrine: 3.0.0 2159 | escape-string-regexp: 4.0.0 2160 | eslint-scope: 7.2.2 2161 | eslint-visitor-keys: 3.4.3 2162 | espree: 9.6.1 2163 | esquery: 1.5.0 2164 | esutils: 2.0.3 2165 | fast-deep-equal: 3.1.3 2166 | file-entry-cache: 6.0.1 2167 | find-up: 5.0.0 2168 | glob-parent: 6.0.2 2169 | globals: 13.24.0 2170 | graphemer: 1.4.0 2171 | ignore: 5.3.1 2172 | imurmurhash: 0.1.4 2173 | is-glob: 4.0.3 2174 | is-path-inside: 3.0.3 2175 | js-yaml: 4.1.0 2176 | json-stable-stringify-without-jsonify: 1.0.1 2177 | levn: 0.4.1 2178 | lodash.merge: 4.6.2 2179 | minimatch: 3.1.2 2180 | natural-compare: 1.4.0 2181 | optionator: 0.9.3 2182 | strip-ansi: 6.0.1 2183 | text-table: 0.2.0 2184 | transitivePeerDependencies: 2185 | - supports-color 2186 | dev: true 2187 | 2188 | /espree@9.6.1: 2189 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 2190 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2191 | dependencies: 2192 | acorn: 8.11.3 2193 | acorn-jsx: 5.3.2(acorn@8.11.3) 2194 | eslint-visitor-keys: 3.4.3 2195 | dev: true 2196 | 2197 | /esquery@1.5.0: 2198 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 2199 | engines: {node: '>=0.10'} 2200 | dependencies: 2201 | estraverse: 5.3.0 2202 | dev: true 2203 | 2204 | /esrecurse@4.3.0: 2205 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 2206 | engines: {node: '>=4.0'} 2207 | dependencies: 2208 | estraverse: 5.3.0 2209 | dev: true 2210 | 2211 | /estraverse@5.3.0: 2212 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 2213 | engines: {node: '>=4.0'} 2214 | dev: true 2215 | 2216 | /estree-walker@3.0.3: 2217 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 2218 | dependencies: 2219 | '@types/estree': 1.0.5 2220 | dev: true 2221 | 2222 | /esutils@2.0.3: 2223 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 2224 | engines: {node: '>=0.10.0'} 2225 | dev: true 2226 | 2227 | /execa@8.0.1: 2228 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 2229 | engines: {node: '>=16.17'} 2230 | dependencies: 2231 | cross-spawn: 7.0.3 2232 | get-stream: 8.0.1 2233 | human-signals: 5.0.0 2234 | is-stream: 3.0.0 2235 | merge-stream: 2.0.0 2236 | npm-run-path: 5.2.0 2237 | onetime: 6.0.0 2238 | signal-exit: 4.1.0 2239 | strip-final-newline: 3.0.0 2240 | dev: true 2241 | 2242 | /fast-deep-equal@3.1.3: 2243 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 2244 | dev: true 2245 | 2246 | /fast-diff@1.3.0: 2247 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 2248 | dev: true 2249 | 2250 | /fast-glob@3.3.2: 2251 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 2252 | engines: {node: '>=8.6.0'} 2253 | dependencies: 2254 | '@nodelib/fs.stat': 2.0.5 2255 | '@nodelib/fs.walk': 1.2.8 2256 | glob-parent: 5.1.2 2257 | merge2: 1.4.1 2258 | micromatch: 4.0.5 2259 | dev: true 2260 | 2261 | /fast-json-stable-stringify@2.1.0: 2262 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 2263 | dev: true 2264 | 2265 | /fast-levenshtein@2.0.6: 2266 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 2267 | dev: true 2268 | 2269 | /fastq@1.17.0: 2270 | resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==} 2271 | dependencies: 2272 | reusify: 1.0.4 2273 | dev: true 2274 | 2275 | /fdir@6.4.2(picomatch@4.0.2): 2276 | resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} 2277 | peerDependencies: 2278 | picomatch: ^3 || ^4 2279 | peerDependenciesMeta: 2280 | picomatch: 2281 | optional: true 2282 | dependencies: 2283 | picomatch: 4.0.2 2284 | dev: true 2285 | 2286 | /file-entry-cache@6.0.1: 2287 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 2288 | engines: {node: ^10.12.0 || >=12.0.0} 2289 | dependencies: 2290 | flat-cache: 3.2.0 2291 | dev: true 2292 | 2293 | /fill-range@7.0.1: 2294 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 2295 | engines: {node: '>=8'} 2296 | dependencies: 2297 | to-regex-range: 5.0.1 2298 | dev: true 2299 | 2300 | /find-up@5.0.0: 2301 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 2302 | engines: {node: '>=10'} 2303 | dependencies: 2304 | locate-path: 6.0.0 2305 | path-exists: 4.0.0 2306 | dev: true 2307 | 2308 | /flat-cache@3.2.0: 2309 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 2310 | engines: {node: ^10.12.0 || >=12.0.0} 2311 | dependencies: 2312 | flatted: 3.2.9 2313 | keyv: 4.5.4 2314 | rimraf: 3.0.2 2315 | dev: true 2316 | 2317 | /flatted@3.2.9: 2318 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 2319 | dev: true 2320 | 2321 | /for-each@0.3.3: 2322 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 2323 | dependencies: 2324 | is-callable: 1.2.7 2325 | dev: true 2326 | 2327 | /foreground-child@3.3.0: 2328 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 2329 | engines: {node: '>=14'} 2330 | dependencies: 2331 | cross-spawn: 7.0.3 2332 | signal-exit: 4.1.0 2333 | dev: true 2334 | 2335 | /form-data@4.0.0: 2336 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 2337 | engines: {node: '>= 6'} 2338 | dependencies: 2339 | asynckit: 0.4.0 2340 | combined-stream: 1.0.8 2341 | mime-types: 2.1.35 2342 | dev: true 2343 | 2344 | /fs.realpath@1.0.0: 2345 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 2346 | dev: true 2347 | 2348 | /fsevents@2.3.3: 2349 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 2350 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 2351 | os: [darwin] 2352 | requiresBuild: true 2353 | dev: true 2354 | optional: true 2355 | 2356 | /function-bind@1.1.2: 2357 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 2358 | dev: true 2359 | 2360 | /functions-have-names@1.2.3: 2361 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 2362 | dev: true 2363 | 2364 | /gensync@1.0.0-beta.2: 2365 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 2366 | engines: {node: '>=6.9.0'} 2367 | dev: true 2368 | 2369 | /get-func-name@2.0.2: 2370 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} 2371 | dev: true 2372 | 2373 | /get-intrinsic@1.2.2: 2374 | resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} 2375 | dependencies: 2376 | function-bind: 1.1.2 2377 | has-proto: 1.0.1 2378 | has-symbols: 1.0.3 2379 | hasown: 2.0.0 2380 | dev: true 2381 | 2382 | /get-stream@8.0.1: 2383 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 2384 | engines: {node: '>=16'} 2385 | dev: true 2386 | 2387 | /glob-parent@5.1.2: 2388 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 2389 | engines: {node: '>= 6'} 2390 | dependencies: 2391 | is-glob: 4.0.3 2392 | dev: true 2393 | 2394 | /glob-parent@6.0.2: 2395 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 2396 | engines: {node: '>=10.13.0'} 2397 | dependencies: 2398 | is-glob: 4.0.3 2399 | dev: true 2400 | 2401 | /glob@10.4.5: 2402 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 2403 | hasBin: true 2404 | dependencies: 2405 | foreground-child: 3.3.0 2406 | jackspeak: 3.4.3 2407 | minimatch: 9.0.5 2408 | minipass: 7.1.2 2409 | package-json-from-dist: 1.0.1 2410 | path-scurry: 1.11.1 2411 | dev: true 2412 | 2413 | /glob@7.2.3: 2414 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 2415 | dependencies: 2416 | fs.realpath: 1.0.0 2417 | inflight: 1.0.6 2418 | inherits: 2.0.4 2419 | minimatch: 3.1.2 2420 | once: 1.4.0 2421 | path-is-absolute: 1.0.1 2422 | dev: true 2423 | 2424 | /globals@11.12.0: 2425 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 2426 | engines: {node: '>=4'} 2427 | dev: true 2428 | 2429 | /globals@13.24.0: 2430 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 2431 | engines: {node: '>=8'} 2432 | dependencies: 2433 | type-fest: 0.20.2 2434 | dev: true 2435 | 2436 | /globby@11.1.0: 2437 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 2438 | engines: {node: '>=10'} 2439 | dependencies: 2440 | array-union: 2.1.0 2441 | dir-glob: 3.0.1 2442 | fast-glob: 3.3.2 2443 | ignore: 5.3.1 2444 | merge2: 1.4.1 2445 | slash: 3.0.0 2446 | dev: true 2447 | 2448 | /globrex@0.1.2: 2449 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 2450 | dev: true 2451 | 2452 | /gopd@1.0.1: 2453 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 2454 | dependencies: 2455 | get-intrinsic: 1.2.2 2456 | dev: true 2457 | 2458 | /graphemer@1.4.0: 2459 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 2460 | dev: true 2461 | 2462 | /has-bigints@1.0.2: 2463 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 2464 | dev: true 2465 | 2466 | /has-flag@3.0.0: 2467 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 2468 | engines: {node: '>=4'} 2469 | dev: true 2470 | 2471 | /has-flag@4.0.0: 2472 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 2473 | engines: {node: '>=8'} 2474 | dev: true 2475 | 2476 | /has-property-descriptors@1.0.1: 2477 | resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} 2478 | dependencies: 2479 | get-intrinsic: 1.2.2 2480 | dev: true 2481 | 2482 | /has-proto@1.0.1: 2483 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 2484 | engines: {node: '>= 0.4'} 2485 | dev: true 2486 | 2487 | /has-symbols@1.0.3: 2488 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 2489 | engines: {node: '>= 0.4'} 2490 | dev: true 2491 | 2492 | /has-tostringtag@1.0.2: 2493 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 2494 | engines: {node: '>= 0.4'} 2495 | dependencies: 2496 | has-symbols: 1.0.3 2497 | dev: true 2498 | 2499 | /hasown@2.0.0: 2500 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} 2501 | engines: {node: '>= 0.4'} 2502 | dependencies: 2503 | function-bind: 1.1.2 2504 | dev: true 2505 | 2506 | /html-encoding-sniffer@4.0.0: 2507 | resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} 2508 | engines: {node: '>=18'} 2509 | dependencies: 2510 | whatwg-encoding: 3.1.1 2511 | dev: true 2512 | 2513 | /html-entities@2.3.3: 2514 | resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} 2515 | dev: true 2516 | 2517 | /html-tags@3.3.1: 2518 | resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} 2519 | engines: {node: '>=8'} 2520 | dev: true 2521 | 2522 | /http-proxy-agent@7.0.0: 2523 | resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} 2524 | engines: {node: '>= 14'} 2525 | dependencies: 2526 | agent-base: 7.1.0 2527 | debug: 4.3.4 2528 | transitivePeerDependencies: 2529 | - supports-color 2530 | dev: true 2531 | 2532 | /https-proxy-agent@7.0.2: 2533 | resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} 2534 | engines: {node: '>= 14'} 2535 | dependencies: 2536 | agent-base: 7.1.0 2537 | debug: 4.3.4 2538 | transitivePeerDependencies: 2539 | - supports-color 2540 | dev: true 2541 | 2542 | /human-signals@5.0.0: 2543 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 2544 | engines: {node: '>=16.17.0'} 2545 | dev: true 2546 | 2547 | /iconv-lite@0.6.3: 2548 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 2549 | engines: {node: '>=0.10.0'} 2550 | dependencies: 2551 | safer-buffer: 2.1.2 2552 | dev: true 2553 | 2554 | /ignore@5.3.1: 2555 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 2556 | engines: {node: '>= 4'} 2557 | dev: true 2558 | 2559 | /import-fresh@3.3.0: 2560 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 2561 | engines: {node: '>=6'} 2562 | dependencies: 2563 | parent-module: 1.0.1 2564 | resolve-from: 4.0.0 2565 | dev: true 2566 | 2567 | /imurmurhash@0.1.4: 2568 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 2569 | engines: {node: '>=0.8.19'} 2570 | dev: true 2571 | 2572 | /indent-string@4.0.0: 2573 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 2574 | engines: {node: '>=8'} 2575 | dev: true 2576 | 2577 | /inflight@1.0.6: 2578 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 2579 | dependencies: 2580 | once: 1.4.0 2581 | wrappy: 1.0.2 2582 | dev: true 2583 | 2584 | /inherits@2.0.4: 2585 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2586 | dev: true 2587 | 2588 | /inline-style-parser@0.1.1: 2589 | resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} 2590 | dev: true 2591 | 2592 | /internal-slot@1.0.6: 2593 | resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} 2594 | engines: {node: '>= 0.4'} 2595 | dependencies: 2596 | get-intrinsic: 1.2.2 2597 | hasown: 2.0.0 2598 | side-channel: 1.0.4 2599 | dev: true 2600 | 2601 | /is-arguments@1.1.1: 2602 | resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} 2603 | engines: {node: '>= 0.4'} 2604 | dependencies: 2605 | call-bind: 1.0.5 2606 | has-tostringtag: 1.0.2 2607 | dev: true 2608 | 2609 | /is-array-buffer@3.0.4: 2610 | resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} 2611 | engines: {node: '>= 0.4'} 2612 | dependencies: 2613 | call-bind: 1.0.5 2614 | get-intrinsic: 1.2.2 2615 | dev: true 2616 | 2617 | /is-bigint@1.0.4: 2618 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 2619 | dependencies: 2620 | has-bigints: 1.0.2 2621 | dev: true 2622 | 2623 | /is-boolean-object@1.1.2: 2624 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 2625 | engines: {node: '>= 0.4'} 2626 | dependencies: 2627 | call-bind: 1.0.5 2628 | has-tostringtag: 1.0.2 2629 | dev: true 2630 | 2631 | /is-callable@1.2.7: 2632 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 2633 | engines: {node: '>= 0.4'} 2634 | dev: true 2635 | 2636 | /is-date-object@1.0.5: 2637 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 2638 | engines: {node: '>= 0.4'} 2639 | dependencies: 2640 | has-tostringtag: 1.0.2 2641 | dev: true 2642 | 2643 | /is-extglob@2.1.1: 2644 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2645 | engines: {node: '>=0.10.0'} 2646 | dev: true 2647 | 2648 | /is-fullwidth-code-point@3.0.0: 2649 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 2650 | engines: {node: '>=8'} 2651 | dev: true 2652 | 2653 | /is-glob@4.0.3: 2654 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2655 | engines: {node: '>=0.10.0'} 2656 | dependencies: 2657 | is-extglob: 2.1.1 2658 | dev: true 2659 | 2660 | /is-html@2.0.0: 2661 | resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==} 2662 | engines: {node: '>=8'} 2663 | dependencies: 2664 | html-tags: 3.3.1 2665 | dev: true 2666 | 2667 | /is-map@2.0.2: 2668 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 2669 | dev: true 2670 | 2671 | /is-number-object@1.0.7: 2672 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 2673 | engines: {node: '>= 0.4'} 2674 | dependencies: 2675 | has-tostringtag: 1.0.2 2676 | dev: true 2677 | 2678 | /is-number@7.0.0: 2679 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2680 | engines: {node: '>=0.12.0'} 2681 | dev: true 2682 | 2683 | /is-path-inside@3.0.3: 2684 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 2685 | engines: {node: '>=8'} 2686 | dev: true 2687 | 2688 | /is-potential-custom-element-name@1.0.1: 2689 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 2690 | dev: true 2691 | 2692 | /is-regex@1.1.4: 2693 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2694 | engines: {node: '>= 0.4'} 2695 | dependencies: 2696 | call-bind: 1.0.5 2697 | has-tostringtag: 1.0.2 2698 | dev: true 2699 | 2700 | /is-set@2.0.2: 2701 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 2702 | dev: true 2703 | 2704 | /is-shared-array-buffer@1.0.2: 2705 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 2706 | dependencies: 2707 | call-bind: 1.0.5 2708 | dev: true 2709 | 2710 | /is-stream@3.0.0: 2711 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 2712 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2713 | dev: true 2714 | 2715 | /is-string@1.0.7: 2716 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2717 | engines: {node: '>= 0.4'} 2718 | dependencies: 2719 | has-tostringtag: 1.0.2 2720 | dev: true 2721 | 2722 | /is-symbol@1.0.4: 2723 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2724 | engines: {node: '>= 0.4'} 2725 | dependencies: 2726 | has-symbols: 1.0.3 2727 | dev: true 2728 | 2729 | /is-weakmap@2.0.1: 2730 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 2731 | dev: true 2732 | 2733 | /is-weakset@2.0.2: 2734 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 2735 | dependencies: 2736 | call-bind: 1.0.5 2737 | get-intrinsic: 1.2.2 2738 | dev: true 2739 | 2740 | /is-what@4.1.16: 2741 | resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} 2742 | engines: {node: '>=12.13'} 2743 | dev: true 2744 | 2745 | /isarray@2.0.5: 2746 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 2747 | dev: true 2748 | 2749 | /isexe@2.0.0: 2750 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2751 | dev: true 2752 | 2753 | /jackspeak@3.4.3: 2754 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 2755 | dependencies: 2756 | '@isaacs/cliui': 8.0.2 2757 | optionalDependencies: 2758 | '@pkgjs/parseargs': 0.11.0 2759 | dev: true 2760 | 2761 | /joycon@3.1.1: 2762 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 2763 | engines: {node: '>=10'} 2764 | dev: true 2765 | 2766 | /js-tokens@4.0.0: 2767 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2768 | dev: true 2769 | 2770 | /js-yaml@4.1.0: 2771 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2772 | hasBin: true 2773 | dependencies: 2774 | argparse: 2.0.1 2775 | dev: true 2776 | 2777 | /jsdom@24.0.0: 2778 | resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} 2779 | engines: {node: '>=18'} 2780 | peerDependencies: 2781 | canvas: ^2.11.2 2782 | peerDependenciesMeta: 2783 | canvas: 2784 | optional: true 2785 | dependencies: 2786 | cssstyle: 4.0.1 2787 | data-urls: 5.0.0 2788 | decimal.js: 10.4.3 2789 | form-data: 4.0.0 2790 | html-encoding-sniffer: 4.0.0 2791 | http-proxy-agent: 7.0.0 2792 | https-proxy-agent: 7.0.2 2793 | is-potential-custom-element-name: 1.0.1 2794 | nwsapi: 2.2.7 2795 | parse5: 7.1.2 2796 | rrweb-cssom: 0.6.0 2797 | saxes: 6.0.0 2798 | symbol-tree: 3.2.4 2799 | tough-cookie: 4.1.3 2800 | w3c-xmlserializer: 5.0.0 2801 | webidl-conversions: 7.0.0 2802 | whatwg-encoding: 3.1.1 2803 | whatwg-mimetype: 4.0.0 2804 | whatwg-url: 14.0.0 2805 | ws: 8.16.0 2806 | xml-name-validator: 5.0.0 2807 | transitivePeerDependencies: 2808 | - bufferutil 2809 | - supports-color 2810 | - utf-8-validate 2811 | dev: true 2812 | 2813 | /jsesc@2.5.2: 2814 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2815 | engines: {node: '>=4'} 2816 | hasBin: true 2817 | dev: true 2818 | 2819 | /json-buffer@3.0.1: 2820 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 2821 | dev: true 2822 | 2823 | /json-schema-traverse@0.4.1: 2824 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2825 | dev: true 2826 | 2827 | /json-stable-stringify-without-jsonify@1.0.1: 2828 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2829 | dev: true 2830 | 2831 | /json5@2.2.3: 2832 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 2833 | engines: {node: '>=6'} 2834 | hasBin: true 2835 | dev: true 2836 | 2837 | /jsonc-parser@3.2.1: 2838 | resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} 2839 | dev: true 2840 | 2841 | /kebab-case@1.0.2: 2842 | resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} 2843 | dev: true 2844 | 2845 | /keyv@4.5.4: 2846 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 2847 | dependencies: 2848 | json-buffer: 3.0.1 2849 | dev: true 2850 | 2851 | /known-css-properties@0.24.0: 2852 | resolution: {integrity: sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA==} 2853 | dev: true 2854 | 2855 | /levn@0.4.1: 2856 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2857 | engines: {node: '>= 0.8.0'} 2858 | dependencies: 2859 | prelude-ls: 1.2.1 2860 | type-check: 0.4.0 2861 | dev: true 2862 | 2863 | /lilconfig@3.1.3: 2864 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 2865 | engines: {node: '>=14'} 2866 | dev: true 2867 | 2868 | /lines-and-columns@1.2.4: 2869 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2870 | dev: true 2871 | 2872 | /load-tsconfig@0.2.5: 2873 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 2874 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2875 | dev: true 2876 | 2877 | /local-pkg@0.5.0: 2878 | resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} 2879 | engines: {node: '>=14'} 2880 | dependencies: 2881 | mlly: 1.5.0 2882 | pkg-types: 1.0.3 2883 | dev: true 2884 | 2885 | /locate-path@6.0.0: 2886 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2887 | engines: {node: '>=10'} 2888 | dependencies: 2889 | p-locate: 5.0.0 2890 | dev: true 2891 | 2892 | /lodash.merge@4.6.2: 2893 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2894 | dev: true 2895 | 2896 | /lodash.sortby@4.7.0: 2897 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 2898 | dev: true 2899 | 2900 | /lodash@4.17.21: 2901 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2902 | dev: true 2903 | 2904 | /loupe@2.3.7: 2905 | resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} 2906 | dependencies: 2907 | get-func-name: 2.0.2 2908 | dev: true 2909 | 2910 | /lru-cache@10.4.3: 2911 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 2912 | dev: true 2913 | 2914 | /lru-cache@5.1.1: 2915 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 2916 | dependencies: 2917 | yallist: 3.1.1 2918 | dev: true 2919 | 2920 | /lru-cache@6.0.0: 2921 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2922 | engines: {node: '>=10'} 2923 | dependencies: 2924 | yallist: 4.0.0 2925 | dev: true 2926 | 2927 | /lz-string@1.5.0: 2928 | resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} 2929 | hasBin: true 2930 | dev: true 2931 | 2932 | /magic-string@0.30.6: 2933 | resolution: {integrity: sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA==} 2934 | engines: {node: '>=12'} 2935 | dependencies: 2936 | '@jridgewell/sourcemap-codec': 1.4.15 2937 | dev: true 2938 | 2939 | /merge-anything@5.1.7: 2940 | resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} 2941 | engines: {node: '>=12.13'} 2942 | dependencies: 2943 | is-what: 4.1.16 2944 | dev: true 2945 | 2946 | /merge-stream@2.0.0: 2947 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2948 | dev: true 2949 | 2950 | /merge2@1.4.1: 2951 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2952 | engines: {node: '>= 8'} 2953 | dev: true 2954 | 2955 | /micromatch@4.0.5: 2956 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2957 | engines: {node: '>=8.6'} 2958 | dependencies: 2959 | braces: 3.0.2 2960 | picomatch: 2.3.1 2961 | dev: true 2962 | 2963 | /mime-db@1.52.0: 2964 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2965 | engines: {node: '>= 0.6'} 2966 | dev: true 2967 | 2968 | /mime-types@2.1.35: 2969 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2970 | engines: {node: '>= 0.6'} 2971 | dependencies: 2972 | mime-db: 1.52.0 2973 | dev: true 2974 | 2975 | /mimic-fn@4.0.0: 2976 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 2977 | engines: {node: '>=12'} 2978 | dev: true 2979 | 2980 | /min-indent@1.0.1: 2981 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 2982 | engines: {node: '>=4'} 2983 | dev: true 2984 | 2985 | /minimatch@3.1.2: 2986 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2987 | dependencies: 2988 | brace-expansion: 1.1.11 2989 | dev: true 2990 | 2991 | /minimatch@9.0.3: 2992 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 2993 | engines: {node: '>=16 || 14 >=14.17'} 2994 | dependencies: 2995 | brace-expansion: 2.0.1 2996 | dev: true 2997 | 2998 | /minimatch@9.0.5: 2999 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 3000 | engines: {node: '>=16 || 14 >=14.17'} 3001 | dependencies: 3002 | brace-expansion: 2.0.1 3003 | dev: true 3004 | 3005 | /minipass@7.1.2: 3006 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 3007 | engines: {node: '>=16 || 14 >=14.17'} 3008 | dev: true 3009 | 3010 | /mlly@1.5.0: 3011 | resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} 3012 | dependencies: 3013 | acorn: 8.11.3 3014 | pathe: 1.1.2 3015 | pkg-types: 1.0.3 3016 | ufo: 1.3.2 3017 | dev: true 3018 | 3019 | /ms@2.1.2: 3020 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 3021 | dev: true 3022 | 3023 | /ms@2.1.3: 3024 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 3025 | dev: true 3026 | 3027 | /mz@2.7.0: 3028 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 3029 | dependencies: 3030 | any-promise: 1.3.0 3031 | object-assign: 4.1.1 3032 | thenify-all: 1.6.0 3033 | dev: true 3034 | 3035 | /nanoid@3.3.7: 3036 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 3037 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 3038 | hasBin: true 3039 | dev: true 3040 | 3041 | /natural-compare@1.4.0: 3042 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 3043 | dev: true 3044 | 3045 | /node-releases@2.0.14: 3046 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 3047 | dev: true 3048 | 3049 | /npm-run-path@5.2.0: 3050 | resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} 3051 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 3052 | dependencies: 3053 | path-key: 4.0.0 3054 | dev: true 3055 | 3056 | /nwsapi@2.2.7: 3057 | resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} 3058 | dev: true 3059 | 3060 | /object-assign@4.1.1: 3061 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 3062 | engines: {node: '>=0.10.0'} 3063 | dev: true 3064 | 3065 | /object-inspect@1.13.1: 3066 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} 3067 | dev: true 3068 | 3069 | /object-is@1.1.5: 3070 | resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} 3071 | engines: {node: '>= 0.4'} 3072 | dependencies: 3073 | call-bind: 1.0.5 3074 | define-properties: 1.2.1 3075 | dev: true 3076 | 3077 | /object-keys@1.1.1: 3078 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 3079 | engines: {node: '>= 0.4'} 3080 | dev: true 3081 | 3082 | /object.assign@4.1.5: 3083 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 3084 | engines: {node: '>= 0.4'} 3085 | dependencies: 3086 | call-bind: 1.0.5 3087 | define-properties: 1.2.1 3088 | has-symbols: 1.0.3 3089 | object-keys: 1.1.1 3090 | dev: true 3091 | 3092 | /once@1.4.0: 3093 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 3094 | dependencies: 3095 | wrappy: 1.0.2 3096 | dev: true 3097 | 3098 | /onetime@6.0.0: 3099 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 3100 | engines: {node: '>=12'} 3101 | dependencies: 3102 | mimic-fn: 4.0.0 3103 | dev: true 3104 | 3105 | /optionator@0.9.3: 3106 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 3107 | engines: {node: '>= 0.8.0'} 3108 | dependencies: 3109 | '@aashutoshrathi/word-wrap': 1.2.6 3110 | deep-is: 0.1.4 3111 | fast-levenshtein: 2.0.6 3112 | levn: 0.4.1 3113 | prelude-ls: 1.2.1 3114 | type-check: 0.4.0 3115 | dev: true 3116 | 3117 | /p-limit@3.1.0: 3118 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 3119 | engines: {node: '>=10'} 3120 | dependencies: 3121 | yocto-queue: 0.1.0 3122 | dev: true 3123 | 3124 | /p-limit@5.0.0: 3125 | resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} 3126 | engines: {node: '>=18'} 3127 | dependencies: 3128 | yocto-queue: 1.0.0 3129 | dev: true 3130 | 3131 | /p-locate@5.0.0: 3132 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 3133 | engines: {node: '>=10'} 3134 | dependencies: 3135 | p-limit: 3.1.0 3136 | dev: true 3137 | 3138 | /package-json-from-dist@1.0.1: 3139 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 3140 | dev: true 3141 | 3142 | /parent-module@1.0.1: 3143 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 3144 | engines: {node: '>=6'} 3145 | dependencies: 3146 | callsites: 3.1.0 3147 | dev: true 3148 | 3149 | /parse5@7.1.2: 3150 | resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} 3151 | dependencies: 3152 | entities: 4.5.0 3153 | dev: true 3154 | 3155 | /path-exists@4.0.0: 3156 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 3157 | engines: {node: '>=8'} 3158 | dev: true 3159 | 3160 | /path-is-absolute@1.0.1: 3161 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 3162 | engines: {node: '>=0.10.0'} 3163 | dev: true 3164 | 3165 | /path-key@3.1.1: 3166 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 3167 | engines: {node: '>=8'} 3168 | dev: true 3169 | 3170 | /path-key@4.0.0: 3171 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 3172 | engines: {node: '>=12'} 3173 | dev: true 3174 | 3175 | /path-scurry@1.11.1: 3176 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 3177 | engines: {node: '>=16 || 14 >=14.18'} 3178 | dependencies: 3179 | lru-cache: 10.4.3 3180 | minipass: 7.1.2 3181 | dev: true 3182 | 3183 | /path-type@4.0.0: 3184 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 3185 | engines: {node: '>=8'} 3186 | dev: true 3187 | 3188 | /pathe@1.1.2: 3189 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 3190 | dev: true 3191 | 3192 | /pathval@1.1.1: 3193 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 3194 | dev: true 3195 | 3196 | /picocolors@1.0.0: 3197 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 3198 | dev: true 3199 | 3200 | /picocolors@1.1.1: 3201 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 3202 | dev: true 3203 | 3204 | /picomatch@2.3.1: 3205 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 3206 | engines: {node: '>=8.6'} 3207 | dev: true 3208 | 3209 | /picomatch@4.0.2: 3210 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 3211 | engines: {node: '>=12'} 3212 | dev: true 3213 | 3214 | /pirates@4.0.6: 3215 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 3216 | engines: {node: '>= 6'} 3217 | dev: true 3218 | 3219 | /pkg-types@1.0.3: 3220 | resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} 3221 | dependencies: 3222 | jsonc-parser: 3.2.1 3223 | mlly: 1.5.0 3224 | pathe: 1.1.2 3225 | dev: true 3226 | 3227 | /postcss-load-config@6.0.1: 3228 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 3229 | engines: {node: '>= 18'} 3230 | peerDependencies: 3231 | jiti: '>=1.21.0' 3232 | postcss: '>=8.0.9' 3233 | tsx: ^4.8.1 3234 | yaml: ^2.4.2 3235 | peerDependenciesMeta: 3236 | jiti: 3237 | optional: true 3238 | postcss: 3239 | optional: true 3240 | tsx: 3241 | optional: true 3242 | yaml: 3243 | optional: true 3244 | dependencies: 3245 | lilconfig: 3.1.3 3246 | dev: true 3247 | 3248 | /postcss@8.4.33: 3249 | resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} 3250 | engines: {node: ^10 || ^12 || >=14} 3251 | dependencies: 3252 | nanoid: 3.3.7 3253 | picocolors: 1.0.0 3254 | source-map-js: 1.0.2 3255 | dev: true 3256 | 3257 | /prelude-ls@1.2.1: 3258 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 3259 | engines: {node: '>= 0.8.0'} 3260 | dev: true 3261 | 3262 | /prettier-config-tronikelis@3.0.0(prettier@3.2.4): 3263 | resolution: {integrity: sha512-v4OGo6bKWNXmG+ggFNtS2HJQ2UDpUavLZp0aue3Chjm6TGXuBg167D21/+nvOxD52DlZCQuDtSNmt3QZS+iiPQ==} 3264 | peerDependencies: 3265 | prettier: '*' 3266 | dependencies: 3267 | prettier: 3.2.4 3268 | prettier-plugin-tailwindcss: 0.5.11(prettier@3.2.4) 3269 | transitivePeerDependencies: 3270 | - '@ianvs/prettier-plugin-sort-imports' 3271 | - '@prettier/plugin-pug' 3272 | - '@shopify/prettier-plugin-liquid' 3273 | - '@trivago/prettier-plugin-sort-imports' 3274 | - prettier-plugin-astro 3275 | - prettier-plugin-css-order 3276 | - prettier-plugin-import-sort 3277 | - prettier-plugin-jsdoc 3278 | - prettier-plugin-marko 3279 | - prettier-plugin-organize-attributes 3280 | - prettier-plugin-organize-imports 3281 | - prettier-plugin-style-order 3282 | - prettier-plugin-svelte 3283 | - prettier-plugin-twig-melody 3284 | dev: true 3285 | 3286 | /prettier-linter-helpers@1.0.0: 3287 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 3288 | engines: {node: '>=6.0.0'} 3289 | dependencies: 3290 | fast-diff: 1.3.0 3291 | dev: true 3292 | 3293 | /prettier-plugin-tailwindcss@0.5.11(prettier@3.2.4): 3294 | resolution: {integrity: sha512-AvI/DNyMctyyxGOjyePgi/gqj5hJYClZ1avtQvLlqMT3uDZkRbi4HhGUpok3DRzv9z7Lti85Kdj3s3/1CeNI0w==} 3295 | engines: {node: '>=14.21.3'} 3296 | peerDependencies: 3297 | '@ianvs/prettier-plugin-sort-imports': '*' 3298 | '@prettier/plugin-pug': '*' 3299 | '@shopify/prettier-plugin-liquid': '*' 3300 | '@trivago/prettier-plugin-sort-imports': '*' 3301 | prettier: ^3.0 3302 | prettier-plugin-astro: '*' 3303 | prettier-plugin-css-order: '*' 3304 | prettier-plugin-import-sort: '*' 3305 | prettier-plugin-jsdoc: '*' 3306 | prettier-plugin-marko: '*' 3307 | prettier-plugin-organize-attributes: '*' 3308 | prettier-plugin-organize-imports: '*' 3309 | prettier-plugin-style-order: '*' 3310 | prettier-plugin-svelte: '*' 3311 | prettier-plugin-twig-melody: '*' 3312 | peerDependenciesMeta: 3313 | '@ianvs/prettier-plugin-sort-imports': 3314 | optional: true 3315 | '@prettier/plugin-pug': 3316 | optional: true 3317 | '@shopify/prettier-plugin-liquid': 3318 | optional: true 3319 | '@trivago/prettier-plugin-sort-imports': 3320 | optional: true 3321 | prettier-plugin-astro: 3322 | optional: true 3323 | prettier-plugin-css-order: 3324 | optional: true 3325 | prettier-plugin-import-sort: 3326 | optional: true 3327 | prettier-plugin-jsdoc: 3328 | optional: true 3329 | prettier-plugin-marko: 3330 | optional: true 3331 | prettier-plugin-organize-attributes: 3332 | optional: true 3333 | prettier-plugin-organize-imports: 3334 | optional: true 3335 | prettier-plugin-style-order: 3336 | optional: true 3337 | prettier-plugin-svelte: 3338 | optional: true 3339 | prettier-plugin-twig-melody: 3340 | optional: true 3341 | dependencies: 3342 | prettier: 3.2.4 3343 | dev: true 3344 | 3345 | /prettier@3.2.4: 3346 | resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} 3347 | engines: {node: '>=14'} 3348 | hasBin: true 3349 | dev: true 3350 | 3351 | /pretty-format@27.5.1: 3352 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} 3353 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 3354 | dependencies: 3355 | ansi-regex: 5.0.1 3356 | ansi-styles: 5.2.0 3357 | react-is: 17.0.2 3358 | dev: true 3359 | 3360 | /pretty-format@29.7.0: 3361 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} 3362 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 3363 | dependencies: 3364 | '@jest/schemas': 29.6.3 3365 | ansi-styles: 5.2.0 3366 | react-is: 18.2.0 3367 | dev: true 3368 | 3369 | /psl@1.9.0: 3370 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} 3371 | dev: true 3372 | 3373 | /punycode@2.3.1: 3374 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 3375 | engines: {node: '>=6'} 3376 | dev: true 3377 | 3378 | /querystringify@2.2.0: 3379 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} 3380 | dev: true 3381 | 3382 | /queue-microtask@1.2.3: 3383 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 3384 | dev: true 3385 | 3386 | /react-is@17.0.2: 3387 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 3388 | dev: true 3389 | 3390 | /react-is@18.2.0: 3391 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} 3392 | dev: true 3393 | 3394 | /readdirp@4.0.2: 3395 | resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} 3396 | engines: {node: '>= 14.16.0'} 3397 | dev: true 3398 | 3399 | /redent@3.0.0: 3400 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} 3401 | engines: {node: '>=8'} 3402 | dependencies: 3403 | indent-string: 4.0.0 3404 | strip-indent: 3.0.0 3405 | dev: true 3406 | 3407 | /regenerator-runtime@0.14.1: 3408 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 3409 | dev: true 3410 | 3411 | /regexp.prototype.flags@1.5.1: 3412 | resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} 3413 | engines: {node: '>= 0.4'} 3414 | dependencies: 3415 | call-bind: 1.0.5 3416 | define-properties: 1.2.1 3417 | set-function-name: 2.0.1 3418 | dev: true 3419 | 3420 | /requires-port@1.0.0: 3421 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} 3422 | dev: true 3423 | 3424 | /resolve-from@4.0.0: 3425 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 3426 | engines: {node: '>=4'} 3427 | dev: true 3428 | 3429 | /resolve-from@5.0.0: 3430 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 3431 | engines: {node: '>=8'} 3432 | dev: true 3433 | 3434 | /reusify@1.0.4: 3435 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 3436 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 3437 | dev: true 3438 | 3439 | /rimraf@3.0.2: 3440 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 3441 | hasBin: true 3442 | dependencies: 3443 | glob: 7.2.3 3444 | dev: true 3445 | 3446 | /rollup@4.28.1: 3447 | resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} 3448 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 3449 | hasBin: true 3450 | dependencies: 3451 | '@types/estree': 1.0.6 3452 | optionalDependencies: 3453 | '@rollup/rollup-android-arm-eabi': 4.28.1 3454 | '@rollup/rollup-android-arm64': 4.28.1 3455 | '@rollup/rollup-darwin-arm64': 4.28.1 3456 | '@rollup/rollup-darwin-x64': 4.28.1 3457 | '@rollup/rollup-freebsd-arm64': 4.28.1 3458 | '@rollup/rollup-freebsd-x64': 4.28.1 3459 | '@rollup/rollup-linux-arm-gnueabihf': 4.28.1 3460 | '@rollup/rollup-linux-arm-musleabihf': 4.28.1 3461 | '@rollup/rollup-linux-arm64-gnu': 4.28.1 3462 | '@rollup/rollup-linux-arm64-musl': 4.28.1 3463 | '@rollup/rollup-linux-loongarch64-gnu': 4.28.1 3464 | '@rollup/rollup-linux-powerpc64le-gnu': 4.28.1 3465 | '@rollup/rollup-linux-riscv64-gnu': 4.28.1 3466 | '@rollup/rollup-linux-s390x-gnu': 4.28.1 3467 | '@rollup/rollup-linux-x64-gnu': 4.28.1 3468 | '@rollup/rollup-linux-x64-musl': 4.28.1 3469 | '@rollup/rollup-win32-arm64-msvc': 4.28.1 3470 | '@rollup/rollup-win32-ia32-msvc': 4.28.1 3471 | '@rollup/rollup-win32-x64-msvc': 4.28.1 3472 | fsevents: 2.3.3 3473 | dev: true 3474 | 3475 | /rollup@4.9.6: 3476 | resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} 3477 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 3478 | hasBin: true 3479 | dependencies: 3480 | '@types/estree': 1.0.5 3481 | optionalDependencies: 3482 | '@rollup/rollup-android-arm-eabi': 4.9.6 3483 | '@rollup/rollup-android-arm64': 4.9.6 3484 | '@rollup/rollup-darwin-arm64': 4.9.6 3485 | '@rollup/rollup-darwin-x64': 4.9.6 3486 | '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 3487 | '@rollup/rollup-linux-arm64-gnu': 4.9.6 3488 | '@rollup/rollup-linux-arm64-musl': 4.9.6 3489 | '@rollup/rollup-linux-riscv64-gnu': 4.9.6 3490 | '@rollup/rollup-linux-x64-gnu': 4.9.6 3491 | '@rollup/rollup-linux-x64-musl': 4.9.6 3492 | '@rollup/rollup-win32-arm64-msvc': 4.9.6 3493 | '@rollup/rollup-win32-ia32-msvc': 4.9.6 3494 | '@rollup/rollup-win32-x64-msvc': 4.9.6 3495 | fsevents: 2.3.3 3496 | dev: true 3497 | 3498 | /rrweb-cssom@0.6.0: 3499 | resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} 3500 | dev: true 3501 | 3502 | /run-parallel@1.2.0: 3503 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 3504 | dependencies: 3505 | queue-microtask: 1.2.3 3506 | dev: true 3507 | 3508 | /safer-buffer@2.1.2: 3509 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 3510 | dev: true 3511 | 3512 | /saxes@6.0.0: 3513 | resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} 3514 | engines: {node: '>=v12.22.7'} 3515 | dependencies: 3516 | xmlchars: 2.2.0 3517 | dev: true 3518 | 3519 | /semver@6.3.1: 3520 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 3521 | hasBin: true 3522 | dev: true 3523 | 3524 | /semver@7.5.4: 3525 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 3526 | engines: {node: '>=10'} 3527 | hasBin: true 3528 | dependencies: 3529 | lru-cache: 6.0.0 3530 | dev: true 3531 | 3532 | /seroval-plugins@1.0.4(seroval@1.0.4): 3533 | resolution: {integrity: sha512-DQ2IK6oQVvy8k+c2V5x5YCtUa/GGGsUwUBNN9UqohrZ0rWdUapBFpNMYP1bCyRHoxOJjdKGl+dieacFIpU/i1A==} 3534 | engines: {node: '>=10'} 3535 | peerDependencies: 3536 | seroval: ^1.0 3537 | dependencies: 3538 | seroval: 1.0.4 3539 | 3540 | /seroval@1.0.4: 3541 | resolution: {integrity: sha512-qQs/N+KfJu83rmszFQaTxcoJoPn6KNUruX4KmnmyD0oZkUoiNvJ1rpdYKDf4YHM05k+HOgCxa3yvf15QbVijGg==} 3542 | engines: {node: '>=10'} 3543 | 3544 | /set-function-length@1.2.0: 3545 | resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} 3546 | engines: {node: '>= 0.4'} 3547 | dependencies: 3548 | define-data-property: 1.1.1 3549 | function-bind: 1.1.2 3550 | get-intrinsic: 1.2.2 3551 | gopd: 1.0.1 3552 | has-property-descriptors: 1.0.1 3553 | dev: true 3554 | 3555 | /set-function-name@2.0.1: 3556 | resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} 3557 | engines: {node: '>= 0.4'} 3558 | dependencies: 3559 | define-data-property: 1.1.1 3560 | functions-have-names: 1.2.3 3561 | has-property-descriptors: 1.0.1 3562 | dev: true 3563 | 3564 | /shebang-command@2.0.0: 3565 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3566 | engines: {node: '>=8'} 3567 | dependencies: 3568 | shebang-regex: 3.0.0 3569 | dev: true 3570 | 3571 | /shebang-regex@3.0.0: 3572 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3573 | engines: {node: '>=8'} 3574 | dev: true 3575 | 3576 | /side-channel@1.0.4: 3577 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 3578 | dependencies: 3579 | call-bind: 1.0.5 3580 | get-intrinsic: 1.2.2 3581 | object-inspect: 1.13.1 3582 | dev: true 3583 | 3584 | /siginfo@2.0.0: 3585 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 3586 | dev: true 3587 | 3588 | /signal-exit@4.1.0: 3589 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 3590 | engines: {node: '>=14'} 3591 | dev: true 3592 | 3593 | /slash@3.0.0: 3594 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 3595 | engines: {node: '>=8'} 3596 | dev: true 3597 | 3598 | /solid-js@1.8.12: 3599 | resolution: {integrity: sha512-sLE/i6M9FSWlov3a2pTC5ISzanH2aKwqXTZj+bbFt4SUrVb4iGEa7fpILBMOxsQjkv3eXqEk6JVLlogOdTe0UQ==} 3600 | dependencies: 3601 | csstype: 3.1.3 3602 | seroval: 1.0.4 3603 | seroval-plugins: 1.0.4(seroval@1.0.4) 3604 | 3605 | /solid-refresh@0.6.3(solid-js@1.8.12): 3606 | resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} 3607 | peerDependencies: 3608 | solid-js: ^1.3 3609 | dependencies: 3610 | '@babel/generator': 7.23.6 3611 | '@babel/helper-module-imports': 7.22.15 3612 | '@babel/types': 7.23.9 3613 | solid-js: 1.8.12 3614 | dev: true 3615 | 3616 | /source-map-js@1.0.2: 3617 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 3618 | engines: {node: '>=0.10.0'} 3619 | dev: true 3620 | 3621 | /source-map@0.8.0-beta.0: 3622 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 3623 | engines: {node: '>= 8'} 3624 | dependencies: 3625 | whatwg-url: 7.1.0 3626 | dev: true 3627 | 3628 | /stackback@0.0.2: 3629 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 3630 | dev: true 3631 | 3632 | /std-env@3.7.0: 3633 | resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} 3634 | dev: true 3635 | 3636 | /stop-iteration-iterator@1.0.0: 3637 | resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} 3638 | engines: {node: '>= 0.4'} 3639 | dependencies: 3640 | internal-slot: 1.0.6 3641 | dev: true 3642 | 3643 | /string-width@4.2.3: 3644 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3645 | engines: {node: '>=8'} 3646 | dependencies: 3647 | emoji-regex: 8.0.0 3648 | is-fullwidth-code-point: 3.0.0 3649 | strip-ansi: 6.0.1 3650 | dev: true 3651 | 3652 | /string-width@5.1.2: 3653 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 3654 | engines: {node: '>=12'} 3655 | dependencies: 3656 | eastasianwidth: 0.2.0 3657 | emoji-regex: 9.2.2 3658 | strip-ansi: 7.1.0 3659 | dev: true 3660 | 3661 | /strip-ansi@6.0.1: 3662 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3663 | engines: {node: '>=8'} 3664 | dependencies: 3665 | ansi-regex: 5.0.1 3666 | dev: true 3667 | 3668 | /strip-ansi@7.1.0: 3669 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 3670 | engines: {node: '>=12'} 3671 | dependencies: 3672 | ansi-regex: 6.1.0 3673 | dev: true 3674 | 3675 | /strip-final-newline@3.0.0: 3676 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 3677 | engines: {node: '>=12'} 3678 | dev: true 3679 | 3680 | /strip-indent@3.0.0: 3681 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 3682 | engines: {node: '>=8'} 3683 | dependencies: 3684 | min-indent: 1.0.1 3685 | dev: true 3686 | 3687 | /strip-json-comments@3.1.1: 3688 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3689 | engines: {node: '>=8'} 3690 | dev: true 3691 | 3692 | /strip-literal@1.3.0: 3693 | resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} 3694 | dependencies: 3695 | acorn: 8.11.3 3696 | dev: true 3697 | 3698 | /style-to-object@0.3.0: 3699 | resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} 3700 | dependencies: 3701 | inline-style-parser: 0.1.1 3702 | dev: true 3703 | 3704 | /sucrase@3.35.0: 3705 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 3706 | engines: {node: '>=16 || 14 >=14.17'} 3707 | hasBin: true 3708 | dependencies: 3709 | '@jridgewell/gen-mapping': 0.3.3 3710 | commander: 4.1.1 3711 | glob: 10.4.5 3712 | lines-and-columns: 1.2.4 3713 | mz: 2.7.0 3714 | pirates: 4.0.6 3715 | ts-interface-checker: 0.1.13 3716 | dev: true 3717 | 3718 | /supports-color@5.5.0: 3719 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 3720 | engines: {node: '>=4'} 3721 | dependencies: 3722 | has-flag: 3.0.0 3723 | dev: true 3724 | 3725 | /supports-color@7.2.0: 3726 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3727 | engines: {node: '>=8'} 3728 | dependencies: 3729 | has-flag: 4.0.0 3730 | dev: true 3731 | 3732 | /symbol-tree@3.2.4: 3733 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 3734 | dev: true 3735 | 3736 | /synckit@0.8.8: 3737 | resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} 3738 | engines: {node: ^14.18.0 || >=16.0.0} 3739 | dependencies: 3740 | '@pkgr/core': 0.1.1 3741 | tslib: 2.6.2 3742 | dev: true 3743 | 3744 | /text-table@0.2.0: 3745 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 3746 | dev: true 3747 | 3748 | /thenify-all@1.6.0: 3749 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 3750 | engines: {node: '>=0.8'} 3751 | dependencies: 3752 | thenify: 3.3.1 3753 | dev: true 3754 | 3755 | /thenify@3.3.1: 3756 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 3757 | dependencies: 3758 | any-promise: 1.3.0 3759 | dev: true 3760 | 3761 | /tinybench@2.6.0: 3762 | resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} 3763 | dev: true 3764 | 3765 | /tinyexec@0.3.1: 3766 | resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} 3767 | dev: true 3768 | 3769 | /tinyglobby@0.2.10: 3770 | resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} 3771 | engines: {node: '>=12.0.0'} 3772 | dependencies: 3773 | fdir: 6.4.2(picomatch@4.0.2) 3774 | picomatch: 4.0.2 3775 | dev: true 3776 | 3777 | /tinypool@0.8.2: 3778 | resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} 3779 | engines: {node: '>=14.0.0'} 3780 | dev: true 3781 | 3782 | /tinyspy@2.2.0: 3783 | resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} 3784 | engines: {node: '>=14.0.0'} 3785 | dev: true 3786 | 3787 | /to-fast-properties@2.0.0: 3788 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 3789 | engines: {node: '>=4'} 3790 | dev: true 3791 | 3792 | /to-regex-range@5.0.1: 3793 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3794 | engines: {node: '>=8.0'} 3795 | dependencies: 3796 | is-number: 7.0.0 3797 | dev: true 3798 | 3799 | /tough-cookie@4.1.3: 3800 | resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} 3801 | engines: {node: '>=6'} 3802 | dependencies: 3803 | psl: 1.9.0 3804 | punycode: 2.3.1 3805 | universalify: 0.2.0 3806 | url-parse: 1.5.10 3807 | dev: true 3808 | 3809 | /tr46@1.0.1: 3810 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 3811 | dependencies: 3812 | punycode: 2.3.1 3813 | dev: true 3814 | 3815 | /tr46@5.0.0: 3816 | resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} 3817 | engines: {node: '>=18'} 3818 | dependencies: 3819 | punycode: 2.3.1 3820 | dev: true 3821 | 3822 | /tree-kill@1.2.2: 3823 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 3824 | hasBin: true 3825 | dev: true 3826 | 3827 | /ts-api-utils@1.0.3(typescript@5.3.3): 3828 | resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} 3829 | engines: {node: '>=16.13.0'} 3830 | peerDependencies: 3831 | typescript: '>=4.2.0' 3832 | dependencies: 3833 | typescript: 5.3.3 3834 | dev: true 3835 | 3836 | /ts-interface-checker@0.1.13: 3837 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 3838 | dev: true 3839 | 3840 | /tsconfck@3.0.1(typescript@5.3.3): 3841 | resolution: {integrity: sha512-7ppiBlF3UEddCLeI1JRx5m2Ryq+xk4JrZuq4EuYXykipebaq1dV0Fhgr1hb7CkmHt32QSgOZlcqVLEtHBG4/mg==} 3842 | engines: {node: ^18 || >=20} 3843 | hasBin: true 3844 | peerDependencies: 3845 | typescript: ^5.0.0 3846 | peerDependenciesMeta: 3847 | typescript: 3848 | optional: true 3849 | dependencies: 3850 | typescript: 5.3.3 3851 | dev: true 3852 | 3853 | /tslib@2.6.2: 3854 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 3855 | dev: true 3856 | 3857 | /tsup@8.3.5(typescript@5.3.3): 3858 | resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} 3859 | engines: {node: '>=18'} 3860 | hasBin: true 3861 | peerDependencies: 3862 | '@microsoft/api-extractor': ^7.36.0 3863 | '@swc/core': ^1 3864 | postcss: ^8.4.12 3865 | typescript: '>=4.5.0' 3866 | peerDependenciesMeta: 3867 | '@microsoft/api-extractor': 3868 | optional: true 3869 | '@swc/core': 3870 | optional: true 3871 | postcss: 3872 | optional: true 3873 | typescript: 3874 | optional: true 3875 | dependencies: 3876 | bundle-require: 5.0.0(esbuild@0.24.0) 3877 | cac: 6.7.14 3878 | chokidar: 4.0.1 3879 | consola: 3.2.3 3880 | debug: 4.4.0 3881 | esbuild: 0.24.0 3882 | joycon: 3.1.1 3883 | picocolors: 1.1.1 3884 | postcss-load-config: 6.0.1 3885 | resolve-from: 5.0.0 3886 | rollup: 4.28.1 3887 | source-map: 0.8.0-beta.0 3888 | sucrase: 3.35.0 3889 | tinyexec: 0.3.1 3890 | tinyglobby: 0.2.10 3891 | tree-kill: 1.2.2 3892 | typescript: 5.3.3 3893 | transitivePeerDependencies: 3894 | - jiti 3895 | - supports-color 3896 | - tsx 3897 | - yaml 3898 | dev: true 3899 | 3900 | /type-check@0.4.0: 3901 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3902 | engines: {node: '>= 0.8.0'} 3903 | dependencies: 3904 | prelude-ls: 1.2.1 3905 | dev: true 3906 | 3907 | /type-detect@4.0.8: 3908 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 3909 | engines: {node: '>=4'} 3910 | dev: true 3911 | 3912 | /type-fest@0.20.2: 3913 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3914 | engines: {node: '>=10'} 3915 | dev: true 3916 | 3917 | /typescript@5.3.3: 3918 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} 3919 | engines: {node: '>=14.17'} 3920 | hasBin: true 3921 | dev: true 3922 | 3923 | /ufo@1.3.2: 3924 | resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} 3925 | dev: true 3926 | 3927 | /undici-types@5.26.5: 3928 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 3929 | dev: true 3930 | 3931 | /universalify@0.2.0: 3932 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} 3933 | engines: {node: '>= 4.0.0'} 3934 | dev: true 3935 | 3936 | /update-browserslist-db@1.0.13(browserslist@4.22.3): 3937 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 3938 | hasBin: true 3939 | peerDependencies: 3940 | browserslist: '>= 4.21.0' 3941 | dependencies: 3942 | browserslist: 4.22.3 3943 | escalade: 3.1.1 3944 | picocolors: 1.0.0 3945 | dev: true 3946 | 3947 | /uri-js@4.4.1: 3948 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3949 | dependencies: 3950 | punycode: 2.3.1 3951 | dev: true 3952 | 3953 | /url-parse@1.5.10: 3954 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} 3955 | dependencies: 3956 | querystringify: 2.2.0 3957 | requires-port: 1.0.0 3958 | dev: true 3959 | 3960 | /validate-html-nesting@1.2.2: 3961 | resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} 3962 | dev: true 3963 | 3964 | /vite-node@1.2.2(@types/node@20.11.16): 3965 | resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} 3966 | engines: {node: ^18.0.0 || >=20.0.0} 3967 | hasBin: true 3968 | dependencies: 3969 | cac: 6.7.14 3970 | debug: 4.3.4 3971 | pathe: 1.1.2 3972 | picocolors: 1.0.0 3973 | vite: 5.0.12(@types/node@20.11.16) 3974 | transitivePeerDependencies: 3975 | - '@types/node' 3976 | - less 3977 | - lightningcss 3978 | - sass 3979 | - stylus 3980 | - sugarss 3981 | - supports-color 3982 | - terser 3983 | dev: true 3984 | 3985 | /vite-plugin-solid@2.9.1(@testing-library/jest-dom@6.3.0)(solid-js@1.8.12)(vite@5.0.12): 3986 | resolution: {integrity: sha512-RC4hj+lbvljw57BbMGDApvEOPEh14lwrr/GeXRLNQLcR1qnOdzOwwTSFy13Gj/6FNIZpBEl0bWPU+VYFawrqUw==} 3987 | peerDependencies: 3988 | '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* 3989 | solid-js: ^1.7.2 3990 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 3991 | peerDependenciesMeta: 3992 | '@testing-library/jest-dom': 3993 | optional: true 3994 | dependencies: 3995 | '@babel/core': 7.23.9 3996 | '@testing-library/jest-dom': 6.3.0(vitest@1.2.2) 3997 | '@types/babel__core': 7.20.5 3998 | babel-preset-solid: 1.8.12(@babel/core@7.23.9) 3999 | merge-anything: 5.1.7 4000 | solid-js: 1.8.12 4001 | solid-refresh: 0.6.3(solid-js@1.8.12) 4002 | vite: 5.0.12(@types/node@20.11.16) 4003 | vitefu: 0.2.5(vite@5.0.12) 4004 | transitivePeerDependencies: 4005 | - supports-color 4006 | dev: true 4007 | 4008 | /vite-tsconfig-paths@4.3.1(typescript@5.3.3)(vite@5.0.12): 4009 | resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} 4010 | peerDependencies: 4011 | vite: '*' 4012 | peerDependenciesMeta: 4013 | vite: 4014 | optional: true 4015 | dependencies: 4016 | debug: 4.3.4 4017 | globrex: 0.1.2 4018 | tsconfck: 3.0.1(typescript@5.3.3) 4019 | vite: 5.0.12(@types/node@20.11.16) 4020 | transitivePeerDependencies: 4021 | - supports-color 4022 | - typescript 4023 | dev: true 4024 | 4025 | /vite@5.0.12(@types/node@20.11.16): 4026 | resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} 4027 | engines: {node: ^18.0.0 || >=20.0.0} 4028 | hasBin: true 4029 | peerDependencies: 4030 | '@types/node': ^18.0.0 || >=20.0.0 4031 | less: '*' 4032 | lightningcss: ^1.21.0 4033 | sass: '*' 4034 | stylus: '*' 4035 | sugarss: '*' 4036 | terser: ^5.4.0 4037 | peerDependenciesMeta: 4038 | '@types/node': 4039 | optional: true 4040 | less: 4041 | optional: true 4042 | lightningcss: 4043 | optional: true 4044 | sass: 4045 | optional: true 4046 | stylus: 4047 | optional: true 4048 | sugarss: 4049 | optional: true 4050 | terser: 4051 | optional: true 4052 | dependencies: 4053 | '@types/node': 20.11.16 4054 | esbuild: 0.19.12 4055 | postcss: 8.4.33 4056 | rollup: 4.9.6 4057 | optionalDependencies: 4058 | fsevents: 2.3.3 4059 | dev: true 4060 | 4061 | /vitefu@0.2.5(vite@5.0.12): 4062 | resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} 4063 | peerDependencies: 4064 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 4065 | peerDependenciesMeta: 4066 | vite: 4067 | optional: true 4068 | dependencies: 4069 | vite: 5.0.12(@types/node@20.11.16) 4070 | dev: true 4071 | 4072 | /vitest@1.2.2(@types/node@20.11.16)(jsdom@24.0.0): 4073 | resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} 4074 | engines: {node: ^18.0.0 || >=20.0.0} 4075 | hasBin: true 4076 | peerDependencies: 4077 | '@edge-runtime/vm': '*' 4078 | '@types/node': ^18.0.0 || >=20.0.0 4079 | '@vitest/browser': ^1.0.0 4080 | '@vitest/ui': ^1.0.0 4081 | happy-dom: '*' 4082 | jsdom: '*' 4083 | peerDependenciesMeta: 4084 | '@edge-runtime/vm': 4085 | optional: true 4086 | '@types/node': 4087 | optional: true 4088 | '@vitest/browser': 4089 | optional: true 4090 | '@vitest/ui': 4091 | optional: true 4092 | happy-dom: 4093 | optional: true 4094 | jsdom: 4095 | optional: true 4096 | dependencies: 4097 | '@types/node': 20.11.16 4098 | '@vitest/expect': 1.2.2 4099 | '@vitest/runner': 1.2.2 4100 | '@vitest/snapshot': 1.2.2 4101 | '@vitest/spy': 1.2.2 4102 | '@vitest/utils': 1.2.2 4103 | acorn-walk: 8.3.2 4104 | cac: 6.7.14 4105 | chai: 4.4.1 4106 | debug: 4.3.4 4107 | execa: 8.0.1 4108 | jsdom: 24.0.0 4109 | local-pkg: 0.5.0 4110 | magic-string: 0.30.6 4111 | pathe: 1.1.2 4112 | picocolors: 1.0.0 4113 | std-env: 3.7.0 4114 | strip-literal: 1.3.0 4115 | tinybench: 2.6.0 4116 | tinypool: 0.8.2 4117 | vite: 5.0.12(@types/node@20.11.16) 4118 | vite-node: 1.2.2(@types/node@20.11.16) 4119 | why-is-node-running: 2.2.2 4120 | transitivePeerDependencies: 4121 | - less 4122 | - lightningcss 4123 | - sass 4124 | - stylus 4125 | - sugarss 4126 | - supports-color 4127 | - terser 4128 | dev: true 4129 | 4130 | /w3c-xmlserializer@5.0.0: 4131 | resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} 4132 | engines: {node: '>=18'} 4133 | dependencies: 4134 | xml-name-validator: 5.0.0 4135 | dev: true 4136 | 4137 | /webidl-conversions@4.0.2: 4138 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 4139 | dev: true 4140 | 4141 | /webidl-conversions@7.0.0: 4142 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} 4143 | engines: {node: '>=12'} 4144 | dev: true 4145 | 4146 | /whatwg-encoding@3.1.1: 4147 | resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} 4148 | engines: {node: '>=18'} 4149 | dependencies: 4150 | iconv-lite: 0.6.3 4151 | dev: true 4152 | 4153 | /whatwg-mimetype@4.0.0: 4154 | resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} 4155 | engines: {node: '>=18'} 4156 | dev: true 4157 | 4158 | /whatwg-url@14.0.0: 4159 | resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} 4160 | engines: {node: '>=18'} 4161 | dependencies: 4162 | tr46: 5.0.0 4163 | webidl-conversions: 7.0.0 4164 | dev: true 4165 | 4166 | /whatwg-url@7.1.0: 4167 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 4168 | dependencies: 4169 | lodash.sortby: 4.7.0 4170 | tr46: 1.0.1 4171 | webidl-conversions: 4.0.2 4172 | dev: true 4173 | 4174 | /which-boxed-primitive@1.0.2: 4175 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 4176 | dependencies: 4177 | is-bigint: 1.0.4 4178 | is-boolean-object: 1.1.2 4179 | is-number-object: 1.0.7 4180 | is-string: 1.0.7 4181 | is-symbol: 1.0.4 4182 | dev: true 4183 | 4184 | /which-collection@1.0.1: 4185 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 4186 | dependencies: 4187 | is-map: 2.0.2 4188 | is-set: 2.0.2 4189 | is-weakmap: 2.0.1 4190 | is-weakset: 2.0.2 4191 | dev: true 4192 | 4193 | /which-typed-array@1.1.14: 4194 | resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} 4195 | engines: {node: '>= 0.4'} 4196 | dependencies: 4197 | available-typed-arrays: 1.0.6 4198 | call-bind: 1.0.5 4199 | for-each: 0.3.3 4200 | gopd: 1.0.1 4201 | has-tostringtag: 1.0.2 4202 | dev: true 4203 | 4204 | /which@2.0.2: 4205 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 4206 | engines: {node: '>= 8'} 4207 | hasBin: true 4208 | dependencies: 4209 | isexe: 2.0.0 4210 | dev: true 4211 | 4212 | /why-is-node-running@2.2.2: 4213 | resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} 4214 | engines: {node: '>=8'} 4215 | hasBin: true 4216 | dependencies: 4217 | siginfo: 2.0.0 4218 | stackback: 0.0.2 4219 | dev: true 4220 | 4221 | /wrap-ansi@7.0.0: 4222 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 4223 | engines: {node: '>=10'} 4224 | dependencies: 4225 | ansi-styles: 4.3.0 4226 | string-width: 4.2.3 4227 | strip-ansi: 6.0.1 4228 | dev: true 4229 | 4230 | /wrap-ansi@8.1.0: 4231 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 4232 | engines: {node: '>=12'} 4233 | dependencies: 4234 | ansi-styles: 6.2.1 4235 | string-width: 5.1.2 4236 | strip-ansi: 7.1.0 4237 | dev: true 4238 | 4239 | /wrappy@1.0.2: 4240 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 4241 | dev: true 4242 | 4243 | /ws@8.16.0: 4244 | resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} 4245 | engines: {node: '>=10.0.0'} 4246 | peerDependencies: 4247 | bufferutil: ^4.0.1 4248 | utf-8-validate: '>=5.0.2' 4249 | peerDependenciesMeta: 4250 | bufferutil: 4251 | optional: true 4252 | utf-8-validate: 4253 | optional: true 4254 | dev: true 4255 | 4256 | /xml-name-validator@5.0.0: 4257 | resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} 4258 | engines: {node: '>=18'} 4259 | dev: true 4260 | 4261 | /xmlchars@2.2.0: 4262 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 4263 | dev: true 4264 | 4265 | /yallist@3.1.1: 4266 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 4267 | dev: true 4268 | 4269 | /yallist@4.0.0: 4270 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 4271 | dev: true 4272 | 4273 | /yocto-queue@0.1.0: 4274 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 4275 | engines: {node: '>=10'} 4276 | dev: true 4277 | 4278 | /yocto-queue@1.0.0: 4279 | resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} 4280 | engines: {node: '>=12.20'} 4281 | dev: true 4282 | -------------------------------------------------------------------------------- /src/cache.ts: -------------------------------------------------------------------------------- 1 | import { LRU } from "./lru"; 2 | import { StoreCache } from "./store"; 3 | 4 | export { LRU }; 5 | 6 | export const createCache = (lru: LRU): StoreCache => ({ 7 | lookup: key => !!lru.get(key), 8 | insert: (key, onTrim) => lru.set(key, true, onTrim), 9 | }); 10 | -------------------------------------------------------------------------------- /src/core.test.tsx: -------------------------------------------------------------------------------- 1 | import { renderHook } from "@solidjs/testing-library"; 2 | import { runWithOwner } from "solid-js"; 3 | import { afterEach, beforeEach, describe, expect, it, MockedFunction, vi } from "vitest"; 4 | 5 | import { createMutator, createRevalidator, SwrOpts, SwrProvider } from "./core"; 6 | import { Store } from "./store"; 7 | 8 | describe("core", () => { 9 | let fetcher: MockedFunction; 10 | let store: SwrOpts["store"]; 11 | let key: string; 12 | 13 | const renderHelper = () => 14 | renderHook( 15 | () => ({ 16 | revalidator: createRevalidator(), 17 | mutator: createMutator(), 18 | }), 19 | { 20 | wrapper: props => ( 21 | {props.children} 22 | ), 23 | } 24 | ); 25 | 26 | beforeEach(() => { 27 | key = "foo"; 28 | 29 | store = new Store(); 30 | store.mount(key); 31 | 32 | fetcher = vi.fn((key, _opts) => Promise.resolve(key)); 33 | vi.useFakeTimers(); 34 | }); 35 | afterEach(() => { 36 | vi.useRealTimers(); 37 | }); 38 | 39 | describe("createRevalidator", () => { 40 | it("calls fetcher and updates store", async () => { 41 | const { result } = renderHelper(); 42 | 43 | void result.revalidator(key); 44 | 45 | expect(fetcher).toHaveBeenCalledTimes(1); 46 | expect(fetcher).toHaveBeenCalledWith( 47 | key, 48 | // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment 49 | expect.objectContaining({ signal: expect.anything() }) 50 | ); 51 | 52 | expect(store.lookupOrDef(key)._isBusy).toBe(true); 53 | expect(store.lookupOrDef(key).isLoading).toBe(true); 54 | expect(store.lookupOrDef(key)._onSuccess).toBe(0); 55 | expect(store.lookupOrDef(key).err).toBeUndefined(); 56 | 57 | await vi.runAllTimersAsync(); 58 | 59 | expect(store.lookupOrDef(key)._isBusy).toBe(false); 60 | expect(store.lookupOrDef(key).isLoading).toBe(false); 61 | expect(store.lookupOrDef(key).data).toBe(key); 62 | expect(store.lookupOrDef(key)._onSuccess).toBe(1); 63 | expect(store.lookupOrDef(key).err).toBeUndefined(); 64 | }); 65 | 66 | it("null response from api", async () => { 67 | fetcher = vi.fn(() => Promise.resolve(null)); 68 | store.update("foo", { data: "foo" }); 69 | 70 | const { result } = renderHelper(); 71 | 72 | void result.revalidator("foo"); 73 | 74 | await vi.runAllTimersAsync(); 75 | 76 | expect(store.lookupOrDef("foo").data).toBeNull(); 77 | }); 78 | 79 | it("deduplicates calls to fetcher", () => { 80 | const { result } = renderHelper(); 81 | 82 | void result.revalidator(key); 83 | void result.revalidator(key); 84 | void result.revalidator(key); 85 | 86 | expect(fetcher).toHaveBeenCalledTimes(1); 87 | }); 88 | 89 | it("aborts the previous call to fetcher", () => { 90 | const { owner, result, cleanup } = renderHelper(); 91 | 92 | runWithOwner(owner, () => { 93 | void result.revalidator(key); 94 | }); 95 | 96 | expect(store.lookupOrDef(key)._isBusy).toBe(true); 97 | cleanup(); 98 | expect(store.lookupOrDef(key)._isBusy).toBe(false); 99 | }); 100 | 101 | it("catches fetcher errors", async () => { 102 | fetcher.mockRejectedValue(new Error("error")); 103 | 104 | const { result } = renderHelper(); 105 | 106 | void result.revalidator(key); 107 | 108 | expect(store.lookupOrDef(key)._onError).toBe(0); 109 | expect(store.lookupOrDef(key).err).toBeUndefined(); 110 | 111 | await vi.runAllTimersAsync(); 112 | 113 | expect(store.lookupOrDef(key).err).toBeInstanceOf(Error); 114 | expect(store.lookupOrDef(key)._onError).toBe(1); 115 | }); 116 | }); 117 | 118 | describe("createMutator", () => { 119 | it("mutates, xd", () => { 120 | const { result } = renderHelper(); 121 | 122 | expect(store.lookupOrDef(key).data).toBeUndefined(); 123 | result.mutator(key, key); 124 | expect(store.lookupOrDef(key).data).toBe(key); 125 | }); 126 | }); 127 | }); 128 | -------------------------------------------------------------------------------- /src/core.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Accessor, 3 | batch, 4 | createComponent, 5 | createContext, 6 | createEffect, 7 | getOwner, 8 | JSX, 9 | mergeProps, 10 | on, 11 | onCleanup, 12 | untrack, 13 | useContext, 14 | } from "solid-js"; 15 | 16 | import { Store } from "./store"; 17 | import { noop, runIfTruthy, tryCatch } from "./utils"; 18 | 19 | export type FetcherOpts = { 20 | signal: AbortSignal; 21 | }; 22 | 23 | export type SwrOpts = { 24 | store: Store; 25 | 26 | fetcher: (key: string, { signal }: FetcherOpts) => Promise; 27 | /** gets direct store references (don't mutate) */ 28 | onSuccess: (key: string, res: D) => void; 29 | /** gets direct store references (don't mutate) */ 30 | onError: (key: string, err: E) => void; 31 | 32 | /** gets direct references to response (don't mutate) */ 33 | onSuccessDeduped: (key: string, res: D) => void; 34 | /** gets direct reference to response (don't mutate) */ 35 | onErrorDeduped: (key: string, err: E) => void; 36 | }; 37 | 38 | /** 39 | * data will be reconcile'd or produce'd, 40 | * if `undefined` is passed, data is deleted 41 | * */ 42 | export type Mutator = D | ((draft: D | undefined) => void) | undefined; 43 | 44 | const Context = createContext({ 45 | store: new Store(), 46 | fetcher: () => Promise.reject(new Error("pass your own fetcher")), 47 | onSuccess: noop, 48 | onError: noop, 49 | onSuccessDeduped: noop, 50 | onErrorDeduped: noop, 51 | }); 52 | 53 | export const useSwrContext = () => useContext(Context); 54 | 55 | export const SwrProvider = (props: { value: Partial; children: JSX.Element }) => { 56 | // eslint-disable-next-line solid/reactivity 57 | const value = mergeProps(useSwrContext(), props.value); 58 | 59 | return createComponent(Context.Provider, { 60 | value, 61 | get children() { 62 | return props.children; 63 | }, 64 | }); 65 | }; 66 | 67 | export function createRevalidator(opts?: SwrOpts) { 68 | const ctx = opts || useSwrContext(); 69 | 70 | return (key: string) => 71 | // eslint-disable-next-line solid/reactivity 72 | untrack(async () => { 73 | const item = ctx.store.lookupOrDef(key); 74 | if (item._isBusy) return; 75 | 76 | const controller = new AbortController(); 77 | if (getOwner()) { 78 | onCleanup(() => { 79 | ctx.store.update(key, { _isBusy: false }); 80 | controller.abort(); 81 | }); 82 | } 83 | 84 | ctx.store.update(key, { 85 | err: undefined, 86 | _isBusy: true, 87 | isLoading: true, 88 | }); 89 | 90 | const [err, res] = await tryCatch( 91 | // eslint-disable-next-line solid/reactivity 92 | () => ctx.fetcher(key, { signal: controller.signal }) as Promise 93 | ); 94 | 95 | if ( 96 | controller.signal.aborted && 97 | err instanceof DOMException && 98 | err.name === "AbortError" 99 | ) { 100 | return; 101 | } 102 | 103 | batch(() => { 104 | ctx.store.update(key, { _isBusy: false, isLoading: false }); 105 | 106 | const item = ctx.store.lookupOrDef(key); 107 | 108 | if (err) { 109 | ctx.store.update(key, { err, _onError: item._onError + 1 }); 110 | ctx.onErrorDeduped(key, err); 111 | } else { 112 | ctx.store.update(key, { 113 | data: res, 114 | _onSuccess: item._onSuccess + 1, 115 | }); 116 | ctx.onSuccessDeduped(key, res as D); 117 | } 118 | }); 119 | 120 | return res as D; 121 | }); 122 | } 123 | 124 | export function createMutator(opts?: SwrOpts) { 125 | const ctx = opts || useSwrContext(); 126 | 127 | return (key: string, mutator: Mutator) => 128 | untrack(() => { 129 | if (mutator instanceof Function) { 130 | ctx.store.updateDataProduce(key, mutator); 131 | } else { 132 | ctx.store.update(key, { data: mutator }); 133 | } 134 | }); 135 | } 136 | 137 | export function useSwr( 138 | key: Accessor, 139 | local?: Partial> 140 | ) { 141 | const ctx = mergeProps(useSwrContext(), local); 142 | 143 | const runWithKey = any>(fn: T): ReturnType | undefined => 144 | runIfTruthy(key, fn); 145 | 146 | const revalidator = createRevalidator(ctx as SwrOpts); 147 | const mutator = createMutator(ctx as SwrOpts); 148 | 149 | const revalidate = () => runWithKey(k => revalidator(k)); 150 | const mutate = (payload: Mutator) => runWithKey(k => mutator(k, payload)); 151 | 152 | createEffect( 153 | on(key, k => { 154 | if (!k) return; 155 | // rn only used in `useMatchRevalidate` 156 | // to reduce network requests for not used items 157 | ctx.store.mount(k); 158 | onCleanup(() => ctx.store.unmount(k)); 159 | 160 | void revalidator(k); 161 | }) 162 | ); 163 | 164 | createEffect( 165 | on( 166 | () => ctx.store.lookupOrDef(key())._onSuccess, 167 | count => { 168 | if (count === 0) return; 169 | // eslint-disable-next-line solid/reactivity 170 | runWithKey(k => { 171 | ctx.onSuccess(k, ctx.store.lookupOrDef(k).data as D); 172 | }); 173 | } 174 | ) 175 | ); 176 | createEffect( 177 | on( 178 | () => ctx.store.lookupOrDef(key())._onError, 179 | count => { 180 | if (count === 0) return; 181 | // eslint-disable-next-line solid/reactivity 182 | runWithKey(k => { 183 | ctx.onError(k, ctx.store.lookupOrDef(k).err as E); 184 | }); 185 | } 186 | ) 187 | ); 188 | 189 | return { 190 | mutate, 191 | revalidate, 192 | v: () => ctx.store.lookupOrDef(key()), 193 | }; 194 | } 195 | -------------------------------------------------------------------------------- /src/extra.test.tsx: -------------------------------------------------------------------------------- 1 | import { renderHook } from "@solidjs/testing-library"; 2 | import { Accessor, createSignal } from "solid-js"; 3 | import { afterEach, beforeEach, describe, expect, it, MockedFunction, vi } from "vitest"; 4 | 5 | import { SwrOpts, SwrProvider } from "./core"; 6 | import { SwrFullOpts, useSwrFull } from "./extra"; 7 | import { Store } from "./store"; 8 | 9 | describe("extra", () => { 10 | let key: Accessor; 11 | let opts: Partial; 12 | let fetcher: MockedFunction; 13 | let store: SwrOpts["store"]; 14 | 15 | beforeEach(() => { 16 | opts = {}; 17 | key = () => "foo"; 18 | store = new Store(); 19 | fetcher = vi.fn((key, _opts) => Promise.resolve(key)); 20 | vi.useFakeTimers(); 21 | }); 22 | afterEach(() => { 23 | vi.useRealTimers(); 24 | }); 25 | 26 | describe("useSwrFull", () => { 27 | const renderHelper = () => 28 | renderHook(() => useSwrFull(key, opts), { 29 | wrapper: props => ( 30 | {props.children} 31 | ), 32 | }); 33 | 34 | it("calls fetcher and updates store", async () => { 35 | const { result } = renderHelper(); 36 | 37 | expect(fetcher).toHaveBeenCalledTimes(1); 38 | expect(fetcher).toHaveBeenCalledWith( 39 | "foo", 40 | // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment 41 | expect.objectContaining({ signal: expect.anything() }) 42 | ); 43 | 44 | expect(result.v()._isBusy).toBe(true); 45 | expect(result.v().isLoading).toBe(true); 46 | expect(result.v()._onSuccess).toBe(0); 47 | expect(result.v().err).toBeUndefined(); 48 | 49 | await vi.runAllTimersAsync(); 50 | 51 | expect(result.v()._isBusy).toBe(false); 52 | expect(result.v().isLoading).toBe(false); 53 | expect(result.v().data).toBe("foo"); 54 | expect(result.v()._onSuccess).toBe(1); 55 | expect(result.v().err).toBeUndefined(); 56 | }); 57 | 58 | it("keeps previous data", async () => { 59 | opts.keepPreviousData = true; 60 | 61 | const [signal, setSignal] = createSignal("foo"); 62 | key = signal; 63 | 64 | const { result } = renderHelper(); 65 | await vi.runAllTimersAsync(); 66 | 67 | expect(result.v().data).toBe("foo"); 68 | expect(result.v().isLoading).toBe(false); 69 | 70 | setSignal("foobar"); 71 | expect(result.v().data).toBe("foo"); 72 | expect(result.v().isLoading).toBe(true); 73 | 74 | await vi.runAllTimersAsync(); 75 | expect(result.v().data).toBe("foobar"); 76 | expect(result.v().isLoading).toBe(false); 77 | }); 78 | 79 | it("sets hasFetched on success", async () => { 80 | const { result } = renderHelper(); 81 | 82 | expect(result.hasFetched()).toBe(false); 83 | await vi.runAllTimersAsync(); 84 | expect(result.hasFetched()).toBe(true); 85 | }); 86 | 87 | it("sets hasFetched on error", async () => { 88 | // @ts-expect-error I'm not typing this 89 | fetcher = () => Promise.reject(new Error("foo")) as any; 90 | 91 | const { result } = renderHelper(); 92 | 93 | expect(result.hasFetched()).toBe(false); 94 | await vi.runAllTimersAsync(); 95 | expect(result.hasFetched()).toBe(true); 96 | }); 97 | }); 98 | }); 99 | -------------------------------------------------------------------------------- /src/extra.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Accessor, 3 | batch, 4 | createComponent, 5 | createContext, 6 | createEffect, 7 | createMemo, 8 | createSignal, 9 | JSX, 10 | mergeProps, 11 | on, 12 | onCleanup, 13 | untrack, 14 | useContext, 15 | } from "solid-js"; 16 | 17 | import { 18 | createMutator, 19 | createRevalidator, 20 | Mutator, 21 | SwrOpts, 22 | useSwr, 23 | useSwrContext, 24 | } from "./core"; 25 | import { StoreItem } from "./store"; 26 | import { uFn, useWinEvent } from "./utils"; 27 | 28 | export type Fallback = { 29 | [key: string]: unknown; 30 | }; 31 | 32 | export type SwrFullOpts = { 33 | keepPreviousData: boolean; 34 | revalidateOnFocus: boolean; 35 | revalidateOnOnline: boolean; 36 | fallback: Fallback; 37 | refreshInterval: number; 38 | }; 39 | 40 | const Context = createContext({ 41 | keepPreviousData: false, 42 | revalidateOnFocus: true, 43 | revalidateOnOnline: true, 44 | fallback: {}, 45 | refreshInterval: 0, 46 | }); 47 | 48 | export const useSwrFullContext = () => useContext(Context); 49 | 50 | export const SwrFullProvider = (props: { 51 | children: JSX.Element; 52 | value: Partial; 53 | }) => { 54 | // eslint-disable-next-line solid/reactivity 55 | const value = mergeProps(useSwrFullContext(), props.value); 56 | 57 | return createComponent(Context.Provider, { 58 | value, 59 | get children() { 60 | return props.children; 61 | }, 62 | }); 63 | }; 64 | 65 | export type GetKey = (index: number, prev: D | undefined) => string | undefined; 66 | 67 | export function useMatchRevalidate(opts?: SwrOpts) { 68 | const ctx = opts || useSwrContext(); 69 | const revalidator = createRevalidator(ctx); 70 | 71 | const revalidate = (filter: (key: string) => boolean) => { 72 | batch(() => { 73 | const keys = ctx.store 74 | .keys() 75 | .filter(filter) 76 | // reduce unnecessary network requests 77 | .filter(x => ctx.store.lookupOrDef(x)._mountedCount > 0); 78 | 79 | for (const key of keys) { 80 | void revalidator(key); 81 | } 82 | }); 83 | }; 84 | 85 | return uFn(revalidate); 86 | } 87 | 88 | export function useMatchMutate(opts?: SwrOpts) { 89 | const ctx = opts || useSwrContext(); 90 | const mutator = createMutator(ctx); 91 | 92 | const mutate = (filter: (key: string) => boolean, payload: Mutator) => { 93 | batch(() => { 94 | const keys = ctx.store.keys().filter(filter); 95 | 96 | for (const key of keys) { 97 | mutator(key, payload); 98 | } 99 | }); 100 | }; 101 | 102 | return uFn(mutate); 103 | } 104 | 105 | export function useSwrInfinite(getKey: GetKey, local?: Partial>) { 106 | const [data, setData] = createSignal>[]>([]); 107 | const [err, setErr] = createSignal(); 108 | const [isLoading, setIsLoading] = createSignal(false); 109 | 110 | const [index, setIndex] = createSignal(0); 111 | 112 | const ctx = mergeProps(useSwrContext(), local); 113 | 114 | createEffect( 115 | on(index, index => { 116 | const key = getKey(index, data().at(-1)?.().data); 117 | if (!key) return; 118 | 119 | setIsLoading(true); 120 | setErr(undefined); 121 | 122 | useSwr(() => key, { 123 | ...local, 124 | onSuccess: () => { 125 | setIsLoading(false); 126 | setData(prev => { 127 | prev = [...prev]; 128 | // eslint-disable-next-line solid/reactivity 129 | prev[index] = () => ctx.store.lookupOrDef(key); 130 | return prev; 131 | }); 132 | }, 133 | onError: (_, err) => { 134 | setIsLoading(false); 135 | setErr(() => err); 136 | }, 137 | }); 138 | }) 139 | ); 140 | 141 | return { 142 | index, 143 | setIndex, 144 | isLoading, 145 | data, 146 | err, 147 | }; 148 | } 149 | 150 | export function useSwrFull( 151 | key: Accessor, 152 | _opts?: Partial> 153 | ) { 154 | const ctx = mergeProps(useSwrContext(), useSwrFullContext(), _opts); 155 | 156 | const [lazyKey, setLazyKey] = createSignal(""); 157 | 158 | const core = useSwr(key, ctx); 159 | 160 | const [hasFetched, setHasFetched] = createSignal(false); 161 | // untrack is probably not needed here 162 | setHasFetched(untrack(() => !!core.v().data)); 163 | 164 | createEffect(() => { 165 | if (ctx.refreshInterval <= 0) return; 166 | const interval = setInterval(core.revalidate, ctx.refreshInterval); 167 | onCleanup(() => clearInterval(interval)); 168 | }); 169 | 170 | createEffect(() => { 171 | if (!ctx.revalidateOnFocus) return; 172 | useWinEvent("focus", core.revalidate); 173 | }); 174 | 175 | createEffect(() => { 176 | if (!ctx.revalidateOnOnline) return; 177 | useWinEvent("online", core.revalidate); 178 | }); 179 | 180 | createEffect(() => { 181 | if (core.v().data || core.v().err) setHasFetched(true); 182 | }); 183 | 184 | createEffect(() => { 185 | const k = key(); 186 | if (ctx.keepPreviousData && core.v().data && k) setLazyKey(k); 187 | }); 188 | 189 | const v = createMemo((): StoreItem => { 190 | const item = ctx.store.lookupOrDef(key()); 191 | 192 | const lazy = ctx.store.lookupOrDef(lazyKey()); 193 | const keepPrev = ctx.keepPreviousData; 194 | 195 | // untrack here to not track all item properties when v is accessed 196 | return untrack(() => { 197 | let data = item.data; 198 | if (keepPrev && lazy.data) data = lazy.data; 199 | 200 | const fallback = key() ? ctx.fallback[key()!] : undefined; 201 | // eslint-disable-next-line solid/reactivity 202 | return mergeProps(item, { data: data || fallback }) as StoreItem; 203 | }); 204 | }); 205 | 206 | return { 207 | ...core, 208 | hasFetched, 209 | v, 210 | }; 211 | } 212 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./core"; 2 | export * from "./store"; 3 | -------------------------------------------------------------------------------- /src/lru.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, it } from "vitest"; 2 | 3 | import { LRU } from "./lru"; 4 | 5 | describe("lru", () => { 6 | // thanks to: 7 | // https://github.com/ThePrimeagen/kata-machine/blob/master/src/__tests__/LRU.ts 8 | it("LRU", () => { 9 | const lru = new LRU(3); 10 | 11 | expect(lru.get("foo")).toEqual(undefined); 12 | lru.set("foo", 69); 13 | expect(lru.get("foo")).toEqual(69); 14 | 15 | lru.set("bar", 420); 16 | expect(lru.get("bar")).toEqual(420); 17 | 18 | lru.set("baz", 1337); 19 | expect(lru.get("baz")).toEqual(1337); 20 | 21 | lru.set("ball", 69420); 22 | expect(lru.get("ball")).toEqual(69420); 23 | expect(lru.get("foo")).toEqual(undefined); 24 | expect(lru.get("bar")).toEqual(420); 25 | lru.set("foo", 69); 26 | expect(lru.get("bar")).toEqual(420); 27 | expect(lru.get("foo")).toEqual(69); 28 | 29 | // shouldn't of been deleted, but since bar was get'd, bar was added to the 30 | // front of the list, so baz became the end 31 | expect(lru.get("baz")).toEqual(undefined); 32 | }); 33 | }); 34 | -------------------------------------------------------------------------------- /src/lru.ts: -------------------------------------------------------------------------------- 1 | type Node = { 2 | value: V; 3 | next?: Node; 4 | prev?: Node; 5 | }; 6 | 7 | type OnTrim = (key: K) => void; 8 | 9 | export class LRU { 10 | private lookup: Map>; 11 | private reverseLookup: Map, K>; 12 | private capacity: number; 13 | private length: number; 14 | private head?: Node; 15 | private tail?: Node; 16 | 17 | constructor(capacity = 500) { 18 | this.capacity = capacity; 19 | 20 | this.lookup = new Map(); 21 | this.reverseLookup = new Map(); 22 | 23 | this.length = 0; 24 | this.head = undefined; 25 | this.tail = undefined; 26 | } 27 | 28 | /** if the value is an object this returns a direct reference */ 29 | get(key: K): V | undefined { 30 | const node = this.lookup.get(key); 31 | if (!node) return undefined; 32 | 33 | this.detach(node); 34 | this.prepend(node); 35 | 36 | return node.value; 37 | } 38 | 39 | set(key: K, value: V, onTrim?: OnTrim): void { 40 | let node = this.lookup.get(key); 41 | if (!node) { 42 | node = { value }; 43 | this.length++; 44 | 45 | this.prepend(node); 46 | this.trimCache(onTrim); 47 | 48 | this.lookup.set(key, node); 49 | this.reverseLookup.set(node, key); 50 | } else { 51 | this.detach(node); 52 | this.prepend(node); 53 | node.value = value; 54 | } 55 | } 56 | 57 | keys(): K[] { 58 | return Array.from(this.lookup.keys()); 59 | } 60 | 61 | private trimCache(onTrim?: OnTrim): void { 62 | if (this.length <= this.capacity) return; 63 | 64 | const tail = this.tail as Node; 65 | this.detach(tail); 66 | 67 | const key = this.reverseLookup.get(tail) as K; 68 | this.lookup.delete(key); 69 | this.reverseLookup.delete(tail); 70 | 71 | onTrim?.(key); 72 | } 73 | 74 | private detach(node: Node): void { 75 | if (node.prev) { 76 | node.prev.next = node.next; 77 | } 78 | if (node.next) { 79 | node.next.prev = node.prev; 80 | } 81 | 82 | if (this.head === node) { 83 | this.head = this.head.next; 84 | } 85 | 86 | if (this.tail === node) { 87 | this.tail = this.tail.prev; 88 | } 89 | 90 | node.next = undefined; 91 | node.prev = undefined; 92 | } 93 | 94 | private prepend(node: Node): void { 95 | if (!this.head) { 96 | this.head = node; 97 | this.tail = node; 98 | return; 99 | } 100 | 101 | node.next = this.head; 102 | this.head.prev = node; 103 | this.head = node; 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /src/store.test.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-unsafe-member-access */ 2 | 3 | import { beforeEach, describe, expect, it } from "vitest"; 4 | 5 | import { Store, StoreCache } from "./store"; 6 | import { noop } from "./utils"; 7 | 8 | describe("store", () => { 9 | const key = "foobar"; 10 | let store: Store; 11 | let cache: StoreCache; 12 | 13 | beforeEach(() => { 14 | cache = { 15 | lookup: noop, 16 | insert: noop, 17 | }; 18 | store = new Store(cache); 19 | }); 20 | 21 | it("inserts items into solid store", () => { 22 | store.update(key, { 23 | isLoading: true, 24 | _isBusy: true, 25 | }); 26 | 27 | expect(store.lookupOrDef(key)).toEqual({ 28 | ...Store.defaultItem, 29 | _exists: true, 30 | isLoading: true, 31 | _isBusy: true, 32 | }); 33 | }); 34 | 35 | it("cache can delete items at will", () => { 36 | const key2 = "foobar222"; 37 | 38 | cache.insert = (_key, onTrim) => { 39 | // delete key 40 | if (_key === key2) onTrim(key); 41 | }; 42 | 43 | store.update(key, {}); 44 | store.update(key2, {}); 45 | 46 | expect(store.lookupOrDef(key)._exists).toBe(false); 47 | expect(store.lookupOrDef(key2)._exists).toBe(true); 48 | }); 49 | 50 | it("returns default item when key does not exist", () => { 51 | expect(store.lookupOrDef(key)).toEqual(Store.defaultItem); 52 | }); 53 | 54 | it("keys() returns correct keys", () => { 55 | cache.insert = (_key, onTrim) => { 56 | if (_key === "3") onTrim("1"); 57 | }; 58 | 59 | store.update("1", {}); 60 | store.update("2", {}); 61 | store.update("3", {}); 62 | 63 | expect(store.keys()).toEqual(["2", "3"]); 64 | }); 65 | 66 | it("can update with produce", () => { 67 | store.update("1", { data: { foo: { bar: {} } } } as any); 68 | 69 | store.updateDataProduce("1", (prev: any) => { 70 | prev.foo.bar = { bar: 2 }; 71 | }); 72 | 73 | expect(store.lookupOrDef("1").data).toEqual( 74 | expect.objectContaining({ 75 | foo: { bar: { bar: 2 } }, 76 | }) 77 | ); 78 | }); 79 | }); 80 | -------------------------------------------------------------------------------- /src/store.ts: -------------------------------------------------------------------------------- 1 | import { batch, untrack } from "solid-js"; 2 | import { createStore, produce, reconcile, SetStoreFunction } from "solid-js/store"; 3 | 4 | import { noop } from "./utils"; 5 | 6 | export type OnTrimFn = (key: string) => void; 7 | 8 | export type StoreCache = { 9 | /** item has been inserted into store */ 10 | insert: (key: string, onTrim: OnTrimFn) => void; 11 | /** item has been looked up */ 12 | lookup: (key: string, onTrim: OnTrimFn) => void; 13 | }; 14 | 15 | export type StoreItem = { 16 | data: D | undefined; 17 | err: E | undefined; 18 | isLoading: boolean; 19 | 20 | /** touch this only if you know what you're doing, this controls deduplication */ 21 | _isBusy: boolean; 22 | 23 | /** whether this item exists in store */ 24 | _exists: boolean; 25 | 26 | /** used to call onSuccess for every hook */ 27 | _onSuccess: number; 28 | /** used to call onError for every hook */ 29 | _onError: number; 30 | 31 | /** how many hooks (useSwr from core) are attached to this item */ 32 | _mountedCount: number; 33 | }; 34 | 35 | export type SolidStore = { 36 | [key: string]: StoreItem | undefined; 37 | }; 38 | 39 | const defaultCache: StoreCache = { 40 | insert: noop, 41 | lookup: noop, 42 | }; 43 | 44 | export class Store { 45 | private cache: StoreCache; 46 | 47 | private store: SolidStore; 48 | private setStore: SetStoreFunction; 49 | 50 | private boundDestroy: (key: string) => void; 51 | 52 | static defaultItem: StoreItem = { 53 | _mountedCount: 0, 54 | _exists: false, 55 | _isBusy: false, 56 | _onSuccess: 0, 57 | _onError: 0, 58 | isLoading: false, 59 | err: undefined, 60 | data: undefined, 61 | }; 62 | 63 | constructor(cache?: StoreCache) { 64 | this.boundDestroy = this.destroy.bind(this); 65 | 66 | this.cache = defaultCache; 67 | if (cache) this.cache = cache; 68 | 69 | const [store, setStore] = createStore({}); 70 | // eslint-disable-next-line solid/reactivity 71 | this.store = store; 72 | this.setStore = setStore; 73 | } 74 | 75 | keys(): string[] { 76 | return untrack(() => Object.keys(this.store)); 77 | } 78 | 79 | updateDataProduce(key: string, producer: (data: D | undefined) => void): void { 80 | batch(() => { 81 | untrack(() => this.makeExist(key)); 82 | this.setStore(key, "data", produce(producer)); 83 | }); 84 | } 85 | 86 | update(key: string, partial: Partial>): void { 87 | const setData = "data" in partial; 88 | 89 | const data = partial.data; 90 | // let's give our thanks to the GC that will let us hold on to data above 91 | delete partial.data; 92 | 93 | batch(() => { 94 | untrack(() => this.makeExist(key)); 95 | 96 | this.setStore(key, partial); 97 | if (setData) { 98 | this.setStore(key, "data", reconcile(data)); 99 | } 100 | }); 101 | } 102 | 103 | mount(key: string) { 104 | const n = untrack(() => this.lookupOrDef(key)._mountedCount + 1); 105 | this.update(key, { _mountedCount: n }); 106 | } 107 | unmount(key: string) { 108 | const n = untrack(() => this.lookupOrDef(key)._mountedCount - 1); 109 | this.update(key, { _mountedCount: Math.max(n, 0) }); 110 | } 111 | 112 | lookupOrDef(key?: string): StoreItem { 113 | const def = Store.defaultItem as StoreItem; 114 | if (!key) return def; 115 | 116 | const already = this.lookup(key); 117 | return already || def; 118 | } 119 | 120 | private lookup(key: string): StoreItem | undefined { 121 | this.cache.lookup(key, this.boundDestroy); 122 | return this.store[key] as StoreItem; 123 | } 124 | 125 | private destroy(key: string) { 126 | this.setStore(key, undefined); 127 | } 128 | 129 | private makeExist(key: string): void { 130 | if (this.lookup(key)) return; 131 | this.cache.insert(key, this.boundDestroy); 132 | // have to copy here 133 | this.setStore(key, { ...Store.defaultItem, _exists: true }); 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import { Accessor, onCleanup, onMount, untrack } from "solid-js"; 2 | 3 | type Fn = (...params: any[]) => T; 4 | 5 | export function uFn>(fn: T) { 6 | return ((...params: Parameters) => untrack(() => fn(...params))) as T; 7 | } 8 | 9 | export function runIfTruthy) => R>( 10 | acc: Accessor, 11 | run: G 12 | ) { 13 | const x = acc(); 14 | if (!x) return; 15 | return run(x); 16 | } 17 | 18 | export function noop() {} 19 | 20 | export async function tryCatch( 21 | fn: Fn> 22 | ): Promise<[E] | [undefined, D]> { 23 | try { 24 | return [undefined, await fn()]; 25 | } catch (err: unknown) { 26 | return [err as E]; 27 | } 28 | } 29 | 30 | export function useWinEvent(type: string, cb: Fn) { 31 | onMount(() => { 32 | window.addEventListener(type, cb); 33 | onCleanup(() => window.removeEventListener(type, cb)); 34 | }); 35 | } 36 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "rootDir": "./src", 4 | "baseUrl": ".", 5 | "outDir": "./dist", 6 | "declaration": true, 7 | 8 | "target": "ESNext", 9 | "module": "ESNext", 10 | "lib": ["ESNext", "DOM", "DOM.Iterable"], 11 | "skipLibCheck": true, 12 | "esModuleInterop": true, 13 | 14 | "moduleResolution": "bundler", 15 | "resolveJsonModule": true, 16 | "isolatedModules": true, 17 | "jsx": "preserve", 18 | "jsxImportSource": "solid-js", 19 | 20 | "strict": true, 21 | "noFallthroughCasesInSwitch": true, 22 | "noUncheckedIndexedAccess": true, 23 | }, 24 | 25 | "include": ["src"], 26 | } 27 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "tsup"; 2 | 3 | export default defineConfig({ 4 | clean: true, 5 | target: "esnext", 6 | format: ["cjs", "esm"], 7 | entry: { 8 | extra: "./src/extra.ts", 9 | cache: "./src/cache.ts", 10 | index: "./src/index.ts", 11 | }, 12 | dts: true, 13 | }); 14 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vitest/config"; 2 | import solid from "vite-plugin-solid"; 3 | 4 | export default defineConfig({ 5 | plugins: [solid()], 6 | }); 7 | --------------------------------------------------------------------------------