Compare commits

...
Author SHA1 Message Date
whyour 83e4490b57 fix: pin Python base for multi-arch builds 2026-08-11 00:12:47 +08:00
whyour 2ac4f07fca fix: address dashboard scope and preview interactions 2026-08-10 23:40:53 +08:00
Kobi HikriandGitHub 6618240c61 ci: attach provenance and SBOM attestations to the published images (#3048)
* ci: attach provenance and SBOM attestations to the published images

* ci: restore trailing newline at end of file
2026-08-01 20:11:55 +08:00
whyour 0bb41ebe96 新版本 v2.21.0 2026-07-25 13:28:44 +08:00
whyour d67f33df39 fix: 防止 task_before 污染 Node.js 依赖路径 2026-07-24 22:33:48 +08:00
whyour 24d539fc05 fix: 使用 npm 包安装 sqlite3 2026-07-19 00:40:40 +08:00
whyour 214e23a63d fix: 恢复 linux/s390x 镜像支持 2026-07-18 11:02:07 +08:00
whyour ddb3ab7ac3 Add configurable browser tab title for multi-instance QingLong deployments (#3041) 2026-07-10 02:07:11 +08:00
whyour da6dac8bf1 ts-node 异常,锁定 typescript 版本 2026-07-10 01:36:31 +08:00
22 changed files with 432 additions and 450 deletions
+12 -2
View File
@@ -212,10 +212,12 @@ jobs:
QL_BRANCH=${{ github.ref_name }} QL_BRANCH=${{ github.ref_name }}
SOURCE_COMMIT=${{ github.sha }} SOURCE_COMMIT=${{ github.sha }}
network: host network: host
platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/386 platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,linux/386
context: . context: .
file: ./docker/Dockerfile file: ./docker/Dockerfile
push: true push: true
provenance: mode=max
sbom: true
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
cache-from: type=registry,ref=whyour/qinglong:cache-alpine cache-from: type=registry,ref=whyour/qinglong:cache-alpine
@@ -290,10 +292,13 @@ jobs:
QL_BRANCH=${{ github.ref_name }} QL_BRANCH=${{ github.ref_name }}
SOURCE_COMMIT=${{ github.sha }} SOURCE_COMMIT=${{ github.sha }}
network: host network: host
# Keep s390x on Debian: npm can hang under QEMU with Alpine (nodejs/docker-node#1973).
platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
context: . context: .
file: ./docker/Dockerfile.debian file: ./docker/Dockerfile.debian
push: true push: true
provenance: mode=max
sbom: true
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
cache-from: type=registry,ref=whyour/qinglong:cache-debian cache-from: type=registry,ref=whyour/qinglong:cache-debian
@@ -354,10 +359,12 @@ jobs:
QL_BRANCH=${{ github.ref_name }} QL_BRANCH=${{ github.ref_name }}
SOURCE_COMMIT=${{ github.sha }} SOURCE_COMMIT=${{ github.sha }}
network: host network: host
platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/386 platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,linux/386
context: . context: .
file: ./docker/Dockerfile.310 file: ./docker/Dockerfile.310
push: true push: true
provenance: mode=max
sbom: true
tags: | tags: |
whyour/qinglong:python3.10 whyour/qinglong:python3.10
whyour/qinglong:${{ steps.version.outputs.version }}-python3.10 whyour/qinglong:${{ steps.version.outputs.version }}-python3.10
@@ -419,10 +426,13 @@ jobs:
QL_BRANCH=${{ github.ref_name }} QL_BRANCH=${{ github.ref_name }}
SOURCE_COMMIT=${{ github.sha }} SOURCE_COMMIT=${{ github.sha }}
network: host network: host
# Keep s390x on Debian: npm can hang under QEMU with Alpine (nodejs/docker-node#1973).
platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
context: . context: .
file: ./docker/Dockerfile.debian310 file: ./docker/Dockerfile.debian310
push: true push: true
provenance: mode=max
sbom: true
tags: | tags: |
whyour/qinglong:debian-python3.10 whyour/qinglong:debian-python3.10
whyour/qinglong:${{ steps.version.outputs.version }}-debian-python3.10 whyour/qinglong:${{ steps.version.outputs.version }}-debian-python3.10
+18
View File
@@ -442,6 +442,24 @@ export default (app: Router) => {
}, },
); );
route.put(
'/config/panel-title',
celebrate({
body: Joi.object({
panelTitle: Joi.string().max(100).allow('').allow(null),
}),
}),
async (req: Request, res: Response, next: NextFunction) => {
try {
const systemService = Container.get(SystemService);
const result = await systemService.updatePanelTitle(req.body);
res.send(result);
} catch (e) {
return next(e);
}
},
);
route.put( route.put(
'/config/global-ssh-key', '/config/global-ssh-key',
celebrate({ celebrate({
+1
View File
@@ -32,6 +32,7 @@ export enum AuthDataType {
export interface SystemConfigInfo { export interface SystemConfigInfo {
lang?: string; lang?: string;
panelTitle?: string;
logRemoveFrequency?: number; logRemoveFrequency?: number;
cronConcurrency?: number; cronConcurrency?: number;
dependenceProxy?: string; dependenceProxy?: string;
+13 -3
View File
@@ -548,24 +548,34 @@ export default class SystemService {
return { code: 200, data: { lang } }; return { code: 200, data: { lang } };
} }
public async updatePanelTitle(info: SystemModelInfo) {
const oDoc = await this.getSystemConfig();
const panelTitle = info.panelTitle?.trim() || '';
await this.updateAuthDb({
...oDoc,
info: { ...oDoc.info, panelTitle },
});
return { code: 200, data: { panelTitle } };
}
public async updateGlobalSshKey(info: SystemModelInfo) { public async updateGlobalSshKey(info: SystemModelInfo) {
const oDoc = await this.getSystemConfig(); const oDoc = await this.getSystemConfig();
const result = await this.updateAuthDb({ const result = await this.updateAuthDb({
...oDoc, ...oDoc,
info: { ...oDoc.info, ...info }, info: { ...oDoc.info, ...info },
}); });
// Apply the global SSH key // Apply the global SSH key
const SshKeyService = require('./sshKey').default; const SshKeyService = require('./sshKey').default;
const Container = require('typedi').Container; const Container = require('typedi').Container;
const sshKeyService = Container.get(SshKeyService); const sshKeyService = Container.get(SshKeyService);
if (info.globalSshKey) { if (info.globalSshKey) {
await sshKeyService.addGlobalSSHKey(info.globalSshKey, 'global'); await sshKeyService.addGlobalSSHKey(info.globalSshKey, 'global');
} else { } else {
await sshKeyService.removeGlobalSSHKey('global'); await sshKeyService.removeGlobalSSHKey('global');
} }
return { code: 200, data: result }; return { code: 200, data: result };
} }
+22 -7
View File
@@ -1,11 +1,26 @@
FROM python:3.11-alpine3.18 AS builder # Run Node package installation natively on the builder. Node/npm can spin at
# 100% CPU when Alpine s390x is emulated through QEMU.
FROM --platform=$BUILDPLATFORM node:18-alpine3.18 AS builder
ARG TARGETARCH
ENV NPM_CONFIG_PREFIX=/opt/node-global
ENV PATH=/opt/node-global/bin:${PATH}
COPY package.json .npmrc pnpm-lock.yaml /tmp/build/ COPY package.json .npmrc pnpm-lock.yaml /tmp/build/
RUN set -x \ RUN set -x \
&& apk update \ && apk add --no-cache git \
&& apk add nodejs npm git \ && npm i -g pnpm@8.3.1 pm2 ts-node typescript@5 \
&& npm i -g pnpm@8.3.1 pm2 ts-node \
&& cd /tmp/build \ && cd /tmp/build \
&& pnpm install --prod && case "${TARGETARCH}" in \
amd64) NODE_ARCH=x64 ;; \
386) NODE_ARCH=ia32 ;; \
ppc64le) NODE_ARCH=ppc64 ;; \
*) NODE_ARCH="${TARGETARCH}" ;; \
esac \
&& npm_config_target_platform=linux \
npm_config_target_arch="${NODE_ARCH}" \
npm_config_target_libc=musl \
pnpm install --prod
FROM python:3.11-alpine FROM python:3.11-alpine
@@ -26,8 +41,8 @@ VOLUME /ql/data
EXPOSE 5700 EXPOSE 5700
COPY --from=builder /usr/local/lib/node_modules/. /usr/local/lib/node_modules/ COPY --from=builder /opt/node-global/lib/node_modules/. /usr/local/lib/node_modules/
COPY --from=builder /usr/local/bin/. /usr/local/bin/ COPY --from=builder /opt/node-global/bin/. /usr/local/bin/
RUN set -x \ RUN set -x \
&& apk update -f \ && apk update -f \
+22 -7
View File
@@ -1,11 +1,26 @@
FROM python:3.10-alpine3.18 AS builder # Run Node package installation natively on the builder. Node/npm can spin at
# 100% CPU when Alpine s390x is emulated through QEMU.
FROM --platform=$BUILDPLATFORM node:18-alpine3.18 AS builder
ARG TARGETARCH
ENV NPM_CONFIG_PREFIX=/opt/node-global
ENV PATH=/opt/node-global/bin:${PATH}
COPY package.json .npmrc pnpm-lock.yaml /tmp/build/ COPY package.json .npmrc pnpm-lock.yaml /tmp/build/
RUN set -x \ RUN set -x \
&& apk update \ && apk add --no-cache git \
&& apk add nodejs npm git \ && npm i -g pnpm@8.3.1 pm2 ts-node typescript@5 \
&& npm i -g pnpm@8.3.1 pm2 ts-node \
&& cd /tmp/build \ && cd /tmp/build \
&& pnpm install --prod && case "${TARGETARCH}" in \
amd64) NODE_ARCH=x64 ;; \
386) NODE_ARCH=ia32 ;; \
ppc64le) NODE_ARCH=ppc64 ;; \
*) NODE_ARCH="${TARGETARCH}" ;; \
esac \
&& npm_config_target_platform=linux \
npm_config_target_arch="${NODE_ARCH}" \
npm_config_target_libc=musl \
pnpm install --prod
FROM python:3.10-alpine FROM python:3.10-alpine
@@ -26,8 +41,8 @@ VOLUME /ql/data
EXPOSE 5700 EXPOSE 5700
COPY --from=builder /usr/local/lib/node_modules/. /usr/local/lib/node_modules/ COPY --from=builder /opt/node-global/lib/node_modules/. /usr/local/lib/node_modules/
COPY --from=builder /usr/local/bin/. /usr/local/bin/ COPY --from=builder /opt/node-global/bin/. /usr/local/bin/
RUN set -x \ RUN set -x \
&& apk update -f \ && apk update -f \
+6 -4
View File
@@ -1,6 +1,8 @@
FROM node:22-slim AS nodebuilder # Node 20 Bookworm is the latest official Node image variant that covers the
# full Debian build matrix, including arm/v7, ppc64le, and s390x.
FROM node:20-bookworm-slim AS nodebuilder
FROM python:3.11-slim-bookworm AS builder FROM python:3.11.14-slim-bookworm AS builder
COPY package.json .npmrc pnpm-lock.yaml /tmp/build/ COPY package.json .npmrc pnpm-lock.yaml /tmp/build/
COPY --from=nodebuilder /usr/local/bin/node /usr/local/bin/ COPY --from=nodebuilder /usr/local/bin/node /usr/local/bin/
COPY --from=nodebuilder /usr/local/lib/node_modules/. /usr/local/lib/node_modules/ COPY --from=nodebuilder /usr/local/lib/node_modules/. /usr/local/lib/node_modules/
@@ -12,7 +14,7 @@ RUN set -x && \
cd /tmp/build && \ cd /tmp/build && \
pnpm install --prod pnpm install --prod
FROM python:3.11-slim-bookworm FROM python:3.11.14-slim-bookworm
ARG QL_MAINTAINER="whyour" ARG QL_MAINTAINER="whyour"
LABEL maintainer="${QL_MAINTAINER}" LABEL maintainer="${QL_MAINTAINER}"
@@ -67,7 +69,7 @@ RUN set -x && \
git config --global user.email "qinglong@users.noreply.github.com" && \ git config --global user.email "qinglong@users.noreply.github.com" && \
git config --global user.name "qinglong" && \ git config --global user.name "qinglong" && \
git config --global http.postBuffer 524288000 && \ git config --global http.postBuffer 524288000 && \
npm install -g pnpm@8.3.1 pm2 ts-node && \ npm install -g pnpm@8.3.1 pm2 ts-node typescript@5 && \
rm -rf /root/.cache && \ rm -rf /root/.cache && \
rm -rf /root/.npm && \ rm -rf /root/.npm && \
rm -rf /etc/apt/apt.conf.d/docker-clean && \ rm -rf /etc/apt/apt.conf.d/docker-clean && \
+4 -2
View File
@@ -1,4 +1,6 @@
FROM node:22-slim AS nodebuilder # Node 20 Bookworm is the latest official Node image variant that covers the
# full Debian build matrix, including arm/v7, ppc64le, and s390x.
FROM node:20-bookworm-slim AS nodebuilder
FROM python:3.10-slim-bookworm AS builder FROM python:3.10-slim-bookworm AS builder
COPY package.json .npmrc pnpm-lock.yaml /tmp/build/ COPY package.json .npmrc pnpm-lock.yaml /tmp/build/
@@ -66,7 +68,7 @@ RUN set -x && \
git config --global user.email "qinglong@users.noreply.github.com" && \ git config --global user.email "qinglong@users.noreply.github.com" && \
git config --global user.name "qinglong" && \ git config --global user.name "qinglong" && \
git config --global http.postBuffer 524288000 && \ git config --global http.postBuffer 524288000 && \
npm install -g pnpm@8.3.1 pm2 ts-node && \ npm install -g pnpm@8.3.1 pm2 ts-node typescript@5 && \
rm -rf /root/.cache && \ rm -rf /root/.cache && \
rm -rf /root/.npm && \ rm -rf /root/.npm && \
rm -rf /etc/apt/apt.conf.d/docker-clean && \ rm -rf /etc/apt/apt.conf.d/docker-clean && \
+4 -6
View File
@@ -1,7 +1,7 @@
{ {
"name": "@whyour/qinglong", "name": "@whyour/qinglong",
"packageManager": "pnpm@8.3.1", "packageManager": "pnpm@8.3.1",
"version": "2.20.2-3", "version": "2.21.0-16",
"description": "Timed task management platform supporting Python3, JavaScript, Shell, Typescript", "description": "Timed task management platform supporting Python3, JavaScript, Shell, Typescript",
"repository": { "repository": {
"type": "git", "type": "git",
@@ -21,9 +21,7 @@
"panel": "npm run build:back && node static/build/app.js", "panel": "npm run build:back && node static/build/app.js",
"gen:proto": "protoc --experimental_allow_proto3_optional --plugin=./node_modules/.bin/protoc-gen-ts_proto ./back/protos/*.proto --ts_proto_out=./ --ts_proto_opt=outputServices=grpc-js,env=node,esModuleInterop=true,snakeToCamel=false", "gen:proto": "protoc --experimental_allow_proto3_optional --plugin=./node_modules/.bin/protoc-gen-ts_proto ./back/protos/*.proto --ts_proto_out=./ --ts_proto_opt=outputServices=grpc-js,env=node,esModuleInterop=true,snakeToCamel=false",
"prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'", "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'",
"postinstall": "max setup 2>/dev/null || true", "postinstall": "max setup 2>/dev/null || true"
"test": "umi-test",
"test:coverage": "umi-test --coverage"
}, },
"gitHooks": { "gitHooks": {
"pre-commit": "lint-staged" "pre-commit": "lint-staged"
@@ -67,7 +65,7 @@
} }
}, },
"overrides": { "overrides": {
"sqlite3": "git+https://github.com/whyour/node-sqlite3.git#v1.0.3", "sqlite3": "npm:@whyour/sqlite3@1.1.0",
"@codemirror/state": "6.5.4", "@codemirror/state": "6.5.4",
"@codemirror/view": "6.39.16" "@codemirror/view": "6.39.16"
} }
@@ -111,7 +109,7 @@
"request-ip": "3.3.0", "request-ip": "3.3.0",
"sequelize": "^6.37.5", "sequelize": "^6.37.5",
"sockjs": "^0.3.24", "sockjs": "^0.3.24",
"sqlite3": "git+https://github.com/whyour/node-sqlite3.git#v1.0.3", "sqlite3": "npm:@whyour/sqlite3@1.1.0",
"toad-scheduler": "^3.0.1", "toad-scheduler": "^3.0.1",
"typedi": "^0.10.0", "typedi": "^0.10.0",
"undici": "^7.9.0", "undici": "^7.9.0",
+183 -398
View File
@@ -1,11 +1,7 @@
lockfileVersion: '6.0' lockfileVersion: '6.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
overrides: overrides:
sqlite3: git+https://github.com/whyour/node-sqlite3.git#v1.0.3 sqlite3: npm:@whyour/sqlite3@1.1.0
'@codemirror/state': 6.5.4 '@codemirror/state': 6.5.4
'@codemirror/view': 6.39.16 '@codemirror/view': 6.39.16
@@ -120,13 +116,13 @@ dependencies:
version: 3.3.0 version: 3.3.0
sequelize: sequelize:
specifier: ^6.37.5 specifier: ^6.37.5
version: 6.37.5(@whyour/sqlite3@1.0.3) version: 6.37.5(@whyour/sqlite3@1.1.0)
sockjs: sockjs:
specifier: ^0.3.24 specifier: ^0.3.24
version: 0.3.24 version: 0.3.24
sqlite3: sqlite3:
specifier: git+https://github.com/whyour/node-sqlite3.git#v1.0.3 specifier: npm:@whyour/sqlite3@1.1.0
version: github.com/whyour/node-sqlite3/3a00af0b5d7603b7f1b290032507320b18a6b741 version: /@whyour/sqlite3@1.1.0
toad-scheduler: toad-scheduler:
specifier: ^3.0.1 specifier: ^3.0.1
version: 3.0.1 version: 3.0.1
@@ -1630,8 +1626,8 @@ packages:
resolution: {integrity: sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==} resolution: {integrity: sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==}
peerDependencies: peerDependencies:
'@codemirror/language': ^6.0.0 '@codemirror/language': ^6.0.0
'@codemirror/state': 6.5.4 '@codemirror/state': ^6.0.0
'@codemirror/view': 6.39.16 '@codemirror/view': ^6.0.0
'@lezer/common': ^1.0.0 '@lezer/common': ^1.0.0
dependencies: dependencies:
'@codemirror/language': 6.10.6 '@codemirror/language': 6.10.6
@@ -2969,12 +2965,6 @@ packages:
deprecated: the package is rather renamed to @formatjs/ecma-abstract with some changes in functionality (primarily selectUnit is removed and we don't plan to make any further changes to this package deprecated: the package is rather renamed to @formatjs/ecma-abstract with some changes in functionality (primarily selectUnit is removed and we don't plan to make any further changes to this package
dev: true dev: true
/@gar/promisify@1.1.3:
resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
requiresBuild: true
dev: false
optional: true
/@grpc/grpc-js@1.14.0: /@grpc/grpc-js@1.14.0:
resolution: {integrity: sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==} resolution: {integrity: sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==}
engines: {node: '>=12.10.0'} engines: {node: '>=12.10.0'}
@@ -3055,6 +3045,15 @@ packages:
wrap-ansi-cjs: /wrap-ansi@7.0.0 wrap-ansi-cjs: /wrap-ansi@7.0.0
dev: true dev: true
/@isaacs/fs-minipass@4.0.1:
resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
engines: {node: '>=18.0.0'}
requiresBuild: true
dependencies:
minipass: 7.1.3
dev: false
optional: true
/@istanbuljs/load-nyc-config@1.1.0: /@istanbuljs/load-nyc-config@1.1.0:
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
engines: {node: '>=8'} engines: {node: '>=8'}
@@ -3191,9 +3190,8 @@ packages:
resolution: {integrity: sha512-Ngs9jhElXN7efS9WvvCC/p6rXMbihna8eNLVBc421Zf+VcFd+pR4DOcS6yA9V22EKtAy4DEj7LtvEEIm0bb80A==} resolution: {integrity: sha512-Ngs9jhElXN7efS9WvvCC/p6rXMbihna8eNLVBc421Zf+VcFd+pR4DOcS6yA9V22EKtAy4DEj7LtvEEIm0bb80A==}
engines: {node: '>= 18'} engines: {node: '>= 18'}
dependencies: dependencies:
sqlite3: github.com/whyour/node-sqlite3/3a00af0b5d7603b7f1b290032507320b18a6b741 sqlite3: /@whyour/sqlite3@1.1.0
transitivePeerDependencies: transitivePeerDependencies:
- bluebird
- encoding - encoding
- supports-color - supports-color
dev: false dev: false
@@ -3700,26 +3698,6 @@ packages:
fastq: 1.17.1 fastq: 1.17.1
dev: true dev: true
/@npmcli/fs@1.1.1:
resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==}
requiresBuild: true
dependencies:
'@gar/promisify': 1.1.3
semver: 7.7.4
dev: false
optional: true
/@npmcli/move-file@1.1.2:
resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==}
engines: {node: '>=10'}
deprecated: This functionality has been moved to @npmcli/fs
requiresBuild: true
dependencies:
mkdirp: 1.0.4
rimraf: 3.0.2
dev: false
optional: true
/@otplib/core@12.0.1: /@otplib/core@12.0.1:
resolution: {integrity: sha512-4sGntwbA/AC+SbPhbsziRiD+jNDdIzsZ3JUyfZwjtKyc/wufl1pnSIaG4Uqx8ymPagujub0o92kgBnB89cuAMA==} resolution: {integrity: sha512-4sGntwbA/AC+SbPhbsziRiD+jNDdIzsZ3JUyfZwjtKyc/wufl1pnSIaG4Uqx8ymPagujub0o92kgBnB89cuAMA==}
dev: false dev: false
@@ -3887,8 +3865,8 @@ packages:
peerDependencies: peerDependencies:
'@codemirror/autocomplete': ^6.0.0 '@codemirror/autocomplete': ^6.0.0
'@codemirror/language': ^6.0.0 '@codemirror/language': ^6.0.0
'@codemirror/state': 6.5.4 '@codemirror/state': ^6.0.0
'@codemirror/view': 6.39.16 '@codemirror/view': ^6.0.0
'@lezer/common': ^1.0.0 '@lezer/common': ^1.0.0
'@lezer/highlight': ^1.0.0 '@lezer/highlight': ^1.0.0
'@lezer/lr': ^1.0.0 '@lezer/lr': ^1.0.0
@@ -3907,8 +3885,8 @@ packages:
peerDependencies: peerDependencies:
'@codemirror/autocomplete': ^6.0.0 '@codemirror/autocomplete': ^6.0.0
'@codemirror/language': ^6.0.0 '@codemirror/language': ^6.0.0
'@codemirror/state': 6.5.4 '@codemirror/state': ^6.0.0
'@codemirror/view': 6.39.16 '@codemirror/view': ^6.0.0
'@lezer/common': ^1.0.0 '@lezer/common': ^1.0.0
'@lezer/highlight': ^1.0.0 '@lezer/highlight': ^1.0.0
'@lezer/lr': ^1.0.0 '@lezer/lr': ^1.0.0
@@ -3939,8 +3917,8 @@ packages:
'@codemirror/lang-html': ^6.2.0 '@codemirror/lang-html': ^6.2.0
'@codemirror/lang-javascript': ^6.1.1 '@codemirror/lang-javascript': ^6.1.1
'@codemirror/language': ^6.0.0 '@codemirror/language': ^6.0.0
'@codemirror/state': 6.5.4 '@codemirror/state': ^6.0.0
'@codemirror/view': 6.39.16 '@codemirror/view': ^6.0.0
'@lezer/common': ^1.0.0 '@lezer/common': ^1.0.0
'@lezer/highlight': ^1.0.0 '@lezer/highlight': ^1.0.0
'@lezer/javascript': ^1.2.0 '@lezer/javascript': ^1.2.0
@@ -4215,13 +4193,6 @@ packages:
use-sync-external-store: 1.2.2(react@18.3.1) use-sync-external-store: 1.2.2(react@18.3.1)
dev: true dev: true
/@tootallnate/once@1.1.2:
resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
engines: {node: '>= 6'}
requiresBuild: true
dev: false
optional: true
/@trysound/sax@0.2.0: /@trysound/sax@0.2.0:
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
@@ -4850,8 +4821,8 @@ packages:
'@codemirror/language': '>=6.0.0' '@codemirror/language': '>=6.0.0'
'@codemirror/lint': '>=6.0.0' '@codemirror/lint': '>=6.0.0'
'@codemirror/search': '>=6.0.0' '@codemirror/search': '>=6.0.0'
'@codemirror/state': 6.5.4 '@codemirror/state': '>=6.0.0'
'@codemirror/view': 6.39.16 '@codemirror/view': '>=6.0.0'
dependencies: dependencies:
'@codemirror/autocomplete': 6.20.1 '@codemirror/autocomplete': 6.20.1
'@codemirror/commands': 6.7.1 '@codemirror/commands': 6.7.1
@@ -4910,9 +4881,9 @@ packages:
resolution: {integrity: sha512-caYKGV6TfGLRV1HHD3p0G3FiVzKL1go7wes5XT2nWjB0+dTdyzyb81MKRSacptgZcotujfNO6QXn65uhETRAMw==} resolution: {integrity: sha512-caYKGV6TfGLRV1HHD3p0G3FiVzKL1go7wes5XT2nWjB0+dTdyzyb81MKRSacptgZcotujfNO6QXn65uhETRAMw==}
peerDependencies: peerDependencies:
'@babel/runtime': '>=7.11.0' '@babel/runtime': '>=7.11.0'
'@codemirror/state': 6.5.4 '@codemirror/state': '>=6.0.0'
'@codemirror/theme-one-dark': '>=6.0.0' '@codemirror/theme-one-dark': '>=6.0.0'
'@codemirror/view': 6.39.16 '@codemirror/view': '>=6.0.0'
codemirror: '>=6.0.0' codemirror: '>=6.0.0'
react: '>=16.8.0 || 18' react: '>=16.8.0 || 18'
react-dom: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18'
@@ -5643,11 +5614,35 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@whyour/sqlite3@1.1.0:
resolution: {integrity: sha512-5g9xsjkv9sUepCvBBKmev6JSKSKjp0ebpW25uSsuV5kurIYrd7AnkbffNMNIswxwsQJSLPewVEX5ROsQfETfnA==}
requiresBuild: true
peerDependenciesMeta:
node-gyp:
optional: true
dependencies:
'@mapbox/node-pre-gyp': 1.0.11
node-addon-api: 4.3.0
tar: 6.2.1
optionalDependencies:
node-gyp: 12.4.0
transitivePeerDependencies:
- encoding
- supports-color
dev: false
/abbrev@1.1.1: /abbrev@1.1.1:
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
requiresBuild: true requiresBuild: true
dev: false dev: false
/abbrev@4.0.0:
resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==}
engines: {node: ^20.17.0 || >=22.9.0}
requiresBuild: true
dev: false
optional: true
/accepts@1.3.8: /accepts@1.3.8:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
@@ -5698,25 +5693,6 @@ packages:
humanize-ms: 1.2.1 humanize-ms: 1.2.1
dev: true dev: true
/agentkeepalive@4.6.0:
resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
engines: {node: '>= 8.0.0'}
requiresBuild: true
dependencies:
humanize-ms: 1.2.1
dev: false
optional: true
/aggregate-error@3.1.0:
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
engines: {node: '>=8'}
requiresBuild: true
dependencies:
clean-stack: 2.2.0
indent-string: 4.0.0
dev: false
optional: true
/ahooks@3.8.1(react@18.3.1): /ahooks@3.8.1(react@18.3.1):
resolution: {integrity: sha512-JoP9+/RWO7MnI/uSKdvQ8WB10Y3oo1PjLv+4Sv4Vpm19Z86VUMdXh+RhWvMGxZZs06sq2p0xVtFk8Oh5ZObsoA==} resolution: {integrity: sha512-JoP9+/RWO7MnI/uSKdvQ8WB10Y3oo1PjLv+4Sv4Vpm19Z86VUMdXh+RhWvMGxZZs06sq2p0xVtFk8Oh5ZObsoA==}
engines: {node: '>=8.0.0'} engines: {node: '>=8.0.0'}
@@ -5966,17 +5942,6 @@ packages:
readable-stream: 3.6.2 readable-stream: 3.6.2
dev: false dev: false
/are-we-there-yet@3.0.1:
resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
deprecated: This package is no longer supported.
requiresBuild: true
dependencies:
delegates: 1.0.0
readable-stream: 3.6.2
dev: false
optional: true
/arg@4.1.3: /arg@4.1.3:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
dev: true dev: true
@@ -6554,34 +6519,6 @@ packages:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
/cacache@15.3.0:
resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==}
engines: {node: '>= 10'}
requiresBuild: true
dependencies:
'@npmcli/fs': 1.1.1
'@npmcli/move-file': 1.1.2
chownr: 2.0.0
fs-minipass: 2.1.0
glob: 7.2.3
infer-owner: 1.0.4
lru-cache: 6.0.0
minipass: 3.3.6
minipass-collect: 1.0.2
minipass-flush: 1.0.5
minipass-pipeline: 1.2.4
mkdirp: 1.0.4
p-map: 4.0.0
promise-inflight: 1.0.1
rimraf: 3.0.2
ssri: 8.0.1
tar: 6.2.1
unique-filename: 1.1.1
transitivePeerDependencies:
- bluebird
dev: false
optional: true
/call-bind@1.0.7: /call-bind@1.0.7:
resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@@ -6699,6 +6636,13 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: false dev: false
/chownr@3.0.0:
resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
engines: {node: '>=18'}
requiresBuild: true
dev: false
optional: true
/ci-info@3.9.0: /ci-info@3.9.0:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'} engines: {node: '>=8'}
@@ -6723,13 +6667,6 @@ packages:
source-map: 0.6.1 source-map: 0.6.1
dev: true dev: true
/clean-stack@2.2.0:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
requiresBuild: true
dev: false
optional: true
/cli-cursor@4.0.0: /cli-cursor@4.0.0:
resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -7936,14 +7873,6 @@ packages:
resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
/encoding@0.1.13:
resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
requiresBuild: true
dependencies:
iconv-lite: 0.6.3
dev: false
optional: true
/end-of-stream@1.4.4: /end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
dependencies: dependencies:
@@ -7982,12 +7911,6 @@ packages:
dev: false dev: false
optional: true optional: true
/err-code@2.0.3:
resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
requiresBuild: true
dev: false
optional: true
/errno@0.1.8: /errno@0.1.8:
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
hasBin: true hasBin: true
@@ -8549,6 +8472,12 @@ packages:
clone-regexp: 2.2.0 clone-regexp: 2.2.0
dev: true dev: true
/exponential-backoff@3.1.3:
resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==}
requiresBuild: true
dev: false
optional: true
/express-http-proxy@2.1.1: /express-http-proxy@2.1.1:
resolution: {integrity: sha512-4aRQRqDQU7qNPV5av0/hLcyc0guB9UP71nCYrQEYml7YphTo8tmWf3nDZWdTJMMjFikyz9xKXaURor7Chygdwg==} resolution: {integrity: sha512-4aRQRqDQU7qNPV5av0/hLcyc0guB9UP71nCYrQEYml7YphTo8tmWf3nDZWdTJMMjFikyz9xKXaURor7Chygdwg==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
@@ -8706,6 +8635,20 @@ packages:
bser: 2.1.1 bser: 2.1.1
dev: true dev: true
/fdir@6.5.0(picomatch@4.0.5):
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
engines: {node: '>=12.0.0'}
requiresBuild: true
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
picomatch:
optional: true
dependencies:
picomatch: 4.0.5
dev: false
optional: true
/fecha@4.2.3: /fecha@4.2.3:
resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==}
dev: false dev: false
@@ -8974,23 +8917,6 @@ packages:
wide-align: 1.1.5 wide-align: 1.1.5
dev: false dev: false
/gauge@4.0.4:
resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
deprecated: This package is no longer supported.
requiresBuild: true
dependencies:
aproba: 2.1.0
color-support: 1.1.3
console-control-strings: 1.1.0
has-unicode: 2.0.1
signal-exit: 3.0.7
string-width: 4.2.3
strip-ansi: 6.0.1
wide-align: 1.1.5
dev: false
optional: true
/gensync@1.0.0-beta.2: /gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@@ -9366,12 +9292,6 @@ packages:
entities: 2.2.0 entities: 2.2.0
dev: true dev: true
/http-cache-semantics@4.2.0:
resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
requiresBuild: true
dev: false
optional: true
/http-deceiver@1.2.7: /http-deceiver@1.2.7:
resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==}
dev: true dev: true
@@ -9389,19 +9309,6 @@ packages:
/http-parser-js@0.5.8: /http-parser-js@0.5.8:
resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==}
/http-proxy-agent@4.0.1:
resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
engines: {node: '>= 6'}
requiresBuild: true
dependencies:
'@tootallnate/once': 1.1.2
agent-base: 6.0.2
debug: 4.4.3
transitivePeerDependencies:
- supports-color
dev: false
optional: true
/http-proxy-middleware@3.0.3: /http-proxy-middleware@3.0.3:
resolution: {integrity: sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==} resolution: {integrity: sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -9455,6 +9362,7 @@ packages:
resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
dependencies: dependencies:
ms: 2.1.3 ms: 2.1.3
dev: true
/iconv-lite@0.4.24: /iconv-lite@0.4.24:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
@@ -9533,16 +9441,12 @@ packages:
/imurmurhash@0.1.4: /imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'} engines: {node: '>=0.8.19'}
dev: true
/indent-string@4.0.0: /indent-string@4.0.0:
resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true
/infer-owner@1.0.4:
resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==}
requiresBuild: true
dev: false
optional: true
/inflection@1.13.4: /inflection@1.13.4:
resolution: {integrity: sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==} resolution: {integrity: sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==}
@@ -9618,13 +9522,6 @@ packages:
loose-envify: 1.4.0 loose-envify: 1.4.0
dev: true dev: true
/ip-address@10.1.0:
resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==}
engines: {node: '>= 12'}
requiresBuild: true
dev: false
optional: true
/ip2region@2.3.0(@types/node@17.0.45): /ip2region@2.3.0(@types/node@17.0.45):
resolution: {integrity: sha512-zV5Xsadzrx9Ej6heoyhbXMsfGWWQ3C6bAIYStrHhw9kzLpGpVNlnAyRBxxPgxA1GNqr1Ti7oUxcWsMWNN3jZBg==} resolution: {integrity: sha512-zV5Xsadzrx9Ej6heoyhbXMsfGWWQ3C6bAIYStrHhw9kzLpGpVNlnAyRBxxPgxA1GNqr1Ti7oUxcWsMWNN3jZBg==}
peerDependencies: peerDependencies:
@@ -9809,12 +9706,6 @@ packages:
is-docker: 3.0.0 is-docker: 3.0.0
dev: true dev: true
/is-lambda@1.0.1:
resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==}
requiresBuild: true
dev: false
optional: true
/is-map@2.0.3: /is-map@2.0.3:
resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@@ -9973,6 +9864,13 @@ packages:
/isexe@2.0.0: /isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
/isexe@4.0.0:
resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==}
engines: {node: '>=20'}
requiresBuild: true
dev: false
optional: true
/isobject@3.0.1: /isobject@3.0.1:
resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@@ -10579,6 +10477,7 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dependencies: dependencies:
yallist: 4.0.0 yallist: 4.0.0
dev: true
/luxon@3.5.0: /luxon@3.5.0:
resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==}
@@ -10611,33 +10510,6 @@ packages:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
dev: true dev: true
/make-fetch-happen@9.1.0:
resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==}
engines: {node: '>= 10'}
requiresBuild: true
dependencies:
agentkeepalive: 4.6.0
cacache: 15.3.0
http-cache-semantics: 4.2.0
http-proxy-agent: 4.0.1
https-proxy-agent: 5.0.1
is-lambda: 1.0.1
lru-cache: 6.0.0
minipass: 3.3.6
minipass-collect: 1.0.2
minipass-fetch: 1.4.1
minipass-flush: 1.0.5
minipass-pipeline: 1.2.4
negotiator: 0.6.4
promise-retry: 2.0.1
socks-proxy-agent: 6.2.1
ssri: 8.0.1
transitivePeerDependencies:
- bluebird
- supports-color
dev: false
optional: true
/makeerror@1.0.12: /makeerror@1.0.12:
resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
dependencies: dependencies:
@@ -10831,55 +10703,6 @@ packages:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true dev: true
/minipass-collect@1.0.2:
resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==}
engines: {node: '>= 8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
dev: false
optional: true
/minipass-fetch@1.4.1:
resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==}
engines: {node: '>=8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
minipass-sized: 1.0.3
minizlib: 2.1.2
optionalDependencies:
encoding: 0.1.13
dev: false
optional: true
/minipass-flush@1.0.5:
resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==}
engines: {node: '>= 8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
dev: false
optional: true
/minipass-pipeline@1.2.4:
resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==}
engines: {node: '>=8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
dev: false
optional: true
/minipass-sized@1.0.3:
resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==}
engines: {node: '>=8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
dev: false
optional: true
/minipass@3.3.6: /minipass@3.3.6:
resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
engines: {node: '>=8'} engines: {node: '>=8'}
@@ -10895,7 +10718,6 @@ packages:
/minipass@7.1.3: /minipass@7.1.3:
resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
dev: true
/minizlib@2.1.2: /minizlib@2.1.2:
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
@@ -10905,6 +10727,15 @@ packages:
yallist: 4.0.0 yallist: 4.0.0
dev: false dev: false
/minizlib@3.1.0:
resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==}
engines: {node: '>= 18'}
requiresBuild: true
dependencies:
minipass: 7.1.3
dev: false
optional: true
/mkdirp@0.5.6: /mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
hasBin: true hasBin: true
@@ -11041,25 +10872,22 @@ packages:
formdata-polyfill: 4.0.10 formdata-polyfill: 4.0.10
dev: true dev: true
/node-gyp@8.4.1: /node-gyp@12.4.0:
resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} resolution: {integrity: sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==}
engines: {node: '>= 10.12.0'} engines: {node: ^20.17.0 || >=22.9.0}
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
dependencies: dependencies:
env-paths: 2.2.1 env-paths: 2.2.1
glob: 7.2.3 exponential-backoff: 3.1.3
graceful-fs: 4.2.11 graceful-fs: 4.2.11
make-fetch-happen: 9.1.0 nopt: 9.0.0
nopt: 5.0.0 proc-log: 6.1.0
npmlog: 6.0.2
rimraf: 3.0.2
semver: 7.7.4 semver: 7.7.4
tar: 6.2.1 tar: 7.5.20
which: 2.0.2 tinyglobby: 0.2.17
transitivePeerDependencies: undici: 6.27.0
- bluebird which: 6.0.1
- supports-color
dev: false dev: false
optional: true optional: true
@@ -11171,6 +10999,16 @@ packages:
abbrev: 1.1.1 abbrev: 1.1.1
dev: false dev: false
/nopt@9.0.0:
resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==}
engines: {node: ^20.17.0 || >=22.9.0}
hasBin: true
requiresBuild: true
dependencies:
abbrev: 4.0.0
dev: false
optional: true
/normalize-package-data@2.5.0: /normalize-package-data@2.5.0:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
dependencies: dependencies:
@@ -11232,19 +11070,6 @@ packages:
set-blocking: 2.0.0 set-blocking: 2.0.0
dev: false dev: false
/npmlog@6.0.2:
resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
deprecated: This package is no longer supported.
requiresBuild: true
dependencies:
are-we-there-yet: 3.0.1
console-control-strings: 1.1.0
gauge: 4.0.4
set-blocking: 2.0.0
dev: false
optional: true
/nth-check@2.1.1: /nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
dependencies: dependencies:
@@ -11453,15 +11278,6 @@ packages:
p-limit: 3.1.0 p-limit: 3.1.0
dev: true dev: true
/p-map@4.0.0:
resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
engines: {node: '>=10'}
requiresBuild: true
dependencies:
aggregate-error: 3.1.0
dev: false
optional: true
/p-queue-cjs@7.3.4: /p-queue-cjs@7.3.4:
resolution: {integrity: sha512-vP0BvEAgmUEShxWBCETvxiUDnwSiCLfBRqmhdKlNvcXF/7x2yemtYLcxT1pfYELZLlyGL3grvGnq+KF5OwNZfA==} resolution: {integrity: sha512-vP0BvEAgmUEShxWBCETvxiUDnwSiCLfBRqmhdKlNvcXF/7x2yemtYLcxT1pfYELZLlyGL3grvGnq+KF5OwNZfA==}
engines: {node: '>=12'} engines: {node: '>=12'}
@@ -11638,6 +11454,13 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'} engines: {node: '>=8.6'}
/picomatch@4.0.5:
resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==}
engines: {node: '>=12'}
requiresBuild: true
dev: false
optional: true
/pidtree@0.6.0: /pidtree@0.6.0:
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
engines: {node: '>=0.10'} engines: {node: '>=0.10'}
@@ -12323,6 +12146,13 @@ packages:
react-is: 16.13.1 react-is: 16.13.1
dev: true dev: true
/proc-log@6.1.0:
resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==}
engines: {node: ^20.17.0 || >=22.9.0}
requiresBuild: true
dev: false
optional: true
/process-nextick-args@2.0.1: /process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
dev: true dev: true
@@ -12341,27 +12171,6 @@ packages:
engines: {node: '>= 0.6.0'} engines: {node: '>= 0.6.0'}
dev: true dev: true
/promise-inflight@1.0.1:
resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
requiresBuild: true
peerDependencies:
bluebird: '*'
peerDependenciesMeta:
bluebird:
optional: true
dev: false
optional: true
/promise-retry@2.0.1:
resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
engines: {node: '>=10'}
requiresBuild: true
dependencies:
err-code: 2.0.3
retry: 0.12.0
dev: false
optional: true
/prop-types@15.8.1: /prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
dependencies: dependencies:
@@ -14130,7 +13939,7 @@ packages:
engines: {node: '>= 10.0.0'} engines: {node: '>= 10.0.0'}
dev: false dev: false
/sequelize@6.37.5(@whyour/sqlite3@1.0.3): /sequelize@6.37.5(@whyour/sqlite3@1.1.0):
resolution: {integrity: sha512-10WA4poUb3XWnUROThqL2Apq9C2NhyV1xHPMZuybNMCucDsbbFuKg51jhmyvvAUyUqCiimwTZamc3AHhMoBr2Q==} resolution: {integrity: sha512-10WA4poUb3XWnUROThqL2Apq9C2NhyV1xHPMZuybNMCucDsbbFuKg51jhmyvvAUyUqCiimwTZamc3AHhMoBr2Q==}
engines: {node: '>=10.0.0'} engines: {node: '>=10.0.0'}
peerDependencies: peerDependencies:
@@ -14175,7 +13984,7 @@ packages:
retry-as-promised: 7.0.4 retry-as-promised: 7.0.4
semver: 7.6.3 semver: 7.6.3
sequelize-pool: 7.1.0 sequelize-pool: 7.1.0
sqlite3: github.com/whyour/node-sqlite3/3a00af0b5d7603b7f1b290032507320b18a6b741 sqlite3: /@whyour/sqlite3@1.1.0
toposort-class: 1.0.1 toposort-class: 1.0.1
uuid: 8.3.2 uuid: 8.3.2
validator: 13.12.0 validator: 13.12.0
@@ -14325,13 +14134,6 @@ packages:
is-fullwidth-code-point: 4.0.0 is-fullwidth-code-point: 4.0.0
dev: true dev: true
/smart-buffer@4.2.0:
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
requiresBuild: true
dev: false
optional: true
/sockjs-client@1.6.1: /sockjs-client@1.6.1:
resolution: {integrity: sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==} resolution: {integrity: sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==}
engines: {node: '>=12'} engines: {node: '>=12'}
@@ -14353,29 +14155,6 @@ packages:
websocket-driver: 0.7.4 websocket-driver: 0.7.4
dev: false dev: false
/socks-proxy-agent@6.2.1:
resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==}
engines: {node: '>= 10'}
requiresBuild: true
dependencies:
agent-base: 6.0.2
debug: 4.4.3
socks: 2.8.7
transitivePeerDependencies:
- supports-color
dev: false
optional: true
/socks@2.8.7:
resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==}
engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
requiresBuild: true
dependencies:
ip-address: 10.1.0
smart-buffer: 4.2.0
dev: false
optional: true
/sonic-boom@2.8.0: /sonic-boom@2.8.0:
resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==}
dependencies: dependencies:
@@ -14506,15 +14285,6 @@ packages:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
dev: true dev: true
/ssri@8.0.1:
resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==}
engines: {node: '>= 8'}
requiresBuild: true
dependencies:
minipass: 3.3.6
dev: false
optional: true
/stable@0.1.8: /stable@0.1.8:
resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
@@ -14965,6 +14735,19 @@ packages:
yallist: 4.0.0 yallist: 4.0.0
dev: false dev: false
/tar@7.5.20:
resolution: {integrity: sha512-9FcyK4PA6+WbzlTM9WhQm6vB5W7cP7dUiPsv1g7YDwEQnQ1CGpK3MGlKk/ITVWMk05kHZuBhmVhiv8LZoy/PFQ==}
engines: {node: '>=18'}
requiresBuild: true
dependencies:
'@isaacs/fs-minipass': 4.0.1
chownr: 3.0.0
minipass: 7.1.3
minizlib: 3.1.0
yallist: 5.0.0
dev: false
optional: true
/terser@5.36.0: /terser@5.36.0:
resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==}
engines: {node: '>=10'} engines: {node: '>=10'}
@@ -15042,6 +14825,16 @@ packages:
resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
dev: true dev: true
/tinyglobby@0.2.17:
resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
engines: {node: '>=12.0.0'}
requiresBuild: true
dependencies:
fdir: 6.5.0(picomatch@4.0.5)
picomatch: 4.0.5
dev: false
optional: true
/titleize@3.0.0: /titleize@3.0.0:
resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
@@ -15393,6 +15186,13 @@ packages:
resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
dev: true dev: true
/undici@6.27.0:
resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==}
engines: {node: '>=18.17'}
requiresBuild: true
dev: false
optional: true
/undici@7.9.0: /undici@7.9.0:
resolution: {integrity: sha512-e696y354tf5cFZPXsF26Yg+5M63+5H3oE6Vtkh2oqbvsE2Oe7s2nIbcQh5lmG7Lp/eS29vJtTpw9+p6PX0qNSg==} resolution: {integrity: sha512-e696y354tf5cFZPXsF26Yg+5M63+5H3oE6Vtkh2oqbvsE2Oe7s2nIbcQh5lmG7Lp/eS29vJtTpw9+p6PX0qNSg==}
engines: {node: '>=20.18.1'} engines: {node: '>=20.18.1'}
@@ -15409,22 +15209,6 @@ packages:
resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==}
dev: true dev: true
/unique-filename@1.1.1:
resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==}
requiresBuild: true
dependencies:
unique-slug: 2.0.2
dev: false
optional: true
/unique-slug@2.0.2:
resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==}
requiresBuild: true
dependencies:
imurmurhash: 0.1.4
dev: false
optional: true
/universalify@2.0.1: /universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'} engines: {node: '>= 10.0.0'}
@@ -15861,6 +15645,16 @@ packages:
dependencies: dependencies:
isexe: 2.0.0 isexe: 2.0.0
/which@6.0.1:
resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==}
engines: {node: ^20.17.0 || >=22.9.0}
hasBin: true
requiresBuild: true
dependencies:
isexe: 4.0.0
dev: false
optional: true
/wide-align@1.1.5: /wide-align@1.1.5:
resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
dependencies: dependencies:
@@ -15968,6 +15762,13 @@ packages:
/yallist@4.0.0: /yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
/yallist@5.0.0:
resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
engines: {node: '>=18'}
requiresBuild: true
dev: false
optional: true
/yaml@1.10.2: /yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
@@ -16022,22 +15823,6 @@ packages:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
dev: true dev: true
github.com/whyour/node-sqlite3/3a00af0b5d7603b7f1b290032507320b18a6b741: settings:
resolution: {tarball: https://codeload.github.com/whyour/node-sqlite3/tar.gz/3a00af0b5d7603b7f1b290032507320b18a6b741} autoInstallPeers: true
name: '@whyour/sqlite3' excludeLinksFromLockfile: false
version: 1.0.3
requiresBuild: true
peerDependenciesMeta:
node-gyp:
optional: true
dependencies:
'@mapbox/node-pre-gyp': 1.0.11
node-addon-api: 4.3.0
tar: 6.2.1
optionalDependencies:
node-gyp: 8.4.1
transitivePeerDependencies:
- bluebird
- encoding
- supports-color
dev: false
+1 -1
View File
@@ -59,7 +59,7 @@ check_pm2() {
main() { main() {
t '=====> 开始检测' t '=====> 开始检测'
npm i -g pnpm@8.3.1 pm2 ts-node npm i -g pnpm@8.3.1 pm2 ts-node typescript@5
reset_env reset_env
copy_dep copy_dep
+5 -1
View File
@@ -98,7 +98,11 @@ function run() {
const newEnvObject = JSON.parse(envStr); const newEnvObject = JSON.parse(envStr);
if (typeof newEnvObject === 'object' && newEnvObject !== null) { if (typeof newEnvObject === 'object' && newEnvObject !== null) {
for (const key in newEnvObject) { for (const key in newEnvObject) {
if (Object.prototype.hasOwnProperty.call(newEnvObject, key)) { if (
Object.prototype.hasOwnProperty.call(newEnvObject, key) &&
key !== 'NODE_PATH' &&
key !== 'QL_NODE_GLOBAL_PATH'
) {
process.env[key] = newEnvObject[key]; process.env[key] = newEnvObject[key];
} }
} }
+1 -1
View File
@@ -74,7 +74,7 @@ if [[ $command != "reload" ]]; then
;; ;;
esac esac
npm install -g pnpm@8.3.1 pm2 ts-node npm install -g pnpm@8.3.1 pm2 ts-node typescript@5
fi fi
export PYTHON_SHORT_VERSION=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")') export PYTHON_SHORT_VERSION=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
+43 -12
View File
@@ -22,9 +22,11 @@ import WebSocketManager from '../utils/websocket';
export interface SharedContext { export interface SharedContext {
headerStyle: React.CSSProperties; headerStyle: React.CSSProperties;
isPhone: boolean; isPhone: boolean;
siteTitle: string;
theme: 'vs' | 'vs-dark'; theme: 'vs' | 'vs-dark';
user: any; user: any;
reloadUser: (needLoading?: boolean) => void; reloadUser: (needLoading?: boolean) => void;
reloadSystemConfig: () => void;
reloadTheme: () => void; reloadTheme: () => void;
systemInfo: TSystemInfo; systemInfo: TSystemInfo;
} }
@@ -45,6 +47,9 @@ export default function () {
const [user, setUser] = useState<any>({}); const [user, setUser] = useState<any>({});
const [loading, setLoading] = useState<boolean>(true); const [loading, setLoading] = useState<boolean>(true);
const [systemInfo, setSystemInfo] = useState<TSystemInfo>(); const [systemInfo, setSystemInfo] = useState<TSystemInfo>();
const [siteTitle, setSiteTitle] = useState(
() => localStorage.getItem('qinglong_panel_title')?.trim() || intl.get('青龙'),
);
const [collapsed, setCollapsed] = useState(false); const [collapsed, setCollapsed] = useState(false);
const [initLoading, setInitLoading] = useState<boolean>(true); const [initLoading, setInitLoading] = useState<boolean>(true);
const { const {
@@ -124,20 +129,18 @@ export default function () {
getUser(needLoading); getUser(needLoading);
}; };
useEffect(() => { const reloadSystemConfig = () => {
if (systemInfo && systemInfo.isInitialized && !user) {
getUser();
}
}, [location.pathname]);
useEffect(() => {
getHealthStatus();
}, []);
useEffect(() => {
request request
.get(`${config.apiPrefix}system/config`) .get(`${config.apiPrefix}system/config`)
.then(({ data }: any) => { .then(({ data }: any) => {
const panelTitle = data?.info?.panelTitle?.trim();
if (panelTitle) {
setSiteTitle(panelTitle);
localStorage.setItem('qinglong_panel_title', panelTitle);
} else {
setSiteTitle(intl.get('青龙'));
localStorage.removeItem('qinglong_panel_title');
}
if (!data?.info?.lang) { if (!data?.info?.lang) {
const browserLang = const browserLang =
localStorage.getItem('lang') || localStorage.getItem('lang') ||
@@ -149,8 +152,31 @@ export default function () {
} }
}) })
.catch(() => {}); .catch(() => {});
};
useEffect(() => {
if (systemInfo && systemInfo.isInitialized && !user) {
getUser();
}
}, [location.pathname]);
useEffect(() => {
getHealthStatus();
}, []); }, []);
useEffect(() => {
reloadSystemConfig();
}, []);
useEffect(() => {
if (!['/login', '/initialization', '/error'].includes(location.pathname)) {
return;
}
const title =
(config.documentTitleMap as any)[location.pathname] || intl.get('未找到');
document.title = `${title} - ${siteTitle}`;
}, [location.pathname, siteTitle]);
useEffect(() => { useEffect(() => {
if (theme === 'vs-dark') { if (theme === 'vs-dark') {
document.body.setAttribute('data-dark', 'true'); document.body.setAttribute('data-dark', 'true');
@@ -229,7 +255,10 @@ export default function () {
theme, theme,
user, user,
reloadUser, reloadUser,
reloadSystemConfig,
reloadTheme, reloadTheme,
siteTitle,
systemInfo,
}} }}
/> />
); );
@@ -310,7 +339,7 @@ export default function () {
const title = const title =
(config.documentTitleMap as any)[location.pathname] || (config.documentTitleMap as any)[location.pathname] ||
intl.get('未找到'); intl.get('未找到');
return `${title} - ${intl.get('青龙')}`; return `${title} - ${siteTitle}`;
}} }}
onCollapse={setCollapsed} onCollapse={setCollapsed}
collapsed={collapsed} collapsed={collapsed}
@@ -372,7 +401,9 @@ export default function () {
theme, theme,
user, user,
reloadUser, reloadUser,
reloadSystemConfig,
reloadTheme, reloadTheme,
siteTitle,
systemInfo, systemInfo,
}} }}
/> />
+3
View File
@@ -581,7 +581,10 @@
"链接": "Link", "链接": "Link",
"错误": "Error", "错误": "Error",
"错误日志": "Error Log", "错误日志": "Error Log",
"留空使用默认值“青龙”": "Leave blank to use the default title \"Qinglong\"",
"队列中": "In Queue", "队列中": "In Queue",
"自定义面板的站点标题,留空使用默认值“青龙”": "Customize the panel site title. Leave blank to use the default title \"Qinglong\"",
"面板标题": "Panel Title",
"青龙": "Qinglong", "青龙": "Qinglong",
"项": "items", "项": "items",
"顺序": "Order", "顺序": "Order",
+3
View File
@@ -581,7 +581,10 @@
"链接": "链接", "链接": "链接",
"错误": "错误", "错误": "错误",
"错误日志": "错误日志", "错误日志": "错误日志",
"留空使用默认值“青龙”": "留空使用默认值“青龙”",
"队列中": "队列中", "队列中": "队列中",
"自定义面板的站点标题,留空使用默认值“青龙”": "自定义面板的站点标题,留空使用默认值“青龙”",
"面板标题": "面板标题",
"青龙": "青龙", "青龙": "青龙",
"项": "项", "项": "项",
"顺序": "顺序", "顺序": "顺序",
+2
View File
@@ -130,6 +130,8 @@ const CronDetailModal = ({
{(item) => ( {(item) => (
<List.Item <List.Item
className="log-item" className="log-item"
onClick={() => item.log_path && viewInstanceLog(item)}
style={{ cursor: item.log_path ? 'pointer' : 'default' }}
actions={[ actions={[
item.log_path && ( item.log_path && (
<Tooltip title={intl.get('查看日志')} key="log"> <Tooltip title={intl.get('查看日志')} key="log">
+6 -1
View File
@@ -46,6 +46,7 @@ const Setting = () => {
user, user,
theme, theme,
reloadUser, reloadUser,
reloadSystemConfig,
reloadTheme, reloadTheme,
systemInfo, systemInfo,
} = useOutletContext<SharedContext>(); } = useOutletContext<SharedContext>();
@@ -353,7 +354,11 @@ const Setting = () => {
key: 'other', key: 'other',
label: intl.get('其他设置'), label: intl.get('其他设置'),
children: ( children: (
<Other reloadTheme={reloadTheme} systemInfo={systemInfo} /> <Other
reloadSystemConfig={reloadSystemConfig}
reloadTheme={reloadTheme}
systemInfo={systemInfo}
/>
), ),
}, },
{ {
+39 -1
View File
@@ -27,6 +27,7 @@ import { disableBody } from '@/utils';
import { TIMEZONES } from '@/utils/const'; import { TIMEZONES } from '@/utils/const';
const dataMap = { const dataMap = {
'panel-title': 'panelTitle',
'log-remove-frequency': 'logRemoveFrequency', 'log-remove-frequency': 'logRemoveFrequency',
'cron-concurrency': 'cronConcurrency', 'cron-concurrency': 'cronConcurrency',
timezone: 'timezone', timezone: 'timezone',
@@ -48,10 +49,15 @@ const exportModules = [
const Other = ({ const Other = ({
systemInfo, systemInfo,
reloadSystemConfig,
reloadTheme, reloadTheme,
}: Pick<SharedContext, 'reloadTheme' | 'systemInfo'>) => { }: Pick<
SharedContext,
'reloadSystemConfig' | 'reloadTheme' | 'systemInfo'
>) => {
const defaultTheme = localStorage.getItem('qinglong_dark_theme') || 'auto'; const defaultTheme = localStorage.getItem('qinglong_dark_theme') || 'auto';
const [systemConfig, setSystemConfig] = useState<{ const [systemConfig, setSystemConfig] = useState<{
panelTitle?: string | null;
logRemoveFrequency?: number | null; logRemoveFrequency?: number | null;
cronConcurrency?: number | null; cronConcurrency?: number | null;
timezone?: string | null; timezone?: string | null;
@@ -120,6 +126,9 @@ const Other = ({
.then(({ code, data }) => { .then(({ code, data }) => {
if (code === 200) { if (code === 200) {
message.success(intl.get('更新成功')); message.success(intl.get('更新成功'));
if (path === 'panel-title') {
reloadSystemConfig();
}
} }
}) })
.catch((error: any) => { .catch((error: any) => {
@@ -236,6 +245,35 @@ const Other = ({
</Radio.Button> </Radio.Button>
</Radio.Group> </Radio.Group>
</Form.Item> </Form.Item>
<Form.Item
label={intl.get('面板标题')}
name="panelTitle"
tooltip={intl.get('自定义面板的站点标题,留空使用默认值“青龙”')}
>
<Input.Group compact>
<Input
style={{ width: 180 }}
maxLength={100}
value={systemConfig?.panelTitle || ''}
placeholder={intl.get('留空使用默认值“青龙”')}
onChange={(e) => {
setSystemConfig({
...systemConfig,
panelTitle: e.target.value,
});
}}
/>
<Button
type="primary"
onClick={() => {
updateSystemConfig('panel-title');
}}
style={{ width: 84 }}
>
{intl.get('确认')}
</Button>
</Input.Group>
</Form.Item>
<Form.Item <Form.Item
label={intl.get('日志删除频率')} label={intl.get('日志删除频率')}
name="frequency" name="frequency"
+5
View File
@@ -48,6 +48,10 @@ export default {
name: intl.get('系统信息'), name: intl.get('系统信息'),
value: 'system', value: 'system',
}, },
{
name: intl.get('仪表盘'),
value: 'dashboard',
},
], ],
scopesMap: { scopesMap: {
crons: intl.get('定时任务'), crons: intl.get('定时任务'),
@@ -58,6 +62,7 @@ export default {
logs: intl.get('日志管理'), logs: intl.get('日志管理'),
dependencies: intl.get('依赖管理'), dependencies: intl.get('依赖管理'),
system: intl.get('系统信息'), system: intl.get('系统信息'),
dashboard: intl.get('仪表盘'),
}, },
notificationModes: [ notificationModes: [
{ value: 'gotify', label: 'Gotify' }, { value: 'gotify', label: 'Gotify' },
+6
View File
@@ -10,6 +10,12 @@ interface FileTypeConfig {
// 文件类型分类配置(只包含特殊文件类型) // 文件类型分类配置(只包含特殊文件类型)
const fileTypeConfigs: Record<string, FileTypeConfig> = { const fileTypeConfigs: Record<string, FileTypeConfig> = {
config: {
// Keep common text configuration files previewable even when a Monaco
// build has not registered its optional INI language contribution yet.
extensions: ['.ini'],
},
// 前端特殊文件 // 前端特殊文件
frontend: { frontend: {
extensions: [ extensions: [
+33 -4
View File
@@ -1,6 +1,35 @@
version: 2.20.2 version: 2.21.0
changeLogLink: https://t.me/jiao_long/434 changeLogLink: https://t.me/jiao_long/436
publishTime: 2026-03-01 1800 publishTime: 2026-06-18 2300
changeLog: | changeLog: |
1. 修复 path 安全漏洞(重要) 1. shell 增加国际化支持
2. 接口提示信息国际化,更新国际化文案
3. 统一 Alpine/Debian 分支,QL_SCHEDULER 参数化调度
4. grpc 服务增加证书校验
5. 定时任务增加 work_dir 设置
6. 增加任务统计功能
7. 新增 OpeniLink 通知渠道
8. 支持自定义接收邮箱地址
9. 增加运行实例功能
10. 增加 sudo 命令判断
11. 延迟增加运行时间提示
12. 开机运行任务支持同时开始运行
13. 增加 localhost 检测
14. 增加环境变量标签功能
15. 修复路径穿越安全漏洞
16. 修复配置文件路径可能越权
17. 修复 work_dir 验证和目录判断
18. 修复多个 API 问题(getCronById、定时任务参数、任务退出码等)
19. 修复 ESM 依赖查询路径
20. 修复 CodeMirror 页面切换多实例崩溃
21. 修复 IPv6 网络连接问题
22. 修复内部服务 IP 地址
23. 修复 gRPC extra_schedules 为空时序列化报错
24. 修复 HITOKOTO 参数布尔/字符串类型处理
25. 修复 Server酱 返回错误时 undefined 异常
26. 修复环境变量 position 数据类型异常
27. 修复 Docker 健康检查 QlPort 环境变量读取
28. 修复任务统计日志
29. 升级 multer 解决 CVE 漏洞
30. 升级 nodemailer