Merge branch 'rainbowcat' of github.com:clansty/Q2TG into rainbowcat

This commit is contained in:
Nofated095 2024-01-12 09:19:12 +08:00
commit 77e08cc9b0
14 changed files with 288 additions and 106 deletions

View File

@ -40,7 +40,7 @@ jobs:
uses: docker/build-push-action@v5 uses: docker/build-push-action@v5
with: with:
context: . context: .
push: true push: ${{ github.actor != 'dependabot[bot]' }}
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64 platforms: linux/amd64

View File

@ -21,10 +21,10 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
COPY package.json pnpm-lock.yaml /app/ COPY package.json pnpm-lock.yaml /app/
FROM build-env AS prod-deps FROM build-env AS prod-deps
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile RUN --mount=type=cache,id=pnpm,target=/pnpm/store,sharing=locked pnpm install --prod --frozen-lockfile
FROM build-env AS build FROM build-env AS build
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile RUN --mount=type=cache,id=pnpm,target=/pnpm/store,sharing=locked pnpm install --frozen-lockfile
COPY src tsconfig.json /app/ COPY src tsconfig.json /app/
COPY prisma /app/ COPY prisma /app/
RUN pnpm exec prisma generate RUN pnpm exec prisma generate

View File

@ -45,6 +45,7 @@ services:
- sign - sign
volumes: volumes:
- q2tg:/app/data - q2tg:/app/data
- /var/run/docker.sock:/var/run/docker.sock
environment: environment:
- TG_API_ID= - TG_API_ID=
- TG_API_HASH= - TG_API_HASH=

View File

