From 00b9e0ebc0b6b8d9f3c9aa6d4f6d2f3c55e89a62 Mon Sep 17 00:00:00 2001 From: chakcy <947105045@qq.com> Date: Sun, 26 Apr 2026 10:20:32 +0800 Subject: [PATCH] =?UTF-8?q?modify:=20=E6=9B=B4=E6=96=B0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.toml | 2 + public/config.toml | 2 + public/main.py | 2 +- src/chongming-web/package-lock.json | 691 +++++++++++++----- src/chongming-web/package.json | 8 +- src/chongming-web/src/App.vue | 111 +-- .../src/api/generated/client.gen.ts | 16 + .../src/api/generated/client/client.gen.ts | 298 ++++++++ .../src/api/generated/client/index.ts | 25 + .../src/api/generated/client/types.gen.ts | 215 ++++++ .../src/api/generated/client/utils.gen.ts | 316 ++++++++ .../src/api/generated/core/ApiError.ts | 25 - .../api/generated/core/ApiRequestOptions.ts | 17 - .../src/api/generated/core/ApiResult.ts | 11 - .../api/generated/core/CancelablePromise.ts | 131 ---- .../src/api/generated/core/OpenAPI.ts | 32 - .../src/api/generated/core/auth.gen.ts | 41 ++ .../api/generated/core/bodySerializer.gen.ts | 82 +++ .../src/api/generated/core/params.gen.ts | 169 +++++ .../api/generated/core/pathSerializer.gen.ts | 171 +++++ .../generated/core/queryKeySerializer.gen.ts | 117 +++ .../src/api/generated/core/request.ts | 322 -------- .../generated/core/serverSentEvents.gen.ts | 242 ++++++ .../src/api/generated/core/types.gen.ts | 104 +++ .../src/api/generated/core/utils.gen.ts | 140 ++++ src/chongming-web/src/api/generated/index.ts | 26 +- .../generated/models/HTTPValidationError.ts | 9 - .../generated/models/RefreshTokenResponse.ts | 12 - .../src/api/generated/models/TaskRequest.ts | 9 - .../src/api/generated/models/TodoCreate.ts | 10 - .../src/api/generated/models/TodoRead.ts | 11 - .../src/api/generated/models/TodoUpdate.ts | 10 - .../src/api/generated/models/TokenResponse.ts | 15 - .../src/api/generated/models/UserCreate.ts | 17 - .../src/api/generated/models/UserLogin.ts | 9 - .../src/api/generated/models/UserRead.ts | 17 - .../api/generated/models/ValidationError.ts | 12 - .../src/api/generated/sdk.gen.ts | 166 +++++ .../services/AuthenticationService.ts | 109 --- .../api/generated/services/DefaultService.ts | 42 -- .../src/api/generated/services/TodoService.ts | 118 --- .../src/api/generated/types.gen.ts | 644 ++++++++++++++++ src/chongming-web/src/assets/base.css | 86 --- src/chongming-web/src/assets/main.css | 35 - .../src/components/HelloWorld.vue | 41 -- .../src/components/TheWelcome.vue | 95 --- .../src/components/WelcomeItem.vue | 87 --- .../src/components/icons/IconCommunity.vue | 7 - .../components/icons/IconDocumentation.vue | 7 - .../src/components/icons/IconEcosystem.vue | 7 - .../src/components/icons/IconSupport.vue | 7 - .../src/components/icons/IconTooling.vue | 19 - src/chongming-web/src/main.ts | 20 +- src/chongming-web/src/router/index.ts | 43 +- src/chongming-web/src/stores/auth.ts | 77 ++ src/chongming-web/src/stores/todo.ts | 69 ++ src/chongming-web/src/views/AboutView.vue | 15 - src/chongming-web/src/views/HomeView.vue | 9 - src/chongming-web/src/views/LoginView.vue | 58 ++ src/chongming-web/src/views/RegisterView.vue | 61 ++ src/chongming-web/src/views/TodoView.vue | 245 +++++++ src/chongming-web/tsconfig.app.json | 18 +- src/chongming/app/__init__.py | 41 +- src/chongming/app/api/deps.py | 2 +- src/chongming/app/api/routers/auth.py | 82 ++- src/chongming/app/core/config.py | 1 + src/chongming/app/core/logger.py | 44 +- src/chongming/app/model/http_error.py | 11 + src/chongming/app/model/user.py | 13 +- src/chongming/app/service/auth.py | 3 +- src/chongming/app/service/uploads.py | 1 - src/chongming/app/task/__init__.py | 3 +- src/chongming/app/task/dev_init_db.py | 8 +- src/chongming/scripts/build.py | 7 + .../core/mqtt.py => plugins/jwt/__init__.py} | 0 .../app/core => plugins/jwt}/jwt_cache.py | 15 +- .../websocket.py => plugins/mqtt/__init__.py} | 0 src/plugins/mqtt/mqtt.py | 0 src/plugins/scheduler/__init__.py | 0 .../core => plugins/scheduler}/scheduler.py | 42 +- src/plugins/websocket/__init__.py | 0 src/plugins/websocket/websocket.py | 0 .../283173713eda4b60b0b338d245f088b7.jpg | Bin 0 -> 472768 bytes 83 files changed, 4050 insertions(+), 1755 deletions(-) create mode 100644 src/chongming-web/src/api/generated/client.gen.ts create mode 100644 src/chongming-web/src/api/generated/client/client.gen.ts create mode 100644 src/chongming-web/src/api/generated/client/index.ts create mode 100644 src/chongming-web/src/api/generated/client/types.gen.ts create mode 100644 src/chongming-web/src/api/generated/client/utils.gen.ts delete mode 100644 src/chongming-web/src/api/generated/core/ApiError.ts delete mode 100644 src/chongming-web/src/api/generated/core/ApiRequestOptions.ts delete mode 100644 src/chongming-web/src/api/generated/core/ApiResult.ts delete mode 100644 src/chongming-web/src/api/generated/core/CancelablePromise.ts delete mode 100644 src/chongming-web/src/api/generated/core/OpenAPI.ts create mode 100644 src/chongming-web/src/api/generated/core/auth.gen.ts create mode 100644 src/chongming-web/src/api/generated/core/bodySerializer.gen.ts create mode 100644 src/chongming-web/src/api/generated/core/params.gen.ts create mode 100644 src/chongming-web/src/api/generated/core/pathSerializer.gen.ts create mode 100644 src/chongming-web/src/api/generated/core/queryKeySerializer.gen.ts delete mode 100644 src/chongming-web/src/api/generated/core/request.ts create mode 100644 src/chongming-web/src/api/generated/core/serverSentEvents.gen.ts create mode 100644 src/chongming-web/src/api/generated/core/types.gen.ts create mode 100644 src/chongming-web/src/api/generated/core/utils.gen.ts delete mode 100644 src/chongming-web/src/api/generated/models/HTTPValidationError.ts delete mode 100644 src/chongming-web/src/api/generated/models/RefreshTokenResponse.ts delete mode 100644 src/chongming-web/src/api/generated/models/TaskRequest.ts delete mode 100644 src/chongming-web/src/api/generated/models/TodoCreate.ts delete mode 100644 src/chongming-web/src/api/generated/models/TodoRead.ts delete mode 100644 src/chongming-web/src/api/generated/models/TodoUpdate.ts delete mode 100644 src/chongming-web/src/api/generated/models/TokenResponse.ts delete mode 100644 src/chongming-web/src/api/generated/models/UserCreate.ts delete mode 100644 src/chongming-web/src/api/generated/models/UserLogin.ts delete mode 100644 src/chongming-web/src/api/generated/models/UserRead.ts delete mode 100644 src/chongming-web/src/api/generated/models/ValidationError.ts create mode 100644 src/chongming-web/src/api/generated/sdk.gen.ts delete mode 100644 src/chongming-web/src/api/generated/services/AuthenticationService.ts delete mode 100644 src/chongming-web/src/api/generated/services/DefaultService.ts delete mode 100644 src/chongming-web/src/api/generated/services/TodoService.ts create mode 100644 src/chongming-web/src/api/generated/types.gen.ts delete mode 100644 src/chongming-web/src/assets/base.css delete mode 100644 src/chongming-web/src/assets/main.css delete mode 100644 src/chongming-web/src/components/HelloWorld.vue delete mode 100644 src/chongming-web/src/components/TheWelcome.vue delete mode 100644 src/chongming-web/src/components/WelcomeItem.vue delete mode 100644 src/chongming-web/src/components/icons/IconCommunity.vue delete mode 100644 src/chongming-web/src/components/icons/IconDocumentation.vue delete mode 100644 src/chongming-web/src/components/icons/IconEcosystem.vue delete mode 100644 src/chongming-web/src/components/icons/IconSupport.vue delete mode 100644 src/chongming-web/src/components/icons/IconTooling.vue create mode 100644 src/chongming-web/src/stores/auth.ts create mode 100644 src/chongming-web/src/stores/todo.ts delete mode 100644 src/chongming-web/src/views/AboutView.vue delete mode 100644 src/chongming-web/src/views/HomeView.vue create mode 100644 src/chongming-web/src/views/LoginView.vue create mode 100644 src/chongming-web/src/views/RegisterView.vue create mode 100644 src/chongming-web/src/views/TodoView.vue create mode 100644 src/chongming/app/model/http_error.py rename src/{chongming/app/core/mqtt.py => plugins/jwt/__init__.py} (100%) rename src/{chongming/app/core => plugins/jwt}/jwt_cache.py (97%) rename src/{chongming/app/core/websocket.py => plugins/mqtt/__init__.py} (100%) create mode 100644 src/plugins/mqtt/mqtt.py create mode 100644 src/plugins/scheduler/__init__.py rename src/{chongming/app/core => plugins/scheduler}/scheduler.py (87%) create mode 100644 src/plugins/websocket/__init__.py create mode 100644 src/plugins/websocket/websocket.py create mode 100644 uploads/images/283173713eda4b60b0b338d245f088b7.jpg diff --git a/config.toml b/config.toml index 75b5ceb..1e9ef33 100644 --- a/config.toml +++ b/config.toml @@ -44,6 +44,7 @@ debug = true host = "127.0.0.1" port = 8000 reload = true +access_log = false [development.logging] level = "DEBUG" @@ -65,6 +66,7 @@ host = "0.0.0.0" port = 8000 reload = false workers = 4 +access_log = false [production.logging] level = "INFO" diff --git a/public/config.toml b/public/config.toml index 9d5dd44..ecc1069 100644 --- a/public/config.toml +++ b/public/config.toml @@ -44,6 +44,7 @@ debug = true host = "127.0.0.1" port = 8001 reload = true +access_log = false [development.logging] level = "DEBUG" @@ -65,6 +66,7 @@ host = "0.0.0.0" port = 8000 reload = false workers = 4 +access_log = false [production.logging] level = "INFO" diff --git a/public/main.py b/public/main.py index e7cb0db..d3dff49 100644 --- a/public/main.py +++ b/public/main.py @@ -54,7 +54,7 @@ def app_run(app_config: dict, default_config: dict): reload=reload, workers=workers, log_level="debug" if app_config.get("debug", False) else "info", - access_log=True, + access_log=False, timeout_keep_alive=timeout_keep_alive, ) diff --git a/src/chongming-web/package-lock.json b/src/chongming-web/package-lock.json index 87ac0ad..5787a1a 100644 --- a/src/chongming-web/package-lock.json +++ b/src/chongming-web/package-lock.json @@ -8,17 +8,19 @@ "name": "chongming-web", "version": "0.0.0", "dependencies": { + "@element-plus/icons-vue": "^2.3.2", + "element-plus": "^2.13.7", "pinia": "^3.0.4", "vue": "^3.5.31", "vue-router": "^5.0.4" }, "devDependencies": { + "@hey-api/openapi-ts": "^0.96.1", "@tsconfig/node24": "^24.0.4", "@types/node": "^24.12.0", "@vitejs/plugin-vue": "^6.0.5", "@vue/tsconfig": "^0.9.1", "npm-run-all2": "^8.0.4", - "openapi-typescript-codegen": "^0.29.0", "prettier": "3.8.1", "typescript": "~6.0.0", "vite": "^8.0.3", @@ -29,24 +31,6 @@ "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "11.9.3", - "resolved": "https://registry.npmmirror.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.9.3.tgz", - "integrity": "sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.15", - "js-yaml": "^4.1.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/philsturgeon" - } - }, "node_modules/@babel/code-frame": { "version": "7.29.0", "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.29.0.tgz", @@ -501,6 +485,24 @@ "node": ">=6.9.0" } }, + "node_modules/@ctrl/tinycolor": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-4.2.0.tgz", + "integrity": "sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz", + "integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.2.0" + } + }, "node_modules/@emnapi/core": { "version": "1.9.2", "resolved": "https://registry.npmmirror.com/@emnapi/core/-/core-1.9.2.tgz", @@ -535,6 +537,202 @@ "tslib": "^2.4.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "license": "MIT" + }, + "node_modules/@hey-api/codegen-core": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/@hey-api/codegen-core/-/codegen-core-0.8.0.tgz", + "integrity": "sha512-OuF/jenX9wz7AWHRBfb37v+jLkrfCt0FJXQuALNH2UsW6+bdZBmoibHl0K778SiHwneotJbAaEvX2S05wEqUQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hey-api/types": "0.1.4", + "ansi-colors": "4.1.3", + "c12": "3.3.4", + "color-support": "1.1.3" + }, + "engines": { + "node": ">=22.13.0" + }, + "funding": { + "url": "https://github.com/sponsors/hey-api" + } + }, + "node_modules/@hey-api/json-schema-ref-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/@hey-api/json-schema-ref-parser/-/json-schema-ref-parser-1.4.1.tgz", + "integrity": "sha512-DoPJGxVApDlktP1yYLjmOrF0YBEqb32ieCbx1S1i09n8TyCgdoh4yQaQ3kp0sMTauH+bwNKPsFh7S8qiWCoKZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jsdevtools/ono": "7.1.3", + "@types/json-schema": "7.0.15", + "yaml": "2.8.3" + }, + "engines": { + "node": ">=22.13.0" + }, + "funding": { + "url": "https://github.com/sponsors/hey-api" + } + }, + "node_modules/@hey-api/openapi-ts": { + "version": "0.96.1", + "resolved": "https://registry.npmmirror.com/@hey-api/openapi-ts/-/openapi-ts-0.96.1.tgz", + "integrity": "sha512-EnH+6ncaVC1yNvYWcsO7MoeBSqCvYZaKvRDRqh+S7dsfb9lhe2mKUR2+7sDacGUBm7VDZZ7hg4q4egxlpZaf0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hey-api/codegen-core": "0.8.0", + "@hey-api/json-schema-ref-parser": "1.4.1", + "@hey-api/shared": "0.4.1", + "@hey-api/spec-types": "0.2.0", + "@hey-api/types": "0.1.4", + "ansi-colors": "4.1.3", + "color-support": "1.1.3", + "commander": "14.0.3", + "get-tsconfig": "4.14.0" + }, + "bin": { + "openapi-ts": "bin/run.js" + }, + "engines": { + "node": ">=22.13.0" + }, + "funding": { + "url": "https://github.com/sponsors/hey-api" + }, + "peerDependencies": { + "typescript": ">=5.5.3 || >=6.0.0 || 6.0.1-rc" + } + }, + "node_modules/@hey-api/openapi-ts/node_modules/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/@hey-api/shared": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/@hey-api/shared/-/shared-0.4.1.tgz", + "integrity": "sha512-EDAjvGpEamn2fOB7W87ZStyDSv5mEpnQCciVbiZ+Ll4EfawwIjHMMtDtRQOYol0YjTkAeEm274GFPAtg3xfPGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hey-api/codegen-core": "0.8.0", + "@hey-api/json-schema-ref-parser": "1.4.1", + "@hey-api/spec-types": "0.2.0", + "@hey-api/types": "0.1.4", + "ansi-colors": "4.1.3", + "cross-spawn": "7.0.6", + "open": "11.0.0", + "semver": "7.7.4" + }, + "engines": { + "node": ">=22.13.0" + }, + "funding": { + "url": "https://github.com/sponsors/hey-api" + } + }, + "node_modules/@hey-api/shared/node_modules/open": { + "version": "11.0.0", + "resolved": "https://registry.npmmirror.com/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.4.0", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hey-api/shared/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@hey-api/shared/node_modules/wsl-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hey-api/spec-types": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/@hey-api/spec-types/-/spec-types-0.2.0.tgz", + "integrity": "sha512-ibQ8Is7evMavzr8GNyJCcTg975d8DpaMUyLmOrQ85UBdy1l6t1KuRAwgChAbesJsIlNV6gjmlXruWyegDX18Fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hey-api/types": "0.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/hey-api" + } + }, + "node_modules/@hey-api/types": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/@hey-api/types/-/types-0.1.4.tgz", + "integrity": "sha512-thWfawrDIP7wSI9ioT13I5soaaqB5vAPIiZmgD8PbeEVKNrkonc0N/Sjj97ezl7oQgusZmaNphGdMKipPO6IBg==", + "dev": true, + "license": "MIT" + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -623,6 +821,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.8", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.8.tgz", + "integrity": "sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@rolldown/binding-android-arm64": { "version": "1.0.0-rc.15", "resolved": "https://registry.npmmirror.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.15.tgz", @@ -912,6 +1121,21 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/lodash": { + "version": "4.17.24", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.24.tgz", + "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, "node_modules/@types/node": { "version": "24.12.2", "resolved": "https://registry.npmmirror.com/@types/node/-/node-24.12.2.tgz", @@ -922,6 +1146,12 @@ "undici-types": "~7.16.0" } }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "license": "MIT" + }, "node_modules/@vitejs/plugin-vue": { "version": "6.0.6", "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-6.0.6.tgz", @@ -1257,6 +1487,42 @@ } } }, + "node_modules/@vueuse/core": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-12.0.0.tgz", + "integrity": "sha512-C12RukhXiJCbx4MGhjmd/gH52TjJsc3G0E0kQj/kb19H3Nt6n1CA4DRWuTdWWcaFRdlTe0npWDS942mvacvNBw==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "12.0.0", + "@vueuse/shared": "12.0.0", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/metadata": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-12.0.0.tgz", + "integrity": "sha512-Yzimd1D3sjxTDOlF05HekU5aSGdKjxhuhRFHA7gDWLn57PRbBIh+SF5NmjhJ0WRgF3my7T8LBucyxdFJjIfRJQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "12.0.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-12.0.0.tgz", + "integrity": "sha512-3i6qtcq2PIio5i/vVYidkkcgvmTjCqrf26u+Fd4LhnbBmIT6FN8y6q/GJERp8lfcB9zVEfjdV0Br0443qZuJpw==", + "license": "MIT", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.16.0.tgz", @@ -1276,6 +1542,16 @@ "dev": true, "license": "MIT" }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/ansi-styles": { "version": "6.2.3", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.3.tgz", @@ -1299,13 +1575,6 @@ "node": ">=14" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, "node_modules/ast-kit": { "version": "2.2.0", "resolved": "https://registry.npmmirror.com/ast-kit/-/ast-kit-2.2.0.tgz", @@ -1338,6 +1607,12 @@ "url": "https://github.com/sponsors/sxzz" } }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", + "license": "MIT" + }, "node_modules/baseline-browser-mapping": { "version": "2.10.18", "resolved": "https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.18.tgz", @@ -1410,19 +1685,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/c12": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/c12/-/c12-3.3.4.tgz", + "integrity": "sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "chokidar": "^5.0.0", + "confbox": "^0.2.4", + "defu": "^6.1.6", + "dotenv": "^17.3.1", + "exsolve": "^1.0.8", + "giget": "^3.2.0", + "jiti": "^2.6.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "rc9": "^3.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "magicast": "*" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } } }, + "node_modules/c12/node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "dev": true, + "license": "MIT" + }, "node_modules/caniuse-lite": { "version": "1.0.30001788", "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz", @@ -1459,14 +1757,14 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "license": "ISC", + "bin": { + "color-support": "bin.js" } }, "node_modules/confbox": { @@ -1541,6 +1839,12 @@ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "license": "MIT" }, + "node_modules/dayjs": { + "version": "1.11.20", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "license": "MIT" + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", @@ -1602,6 +1906,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmmirror.com/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "dev": true, + "license": "MIT" + }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.2.tgz", @@ -1612,6 +1930,19 @@ "node": ">=8" } }, + "node_modules/dotenv": { + "version": "17.4.2", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.336", "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.336.tgz", @@ -1619,6 +1950,32 @@ "dev": true, "license": "ISC" }, + "node_modules/element-plus": { + "version": "2.13.7", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.13.7.tgz", + "integrity": "sha512-XdHATFZOyzVFL1DaHQ90IOJQSg9UnSAV+bhDW+YB5UoZ0Hxs50mwqjqfwXkuwpSag+VXXizVcErBR6Movo5daw==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^4.2.0", + "@element-plus/icons-vue": "^2.3.2", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.17.20", + "@types/lodash-es": "^4.17.12", + "@vueuse/core": "12.0.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.19", + "lodash": "^4.17.23", + "lodash-es": "^4.17.23", + "lodash-unified": "^1.0.3", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0", + "vue-component-type-helpers": "^3.2.4" + }, + "peerDependencies": { + "vue": "^3.3.0" + } + }, "node_modules/entities": { "version": "7.0.1", "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", @@ -1680,21 +2037,6 @@ } } }, - "node_modules/fs-extra": { - "version": "11.3.4", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.3.4.tgz", - "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", @@ -1720,33 +2062,27 @@ "node": ">=6.9.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/handlebars": { - "version": "4.7.9", - "resolved": "https://registry.npmmirror.com/handlebars/-/handlebars-4.7.9.tgz", - "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmmirror.com/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" + "resolve-pkg-maps": "^1.0.0" }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/giget": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/giget/-/giget-3.2.0.tgz", + "integrity": "sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==", + "dev": true, + "license": "MIT", "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "giget": "dist/cli.mjs" } }, "node_modules/hookable": { @@ -1771,6 +2107,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -1828,6 +2177,16 @@ "node": ">=18" } }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmmirror.com/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", @@ -1835,19 +2194,6 @@ "dev": true, "license": "MIT" }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", @@ -1882,19 +2228,6 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/kolorist": { "version": "1.8.0", "resolved": "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz", @@ -2180,6 +2513,29 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.18.1", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", + "license": "MIT" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "license": "MIT", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", @@ -2214,6 +2570,12 @@ "url": "https://github.com/sponsors/sxzz" } }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmmirror.com/memorystream/-/memorystream-0.3.1.tgz", @@ -2223,16 +2585,6 @@ "node": ">= 0.10.0" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/mitt": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", @@ -2309,13 +2661,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, "node_modules/node-releases": { "version": "2.0.37", "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.37.tgz", @@ -2323,6 +2668,12 @@ "dev": true, "license": "MIT" }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==", + "license": "BSD-3-Clause" + }, "node_modules/npm-normalize-package-bin": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz", @@ -2386,23 +2737,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/openapi-typescript-codegen": { - "version": "0.29.0", - "resolved": "https://registry.npmmirror.com/openapi-typescript-codegen/-/openapi-typescript-codegen-0.29.0.tgz", - "integrity": "sha512-/wC42PkD0LGjDTEULa/XiWQbv4E9NwLjwLjsaJ/62yOsoYhwvmBR31kPttn1DzQ2OlGe5stACcF/EIkZk43M6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@apidevtools/json-schema-ref-parser": "^11.5.4", - "camelcase": "^6.3.0", - "commander": "^12.0.0", - "fs-extra": "^11.2.0", - "handlebars": "^4.7.8" - }, - "bin": { - "openapi": "bin/index.js" - } - }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", @@ -2523,6 +2857,19 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/prettier": { "version": "3.8.1", "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.8.1.tgz", @@ -2555,6 +2902,17 @@ ], "license": "MIT" }, + "node_modules/rc9": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/rc9/-/rc9-3.0.1.tgz", + "integrity": "sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "defu": "^6.1.6", + "destr": "^2.0.5" + } + }, "node_modules/read-package-json-fast": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/read-package-json-fast/-/read-package-json-fast-4.0.0.tgz", @@ -2582,6 +2940,16 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/rfdc": { "version": "1.4.1", "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz", @@ -2709,16 +3077,6 @@ "node": ">=18" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", @@ -2803,20 +3161,6 @@ "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", "license": "MIT" }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-7.16.0.tgz", @@ -2824,16 +3168,6 @@ "dev": true, "license": "MIT" }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/unplugin": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-3.0.0.tgz", @@ -3132,6 +3466,12 @@ } } }, + "node_modules/vue-component-type-helpers": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/vue-component-type-helpers/-/vue-component-type-helpers-3.2.7.tgz", + "integrity": "sha512-+gPp5YGmhfsj1IN+xUo7y0fb4clfnOiiUA39y07yW1VzCRjzVgwLbtmdWlghh7mXrPsEaYc7rrIir/HT6C8vYQ==", + "license": "MIT" + }, "node_modules/vue-router": { "version": "5.0.4", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-5.0.4.tgz", @@ -3249,13 +3589,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, "node_modules/wsl-utils": { "version": "0.1.0", "resolved": "https://registry.npmmirror.com/wsl-utils/-/wsl-utils-0.1.0.tgz", diff --git a/src/chongming-web/package.json b/src/chongming-web/package.json index 032212a..71bea70 100644 --- a/src/chongming-web/package.json +++ b/src/chongming-web/package.json @@ -10,20 +10,22 @@ "build-only": "vite build", "type-check": "vue-tsc --build", "format": "prettier --write --experimental-cli src/", - "openapi": "npx openapi-typescript-codegen --input http://127.0.0.1:8000/openapi.json --output ./src/api/generated/" + "openapi": "npx @hey-api/openapi-ts --input http://127.0.0.1:8000/openapi.json --output ./src/api/generated/" }, "dependencies": { + "@element-plus/icons-vue": "^2.3.2", + "element-plus": "^2.13.7", "pinia": "^3.0.4", "vue": "^3.5.31", "vue-router": "^5.0.4" }, "devDependencies": { + "@hey-api/openapi-ts": "^0.96.1", "@tsconfig/node24": "^24.0.4", "@types/node": "^24.12.0", "@vitejs/plugin-vue": "^6.0.5", "@vue/tsconfig": "^0.9.1", "npm-run-all2": "^8.0.4", - "openapi-typescript-codegen": "^0.29.0", "prettier": "3.8.1", "typescript": "~6.0.0", "vite": "^8.0.3", @@ -33,4 +35,4 @@ "engines": { "node": "^20.19.0 || >=22.12.0" } -} \ No newline at end of file +} diff --git a/src/chongming-web/src/App.vue b/src/chongming-web/src/App.vue index 38e183b..5e07a41 100644 --- a/src/chongming-web/src/App.vue +++ b/src/chongming-web/src/App.vue @@ -1,111 +1,16 @@ + - + \ No newline at end of file diff --git a/src/chongming-web/src/api/generated/client.gen.ts b/src/chongming-web/src/api/generated/client.gen.ts new file mode 100644 index 0000000..67d2030 --- /dev/null +++ b/src/chongming-web/src/api/generated/client.gen.ts @@ -0,0 +1,16 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import { type ClientOptions, type Config, createClient, createConfig } from './client'; +import type { ClientOptions as ClientOptions2 } from './types.gen'; + +/** + * The `createClientConfig()` function will be called on client initialization + * and the returned object will become the client's initial configuration. + * + * You may want to initialize your client this way instead of calling + * `setConfig()`. This is useful for example if you're using Next.js + * to ensure your client always has the correct values. + */ +export type CreateClientConfig = (override?: Config) => Config & T>; + +export const client = createClient(createConfig({ baseUrl: 'http://127.0.0.1:8000' })); diff --git a/src/chongming-web/src/api/generated/client/client.gen.ts b/src/chongming-web/src/api/generated/client/client.gen.ts new file mode 100644 index 0000000..9ec9ad8 --- /dev/null +++ b/src/chongming-web/src/api/generated/client/client.gen.ts @@ -0,0 +1,298 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import { createSseClient } from '../core/serverSentEvents.gen'; +import type { HttpMethod } from '../core/types.gen'; +import { getValidRequestBody } from '../core/utils.gen'; +import type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen'; +import { + buildUrl, + createConfig, + createInterceptors, + getParseAs, + mergeConfigs, + mergeHeaders, + setAuthParams, +} from './utils.gen'; + +type ReqInit = Omit & { + body?: any; + headers: ReturnType; +}; + +export const createClient = (config: Config = {}): Client => { + let _config = mergeConfigs(createConfig(), config); + + const getConfig = (): Config => ({ ..._config }); + + const setConfig = (config: Config): Config => { + _config = mergeConfigs(_config, config); + return getConfig(); + }; + + const interceptors = createInterceptors(); + + const beforeRequest = async < + TData = unknown, + TResponseStyle extends 'data' | 'fields' = 'fields', + ThrowOnError extends boolean = boolean, + Url extends string = string, + >( + options: RequestOptions, + ) => { + const opts = { + ..._config, + ...options, + fetch: options.fetch ?? _config.fetch ?? globalThis.fetch, + headers: mergeHeaders(_config.headers, options.headers), + serializedBody: undefined as string | undefined, + }; + + if (opts.security) { + await setAuthParams({ + ...opts, + security: opts.security, + }); + } + + if (opts.requestValidator) { + await opts.requestValidator(opts); + } + + if (opts.body !== undefined && opts.bodySerializer) { + opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined; + } + + // remove Content-Type header if body is empty to avoid sending invalid requests + if (opts.body === undefined || opts.serializedBody === '') { + opts.headers.delete('Content-Type'); + } + + const resolvedOpts = opts as typeof opts & + ResolvedRequestOptions; + const url = buildUrl(resolvedOpts); + + return { opts: resolvedOpts, url }; + }; + + const request: Client['request'] = async (options) => { + const { opts, url } = await beforeRequest(options); + const requestInit: ReqInit = { + redirect: 'follow', + ...opts, + body: getValidRequestBody(opts), + }; + + let request = new Request(url, requestInit); + + for (const fn of interceptors.request.fns) { + if (fn) { + request = await fn(request, opts); + } + } + + // fetch must be assigned here, otherwise it would throw the error: + // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation + const _fetch = opts.fetch!; + let response: Response; + + try { + response = await _fetch(request); + } catch (error) { + // Handle fetch exceptions (AbortError, network errors, etc.) + let finalError = error; + + for (const fn of interceptors.error.fns) { + if (fn) { + finalError = (await fn(error, undefined as any, request, opts)) as unknown; + } + } + + finalError = finalError || ({} as unknown); + + if (opts.throwOnError) { + throw finalError; + } + + // Return error response + return opts.responseStyle === 'data' + ? undefined + : { + error: finalError, + request, + response: undefined as any, + }; + } + + for (const fn of interceptors.response.fns) { + if (fn) { + response = await fn(response, request, opts); + } + } + + const result = { + request, + response, + }; + + if (response.ok) { + const parseAs = + (opts.parseAs === 'auto' + ? getParseAs(response.headers.get('Content-Type')) + : opts.parseAs) ?? 'json'; + + if (response.status === 204 || response.headers.get('Content-Length') === '0') { + let emptyData: any; + switch (parseAs) { + case 'arrayBuffer': + case 'blob': + case 'text': + emptyData = await response[parseAs](); + break; + case 'formData': + emptyData = new FormData(); + break; + case 'stream': + emptyData = response.body; + break; + case 'json': + default: + emptyData = {}; + break; + } + return opts.responseStyle === 'data' + ? emptyData + : { + data: emptyData, + ...result, + }; + } + + let data: any; + switch (parseAs) { + case 'arrayBuffer': + case 'blob': + case 'formData': + case 'text': + data = await response[parseAs](); + break; + case 'json': { + // Some servers return 200 with no Content-Length and empty body. + // response.json() would throw; read as text and parse if non-empty. + const text = await response.text(); + data = text ? JSON.parse(text) : {}; + break; + } + case 'stream': + return opts.responseStyle === 'data' + ? response.body + : { + data: response.body, + ...result, + }; + } + + if (parseAs === 'json') { + if (opts.responseValidator) { + await opts.responseValidator(data); + } + + if (opts.responseTransformer) { + data = await opts.responseTransformer(data); + } + } + + return opts.responseStyle === 'data' + ? data + : { + data, + ...result, + }; + } + + const textError = await response.text(); + let jsonError: unknown; + + try { + jsonError = JSON.parse(textError); + } catch { + // noop + } + + const error = jsonError ?? textError; + let finalError = error; + + for (const fn of interceptors.error.fns) { + if (fn) { + finalError = (await fn(error, response, request, opts)) as string; + } + } + + finalError = finalError || ({} as string); + + if (opts.throwOnError) { + throw finalError; + } + + // TODO: we probably want to return error and improve types + return opts.responseStyle === 'data' + ? undefined + : { + error: finalError, + ...result, + }; + }; + + const makeMethodFn = (method: Uppercase) => (options: RequestOptions) => + request({ ...options, method }); + + const makeSseFn = (method: Uppercase) => async (options: RequestOptions) => { + const { opts, url } = await beforeRequest(options); + return createSseClient({ + ...opts, + body: opts.body as BodyInit | null | undefined, + headers: opts.headers as unknown as Record, + method, + onRequest: async (url, init) => { + let request = new Request(url, init); + for (const fn of interceptors.request.fns) { + if (fn) { + request = await fn(request, opts); + } + } + return request; + }, + serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined, + url, + }); + }; + + const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options }); + + return { + buildUrl: _buildUrl, + connect: makeMethodFn('CONNECT'), + delete: makeMethodFn('DELETE'), + get: makeMethodFn('GET'), + getConfig, + head: makeMethodFn('HEAD'), + interceptors, + options: makeMethodFn('OPTIONS'), + patch: makeMethodFn('PATCH'), + post: makeMethodFn('POST'), + put: makeMethodFn('PUT'), + request, + setConfig, + sse: { + connect: makeSseFn('CONNECT'), + delete: makeSseFn('DELETE'), + get: makeSseFn('GET'), + head: makeSseFn('HEAD'), + options: makeSseFn('OPTIONS'), + patch: makeSseFn('PATCH'), + post: makeSseFn('POST'), + put: makeSseFn('PUT'), + trace: makeSseFn('TRACE'), + }, + trace: makeMethodFn('TRACE'), + } as Client; +}; diff --git a/src/chongming-web/src/api/generated/client/index.ts b/src/chongming-web/src/api/generated/client/index.ts new file mode 100644 index 0000000..b295ede --- /dev/null +++ b/src/chongming-web/src/api/generated/client/index.ts @@ -0,0 +1,25 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type { Auth } from '../core/auth.gen'; +export type { QuerySerializerOptions } from '../core/bodySerializer.gen'; +export { + formDataBodySerializer, + jsonBodySerializer, + urlSearchParamsBodySerializer, +} from '../core/bodySerializer.gen'; +export { buildClientParams } from '../core/params.gen'; +export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen'; +export { createClient } from './client.gen'; +export type { + Client, + ClientOptions, + Config, + CreateClientConfig, + Options, + RequestOptions, + RequestResult, + ResolvedRequestOptions, + ResponseStyle, + TDataShape, +} from './types.gen'; +export { createConfig, mergeHeaders } from './utils.gen'; diff --git a/src/chongming-web/src/api/generated/client/types.gen.ts b/src/chongming-web/src/api/generated/client/types.gen.ts new file mode 100644 index 0000000..c80695b --- /dev/null +++ b/src/chongming-web/src/api/generated/client/types.gen.ts @@ -0,0 +1,215 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { Auth } from '../core/auth.gen'; +import type { + ServerSentEventsOptions, + ServerSentEventsResult, +} from '../core/serverSentEvents.gen'; +import type { Client as CoreClient, Config as CoreConfig } from '../core/types.gen'; +import type { Middleware } from './utils.gen'; + +export type ResponseStyle = 'data' | 'fields'; + +export interface Config + extends Omit, CoreConfig { + /** + * Base URL for all requests made by this client. + */ + baseUrl?: T['baseUrl']; + /** + * Fetch API implementation. You can use this option to provide a custom + * fetch instance. + * + * @default globalThis.fetch + */ + fetch?: typeof fetch; + /** + * Please don't use the Fetch client for Next.js applications. The `next` + * options won't have any effect. + * + * Install {@link https://www.npmjs.com/package/@hey-api/client-next `@hey-api/client-next`} instead. + */ + next?: never; + /** + * Return the response data parsed in a specified format. By default, `auto` + * will infer the appropriate method from the `Content-Type` response header. + * You can override this behavior with any of the {@link Body} methods. + * Select `stream` if you don't want to parse response data at all. + * + * @default 'auto' + */ + parseAs?: 'arrayBuffer' | 'auto' | 'blob' | 'formData' | 'json' | 'stream' | 'text'; + /** + * Should we return only data or multiple fields (data, error, response, etc.)? + * + * @default 'fields' + */ + responseStyle?: ResponseStyle; + /** + * Throw an error instead of returning it in the response? + * + * @default false + */ + throwOnError?: T['throwOnError']; +} + +export interface RequestOptions< + TData = unknown, + TResponseStyle extends ResponseStyle = 'fields', + ThrowOnError extends boolean = boolean, + Url extends string = string, +> + extends + Config<{ + responseStyle: TResponseStyle; + throwOnError: ThrowOnError; + }>, + Pick< + ServerSentEventsOptions, + | 'onRequest' + | 'onSseError' + | 'onSseEvent' + | 'sseDefaultRetryDelay' + | 'sseMaxRetryAttempts' + | 'sseMaxRetryDelay' + > { + /** + * Any body that you want to add to your request. + * + * {@link https://developer.mozilla.org/docs/Web/API/fetch#body} + */ + body?: unknown; + path?: Record; + query?: Record; + /** + * Security mechanism(s) to use for the request. + */ + security?: ReadonlyArray; + url: Url; +} + +export interface ResolvedRequestOptions< + TResponseStyle extends ResponseStyle = 'fields', + ThrowOnError extends boolean = boolean, + Url extends string = string, +> extends RequestOptions { + headers: Headers; + serializedBody?: string; +} + +export type RequestResult< + TData = unknown, + TError = unknown, + ThrowOnError extends boolean = boolean, + TResponseStyle extends ResponseStyle = 'fields', +> = ThrowOnError extends true + ? Promise< + TResponseStyle extends 'data' + ? TData extends Record + ? TData[keyof TData] + : TData + : { + data: TData extends Record ? TData[keyof TData] : TData; + request: Request; + response: Response; + } + > + : Promise< + TResponseStyle extends 'data' + ? (TData extends Record ? TData[keyof TData] : TData) | undefined + : ( + | { + data: TData extends Record ? TData[keyof TData] : TData; + error: undefined; + } + | { + data: undefined; + error: TError extends Record ? TError[keyof TError] : TError; + } + ) & { + request: Request; + response: Response; + } + >; + +export interface ClientOptions { + baseUrl?: string; + responseStyle?: ResponseStyle; + throwOnError?: boolean; +} + +type MethodFn = < + TData = unknown, + TError = unknown, + ThrowOnError extends boolean = false, + TResponseStyle extends ResponseStyle = 'fields', +>( + options: Omit, 'method'>, +) => RequestResult; + +type SseFn = < + TData = unknown, + TError = unknown, + ThrowOnError extends boolean = false, + TResponseStyle extends ResponseStyle = 'fields', +>( + options: Omit, 'method'>, +) => Promise>; + +type RequestFn = < + TData = unknown, + TError = unknown, + ThrowOnError extends boolean = false, + TResponseStyle extends ResponseStyle = 'fields', +>( + options: Omit, 'method'> & + Pick>, 'method'>, +) => RequestResult; + +type BuildUrlFn = < + TData extends { + body?: unknown; + path?: Record; + query?: Record; + url: string; + }, +>( + options: TData & Options, +) => string; + +export type Client = CoreClient & { + interceptors: Middleware; +}; + +/** + * The `createClientConfig()` function will be called on client initialization + * and the returned object will become the client's initial configuration. + * + * You may want to initialize your client this way instead of calling + * `setConfig()`. This is useful for example if you're using Next.js + * to ensure your client always has the correct values. + */ +export type CreateClientConfig = ( + override?: Config, +) => Config & T>; + +export interface TDataShape { + body?: unknown; + headers?: unknown; + path?: unknown; + query?: unknown; + url: string; +} + +type OmitKeys = Pick>; + +export type Options< + TData extends TDataShape = TDataShape, + ThrowOnError extends boolean = boolean, + TResponse = unknown, + TResponseStyle extends ResponseStyle = 'fields', +> = OmitKeys< + RequestOptions, + 'body' | 'path' | 'query' | 'url' +> & + ([TData] extends [never] ? unknown : Omit); diff --git a/src/chongming-web/src/api/generated/client/utils.gen.ts b/src/chongming-web/src/api/generated/client/utils.gen.ts new file mode 100644 index 0000000..5162192 --- /dev/null +++ b/src/chongming-web/src/api/generated/client/utils.gen.ts @@ -0,0 +1,316 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import { getAuthToken } from '../core/auth.gen'; +import type { QuerySerializerOptions } from '../core/bodySerializer.gen'; +import { jsonBodySerializer } from '../core/bodySerializer.gen'; +import { + serializeArrayParam, + serializeObjectParam, + serializePrimitiveParam, +} from '../core/pathSerializer.gen'; +import { getUrl } from '../core/utils.gen'; +import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; + +export const createQuerySerializer = ({ + parameters = {}, + ...args +}: QuerySerializerOptions = {}) => { + const querySerializer = (queryParams: T) => { + const search: string[] = []; + if (queryParams && typeof queryParams === 'object') { + for (const name in queryParams) { + const value = queryParams[name]; + + if (value === undefined || value === null) { + continue; + } + + const options = parameters[name] || args; + + if (Array.isArray(value)) { + const serializedArray = serializeArrayParam({ + allowReserved: options.allowReserved, + explode: true, + name, + style: 'form', + value, + ...options.array, + }); + if (serializedArray) search.push(serializedArray); + } else if (typeof value === 'object') { + const serializedObject = serializeObjectParam({ + allowReserved: options.allowReserved, + explode: true, + name, + style: 'deepObject', + value: value as Record, + ...options.object, + }); + if (serializedObject) search.push(serializedObject); + } else { + const serializedPrimitive = serializePrimitiveParam({ + allowReserved: options.allowReserved, + name, + value: value as string, + }); + if (serializedPrimitive) search.push(serializedPrimitive); + } + } + } + return search.join('&'); + }; + return querySerializer; +}; + +/** + * Infers parseAs value from provided Content-Type header. + */ +export const getParseAs = (contentType: string | null): Exclude => { + if (!contentType) { + // If no Content-Type header is provided, the best we can do is return the raw response body, + // which is effectively the same as the 'stream' option. + return 'stream'; + } + + const cleanContent = contentType.split(';')[0]?.trim(); + + if (!cleanContent) { + return; + } + + if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) { + return 'json'; + } + + if (cleanContent === 'multipart/form-data') { + return 'formData'; + } + + if ( + ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type)) + ) { + return 'blob'; + } + + if (cleanContent.startsWith('text/')) { + return 'text'; + } + + return; +}; + +const checkForExistence = ( + options: Pick & { + headers: Headers; + }, + name?: string, +): boolean => { + if (!name) { + return false; + } + if ( + options.headers.has(name) || + options.query?.[name] || + options.headers.get('Cookie')?.includes(`${name}=`) + ) { + return true; + } + return false; +}; + +export const setAuthParams = async ({ + security, + ...options +}: Pick, 'security'> & + Pick & { + headers: Headers; + }) => { + for (const auth of security) { + if (checkForExistence(options, auth.name)) { + continue; + } + + const token = await getAuthToken(auth, options.auth); + + if (!token) { + continue; + } + + const name = auth.name ?? 'Authorization'; + + switch (auth.in) { + case 'query': + if (!options.query) { + options.query = {}; + } + options.query[name] = token; + break; + case 'cookie': + options.headers.append('Cookie', `${name}=${token}`); + break; + case 'header': + default: + options.headers.set(name, token); + break; + } + } +}; + +export const buildUrl: Client['buildUrl'] = (options) => + getUrl({ + baseUrl: options.baseUrl as string, + path: options.path, + query: options.query, + querySerializer: + typeof options.querySerializer === 'function' + ? options.querySerializer + : createQuerySerializer(options.querySerializer), + url: options.url, + }); + +export const mergeConfigs = (a: Config, b: Config): Config => { + const config = { ...a, ...b }; + if (config.baseUrl?.endsWith('/')) { + config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1); + } + config.headers = mergeHeaders(a.headers, b.headers); + return config; +}; + +const headersEntries = (headers: Headers): Array<[string, string]> => { + const entries: Array<[string, string]> = []; + headers.forEach((value, key) => { + entries.push([key, value]); + }); + return entries; +}; + +export const mergeHeaders = ( + ...headers: Array['headers'] | undefined> +): Headers => { + const mergedHeaders = new Headers(); + for (const header of headers) { + if (!header) { + continue; + } + + const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header); + + for (const [key, value] of iterator) { + if (value === null) { + mergedHeaders.delete(key); + } else if (Array.isArray(value)) { + for (const v of value) { + mergedHeaders.append(key, v as string); + } + } else if (value !== undefined) { + // assume object headers are meant to be JSON stringified, i.e., their + // content value in OpenAPI specification is 'application/json' + mergedHeaders.set( + key, + typeof value === 'object' ? JSON.stringify(value) : (value as string), + ); + } + } + } + return mergedHeaders; +}; + +type ErrInterceptor = ( + error: Err, + response: Res, + request: Req, + options: Options, +) => Err | Promise; + +type ReqInterceptor = (request: Req, options: Options) => Req | Promise; + +type ResInterceptor = ( + response: Res, + request: Req, + options: Options, +) => Res | Promise; + +class Interceptors { + fns: Array = []; + + clear(): void { + this.fns = []; + } + + eject(id: number | Interceptor): void { + const index = this.getInterceptorIndex(id); + if (this.fns[index]) { + this.fns[index] = null; + } + } + + exists(id: number | Interceptor): boolean { + const index = this.getInterceptorIndex(id); + return Boolean(this.fns[index]); + } + + getInterceptorIndex(id: number | Interceptor): number { + if (typeof id === 'number') { + return this.fns[id] ? id : -1; + } + return this.fns.indexOf(id); + } + + update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false { + const index = this.getInterceptorIndex(id); + if (this.fns[index]) { + this.fns[index] = fn; + return id; + } + return false; + } + + use(fn: Interceptor): number { + this.fns.push(fn); + return this.fns.length - 1; + } +} + +export interface Middleware { + error: Interceptors>; + request: Interceptors>; + response: Interceptors>; +} + +export const createInterceptors = (): Middleware< + Req, + Res, + Err, + Options +> => ({ + error: new Interceptors>(), + request: new Interceptors>(), + response: new Interceptors>(), +}); + +const defaultQuerySerializer = createQuerySerializer({ + allowReserved: false, + array: { + explode: true, + style: 'form', + }, + object: { + explode: true, + style: 'deepObject', + }, +}); + +const defaultHeaders = { + 'Content-Type': 'application/json', +}; + +export const createConfig = ( + override: Config & T> = {}, +): Config & T> => ({ + ...jsonBodySerializer, + headers: defaultHeaders, + parseAs: 'auto', + querySerializer: defaultQuerySerializer, + ...override, +}); diff --git a/src/chongming-web/src/api/generated/core/ApiError.ts b/src/chongming-web/src/api/generated/core/ApiError.ts deleted file mode 100644 index ec7b16a..0000000 --- a/src/chongming-web/src/api/generated/core/ApiError.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ApiRequestOptions } from './ApiRequestOptions'; -import type { ApiResult } from './ApiResult'; - -export class ApiError extends Error { - public readonly url: string; - public readonly status: number; - public readonly statusText: string; - public readonly body: any; - public readonly request: ApiRequestOptions; - - constructor(request: ApiRequestOptions, response: ApiResult, message: string) { - super(message); - - this.name = 'ApiError'; - this.url = response.url; - this.status = response.status; - this.statusText = response.statusText; - this.body = response.body; - this.request = request; - } -} diff --git a/src/chongming-web/src/api/generated/core/ApiRequestOptions.ts b/src/chongming-web/src/api/generated/core/ApiRequestOptions.ts deleted file mode 100644 index 93143c3..0000000 --- a/src/chongming-web/src/api/generated/core/ApiRequestOptions.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -export type ApiRequestOptions = { - readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH'; - readonly url: string; - readonly path?: Record; - readonly cookies?: Record; - readonly headers?: Record; - readonly query?: Record; - readonly formData?: Record; - readonly body?: any; - readonly mediaType?: string; - readonly responseHeader?: string; - readonly errors?: Record; -}; diff --git a/src/chongming-web/src/api/generated/core/ApiResult.ts b/src/chongming-web/src/api/generated/core/ApiResult.ts deleted file mode 100644 index ee1126e..0000000 --- a/src/chongming-web/src/api/generated/core/ApiResult.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -export type ApiResult = { - readonly url: string; - readonly ok: boolean; - readonly status: number; - readonly statusText: string; - readonly body: any; -}; diff --git a/src/chongming-web/src/api/generated/core/CancelablePromise.ts b/src/chongming-web/src/api/generated/core/CancelablePromise.ts deleted file mode 100644 index d70de92..0000000 --- a/src/chongming-web/src/api/generated/core/CancelablePromise.ts +++ /dev/null @@ -1,131 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -export class CancelError extends Error { - - constructor(message: string) { - super(message); - this.name = 'CancelError'; - } - - public get isCancelled(): boolean { - return true; - } -} - -export interface OnCancel { - readonly isResolved: boolean; - readonly isRejected: boolean; - readonly isCancelled: boolean; - - (cancelHandler: () => void): void; -} - -export class CancelablePromise implements Promise { - #isResolved: boolean; - #isRejected: boolean; - #isCancelled: boolean; - readonly #cancelHandlers: (() => void)[]; - readonly #promise: Promise; - #resolve?: (value: T | PromiseLike) => void; - #reject?: (reason?: any) => void; - - constructor( - executor: ( - resolve: (value: T | PromiseLike) => void, - reject: (reason?: any) => void, - onCancel: OnCancel - ) => void - ) { - this.#isResolved = false; - this.#isRejected = false; - this.#isCancelled = false; - this.#cancelHandlers = []; - this.#promise = new Promise((resolve, reject) => { - this.#resolve = resolve; - this.#reject = reject; - - const onResolve = (value: T | PromiseLike): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#isResolved = true; - if (this.#resolve) this.#resolve(value); - }; - - const onReject = (reason?: any): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#isRejected = true; - if (this.#reject) this.#reject(reason); - }; - - const onCancel = (cancelHandler: () => void): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#cancelHandlers.push(cancelHandler); - }; - - Object.defineProperty(onCancel, 'isResolved', { - get: (): boolean => this.#isResolved, - }); - - Object.defineProperty(onCancel, 'isRejected', { - get: (): boolean => this.#isRejected, - }); - - Object.defineProperty(onCancel, 'isCancelled', { - get: (): boolean => this.#isCancelled, - }); - - return executor(onResolve, onReject, onCancel as OnCancel); - }); - } - - get [Symbol.toStringTag]() { - return "Cancellable Promise"; - } - - public then( - onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, - onRejected?: ((reason: any) => TResult2 | PromiseLike) | null - ): Promise { - return this.#promise.then(onFulfilled, onRejected); - } - - public catch( - onRejected?: ((reason: any) => TResult | PromiseLike) | null - ): Promise { - return this.#promise.catch(onRejected); - } - - public finally(onFinally?: (() => void) | null): Promise { - return this.#promise.finally(onFinally); - } - - public cancel(): void { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#isCancelled = true; - if (this.#cancelHandlers.length) { - try { - for (const cancelHandler of this.#cancelHandlers) { - cancelHandler(); - } - } catch (error) { - console.warn('Cancellation threw an error', error); - return; - } - } - this.#cancelHandlers.length = 0; - if (this.#reject) this.#reject(new CancelError('Request aborted')); - } - - public get isCancelled(): boolean { - return this.#isCancelled; - } -} diff --git a/src/chongming-web/src/api/generated/core/OpenAPI.ts b/src/chongming-web/src/api/generated/core/OpenAPI.ts deleted file mode 100644 index 414d47e..0000000 --- a/src/chongming-web/src/api/generated/core/OpenAPI.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ApiRequestOptions } from './ApiRequestOptions'; - -type Resolver = (options: ApiRequestOptions) => Promise; -type Headers = Record; - -export type OpenAPIConfig = { - BASE: string; - VERSION: string; - WITH_CREDENTIALS: boolean; - CREDENTIALS: 'include' | 'omit' | 'same-origin'; - TOKEN?: string | Resolver | undefined; - USERNAME?: string | Resolver | undefined; - PASSWORD?: string | Resolver | undefined; - HEADERS?: Headers | Resolver | undefined; - ENCODE_PATH?: ((path: string) => string) | undefined; -}; - -export const OpenAPI: OpenAPIConfig = { - BASE: '', - VERSION: 'chongming', - WITH_CREDENTIALS: false, - CREDENTIALS: 'include', - TOKEN: undefined, - USERNAME: undefined, - PASSWORD: undefined, - HEADERS: undefined, - ENCODE_PATH: undefined, -}; diff --git a/src/chongming-web/src/api/generated/core/auth.gen.ts b/src/chongming-web/src/api/generated/core/auth.gen.ts new file mode 100644 index 0000000..3ebf994 --- /dev/null +++ b/src/chongming-web/src/api/generated/core/auth.gen.ts @@ -0,0 +1,41 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type AuthToken = string | undefined; + +export interface Auth { + /** + * Which part of the request do we use to send the auth? + * + * @default 'header' + */ + in?: 'header' | 'query' | 'cookie'; + /** + * Header or query parameter name. + * + * @default 'Authorization' + */ + name?: string; + scheme?: 'basic' | 'bearer'; + type: 'apiKey' | 'http'; +} + +export const getAuthToken = async ( + auth: Auth, + callback: ((auth: Auth) => Promise | AuthToken) | AuthToken, +): Promise => { + const token = typeof callback === 'function' ? await callback(auth) : callback; + + if (!token) { + return; + } + + if (auth.scheme === 'bearer') { + return `Bearer ${token}`; + } + + if (auth.scheme === 'basic') { + return `Basic ${btoa(token)}`; + } + + return token; +}; diff --git a/src/chongming-web/src/api/generated/core/bodySerializer.gen.ts b/src/chongming-web/src/api/generated/core/bodySerializer.gen.ts new file mode 100644 index 0000000..67daca6 --- /dev/null +++ b/src/chongming-web/src/api/generated/core/bodySerializer.gen.ts @@ -0,0 +1,82 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen'; + +export type QuerySerializer = (query: Record) => string; + +export type BodySerializer = (body: unknown) => unknown; + +type QuerySerializerOptionsObject = { + allowReserved?: boolean; + array?: Partial>; + object?: Partial>; +}; + +export type QuerySerializerOptions = QuerySerializerOptionsObject & { + /** + * Per-parameter serialization overrides. When provided, these settings + * override the global array/object settings for specific parameter names. + */ + parameters?: Record; +}; + +const serializeFormDataPair = (data: FormData, key: string, value: unknown): void => { + if (typeof value === 'string' || value instanceof Blob) { + data.append(key, value); + } else if (value instanceof Date) { + data.append(key, value.toISOString()); + } else { + data.append(key, JSON.stringify(value)); + } +}; + +const serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => { + if (typeof value === 'string') { + data.append(key, value); + } else { + data.append(key, JSON.stringify(value)); + } +}; + +export const formDataBodySerializer = { + bodySerializer: (body: unknown): FormData => { + const data = new FormData(); + + Object.entries(body as Record).forEach(([key, value]) => { + if (value === undefined || value === null) { + return; + } + if (Array.isArray(value)) { + value.forEach((v) => serializeFormDataPair(data, key, v)); + } else { + serializeFormDataPair(data, key, value); + } + }); + + return data; + }, +}; + +export const jsonBodySerializer = { + bodySerializer: (body: unknown): string => + JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)), +}; + +export const urlSearchParamsBodySerializer = { + bodySerializer: (body: unknown): string => { + const data = new URLSearchParams(); + + Object.entries(body as Record).forEach(([key, value]) => { + if (value === undefined || value === null) { + return; + } + if (Array.isArray(value)) { + value.forEach((v) => serializeUrlSearchParamsPair(data, key, v)); + } else { + serializeUrlSearchParamsPair(data, key, value); + } + }); + + return data.toString(); + }, +}; diff --git a/src/chongming-web/src/api/generated/core/params.gen.ts b/src/chongming-web/src/api/generated/core/params.gen.ts new file mode 100644 index 0000000..7955601 --- /dev/null +++ b/src/chongming-web/src/api/generated/core/params.gen.ts @@ -0,0 +1,169 @@ +// This file is auto-generated by @hey-api/openapi-ts + +type Slot = 'body' | 'headers' | 'path' | 'query'; + +export type Field = + | { + in: Exclude; + /** + * Field name. This is the name we want the user to see and use. + */ + key: string; + /** + * Field mapped name. This is the name we want to use in the request. + * If omitted, we use the same value as `key`. + */ + map?: string; + } + | { + in: Extract; + /** + * Key isn't required for bodies. + */ + key?: string; + map?: string; + } + | { + /** + * Field name. This is the name we want the user to see and use. + */ + key: string; + /** + * Field mapped name. This is the name we want to use in the request. + * If `in` is omitted, `map` aliases `key` to the transport layer. + */ + map: Slot; + }; + +export interface Fields { + allowExtra?: Partial>; + args?: ReadonlyArray; +} + +export type FieldsConfig = ReadonlyArray; + +const extraPrefixesMap: Record = { + $body_: 'body', + $headers_: 'headers', + $path_: 'path', + $query_: 'query', +}; +const extraPrefixes = Object.entries(extraPrefixesMap); + +type KeyMap = Map< + string, + | { + in: Slot; + map?: string; + } + | { + in?: never; + map: Slot; + } +>; + +const buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => { + if (!map) { + map = new Map(); + } + + for (const config of fields) { + if ('in' in config) { + if (config.key) { + map.set(config.key, { + in: config.in, + map: config.map, + }); + } + } else if ('key' in config) { + map.set(config.key, { + map: config.map, + }); + } else if (config.args) { + buildKeyMap(config.args, map); + } + } + + return map; +}; + +interface Params { + body: unknown; + headers: Record; + path: Record; + query: Record; +} + +const stripEmptySlots = (params: Params) => { + for (const [slot, value] of Object.entries(params)) { + if (value && typeof value === 'object' && !Array.isArray(value) && !Object.keys(value).length) { + delete params[slot as Slot]; + } + } +}; + +export const buildClientParams = (args: ReadonlyArray, fields: FieldsConfig) => { + const params: Params = { + body: {}, + headers: {}, + path: {}, + query: {}, + }; + + const map = buildKeyMap(fields); + + let config: FieldsConfig[number] | undefined; + + for (const [index, arg] of args.entries()) { + if (fields[index]) { + config = fields[index]; + } + + if (!config) { + continue; + } + + if ('in' in config) { + if (config.key) { + const field = map.get(config.key)!; + const name = field.map || config.key; + if (field.in) { + (params[field.in] as Record)[name] = arg; + } + } else { + params.body = arg; + } + } else { + for (const [key, value] of Object.entries(arg ?? {})) { + const field = map.get(key); + + if (field) { + if (field.in) { + const name = field.map || key; + (params[field.in] as Record)[name] = value; + } else { + params[field.map] = value; + } + } else { + const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix)); + + if (extra) { + const [prefix, slot] = extra; + (params[slot] as Record)[key.slice(prefix.length)] = value; + } else if ('allowExtra' in config && config.allowExtra) { + for (const [slot, allowed] of Object.entries(config.allowExtra)) { + if (allowed) { + (params[slot as Slot] as Record)[key] = value; + break; + } + } + } + } + } + } + } + + stripEmptySlots(params); + + return params; +}; diff --git a/src/chongming-web/src/api/generated/core/pathSerializer.gen.ts b/src/chongming-web/src/api/generated/core/pathSerializer.gen.ts new file mode 100644 index 0000000..994b284 --- /dev/null +++ b/src/chongming-web/src/api/generated/core/pathSerializer.gen.ts @@ -0,0 +1,171 @@ +// This file is auto-generated by @hey-api/openapi-ts + +interface SerializeOptions extends SerializePrimitiveOptions, SerializerOptions {} + +interface SerializePrimitiveOptions { + allowReserved?: boolean; + name: string; +} + +export interface SerializerOptions { + /** + * @default true + */ + explode: boolean; + style: T; +} + +export type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited'; +export type ArraySeparatorStyle = ArrayStyle | MatrixStyle; +type MatrixStyle = 'label' | 'matrix' | 'simple'; +export type ObjectStyle = 'form' | 'deepObject'; +type ObjectSeparatorStyle = ObjectStyle | MatrixStyle; + +interface SerializePrimitiveParam extends SerializePrimitiveOptions { + value: string; +} + +export const separatorArrayExplode = (style: ArraySeparatorStyle) => { + switch (style) { + case 'label': + return '.'; + case 'matrix': + return ';'; + case 'simple': + return ','; + default: + return '&'; + } +}; + +export const separatorArrayNoExplode = (style: ArraySeparatorStyle) => { + switch (style) { + case 'form': + return ','; + case 'pipeDelimited': + return '|'; + case 'spaceDelimited': + return '%20'; + default: + return ','; + } +}; + +export const separatorObjectExplode = (style: ObjectSeparatorStyle) => { + switch (style) { + case 'label': + return '.'; + case 'matrix': + return ';'; + case 'simple': + return ','; + default: + return '&'; + } +}; + +export const serializeArrayParam = ({ + allowReserved, + explode, + name, + style, + value, +}: SerializeOptions & { + value: unknown[]; +}) => { + if (!explode) { + const joinedValues = ( + allowReserved ? value : value.map((v) => encodeURIComponent(v as string)) + ).join(separatorArrayNoExplode(style)); + switch (style) { + case 'label': + return `.${joinedValues}`; + case 'matrix': + return `;${name}=${joinedValues}`; + case 'simple': + return joinedValues; + default: + return `${name}=${joinedValues}`; + } + } + + const separator = separatorArrayExplode(style); + const joinedValues = value + .map((v) => { + if (style === 'label' || style === 'simple') { + return allowReserved ? v : encodeURIComponent(v as string); + } + + return serializePrimitiveParam({ + allowReserved, + name, + value: v as string, + }); + }) + .join(separator); + return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues; +}; + +export const serializePrimitiveParam = ({ + allowReserved, + name, + value, +}: SerializePrimitiveParam) => { + if (value === undefined || value === null) { + return ''; + } + + if (typeof value === 'object') { + throw new Error( + 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.', + ); + } + + return `${name}=${allowReserved ? value : encodeURIComponent(value)}`; +}; + +export const serializeObjectParam = ({ + allowReserved, + explode, + name, + style, + value, + valueOnly, +}: SerializeOptions & { + value: Record | Date; + valueOnly?: boolean; +}) => { + if (value instanceof Date) { + return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`; + } + + if (style !== 'deepObject' && !explode) { + let values: string[] = []; + Object.entries(value).forEach(([key, v]) => { + values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)]; + }); + const joinedValues = values.join(','); + switch (style) { + case 'form': + return `${name}=${joinedValues}`; + case 'label': + return `.${joinedValues}`; + case 'matrix': + return `;${name}=${joinedValues}`; + default: + return joinedValues; + } + } + + const separator = separatorObjectExplode(style); + const joinedValues = Object.entries(value) + .map(([key, v]) => + serializePrimitiveParam({ + allowReserved, + name: style === 'deepObject' ? `${name}[${key}]` : key, + value: v as string, + }), + ) + .join(separator); + return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues; +}; diff --git a/src/chongming-web/src/api/generated/core/queryKeySerializer.gen.ts b/src/chongming-web/src/api/generated/core/queryKeySerializer.gen.ts new file mode 100644 index 0000000..5000df6 --- /dev/null +++ b/src/chongming-web/src/api/generated/core/queryKeySerializer.gen.ts @@ -0,0 +1,117 @@ +// This file is auto-generated by @hey-api/openapi-ts + +/** + * JSON-friendly union that mirrors what Pinia Colada can hash. + */ +export type JsonValue = + | null + | string + | number + | boolean + | JsonValue[] + | { [key: string]: JsonValue }; + +/** + * Replacer that converts non-JSON values (bigint, Date, etc.) to safe substitutes. + */ +export const queryKeyJsonReplacer = (_key: string, value: unknown) => { + if (value === undefined || typeof value === 'function' || typeof value === 'symbol') { + return undefined; + } + if (typeof value === 'bigint') { + return value.toString(); + } + if (value instanceof Date) { + return value.toISOString(); + } + return value; +}; + +/** + * Safely stringifies a value and parses it back into a JsonValue. + */ +export const stringifyToJsonValue = (input: unknown): JsonValue | undefined => { + try { + const json = JSON.stringify(input, queryKeyJsonReplacer); + if (json === undefined) { + return undefined; + } + return JSON.parse(json) as JsonValue; + } catch { + return undefined; + } +}; + +/** + * Detects plain objects (including objects with a null prototype). + */ +const isPlainObject = (value: unknown): value is Record => { + if (value === null || typeof value !== 'object') { + return false; + } + const prototype = Object.getPrototypeOf(value as object); + return prototype === Object.prototype || prototype === null; +}; + +/** + * Turns URLSearchParams into a sorted JSON object for deterministic keys. + */ +const serializeSearchParams = (params: URLSearchParams): JsonValue => { + const entries = Array.from(params.entries()).sort(([a], [b]) => a.localeCompare(b)); + const result: Record = {}; + + for (const [key, value] of entries) { + const existing = result[key]; + if (existing === undefined) { + result[key] = value; + continue; + } + + if (Array.isArray(existing)) { + (existing as string[]).push(value); + } else { + result[key] = [existing, value]; + } + } + + return result; +}; + +/** + * Normalizes any accepted value into a JSON-friendly shape for query keys. + */ +export const serializeQueryKeyValue = (value: unknown): JsonValue | undefined => { + if (value === null) { + return null; + } + + if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { + return value; + } + + if (value === undefined || typeof value === 'function' || typeof value === 'symbol') { + return undefined; + } + + if (typeof value === 'bigint') { + return value.toString(); + } + + if (value instanceof Date) { + return value.toISOString(); + } + + if (Array.isArray(value)) { + return stringifyToJsonValue(value); + } + + if (typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams) { + return serializeSearchParams(value); + } + + if (isPlainObject(value)) { + return stringifyToJsonValue(value); + } + + return undefined; +}; diff --git a/src/chongming-web/src/api/generated/core/request.ts b/src/chongming-web/src/api/generated/core/request.ts deleted file mode 100644 index f83d711..0000000 --- a/src/chongming-web/src/api/generated/core/request.ts +++ /dev/null @@ -1,322 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import { ApiError } from './ApiError'; -import type { ApiRequestOptions } from './ApiRequestOptions'; -import type { ApiResult } from './ApiResult'; -import { CancelablePromise } from './CancelablePromise'; -import type { OnCancel } from './CancelablePromise'; -import type { OpenAPIConfig } from './OpenAPI'; - -export const isDefined = (value: T | null | undefined): value is Exclude => { - return value !== undefined && value !== null; -}; - -export const isString = (value: any): value is string => { - return typeof value === 'string'; -}; - -export const isStringWithValue = (value: any): value is string => { - return isString(value) && value !== ''; -}; - -export const isBlob = (value: any): value is Blob => { - return ( - typeof value === 'object' && - typeof value.type === 'string' && - typeof value.stream === 'function' && - typeof value.arrayBuffer === 'function' && - typeof value.constructor === 'function' && - typeof value.constructor.name === 'string' && - /^(Blob|File)$/.test(value.constructor.name) && - /^(Blob|File)$/.test(value[Symbol.toStringTag]) - ); -}; - -export const isFormData = (value: any): value is FormData => { - return value instanceof FormData; -}; - -export const base64 = (str: string): string => { - try { - return btoa(str); - } catch (err) { - // @ts-ignore - return Buffer.from(str).toString('base64'); - } -}; - -export const getQueryString = (params: Record): string => { - const qs: string[] = []; - - const append = (key: string, value: any) => { - qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); - }; - - const process = (key: string, value: any) => { - if (isDefined(value)) { - if (Array.isArray(value)) { - value.forEach(v => { - process(key, v); - }); - } else if (typeof value === 'object') { - Object.entries(value).forEach(([k, v]) => { - process(`${key}[${k}]`, v); - }); - } else { - append(key, value); - } - } - }; - - Object.entries(params).forEach(([key, value]) => { - process(key, value); - }); - - if (qs.length > 0) { - return `?${qs.join('&')}`; - } - - return ''; -}; - -const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => { - const encoder = config.ENCODE_PATH || encodeURI; - - const path = options.url - .replace('{api-version}', config.VERSION) - .replace(/{(.*?)}/g, (substring: string, group: string) => { - if (options.path?.hasOwnProperty(group)) { - return encoder(String(options.path[group])); - } - return substring; - }); - - const url = `${config.BASE}${path}`; - if (options.query) { - return `${url}${getQueryString(options.query)}`; - } - return url; -}; - -export const getFormData = (options: ApiRequestOptions): FormData | undefined => { - if (options.formData) { - const formData = new FormData(); - - const process = (key: string, value: any) => { - if (isString(value) || isBlob(value)) { - formData.append(key, value); - } else { - formData.append(key, JSON.stringify(value)); - } - }; - - Object.entries(options.formData) - .filter(([_, value]) => isDefined(value)) - .forEach(([key, value]) => { - if (Array.isArray(value)) { - value.forEach(v => process(key, v)); - } else { - process(key, value); - } - }); - - return formData; - } - return undefined; -}; - -type Resolver = (options: ApiRequestOptions) => Promise; - -export const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => { - if (typeof resolver === 'function') { - return (resolver as Resolver)(options); - } - return resolver; -}; - -export const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => { - const [token, username, password, additionalHeaders] = await Promise.all([ - resolve(options, config.TOKEN), - resolve(options, config.USERNAME), - resolve(options, config.PASSWORD), - resolve(options, config.HEADERS), - ]); - - const headers = Object.entries({ - Accept: 'application/json', - ...additionalHeaders, - ...options.headers, - }) - .filter(([_, value]) => isDefined(value)) - .reduce((headers, [key, value]) => ({ - ...headers, - [key]: String(value), - }), {} as Record); - - if (isStringWithValue(token)) { - headers['Authorization'] = `Bearer ${token}`; - } - - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers['Authorization'] = `Basic ${credentials}`; - } - - if (options.body !== undefined) { - if (options.mediaType) { - headers['Content-Type'] = options.mediaType; - } else if (isBlob(options.body)) { - headers['Content-Type'] = options.body.type || 'application/octet-stream'; - } else if (isString(options.body)) { - headers['Content-Type'] = 'text/plain'; - } else if (!isFormData(options.body)) { - headers['Content-Type'] = 'application/json'; - } - } - - return new Headers(headers); -}; - -export const getRequestBody = (options: ApiRequestOptions): any => { - if (options.body !== undefined) { - if (options.mediaType?.includes('/json')) { - return JSON.stringify(options.body) - } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { - return options.body; - } else { - return JSON.stringify(options.body); - } - } - return undefined; -}; - -export const sendRequest = async ( - config: OpenAPIConfig, - options: ApiRequestOptions, - url: string, - body: any, - formData: FormData | undefined, - headers: Headers, - onCancel: OnCancel -): Promise => { - const controller = new AbortController(); - - const request: RequestInit = { - headers, - body: body ?? formData, - method: options.method, - signal: controller.signal, - }; - - if (config.WITH_CREDENTIALS) { - request.credentials = config.CREDENTIALS; - } - - onCancel(() => controller.abort()); - - return await fetch(url, request); -}; - -export const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => { - if (responseHeader) { - const content = response.headers.get(responseHeader); - if (isString(content)) { - return content; - } - } - return undefined; -}; - -export const getResponseBody = async (response: Response): Promise => { - if (response.status !== 204) { - try { - const contentType = response.headers.get('Content-Type'); - if (contentType) { - const jsonTypes = ['application/json', 'application/problem+json'] - const isJSON = jsonTypes.some(type => contentType.toLowerCase().startsWith(type)); - if (isJSON) { - return await response.json(); - } else { - return await response.text(); - } - } - } catch (error) { - console.error(error); - } - } - return undefined; -}; - -export const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => { - const errors: Record = { - 400: 'Bad Request', - 401: 'Unauthorized', - 403: 'Forbidden', - 404: 'Not Found', - 500: 'Internal Server Error', - 502: 'Bad Gateway', - 503: 'Service Unavailable', - ...options.errors, - } - - const error = errors[result.status]; - if (error) { - throw new ApiError(options, result, error); - } - - if (!result.ok) { - const errorStatus = result.status ?? 'unknown'; - const errorStatusText = result.statusText ?? 'unknown'; - const errorBody = (() => { - try { - return JSON.stringify(result.body, null, 2); - } catch (e) { - return undefined; - } - })(); - - throw new ApiError(options, result, - `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}` - ); - } -}; - -/** - * Request method - * @param config The OpenAPI configuration object - * @param options The request options from the service - * @returns CancelablePromise - * @throws ApiError - */ -export const request = (config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise => { - return new CancelablePromise(async (resolve, reject, onCancel) => { - try { - const url = getUrl(config, options); - const formData = getFormData(options); - const body = getRequestBody(options); - const headers = await getHeaders(config, options); - - if (!onCancel.isCancelled) { - const response = await sendRequest(config, options, url, body, formData, headers, onCancel); - const responseBody = await getResponseBody(response); - const responseHeader = getResponseHeader(response, options.responseHeader); - - const result: ApiResult = { - url, - ok: response.ok, - status: response.status, - statusText: response.statusText, - body: responseHeader ?? responseBody, - }; - - catchErrorCodes(options, result); - - resolve(result.body); - } - } catch (error) { - reject(error); - } - }); -}; diff --git a/src/chongming-web/src/api/generated/core/serverSentEvents.gen.ts b/src/chongming-web/src/api/generated/core/serverSentEvents.gen.ts new file mode 100644 index 0000000..ddf3c4d --- /dev/null +++ b/src/chongming-web/src/api/generated/core/serverSentEvents.gen.ts @@ -0,0 +1,242 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { Config } from './types.gen'; + +export type ServerSentEventsOptions = Omit & + Pick & { + /** + * Fetch API implementation. You can use this option to provide a custom + * fetch instance. + * + * @default globalThis.fetch + */ + fetch?: typeof fetch; + /** + * Implementing clients can call request interceptors inside this hook. + */ + onRequest?: (url: string, init: RequestInit) => Promise; + /** + * Callback invoked when a network or parsing error occurs during streaming. + * + * This option applies only if the endpoint returns a stream of events. + * + * @param error The error that occurred. + */ + onSseError?: (error: unknown) => void; + /** + * Callback invoked when an event is streamed from the server. + * + * This option applies only if the endpoint returns a stream of events. + * + * @param event Event streamed from the server. + * @returns Nothing (void). + */ + onSseEvent?: (event: StreamEvent) => void; + serializedBody?: RequestInit['body']; + /** + * Default retry delay in milliseconds. + * + * This option applies only if the endpoint returns a stream of events. + * + * @default 3000 + */ + sseDefaultRetryDelay?: number; + /** + * Maximum number of retry attempts before giving up. + */ + sseMaxRetryAttempts?: number; + /** + * Maximum retry delay in milliseconds. + * + * Applies only when exponential backoff is used. + * + * This option applies only if the endpoint returns a stream of events. + * + * @default 30000 + */ + sseMaxRetryDelay?: number; + /** + * Optional sleep function for retry backoff. + * + * Defaults to using `setTimeout`. + */ + sseSleepFn?: (ms: number) => Promise; + url: string; + }; + +export interface StreamEvent { + data: TData; + event?: string; + id?: string; + retry?: number; +} + +export type ServerSentEventsResult = { + stream: AsyncGenerator< + TData extends Record ? TData[keyof TData] : TData, + TReturn, + TNext + >; +}; + +export function createSseClient({ + onRequest, + onSseError, + onSseEvent, + responseTransformer, + responseValidator, + sseDefaultRetryDelay, + sseMaxRetryAttempts, + sseMaxRetryDelay, + sseSleepFn, + url, + ...options +}: ServerSentEventsOptions): ServerSentEventsResult { + let lastEventId: string | undefined; + + const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms))); + + const createStream = async function* () { + let retryDelay: number = sseDefaultRetryDelay ?? 3000; + let attempt = 0; + const signal = options.signal ?? new AbortController().signal; + + while (true) { + if (signal.aborted) break; + + attempt++; + + const headers = + options.headers instanceof Headers + ? options.headers + : new Headers(options.headers as Record | undefined); + + if (lastEventId !== undefined) { + headers.set('Last-Event-ID', lastEventId); + } + + try { + const requestInit: RequestInit = { + redirect: 'follow', + ...options, + body: options.serializedBody, + headers, + signal, + }; + let request = new Request(url, requestInit); + if (onRequest) { + request = await onRequest(url, requestInit); + } + // fetch must be assigned here, otherwise it would throw the error: + // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation + const _fetch = options.fetch ?? globalThis.fetch; + const response = await _fetch(request); + + if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`); + + if (!response.body) throw new Error('No body in SSE response'); + + const reader = response.body.pipeThrough(new TextDecoderStream()).getReader(); + + let buffer = ''; + + const abortHandler = () => { + try { + reader.cancel(); + } catch { + // noop + } + }; + + signal.addEventListener('abort', abortHandler); + + try { + while (true) { + const { done, value } = await reader.read(); + if (done) break; + buffer += value; + buffer = buffer.replace(/\r\n?/g, '\n'); // normalize line endings + + const chunks = buffer.split('\n\n'); + buffer = chunks.pop() ?? ''; + + for (const chunk of chunks) { + const lines = chunk.split('\n'); + const dataLines: Array = []; + let eventName: string | undefined; + + for (const line of lines) { + if (line.startsWith('data:')) { + dataLines.push(line.replace(/^data:\s*/, '')); + } else if (line.startsWith('event:')) { + eventName = line.replace(/^event:\s*/, ''); + } else if (line.startsWith('id:')) { + lastEventId = line.replace(/^id:\s*/, ''); + } else if (line.startsWith('retry:')) { + const parsed = Number.parseInt(line.replace(/^retry:\s*/, ''), 10); + if (!Number.isNaN(parsed)) { + retryDelay = parsed; + } + } + } + + let data: unknown; + let parsedJson = false; + + if (dataLines.length) { + const rawData = dataLines.join('\n'); + try { + data = JSON.parse(rawData); + parsedJson = true; + } catch { + data = rawData; + } + } + + if (parsedJson) { + if (responseValidator) { + await responseValidator(data); + } + + if (responseTransformer) { + data = await responseTransformer(data); + } + } + + onSseEvent?.({ + data, + event: eventName, + id: lastEventId, + retry: retryDelay, + }); + + if (dataLines.length) { + yield data as any; + } + } + } + } finally { + signal.removeEventListener('abort', abortHandler); + reader.releaseLock(); + } + + break; // exit loop on normal completion + } catch (error) { + // connection failed or aborted; retry after delay + onSseError?.(error); + + if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) { + break; // stop after firing error + } + + // exponential backoff: double retry each attempt, cap at 30s + const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000); + await sleep(backoff); + } + } + }; + + const stream = createStream(); + + return { stream }; +} diff --git a/src/chongming-web/src/api/generated/core/types.gen.ts b/src/chongming-web/src/api/generated/core/types.gen.ts new file mode 100644 index 0000000..9efe71d --- /dev/null +++ b/src/chongming-web/src/api/generated/core/types.gen.ts @@ -0,0 +1,104 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { Auth, AuthToken } from './auth.gen'; +import type { BodySerializer, QuerySerializer, QuerySerializerOptions } from './bodySerializer.gen'; + +export type HttpMethod = + | 'connect' + | 'delete' + | 'get' + | 'head' + | 'options' + | 'patch' + | 'post' + | 'put' + | 'trace'; + +export type Client< + RequestFn = never, + Config = unknown, + MethodFn = never, + BuildUrlFn = never, + SseFn = never, +> = { + /** + * Returns the final request URL. + */ + buildUrl: BuildUrlFn; + getConfig: () => Config; + request: RequestFn; + setConfig: (config: Config) => Config; +} & { + [K in HttpMethod]: MethodFn; +} & ([SseFn] extends [never] ? { sse?: never } : { sse: { [K in HttpMethod]: SseFn } }); + +export interface Config { + /** + * Auth token or a function returning auth token. The resolved value will be + * added to the request payload as defined by its `security` array. + */ + auth?: ((auth: Auth) => Promise | AuthToken) | AuthToken; + /** + * A function for serializing request body parameter. By default, + * {@link JSON.stringify()} will be used. + */ + bodySerializer?: BodySerializer | null; + /** + * An object containing any HTTP headers that you want to pre-populate your + * `Headers` object with. + * + * {@link https://developer.mozilla.org/docs/Web/API/Headers/Headers#init See more} + */ + headers?: + | RequestInit['headers'] + | Record< + string, + string | number | boolean | (string | number | boolean)[] | null | undefined | unknown + >; + /** + * The request method. + * + * {@link https://developer.mozilla.org/docs/Web/API/fetch#method See more} + */ + method?: Uppercase; + /** + * A function for serializing request query parameters. By default, arrays + * will be exploded in form style, objects will be exploded in deepObject + * style, and reserved characters are percent-encoded. + * + * This method will have no effect if the native `paramsSerializer()` Axios + * API function is used. + * + * {@link https://swagger.io/docs/specification/serialization/#query View examples} + */ + querySerializer?: QuerySerializer | QuerySerializerOptions; + /** + * A function validating request data. This is useful if you want to ensure + * the request conforms to the desired shape, so it can be safely sent to + * the server. + */ + requestValidator?: (data: unknown) => Promise; + /** + * A function transforming response data before it's returned. This is useful + * for post-processing data, e.g., converting ISO strings into Date objects. + */ + responseTransformer?: (data: unknown) => Promise; + /** + * A function validating response data. This is useful if you want to ensure + * the response conforms to the desired shape, so it can be safely passed to + * the transformers and returned to the user. + */ + responseValidator?: (data: unknown) => Promise; +} + +type IsExactlyNeverOrNeverUndefined = [T] extends [never] + ? true + : [T] extends [never | undefined] + ? [undefined] extends [T] + ? false + : true + : false; + +export type OmitNever> = { + [K in keyof T as IsExactlyNeverOrNeverUndefined extends true ? never : K]: T[K]; +}; diff --git a/src/chongming-web/src/api/generated/core/utils.gen.ts b/src/chongming-web/src/api/generated/core/utils.gen.ts new file mode 100644 index 0000000..9a4fec7 --- /dev/null +++ b/src/chongming-web/src/api/generated/core/utils.gen.ts @@ -0,0 +1,140 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { BodySerializer, QuerySerializer } from './bodySerializer.gen'; +import { + type ArraySeparatorStyle, + serializeArrayParam, + serializeObjectParam, + serializePrimitiveParam, +} from './pathSerializer.gen'; + +export interface PathSerializer { + path: Record; + url: string; +} + +export const PATH_PARAM_RE = /\{[^{}]+\}/g; + +export const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { + let url = _url; + const matches = _url.match(PATH_PARAM_RE); + if (matches) { + for (const match of matches) { + let explode = false; + let name = match.substring(1, match.length - 1); + let style: ArraySeparatorStyle = 'simple'; + + if (name.endsWith('*')) { + explode = true; + name = name.substring(0, name.length - 1); + } + + if (name.startsWith('.')) { + name = name.substring(1); + style = 'label'; + } else if (name.startsWith(';')) { + name = name.substring(1); + style = 'matrix'; + } + + const value = path[name]; + + if (value === undefined || value === null) { + continue; + } + + if (Array.isArray(value)) { + url = url.replace(match, serializeArrayParam({ explode, name, style, value })); + continue; + } + + if (typeof value === 'object') { + url = url.replace( + match, + serializeObjectParam({ + explode, + name, + style, + value: value as Record, + valueOnly: true, + }), + ); + continue; + } + + if (style === 'matrix') { + url = url.replace( + match, + `;${serializePrimitiveParam({ + name, + value: value as string, + })}`, + ); + continue; + } + + const replaceValue = encodeURIComponent( + style === 'label' ? `.${value as string}` : (value as string), + ); + url = url.replace(match, replaceValue); + } + } + return url; +}; + +export const getUrl = ({ + baseUrl, + path, + query, + querySerializer, + url: _url, +}: { + baseUrl?: string; + path?: Record; + query?: Record; + querySerializer: QuerySerializer; + url: string; +}) => { + const pathUrl = _url.startsWith('/') ? _url : `/${_url}`; + let url = (baseUrl ?? '') + pathUrl; + if (path) { + url = defaultPathSerializer({ path, url }); + } + let search = query ? querySerializer(query) : ''; + if (search.startsWith('?')) { + search = search.substring(1); + } + if (search) { + url += `?${search}`; + } + return url; +}; + +export function getValidRequestBody(options: { + body?: unknown; + bodySerializer?: BodySerializer | null; + serializedBody?: unknown; +}) { + const hasBody = options.body !== undefined; + const isSerializedBody = hasBody && options.bodySerializer; + + if (isSerializedBody) { + if ('serializedBody' in options) { + const hasSerializedBody = + options.serializedBody !== undefined && options.serializedBody !== ''; + + return hasSerializedBody ? options.serializedBody : null; + } + + // not all clients implement a serializedBody property (i.e., client-axios) + return options.body !== '' ? options.body : null; + } + + // plain/text body + if (hasBody) { + return options.body; + } + + // no body was provided + return undefined; +} diff --git a/src/chongming-web/src/api/generated/index.ts b/src/chongming-web/src/api/generated/index.ts index 0747deb..b2e5c2a 100644 --- a/src/chongming-web/src/api/generated/index.ts +++ b/src/chongming-web/src/api/generated/index.ts @@ -1,24 +1,4 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -export { ApiError } from './core/ApiError'; -export { CancelablePromise, CancelError } from './core/CancelablePromise'; -export { OpenAPI } from './core/OpenAPI'; -export type { OpenAPIConfig } from './core/OpenAPI'; +// This file is auto-generated by @hey-api/openapi-ts -export type { HTTPValidationError } from './models/HTTPValidationError'; -export type { RefreshTokenResponse } from './models/RefreshTokenResponse'; -export type { TaskRequest } from './models/TaskRequest'; -export type { TodoCreate } from './models/TodoCreate'; -export type { TodoRead } from './models/TodoRead'; -export type { TodoUpdate } from './models/TodoUpdate'; -export type { TokenResponse } from './models/TokenResponse'; -export type { UserCreate } from './models/UserCreate'; -export type { UserLogin } from './models/UserLogin'; -export type { UserRead } from './models/UserRead'; -export type { ValidationError } from './models/ValidationError'; - -export { AuthenticationService } from './services/AuthenticationService'; -export { DefaultService } from './services/DefaultService'; -export { TodoService } from './services/TodoService'; +export { createTodoApiV1TodosPost, deleteTodoApiV1TodosTodoIdDelete, getCurrentUserInfoApiV1AuthMeGet, getSessionsApiV1AuthSessionsGet, loginApiV1AuthLoginPost, logoutAllApiV1AuthLogoutAllPost, logoutApiV1AuthLogoutPost, type Options, readTodoApiV1TodosTodoIdGet, readTodosApiV1TodosGet, refreshTokenApiV1AuthRefreshPost, registerApiV1AuthRegisterPost, rootGet, updateTodoApiV1TodosTodoIdPatch, uploadImageApiV1UploadImagePost } from './sdk.gen'; +export type { BodyUploadImageApiV1UploadImagePost, ClientOptions, CreateTodoApiV1TodosPostData, CreateTodoApiV1TodosPostError, CreateTodoApiV1TodosPostErrors, CreateTodoApiV1TodosPostResponse, CreateTodoApiV1TodosPostResponses, DeleteTodoApiV1TodosTodoIdDeleteData, DeleteTodoApiV1TodosTodoIdDeleteError, DeleteTodoApiV1TodosTodoIdDeleteErrors, DeleteTodoApiV1TodosTodoIdDeleteResponses, Detail, GetCurrentUserInfoApiV1AuthMeGetData, GetCurrentUserInfoApiV1AuthMeGetError, GetCurrentUserInfoApiV1AuthMeGetErrors, GetCurrentUserInfoApiV1AuthMeGetResponse, GetCurrentUserInfoApiV1AuthMeGetResponses, GetSessionsApiV1AuthSessionsGetData, GetSessionsApiV1AuthSessionsGetResponses, HttpError, HttpValidationError, LoginApiV1AuthLoginPostData, LoginApiV1AuthLoginPostError, LoginApiV1AuthLoginPostErrors, LoginApiV1AuthLoginPostResponse, LoginApiV1AuthLoginPostResponses, LogoutAllApiV1AuthLogoutAllPostData, LogoutAllApiV1AuthLogoutAllPostResponse, LogoutAllApiV1AuthLogoutAllPostResponses, LogoutApiV1AuthLogoutPostData, LogoutApiV1AuthLogoutPostResponse, LogoutApiV1AuthLogoutPostResponses, ReadTodoApiV1TodosTodoIdGetData, ReadTodoApiV1TodosTodoIdGetError, ReadTodoApiV1TodosTodoIdGetErrors, ReadTodoApiV1TodosTodoIdGetResponse, ReadTodoApiV1TodosTodoIdGetResponses, ReadTodosApiV1TodosGetData, ReadTodosApiV1TodosGetError, ReadTodosApiV1TodosGetErrors, ReadTodosApiV1TodosGetResponse, ReadTodosApiV1TodosGetResponses, RefreshTokenApiV1AuthRefreshPostData, RefreshTokenApiV1AuthRefreshPostError, RefreshTokenApiV1AuthRefreshPostErrors, RefreshTokenApiV1AuthRefreshPostResponse, RefreshTokenApiV1AuthRefreshPostResponses, RefreshTokenResponse, RegisterApiV1AuthRegisterPostData, RegisterApiV1AuthRegisterPostError, RegisterApiV1AuthRegisterPostErrors, RegisterApiV1AuthRegisterPostResponse, RegisterApiV1AuthRegisterPostResponses, RootGetData, RootGetResponses, TodoCreate, TodoRead, TodoUpdate, TokenResponse, UpdateTodoApiV1TodosTodoIdPatchData, UpdateTodoApiV1TodosTodoIdPatchError, UpdateTodoApiV1TodosTodoIdPatchErrors, UpdateTodoApiV1TodosTodoIdPatchResponse, UpdateTodoApiV1TodosTodoIdPatchResponses, UploadImageApiV1UploadImagePostData, UploadImageApiV1UploadImagePostError, UploadImageApiV1UploadImagePostErrors, UploadImageApiV1UploadImagePostResponse, UploadImageApiV1UploadImagePostResponses, UploadResponse, UserCreate, UserLogin, Userlogout, UserRead, ValidationError } from './types.gen'; diff --git a/src/chongming-web/src/api/generated/models/HTTPValidationError.ts b/src/chongming-web/src/api/generated/models/HTTPValidationError.ts deleted file mode 100644 index f9b1a79..0000000 --- a/src/chongming-web/src/api/generated/models/HTTPValidationError.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { ValidationError } from './ValidationError'; -export type HTTPValidationError = { - detail?: Array; -}; - diff --git a/src/chongming-web/src/api/generated/models/RefreshTokenResponse.ts b/src/chongming-web/src/api/generated/models/RefreshTokenResponse.ts deleted file mode 100644 index 289ca28..0000000 --- a/src/chongming-web/src/api/generated/models/RefreshTokenResponse.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -/** - * 刷新 Token 响应模型 - */ -export type RefreshTokenResponse = { - access_token: string; - token_type?: string; -}; - diff --git a/src/chongming-web/src/api/generated/models/TaskRequest.ts b/src/chongming-web/src/api/generated/models/TaskRequest.ts deleted file mode 100644 index 5d1a601..0000000 --- a/src/chongming-web/src/api/generated/models/TaskRequest.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -export type TaskRequest = { - task_name: string; - interval: number; -}; - diff --git a/src/chongming-web/src/api/generated/models/TodoCreate.ts b/src/chongming-web/src/api/generated/models/TodoCreate.ts deleted file mode 100644 index 9e0630c..0000000 --- a/src/chongming-web/src/api/generated/models/TodoCreate.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -export type TodoCreate = { - title: string; - description?: (string | null); - completed?: boolean; -}; - diff --git a/src/chongming-web/src/api/generated/models/TodoRead.ts b/src/chongming-web/src/api/generated/models/TodoRead.ts deleted file mode 100644 index 2c88da7..0000000 --- a/src/chongming-web/src/api/generated/models/TodoRead.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -export type TodoRead = { - title: string; - description?: (string | null); - completed?: boolean; - id: number; -}; - diff --git a/src/chongming-web/src/api/generated/models/TodoUpdate.ts b/src/chongming-web/src/api/generated/models/TodoUpdate.ts deleted file mode 100644 index b6cf6c2..0000000 --- a/src/chongming-web/src/api/generated/models/TodoUpdate.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -export type TodoUpdate = { - title?: (string | null); - description?: (string | null); - completed?: (boolean | null); -}; - diff --git a/src/chongming-web/src/api/generated/models/TokenResponse.ts b/src/chongming-web/src/api/generated/models/TokenResponse.ts deleted file mode 100644 index 38ad91a..0000000 --- a/src/chongming-web/src/api/generated/models/TokenResponse.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -/** - * Token 响应模型 - */ -export type TokenResponse = { - access_token: string; - refresh_token: string; - token_type?: string; - expires_in: number; - refresh_expires_in: number; -}; - diff --git a/src/chongming-web/src/api/generated/models/UserCreate.ts b/src/chongming-web/src/api/generated/models/UserCreate.ts deleted file mode 100644 index 7d269db..0000000 --- a/src/chongming-web/src/api/generated/models/UserCreate.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -/** - * 用户创建模型 - */ -export type UserCreate = { - email: string; - username?: (string | null); - full_name?: (string | null); - is_active?: boolean; - is_superuser?: boolean; - created_at?: (string | null); - password: string; -}; - diff --git a/src/chongming-web/src/api/generated/models/UserLogin.ts b/src/chongming-web/src/api/generated/models/UserLogin.ts deleted file mode 100644 index 717d42c..0000000 --- a/src/chongming-web/src/api/generated/models/UserLogin.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -export type UserLogin = { - email: string; - password: string; -}; - diff --git a/src/chongming-web/src/api/generated/models/UserRead.ts b/src/chongming-web/src/api/generated/models/UserRead.ts deleted file mode 100644 index e802a49..0000000 --- a/src/chongming-web/src/api/generated/models/UserRead.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -/** - * 用户读取模型 - */ -export type UserRead = { - email: string; - username?: (string | null); - full_name?: (string | null); - is_active?: boolean; - is_superuser?: boolean; - created_at?: (string | null); - id: number; -}; - diff --git a/src/chongming-web/src/api/generated/models/ValidationError.ts b/src/chongming-web/src/api/generated/models/ValidationError.ts deleted file mode 100644 index de2cbd7..0000000 --- a/src/chongming-web/src/api/generated/models/ValidationError.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -export type ValidationError = { - loc: Array<(string | number)>; - msg: string; - type: string; - input?: any; - ctx?: Record; -}; - diff --git a/src/chongming-web/src/api/generated/sdk.gen.ts b/src/chongming-web/src/api/generated/sdk.gen.ts new file mode 100644 index 0000000..863f1ed --- /dev/null +++ b/src/chongming-web/src/api/generated/sdk.gen.ts @@ -0,0 +1,166 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import { type Client, formDataBodySerializer, type Options as Options2, type TDataShape } from './client'; +import { client } from './client.gen'; +import type { CreateTodoApiV1TodosPostData, CreateTodoApiV1TodosPostErrors, CreateTodoApiV1TodosPostResponses, DeleteTodoApiV1TodosTodoIdDeleteData, DeleteTodoApiV1TodosTodoIdDeleteErrors, DeleteTodoApiV1TodosTodoIdDeleteResponses, GetCurrentUserInfoApiV1AuthMeGetData, GetCurrentUserInfoApiV1AuthMeGetErrors, GetCurrentUserInfoApiV1AuthMeGetResponses, GetSessionsApiV1AuthSessionsGetData, GetSessionsApiV1AuthSessionsGetResponses, LoginApiV1AuthLoginPostData, LoginApiV1AuthLoginPostErrors, LoginApiV1AuthLoginPostResponses, LogoutAllApiV1AuthLogoutAllPostData, LogoutAllApiV1AuthLogoutAllPostResponses, LogoutApiV1AuthLogoutPostData, LogoutApiV1AuthLogoutPostResponses, ReadTodoApiV1TodosTodoIdGetData, ReadTodoApiV1TodosTodoIdGetErrors, ReadTodoApiV1TodosTodoIdGetResponses, ReadTodosApiV1TodosGetData, ReadTodosApiV1TodosGetErrors, ReadTodosApiV1TodosGetResponses, RefreshTokenApiV1AuthRefreshPostData, RefreshTokenApiV1AuthRefreshPostErrors, RefreshTokenApiV1AuthRefreshPostResponses, RegisterApiV1AuthRegisterPostData, RegisterApiV1AuthRegisterPostErrors, RegisterApiV1AuthRegisterPostResponses, RootGetData, RootGetResponses, UpdateTodoApiV1TodosTodoIdPatchData, UpdateTodoApiV1TodosTodoIdPatchErrors, UpdateTodoApiV1TodosTodoIdPatchResponses, UploadImageApiV1UploadImagePostData, UploadImageApiV1UploadImagePostErrors, UploadImageApiV1UploadImagePostResponses } from './types.gen'; + +export type Options = Options2 & { + /** + * You can provide a client instance returned by `createClient()` instead of + * individual options. This might be also useful if you want to implement a + * custom client. + */ + client?: Client; + /** + * You can pass arbitrary values through the `meta` object. This can be + * used to access values that aren't defined as part of the SDK function. + */ + meta?: Record; +}; + +/** + * Read Todos + */ +export const readTodosApiV1TodosGet = (options?: Options) => (options?.client ?? client).get({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/v1/todos/', + ...options +}); + +/** + * Create Todo + */ +export const createTodoApiV1TodosPost = (options: Options) => (options.client ?? client).post({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/v1/todos/', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Delete Todo + */ +export const deleteTodoApiV1TodosTodoIdDelete = (options: Options) => (options.client ?? client).delete({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/v1/todos/{todo_id}', + ...options +}); + +/** + * Read Todo + */ +export const readTodoApiV1TodosTodoIdGet = (options: Options) => (options.client ?? client).get({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/v1/todos/{todo_id}', + ...options +}); + +/** + * Update Todo + */ +export const updateTodoApiV1TodosTodoIdPatch = (options: Options) => (options.client ?? client).patch({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/v1/todos/{todo_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Register + */ +export const registerApiV1AuthRegisterPost = (options: Options) => (options.client ?? client).post({ + url: '/api/v1/auth/register', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Login + */ +export const loginApiV1AuthLoginPost = (options: Options) => (options.client ?? client).post({ + url: '/api/v1/auth/login', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * 刷新访问令牌 + */ +export const refreshTokenApiV1AuthRefreshPost = (options?: Options) => (options?.client ?? client).post({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/v1/auth/refresh', + ...options +}); + +/** + * Logout + */ +export const logoutApiV1AuthLogoutPost = (options?: Options) => (options?.client ?? client).post({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/v1/auth/logout', + ...options +}); + +/** + * 登出所有设备 + */ +export const logoutAllApiV1AuthLogoutAllPost = (options?: Options) => (options?.client ?? client).post({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/v1/auth/logout-all', + ...options +}); + +/** + * 获取用户会话 + * + * 获取用户的所有活跃会话 + */ +export const getSessionsApiV1AuthSessionsGet = (options?: Options) => (options?.client ?? client).get({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/v1/auth/sessions', + ...options +}); + +/** + * 获取当前用户信息 + * + * 获取当前登录用户的信息 + */ +export const getCurrentUserInfoApiV1AuthMeGet = (options?: Options) => (options?.client ?? client).get({ + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/v1/auth/me', + ...options +}); + +/** + * Upload Image + */ +export const uploadImageApiV1UploadImagePost = (options: Options) => (options.client ?? client).post({ + ...formDataBodySerializer, + security: [{ scheme: 'bearer', type: 'http' }], + url: '/api/v1/upload/image', + ...options, + headers: { + 'Content-Type': null, + ...options.headers + } +}); + +/** + * 根路径 + * + * 根路径,返回应用信息 + */ +export const rootGet = (options?: Options) => (options?.client ?? client).get({ url: '/', ...options }); diff --git a/src/chongming-web/src/api/generated/services/AuthenticationService.ts b/src/chongming-web/src/api/generated/services/AuthenticationService.ts deleted file mode 100644 index 8c666d6..0000000 --- a/src/chongming-web/src/api/generated/services/AuthenticationService.ts +++ /dev/null @@ -1,109 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { RefreshTokenResponse } from '../models/RefreshTokenResponse'; -import type { TokenResponse } from '../models/TokenResponse'; -import type { UserCreate } from '../models/UserCreate'; -import type { UserLogin } from '../models/UserLogin'; -import type { UserRead } from '../models/UserRead'; -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; -export class AuthenticationService { - /** - * Register - * @param requestBody - * @returns UserRead Successful Response - * @throws ApiError - */ - public static registerApiV1AuthRegisterPost( - requestBody: UserCreate, - ): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/api/v1/auth/register', - body: requestBody, - mediaType: 'application/json', - errors: { - 422: `Validation Error`, - }, - }); - } - /** - * Login - * @param requestBody - * @returns TokenResponse Successful Response - * @throws ApiError - */ - public static loginApiV1AuthLoginPost( - requestBody: UserLogin, - ): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/api/v1/auth/login', - body: requestBody, - mediaType: 'application/json', - errors: { - 422: `Validation Error`, - }, - }); - } - /** - * 刷新访问令牌 - * @returns RefreshTokenResponse Successful Response - * @throws ApiError - */ - public static refreshTokenApiV1AuthRefreshPost(): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/api/v1/auth/refresh', - }); - } - /** - * Logout - * @returns any Successful Response - * @throws ApiError - */ - public static logoutApiV1AuthLogoutPost(): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/api/v1/auth/logout', - }); - } - /** - * 登出所有设备 - * @returns any Successful Response - * @throws ApiError - */ - public static logoutAllApiV1AuthLogoutAllPost(): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/api/v1/auth/logout-all', - }); - } - /** - * 获取用户会话 - * 获取用户的所有活跃会话 - * @returns any Successful Response - * @throws ApiError - */ - public static getSessionsApiV1AuthSessionsGet(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/api/v1/auth/sessions', - }); - } - /** - * 获取当前用户信息 - * 获取当前登录用户的信息 - * @returns UserRead Successful Response - * @throws ApiError - */ - public static getCurrentUserInfoApiV1AuthMeGet(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/api/v1/auth/me', - }); - } -} diff --git a/src/chongming-web/src/api/generated/services/DefaultService.ts b/src/chongming-web/src/api/generated/services/DefaultService.ts deleted file mode 100644 index ae257e0..0000000 --- a/src/chongming-web/src/api/generated/services/DefaultService.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { TaskRequest } from '../models/TaskRequest'; -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; -export class DefaultService { - /** - * 根路径 - * 根路径,返回应用信息 - * @returns any Successful Response - * @throws ApiError - */ - public static rootGet(): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/', - }); - } - /** - * Add Task - * 添加定时任务接口 - * @param requestBody - * @returns any Successful Response - * @throws ApiError - */ - public static addTaskSchedulePost( - requestBody: TaskRequest, - ): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/schedule', - body: requestBody, - mediaType: 'application/json', - errors: { - 422: `Validation Error`, - }, - }); - } -} diff --git a/src/chongming-web/src/api/generated/services/TodoService.ts b/src/chongming-web/src/api/generated/services/TodoService.ts deleted file mode 100644 index d2f5b71..0000000 --- a/src/chongming-web/src/api/generated/services/TodoService.ts +++ /dev/null @@ -1,118 +0,0 @@ -/* generated using openapi-typescript-codegen -- do not edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ -import type { TodoCreate } from '../models/TodoCreate'; -import type { TodoRead } from '../models/TodoRead'; -import type { TodoUpdate } from '../models/TodoUpdate'; -import type { CancelablePromise } from '../core/CancelablePromise'; -import { OpenAPI } from '../core/OpenAPI'; -import { request as __request } from '../core/request'; -export class TodoService { - /** - * Create Todo - * @param requestBody - * @returns TodoRead Successful Response - * @throws ApiError - */ - public static createTodoApiV1TodosPost( - requestBody: TodoCreate, - ): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/api/v1/todos/', - body: requestBody, - mediaType: 'application/json', - errors: { - 422: `Validation Error`, - }, - }); - } - /** - * Read Todos - * @param offset - * @param limit - * @returns TodoRead Successful Response - * @throws ApiError - */ - public static readTodosApiV1TodosGet( - offset?: number, - limit: number = 100, - ): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/api/v1/todos/', - query: { - 'offset': offset, - 'limit': limit, - }, - errors: { - 422: `Validation Error`, - }, - }); - } - /** - * Read Todo - * @param todoId - * @returns TodoRead Successful Response - * @throws ApiError - */ - public static readTodoApiV1TodosTodoIdGet( - todoId: number, - ): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/api/v1/todos/{todo_id}', - path: { - 'todo_id': todoId, - }, - errors: { - 422: `Validation Error`, - }, - }); - } - /** - * Update Todo - * @param todoId - * @param requestBody - * @returns TodoRead Successful Response - * @throws ApiError - */ - public static updateTodoApiV1TodosTodoIdPatch( - todoId: number, - requestBody: TodoUpdate, - ): CancelablePromise { - return __request(OpenAPI, { - method: 'PATCH', - url: '/api/v1/todos/{todo_id}', - path: { - 'todo_id': todoId, - }, - body: requestBody, - mediaType: 'application/json', - errors: { - 422: `Validation Error`, - }, - }); - } - /** - * Delete Todo - * @param todoId - * @returns any Successful Response - * @throws ApiError - */ - public static deleteTodoApiV1TodosTodoIdDelete( - todoId: number, - ): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/api/v1/todos/{todo_id}', - path: { - 'todo_id': todoId, - }, - errors: { - 422: `Validation Error`, - }, - }); - } -} diff --git a/src/chongming-web/src/api/generated/types.gen.ts b/src/chongming-web/src/api/generated/types.gen.ts new file mode 100644 index 0000000..209a857 --- /dev/null +++ b/src/chongming-web/src/api/generated/types.gen.ts @@ -0,0 +1,644 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type ClientOptions = { + baseUrl: 'http://127.0.0.1:8000' | (string & {}); +}; + +/** + * Body_upload_image_api_v1_upload_image_post + */ +export type BodyUploadImageApiV1UploadImagePost = { + /** + * File + */ + file: Blob | File; +}; + +/** + * Detail + */ +export type Detail = { + /** + * Message + */ + message: string; + /** + * Code + */ + code: number; +}; + +/** + * HTTPError + */ +export type HttpError = { + detail?: Detail | null; +}; + +/** + * HTTPValidationError + */ +export type HttpValidationError = { + /** + * Detail + */ + detail?: Array; +}; + +/** + * RefreshTokenResponse + * + * 刷新 Token 响应模型 + */ +export type RefreshTokenResponse = { + /** + * Access Token + */ + access_token: string; + /** + * Token Type + */ + token_type?: string; +}; + +/** + * TodoCreate + */ +export type TodoCreate = { + /** + * Title + */ + title: string; + /** + * Description + */ + description?: string | null; + /** + * Completed + */ + completed?: boolean; +}; + +/** + * TodoRead + */ +export type TodoRead = { + /** + * Title + */ + title: string; + /** + * Description + */ + description?: string | null; + /** + * Completed + */ + completed?: boolean; + /** + * Id + */ + id: number; +}; + +/** + * TodoUpdate + */ +export type TodoUpdate = { + /** + * Title + */ + title?: string | null; + /** + * Description + */ + description?: string | null; + /** + * Completed + */ + completed?: boolean | null; +}; + +/** + * TokenResponse + * + * Token 响应模型 + */ +export type TokenResponse = { + /** + * Access Token + */ + access_token: string; + /** + * Refresh Token + */ + refresh_token: string; + /** + * Token Type + */ + token_type?: string; + /** + * Expires In + */ + expires_in: number; + /** + * Refresh Expires In + */ + refresh_expires_in: number; +}; + +/** + * UploadResponse + */ +export type UploadResponse = { + /** + * Url + */ + url: string; + /** + * Filename + */ + filename: string; + /** + * File Type + */ + file_type: string; +}; + +/** + * UserCreate + * + * 用户创建模型 + */ +export type UserCreate = { + /** + * Email + */ + email: string; + /** + * Username + */ + username?: string | null; + /** + * Full Name + */ + full_name?: string | null; + /** + * Is Active + */ + is_active?: boolean; + /** + * Is Superuser + */ + is_superuser?: boolean; + /** + * Created At + */ + created_at?: string | null; + /** + * Password + */ + password: string; +}; + +/** + * UserLogin + */ +export type UserLogin = { + /** + * Email + */ + email: string; + /** + * Password + */ + password: string; +}; + +/** + * UserRead + * + * 用户读取模型 + */ +export type UserRead = { + /** + * Email + */ + email: string; + /** + * Username + */ + username?: string | null; + /** + * Full Name + */ + full_name?: string | null; + /** + * Is Active + */ + is_active?: boolean; + /** + * Is Superuser + */ + is_superuser?: boolean; + /** + * Created At + */ + created_at?: string | null; + /** + * Id + */ + id: string; +}; + +/** + * Userlogout + */ +export type Userlogout = { + /** + * Code + */ + code?: number; + /** + * Message + */ + message?: string; +}; + +/** + * ValidationError + */ +export type ValidationError = { + /** + * Location + */ + loc: Array; + /** + * Message + */ + msg: string; + /** + * Error Type + */ + type: string; + /** + * Input + */ + input?: unknown; + /** + * Context + */ + ctx?: { + [key: string]: unknown; + }; +}; + +export type ReadTodosApiV1TodosGetData = { + body?: never; + path?: never; + query?: { + /** + * Offset + */ + offset?: number; + /** + * Limit + */ + limit?: number; + }; + url: '/api/v1/todos/'; +}; + +export type ReadTodosApiV1TodosGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ReadTodosApiV1TodosGetError = ReadTodosApiV1TodosGetErrors[keyof ReadTodosApiV1TodosGetErrors]; + +export type ReadTodosApiV1TodosGetResponses = { + /** + * Response Read Todos Api V1 Todos Get + * + * Successful Response + */ + 200: Array; +}; + +export type ReadTodosApiV1TodosGetResponse = ReadTodosApiV1TodosGetResponses[keyof ReadTodosApiV1TodosGetResponses]; + +export type CreateTodoApiV1TodosPostData = { + body: TodoCreate; + path?: never; + query?: never; + url: '/api/v1/todos/'; +}; + +export type CreateTodoApiV1TodosPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateTodoApiV1TodosPostError = CreateTodoApiV1TodosPostErrors[keyof CreateTodoApiV1TodosPostErrors]; + +export type CreateTodoApiV1TodosPostResponses = { + /** + * Successful Response + */ + 200: TodoRead; +}; + +export type CreateTodoApiV1TodosPostResponse = CreateTodoApiV1TodosPostResponses[keyof CreateTodoApiV1TodosPostResponses]; + +export type DeleteTodoApiV1TodosTodoIdDeleteData = { + body?: never; + path: { + /** + * Todo Id + */ + todo_id: number; + }; + query?: never; + url: '/api/v1/todos/{todo_id}'; +}; + +export type DeleteTodoApiV1TodosTodoIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteTodoApiV1TodosTodoIdDeleteError = DeleteTodoApiV1TodosTodoIdDeleteErrors[keyof DeleteTodoApiV1TodosTodoIdDeleteErrors]; + +export type DeleteTodoApiV1TodosTodoIdDeleteResponses = { + /** + * Successful Response + */ + 200: unknown; +}; + +export type ReadTodoApiV1TodosTodoIdGetData = { + body?: never; + path: { + /** + * Todo Id + */ + todo_id: number; + }; + query?: never; + url: '/api/v1/todos/{todo_id}'; +}; + +export type ReadTodoApiV1TodosTodoIdGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ReadTodoApiV1TodosTodoIdGetError = ReadTodoApiV1TodosTodoIdGetErrors[keyof ReadTodoApiV1TodosTodoIdGetErrors]; + +export type ReadTodoApiV1TodosTodoIdGetResponses = { + /** + * Successful Response + */ + 200: TodoRead; +}; + +export type ReadTodoApiV1TodosTodoIdGetResponse = ReadTodoApiV1TodosTodoIdGetResponses[keyof ReadTodoApiV1TodosTodoIdGetResponses]; + +export type UpdateTodoApiV1TodosTodoIdPatchData = { + body: TodoUpdate; + path: { + /** + * Todo Id + */ + todo_id: number; + }; + query?: never; + url: '/api/v1/todos/{todo_id}'; +}; + +export type UpdateTodoApiV1TodosTodoIdPatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateTodoApiV1TodosTodoIdPatchError = UpdateTodoApiV1TodosTodoIdPatchErrors[keyof UpdateTodoApiV1TodosTodoIdPatchErrors]; + +export type UpdateTodoApiV1TodosTodoIdPatchResponses = { + /** + * Successful Response + */ + 200: TodoRead; +}; + +export type UpdateTodoApiV1TodosTodoIdPatchResponse = UpdateTodoApiV1TodosTodoIdPatchResponses[keyof UpdateTodoApiV1TodosTodoIdPatchResponses]; + +export type RegisterApiV1AuthRegisterPostData = { + body: UserCreate; + path?: never; + query?: never; + url: '/api/v1/auth/register'; +}; + +export type RegisterApiV1AuthRegisterPostErrors = { + /** + * 邮箱已被注册 + */ + 400: HttpError; + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type RegisterApiV1AuthRegisterPostError = RegisterApiV1AuthRegisterPostErrors[keyof RegisterApiV1AuthRegisterPostErrors]; + +export type RegisterApiV1AuthRegisterPostResponses = { + /** + * Successful Response + */ + 200: UserRead; +}; + +export type RegisterApiV1AuthRegisterPostResponse = RegisterApiV1AuthRegisterPostResponses[keyof RegisterApiV1AuthRegisterPostResponses]; + +export type LoginApiV1AuthLoginPostData = { + body: UserLogin; + path?: never; + query?: never; + url: '/api/v1/auth/login'; +}; + +export type LoginApiV1AuthLoginPostErrors = { + /** + * 邮箱不存在 + */ + 400: HttpError; + /** + * 密码错误 + */ + 401: HttpError; + /** + * 用户被禁用 + */ + 402: HttpError; + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type LoginApiV1AuthLoginPostError = LoginApiV1AuthLoginPostErrors[keyof LoginApiV1AuthLoginPostErrors]; + +export type LoginApiV1AuthLoginPostResponses = { + /** + * Successful Response + */ + 200: TokenResponse; +}; + +export type LoginApiV1AuthLoginPostResponse = LoginApiV1AuthLoginPostResponses[keyof LoginApiV1AuthLoginPostResponses]; + +export type RefreshTokenApiV1AuthRefreshPostData = { + body?: never; + path?: never; + query?: never; + url: '/api/v1/auth/refresh'; +}; + +export type RefreshTokenApiV1AuthRefreshPostErrors = { + /** + * 无效的刷新令牌 + */ + 401: HttpError; +}; + +export type RefreshTokenApiV1AuthRefreshPostError = RefreshTokenApiV1AuthRefreshPostErrors[keyof RefreshTokenApiV1AuthRefreshPostErrors]; + +export type RefreshTokenApiV1AuthRefreshPostResponses = { + /** + * Successful Response + */ + 200: RefreshTokenResponse; +}; + +export type RefreshTokenApiV1AuthRefreshPostResponse = RefreshTokenApiV1AuthRefreshPostResponses[keyof RefreshTokenApiV1AuthRefreshPostResponses]; + +export type LogoutApiV1AuthLogoutPostData = { + body?: never; + path?: never; + query?: never; + url: '/api/v1/auth/logout'; +}; + +export type LogoutApiV1AuthLogoutPostResponses = { + /** + * Successful Response + */ + 200: Userlogout; +}; + +export type LogoutApiV1AuthLogoutPostResponse = LogoutApiV1AuthLogoutPostResponses[keyof LogoutApiV1AuthLogoutPostResponses]; + +export type LogoutAllApiV1AuthLogoutAllPostData = { + body?: never; + path?: never; + query?: never; + url: '/api/v1/auth/logout-all'; +}; + +export type LogoutAllApiV1AuthLogoutAllPostResponses = { + /** + * Successful Response + */ + 200: Userlogout; +}; + +export type LogoutAllApiV1AuthLogoutAllPostResponse = LogoutAllApiV1AuthLogoutAllPostResponses[keyof LogoutAllApiV1AuthLogoutAllPostResponses]; + +export type GetSessionsApiV1AuthSessionsGetData = { + body?: never; + path?: never; + query?: never; + url: '/api/v1/auth/sessions'; +}; + +export type GetSessionsApiV1AuthSessionsGetResponses = { + /** + * Successful Response + */ + 200: unknown; +}; + +export type GetCurrentUserInfoApiV1AuthMeGetData = { + body?: never; + path?: never; + query?: never; + url: '/api/v1/auth/me'; +}; + +export type GetCurrentUserInfoApiV1AuthMeGetErrors = { + /** + * 用户不存在 + */ + 404: HttpError; +}; + +export type GetCurrentUserInfoApiV1AuthMeGetError = GetCurrentUserInfoApiV1AuthMeGetErrors[keyof GetCurrentUserInfoApiV1AuthMeGetErrors]; + +export type GetCurrentUserInfoApiV1AuthMeGetResponses = { + /** + * Successful Response + */ + 200: UserRead; +}; + +export type GetCurrentUserInfoApiV1AuthMeGetResponse = GetCurrentUserInfoApiV1AuthMeGetResponses[keyof GetCurrentUserInfoApiV1AuthMeGetResponses]; + +export type UploadImageApiV1UploadImagePostData = { + body: BodyUploadImageApiV1UploadImagePost; + path?: never; + query?: never; + url: '/api/v1/upload/image'; +}; + +export type UploadImageApiV1UploadImagePostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UploadImageApiV1UploadImagePostError = UploadImageApiV1UploadImagePostErrors[keyof UploadImageApiV1UploadImagePostErrors]; + +export type UploadImageApiV1UploadImagePostResponses = { + /** + * Successful Response + */ + 200: UploadResponse; +}; + +export type UploadImageApiV1UploadImagePostResponse = UploadImageApiV1UploadImagePostResponses[keyof UploadImageApiV1UploadImagePostResponses]; + +export type RootGetData = { + body?: never; + path?: never; + query?: never; + url: '/'; +}; + +export type RootGetResponses = { + /** + * Successful Response + */ + 200: unknown; +}; diff --git a/src/chongming-web/src/assets/base.css b/src/chongming-web/src/assets/base.css deleted file mode 100644 index 8816868..0000000 --- a/src/chongming-web/src/assets/base.css +++ /dev/null @@ -1,86 +0,0 @@ -/* color palette from */ -:root { - --vt-c-white: #ffffff; - --vt-c-white-soft: #f8f8f8; - --vt-c-white-mute: #f2f2f2; - - --vt-c-black: #181818; - --vt-c-black-soft: #222222; - --vt-c-black-mute: #282828; - - --vt-c-indigo: #2c3e50; - - --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); - --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); - --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); - --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); - - --vt-c-text-light-1: var(--vt-c-indigo); - --vt-c-text-light-2: rgba(60, 60, 60, 0.66); - --vt-c-text-dark-1: var(--vt-c-white); - --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); -} - -/* semantic color variables for this project */ -:root { - --color-background: var(--vt-c-white); - --color-background-soft: var(--vt-c-white-soft); - --color-background-mute: var(--vt-c-white-mute); - - --color-border: var(--vt-c-divider-light-2); - --color-border-hover: var(--vt-c-divider-light-1); - - --color-heading: var(--vt-c-text-light-1); - --color-text: var(--vt-c-text-light-1); - - --section-gap: 160px; -} - -@media (prefers-color-scheme: dark) { - :root { - --color-background: var(--vt-c-black); - --color-background-soft: var(--vt-c-black-soft); - --color-background-mute: var(--vt-c-black-mute); - - --color-border: var(--vt-c-divider-dark-2); - --color-border-hover: var(--vt-c-divider-dark-1); - - --color-heading: var(--vt-c-text-dark-1); - --color-text: var(--vt-c-text-dark-2); - } -} - -*, -*::before, -*::after { - box-sizing: border-box; - margin: 0; - font-weight: normal; -} - -body { - min-height: 100vh; - color: var(--color-text); - background: var(--color-background); - transition: - color 0.5s, - background-color 0.5s; - line-height: 1.6; - font-family: - Inter, - -apple-system, - BlinkMacSystemFont, - 'Segoe UI', - Roboto, - Oxygen, - Ubuntu, - Cantarell, - 'Fira Sans', - 'Droid Sans', - 'Helvetica Neue', - sans-serif; - font-size: 15px; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} diff --git a/src/chongming-web/src/assets/main.css b/src/chongming-web/src/assets/main.css deleted file mode 100644 index 36fb845..0000000 --- a/src/chongming-web/src/assets/main.css +++ /dev/null @@ -1,35 +0,0 @@ -@import './base.css'; - -#app { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - font-weight: normal; -} - -a, -.green { - text-decoration: none; - color: hsla(160, 100%, 37%, 1); - transition: 0.4s; - padding: 3px; -} - -@media (hover: hover) { - a:hover { - background-color: hsla(160, 100%, 37%, 0.2); - } -} - -@media (min-width: 1024px) { - body { - display: flex; - place-items: center; - } - - #app { - display: grid; - grid-template-columns: 1fr 1fr; - padding: 0 2rem; - } -} diff --git a/src/chongming-web/src/components/HelloWorld.vue b/src/chongming-web/src/components/HelloWorld.vue deleted file mode 100644 index d174cf8..0000000 --- a/src/chongming-web/src/components/HelloWorld.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - - - diff --git a/src/chongming-web/src/components/TheWelcome.vue b/src/chongming-web/src/components/TheWelcome.vue deleted file mode 100644 index 8b731d9..0000000 --- a/src/chongming-web/src/components/TheWelcome.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - diff --git a/src/chongming-web/src/components/WelcomeItem.vue b/src/chongming-web/src/components/WelcomeItem.vue deleted file mode 100644 index 6d7086a..0000000 --- a/src/chongming-web/src/components/WelcomeItem.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - diff --git a/src/chongming-web/src/components/icons/IconCommunity.vue b/src/chongming-web/src/components/icons/IconCommunity.vue deleted file mode 100644 index 2dc8b05..0000000 --- a/src/chongming-web/src/components/icons/IconCommunity.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/chongming-web/src/components/icons/IconDocumentation.vue b/src/chongming-web/src/components/icons/IconDocumentation.vue deleted file mode 100644 index 6d4791c..0000000 --- a/src/chongming-web/src/components/icons/IconDocumentation.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/chongming-web/src/components/icons/IconEcosystem.vue b/src/chongming-web/src/components/icons/IconEcosystem.vue deleted file mode 100644 index c3a4f07..0000000 --- a/src/chongming-web/src/components/icons/IconEcosystem.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/chongming-web/src/components/icons/IconSupport.vue b/src/chongming-web/src/components/icons/IconSupport.vue deleted file mode 100644 index 7452834..0000000 --- a/src/chongming-web/src/components/icons/IconSupport.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/chongming-web/src/components/icons/IconTooling.vue b/src/chongming-web/src/components/icons/IconTooling.vue deleted file mode 100644 index 660598d..0000000 --- a/src/chongming-web/src/components/icons/IconTooling.vue +++ /dev/null @@ -1,19 +0,0 @@ - - diff --git a/src/chongming-web/src/main.ts b/src/chongming-web/src/main.ts index fd1b508..ee64a16 100644 --- a/src/chongming-web/src/main.ts +++ b/src/chongming-web/src/main.ts @@ -1,19 +1,31 @@ -import './assets/main.css' +// import './assets/main.css' +import 'element-plus/dist/index.css' import { createApp } from 'vue' import { createPinia } from 'pinia' +import ElementPlus from 'element-plus' +import zhCn from 'element-plus/es/locale/lang/zh-cn' import App from './App.vue' import router from './router' -import { OpenAPI } from "./api/generated" +import { useAuthStore } from './stores/auth' + /** - * 打包时注释该项 + * 打包时取消该注释 */ -OpenAPI.BASE = "http://localhost:8000" +import { client } from "./api/generated/client.gen" +client.setConfig({ + baseUrl: "/" +}) + const app = createApp(App) app.use(createPinia()) app.use(router) +app.use(ElementPlus, { locale: zhCn }) + +const authStore = useAuthStore() +authStore.initAuth() app.mount('#app') diff --git a/src/chongming-web/src/router/index.ts b/src/chongming-web/src/router/index.ts index 3e49915..63a3c92 100644 --- a/src/chongming-web/src/router/index.ts +++ b/src/chongming-web/src/router/index.ts @@ -1,23 +1,44 @@ +// src/router/index.ts import { createRouter, createWebHistory } from 'vue-router' -import HomeView from '../views/HomeView.vue' +import { useAuthStore } from '@/stores/auth' const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ + { path: '/', redirect: '/todos' }, { - path: '/', - name: 'home', - component: HomeView, + path: '/login', + name: 'login', + component: () => import('@/views/LoginView.vue'), + meta: { requiresGuest: true }, }, { - path: '/about', - name: 'about', - // route level code-splitting - // this generates a separate chunk (About.[hash].js) for this route - // which is lazy-loaded when the route is visited. - component: () => import('../views/AboutView.vue'), + path: '/register', + name: 'register', + component: () => import('@/views/RegisterView.vue'), + meta: { requiresGuest: true }, + }, + { + path: '/todos', + name: 'todos', + component: () => import('@/views/TodoView.vue'), + meta: { requiresAuth: true }, }, ], }) -export default router +// 路由守卫 +router.beforeEach((to, from, next) => { + const authStore = useAuthStore() + const isAuthenticated = !!authStore.accessToken + + if (to.meta.requiresAuth && !isAuthenticated) { + next('/login') + } else if (to.meta.requiresGuest && isAuthenticated) { + next('/todos') + } else { + next() + } +}) + +export default router \ No newline at end of file diff --git a/src/chongming-web/src/stores/auth.ts b/src/chongming-web/src/stores/auth.ts new file mode 100644 index 0000000..9ac5acf --- /dev/null +++ b/src/chongming-web/src/stores/auth.ts @@ -0,0 +1,77 @@ +import { defineStore } from "pinia" +import { ElMessage } from 'element-plus' +import { client } from "@/api/generated/client.gen" +import { loginApiV1AuthLoginPost, registerApiV1AuthRegisterPost } from "@/api/generated" + + +interface AuthState { + accessToken: string | null + refreshToken: string | null +} + +export const useAuthStore = defineStore("auth", { + state: (): AuthState => ({ + accessToken: localStorage.getItem("access_token"), + refreshToken: localStorage.getItem("refresh_token"), + }), + actions: { + setTokens(access: string, refresh: string) { + this.accessToken = access + this.refreshToken = refresh + localStorage.setItem("access_token", access) + localStorage.setItem("refresh_token", refresh) + client.setConfig({ + auth: () => this.accessToken || '' + }) + }, + clearTokens() { + this.accessToken = null + this.refreshToken = null + localStorage.removeItem("access_token") + localStorage.removeItem("refresh_token") + client.setConfig({ auth: undefined }) + }, + async login(email: string, password: string) { + try { + const { data } = await loginApiV1AuthLoginPost({ + body: { email, password }, + throwOnError: true, + }) + if (data) { + this.setTokens(data.access_token, data.refresh_token) + ElMessage.success("登录成功") + return true + } + return false + } catch (error: any) { + // console.error("登录失败", error) + ElMessage.error(error.message || "登录失败") + return false + } + }, + async register(email: string, password: string, username?: string) { + try { + await registerApiV1AuthRegisterPost({ + body: { email, password, username }, + throwOnError: true, + }) + ElMessage.success("注册成功") + return await this.login(email, password) + } catch (error: any) { + ElMessage.error(error.message || "注册失败") + return false + } + }, + logout() { + this.clearTokens() + ElMessage.info("已退出登录") + }, + initAuth() { + if (this.accessToken) { + client.setConfig({ + auth: () => this.accessToken || '' + }) + } + } + } +}) \ No newline at end of file diff --git a/src/chongming-web/src/stores/todo.ts b/src/chongming-web/src/stores/todo.ts new file mode 100644 index 0000000..96b71dc --- /dev/null +++ b/src/chongming-web/src/stores/todo.ts @@ -0,0 +1,69 @@ +// src/stores/todo.ts +import { defineStore } from 'pinia' +import { + readTodosApiV1TodosGet, + createTodoApiV1TodosPost, + updateTodoApiV1TodosTodoIdPatch, + deleteTodoApiV1TodosTodoIdDelete, + type TodoRead, + type TodoCreate, + type TodoUpdate, +} from '@/api/generated' + +interface TodoState { + todos: TodoRead[] + loading: boolean +} + +export const useTodoStore = defineStore('todo', { + state: (): TodoState => ({ + todos: [], + loading: false, + }), + actions: { + async fetchTodos() { + this.loading = true + try { + const { data } = await readTodosApiV1TodosGet({ + query: { offset: 0, limit: 100 }, + throwOnError: true, + }) + this.todos = data || [] + } catch (error) { + console.error('获取 Todo 列表失败', error) + throw error + } finally { + this.loading = false + } + }, + async addTodo(todo: TodoCreate) { + const { data } = await createTodoApiV1TodosPost({ + body: todo, + throwOnError: true, + }) + if (data) { + this.todos.unshift(data) + } + return data + }, + async updateTodo(id: number, updates: TodoUpdate) { + const { data } = await updateTodoApiV1TodosTodoIdPatch({ + path: { todo_id: id }, + body: updates, + throwOnError: true, + }) + if (data) { + const index = this.todos.findIndex((t) => t.id === id) + if (index !== -1) this.todos[index] = data + } + return data + }, + async deleteTodo(id: number) { + await deleteTodoApiV1TodosTodoIdDelete({ + path: { todo_id: id }, + throwOnError: true, + }) + this.todos = this.todos.filter((t) => t.id !== id) + }, + }, +}) \ No newline at end of file diff --git a/src/chongming-web/src/views/AboutView.vue b/src/chongming-web/src/views/AboutView.vue deleted file mode 100644 index 756ad2a..0000000 --- a/src/chongming-web/src/views/AboutView.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/src/chongming-web/src/views/HomeView.vue b/src/chongming-web/src/views/HomeView.vue deleted file mode 100644 index d5c0217..0000000 --- a/src/chongming-web/src/views/HomeView.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/src/chongming-web/src/views/LoginView.vue b/src/chongming-web/src/views/LoginView.vue new file mode 100644 index 0000000..ce44549 --- /dev/null +++ b/src/chongming-web/src/views/LoginView.vue @@ -0,0 +1,58 @@ + + + + + + \ No newline at end of file diff --git a/src/chongming-web/src/views/RegisterView.vue b/src/chongming-web/src/views/RegisterView.vue new file mode 100644 index 0000000..9851f3f --- /dev/null +++ b/src/chongming-web/src/views/RegisterView.vue @@ -0,0 +1,61 @@ + + + + + + \ No newline at end of file diff --git a/src/chongming-web/src/views/TodoView.vue b/src/chongming-web/src/views/TodoView.vue new file mode 100644 index 0000000..7434a99 --- /dev/null +++ b/src/chongming-web/src/views/TodoView.vue @@ -0,0 +1,245 @@ + + + + + + \ No newline at end of file diff --git a/src/chongming-web/tsconfig.app.json b/src/chongming-web/tsconfig.app.json index c0f2d86..0804c9f 100644 --- a/src/chongming-web/tsconfig.app.json +++ b/src/chongming-web/tsconfig.app.json @@ -1,18 +1,24 @@ { "extends": "@vue/tsconfig/tsconfig.dom.json", - "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], - "exclude": ["src/**/__tests__/*"], + "include": [ + "env.d.ts", + "src/**/*", + "src/**/*.vue" + ], + "exclude": [ + "src/**/__tests__/*" + ], "compilerOptions": { // Extra safety for array and object lookups, but may have false positives. "noUncheckedIndexedAccess": true, - // Path mapping for cleaner imports. "paths": { - "@/*": ["./src/*"] + "@/*": [ + "./src/*" + ] }, - // `vue-tsc --build` produces a .tsbuildinfo file for incremental type-checking. // Specified here to keep it out of the root directory. "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo" } -} +} \ No newline at end of file diff --git a/src/chongming/app/__init__.py b/src/chongming/app/__init__.py index 245867d..0ee8f32 100644 --- a/src/chongming/app/__init__.py +++ b/src/chongming/app/__init__.py @@ -1,3 +1,4 @@ +import time from pathlib import Path from contextlib import asynccontextmanager @@ -8,23 +9,19 @@ from fastapi.staticfiles import StaticFiles from sqlmodel import SQLModel, text from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker from sqlalchemy.exc import OperationalError -from pydantic import BaseModel from .core.config import get_config from .core.cache import get_cache from .core.logger import get_logger -from .core.scheduler import get_task_service_instance from .core.static_files import SVFSStaticFiles from .api import api_router from .task import init_tasks_callback - -class TaskRequest(BaseModel): - task_name: str - interval: int +from plugins.scheduler.scheduler import get_task_service_instance config = get_config() +cache = get_cache() logger = get_logger("app") @@ -38,6 +35,9 @@ except KeyError: # pragma: no cover @asynccontextmanager async def lifespan(app: FastAPI): from plugins import hello + from plugins.jwt.jwt_cache import get_jwt_cache + + get_jwt_cache(config, cache) hello() database = config["database"] @@ -73,7 +73,9 @@ async def lifespan(app: FastAPI): raise # 启动时:初始化任务服务 - task_service = get_task_service_instance(async_session_maker) + task_service = get_task_service_instance( + config, get_logger("scheduler"), async_session_maker + ) app.state.task_service = task_service await task_service.start(init_tasks_callback) @@ -82,7 +84,7 @@ async def lifespan(app: FastAPI): # 关闭时:释放引擎 await task_service.shutdown(wait=True) await engine.dispose() - get_cache().close() + cache.close() # 创建 FastAPI 应用 @@ -104,6 +106,21 @@ app.add_middleware(CORSMiddleware, **cors) app.include_router(api_router, prefix=config["default"]["prefix"]) +@app.middleware("http") +async def access_log_middleware(request: Request, call_next): + start = time.perf_counter() + response = await call_next(request) + duration = (time.perf_counter() - start) * 1000 + client = request.client.host if request.client else "-" + + logger.info( + f"{request.method} {request.url.path} status={response.status_code} " + f"duration={duration:.2f}ms client={client}", + extra={"status_code": response.status_code}, # ← 关键 + ) + return response + + # 根路由 @app.get("/", summary="根路径") async def root(): @@ -116,6 +133,14 @@ async def root(): } +# from pydantic import BaseModel + + +# class TaskRequest(BaseModel): +# task_name: str +# interval: int + + # @app.post("/schedule") # async def add_task( # request: TaskRequest, task_service: TaskService = Depends(get_task_service) diff --git a/src/chongming/app/api/deps.py b/src/chongming/app/api/deps.py index 775e039..c3eaec4 100644 --- a/src/chongming/app/api/deps.py +++ b/src/chongming/app/api/deps.py @@ -2,7 +2,7 @@ from fastapi import Depends, HTTPException, status from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials from ..service.auth import get_auth_service -from ..core.jwt_cache import TokenData +from plugins.jwt.jwt_cache import TokenData access_scheme = HTTPBearer(scheme_name="AccessToken") diff --git a/src/chongming/app/api/routers/auth.py b/src/chongming/app/api/routers/auth.py index 95ef957..89bb380 100644 --- a/src/chongming/app/api/routers/auth.py +++ b/src/chongming/app/api/routers/auth.py @@ -5,13 +5,15 @@ from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials from sqlalchemy.ext.asyncio import AsyncSession from ...core.database import get_session -from ...core.jwt_cache import TokenData, TokenResponse, RefreshTokenResponse from ...core.security import verify_password from ...service.user import UserService from ...service.auth import get_auth_service -from ...model.user import UserCreate, UserRead, UserLogin +from ...model.user import UserCreate, UserRead, UserLogin, Userlogout, UserSession +from ...model.http_error import HTTPError, Detail from ..deps import get_current_user +from plugins.jwt.jwt_cache import TokenData, TokenResponse, RefreshTokenResponse + router = APIRouter(tags=["authentication"]) @@ -19,16 +21,23 @@ access_scheme = HTTPBearer(scheme_name="AccessToken") refresh_scheme = HTTPBearer(scheme_name="RefreshToken") -@router.post("/register", response_model=UserRead) +@router.post( + "/register", + response_model=UserRead, + responses={400: {"model": HTTPError, "description": "邮箱已被注册"}}, +) async def register( user_data: UserCreate, session: AsyncSession = Depends(get_session), ): - print(user_data.password) - existing = await UserService.get_user_by_email(user_data.email, session) if existing: - raise HTTPException(status_code=400, detail="邮箱已被注册") + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=Detail( + message="邮箱已被注册", code=status.HTTP_400_BAD_REQUEST + ).model_dump(), + ) user = await UserService.create_user( session=session, @@ -40,7 +49,15 @@ async def register( return user -@router.post("/login", response_model=TokenResponse) +@router.post( + "/login", + response_model=TokenResponse, + responses={ + 400: {"model": HTTPError, "description": "邮箱不存在"}, + 401: {"model": HTTPError, "description": "密码错误"}, + 402: {"model": HTTPError, "description": "用户被禁用"}, + }, +) async def login( user_data: UserLogin, request: Request, @@ -48,16 +65,29 @@ async def login( ): user = await UserService.get_user_by_email(user_data.email, session) if not user: - raise HTTPException(status_code=400, detail="邮箱或密码错误") + raise HTTPException( + status_code=400, detail=Detail(message="邮箱不存在", code=400).model_dump() + ) if not verify_password(user_data.password, user.hashed_password): - raise HTTPException(status_code=400, detail="邮箱或密码错误") + raise HTTPException( + status_code=400, detail=Detail(message="密码错误", code=401).model_dump() + ) if not user.is_active: - raise HTTPException(status_code=400, detail="用户被禁用") + raise HTTPException( + status_code=400, detail=Detail(message="用户被禁用", code=402).model_dump() + ) auth_service = get_auth_service() return await auth_service.create_tokens(user, request, device_id=None) -@router.post("/refresh", response_model=RefreshTokenResponse, summary="刷新访问令牌") +@router.post( + "/refresh", + response_model=RefreshTokenResponse, + responses={ + 401: {"model": HTTPError, "description": "无效的刷新令牌"}, + }, + summary="刷新访问令牌", +) async def refresh_token( request: Request, credentials: HTTPAuthorizationCredentials = Depends(refresh_scheme), @@ -72,28 +102,28 @@ async def refresh_token( if not new_access_token: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, - detail="无效的刷新令牌", + detail=Detail(message="无效的刷新令牌", code=401).model_dump(), headers={"WWW-Authenticate": "Bearer"}, ) return {"access_token": new_access_token, "token_type": "bearer"} -@router.post("/logout") +@router.post("/logout", response_model=Userlogout) async def logout( credentials: HTTPAuthorizationCredentials = Depends(access_scheme), ): auth_service = get_auth_service() token = credentials.credentials await auth_service.logout(token) - return {"message": "登出成功"} + return {"message": "登出成功", "code": 200} -@router.post("/logout-all", summary="登出所有设备") +@router.post("/logout-all", summary="登出所有设备", response_model=Userlogout) async def logout_all(current_user: TokenData = Depends(get_current_user)): auth_service = get_auth_service() await auth_service.logout_all(current_user.user_id) - return {"message": "所有设备已登出"} + return {"message": "所有设备已登出", "code": 200} @router.get("/sessions", summary="获取用户会话") @@ -102,14 +132,17 @@ async def get_sessions(current_user: TokenData = Depends(get_current_user)): auth_service = get_auth_service() sessions = await auth_service.get_user_sessions(current_user.user_id) - return { - "user_id": current_user.user_id, - "sessions": sessions, - "count": len(sessions), - } + return UserSession( + user_id=current_user.user_id, sessions=sessions, count=len(sessions) + ) -@router.get("/me", response_model=UserRead, summary="获取当前用户信息") +@router.get( + "/me", + response_model=UserRead, + summary="获取当前用户信息", + responses={404: {"model": HTTPError, "description": "用户不存在"}}, +) async def get_current_user_info( session: AsyncSession = Depends(get_session), current_user: TokenData = Depends(get_current_user), @@ -117,6 +150,9 @@ async def get_current_user_info( """获取当前登录用户的信息""" user = await UserService.get_user_by_id(UUID(current_user.user_id), session) if not user: - raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="用户不存在") + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=Detail(message="用户不存在", code=404).model_dump(), + ) return user diff --git a/src/chongming/app/core/config.py b/src/chongming/app/core/config.py index 09fed3d..46b682a 100644 --- a/src/chongming/app/core/config.py +++ b/src/chongming/app/core/config.py @@ -64,6 +64,7 @@ class Server(TypedDict, total=False): port: Required[int] reload: bool workers: int + access_log: bool class Logging(TypedDict): diff --git a/src/chongming/app/core/logger.py b/src/chongming/app/core/logger.py index 5b026bf..770b384 100644 --- a/src/chongming/app/core/logger.py +++ b/src/chongming/app/core/logger.py @@ -1,3 +1,4 @@ +import re import logging import datetime from pathlib import Path @@ -12,6 +13,36 @@ server_config = config[env]["server"] log_config = config[env]["logging"] +class ColoredFormatter(logging.Formatter): + """为 status_code 添加颜色的日志格式化器""" + + COLORS = { + "2": "\033[32m", # 绿色 2xx + "3": "\033[36m", # 青色 3xx + "4": "\033[33m", # 黄色 4xx + "5": "\033[31m", # 红色 5xx + } + RESET = "\033[0m" + + def format(self, record): + # 保存原始消息 + original_msg = record.msg + # 如果日志记录包含 status_code 属性,则为其添加颜色 + status_code = getattr(record, "status_code", None) + if status_code and isinstance(status_code, int): + first_digit = str(status_code)[0] + color = self.COLORS.get(first_digit, "") + colored_status = f"{color}{status_code}{self.RESET}" + # 替换消息中的 "status=数字" 为带颜色的版本 + record.msg = re.sub( + rf"status={status_code}\b", f"status={colored_status}", original_msg + ) + result = super().format(record) + # 恢复原始消息,避免影响其他 handler + record.msg = original_msg + return result + + class ExcludeWatchFilesFilter(logging.Filter): def __init__(self): super().__init__() @@ -29,7 +60,13 @@ class ExcludeWatchFilesFilter(logging.Filter): return not record.name.startswith(self._filter_starts_with_tulpe) +_configured_loggers = set() + + def setup_logging(logger: logging.Logger, log_name: str = "app"): + if log_name in _configured_loggers: + return + _configured_loggers.add(log_name) log_level = getattr(logging, log_config["level"], logging.INFO) log_format = log_config["format"] # 创建文件夹 @@ -41,7 +78,8 @@ def setup_logging(logger: logging.Logger, log_name: str = "app"): logger.setLevel(log_level) # 创建格式化器 - formatter = logging.Formatter(log_format) + plain_formatter = logging.Formatter(log_format) + color_formatter = ColoredFormatter(log_format) # 创建轮转文件处理器 - 限制文件大小为 10MB,保留 5 个备份文件 max_bytes = log_config.get("max_size", 10 * 1024 * 1024) # 默认 10MB @@ -53,12 +91,12 @@ def setup_logging(logger: logging.Logger, log_name: str = "app"): maxBytes=max_bytes, backupCount=backup_count, ) - file_handler.setFormatter(formatter) + file_handler.setFormatter(plain_formatter) file_handler.addFilter(ExcludeWatchFilesFilter()) # 创建控制台处理器并添加过滤器 console_handler = logging.StreamHandler() - console_handler.setFormatter(formatter) + console_handler.setFormatter(color_formatter) console_handler.addFilter(ExcludeWatchFilesFilter()) # 添加处理器到根日志记录器 diff --git a/src/chongming/app/model/http_error.py b/src/chongming/app/model/http_error.py new file mode 100644 index 0000000..4e3cd53 --- /dev/null +++ b/src/chongming/app/model/http_error.py @@ -0,0 +1,11 @@ +from pydantic import BaseModel +from typing import Optional + + +class Detail(BaseModel): + message: str + code: int + + +class HTTPError(BaseModel): + detail: Optional[Detail] = None diff --git a/src/chongming/app/model/user.py b/src/chongming/app/model/user.py index 9e10e57..d1fd151 100644 --- a/src/chongming/app/model/user.py +++ b/src/chongming/app/model/user.py @@ -1,4 +1,4 @@ -from typing import Optional, List, TYPE_CHECKING +from typing import Optional, List, Dict, TYPE_CHECKING from sqlmodel import SQLModel, Field, Relationship from pydantic import BaseModel @@ -42,3 +42,14 @@ class UserRead(UserBase): class UserLogin(BaseModel): email: str password: str + + +class Userlogout(BaseModel): + code: int = 200 + message: str = "logout success" + + +class UserSession(BaseModel): + user_id: str + sessions: List[Dict[str, Optional[str]]] + count: int diff --git a/src/chongming/app/service/auth.py b/src/chongming/app/service/auth.py index c695ffc..3cf66d6 100644 --- a/src/chongming/app/service/auth.py +++ b/src/chongming/app/service/auth.py @@ -8,10 +8,11 @@ from passlib.context import CryptContext from sqlalchemy.ext.asyncio import AsyncSession from ..model.user import User -from ..core.jwt_cache import get_jwt_cache, TokenResponse, TokenData from ..core.config import get_config from .user import UserService +from plugins.jwt.jwt_cache import get_jwt_cache, TokenResponse, TokenData + class AuthService: """认证服务""" diff --git a/src/chongming/app/service/uploads.py b/src/chongming/app/service/uploads.py index 61c9009..a9b9e3b 100644 --- a/src/chongming/app/service/uploads.py +++ b/src/chongming/app/service/uploads.py @@ -1,5 +1,4 @@ import os -import time import uuid from pathlib import Path diff --git a/src/chongming/app/task/__init__.py b/src/chongming/app/task/__init__.py index ca2ba25..a835188 100644 --- a/src/chongming/app/task/__init__.py +++ b/src/chongming/app/task/__init__.py @@ -1,7 +1,8 @@ -from ..core.scheduler import TaskService from ..core.config import get_config from .dev_init_db import init_db +from plugins.scheduler.scheduler import TaskService + config = get_config() diff --git a/src/chongming/app/task/dev_init_db.py b/src/chongming/app/task/dev_init_db.py index 1ae5055..659eb86 100644 --- a/src/chongming/app/task/dev_init_db.py +++ b/src/chongming/app/task/dev_init_db.py @@ -1,9 +1,13 @@ -from ..core.scheduler import logger -from ..core.scheduler import get_task_service_instance +from ..core.logger import get_logger from ..core.constant import PermissionConstant from ..service.user import UserService from ..service.permission import PermissionService +from plugins.scheduler.scheduler import get_task_service_instance + + +logger = get_logger("scheduler") + async def dev_init_admin(session): admin_user = await UserService.get_user_by_email("admin", session) diff --git a/src/chongming/scripts/build.py b/src/chongming/scripts/build.py index 2e0e95e..3a56432 100644 --- a/src/chongming/scripts/build.py +++ b/src/chongming/scripts/build.py @@ -250,6 +250,13 @@ async def main(): with open("./build/utils/launch.py", "w", encoding="utf-8") as f: f.write(context) + jwt_key = Encryption.generate_key() + with open("./build/config.toml", "r", encoding="utf-8") as f: + context = f.read() + context = context.replace("your-secret-key-change-in-production", jwt_key) + with open("build/config.toml", "w", encoding="utf-8") as f: + f.write(context) + # 混淆 run_pyarmor_obfuscate() diff --git a/src/chongming/app/core/mqtt.py b/src/plugins/jwt/__init__.py similarity index 100% rename from src/chongming/app/core/mqtt.py rename to src/plugins/jwt/__init__.py diff --git a/src/chongming/app/core/jwt_cache.py b/src/plugins/jwt/jwt_cache.py similarity index 97% rename from src/chongming/app/core/jwt_cache.py rename to src/plugins/jwt/jwt_cache.py index 97cbbc2..d02a034 100644 --- a/src/chongming/app/core/jwt_cache.py +++ b/src/plugins/jwt/jwt_cache.py @@ -8,9 +8,6 @@ import threading import jwt -from .config import get_config -from .cache import get_cache - @dataclass class TokenCacheData: @@ -38,12 +35,12 @@ class TokenCacheData: class JWTCache: """JWT Token 缓存管理器""" - def __init__(self, db_path: Optional[str] = None): - self.config = get_config() + def __init__(self, config, cache): + self.config = config self.lock = threading.RLock() - self.cache = get_cache() + self.cache = cache self.secret_key = self.config["security"]["secret_key"] self.algorithm = self.config["security"]["algorithm"] @@ -347,11 +344,13 @@ class JWTCache: _jwt_cache = None -def get_jwt_cache() -> JWTCache: +def get_jwt_cache(config=None, cache=None) -> JWTCache: """获取 JWT 缓存实例(单例模式)""" global _jwt_cache if _jwt_cache is None: - _jwt_cache = JWTCache() + if config is None or cache is None: + raise ValueError("参数 config 和 cache 不能为空") + _jwt_cache = JWTCache(config, cache) return _jwt_cache diff --git a/src/chongming/app/core/websocket.py b/src/plugins/mqtt/__init__.py similarity index 100% rename from src/chongming/app/core/websocket.py rename to src/plugins/mqtt/__init__.py diff --git a/src/plugins/mqtt/mqtt.py b/src/plugins/mqtt/mqtt.py new file mode 100644 index 0000000..e69de29 diff --git a/src/plugins/scheduler/__init__.py b/src/plugins/scheduler/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/chongming/app/core/scheduler.py b/src/plugins/scheduler/scheduler.py similarity index 87% rename from src/chongming/app/core/scheduler.py rename to src/plugins/scheduler/scheduler.py index 94ce746..82e3b39 100644 --- a/src/chongming/app/core/scheduler.py +++ b/src/plugins/scheduler/scheduler.py @@ -19,13 +19,6 @@ from apscheduler.triggers.interval import IntervalTrigger from apscheduler.triggers.cron import CronTrigger from apscheduler.triggers.date import DateTrigger -from ..core.config import get_config -from ..core.logger import get_logger - - -config = get_config() -logger = get_logger("scheduler") - def acquire_scheduler_lock(): lock_path = os.path.join(tempfile.gettempdir(), "chongming_scheduler.lock") @@ -48,7 +41,7 @@ def acquire_scheduler_lock(): class TaskService: """任务调度服务""" - def __init__(self, async_session_maker=None): + def __init__(self, config, logger, async_session_maker=None): self.async_session_maker = async_session_maker # 使用独立的 SQLite 数据库存储任务(与业务数据库分开) self.job_store_db_path = config.get("scheduler", {}).get( @@ -73,6 +66,7 @@ class TaskService: ) self._started = False self.lock_file, self.is_scheduler_worker = acquire_scheduler_lock() + self.logger = logger async def start(self, init_tasks_callback: Optional[Callable] = None): """启动调度器""" @@ -80,7 +74,7 @@ class TaskService: if not self._started: self.scheduler.start() self._started = True - logger.info("任务调度器已启动") + self.logger.info("任务调度器已启动") if init_tasks_callback: await init_tasks_callback(self) @@ -94,7 +88,7 @@ class TaskService: if self._started: self.scheduler.shutdown(wait=wait) self._started = False - logger.info("任务调度器已关闭") + self.logger.info("任务调度器已关闭") if sys.platform == "win32": import msvcrt @@ -129,7 +123,7 @@ class TaskService: kwargs=kwargs or {}, replace_existing=replace_existing, ) - logger.info(f"添加间隔任务: {job.id}") + self.logger.info(f"添加间隔任务: {job.id}") return job async def add_cron_job( @@ -167,7 +161,7 @@ class TaskService: kwargs=kwargs or {}, replace_existing=replace_existing, ) - logger.info(f"添加 cron 任务: {job.id}") + self.logger.info(f"添加 cron 任务: {job.id}") return job async def add_date_job( @@ -189,37 +183,37 @@ class TaskService: kwargs=kwargs or {}, replace_existing=replace_existing, ) - logger.info(f"添加一次性任务: {job.id}") + self.logger.info(f"添加一次性任务: {job.id}") return job async def remove_job(self, job_id: str) -> bool: """删除任务""" try: self.scheduler.remove_job(job_id) - logger.info(f"删除任务: {job_id}") + self.logger.info(f"删除任务: {job_id}") return True except Exception as e: - logger.error(f"删除任务失败 {job_id}: {e}") + self.logger.error(f"删除任务失败 {job_id}: {e}") return False async def pause_job(self, job_id: str) -> bool: """暂停任务""" try: self.scheduler.pause_job(job_id) - logger.info(f"暂停任务: {job_id}") + self.logger.info(f"暂停任务: {job_id}") return True except Exception as e: - logger.error(f"暂停任务失败 {job_id}: {e}") + self.logger.error(f"暂停任务失败 {job_id}: {e}") return False async def resume_job(self, job_id: str) -> bool: """恢复任务""" try: self.scheduler.resume_job(job_id) - logger.info(f"恢复任务: {job_id}") + self.logger.info(f"恢复任务: {job_id}") return True except Exception as e: - logger.error(f"恢复任务失败 {job_id}: {e}") + self.logger.error(f"恢复任务失败 {job_id}: {e}") return False async def get_job(self, job_id: str) -> Optional[Dict]: @@ -253,10 +247,10 @@ class TaskService: raise ValueError(f"不支持的 trigger 类型: {trigger_type}") job.reschedule(trigger=trigger) - logger.info(f"重新调度任务: {job_id}") + self.logger.info(f"重新调度任务: {job_id}") return job except Exception as e: - logger.error(f"重新调度任务失败 {job_id}: {e}") + self.logger.error(f"重新调度任务失败 {job_id}: {e}") return None def _job_to_dict(self, job: Job) -> Dict: @@ -277,10 +271,12 @@ class TaskService: _task_service: Optional[TaskService] = None -def get_task_service_instance(async_session_maker=None): +def get_task_service_instance(config=None, logger=None, async_session_maker=None): global _task_service if _task_service is None: - _task_service = TaskService(async_session_maker) + if config is None or logger is None: + raise ValueError("请传入 config 和 logger") + _task_service = TaskService(config, logger, async_session_maker) return _task_service diff --git a/src/plugins/websocket/__init__.py b/src/plugins/websocket/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/plugins/websocket/websocket.py b/src/plugins/websocket/websocket.py new file mode 100644 index 0000000..e69de29 diff --git a/uploads/images/283173713eda4b60b0b338d245f088b7.jpg b/uploads/images/283173713eda4b60b0b338d245f088b7.jpg new file mode 100644 index 0000000000000000000000000000000000000000..183cf866a061b9ca90c473fcc6f916c1126abe11 GIT binary patch literal 472768 zcmbTe30RZY7B>1NAxr|IMg;@`6--oABo3fRkOoK?6R1P9PFPH^+A4|_iw3DfBLYH1 zjZ@4d)Y8@(ti!Qt6|J_>5D=BBwQ4~etKx{m|L!l*_MCg~^W1ySc~V324STP>*89F| z?e*pD#kbceZ*jaRo?C?|Y zbX550sFC3#hDQr0CPl|)jvGEAMUk30d1}_ItTEzG7Jf24cjAn!Y2+dd?=D?>a(agO z`i4!584)w>|MUOe9;LdtdQ%=0i_wQ-c44r(Fy5Y^0x?cDgZ>}o_#cDGa$-BXxVpJ_ z!U4736qCVXF`Za!wv!W%F2MJcQx|sE;P6=IZju=;edcq96|Udu+IQTZW8J0ofA@=+ zxnPBxdyk$zzJ4L0{kgmW{NW=;j*5(m`#>0oq zwuZ*@O&2a+YX0;3jhlb9wBBmF{qWJ__9suDJ%90%%!`3}zWbkjV*fL*E|?e7$%*CU zLgvL_F2;-1#fcpp?%Xw2;xc1?w?4xPT{+{{@7#0Dt#5?%@9r}f)VufS$Nw|rA(
  • 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�n@7v`kSTfZ7(VTCtMQ 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

    9+`rh+`Ns`2TL51f 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

    j^{3Y)NE9v7qK!+rTd9&y3)uS;t*>4Gb>r^v@ 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 literal 0 HcmV?d00001