diff --git a/packages/user-login/.gitignore b/packages/user-login/.gitignore deleted file mode 100644 index 76add87..0000000 --- a/packages/user-login/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist \ No newline at end of file diff --git a/packages/user-login/README.md b/packages/user-login/README.md deleted file mode 100644 index ba084a6..0000000 --- a/packages/user-login/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# app-template - - -`/system/lib/app.js` 包函的模块是 `QueryRouterServer` 和 `Page` 和 `useConfigKey` \ No newline at end of file diff --git a/packages/user-login/index.html b/packages/user-login/index.html deleted file mode 100644 index 9a5d25b..0000000 --- a/packages/user-login/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - -杭州余杭逸文设计工作室 - - - - - -
- - - - diff --git a/packages/user-login/package.json b/packages/user-login/package.json deleted file mode 100644 index 352605f..0000000 --- a/packages/user-login/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "@kevisual/kevisual-login", - "version": "0.0.5", - "description": "", - "main": "index.js", - "basename": "/root/login", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview", - "pub": "envision deploy ./dist -k login -v 0.0.5 -u " - }, - "keywords": [], - "author": "abearxiong ", - "license": "MIT", - "type": "module", - "dependencies": { - "@floating-ui/dom": "^1.7.5", - "@kevisual/query": "0.0.39", - "@kevisual/query-login": "^0.0.7", - "@kevisual/system-lib": "^0.0.22", - "clsx": "^2.1.1", - "dayjs": "^1.11.19", - "lodash-es": "^4.17.23", - "qrcode": "^1.5.4", - "react-dom": "^19.2.4", - "react-toastify": "^11.0.5", - "zustand": "^5.0.11" - }, - "devDependencies": { - "@kevisual/router": "0.0.69", - "@kevisual/ssl": "^0.0.1", - "@kevisual/store": "0.0.9", - "@kevisual/types": "^0.0.12", - "@tailwindcss/vite": "^4.1.18", - "@types/qrcode": "^1.5.6", - "@types/react": "^19.2.10", - "@types/react-dom": "^19.2.3", - "@vitejs/plugin-basic-ssl": "^2.1.4", - "@vitejs/plugin-react": "^5.1.3", - "cross-env": "^10.1.0", - "esbuild": "^0.27.2", - "react": "^19.2.4", - "tailwindcss": "^4.1.18", - "vite": "^7.3.1" - }, - "pnpm": { - "onlyBuiltDependencies": [ - "@tailwindcss/oxide", - "esbuild" - ] - } -} \ No newline at end of file diff --git a/packages/user-login/pnpm-lock.yaml b/packages/user-login/pnpm-lock.yaml deleted file mode 100644 index 2ad2868..0000000 --- a/packages/user-login/pnpm-lock.yaml +++ /dev/null @@ -1,2445 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@floating-ui/dom': - specifier: ^1.7.4 - version: 1.7.4 - '@kevisual/query': - specifier: 0.0.29 - version: 0.0.29(ws@8.18.0) - '@kevisual/query-login': - specifier: ^0.0.6 - version: 0.0.6(@kevisual/query@0.0.29(ws@8.18.0))(rollup@4.52.5)(typescript@5.8.3) - '@kevisual/system-lib': - specifier: ^0.0.22 - version: 0.0.22 - '@kevisual/system-ui': - specifier: ^0.0.3 - version: 0.0.3 - clsx: - specifier: ^2.1.1 - version: 2.1.1 - dayjs: - specifier: ^1.11.18 - version: 1.11.18 - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 - qrcode: - specifier: ^1.5.4 - version: 1.5.4 - react-dom: - specifier: ^19.2.0 - version: 19.2.0(react@19.2.0) - react-toastify: - specifier: ^11.0.5 - version: 11.0.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - zustand: - specifier: ^5.0.8 - version: 5.0.8(@types/react@19.2.2)(react@19.2.0) - devDependencies: - '@kevisual/router': - specifier: 0.0.30 - version: 0.0.30 - '@kevisual/ssl': - specifier: ^0.0.1 - version: 0.0.1 - '@kevisual/store': - specifier: 0.0.9 - version: 0.0.9 - '@kevisual/types': - specifier: ^0.0.10 - version: 0.0.10 - '@tailwindcss/vite': - specifier: ^4.1.16 - version: 4.1.16(vite@7.1.12(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)) - '@types/qrcode': - specifier: ^1.5.6 - version: 1.5.6 - '@types/react': - specifier: ^19.2.2 - version: 19.2.2 - '@types/react-dom': - specifier: ^19.2.2 - version: 19.2.2(@types/react@19.2.2) - '@vitejs/plugin-basic-ssl': - specifier: ^2.1.0 - version: 2.1.0(vite@7.1.12(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)) - '@vitejs/plugin-react': - specifier: ^5.1.0 - version: 5.1.0(vite@7.1.12(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)) - cross-env: - specifier: ^10.1.0 - version: 10.1.0 - esbuild: - specifier: ^0.25.11 - version: 0.25.11 - react: - specifier: ^19.2.0 - version: 19.2.0 - tailwindcss: - specifier: ^4.1.16 - version: 4.1.16 - vite: - specifier: ^7.1.12 - version: 7.1.12(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0) - -packages: - - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.27.2': - resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.28.5': - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.28.4': - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.27.2': - resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.27.1': - resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} - engines: {node: '>=6.9.0'} - - '@epic-web/invariant@1.0.0': - resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} - - '@esbuild/aix-ppc64@0.25.11': - resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.11': - resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.11': - resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.11': - resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.11': - resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.11': - resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.11': - resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.11': - resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.11': - resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.11': - resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.11': - resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.11': - resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.11': - resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.11': - resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.11': - resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.11': - resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.11': - resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.11': - resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.11': - resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.11': - resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.11': - resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.11': - resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.25.11': - resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.11': - resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.11': - resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.11': - resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@floating-ui/core@1.7.3': - resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} - - '@floating-ui/dom@1.7.4': - resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} - - '@floating-ui/utils@0.2.10': - resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - - '@kevisual/cache@0.0.2': - resolution: {integrity: sha512-2Cl5KF2Gi27uLfhO6CdTMFnRzx9vYnqevAo7d9ab3rOaqTgF8tLeAXglXyRbaWW3WUbHU2XaOb4r98uUsqIQQw==} - - '@kevisual/query-login@0.0.6': - resolution: {integrity: sha512-ZdX+sxeQaM3PV9fZXofMlxFz1RmpYIkoi47exzUgw6DADjEryBAQKRXe2/oL20NsBTV8owqaagRqffAVjq5c5g==} - peerDependencies: - '@kevisual/query': ^0.0.17 - - '@kevisual/query@0.0.29': - resolution: {integrity: sha512-rQZk0J073UuC1QGzuyq+pb4Y0hu8/Qx/xYHs9NbsmslM+RuMnd1zpXmvhXNj7Kn1MdYTH90ng2MlFLBkkQFaIg==} - - '@kevisual/router@0.0.30': - resolution: {integrity: sha512-/mBo7aZFWjT4QfHkI5HPXfdgSwZzt3mAVei7dcNSBTPe9KQSoYKZ8BTq9VTUj3XE0sI6o1bZjlLYvinpVnZilw==} - - '@kevisual/ssl@0.0.1': - resolution: {integrity: sha512-Uh7PCkR5x1kEGvlEn4PrKE5C7yM5MiBsWwneTZyQMJJ/yrV3FZELXGYHzsb/Kb7V10d5skool7BtlL92AJEZpQ==} - - '@kevisual/store@0.0.9': - resolution: {integrity: sha512-j6OiVcKbws23AvIwlDBL16ohGmZrRxi/OlH2i/UEScW2hKZo7vICXKySHom4ZzrnlwLV5JzKu4fVP48allGOeA==} - - '@kevisual/system-lib@0.0.22': - resolution: {integrity: sha512-kdzYlWLH+TGnNe4BfzB4Lk7jRdQE/KMQnMguWvPXdOb/aRiwJFVjlfYoNtA6BXgNC9MOpJ59CzFRc+EsMx1HRw==} - - '@kevisual/system-ui@0.0.3': - resolution: {integrity: sha512-zRtUnL6wNe6R1W7X6eirDADZWeTmxZCNpLwxCLu30yeNuIhpFJdxHyOg0nX9aOZn6F0Kb6lB3Li2fZpKwdpk0w==} - - '@kevisual/types@0.0.10': - resolution: {integrity: sha512-Q73uzzjk9UidumnmCvOpgzqDDvQxsblz22bIFuoiioUFJWwaparx8bpd8ArRyFojicYL1YJoFDzDZ9j9NN8grA==} - - '@rolldown/pluginutils@1.0.0-beta.43': - resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==} - - '@rollup/plugin-commonjs@28.0.3': - resolution: {integrity: sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@16.0.1': - resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-typescript@12.1.2': - resolution: {integrity: sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.14.0||^3.0.0||^4.0.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - rollup: - optional: true - tslib: - optional: true - - '@rollup/pluginutils@5.1.4': - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.52.5': - resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.52.5': - resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.52.5': - resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.52.5': - resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.52.5': - resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.52.5': - resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm-musleabihf@4.52.5': - resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} - cpu: [arm] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-arm64-gnu@4.52.5': - resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm64-musl@4.52.5': - resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-loong64-gnu@4.52.5': - resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-ppc64-gnu@4.52.5': - resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-gnu@4.52.5': - resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-musl@4.52.5': - resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-s390x-gnu@4.52.5': - resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-gnu@4.52.5': - resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-musl@4.52.5': - resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rollup/rollup-openharmony-arm64@4.52.5': - resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} - cpu: [arm64] - os: [openharmony] - - '@rollup/rollup-win32-arm64-msvc@4.52.5': - resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.52.5': - resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-gnu@4.52.5': - resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.52.5': - resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} - cpu: [x64] - os: [win32] - - '@tailwindcss/node@4.1.16': - resolution: {integrity: sha512-BX5iaSsloNuvKNHRN3k2RcCuTEgASTo77mofW0vmeHkfrDWaoFAFvNHpEgtu0eqyypcyiBkDWzSMxJhp3AUVcw==} - - '@tailwindcss/oxide-android-arm64@4.1.16': - resolution: {integrity: sha512-8+ctzkjHgwDJ5caq9IqRSgsP70xhdhJvm+oueS/yhD5ixLhqTw9fSL1OurzMUhBwE5zK26FXLCz2f/RtkISqHA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - - '@tailwindcss/oxide-darwin-arm64@4.1.16': - resolution: {integrity: sha512-C3oZy5042v2FOALBZtY0JTDnGNdS6w7DxL/odvSny17ORUnaRKhyTse8xYi3yKGyfnTUOdavRCdmc8QqJYwFKA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@tailwindcss/oxide-darwin-x64@4.1.16': - resolution: {integrity: sha512-vjrl/1Ub9+JwU6BP0emgipGjowzYZMjbWCDqwA2Z4vCa+HBSpP4v6U2ddejcHsolsYxwL5r4bPNoamlV0xDdLg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@tailwindcss/oxide-freebsd-x64@4.1.16': - resolution: {integrity: sha512-TSMpPYpQLm+aR1wW5rKuUuEruc/oOX3C7H0BTnPDn7W/eMw8W+MRMpiypKMkXZfwH8wqPIRKppuZoedTtNj2tg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.16': - resolution: {integrity: sha512-p0GGfRg/w0sdsFKBjMYvvKIiKy/LNWLWgV/plR4lUgrsxFAoQBFrXkZ4C0w8IOXfslB9vHK/JGASWD2IefIpvw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@tailwindcss/oxide-linux-arm64-gnu@4.1.16': - resolution: {integrity: sha512-DoixyMmTNO19rwRPdqviTrG1rYzpxgyYJl8RgQvdAQUzxC1ToLRqtNJpU/ATURSKgIg6uerPw2feW0aS8SNr/w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@tailwindcss/oxide-linux-arm64-musl@4.1.16': - resolution: {integrity: sha512-H81UXMa9hJhWhaAUca6bU2wm5RRFpuHImrwXBUvPbYb+3jo32I9VIwpOX6hms0fPmA6f2pGVlybO6qU8pF4fzQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@tailwindcss/oxide-linux-x64-gnu@4.1.16': - resolution: {integrity: sha512-ZGHQxDtFC2/ruo7t99Qo2TTIvOERULPl5l0K1g0oK6b5PGqjYMga+FcY1wIUnrUxY56h28FxybtDEla+ICOyew==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@tailwindcss/oxide-linux-x64-musl@4.1.16': - resolution: {integrity: sha512-Oi1tAaa0rcKf1Og9MzKeINZzMLPbhxvm7rno5/zuP1WYmpiG0bEHq4AcRUiG2165/WUzvxkW4XDYCscZWbTLZw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@tailwindcss/oxide-wasm32-wasi@4.1.16': - resolution: {integrity: sha512-B01u/b8LteGRwucIBmCQ07FVXLzImWESAIMcUU6nvFt/tYsQ6IHz8DmZ5KtvmwxD+iTYBtM1xwoGXswnlu9v0Q==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - bundledDependencies: - - '@napi-rs/wasm-runtime' - - '@emnapi/core' - - '@emnapi/runtime' - - '@tybys/wasm-util' - - '@emnapi/wasi-threads' - - tslib - - '@tailwindcss/oxide-win32-arm64-msvc@4.1.16': - resolution: {integrity: sha512-zX+Q8sSkGj6HKRTMJXuPvOcP8XfYON24zJBRPlszcH1Np7xuHXhWn8qfFjIujVzvH3BHU+16jBXwgpl20i+v9A==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@tailwindcss/oxide-win32-x64-msvc@4.1.16': - resolution: {integrity: sha512-m5dDFJUEejbFqP+UXVstd4W/wnxA4F61q8SoL+mqTypId2T2ZpuxosNSgowiCnLp2+Z+rivdU0AqpfgiD7yCBg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@tailwindcss/oxide@4.1.16': - resolution: {integrity: sha512-2OSv52FRuhdlgyOQqgtQHuCgXnS8nFSYRp2tJ+4WZXKgTxqPy7SMSls8c3mPT5pkZ17SBToGM5LHEJBO7miEdg==} - engines: {node: '>= 10'} - - '@tailwindcss/vite@4.1.16': - resolution: {integrity: sha512-bbguNBcDxsRmi9nnlWJxhfDWamY3lmcyACHcdO1crxfzuLpOhHLLtEIN/nCbbAtj5rchUgQD17QVAKi1f7IsKg==} - peerDependencies: - vite: ^5.2.0 || ^6 || ^7 - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} - - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - - '@types/node@22.10.3': - resolution: {integrity: sha512-DifAyw4BkrufCILvD3ucnuN8eydUfc/C1GlyrnI+LK6543w5/L3VeVgf05o3B4fqSXP1dKYLOZsKfutpxPzZrw==} - - '@types/qrcode@1.5.6': - resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==} - - '@types/react-dom@19.2.2': - resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==} - peerDependencies: - '@types/react': ^19.2.0 - - '@types/react@19.2.2': - resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} - - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - - '@vitejs/plugin-basic-ssl@2.1.0': - resolution: {integrity: sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - peerDependencies: - vite: ^6.0.0 || ^7.0.0 - - '@vitejs/plugin-react@5.1.0': - resolution: {integrity: sha512-4LuWrg7EKWgQaMJfnN+wcmbAW+VSsCmqGohftWjuct47bv8uE4n/nPpq4XjJPsxgq00GGG5J8dvBczp8uxScew==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - browserslist@4.24.3: - resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - caniuse-lite@1.0.30001690: - resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} - - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cross-env@10.1.0: - resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} - engines: {node: '>=20'} - hasBin: true - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - dayjs@1.11.18: - resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} - engines: {node: '>=8'} - - dijkstrajs@1.0.3: - resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} - - dotenv@16.5.0: - resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} - engines: {node: '>=12'} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - electron-to-chromium@1.5.76: - resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - - enhanced-resolve@5.18.3: - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} - engines: {node: '>=10.13.0'} - - esbuild@0.25.11: - resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - fdir@6.4.4: - resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - fresh@2.0.0: - resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} - engines: {node: '>= 0.8'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - idb-keyval@6.2.2: - resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jiti@2.6.1: - resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} - hasBin: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - lightningcss-android-arm64@1.30.2: - resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [android] - - lightningcss-darwin-arm64@1.30.2: - resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - - lightningcss-darwin-x64@1.30.2: - resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - - lightningcss-freebsd-x64@1.30.2: - resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - - lightningcss-linux-arm-gnueabihf@1.30.2: - resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - - lightningcss-linux-arm64-gnu@1.30.2: - resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - lightningcss-linux-arm64-musl@1.30.2: - resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [musl] - - lightningcss-linux-x64-gnu@1.30.2: - resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [glibc] - - lightningcss-linux-x64-musl@1.30.2: - resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [musl] - - lightningcss-win32-arm64-msvc@1.30.2: - resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [win32] - - lightningcss-win32-x64-msvc@1.30.2: - resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - - lightningcss@1.30.2: - resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} - engines: {node: '>= 12.0.0'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - - mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} - - mime-types@3.0.1: - resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} - engines: {node: '>= 0.6'} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - openai@5.1.1: - resolution: {integrity: sha512-lgIdLqvpLpz8xPUKcEIV6ml+by74mbSBz8zv/AHHebtLn/WdpH4kdXT3/Q5uUKDHg3vHV/z9+G9wZINRX6rkDg==} - hasBin: true - peerDependencies: - ws: ^8.18.0 - zod: ^3.23.8 - peerDependenciesMeta: - ws: - optional: true - zod: - optional: true - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-to-regexp@8.3.0: - resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - - pngjs@5.0.0: - resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} - engines: {node: '>=10.13.0'} - - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} - - qrcode@1.5.4: - resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} - engines: {node: '>=10.13.0'} - hasBin: true - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - react-dom@19.2.0: - resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} - peerDependencies: - react: ^19.2.0 - - react-refresh@0.18.0: - resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} - engines: {node: '>=0.10.0'} - - react-toastify@11.0.5: - resolution: {integrity: sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==} - peerDependencies: - react: ^18 || ^19 - react-dom: ^18 || ^19 - - react@19.2.0: - resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} - engines: {node: '>=0.10.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - rollup-plugin-dts@6.2.1: - resolution: {integrity: sha512-sR3CxYUl7i2CHa0O7bA45mCrgADyAQ0tVtGSqi3yvH28M+eg1+g5d7kQ9hLvEz5dorK3XVsH5L2jwHLQf72DzA==} - engines: {node: '>=16'} - peerDependencies: - rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 - - rollup@4.52.5: - resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - - selfsigned@3.0.1: - resolution: {integrity: sha512-6U6w6kSLrM9Zxo0D7mC7QdGS6ZZytMWBnj/vhF9p+dAHx6CwGezuRcO4VclTbrrI7mg7SD6zNiqXUuBHOVopNQ==} - engines: {node: '>=10'} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - send@1.2.0: - resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} - engines: {node: '>= 18'} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} - engines: {node: '>= 0.8'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - style-to-object@1.0.8: - resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - tailwindcss@4.1.16: - resolution: {integrity: sha512-pONL5awpaQX4LN5eiv7moSiSPd/DLDzKVRJz8Q9PgzmAdd1R4307GQS2ZpfiN7ZmekdQrfhZZiSE5jkLR4WNaA==} - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - - terser@5.37.0: - resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} - engines: {node: '>=10'} - hasBin: true - - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - - update-browserslist-db@1.1.1: - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - vite@7.1.12: - resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - 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 - - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - - zustand@5.0.8: - resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=18.0.0' - immer: '>=9.0.6' - react: '>=18.0.0' - use-sync-external-store: '>=1.2.0' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - use-sync-external-store: - optional: true - -snapshots: - - '@babel/code-frame@7.27.1': - dependencies: - '@babel/helper-validator-identifier': 7.27.1 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.27.2': {} - - '@babel/core@7.28.5': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.28.5': - dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.27.2': - dependencies: - '@babel/compat-data': 7.27.2 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.24.3 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-globals@7.28.0': {} - - '@babel/helper-module-imports@7.27.1': - dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.27.1': {} - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.27.1': {} - - '@babel/helper-validator-identifier@7.28.5': {} - - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helpers@7.28.4': - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 - - '@babel/parser@7.27.2': - dependencies: - '@babel/types': 7.27.1 - - '@babel/parser@7.28.5': - dependencies: - '@babel/types': 7.28.5 - - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/template@7.27.2': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 - - '@babel/traverse@7.28.5': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.27.1': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - - '@babel/types@7.28.5': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@epic-web/invariant@1.0.0': {} - - '@esbuild/aix-ppc64@0.25.11': - optional: true - - '@esbuild/android-arm64@0.25.11': - optional: true - - '@esbuild/android-arm@0.25.11': - optional: true - - '@esbuild/android-x64@0.25.11': - optional: true - - '@esbuild/darwin-arm64@0.25.11': - optional: true - - '@esbuild/darwin-x64@0.25.11': - optional: true - - '@esbuild/freebsd-arm64@0.25.11': - optional: true - - '@esbuild/freebsd-x64@0.25.11': - optional: true - - '@esbuild/linux-arm64@0.25.11': - optional: true - - '@esbuild/linux-arm@0.25.11': - optional: true - - '@esbuild/linux-ia32@0.25.11': - optional: true - - '@esbuild/linux-loong64@0.25.11': - optional: true - - '@esbuild/linux-mips64el@0.25.11': - optional: true - - '@esbuild/linux-ppc64@0.25.11': - optional: true - - '@esbuild/linux-riscv64@0.25.11': - optional: true - - '@esbuild/linux-s390x@0.25.11': - optional: true - - '@esbuild/linux-x64@0.25.11': - optional: true - - '@esbuild/netbsd-arm64@0.25.11': - optional: true - - '@esbuild/netbsd-x64@0.25.11': - optional: true - - '@esbuild/openbsd-arm64@0.25.11': - optional: true - - '@esbuild/openbsd-x64@0.25.11': - optional: true - - '@esbuild/openharmony-arm64@0.25.11': - optional: true - - '@esbuild/sunos-x64@0.25.11': - optional: true - - '@esbuild/win32-arm64@0.25.11': - optional: true - - '@esbuild/win32-ia32@0.25.11': - optional: true - - '@esbuild/win32-x64@0.25.11': - optional: true - - '@floating-ui/core@1.7.3': - dependencies: - '@floating-ui/utils': 0.2.10 - - '@floating-ui/dom@1.7.4': - dependencies: - '@floating-ui/core': 1.7.3 - '@floating-ui/utils': 0.2.10 - - '@floating-ui/utils@0.2.10': {} - - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - optional: true - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/sourcemap-codec@1.5.5': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@jridgewell/trace-mapping@0.3.31': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@kevisual/cache@0.0.2(rollup@4.52.5)(typescript@5.8.3)': - dependencies: - '@rollup/plugin-commonjs': 28.0.3(rollup@4.52.5) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.52.5) - '@rollup/plugin-typescript': 12.1.2(rollup@4.52.5)(typescript@5.8.3) - idb-keyval: 6.2.2 - rollup-plugin-dts: 6.2.1(rollup@4.52.5)(typescript@5.8.3) - transitivePeerDependencies: - - rollup - - tslib - - typescript - - '@kevisual/query-login@0.0.6(@kevisual/query@0.0.29(ws@8.18.0))(rollup@4.52.5)(typescript@5.8.3)': - dependencies: - '@kevisual/cache': 0.0.2(rollup@4.52.5)(typescript@5.8.3) - '@kevisual/query': 0.0.29(ws@8.18.0) - dotenv: 16.5.0 - transitivePeerDependencies: - - rollup - - tslib - - typescript - - '@kevisual/query@0.0.29(ws@8.18.0)': - dependencies: - openai: 5.1.1(ws@8.18.0) - transitivePeerDependencies: - - ws - - zod - - '@kevisual/router@0.0.30': - dependencies: - path-to-regexp: 8.3.0 - selfsigned: 3.0.1 - send: 1.2.0 - transitivePeerDependencies: - - supports-color - - '@kevisual/ssl@0.0.1': {} - - '@kevisual/store@0.0.9': {} - - '@kevisual/system-lib@0.0.22': {} - - '@kevisual/system-ui@0.0.3': - dependencies: - dayjs: 1.11.18 - lodash-es: 4.17.21 - style-to-object: 1.0.8 - - '@kevisual/types@0.0.10': {} - - '@rolldown/pluginutils@1.0.0-beta.43': {} - - '@rollup/plugin-commonjs@28.0.3(rollup@4.52.5)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.52.5) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.4.4(picomatch@4.0.2) - is-reference: 1.2.1 - magic-string: 0.30.17 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.52.5 - - '@rollup/plugin-node-resolve@16.0.1(rollup@4.52.5)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.52.5) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 4.52.5 - - '@rollup/plugin-typescript@12.1.2(rollup@4.52.5)(typescript@5.8.3)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.52.5) - resolve: 1.22.10 - typescript: 5.8.3 - optionalDependencies: - rollup: 4.52.5 - - '@rollup/pluginutils@5.1.4(rollup@4.52.5)': - dependencies: - '@types/estree': 1.0.7 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.52.5 - - '@rollup/rollup-android-arm-eabi@4.52.5': - optional: true - - '@rollup/rollup-android-arm64@4.52.5': - optional: true - - '@rollup/rollup-darwin-arm64@4.52.5': - optional: true - - '@rollup/rollup-darwin-x64@4.52.5': - optional: true - - '@rollup/rollup-freebsd-arm64@4.52.5': - optional: true - - '@rollup/rollup-freebsd-x64@4.52.5': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.52.5': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.52.5': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.52.5': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.52.5': - optional: true - - '@rollup/rollup-linux-x64-musl@4.52.5': - optional: true - - '@rollup/rollup-openharmony-arm64@4.52.5': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.52.5': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.52.5': - optional: true - - '@rollup/rollup-win32-x64-gnu@4.52.5': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.52.5': - optional: true - - '@tailwindcss/node@4.1.16': - dependencies: - '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.18.3 - jiti: 2.6.1 - lightningcss: 1.30.2 - magic-string: 0.30.21 - source-map-js: 1.2.1 - tailwindcss: 4.1.16 - - '@tailwindcss/oxide-android-arm64@4.1.16': - optional: true - - '@tailwindcss/oxide-darwin-arm64@4.1.16': - optional: true - - '@tailwindcss/oxide-darwin-x64@4.1.16': - optional: true - - '@tailwindcss/oxide-freebsd-x64@4.1.16': - optional: true - - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.16': - optional: true - - '@tailwindcss/oxide-linux-arm64-gnu@4.1.16': - optional: true - - '@tailwindcss/oxide-linux-arm64-musl@4.1.16': - optional: true - - '@tailwindcss/oxide-linux-x64-gnu@4.1.16': - optional: true - - '@tailwindcss/oxide-linux-x64-musl@4.1.16': - optional: true - - '@tailwindcss/oxide-wasm32-wasi@4.1.16': - optional: true - - '@tailwindcss/oxide-win32-arm64-msvc@4.1.16': - optional: true - - '@tailwindcss/oxide-win32-x64-msvc@4.1.16': - optional: true - - '@tailwindcss/oxide@4.1.16': - optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.16 - '@tailwindcss/oxide-darwin-arm64': 4.1.16 - '@tailwindcss/oxide-darwin-x64': 4.1.16 - '@tailwindcss/oxide-freebsd-x64': 4.1.16 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.16 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.16 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.16 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.16 - '@tailwindcss/oxide-linux-x64-musl': 4.1.16 - '@tailwindcss/oxide-wasm32-wasi': 4.1.16 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.16 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.16 - - '@tailwindcss/vite@4.1.16(vite@7.1.12(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0))': - dependencies: - '@tailwindcss/node': 4.1.16 - '@tailwindcss/oxide': 4.1.16 - tailwindcss: 4.1.16 - vite: 7.1.12(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0) - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.27.2 - '@babel/types': 7.27.1 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 - - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.27.1 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.27.2 - '@babel/types': 7.27.1 - - '@types/babel__traverse@7.20.6': - dependencies: - '@babel/types': 7.27.1 - - '@types/estree@1.0.7': {} - - '@types/estree@1.0.8': {} - - '@types/node@22.10.3': - dependencies: - undici-types: 6.20.0 - - '@types/qrcode@1.5.6': - dependencies: - '@types/node': 22.10.3 - - '@types/react-dom@19.2.2(@types/react@19.2.2)': - dependencies: - '@types/react': 19.2.2 - - '@types/react@19.2.2': - dependencies: - csstype: 3.1.3 - - '@types/resolve@1.20.2': {} - - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.12(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0))': - dependencies: - vite: 7.1.12(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0) - - '@vitejs/plugin-react@5.1.0(vite@7.1.12(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0))': - dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) - '@rolldown/pluginutils': 1.0.0-beta.43 - '@types/babel__core': 7.20.5 - react-refresh: 0.18.0 - vite: 7.1.12(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0) - transitivePeerDependencies: - - supports-color - - acorn@8.14.0: - optional: true - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - browserslist@4.24.3: - dependencies: - caniuse-lite: 1.0.30001690 - electron-to-chromium: 1.5.76 - node-releases: 2.0.19 - update-browserslist-db: 1.1.1(browserslist@4.24.3) - - buffer-from@1.1.2: - optional: true - - camelcase@5.3.1: {} - - caniuse-lite@1.0.30001690: {} - - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - - clsx@2.1.1: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@2.20.3: - optional: true - - commondir@1.0.1: {} - - convert-source-map@2.0.0: {} - - cross-env@10.1.0: - dependencies: - '@epic-web/invariant': 1.0.0 - cross-spawn: 7.0.6 - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - csstype@3.1.3: {} - - dayjs@1.11.18: {} - - debug@4.4.0: - dependencies: - ms: 2.1.3 - - decamelize@1.2.0: {} - - deepmerge@4.3.1: {} - - depd@2.0.0: {} - - detect-libc@2.0.4: {} - - dijkstrajs@1.0.3: {} - - dotenv@16.5.0: {} - - ee-first@1.1.1: {} - - electron-to-chromium@1.5.76: {} - - emoji-regex@8.0.0: {} - - encodeurl@2.0.0: {} - - enhanced-resolve@5.18.3: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - - esbuild@0.25.11: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.11 - '@esbuild/android-arm': 0.25.11 - '@esbuild/android-arm64': 0.25.11 - '@esbuild/android-x64': 0.25.11 - '@esbuild/darwin-arm64': 0.25.11 - '@esbuild/darwin-x64': 0.25.11 - '@esbuild/freebsd-arm64': 0.25.11 - '@esbuild/freebsd-x64': 0.25.11 - '@esbuild/linux-arm': 0.25.11 - '@esbuild/linux-arm64': 0.25.11 - '@esbuild/linux-ia32': 0.25.11 - '@esbuild/linux-loong64': 0.25.11 - '@esbuild/linux-mips64el': 0.25.11 - '@esbuild/linux-ppc64': 0.25.11 - '@esbuild/linux-riscv64': 0.25.11 - '@esbuild/linux-s390x': 0.25.11 - '@esbuild/linux-x64': 0.25.11 - '@esbuild/netbsd-arm64': 0.25.11 - '@esbuild/netbsd-x64': 0.25.11 - '@esbuild/openbsd-arm64': 0.25.11 - '@esbuild/openbsd-x64': 0.25.11 - '@esbuild/openharmony-arm64': 0.25.11 - '@esbuild/sunos-x64': 0.25.11 - '@esbuild/win32-arm64': 0.25.11 - '@esbuild/win32-ia32': 0.25.11 - '@esbuild/win32-x64': 0.25.11 - - escalade@3.2.0: {} - - escape-html@1.0.3: {} - - estree-walker@2.0.2: {} - - etag@1.8.1: {} - - fdir@6.4.4(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - - fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - fresh@2.0.0: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - gensync@1.0.0-beta.2: {} - - get-caller-file@2.0.5: {} - - graceful-fs@4.2.11: {} - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - idb-keyval@6.2.2: {} - - inherits@2.0.4: {} - - inline-style-parser@0.2.4: {} - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - - is-fullwidth-code-point@3.0.0: {} - - is-module@1.0.0: {} - - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.7 - - isexe@2.0.0: {} - - jiti@2.6.1: {} - - js-tokens@4.0.0: {} - - jsesc@3.1.0: {} - - json5@2.2.3: {} - - lightningcss-android-arm64@1.30.2: - optional: true - - lightningcss-darwin-arm64@1.30.2: - optional: true - - lightningcss-darwin-x64@1.30.2: - optional: true - - lightningcss-freebsd-x64@1.30.2: - optional: true - - lightningcss-linux-arm-gnueabihf@1.30.2: - optional: true - - lightningcss-linux-arm64-gnu@1.30.2: - optional: true - - lightningcss-linux-arm64-musl@1.30.2: - optional: true - - lightningcss-linux-x64-gnu@1.30.2: - optional: true - - lightningcss-linux-x64-musl@1.30.2: - optional: true - - lightningcss-win32-arm64-msvc@1.30.2: - optional: true - - lightningcss-win32-x64-msvc@1.30.2: - optional: true - - lightningcss@1.30.2: - dependencies: - detect-libc: 2.0.4 - optionalDependencies: - lightningcss-android-arm64: 1.30.2 - lightningcss-darwin-arm64: 1.30.2 - lightningcss-darwin-x64: 1.30.2 - lightningcss-freebsd-x64: 1.30.2 - lightningcss-linux-arm-gnueabihf: 1.30.2 - lightningcss-linux-arm64-gnu: 1.30.2 - lightningcss-linux-arm64-musl: 1.30.2 - lightningcss-linux-x64-gnu: 1.30.2 - lightningcss-linux-x64-musl: 1.30.2 - lightningcss-win32-arm64-msvc: 1.30.2 - lightningcss-win32-x64-msvc: 1.30.2 - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - lodash-es@4.17.21: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - magic-string@0.30.17: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - magic-string@0.30.21: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - - mime-db@1.54.0: {} - - mime-types@3.0.1: - dependencies: - mime-db: 1.54.0 - - ms@2.1.3: {} - - nanoid@3.3.11: {} - - node-forge@1.3.1: {} - - node-releases@2.0.19: {} - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - - openai@5.1.1(ws@8.18.0): - optionalDependencies: - ws: 8.18.0 - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-try@2.2.0: {} - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-to-regexp@8.3.0: {} - - picocolors@1.1.1: {} - - picomatch@4.0.2: {} - - picomatch@4.0.3: {} - - pngjs@5.0.0: {} - - postcss@8.5.6: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - qrcode@1.5.4: - dependencies: - dijkstrajs: 1.0.3 - pngjs: 5.0.0 - yargs: 15.4.1 - - range-parser@1.2.1: {} - - react-dom@19.2.0(react@19.2.0): - dependencies: - react: 19.2.0 - scheduler: 0.27.0 - - react-refresh@0.18.0: {} - - react-toastify@11.0.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): - dependencies: - clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - - react@19.2.0: {} - - require-directory@2.1.1: {} - - require-main-filename@2.0.0: {} - - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - rollup-plugin-dts@6.2.1(rollup@4.52.5)(typescript@5.8.3): - dependencies: - magic-string: 0.30.17 - rollup: 4.52.5 - typescript: 5.8.3 - optionalDependencies: - '@babel/code-frame': 7.27.1 - - rollup@4.52.5: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.5 - '@rollup/rollup-android-arm64': 4.52.5 - '@rollup/rollup-darwin-arm64': 4.52.5 - '@rollup/rollup-darwin-x64': 4.52.5 - '@rollup/rollup-freebsd-arm64': 4.52.5 - '@rollup/rollup-freebsd-x64': 4.52.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 - '@rollup/rollup-linux-arm-musleabihf': 4.52.5 - '@rollup/rollup-linux-arm64-gnu': 4.52.5 - '@rollup/rollup-linux-arm64-musl': 4.52.5 - '@rollup/rollup-linux-loong64-gnu': 4.52.5 - '@rollup/rollup-linux-ppc64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-musl': 4.52.5 - '@rollup/rollup-linux-s390x-gnu': 4.52.5 - '@rollup/rollup-linux-x64-gnu': 4.52.5 - '@rollup/rollup-linux-x64-musl': 4.52.5 - '@rollup/rollup-openharmony-arm64': 4.52.5 - '@rollup/rollup-win32-arm64-msvc': 4.52.5 - '@rollup/rollup-win32-ia32-msvc': 4.52.5 - '@rollup/rollup-win32-x64-gnu': 4.52.5 - '@rollup/rollup-win32-x64-msvc': 4.52.5 - fsevents: 2.3.3 - - scheduler@0.27.0: {} - - selfsigned@3.0.1: - dependencies: - node-forge: 1.3.1 - - semver@6.3.1: {} - - send@1.2.0: - dependencies: - debug: 4.4.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 2.0.0 - http-errors: 2.0.0 - mime-types: 3.0.1 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.2 - transitivePeerDependencies: - - supports-color - - set-blocking@2.0.0: {} - - setprototypeof@1.2.0: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - source-map-js@1.2.1: {} - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - optional: true - - source-map@0.6.1: - optional: true - - statuses@2.0.1: {} - - statuses@2.0.2: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - style-to-object@1.0.8: - dependencies: - inline-style-parser: 0.2.4 - - supports-preserve-symlinks-flag@1.0.0: {} - - tailwindcss@4.1.16: {} - - tapable@2.2.1: {} - - terser@5.37.0: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.0 - commander: 2.20.3 - source-map-support: 0.5.21 - optional: true - - tinyglobby@0.2.15: - dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - - toidentifier@1.0.1: {} - - typescript@5.8.3: {} - - undici-types@6.20.0: {} - - update-browserslist-db@1.1.1(browserslist@4.24.3): - dependencies: - browserslist: 4.24.3 - escalade: 3.2.0 - picocolors: 1.1.1 - - vite@7.1.12(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0): - dependencies: - esbuild: 0.25.11 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.52.5 - tinyglobby: 0.2.15 - optionalDependencies: - fsevents: 2.3.3 - jiti: 2.6.1 - lightningcss: 1.30.2 - terser: 5.37.0 - - which-module@2.0.1: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - ws@8.18.0: - optional: true - - y18n@4.0.3: {} - - yallist@3.1.1: {} - - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - - zustand@5.0.8(@types/react@19.2.2)(react@19.2.0): - optionalDependencies: - '@types/react': 19.2.2 - react: 19.2.0 diff --git a/packages/user-login/public/MP_verify_NGWvli5lGpEkByyt.txt b/packages/user-login/public/MP_verify_NGWvli5lGpEkByyt.txt deleted file mode 100644 index 486acfa..0000000 --- a/packages/user-login/public/MP_verify_NGWvli5lGpEkByyt.txt +++ /dev/null @@ -1 +0,0 @@ -NGWvli5lGpEkByyt \ No newline at end of file diff --git a/packages/user-login/public/config.js b/packages/user-login/public/config.js deleted file mode 100644 index d18a3a8..0000000 --- a/packages/user-login/public/config.js +++ /dev/null @@ -1,58 +0,0 @@ -export const silkyConfig = { - captchaAppId: '196626989', - wxLogin: { - appid: 'wxea912643e8747b44', - redirect_uri: 'https://kevisual.silkyai.cn/api/wx/login', - }, - wxmpLogin: { - loginUrl: `https://kevisual.xiongxiao.me/root/mini-web/login.html`, - }, - loginWay: ['account', 'wechat', 'phone', 'wechat-mp'], - loginSuccess: '/root/center/', - loginSuccessIsNew: '/root/center/', - beian: '浙ICP备2024137660号-1', -}; - -const currentUrl = new URL(window.location.href); -const redirect = currentUrl.origin + currentUrl.pathname; -export const kevisualConfig = { - loginWay: ['account', 'wechat'], - loginSuccess: '/root/center/', - loginSuccessIsNew: '/root/center/', - wxLogin: { - appid: 'wx9378885c8390e09b', - redirect_uri: redirect, - }, - beian: '浙ICP备2025158778号', - logo: 'https://kevisual.xiongxiao.me/root/center/panda.png', - logoStyle: { - borderRadius: '50%', - marginTop: '10px', - margin: '30px auto', - }, -}; - -const kevisualXiongxiaoConfig = { - ...kevisualConfig, - loginWay: ['account', 'wechat-mp'], - wxLogin: { - appid: 'wxff97d569b1db16b6', - redirect_uri: redirect, - }, - wxmpLogin: { - loginUrl: `${currentUrl.origin}/root/mini-web/login.html`, - }, - logo: 'https://kevisual.xiongxiao.me/root/center/panda.png', - beian: '蜀ICP备16031039号-2', -}; - -const url = new URL(window.location.href); -const isKevisual = url.hostname === 'kevisual.cn'; -const isKevisualXiongxiao = url.hostname === 'kevisual.xiongxiao.me'; -export const config = isKevisual ? kevisualConfig : isKevisualXiongxiao ? kevisualXiongxiaoConfig : silkyConfig; - -if (isKevisual || isKevisualXiongxiao) { - // document.title = '杭州余杭逸文设计工作室'; -} else { - document.title = 'SilkyAI'; -} diff --git a/packages/user-login/src/app.ts b/packages/user-login/src/app.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/user-login/src/assets/index.css b/packages/user-login/src/assets/index.css deleted file mode 100644 index 7df6baa..0000000 --- a/packages/user-login/src/assets/index.css +++ /dev/null @@ -1,16 +0,0 @@ -@import "tailwindcss"; - -@layer components { - .test-loading { - @apply w-20 h-20 bg-gray-300 rounded-full animate-spin; - } -} - -#ai-bot-root { - width: 100%; - height: 100%; - position: fixed; - top: 0; - left: -100px; - z-index: 9999; -} diff --git a/packages/user-login/src/main.tsx b/packages/user-login/src/main.tsx deleted file mode 100644 index cf3cbe2..0000000 --- a/packages/user-login/src/main.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { createRoot } from 'react-dom/client'; -import { App } from './user/index.tsx'; - -// @ts-ignore -createRoot(document.getElementById('root')!).render(); \ No newline at end of file diff --git a/packages/user-login/src/modules/basename.ts b/packages/user-login/src/modules/basename.ts deleted file mode 100644 index c4f3d9e..0000000 --- a/packages/user-login/src/modules/basename.ts +++ /dev/null @@ -1,2 +0,0 @@ -// @ts-ignore -export const basename = DEV_SERVER ? '/' : BASE_NAME; \ No newline at end of file diff --git a/packages/user-login/src/modules/beian/beian.css b/packages/user-login/src/modules/beian/beian.css deleted file mode 100644 index 083c558..0000000 --- a/packages/user-login/src/modules/beian/beian.css +++ /dev/null @@ -1,11 +0,0 @@ -.beian2 { - position: fixed; - z-index: 99; -} - -@media (max-width: 640px) { - .beiann2 { - position: static !important; /* 或者 relative,根据需求修改 */ - } -} - diff --git a/packages/user-login/src/modules/beian/beian.tsx b/packages/user-login/src/modules/beian/beian.tsx deleted file mode 100644 index 3f94ae2..0000000 --- a/packages/user-login/src/modules/beian/beian.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import clsx from 'clsx'; -import './beian.css'; -type Props = { - className?: string; - text?: string; -}; -export const Beian = (props: Props) => { - return ( -
- - {props.text} - -
- ); -}; diff --git a/packages/user-login/src/modules/message.ts b/packages/user-login/src/modules/message.ts deleted file mode 100644 index 1e09124..0000000 --- a/packages/user-login/src/modules/message.ts +++ /dev/null @@ -1,4 +0,0 @@ -// import { message } from '@kevisual/system-ui/dist/message'; -import { toast } from 'react-toastify'; - -export const message = toast; diff --git a/packages/user-login/src/modules/query.ts b/packages/user-login/src/modules/query.ts deleted file mode 100644 index 0657858..0000000 --- a/packages/user-login/src/modules/query.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { QueryClient } from '@kevisual/query'; -import { QueryLoginBrowser } from '@kevisual/query-login'; - -export const query = new QueryClient(); - -export const queryLogin = new QueryLoginBrowser({ - query: query as any, -}); - -query.after(async (res, ctx) => { - if (res.code === 401) { - if (query.stop) { - return { - code: 500, - success: false, - message: '登录已过期.', - }; - } - query.stop = true; - const result = await queryLogin.afterCheck401ToRefreshToken(res, ctx); - query.stop = false; - return result; - } - return res; -}); diff --git a/packages/user-login/src/user/Info.tsx b/packages/user-login/src/user/Info.tsx deleted file mode 100644 index f7939f1..0000000 --- a/packages/user-login/src/user/Info.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import React, { useEffect, useLayoutEffect, useState } from 'react'; -import { Layout, MainLayout } from './layout/UserLayout'; -import { useUserStore } from './store'; -import { message } from '@/modules/message'; -export const Info = () => { - return ( - - - - - - ); -}; -export const ProfileForm: React.FC = () => { - const [nickname, setNickname] = useState(''); - const [name, setName] = useState(''); - const [avatar, setAvatar] = useState(null); - const userStore = useUserStore(); - const handleAvatarChange = (e: React.ChangeEvent) => { - if (e.target.files && e.target.files[0]) { - const file = e.target.files[0]; - // 如果文件大于 2MB,提示用户 - if (file.size > 2 * 1024 * 1024) { - message.error('文件大小不能超过 2MB'); - return; - } - - const reader = new FileReader(); - reader.onload = () => { - setAvatar(reader.result as string); - }; - reader.readAsDataURL(file); - } - }; - - const handleSubmit = () => { - // alert(`昵称: ${nickname}, 姓名: ${name}`) - userStore.updateUser({ - nickname, - data: { - personalname: name, - }, - avatar, - }); - }; - useLayoutEffect(() => { - userStore.getUpdateUser(); - }, []); - useEffect(() => { - if (userStore.data) { - setNickname(userStore.data.nickname); - setName(userStore.data?.data?.personalname); - setAvatar(userStore.data.avatar); - } - }, [userStore.data]); - - return ( -
-