@ -14,27 +14,28 @@
], ],
"devDependencies": { "devDependencies": {
"@types/cli-progress": "^3.11.5", "@types/cli-progress": "^3.11.5",
"@types/date-and-time": "^0.13.0", "@types/date-and-time": "^3.0.3",
"@types/dockerode": "^3.3.23",
"@types/fluent-ffmpeg": "^2.1.24", "@types/fluent-ffmpeg": "^2.1.24",
"@types/lodash": "^4.14.201", "@types/lodash": "^4.14.201",
"@types/node": "^20.10.7", "@types/node": "^20.10.8",
"@types/prompts": "^2.4.9", "@types/prompts": "^2.4.9",
"@types/sharp": "^0.32.0",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"typescript": "^5.3.3" "typescript": "^5.3.3"
}, },
"dependencies": { "dependencies": {
"@prisma/client": "5.8.0", "@prisma/client": "5.8.0",
"axios": "^0.27.2", "axios": "^1.6.5",
"baidu-aip-sdk": "^4.16.15", "baidu-aip-sdk": "^4.16.15",
"big-integer": "^1.6.51", "big-integer": "^1.6.52",
"cli-progress": "^3.11.2", "cli-progress": "^3.11.2",
"date-and-time": "^2.4.1", "date-and-time": "^3.1.0",
"dockerode": "^4.0.2",
"dotenv": "^16.0.1", "dotenv": "^16.0.1",
"eviltransform": "^0.2.2", "eviltransform": "^0.2.2",
"file-type": "^19.0.0", "file-type": "^19.0.0",
"fluent-ffmpeg": "^2.1.2", "fluent-ffmpeg": "^2.1.2",
"icqq": "^0.6.7", "icqq": "^0.6.8",
"image-size": "^1.1.1", "image-size": "^1.1.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"log4js": "^6.6.1", "log4js": "^6.6.1",
@ -46,7 +47,7 @@
"silk-sdk": "^0.2.2", "silk-sdk": "^0.2.2",
"telegram": "^2.19.10", "telegram": "^2.19.10",
"tmp-promise": "^3.0.3", "tmp-promise": "^3.0.3",
"undici": "^5.20.0", "undici": "^6.3.0",
"zincsearch-node": "^2.1.0" "zincsearch-node": "^2.1.0"
}, },
"engines": { "engines": {

View File

@ -9,20 +9,23 @@ dependencies:
specifier: 5.8.0 specifier: 5.8.0
version: 5.8.0(prisma@5.8.0) version: 5.8.0(prisma@5.8.0)
axios: axios:
specifier: ^0.27.2 specifier: ^1.6.5
version: 0.27.2 version: 1.6.5
baidu-aip-sdk: baidu-aip-sdk:
specifier: ^4.16.15 specifier: ^4.16.15
version: 4.16.15 version: 4.16.15
big-integer: big-integer:
specifier: ^1.6.51 specifier: ^1.6.52
version: 1.6.51 version: 1.6.52
cli-progress: cli-progress:
specifier: ^3.11.2 specifier: ^3.11.2
version: 3.12.0 version: 3.12.0
date-and-time: date-and-time:
specifier: ^2.4.1 specifier: ^3.1.0
version: 2.4.3 version: 3.1.0
dockerode:
specifier: ^4.0.2
version: 4.0.2
dotenv: dotenv:
specifier: ^16.0.1 specifier: ^16.0.1
version: 16.3.1 version: 16.3.1
@ -36,8 +39,8 @@ dependencies:
specifier: ^2.1.2 specifier: ^2.1.2
version: 2.1.2 version: 2.1.2
icqq: icqq:
specifier: ^0.6.7 specifier: ^0.6.8
version: 0.6.7 version: 0.6.8
image-size: image-size:
specifier: ^1.1.1 specifier: ^1.1.1
version: 1.1.1 version: 1.1.1
@ -72,19 +75,22 @@ dependencies:
specifier: ^3.0.3 specifier: ^3.0.3
version: 3.0.3 version: 3.0.3
undici: undici:
specifier: ^5.20.0 specifier: ^6.3.0
version: 5.27.2 version: 6.3.0
zincsearch-node: zincsearch-node:
specifier: ^2.1.0 specifier: ^2.1.0
version: 2.1.1(undici@5.27.2) version: 2.1.1(undici@6.3.0)
devDependencies: devDependencies:
'@types/cli-progress': '@types/cli-progress':
specifier: ^3.11.5 specifier: ^3.11.5
version: 3.11.5 version: 3.11.5
'@types/date-and-time': '@types/date-and-time':
specifier: ^0.13.0 specifier: ^3.0.3
version: 0.13.0 version: 3.0.3
'@types/dockerode':
specifier: ^3.3.23
version: 3.3.23
'@types/fluent-ffmpeg': '@types/fluent-ffmpeg':
specifier: ^2.1.24 specifier: ^2.1.24
version: 2.1.24 version: 2.1.24
@ -92,23 +98,24 @@ devDependencies:
specifier: ^4.14.201 specifier: ^4.14.201
version: 4.14.201 version: 4.14.201
'@types/node': '@types/node':
specifier: ^20.10.7 specifier: ^20.10.8
version: 20.10.7 version: 20.10.8
'@types/prompts': '@types/prompts':
specifier: ^2.4.9 specifier: ^2.4.9
version: 2.4.9 version: 2.4.9
'@types/sharp':
specifier: ^0.32.0
version: 0.32.0
ts-node: ts-node:
specifier: ^10.9.2 specifier: ^10.9.2
version: 10.9.2(@types/node@20.10.7)(typescript@5.3.3) version: 10.9.2(@types/node@20.10.8)(typescript@5.3.3)
typescript: typescript:
specifier: ^5.3.3 specifier: ^5.3.3
version: 5.3.3 version: 5.3.3
packages: packages:
/@balena/dockerignore@1.0.2:
resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==}
dev: false
/@cryptography/aes@0.1.1: /@cryptography/aes@0.1.1:
resolution: {integrity: sha512-PcYz4FDGblO6tM2kSC+VzhhK62vml6k6/YAkiWtyPvrgJVfnDRoHGDtKn5UiaRRUrvUTTocBpvc2rRgTCqxjsg==} resolution: {integrity: sha512-PcYz4FDGblO6tM2kSC+VzhhK62vml6k6/YAkiWtyPvrgJVfnDRoHGDtKn5UiaRRUrvUTTocBpvc2rRgTCqxjsg==}
dev: false dev: false
@ -125,6 +132,7 @@ packages:
requiresBuild: true requiresBuild: true
dependencies: dependencies:
tslib: 2.6.2 tslib: 2.6.2
dev: false
optional: true optional: true
/@fastify/busboy@2.0.0: /@fastify/busboy@2.0.0:
@ -140,6 +148,7 @@ packages:
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.0.0 '@img/sharp-libvips-darwin-arm64': 1.0.0
dev: false
optional: true optional: true
/@img/sharp-darwin-x64@0.33.1: /@img/sharp-darwin-x64@0.33.1:
@ -150,6 +159,7 @@ packages:
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-darwin-x64': 1.0.0 '@img/sharp-libvips-darwin-x64': 1.0.0
dev: false
optional: true optional: true
/@img/sharp-libvips-darwin-arm64@1.0.0: /@img/sharp-libvips-darwin-arm64@1.0.0:
@ -158,6 +168,7 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
requiresBuild: true requiresBuild: true
dev: false
optional: true optional: true
/@img/sharp-libvips-darwin-x64@1.0.0: /@img/sharp-libvips-darwin-x64@1.0.0:
@ -166,6 +177,7 @@ packages:
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
requiresBuild: true requiresBuild: true
dev: false
optional: true optional: true
/@img/sharp-libvips-linux-arm64@1.0.0: /@img/sharp-libvips-linux-arm64@1.0.0:
@ -174,6 +186,7 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: false
optional: true optional: true
/@img/sharp-libvips-linux-arm@1.0.0: /@img/sharp-libvips-linux-arm@1.0.0:
@ -182,6 +195,7 @@ packages:
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: false
optional: true optional: true
/@img/sharp-libvips-linux-s390x@1.0.0: /@img/sharp-libvips-linux-s390x@1.0.0:
@ -190,6 +204,7 @@ packages:
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: false
optional: true optional: true
/@img/sharp-libvips-linux-x64@1.0.0: /@img/sharp-libvips-linux-x64@1.0.0:
@ -198,6 +213,7 @@ packages:
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: false
optional: true optional: true
/@img/sharp-libvips-linuxmusl-arm64@1.0.0: /@img/sharp-libvips-linuxmusl-arm64@1.0.0:
@ -206,6 +222,7 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: false
optional: true optional: true
/@img/sharp-libvips-linuxmusl-x64@1.0.0: /@img/sharp-libvips-linuxmusl-x64@1.0.0:
@ -214,6 +231,7 @@ packages:
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: false
optional: true optional: true
/@img/sharp-linux-arm64@0.33.1: /@img/sharp-linux-arm64@0.33.1:
@ -224,6 +242,7 @@ packages:
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-linux-arm64': 1.0.0 '@img/sharp-libvips-linux-arm64': 1.0.0
dev: false
optional: true optional: true
/@img/sharp-linux-arm@0.33.1: /@img/sharp-linux-arm@0.33.1:
@ -234,6 +253,7 @@ packages:
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-linux-arm': 1.0.0 '@img/sharp-libvips-linux-arm': 1.0.0
dev: false
optional: true optional: true
/@img/sharp-linux-s390x@0.33.1: /@img/sharp-linux-s390x@0.33.1:
@ -244,6 +264,7 @@ packages:
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-linux-s390x': 1.0.0 '@img/sharp-libvips-linux-s390x': 1.0.0
dev: false
optional: true optional: true
/@img/sharp-linux-x64@0.33.1: /@img/sharp-linux-x64@0.33.1:
@ -254,6 +275,7 @@ packages:
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-linux-x64': 1.0.0 '@img/sharp-libvips-linux-x64': 1.0.0
dev: false
optional: true optional: true
/@img/sharp-linuxmusl-arm64@0.33.1: /@img/sharp-linuxmusl-arm64@0.33.1:
@ -264,6 +286,7 @@ packages:
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-linuxmusl-arm64': 1.0.0 '@img/sharp-libvips-linuxmusl-arm64': 1.0.0
dev: false
optional: true optional: true
/@img/sharp-linuxmusl-x64@0.33.1: /@img/sharp-linuxmusl-x64@0.33.1:
@ -274,6 +297,7 @@ packages:
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@img/sharp-libvips-linuxmusl-x64': 1.0.0 '@img/sharp-libvips-linuxmusl-x64': 1.0.0
dev: false
optional: true optional: true
/@img/sharp-wasm32@0.33.1: /@img/sharp-wasm32@0.33.1:
@ -283,6 +307,7 @@ packages:
requiresBuild: true requiresBuild: true
dependencies: dependencies:
'@emnapi/runtime': 0.44.0 '@emnapi/runtime': 0.44.0
dev: false
optional: true optional: true
/@img/sharp-win32-ia32@0.33.1: /@img/sharp-win32-ia32@0.33.1:
@ -291,6 +316,7 @@ packages:
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
requiresBuild: true requiresBuild: true
dev: false
optional: true optional: true
/@img/sharp-win32-x64@0.33.1: /@img/sharp-win32-x64@0.33.1:
@ -299,6 +325,7 @@ packages:
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
requiresBuild: true requiresBuild: true
dev: false
optional: true optional: true
/@jimp/bmp@0.22.10(@jimp/custom@0.22.10): /@jimp/bmp@0.22.10(@jimp/custom@0.22.10):
@ -754,17 +781,34 @@ packages:
/@types/cli-progress@3.11.5: /@types/cli-progress@3.11.5:
resolution: {integrity: sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g==} resolution: {integrity: sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g==}
dependencies: dependencies:
'@types/node': 18.18.8 '@types/node': 20.10.8
dev: true dev: true
/@types/date-and-time@0.13.0: /@types/date-and-time@3.0.3:
resolution: {integrity: sha512-kHEncapIgrqaY8r2tyb19EvdKyhNjwheLl5cYTorsWJtURoI+oGm5ehW8CLAaq4dvu8x9z56FcXqAT4Mm5Nvzw==} resolution: {integrity: sha512-5uHEzTnzhS5gO8UOWIwPQitg13mAnixpoWaWuqUfGLvF9GdxBe7Uo56ZRLTQ7CckanqW/oAv/RyQDv4Knf075A==}
deprecated: This is a stub types definition. date-and-time provides its own type definitions, so you do not need this installed.
dependencies:
date-and-time: 2.4.3
dev: true
/@types/docker-modem@3.0.6:
resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==}
dependencies:
'@types/node': 20.10.8
'@types/ssh2': 1.11.18
dev: true
/@types/dockerode@3.3.23:
resolution: {integrity: sha512-Lz5J+NFgZS4cEVhquwjIGH4oQwlVn2h7LXD3boitujBnzOE5o7s9H8hchEjoDK2SlRsJTogdKnQeiJgPPKLIEw==}
dependencies:
'@types/docker-modem': 3.0.6
'@types/node': 20.10.8
dev: true dev: true
/@types/fluent-ffmpeg@2.1.24: /@types/fluent-ffmpeg@2.1.24:
resolution: {integrity: sha512-g5oQO8Jgi2kFS3tTub7wLvfLztr1s8tdXmRd8PiL/hLMLzTIAyMR2sANkTggM/rdEDAg3d63nYRRVepwBiCw5A==} resolution: {integrity: sha512-g5oQO8Jgi2kFS3tTub7wLvfLztr1s8tdXmRd8PiL/hLMLzTIAyMR2sANkTggM/rdEDAg3d63nYRRVepwBiCw5A==}
dependencies: dependencies:
'@types/node': 18.18.8 '@types/node': 20.10.8
dev: true dev: true
/@types/lodash@4.14.201: /@types/lodash@4.14.201:
@ -781,8 +825,8 @@ packages:
undici-types: 5.26.5 undici-types: 5.26.5
dev: true dev: true
/@types/node@20.10.7: /@types/node@20.10.8:
resolution: {integrity: sha512-fRbIKb8C/Y2lXxB5eVMj4IU7xpdox0Lh8bUPEdtLysaylsml1hOOx1+STloRs/B9nf7C6kPRmmg/V7aQW7usNg==} resolution: {integrity: sha512-f8nQs3cLxbAFc00vEU59yf9UyGUftkPaLGfvbVOIDdx2i1b8epBqj2aNGyP19fiyXWvlmZ7qC1XLjAzw/OKIeA==}
dependencies: dependencies:
undici-types: 5.26.5 undici-types: 5.26.5
dev: true dev: true
@ -790,15 +834,14 @@ packages:
/@types/prompts@2.4.9: /@types/prompts@2.4.9:
resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==}
dependencies: dependencies:
'@types/node': 20.10.7 '@types/node': 20.10.8
kleur: 3.0.3 kleur: 3.0.3
dev: true dev: true
/@types/sharp@0.32.0: /@types/ssh2@1.11.18:
resolution: {integrity: sha512-OOi3kL+FZDnPhVzsfD37J88FNeZh6gQsGcLc95NbeURRGvmSjeXiDcyWzF2o3yh/gQAUn2uhh/e+CPCa5nwAxw==} resolution: {integrity: sha512-7eH4ppQMFlzvn//zhwD54MWaITR1aSc1oFBye9vb76GZ2Y9PSFYdwVIwOlxRXWs5+1hifntXyt+8a6SUbOD7Hg==}
deprecated: This is a stub types definition. sharp provides its own type definitions, so you do not need this installed.
dependencies: dependencies:
sharp: 0.33.1 '@types/node': 18.18.8
dev: true dev: true
/abab@2.0.6: /abab@2.0.6:
@ -933,19 +976,10 @@ packages:
resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==}
dev: false dev: false
/axios@0.27.2: /axios@1.6.5:
resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==}
dependencies: dependencies:
follow-redirects: 1.15.3 follow-redirects: 1.15.4
form-data: 4.0.0
transitivePeerDependencies:
- debug
dev: false
/axios@1.6.0:
resolution: {integrity: sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==}
dependencies:
follow-redirects: 1.15.3
form-data: 4.0.0 form-data: 4.0.0
proxy-from-env: 1.1.0 proxy-from-env: 1.1.0
transitivePeerDependencies: transitivePeerDependencies:
@ -981,8 +1015,8 @@ packages:
tweetnacl: 0.14.5 tweetnacl: 0.14.5
dev: false dev: false
/big-integer@1.6.51: /big-integer@1.6.52:
resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==}
engines: {node: '>=0.6'} engines: {node: '>=0.6'}
dev: false dev: false
@ -992,6 +1026,14 @@ packages:
file-uri-to-path: 1.0.0 file-uri-to-path: 1.0.0
dev: false dev: false
/bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
dependencies:
buffer: 5.7.1
inherits: 2.0.4
readable-stream: 3.6.2
dev: false
/bmp-js@0.1.0: /bmp-js@0.1.0:
resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==}
dev: false dev: false
@ -1041,6 +1083,13 @@ packages:
node-gyp-build: 4.6.1 node-gyp-build: 4.6.1
dev: false dev: false
/buildcheck@0.0.6:
resolution: {integrity: sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==}
engines: {node: '>=10.0.0'}
requiresBuild: true
dev: false
optional: true
/bytes@3.1.2: /bytes@3.1.2:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
@ -1093,6 +1142,10 @@ packages:
supports-color: 5.5.0 supports-color: 5.5.0
dev: false dev: false
/chownr@1.1.4:
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
dev: false
/chownr@2.0.0: /chownr@2.0.0:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -1130,6 +1183,7 @@ packages:
engines: {node: '>=7.0.0'} engines: {node: '>=7.0.0'}
dependencies: dependencies:
color-name: 1.1.4 color-name: 1.1.4
dev: false
/color-name@1.1.3: /color-name@1.1.3:
resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
@ -1137,12 +1191,14 @@ packages:
/color-name@1.1.4: /color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
dev: false
/color-string@1.9.1: /color-string@1.9.1:
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
dependencies: dependencies:
color-name: 1.1.4 color-name: 1.1.4
simple-swizzle: 0.2.2 simple-swizzle: 0.2.2
dev: false
/color-support@1.1.3: /color-support@1.1.3:
resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
@ -1155,6 +1211,7 @@ packages:
dependencies: dependencies:
color-convert: 2.0.1 color-convert: 2.0.1
color-string: 1.9.1 color-string: 1.9.1
dev: false
/combined-stream@1.0.8: /combined-stream@1.0.8:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
@ -1206,6 +1263,16 @@ packages:
resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
dev: false dev: false
/cpu-features@0.0.9:
resolution: {integrity: sha512-AKjgn2rP2yJyfbepsmLfiYcmtNn/2eUvocUyM/09yB0YDiz39HteK/5/T4Onf0pmdYDMgkBoGvRLvEguzyL7wQ==}
engines: {node: '>=10.0.0'}
requiresBuild: true
dependencies:
buildcheck: 0.0.6
nan: 2.18.0
dev: false
optional: true
/create-require@1.1.1: /create-require@1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: true dev: true
@ -1250,6 +1317,10 @@ packages:
/date-and-time@2.4.3: /date-and-time@2.4.3:
resolution: {integrity: sha512-xkS/imTmsyEdpp9ie5oV5UWolg3XkYWNySbT2W4ESWr6v4V8YrsHbhpk9fIeQcr0NFTnYbQJLXlgU1zrLItysA==} resolution: {integrity: sha512-xkS/imTmsyEdpp9ie5oV5UWolg3XkYWNySbT2W4ESWr6v4V8YrsHbhpk9fIeQcr0NFTnYbQJLXlgU1zrLItysA==}
dev: true
/date-and-time@3.1.0:
resolution: {integrity: sha512-tWIpW3LK8tyLofyuMYxfOUchstWcyXjM+4rzIzve/VtBLzvS6q1oOxkcwhQ710nhU3M04jpfveDQ18IIw8lm2A==}
dev: false dev: false
/date-format@4.0.14: /date-format@4.0.14:
@ -1356,6 +1427,7 @@ packages:
/detect-libc@2.0.2: /detect-libc@2.0.2:
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
engines: {node: '>=8'} engines: {node: '>=8'}
dev: false
/diff@3.3.1: /diff@3.3.1:
resolution: {integrity: sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==} resolution: {integrity: sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==}
@ -1369,6 +1441,29 @@ packages:
engines: {node: '>=0.3.1'} engines: {node: '>=0.3.1'}
dev: true dev: true
/docker-modem@5.0.3:
resolution: {integrity: sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg==}
engines: {node: '>= 8.0'}
dependencies:
debug: 4.3.4
readable-stream: 3.6.2
split-ca: 1.0.1
ssh2: 1.15.0
transitivePeerDependencies:
- supports-color
dev: false
/dockerode@4.0.2:
resolution: {integrity: sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w==}
engines: {node: '>= 8.0'}
dependencies:
'@balena/dockerignore': 1.0.2
docker-modem: 5.0.3
tar-fs: 2.0.1
transitivePeerDependencies:
- supports-color
dev: false
/dom-serializer@1.4.1: /dom-serializer@1.4.1:
resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
dependencies: dependencies:
@ -1442,6 +1537,12 @@ packages:
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
dev: false dev: false
/end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
dependencies:
once: 1.4.0
dev: false
/entities@2.2.0: /entities@2.2.0:
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
dev: false dev: false
@ -1573,8 +1674,8 @@ packages:
which: 1.3.1 which: 1.3.1
dev: false dev: false
/follow-redirects@1.15.3: /follow-redirects@1.15.4:
resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} resolution: {integrity: sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==}
engines: {node: '>=4.0'} engines: {node: '>=4.0'}
peerDependencies: peerDependencies:
debug: '*' debug: '*'
@ -1619,6 +1720,10 @@ packages:
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
dev: false dev: false
/fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
dev: false
/fs-extra@8.1.0: /fs-extra@8.1.0:
resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
engines: {node: '>=6 <7 || >=8'} engines: {node: '>=6 <7 || >=8'}
@ -1882,11 +1987,11 @@ packages:
safer-buffer: 2.1.2 safer-buffer: 2.1.2
dev: false dev: false
/icqq@0.6.7: /icqq@0.6.8:
resolution: {integrity: sha512-sTAPDL6gri1njjt5I3kaH/QmSbEUEY+3KoMKUtguZ2KFrZFD6UnOygJJJRi47Y4dXpsIrWa6lXbyBU50upXcUQ==} resolution: {integrity: sha512-+Whg6gcxomNshRhij3vuEnjaO/8ODAzl3ZVda6KKwZtWTwuD23iX4pR57Kv7+VGw6Lp5fEGF6hjSxPHw9Rvqcg==}
engines: {node: '>= v14'} engines: {node: '>= v14'}
dependencies: dependencies:
axios: 1.6.0 axios: 1.6.5
log4js: 6.9.1 log4js: 6.9.1
long: 4.0.0 long: 4.0.0
pngjs: 6.0.0 pngjs: 6.0.0
@ -1942,6 +2047,7 @@ packages:
/is-arrayish@0.3.2: /is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
dev: false
/is-fullwidth-code-point@3.0.0: /is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
@ -2258,6 +2364,7 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dependencies: dependencies:
yallist: 4.0.0 yallist: 4.0.0
dev: false
/make-dir@3.1.0: /make-dir@3.1.0:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
@ -2351,6 +2458,10 @@ packages:
yallist: 4.0.0 yallist: 4.0.0
dev: false dev: false
/mkdirp-classic@0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
dev: false
/mkdirp@0.5.1: /mkdirp@0.5.1:
resolution: {integrity: sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==} resolution: {integrity: sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==}
deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
@ -2647,6 +2758,13 @@ packages:
resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
dev: false dev: false
/pump@3.0.0:
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
dependencies:
end-of-stream: 1.4.4
once: 1.4.0
dev: false
/punycode@2.3.1: /punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'} engines: {node: '>=6'}
@ -2794,6 +2912,7 @@ packages:
hasBin: true hasBin: true
dependencies: dependencies:
lru-cache: 6.0.0 lru-cache: 6.0.0
dev: false
/set-blocking@2.0.0: /set-blocking@2.0.0:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
@ -2841,6 +2960,7 @@ packages:
'@img/sharp-wasm32': 0.33.1 '@img/sharp-wasm32': 0.33.1
'@img/sharp-win32-ia32': 0.33.1 '@img/sharp-win32-ia32': 0.33.1
'@img/sharp-win32-x64': 0.33.1 '@img/sharp-win32-x64': 0.33.1
dev: false
/should-equal@2.0.0: /should-equal@2.0.0:
resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==}
@ -2929,6 +3049,7 @@ packages:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
dependencies: dependencies:
is-arrayish: 0.3.2 is-arrayish: 0.3.2
dev: false
/sisteransi@1.0.5: /sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
@ -2971,6 +3092,22 @@ packages:
dev: false dev: false
optional: true optional: true
/split-ca@1.0.1:
resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==}
dev: false
/ssh2@1.15.0:
resolution: {integrity: sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==}
engines: {node: '>=10.16.0'}
requiresBuild: true
dependencies:
asn1: 0.2.6
bcrypt-pbkdf: 1.0.2
optionalDependencies:
cpu-features: 0.0.9
nan: 2.18.0
dev: false
/sshpk@1.18.0: /sshpk@1.18.0:
resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@ -3078,6 +3215,26 @@ packages:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
dev: false dev: false
/tar-fs@2.0.1:
resolution: {integrity: sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==}
dependencies:
chownr: 1.1.4
mkdirp-classic: 0.5.3
pump: 3.0.0
tar-stream: 2.2.0
dev: false
/tar-stream@2.2.0:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
engines: {node: '>=6'}
dependencies:
bl: 4.1.0
end-of-stream: 1.4.4
fs-constants: 1.0.0
inherits: 2.0.4
readable-stream: 3.6.2
dev: false
/tar@6.2.0: /tar@6.2.0:
resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -3111,7 +3268,7 @@ packages:
dependencies: dependencies:
'@cryptography/aes': 0.1.1 '@cryptography/aes': 0.1.1
async-mutex: 0.3.2 async-mutex: 0.3.2
big-integer: 1.6.51 big-integer: 1.6.52
buffer: 6.0.3 buffer: 6.0.3
htmlparser2: 6.1.0 htmlparser2: 6.1.0
mime: 3.0.0 mime: 3.0.0
@ -3210,7 +3367,7 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dev: false dev: false
/ts-node@10.9.2(@types/node@20.10.7)(typescript@5.3.3): /ts-node@10.9.2(@types/node@20.10.8)(typescript@5.3.3):
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -3229,7 +3386,7 @@ packages:
'@tsconfig/node12': 1.0.11 '@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3 '@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4 '@tsconfig/node16': 1.0.4
'@types/node': 20.10.7 '@types/node': 20.10.8
acorn: 8.11.2 acorn: 8.11.2
acorn-walk: 8.3.0 acorn-walk: 8.3.0
arg: 4.1.3 arg: 4.1.3
@ -3243,6 +3400,7 @@ packages:
/tslib@2.6.2: /tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
dev: false
/tsscmp@1.0.6: /tsscmp@1.0.6:
resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
@ -3305,9 +3463,9 @@ packages:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
dev: true dev: true
/undici@5.27.2: /undici@6.3.0:
resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==} resolution: {integrity: sha512-zkSMOXs2topAR1LF0PxAaNNvhdX4LYEcmRMJLMh3mjgfZpBtc/souXOp4aYiR5Q46HrBPA2/8DkEZhD3eNFE1Q==}
engines: {node: '>=14.0'} engines: {node: '>=18.0'}
dependencies: dependencies:
'@fastify/busboy': 2.0.0 '@fastify/busboy': 2.0.0
dev: false dev: false
@ -3547,6 +3705,7 @@ packages:
/yallist@4.0.0: /yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: false
/ylru@1.3.2: /ylru@1.3.2:
resolution: {integrity: sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==} resolution: {integrity: sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==}
@ -3558,13 +3717,13 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: true dev: true
/zincsearch-node@2.1.1(undici@5.27.2): /zincsearch-node@2.1.1(undici@6.3.0):
resolution: {integrity: sha512-erRhljqQVK96HE7KWfMFQaFsiere3+DrInZY2g5pHpz5ea/78G1z4Exky2vsLvLZ+D320D2JINcc2BVedY+6aQ==} resolution: {integrity: sha512-erRhljqQVK96HE7KWfMFQaFsiere3+DrInZY2g5pHpz5ea/78G1z4Exky2vsLvLZ+D320D2JINcc2BVedY+6aQ==}
peerDependencies: peerDependencies:
undici: '>=5.10.0' undici: '>=5.10.0'
dependencies: dependencies:
typescript: 4.9.5 typescript: 4.9.5
undici: 5.27.2 undici: 6.3.0
dev: false dev: false
'@github.com/Clansty/quote-api/archive/37a0e48a434b94bb04c04c7d86d9f0d2295df869.tar.gz': '@github.com/Clansty/quote-api/archive/37a0e48a434b94bb04c04c7d86d9f0d2295df869.tar.gz':

