chore: 更新依赖版本,提升 @kevisual/query 和 @kevisual/context 的版本
feat: 在应用管理路由中添加元数据,增强版本检测和发布功能
This commit is contained in:
10
bun.lock
10
bun.lock
@@ -8,7 +8,7 @@
|
||||
"@kevisual/ai": "^0.0.24",
|
||||
"@kevisual/auth": "^2.0.3",
|
||||
"@kevisual/js-filter": "^0.0.5",
|
||||
"@kevisual/query": "^0.0.48",
|
||||
"@kevisual/query": "^0.0.49",
|
||||
"@types/busboy": "^1.5.4",
|
||||
"@types/send": "^1.2.1",
|
||||
"@types/ws": "^8.18.1",
|
||||
@@ -25,7 +25,7 @@
|
||||
"devDependencies": {
|
||||
"@aws-sdk/client-s3": "^3.992.0",
|
||||
"@kevisual/api": "^0.0.52",
|
||||
"@kevisual/context": "^0.0.6",
|
||||
"@kevisual/context": "^0.0.8",
|
||||
"@kevisual/local-app-manager": "0.1.32",
|
||||
"@kevisual/logger": "^0.0.4",
|
||||
"@kevisual/oss": "0.0.19",
|
||||
@@ -228,7 +228,7 @@
|
||||
|
||||
"@kevisual/auth": ["@kevisual/auth@2.0.3", "", {}, "sha512-4xpijaIhlCTr/DlJaV/gmkCQeg45EO1yxWpRvUX+1jCdVbuxSR0wZrF0SD9oybnjmKWMKDNPLsXyduFjMGcItA=="],
|
||||
|
||||
"@kevisual/context": ["@kevisual/context@0.0.6", "", {}, "sha512-w7HBOuO3JH37n6xT6W3FD7ykqHTwtyxOQzTzfEcKDCbsvGB1wVreSxFm2bvoFnnFLuxT/5QMpKlnPrwvmcTGnw=="],
|
||||
"@kevisual/context": ["@kevisual/context@0.0.8", "", {}, "sha512-DTJpyHI34NE76B7g6f+QlIqiCCyqI2qkBMQE736dzeRDGxOjnbe2iQY9W+Rt2PE6kmymM3qyOmSfNovyWyWrkA=="],
|
||||
|
||||
"@kevisual/js-filter": ["@kevisual/js-filter@0.0.5", "", {}, "sha512-+S+Sf3K/aP6XtZI2s7TgKOr35UuvUvtpJ9YDW30a+mY0/N8gRuzyKhieBzQN7Ykayzz70uoMavBXut2rUlLgzw=="],
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
|
||||
"@kevisual/permission": ["@kevisual/permission@0.0.4", "", {}, "sha512-zwBYPnT/z21W4q2wkklJrxvoYBYWG/+a3iXFDKqXQAnDOcxm/SU1f1N6FQb9KxGKl36/fclVlhxlxqszvKCenQ=="],
|
||||
|
||||
"@kevisual/query": ["@kevisual/query@0.0.48", "", {}, "sha512-2zaWaqVNZO4DOZz2hhTjF41PS79he0kNlyctkAXchVUQ2IaiAl2kF/CSRvVor1RpeTU8Nr3xZyEZ+XOodazMVA=="],
|
||||
"@kevisual/query": ["@kevisual/query@0.0.49", "", {}, "sha512-GrWW+QlBO5lkiqvb7PjOstNtpTQVSR74EHHWjm7YoL9UdT1wuPQXGUApZHmMBSh3NIWCf0AL2G1hPWZMC7YeOQ=="],
|
||||
|
||||
"@kevisual/router": ["@kevisual/router@0.0.80", "", { "dependencies": { "es-toolkit": "^1.44.0" } }, "sha512-rVwi6Yf411bnNm2x94lMm+s4Csw0Yb7u/aj+VJJ59iouAYhjLuL7Rs1EcARhnQf47cegBJi6zozfGHgLsLHN2w=="],
|
||||
|
||||
@@ -1010,6 +1010,8 @@
|
||||
|
||||
"@kevisual/ai/@kevisual/query": ["@kevisual/query@0.0.38", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-bfvbSodsZyMfwY+1T2SvDeOCKsT/AaIxlVe0+B1R/fNhlg2MDq2CP0L9HKiFkEm+OXrvXcYDMKPUituVUM5J6Q=="],
|
||||
|
||||
"@kevisual/api/@kevisual/context": ["@kevisual/context@0.0.6", "", {}, "sha512-w7HBOuO3JH37n6xT6W3FD7ykqHTwtyxOQzTzfEcKDCbsvGB1wVreSxFm2bvoFnnFLuxT/5QMpKlnPrwvmcTGnw=="],
|
||||
|
||||
"@kevisual/wxmsg/@kevisual/context": ["@kevisual/context@0.0.4", "", {}, "sha512-HJeLeZQLU+7tCluSfOyvkgKLs0HjCZrdJlZgEgKRSa8XTwZfMAUt6J7qZTbrZAHBlPtX68EPu/PI8JMCeu3WAQ=="],
|
||||
|
||||
"@kevisual/wxmsg/@kevisual/query": ["@kevisual/query@0.0.39", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-3UEPBIvtdykNkrby3hvrgrHdgd17Uq+Pnr4zs+JBzATkU2eKaOqtTUJqdyIEwuySCwzGTxrnlUzWP4tziDQDLQ=="],
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
"@kevisual/ai": "^0.0.24",
|
||||
"@kevisual/auth": "^2.0.3",
|
||||
"@kevisual/js-filter": "^0.0.5",
|
||||
"@kevisual/query": "^0.0.48",
|
||||
"@kevisual/query": "^0.0.49",
|
||||
"@types/busboy": "^1.5.4",
|
||||
"@types/send": "^1.2.1",
|
||||
"@types/ws": "^8.18.1",
|
||||
@@ -66,7 +66,7 @@
|
||||
"devDependencies": {
|
||||
"@aws-sdk/client-s3": "^3.992.0",
|
||||
"@kevisual/api": "^0.0.52",
|
||||
"@kevisual/context": "^0.0.6",
|
||||
"@kevisual/context": "^0.0.8",
|
||||
"@kevisual/local-app-manager": "0.1.32",
|
||||
"@kevisual/logger": "^0.0.4",
|
||||
"@kevisual/oss": "0.0.19",
|
||||
|
||||
51
pnpm-lock.yaml
generated
51
pnpm-lock.yaml
generated
@@ -22,8 +22,8 @@ importers:
|
||||
specifier: ^0.0.5
|
||||
version: 0.0.5
|
||||
'@kevisual/query':
|
||||
specifier: ^0.0.46
|
||||
version: 0.0.46
|
||||
specifier: ^0.0.49
|
||||
version: 0.0.49
|
||||
'@types/busboy':
|
||||
specifier: ^1.5.4
|
||||
version: 1.5.4
|
||||
@@ -51,12 +51,6 @@ importers:
|
||||
eventemitter3:
|
||||
specifier: ^5.0.4
|
||||
version: 5.0.4
|
||||
pg:
|
||||
specifier: ^8.18.0
|
||||
version: 8.18.0
|
||||
pm2:
|
||||
specifier: ^6.0.14
|
||||
version: 6.0.14
|
||||
send:
|
||||
specifier: ^1.2.1
|
||||
version: 1.2.1
|
||||
@@ -71,11 +65,11 @@ importers:
|
||||
specifier: ^3.992.0
|
||||
version: 3.992.0
|
||||
'@kevisual/api':
|
||||
specifier: ^0.0.51
|
||||
version: 0.0.51(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
specifier: ^0.0.52
|
||||
version: 0.0.52(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
'@kevisual/context':
|
||||
specifier: ^0.0.6
|
||||
version: 0.0.6
|
||||
specifier: ^0.0.8
|
||||
version: 0.0.8
|
||||
'@kevisual/local-app-manager':
|
||||
specifier: 0.1.32
|
||||
version: 0.1.32
|
||||
@@ -89,8 +83,8 @@ importers:
|
||||
specifier: ^0.0.4
|
||||
version: 0.0.4
|
||||
'@kevisual/router':
|
||||
specifier: 0.0.75
|
||||
version: 0.0.75
|
||||
specifier: 0.0.80
|
||||
version: 0.0.80
|
||||
'@kevisual/types':
|
||||
specifier: ^0.0.12
|
||||
version: 0.0.12
|
||||
@@ -148,6 +142,12 @@ importers:
|
||||
p-queue:
|
||||
specifier: ^9.1.0
|
||||
version: 9.1.0
|
||||
pg:
|
||||
specifier: ^8.18.0
|
||||
version: 8.18.0
|
||||
pm2:
|
||||
specifier: ^6.0.14
|
||||
version: 6.0.14
|
||||
semver:
|
||||
specifier: ^7.7.4
|
||||
version: 7.7.4
|
||||
@@ -661,8 +661,8 @@ packages:
|
||||
'@kevisual/ai@0.0.24':
|
||||
resolution: {integrity: sha512-7jvZk1/L//VIClK7usuNgN4ZA9Etgbooka1Sj5quE/0UywR+NNnwqXVZ89Y1fBhI1TkhauDsdJBAtcQ7r/vbVw==}
|
||||
|
||||
'@kevisual/api@0.0.51':
|
||||
resolution: {integrity: sha512-uQzAhcJlJqIjBZ5wHBnDPsKf0/JYRKP7p3eS6TGn/Um4bvJ/AI0mP5QtJson/VcdJOFFwORiF3CJQ1ifm/Cadw==}
|
||||
'@kevisual/api@0.0.52':
|
||||
resolution: {integrity: sha512-xWajr5lPqBpAwyWseXqE25tNiD/GUZcFdcQJB/oRtObjRa3rog1/U/otV098WZUZVYPGGeAMriKSd3MFdPFcjQ==}
|
||||
|
||||
'@kevisual/auth@2.0.3':
|
||||
resolution: {integrity: sha512-4xpijaIhlCTr/DlJaV/gmkCQeg45EO1yxWpRvUX+1jCdVbuxSR0wZrF0SD9oybnjmKWMKDNPLsXyduFjMGcItA==}
|
||||
@@ -673,6 +673,9 @@ packages:
|
||||
'@kevisual/context@0.0.6':
|
||||
resolution: {integrity: sha512-w7HBOuO3JH37n6xT6W3FD7ykqHTwtyxOQzTzfEcKDCbsvGB1wVreSxFm2bvoFnnFLuxT/5QMpKlnPrwvmcTGnw==}
|
||||
|
||||
'@kevisual/context@0.0.8':
|
||||
resolution: {integrity: sha512-DTJpyHI34NE76B7g6f+QlIqiCCyqI2qkBMQE736dzeRDGxOjnbe2iQY9W+Rt2PE6kmymM3qyOmSfNovyWyWrkA==}
|
||||
|
||||
'@kevisual/js-filter@0.0.5':
|
||||
resolution: {integrity: sha512-+S+Sf3K/aP6XtZI2s7TgKOr35UuvUvtpJ9YDW30a+mY0/N8gRuzyKhieBzQN7Ykayzz70uoMavBXut2rUlLgzw==}
|
||||
|
||||
@@ -700,14 +703,14 @@ packages:
|
||||
'@kevisual/query@0.0.39':
|
||||
resolution: {integrity: sha512-3UEPBIvtdykNkrby3hvrgrHdgd17Uq+Pnr4zs+JBzATkU2eKaOqtTUJqdyIEwuySCwzGTxrnlUzWP4tziDQDLQ==}
|
||||
|
||||
'@kevisual/query@0.0.46':
|
||||
resolution: {integrity: sha512-JwHV16ehk8JWM5wiWW5kz9yTg4HrOmmnci5QvwQYdhXYXDzGpUrOxeoz3wloMs4kX3bkowz97iLLW6uQdgUoTw==}
|
||||
'@kevisual/query@0.0.49':
|
||||
resolution: {integrity: sha512-GrWW+QlBO5lkiqvb7PjOstNtpTQVSR74EHHWjm7YoL9UdT1wuPQXGUApZHmMBSh3NIWCf0AL2G1hPWZMC7YeOQ==}
|
||||
|
||||
'@kevisual/router@0.0.70':
|
||||
resolution: {integrity: sha512-vXlIj9jRufhcIfeuPWemjSI+dxdzSmIBq5eRxQzqEfAJ7k+mBPhoI4KxH8vHnwyL30bqm8EdODL/p6Wg8uBw3g==}
|
||||
|
||||
'@kevisual/router@0.0.75':
|
||||
resolution: {integrity: sha512-WBDRKMjNYTP7ymkUUtiQwWYIcqnc+TGo3rFuRze8ovYV2UN5cQxIkIfsDbgWOdV1/v9b57gtiJvJRqWjCBWKRg==}
|
||||
'@kevisual/router@0.0.80':
|
||||
resolution: {integrity: sha512-rVwi6Yf411bnNm2x94lMm+s4Csw0Yb7u/aj+VJJ59iouAYhjLuL7Rs1EcARhnQf47cegBJi6zozfGHgLsLHN2w==}
|
||||
|
||||
'@kevisual/types@0.0.12':
|
||||
resolution: {integrity: sha512-zJXH2dosir3jVrQ6QG4i0+iLQeT9gJ3H+cKXs8ReWboxBSYzUZO78XssVeVrFPsJ33iaAqo4q3DWbSS1dWGn7Q==}
|
||||
@@ -3004,7 +3007,7 @@ snapshots:
|
||||
'@kevisual/permission': 0.0.3
|
||||
'@kevisual/query': 0.0.38
|
||||
|
||||
'@kevisual/api@0.0.51(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
'@kevisual/api@0.0.52(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||
dependencies:
|
||||
'@kevisual/context': 0.0.6
|
||||
'@kevisual/js-filter': 0.0.5
|
||||
@@ -3031,6 +3034,8 @@ snapshots:
|
||||
|
||||
'@kevisual/context@0.0.6': {}
|
||||
|
||||
'@kevisual/context@0.0.8': {}
|
||||
|
||||
'@kevisual/js-filter@0.0.5': {}
|
||||
|
||||
'@kevisual/load@0.0.6':
|
||||
@@ -3061,13 +3066,13 @@ snapshots:
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
|
||||
'@kevisual/query@0.0.46': {}
|
||||
'@kevisual/query@0.0.49': {}
|
||||
|
||||
'@kevisual/router@0.0.70':
|
||||
dependencies:
|
||||
es-toolkit: 1.44.0
|
||||
|
||||
'@kevisual/router@0.0.75':
|
||||
'@kevisual/router@0.0.80':
|
||||
dependencies:
|
||||
es-toolkit: 1.44.0
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import { User } from '@/models/user.ts';
|
||||
import { callDetectAppVersion } from './export.ts';
|
||||
import { eq, and, desc } from 'drizzle-orm';
|
||||
import { z } from 'zod';
|
||||
import { logger } from '@/modules/logger.ts';
|
||||
app
|
||||
.route({
|
||||
path: 'app',
|
||||
@@ -105,7 +106,7 @@ app
|
||||
if (!appListModel) {
|
||||
ctx.throw('app not found');
|
||||
}
|
||||
console.log('get app', appListModel.id, appListModel.key, appListModel.version);
|
||||
logger.debug('get app', appListModel.id, appListModel.key, appListModel.version);
|
||||
ctx.body = prefixFix(appListModel, tokenUser.username);
|
||||
})
|
||||
.addTo(app);
|
||||
@@ -289,6 +290,17 @@ app
|
||||
key: 'publish',
|
||||
middleware: ['auth'],
|
||||
description: '发布应用,将某个版本的应用设置为当前应用的版本',
|
||||
metadata: {
|
||||
args: {
|
||||
data: z.object({
|
||||
id: z.string().optional().describe('应用版本记录id'),
|
||||
username: z.string().optional().describe('用户名,默认为当前用户'),
|
||||
appKey: z.string().optional().describe('应用的唯一标识'),
|
||||
version: z.string().describe('应用版本'),
|
||||
detect: z.boolean().optional().describe('是否自动检测版本列表,默认false'),
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
.define(async (ctx) => {
|
||||
const tokenUser = ctx.state.tokenUser;
|
||||
@@ -346,8 +358,9 @@ app
|
||||
if (!am) {
|
||||
ctx.throw('app 未发现');
|
||||
}
|
||||
if (!isDetect) {
|
||||
const amData = am.data as AppData;
|
||||
if (version !== am.version) {
|
||||
// 发布版本和当前版本不一致
|
||||
await db.update(schema.kvApp)
|
||||
.set({ data: { ...amData, files }, version: appList.version, updatedAt: new Date().toISOString() })
|
||||
.where(eq(schema.kvApp.id, am.id));
|
||||
@@ -413,8 +426,17 @@ app
|
||||
.route({
|
||||
path: 'app',
|
||||
key: 'detectVersionList',
|
||||
description: '检测版本列表,minio中的数据自己上传后,根据版本信息,进行替换',
|
||||
description: '检测版本列表, 对存储内容的网关暴露对应的的模块',
|
||||
middleware: ['auth'],
|
||||
metadata: {
|
||||
args: {
|
||||
data: z.object({
|
||||
appKey: z.string().describe('应用的唯一标识'),
|
||||
version: z.string().describe('应用版本'),
|
||||
username: z.string().optional().describe('用户名,默认为当前用户'),
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
.define(async (ctx) => {
|
||||
const tokenUser = ctx.state.tokenUser;
|
||||
@@ -469,6 +491,7 @@ app
|
||||
)).limit(1);
|
||||
let am = ams[0];
|
||||
if (!am) {
|
||||
// 如果应用不存在,则创建应用记录,版本为0.0.1
|
||||
const newAms = await db.insert(schema.kvApp).values({
|
||||
title: appKey,
|
||||
key: appKey,
|
||||
@@ -480,6 +503,7 @@ app
|
||||
}).returning();
|
||||
am = newAms[0];
|
||||
} else {
|
||||
// 如果应用存在,并且版本相同,则更新应用记录的文件列表
|
||||
const appModels = await db.select().from(schema.kvApp).where(and(
|
||||
eq(schema.kvApp.key, appKey),
|
||||
eq(schema.kvApp.version, version),
|
||||
|
||||
Reference in New Issue
Block a user