完善个人信息

-

请设置您的基本信息

- - {/* Avatar Section */} -
- -
- - {/* Form Fields */} -
- - setNickname(e.target.value)} - className='w-full border-[#FBBF24] rounded-lg p-2 border focus:outline-none focus:ring-2 focus:ring-[#F39800]' - /> -
- -
- - setName(e.target.value)} - className='w-full border-[#FBBF24] rounded-lg p-2 border focus:outline-none focus:ring-2 focus:ring-[#F39800]' - /> -
- - {/* Submit Button */} - -
- ); -}; diff --git a/packages/user-login/src/user/index.css b/packages/user-login/src/user/index.css deleted file mode 100644 index fc889d4..0000000 --- a/packages/user-login/src/user/index.css +++ /dev/null @@ -1,13 +0,0 @@ -@media (min-width: 1000px) and (max-width: 1440px) { - .login-main { - /* background-color: red !important; */ - scale: 0.8; - } -} - -@media (min-width: 1500px) and (max-width: 2000px) { - .login-main { - /* background-color: red !important; */ - scale: 1.2; - } -} diff --git a/packages/user-login/src/user/index.tsx b/packages/user-login/src/user/index.tsx deleted file mode 100644 index 73930e0..0000000 --- a/packages/user-login/src/user/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import './index.css'; -import { Login } from './login'; -import { ToastContainer } from 'react-toastify'; -export const App = () => { - return ( - <> - - - - ); -}; diff --git a/packages/user-login/src/user/layout/UserLayout.tsx b/packages/user-login/src/user/layout/UserLayout.tsx deleted file mode 100644 index f144530..0000000 --- a/packages/user-login/src/user/layout/UserLayout.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import clsx from 'clsx'; - -import { Beian } from '@/modules/beian/beian'; -import { useUserStore } from '../store'; -import { useShallow } from 'zustand/shallow'; -import { useEffect } from 'react'; -type Props = { - children?: React.ReactNode; - className?: string; -}; -export const Layout = (props: Props) => { - return ( -
-
{props.children}
-
- ); -}; - -export const MainLayout = (props: Props) => { - const config = useUserStore((state) => state.config); - return ( -
- {props.children} -

- 登录即表示同意 服务条款隐私政策 -

- -
- ); -}; - -export const LoginWrapper = (props: Props) => { - const config = useUserStore((state) => state.config); - const loginWay = config?.loginWay || ['account']; - const store = useUserStore( - useShallow((state) => { - return { - loginByWechat: state.loginByWechat, - }; - }), - ); - const checkWechat = () => { - const url = new URL(window.location.href); - const code = url.searchParams.get('code'); - const state = url.searchParams.get('state'); - if (code && state) { - store.loginByWechat(code); - } - }; - useEffect(() => { - checkWechat(); - }, []); - return ( - - -
- -
-
欢迎回来
- {loginWay.length > 1 &&
请选择登陆方式
} -
{props.children}
-
-
- ); -}; diff --git a/packages/user-login/src/user/login/Login.tsx b/packages/user-login/src/user/login/Login.tsx deleted file mode 100644 index e8d4227..0000000 --- a/packages/user-login/src/user/login/Login.tsx +++ /dev/null @@ -1,342 +0,0 @@ -import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'; -import { useUserStore } from '../store'; -import { setWxerwma, wxId } from '@/wx/ws-login.ts'; -import { checkCaptcha } from '@/wx/tencent-captcha.ts'; -import { dynimicLoadTcapTcha } from '@/wx/load-js.ts'; -import { message } from '@/modules/message'; -import { useShallow } from 'zustand/react/shallow'; -import { WeChatMpLogin } from './modules/WeChatMpLogin'; -const WeChatLogin: React.FC = () => { - const userStore = useUserStore( - useShallow((state) => { - return { config: state.config! }; - }), - ); - useEffect(() => { - setWxerwma({ - ...userStore.config.wxLogin, - }); - }, []); - - return
; -}; - -type VerificationCodeInputProps = { - onGetCode: () => void; - verificationCode: string; - setVerificationCode: (value: string) => void; -}; -const VerificationCodeInput = forwardRef(({ onGetCode, verificationCode, setVerificationCode }: VerificationCodeInputProps, ref) => { - // const [verificationCode, setVerificationCode] = useState('') - const [isCounting, setIsCounting] = useState(false); - const [countdown, setCountdown] = useState(60); - useImperativeHandle(ref, () => ({ - isCounting, - setIsCounting, - setCountdown, - })); - const handleGetCode = () => { - if (!isCounting) { - // setIsCounting(true) - // setCountdown(60) - onGetCode(); // 调用父组件传入的获取验证码逻辑 - } - }; - - useEffect(() => { - let timer; - if (isCounting) { - timer = setInterval(() => { - setCountdown((prev) => { - if (prev <= 1) { - setIsCounting(false); - clearInterval(timer); - return 60; - } - return prev - 1; - }); - }, 1000); - } - return () => clearInterval(timer); - }, [isCounting]); - - return ( -
- -
- setVerificationCode(e.target.value)} - /> - -
-
- ); -}); - -function PhoneNumberValidation({ phoneNumber, setPhoneNumber }) { - // const [phoneNumber, setPhoneNumber] = useState('') - const [errorMessage, setErrorMessage] = useState(''); - - const validatePhoneNumber = (number) => { - // 假设手机号的格式为中国的11位数字 - const phoneRegex = /^1[3-9]\d{9}$/; - if (!phoneRegex.test(number)) { - setErrorMessage('请输入有效的手机号'); - } else { - setErrorMessage(''); - } - }; - - const handleChange = (e) => { - const value = e.target.value; - setPhoneNumber(value); - validatePhoneNumber(value); - }; - - return ( -
- - - {errorMessage &&

{errorMessage}

} - {!errorMessage &&

请输入11位手机号

} -
- ); -} - -function AccountLogin({ accountName, setAccountName, password, setPassword }) { - const [errorMessage, setErrorMessage] = useState(''); - - const validateAccountName = (name) => { - if (name.length < 3) { - setErrorMessage('账户名至少需要3个字符'); - } else { - setErrorMessage(''); - } - }; - - const handleAccountChange = (e) => { - const value = e.target.value; - setAccountName(value); - validateAccountName(value); - }; - - const handlePasswordChange = (e) => { - setPassword(e.target.value); - }; - const onTestAccountLogin = () => { - setAccountName('demo'); - setPassword('123456'); - }; - return ( -
- - - {errorMessage &&

{errorMessage}

} - {!errorMessage &&

账户名至少需要3个字符

} - - - - -
{ - onTestAccountLogin(); - }}> - 试用账号登录 -
-
- ); -} - -const LoginForm: React.FC = () => { - const [phoneNumber, setPhoneNumber] = useState(''); - const [verificationCode, setVerificationCode] = useState(''); - const [accountName, setAccountName] = useState(''); - const [password, setPassword] = useState(''); - const [activeTab, setActiveTab] = useState<'phone' | 'wechat' | 'wechat-mp' | 'account'>('phone'); - const userStore = useUserStore( - useShallow((state) => { - return { - config: state.config! || {}, - getCode: state.getCode, - login: state.login, - loginByAccount: state.loginByAccount, - }; - }), - ); - const ref = useRef(null); - const handleGetCode = async () => { - const loaded = await dynimicLoadTcapTcha(); - if (!loaded) { - message.error('验证码加载失败'); - return; - } - const captcha = await checkCaptcha(userStore.config.captchaAppId); - if (captcha.ret !== 0) { - message.error('验证码发送失败'); - return; - } - ref.current.setIsCounting(true); - ref.current.setCountdown(60); - userStore.getCode(phoneNumber, captcha); - }; - useEffect(() => { - dynimicLoadTcapTcha(); - if (userStore.config.loginWay?.length > 0) { - setActiveTab(userStore.config.loginWay[0]); - } - }, [userStore.config.loginWay]); - const handleLogin = () => { - // alert(`登录中:手机号: ${phoneNumber}, 验证码: ${verificationCode}`) - userStore.login(phoneNumber, verificationCode); - }; - const inLoginWay = (way: string) => { - const loginWay = userStore.config?.loginWay || []; - return loginWay.includes(way); - }; - const handleAccountLogin = () => { - if (!accountName || !password) { - message.error('请输入账户名和密码'); - return; - } - userStore.loginByAccount(accountName, password); - }; - useListenEnter({ active: activeTab === 'phone', handleLogin }); - useListenEnter({ active: activeTab === 'account', handleLogin: handleAccountLogin }); - const tab = useMemo(() => { - const phoneCom = ( - - ); - const wechatCom = ( - - ); - const wechatMpCom = ( - - ); - const accountCom = ( - - ); - const coms: React.ReactNode[] = []; - for (const way of userStore.config.loginWay) { - if (way === 'phone') { - coms.push(phoneCom); - } else if (way === 'wechat') { - coms.push(wechatCom); - } else if (way === 'account') { - coms.push(accountCom); - } else if (way === 'wechat-mp') { - coms.push(wechatMpCom); - } - } - return coms; - }, [userStore.config.loginWay, activeTab]); - return ( -
- {/* Tabs */} -
{tab}
- -
- {/* Phone Login Form */} - {activeTab === 'phone' && inLoginWay('phone') && ( -
- - - -
- )} - - {/* WeChat Login Placeholder */} - {activeTab === 'wechat' && inLoginWay('wechat') && ( -
- -
- )} - {activeTab === 'wechat-mp' && inLoginWay('wechat-mp') && ( -
- -
- )} - {activeTab === 'account' && inLoginWay('account') && ( -
- - -
- )} -
-
- ); -}; - -export default LoginForm; - -export const useListenEnter = (opts?: { active: boolean; handleLogin: () => void }) => { - useEffect(() => { - if (!opts?.active) { - return; - } - const handleEnter = (e: KeyboardEvent) => { - if (e.key === 'Enter') { - opts?.handleLogin?.(); - } - }; - window.addEventListener('keydown', handleEnter); - return () => { - window.removeEventListener('keydown', handleEnter); - }; - }, [opts?.active, opts?.handleLogin]); -}; diff --git a/packages/user-login/src/user/login/index.tsx b/packages/user-login/src/user/login/index.tsx deleted file mode 100644 index ecab485..0000000 --- a/packages/user-login/src/user/login/index.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { useEffect, useLayoutEffect, useState } from 'react'; -import { Layout, LoginWrapper, MainLayout } from '../layout/UserLayout'; -import LoginForm from './Login'; -import { useUserStore } from '../store'; -import { useShallow } from 'zustand/react/shallow'; -import { Suspense } from 'react'; - -export const Login = () => { - const userStore = useUserStore( - useShallow((state) => { - return { - config: state.config, - setConfig: state.setConfig, - loadedConfig: state.loadedConfig, - setLoadedConfig: state.setLoadedConfig, - queryCheck: state.queryCheck, - }; - }), - ); - useLayoutEffect(() => { - fetchConfig(); - userStore.queryCheck(); - }, []); - const fetchConfig = async () => { - try { - const res = await fetch('./config.js'); - const configScript = await res.text(); - const blob = new Blob([configScript], { type: 'application/javascript' }); - const moduleUrl = URL.createObjectURL(blob); - const module = await import(/* @vite-ignore */ moduleUrl); - URL.revokeObjectURL(moduleUrl); // Clean up the object URL - userStore.setConfig(module.config); - } catch (error) { - console.error('Failed to load config:', error); - } - }; - - return ( - }> - {userStore.loadedConfig ? ( - - - - ) : ( -
Loading...
- )} -
- ); -}; diff --git a/packages/user-login/src/user/login/modules/WeChatMpLogin.tsx b/packages/user-login/src/user/login/modules/WeChatMpLogin.tsx deleted file mode 100644 index 265c625..0000000 --- a/packages/user-login/src/user/login/modules/WeChatMpLogin.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { useUserStore, Config } from '@/user/store'; -import { useShallow } from 'zustand/shallow'; -import QRCode, { QRCodeToDataURLOptions } from 'qrcode'; -import { message } from '@/modules/message'; -import { useEffect, useRef, useState } from 'react'; -import { query, queryLogin } from '@/modules/query'; -const useCreateLoginQRCode = (config: Config) => { - const url = new URL(window.location.href); - const redirect = url.searchParams.get('redirect'); - const loginSuccessUrl = config.loginSuccess; - const redirectURL = redirect ? decodeURIComponent(redirect) : loginSuccessUrl; - var opts: QRCodeToDataURLOptions = { - errorCorrectionLevel: 'H', - type: 'image/jpeg', - margin: 1, - width: 300, - }; - let timer = useRef(null); - const loginUrl = config?.wxmpLogin?.loginUrl || ''; - if (!loginUrl) { - message.error('没有配置微信登陆配置'); - return; - } - const createQrcode = async (state: string) => { - const text = `${loginUrl}?state=${state}`; - var img = document.getElementById('qrcode')! as HTMLCanvasElement; - // img.src = url; - const res = await QRCode.toDataURL(img, text, opts); - }; - const checkLogin = async (state: string) => { - const res = await fetch(`/api/router?path=wx&key=checkLogin&state=${state}`).then((res) => res.json()); - if (res.code === 200) { - console.log(res); - const token = res.data; - if (token) { - localStorage.setItem('token', token.accessToken); - await queryLogin.setLoginToken(token); - } - setTimeout(() => { - window.location.href = redirectURL; - }, 1000); - } else { - timer.current = setTimeout(() => { - checkLogin(state); - }, 2000); - } - }; - useEffect(() => { - // 随机生成一个state - const state = Math.random().toString(36).substring(2, 15); - createQrcode(state); - checkLogin(state); - const timer2 = setInterval(() => { - const state = Math.random().toString(36).substring(2, 15); - clearTimeout(timer.current); // 清除定时器 - createQrcode(state); // 90秒后更新二维码 - checkLogin(state); - }, 90000); - return () => { - clearInterval(timer.current); - clearInterval(timer2); - }; - }, []); - return { createQrcode }; -}; -export const WeChatMpLogin = () => { - const userStore = useUserStore( - useShallow((state) => { - return { config: state.config! }; - }), - ); - useCreateLoginQRCode(userStore.config); - - return ( -
- -
- ); -}; diff --git a/packages/user-login/src/user/module/load-js.ts b/packages/user-login/src/user/module/load-js.ts deleted file mode 100644 index a02c12c..0000000 --- a/packages/user-login/src/user/module/load-js.ts +++ /dev/null @@ -1,21 +0,0 @@ -// - -export const dynimicLoadTcapTcha = async (): Promise => { - return new Promise((resolve, reject) => { - const script = document.createElement('script') - script.type = 'text/javascript' - script.id = 'tencent-captcha' - if (document.getElementById('tencent-captcha')) { - resolve(true) - return - } - script.src = 'https://turing.captcha.qcloud.com/TCaptcha.js' - script.onload = () => { - resolve(true) - } - script.onerror = (error) => { - reject(error) - } - document.body.appendChild(script) - }) -} diff --git a/packages/user-login/src/user/store/index.ts b/packages/user-login/src/user/store/index.ts deleted file mode 100644 index 3725b1f..0000000 --- a/packages/user-login/src/user/store/index.ts +++ /dev/null @@ -1,251 +0,0 @@ -import { query, queryLogin } from '@/modules/query'; -import { TencentCaptcha } from '@/wx/tencent-captcha.ts'; -import { message } from '@/modules/message'; -import { create } from 'zustand'; - -export type Config = { - loginWay: any[]; - wxLogin: { - appid: string; - redirect_uri: string; - }; - wxmpLogin: { - loginUrl?: string; // 微信公众号的网页授权登陆 - appid?: string; // 微信公众号的appid - redirect_uri?: string; // 微信公众号的网页授权登陆 - }; - captchaAppId: string; - loginSuccess: string; - loginSuccessIsNew: string; - logo: string; - logoStyle: { - borderRadius: string; - width?: string; - height?: string; - }; - beian: string; -}; -export const inIframeToDo = async (config?: Config) => { - const isInIframe = window !== window.parent && !window.opener; - - if (isInIframe && config) { - try { - // 检查是否同源 - const isSameOrigin = (() => { - try { - // 尝试访问父窗口的 location.origin,如果能访问则是同源 - return window.parent.location.origin === window.location.origin; - } catch (e) { - // 如果出现跨域错误,则不是同源 - return false; - } - })(); - const isLocalhost = window.location.hostname === 'localhost'; - const isKevisual = window.location.hostname.includes('kevisual'); - if (isSameOrigin || isLocalhost || isKevisual) { - // 同源情况下,可以直接向父窗口传递配置 - window.parent.postMessage( - { - type: 'kevisual-login', - data: config, - }, - window.location.origin, - ); - - console.log('已向父窗口传递登录配置信息'); - } - } catch (error) { - console.error('向父窗口传递配置信息失败:', error); - } - } - - return isInIframe; -}; -export const redirectToSuccess = async (config: Config) => { - const href = location.href; - const url = new URL(href); - const check = await inIframeToDo(config); - if (check) { - return; - } - - const redirect = url.searchParams.get('redirect'); - if (redirect) { - const href = decodeURIComponent(redirect); - window.open(href, '_self'); - } - await new Promise((resolve) => { - setTimeout(() => { - resolve(true); - }, 1000); - }); - if (config?.loginSuccess) { - location.href = config?.loginSuccess; - } else { - location.href = '/'; - } -}; - -type UserStore = { - isAuthenticated: boolean; - qrCodeUrl: string; - checkAuthStatus: () => void; - getCode: (phone: string, captcha: TencentCaptcha) => void; - /** - * 手机号登录 - * @param phone 手机号 - * @param code 验证码 - */ - login: (phone: string, code: string) => void; - updateUser: (data: any, opts?: { needRedirect?: boolean }) => void; - getUpdateUser: () => void; - data: any; - setData: (data: any) => void; - config: Config | null; - setConfig: (config: any) => void; - loadedConfig: boolean; - setLoadedConfig: (loadedConfig: boolean) => void; - /** - * 账号密码登录 - * @param username 账号 - * @param password 密码 - */ - loginByAccount: (username: string, password: string) => void; - /** - * 检查是否需要跳转, 插件登陆 - */ - queryCheck: () => void; - loginByWechat: (code: string) => void; -}; -export const useUserStore = create((set, get) => ({ - isAuthenticated: false, - qrCodeUrl: '', - checkAuthStatus: () => { - // - }, - getCode: async (phone, captcha) => { - const res = await query.post({ - path: 'sms', - key: 'send', - data: { - phone, - captcha, - }, - }); - if (res.code === 200) { - // do something - message.success('验证码发送成功'); - } else { - message.error(res.message || '验证码发送失败'); - } - }, - login: async (phone, code) => { - const config = get().config!; - const res = await query.post({ - path: 'sms', - key: 'login', - data: { - phone, - code, - }, - }); - if (res.code === 200) { - message.success('登录成功'); - set({ isAuthenticated: true }); - redirectToSuccess(config); - } else { - message.error(res.message || '登录失败'); - } - }, - updateUser: async (data, opts) => { - const config = get().config!; - const res = await query.post({ - path: 'user', - key: 'updateInfo', - data, - }); - if (res.code === 200) { - message.success('更新成功'); - if (opts?.needRedirect) { - setTimeout(() => { - location.href = config?.loginSuccess; - }, 1000); - } - } else { - message.error(res.message || '更新失败'); - } - }, - getUpdateUser: async () => { - const res = await query.post({ - path: 'user', - key: 'getUpdateInfo', - }); - if (res.code === 200) { - set({ data: res.data }); - } else { - message.error(res.message || '获取用户信息失败'); - } - }, - data: {}, - setData: (data) => set({ data }), - loadedConfig: false, - setLoadedConfig: (loadedConfig) => set({ loadedConfig }), - config: null, - setConfig: (config) => set({ config, loadedConfig: true }), - loginByAccount: async (username, password) => { - const config = get().config!; - const isEmail = username.includes('@'); - const data: any = { password }; - if (isEmail) { - data.email = username; - } else { - data.username = username; - } - const res = await queryLogin.login(data); - if (res.code === 200) { - message.success('登录成功'); - set({ isAuthenticated: true }); - redirectToSuccess(config); - } else { - message.error(res.message || '登录失败'); - } - }, - queryCheck: async () => { - // const - const userCheck = 'user-check'; - const url = new URL(location.href); - const redirect = url.searchParams.get('redirect'); - const redirectUrl = redirect ? decodeURIComponent(redirect) : ''; - const checkKey = url.searchParams.get(userCheck); - if (redirect && checkKey) { - // 通过refresh_token 刷新token - const me = await queryLogin.getMe(); - if (me.code === 200) { - message.success('登录插件中...'); - const token = await queryLogin.cacheStore.getAccessToken(); - const newRedirectUrl = new URL(redirectUrl); - newRedirectUrl.searchParams.set('token', token + ''); - setTimeout(() => { - window.open(newRedirectUrl.toString(), '_blank'); - }, 2000); - return; - } - // 刷新token失败,登陆页自己跳转 - } - console.log('checkKey', checkKey, redirectUrl); - }, - loginByWechat: async (code) => { - const config = get().config!; - if (!code) { - message.error('code is required'); - return; - } - const res = await queryLogin.loginByWechat({ code }); - if (res.code === 200) { - message.success('登录成功'); - redirectToSuccess(config); - } else { - message.error(res.message || '登录失败'); - } - }, -})); diff --git a/packages/user-login/src/vite-env.d.ts b/packages/user-login/src/vite-env.d.ts deleted file mode 100644 index d4db9f1..0000000 --- a/packages/user-login/src/vite-env.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/// -type SimpleObject = { - [key: string | number]: any; -}; - -declare let DEV_SERVER: boolean; -declare let BASE_NAME: string; \ No newline at end of file diff --git a/packages/user-login/src/wx/load-js.ts b/packages/user-login/src/wx/load-js.ts deleted file mode 100644 index a02c12c..0000000 --- a/packages/user-login/src/wx/load-js.ts +++ /dev/null @@ -1,21 +0,0 @@ -// - -export const dynimicLoadTcapTcha = async (): Promise => { - return new Promise((resolve, reject) => { - const script = document.createElement('script') - script.type = 'text/javascript' - script.id = 'tencent-captcha' - if (document.getElementById('tencent-captcha')) { - resolve(true) - return - } - script.src = 'https://turing.captcha.qcloud.com/TCaptcha.js' - script.onload = () => { - resolve(true) - } - script.onerror = (error) => { - reject(error) - } - document.body.appendChild(script) - }) -} diff --git a/packages/user-login/src/wx/tencent-captcha.ts b/packages/user-login/src/wx/tencent-captcha.ts deleted file mode 100644 index eaed8ce..0000000 --- a/packages/user-login/src/wx/tencent-captcha.ts +++ /dev/null @@ -1,70 +0,0 @@ -// 定义回调函数 -export function callback(res) { - // 第一个参数传入回调结果,结果如下: - // ret Int 验证结果,0:验证成功。2:用户主动关闭验证码。 - // ticket String 验证成功的票据,当且仅当 ret = 0 时 ticket 有值。 - // CaptchaAppId String 验证码应用ID。 - // bizState Any 自定义透传参数。 - // randstr String 本次验证的随机串,后续票据校验时需传递该参数。 - console.log('callback:', res); - // res(用户主动关闭验证码)= {ret: 2, ticket: null} - // res(验证成功) = {ret: 0, ticket: "String", randstr: "String"} - // res(请求验证码发生错误,验证码自动返回terror_前缀的容灾票据) = {ret: 0, ticket: "String", randstr: "String", errorCode: Number, errorMessage: "String"} - // 此处代码仅为验证结果的展示示例,真实业务接入,建议基于ticket和errorCode情况做不同的业务处理 - if (res.ret === 0) { - // 复制结果至剪切板 - var str = '【randstr】->【' + res.randstr + '】 【ticket】->【' + res.ticket + '】'; - var ipt = document.createElement('input'); - ipt.value = str; - document.body.appendChild(ipt); - ipt.select(); - document.body.removeChild(ipt); - alert('1. 返回结果(randstr、ticket)已复制到剪切板,ctrl+v 查看。 2. 打开浏览器控制台,查看完整返回结果。'); - } -} -export type TencentCaptcha = { - actionDuration?: number; - appid?: string; - bizState?: any; - randstr?: string; - ret: number; - sid?: string; - ticket?: string; - errorCode?: number; - errorMessage?: string; - verifyDuration?: number; -}; -// 定义验证码触发事件 -export const checkCaptcha = (captchaAppId: string): Promise => { - return new Promise((resolve, reject) => { - const callback = (res: TencentCaptcha) => { - console.log('callback:', res); - if (res.ret === 0) { - resolve(res); - } else { - reject(res); - } - }; - const appid = captchaAppId; - try { - // 生成一个验证码对象 - // CaptchaAppId:登录验证码控制台,从【验证管理】页面进行查看。如果未创建过验证,请先新建验证。注意:不可使用客户端类型为小程序的CaptchaAppId,会导致数据统计错误。 - //callback:定义的回调函数 - // @ts-ignore - var captcha = new TencentCaptcha(appid, callback, {}); - // 调用方法,显示验证码 - captcha.show(); - } catch (error) { - // 加载异常,调用验证码js加载错误处理函数 - var ticket = 'terror_1001_' + appid + '_' + Math.floor(new Date().getTime() / 1000); - // 生成容灾票据或自行做其它处理 - callback({ - ret: 0, - randstr: '@' + Math.random().toString(36).substring(2), - ticket: ticket, - errorCode: 1001, - errorMessage: 'jsload_error', - }); - } - }); -}; diff --git a/packages/user-login/src/wx/ws-login.ts b/packages/user-login/src/wx/ws-login.ts deleted file mode 100644 index 0f30531..0000000 --- a/packages/user-login/src/wx/ws-login.ts +++ /dev/null @@ -1,44 +0,0 @@ -type WxLoginConfig = { - redirect_uri?: string; - appid?: string; - scope?: string; - state?: string; - style?: string; -}; -export const createLogin = async (config?: WxLoginConfig) => { - let redirect_uri = config?.redirect_uri; - const { appid } = config || {}; - if (!redirect_uri) { - redirect_uri = new URL(window.location.href).origin + '/api/s1/wx/login'; - } - if (!appid) { - console.error('appid is not cant be empty'); - return; - } - // @ts-ignore - const obj = new WxLogin({ - self_redirect: false, - id: 'weixinLogin', // 需要显示的容器id - appid: appid, // 微信开放平台appid wx******* - scope: 'snsapi_login', // 网页默认即可 snsapi_userinfo - redirect_uri: encodeURIComponent(redirect_uri), // 授权成功后回调的url - state: Math.ceil(Math.random() * 1000), // 可设置为简单的随机数加session用来校验 - stylelite: true, // 是否使用简洁模式 - }); - return obj; -}; -export const wxId = 'weixinLogin'; -export function setWxerwma(config?: WxLoginConfig) { - const s = document.createElement('script'); - s.type = 'text/javascript'; - s.src = '//res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js'; - s.id = 'weixinLogin-js'; - if (document.getElementById('weixinLogin-js')) { - createLogin(config); - return; - } - const wxElement = document.body.appendChild(s); - wxElement.onload = function () { - createLogin(config); - }; -} diff --git a/packages/user-login/tsconfig.json b/packages/user-login/tsconfig.json deleted file mode 100644 index e770c3a..0000000 --- a/packages/user-login/tsconfig.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "compilerOptions": { - "jsx": "react-jsx", - "target": "ES2020", - "useDefineForClassFields": true, - "lib": [ - "ES2020", - "DOM", - "DOM.Iterable" - ], - "module": "ESNext", - "skipLibCheck": true, - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "isolatedModules": true, - "moduleDetection": "force", - "noEmit": true, - "baseUrl": "./", - "typeRoots": [ - "node_modules/@types", - "node_modules/@kevisual/types", - ], - "paths": { - "@/*": [ - "src/*" - ] - }, - /* Linting */ - "strict": true, - "noImplicitAny": false, - "noUnusedLocals": false, - "noUnusedParameters": false, - "noFallthroughCasesInSwitch": true - }, - "include": [ - "src", - "typings.d.ts", - "snippets" - ] -} \ No newline at end of file diff --git a/packages/user-login/vite.config.mjs b/packages/user-login/vite.config.mjs deleted file mode 100644 index 23919c0..0000000 --- a/packages/user-login/vite.config.mjs +++ /dev/null @@ -1,50 +0,0 @@ -import { defineConfig } from 'vite'; -import basicSsl from '@vitejs/plugin-basic-ssl'; -// import react from '@vitejs/plugin-react'; -import dayjs from 'dayjs'; -import path from 'path'; -import tailwindcss from '@tailwindcss/vite'; -import pkgs from './package.json' with { type: 'json' }; - -const isDev = process.env.NODE_ENV === 'development'; -const isWebDev = process.env.WEB_DEV === 'true'; -const BUILD_TIME = dayjs().format('YYYY-MM-DD HH:mm:ss'); -const basename = pkgs.basename; -let plugins = [tailwindcss()]; - -if (!isWebDev) { - // 在bolt的web开发环境下不需要ssl - plugins.push(basicSsl()); -} - -export default defineConfig({ - plugins: plugins, - resolve: { - alias: { - '@': path.resolve(__dirname, './src'), - }, - }, - base: isDev ? '/' : basename, - define: { - DEV_SERVER: JSON.stringify(isDev), - BUILD_TIME: JSON.stringify(BUILD_TIME), - BASE_NAME: JSON.stringify(basename), - }, - optimizeDeps: { - // exclude: ['react'], // 排除 react 和 react-dom 以避免打包 - }, - // esbuild: { - // jsxFactory: 'h', - // jsxFragment: 'Fragment', - // }, - server: { - port: 6025, - host: '0.0.0.0', - proxy: { - '/api': { - target: 'https://kevisual.xiongxiao.me', - changeOrigin: true, - }, - }, - }, -}); diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml deleted file mode 100644 index 88da882..0000000 --- a/pnpm-workspace.yaml +++ /dev/null @@ -1,2 +0,0 @@ -packages: - - "packages/user-login" \ No newline at end of file