View File

@ -48,13 +48,14 @@ model Instance {
} }
model QqBot { model QqBot {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
uin BigInt @default(0) uin BigInt @default(0)
password String @default("") password String @default("")
platform Int @default(0) platform Int @default(0)
Instance Instance[] Instance Instance[]
signApi String? signApi String?
signVer String? signVer String?
signDockerId String?
} }
model Message { model Message {

View File

@ -36,13 +36,15 @@ interface CreateOicqParams {
onVerifyDevice: (phone: string) => Promise<string>; onVerifyDevice: (phone: string) => Promise<string>;
// 当滑块时调用此方法,返回 ticker也可以返回假值改用扫码登录 // 当滑块时调用此方法,返回 ticker也可以返回假值改用扫码登录
onVerifySlider: (url: string) => Promise<string>; onVerifySlider: (url: string) => Promise<string>;
signDockerId?: string;
} }
// OicqExtended?? // OicqExtended??
export default class OicqClient extends Client { export default class OicqClient extends Client {
private readonly onMessageHandlers: Array<MessageHandler> = []; private readonly onMessageHandlers: Array<MessageHandler> = [];
private constructor(uin: number, public readonly id: number, conf?: Config) { private constructor(uin: number, public readonly id: number, conf?: Config,
public readonly signDockerId?: string) {
super(conf); super(conf);
} }
@ -125,7 +127,7 @@ export default class OicqClient extends Client {
ffprobe_path: process.env.FFPROBE_PATH, ffprobe_path: process.env.FFPROBE_PATH,
sign_api_addr: params.signApi || process.env.SIGN_API, sign_api_addr: params.signApi || process.env.SIGN_API,
ver: params.signVer || process.env.SIGN_VER, ver: params.signVer || process.env.SIGN_VER,
}); }, params.signDockerId);
client.on('system.login.device', loginDeviceHandler); client.on('system.login.device', loginDeviceHandler);
client.on('system.login.slider', loginSliderHandler); client.on('system.login.slider', loginSliderHandler);
client.on('system.login.error', loginErrorHandler); client.on('system.login.error', loginErrorHandler);

