a collection of tools for fly for fun universe skillulator.lol

move all related repos into single repo

besaid.zone 8fe166be cf5761f4

verified
+6 -1
.gitignore
··· 1 - node_modules
··· 1 + node_modules 2 + .turbo 3 + .env 4 + dist 5 + .DS_Store 6 + *.pem
+2
apps/flyff-exporter/.gitignore
···
··· 1 + node_modules/ 2 + data
+1
apps/flyff-exporter/README.md
···
··· 1 + TODO
apps/flyff-exporter/bun.lockb

This is a binary file and will not be displayed.

+28
apps/flyff-exporter/package.json
···
··· 1 + { 2 + "name": "flyff-exporter", 3 + "version": "1.0.0", 4 + "description": "", 5 + "main": "index.js", 6 + "scripts": { 7 + "items": "bun run src/scripts/items.ts", 8 + "jobs": "bun run src/scripts/jobs.ts", 9 + "skills": "bun run src/scripts/skills.ts", 10 + "awake": "bun run src/scripts/skillawake.ts" 11 + }, 12 + "keywords": [], 13 + "author": "Dane Miller", 14 + "license": "ISC", 15 + "engines": { 16 + "node": ">=17" 17 + }, 18 + "dependencies": { 19 + "flyff.js": "^1.3.0", 20 + "lodash": "^4.17.21" 21 + }, 22 + "devDependencies": { 23 + "@types/bun": "^1.2.11", 24 + "@types/lodash": "^4.14.191", 25 + "@types/node": "^18.11.18", 26 + "typescript": "^4.9.4" 27 + } 28 + }
+46
apps/flyff-exporter/src/scripts/items.ts
···
··· 1 + import * as _ from "lodash"; 2 + import { writeFile, readFile } from "node:fs/promises"; 3 + import { fetchIds } from "../utils/fetchIds"; 4 + 5 + async function main() { 6 + try { 7 + const itemIds = await fetchIds("item"); 8 + const classes: any[] = JSON.parse( 9 + await readFile("./src/data/jobs.json", { 10 + encoding: "utf-8", 11 + }) 12 + ); 13 + 14 + // put item ids into chunks to get around large request error 15 + const chunkedItemIds = chunkArray(itemIds, 399); 16 + 17 + const itemPromises = chunkedItemIds.map(async (item) => { 18 + return await ( 19 + await fetch(`https://api.flyff.com/item/${item.join(",")}`) 20 + ).json(); 21 + }); 22 + 23 + const items = await Promise.all(itemPromises); 24 + 25 + const itemsWithClassNames = items 26 + .flatMap((item) => item) 27 + .filter((item) => item.category === "weapon" || item.category === "armor") 28 + .map((item) => ({ 29 + ...item, 30 + job: classes.find((className) => className.id === item.class), 31 + })); 32 + 33 + await writeFile( 34 + "./src/data/items.json", 35 + JSON.stringify(itemsWithClassNames) 36 + ); 37 + } catch (error) { 38 + console.error(error); 39 + } 40 + } 41 + 42 + function chunkArray(array: unknown[], sizePerChunk: number) { 43 + return _.chunk(array, sizePerChunk); 44 + } 45 + 46 + main();
+26
apps/flyff-exporter/src/scripts/jobs.ts
···
··· 1 + import { FlyffClient } from "flyff.js"; 2 + 3 + const client = new FlyffClient(); 4 + 5 + async function main() { 6 + try { 7 + const classIds = await client.job.getAllIds(); 8 + 9 + const classes = await client.job.getByListOfIds(classIds); 10 + 11 + const cleanedClassDataResponse = classes.map((className) => ({ 12 + id: className.id, 13 + name: className.name, 14 + icon: className.icon, 15 + })); 16 + 17 + await Bun.write( 18 + "./src/data/jobs.json", 19 + JSON.stringify(cleanedClassDataResponse), 20 + ); 21 + } catch (error) { 22 + console.error(error); 23 + } 24 + } 25 + 26 + main();
+32
apps/flyff-exporter/src/scripts/skills.ts
···
··· 1 + import { FlyffClient, type JobObject } from "flyff.js"; 2 + 3 + const client = new FlyffClient(); 4 + 5 + async function main() { 6 + try { 7 + const skillIds = await client.skill.getAllIds(); 8 + const skills = await client.skill.getByListOfIds(skillIds); 9 + 10 + const classes: JobObject[] = await Bun.file("./src/data/jobs.json", { 11 + type: "application/json", 12 + }).json(); 13 + 14 + const cleanedSkillDataResponse = skills.map((skill) => ({ 15 + id: skill.id, 16 + name: skill.name, 17 + description: skill.description, 18 + icon: skill.icon, 19 + level: skill.level, 20 + job: classes.find((className) => skill.class === className.id), 21 + })); 22 + 23 + await Bun.write( 24 + "./src/data/skills.json", 25 + JSON.stringify(cleanedSkillDataResponse), 26 + ); 27 + } catch (error) { 28 + console.error(error); 29 + } 30 + } 31 + 32 + main();
+29
apps/flyff-exporter/src/types/item.ts
···
··· 1 + import { Job } from "./job"; 2 + import { Language } from "./root"; 3 + 4 + export interface Item { 5 + id: number; 6 + name: Language; 7 + description: Language; 8 + icon: string; 9 + class: Job; 10 + level: number; 11 + element: string; 12 + minDefense: number; 13 + maxDefense: number; 14 + category: string; 15 + subcategory: string; 16 + rarity: string; 17 + sex: string; 18 + stack: number; 19 + buyPrice: number; 20 + sellPrice: number; 21 + consumable: boolean; 22 + premium: boolean; 23 + shining: boolean; 24 + tradable: boolean; 25 + deletable: boolean; 26 + durationRealTime: boolean; 27 + transy: number; 28 + spawns: any[]; 29 + }
+7
apps/flyff-exporter/src/types/job.ts
···
··· 1 + import type { Language } from "./root"; 2 + 3 + export interface Job { 4 + id: number; 5 + name: Language; 6 + icon: string; 7 + }
+19
apps/flyff-exporter/src/types/root.ts
···
··· 1 + export interface Language { 2 + en: string; 3 + ar: string; 4 + br: string; 5 + cns: string; 6 + de: string; 7 + fi: string; 8 + fil: string; 9 + fr: string; 10 + it: string; 11 + jp: string; 12 + kr: string; 13 + nl: string; 14 + pl: string; 15 + ru: string; 16 + sp: string; 17 + sw: string; 18 + th: string; 19 + }
+10
apps/flyff-exporter/src/types/skill.ts
···
··· 1 + import { Job } from "./job"; 2 + import { Language } from "./root"; 3 + 4 + export interface Skill { 5 + id: number; 6 + name: Language; 7 + description: Language; 8 + icon: string; 9 + job: Job; 10 + }
+29
apps/flyff-exporter/tsconfig.json
···
··· 1 + { 2 + "compilerOptions": { 3 + // Environment setup & latest features 4 + "lib": ["ESNext"], 5 + "target": "ESNext", 6 + "module": "ESNext", 7 + "moduleDetection": "force", 8 + "jsx": "react-jsx", 9 + "allowJs": true, 10 + 11 + // Bundler mode 12 + "moduleResolution": "bundler", 13 + "allowImportingTsExtensions": true, 14 + "verbatimModuleSyntax": true, 15 + "noEmit": true, 16 + 17 + // Best practices 18 + "strict": true, 19 + "skipLibCheck": true, 20 + "noFallthroughCasesInSwitch": true, 21 + "noUncheckedIndexedAccess": true, 22 + 23 + // Some stricter flags (disabled by default) 24 + "noUnusedLocals": false, 25 + "noUnusedParameters": false, 26 + "noPropertyAccessFromIndexSignature": false 27 + /* Skip type checking all .d.ts files. */ 28 + } 29 + }
+28 -64
apps/skillulator/src/routeTree.gen.ts
··· 10 11 import { createFileRoute } from '@tanstack/react-router' 12 13 - // Import Routes 14 - 15 - import { Route as rootRoute } from './routes/__root' 16 - import { Route as CClassImport } from './routes/c.$class' 17 - 18 - // Create Virtual Routes 19 20 - const IndexLazyImport = createFileRoute('/')() 21 22 - // Create/Update Routes 23 - 24 - const IndexLazyRoute = IndexLazyImport.update({ 25 id: '/', 26 path: '/', 27 - getParentRoute: () => rootRoute, 28 } as any).lazy(() => import('./routes/index.lazy').then((d) => d.Route)) 29 - 30 - const CClassRoute = CClassImport.update({ 31 id: '/c/$class', 32 path: '/c/$class', 33 - getParentRoute: () => rootRoute, 34 } as any) 35 36 - // Populate the FileRoutesByPath interface 37 - 38 - declare module '@tanstack/react-router' { 39 - interface FileRoutesByPath { 40 - '/': { 41 - id: '/' 42 - path: '/' 43 - fullPath: '/' 44 - preLoaderRoute: typeof IndexLazyImport 45 - parentRoute: typeof rootRoute 46 - } 47 - '/c/$class': { 48 - id: '/c/$class' 49 - path: '/c/$class' 50 - fullPath: '/c/$class' 51 - preLoaderRoute: typeof CClassImport 52 - parentRoute: typeof rootRoute 53 - } 54 - } 55 - } 56 - 57 - // Create and export the route tree 58 - 59 export interface FileRoutesByFullPath { 60 '/': typeof IndexLazyRoute 61 '/c/$class': typeof CClassRoute 62 } 63 - 64 export interface FileRoutesByTo { 65 '/': typeof IndexLazyRoute 66 '/c/$class': typeof CClassRoute 67 } 68 - 69 export interface FileRoutesById { 70 - __root__: typeof rootRoute 71 '/': typeof IndexLazyRoute 72 '/c/$class': typeof CClassRoute 73 } 74 - 75 export interface FileRouteTypes { 76 fileRoutesByFullPath: FileRoutesByFullPath 77 fullPaths: '/' | '/c/$class' ··· 80 id: '__root__' | '/' | '/c/$class' 81 fileRoutesById: FileRoutesById 82 } 83 - 84 export interface RootRouteChildren { 85 IndexLazyRoute: typeof IndexLazyRoute 86 CClassRoute: typeof CClassRoute 87 } 88 89 const rootRouteChildren: RootRouteChildren = { 90 IndexLazyRoute: IndexLazyRoute, 91 CClassRoute: CClassRoute, 92 } 93 - 94 - export const routeTree = rootRoute 95 ._addFileChildren(rootRouteChildren) 96 ._addFileTypes<FileRouteTypes>() 97 - 98 - /* ROUTE_MANIFEST_START 99 - { 100 - "routes": { 101 - "__root__": { 102 - "filePath": "__root.tsx", 103 - "children": [ 104 - "/", 105 - "/c/$class" 106 - ] 107 - }, 108 - "/": { 109 - "filePath": "index.lazy.tsx" 110 - }, 111 - "/c/$class": { 112 - "filePath": "c.$class.tsx" 113 - } 114 - } 115 - } 116 - ROUTE_MANIFEST_END */
··· 10 11 import { createFileRoute } from '@tanstack/react-router' 12 13 + import { Route as rootRouteImport } from './routes/__root' 14 + import { Route as CClassRouteImport } from './routes/c.$class' 15 16 + const IndexLazyRouteImport = createFileRoute('/')() 17 18 + const IndexLazyRoute = IndexLazyRouteImport.update({ 19 id: '/', 20 path: '/', 21 + getParentRoute: () => rootRouteImport, 22 } as any).lazy(() => import('./routes/index.lazy').then((d) => d.Route)) 23 + const CClassRoute = CClassRouteImport.update({ 24 id: '/c/$class', 25 path: '/c/$class', 26 + getParentRoute: () => rootRouteImport, 27 } as any) 28 29 export interface FileRoutesByFullPath { 30 '/': typeof IndexLazyRoute 31 '/c/$class': typeof CClassRoute 32 } 33 export interface FileRoutesByTo { 34 '/': typeof IndexLazyRoute 35 '/c/$class': typeof CClassRoute 36 } 37 export interface FileRoutesById { 38 + __root__: typeof rootRouteImport 39 '/': typeof IndexLazyRoute 40 '/c/$class': typeof CClassRoute 41 } 42 export interface FileRouteTypes { 43 fileRoutesByFullPath: FileRoutesByFullPath 44 fullPaths: '/' | '/c/$class' ··· 47 id: '__root__' | '/' | '/c/$class' 48 fileRoutesById: FileRoutesById 49 } 50 export interface RootRouteChildren { 51 IndexLazyRoute: typeof IndexLazyRoute 52 CClassRoute: typeof CClassRoute 53 + } 54 + 55 + declare module '@tanstack/react-router' { 56 + interface FileRoutesByPath { 57 + '/': { 58 + id: '/' 59 + path: '/' 60 + fullPath: '/' 61 + preLoaderRoute: typeof IndexLazyRouteImport 62 + parentRoute: typeof rootRouteImport 63 + } 64 + '/c/$class': { 65 + id: '/c/$class' 66 + path: '/c/$class' 67 + fullPath: '/c/$class' 68 + preLoaderRoute: typeof CClassRouteImport 69 + parentRoute: typeof rootRouteImport 70 + } 71 + } 72 } 73 74 const rootRouteChildren: RootRouteChildren = { 75 IndexLazyRoute: IndexLazyRoute, 76 CClassRoute: CClassRoute, 77 } 78 + export const routeTree = rootRouteImport 79 ._addFileChildren(rootRouteChildren) 80 ._addFileTypes<FileRouteTypes>()
+8
packages/flyff.js/.changeset/README.md
···
··· 1 + # Changesets 2 + 3 + Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 + with multi-package repos, or single-package repos to help you version and publish your code. You can 5 + find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 + 7 + We have a quick list of common questions to get you started engaging with this project in 8 + [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
+11
packages/flyff.js/.changeset/config.json
···
··· 1 + { 2 + "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json", 3 + "changelog": "@changesets/cli/changelog", 4 + "commit": false, 5 + "fixed": [], 6 + "linked": [], 7 + "access": "restricted", 8 + "baseBranch": "main", 9 + "updateInternalDependencies": "patch", 10 + "ignore": [] 11 + }
+18
packages/flyff.js/.github/workflows/main.yml
···
··· 1 + name: CI 2 + on: 3 + push: 4 + branches: 5 + - "**" 6 + 7 + jobs: 8 + build: 9 + runs-on: ubuntu-latest 10 + steps: 11 + - uses: actions/checkout@v3 12 + - uses: oven-sh/setup-bun@v1 13 + - uses: actions/setup-node@v3 14 + with: 15 + node-version: 16.x 16 + 17 + - run: bun install 18 + - run: bun run lint && bun run build
+33
packages/flyff.js/.github/workflows/publish.yml
···
··· 1 + name: Publish 2 + on: 3 + workflow_run: 4 + workflows: ["CI"] 5 + types: 6 + - completed 7 + push: 8 + branches: 9 + - "main" 10 + 11 + concurrency: ${{ github.workflow }}-${{ github.ref }} 12 + 13 + jobs: 14 + publish: 15 + if: ${{ github.event.workflow_run.conclusion == 'success' }} 16 + runs-on: ubuntu-latest 17 + steps: 18 + - uses: actions/checkout@v3 19 + - uses: oven-sh/setup-bun@v1 20 + - uses: actions/setup-node@v3 21 + with: 22 + node-version: 16.x 23 + 24 + - run: bun install 25 + - name: Create Release Pull Request or Publish 26 + id: changesets 27 + uses: changesets/action@v1 28 + with: 29 + publish: bun run release 30 + commit: "chore: release" 31 + env: 32 + GITHUB_TOKEN: ${{ secrets.WORKFLOW_TOKEN }} 33 + NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+130
packages/flyff.js/.gitignore
···
··· 1 + # Logs 2 + logs 3 + *.log 4 + npm-debug.log* 5 + yarn-debug.log* 6 + yarn-error.log* 7 + lerna-debug.log* 8 + .pnpm-debug.log* 9 + 10 + # Diagnostic reports (https://nodejs.org/api/report.html) 11 + report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 + 13 + # Runtime data 14 + pids 15 + *.pid 16 + *.seed 17 + *.pid.lock 18 + 19 + # Directory for instrumented libs generated by jscoverage/JSCover 20 + lib-cov 21 + 22 + # Coverage directory used by tools like istanbul 23 + coverage 24 + *.lcov 25 + 26 + # nyc test coverage 27 + .nyc_output 28 + 29 + # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 + .grunt 31 + 32 + # Bower dependency directory (https://bower.io/) 33 + bower_components 34 + 35 + # node-waf configuration 36 + .lock-wscript 37 + 38 + # Compiled binary addons (https://nodejs.org/api/addons.html) 39 + build/Release 40 + 41 + # Dependency directories 42 + node_modules/ 43 + jspm_packages/ 44 + 45 + # Snowpack dependency directory (https://snowpack.dev/) 46 + web_modules/ 47 + 48 + # TypeScript cache 49 + *.tsbuildinfo 50 + 51 + # Optional npm cache directory 52 + .npm 53 + 54 + # Optional eslint cache 55 + .eslintcache 56 + 57 + # Optional stylelint cache 58 + .stylelintcache 59 + 60 + # Microbundle cache 61 + .rpt2_cache/ 62 + .rts2_cache_cjs/ 63 + .rts2_cache_es/ 64 + .rts2_cache_umd/ 65 + 66 + # Optional REPL history 67 + .node_repl_history 68 + 69 + # Output of 'npm pack' 70 + *.tgz 71 + 72 + # Yarn Integrity file 73 + .yarn-integrity 74 + 75 + # dotenv environment variable files 76 + .env 77 + .env.development.local 78 + .env.test.local 79 + .env.production.local 80 + .env.local 81 + 82 + # parcel-bundler cache (https://parceljs.org/) 83 + .cache 84 + .parcel-cache 85 + 86 + # Next.js build output 87 + .next 88 + out 89 + 90 + # Nuxt.js build / generate output 91 + .nuxt 92 + dist 93 + 94 + # Gatsby files 95 + .cache/ 96 + # Comment in the public line in if your project uses Gatsby and not Next.js 97 + # https://nextjs.org/blog/next-9-1#public-directory-support 98 + # public 99 + 100 + # vuepress build output 101 + .vuepress/dist 102 + 103 + # vuepress v2.x temp and cache directory 104 + .temp 105 + .cache 106 + 107 + # Docusaurus cache and generated files 108 + .docusaurus 109 + 110 + # Serverless directories 111 + .serverless/ 112 + 113 + # FuseBox cache 114 + .fusebox/ 115 + 116 + # DynamoDB Local files 117 + .dynamodb/ 118 + 119 + # TernJS port file 120 + .tern-port 121 + 122 + # Stores VSCode versions used for testing VSCode extensions 123 + .vscode-test 124 + 125 + # yarn v2 126 + .yarn/cache 127 + .yarn/unplugged 128 + .yarn/build-state.yml 129 + .yarn/install-state.gz 130 + .pnp.*
+4
packages/flyff.js/.husky/commit-msg
···
··· 1 + #!/usr/bin/env sh 2 + . "$(dirname -- "$0")/_/husky.sh" 3 + 4 + npx --no -- commitlint --edit ${1}
+115
packages/flyff.js/CHANGELOG.md
···
··· 1 + # flyff.js 2 + 3 + ## 1.3.0 4 + 5 + ### Minor Changes 6 + 7 + - 5831f38: Add new housing endpoint 8 + 9 + ## 1.2.0 10 + 11 + ### Minor Changes 12 + 13 + - 9f38a5e: - tradegreenchips 14 + 15 + - rainbowraceapply 16 + - createultimate 17 + - traderings 18 + - tradeearrings 19 + - tradenecklaces 20 + - dismantle 21 + - fwcboard 22 + - fwcteleport 23 + - fwcranking 24 + - fwcspectate 25 + - fwcexchange 26 + - fwccollect 27 + - expanddrop 28 + - allspeed 29 + - arcaneinsightchance 30 + - ripostereflexchance 31 + - tetherRange 32 + - spreadOnExpireRange 33 + - probability 34 + - conditionalBuff 35 + - ultimateConvertible 36 + - addMax on the ability schematic. When this value is present, add is the minimum value and addMax is the maximum value in the random range. You can see this in action on weapons such as Lusaka's Crystal Bow. 37 + - Added new possibleRandomStats array on items which contains the list of possible additional stats, used on Ultimate weapons 38 + - sunstone 39 + - rainbowrace 40 + - story 41 + - cursed 42 + 43 + ## 1.1.6 44 + 45 + ### Patch Changes 46 + 47 + - 44332f7: Add missing `hp` property to `MonsterObject` type 48 + 49 + ## 1.1.5 50 + 51 + ### Patch Changes 52 + 53 + - 2efc91f: Add missing `combo` union type to `SkillObject` interface 54 + 55 + ## 1.1.4 56 + 57 + ### Patch Changes 58 + 59 + - 8735095: More adjustments to the `Ability` type 60 + 61 + ## 1.1.3 62 + 63 + ### Patch Changes 64 + 65 + - 5f7f42a: Refactor the `Ability` type to properly match the API response 66 + 67 + ## 1.1.2 68 + 69 + ### Patch Changes 70 + 71 + - b1bb9fa: Add missing `ability` and `location` types to `ItemObject` interface 72 + 73 + ## 1.1.1 74 + 75 + ### Patch Changes 76 + 77 + - 784b9f7: Export the actual types and not the classes 78 + 79 + ## 1.1.0 80 + 81 + ### Minor Changes 82 + 83 + - 4dacdc9: Export types to allow consumers to use in applications 84 + 85 + ## 1.0.2 86 + 87 + ### Patch Changes 88 + 89 + - 2374a6d: remove throwing error when using the getByListOfIds method for a single resource 90 + 91 + ## 1.0.1 92 + 93 + ### Patch Changes 94 + 95 + - 82b5af4: Fixes a logic error in the base class 96 + 97 + ## 1.0.0 98 + 99 + ### Major Changes 100 + 101 + - 1f45ddc: 1.0 Release 102 + 103 + ```bash 104 + npm install flyff.js 105 + ``` 106 + 107 + ```js 108 + import { FlyffClient } from "flyff.js"; 109 + 110 + const client = new FlyffClient(); 111 + ``` 112 + 113 + ```js 114 + await client.job.getAllIds(); 115 + ```
+21
packages/flyff.js/LICENSE
···
··· 1 + MIT License 2 + 3 + Copyright (c) 2023 Dane Miller 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.
+45
packages/flyff.js/README.md
···
··· 1 + # flyff.js 2 + 3 + flyff.js is an API wrapper written in TypeScript for the [FlyFF Universe API](https://api.flyff.com/) 4 + 5 + # Features 6 + 7 + - Type safe 8 + - ESM/CJS compatible 9 + - Covers all of the current FlyFF Universe API endpoints 10 + 11 + # Getting started 12 + 13 + ## Install the library with your preferred package manager 14 + 15 + ```bash 16 + npm install flyff.js 17 + ``` 18 + 19 + ```bash 20 + yarn add flyff.js 21 + ``` 22 + 23 + ## Instantiate a new client 24 + 25 + ```js 26 + import { FlyffClient } from "flyff.js"; 27 + 28 + const client = new FlyffClient(); 29 + ``` 30 + 31 + ## Make API calls 32 + 33 + ```js 34 + await client.job.getAllIds(); 35 + 36 + // [ 764 ,2246, 3545, 5330, ... ] 37 + ``` 38 + 39 + ## Documentation 40 + 41 + coming soon 42 + 43 + ## License 44 + 45 + [MIT](https://choosealicense.com/licenses/mit/)
packages/flyff.js/bun.lockb

This is a binary file and will not be displayed.

+3
packages/flyff.js/commitlint.config.js
···
··· 1 + module.exports = { 2 + extends: ["@commitlint/config-conventional"], 3 + };
+43
packages/flyff.js/package.json
···
··· 1 + { 2 + "name": "flyff.js", 3 + "version": "1.3.0", 4 + "description": "An API Wrapper for the FlyFF Universe API", 5 + "module": "dist/index.mjs", 6 + "types": "dist/index.d.ts", 7 + "main": "dist/index.js", 8 + "scripts": { 9 + "lint": "tsc", 10 + "build": "tsup src/index.ts --format cjs,esm --dts --minify", 11 + "release": "bun run build && changeset publish", 12 + "clean": "rm -rf dist" 13 + }, 14 + "keywords": [ 15 + "flyff", 16 + "universe", 17 + "fly", 18 + "for", 19 + "fun" 20 + ], 21 + "publishConfig": { 22 + "access": "public" 23 + }, 24 + "homepage": "https://github.com/Reonanx2/flyff.js#readme", 25 + "bugs": { 26 + "url": "https://github.com/Reonanx2/flyff.js/issues" 27 + }, 28 + "repository": { 29 + "type": "git", 30 + "url": "https://github.com/Reonanx2/flyff.js.git" 31 + }, 32 + "author": "Dane Miller", 33 + "license": "MIT", 34 + "devDependencies": { 35 + "@changesets/cli": "^2.26.2", 36 + "@commitlint/cli": "^17.7.1", 37 + "@commitlint/config-conventional": "^17.7.0", 38 + "husky": "^8.0.3", 39 + "prettier": "^3.0.3", 40 + "tsup": "^7.2.0", 41 + "typescript": "^5.2.2" 42 + } 43 + }
+7
packages/flyff.js/playground/index.ts
···
··· 1 + import { FlyffClient } from "../src/"; 2 + import { Job } from "../src/types"; 3 + 4 + const client = new FlyffClient(); 5 + 6 + client.job.getByListOfIds([Job.ACROBAT, Job.ASSIST]); 7 + client.job.getImage("target", "vagrant.png");
+59
packages/flyff.js/src/index.ts
···
··· 1 + import Version from "./resources/game//version"; 2 + import Job from "./resources/game/job"; 3 + import World from "./resources/game/world"; 4 + import Monster from "./resources/game/monster"; 5 + import Item from "./resources/game/item"; 6 + import EquipmentSet from "./resources/game/equipment-set"; 7 + import Skill from "./resources/game/skill"; 8 + import PartySkill from "./resources/game/party-skill"; 9 + import Npc from "./resources/game/npc"; 10 + import Quest from "./resources/game/quest"; 11 + import PK from "./resources/game/pk"; 12 + import UpgradeBonus from "./resources/game/bonus"; 13 + import Awake from "./resources/game/awake"; 14 + import RaisedPet from "./resources/game/pet"; 15 + import Dungeon from "./resources/game/dungeon"; 16 + import Housing from "./resources/game/housing"; 17 + import HousingPack from "./resources/game/housing-pack"; 18 + 19 + class FlyffClient { 20 + public version: Version; 21 + public job: Job; 22 + public world: World; 23 + public monster: Monster; 24 + public item: Item; 25 + public equip: EquipmentSet; 26 + public skill: Skill; 27 + public party: PartySkill; 28 + public npc: Npc; 29 + public quest: Quest; 30 + public pk: PK; 31 + public bonus: UpgradeBonus; 32 + public awake: Awake; 33 + public pet: RaisedPet; 34 + public dungeon: Dungeon; 35 + public housing: Housing; 36 + public packs: HousingPack; 37 + constructor() { 38 + this.version = new Version(); 39 + this.job = new Job(); 40 + this.world = new World(); 41 + this.monster = new Monster(); 42 + this.item = new Item(); 43 + this.equip = new EquipmentSet(); 44 + this.skill = new Skill(); 45 + this.party = new PartySkill(); 46 + this.npc = new Npc(); 47 + this.quest = new Quest(); 48 + this.pk = new PK(); 49 + this.bonus = new UpgradeBonus(); 50 + this.awake = new Awake(); 51 + this.pet = new RaisedPet(); 52 + this.dungeon = new Dungeon(); 53 + this.housing = new Housing(); 54 + this.packs = new HousingPack(); 55 + } 56 + } 57 + 58 + export { FlyffClient }; 59 + export * from "./types/index";
+15
packages/flyff.js/src/resources/base.ts
···
··· 1 + export class Base { 2 + protected async get<T>(endpoint: string): Promise<T> { 3 + const API_URL = `https://api.flyff.com/${endpoint}`; 4 + const headers = { 5 + "Content-Type": "application/json", 6 + }; 7 + 8 + return fetch(API_URL, { headers }).then((response) => { 9 + if (response.ok) { 10 + return response.json(); 11 + } 12 + throw new Error(response.statusText); 13 + }); 14 + } 15 + }
+20
packages/flyff.js/src/resources/core/element.ts
···
··· 1 + import { Base } from "../base"; 2 + 3 + export default class Element extends Base { 4 + /** 5 + * Get icon for the specified file name 6 + * 7 + * @example 8 + * ``` 9 + * await client.place.getImage('pc', "fire.png") 10 + * ``` 11 + * 12 + * @returns {Promise<string>} Returns icon for the specified file name 13 + */ 14 + public getImage( 15 + style: "pc" | "mobile" | "masquerade", 16 + fileName: string 17 + ): Promise<string> { 18 + return this.get(`/image/element/style/${fileName}`); 19 + } 20 + }
+17
packages/flyff.js/src/resources/core/place.ts
···
··· 1 + import { Base } from "../base"; 2 + 3 + export default class Place extends Base { 4 + /** 5 + * Get icon for the specified file name 6 + * 7 + * @example 8 + * ``` 9 + * await client.place.getImage("publicoffice.png") 10 + * ``` 11 + * 12 + * @returns {Promise<string>} Returns icon for the specified file name 13 + */ 14 + public getImage(fileName: string): Promise<string> { 15 + return this.get(`/image/place/${fileName}`); 16 + } 17 + }
+48
packages/flyff.js/src/resources/game/achievement.ts
···
··· 1 + import { AchievementObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class Achievement extends Base { 5 + /** 6 + * Get all achievement IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.achievement.getAllIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array of achievement IDs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/achievement"); 17 + } 18 + 19 + /** 20 + * Get achievment by specific ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.achievement.getById(1840) 25 + * ``` 26 + * 27 + * @returns {Promise<AchievementObject>} An object representing a specific achievement 28 + */ 29 + public getById(achievementId: number): Promise<AchievementObject> { 30 + return this.get(`/achievement/${achievementId}`); 31 + } 32 + 33 + /** 34 + * Get a list of achievements by their IDs 35 + * 36 + * @example 37 + * ``` 38 + * await client.achievement.getByListOfIds([58,77,182]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<AchievementObject>>} An array of objects for the specific achievement IDs 42 + */ 43 + public getByListOfIds( 44 + achievementIds: Array<number> 45 + ): Promise<Array<AchievementObject>> { 46 + return this.get(`/achievement/${achievementIds.join(",")}`); 47 + } 48 + }
+18
packages/flyff.js/src/resources/game/awake.ts
···
··· 1 + import { AwakeObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class Awake extends Base { 5 + /** 6 + * Get info about the skill awakes 7 + * 8 + * @example 9 + * ``` 10 + * await client.awake.getSkillAwakes() 11 + * ``` 12 + * 13 + * @returns {Promise<AwakeObject>} An object containing info about the skill awakes 14 + */ 15 + public getSkillAwakes(): Promise<AwakeObject> { 16 + return this.get("/skillawake"); 17 + } 18 + }
+18
packages/flyff.js/src/resources/game/bonus.ts
···
··· 1 + import { UpgradeBonusObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class UpgradeBonus extends Base { 5 + /** 6 + * Get info about the upgrade bonus levels 7 + * 8 + * @example 9 + * ``` 10 + * await client.bonus.getUpgradeBonuses() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<UpgradeBonusObject>>} An array of upgrade bonus levels 14 + */ 15 + public getUpgradeBonuses(): Promise<Array<UpgradeBonusObject>> { 16 + return this.get("/upgradelevelbonus"); 17 + } 18 + }
+18
packages/flyff.js/src/resources/game/dungeon.ts
···
··· 1 + import { DungeonObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class Dungeon extends Base { 5 + /** 6 + * Get info about all of the available dungeons 7 + * 8 + * @example 9 + * ``` 10 + * await client.dungeon.getAllDungeons() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<DungeonObject>>} An array of objects containing information about each dungeon 14 + */ 15 + public getAllDungeons(): Promise<Array<DungeonObject>> { 16 + return this.get("/dungeon"); 17 + } 18 + }
+48
packages/flyff.js/src/resources/game/equipment-set.ts
···
··· 1 + import { EquipSetObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class EquipmentSet extends Base { 5 + /** 6 + * Get all equipment set IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.equip.getAllIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array of equipment set IDs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/equipset"); 17 + } 18 + 19 + /** 20 + * Get equipment set by a specific ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.equip.getById(5670) 25 + * ``` 26 + * 27 + * @returns {Promise<EquipSetObject>} An object representing a specific equipment set 28 + */ 29 + public getById(equipSetId: number): Promise<EquipSetObject> { 30 + return this.get(`/equipset/${equipSetId}`); 31 + } 32 + 33 + /** 34 + * Get a list of equipment sets by their ID 35 + * 36 + * @example 37 + * ``` 38 + * await client.equip.getByListOfIds([5670,4267,5303]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<EquipSetObject>>} An array of objects for the specific equipment set IDs 42 + */ 43 + public getByListOfIds( 44 + equipSetIds: Array<number> 45 + ): Promise<Array<EquipSetObject>> { 46 + return this.get(`/equipset/${equipSetIds.join(",")}`); 47 + } 48 + }
+48
packages/flyff.js/src/resources/game/housing-pack.ts
···
··· 1 + import { HousingPackObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class HousingPack extends Base { 5 + /** 6 + * Get all housing pack IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.packs.getAllIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array containing the ID of all available housing packs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/housing/packs"); 17 + } 18 + 19 + /** 20 + * Get housing pack by ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.packs.getById(1689) 25 + * ``` 26 + * 27 + * @returns {Promise<HousingPackObject>} An object representing a single housing pack 28 + */ 29 + public getById(packId: number): Promise<HousingPackObject> { 30 + return this.get(`/housing/packs/${packId}`); 31 + } 32 + 33 + /** 34 + * Get housing packs by a list of IDs 35 + * 36 + * @example 37 + * ``` 38 + * await client.packs.getByListOfIds([1689,296,2881]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<HousingPackObject>>} An array of objects with housing packs 42 + */ 43 + public getByListOfIds( 44 + packIds: Array<number>, 45 + ): Promise<Array<HousingPackObject>> { 46 + return this.get(`/housing/packs/${packIds.join(",")}`); 47 + } 48 + }
+62
packages/flyff.js/src/resources/game/housing.ts
···
··· 1 + import { HousingObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class Housing extends Base { 5 + /** 6 + * Get all housing template IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.housing.getAllIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array of housing template IDs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/housing/templates"); 17 + } 18 + 19 + /** 20 + * Get housing template by specific ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.housing.getById(1689) 25 + * ``` 26 + * 27 + * @returns {Promise<HousingObject>} An object representing a specific housing template 28 + */ 29 + public getById(templateId: number): Promise<HousingObject> { 30 + return this.get(`/housing/templates/${templateId}`); 31 + } 32 + 33 + /** 34 + * Get a list of templates by their ID 35 + * 36 + * @example 37 + * ``` 38 + * await client.housing.getByListOfIds([1689,296,2881]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<HousingObject>>} An array of objects for the specific template IDs 42 + */ 43 + public getByListOfIds( 44 + templateIds: Array<number>, 45 + ): Promise<Array<HousingObject>> { 46 + return this.get(`/housing/templates/${templateIds.join(",")}`); 47 + } 48 + 49 + /** 50 + * Get Housing template preview image 51 + * 52 + * @example 53 + * ``` 54 + * await client.housing.getImage("BlankWorld.png") 55 + * ``` 56 + * 57 + * @returns {Promise<string>} An image of a template icon 58 + */ 59 + public getImage(fileName: string): Promise<string> { 60 + return this.get(`/image/housing/${fileName}`); 61 + } 62 + }
+60
packages/flyff.js/src/resources/game/item.ts
···
··· 1 + import { ItemObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class Item extends Base { 5 + /** 6 + * Get all item IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.item.getALlIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array of item IDs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/item"); 17 + } 18 + 19 + /** 20 + * Get item by a specific ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.item.getById(7635) 25 + * ``` 26 + * 27 + * @returns {Promise<ItemObject>} An object representing a specific monster 28 + */ 29 + public getById(itemId: number): Promise<ItemObject> { 30 + return this.get(`/item/${itemId}`); 31 + } 32 + 33 + /** 34 + * Get a list of items by their ID 35 + * 36 + * @example 37 + * ``` 38 + * await client.item.getByListOfIds([7635,9814,3070]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<ItemObject>>} An array of objects for the specific item IDs 42 + */ 43 + public getByListOfIds(itemIds: Array<number>): Promise<Array<ItemObject>> { 44 + return this.get(`/item/${itemIds.join(",")}`); 45 + } 46 + 47 + /** 48 + * Get the item icon for a specific item 49 + * 50 + * @example 51 + * ``` 52 + * await client.item.getImage("weaswonormal.png") 53 + * ``` 54 + * 55 + * @returns {Promise<string>} An image of a item icon 56 + */ 57 + public getImage(fileName: string): Promise<string> { 58 + return this.get(`/image/item/${fileName}`); 59 + } 60 + }
+60
packages/flyff.js/src/resources/game/job.ts
···
··· 1 + import { Base } from "../base"; 2 + import { JobObject, Job as JobEnum, JobIcon } from "../../types"; 3 + 4 + export default class Job extends Base { 5 + /** 6 + * Get all job IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.job.getAllIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array of job IDs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/class"); 17 + } 18 + 19 + /** 20 + * Get a job by a specific ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.job.getById(Job.MERCENARY) 25 + * ``` 26 + * 27 + * @returns {Promise<JobObject>} An object representing a specific job 28 + */ 29 + public getById(jobId: JobEnum): Promise<JobObject> { 30 + return this.get(`/class/${jobId}`); 31 + } 32 + 33 + /** 34 + * Get a list of jobs by their ID 35 + * 36 + * @example 37 + * ``` 38 + * await client.job.getByListOfIds([Job.MERCENARY, Job.ASSIST]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<JobObject>>} An array of objects for the specific job IDs 42 + */ 43 + public getByListOfIds(jobIds: Array<JobEnum>): Promise<Array<JobObject>> { 44 + return this.get(`/class/${jobIds.join(",")}`); 45 + } 46 + 47 + /** 48 + * Get the class icon for a specific job 49 + * 50 + * @example 51 + * ``` 52 + * await client.job.getImage("messenger", "vagrant.png") 53 + * ``` 54 + * 55 + * @returns {Promise<string>} An image of a job icon 56 + */ 57 + public getImage(style: JobIcon, fileName: string): Promise<string> { 58 + return this.get(`/image/class/${style}/${fileName}`); 59 + } 60 + }
+62
packages/flyff.js/src/resources/game/monster.ts
···
··· 1 + import { MonsterObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class Monster extends Base { 5 + /** 6 + * Get all monster IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.monster.getAllIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array of monster IDs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/monster"); 17 + } 18 + 19 + /** 20 + * Get monster by a specific ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.monster.getById() 25 + * ``` 26 + * 27 + * @returns {Promise<string>} An object representing a specific monster 28 + */ 29 + public getById(monsterId: number): Promise<MonsterObject> { 30 + return this.get(`/monster/${monsterId}`); 31 + } 32 + 33 + /** 34 + * Get a list of monsters by their ID 35 + * 36 + * @example 37 + * ``` 38 + * await client.monster.getByListOfIds([5858, 26, 6047]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<MonsterObject>>} An array of objects for the specific monster IDs 42 + */ 43 + public getByListOfIds( 44 + monsterIds: Array<number> 45 + ): Promise<Array<MonsterObject>> { 46 + return this.get(`/monster/${monsterIds.join(",")}`); 47 + } 48 + 49 + /** 50 + * Get the monster icon for a specific monster 51 + * 52 + * @example 53 + * ``` 54 + * await client.monster.getImage("vagrant.png") 55 + * ``` 56 + * 57 + * @returns {Promise<string>} An image of a monster icon 58 + */ 59 + public getImage(fileName: string): Promise<string> { 60 + return this.get(`/image/monster/${fileName}`); 61 + } 62 + }
+60
packages/flyff.js/src/resources/game/npc.ts
···
··· 1 + import { NpcObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class Npc extends Base { 5 + /** 6 + * Get all npc IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.npc.getAllIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array of npc IDs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/npc"); 17 + } 18 + 19 + /** 20 + * Get npc by specific ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.npc.getById(1689) 25 + * ``` 26 + * 27 + * @returns {Promise<NpcObject>} An object representing a specific npc 28 + */ 29 + public getById(npcId: number): Promise<NpcObject> { 30 + return this.get(`/npc/${npcId}`); 31 + } 32 + 33 + /** 34 + * Get a list of npcs by their IDs 35 + * 36 + * @example 37 + * ``` 38 + * await client.npc.getByListOfIds([1689,296,2881]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<NpcObject>>} An array of objects for the specific npc IDs 42 + */ 43 + public getByListOfIds(npcIds: Array<number>): Promise<Array<NpcObject>> { 44 + return this.get(`/npc/${npcIds.join(",")}`); 45 + } 46 + 47 + /** 48 + * Get npc dialog image 49 + * 50 + * @example 51 + * ``` 52 + * await client.npc.getImage("marche.png") 53 + * ``` 54 + * 55 + * @returns {Promise<string>} An image of a skill icon 56 + */ 57 + public getImage(fileName: string): Promise<string> { 58 + return this.get(`/image/npc/${fileName}`); 59 + } 60 + }
+48
packages/flyff.js/src/resources/game/party-skill.ts
···
··· 1 + import { PartySkillObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class PartySkill extends Base { 5 + /** 6 + * Get all party skill IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.party.getAllIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array of party skill IDs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/partyskill"); 17 + } 18 + 19 + /** 20 + * Get party skill by specific ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.party.getById(8037) 25 + * ``` 26 + * 27 + * @returns {Promise<PartySkillObject>} An object representing a specific party skill 28 + */ 29 + public getById(skillId: number): Promise<PartySkillObject> { 30 + return this.get(`/partyskill/${skillId}`); 31 + } 32 + 33 + /** 34 + * Get a list of party skills by their ID 35 + * 36 + * @example 37 + * ``` 38 + * await client.skill.getByListOfIds([8037,2475,2651]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<PartySkillObject>>} An array of objects for the specific party skill IDs 42 + */ 43 + public getByListOfIds( 44 + skillIds: Array<number> 45 + ): Promise<Array<PartySkillObject>> { 46 + return this.get(`/partyskill/${skillIds.join(",")}`); 47 + } 48 + }
+18
packages/flyff.js/src/resources/game/pet.ts
···
··· 1 + import { RaisedPetObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class RaisedPet extends Base { 5 + /** 6 + * Get info about the pet system 7 + * 8 + * @example 9 + * ``` 10 + * await client.pet.getRaisedPetInfo() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<RaisedPetObject>>} An array of objects containing info about the pet system 14 + */ 15 + public getRaisedPetInfo(): Promise<Array<RaisedPetObject>> { 16 + return this.get("/raisedpet"); 17 + } 18 + }
+18
packages/flyff.js/src/resources/game/pk.ts
···
··· 1 + import { PkObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class PK extends Base { 5 + /** 6 + * Get info about the PK system 7 + * 8 + * @example 9 + * ``` 10 + * await client.pk.getPKInfo() 11 + * ``` 12 + * 13 + * @returns {Promise<PkObject>} An object containing info about the PK system 14 + */ 15 + public getPKInfo(): Promise<PkObject> { 16 + return this.get("/pk"); 17 + } 18 + }
+46
packages/flyff.js/src/resources/game/quest.ts
···
··· 1 + import { QuestObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class Quest extends Base { 5 + /** 6 + * Get all quest IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.quest.getAllIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array of quest IDs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/quest"); 17 + } 18 + 19 + /** 20 + * Get quest by specific ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.quest.getById(1840) 25 + * ``` 26 + * 27 + * @returns {Promise<QuestObject>} An object representing a specific quest 28 + */ 29 + public getById(questId: number): Promise<QuestObject> { 30 + return this.get(`/quest/${questId}`); 31 + } 32 + 33 + /** 34 + * Get a list of quests by their IDs 35 + * 36 + * @example 37 + * ``` 38 + * await client.quest.getByListOfIds([1840,821,5260]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<QuestObject>>} An array of objects for the specific npc IDs 42 + */ 43 + public getByListOfIds(questIds: Array<number>): Promise<Array<QuestObject>> { 44 + return this.get(`/quest/${questIds.join(",")}`); 45 + } 46 + }
+60
packages/flyff.js/src/resources/game/skill.ts
···
··· 1 + import { SkillObject } from "../../types"; 2 + import { Base } from "../base"; 3 + 4 + export default class Skill extends Base { 5 + /** 6 + * Get all skill IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.skill.getAllIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array of skill IDs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/skill"); 17 + } 18 + 19 + /** 20 + * Get skill by specific ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.skill.getById(6482) 25 + * ``` 26 + * 27 + * @returns {Promise<SkillObject>} An object representing a specific skill 28 + */ 29 + public getById(skillId: number): Promise<SkillObject> { 30 + return this.get(`/skill/${skillId}`); 31 + } 32 + 33 + /** 34 + * Get a list of skills by their ID 35 + * 36 + * @example 37 + * ``` 38 + * await client.skill.getByListOfIds([6482,2030,7395]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<SkillObject>>} An array of objects for the specific skill IDs 42 + */ 43 + public getByListOfIds(skillIds: Array<number>): Promise<Array<SkillObject>> { 44 + return this.get(`/skill/${skillIds.join(",")}`); 45 + } 46 + 47 + /** 48 + * Get the skill icon for a specific skill 49 + * 50 + * @example 51 + * ``` 52 + * await client.skill.getImage("acrbowaimeds.png") 53 + * ``` 54 + * 55 + * @returns {Promise<string>} An image of a skill icon 56 + */ 57 + public getImage(style: "colored" | "old", fileName: string): Promise<string> { 58 + return this.get(`/image/skill/${style}/${fileName}`); 59 + } 60 + }
+31
packages/flyff.js/src/resources/game/version.ts
···
··· 1 + import { Base } from "../base"; 2 + 3 + export default class Version extends Base { 4 + /** 5 + * Get the current game version 6 + * 7 + * @example 8 + * ``` 9 + * await client.version.getGameVersion() 10 + * ``` 11 + * 12 + * @returns {Promise<number>} Game version 13 + */ 14 + public getGameVersion(): Promise<number> { 15 + return this.get("/version/data"); 16 + } 17 + 18 + /** 19 + * Get the current API version 20 + * 21 + * @example 22 + * ``` 23 + * await client.version.getAPIVersion() 24 + * ``` 25 + * 26 + * @returns {Promise<string>} API version 27 + */ 28 + public getAPIVersion(): Promise<string> { 29 + return this.get("/version/api"); 30 + } 31 + }
+62
packages/flyff.js/src/resources/game/world.ts
···
··· 1 + import { Base } from "../base"; 2 + import { WorldObject, WorldOptions } from "../../types"; 3 + 4 + export default class World extends Base { 5 + /** 6 + * Get all world IDs 7 + * 8 + * @example 9 + * ``` 10 + * await client.world.getAllIds() 11 + * ``` 12 + * 13 + * @returns {Promise<Array<number>>} An array of world IDs 14 + */ 15 + public getAllIds(): Promise<Array<number>> { 16 + return this.get("/world"); 17 + } 18 + 19 + /** 20 + * Get a world by its ID 21 + * 22 + * @example 23 + * ``` 24 + * await client.world.getById(4015) 25 + * ``` 26 + * 27 + * @returns {Promise<WorldObject>} An object representing a specific world 28 + */ 29 + public getById(worldId: number): Promise<WorldObject> { 30 + return this.get(`/world/${worldId}`); 31 + } 32 + 33 + /** 34 + * Get a list of worlds by their ID 35 + * 36 + * @example 37 + * ``` 38 + * await client.world.getByListOfIds([4015,4839,6063]) 39 + * ``` 40 + * 41 + * @returns {Promise<Array<WorldObject>>} An array of objects for the specific world IDs 42 + */ 43 + public getByListOfIds(worldIds: Array<number>): Promise<Array<WorldObject>> { 44 + return this.get(`/world/${worldIds.join(",")}`); 45 + } 46 + 47 + /** 48 + * Get a specific tile from a world 49 + * 50 + * @example 51 + * ``` 52 + * await client.world.getTile("messenger", "vagrant.png") 53 + * ``` 54 + * 55 + * @returns {Promise<string>} An image of a world tile 56 + */ 57 + public getTile(options: WorldOptions): Promise<string> { 58 + return this.get( 59 + `/image/world/${options.worldFileName}${options.tileX}-${options.tileY}-0.png` 60 + ); 61 + } 62 + }
+873
packages/flyff.js/src/types/index.ts
···
··· 1 + export type Language = 2 + | "en" 3 + | "ar" 4 + | "br" 5 + | "cns" 6 + | "de" 7 + | "fi" 8 + | "fil" 9 + | "fr" 10 + | "id" 11 + | "it" 12 + | "jp" 13 + | "kr" 14 + | "nl" 15 + | "pl" 16 + | "ru" 17 + | "sp" 18 + | "sw" 19 + | "th" 20 + | "tw" 21 + | "vi"; 22 + 23 + export type AttackFactors = 24 + | "sword" 25 + | "axe" 26 + | "staff" 27 + | "stick" 28 + | "knucke" 29 + | "yoyo" 30 + | "bow" 31 + | "wand"; 32 + 33 + export type Parameter = 34 + | "str" 35 + | "dex" 36 + | "int" 37 + | "sta" 38 + | "speed" 39 + | "attackspeed" 40 + | "attackspeedrate" 41 + | "jumpheight" 42 + | "bowrange" 43 + | "def" 44 + | "parry" 45 + | "reflectdamage" 46 + | "rangedblock" 47 + | "meleeblock" 48 + | "magicdefense" 49 + | "electricitydefense" 50 + | "firedefense" 51 + | "winddefense" 52 + | "waterdefense" 53 + | "earthdefense" 54 + | "attack" 55 + | "hitrate" 56 + | "magicattack" 57 + | "swordattack" 58 + | "axeattack" 59 + | "knuckleattack" 60 + | "yoyoattack" 61 + | "bowattack" 62 + | "earthmastery" 63 + | "firemastery" 64 + | "watermastery" 65 + | "electricitymastery" 66 + | "windmastery" 67 + | "damage" 68 + | "criticalchance" 69 + | "elementattack" 70 + | "skillchance" 71 + | "attribute" 72 + | "maxhp" 73 + | "maxmp" 74 + | "maxfp" 75 + | "hprecovery" 76 + | "mprecovery" 77 + | "fprecovery" 78 + | "hprecoveryafterkill" 79 + | "mprecoveryafterkill" 80 + | "fprecoveryafterkill" 81 + | "decresedmpconsumption" 82 + | "decreasedfpconsumption" 83 + | "minability" 84 + | "maxability" 85 + | "attributeimmunity" 86 + | "autohp" 87 + | "autohppvp" 88 + | "decreasedcastingtime" 89 + | "criticaldamage" 90 + | "skilldamage" 91 + | "hprestoration" 92 + | "criticalresist" 93 + | "healing" 94 + | "pvpdamagereduction" 95 + | "magicdefense" 96 + | "pvpdamage" 97 + | "pvedamage" 98 + | "penya" 99 + | "hp" 100 + | "mp" 101 + | "fp" 102 + | "allelementdefense" 103 + | "allstats" 104 + | "attackandmaxhp" 105 + | "defenseandhitrateincrease" 106 + | "cure" 107 + | "movement" 108 + | "allelementmastery" 109 + | "allrecovery" 110 + | "allrecoveryafterkill" 111 + | "decreasedfpandmpconsumption" 112 + | "removealldebuff" 113 + | "block" 114 + | "removedebuff" 115 + | "damageandstealhp" 116 + | "stealhp" 117 + | "explostdecreaseatrevival" 118 + | "cheerpoint" 119 + | "incomingdamage" 120 + | "spiritstrike" 121 + | "stealfp" 122 + | "exprate" 123 + | "droprate" 124 + | "fprecoveryautoattack" 125 + | "bleedandpoisonresist" 126 + | "pvedamagereduction" 127 + | "blockpenetration" 128 + | "damgeoffload" 129 + | "incominghealing" 130 + | "multistrike" 131 + | "monsterexp" 132 + | "mosterexpanddrop" 133 + | "hppercentrecovery" 134 + | "expanddrop" 135 + | "allspeed" 136 + | "arcaneinsightchance" 137 + | "ripostereflexchance"; 138 + 139 + export type JobIcon = "messenger" | "old_female" | "old_male" | "target"; 140 + 141 + export type WorldType = "main" | "prison" | "dungeon" | "instance" | "event"; 142 + export type WorldPlace = 143 + | "lodestar" 144 + | "lodelight" 145 + | "flyingstation" 146 + | "weaponstore" 147 + | "armorstore" 148 + | "foodstore" 149 + | "magicstore" 150 + | "generalstore" 151 + | "publicoffice" 152 + | "questoffice" 153 + | "dungeon" 154 + | "shieldstore" 155 + | "warpzone" 156 + | "instance"; 157 + 158 + export type WorldLocation = { 159 + world: number; 160 + x: number; 161 + y: number; 162 + z: number; 163 + continent?: number; 164 + }; 165 + 166 + export type WorldOptions = { 167 + worldFileName: string; 168 + tileX: number; 169 + tileY: number; 170 + }; 171 + 172 + export enum Job { 173 + VAGRANT = 9686, 174 + MERCENARY = 764, 175 + ASSIST = 8962, 176 + ACROBAT = 9098, 177 + MAGICIAN = 9581, 178 + BLADE = 2246, 179 + JESTER = 3545, 180 + KNIGHT = 5330, 181 + PSYKEEPER = 5709, 182 + BILLPOSTER = 7424, 183 + ELEMENTOR = 9150, 184 + RANGER = 9295, 185 + RINGMASTER = 9389, 186 + } 187 + 188 + export type MonsterRank = 189 + | "small" 190 + | "normal" 191 + | "captain" 192 + | "giant" 193 + | "violet" 194 + | "boss" 195 + | "material" 196 + | "super" 197 + | "guard" 198 + | "citizen" 199 + | "worldboss"; 200 + export type ItemCategory = 201 + | "weapon" 202 + | "armor" 203 + | "fashion" 204 + | "jewelry" 205 + | "flying" 206 + | "collector" 207 + | "quest" 208 + | "trans" 209 + | "fuel" 210 + | "booty" 211 + | "arrow" 212 + | "charm" 213 + | "recovery" 214 + | "blinkwing" 215 + | "firework" 216 + | "pickuppet" 217 + | "teleportring" 218 + | "material" 219 + | "buff" 220 + | "monsterball" 221 + | "pack" 222 + | "scroll" 223 + | "vendorskin" 224 + | "raisedpet" 225 + | "currency"; 226 + export type ItemSubcategory = 227 + | "armorcolor" 228 + | "axe" 229 + | "balloon" 230 + | "board" 231 + | "book" 232 + | "boots" 233 + | "bow" 234 + | "broom" 235 + | "car" 236 + | "cloak" 237 + | "cloth" 238 + | "drink" 239 + | "earring" 240 + | "elementcard" 241 + | "event" 242 + | "food" 243 + | "gauntlet" 244 + | "glove" 245 + | "glow" 246 + | "hat" 247 + | "helmet" 248 + | "inventorybag" 249 + | "knuckle" 250 + | "letter" 251 + | "mask" 252 + | "mineral" 253 + | "necklace" 254 + | "petfeed" 255 + | "piercingcard" 256 + | "piercingdice" 257 + | "pill" 258 + | "specialstone" 259 + | "staff" 260 + | "stick" 261 + | "suit" 262 + | "sword" 263 + | "townblinkwing" 264 + | "trans" 265 + | "upgradedice" 266 + | "wand" 267 + | "wings" 268 + | "yoyo" 269 + | "gacha" 270 + | "globalgacha" 271 + | "giftbox" 272 + | "ampexp" 273 + | "upgradescroll" 274 + | "awakescroll" 275 + | "visualcloak" 276 + | "gem" 277 + | "piece" 278 + | "ultimatedice" 279 + | "selectblinkwing" 280 + | "selectbox" 281 + | "hoverbike" 282 + | "guildbag" 283 + | "raisedpet" 284 + | "raisedpettransmute" 285 + | "harvestglove" 286 + | "battlepass" 287 + | "pkchip" 288 + | "namecolor" 289 + | "ticket" 290 + | "fcoin" 291 + | "rockpaperscissors" 292 + | "sunstone" 293 + | "rainbowrace"; 294 + 295 + export type NpcMenu = 296 + | "trade" 297 + | "dialog" 298 + | "changeelem" 299 + | "upgrade" 300 + | "inputreward" 301 + | "showreward" 302 + | "piercing" 303 + | "piercingremove" 304 + | "attribute" 305 + | "lodelight" 306 + | "bank" 307 + | "hairshop" 308 + | "itemrepair" 309 + | "post" 310 + | "skinshop" 311 + | "buff" 312 + | "arenaenter" 313 + | "arenaleave" 314 + | "guildbank" 315 + | "guildrank" 316 + | "guildrankwar" 317 + | "guildrankinfo" 318 + | "guildsiegeapply" 319 + | "guildsiegestate" 320 + | "guildsiegecancel" 321 + | "guildsiegejoin" 322 + | "guildsiegelineup" 323 + | "guildsiegejackpot" 324 + | "guildsiegebestplayer" 325 + | "guildsiegeranking" 326 + | "guildsiegejackpot2" 327 + | "guildsiegeinfo1" 328 + | "guildsiegeinfo2" 329 + | "guildsigeinfo3" 330 + | "guildsiegeinfo4" 331 + | "guildsiegeinfo80" 332 + | "guildsiegeapply80" 333 + | "guildsiegestate80" 334 + | "guildsiegejoin80" 335 + | "guildsiegelineup80" 336 + | "guildsiegeranking80" 337 + | "guildsiegecancel80" 338 + | "guildsiegeinfo60" 339 + | "guildsiegeapply60" 340 + | "guildsiegestate60" 341 + | "guildsiegejoin60" 342 + | "guildsiegelineup60" 343 + | "guildsiegeranking60" 344 + | "guildsiegecancel60" 345 + | "roshambo" 346 + | "exchangeroshambo" 347 + | "upgradecard" 348 + | "safeelementupgrade" 349 + | "safeupgrade" 350 + | "safepiercing" 351 + | "createshiningpowerdice" 352 + | "createjewels" 353 + | "createuniqueweapon" 354 + | "exchangerareitempieces" 355 + | "exchangecardpieces" 356 + | "removelevelreduction" 357 + | "removecostumeblessing" 358 + | "arenaranking" 359 + | "arenareward" 360 + | "accessoryupgrade" 361 + | "safeaccessoryupgrade" 362 + | "traderedchips" 363 + | "tradebluechips" 364 + | "petcandycrafting" 365 + | "petsacrificing" 366 + | "cosmeticwardrobe" 367 + | "dungeon" 368 + | "tradepkchips" 369 + | "exchangefwc" 370 + | "gachamachine" 371 + | "tradegreenchips" 372 + | "reshufflecard" 373 + | "rainbowraceapply" 374 + | "createultimate" 375 + | "traderings" 376 + | "tradeearrings" 377 + | "tradenecklaces" 378 + | "dismantle" 379 + | "fwcboard" 380 + | "fwcteleport" 381 + | "fwcranking" 382 + | "fwcspectate" 383 + | "fwcexchange" 384 + | "fwccollect"; 385 + 386 + export type Spawn = { 387 + world: number; 388 + left: number; 389 + right: number; 390 + top: number; 391 + bottom: number; 392 + continent?: number; 393 + aggressivity?: number; 394 + }; 395 + 396 + export type SkillAwake = Record< 397 + string, 398 + { uncommon: Array<number>; rare: Array<number>; unique?: Array<number> } 399 + >; 400 + 401 + export type Ability = { 402 + parameter: Parameter; 403 + add?: number; 404 + addMax?: number; 405 + set?: number; 406 + rate: boolean; 407 + attribute?: 408 + | "rooting" 409 + | "stun" 410 + | "hitrate" 411 + | "invisibility" 412 + | "poison" 413 + | "slow" 414 + | "double" 415 + | "bleeding" 416 + | "silent" 417 + | "counterattackdamage" 418 + | "counterattack" 419 + | "loot" 420 + | "moonbeam" 421 + | "hitrateandpoison" 422 + | "hitrateandpoisonandstun" 423 + | "lootandslow" 424 + | "poisonandbleedingandmoonbeam" 425 + | "stunandrooting" 426 + | "forcedblock"; 427 + dotValue?: number; 428 + dotMode?: "currentdamage" | "standardattack" | "fixedvalue" | "stacks"; 429 + skill?: number; 430 + skillLevel?: number; 431 + pvp?: boolean; 432 + pve?: boolean; 433 + }; 434 + export interface BaseObject { 435 + id: number; 436 + name: Record<Language, string>; 437 + } 438 + 439 + export interface JobObject extends BaseObject { 440 + type: "beginner" | "expert" | "professional"; 441 + icon: string; 442 + minLevel: number; 443 + maxLevel: number; 444 + parent: number; 445 + maxHP: number; 446 + maxFP: number; 447 + maxMP: number; 448 + attackSpeed: number; 449 + critical: number; 450 + autoAttackFactors: Record<AttackFactors, number>; 451 + } 452 + 453 + export interface MonsterObject extends BaseObject { 454 + event: boolean; 455 + levelHidden: boolean; 456 + level: number; 457 + rank: MonsterRank; 458 + area: "normal" | "dungeon"; 459 + element: "fire" | "water" | "electricity" | "wind" | "earth" | "none"; 460 + icon: string; 461 + booty?: number; 462 + mineral?: number; 463 + flying: boolean; 464 + hp: number; 465 + mp: number; 466 + minAttack: number; 467 + maxAttack: number; 468 + defense: number; 469 + magicDefense: number; 470 + sta: number; 471 + str: number; 472 + dex: number; 473 + int: number; 474 + hitRate: number; 475 + parry: number; 476 + runaway: boolean; 477 + resistFire: number; 478 + resistWater: number; 479 + resistWind: number; 480 + resistEarth: number; 481 + resistElectricity: number; 482 + summoned?: Array<number>; 483 + appliedSkills: Array<{ 484 + skill: number; 485 + level: number; 486 + probability: number; 487 + conditionalBuff?: number; 488 + }>; 489 + avenge: Array<{ monster: number; skill: number; skillLevel: number }>; 490 + berserkThresholdHP?: number; 491 + berserkAttackPower?: number; 492 + recoveryThresholdHP?: number; 493 + recoveryAmountHP?: number; 494 + speed: number; 495 + experience: number; 496 + experienceSharing: "normal" | "area"; 497 + experienceTable: Array<number>; 498 + minDropGold: number; 499 + maxDropGold: number; 500 + attacks: Array<{ 501 + minAttack: number; 502 + maxAttack: number; 503 + attackRange: number; 504 + target: "area" | "single"; 505 + triggerSkill?: number; 506 + triggerSkillLevel?: number; 507 + triggerSkillProbability?: number; 508 + }>; 509 + drops: Array<{ item: number; probabilityRange: string; common: boolean }>; 510 + location: WorldLocation; 511 + spawns: Array<Spawn>; 512 + } 513 + 514 + export interface ItemObject extends BaseObject { 515 + description: Record<Language, string>; 516 + icon: string; 517 + category: ItemCategory; 518 + subcategory?: ItemSubcategory; 519 + rarity: "common" | "uncommon" | "rare" | "veryrare" | "unique"; 520 + class?: number; 521 + level: number; 522 + sex?: "female" | "male"; 523 + stack: number; 524 + buyPrice?: number; 525 + sellPrice: number; 526 + cosumable: boolean; 527 + premium: boolean; 528 + deletable: boolean; 529 + tradeable: boolean; 530 + shining: boolean; 531 + element: "fire" | "water" | "electricity" | "wind" | "earth" | "none"; 532 + durationRealTime: boolean; 533 + transy?: number; 534 + dismantle?: Array<{ 535 + item: number; 536 + inputUpgradeLevel?: number; 537 + count: number; 538 + savePiercing: boolean; 539 + saveElement: boolean; 540 + saveUpgrade: boolean; 541 + upgradeLevel: number; 542 + }>; 543 + upgradeLevels?: Array<{ 544 + upgradeLevel: number; 545 + requiredLevel: number; 546 + abilities: Array<Ability>; 547 + }>; 548 + cooldown?: number; 549 + casting?: number; 550 + duration?: number; 551 + flightSpeed?: number; 552 + guildContribution?: number; 553 + attackSpeed?: 554 + | "veryslow" 555 + | "slow" 556 + | "normal" 557 + | "fast" 558 + | "veryfast" 559 + | "fastest"; 560 + attackSpeedValue?: number; 561 + attackRange?: number; 562 + twoHanded?: boolean; 563 + minAttack?: number; 564 + maxAttack?: number; 565 + additionalSkillDamage?: number; 566 + ultimateConvertible?: boolean; 567 + possibleRandomStats?: Array<Ability>; 568 + consumedMP?: number; 569 + consumedItem?: string; 570 + triggerSkill?: number; 571 + triggerSkillProbability?: number; 572 + minDefense?: number; 573 + maxDefense?: number; 574 + blinkwingTarget: WorldLocation; 575 + abilities: Array<Ability>; 576 + location: WorldLocation; 577 + spawns: Array<Spawn>; 578 + } 579 + 580 + export interface WorldObject extends BaseObject { 581 + type: WorldType; 582 + width: number; 583 + height: number; 584 + tileName: string; 585 + tileSize: number; 586 + flying: boolean; 587 + pk: boolean; 588 + inDoor: boolean; 589 + revivalWorld?: number; 590 + revivalKey?: string; 591 + places: Array<Record<WorldType, WorldLocation>>; 592 + lodestars: Array<{ key: string; location: WorldLocation }>; 593 + continents: Array<{ 594 + id: number; 595 + name: Language; 596 + town: boolean; 597 + polygon: Array<{ x: number; z: number }>; 598 + }>; 599 + } 600 + 601 + export interface EquipSetObject extends BaseObject { 602 + transy: number; 603 + parts: Array<number>; 604 + bonus: Array<{ equipped: number; ability: Ability }>; 605 + } 606 + 607 + export interface SkillObject extends BaseObject { 608 + description: Record<Language, string>; 609 + icon: string; 610 + class?: number; 611 + level: number; 612 + element: "fire" | "water" | "electricity" | "wind" | "earth" | "none"; 613 + abilities: Array<Ability>; 614 + magic: boolean; 615 + target: "party" | "line" | "area" | "single" | "currentplayer"; 616 + combo: "general" | "step" | "circle" | "finish"; 617 + debuff: boolean; 618 + flying: boolean; 619 + passive: boolean; 620 + consumedItem?: string; 621 + triggerSkill?: number; 622 + skillPoints?: number; 623 + weapon?: string; 624 + requirements: Array<{ skill: number; level: number }>; 625 + levels: Array<{ 626 + minAttack: number; 627 + maxAttack: number; 628 + damageMultiplier: number; 629 + probability: number; 630 + probabilityPVP: number; 631 + flybackProbability: number; 632 + consumedMP: number; 633 + consumedFP: number; 634 + cooldown: number; 635 + casting: number; 636 + duration: number; 637 + durationPVP: number; 638 + dotTick: number; 639 + spellRange: number; 640 + wallLives: number; 641 + reflectedDamagePVE: number; 642 + reflectedDamagePVP: number; 643 + tetherRange: number; 644 + spreadOnExpireRange: number; 645 + abilities: Array<Ability>; 646 + scalingParameters: Array<{ 647 + parameter: string; 648 + stat: "str" | "sta" | "dex" | "int"; 649 + scale: number; 650 + pvp: boolean; 651 + pve: boolean; 652 + }>; 653 + }>; 654 + } 655 + 656 + export interface PartySkillObject extends BaseObject { 657 + description: Record<Language, string>; 658 + icon: string; 659 + level: number; 660 + consumedPoints?: number; 661 + duration?: number; 662 + } 663 + 664 + export interface NpcObject extends BaseObject { 665 + menus: NpcMenu; 666 + locations: Array<WorldLocation>; 667 + image: string; 668 + place?: WorldPlace; 669 + shop: Array<{ name: Record<Language, string>; items: Array<number> }>; 670 + } 671 + 672 + export interface QuestObject extends BaseObject { 673 + type: "category" | "normal" | "repeat" | "chain" | "daily"; 674 + repeatable: boolean; 675 + removable: boolean; 676 + partyShare: boolean; 677 + parent?: number; 678 + beginNPC?: number; 679 + minLevel?: number; 680 + maxLevel?: number; 681 + beginClasses?: Array<number>; 682 + beginQuests?: Array<{ quest: number; completed: boolean }>; 683 + beginReceiveItems?: Array<{ item: number; count: number }>; 684 + endNPC?: number; 685 + endNeededItems?: Array<{ item: number; count: number }>; 686 + endTimeLimit?: number; 687 + endTalkNPC?: number; 688 + endVisitPlace?: Spawn; 689 + endKillMonsters?: Array<{ monster: Array<number>; count: number }>; 690 + endRemoveItems?: Array<{ item: number; count?: number }>; 691 + endReceiveGold?: number | null; 692 + endReceiveExperience?: Array<number> | null; 693 + endReceiveInventorySpaces?: number | null; 694 + endReceiveSkillPoints?: number | null; 695 + endReceiveKarma?: string | null; 696 + endReceiveItems?: Array<{ 697 + item: number; 698 + count: number; 699 + upgradeLevel?: number; 700 + soulLinked: boolean; 701 + }> | null; 702 + description?: Record<Language, string>; 703 + descriptionComplete?: Record<Language, string>; 704 + dialogsBegin?: Array<Record<Language, string>>; 705 + dialogsAccept?: Array<Record<Language, string>>; 706 + dialogsDecline?: Array<Record<Language, string>>; 707 + dialogsComplete?: Array<Record<Language, string>>; 708 + dialogsFail?: Array<Record<Language, string>>; 709 + } 710 + 711 + export interface PkObject { 712 + pointsPerKill: number; 713 + decreasePointDelaySec: number; 714 + decreasePointCount: number; 715 + dropChipPercentages: Array<{ stolenChipsCount: number; dropPercent: number }>; 716 + } 717 + 718 + export interface AchievementObject extends BaseObject { 719 + description: Record<Language, string>; 720 + type: 721 + | "killmonster" 722 + | "useitem" 723 + | "jump" 724 + | "stat" 725 + | "class" 726 + | "level" 727 + | "playtime" 728 + | "useskill" 729 + | "connection" 730 + | "hatchegg"; 731 + category: "general" | "monsters" | "consumables" | "attendance"; 732 + accountWide: boolean; 733 + badgeReward?: string; 734 + levels: Array<{ 735 + value?: number; 736 + name?: Record<Language, string>; 737 + title?: Record<Language, string>; 738 + attackPower?: number; 739 + inventorySpaces?: number; 740 + gold?: number; 741 + items?: Array<{ item: number; count: number; soulLinked: boolean }>; 742 + }>; 743 + mainMonster?: number; 744 + monsters?: Array<number>; 745 + mainItem?: number; 746 + items: Array<number>; 747 + stats: "str" | "sta" | "dex" | "int"; 748 + mainSkill: number; 749 + skills: Array<number>; 750 + mainClass: number; 751 + classes: Array<number>; 752 + } 753 + 754 + export interface UpgradeBonusObject { 755 + upgradeLevel: number; 756 + weaponAttack: number; 757 + helmetDefense?: number; 758 + suitDefense?: number; 759 + gauntletDefense?: number; 760 + bootsDefense?: number; 761 + shieldDefense?: number; 762 + setAbilities: Array<Ability>; 763 + } 764 + 765 + export interface AwakeObject { 766 + bow: { 767 + skills?: SkillAwake; 768 + parameters?: SkillAwake; 769 + }; 770 + yoyo: { 771 + skills?: SkillAwake; 772 + parameters?: SkillAwake; 773 + }; 774 + stick: { 775 + skills?: SkillAwake; 776 + parameters?: SkillAwake; 777 + }; 778 + knuckle: { 779 + skills?: SkillAwake; 780 + parameters?: SkillAwake; 781 + }; 782 + swordoraxe: { 783 + skills?: SkillAwake; 784 + parameters?: SkillAwake; 785 + }; 786 + staff: { 787 + skills?: SkillAwake; 788 + parameters?: SkillAwake; 789 + }; 790 + wandorstaff: { 791 + skills?: SkillAwake; 792 + parameters?: SkillAwake; 793 + }; 794 + wand: { 795 + skills?: SkillAwake; 796 + parameters?: SkillAwake; 797 + }; 798 + shield: { 799 + skills?: SkillAwake; 800 + parameters?: SkillAwake; 801 + }; 802 + } 803 + 804 + export interface RaisedPetObject { 805 + petItemId: number; 806 + parameter: 807 + | "str" 808 + | "sta" 809 + | "dex" 810 + | "int" 811 + | "attack" 812 + | "def" 813 + | "maxhp" 814 + | "criticalchance" 815 + | "criticaldamage"; 816 + rate?: boolean; 817 + values?: Array<number>; 818 + tiers: Array<{ 819 + maxEnergy: number; 820 + exp: number; 821 + requiredCandyItem: number; 822 + graceSkill?: number; 823 + graceSkillCooldown?: number; 824 + graceSkillLevel?: number; 825 + graceSkillDuration?: number; 826 + graceSkillEnergyConsumption?: number; 827 + }>; 828 + } 829 + 830 + export interface DungeonObject extends BaseObject { 831 + type: "party" | "guild" | "solo" | "partyorsolo" | "guildorsolo"; 832 + image: string; 833 + world: number; 834 + difficulty: 835 + | "normal" 836 + | "medium" 837 + | "hard" 838 + | "extrahard" 839 + | "nightmare" 840 + | "story" 841 + | "cursed"; 842 + minLevel: number; 843 + maxLevel: number; 844 + cooldownSecs: number; 845 + monsters: Array<number>; 846 + monsterMods?: Array<{ 847 + parameter: string; 848 + value: number; 849 + maxPlayerCount?: number; 850 + }>; 851 + requiredCreatorQuest?: number; 852 + requiredCreatorItem?: number; 853 + requiredCreatorPenya?: number; 854 + minGuildLevel?: number; 855 + availableCurses: Array<{ 856 + skill: number; 857 + skillLevel: number; 858 + costItem: number; 859 + costCount: number; 860 + }>; 861 + } 862 + 863 + export interface HousingObject extends BaseObject { 864 + image: string; 865 + world: number; 866 + size: "small" | "medium" | "large" | "extralarge"; 867 + } 868 + 869 + export interface HousingPackObject { 870 + packItemId: number; 871 + objects: Array<{ minScale?: number; maxScale?: number; name: Language }>; 872 + npcs: Array<{ name: Language; abilities: Ability[] }>; 873 + }
+115
packages/flyff.js/tsconfig.json
···
··· 1 + { 2 + "compilerOptions": { 3 + /* Visit https://aka.ms/tsconfig to read more about this file */ 4 + 5 + /* Projects */ 6 + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 7 + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 9 + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ 10 + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 + 13 + /* Language and Environment */ 14 + "target": "es2016", 15 + /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 16 + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 17 + // "jsx": "preserve", /* Specify what JSX code is generated. */ 18 + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ 19 + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 20 + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 21 + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 22 + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 23 + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 24 + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 25 + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 26 + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 27 + 28 + /* Modules */ 29 + "module": "commonjs", 30 + /* Specify what module code is generated. */ 31 + // "rootDir": "./", /* Specify the root folder within your source files. */ 32 + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ 33 + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 34 + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 35 + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 36 + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 37 + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 38 + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 39 + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 40 + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ 41 + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ 42 + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ 43 + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ 44 + // "resolveJsonModule": true, /* Enable importing .json files. */ 45 + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ 46 + // "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */ 47 + 48 + /* JavaScript Support */ 49 + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 50 + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 51 + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 52 + 53 + /* Emit */ 54 + // "declaration": true /* Generate .d.ts files from TypeScript and JavaScript files in your project. */, 55 + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 56 + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 57 + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 58 + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 59 + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ 60 + // "outDir": "./", /* Specify an output folder for all emitted files. */ 61 + // "removeComments": true, /* Disable emitting comments. */ 62 + "noEmit": true, 63 + /* Disable emitting files from a compilation. */ 64 + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 65 + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 66 + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 67 + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 68 + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 69 + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 70 + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 71 + // "newLine": "crlf", /* Set the newline character for emitting files. */ 72 + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 73 + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 74 + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 75 + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 76 + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 77 + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 78 + 79 + /* Interop Constraints */ 80 + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 81 + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ 82 + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 83 + "esModuleInterop": true, 84 + /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ 85 + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 86 + "forceConsistentCasingInFileNames": true, 87 + /* Ensure that casing is correct in imports. */ 88 + 89 + /* Type Checking */ 90 + "strict": true, 91 + /* Enable all strict type-checking options. */ 92 + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 93 + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 94 + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 95 + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 96 + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 97 + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 98 + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 99 + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 100 + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 101 + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 102 + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 103 + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 104 + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 105 + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 106 + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 107 + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 108 + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 109 + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 110 + 111 + /* Completeness */ 112 + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 113 + "skipLibCheck": true /* Skip type checking all .d.ts files. */ 114 + } 115 + }
+2870
pnpm-lock.yaml
··· 12 specifier: ^2.6.1 13 version: 2.6.1 14 15 packages: 16 17 turbo-darwin-64@2.6.1: 18 resolution: {integrity: sha512-Dm0HwhyZF4J0uLqkhUyCVJvKM9Rw7M03v3J9A7drHDQW0qAbIGBrUijQ8g4Q9Cciw/BXRRd8Uzkc3oue+qn+ZQ==} 19 cpu: [x64] ··· 48 resolution: {integrity: sha512-qBwXXuDT3rA53kbNafGbT5r++BrhRgx3sAo0cHoDAeG9g1ItTmUMgltz3Hy7Hazy1ODqNpR+C7QwqL6DYB52yA==} 49 hasBin: true 50 51 snapshots: 52 53 turbo-darwin-64@2.6.1: 54 optional: true 55 ··· 76 turbo-linux-arm64: 2.6.1 77 turbo-windows-64: 2.6.1 78 turbo-windows-arm64: 2.6.1
··· 12 specifier: ^2.6.1 13 version: 2.6.1 14 15 + apps/flyff-exporter: 16 + dependencies: 17 + flyff.js: 18 + specifier: ^1.3.0 19 + version: 1.3.0 20 + lodash: 21 + specifier: ^4.17.21 22 + version: 4.17.21 23 + devDependencies: 24 + '@types/bun': 25 + specifier: ^1.2.11 26 + version: 1.3.3 27 + '@types/lodash': 28 + specifier: ^4.14.191 29 + version: 4.17.21 30 + '@types/node': 31 + specifier: ^18.11.18 32 + version: 18.19.130 33 + typescript: 34 + specifier: ^4.9.4 35 + version: 4.9.5 36 + 37 + apps/skillulator: 38 + dependencies: 39 + '@tanstack/react-router': 40 + specifier: ^1.81.0 41 + version: 1.139.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 42 + clsx: 43 + specifier: ^2.1.1 44 + version: 2.1.1 45 + i18next: 46 + specifier: ^23.16.5 47 + version: 23.16.8 48 + i18next-browser-languagedetector: 49 + specifier: ^8.0.0 50 + version: 8.2.0 51 + i18next-http-backend: 52 + specifier: ^2.6.2 53 + version: 2.7.3 54 + immer: 55 + specifier: ^10.1.1 56 + version: 10.2.0 57 + lz-string: 58 + specifier: ^1.5.0 59 + version: 1.5.0 60 + react: 61 + specifier: ^18.3.1 62 + version: 18.3.1 63 + react-dom: 64 + specifier: ^18.3.1 65 + version: 18.3.1(react@18.3.1) 66 + react-helmet: 67 + specifier: ^6.1.0 68 + version: 6.1.0(react@18.3.1) 69 + react-i18next: 70 + specifier: ^15.1.1 71 + version: 15.7.4(i18next@23.16.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3) 72 + react-router: 73 + specifier: ^7.0.0-pre.0 74 + version: 7.9.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 75 + zustand: 76 + specifier: ^5.0.1 77 + version: 5.0.8(@types/react@18.3.27)(immer@10.2.0)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)) 78 + devDependencies: 79 + '@tailwindcss/forms': 80 + specifier: ^0.5.9 81 + version: 0.5.10(tailwindcss@3.4.18(tsx@4.20.6)) 82 + '@tanstack/router-devtools': 83 + specifier: ^1.81.0 84 + version: 1.139.10(@tanstack/react-router@1.139.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.139.10)(@types/node@22.19.1)(csstype@3.2.3)(jiti@1.21.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(solid-js@1.9.10)(tsx@4.20.6) 85 + '@tanstack/router-plugin': 86 + specifier: ^1.79.0 87 + version: 1.139.10(@tanstack/react-router@1.139.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.21(@types/node@22.19.1)) 88 + '@types/node': 89 + specifier: ^22.9.0 90 + version: 22.19.1 91 + '@types/react': 92 + specifier: ^18.3.12 93 + version: 18.3.27 94 + '@types/react-dom': 95 + specifier: ^18.3.1 96 + version: 18.3.7(@types/react@18.3.27) 97 + '@vitejs/plugin-react': 98 + specifier: ^4.3.3 99 + version: 4.7.0(vite@5.4.21(@types/node@22.19.1)) 100 + autoprefixer: 101 + specifier: ^10.4.20 102 + version: 10.4.22(postcss@8.5.6) 103 + postcss: 104 + specifier: ^8.4.47 105 + version: 8.5.6 106 + tailwindcss: 107 + specifier: ^3.4.14 108 + version: 3.4.18(tsx@4.20.6) 109 + typescript: 110 + specifier: ^5.6.3 111 + version: 5.9.3 112 + vite: 113 + specifier: ^5.4.10 114 + version: 5.4.21(@types/node@22.19.1) 115 + 116 packages: 117 118 + '@alloc/quick-lru@5.2.0': 119 + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 120 + engines: {node: '>=10'} 121 + 122 + '@babel/code-frame@7.27.1': 123 + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 124 + engines: {node: '>=6.9.0'} 125 + 126 + '@babel/compat-data@7.28.5': 127 + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} 128 + engines: {node: '>=6.9.0'} 129 + 130 + '@babel/core@7.28.5': 131 + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} 132 + engines: {node: '>=6.9.0'} 133 + 134 + '@babel/generator@7.28.5': 135 + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} 136 + engines: {node: '>=6.9.0'} 137 + 138 + '@babel/helper-annotate-as-pure@7.27.3': 139 + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} 140 + engines: {node: '>=6.9.0'} 141 + 142 + '@babel/helper-compilation-targets@7.27.2': 143 + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} 144 + engines: {node: '>=6.9.0'} 145 + 146 + '@babel/helper-create-class-features-plugin@7.28.5': 147 + resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==} 148 + engines: {node: '>=6.9.0'} 149 + peerDependencies: 150 + '@babel/core': ^7.0.0 151 + 152 + '@babel/helper-globals@7.28.0': 153 + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} 154 + engines: {node: '>=6.9.0'} 155 + 156 + '@babel/helper-member-expression-to-functions@7.28.5': 157 + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} 158 + engines: {node: '>=6.9.0'} 159 + 160 + '@babel/helper-module-imports@7.27.1': 161 + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} 162 + engines: {node: '>=6.9.0'} 163 + 164 + '@babel/helper-module-transforms@7.28.3': 165 + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} 166 + engines: {node: '>=6.9.0'} 167 + peerDependencies: 168 + '@babel/core': ^7.0.0 169 + 170 + '@babel/helper-optimise-call-expression@7.27.1': 171 + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} 172 + engines: {node: '>=6.9.0'} 173 + 174 + '@babel/helper-plugin-utils@7.27.1': 175 + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} 176 + engines: {node: '>=6.9.0'} 177 + 178 + '@babel/helper-replace-supers@7.27.1': 179 + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} 180 + engines: {node: '>=6.9.0'} 181 + peerDependencies: 182 + '@babel/core': ^7.0.0 183 + 184 + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': 185 + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} 186 + engines: {node: '>=6.9.0'} 187 + 188 + '@babel/helper-string-parser@7.27.1': 189 + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 190 + engines: {node: '>=6.9.0'} 191 + 192 + '@babel/helper-validator-identifier@7.28.5': 193 + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} 194 + engines: {node: '>=6.9.0'} 195 + 196 + '@babel/helper-validator-option@7.27.1': 197 + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} 198 + engines: {node: '>=6.9.0'} 199 + 200 + '@babel/helpers@7.28.4': 201 + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} 202 + engines: {node: '>=6.9.0'} 203 + 204 + '@babel/parser@7.28.5': 205 + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} 206 + engines: {node: '>=6.0.0'} 207 + hasBin: true 208 + 209 + '@babel/plugin-syntax-jsx@7.27.1': 210 + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} 211 + engines: {node: '>=6.9.0'} 212 + peerDependencies: 213 + '@babel/core': ^7.0.0-0 214 + 215 + '@babel/plugin-syntax-typescript@7.27.1': 216 + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} 217 + engines: {node: '>=6.9.0'} 218 + peerDependencies: 219 + '@babel/core': ^7.0.0-0 220 + 221 + '@babel/plugin-transform-modules-commonjs@7.27.1': 222 + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} 223 + engines: {node: '>=6.9.0'} 224 + peerDependencies: 225 + '@babel/core': ^7.0.0-0 226 + 227 + '@babel/plugin-transform-react-jsx-self@7.27.1': 228 + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} 229 + engines: {node: '>=6.9.0'} 230 + peerDependencies: 231 + '@babel/core': ^7.0.0-0 232 + 233 + '@babel/plugin-transform-react-jsx-source@7.27.1': 234 + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} 235 + engines: {node: '>=6.9.0'} 236 + peerDependencies: 237 + '@babel/core': ^7.0.0-0 238 + 239 + '@babel/plugin-transform-typescript@7.28.5': 240 + resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==} 241 + engines: {node: '>=6.9.0'} 242 + peerDependencies: 243 + '@babel/core': ^7.0.0-0 244 + 245 + '@babel/preset-typescript@7.28.5': 246 + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} 247 + engines: {node: '>=6.9.0'} 248 + peerDependencies: 249 + '@babel/core': ^7.0.0-0 250 + 251 + '@babel/runtime@7.28.4': 252 + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} 253 + engines: {node: '>=6.9.0'} 254 + 255 + '@babel/template@7.27.2': 256 + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 257 + engines: {node: '>=6.9.0'} 258 + 259 + '@babel/traverse@7.28.5': 260 + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} 261 + engines: {node: '>=6.9.0'} 262 + 263 + '@babel/types@7.28.5': 264 + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} 265 + engines: {node: '>=6.9.0'} 266 + 267 + '@esbuild/aix-ppc64@0.21.5': 268 + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 269 + engines: {node: '>=12'} 270 + cpu: [ppc64] 271 + os: [aix] 272 + 273 + '@esbuild/aix-ppc64@0.25.12': 274 + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} 275 + engines: {node: '>=18'} 276 + cpu: [ppc64] 277 + os: [aix] 278 + 279 + '@esbuild/android-arm64@0.21.5': 280 + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 281 + engines: {node: '>=12'} 282 + cpu: [arm64] 283 + os: [android] 284 + 285 + '@esbuild/android-arm64@0.25.12': 286 + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} 287 + engines: {node: '>=18'} 288 + cpu: [arm64] 289 + os: [android] 290 + 291 + '@esbuild/android-arm@0.21.5': 292 + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 293 + engines: {node: '>=12'} 294 + cpu: [arm] 295 + os: [android] 296 + 297 + '@esbuild/android-arm@0.25.12': 298 + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} 299 + engines: {node: '>=18'} 300 + cpu: [arm] 301 + os: [android] 302 + 303 + '@esbuild/android-x64@0.21.5': 304 + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 305 + engines: {node: '>=12'} 306 + cpu: [x64] 307 + os: [android] 308 + 309 + '@esbuild/android-x64@0.25.12': 310 + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} 311 + engines: {node: '>=18'} 312 + cpu: [x64] 313 + os: [android] 314 + 315 + '@esbuild/darwin-arm64@0.21.5': 316 + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 317 + engines: {node: '>=12'} 318 + cpu: [arm64] 319 + os: [darwin] 320 + 321 + '@esbuild/darwin-arm64@0.25.12': 322 + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} 323 + engines: {node: '>=18'} 324 + cpu: [arm64] 325 + os: [darwin] 326 + 327 + '@esbuild/darwin-x64@0.21.5': 328 + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 329 + engines: {node: '>=12'} 330 + cpu: [x64] 331 + os: [darwin] 332 + 333 + '@esbuild/darwin-x64@0.25.12': 334 + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} 335 + engines: {node: '>=18'} 336 + cpu: [x64] 337 + os: [darwin] 338 + 339 + '@esbuild/freebsd-arm64@0.21.5': 340 + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 341 + engines: {node: '>=12'} 342 + cpu: [arm64] 343 + os: [freebsd] 344 + 345 + '@esbuild/freebsd-arm64@0.25.12': 346 + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} 347 + engines: {node: '>=18'} 348 + cpu: [arm64] 349 + os: [freebsd] 350 + 351 + '@esbuild/freebsd-x64@0.21.5': 352 + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 353 + engines: {node: '>=12'} 354 + cpu: [x64] 355 + os: [freebsd] 356 + 357 + '@esbuild/freebsd-x64@0.25.12': 358 + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} 359 + engines: {node: '>=18'} 360 + cpu: [x64] 361 + os: [freebsd] 362 + 363 + '@esbuild/linux-arm64@0.21.5': 364 + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 365 + engines: {node: '>=12'} 366 + cpu: [arm64] 367 + os: [linux] 368 + 369 + '@esbuild/linux-arm64@0.25.12': 370 + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} 371 + engines: {node: '>=18'} 372 + cpu: [arm64] 373 + os: [linux] 374 + 375 + '@esbuild/linux-arm@0.21.5': 376 + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 377 + engines: {node: '>=12'} 378 + cpu: [arm] 379 + os: [linux] 380 + 381 + '@esbuild/linux-arm@0.25.12': 382 + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} 383 + engines: {node: '>=18'} 384 + cpu: [arm] 385 + os: [linux] 386 + 387 + '@esbuild/linux-ia32@0.21.5': 388 + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 389 + engines: {node: '>=12'} 390 + cpu: [ia32] 391 + os: [linux] 392 + 393 + '@esbuild/linux-ia32@0.25.12': 394 + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} 395 + engines: {node: '>=18'} 396 + cpu: [ia32] 397 + os: [linux] 398 + 399 + '@esbuild/linux-loong64@0.21.5': 400 + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 401 + engines: {node: '>=12'} 402 + cpu: [loong64] 403 + os: [linux] 404 + 405 + '@esbuild/linux-loong64@0.25.12': 406 + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} 407 + engines: {node: '>=18'} 408 + cpu: [loong64] 409 + os: [linux] 410 + 411 + '@esbuild/linux-mips64el@0.21.5': 412 + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 413 + engines: {node: '>=12'} 414 + cpu: [mips64el] 415 + os: [linux] 416 + 417 + '@esbuild/linux-mips64el@0.25.12': 418 + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} 419 + engines: {node: '>=18'} 420 + cpu: [mips64el] 421 + os: [linux] 422 + 423 + '@esbuild/linux-ppc64@0.21.5': 424 + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 425 + engines: {node: '>=12'} 426 + cpu: [ppc64] 427 + os: [linux] 428 + 429 + '@esbuild/linux-ppc64@0.25.12': 430 + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} 431 + engines: {node: '>=18'} 432 + cpu: [ppc64] 433 + os: [linux] 434 + 435 + '@esbuild/linux-riscv64@0.21.5': 436 + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 437 + engines: {node: '>=12'} 438 + cpu: [riscv64] 439 + os: [linux] 440 + 441 + '@esbuild/linux-riscv64@0.25.12': 442 + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} 443 + engines: {node: '>=18'} 444 + cpu: [riscv64] 445 + os: [linux] 446 + 447 + '@esbuild/linux-s390x@0.21.5': 448 + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 449 + engines: {node: '>=12'} 450 + cpu: [s390x] 451 + os: [linux] 452 + 453 + '@esbuild/linux-s390x@0.25.12': 454 + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} 455 + engines: {node: '>=18'} 456 + cpu: [s390x] 457 + os: [linux] 458 + 459 + '@esbuild/linux-x64@0.21.5': 460 + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 461 + engines: {node: '>=12'} 462 + cpu: [x64] 463 + os: [linux] 464 + 465 + '@esbuild/linux-x64@0.25.12': 466 + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} 467 + engines: {node: '>=18'} 468 + cpu: [x64] 469 + os: [linux] 470 + 471 + '@esbuild/netbsd-arm64@0.25.12': 472 + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} 473 + engines: {node: '>=18'} 474 + cpu: [arm64] 475 + os: [netbsd] 476 + 477 + '@esbuild/netbsd-x64@0.21.5': 478 + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 479 + engines: {node: '>=12'} 480 + cpu: [x64] 481 + os: [netbsd] 482 + 483 + '@esbuild/netbsd-x64@0.25.12': 484 + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} 485 + engines: {node: '>=18'} 486 + cpu: [x64] 487 + os: [netbsd] 488 + 489 + '@esbuild/openbsd-arm64@0.25.12': 490 + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} 491 + engines: {node: '>=18'} 492 + cpu: [arm64] 493 + os: [openbsd] 494 + 495 + '@esbuild/openbsd-x64@0.21.5': 496 + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 497 + engines: {node: '>=12'} 498 + cpu: [x64] 499 + os: [openbsd] 500 + 501 + '@esbuild/openbsd-x64@0.25.12': 502 + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} 503 + engines: {node: '>=18'} 504 + cpu: [x64] 505 + os: [openbsd] 506 + 507 + '@esbuild/openharmony-arm64@0.25.12': 508 + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} 509 + engines: {node: '>=18'} 510 + cpu: [arm64] 511 + os: [openharmony] 512 + 513 + '@esbuild/sunos-x64@0.21.5': 514 + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 515 + engines: {node: '>=12'} 516 + cpu: [x64] 517 + os: [sunos] 518 + 519 + '@esbuild/sunos-x64@0.25.12': 520 + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} 521 + engines: {node: '>=18'} 522 + cpu: [x64] 523 + os: [sunos] 524 + 525 + '@esbuild/win32-arm64@0.21.5': 526 + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 527 + engines: {node: '>=12'} 528 + cpu: [arm64] 529 + os: [win32] 530 + 531 + '@esbuild/win32-arm64@0.25.12': 532 + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} 533 + engines: {node: '>=18'} 534 + cpu: [arm64] 535 + os: [win32] 536 + 537 + '@esbuild/win32-ia32@0.21.5': 538 + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 539 + engines: {node: '>=12'} 540 + cpu: [ia32] 541 + os: [win32] 542 + 543 + '@esbuild/win32-ia32@0.25.12': 544 + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} 545 + engines: {node: '>=18'} 546 + cpu: [ia32] 547 + os: [win32] 548 + 549 + '@esbuild/win32-x64@0.21.5': 550 + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 551 + engines: {node: '>=12'} 552 + cpu: [x64] 553 + os: [win32] 554 + 555 + '@esbuild/win32-x64@0.25.12': 556 + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} 557 + engines: {node: '>=18'} 558 + cpu: [x64] 559 + os: [win32] 560 + 561 + '@jridgewell/gen-mapping@0.3.13': 562 + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 563 + 564 + '@jridgewell/remapping@2.3.5': 565 + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} 566 + 567 + '@jridgewell/resolve-uri@3.1.2': 568 + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 569 + engines: {node: '>=6.0.0'} 570 + 571 + '@jridgewell/sourcemap-codec@1.5.5': 572 + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 573 + 574 + '@jridgewell/trace-mapping@0.3.31': 575 + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 576 + 577 + '@nodelib/fs.scandir@2.1.5': 578 + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 579 + engines: {node: '>= 8'} 580 + 581 + '@nodelib/fs.stat@2.0.5': 582 + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 583 + engines: {node: '>= 8'} 584 + 585 + '@nodelib/fs.walk@1.2.8': 586 + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 587 + engines: {node: '>= 8'} 588 + 589 + '@rolldown/pluginutils@1.0.0-beta.27': 590 + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} 591 + 592 + '@rollup/rollup-android-arm-eabi@4.53.3': 593 + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} 594 + cpu: [arm] 595 + os: [android] 596 + 597 + '@rollup/rollup-android-arm64@4.53.3': 598 + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} 599 + cpu: [arm64] 600 + os: [android] 601 + 602 + '@rollup/rollup-darwin-arm64@4.53.3': 603 + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} 604 + cpu: [arm64] 605 + os: [darwin] 606 + 607 + '@rollup/rollup-darwin-x64@4.53.3': 608 + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} 609 + cpu: [x64] 610 + os: [darwin] 611 + 612 + '@rollup/rollup-freebsd-arm64@4.53.3': 613 + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} 614 + cpu: [arm64] 615 + os: [freebsd] 616 + 617 + '@rollup/rollup-freebsd-x64@4.53.3': 618 + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} 619 + cpu: [x64] 620 + os: [freebsd] 621 + 622 + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': 623 + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} 624 + cpu: [arm] 625 + os: [linux] 626 + 627 + '@rollup/rollup-linux-arm-musleabihf@4.53.3': 628 + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} 629 + cpu: [arm] 630 + os: [linux] 631 + 632 + '@rollup/rollup-linux-arm64-gnu@4.53.3': 633 + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} 634 + cpu: [arm64] 635 + os: [linux] 636 + 637 + '@rollup/rollup-linux-arm64-musl@4.53.3': 638 + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} 639 + cpu: [arm64] 640 + os: [linux] 641 + 642 + '@rollup/rollup-linux-loong64-gnu@4.53.3': 643 + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} 644 + cpu: [loong64] 645 + os: [linux] 646 + 647 + '@rollup/rollup-linux-ppc64-gnu@4.53.3': 648 + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} 649 + cpu: [ppc64] 650 + os: [linux] 651 + 652 + '@rollup/rollup-linux-riscv64-gnu@4.53.3': 653 + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} 654 + cpu: [riscv64] 655 + os: [linux] 656 + 657 + '@rollup/rollup-linux-riscv64-musl@4.53.3': 658 + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} 659 + cpu: [riscv64] 660 + os: [linux] 661 + 662 + '@rollup/rollup-linux-s390x-gnu@4.53.3': 663 + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} 664 + cpu: [s390x] 665 + os: [linux] 666 + 667 + '@rollup/rollup-linux-x64-gnu@4.53.3': 668 + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} 669 + cpu: [x64] 670 + os: [linux] 671 + 672 + '@rollup/rollup-linux-x64-musl@4.53.3': 673 + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} 674 + cpu: [x64] 675 + os: [linux] 676 + 677 + '@rollup/rollup-openharmony-arm64@4.53.3': 678 + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} 679 + cpu: [arm64] 680 + os: [openharmony] 681 + 682 + '@rollup/rollup-win32-arm64-msvc@4.53.3': 683 + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} 684 + cpu: [arm64] 685 + os: [win32] 686 + 687 + '@rollup/rollup-win32-ia32-msvc@4.53.3': 688 + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} 689 + cpu: [ia32] 690 + os: [win32] 691 + 692 + '@rollup/rollup-win32-x64-gnu@4.53.3': 693 + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} 694 + cpu: [x64] 695 + os: [win32] 696 + 697 + '@rollup/rollup-win32-x64-msvc@4.53.3': 698 + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} 699 + cpu: [x64] 700 + os: [win32] 701 + 702 + '@tailwindcss/forms@0.5.10': 703 + resolution: {integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==} 704 + peerDependencies: 705 + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1' 706 + 707 + '@tanstack/history@1.139.0': 708 + resolution: {integrity: sha512-l6wcxwDBeh/7Dhles23U1O8lp9kNJmAb2yNjekR6olZwCRNAVA8TCXlVCrueELyFlYZqvQkh0ofxnzG62A1Kkg==} 709 + engines: {node: '>=12'} 710 + 711 + '@tanstack/react-router-devtools@1.139.10': 712 + resolution: {integrity: sha512-DEpVb6pCS7Kxls+hRqWctBDHlIcpVILf04T5GyAd7SXB0x0KMpdneyh+zBbaiydynBElwQhVxwoAR6QwPlZBVg==} 713 + engines: {node: '>=12'} 714 + peerDependencies: 715 + '@tanstack/react-router': ^1.139.10 716 + '@tanstack/router-core': ^1.139.10 717 + react: '>=18.0.0 || >=19.0.0' 718 + react-dom: '>=18.0.0 || >=19.0.0' 719 + peerDependenciesMeta: 720 + '@tanstack/router-core': 721 + optional: true 722 + 723 + '@tanstack/react-router@1.139.10': 724 + resolution: {integrity: sha512-SVEH2n38XPtQSbW3BgKpK8G1GdLzbsmo3B/epfjuRk2XlYkSFjj7P8DIoHKOgkaCh3T0hKh/CEEj+D130YmGUw==} 725 + engines: {node: '>=12'} 726 + peerDependencies: 727 + react: '>=18.0.0 || >=19.0.0' 728 + react-dom: '>=18.0.0 || >=19.0.0' 729 + 730 + '@tanstack/react-store@0.8.0': 731 + resolution: {integrity: sha512-1vG9beLIuB7q69skxK9r5xiLN3ztzIPfSQSs0GfeqWGO2tGIyInZx0x1COhpx97RKaONSoAb8C3dxacWksm1ow==} 732 + peerDependencies: 733 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 734 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 735 + 736 + '@tanstack/router-core@1.139.10': 737 + resolution: {integrity: sha512-gougqlYumNOn98d2ZhyoRJTNT8RvFip97z6T2T3/JTPrErwOsKaIA2FwlkfLJmJY1JQtUuF38IREJdfQrTJiqg==} 738 + engines: {node: '>=12'} 739 + 740 + '@tanstack/router-devtools-core@1.139.10': 741 + resolution: {integrity: sha512-rAUAhTvwivA49dkYR4bRUPRxqShO9dTD1+r3tZsnt23XlpmGtFvxBw8FYY2C9BvqaRLu+2RxACJDaXETVfm3OA==} 742 + engines: {node: '>=12'} 743 + peerDependencies: 744 + '@tanstack/router-core': ^1.139.10 745 + csstype: ^3.0.10 746 + solid-js: '>=1.9.5' 747 + peerDependenciesMeta: 748 + csstype: 749 + optional: true 750 + 751 + '@tanstack/router-devtools@1.139.10': 752 + resolution: {integrity: sha512-bjZhk3SVeZXtRAm+qxMlRr4IYlMR6JcxESxHtS+r2nV2cStprAG1GC+MfgUxbgle1o6smAgIyJqjLDexTjbTqw==} 753 + engines: {node: '>=12'} 754 + peerDependencies: 755 + '@tanstack/react-router': ^1.139.10 756 + csstype: ^3.0.10 757 + react: '>=18.0.0 || >=19.0.0' 758 + react-dom: '>=18.0.0 || >=19.0.0' 759 + peerDependenciesMeta: 760 + csstype: 761 + optional: true 762 + 763 + '@tanstack/router-generator@1.139.10': 764 + resolution: {integrity: sha512-Uo0xmz6w1Ayv1AMyWLsT0ngXmjB8yAKv5khOaci/ZxAZNyvz3t84jqI7XXlG9fwtDRdTF4G/qBmXlPEmPk6Wfg==} 765 + engines: {node: '>=12'} 766 + 767 + '@tanstack/router-plugin@1.139.10': 768 + resolution: {integrity: sha512-0c9wzBKuz2U1jO+oAszT6VRaQDWPLfCJuPeXX7MCisM0nV2LVaxdb/y9YaWSKJ7zlQ7pwFkh37KYqcJhPXug/A==} 769 + engines: {node: '>=12'} 770 + peerDependencies: 771 + '@rsbuild/core': '>=1.0.2' 772 + '@tanstack/react-router': ^1.139.10 773 + vite: '>=5.0.0 || >=6.0.0 || >=7.0.0' 774 + vite-plugin-solid: ^2.11.10 775 + webpack: '>=5.92.0' 776 + peerDependenciesMeta: 777 + '@rsbuild/core': 778 + optional: true 779 + '@tanstack/react-router': 780 + optional: true 781 + vite: 782 + optional: true 783 + vite-plugin-solid: 784 + optional: true 785 + webpack: 786 + optional: true 787 + 788 + '@tanstack/router-utils@1.139.0': 789 + resolution: {integrity: sha512-jT7D6NimWqoFSkid4vCno8gvTyfL1+NHpgm3es0B2UNhKKRV3LngOGilm1m6v8Qvk/gy6Fh/tvB+s+hBl6GhOg==} 790 + engines: {node: '>=12'} 791 + 792 + '@tanstack/store@0.8.0': 793 + resolution: {integrity: sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ==} 794 + 795 + '@tanstack/virtual-file-routes@1.139.0': 796 + resolution: {integrity: sha512-9PImF1d1tovTUIpjFVa0W7Fwj/MHif7BaaczgJJfbv3sDt1Gh+oW9W9uCw9M3ndEJynnp5ZD/TTs0RGubH5ssg==} 797 + engines: {node: '>=12'} 798 + 799 + '@types/babel__core@7.20.5': 800 + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 801 + 802 + '@types/babel__generator@7.27.0': 803 + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} 804 + 805 + '@types/babel__template@7.4.4': 806 + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 807 + 808 + '@types/babel__traverse@7.28.0': 809 + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} 810 + 811 + '@types/bun@1.3.3': 812 + resolution: {integrity: sha512-ogrKbJ2X5N0kWLLFKeytG0eHDleBYtngtlbu9cyBKFtNL3cnpDZkNdQj8flVf6WTZUX5ulI9AY1oa7ljhSrp+g==} 813 + 814 + '@types/estree@1.0.8': 815 + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 816 + 817 + '@types/lodash@4.17.21': 818 + resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} 819 + 820 + '@types/node@18.19.130': 821 + resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} 822 + 823 + '@types/node@22.19.1': 824 + resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} 825 + 826 + '@types/prop-types@15.7.15': 827 + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} 828 + 829 + '@types/react-dom@18.3.7': 830 + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} 831 + peerDependencies: 832 + '@types/react': ^18.0.0 833 + 834 + '@types/react@18.3.27': 835 + resolution: {integrity: sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==} 836 + 837 + '@vitejs/plugin-react@4.7.0': 838 + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} 839 + engines: {node: ^14.18.0 || >=16.0.0} 840 + peerDependencies: 841 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 842 + 843 + acorn@8.15.0: 844 + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 845 + engines: {node: '>=0.4.0'} 846 + hasBin: true 847 + 848 + ansis@4.2.0: 849 + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} 850 + engines: {node: '>=14'} 851 + 852 + any-promise@1.3.0: 853 + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 854 + 855 + anymatch@3.1.3: 856 + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 857 + engines: {node: '>= 8'} 858 + 859 + arg@5.0.2: 860 + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 861 + 862 + ast-types@0.16.1: 863 + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} 864 + engines: {node: '>=4'} 865 + 866 + autoprefixer@10.4.22: 867 + resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==} 868 + engines: {node: ^10 || ^12 || >=14} 869 + hasBin: true 870 + peerDependencies: 871 + postcss: ^8.1.0 872 + 873 + babel-dead-code-elimination@1.0.10: 874 + resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} 875 + 876 + baseline-browser-mapping@2.8.31: 877 + resolution: {integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==} 878 + hasBin: true 879 + 880 + binary-extensions@2.3.0: 881 + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 882 + engines: {node: '>=8'} 883 + 884 + braces@3.0.3: 885 + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 886 + engines: {node: '>=8'} 887 + 888 + browserslist@4.28.0: 889 + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} 890 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 891 + hasBin: true 892 + 893 + bun-types@1.3.3: 894 + resolution: {integrity: sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ==} 895 + 896 + camelcase-css@2.0.1: 897 + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 898 + engines: {node: '>= 6'} 899 + 900 + caniuse-lite@1.0.30001757: 901 + resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==} 902 + 903 + chokidar@3.6.0: 904 + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 905 + engines: {node: '>= 8.10.0'} 906 + 907 + clsx@2.1.1: 908 + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 909 + engines: {node: '>=6'} 910 + 911 + commander@4.1.1: 912 + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 913 + engines: {node: '>= 6'} 914 + 915 + convert-source-map@2.0.0: 916 + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 917 + 918 + cookie-es@2.0.0: 919 + resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} 920 + 921 + cookie@1.1.1: 922 + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} 923 + engines: {node: '>=18'} 924 + 925 + cross-fetch@4.0.0: 926 + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} 927 + 928 + cssesc@3.0.0: 929 + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 930 + engines: {node: '>=4'} 931 + hasBin: true 932 + 933 + csstype@3.2.3: 934 + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} 935 + 936 + debug@4.4.3: 937 + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 938 + engines: {node: '>=6.0'} 939 + peerDependencies: 940 + supports-color: '*' 941 + peerDependenciesMeta: 942 + supports-color: 943 + optional: true 944 + 945 + didyoumean@1.2.2: 946 + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 947 + 948 + diff@8.0.2: 949 + resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} 950 + engines: {node: '>=0.3.1'} 951 + 952 + dlv@1.1.3: 953 + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 954 + 955 + electron-to-chromium@1.5.262: 956 + resolution: {integrity: sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==} 957 + 958 + esbuild@0.21.5: 959 + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 960 + engines: {node: '>=12'} 961 + hasBin: true 962 + 963 + esbuild@0.25.12: 964 + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} 965 + engines: {node: '>=18'} 966 + hasBin: true 967 + 968 + escalade@3.2.0: 969 + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 970 + engines: {node: '>=6'} 971 + 972 + esprima@4.0.1: 973 + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 974 + engines: {node: '>=4'} 975 + hasBin: true 976 + 977 + fast-glob@3.3.3: 978 + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 979 + engines: {node: '>=8.6.0'} 980 + 981 + fastq@1.19.1: 982 + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 983 + 984 + fdir@6.5.0: 985 + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 986 + engines: {node: '>=12.0.0'} 987 + peerDependencies: 988 + picomatch: ^3 || ^4 989 + peerDependenciesMeta: 990 + picomatch: 991 + optional: true 992 + 993 + fill-range@7.1.1: 994 + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 995 + engines: {node: '>=8'} 996 + 997 + flyff.js@1.3.0: 998 + resolution: {integrity: sha512-tD9eVvRBRFdzwbHyQ8IeyXNG92YMucZCTBkbOJj5ITfDGkXgRp9NbrmOmI5cgcNphYDyAPDDSEdHUNyemwhY6w==} 999 + 1000 + fraction.js@5.3.4: 1001 + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} 1002 + 1003 + fsevents@2.3.3: 1004 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1005 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1006 + os: [darwin] 1007 + 1008 + function-bind@1.1.2: 1009 + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1010 + 1011 + gensync@1.0.0-beta.2: 1012 + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1013 + engines: {node: '>=6.9.0'} 1014 + 1015 + get-tsconfig@4.13.0: 1016 + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} 1017 + 1018 + glob-parent@5.1.2: 1019 + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1020 + engines: {node: '>= 6'} 1021 + 1022 + glob-parent@6.0.2: 1023 + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1024 + engines: {node: '>=10.13.0'} 1025 + 1026 + goober@2.1.18: 1027 + resolution: {integrity: sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==} 1028 + peerDependencies: 1029 + csstype: ^3.0.10 1030 + 1031 + hasown@2.0.2: 1032 + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1033 + engines: {node: '>= 0.4'} 1034 + 1035 + html-parse-stringify@3.0.1: 1036 + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} 1037 + 1038 + i18next-browser-languagedetector@8.2.0: 1039 + resolution: {integrity: sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g==} 1040 + 1041 + i18next-http-backend@2.7.3: 1042 + resolution: {integrity: sha512-FgZxrXdRA5u44xfYsJlEBL4/KH3f2IluBpgV/7riW0YW2VEyM8FzVt2XHAOi6id0Ppj7vZvCZVpp5LrGXnc8Ig==} 1043 + 1044 + i18next@23.16.8: 1045 + resolution: {integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==} 1046 + 1047 + immer@10.2.0: 1048 + resolution: {integrity: sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==} 1049 + 1050 + is-binary-path@2.1.0: 1051 + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1052 + engines: {node: '>=8'} 1053 + 1054 + is-core-module@2.16.1: 1055 + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1056 + engines: {node: '>= 0.4'} 1057 + 1058 + is-extglob@2.1.1: 1059 + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1060 + engines: {node: '>=0.10.0'} 1061 + 1062 + is-glob@4.0.3: 1063 + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1064 + engines: {node: '>=0.10.0'} 1065 + 1066 + is-number@7.0.0: 1067 + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1068 + engines: {node: '>=0.12.0'} 1069 + 1070 + isbot@5.1.32: 1071 + resolution: {integrity: sha512-VNfjM73zz2IBZmdShMfAUg10prm6t7HFUQmNAEOAVS4YH92ZrZcvkMcGX6cIgBJAzWDzPent/EeAtYEHNPNPBQ==} 1072 + engines: {node: '>=18'} 1073 + 1074 + jiti@1.21.7: 1075 + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} 1076 + hasBin: true 1077 + 1078 + js-tokens@4.0.0: 1079 + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1080 + 1081 + jsesc@3.1.0: 1082 + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1083 + engines: {node: '>=6'} 1084 + hasBin: true 1085 + 1086 + json5@2.2.3: 1087 + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1088 + engines: {node: '>=6'} 1089 + hasBin: true 1090 + 1091 + lilconfig@3.1.3: 1092 + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 1093 + engines: {node: '>=14'} 1094 + 1095 + lines-and-columns@1.2.4: 1096 + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1097 + 1098 + lodash@4.17.21: 1099 + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1100 + 1101 + loose-envify@1.4.0: 1102 + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1103 + hasBin: true 1104 + 1105 + lru-cache@5.1.1: 1106 + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1107 + 1108 + lz-string@1.5.0: 1109 + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} 1110 + hasBin: true 1111 + 1112 + merge2@1.4.1: 1113 + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1114 + engines: {node: '>= 8'} 1115 + 1116 + micromatch@4.0.8: 1117 + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1118 + engines: {node: '>=8.6'} 1119 + 1120 + mini-svg-data-uri@1.4.4: 1121 + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} 1122 + hasBin: true 1123 + 1124 + ms@2.1.3: 1125 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1126 + 1127 + mz@2.7.0: 1128 + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1129 + 1130 + nanoid@3.3.11: 1131 + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1132 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1133 + hasBin: true 1134 + 1135 + node-fetch@2.7.0: 1136 + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 1137 + engines: {node: 4.x || >=6.0.0} 1138 + peerDependencies: 1139 + encoding: ^0.1.0 1140 + peerDependenciesMeta: 1141 + encoding: 1142 + optional: true 1143 + 1144 + node-releases@2.0.27: 1145 + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} 1146 + 1147 + normalize-path@3.0.0: 1148 + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1149 + engines: {node: '>=0.10.0'} 1150 + 1151 + normalize-range@0.1.2: 1152 + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1153 + engines: {node: '>=0.10.0'} 1154 + 1155 + object-assign@4.1.1: 1156 + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1157 + engines: {node: '>=0.10.0'} 1158 + 1159 + object-hash@3.0.0: 1160 + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1161 + engines: {node: '>= 6'} 1162 + 1163 + path-parse@1.0.7: 1164 + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1165 + 1166 + pathe@2.0.3: 1167 + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1168 + 1169 + picocolors@1.1.1: 1170 + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1171 + 1172 + picomatch@2.3.1: 1173 + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1174 + engines: {node: '>=8.6'} 1175 + 1176 + picomatch@4.0.3: 1177 + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 1178 + engines: {node: '>=12'} 1179 + 1180 + pify@2.3.0: 1181 + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1182 + engines: {node: '>=0.10.0'} 1183 + 1184 + pirates@4.0.7: 1185 + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} 1186 + engines: {node: '>= 6'} 1187 + 1188 + postcss-import@15.1.0: 1189 + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1190 + engines: {node: '>=14.0.0'} 1191 + peerDependencies: 1192 + postcss: ^8.0.0 1193 + 1194 + postcss-js@4.1.0: 1195 + resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} 1196 + engines: {node: ^12 || ^14 || >= 16} 1197 + peerDependencies: 1198 + postcss: ^8.4.21 1199 + 1200 + postcss-load-config@6.0.1: 1201 + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 1202 + engines: {node: '>= 18'} 1203 + peerDependencies: 1204 + jiti: '>=1.21.0' 1205 + postcss: '>=8.0.9' 1206 + tsx: ^4.8.1 1207 + yaml: ^2.4.2 1208 + peerDependenciesMeta: 1209 + jiti: 1210 + optional: true 1211 + postcss: 1212 + optional: true 1213 + tsx: 1214 + optional: true 1215 + yaml: 1216 + optional: true 1217 + 1218 + postcss-nested@6.2.0: 1219 + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} 1220 + engines: {node: '>=12.0'} 1221 + peerDependencies: 1222 + postcss: ^8.2.14 1223 + 1224 + postcss-selector-parser@6.1.2: 1225 + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 1226 + engines: {node: '>=4'} 1227 + 1228 + postcss-value-parser@4.2.0: 1229 + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1230 + 1231 + postcss@8.5.6: 1232 + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 1233 + engines: {node: ^10 || ^12 || >=14} 1234 + 1235 + prettier@3.7.1: 1236 + resolution: {integrity: sha512-RWKXE4qB3u5Z6yz7omJkjWwmTfLdcbv44jUVHC5NpfXwFGzvpQM798FGv/6WNK879tc+Cn0AAyherCl1KjbyZQ==} 1237 + engines: {node: '>=14'} 1238 + hasBin: true 1239 + 1240 + prop-types@15.8.1: 1241 + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 1242 + 1243 + queue-microtask@1.2.3: 1244 + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1245 + 1246 + react-dom@18.3.1: 1247 + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} 1248 + peerDependencies: 1249 + react: ^18.3.1 1250 + 1251 + react-fast-compare@3.2.2: 1252 + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} 1253 + 1254 + react-helmet@6.1.0: 1255 + resolution: {integrity: sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==} 1256 + peerDependencies: 1257 + react: '>=16.3.0' 1258 + 1259 + react-i18next@15.7.4: 1260 + resolution: {integrity: sha512-nyU8iKNrI5uDJch0z9+Y5XEr34b0wkyYj3Rp+tfbahxtlswxSCjcUL9H0nqXo9IR3/t5Y5PKIA3fx3MfUyR9Xw==} 1261 + peerDependencies: 1262 + i18next: '>= 23.4.0' 1263 + react: '>= 16.8.0' 1264 + react-dom: '*' 1265 + react-native: '*' 1266 + typescript: ^5 1267 + peerDependenciesMeta: 1268 + react-dom: 1269 + optional: true 1270 + react-native: 1271 + optional: true 1272 + typescript: 1273 + optional: true 1274 + 1275 + react-is@16.13.1: 1276 + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 1277 + 1278 + react-refresh@0.17.0: 1279 + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} 1280 + engines: {node: '>=0.10.0'} 1281 + 1282 + react-router@7.9.6: 1283 + resolution: {integrity: sha512-Y1tUp8clYRXpfPITyuifmSoE2vncSME18uVLgaqyxh9H35JWpIfzHo+9y3Fzh5odk/jxPW29IgLgzcdwxGqyNA==} 1284 + engines: {node: '>=20.0.0'} 1285 + peerDependencies: 1286 + react: '>=18' 1287 + react-dom: '>=18' 1288 + peerDependenciesMeta: 1289 + react-dom: 1290 + optional: true 1291 + 1292 + react-side-effect@2.1.2: 1293 + resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} 1294 + peerDependencies: 1295 + react: ^16.3.0 || ^17.0.0 || ^18.0.0 1296 + 1297 + react@18.3.1: 1298 + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} 1299 + engines: {node: '>=0.10.0'} 1300 + 1301 + read-cache@1.0.0: 1302 + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1303 + 1304 + readdirp@3.6.0: 1305 + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1306 + engines: {node: '>=8.10.0'} 1307 + 1308 + recast@0.23.11: 1309 + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} 1310 + engines: {node: '>= 4'} 1311 + 1312 + resolve-pkg-maps@1.0.0: 1313 + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1314 + 1315 + resolve@1.22.11: 1316 + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} 1317 + engines: {node: '>= 0.4'} 1318 + hasBin: true 1319 + 1320 + reusify@1.1.0: 1321 + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1322 + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1323 + 1324 + rollup@4.53.3: 1325 + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} 1326 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1327 + hasBin: true 1328 + 1329 + run-parallel@1.2.0: 1330 + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1331 + 1332 + scheduler@0.23.2: 1333 + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} 1334 + 1335 + semver@6.3.1: 1336 + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1337 + hasBin: true 1338 + 1339 + seroval-plugins@1.3.3: 1340 + resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==} 1341 + engines: {node: '>=10'} 1342 + peerDependencies: 1343 + seroval: ^1.0 1344 + 1345 + seroval-plugins@1.4.0: 1346 + resolution: {integrity: sha512-zir1aWzoiax6pbBVjoYVd0O1QQXgIL3eVGBMsBsNmM8Ukq90yGaWlfx0AB9dTS8GPqrOrbXn79vmItCUP9U3BQ==} 1347 + engines: {node: '>=10'} 1348 + peerDependencies: 1349 + seroval: ^1.0 1350 + 1351 + seroval@1.3.2: 1352 + resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==} 1353 + engines: {node: '>=10'} 1354 + 1355 + seroval@1.4.0: 1356 + resolution: {integrity: sha512-BdrNXdzlofomLTiRnwJTSEAaGKyHHZkbMXIywOh7zlzp4uZnXErEwl9XZ+N1hJSNpeTtNxWvVwN0wUzAIQ4Hpg==} 1357 + engines: {node: '>=10'} 1358 + 1359 + set-cookie-parser@2.7.2: 1360 + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} 1361 + 1362 + solid-js@1.9.10: 1363 + resolution: {integrity: sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==} 1364 + 1365 + source-map-js@1.2.1: 1366 + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1367 + engines: {node: '>=0.10.0'} 1368 + 1369 + source-map@0.6.1: 1370 + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1371 + engines: {node: '>=0.10.0'} 1372 + 1373 + source-map@0.7.6: 1374 + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} 1375 + engines: {node: '>= 12'} 1376 + 1377 + sucrase@3.35.1: 1378 + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} 1379 + engines: {node: '>=16 || 14 >=14.17'} 1380 + hasBin: true 1381 + 1382 + supports-preserve-symlinks-flag@1.0.0: 1383 + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1384 + engines: {node: '>= 0.4'} 1385 + 1386 + tailwindcss@3.4.18: 1387 + resolution: {integrity: sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==} 1388 + engines: {node: '>=14.0.0'} 1389 + hasBin: true 1390 + 1391 + thenify-all@1.6.0: 1392 + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1393 + engines: {node: '>=0.8'} 1394 + 1395 + thenify@3.3.1: 1396 + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1397 + 1398 + tiny-invariant@1.3.3: 1399 + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} 1400 + 1401 + tiny-warning@1.0.3: 1402 + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} 1403 + 1404 + tinyglobby@0.2.15: 1405 + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 1406 + engines: {node: '>=12.0.0'} 1407 + 1408 + to-regex-range@5.0.1: 1409 + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1410 + engines: {node: '>=8.0'} 1411 + 1412 + tr46@0.0.3: 1413 + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 1414 + 1415 + ts-interface-checker@0.1.13: 1416 + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1417 + 1418 + tslib@2.8.1: 1419 + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1420 + 1421 + tsx@4.20.6: 1422 + resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} 1423 + engines: {node: '>=18.0.0'} 1424 + hasBin: true 1425 + 1426 turbo-darwin-64@2.6.1: 1427 resolution: {integrity: sha512-Dm0HwhyZF4J0uLqkhUyCVJvKM9Rw7M03v3J9A7drHDQW0qAbIGBrUijQ8g4Q9Cciw/BXRRd8Uzkc3oue+qn+ZQ==} 1428 cpu: [x64] ··· 1457 resolution: {integrity: sha512-qBwXXuDT3rA53kbNafGbT5r++BrhRgx3sAo0cHoDAeG9g1ItTmUMgltz3Hy7Hazy1ODqNpR+C7QwqL6DYB52yA==} 1458 hasBin: true 1459 1460 + typescript@4.9.5: 1461 + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} 1462 + engines: {node: '>=4.2.0'} 1463 + hasBin: true 1464 + 1465 + typescript@5.9.3: 1466 + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 1467 + engines: {node: '>=14.17'} 1468 + hasBin: true 1469 + 1470 + undici-types@5.26.5: 1471 + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 1472 + 1473 + undici-types@6.21.0: 1474 + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 1475 + 1476 + unplugin@2.3.11: 1477 + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} 1478 + engines: {node: '>=18.12.0'} 1479 + 1480 + update-browserslist-db@1.1.4: 1481 + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} 1482 + hasBin: true 1483 + peerDependencies: 1484 + browserslist: '>= 4.21.0' 1485 + 1486 + use-sync-external-store@1.6.0: 1487 + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} 1488 + peerDependencies: 1489 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 1490 + 1491 + util-deprecate@1.0.2: 1492 + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1493 + 1494 + vite@5.4.21: 1495 + resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==} 1496 + engines: {node: ^18.0.0 || >=20.0.0} 1497 + hasBin: true 1498 + peerDependencies: 1499 + '@types/node': ^18.0.0 || >=20.0.0 1500 + less: '*' 1501 + lightningcss: ^1.21.0 1502 + sass: '*' 1503 + sass-embedded: '*' 1504 + stylus: '*' 1505 + sugarss: '*' 1506 + terser: ^5.4.0 1507 + peerDependenciesMeta: 1508 + '@types/node': 1509 + optional: true 1510 + less: 1511 + optional: true 1512 + lightningcss: 1513 + optional: true 1514 + sass: 1515 + optional: true 1516 + sass-embedded: 1517 + optional: true 1518 + stylus: 1519 + optional: true 1520 + sugarss: 1521 + optional: true 1522 + terser: 1523 + optional: true 1524 + 1525 + vite@7.2.4: 1526 + resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==} 1527 + engines: {node: ^20.19.0 || >=22.12.0} 1528 + hasBin: true 1529 + peerDependencies: 1530 + '@types/node': ^20.19.0 || >=22.12.0 1531 + jiti: '>=1.21.0' 1532 + less: ^4.0.0 1533 + lightningcss: ^1.21.0 1534 + sass: ^1.70.0 1535 + sass-embedded: ^1.70.0 1536 + stylus: '>=0.54.8' 1537 + sugarss: ^5.0.0 1538 + terser: ^5.16.0 1539 + tsx: ^4.8.1 1540 + yaml: ^2.4.2 1541 + peerDependenciesMeta: 1542 + '@types/node': 1543 + optional: true 1544 + jiti: 1545 + optional: true 1546 + less: 1547 + optional: true 1548 + lightningcss: 1549 + optional: true 1550 + sass: 1551 + optional: true 1552 + sass-embedded: 1553 + optional: true 1554 + stylus: 1555 + optional: true 1556 + sugarss: 1557 + optional: true 1558 + terser: 1559 + optional: true 1560 + tsx: 1561 + optional: true 1562 + yaml: 1563 + optional: true 1564 + 1565 + void-elements@3.1.0: 1566 + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} 1567 + engines: {node: '>=0.10.0'} 1568 + 1569 + webidl-conversions@3.0.1: 1570 + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 1571 + 1572 + webpack-virtual-modules@0.6.2: 1573 + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} 1574 + 1575 + whatwg-url@5.0.0: 1576 + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 1577 + 1578 + yallist@3.1.1: 1579 + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1580 + 1581 + zod@3.25.76: 1582 + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} 1583 + 1584 + zustand@5.0.8: 1585 + resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} 1586 + engines: {node: '>=12.20.0'} 1587 + peerDependencies: 1588 + '@types/react': '>=18.0.0' 1589 + immer: '>=9.0.6' 1590 + react: '>=18.0.0' 1591 + use-sync-external-store: '>=1.2.0' 1592 + peerDependenciesMeta: 1593 + '@types/react': 1594 + optional: true 1595 + immer: 1596 + optional: true 1597 + react: 1598 + optional: true 1599 + use-sync-external-store: 1600 + optional: true 1601 + 1602 snapshots: 1603 1604 + '@alloc/quick-lru@5.2.0': {} 1605 + 1606 + '@babel/code-frame@7.27.1': 1607 + dependencies: 1608 + '@babel/helper-validator-identifier': 7.28.5 1609 + js-tokens: 4.0.0 1610 + picocolors: 1.1.1 1611 + 1612 + '@babel/compat-data@7.28.5': {} 1613 + 1614 + '@babel/core@7.28.5': 1615 + dependencies: 1616 + '@babel/code-frame': 7.27.1 1617 + '@babel/generator': 7.28.5 1618 + '@babel/helper-compilation-targets': 7.27.2 1619 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) 1620 + '@babel/helpers': 7.28.4 1621 + '@babel/parser': 7.28.5 1622 + '@babel/template': 7.27.2 1623 + '@babel/traverse': 7.28.5 1624 + '@babel/types': 7.28.5 1625 + '@jridgewell/remapping': 2.3.5 1626 + convert-source-map: 2.0.0 1627 + debug: 4.4.3 1628 + gensync: 1.0.0-beta.2 1629 + json5: 2.2.3 1630 + semver: 6.3.1 1631 + transitivePeerDependencies: 1632 + - supports-color 1633 + 1634 + '@babel/generator@7.28.5': 1635 + dependencies: 1636 + '@babel/parser': 7.28.5 1637 + '@babel/types': 7.28.5 1638 + '@jridgewell/gen-mapping': 0.3.13 1639 + '@jridgewell/trace-mapping': 0.3.31 1640 + jsesc: 3.1.0 1641 + 1642 + '@babel/helper-annotate-as-pure@7.27.3': 1643 + dependencies: 1644 + '@babel/types': 7.28.5 1645 + 1646 + '@babel/helper-compilation-targets@7.27.2': 1647 + dependencies: 1648 + '@babel/compat-data': 7.28.5 1649 + '@babel/helper-validator-option': 7.27.1 1650 + browserslist: 4.28.0 1651 + lru-cache: 5.1.1 1652 + semver: 6.3.1 1653 + 1654 + '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)': 1655 + dependencies: 1656 + '@babel/core': 7.28.5 1657 + '@babel/helper-annotate-as-pure': 7.27.3 1658 + '@babel/helper-member-expression-to-functions': 7.28.5 1659 + '@babel/helper-optimise-call-expression': 7.27.1 1660 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) 1661 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 1662 + '@babel/traverse': 7.28.5 1663 + semver: 6.3.1 1664 + transitivePeerDependencies: 1665 + - supports-color 1666 + 1667 + '@babel/helper-globals@7.28.0': {} 1668 + 1669 + '@babel/helper-member-expression-to-functions@7.28.5': 1670 + dependencies: 1671 + '@babel/traverse': 7.28.5 1672 + '@babel/types': 7.28.5 1673 + transitivePeerDependencies: 1674 + - supports-color 1675 + 1676 + '@babel/helper-module-imports@7.27.1': 1677 + dependencies: 1678 + '@babel/traverse': 7.28.5 1679 + '@babel/types': 7.28.5 1680 + transitivePeerDependencies: 1681 + - supports-color 1682 + 1683 + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': 1684 + dependencies: 1685 + '@babel/core': 7.28.5 1686 + '@babel/helper-module-imports': 7.27.1 1687 + '@babel/helper-validator-identifier': 7.28.5 1688 + '@babel/traverse': 7.28.5 1689 + transitivePeerDependencies: 1690 + - supports-color 1691 + 1692 + '@babel/helper-optimise-call-expression@7.27.1': 1693 + dependencies: 1694 + '@babel/types': 7.28.5 1695 + 1696 + '@babel/helper-plugin-utils@7.27.1': {} 1697 + 1698 + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': 1699 + dependencies: 1700 + '@babel/core': 7.28.5 1701 + '@babel/helper-member-expression-to-functions': 7.28.5 1702 + '@babel/helper-optimise-call-expression': 7.27.1 1703 + '@babel/traverse': 7.28.5 1704 + transitivePeerDependencies: 1705 + - supports-color 1706 + 1707 + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': 1708 + dependencies: 1709 + '@babel/traverse': 7.28.5 1710 + '@babel/types': 7.28.5 1711 + transitivePeerDependencies: 1712 + - supports-color 1713 + 1714 + '@babel/helper-string-parser@7.27.1': {} 1715 + 1716 + '@babel/helper-validator-identifier@7.28.5': {} 1717 + 1718 + '@babel/helper-validator-option@7.27.1': {} 1719 + 1720 + '@babel/helpers@7.28.4': 1721 + dependencies: 1722 + '@babel/template': 7.27.2 1723 + '@babel/types': 7.28.5 1724 + 1725 + '@babel/parser@7.28.5': 1726 + dependencies: 1727 + '@babel/types': 7.28.5 1728 + 1729 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': 1730 + dependencies: 1731 + '@babel/core': 7.28.5 1732 + '@babel/helper-plugin-utils': 7.27.1 1733 + 1734 + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': 1735 + dependencies: 1736 + '@babel/core': 7.28.5 1737 + '@babel/helper-plugin-utils': 7.27.1 1738 + 1739 + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)': 1740 + dependencies: 1741 + '@babel/core': 7.28.5 1742 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) 1743 + '@babel/helper-plugin-utils': 7.27.1 1744 + transitivePeerDependencies: 1745 + - supports-color 1746 + 1747 + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': 1748 + dependencies: 1749 + '@babel/core': 7.28.5 1750 + '@babel/helper-plugin-utils': 7.27.1 1751 + 1752 + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': 1753 + dependencies: 1754 + '@babel/core': 7.28.5 1755 + '@babel/helper-plugin-utils': 7.27.1 1756 + 1757 + '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)': 1758 + dependencies: 1759 + '@babel/core': 7.28.5 1760 + '@babel/helper-annotate-as-pure': 7.27.3 1761 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) 1762 + '@babel/helper-plugin-utils': 7.27.1 1763 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 1764 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) 1765 + transitivePeerDependencies: 1766 + - supports-color 1767 + 1768 + '@babel/preset-typescript@7.28.5(@babel/core@7.28.5)': 1769 + dependencies: 1770 + '@babel/core': 7.28.5 1771 + '@babel/helper-plugin-utils': 7.27.1 1772 + '@babel/helper-validator-option': 7.27.1 1773 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) 1774 + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) 1775 + '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5) 1776 + transitivePeerDependencies: 1777 + - supports-color 1778 + 1779 + '@babel/runtime@7.28.4': {} 1780 + 1781 + '@babel/template@7.27.2': 1782 + dependencies: 1783 + '@babel/code-frame': 7.27.1 1784 + '@babel/parser': 7.28.5 1785 + '@babel/types': 7.28.5 1786 + 1787 + '@babel/traverse@7.28.5': 1788 + dependencies: 1789 + '@babel/code-frame': 7.27.1 1790 + '@babel/generator': 7.28.5 1791 + '@babel/helper-globals': 7.28.0 1792 + '@babel/parser': 7.28.5 1793 + '@babel/template': 7.27.2 1794 + '@babel/types': 7.28.5 1795 + debug: 4.4.3 1796 + transitivePeerDependencies: 1797 + - supports-color 1798 + 1799 + '@babel/types@7.28.5': 1800 + dependencies: 1801 + '@babel/helper-string-parser': 7.27.1 1802 + '@babel/helper-validator-identifier': 7.28.5 1803 + 1804 + '@esbuild/aix-ppc64@0.21.5': 1805 + optional: true 1806 + 1807 + '@esbuild/aix-ppc64@0.25.12': 1808 + optional: true 1809 + 1810 + '@esbuild/android-arm64@0.21.5': 1811 + optional: true 1812 + 1813 + '@esbuild/android-arm64@0.25.12': 1814 + optional: true 1815 + 1816 + '@esbuild/android-arm@0.21.5': 1817 + optional: true 1818 + 1819 + '@esbuild/android-arm@0.25.12': 1820 + optional: true 1821 + 1822 + '@esbuild/android-x64@0.21.5': 1823 + optional: true 1824 + 1825 + '@esbuild/android-x64@0.25.12': 1826 + optional: true 1827 + 1828 + '@esbuild/darwin-arm64@0.21.5': 1829 + optional: true 1830 + 1831 + '@esbuild/darwin-arm64@0.25.12': 1832 + optional: true 1833 + 1834 + '@esbuild/darwin-x64@0.21.5': 1835 + optional: true 1836 + 1837 + '@esbuild/darwin-x64@0.25.12': 1838 + optional: true 1839 + 1840 + '@esbuild/freebsd-arm64@0.21.5': 1841 + optional: true 1842 + 1843 + '@esbuild/freebsd-arm64@0.25.12': 1844 + optional: true 1845 + 1846 + '@esbuild/freebsd-x64@0.21.5': 1847 + optional: true 1848 + 1849 + '@esbuild/freebsd-x64@0.25.12': 1850 + optional: true 1851 + 1852 + '@esbuild/linux-arm64@0.21.5': 1853 + optional: true 1854 + 1855 + '@esbuild/linux-arm64@0.25.12': 1856 + optional: true 1857 + 1858 + '@esbuild/linux-arm@0.21.5': 1859 + optional: true 1860 + 1861 + '@esbuild/linux-arm@0.25.12': 1862 + optional: true 1863 + 1864 + '@esbuild/linux-ia32@0.21.5': 1865 + optional: true 1866 + 1867 + '@esbuild/linux-ia32@0.25.12': 1868 + optional: true 1869 + 1870 + '@esbuild/linux-loong64@0.21.5': 1871 + optional: true 1872 + 1873 + '@esbuild/linux-loong64@0.25.12': 1874 + optional: true 1875 + 1876 + '@esbuild/linux-mips64el@0.21.5': 1877 + optional: true 1878 + 1879 + '@esbuild/linux-mips64el@0.25.12': 1880 + optional: true 1881 + 1882 + '@esbuild/linux-ppc64@0.21.5': 1883 + optional: true 1884 + 1885 + '@esbuild/linux-ppc64@0.25.12': 1886 + optional: true 1887 + 1888 + '@esbuild/linux-riscv64@0.21.5': 1889 + optional: true 1890 + 1891 + '@esbuild/linux-riscv64@0.25.12': 1892 + optional: true 1893 + 1894 + '@esbuild/linux-s390x@0.21.5': 1895 + optional: true 1896 + 1897 + '@esbuild/linux-s390x@0.25.12': 1898 + optional: true 1899 + 1900 + '@esbuild/linux-x64@0.21.5': 1901 + optional: true 1902 + 1903 + '@esbuild/linux-x64@0.25.12': 1904 + optional: true 1905 + 1906 + '@esbuild/netbsd-arm64@0.25.12': 1907 + optional: true 1908 + 1909 + '@esbuild/netbsd-x64@0.21.5': 1910 + optional: true 1911 + 1912 + '@esbuild/netbsd-x64@0.25.12': 1913 + optional: true 1914 + 1915 + '@esbuild/openbsd-arm64@0.25.12': 1916 + optional: true 1917 + 1918 + '@esbuild/openbsd-x64@0.21.5': 1919 + optional: true 1920 + 1921 + '@esbuild/openbsd-x64@0.25.12': 1922 + optional: true 1923 + 1924 + '@esbuild/openharmony-arm64@0.25.12': 1925 + optional: true 1926 + 1927 + '@esbuild/sunos-x64@0.21.5': 1928 + optional: true 1929 + 1930 + '@esbuild/sunos-x64@0.25.12': 1931 + optional: true 1932 + 1933 + '@esbuild/win32-arm64@0.21.5': 1934 + optional: true 1935 + 1936 + '@esbuild/win32-arm64@0.25.12': 1937 + optional: true 1938 + 1939 + '@esbuild/win32-ia32@0.21.5': 1940 + optional: true 1941 + 1942 + '@esbuild/win32-ia32@0.25.12': 1943 + optional: true 1944 + 1945 + '@esbuild/win32-x64@0.21.5': 1946 + optional: true 1947 + 1948 + '@esbuild/win32-x64@0.25.12': 1949 + optional: true 1950 + 1951 + '@jridgewell/gen-mapping@0.3.13': 1952 + dependencies: 1953 + '@jridgewell/sourcemap-codec': 1.5.5 1954 + '@jridgewell/trace-mapping': 0.3.31 1955 + 1956 + '@jridgewell/remapping@2.3.5': 1957 + dependencies: 1958 + '@jridgewell/gen-mapping': 0.3.13 1959 + '@jridgewell/trace-mapping': 0.3.31 1960 + 1961 + '@jridgewell/resolve-uri@3.1.2': {} 1962 + 1963 + '@jridgewell/sourcemap-codec@1.5.5': {} 1964 + 1965 + '@jridgewell/trace-mapping@0.3.31': 1966 + dependencies: 1967 + '@jridgewell/resolve-uri': 3.1.2 1968 + '@jridgewell/sourcemap-codec': 1.5.5 1969 + 1970 + '@nodelib/fs.scandir@2.1.5': 1971 + dependencies: 1972 + '@nodelib/fs.stat': 2.0.5 1973 + run-parallel: 1.2.0 1974 + 1975 + '@nodelib/fs.stat@2.0.5': {} 1976 + 1977 + '@nodelib/fs.walk@1.2.8': 1978 + dependencies: 1979 + '@nodelib/fs.scandir': 2.1.5 1980 + fastq: 1.19.1 1981 + 1982 + '@rolldown/pluginutils@1.0.0-beta.27': {} 1983 + 1984 + '@rollup/rollup-android-arm-eabi@4.53.3': 1985 + optional: true 1986 + 1987 + '@rollup/rollup-android-arm64@4.53.3': 1988 + optional: true 1989 + 1990 + '@rollup/rollup-darwin-arm64@4.53.3': 1991 + optional: true 1992 + 1993 + '@rollup/rollup-darwin-x64@4.53.3': 1994 + optional: true 1995 + 1996 + '@rollup/rollup-freebsd-arm64@4.53.3': 1997 + optional: true 1998 + 1999 + '@rollup/rollup-freebsd-x64@4.53.3': 2000 + optional: true 2001 + 2002 + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': 2003 + optional: true 2004 + 2005 + '@rollup/rollup-linux-arm-musleabihf@4.53.3': 2006 + optional: true 2007 + 2008 + '@rollup/rollup-linux-arm64-gnu@4.53.3': 2009 + optional: true 2010 + 2011 + '@rollup/rollup-linux-arm64-musl@4.53.3': 2012 + optional: true 2013 + 2014 + '@rollup/rollup-linux-loong64-gnu@4.53.3': 2015 + optional: true 2016 + 2017 + '@rollup/rollup-linux-ppc64-gnu@4.53.3': 2018 + optional: true 2019 + 2020 + '@rollup/rollup-linux-riscv64-gnu@4.53.3': 2021 + optional: true 2022 + 2023 + '@rollup/rollup-linux-riscv64-musl@4.53.3': 2024 + optional: true 2025 + 2026 + '@rollup/rollup-linux-s390x-gnu@4.53.3': 2027 + optional: true 2028 + 2029 + '@rollup/rollup-linux-x64-gnu@4.53.3': 2030 + optional: true 2031 + 2032 + '@rollup/rollup-linux-x64-musl@4.53.3': 2033 + optional: true 2034 + 2035 + '@rollup/rollup-openharmony-arm64@4.53.3': 2036 + optional: true 2037 + 2038 + '@rollup/rollup-win32-arm64-msvc@4.53.3': 2039 + optional: true 2040 + 2041 + '@rollup/rollup-win32-ia32-msvc@4.53.3': 2042 + optional: true 2043 + 2044 + '@rollup/rollup-win32-x64-gnu@4.53.3': 2045 + optional: true 2046 + 2047 + '@rollup/rollup-win32-x64-msvc@4.53.3': 2048 + optional: true 2049 + 2050 + '@tailwindcss/forms@0.5.10(tailwindcss@3.4.18(tsx@4.20.6))': 2051 + dependencies: 2052 + mini-svg-data-uri: 1.4.4 2053 + tailwindcss: 3.4.18(tsx@4.20.6) 2054 + 2055 + '@tanstack/history@1.139.0': {} 2056 + 2057 + '@tanstack/react-router-devtools@1.139.10(@tanstack/react-router@1.139.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.139.10)(@types/node@22.19.1)(csstype@3.2.3)(jiti@1.21.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(solid-js@1.9.10)(tsx@4.20.6)': 2058 + dependencies: 2059 + '@tanstack/react-router': 1.139.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2060 + '@tanstack/router-devtools-core': 1.139.10(@tanstack/router-core@1.139.10)(@types/node@22.19.1)(csstype@3.2.3)(jiti@1.21.7)(solid-js@1.9.10)(tsx@4.20.6) 2061 + react: 18.3.1 2062 + react-dom: 18.3.1(react@18.3.1) 2063 + vite: 7.2.4(@types/node@22.19.1)(jiti@1.21.7)(tsx@4.20.6) 2064 + optionalDependencies: 2065 + '@tanstack/router-core': 1.139.10 2066 + transitivePeerDependencies: 2067 + - '@types/node' 2068 + - csstype 2069 + - jiti 2070 + - less 2071 + - lightningcss 2072 + - sass 2073 + - sass-embedded 2074 + - solid-js 2075 + - stylus 2076 + - sugarss 2077 + - terser 2078 + - tsx 2079 + - yaml 2080 + 2081 + '@tanstack/react-router@1.139.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2082 + dependencies: 2083 + '@tanstack/history': 1.139.0 2084 + '@tanstack/react-store': 0.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2085 + '@tanstack/router-core': 1.139.10 2086 + isbot: 5.1.32 2087 + react: 18.3.1 2088 + react-dom: 18.3.1(react@18.3.1) 2089 + tiny-invariant: 1.3.3 2090 + tiny-warning: 1.0.3 2091 + 2092 + '@tanstack/react-store@0.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2093 + dependencies: 2094 + '@tanstack/store': 0.8.0 2095 + react: 18.3.1 2096 + react-dom: 18.3.1(react@18.3.1) 2097 + use-sync-external-store: 1.6.0(react@18.3.1) 2098 + 2099 + '@tanstack/router-core@1.139.10': 2100 + dependencies: 2101 + '@tanstack/history': 1.139.0 2102 + '@tanstack/store': 0.8.0 2103 + cookie-es: 2.0.0 2104 + seroval: 1.4.0 2105 + seroval-plugins: 1.4.0(seroval@1.4.0) 2106 + tiny-invariant: 1.3.3 2107 + tiny-warning: 1.0.3 2108 + 2109 + '@tanstack/router-devtools-core@1.139.10(@tanstack/router-core@1.139.10)(@types/node@22.19.1)(csstype@3.2.3)(jiti@1.21.7)(solid-js@1.9.10)(tsx@4.20.6)': 2110 + dependencies: 2111 + '@tanstack/router-core': 1.139.10 2112 + clsx: 2.1.1 2113 + goober: 2.1.18(csstype@3.2.3) 2114 + solid-js: 1.9.10 2115 + tiny-invariant: 1.3.3 2116 + vite: 7.2.4(@types/node@22.19.1)(jiti@1.21.7)(tsx@4.20.6) 2117 + optionalDependencies: 2118 + csstype: 3.2.3 2119 + transitivePeerDependencies: 2120 + - '@types/node' 2121 + - jiti 2122 + - less 2123 + - lightningcss 2124 + - sass 2125 + - sass-embedded 2126 + - stylus 2127 + - sugarss 2128 + - terser 2129 + - tsx 2130 + - yaml 2131 + 2132 + '@tanstack/router-devtools@1.139.10(@tanstack/react-router@1.139.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.139.10)(@types/node@22.19.1)(csstype@3.2.3)(jiti@1.21.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(solid-js@1.9.10)(tsx@4.20.6)': 2133 + dependencies: 2134 + '@tanstack/react-router': 1.139.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2135 + '@tanstack/react-router-devtools': 1.139.10(@tanstack/react-router@1.139.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@tanstack/router-core@1.139.10)(@types/node@22.19.1)(csstype@3.2.3)(jiti@1.21.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(solid-js@1.9.10)(tsx@4.20.6) 2136 + clsx: 2.1.1 2137 + goober: 2.1.18(csstype@3.2.3) 2138 + react: 18.3.1 2139 + react-dom: 18.3.1(react@18.3.1) 2140 + vite: 7.2.4(@types/node@22.19.1)(jiti@1.21.7)(tsx@4.20.6) 2141 + optionalDependencies: 2142 + csstype: 3.2.3 2143 + transitivePeerDependencies: 2144 + - '@tanstack/router-core' 2145 + - '@types/node' 2146 + - jiti 2147 + - less 2148 + - lightningcss 2149 + - sass 2150 + - sass-embedded 2151 + - solid-js 2152 + - stylus 2153 + - sugarss 2154 + - terser 2155 + - tsx 2156 + - yaml 2157 + 2158 + '@tanstack/router-generator@1.139.10': 2159 + dependencies: 2160 + '@tanstack/router-core': 1.139.10 2161 + '@tanstack/router-utils': 1.139.0 2162 + '@tanstack/virtual-file-routes': 1.139.0 2163 + prettier: 3.7.1 2164 + recast: 0.23.11 2165 + source-map: 0.7.6 2166 + tsx: 4.20.6 2167 + zod: 3.25.76 2168 + transitivePeerDependencies: 2169 + - supports-color 2170 + 2171 + '@tanstack/router-plugin@1.139.10(@tanstack/react-router@1.139.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.21(@types/node@22.19.1))': 2172 + dependencies: 2173 + '@babel/core': 7.28.5 2174 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) 2175 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) 2176 + '@babel/template': 7.27.2 2177 + '@babel/traverse': 7.28.5 2178 + '@babel/types': 7.28.5 2179 + '@tanstack/router-core': 1.139.10 2180 + '@tanstack/router-generator': 1.139.10 2181 + '@tanstack/router-utils': 1.139.0 2182 + '@tanstack/virtual-file-routes': 1.139.0 2183 + babel-dead-code-elimination: 1.0.10 2184 + chokidar: 3.6.0 2185 + unplugin: 2.3.11 2186 + zod: 3.25.76 2187 + optionalDependencies: 2188 + '@tanstack/react-router': 1.139.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2189 + vite: 5.4.21(@types/node@22.19.1) 2190 + transitivePeerDependencies: 2191 + - supports-color 2192 + 2193 + '@tanstack/router-utils@1.139.0': 2194 + dependencies: 2195 + '@babel/core': 7.28.5 2196 + '@babel/generator': 7.28.5 2197 + '@babel/parser': 7.28.5 2198 + '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5) 2199 + ansis: 4.2.0 2200 + diff: 8.0.2 2201 + pathe: 2.0.3 2202 + tinyglobby: 0.2.15 2203 + transitivePeerDependencies: 2204 + - supports-color 2205 + 2206 + '@tanstack/store@0.8.0': {} 2207 + 2208 + '@tanstack/virtual-file-routes@1.139.0': {} 2209 + 2210 + '@types/babel__core@7.20.5': 2211 + dependencies: 2212 + '@babel/parser': 7.28.5 2213 + '@babel/types': 7.28.5 2214 + '@types/babel__generator': 7.27.0 2215 + '@types/babel__template': 7.4.4 2216 + '@types/babel__traverse': 7.28.0 2217 + 2218 + '@types/babel__generator@7.27.0': 2219 + dependencies: 2220 + '@babel/types': 7.28.5 2221 + 2222 + '@types/babel__template@7.4.4': 2223 + dependencies: 2224 + '@babel/parser': 7.28.5 2225 + '@babel/types': 7.28.5 2226 + 2227 + '@types/babel__traverse@7.28.0': 2228 + dependencies: 2229 + '@babel/types': 7.28.5 2230 + 2231 + '@types/bun@1.3.3': 2232 + dependencies: 2233 + bun-types: 1.3.3 2234 + 2235 + '@types/estree@1.0.8': {} 2236 + 2237 + '@types/lodash@4.17.21': {} 2238 + 2239 + '@types/node@18.19.130': 2240 + dependencies: 2241 + undici-types: 5.26.5 2242 + 2243 + '@types/node@22.19.1': 2244 + dependencies: 2245 + undici-types: 6.21.0 2246 + 2247 + '@types/prop-types@15.7.15': {} 2248 + 2249 + '@types/react-dom@18.3.7(@types/react@18.3.27)': 2250 + dependencies: 2251 + '@types/react': 18.3.27 2252 + 2253 + '@types/react@18.3.27': 2254 + dependencies: 2255 + '@types/prop-types': 15.7.15 2256 + csstype: 3.2.3 2257 + 2258 + '@vitejs/plugin-react@4.7.0(vite@5.4.21(@types/node@22.19.1))': 2259 + dependencies: 2260 + '@babel/core': 7.28.5 2261 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) 2262 + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) 2263 + '@rolldown/pluginutils': 1.0.0-beta.27 2264 + '@types/babel__core': 7.20.5 2265 + react-refresh: 0.17.0 2266 + vite: 5.4.21(@types/node@22.19.1) 2267 + transitivePeerDependencies: 2268 + - supports-color 2269 + 2270 + acorn@8.15.0: {} 2271 + 2272 + ansis@4.2.0: {} 2273 + 2274 + any-promise@1.3.0: {} 2275 + 2276 + anymatch@3.1.3: 2277 + dependencies: 2278 + normalize-path: 3.0.0 2279 + picomatch: 2.3.1 2280 + 2281 + arg@5.0.2: {} 2282 + 2283 + ast-types@0.16.1: 2284 + dependencies: 2285 + tslib: 2.8.1 2286 + 2287 + autoprefixer@10.4.22(postcss@8.5.6): 2288 + dependencies: 2289 + browserslist: 4.28.0 2290 + caniuse-lite: 1.0.30001757 2291 + fraction.js: 5.3.4 2292 + normalize-range: 0.1.2 2293 + picocolors: 1.1.1 2294 + postcss: 8.5.6 2295 + postcss-value-parser: 4.2.0 2296 + 2297 + babel-dead-code-elimination@1.0.10: 2298 + dependencies: 2299 + '@babel/core': 7.28.5 2300 + '@babel/parser': 7.28.5 2301 + '@babel/traverse': 7.28.5 2302 + '@babel/types': 7.28.5 2303 + transitivePeerDependencies: 2304 + - supports-color 2305 + 2306 + baseline-browser-mapping@2.8.31: {} 2307 + 2308 + binary-extensions@2.3.0: {} 2309 + 2310 + braces@3.0.3: 2311 + dependencies: 2312 + fill-range: 7.1.1 2313 + 2314 + browserslist@4.28.0: 2315 + dependencies: 2316 + baseline-browser-mapping: 2.8.31 2317 + caniuse-lite: 1.0.30001757 2318 + electron-to-chromium: 1.5.262 2319 + node-releases: 2.0.27 2320 + update-browserslist-db: 1.1.4(browserslist@4.28.0) 2321 + 2322 + bun-types@1.3.3: 2323 + dependencies: 2324 + '@types/node': 18.19.130 2325 + 2326 + camelcase-css@2.0.1: {} 2327 + 2328 + caniuse-lite@1.0.30001757: {} 2329 + 2330 + chokidar@3.6.0: 2331 + dependencies: 2332 + anymatch: 3.1.3 2333 + braces: 3.0.3 2334 + glob-parent: 5.1.2 2335 + is-binary-path: 2.1.0 2336 + is-glob: 4.0.3 2337 + normalize-path: 3.0.0 2338 + readdirp: 3.6.0 2339 + optionalDependencies: 2340 + fsevents: 2.3.3 2341 + 2342 + clsx@2.1.1: {} 2343 + 2344 + commander@4.1.1: {} 2345 + 2346 + convert-source-map@2.0.0: {} 2347 + 2348 + cookie-es@2.0.0: {} 2349 + 2350 + cookie@1.1.1: {} 2351 + 2352 + cross-fetch@4.0.0: 2353 + dependencies: 2354 + node-fetch: 2.7.0 2355 + transitivePeerDependencies: 2356 + - encoding 2357 + 2358 + cssesc@3.0.0: {} 2359 + 2360 + csstype@3.2.3: {} 2361 + 2362 + debug@4.4.3: 2363 + dependencies: 2364 + ms: 2.1.3 2365 + 2366 + didyoumean@1.2.2: {} 2367 + 2368 + diff@8.0.2: {} 2369 + 2370 + dlv@1.1.3: {} 2371 + 2372 + electron-to-chromium@1.5.262: {} 2373 + 2374 + esbuild@0.21.5: 2375 + optionalDependencies: 2376 + '@esbuild/aix-ppc64': 0.21.5 2377 + '@esbuild/android-arm': 0.21.5 2378 + '@esbuild/android-arm64': 0.21.5 2379 + '@esbuild/android-x64': 0.21.5 2380 + '@esbuild/darwin-arm64': 0.21.5 2381 + '@esbuild/darwin-x64': 0.21.5 2382 + '@esbuild/freebsd-arm64': 0.21.5 2383 + '@esbuild/freebsd-x64': 0.21.5 2384 + '@esbuild/linux-arm': 0.21.5 2385 + '@esbuild/linux-arm64': 0.21.5 2386 + '@esbuild/linux-ia32': 0.21.5 2387 + '@esbuild/linux-loong64': 0.21.5 2388 + '@esbuild/linux-mips64el': 0.21.5 2389 + '@esbuild/linux-ppc64': 0.21.5 2390 + '@esbuild/linux-riscv64': 0.21.5 2391 + '@esbuild/linux-s390x': 0.21.5 2392 + '@esbuild/linux-x64': 0.21.5 2393 + '@esbuild/netbsd-x64': 0.21.5 2394 + '@esbuild/openbsd-x64': 0.21.5 2395 + '@esbuild/sunos-x64': 0.21.5 2396 + '@esbuild/win32-arm64': 0.21.5 2397 + '@esbuild/win32-ia32': 0.21.5 2398 + '@esbuild/win32-x64': 0.21.5 2399 + 2400 + esbuild@0.25.12: 2401 + optionalDependencies: 2402 + '@esbuild/aix-ppc64': 0.25.12 2403 + '@esbuild/android-arm': 0.25.12 2404 + '@esbuild/android-arm64': 0.25.12 2405 + '@esbuild/android-x64': 0.25.12 2406 + '@esbuild/darwin-arm64': 0.25.12 2407 + '@esbuild/darwin-x64': 0.25.12 2408 + '@esbuild/freebsd-arm64': 0.25.12 2409 + '@esbuild/freebsd-x64': 0.25.12 2410 + '@esbuild/linux-arm': 0.25.12 2411 + '@esbuild/linux-arm64': 0.25.12 2412 + '@esbuild/linux-ia32': 0.25.12 2413 + '@esbuild/linux-loong64': 0.25.12 2414 + '@esbuild/linux-mips64el': 0.25.12 2415 + '@esbuild/linux-ppc64': 0.25.12 2416 + '@esbuild/linux-riscv64': 0.25.12 2417 + '@esbuild/linux-s390x': 0.25.12 2418 + '@esbuild/linux-x64': 0.25.12 2419 + '@esbuild/netbsd-arm64': 0.25.12 2420 + '@esbuild/netbsd-x64': 0.25.12 2421 + '@esbuild/openbsd-arm64': 0.25.12 2422 + '@esbuild/openbsd-x64': 0.25.12 2423 + '@esbuild/openharmony-arm64': 0.25.12 2424 + '@esbuild/sunos-x64': 0.25.12 2425 + '@esbuild/win32-arm64': 0.25.12 2426 + '@esbuild/win32-ia32': 0.25.12 2427 + '@esbuild/win32-x64': 0.25.12 2428 + 2429 + escalade@3.2.0: {} 2430 + 2431 + esprima@4.0.1: {} 2432 + 2433 + fast-glob@3.3.3: 2434 + dependencies: 2435 + '@nodelib/fs.stat': 2.0.5 2436 + '@nodelib/fs.walk': 1.2.8 2437 + glob-parent: 5.1.2 2438 + merge2: 1.4.1 2439 + micromatch: 4.0.8 2440 + 2441 + fastq@1.19.1: 2442 + dependencies: 2443 + reusify: 1.1.0 2444 + 2445 + fdir@6.5.0(picomatch@4.0.3): 2446 + optionalDependencies: 2447 + picomatch: 4.0.3 2448 + 2449 + fill-range@7.1.1: 2450 + dependencies: 2451 + to-regex-range: 5.0.1 2452 + 2453 + flyff.js@1.3.0: {} 2454 + 2455 + fraction.js@5.3.4: {} 2456 + 2457 + fsevents@2.3.3: 2458 + optional: true 2459 + 2460 + function-bind@1.1.2: {} 2461 + 2462 + gensync@1.0.0-beta.2: {} 2463 + 2464 + get-tsconfig@4.13.0: 2465 + dependencies: 2466 + resolve-pkg-maps: 1.0.0 2467 + 2468 + glob-parent@5.1.2: 2469 + dependencies: 2470 + is-glob: 4.0.3 2471 + 2472 + glob-parent@6.0.2: 2473 + dependencies: 2474 + is-glob: 4.0.3 2475 + 2476 + goober@2.1.18(csstype@3.2.3): 2477 + dependencies: 2478 + csstype: 3.2.3 2479 + 2480 + hasown@2.0.2: 2481 + dependencies: 2482 + function-bind: 1.1.2 2483 + 2484 + html-parse-stringify@3.0.1: 2485 + dependencies: 2486 + void-elements: 3.1.0 2487 + 2488 + i18next-browser-languagedetector@8.2.0: 2489 + dependencies: 2490 + '@babel/runtime': 7.28.4 2491 + 2492 + i18next-http-backend@2.7.3: 2493 + dependencies: 2494 + cross-fetch: 4.0.0 2495 + transitivePeerDependencies: 2496 + - encoding 2497 + 2498 + i18next@23.16.8: 2499 + dependencies: 2500 + '@babel/runtime': 7.28.4 2501 + 2502 + immer@10.2.0: {} 2503 + 2504 + is-binary-path@2.1.0: 2505 + dependencies: 2506 + binary-extensions: 2.3.0 2507 + 2508 + is-core-module@2.16.1: 2509 + dependencies: 2510 + hasown: 2.0.2 2511 + 2512 + is-extglob@2.1.1: {} 2513 + 2514 + is-glob@4.0.3: 2515 + dependencies: 2516 + is-extglob: 2.1.1 2517 + 2518 + is-number@7.0.0: {} 2519 + 2520 + isbot@5.1.32: {} 2521 + 2522 + jiti@1.21.7: {} 2523 + 2524 + js-tokens@4.0.0: {} 2525 + 2526 + jsesc@3.1.0: {} 2527 + 2528 + json5@2.2.3: {} 2529 + 2530 + lilconfig@3.1.3: {} 2531 + 2532 + lines-and-columns@1.2.4: {} 2533 + 2534 + lodash@4.17.21: {} 2535 + 2536 + loose-envify@1.4.0: 2537 + dependencies: 2538 + js-tokens: 4.0.0 2539 + 2540 + lru-cache@5.1.1: 2541 + dependencies: 2542 + yallist: 3.1.1 2543 + 2544 + lz-string@1.5.0: {} 2545 + 2546 + merge2@1.4.1: {} 2547 + 2548 + micromatch@4.0.8: 2549 + dependencies: 2550 + braces: 3.0.3 2551 + picomatch: 2.3.1 2552 + 2553 + mini-svg-data-uri@1.4.4: {} 2554 + 2555 + ms@2.1.3: {} 2556 + 2557 + mz@2.7.0: 2558 + dependencies: 2559 + any-promise: 1.3.0 2560 + object-assign: 4.1.1 2561 + thenify-all: 1.6.0 2562 + 2563 + nanoid@3.3.11: {} 2564 + 2565 + node-fetch@2.7.0: 2566 + dependencies: 2567 + whatwg-url: 5.0.0 2568 + 2569 + node-releases@2.0.27: {} 2570 + 2571 + normalize-path@3.0.0: {} 2572 + 2573 + normalize-range@0.1.2: {} 2574 + 2575 + object-assign@4.1.1: {} 2576 + 2577 + object-hash@3.0.0: {} 2578 + 2579 + path-parse@1.0.7: {} 2580 + 2581 + pathe@2.0.3: {} 2582 + 2583 + picocolors@1.1.1: {} 2584 + 2585 + picomatch@2.3.1: {} 2586 + 2587 + picomatch@4.0.3: {} 2588 + 2589 + pify@2.3.0: {} 2590 + 2591 + pirates@4.0.7: {} 2592 + 2593 + postcss-import@15.1.0(postcss@8.5.6): 2594 + dependencies: 2595 + postcss: 8.5.6 2596 + postcss-value-parser: 4.2.0 2597 + read-cache: 1.0.0 2598 + resolve: 1.22.11 2599 + 2600 + postcss-js@4.1.0(postcss@8.5.6): 2601 + dependencies: 2602 + camelcase-css: 2.0.1 2603 + postcss: 8.5.6 2604 + 2605 + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.6): 2606 + dependencies: 2607 + lilconfig: 3.1.3 2608 + optionalDependencies: 2609 + jiti: 1.21.7 2610 + postcss: 8.5.6 2611 + tsx: 4.20.6 2612 + 2613 + postcss-nested@6.2.0(postcss@8.5.6): 2614 + dependencies: 2615 + postcss: 8.5.6 2616 + postcss-selector-parser: 6.1.2 2617 + 2618 + postcss-selector-parser@6.1.2: 2619 + dependencies: 2620 + cssesc: 3.0.0 2621 + util-deprecate: 1.0.2 2622 + 2623 + postcss-value-parser@4.2.0: {} 2624 + 2625 + postcss@8.5.6: 2626 + dependencies: 2627 + nanoid: 3.3.11 2628 + picocolors: 1.1.1 2629 + source-map-js: 1.2.1 2630 + 2631 + prettier@3.7.1: {} 2632 + 2633 + prop-types@15.8.1: 2634 + dependencies: 2635 + loose-envify: 1.4.0 2636 + object-assign: 4.1.1 2637 + react-is: 16.13.1 2638 + 2639 + queue-microtask@1.2.3: {} 2640 + 2641 + react-dom@18.3.1(react@18.3.1): 2642 + dependencies: 2643 + loose-envify: 1.4.0 2644 + react: 18.3.1 2645 + scheduler: 0.23.2 2646 + 2647 + react-fast-compare@3.2.2: {} 2648 + 2649 + react-helmet@6.1.0(react@18.3.1): 2650 + dependencies: 2651 + object-assign: 4.1.1 2652 + prop-types: 15.8.1 2653 + react: 18.3.1 2654 + react-fast-compare: 3.2.2 2655 + react-side-effect: 2.1.2(react@18.3.1) 2656 + 2657 + react-i18next@15.7.4(i18next@23.16.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3): 2658 + dependencies: 2659 + '@babel/runtime': 7.28.4 2660 + html-parse-stringify: 3.0.1 2661 + i18next: 23.16.8 2662 + react: 18.3.1 2663 + optionalDependencies: 2664 + react-dom: 18.3.1(react@18.3.1) 2665 + typescript: 5.9.3 2666 + 2667 + react-is@16.13.1: {} 2668 + 2669 + react-refresh@0.17.0: {} 2670 + 2671 + react-router@7.9.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 2672 + dependencies: 2673 + cookie: 1.1.1 2674 + react: 18.3.1 2675 + set-cookie-parser: 2.7.2 2676 + optionalDependencies: 2677 + react-dom: 18.3.1(react@18.3.1) 2678 + 2679 + react-side-effect@2.1.2(react@18.3.1): 2680 + dependencies: 2681 + react: 18.3.1 2682 + 2683 + react@18.3.1: 2684 + dependencies: 2685 + loose-envify: 1.4.0 2686 + 2687 + read-cache@1.0.0: 2688 + dependencies: 2689 + pify: 2.3.0 2690 + 2691 + readdirp@3.6.0: 2692 + dependencies: 2693 + picomatch: 2.3.1 2694 + 2695 + recast@0.23.11: 2696 + dependencies: 2697 + ast-types: 0.16.1 2698 + esprima: 4.0.1 2699 + source-map: 0.6.1 2700 + tiny-invariant: 1.3.3 2701 + tslib: 2.8.1 2702 + 2703 + resolve-pkg-maps@1.0.0: {} 2704 + 2705 + resolve@1.22.11: 2706 + dependencies: 2707 + is-core-module: 2.16.1 2708 + path-parse: 1.0.7 2709 + supports-preserve-symlinks-flag: 1.0.0 2710 + 2711 + reusify@1.1.0: {} 2712 + 2713 + rollup@4.53.3: 2714 + dependencies: 2715 + '@types/estree': 1.0.8 2716 + optionalDependencies: 2717 + '@rollup/rollup-android-arm-eabi': 4.53.3 2718 + '@rollup/rollup-android-arm64': 4.53.3 2719 + '@rollup/rollup-darwin-arm64': 4.53.3 2720 + '@rollup/rollup-darwin-x64': 4.53.3 2721 + '@rollup/rollup-freebsd-arm64': 4.53.3 2722 + '@rollup/rollup-freebsd-x64': 4.53.3 2723 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 2724 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 2725 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 2726 + '@rollup/rollup-linux-arm64-musl': 4.53.3 2727 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 2728 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 2729 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 2730 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 2731 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 2732 + '@rollup/rollup-linux-x64-gnu': 4.53.3 2733 + '@rollup/rollup-linux-x64-musl': 4.53.3 2734 + '@rollup/rollup-openharmony-arm64': 4.53.3 2735 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 2736 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 2737 + '@rollup/rollup-win32-x64-gnu': 4.53.3 2738 + '@rollup/rollup-win32-x64-msvc': 4.53.3 2739 + fsevents: 2.3.3 2740 + 2741 + run-parallel@1.2.0: 2742 + dependencies: 2743 + queue-microtask: 1.2.3 2744 + 2745 + scheduler@0.23.2: 2746 + dependencies: 2747 + loose-envify: 1.4.0 2748 + 2749 + semver@6.3.1: {} 2750 + 2751 + seroval-plugins@1.3.3(seroval@1.3.2): 2752 + dependencies: 2753 + seroval: 1.3.2 2754 + 2755 + seroval-plugins@1.4.0(seroval@1.4.0): 2756 + dependencies: 2757 + seroval: 1.4.0 2758 + 2759 + seroval@1.3.2: {} 2760 + 2761 + seroval@1.4.0: {} 2762 + 2763 + set-cookie-parser@2.7.2: {} 2764 + 2765 + solid-js@1.9.10: 2766 + dependencies: 2767 + csstype: 3.2.3 2768 + seroval: 1.3.2 2769 + seroval-plugins: 1.3.3(seroval@1.3.2) 2770 + 2771 + source-map-js@1.2.1: {} 2772 + 2773 + source-map@0.6.1: {} 2774 + 2775 + source-map@0.7.6: {} 2776 + 2777 + sucrase@3.35.1: 2778 + dependencies: 2779 + '@jridgewell/gen-mapping': 0.3.13 2780 + commander: 4.1.1 2781 + lines-and-columns: 1.2.4 2782 + mz: 2.7.0 2783 + pirates: 4.0.7 2784 + tinyglobby: 0.2.15 2785 + ts-interface-checker: 0.1.13 2786 + 2787 + supports-preserve-symlinks-flag@1.0.0: {} 2788 + 2789 + tailwindcss@3.4.18(tsx@4.20.6): 2790 + dependencies: 2791 + '@alloc/quick-lru': 5.2.0 2792 + arg: 5.0.2 2793 + chokidar: 3.6.0 2794 + didyoumean: 1.2.2 2795 + dlv: 1.1.3 2796 + fast-glob: 3.3.3 2797 + glob-parent: 6.0.2 2798 + is-glob: 4.0.3 2799 + jiti: 1.21.7 2800 + lilconfig: 3.1.3 2801 + micromatch: 4.0.8 2802 + normalize-path: 3.0.0 2803 + object-hash: 3.0.0 2804 + picocolors: 1.1.1 2805 + postcss: 8.5.6 2806 + postcss-import: 15.1.0(postcss@8.5.6) 2807 + postcss-js: 4.1.0(postcss@8.5.6) 2808 + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.6) 2809 + postcss-nested: 6.2.0(postcss@8.5.6) 2810 + postcss-selector-parser: 6.1.2 2811 + resolve: 1.22.11 2812 + sucrase: 3.35.1 2813 + transitivePeerDependencies: 2814 + - tsx 2815 + - yaml 2816 + 2817 + thenify-all@1.6.0: 2818 + dependencies: 2819 + thenify: 3.3.1 2820 + 2821 + thenify@3.3.1: 2822 + dependencies: 2823 + any-promise: 1.3.0 2824 + 2825 + tiny-invariant@1.3.3: {} 2826 + 2827 + tiny-warning@1.0.3: {} 2828 + 2829 + tinyglobby@0.2.15: 2830 + dependencies: 2831 + fdir: 6.5.0(picomatch@4.0.3) 2832 + picomatch: 4.0.3 2833 + 2834 + to-regex-range@5.0.1: 2835 + dependencies: 2836 + is-number: 7.0.0 2837 + 2838 + tr46@0.0.3: {} 2839 + 2840 + ts-interface-checker@0.1.13: {} 2841 + 2842 + tslib@2.8.1: {} 2843 + 2844 + tsx@4.20.6: 2845 + dependencies: 2846 + esbuild: 0.25.12 2847 + get-tsconfig: 4.13.0 2848 + optionalDependencies: 2849 + fsevents: 2.3.3 2850 + 2851 turbo-darwin-64@2.6.1: 2852 optional: true 2853 ··· 2874 turbo-linux-arm64: 2.6.1 2875 turbo-windows-64: 2.6.1 2876 turbo-windows-arm64: 2.6.1 2877 + 2878 + typescript@4.9.5: {} 2879 + 2880 + typescript@5.9.3: {} 2881 + 2882 + undici-types@5.26.5: {} 2883 + 2884 + undici-types@6.21.0: {} 2885 + 2886 + unplugin@2.3.11: 2887 + dependencies: 2888 + '@jridgewell/remapping': 2.3.5 2889 + acorn: 8.15.0 2890 + picomatch: 4.0.3 2891 + webpack-virtual-modules: 0.6.2 2892 + 2893 + update-browserslist-db@1.1.4(browserslist@4.28.0): 2894 + dependencies: 2895 + browserslist: 4.28.0 2896 + escalade: 3.2.0 2897 + picocolors: 1.1.1 2898 + 2899 + use-sync-external-store@1.6.0(react@18.3.1): 2900 + dependencies: 2901 + react: 18.3.1 2902 + 2903 + util-deprecate@1.0.2: {} 2904 + 2905 + vite@5.4.21(@types/node@22.19.1): 2906 + dependencies: 2907 + esbuild: 0.21.5 2908 + postcss: 8.5.6 2909 + rollup: 4.53.3 2910 + optionalDependencies: 2911 + '@types/node': 22.19.1 2912 + fsevents: 2.3.3 2913 + 2914 + vite@7.2.4(@types/node@22.19.1)(jiti@1.21.7)(tsx@4.20.6): 2915 + dependencies: 2916 + esbuild: 0.25.12 2917 + fdir: 6.5.0(picomatch@4.0.3) 2918 + picomatch: 4.0.3 2919 + postcss: 8.5.6 2920 + rollup: 4.53.3 2921 + tinyglobby: 0.2.15 2922 + optionalDependencies: 2923 + '@types/node': 22.19.1 2924 + fsevents: 2.3.3 2925 + jiti: 1.21.7 2926 + tsx: 4.20.6 2927 + 2928 + void-elements@3.1.0: {} 2929 + 2930 + webidl-conversions@3.0.1: {} 2931 + 2932 + webpack-virtual-modules@0.6.2: {} 2933 + 2934 + whatwg-url@5.0.0: 2935 + dependencies: 2936 + tr46: 0.0.3 2937 + webidl-conversions: 3.0.1 2938 + 2939 + yallist@3.1.1: {} 2940 + 2941 + zod@3.25.76: {} 2942 + 2943 + zustand@5.0.8(@types/react@18.3.27)(immer@10.2.0)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)): 2944 + optionalDependencies: 2945 + '@types/react': 18.3.27 2946 + immer: 10.2.0 2947 + react: 18.3.1 2948 + use-sync-external-store: 1.6.0(react@18.3.1)
+5 -2
pnpm-workspace.yaml
··· 1 packages: 2 - - apps/* 3 - - packages/*
··· 1 packages: 2 + - apps/* 3 + - packages/* 4 + 5 + onlyBuiltDependencies: 6 + - esbuild
+1 -1
turbo.json
··· 5 "build": { 6 "dependsOn": ["^build"], 7 "inputs": ["$TURBO_DEFAULT$", ".env*"], 8 - "outputs": ["dist/**"] 9 }, 10 "dev": { 11 "cache": false,
··· 5 "build": { 6 "dependsOn": ["^build"], 7 "inputs": ["$TURBO_DEFAULT$", ".env*"], 8 + "outputs": ["dist/**, .tanstack/**"] 9 }, 10 "dev": { 11 "cache": false,