From 8468180a148c9e7627767fa0248f7ad0a76fcb39 Mon Sep 17 00:00:00 2001
From: Clansty
Date: Sat, 10 Feb 2024 21:45:49 +0800
Subject: [PATCH 01/48] =?UTF-8?q?refactor:=20=E8=BF=81=E7=A7=BB=E5=88=B0?=
=?UTF-8?q?=20monorepo=20=E5=B9=B6=E5=A2=9E=E5=8A=A0=E5=89=8D=E7=AB=AF?=
=?UTF-8?q?=E9=A1=B9=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/codeStyles/codeStyleConfig.xml | 5 +
main/package.json | 56 +
{prisma => main/prisma}/schema.prisma | 0
{src => main/src}/client/OicqClient.ts | 0
{src => main/src}/client/Telegram.ts | 0
{src => main/src}/client/TelegramChat.ts | 0
.../src}/client/TelegramImportSession.ts | 0
{src => main/src}/constants/commands.ts | 0
{src => main/src}/constants/emoji.ts | 0
{src => main/src}/constants/exts.ts | 0
{src => main/src}/constants/flags.ts | 0
{src => main/src}/constants/lottie.ts | 0
{src => main/src}/constants/regExps.ts | 0
.../src}/controllers/AliveCheckController.ts | 0
.../src}/controllers/ConfigController.ts | 0
.../controllers/DeleteMessageController.ts | 0
.../FileAndFlashPhotoController.ts | 0
.../src}/controllers/ForwardController.ts | 0
.../src}/controllers/HugController.ts | 0
.../controllers/InChatCommandsController.ts | 0
.../controllers/InstanceManageController.ts | 0
.../controllers/MiraiSkipFilterController.ts | 0
.../controllers/OicqErrorNotifyController.ts | 0
.../src}/controllers/QuotLyController.ts | 0
.../src}/controllers/RequestController.ts | 0
.../src}/controllers/SetupController.ts | 0
.../controllers/StatusReportController.ts | 0
.../src}/encoding/convertWithFfmpeg.ts | 0
{src => main/src}/encoding/silk.ts | 0
{src => main/src}/encoding/tgsToGif.ts | 0
.../src}/helpers/CallbackQueryHelper.ts | 0
.../src}/helpers/RecoverMessageHelper.ts | 0
.../src}/helpers/WaitForMessageHelper.ts | 0
{src => main/src}/helpers/convert.ts | 0
{src => main/src}/helpers/dataPath.ts | 0
{src => main/src}/helpers/forwardHelper.ts | 0
{src => main/src}/helpers/setupHelper.ts | 0
{src => main/src}/index.ts | 0
{src => main/src}/models/ForwardPairs.ts | 0
{src => main/src}/models/Instance.ts | 0
{src => main/src}/models/Pair.ts | 0
{src => main/src}/models/TelegramSession.ts | 0
{src => main/src}/models/db.ts | 0
{src => main/src}/models/env.ts | 0
{src => main/src}/services/ConfigService.ts | 0
.../src}/services/DeleteMessageService.ts | 0
{src => main/src}/services/ForwardService.ts | 0
.../src}/services/InChatCommandsService.ts | 0
{src => main/src}/services/SetupService.ts | 0
{src => main/src}/types/definitions.d.ts | 0
{src => main/src}/utils/arrays.ts | 0
{src => main/src}/utils/flagControl.ts | 0
{src => main/src}/utils/getAboutText.ts | 0
{src => main/src}/utils/hashing.ts | 0
{src => main/src}/utils/highLevelFunces.ts | 0
{src => main/src}/utils/inlineDigitInput.ts | 0
.../src}/utils/paginatedInlineSelector.ts | 0
{src => main/src}/utils/random.ts | 0
{src => main/src}/utils/urls.ts | 0
tsconfig.json => main/tsconfig.json | 0
package.json | 51 +-
pnpm-lock.yaml | 1306 +++++++++++++++--
pnpm-workspace.yaml | 3 +
ui/index.html | 12 +
ui/package.json | 19 +
ui/src/App.tsx | 13 +
ui/src/env.d.ts | 1 +
ui/src/main.ts | 7 +
ui/src/router.ts | 9 +
ui/src/views/Index.tsx | 7 +
ui/tsconfig.json | 32 +
ui/vite.config.ts | 12 +
72 files changed, 1363 insertions(+), 170 deletions(-)
create mode 100644 .idea/codeStyles/codeStyleConfig.xml
create mode 100644 main/package.json
rename {prisma => main/prisma}/schema.prisma (100%)
rename {src => main/src}/client/OicqClient.ts (100%)
rename {src => main/src}/client/Telegram.ts (100%)
rename {src => main/src}/client/TelegramChat.ts (100%)
rename {src => main/src}/client/TelegramImportSession.ts (100%)
rename {src => main/src}/constants/commands.ts (100%)
rename {src => main/src}/constants/emoji.ts (100%)
rename {src => main/src}/constants/exts.ts (100%)
rename {src => main/src}/constants/flags.ts (100%)
rename {src => main/src}/constants/lottie.ts (100%)
rename {src => main/src}/constants/regExps.ts (100%)
rename {src => main/src}/controllers/AliveCheckController.ts (100%)
rename {src => main/src}/controllers/ConfigController.ts (100%)
rename {src => main/src}/controllers/DeleteMessageController.ts (100%)
rename {src => main/src}/controllers/FileAndFlashPhotoController.ts (100%)
rename {src => main/src}/controllers/ForwardController.ts (100%)
rename {src => main/src}/controllers/HugController.ts (100%)
rename {src => main/src}/controllers/InChatCommandsController.ts (100%)
rename {src => main/src}/controllers/InstanceManageController.ts (100%)
rename {src => main/src}/controllers/MiraiSkipFilterController.ts (100%)
rename {src => main/src}/controllers/OicqErrorNotifyController.ts (100%)
rename {src => main/src}/controllers/QuotLyController.ts (100%)
rename {src => main/src}/controllers/RequestController.ts (100%)
rename {src => main/src}/controllers/SetupController.ts (100%)
rename {src => main/src}/controllers/StatusReportController.ts (100%)
rename {src => main/src}/encoding/convertWithFfmpeg.ts (100%)
rename {src => main/src}/encoding/silk.ts (100%)
rename {src => main/src}/encoding/tgsToGif.ts (100%)
rename {src => main/src}/helpers/CallbackQueryHelper.ts (100%)
rename {src => main/src}/helpers/RecoverMessageHelper.ts (100%)
rename {src => main/src}/helpers/WaitForMessageHelper.ts (100%)
rename {src => main/src}/helpers/convert.ts (100%)
rename {src => main/src}/helpers/dataPath.ts (100%)
rename {src => main/src}/helpers/forwardHelper.ts (100%)
rename {src => main/src}/helpers/setupHelper.ts (100%)
rename {src => main/src}/index.ts (100%)
rename {src => main/src}/models/ForwardPairs.ts (100%)
rename {src => main/src}/models/Instance.ts (100%)
rename {src => main/src}/models/Pair.ts (100%)
rename {src => main/src}/models/TelegramSession.ts (100%)
rename {src => main/src}/models/db.ts (100%)
rename {src => main/src}/models/env.ts (100%)
rename {src => main/src}/services/ConfigService.ts (100%)
rename {src => main/src}/services/DeleteMessageService.ts (100%)
rename {src => main/src}/services/ForwardService.ts (100%)
rename {src => main/src}/services/InChatCommandsService.ts (100%)
rename {src => main/src}/services/SetupService.ts (100%)
rename {src => main/src}/types/definitions.d.ts (100%)
rename {src => main/src}/utils/arrays.ts (100%)
rename {src => main/src}/utils/flagControl.ts (100%)
rename {src => main/src}/utils/getAboutText.ts (100%)
rename {src => main/src}/utils/hashing.ts (100%)
rename {src => main/src}/utils/highLevelFunces.ts (100%)
rename {src => main/src}/utils/inlineDigitInput.ts (100%)
rename {src => main/src}/utils/paginatedInlineSelector.ts (100%)
rename {src => main/src}/utils/random.ts (100%)
rename {src => main/src}/utils/urls.ts (100%)
rename tsconfig.json => main/tsconfig.json (100%)
create mode 100644 pnpm-workspace.yaml
create mode 100644 ui/index.html
create mode 100644 ui/package.json
create mode 100644 ui/src/App.tsx
create mode 100644 ui/src/env.d.ts
create mode 100644 ui/src/main.ts
create mode 100644 ui/src/router.ts
create mode 100644 ui/src/views/Index.tsx
create mode 100644 ui/tsconfig.json
create mode 100644 ui/vite.config.ts
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/main/package.json b/main/package.json
new file mode 100644
index 0000000..abb4062
--- /dev/null
+++ b/main/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "q2tg-main",
+ "scripts": {
+ "dev": "tsx src/index.ts",
+ "build": "tsc",
+ "start": "prisma db push --accept-data-loss --skip-generate && node build/index.js",
+ "prisma": "prisma",
+ "import": "ts-node tools/import"
+ },
+ "bin": "build/index.js",
+ "files": [
+ "build",
+ "assets"
+ ],
+ "devDependencies": {
+ "@types/cli-progress": "^3.11.5",
+ "@types/date-and-time": "^3.0.3",
+ "@types/dockerode": "^3.3.23",
+ "@types/fluent-ffmpeg": "^2.1.24",
+ "@types/lodash": "^4.14.202",
+ "@types/node": "^20.11.17",
+ "@types/prompts": "^2.4.9",
+ "tsx": "^4.7.0"
+ },
+ "dependencies": {
+ "@prisma/client": "5.9.1",
+ "axios": "^1.6.7",
+ "baidu-aip-sdk": "^4.16.15",
+ "big-integer": "^1.6.52",
+ "cli-progress": "^3.11.2",
+ "date-and-time": "^3.1.1",
+ "dockerode": "^4.0.2",
+ "dotenv": "^16.4.1",
+ "eviltransform": "^0.2.2",
+ "file-type": "^19.0.0",
+ "fluent-ffmpeg": "^2.1.2",
+ "icqq": "^0.6.8",
+ "image-size": "^1.1.1",
+ "lodash": "^4.17.21",
+ "log4js": "^6.6.1",
+ "nodejs-base64": "^2.0.0",
+ "prisma": "5.9.1",
+ "prompts": "^2.4.2",
+ "quote-api": "https://github.com/Clansty/quote-api/archive/014b21138afbbe0e12c91b00561414b1e851fc0f.tar.gz",
+ "sharp": "^0.33.2",
+ "silk-sdk": "^0.2.2",
+ "telegram": "https://github.com/clansty/gramjs/releases/download/2.19.10%2Brevert_media/telegram-2.19.10.tgz",
+ "tmp-promise": "^3.0.3",
+ "undici": "^6.4.0",
+ "zincsearch-node": "^2.1.0",
+ "zod": "^3.22.4"
+ },
+ "engines": {
+ "node": "^14.13.1 || >=16.0.0"
+ }
+}
diff --git a/prisma/schema.prisma b/main/prisma/schema.prisma
similarity index 100%
rename from prisma/schema.prisma
rename to main/prisma/schema.prisma
diff --git a/src/client/OicqClient.ts b/main/src/client/OicqClient.ts
similarity index 100%
rename from src/client/OicqClient.ts
rename to main/src/client/OicqClient.ts
diff --git a/src/client/Telegram.ts b/main/src/client/Telegram.ts
similarity index 100%
rename from src/client/Telegram.ts
rename to main/src/client/Telegram.ts
diff --git a/src/client/TelegramChat.ts b/main/src/client/TelegramChat.ts
similarity index 100%
rename from src/client/TelegramChat.ts
rename to main/src/client/TelegramChat.ts
diff --git a/src/client/TelegramImportSession.ts b/main/src/client/TelegramImportSession.ts
similarity index 100%
rename from src/client/TelegramImportSession.ts
rename to main/src/client/TelegramImportSession.ts
diff --git a/src/constants/commands.ts b/main/src/constants/commands.ts
similarity index 100%
rename from src/constants/commands.ts
rename to main/src/constants/commands.ts
diff --git a/src/constants/emoji.ts b/main/src/constants/emoji.ts
similarity index 100%
rename from src/constants/emoji.ts
rename to main/src/constants/emoji.ts
diff --git a/src/constants/exts.ts b/main/src/constants/exts.ts
similarity index 100%
rename from src/constants/exts.ts
rename to main/src/constants/exts.ts
diff --git a/src/constants/flags.ts b/main/src/constants/flags.ts
similarity index 100%
rename from src/constants/flags.ts
rename to main/src/constants/flags.ts
diff --git a/src/constants/lottie.ts b/main/src/constants/lottie.ts
similarity index 100%
rename from src/constants/lottie.ts
rename to main/src/constants/lottie.ts
diff --git a/src/constants/regExps.ts b/main/src/constants/regExps.ts
similarity index 100%
rename from src/constants/regExps.ts
rename to main/src/constants/regExps.ts
diff --git a/src/controllers/AliveCheckController.ts b/main/src/controllers/AliveCheckController.ts
similarity index 100%
rename from src/controllers/AliveCheckController.ts
rename to main/src/controllers/AliveCheckController.ts
diff --git a/src/controllers/ConfigController.ts b/main/src/controllers/ConfigController.ts
similarity index 100%
rename from src/controllers/ConfigController.ts
rename to main/src/controllers/ConfigController.ts
diff --git a/src/controllers/DeleteMessageController.ts b/main/src/controllers/DeleteMessageController.ts
similarity index 100%
rename from src/controllers/DeleteMessageController.ts
rename to main/src/controllers/DeleteMessageController.ts
diff --git a/src/controllers/FileAndFlashPhotoController.ts b/main/src/controllers/FileAndFlashPhotoController.ts
similarity index 100%
rename from src/controllers/FileAndFlashPhotoController.ts
rename to main/src/controllers/FileAndFlashPhotoController.ts
diff --git a/src/controllers/ForwardController.ts b/main/src/controllers/ForwardController.ts
similarity index 100%
rename from src/controllers/ForwardController.ts
rename to main/src/controllers/ForwardController.ts
diff --git a/src/controllers/HugController.ts b/main/src/controllers/HugController.ts
similarity index 100%
rename from src/controllers/HugController.ts
rename to main/src/controllers/HugController.ts
diff --git a/src/controllers/InChatCommandsController.ts b/main/src/controllers/InChatCommandsController.ts
similarity index 100%
rename from src/controllers/InChatCommandsController.ts
rename to main/src/controllers/InChatCommandsController.ts
diff --git a/src/controllers/InstanceManageController.ts b/main/src/controllers/InstanceManageController.ts
similarity index 100%
rename from src/controllers/InstanceManageController.ts
rename to main/src/controllers/InstanceManageController.ts
diff --git a/src/controllers/MiraiSkipFilterController.ts b/main/src/controllers/MiraiSkipFilterController.ts
similarity index 100%
rename from src/controllers/MiraiSkipFilterController.ts
rename to main/src/controllers/MiraiSkipFilterController.ts
diff --git a/src/controllers/OicqErrorNotifyController.ts b/main/src/controllers/OicqErrorNotifyController.ts
similarity index 100%
rename from src/controllers/OicqErrorNotifyController.ts
rename to main/src/controllers/OicqErrorNotifyController.ts
diff --git a/src/controllers/QuotLyController.ts b/main/src/controllers/QuotLyController.ts
similarity index 100%
rename from src/controllers/QuotLyController.ts
rename to main/src/controllers/QuotLyController.ts
diff --git a/src/controllers/RequestController.ts b/main/src/controllers/RequestController.ts
similarity index 100%
rename from src/controllers/RequestController.ts
rename to main/src/controllers/RequestController.ts
diff --git a/src/controllers/SetupController.ts b/main/src/controllers/SetupController.ts
similarity index 100%
rename from src/controllers/SetupController.ts
rename to main/src/controllers/SetupController.ts
diff --git a/src/controllers/StatusReportController.ts b/main/src/controllers/StatusReportController.ts
similarity index 100%
rename from src/controllers/StatusReportController.ts
rename to main/src/controllers/StatusReportController.ts
diff --git a/src/encoding/convertWithFfmpeg.ts b/main/src/encoding/convertWithFfmpeg.ts
similarity index 100%
rename from src/encoding/convertWithFfmpeg.ts
rename to main/src/encoding/convertWithFfmpeg.ts
diff --git a/src/encoding/silk.ts b/main/src/encoding/silk.ts
similarity index 100%
rename from src/encoding/silk.ts
rename to main/src/encoding/silk.ts
diff --git a/src/encoding/tgsToGif.ts b/main/src/encoding/tgsToGif.ts
similarity index 100%
rename from src/encoding/tgsToGif.ts
rename to main/src/encoding/tgsToGif.ts
diff --git a/src/helpers/CallbackQueryHelper.ts b/main/src/helpers/CallbackQueryHelper.ts
similarity index 100%
rename from src/helpers/CallbackQueryHelper.ts
rename to main/src/helpers/CallbackQueryHelper.ts
diff --git a/src/helpers/RecoverMessageHelper.ts b/main/src/helpers/RecoverMessageHelper.ts
similarity index 100%
rename from src/helpers/RecoverMessageHelper.ts
rename to main/src/helpers/RecoverMessageHelper.ts
diff --git a/src/helpers/WaitForMessageHelper.ts b/main/src/helpers/WaitForMessageHelper.ts
similarity index 100%
rename from src/helpers/WaitForMessageHelper.ts
rename to main/src/helpers/WaitForMessageHelper.ts
diff --git a/src/helpers/convert.ts b/main/src/helpers/convert.ts
similarity index 100%
rename from src/helpers/convert.ts
rename to main/src/helpers/convert.ts
diff --git a/src/helpers/dataPath.ts b/main/src/helpers/dataPath.ts
similarity index 100%
rename from src/helpers/dataPath.ts
rename to main/src/helpers/dataPath.ts
diff --git a/src/helpers/forwardHelper.ts b/main/src/helpers/forwardHelper.ts
similarity index 100%
rename from src/helpers/forwardHelper.ts
rename to main/src/helpers/forwardHelper.ts
diff --git a/src/helpers/setupHelper.ts b/main/src/helpers/setupHelper.ts
similarity index 100%
rename from src/helpers/setupHelper.ts
rename to main/src/helpers/setupHelper.ts
diff --git a/src/index.ts b/main/src/index.ts
similarity index 100%
rename from src/index.ts
rename to main/src/index.ts
diff --git a/src/models/ForwardPairs.ts b/main/src/models/ForwardPairs.ts
similarity index 100%
rename from src/models/ForwardPairs.ts
rename to main/src/models/ForwardPairs.ts
diff --git a/src/models/Instance.ts b/main/src/models/Instance.ts
similarity index 100%
rename from src/models/Instance.ts
rename to main/src/models/Instance.ts
diff --git a/src/models/Pair.ts b/main/src/models/Pair.ts
similarity index 100%
rename from src/models/Pair.ts
rename to main/src/models/Pair.ts
diff --git a/src/models/TelegramSession.ts b/main/src/models/TelegramSession.ts
similarity index 100%
rename from src/models/TelegramSession.ts
rename to main/src/models/TelegramSession.ts
diff --git a/src/models/db.ts b/main/src/models/db.ts
similarity index 100%
rename from src/models/db.ts
rename to main/src/models/db.ts
diff --git a/src/models/env.ts b/main/src/models/env.ts
similarity index 100%
rename from src/models/env.ts
rename to main/src/models/env.ts
diff --git a/src/services/ConfigService.ts b/main/src/services/ConfigService.ts
similarity index 100%
rename from src/services/ConfigService.ts
rename to main/src/services/ConfigService.ts
diff --git a/src/services/DeleteMessageService.ts b/main/src/services/DeleteMessageService.ts
similarity index 100%
rename from src/services/DeleteMessageService.ts
rename to main/src/services/DeleteMessageService.ts
diff --git a/src/services/ForwardService.ts b/main/src/services/ForwardService.ts
similarity index 100%
rename from src/services/ForwardService.ts
rename to main/src/services/ForwardService.ts
diff --git a/src/services/InChatCommandsService.ts b/main/src/services/InChatCommandsService.ts
similarity index 100%
rename from src/services/InChatCommandsService.ts
rename to main/src/services/InChatCommandsService.ts
diff --git a/src/services/SetupService.ts b/main/src/services/SetupService.ts
similarity index 100%
rename from src/services/SetupService.ts
rename to main/src/services/SetupService.ts
diff --git a/src/types/definitions.d.ts b/main/src/types/definitions.d.ts
similarity index 100%
rename from src/types/definitions.d.ts
rename to main/src/types/definitions.d.ts
diff --git a/src/utils/arrays.ts b/main/src/utils/arrays.ts
similarity index 100%
rename from src/utils/arrays.ts
rename to main/src/utils/arrays.ts
diff --git a/src/utils/flagControl.ts b/main/src/utils/flagControl.ts
similarity index 100%
rename from src/utils/flagControl.ts
rename to main/src/utils/flagControl.ts
diff --git a/src/utils/getAboutText.ts b/main/src/utils/getAboutText.ts
similarity index 100%
rename from src/utils/getAboutText.ts
rename to main/src/utils/getAboutText.ts
diff --git a/src/utils/hashing.ts b/main/src/utils/hashing.ts
similarity index 100%
rename from src/utils/hashing.ts
rename to main/src/utils/hashing.ts
diff --git a/src/utils/highLevelFunces.ts b/main/src/utils/highLevelFunces.ts
similarity index 100%
rename from src/utils/highLevelFunces.ts
rename to main/src/utils/highLevelFunces.ts
diff --git a/src/utils/inlineDigitInput.ts b/main/src/utils/inlineDigitInput.ts
similarity index 100%
rename from src/utils/inlineDigitInput.ts
rename to main/src/utils/inlineDigitInput.ts
diff --git a/src/utils/paginatedInlineSelector.ts b/main/src/utils/paginatedInlineSelector.ts
similarity index 100%
rename from src/utils/paginatedInlineSelector.ts
rename to main/src/utils/paginatedInlineSelector.ts
diff --git a/src/utils/random.ts b/main/src/utils/random.ts
similarity index 100%
rename from src/utils/random.ts
rename to main/src/utils/random.ts
diff --git a/src/utils/urls.ts b/main/src/utils/urls.ts
similarity index 100%
rename from src/utils/urls.ts
rename to main/src/utils/urls.ts
diff --git a/tsconfig.json b/main/tsconfig.json
similarity index 100%
rename from tsconfig.json
rename to main/tsconfig.json
diff --git a/package.json b/package.json
index 23bb370..a7dfc78 100644
--- a/package.json
+++ b/package.json
@@ -1,57 +1,10 @@
{
"name": "q2tg",
"scripts": {
- "dev": "tsx src/index.ts",
- "build": "tsc",
- "start": "prisma db push --accept-data-loss --skip-generate && node build/index.js",
- "prisma": "prisma",
- "import": "ts-node tools/import"
+ "dev": "pnpm run --stream --parallel dev",
+ "build": "pnpm run --stream --parallel build"
},
- "bin": "build/index.js",
- "files": [
- "build",
- "assets"
- ],
"devDependencies": {
- "@types/cli-progress": "^3.11.5",
- "@types/date-and-time": "^3.0.3",
- "@types/dockerode": "^3.3.23",
- "@types/fluent-ffmpeg": "^2.1.24",
- "@types/lodash": "^4.14.202",
- "@types/node": "^20.11.17",
- "@types/prompts": "^2.4.9",
- "tsx": "^4.7.0",
"typescript": "^5.3.3"
- },
- "dependencies": {
- "@prisma/client": "5.9.1",
- "axios": "^1.6.7",
- "baidu-aip-sdk": "^4.16.15",
- "big-integer": "^1.6.52",
- "cli-progress": "^3.11.2",
- "date-and-time": "^3.1.1",
- "dockerode": "^4.0.2",
- "dotenv": "^16.4.1",
- "eviltransform": "^0.2.2",
- "file-type": "^19.0.0",
- "fluent-ffmpeg": "^2.1.2",
- "icqq": "^0.6.8",
- "image-size": "^1.1.1",
- "lodash": "^4.17.21",
- "log4js": "^6.6.1",
- "nodejs-base64": "^2.0.0",
- "prisma": "5.9.1",
- "prompts": "^2.4.2",
- "quote-api": "https://github.com/Clansty/quote-api/archive/014b21138afbbe0e12c91b00561414b1e851fc0f.tar.gz",
- "sharp": "^0.33.2",
- "silk-sdk": "^0.2.2",
- "telegram": "https://github.com/clansty/gramjs/releases/download/2.19.10%2Brevert_media/telegram-2.19.10.tgz",
- "tmp-promise": "^3.0.3",
- "undici": "^6.4.0",
- "zincsearch-node": "^2.1.0",
- "zod": "^3.22.4"
- },
- "engines": {
- "node": "^14.13.1 || >=16.0.0"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4b3b0fa..f43e793 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,117 +4,445 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
-dependencies:
- '@prisma/client':
- specifier: 5.9.1
- version: 5.9.1(prisma@5.9.1)
- axios:
- specifier: ^1.6.7
- version: 1.6.7
- baidu-aip-sdk:
- specifier: ^4.16.15
- version: 4.16.15
- big-integer:
- specifier: ^1.6.52
- version: 1.6.52
- cli-progress:
- specifier: ^3.11.2
- version: 3.12.0
- date-and-time:
- specifier: ^3.1.1
- version: 3.1.1
- dockerode:
- specifier: ^4.0.2
- version: 4.0.2
- dotenv:
- specifier: ^16.4.1
- version: 16.4.1
- eviltransform:
- specifier: ^0.2.2
- version: 0.2.2
- file-type:
- specifier: ^19.0.0
- version: 19.0.0
- fluent-ffmpeg:
- specifier: ^2.1.2
- version: 2.1.2
- icqq:
- specifier: ^0.6.8
- version: 0.6.8
- image-size:
- specifier: ^1.1.1
- version: 1.1.1
- lodash:
- specifier: ^4.17.21
- version: 4.17.21
- log4js:
- specifier: ^6.6.1
- version: 6.9.1
- nodejs-base64:
- specifier: ^2.0.0
- version: 2.0.0
- prisma:
- specifier: 5.9.1
- version: 5.9.1
- prompts:
- specifier: ^2.4.2
- version: 2.4.2
- quote-api:
- specifier: https://github.com/Clansty/quote-api/archive/014b21138afbbe0e12c91b00561414b1e851fc0f.tar.gz
- version: '@github.com/Clansty/quote-api/archive/014b21138afbbe0e12c91b00561414b1e851fc0f.tar.gz'
- sharp:
- specifier: ^0.33.2
- version: 0.33.2
- silk-sdk:
- specifier: ^0.2.2
- version: 0.2.2
- telegram:
- specifier: https://github.com/clansty/gramjs/releases/download/2.19.10%2Brevert_media/telegram-2.19.10.tgz
- version: '@github.com/clansty/gramjs/releases/download/2.19.10%25252525252Brevert_media/telegram-2.19.10.tgz'
- tmp-promise:
- specifier: ^3.0.3
- version: 3.0.3
- undici:
- specifier: ^6.4.0
- version: 6.4.0
- zincsearch-node:
- specifier: ^2.1.0
- version: 2.1.1(undici@6.4.0)
- zod:
- specifier: ^3.22.4
- version: 3.22.4
+importers:
-devDependencies:
- '@types/cli-progress':
- specifier: ^3.11.5
- version: 3.11.5
- '@types/date-and-time':
- specifier: ^3.0.3
- version: 3.0.3
- '@types/dockerode':
- specifier: ^3.3.23
- version: 3.3.23
- '@types/fluent-ffmpeg':
- specifier: ^2.1.24
- version: 2.1.24
- '@types/lodash':
- specifier: ^4.14.202
- version: 4.14.202
- '@types/node':
- specifier: ^20.11.17
- version: 20.11.17
- '@types/prompts':
- specifier: ^2.4.9
- version: 2.4.9
- tsx:
- specifier: ^4.7.0
- version: 4.7.0
- typescript:
- specifier: ^5.3.3
- version: 5.3.3
+ .:
+ devDependencies:
+ typescript:
+ specifier: ^5.3.3
+ version: 5.3.3
+
+ main:
+ dependencies:
+ '@prisma/client':
+ specifier: 5.9.1
+ version: 5.9.1(prisma@5.9.1)
+ axios:
+ specifier: ^1.6.7
+ version: 1.6.7
+ baidu-aip-sdk:
+ specifier: ^4.16.15
+ version: 4.16.15
+ big-integer:
+ specifier: ^1.6.52
+ version: 1.6.52
+ cli-progress:
+ specifier: ^3.11.2
+ version: 3.12.0
+ date-and-time:
+ specifier: ^3.1.1
+ version: 3.1.1
+ dockerode:
+ specifier: ^4.0.2
+ version: 4.0.2
+ dotenv:
+ specifier: ^16.4.1
+ version: 16.4.1
+ eviltransform:
+ specifier: ^0.2.2
+ version: 0.2.2
+ file-type:
+ specifier: ^19.0.0
+ version: 19.0.0
+ fluent-ffmpeg:
+ specifier: ^2.1.2
+ version: 2.1.2
+ icqq:
+ specifier: ^0.6.8
+ version: 0.6.8
+ image-size:
+ specifier: ^1.1.1
+ version: 1.1.1
+ lodash:
+ specifier: ^4.17.21
+ version: 4.17.21
+ log4js:
+ specifier: ^6.6.1
+ version: 6.9.1
+ nodejs-base64:
+ specifier: ^2.0.0
+ version: 2.0.0
+ prisma:
+ specifier: 5.9.1
+ version: 5.9.1
+ prompts:
+ specifier: ^2.4.2
+ version: 2.4.2
+ quote-api:
+ specifier: https://github.com/Clansty/quote-api/archive/014b21138afbbe0e12c91b00561414b1e851fc0f.tar.gz
+ version: '@github.com/Clansty/quote-api/archive/014b21138afbbe0e12c91b00561414b1e851fc0f.tar.gz'
+ sharp:
+ specifier: ^0.33.2
+ version: 0.33.2
+ silk-sdk:
+ specifier: ^0.2.2
+ version: 0.2.2
+ telegram:
+ specifier: https://github.com/clansty/gramjs/releases/download/2.19.10%2Brevert_media/telegram-2.19.10.tgz
+ version: '@github.com/clansty/gramjs/releases/download/2.19.10%2525252Brevert_media/telegram-2.19.10.tgz'
+ tmp-promise:
+ specifier: ^3.0.3
+ version: 3.0.3
+ undici:
+ specifier: ^6.4.0
+ version: 6.4.0
+ zincsearch-node:
+ specifier: ^2.1.0
+ version: 2.1.1(undici@6.4.0)
+ zod:
+ specifier: ^3.22.4
+ version: 3.22.4
+ devDependencies:
+ '@types/cli-progress':
+ specifier: ^3.11.5
+ version: 3.11.5
+ '@types/date-and-time':
+ specifier: ^3.0.3
+ version: 3.0.3
+ '@types/dockerode':
+ specifier: ^3.3.23
+ version: 3.3.23
+ '@types/fluent-ffmpeg':
+ specifier: ^2.1.24
+ version: 2.1.24
+ '@types/lodash':
+ specifier: ^4.14.202
+ version: 4.14.202
+ '@types/node':
+ specifier: ^20.11.17
+ version: 20.11.17
+ '@types/prompts':
+ specifier: ^2.4.9
+ version: 2.4.9
+ tsx:
+ specifier: ^4.7.0
+ version: 4.7.0
+
+ ui:
+ devDependencies:
+ '@vitejs/plugin-vue-jsx':
+ specifier: ^3.1.0
+ version: 3.1.0(vite@5.1.1)(vue@3.4.18)
+ naive-ui:
+ specifier: ^2.37.3
+ version: 2.37.3(vue@3.4.18)
+ sass:
+ specifier: ^1.70.0
+ version: 1.70.0
+ vite:
+ specifier: ^5.1.1
+ version: 5.1.1(sass@1.70.0)
+ vue:
+ specifier: ^3.4.18
+ version: 3.4.18(typescript@5.3.3)
+ vue-router:
+ specifier: ^4.2.5
+ version: 4.2.5(vue@3.4.18)
packages:
+ /@ampproject/remapping@2.2.1:
+ resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.3
+ '@jridgewell/trace-mapping': 0.3.22
+ dev: true
+
+ /@babel/code-frame@7.23.5:
+ resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.23.4
+ chalk: 2.4.2
+ dev: true
+
+ /@babel/compat-data@7.23.5:
+ resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/core@7.23.9:
+ resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@ampproject/remapping': 2.2.1
+ '@babel/code-frame': 7.23.5
+ '@babel/generator': 7.23.6
+ '@babel/helper-compilation-targets': 7.23.6
+ '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9)
+ '@babel/helpers': 7.23.9
+ '@babel/parser': 7.23.9
+ '@babel/template': 7.23.9
+ '@babel/traverse': 7.23.9
+ '@babel/types': 7.23.9
+ convert-source-map: 2.0.0
+ debug: 4.3.4
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/generator@7.23.6:
+ resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.9
+ '@jridgewell/gen-mapping': 0.3.3
+ '@jridgewell/trace-mapping': 0.3.22
+ jsesc: 2.5.2
+ dev: true
+
+ /@babel/helper-annotate-as-pure@7.22.5:
+ resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.9
+ dev: true
+
+ /@babel/helper-compilation-targets@7.23.6:
+ resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/compat-data': 7.23.5
+ '@babel/helper-validator-option': 7.23.5
+ browserslist: 4.22.3
+ lru-cache: 5.1.1
+ semver: 6.3.1
+ dev: true
+
+ /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.23.9):
+ resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.23.9
+ '@babel/helper-annotate-as-pure': 7.22.5
+ '@babel/helper-environment-visitor': 7.22.20
+ '@babel/helper-function-name': 7.23.0
+ '@babel/helper-member-expression-to-functions': 7.23.0
+ '@babel/helper-optimise-call-expression': 7.22.5
+ '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+ '@babel/helper-split-export-declaration': 7.22.6
+ semver: 6.3.1
+ dev: true
+
+ /@babel/helper-environment-visitor@7.22.20:
+ resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-function-name@7.23.0:
+ resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.23.9
+ '@babel/types': 7.23.9
+ dev: true
+
+ /@babel/helper-hoist-variables@7.22.5:
+ resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.9
+ dev: true
+
+ /@babel/helper-member-expression-to-functions@7.23.0:
+ resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.9
+ dev: true
+
+ /@babel/helper-module-imports@7.22.15:
+ resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.9
+ dev: true
+
+ /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9):
+ resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.23.9
+ '@babel/helper-environment-visitor': 7.22.20
+ '@babel/helper-module-imports': 7.22.15
+ '@babel/helper-simple-access': 7.22.5
+ '@babel/helper-split-export-declaration': 7.22.6
+ '@babel/helper-validator-identifier': 7.22.20
+ dev: true
+
+ /@babel/helper-optimise-call-expression@7.22.5:
+ resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.9
+ dev: true
+
+ /@babel/helper-plugin-utils@7.22.5:
+ resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9):
+ resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.23.9
+ '@babel/helper-environment-visitor': 7.22.20
+ '@babel/helper-member-expression-to-functions': 7.23.0
+ '@babel/helper-optimise-call-expression': 7.22.5
+ dev: true
+
+ /@babel/helper-simple-access@7.22.5:
+ resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.9
+ dev: true
+
+ /@babel/helper-skip-transparent-expression-wrappers@7.22.5:
+ resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.9
+ dev: true
+
+ /@babel/helper-split-export-declaration@7.22.6:
+ resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.23.9
+ dev: true
+
+ /@babel/helper-string-parser@7.23.4:
+ resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-validator-identifier@7.22.20:
+ resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-validator-option@7.23.5:
+ resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helpers@7.23.9:
+ resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.23.9
+ '@babel/traverse': 7.23.9
+ '@babel/types': 7.23.9
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/highlight@7.23.4:
+ resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.22.20
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
+ /@babel/parser@7.23.9:
+ resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.23.9
+ dev: true
+
+ /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9):
+ resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.23.9
+ '@babel/helper-plugin-utils': 7.22.5
+ dev: true
+
+ /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9):
+ resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.23.9
+ '@babel/helper-plugin-utils': 7.22.5
+ dev: true
+
+ /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.9):
+ resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.23.9
+ '@babel/helper-annotate-as-pure': 7.22.5
+ '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9)
+ '@babel/helper-plugin-utils': 7.22.5
+ '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9)
+ dev: true
+
+ /@babel/runtime@7.23.9:
+ resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ regenerator-runtime: 0.14.1
+ dev: true
+
+ /@babel/template@7.23.9:
+ resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.23.5
+ '@babel/parser': 7.23.9
+ '@babel/types': 7.23.9
+ dev: true
+
+ /@babel/traverse@7.23.9:
+ resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.23.5
+ '@babel/generator': 7.23.6
+ '@babel/helper-environment-visitor': 7.22.20
+ '@babel/helper-function-name': 7.23.0
+ '@babel/helper-hoist-variables': 7.22.5
+ '@babel/helper-split-export-declaration': 7.22.6
+ '@babel/parser': 7.23.9
+ '@babel/types': 7.23.9
+ debug: 4.3.4
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/types@7.23.9:
+ resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.23.4
+ '@babel/helper-validator-identifier': 7.22.20
+ to-fast-properties: 2.0.0
+ dev: true
+
/@balena/dockerignore@1.0.2:
resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==}
dev: false
@@ -123,6 +451,22 @@ packages:
resolution: {integrity: sha512-PcYz4FDGblO6tM2kSC+VzhhK62vml6k6/YAkiWtyPvrgJVfnDRoHGDtKn5UiaRRUrvUTTocBpvc2rRgTCqxjsg==}
dev: false
+ /@css-render/plugin-bem@0.15.12(css-render@0.15.12):
+ resolution: {integrity: sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==}
+ peerDependencies:
+ css-render: ~0.15.12
+ dependencies:
+ css-render: 0.15.12
+ dev: true
+
+ /@css-render/vue3-ssr@0.15.12(vue@3.4.18):
+ resolution: {integrity: sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==}
+ peerDependencies:
+ vue: ^3.0.11
+ dependencies:
+ vue: 3.4.18(typescript@5.3.3)
+ dev: true
+
/@emnapi/runtime@0.45.0:
resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==}
requiresBuild: true
@@ -131,6 +475,10 @@ packages:
dev: false
optional: true
+ /@emotion/hash@0.8.0:
+ resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
+ dev: true
+
/@esbuild/aix-ppc64@0.19.11:
resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==}
engines: {node: '>=12'}
@@ -877,6 +1225,40 @@ packages:
regenerator-runtime: 0.13.11
dev: false
+ /@jridgewell/gen-mapping@0.3.3:
+ resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.22
+ dev: true
+
+ /@jridgewell/resolve-uri@3.1.1:
+ resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/set-array@1.1.2:
+ resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/sourcemap-codec@1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ dev: true
+
+ /@jridgewell/trace-mapping@0.3.22:
+ resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
+ /@juggle/resize-observer@3.4.0:
+ resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
+ dev: true
+
/@mapbox/node-pre-gyp@1.0.11:
resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
hasBin: true
@@ -940,6 +1322,110 @@ packages:
'@prisma/debug': 5.9.1
dev: false
+ /@rollup/rollup-android-arm-eabi@4.10.0:
+ resolution: {integrity: sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-android-arm64@4.10.0:
+ resolution: {integrity: sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-darwin-arm64@4.10.0:
+ resolution: {integrity: sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-darwin-x64@4.10.0:
+ resolution: {integrity: sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm-gnueabihf@4.10.0:
+ resolution: {integrity: sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm64-gnu@4.10.0:
+ resolution: {integrity: sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm64-musl@4.10.0:
+ resolution: {integrity: sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-riscv64-gnu@4.10.0:
+ resolution: {integrity: sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-x64-gnu@4.10.0:
+ resolution: {integrity: sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-x64-musl@4.10.0:
+ resolution: {integrity: sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-arm64-msvc@4.10.0:
+ resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-ia32-msvc@4.10.0:
+ resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-x64-msvc@4.10.0:
+ resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@tokenizer/token@0.3.0:
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
dev: false
@@ -976,12 +1462,26 @@ packages:
'@types/node': 20.11.17
dev: true
+ /@types/estree@1.0.5:
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ dev: true
+
/@types/fluent-ffmpeg@2.1.24:
resolution: {integrity: sha512-g5oQO8Jgi2kFS3tTub7wLvfLztr1s8tdXmRd8PiL/hLMLzTIAyMR2sANkTggM/rdEDAg3d63nYRRVepwBiCw5A==}
dependencies:
'@types/node': 20.11.17
dev: true
+ /@types/katex@0.16.7:
+ resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
+ dev: true
+
+ /@types/lodash-es@4.17.12:
+ resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
+ dependencies:
+ '@types/lodash': 4.14.202
+ dev: true
+
/@types/lodash@4.14.202:
resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==}
dev: true
@@ -1015,6 +1515,140 @@ packages:
'@types/node': 18.18.8
dev: true
+ /@vitejs/plugin-vue-jsx@3.1.0(vite@5.1.1)(vue@3.4.18):
+ resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.0.0 || ^5.0.0
+ vue: ^3.0.0
+ dependencies:
+ '@babel/core': 7.23.9
+ '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9)
+ '@vue/babel-plugin-jsx': 1.2.1(@babel/core@7.23.9)
+ vite: 5.1.1(sass@1.70.0)
+ vue: 3.4.18(typescript@5.3.3)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vue/babel-helper-vue-transform-on@1.2.1:
+ resolution: {integrity: sha512-jtEXim+pfyHWwvheYwUwSXm43KwQo8nhOBDyjrUITV6X2tB7lJm6n/+4sqR8137UVZZul5hBzWHdZ2uStYpyRQ==}
+ dev: true
+
+ /@vue/babel-plugin-jsx@1.2.1(@babel/core@7.23.9):
+ resolution: {integrity: sha512-Yy9qGktktXhB39QE99So/BO2Uwm/ZG+gpL9vMg51ijRRbINvgbuhyJEi4WYmGRMx/MSTfK0xjgZ3/MyY+iLCEg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ dependencies:
+ '@babel/core': 7.23.9
+ '@babel/helper-module-imports': 7.22.15
+ '@babel/helper-plugin-utils': 7.22.5
+ '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9)
+ '@babel/template': 7.23.9
+ '@babel/traverse': 7.23.9
+ '@babel/types': 7.23.9
+ '@vue/babel-helper-vue-transform-on': 1.2.1
+ '@vue/babel-plugin-resolve-type': 1.2.1(@babel/core@7.23.9)
+ camelcase: 6.3.0
+ html-tags: 3.3.1
+ svg-tags: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vue/babel-plugin-resolve-type@1.2.1(@babel/core@7.23.9):
+ resolution: {integrity: sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/code-frame': 7.23.5
+ '@babel/core': 7.23.9
+ '@babel/helper-module-imports': 7.22.15
+ '@babel/helper-plugin-utils': 7.22.5
+ '@babel/parser': 7.23.9
+ '@vue/compiler-sfc': 3.4.18
+ dev: true
+
+ /@vue/compiler-core@3.4.18:
+ resolution: {integrity: sha512-F7YK8lMK0iv6b9/Gdk15A67wM0KKZvxDxed0RR60C1z9tIJTKta+urs4j0RTN5XqHISzI3etN3mX0uHhjmoqjQ==}
+ dependencies:
+ '@babel/parser': 7.23.9
+ '@vue/shared': 3.4.18
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.0.2
+ dev: true
+
+ /@vue/compiler-dom@3.4.18:
+ resolution: {integrity: sha512-24Eb8lcMfInefvQ6YlEVS18w5Q66f4+uXWVA+yb7praKbyjHRNuKVWGuinfSSjM0ZIiPi++QWukhkgznBaqpEA==}
+ dependencies:
+ '@vue/compiler-core': 3.4.18
+ '@vue/shared': 3.4.18
+ dev: true
+
+ /@vue/compiler-sfc@3.4.18:
+ resolution: {integrity: sha512-rG5tqtnzwrVpMqAQ7FHtvHaV70G6LLfJIWLYZB/jZ9m/hrnZmIQh+H3ewnC5onwe/ibljm9+ZupxeElzqCkTAw==}
+ dependencies:
+ '@babel/parser': 7.23.9
+ '@vue/compiler-core': 3.4.18
+ '@vue/compiler-dom': 3.4.18
+ '@vue/compiler-ssr': 3.4.18
+ '@vue/shared': 3.4.18
+ estree-walker: 2.0.2
+ magic-string: 0.30.7
+ postcss: 8.4.35
+ source-map-js: 1.0.2
+ dev: true
+
+ /@vue/compiler-ssr@3.4.18:
+ resolution: {integrity: sha512-hSlv20oUhPxo2UYUacHgGaxtqP0tvFo6ixxxD6JlXIkwzwoZ9eKK6PFQN4hNK/R13JlNyldwWt/fqGBKgWJ6nQ==}
+ dependencies:
+ '@vue/compiler-dom': 3.4.18
+ '@vue/shared': 3.4.18
+ dev: true
+
+ /@vue/devtools-api@6.5.1:
+ resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
+ dev: true
+
+ /@vue/reactivity@3.4.18:
+ resolution: {integrity: sha512-7uda2/I0jpLiRygprDo5Jxs2HJkOVXcOMlyVlY54yRLxoycBpwGJRwJT9EdGB4adnoqJDXVT2BilUAYwI7qvmg==}
+ dependencies:
+ '@vue/shared': 3.4.18
+ dev: true
+
+ /@vue/runtime-core@3.4.18:
+ resolution: {integrity: sha512-7mU9diCa+4e+8/wZ7Udw5pwTH10A11sZ1nldmHOUKJnzCwvZxfJqAtw31mIf4T5H2FsLCSBQT3xgioA9vIjyDQ==}
+ dependencies:
+ '@vue/reactivity': 3.4.18
+ '@vue/shared': 3.4.18
+ dev: true
+
+ /@vue/runtime-dom@3.4.18:
+ resolution: {integrity: sha512-2y1Mkzcw1niSfG7z3Qx+2ir9Gb4hdTkZe5p/I8x1aTIKQE0vY0tPAEUPhZm5tx6183gG3D/KwHG728UR0sIufA==}
+ dependencies:
+ '@vue/runtime-core': 3.4.18
+ '@vue/shared': 3.4.18
+ csstype: 3.1.3
+ dev: true
+
+ /@vue/server-renderer@3.4.18(vue@3.4.18):
+ resolution: {integrity: sha512-YJd1wa7mzUN3NRqLEsrwEYWyO+PUBSROIGlCc3J/cvn7Zu6CxhNLgXa8Z4zZ5ja5/nviYO79J1InoPeXgwBTZA==}
+ peerDependencies:
+ vue: 3.4.18
+ dependencies:
+ '@vue/compiler-ssr': 3.4.18
+ '@vue/shared': 3.4.18
+ vue: 3.4.18(typescript@5.3.3)
+ dev: true
+
+ /@vue/shared@3.4.18:
+ resolution: {integrity: sha512-CxouGFxxaW5r1WbrSmWwck3No58rApXgRSBxrqgnY1K+jk20F6DrXJkHdH9n4HVT+/B6G2CAn213Uq3npWiy8Q==}
+ dev: true
+
/abab@2.0.6:
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
deprecated: Use your platform's native atob() and btoa() methods instead
@@ -1084,7 +1718,6 @@ packages:
engines: {node: '>=4'}
dependencies:
color-convert: 1.9.3
- dev: false
/any-base@1.1.0:
resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==}
@@ -1094,6 +1727,14 @@ packages:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
dev: false
+ /anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+ dev: true
+
/aproba@2.0.0:
resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
dev: false
@@ -1123,6 +1764,10 @@ packages:
tslib: 2.6.2
dev: false
+ /async-validator@4.2.5:
+ resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
+ dev: true
+
/async@3.2.5:
resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==}
dev: false
@@ -1183,6 +1828,11 @@ packages:
engines: {node: '>=0.6'}
dev: false
+ /binary-extensions@2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+ dev: true
+
/bindings@1.5.0:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
dependencies:
@@ -1209,6 +1859,13 @@ packages:
concat-map: 0.0.1
dev: false
+ /braces@3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+ dev: true
+
/browser-process-hrtime@1.0.0:
resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==}
dev: false
@@ -1219,6 +1876,17 @@ packages:
dev: false
optional: true
+ /browserslist@4.22.3:
+ resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001585
+ electron-to-chromium: 1.4.665
+ node-releases: 2.0.14
+ update-browserslist-db: 1.0.13(browserslist@4.22.3)
+ dev: true
+
/buffer-equal@0.0.1:
resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==}
engines: {node: '>=0.4.0'}
@@ -1279,6 +1947,15 @@ packages:
set-function-length: 1.1.1
dev: false
+ /camelcase@6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /caniuse-lite@1.0.30001585:
+ resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==}
+ dev: true
+
/canvas@2.11.2:
resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==}
engines: {node: '>=6'}
@@ -1303,7 +1980,21 @@ packages:
ansi-styles: 3.2.1
escape-string-regexp: 1.0.5
supports-color: 5.5.0
- dev: false
+
+ /chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
/chownr@1.1.4:
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
@@ -1339,7 +2030,6 @@ packages:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
color-name: 1.1.3
- dev: false
/color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
@@ -1350,7 +2040,6 @@ packages:
/color-name@1.1.3:
resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
- dev: false
/color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
@@ -1410,6 +2099,10 @@ packages:
engines: {node: '>= 0.6'}
dev: false
+ /convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+ dev: true
+
/cookies@0.9.1:
resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==}
engines: {node: '>= 0.8'}
@@ -1436,6 +2129,13 @@ packages:
dev: false
optional: true
+ /css-render@0.15.12:
+ resolution: {integrity: sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==}
+ dependencies:
+ '@emotion/hash': 0.8.0
+ csstype: 3.0.11
+ dev: true
+
/cssom@0.3.8:
resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
dev: false
@@ -1451,6 +2151,14 @@ packages:
cssom: 0.3.8
dev: false
+ /csstype@3.0.11:
+ resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==}
+ dev: true
+
+ /csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ dev: true
+
/d@1.0.1:
resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==}
dependencies:
@@ -1477,6 +2185,21 @@ packages:
/date-and-time@3.1.1:
resolution: {integrity: sha512-N9kstidT3P0VUk1iKOFilOZ6251r6iTUNx9M9kvgL2jqOk9mljWZUq5CjAtYwCnppWHbERk5YFQUrSbY7FQOpA==}
+ /date-fns-tz@2.0.0(date-fns@2.30.0):
+ resolution: {integrity: sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==}
+ peerDependencies:
+ date-fns: '>=2.0.0'
+ dependencies:
+ date-fns: 2.30.0
+ dev: true
+
+ /date-fns@2.30.0:
+ resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
+ engines: {node: '>=0.11'}
+ dependencies:
+ '@babel/runtime': 7.23.9
+ dev: true
+
/date-format@4.0.14:
resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==}
engines: {node: '>=4.0'}
@@ -1528,7 +2251,6 @@ packages:
optional: true
dependencies:
ms: 2.1.2
- dev: false
/decimal.js@10.4.3:
resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
@@ -1673,6 +2395,10 @@ packages:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: false
+ /electron-to-chromium@1.4.665:
+ resolution: {integrity: sha512-UpyCWObBoD+nSZgOC2ToaIdZB0r9GhqT2WahPKiSki6ckkSuKhQNso8V2PrFcHBMleI/eqbKgVQgVC4Wni4ilw==}
+ dev: true
+
/emoji-db@14.0.1:
resolution: {integrity: sha512-MFiCUr4DsehfCRPAS845AJR4RsekQkh4bUpfag7de3H7FlDHAEbL8Oq03bPzhl4W6rJgrGFhRkcll101ZpQjjg==}
dev: false
@@ -1696,6 +2422,11 @@ packages:
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
dev: false
+ /entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+ dev: true
+
/es5-ext@0.10.62:
resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==}
engines: {node: '>=0.10'}
@@ -1752,6 +2483,11 @@ packages:
'@esbuild/win32-x64': 0.19.11
dev: true
+ /escalade@3.1.2:
+ resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
+ engines: {node: '>=6'}
+ dev: true
+
/escape-html@1.0.3:
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
dev: false
@@ -1759,7 +2495,6 @@ packages:
/escape-string-regexp@1.0.5:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
- dev: false
/escodegen@2.1.0:
resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
@@ -1784,6 +2519,10 @@ packages:
engines: {node: '>=4.0'}
dev: false
+ /estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+ dev: true
+
/esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
@@ -1793,6 +2532,10 @@ packages:
resolution: {integrity: sha512-2mbiUIXuiJOPmXFOA/h3kQrXvTWdCPDdKdm3cnUfAWbuQu1pdInsaoM4trnCTlTF1l++EAvo4fcRu2b6kQdChQ==}
dev: false
+ /evtd@0.2.4:
+ resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==}
+ dev: true
+
/exif-parser@0.1.12:
resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==}
dev: false
@@ -1842,6 +2585,13 @@ packages:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
dev: false
+ /fill-range@7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: true
+
/flatted@3.2.9:
resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
dev: false
@@ -1951,6 +2701,11 @@ packages:
wide-align: 1.1.5
dev: false
+ /gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
/get-intrinsic@1.2.2:
resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==}
dependencies:
@@ -1979,6 +2734,13 @@ packages:
omggif: 1.0.10
dev: false
+ /glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
/glob@7.1.2:
resolution: {integrity: sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==}
requiresBuild: true
@@ -2010,6 +2772,11 @@ packages:
process: 0.11.10
dev: false
+ /globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+ dev: true
+
/gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
dependencies:
@@ -2051,7 +2818,6 @@ packages:
/has-flag@3.0.0:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'}
- dev: false
/has-property-descriptors@1.0.1:
resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
@@ -2094,6 +2860,11 @@ packages:
dev: false
optional: true
+ /highlight.js@11.9.0:
+ resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==}
+ engines: {node: '>=12.0.0'}
+ dev: true
+
/html-encoding-sniffer@2.0.1:
resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==}
engines: {node: '>=10'}
@@ -2101,6 +2872,11 @@ packages:
whatwg-encoding: 1.0.5
dev: false
+ /html-tags@3.3.1:
+ resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
+ engines: {node: '>=8'}
+ dev: true
+
/htmlparser2@6.1.0:
resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
dependencies:
@@ -2184,6 +2960,7 @@ packages:
/icqq@0.6.8:
resolution: {integrity: sha512-+Whg6gcxomNshRhij3vuEnjaO/8ODAzl3ZVda6KKwZtWTwuD23iX4pR57Kv7+VGw6Lp5fEGF6hjSxPHw9Rvqcg==}
engines: {node: '>= v14'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
dependencies:
axios: 1.6.7
log4js: 6.9.1
@@ -2214,6 +2991,10 @@ packages:
queue: 6.0.2
dev: false
+ /immutable@4.3.5:
+ resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==}
+ dev: true
+
/imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
@@ -2243,6 +3024,18 @@ packages:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
dev: false
+ /is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: true
+
+ /is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
@@ -2259,6 +3052,18 @@ packages:
has-tostringtag: 1.0.0
dev: false
+ /is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
/is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
dev: false
@@ -2303,6 +3108,10 @@ packages:
resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==}
dev: false
+ /js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ dev: true
+
/jsbn@0.1.1:
resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==}
dev: false
@@ -2350,6 +3159,12 @@ packages:
- utf-8-validate
dev: false
+ /jsesc@2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
/json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: false
@@ -2362,6 +3177,12 @@ packages:
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
dev: false
+ /json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
+
/jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
optionalDependencies:
@@ -2501,6 +3322,10 @@ packages:
xtend: 4.0.2
dev: false
+ /lodash-es@4.17.21:
+ resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
+ dev: true
+
/lodash.defaults@4.2.0:
resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
dev: false
@@ -2511,7 +3336,6 @@ packages:
/lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
- dev: false
/log4js@6.9.1:
resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==}
@@ -2551,7 +3375,6 @@ packages:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
dependencies:
yallist: 3.1.1
- dev: false
/lru-cache@6.0.0:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
@@ -2560,6 +3383,13 @@ packages:
yallist: 4.0.0
dev: false
+ /magic-string@0.30.7:
+ resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
/make-dir@3.1.0:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
engines: {node: '>=8'}
@@ -2697,16 +3527,48 @@ packages:
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
- dev: false
/ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: false
+ /naive-ui@2.37.3(vue@3.4.18):
+ resolution: {integrity: sha512-aUkHFXVIluSi8Me+npbcsdv1NYhVMj5t9YaruoCESlqmfqspj+R2QHEVXkTtUI1kQwVrABMCtAGq/wountqjZA==}
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ '@css-render/plugin-bem': 0.15.12(css-render@0.15.12)
+ '@css-render/vue3-ssr': 0.15.12(vue@3.4.18)
+ '@types/katex': 0.16.7
+ '@types/lodash': 4.14.202
+ '@types/lodash-es': 4.17.12
+ async-validator: 4.2.5
+ css-render: 0.15.12
+ csstype: 3.1.3
+ date-fns: 2.30.0
+ date-fns-tz: 2.0.0(date-fns@2.30.0)
+ evtd: 0.2.4
+ highlight.js: 11.9.0
+ lodash: 4.17.21
+ lodash-es: 4.17.21
+ seemly: 0.3.8
+ treemate: 0.3.11
+ vdirs: 0.1.8(vue@3.4.18)
+ vooks: 0.2.12(vue@3.4.18)
+ vue: 3.4.18(typescript@5.3.3)
+ vueuc: 0.4.58(vue@3.4.18)
+ dev: true
+
/nan@2.18.0:
resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==}
dev: false
+ /nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
+
/needle@2.9.1:
resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==}
engines: {node: '>= 4.4.x'}
@@ -2753,6 +3615,10 @@ packages:
write-file-atomic: 1.3.4
dev: false
+ /node-releases@2.0.14:
+ resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
+ dev: true
+
/nodejs-base64@2.0.0:
resolution: {integrity: sha512-rf83teAz8f251P+HQW0nZyIhIIKrTs8wz11n5+Dp1b+/oWCYSeCfNfbUqda5B0DhspBVXwJ7SPk8aghv/TFsjQ==}
dev: false
@@ -2765,6 +3631,11 @@ packages:
abbrev: 1.1.1
dev: false
+ /normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/npmlog@5.0.1:
resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
dependencies:
@@ -2891,6 +3762,15 @@ packages:
resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==}
dev: false
+ /picocolors@1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+ dev: true
+
+ /picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+ dev: true
+
/pixelmatch@4.0.2:
resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==}
hasBin: true
@@ -2908,6 +3788,15 @@ packages:
engines: {node: '>=12.13.0'}
dev: false
+ /postcss@8.4.35:
+ resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+ dev: true
+
/prisma@5.9.1:
resolution: {integrity: sha512-Hy/8KJZz0ELtkw4FnG9MS9rNWlXcJhf98Z2QMqi0QiVMoS8PzsBkpla0/Y5hTlob8F3HeECYphBjqmBxrluUrQ==}
engines: {node: '>=16.13'}
@@ -3012,6 +3901,13 @@ packages:
readable-stream: 3.6.2
dev: false
+ /readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+ dev: true
+
/real-cancellable-promise@1.2.0:
resolution: {integrity: sha512-FYhmx1FVSgoPRjneoTjh+EKZcNb8ijl/dyatTzase5eujYhVrLNDOiIY6AgQq7GU1kOoLgEd9jLVbhFg8k8dOQ==}
dev: false
@@ -3020,6 +3916,10 @@ packages:
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
dev: false
+ /regenerator-runtime@0.14.1:
+ resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+ dev: true
+
/request@2.88.2:
resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==}
engines: {node: '>= 6'}
@@ -3066,6 +3966,29 @@ packages:
glob: 7.2.3
dev: false
+ /rollup@4.10.0:
+ resolution: {integrity: sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+ dependencies:
+ '@types/estree': 1.0.5
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.10.0
+ '@rollup/rollup-android-arm64': 4.10.0
+ '@rollup/rollup-darwin-arm64': 4.10.0
+ '@rollup/rollup-darwin-x64': 4.10.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.10.0
+ '@rollup/rollup-linux-arm64-gnu': 4.10.0
+ '@rollup/rollup-linux-arm64-musl': 4.10.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.10.0
+ '@rollup/rollup-linux-x64-gnu': 4.10.0
+ '@rollup/rollup-linux-x64-musl': 4.10.0
+ '@rollup/rollup-win32-arm64-msvc': 4.10.0
+ '@rollup/rollup-win32-ia32-msvc': 4.10.0
+ '@rollup/rollup-win32-x64-msvc': 4.10.0
+ fsevents: 2.3.3
+ dev: true
+
/runes@0.4.3:
resolution: {integrity: sha512-K6p9y4ZyL9wPzA+PMDloNQPfoDGTiFYDvdlXznyGKgD10BJpcAosvATKrExRKOrNLgD8E7Um7WGW0lxsnOuNLg==}
engines: {node: '>=4.0.0'}
@@ -3084,6 +4007,16 @@ packages:
engines: {node: '>= 0.10'}
dev: false
+ /sass@1.70.0:
+ resolution: {integrity: sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+ dependencies:
+ chokidar: 3.6.0
+ immutable: 4.3.5
+ source-map-js: 1.0.2
+ dev: true
+
/sax@1.3.0:
resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
dev: false
@@ -3095,10 +4028,13 @@ packages:
xmlchars: 2.2.0
dev: false
+ /seemly@0.3.8:
+ resolution: {integrity: sha512-MW8Qs6vbzo0pHmDpFSYPna+lwpZ6Zk1ancbajw/7E8TKtHdV+1DfZZD+kKJEhG/cAoB/i+LiT+5msZOqj0DwRA==}
+ dev: true
+
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
- dev: false
/semver@7.5.4:
resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
@@ -3279,6 +4215,11 @@ packages:
smart-buffer: 4.2.0
dev: false
+ /source-map-js@1.0.2:
+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
@@ -3403,7 +4344,10 @@ packages:
engines: {node: '>=4'}
dependencies:
has-flag: 3.0.0
- dev: false
+
+ /svg-tags@1.0.0:
+ resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
+ dev: true
/symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
@@ -3478,6 +4422,18 @@ packages:
rimraf: 3.0.2
dev: false
+ /to-fast-properties@2.0.0:
+ resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: true
+
/toidentifier@1.0.1:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
@@ -3528,6 +4484,10 @@ packages:
punycode: 2.3.1
dev: false
+ /treemate@0.3.11:
+ resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==}
+ dev: true
+
/triptrap@0.0.17:
resolution: {integrity: sha512-hXc5npX73EeFc64PX1fyofdeyMVyXrNwLNbxAkirymK3AoTcn+xfbeYjfXOJl8iuKsciYQf1Q6VusAK1FUVcGw==}
dev: false
@@ -3636,6 +4596,17 @@ packages:
engines: {node: '>= 0.8'}
dev: false
+ /update-browserslist-db@1.0.13(browserslist@4.22.3):
+ resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.22.3
+ escalade: 3.1.2
+ picocolors: 1.0.0
+ dev: true
+
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
@@ -3682,6 +4653,15 @@ packages:
engines: {node: '>= 0.8'}
dev: false
+ /vdirs@0.1.8(vue@3.4.18):
+ resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==}
+ peerDependencies:
+ vue: ^3.0.11
+ dependencies:
+ evtd: 0.2.4
+ vue: 3.4.18(typescript@5.3.3)
+ dev: true
+
/verror@1.10.0:
resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==}
engines: {'0': node >=0.6.0}
@@ -3691,6 +4671,91 @@ packages:
extsprintf: 1.3.0
dev: false
+ /vite@5.1.1(sass@1.70.0):
+ resolution: {integrity: sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ esbuild: 0.19.11
+ postcss: 8.4.35
+ rollup: 4.10.0
+ sass: 1.70.0
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /vooks@0.2.12(vue@3.4.18):
+ resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==}
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ evtd: 0.2.4
+ vue: 3.4.18(typescript@5.3.3)
+ dev: true
+
+ /vue-router@4.2.5(vue@3.4.18):
+ resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==}
+ peerDependencies:
+ vue: ^3.2.0
+ dependencies:
+ '@vue/devtools-api': 6.5.1
+ vue: 3.4.18(typescript@5.3.3)
+ dev: true
+
+ /vue@3.4.18(typescript@5.3.3):
+ resolution: {integrity: sha512-0zLRYamFRe0wF4q2L3O24KQzLyLpL64ye1RUToOgOxuWZsb/FhaNRdGmeozdtVYLz6tl94OXLaK7/WQIrVCw1A==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@vue/compiler-dom': 3.4.18
+ '@vue/compiler-sfc': 3.4.18
+ '@vue/runtime-dom': 3.4.18
+ '@vue/server-renderer': 3.4.18(vue@3.4.18)
+ '@vue/shared': 3.4.18
+ typescript: 5.3.3
+ dev: true
+
+ /vueuc@0.4.58(vue@3.4.18):
+ resolution: {integrity: sha512-Wnj/N8WbPRSxSt+9ji1jtDHPzda5h2OH/0sFBhvdxDRuyCZbjGg3/cKMaKqEoe+dErTexG2R+i6Q8S/Toq1MYg==}
+ peerDependencies:
+ vue: ^3.0.11
+ dependencies:
+ '@css-render/vue3-ssr': 0.15.12(vue@3.4.18)
+ '@juggle/resize-observer': 3.4.0
+ css-render: 0.15.12
+ evtd: 0.2.4
+ seemly: 0.3.8
+ vdirs: 0.1.8(vue@3.4.18)
+ vooks: 0.2.12(vue@3.4.18)
+ vue: 3.4.18(typescript@5.3.3)
+ dev: true
+
/w3c-hr-time@1.0.2:
resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==}
deprecated: Use your platform's native performance.now() and performance.timeOrigin.
@@ -3848,7 +4913,6 @@ packages:
/yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
- dev: false
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
@@ -3903,7 +4967,7 @@ packages:
- utf-8-validate
dev: false
- '@github.com/clansty/gramjs/releases/download/2.19.10%25252525252Brevert_media/telegram-2.19.10.tgz':
+ '@github.com/clansty/gramjs/releases/download/2.19.10%2525252Brevert_media/telegram-2.19.10.tgz':
resolution: {tarball: https://github.com/clansty/gramjs/releases/download/2.19.10%2Brevert_media/telegram-2.19.10.tgz}
name: telegram
version: 2.19.10
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 0000000..61734c3
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,3 @@
+packages:
+ - main
+ - ui
diff --git a/ui/index.html b/ui/index.html
new file mode 100644
index 0000000..4118a6c
--- /dev/null
+++ b/ui/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+ Q2TG Web UI
+
+
+
+
+
+
diff --git a/ui/package.json b/ui/package.json
new file mode 100644
index 0000000..ae8dc62
--- /dev/null
+++ b/ui/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "q2tg-webui",
+ "version": "1.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "dev:expose": "vite --host",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue-jsx": "^3.1.0",
+ "naive-ui": "^2.37.3",
+ "sass": "^1.70.0",
+ "vite": "^5.1.1",
+ "vue": "^3.4.18",
+ "vue-router": "^4.2.5"
+ }
+}
diff --git a/ui/src/App.tsx b/ui/src/App.tsx
new file mode 100644
index 0000000..d1960f4
--- /dev/null
+++ b/ui/src/App.tsx
@@ -0,0 +1,13 @@
+import { defineComponent } from 'vue';
+import { dateZhCN, NConfigProvider, zhCN } from 'naive-ui';
+import { RouterView } from 'vue-router';
+
+export default defineComponent({
+ render() {
+ return (
+
+
+
+ );
+ },
+});
diff --git a/ui/src/env.d.ts b/ui/src/env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/ui/src/env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/ui/src/main.ts b/ui/src/main.ts
new file mode 100644
index 0000000..2639c28
--- /dev/null
+++ b/ui/src/main.ts
@@ -0,0 +1,7 @@
+import { createApp } from 'vue';
+import App from './App';
+import router from '@/router';
+
+createApp(App)
+ .use(router)
+ .mount('#app');
diff --git a/ui/src/router.ts b/ui/src/router.ts
new file mode 100644
index 0000000..14fce25
--- /dev/null
+++ b/ui/src/router.ts
@@ -0,0 +1,9 @@
+import { createRouter, createWebHistory } from 'vue-router';
+import Index from '@/views/Index';
+
+export default createRouter({
+ history: createWebHistory(),
+ routes: [
+ { path: '/', component: Index },
+ ],
+});
diff --git a/ui/src/views/Index.tsx b/ui/src/views/Index.tsx
new file mode 100644
index 0000000..086d222
--- /dev/null
+++ b/ui/src/views/Index.tsx
@@ -0,0 +1,7 @@
+import { defineComponent } from 'vue';
+
+export default defineComponent({
+ render() {
+ return nya!
;
+ },
+});
diff --git a/ui/tsconfig.json b/ui/tsconfig.json
new file mode 100644
index 0000000..5f019a2
--- /dev/null
+++ b/ui/tsconfig.json
@@ -0,0 +1,32 @@
+{
+ "compilerOptions": {
+ "target": "esnext",
+ "useDefineForClassFields": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "strict": true,
+ "jsx": "preserve",
+ "jsxFactory": "h",
+ "jsxFragmentFactory": "Fragment",
+ "sourceMap": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
+ "lib": [
+ "esnext",
+ "dom"
+ ],
+ "paths": {
+ "@": [
+ "./src"
+ ],
+ "@/*": [
+ "./src/*"
+ ]
+ }
+ },
+ "include": [
+ "src/**/*.ts",
+ "src/**/*.d.ts",
+ "src/**/*.tsx"
+ ]
+}
diff --git a/ui/vite.config.ts b/ui/vite.config.ts
new file mode 100644
index 0000000..d17f3c5
--- /dev/null
+++ b/ui/vite.config.ts
@@ -0,0 +1,12 @@
+import { defineConfig } from 'vite';
+import vueJsx from '@vitejs/plugin-vue-jsx';
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [vueJsx()],
+ resolve: {
+ alias: {
+ '@': '/src',
+ },
+ },
+});
From 3288046876e5b3069cbf82154b5619b766802b7e Mon Sep 17 00:00:00 2001
From: Clansty
Date: Sat, 10 Feb 2024 22:29:19 +0800
Subject: [PATCH 02/48] refactor: Dockerfile
---
Dockerfile | 31 ++++++++++++++++-----------
{assets => main/assets}/tgs/tgs0.tgs | Bin
{assets => main/assets}/tgs/tgs1.tgs | Bin
{assets => main/assets}/tgs/tgs2.tgs | Bin
{assets => main/assets}/tgs/tgs3.tgs | Bin
{assets => main/assets}/tgs/tgs4.tgs | Bin
{assets => main/assets}/tgs/tgs5.tgs | Bin
7 files changed, 18 insertions(+), 13 deletions(-)
rename {assets => main/assets}/tgs/tgs0.tgs (100%)
rename {assets => main/assets}/tgs/tgs1.tgs (100%)
rename {assets => main/assets}/tgs/tgs2.tgs (100%)
rename {assets => main/assets}/tgs/tgs3.tgs (100%)
rename {assets => main/assets}/tgs/tgs4.tgs (100%)
rename {assets => main/assets}/tgs/tgs5.tgs (100%)
diff --git a/Dockerfile b/Dockerfile
index a6c7941..8ac7391 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -18,17 +18,16 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
apt update && apt-get --no-install-recommends install -y \
python3 build-essential pkg-config \
libpixman-1-dev libcairo2-dev libpango1.0-dev libgif-dev libjpeg62-turbo-dev libpng-dev librsvg2-dev libvips-dev
-COPY package.json pnpm-lock.yaml /app/
-
-FROM build-env AS prod-deps
-RUN --mount=type=cache,id=pnpm,target=/pnpm/store,sharing=locked pnpm install --prod --frozen-lockfile
+COPY pnpm-workspace.yaml package.json pnpm-lock.yaml /app/
+COPY main/package.json /app/main/
FROM build-env AS build
RUN --mount=type=cache,id=pnpm,target=/pnpm/store,sharing=locked pnpm install --frozen-lockfile
-COPY src tsconfig.json /app/
-COPY prisma /app/
-RUN pnpm exec prisma generate
-RUN pnpm run build
+COPY main/src main/tsconfig.json /app/main/
+COPY main/prisma /app/main/
+RUN cd main && pnpm exec prisma generate
+RUN cd main && pnpm run build
+RUN --mount=type=cache,id=pnpm,target=/pnpm/store,sharing=locked pnpm deploy --filter=q2tg-main --prod deploy
FROM debian:bookworm-slim AS tgs-to-gif-build
ADD https://github.com/conan-io/conan/releases/download/1.61.0/conan-ubuntu-64.deb /tmp/conan.deb
@@ -44,17 +43,23 @@ RUN conan install .
RUN sed -i 's/\${CONAN_LIBS}/z/g' CMakeLists.txt
RUN cmake CMakeLists.txt && make
+FROM base AS build-front
+COPY pnpm-workspace.yaml package.json pnpm-lock.yaml /app/
+COPY ui/package.json /app/ui/
+RUN --mount=type=cache,id=pnpm,target=/pnpm/store,sharing=locked pnpm install --frozen-lockfile
+COPY ui/index.html ui/tsconfig.json ui/vite.config.ts /app/ui/
+COPY ui/src /app/ui/src
+RUN cd ui && pnpm run build
+
FROM base
-COPY assets /app/
COPY --from=tgs-to-gif-build /app/bin/tgs_to_gif /usr/local/bin/tgs_to_gif
ENV TGS_TO_GIF=/usr/local/bin/tgs_to_gif
-COPY package.json pnpm-lock.yaml /app/
-COPY --from=prod-deps /app/node_modules /app/node_modules
-COPY prisma /app/
+COPY --from=build /app/deploy /app
+COPY main/prisma /app/
RUN pnpm exec prisma generate
-COPY --from=build /app/build /app/build
+COPY --from=build-front /app/ui/dist /app/front
ENV DATA_DIR=/app/data
CMD pnpm start
diff --git a/assets/tgs/tgs0.tgs b/main/assets/tgs/tgs0.tgs
similarity index 100%
rename from assets/tgs/tgs0.tgs
rename to main/assets/tgs/tgs0.tgs
diff --git a/assets/tgs/tgs1.tgs b/main/assets/tgs/tgs1.tgs
similarity index 100%
rename from assets/tgs/tgs1.tgs
rename to main/assets/tgs/tgs1.tgs
diff --git a/assets/tgs/tgs2.tgs b/main/assets/tgs/tgs2.tgs
similarity index 100%
rename from assets/tgs/tgs2.tgs
rename to main/assets/tgs/tgs2.tgs
diff --git a/assets/tgs/tgs3.tgs b/main/assets/tgs/tgs3.tgs
similarity index 100%
rename from assets/tgs/tgs3.tgs
rename to main/assets/tgs/tgs3.tgs
diff --git a/assets/tgs/tgs4.tgs b/main/assets/tgs/tgs4.tgs
similarity index 100%
rename from assets/tgs/tgs4.tgs
rename to main/assets/tgs/tgs4.tgs
diff --git a/assets/tgs/tgs5.tgs b/main/assets/tgs/tgs5.tgs
similarity index 100%
rename from assets/tgs/tgs5.tgs
rename to main/assets/tgs/tgs5.tgs
From b126e130abf2c4e59fe33bb989fffe888f401c6e Mon Sep 17 00:00:00 2001
From: Clansty
Date: Sat, 10 Feb 2024 22:30:29 +0800
Subject: [PATCH 03/48] =?UTF-8?q?chore:=20=E5=88=A0=E9=99=A4=E4=B8=8D?=
=?UTF-8?q?=E5=BF=85=E8=A6=81=E7=9A=84=20build-env?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Dockerfile | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 8ac7391..4588f3b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -12,7 +12,7 @@ ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
WORKDIR /app
-FROM base AS build-env
+FROM base AS build
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt update && apt-get --no-install-recommends install -y \
@@ -21,7 +21,6 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
COPY pnpm-workspace.yaml package.json pnpm-lock.yaml /app/
COPY main/package.json /app/main/
-FROM build-env AS build
RUN --mount=type=cache,id=pnpm,target=/pnpm/store,sharing=locked pnpm install --frozen-lockfile
COPY main/src main/tsconfig.json /app/main/
COPY main/prisma /app/main/
From 557c72e79036926df5f2057bf01625cf7e57b600 Mon Sep 17 00:00:00 2001
From: Clansty
Date: Sat, 10 Feb 2024 23:54:50 +0800
Subject: [PATCH 04/48] =?UTF-8?q?init:=20=E5=88=9B=E5=BB=BA=20fastify?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Dockerfile | 1 +
main/package.json | 2 +
main/src/api/index.ts | 27 +++
main/src/index.ts | 4 +
main/src/models/env.ts | 3 +
pnpm-lock.yaml | 425 ++++++++++++++++++++++++++++++++---
ui/package.json | 2 +-
ui/src/App.tsx | 8 +-
ui/src/{views => }/Index.tsx | 0
ui/src/main.ts | 2 -
ui/src/router.ts | 9 -
ui/vite.config.ts | 1 +
12 files changed, 443 insertions(+), 41 deletions(-)
create mode 100644 main/src/api/index.ts
rename ui/src/{views => }/Index.tsx (100%)
delete mode 100644 ui/src/router.ts
diff --git a/Dockerfile b/Dockerfile
index 4588f3b..4b2b3a7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -61,4 +61,5 @@ RUN pnpm exec prisma generate
COPY --from=build-front /app/ui/dist /app/front
ENV DATA_DIR=/app/data
+EXPOSE 8080
CMD pnpm start
diff --git a/main/package.json b/main/package.json
index abb4062..4cc8639 100644
--- a/main/package.json
+++ b/main/package.json
@@ -23,6 +23,7 @@
"tsx": "^4.7.0"
},
"dependencies": {
+ "@fastify/http-proxy": "^9.4.0",
"@prisma/client": "5.9.1",
"axios": "^1.6.7",
"baidu-aip-sdk": "^4.16.15",
@@ -32,6 +33,7 @@
"dockerode": "^4.0.2",
"dotenv": "^16.4.1",
"eviltransform": "^0.2.2",
+ "fastify": "^4.26.0",
"file-type": "^19.0.0",
"fluent-ffmpeg": "^2.1.2",
"icqq": "^0.6.8",
diff --git a/main/src/api/index.ts b/main/src/api/index.ts
new file mode 100644
index 0000000..237f649
--- /dev/null
+++ b/main/src/api/index.ts
@@ -0,0 +1,27 @@
+import { getLogger } from 'log4js';
+import Fastify from 'fastify';
+import FastifyProxy from '@fastify/http-proxy';
+import env from '../models/env';
+
+const log = getLogger('Web Api');
+const fastify = Fastify();
+
+fastify.get('/', async (request, reply) => {
+ return { hello: 'Q2TG' };
+});
+
+if (env.UI_PROXY) {
+ fastify.register(FastifyProxy, {
+ upstream: env.UI_PROXY,
+ prefix: '/ui',
+ rewritePrefix: '/ui',
+ websocket: true,
+ });
+}
+
+export default {
+ async startListening() {
+ await fastify.listen({ port: env.LISTEN_PORT, host: '0.0.0.0' });
+ log.info('Listening on', env.LISTEN_PORT);
+ },
+};
diff --git a/main/src/index.ts b/main/src/index.ts
index 1d84022..f61de40 100644
--- a/main/src/index.ts
+++ b/main/src/index.ts
@@ -1,6 +1,7 @@
import { configure, getLogger } from 'log4js';
import Instance from './models/Instance';
import db from './models/db';
+import api from './api';
(async () => {
configure({
@@ -20,6 +21,9 @@ import db from './models/db';
process.on('unhandledRejection', error => {
log.error('UnhandledException: ', error);
});
+
+ await api.startListening();
+
const instanceEntries = await db.instance.findMany();
if (!instanceEntries.length) {
diff --git a/main/src/models/env.ts b/main/src/models/env.ts
index 05bd360..f4441c1 100644
--- a/main/src/models/env.ts
+++ b/main/src/models/env.ts
@@ -29,6 +29,9 @@ const configParsed = z.object({
BAIDU_API_KEY: z.string().optional(),
BAIDU_SECRET_KEY: z.string().optional(),
DISABLE_FILE_UPLOAD_TIP: z.string().transform((v) => ['true', '1', 'yes'].includes(v.toLowerCase())).default('false'),
+ LISTEN_PORT: z.string().regex(/^\d+$/).transform(Number).default('8080'),
+ UI_PATH: z.string().optional(),
+ UI_PROXY: z.string().url().optional(),
}).safeParse(process.env);
if (!configParsed.success) {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f43e793..4e7b405 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -14,6 +14,9 @@ importers:
main:
dependencies:
+ '@fastify/http-proxy':
+ specifier: ^9.4.0
+ version: 9.4.0
'@prisma/client':
specifier: 5.9.1
version: 5.9.1(prisma@5.9.1)
@@ -41,6 +44,9 @@ importers:
eviltransform:
specifier: ^0.2.2
version: 0.2.2
+ fastify:
+ specifier: ^4.26.0
+ version: 4.26.0
file-type:
specifier: ^19.0.0
version: 19.0.0
@@ -79,7 +85,7 @@ importers:
version: 0.2.2
telegram:
specifier: https://github.com/clansty/gramjs/releases/download/2.19.10%2Brevert_media/telegram-2.19.10.tgz
- version: '@github.com/clansty/gramjs/releases/download/2.19.10%2525252Brevert_media/telegram-2.19.10.tgz'
+ version: '@github.com/clansty/gramjs/releases/download/2.19.10%2525252525252Brevert_media/telegram-2.19.10.tgz'
tmp-promise:
specifier: ^3.0.3
version: 3.0.3
@@ -134,10 +140,10 @@ importers:
version: 5.1.1(sass@1.70.0)
vue:
specifier: ^3.4.18
- version: 3.4.18(typescript@5.3.3)
- vue-router:
- specifier: ^4.2.5
- version: 4.2.5(vue@3.4.18)
+ version: 3.4.18
+ vue-tg:
+ specifier: ^0.3.0
+ version: 0.3.0
packages:
@@ -464,7 +470,7 @@ packages:
peerDependencies:
vue: ^3.0.11
dependencies:
- vue: 3.4.18(typescript@5.3.3)
+ vue: 3.4.18
dev: true
/@emnapi/runtime@0.45.0:
@@ -686,11 +692,60 @@ packages:
dev: true
optional: true
+ /@fastify/ajv-compiler@3.5.0:
+ resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==}
+ dependencies:
+ ajv: 8.12.0
+ ajv-formats: 2.1.1(ajv@8.12.0)
+ fast-uri: 2.3.0
+ dev: false
+
/@fastify/busboy@2.0.0:
resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==}
engines: {node: '>=14'}
dev: false
+ /@fastify/error@3.4.1:
+ resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==}
+ dev: false
+
+ /@fastify/fast-json-stringify-compiler@4.3.0:
+ resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==}
+ dependencies:
+ fast-json-stringify: 5.12.0
+ dev: false
+
+ /@fastify/http-proxy@9.4.0:
+ resolution: {integrity: sha512-oXdvWBETRI2fJYJnRfFP/qJ6fQddUJz47X71WP7SkHdm4D5OejlNwrgnEJLUS5Kr4BSXHE5Nq5K6mmUlkivKiA==}
+ dependencies:
+ '@fastify/reply-from': 9.7.0
+ fast-querystring: 1.1.2
+ fastify-plugin: 4.5.1
+ ws: 8.16.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: false
+
+ /@fastify/merge-json-schemas@0.1.1:
+ resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ dev: false
+
+ /@fastify/reply-from@9.7.0:
+ resolution: {integrity: sha512-/F1QBl3FGlTqStjmiuoLRDchVxP967TZh6FZPwQteWhdLsDec8mqSACE+cRzw6qHUj3v9hfdd7JNgmb++fyFhQ==}
+ dependencies:
+ '@fastify/error': 3.4.1
+ end-of-stream: 1.4.4
+ fast-content-type-parse: 1.1.0
+ fast-querystring: 1.1.2
+ fastify-plugin: 4.5.1
+ pump: 3.0.0
+ tiny-lru: 11.2.5
+ undici: 5.28.3
+ dev: false
+
/@img/sharp-darwin-arm64@0.33.2:
resolution: {integrity: sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==}
engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
@@ -1515,6 +1570,10 @@ packages:
'@types/node': 18.18.8
dev: true
+ /@types/telegram-web-app@7.0.0:
+ resolution: {integrity: sha512-BgR/Q8id0c8/lq/4XUMJ2Jw6czioKbLbNqURr62wysch5yJcITHZQWKrr6KyPDrO+2cCTWwCJopSp3FY37N/6w==}
+ dev: true
+
/@vitejs/plugin-vue-jsx@3.1.0(vite@5.1.1)(vue@3.4.18):
resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -1526,7 +1585,7 @@ packages:
'@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9)
'@vue/babel-plugin-jsx': 1.2.1(@babel/core@7.23.9)
vite: 5.1.1(sass@1.70.0)
- vue: 3.4.18(typescript@5.3.3)
+ vue: 3.4.18
transitivePeerDependencies:
- supports-color
dev: true
@@ -1610,10 +1669,6 @@ packages:
'@vue/shared': 3.4.18
dev: true
- /@vue/devtools-api@6.5.1:
- resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
- dev: true
-
/@vue/reactivity@3.4.18:
resolution: {integrity: sha512-7uda2/I0jpLiRygprDo5Jxs2HJkOVXcOMlyVlY54yRLxoycBpwGJRwJT9EdGB4adnoqJDXVT2BilUAYwI7qvmg==}
dependencies:
@@ -1642,7 +1697,7 @@ packages:
dependencies:
'@vue/compiler-ssr': 3.4.18
'@vue/shared': 3.4.18
- vue: 3.4.18(typescript@5.3.3)
+ vue: 3.4.18
dev: true
/@vue/shared@3.4.18:
@@ -1658,6 +1713,17 @@ packages:
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
dev: false
+ /abort-controller@3.0.0:
+ resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+ engines: {node: '>=6.5'}
+ dependencies:
+ event-target-shim: 5.0.1
+ dev: false
+
+ /abstract-logging@2.0.1:
+ resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
+ dev: false
+
/accepts@1.3.8:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
@@ -1699,6 +1765,17 @@ packages:
- supports-color
dev: false
+ /ajv-formats@2.1.1(ajv@8.12.0):
+ resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
+ peerDependencies:
+ ajv: ^8.0.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+ dependencies:
+ ajv: 8.12.0
+ dev: false
+
/ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
dependencies:
@@ -1708,6 +1785,15 @@ packages:
uri-js: 4.4.1
dev: false
+ /ajv@8.12.0:
+ resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+ uri-js: 4.4.1
+ dev: false
+
/ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
@@ -1739,6 +1825,10 @@ packages:
resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
dev: false
+ /archy@1.0.0:
+ resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==}
+ dev: false
+
/are-we-there-yet@2.0.0:
resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
engines: {node: '>=10'}
@@ -1776,6 +1866,22 @@ packages:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: false
+ /atomic-sleep@1.0.0:
+ resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
+ engines: {node: '>=8.0.0'}
+ dev: false
+
+ /avvio@8.3.0:
+ resolution: {integrity: sha512-VBVH0jubFr9LdFASy/vNtm5giTrnbVquWBhT0fyizuNK2rQ7e7ONU2plZQWUNqtE1EmxFEb+kbSkFRkstiaS9Q==}
+ dependencies:
+ '@fastify/error': 3.4.1
+ archy: 1.0.0
+ debug: 4.3.4
+ fastq: 1.17.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
/aws-sign2@0.7.0:
resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==}
dev: false
@@ -2103,6 +2209,11 @@ packages:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
dev: true
+ /cookie@0.5.0:
+ resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
/cookies@0.9.1:
resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==}
engines: {node: '>= 0.8'}
@@ -2528,6 +2639,16 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
+ /event-target-shim@5.0.1:
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+ dev: false
+
/eviltransform@0.2.2:
resolution: {integrity: sha512-2mbiUIXuiJOPmXFOA/h3kQrXvTWdCPDdKdm3cnUfAWbuQu1pdInsaoM4trnCTlTF1l++EAvo4fcRu2b6kQdChQ==}
dev: false
@@ -2555,6 +2676,14 @@ packages:
engines: {'0': node >=0.6.0}
dev: false
+ /fast-content-type-parse@1.1.0:
+ resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==}
+ dev: false
+
+ /fast-decode-uri-component@1.0.1:
+ resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
+ dev: false
+
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: false
@@ -2563,6 +2692,66 @@ packages:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
dev: false
+ /fast-json-stringify@5.12.0:
+ resolution: {integrity: sha512-7Nnm9UPa7SfHRbHVA1kJQrGXCRzB7LMlAAqHXQFkEQqueJm1V8owm0FsE/2Do55/4CcdhwiLQERaKomOnKQkyA==}
+ dependencies:
+ '@fastify/merge-json-schemas': 0.1.1
+ ajv: 8.12.0
+ ajv-formats: 2.1.1(ajv@8.12.0)
+ fast-deep-equal: 3.1.3
+ fast-uri: 2.3.0
+ json-schema-ref-resolver: 1.0.1
+ rfdc: 1.3.0
+ dev: false
+
+ /fast-querystring@1.1.2:
+ resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==}
+ dependencies:
+ fast-decode-uri-component: 1.0.1
+ dev: false
+
+ /fast-redact@3.3.0:
+ resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /fast-uri@2.3.0:
+ resolution: {integrity: sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==}
+ dev: false
+
+ /fastify-plugin@4.5.1:
+ resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==}
+ dev: false
+
+ /fastify@4.26.0:
+ resolution: {integrity: sha512-Fq/7ziWKc6pYLYLIlCRaqJqEVTIZ5tZYfcW/mDK2AQ9v/sqjGFpj0On0/7hU50kbPVjLO4de+larPA1WwPZSfw==}
+ dependencies:
+ '@fastify/ajv-compiler': 3.5.0
+ '@fastify/error': 3.4.1
+ '@fastify/fast-json-stringify-compiler': 4.3.0
+ abstract-logging: 2.0.1
+ avvio: 8.3.0
+ fast-content-type-parse: 1.1.0
+ fast-json-stringify: 5.12.0
+ find-my-way: 8.1.0
+ light-my-request: 5.11.0
+ pino: 8.18.0
+ process-warning: 3.0.0
+ proxy-addr: 2.0.7
+ rfdc: 1.3.0
+ secure-json-parse: 2.7.0
+ semver: 7.5.4
+ toad-cache: 3.7.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+ dependencies:
+ reusify: 1.0.4
+ dev: false
+
/file-type@16.5.4:
resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==}
engines: {node: '>=10'}
@@ -2592,6 +2781,15 @@ packages:
to-regex-range: 5.0.1
dev: true
+ /find-my-way@8.1.0:
+ resolution: {integrity: sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==}
+ engines: {node: '>=14'}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-querystring: 1.1.2
+ safe-regex2: 2.0.0
+ dev: false
+
/flatted@3.2.9:
resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
dev: false
@@ -2645,6 +2843,11 @@ packages:
mime-types: 2.1.35
dev: false
+ /forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
/fresh@0.5.2:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
@@ -3020,6 +3223,11 @@ packages:
resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==}
dev: false
+ /ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+ dev: false
+
/is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
dev: false
@@ -3165,10 +3373,20 @@ packages:
hasBin: true
dev: true
+ /json-schema-ref-resolver@1.0.1:
+ resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ dev: false
+
/json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: false
+ /json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+ dev: false
+
/json-schema@0.4.0:
resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
dev: false
@@ -3309,6 +3527,14 @@ packages:
- supports-color
dev: false
+ /light-my-request@5.11.0:
+ resolution: {integrity: sha512-qkFCeloXCOMpmEdZ/MV91P8AT4fjwFXWaAFz3lUeStM8RcoM1ks4J/F8r1b3r6y/H4u3ACEJ1T+Gv5bopj7oDA==}
+ dependencies:
+ cookie: 0.5.0
+ process-warning: 2.3.2
+ set-cookie-parser: 2.6.0
+ dev: false
+
/load-bmfont@1.4.1:
resolution: {integrity: sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==}
dependencies:
@@ -3555,7 +3781,7 @@ packages:
treemate: 0.3.11
vdirs: 0.1.8(vue@3.4.18)
vooks: 0.2.12(vue@3.4.18)
- vue: 3.4.18(typescript@5.3.3)
+ vue: 3.4.18
vueuc: 0.4.58(vue@3.4.18)
dev: true
@@ -3672,6 +3898,11 @@ packages:
resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==}
dev: false
+ /on-exit-leak-free@2.1.2:
+ resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
+ engines: {node: '>=14.0.0'}
+ dev: false
+
/on-finished@2.4.1:
resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
engines: {node: '>= 0.8'}
@@ -3771,6 +4002,34 @@ packages:
engines: {node: '>=8.6'}
dev: true
+ /pino-abstract-transport@1.1.0:
+ resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==}
+ dependencies:
+ readable-stream: 4.5.2
+ split2: 4.2.0
+ dev: false
+
+ /pino-std-serializers@6.2.2:
+ resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
+ dev: false
+
+ /pino@8.18.0:
+ resolution: {integrity: sha512-Mz/gKiRyuXu4HnpHgi1YWdHQCoWMufapzooisvFn78zl4dZciAxS+YeRkUxXl1ee/SzU80YCz1zpECCh4oC6Aw==}
+ hasBin: true
+ dependencies:
+ atomic-sleep: 1.0.0
+ fast-redact: 3.3.0
+ on-exit-leak-free: 2.1.2
+ pino-abstract-transport: 1.1.0
+ pino-std-serializers: 6.2.2
+ process-warning: 3.0.0
+ quick-format-unescaped: 4.0.4
+ real-require: 0.2.0
+ safe-stable-stringify: 2.4.3
+ sonic-boom: 3.8.0
+ thread-stream: 2.4.1
+ dev: false
+
/pixelmatch@4.0.2:
resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==}
hasBin: true
@@ -3816,6 +4075,14 @@ packages:
- supports-color
dev: false
+ /process-warning@2.3.2:
+ resolution: {integrity: sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==}
+ dev: false
+
+ /process-warning@3.0.0:
+ resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==}
+ dev: false
+
/process@0.11.10:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
@@ -3829,6 +4096,14 @@ packages:
sisteransi: 1.0.5
dev: false
+ /proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+ dev: false
+
/proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
dev: false
@@ -3871,6 +4146,10 @@ packages:
inherits: 2.0.4
dev: false
+ /quick-format-unescaped@4.0.4:
+ resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
+ dev: false
+
/ratelimiter@3.4.1:
resolution: {integrity: sha512-5FJbRW/Jkkdk29ksedAfWFkQkhbUrMx3QJGwMKAypeIiQf4yrLW+gtPKZiaWt4zPrtw1uGufOjGO7UGM6VllsQ==}
dev: false
@@ -3894,6 +4173,17 @@ packages:
util-deprecate: 1.0.2
dev: false
+ /readable-stream@4.5.2:
+ resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ abort-controller: 3.0.0
+ buffer: 6.0.3
+ events: 3.3.0
+ process: 0.11.10
+ string_decoder: 1.3.0
+ dev: false
+
/readable-web-to-node-stream@3.0.2:
resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==}
engines: {node: '>=8'}
@@ -3912,6 +4202,11 @@ packages:
resolution: {integrity: sha512-FYhmx1FVSgoPRjneoTjh+EKZcNb8ijl/dyatTzase5eujYhVrLNDOiIY6AgQq7GU1kOoLgEd9jLVbhFg8k8dOQ==}
dev: false
+ /real-require@0.2.0:
+ resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
+ engines: {node: '>= 12.13.0'}
+ dev: false
+
/regenerator-runtime@0.13.11:
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
dev: false
@@ -3947,6 +4242,11 @@ packages:
uuid: 3.4.0
dev: false
+ /require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
/requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
dev: false
@@ -3955,6 +4255,16 @@ packages:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
dev: true
+ /ret@0.2.2:
+ resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: false
+
/rfdc@1.3.0:
resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
dev: false
@@ -3998,6 +4308,17 @@ packages:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: false
+ /safe-regex2@2.0.0:
+ resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==}
+ dependencies:
+ ret: 0.2.2
+ dev: false
+
+ /safe-stable-stringify@2.4.3:
+ resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==}
+ engines: {node: '>=10'}
+ dev: false
+
/safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
dev: false
@@ -4028,6 +4349,10 @@ packages:
xmlchars: 2.2.0
dev: false
+ /secure-json-parse@2.7.0:
+ resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
+ dev: false
+
/seemly@0.3.8:
resolution: {integrity: sha512-MW8Qs6vbzo0pHmDpFSYPna+lwpZ6Zk1ancbajw/7E8TKtHdV+1DfZZD+kKJEhG/cAoB/i+LiT+5msZOqj0DwRA==}
dev: true
@@ -4048,6 +4373,10 @@ packages:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
dev: false
+ /set-cookie-parser@2.6.0:
+ resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
+ dev: false
+
/set-function-length@1.1.1:
resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==}
engines: {node: '>= 0.4'}
@@ -4215,6 +4544,12 @@ packages:
smart-buffer: 4.2.0
dev: false
+ /sonic-boom@3.8.0:
+ resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==}
+ dependencies:
+ atomic-sleep: 1.0.0
+ dev: false
+
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
@@ -4231,6 +4566,11 @@ packages:
resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==}
dev: false
+ /split2@4.2.0:
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
+ dev: false
+
/ssh2@1.15.0:
resolution: {integrity: sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==}
engines: {node: '>=10.16.0'}
@@ -4401,10 +4741,21 @@ packages:
- supports-color
dev: false
+ /thread-stream@2.4.1:
+ resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==}
+ dependencies:
+ real-require: 0.2.0
+ dev: false
+
/timm@1.7.1:
resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==}
dev: false
+ /tiny-lru@11.2.5:
+ resolution: {integrity: sha512-JpqM0K33lG6iQGKiigcwuURAKZlq6rHXfrgeL4/I8/REoyJTGU+tEMszvT/oTRVHG2OiylhGDjqPp1jWMlr3bw==}
+ engines: {node: '>=12'}
+ dev: false
+
/tinycolor2@1.6.0:
resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
dev: false
@@ -4434,6 +4785,11 @@ packages:
is-number: 7.0.0
dev: true
+ /toad-cache@3.7.0:
+ resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==}
+ engines: {node: '>=12'}
+ dev: false
+
/toidentifier@1.0.1:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
@@ -4574,6 +4930,13 @@ packages:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
dev: true
+ /undici@5.28.3:
+ resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==}
+ engines: {node: '>=14.0'}
+ dependencies:
+ '@fastify/busboy': 2.0.0
+ dev: false
+
/undici@6.4.0:
resolution: {integrity: sha512-wYaKgftNqf6Je7JQ51YzkEkEevzOgM7at5JytKO7BjaURQpERW8edQSMrr2xb+Yv4U8Yg47J24+lc9+NbeXMFA==}
engines: {node: '>=18.0'}
@@ -4659,7 +5022,7 @@ packages:
vue: ^3.0.11
dependencies:
evtd: 0.2.4
- vue: 3.4.18(typescript@5.3.3)
+ vue: 3.4.18
dev: true
/verror@1.10.0:
@@ -4713,19 +5076,19 @@ packages:
vue: ^3.0.0
dependencies:
evtd: 0.2.4
- vue: 3.4.18(typescript@5.3.3)
+ vue: 3.4.18
dev: true
- /vue-router@4.2.5(vue@3.4.18):
- resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==}
- peerDependencies:
- vue: ^3.2.0
+ /vue-tg@0.3.0:
+ resolution: {integrity: sha512-DZ5wt9ZY1Ux3yFH+KWeYyVo4Fd3R4UDoq07XWhA6EqpyfxII9zxT7xPKjTjrpDbvjHRzeuukZBBi4EIiQxtDaQ==}
dependencies:
- '@vue/devtools-api': 6.5.1
- vue: 3.4.18(typescript@5.3.3)
+ '@types/telegram-web-app': 7.0.0
+ vue: 3.4.18
+ transitivePeerDependencies:
+ - typescript
dev: true
- /vue@3.4.18(typescript@5.3.3):
+ /vue@3.4.18:
resolution: {integrity: sha512-0zLRYamFRe0wF4q2L3O24KQzLyLpL64ye1RUToOgOxuWZsb/FhaNRdGmeozdtVYLz6tl94OXLaK7/WQIrVCw1A==}
peerDependencies:
typescript: '*'
@@ -4738,7 +5101,6 @@ packages:
'@vue/runtime-dom': 3.4.18
'@vue/server-renderer': 3.4.18(vue@3.4.18)
'@vue/shared': 3.4.18
- typescript: 5.3.3
dev: true
/vueuc@0.4.58(vue@3.4.18):
@@ -4753,7 +5115,7 @@ packages:
seemly: 0.3.8
vdirs: 0.1.8(vue@3.4.18)
vooks: 0.2.12(vue@3.4.18)
- vue: 3.4.18(typescript@5.3.3)
+ vue: 3.4.18
dev: true
/w3c-hr-time@1.0.2:
@@ -4867,6 +5229,19 @@ packages:
optional: true
dev: false
+ /ws@8.16.0:
+ resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ dev: false
+
/xhr@2.6.0:
resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==}
dependencies:
@@ -4967,7 +5342,7 @@ packages:
- utf-8-validate
dev: false
- '@github.com/clansty/gramjs/releases/download/2.19.10%2525252Brevert_media/telegram-2.19.10.tgz':
+ '@github.com/clansty/gramjs/releases/download/2.19.10%2525252525252Brevert_media/telegram-2.19.10.tgz':
resolution: {tarball: https://github.com/clansty/gramjs/releases/download/2.19.10%2Brevert_media/telegram-2.19.10.tgz}
name: telegram
version: 2.19.10
diff --git a/ui/package.json b/ui/package.json
index ae8dc62..5887236 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -14,6 +14,6 @@
"sass": "^1.70.0",
"vite": "^5.1.1",
"vue": "^3.4.18",
- "vue-router": "^4.2.5"
+ "vue-tg": "^0.3.0"
}
}
diff --git a/ui/src/App.tsx b/ui/src/App.tsx
index d1960f4..083668c 100644
--- a/ui/src/App.tsx
+++ b/ui/src/App.tsx
@@ -1,12 +1,12 @@
-import { defineComponent } from 'vue';
-import { dateZhCN, NConfigProvider, zhCN } from 'naive-ui';
-import { RouterView } from 'vue-router';
+import {defineComponent} from 'vue';
+import {dateZhCN, NConfigProvider, zhCN} from 'naive-ui';
+import Index from "./Index";
export default defineComponent({
render() {
return (
-
+
);
},
diff --git a/ui/src/views/Index.tsx b/ui/src/Index.tsx
similarity index 100%
rename from ui/src/views/Index.tsx
rename to ui/src/Index.tsx
diff --git a/ui/src/main.ts b/ui/src/main.ts
index 2639c28..98a60d0 100644
--- a/ui/src/main.ts
+++ b/ui/src/main.ts
@@ -1,7 +1,5 @@
import { createApp } from 'vue';
import App from './App';
-import router from '@/router';
createApp(App)
- .use(router)
.mount('#app');
diff --git a/ui/src/router.ts b/ui/src/router.ts
deleted file mode 100644
index 14fce25..0000000
--- a/ui/src/router.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { createRouter, createWebHistory } from 'vue-router';
-import Index from '@/views/Index';
-
-export default createRouter({
- history: createWebHistory(),
- routes: [
- { path: '/', component: Index },
- ],
-});
diff --git a/ui/vite.config.ts b/ui/vite.config.ts
index d17f3c5..67e1aa0 100644
--- a/ui/vite.config.ts
+++ b/ui/vite.config.ts
@@ -3,6 +3,7 @@ import vueJsx from '@vitejs/plugin-vue-jsx';
// https://vitejs.dev/config/
export default defineConfig({
+ base: '/ui/',
plugins: [vueJsx()],
resolve: {
alias: {
From 5934d465c90ff429b429b5f972cbe1336eb8ddff Mon Sep 17 00:00:00 2001
From: Clansty
Date: Sun, 11 Feb 2024 13:03:33 +0800
Subject: [PATCH 05/48] =?UTF-8?q?feat:=20=E4=BD=BF=E7=94=A8=E6=9C=AC?=
=?UTF-8?q?=E5=9C=B0=E6=9C=8D=E5=8A=A1=E6=B8=B2=E6=9F=93=20richHeader?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
main/assets/richHeader.ejs | 26 ++++++
main/package.json | 2 +
main/prisma/schema.prisma | 1 +
main/src/api/index.ts | 3 +
main/src/api/richHeader.ts | 36 ++++++++
main/src/controllers/ForwardController.ts | 2 +-
main/src/models/ForwardPairs.ts | 4 +-
main/src/models/Pair.ts | 10 +++
main/src/models/env.ts | 1 +
main/src/services/ForwardService.ts | 20 +++--
pnpm-lock.yaml | 104 +++++++++++++++++++---
11 files changed, 186 insertions(+), 23 deletions(-)
create mode 100644 main/assets/richHeader.ejs
create mode 100644 main/src/api/richHeader.ts
diff --git a/main/assets/richHeader.ejs b/main/assets/richHeader.ejs
new file mode 100644
index 0000000..3bd8405
--- /dev/null
+++ b/main/assets/richHeader.ejs
@@ -0,0 +1,26 @@
+
+
+
+
+
+ <% if (!!title) { %>
+
+ <% }else { %>
+
+ <% } %>
+
+ 群成员:<%= name %>
+
+
+
+
+<%= role %>
+<%= name %>
+<%= userId %>
+
+
diff --git a/main/package.json b/main/package.json
index 4cc8639..1d373b4 100644
--- a/main/package.json
+++ b/main/package.json
@@ -16,6 +16,7 @@
"@types/cli-progress": "^3.11.5",
"@types/date-and-time": "^3.0.3",
"@types/dockerode": "^3.3.23",
+ "@types/ejs": "^3.1.5",
"@types/fluent-ffmpeg": "^2.1.24",
"@types/lodash": "^4.14.202",
"@types/node": "^20.11.17",
@@ -32,6 +33,7 @@
"date-and-time": "^3.1.1",
"dockerode": "^4.0.2",
"dotenv": "^16.4.1",
+ "ejs": "^3.1.9",
"eviltransform": "^0.2.2",
"fastify": "^4.26.0",
"file-type": "^19.0.0",
diff --git a/main/prisma/schema.prisma b/main/prisma/schema.prisma
index 64f096d..8a16175 100644
--- a/main/prisma/schema.prisma
+++ b/main/prisma/schema.prisma
@@ -90,6 +90,7 @@ model ForwardPair {
instanceId Int @default(0)
instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
flags Int @default(0)
+ apiKey String @unique @default(dbgenerated("gen_random_uuid()")) @db.Uuid
@@unique([qqRoomId, instanceId])
@@unique([tgChatId, instanceId])
diff --git a/main/src/api/index.ts b/main/src/api/index.ts
index 237f649..aca5fb2 100644
--- a/main/src/api/index.ts
+++ b/main/src/api/index.ts
@@ -2,6 +2,7 @@ import { getLogger } from 'log4js';
import Fastify from 'fastify';
import FastifyProxy from '@fastify/http-proxy';
import env from '../models/env';
+import richHeader from './richHeader';
const log = getLogger('Web Api');
const fastify = Fastify();
@@ -10,6 +11,8 @@ fastify.get('/', async (request, reply) => {
return { hello: 'Q2TG' };
});
+fastify.register(richHeader, { prefix: '/richHeader' });
+
if (env.UI_PROXY) {
fastify.register(FastifyProxy, {
upstream: env.UI_PROXY,
diff --git a/main/src/api/richHeader.ts b/main/src/api/richHeader.ts
new file mode 100644
index 0000000..3e56d49
--- /dev/null
+++ b/main/src/api/richHeader.ts
@@ -0,0 +1,36 @@
+import { FastifyPluginCallback } from 'fastify';
+import { Pair } from '../models/Pair';
+import ejs from 'ejs';
+import fs from 'fs';
+import { Group } from 'icqq';
+
+const template = ejs.compile(fs.readFileSync('./assets/richHeader.ejs', 'utf-8'));
+
+export default ((fastify, opts, done) => {
+ fastify.get<{
+ Params: { apiKey: string, userId: string }
+ }>('/:apiKey/:userId', async (request, reply) => {
+ const pair = Pair.getByApiKey(request.params.apiKey);
+ if (!pair) {
+ reply.code(404);
+ return 'Group not found';
+ }
+ const group = pair.qq as Group;
+ const members = await group.getMemberMap();
+ const member = members.get(Number(request.params.userId));
+ if (!member) {
+ reply.code(404);
+ return 'Member not found';
+ }
+
+ reply.type('text/html');
+ return template({
+ userId: request.params.userId,
+ title: member.title,
+ name: member.card || member.nickname,
+ role: member.role,
+ });
+ });
+
+ done();
+}) as FastifyPluginCallback;
diff --git a/main/src/controllers/ForwardController.ts b/main/src/controllers/ForwardController.ts
index 3eed952..cceb243 100644
--- a/main/src/controllers/ForwardController.ts
+++ b/main/src/controllers/ForwardController.ts
@@ -3,7 +3,7 @@ import OicqClient from '../client/OicqClient';
import ForwardService from '../services/ForwardService';
import {
Friend,
- FriendPokeEvent,
+ FriendPokeEvent, Group,
GroupMessageEvent,
GroupPokeEvent,
MemberIncreaseEvent,
diff --git a/main/src/models/ForwardPairs.ts b/main/src/models/ForwardPairs.ts
index 92b152c..39a0731 100644
--- a/main/src/models/ForwardPairs.ts
+++ b/main/src/models/ForwardPairs.ts
@@ -28,7 +28,7 @@ export default class ForwardPairs {
const tg = await tgBot.getChat(Number(i.tgChatId));
const tgUserChat = await tgUser.getChat(Number(i.tgChatId));
if (qq && tg && tgUserChat) {
- this.pairs.push(new Pair(qq, tg, tgUserChat, i.id, i.flags));
+ this.pairs.push(new Pair(qq, tg, tgUserChat, i.id, i.flags, i.apiKey));
}
}
catch (e) {
@@ -51,7 +51,7 @@ export default class ForwardPairs {
instanceId: this.instanceId,
},
});
- this.pairs.push(new Pair(qq, tg, tgUser, dbEntry.id, dbEntry.flags));
+ this.pairs.push(new Pair(qq, tg, tgUser, dbEntry.id, dbEntry.flags, dbEntry.apiKey));
return dbEntry;
}
diff --git a/main/src/models/Pair.ts b/main/src/models/Pair.ts
index c6de07f..7a7cc19 100644
--- a/main/src/models/Pair.ts
+++ b/main/src/models/Pair.ts
@@ -9,6 +9,12 @@ import db from './db';
const log = getLogger('ForwardPair');
export class Pair {
+ private static readonly apiKeyMap = new Map();
+
+ public static getByApiKey(key: string) {
+ return this.apiKeyMap.get(key);
+ }
+
// 群成员的 tg 账号对应它对应的 QQ 账号获取到的 Group 对象
// 只有群组模式有效
public readonly instanceMapForTg = {} as { [tgUserId: string]: Group };
@@ -19,7 +25,11 @@ export class Pair {
public readonly tgUser: TelegramChat,
public dbId: number,
private _flags: number,
+ public readonly apiKey: string,
) {
+ if (apiKey) {
+ Pair.apiKeyMap.set(apiKey, this);
+ }
}
// 更新 TG 群组的头像和简介
diff --git a/main/src/models/env.ts b/main/src/models/env.ts
index f4441c1..6d0c3ff 100644
--- a/main/src/models/env.ts
+++ b/main/src/models/env.ts
@@ -32,6 +32,7 @@ const configParsed = z.object({
LISTEN_PORT: z.string().regex(/^\d+$/).transform(Number).default('8080'),
UI_PATH: z.string().optional(),
UI_PROXY: z.string().url().optional(),
+ WEB_ENDPOINT: z.string().url().optional(),
}).safeParse(process.env);
if (!configParsed.success) {
diff --git a/main/src/services/ForwardService.ts b/main/src/services/ForwardService.ts
index 956bea9..7ab73fd 100644
--- a/main/src/services/ForwardService.ts
+++ b/main/src/services/ForwardService.ts
@@ -26,7 +26,7 @@ import fsP from 'fs/promises';
import eviltransform from 'eviltransform';
import silk from '../encoding/silk';
import axios from 'axios';
-import { md5Hex } from '../utils/hashing';
+import { md5B64, md5Hex } from '../utils/hashing';
import Instance from '../models/Instance';
import { Pair } from '../models/Pair';
import OicqClient from '../client/OicqClient';
@@ -385,11 +385,19 @@ export default class ForwardService {
else if (event.message_type === 'group' && (pair.flags | this.instance.flags) & flags.RICH_HEADER) {
// 没有文件时才能显示链接预览
richHeaderUsed = true;
- const url = new URL('https://q2tg-header.clansty.workers.dev');
- url.searchParams.set('name', sender);
- url.searchParams.set('title', 'title' in event.sender ? event.sender.title : '');
- url.searchParams.set('role', 'role' in event.sender ? event.sender.role : '');
- url.searchParams.set('id', event.sender.user_id.toString());
+ let url: URL;
+ if (env.WEB_ENDPOINT) {
+ url = new URL(`${env.WEB_ENDPOINT}/richHeader/${pair.apiKey}/${event.sender.user_id}`);
+ // 防止群名片刷新慢
+ url.searchParams.set('hash', md5B64(messageHeader).substring(0, 10));
+ }
+ else {
+ url = new URL('https://q2tg-header.clansty.workers.dev');
+ url.searchParams.set('name', sender);
+ url.searchParams.set('title', 'title' in event.sender ? event.sender.title : '');
+ url.searchParams.set('role', 'role' in event.sender ? event.sender.role : '');
+ url.searchParams.set('id', event.sender.user_id.toString());
+ }
// https://github.com/tdlib/td/blob/437c2d0c6e0ad104022d5ad86ddc8aedc41cb7a8/td/telegram/MessageContent.cpp#L2575
// https://github.com/tdlib/td/blob/437c2d0c6e0ad104022d5ad86ddc8aedc41cb7a8/td/generate/scheme/telegram_api.tl#L1841
// https://github.com/gram-js/gramjs/pull/633
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4e7b405..0774aee 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -41,6 +41,9 @@ importers:
dotenv:
specifier: ^16.4.1
version: 16.4.1
+ ejs:
+ specifier: ^3.1.9
+ version: 3.1.9
eviltransform:
specifier: ^0.2.2
version: 0.2.2
@@ -85,7 +88,7 @@ importers:
version: 0.2.2
telegram:
specifier: https://github.com/clansty/gramjs/releases/download/2.19.10%2Brevert_media/telegram-2.19.10.tgz
- version: '@github.com/clansty/gramjs/releases/download/2.19.10%2525252525252Brevert_media/telegram-2.19.10.tgz'
+ version: '@github.com/clansty/gramjs/releases/download/2.19.10%25252525252525252Brevert_media/telegram-2.19.10.tgz'
tmp-promise:
specifier: ^3.0.3
version: 3.0.3
@@ -108,6 +111,9 @@ importers:
'@types/dockerode':
specifier: ^3.3.23
version: 3.3.23
+ '@types/ejs':
+ specifier: ^3.1.5
+ version: 3.1.5
'@types/fluent-ffmpeg':
specifier: ^2.1.24
version: 2.1.24
@@ -140,10 +146,10 @@ importers:
version: 5.1.1(sass@1.70.0)
vue:
specifier: ^3.4.18
- version: 3.4.18
+ version: 3.4.18(typescript@5.3.3)
vue-tg:
specifier: ^0.3.0
- version: 0.3.0
+ version: 0.3.0(typescript@5.3.3)
packages:
@@ -470,7 +476,7 @@ packages:
peerDependencies:
vue: ^3.0.11
dependencies:
- vue: 3.4.18
+ vue: 3.4.18(typescript@5.3.3)
dev: true
/@emnapi/runtime@0.45.0:
@@ -1517,6 +1523,10 @@ packages:
'@types/node': 20.11.17
dev: true
+ /@types/ejs@3.1.5:
+ resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==}
+ dev: true
+
/@types/estree@1.0.5:
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
dev: true
@@ -1585,7 +1595,7 @@ packages:
'@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9)
'@vue/babel-plugin-jsx': 1.2.1(@babel/core@7.23.9)
vite: 5.1.1(sass@1.70.0)
- vue: 3.4.18
+ vue: 3.4.18(typescript@5.3.3)
transitivePeerDependencies:
- supports-color
dev: true
@@ -1697,7 +1707,7 @@ packages:
dependencies:
'@vue/compiler-ssr': 3.4.18
'@vue/shared': 3.4.18
- vue: 3.4.18
+ vue: 3.4.18(typescript@5.3.3)
dev: true
/@vue/shared@3.4.18:
@@ -1805,6 +1815,13 @@ packages:
dependencies:
color-convert: 1.9.3
+ /ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+ dev: false
+
/any-base@1.1.0:
resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==}
dev: false
@@ -1965,6 +1982,12 @@ packages:
concat-map: 0.0.1
dev: false
+ /brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ dependencies:
+ balanced-match: 1.0.2
+ dev: false
+
/braces@3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
engines: {node: '>=8'}
@@ -2087,6 +2110,14 @@ packages:
escape-string-regexp: 1.0.5
supports-color: 5.5.0
+ /chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: false
+
/chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
@@ -2506,6 +2537,14 @@ packages:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: false
+ /ejs@3.1.9:
+ resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dependencies:
+ jake: 10.8.7
+ dev: false
+
/electron-to-chromium@1.4.665:
resolution: {integrity: sha512-UpyCWObBoD+nSZgOC2ToaIdZB0r9GhqT2WahPKiSki6ckkSuKhQNso8V2PrFcHBMleI/eqbKgVQgVC4Wni4ilw==}
dev: true
@@ -2774,6 +2813,12 @@ packages:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
dev: false
+ /filelist@1.0.4:
+ resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
+ dependencies:
+ minimatch: 5.1.6
+ dev: false
+
/fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'}
@@ -3022,6 +3067,11 @@ packages:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'}
+ /has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+ dev: false
+
/has-property-descriptors@1.0.1:
resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
dependencies:
@@ -3301,6 +3351,17 @@ packages:
resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
dev: false
+ /jake@10.8.7:
+ resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ async: 3.2.5
+ chalk: 4.1.2
+ filelist: 1.0.4
+ minimatch: 3.1.2
+ dev: false
+
/jimp@0.22.10:
resolution: {integrity: sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg==}
dependencies:
@@ -3674,6 +3735,13 @@ packages:
brace-expansion: 1.1.11
dev: false
+ /minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: false
+
/minimist@0.0.8:
resolution: {integrity: sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==}
requiresBuild: true
@@ -3781,7 +3849,7 @@ packages:
treemate: 0.3.11
vdirs: 0.1.8(vue@3.4.18)
vooks: 0.2.12(vue@3.4.18)
- vue: 3.4.18
+ vue: 3.4.18(typescript@5.3.3)
vueuc: 0.4.58(vue@3.4.18)
dev: true
@@ -4685,6 +4753,13 @@ packages:
dependencies:
has-flag: 3.0.0
+ /supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: false
+
/svg-tags@1.0.0:
resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
dev: true
@@ -5022,7 +5097,7 @@ packages:
vue: ^3.0.11
dependencies:
evtd: 0.2.4
- vue: 3.4.18
+ vue: 3.4.18(typescript@5.3.3)
dev: true
/verror@1.10.0:
@@ -5076,19 +5151,19 @@ packages:
vue: ^3.0.0
dependencies:
evtd: 0.2.4
- vue: 3.4.18
+ vue: 3.4.18(typescript@5.3.3)
dev: true
- /vue-tg@0.3.0:
+ /vue-tg@0.3.0(typescript@5.3.3):
resolution: {integrity: sha512-DZ5wt9ZY1Ux3yFH+KWeYyVo4Fd3R4UDoq07XWhA6EqpyfxII9zxT7xPKjTjrpDbvjHRzeuukZBBi4EIiQxtDaQ==}
dependencies:
'@types/telegram-web-app': 7.0.0
- vue: 3.4.18
+ vue: 3.4.18(typescript@5.3.3)
transitivePeerDependencies:
- typescript
dev: true
- /vue@3.4.18:
+ /vue@3.4.18(typescript@5.3.3):
resolution: {integrity: sha512-0zLRYamFRe0wF4q2L3O24KQzLyLpL64ye1RUToOgOxuWZsb/FhaNRdGmeozdtVYLz6tl94OXLaK7/WQIrVCw1A==}
peerDependencies:
typescript: '*'
@@ -5101,6 +5176,7 @@ packages:
'@vue/runtime-dom': 3.4.18
'@vue/server-renderer': 3.4.18(vue@3.4.18)
'@vue/shared': 3.4.18
+ typescript: 5.3.3
dev: true
/vueuc@0.4.58(vue@3.4.18):
@@ -5115,7 +5191,7 @@ packages:
seemly: 0.3.8
vdirs: 0.1.8(vue@3.4.18)
vooks: 0.2.12(vue@3.4.18)
- vue: 3.4.18
+ vue: 3.4.18(typescript@5.3.3)
dev: true
/w3c-hr-time@1.0.2:
@@ -5342,7 +5418,7 @@ packages:
- utf-8-validate
dev: false
- '@github.com/clansty/gramjs/releases/download/2.19.10%2525252525252Brevert_media/telegram-2.19.10.tgz':
+ '@github.com/clansty/gramjs/releases/download/2.19.10%25252525252525252Brevert_media/telegram-2.19.10.tgz':
resolution: {tarball: https://github.com/clansty/gramjs/releases/download/2.19.10%2Brevert_media/telegram-2.19.10.tgz}
name: telegram
version: 2.19.10
From 44647616621e5c624275fdd7a51b0642631339c1 Mon Sep 17 00:00:00 2001
From: Clansty
Date: Sun, 11 Feb 2024 17:04:40 +0800
Subject: [PATCH 06/48] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=20richHeader?=
=?UTF-8?q?=20=E7=BD=91=E9=A1=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Dockerfile | 1 +
main/assets/richHeader.ejs | 94 +++++++++++++++-
main/package.json | 1 +
main/src/api/index.ts | 7 ++
main/src/api/richHeader.ts | 3 +
pnpm-lock.yaml | 223 ++++++++++++++++++++++++++++++++-----
6 files changed, 296 insertions(+), 33 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 4b2b3a7..1833c5d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -59,6 +59,7 @@ COPY --from=build /app/deploy /app
COPY main/prisma /app/
RUN pnpm exec prisma generate
COPY --from=build-front /app/ui/dist /app/front
+ENV UI_PATH=/app/front
ENV DATA_DIR=/app/data
EXPOSE 8080
diff --git a/main/assets/richHeader.ejs b/main/assets/richHeader.ejs
index 3bd8405..a197163 100644
--- a/main/assets/richHeader.ejs
+++ b/main/assets/richHeader.ejs
@@ -6,7 +6,7 @@
<% if (!!title) { %>
<% }else { %>
-
+
<% } %>
群成员:<%= name %>
@@ -14,13 +14,97 @@
html, body {
padding: 0;
margin: 0;
+ color: #303133;
+ }
+
+ * {
+ box-sizing: border-box;
+ }
+
+ #app {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ gap: 20px;
+ }
+
+ #avatar, #card {
+ width: 100%;
+ max-width: 500px;
+ }
+
+ #card {
+ padding: 0 20px;
+ line-height: 1.8em;
+ }
+
+ .badge {
+ border-radius: 0.5em;
+ color: #fff;
+ padding: 0 0.2em;
+ }
+
+ .badge-owner {
+ background-color: #FDCE3A !important;
+ }
+
+ .badge-admin {
+ background-color: #2FE1D8 !important;
+ }
+
+ .badge-member {
+ background-color: #ADB5CA;
+ }
+
+ .badge-hasTitle {
+ background-color: #D88BFF;
+ }
+
+ .secondary {
+ color: #606266;
+ font-size: small;
+ }
+
+ .detailItem {
+ font-size: smaller;
+ margin-top: 0.5em;
+ }
+
+ @media screen and (min-width: 900px) {
+ #app {
+ flex-direction: row;
+ height: 100%;
+ }
+
+ #avatar {
+ width: 400px;
+ }
+
+ #card {
+ width: fit-content;
+ }
}
-
-<%= role %>
-<%= name %>
-<%= userId %>
+
+
+
+
+ <%= title || role %>
+ <%= name %>
+
+
<%= userId %>
+
+
加入时间
+ <%= joinTime %>
+
+
+
上次发言时间
+ <%= lastSentTime %>
+
+
+