View File

@ -6,13 +6,13 @@ import { DeletedMessage, DeletedMessageEvent } from 'telegram/events/DeletedMess
import { EntityLike } from 'telegram/define'; import { EntityLike } from 'telegram/define';
import WaitForMessageHelper from '../helpers/WaitForMessageHelper'; import WaitForMessageHelper from '../helpers/WaitForMessageHelper';
import CallbackQueryHelper from '../helpers/CallbackQueryHelper'; import CallbackQueryHelper from '../helpers/CallbackQueryHelper';
import { CallbackQuery } from 'telegram/events/CallbackQuery'; import { CallbackQuery, CallbackQueryEvent } from 'telegram/events/CallbackQuery';
import os from 'os'; import os from 'os';
import TelegramChat from './TelegramChat'; import TelegramChat from './TelegramChat';
import TelegramSession from '../models/TelegramSession'; import TelegramSession from '../models/TelegramSession';
import { LogLevel } from 'telegram/extensions/Logger'; import { LogLevel } from 'telegram/extensions/Logger';
import { BigInteger } from 'big-integer'; import { BigInteger } from 'big-integer';
import { IterMessagesParams } from 'telegram/client/messages'; import { EditMessageParams, IterMessagesParams } from 'telegram/client/messages';
import { PromisedNetSockets, PromisedWebSockets } from 'telegram/extensions'; import { PromisedNetSockets, PromisedWebSockets } from 'telegram/extensions';
import { ConnectionTCPFull, ConnectionTCPObfuscated } from 'telegram/network'; import { ConnectionTCPFull, ConnectionTCPObfuscated } from 'telegram/network';
@ -174,7 +174,7 @@ export default class Telegram {
); );
} }
public registerCallback(cb: () => any) { public registerCallback(cb: (event: CallbackQueryEvent) => any) {
return this.callbackQueryHelper.registerCallback(cb); return this.callbackQueryHelper.registerCallback(cb);
} }

View File

@ -290,6 +290,7 @@ export default class {
const qqMessage = await pair.qq.sendMsg({ const qqMessage = await pair.qq.sendMsg({
type: 'image', type: 'image',
file: image, file: image,
asface: true
}); });
await db.message.create({ await db.message.create({
data: { data: {

View File

@ -79,6 +79,7 @@ export default class SetupController {
platform: this.instance.qq.platform, platform: this.instance.qq.platform,
signApi: this.instance.qq.signApi, signApi: this.instance.qq.signApi,
signVer: this.instance.qq.signVer, signVer: this.instance.qq.signVer,
signDockerId: this.instance.qq.signDockerId,
onVerifyDevice: async (phone) => { onVerifyDevice: async (phone) => {
return await this.setupService.waitForOwnerInput(`请输入手机 ${phone} 收到的验证码`); return await this.setupService.waitForOwnerInput(`请输入手机 ${phone} 收到的验证码`);
}, },
@ -114,12 +115,14 @@ export default class SetupController {
let signVer: string; let signVer: string;
if (signApi && !process.env.SIGN_VER) { if (signApi && !process.env.SIGN_VER) {
signVer = await this.setupService.waitForOwnerInput('请输入签名服务器版本,当前支持安卓(8.9.63、8.9.68、8.9.70)、Tim(3.5.1、3.5.2)', [ signVer = await this.setupService.waitForOwnerInput('请输入签名服务器版本', [
[Button.text('8.9.63', true, true)], [Button.text('8.9.63', true, true),
[Button.text('8.9.68', true, true)], Button.text('8.9.68', true, true)],
[Button.text('8.9.70', true, true)], [Button.text('8.9.70', true, true),
[Button.text('3.5.1', true, true)], Button.text('8.9.71', true, true),
[Button.text('3.5.2', true, true)], Button.text('8.9.73', true, true)],
[Button.text('8.9.78', true, true),
Button.text('8.9.83', true, true)],
]); ]);
} }
@ -142,18 +145,6 @@ export default class SetupController {
else { else {
await this.setupService.informOwner(`UserBot 创建被跳过`); await this.setupService.informOwner(`UserBot 创建被跳过`);
} }
// try {
// const phoneNumber = await this.setupService.waitForOwnerInput('创建 Telegram UserBot请输入你的手机号码需要带国家区号例如+86');
// await this.setupService.informOwner('正在登录,请稍候…');
// this.tgUser = await this.setupService.createUserBot(phoneNumber);
// this.instance.userSessionId = this.tgUser.sessionId;
// await this.setupService.informOwner(`登录成功`);
// }
// catch (e) {
// this.log.error('创建 UserBot 失败', e);
// this.isInProgress = false;
// throw e;
// }
} }
private async finishSetup() { private async finishSetup() {

View File

@ -1,9 +1,9 @@
import { CallbackQueryEvent } from 'telegram/events/CallbackQuery'; import { CallbackQueryEvent } from 'telegram/events/CallbackQuery';
export default class CallbackQueryHelper { export default class CallbackQueryHelper {
private readonly queries: Array<() => any> = []; private readonly queries: Array<(event: CallbackQueryEvent) => any> = [];
public registerCallback(cb: () => any) { public registerCallback(cb: (event: CallbackQueryEvent) => any) {
const id = this.queries.push(cb) - 1; const id = this.queries.push(cb) - 1;
const buf = Buffer.alloc(2); const buf = Buffer.alloc(2);
buf.writeUInt16LE(id); buf.writeUInt16LE(id);
@ -13,8 +13,12 @@ export default class CallbackQueryHelper {
public onCallbackQuery = async (event: CallbackQueryEvent) => { public onCallbackQuery = async (event: CallbackQueryEvent) => {
const id = event.query.data.readUint16LE(); const id = event.query.data.readUint16LE();
if (this.queries[id]) { if (this.queries[id]) {
this.queries[id](); this.queries[id](event);
}
try {
await event.answer();
}
catch {
} }
await event.answer();
}; };
} }

View File

@ -27,7 +27,4 @@ import db from './models/db';
} }
} }
setTimeout(async () => {
log.info('开始加载 MapInstance')
}, 15 * 1000);
})(); })();

View File

@ -122,6 +122,7 @@ export default class Instance {
platform: this.qq.platform, platform: this.qq.platform,
signApi: this.qq.signApi, signApi: this.qq.signApi,
signVer: this.qq.signVer, signVer: this.qq.signVer,
signDockerId: this.qq.signDockerId,
onVerifyDevice: async (phone) => { onVerifyDevice: async (phone) => {
return await this.waitForOwnerInput(`请输入手机 ${phone} 收到的验证码`); return await this.waitForOwnerInput(`请输入手机 ${phone} 收到的验证码`);
}, },

View File

@ -39,6 +39,8 @@ import ZincSearch from 'zincsearch-node';
import { speech as AipSpeechClient } from 'baidu-aip-sdk'; import { speech as AipSpeechClient } from 'baidu-aip-sdk';
import random from '../utils/random'; import random from '../utils/random';
import { escapeXml } from 'icqq/lib/common'; import { escapeXml } from 'icqq/lib/common';
import Docker from 'dockerode';
import ReplyKeyboardHide = Api.ReplyKeyboardHide;
const NOT_CHAINABLE_ELEMENTS = ['flash', 'record', 'video', 'location', 'share', 'json', 'xml', 'poke']; const NOT_CHAINABLE_ELEMENTS = ['flash', 'record', 'video', 'location', 'share', 'json', 'xml', 'poke'];
@ -47,6 +49,7 @@ export default class ForwardService {
private readonly log: Logger; private readonly log: Logger;
private readonly zincSearch: ZincSearch; private readonly zincSearch: ZincSearch;
private readonly speechClient: AipSpeechClient; private readonly speechClient: AipSpeechClient;
private readonly restartSignCallbackHandle?: Buffer;
constructor(private readonly instance: Instance, constructor(private readonly instance: Instance,
private readonly tgBot: Telegram, private readonly tgBot: Telegram,
@ -66,6 +69,24 @@ export default class ForwardService {
process.env.BAIDU_SECRET_KEY, process.env.BAIDU_SECRET_KEY,
); );
} }
if (oicq.signDockerId) {
const socket = new Docker({ socketPath: '/var/run/docker.sock' });
const container = socket.getContainer(oicq.signDockerId);
this.restartSignCallbackHandle = tgBot.registerCallback(async (event) => {
const message = await event.edit({
message: event.messageId,
text: '正在重启签名服务...',
buttons: new ReplyKeyboardHide({}),
});
await container.restart();
await event.answer({
message: '已发送重启指令',
});
await message.reply({
message: '已发送重启指令\n你需要稍后重新发送一下消息',
});
});
}
} }
public async forwardFromQq(event: PrivateMessageEvent | GroupMessageEvent, pair: Pair) { public async forwardFromQq(event: PrivateMessageEvent | GroupMessageEvent, pair: Pair) {
@ -668,7 +689,10 @@ export default class ForwardService {
this.log.error('从 TG 到 QQ 的消息转发失败', e); this.log.error('从 TG 到 QQ 的消息转发失败', e);
try { try {
await message.reply({ await message.reply({
message: `<i>转发失败:${e.message}</i>\n${e}`, message: `<i>转发失败:${e.message}</i>`,
buttons: (e.message === '签名api异常' && this.restartSignCallbackHandle) ?
Button.inline('重启签名服务', this.restartSignCallbackHandle) :
undefined,
}); });
} }
catch { catch {