From 2b64ace453b9dc58a7413ee0eb01f73d5bbf3b52 Mon Sep 17 00:00:00 2001 From: nolwn Date: Fri, 17 Oct 2025 12:28:08 -0700 Subject: [PATCH] initial commit --- .gitignore | 24 + client/.prettierrc | 3 + client/eslint.config.mjs | 20 + client/index.html | 17 + client/package-lock.json | 2918 ++++++++++++++++++++++++ client/package.json | 25 + client/public/assets/bunny.png | Bin 0 -> 449 bytes client/public/assets/cards.json | 949 ++++++++ client/public/assets/cards.png | Bin 0 -> 123471 bytes client/public/assets/logo.svg | 54 + client/public/favicon.png | Bin 0 -> 830 bytes client/public/style.css | 15 + client/src/Card.ts | 53 + client/src/Hand.ts | 24 + client/src/main.ts | 50 + client/src/spritesheets/spritesheet.ts | 66 + client/src/vite-env.d.ts | 1 + client/tsconfig.json | 25 + client/vite.config.ts | 9 + server/http/requests.http | 9 + server/package-lock.json | 1003 ++++++++ server/package.json | 22 + server/src/blackjack/Blackjack.ts | 24 + server/src/index.ts | 35 + server/src/serverResponse.ts | 44 + server/tsconfig.json | 103 + 26 files changed, 5493 insertions(+) create mode 100644 .gitignore create mode 100644 client/.prettierrc create mode 100644 client/eslint.config.mjs create mode 100644 client/index.html create mode 100644 client/package-lock.json create mode 100644 client/package.json create mode 100755 client/public/assets/bunny.png create mode 100644 client/public/assets/cards.json create mode 100644 client/public/assets/cards.png create mode 100644 client/public/assets/logo.svg create mode 100644 client/public/favicon.png create mode 100644 client/public/style.css create mode 100644 client/src/Card.ts create mode 100644 client/src/Hand.ts create mode 100644 client/src/main.ts create mode 100644 client/src/spritesheets/spritesheet.ts create mode 100644 client/src/vite-env.d.ts create mode 100644 client/tsconfig.json create mode 100644 client/vite.config.ts create mode 100644 server/http/requests.http create mode 100644 server/package-lock.json create mode 100644 server/package.json create mode 100644 server/src/blackjack/Blackjack.ts create mode 100644 server/src/index.ts create mode 100644 server/src/serverResponse.ts create mode 100644 server/tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/client/.prettierrc b/client/.prettierrc new file mode 100644 index 0000000..c959087 --- /dev/null +++ b/client/.prettierrc @@ -0,0 +1,3 @@ +{ + "useTabs": true +} diff --git a/client/eslint.config.mjs b/client/eslint.config.mjs new file mode 100644 index 0000000..3a7982a --- /dev/null +++ b/client/eslint.config.mjs @@ -0,0 +1,20 @@ +import js from "@eslint/js"; +import prettier from "eslint-plugin-prettier/recommended"; +import tseslint from "typescript-eslint"; + +export default tseslint.config( + { ignores: ["dist"] }, + { + extends: [ + js.configs.recommended, + ...tseslint.configs.recommended, + prettier, + ], + files: ["**/*.{ts,tsx}"], + languageOptions: { + ecmaVersion: "latest", + sourceType: "module", + }, + rules: {}, + }, +); diff --git a/client/index.html b/client/index.html new file mode 100644 index 0000000..c618e96 --- /dev/null +++ b/client/index.html @@ -0,0 +1,17 @@ + + + + + + + + PixiJS - Template + + + +
+
+
+ + + diff --git a/client/package-lock.json b/client/package-lock.json new file mode 100644 index 0000000..b5e5e79 --- /dev/null +++ b/client/package-lock.json @@ -0,0 +1,2918 @@ +{ + "name": "client", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "client", + "version": "0.0.0", + "dependencies": { + "pixi.js": "^8.8.1" + }, + "devDependencies": { + "@eslint/js": "^9.21.0", + "eslint": "^9.21.0", + "eslint-config-prettier": "^10.1.2", + "eslint-plugin-prettier": "^5.2.6", + "prettier": "^3.5.3", + "typescript": "~5.7.3", + "typescript-eslint": "^8.25.0", + "vite": "^6.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz", + "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz", + "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz", + "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz", + "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz", + "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz", + "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz", + "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz", + "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz", + "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz", + "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz", + "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz", + "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz", + "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz", + "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz", + "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz", + "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz", + "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz", + "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz", + "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz", + "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz", + "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz", + "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz", + "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz", + "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz", + "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz", + "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", + "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pixi/colord": { + "version": "2.9.6", + "resolved": "https://registry.npmjs.org/@pixi/colord/-/colord-2.9.6.tgz", + "integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==", + "license": "MIT" + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz", + "integrity": "sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz", + "integrity": "sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz", + "integrity": "sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz", + "integrity": "sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz", + "integrity": "sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz", + "integrity": "sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz", + "integrity": "sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz", + "integrity": "sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz", + "integrity": "sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz", + "integrity": "sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz", + "integrity": "sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz", + "integrity": "sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz", + "integrity": "sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz", + "integrity": "sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz", + "integrity": "sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz", + "integrity": "sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz", + "integrity": "sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz", + "integrity": "sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz", + "integrity": "sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz", + "integrity": "sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz", + "integrity": "sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz", + "integrity": "sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/css-font-loading-module": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.12.tgz", + "integrity": "sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==", + "license": "MIT" + }, + "node_modules/@types/earcut": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-3.0.0.tgz", + "integrity": "sha512-k/9fOUGO39yd2sCjrbAJvGDEQvRwRnQIZlBz43roGwUZo5SHAmyVvSFyaVVZkicRVCaDXPKlbxrUcBuJoSWunQ==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.45.0.tgz", + "integrity": "sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.45.0", + "@typescript-eslint/type-utils": "8.45.0", + "@typescript-eslint/utils": "8.45.0", + "@typescript-eslint/visitor-keys": "8.45.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.45.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.45.0.tgz", + "integrity": "sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.45.0", + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/typescript-estree": "8.45.0", + "@typescript-eslint/visitor-keys": "8.45.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.45.0.tgz", + "integrity": "sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.45.0", + "@typescript-eslint/types": "^8.45.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.45.0.tgz", + "integrity": "sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/visitor-keys": "8.45.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.45.0.tgz", + "integrity": "sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.45.0.tgz", + "integrity": "sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/typescript-estree": "8.45.0", + "@typescript-eslint/utils": "8.45.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.45.0.tgz", + "integrity": "sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.45.0.tgz", + "integrity": "sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.45.0", + "@typescript-eslint/tsconfig-utils": "8.45.0", + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/visitor-keys": "8.45.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.45.0.tgz", + "integrity": "sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.45.0", + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/typescript-estree": "8.45.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.45.0.tgz", + "integrity": "sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.45.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webgpu/types": { + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.65.tgz", + "integrity": "sha512-cYrHab4d6wuVvDW5tdsfI6/o6vcLMDe6w2Citd1oS51Xxu2ycLCnVo4fqwujfKWijrZMInTJIKcXxteoy21nVA==", + "license": "BSD-3-Clause" + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/earcut": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.2.tgz", + "integrity": "sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==", + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz", + "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.10", + "@esbuild/android-arm": "0.25.10", + "@esbuild/android-arm64": "0.25.10", + "@esbuild/android-x64": "0.25.10", + "@esbuild/darwin-arm64": "0.25.10", + "@esbuild/darwin-x64": "0.25.10", + "@esbuild/freebsd-arm64": "0.25.10", + "@esbuild/freebsd-x64": "0.25.10", + "@esbuild/linux-arm": "0.25.10", + "@esbuild/linux-arm64": "0.25.10", + "@esbuild/linux-ia32": "0.25.10", + "@esbuild/linux-loong64": "0.25.10", + "@esbuild/linux-mips64el": "0.25.10", + "@esbuild/linux-ppc64": "0.25.10", + "@esbuild/linux-riscv64": "0.25.10", + "@esbuild/linux-s390x": "0.25.10", + "@esbuild/linux-x64": "0.25.10", + "@esbuild/netbsd-arm64": "0.25.10", + "@esbuild/netbsd-x64": "0.25.10", + "@esbuild/openbsd-arm64": "0.25.10", + "@esbuild/openbsd-x64": "0.25.10", + "@esbuild/openharmony-arm64": "0.25.10", + "@esbuild/sunos-x64": "0.25.10", + "@esbuild/win32-arm64": "0.25.10", + "@esbuild/win32-ia32": "0.25.10", + "@esbuild/win32-x64": "0.25.10" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz", + "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.4.0", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.37.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gifuct-js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/gifuct-js/-/gifuct-js-2.1.2.tgz", + "integrity": "sha512-rI2asw77u0mGgwhV3qA+OEgYqaDn5UNqgs+Bx0FGwSpuqfYn+Ir6RQY5ENNQ8SbIiG/m5gVa7CD5RriO4f4Lsg==", + "license": "MIT", + "dependencies": { + "js-binary-schema-parser": "^2.0.3" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/ismobilejs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", + "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==", + "license": "MIT" + }, + "node_modules/js-binary-schema-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz", + "integrity": "sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-svg-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pixi.js": { + "version": "8.13.2", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.13.2.tgz", + "integrity": "sha512-9KVGZ4a99TA5SwUEWs9m5gliX6XUCS1aGc/DOPsXxpqLMDRa+FhzpT5ao9z1UwLYJkSvt3rcQs+aZXECBHSSHg==", + "license": "MIT", + "dependencies": { + "@pixi/colord": "^2.9.6", + "@types/css-font-loading-module": "^0.0.12", + "@types/earcut": "^3.0.0", + "@webgpu/types": "^0.1.40", + "@xmldom/xmldom": "^0.8.10", + "earcut": "^3.0.2", + "eventemitter3": "^5.0.1", + "gifuct-js": "^2.1.2", + "ismobilejs": "^1.1.1", + "parse-svg-path": "^0.1.2", + "tiny-lru": "^11.4.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz", + "integrity": "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.52.4", + "@rollup/rollup-android-arm64": "4.52.4", + "@rollup/rollup-darwin-arm64": "4.52.4", + "@rollup/rollup-darwin-x64": "4.52.4", + "@rollup/rollup-freebsd-arm64": "4.52.4", + "@rollup/rollup-freebsd-x64": "4.52.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.4", + "@rollup/rollup-linux-arm-musleabihf": "4.52.4", + "@rollup/rollup-linux-arm64-gnu": "4.52.4", + "@rollup/rollup-linux-arm64-musl": "4.52.4", + "@rollup/rollup-linux-loong64-gnu": "4.52.4", + "@rollup/rollup-linux-ppc64-gnu": "4.52.4", + "@rollup/rollup-linux-riscv64-gnu": "4.52.4", + "@rollup/rollup-linux-riscv64-musl": "4.52.4", + "@rollup/rollup-linux-s390x-gnu": "4.52.4", + "@rollup/rollup-linux-x64-gnu": "4.52.4", + "@rollup/rollup-linux-x64-musl": "4.52.4", + "@rollup/rollup-openharmony-arm64": "4.52.4", + "@rollup/rollup-win32-arm64-msvc": "4.52.4", + "@rollup/rollup-win32-ia32-msvc": "4.52.4", + "@rollup/rollup-win32-x64-gnu": "4.52.4", + "@rollup/rollup-win32-x64-msvc": "4.52.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tiny-lru": { + "version": "11.4.5", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.4.5.tgz", + "integrity": "sha512-hkcz3FjNJfKXjV4mjQ1OrXSLAehg8Hw+cEZclOVT+5c/cWQWImQ9wolzTjth+dmmDe++p3bme3fTxz6Q4Etsqw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.45.0.tgz", + "integrity": "sha512-qzDmZw/Z5beNLUrXfd0HIW6MzIaAV5WNDxmMs9/3ojGOpYavofgNAAD/nC6tGV2PczIi0iw8vot2eAe/sBn7zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.45.0", + "@typescript-eslint/parser": "8.45.0", + "@typescript-eslint/typescript-estree": "8.45.0", + "@typescript-eslint/utils": "8.45.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", + "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/client/package.json b/client/package.json new file mode 100644 index 0000000..4891f7d --- /dev/null +++ b/client/package.json @@ -0,0 +1,25 @@ +{ + "name": "client", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "start": "npm run dev", + "build": "npm run lint && tsc && vite build", + "lint": "eslint .", + "dev": "vite" + }, + "dependencies": { + "pixi.js": "^8.8.1" + }, + "devDependencies": { + "@eslint/js": "^9.21.0", + "eslint": "^9.21.0", + "eslint-config-prettier": "^10.1.2", + "eslint-plugin-prettier": "^5.2.6", + "prettier": "^3.5.3", + "typescript": "~5.7.3", + "typescript-eslint": "^8.25.0", + "vite": "^6.2.0" + } +} diff --git a/client/public/assets/bunny.png b/client/public/assets/bunny.png new file mode 100755 index 0000000000000000000000000000000000000000..79c31675083b7ffc272a6370bc189360bde484d0 GIT binary patch literal 449 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%0DPJ!OU~R{HTmcaofu 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/public/favicon.png b/client/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..fdc13bcfc3634814b8d0520b62a3e5ecc1725948 GIT binary patch literal 830 zcmV-E1Ht@>P)<{*UCbGcAx zC?WQVU{5=n4c$3~PEgCLSP*87qgQm|S+br~^w1>ovk7V#3&JipH&+LG2RT}^YZWN@3K@V&Hf}e!ssns6|w)M#t)Hj+E7+OniZr8P|{q6)_h!QM61Ep^6zb( zAwpp(VhbBuGwbiWWt7N`>Qr-Uqi>vE-nb{^&CEEqdv1v4fWRD*$Q9m($pZvUhk)lu zMyZHmpTM{zOin(*TR#AjJR7O-tiCZA5+ukS&@GX*`rh1mrKut=o9op~jPgbn~HZCip);k~b9m{Zk_Q-@Dz= z0s5A|v~Y>|3qbb-DvA`bK>z>%07*qo IM6N<$f*Sa90ssI2 literal 0 HcmV?d00001 diff --git a/client/public/style.css b/client/public/style.css new file mode 100644 index 0000000..f4524fd --- /dev/null +++ b/client/public/style.css @@ -0,0 +1,15 @@ +body { + margin: 0; + padding: 0; + color: rgba(255, 255, 255, 0.87); + background-color: #000000; +} + +#app { + width: 100%; + height: 100vh; + overflow: hidden; + display: flex; + justify-content: center; + align-items: center; +} diff --git a/client/src/Card.ts b/client/src/Card.ts new file mode 100644 index 0000000..8538036 --- /dev/null +++ b/client/src/Card.ts @@ -0,0 +1,53 @@ +export type Card = + | "twoOfSpades" + | "threeOfSpades" + | "fourOfSpades" + | "fiveOfSpades" + | "sixOfSpades" + | "sevenOfSpades" + | "eightOfSpades" + | "nineOfSpades" + | "tenOfSpades" + | "jackOfSpades" + | "queenOfSpades" + | "kingOfSpades" + | "aceOfSpades" + | "twoOfHearts" + | "threeOfHearts" + | "fourOfHearts" + | "fiveOfHearts" + | "sixOfHearts" + | "sevenOfHearts" + | "eightOfHearts" + | "nineOfHearts" + | "tenOfHearts" + | "jackOfHearts" + | "queenOfHearts" + | "kingOfHearts" + | "aceOfHearts" + | "twoOfClubs" + | "threeOfClubs" + | "fourOfClubs" + | "fiveOfClubs" + | "sixOfClubs" + | "sevenOfClubs" + | "eightOfClubs" + | "nineOfClubs" + | "tenOfClubs" + | "jackOfClubs" + | "queenOfClubs" + | "kingOfClubs" + | "aceOfClubs" + | "twoOfDiamonds" + | "threeOfDiamonds" + | "fourOfDiamonds" + | "fiveOfDiamonds" + | "sixOfDiamonds" + | "sevenOfDiamonds" + | "eightOfDiamonds" + | "nineOfDiamonds" + | "tenOfDiamonds" + | "jackOfDiamonds" + | "queenOfDiamonds" + | "kingOfDiamonds" + | "aceOfDiamonds"; diff --git a/client/src/Hand.ts b/client/src/Hand.ts new file mode 100644 index 0000000..8514de2 --- /dev/null +++ b/client/src/Hand.ts @@ -0,0 +1,24 @@ +import { Assets, Container, Sprite } from "pixi.js"; +import { Card } from "./Card"; + +const spritesheet = await Assets.load("/public/assets/cards.json"); + +export class Hand { + cards: Container; + + constructor(cards: Card[] = []) { + const sprites: Container = new Container(); + sprites.position.set(0, 0); + sprites.height = 300; + sprites.width = 300; + + for (const card of cards) { + const sprite = new Sprite(spritesheet.textures[card]); + sprite.height /= 1.5; + sprite.width /= 1.5; + sprites.addChild(sprite); + } + + this.cards = sprites; + } +} diff --git a/client/src/main.ts b/client/src/main.ts new file mode 100644 index 0000000..bbdba6b --- /dev/null +++ b/client/src/main.ts @@ -0,0 +1,50 @@ +import { Application, Assets, Sprite } from "pixi.js"; +import { Hand } from "./hand"; + +(async () => { + // Create a new application + const app = new Application(); + + // Initialize the application + await app.init({ background: "#1099bb", resizeTo: window }); + + // Append the application canvas to the document body + document.getElementById("pixi-container")!.appendChild(app.canvas); + + try { + // Create the SpriteSheet from data and image + const cards = await Assets.load("/public/assets/cards.json"); + + console.log(cards); + + // Create a bunny Sprite + const bunny = new Sprite(cards.textures["fourOfHearts"]); + + console.log(bunny); + + // Center the sprite's anchor point + bunny.anchor.set(0.5); + + // Move the sprite to the center of the screen + bunny.position.set(app.screen.width / 2, app.screen.height / 2); + + bunny.height /= 1.5; + bunny.width /= 1.5; + + // Add the bunny to the stage + // app.stage.addChild(bunny); + + const hand = new Hand(["fourOfDiamonds"]); + app.stage.addChild(hand.cards); + + // Listen for animate update + // app.ticker.add((time) => { + // // Just for fun, let's rotate mr rabbit a little. + // // * Delta is 1 if running at 100% performance * + // // * Creates frame-independent transformation * + // bunny.rotation += 0.1 * time.deltaTime; + // }); + } catch (err) { + console.log(err); + } +})(); diff --git a/client/src/spritesheets/spritesheet.ts b/client/src/spritesheets/spritesheet.ts new file mode 100644 index 0000000..4ad2faa --- /dev/null +++ b/client/src/spritesheets/spritesheet.ts @@ -0,0 +1,66 @@ +type Spritesheet = { + frames: Record< + string, + { + frame: { x: number; y: number; w: number; h: number }; + sourceSize: { w: number; h: number }; + spriteSourceSize: { x: number; y: number; w: number; h: number }; + } + >; + meta: { + image: string; + format: string; + size: { w: number; h: number }; + scale: 1; + }; + animations?: Record; +}; + +(function () { + console.log(JSON.stringify(getCardSpritesheet(), null, "\t")); +})(); + +function getCardSpritesheet() { + const spriteSheet: Spritesheet = { + frames: {}, + meta: { + image: "/public/assets/cards.png", + format: "RGBA8888", + size: { w: 1872, h: 896 }, + scale: 1, + }, + }; + + const suits = ["Spades", "Hearts", "Clubs", "Diamonds"]; + const values = [ + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "ten", + "jack", + "queen", + "king", + "ace", + ]; + + for (let i = 0; i < 4; i++) { + for (let j = 0; j < 13; j++) { + const cardName = `${values[j]}Of${suits[i]}`; + const size = { w: 144, h: 224 }; + const position = { x: j * size.w, y: i * size.h }; + + spriteSheet.frames[cardName] = { + frame: { ...size, ...position }, + sourceSize: size, + spriteSourceSize: { ...size, x: 0, y: 0 }, + }; + } + } + + return spriteSheet; +} diff --git a/client/src/vite-env.d.ts b/client/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/client/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/client/tsconfig.json b/client/tsconfig.json new file mode 100644 index 0000000..3944b48 --- /dev/null +++ b/client/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/client/vite.config.ts b/client/vite.config.ts new file mode 100644 index 0000000..28f7a82 --- /dev/null +++ b/client/vite.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from "vite"; + +// https://vite.dev/config/ +export default defineConfig({ + server: { + port: 8080, + open: true, + }, +}); diff --git a/server/http/requests.http b/server/http/requests.http new file mode 100644 index 0000000..e3316c6 --- /dev/null +++ b/server/http/requests.http @@ -0,0 +1,9 @@ +GET http://localhost:3000/table HTTP/1.1 + +### + +POST http://localhost:3000/table HTTP/1.1 + +### + +GET http://localhost:3000/table/0 HTTP/1.1 diff --git a/server/package-lock.json b/server/package-lock.json new file mode 100644 index 0000000..98044fb --- /dev/null +++ b/server/package-lock.json @@ -0,0 +1,1003 @@ +{ + "name": "server", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "server", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@koa/router": "^14.0.0", + "koa": "^3.0.1" + }, + "devDependencies": { + "@types/koa": "^3.0.0", + "@types/koa__router": "^12.0.4", + "nodemon": "^3.1.10" + } + }, + "node_modules/@koa/router": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-14.0.0.tgz", + "integrity": "sha512-LBSu5K0qAaaQcXX/0WIB9PGDevyCxxpnc1uq13vV/CgObaVxuis5hKl3Eboq/8gcb6ebnkAStW9NB/Em2eYyFA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.1", + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "path-to-regexp": "^8.2.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@types/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/content-disposition": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.9.tgz", + "integrity": "sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cookies": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-E/DPgzifH4sM1UMadJMWd6mO2jOd4g1Ejwzx8/uRCDpJis1IrlyQEcGAYEomtAqRYmD5ORbNXMeI9U0RiVGZbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", + "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", + "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-assert": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.6.tgz", + "integrity": "sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/keygrip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz", + "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/koa": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-3.0.0.tgz", + "integrity": "sha512-MOcVYdVYmkSutVHZZPh8j3+dAjLyR5Tl59CN0eKgpkE1h/LBSmPAsQQuWs+bKu7WtGNn+hKfJH9Gzml+PulmDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "^2", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "node_modules/@types/koa__router": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/@types/koa__router/-/koa__router-12.0.4.tgz", + "integrity": "sha512-Y7YBbSmfXZpa/m5UGGzb7XadJIRBRnwNY9cdAojZGp65Cpe5MAP3mOZE7e3bImt8dfKS4UFcR16SLH8L/z7PBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/koa-compose": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.8.tgz", + "integrity": "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.5.1.tgz", + "integrity": "sha512-/SQdmUP2xa+1rdx7VwB9yPq8PaKej8TD5cQ+XfKDPWWC+VDJU4rvVVagXqKUzhKjtFoNA8rXDJAkCxQPAe00+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.12.0" + } + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", + "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookies": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "license": "MIT" + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "license": "MIT", + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-assert/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true, + "license": "ISC" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "license": "MIT", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/koa/-/koa-3.0.1.tgz", + "integrity": "sha512-oDxVkRwPOHhGlxKIDiDB2h+/l05QPtefD7nSqRgDfZt8P+QVYFWjfeK8jANf5O2YXjk8egd7KntvXKYx82wOag==", + "license": "MIT", + "dependencies": { + "accepts": "^1.3.8", + "content-disposition": "~0.5.4", + "content-type": "^1.0.5", + "cookies": "~0.9.1", + "delegates": "^1.0.0", + "destroy": "^1.2.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.5.0", + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", + "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "license": "MIT", + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.12.0.tgz", + "integrity": "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + } + } +} diff --git a/server/package.json b/server/package.json new file mode 100644 index 0000000..1dfb432 --- /dev/null +++ b/server/package.json @@ -0,0 +1,22 @@ +{ + "name": "server", + "version": "1.0.0", + "description": "", + "license": "ISC", + "author": "", + "type": "commonjs", + "main": "index.js", + "scripts": { + "watch": "nodemon dist/index.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "dependencies": { + "@koa/router": "^14.0.0", + "koa": "^3.0.1" + }, + "devDependencies": { + "@types/koa": "^3.0.0", + "@types/koa__router": "^12.0.4", + "nodemon": "^3.1.10" + } +} diff --git a/server/src/blackjack/Blackjack.ts b/server/src/blackjack/Blackjack.ts new file mode 100644 index 0000000..828f4c1 --- /dev/null +++ b/server/src/blackjack/Blackjack.ts @@ -0,0 +1,24 @@ +import { DatabaseEntry } from "../serverResponse"; + +interface BlackjackProperties { + turn: "dealer" | "player"; +} + +export class Blackjack implements DatabaseEntry { + id: number; + created: Date; + modified: Date; + deleted: Date | null; + turn: "dealer" | "player"; + + constructor(entry: BlackjackProperties & DatabaseEntry); + constructor(id: number); + constructor(data: number | (BlackjackProperties & DatabaseEntry)) { + const id = typeof data === "number" ? data : data.id; + this.id = id; + this.created = new Date(); + this.modified = this.created; + this.deleted = null; + this.turn = "dealer"; + } +} diff --git a/server/src/index.ts b/server/src/index.ts new file mode 100644 index 0000000..8c9ee68 --- /dev/null +++ b/server/src/index.ts @@ -0,0 +1,35 @@ +import Koa from "koa"; +import Router from "@koa/router"; +import { Blackjack } from "./blackjack/Blackjack"; +import { itemResponse, itemsResponse } from "./serverResponse"; + +const PORT = 3000; + +const app = new Koa(); +const router = new Router(); + +const tables: Blackjack[] = []; + +router.get("/table", (ctx) => { + ctx.status = 200; + ctx.body = itemsResponse(tables); +}); + +router.get("/table/:id", (ctx) => { + const id = ctx.params["id"]; + + ctx.status = 200; + ctx.body = itemResponse(tables[Number(id)]); +}); + +router.post("/table", (ctx) => { + const id = tables.length; + + tables.push(new Blackjack(id)); + ctx.status = 201; + ctx.body = { id }; +}); + +app.use(router.routes()); + +app.listen(3000, () => console.log(`listening on port ${PORT}`)); diff --git a/server/src/serverResponse.ts b/server/src/serverResponse.ts new file mode 100644 index 0000000..9456dbb --- /dev/null +++ b/server/src/serverResponse.ts @@ -0,0 +1,44 @@ +export interface ApiItem { + created: string; + deleted?: string; + id: number; + item?: T; + modified: string; +} + +export interface DatabaseEntry { + created: Date; + deleted: Date | null; + id: number; + modified: Date; +} + +export function createdResponse({ id }: T) { + return { id }; +} + +export function itemResponse(data: T & DatabaseEntry): ApiItem { + const { id, created, modified, deleted, ...rest } = data; + const res: ApiItem = { + id: id, + created: created.toISOString(), + modified: modified.toISOString(), + }; + + if (deleted) { + res.deleted = deleted.toISOString(); + } + + res.item = rest as T; + + return res; +} + +export function itemsResponse(data: (T & DatabaseEntry)[]): ApiItem[] { + const res: ApiItem[] = []; + for (const item of data) { + res.push(itemResponse(item)); + } + + return res; +} diff --git a/server/tsconfig.json b/server/tsconfig.json new file mode 100644 index 0000000..476d40f --- /dev/null +++ b/server/tsconfig.json @@ -0,0 +1,103 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs" /* Specify what module code is generated. */, + "rootDir": "./src" /* Specify the root folder within your source files. */, + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [] /* Allow multiple folders to be treated as one when resolving modules. */, + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "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. */ + "outDir": "./dist" /* Specify an output folder for all emitted files. */, + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +}