diff --git a/assistant/src/app.ts b/assistant/src/app.ts index 2fadbaa..ecae7dc 100644 --- a/assistant/src/app.ts +++ b/assistant/src/app.ts @@ -21,3 +21,4 @@ export const app = new App({ httpsKey: httpsPem.key, }, }); + diff --git a/assistant/src/command/app-manager/index.ts b/assistant/src/command/app-manager/index.ts index ded17fc..2045d1c 100644 --- a/assistant/src/command/app-manager/index.ts +++ b/assistant/src/command/app-manager/index.ts @@ -93,7 +93,7 @@ const pageListCommand = new Command('page-list') .action(async (opts) => { const manager = new AssistantApp(assistantConfig); await manager.loadConfig(); - const showInfos = manager.pageList(); + const showInfos = await manager.pageList(); if (opts.all) { console.log('Installed Pages:', showInfos); } else { diff --git a/assistant/src/command/app/index.ts b/assistant/src/command/app/index.ts index 34d962e..d9742b5 100644 --- a/assistant/src/command/app/index.ts +++ b/assistant/src/command/app/index.ts @@ -1,3 +1,4 @@ +import { logger } from '@/module/logger.ts'; import { program, Command, assistantConfig } from '@/program.ts'; import { AppDownload } from '@/services/app/index.ts'; @@ -17,9 +18,12 @@ const downloadCommand = new Command('download') const registry = options.registry || assistantConfig.getRegistry(); // console.log('registry', registry); const app = new AppDownload(assistantConfig); + let info = ''; if (id) { - await app.downloadApp({ id, type, registry, force, yes }); + const msg = await app.downloadApp({ id, type, registry, force, yes }); + info = String(msg); } + logger.debug(info); }); appManagerCommand.addCommand(downloadCommand); @@ -31,8 +35,11 @@ const deleteCommand = new Command('delete') .action(async (options) => { const { id, type } = options; const app = new AppDownload(assistantConfig); + let info = ''; if (id) { - await app.deleteApp({ id, type }); + const msg = await app.deleteApp({ id, type }); + info = String(msg); } + logger.debug(info); }); appManagerCommand.addCommand(deleteCommand); diff --git a/assistant/src/module/assistant/local-app-manager/assistant-app.ts b/assistant/src/module/assistant/local-app-manager/assistant-app.ts index 6f06de6..4e55925 100644 --- a/assistant/src/module/assistant/local-app-manager/assistant-app.ts +++ b/assistant/src/module/assistant/local-app-manager/assistant-app.ts @@ -22,8 +22,8 @@ export class AssistantApp extends Manager { this.pagesPath = pagesPath; this.config = config; } - pageList() { - const pages = glob.sync('*/*/package.json', { + async pageList() { + const pages = await glob(['*/*/package.json'], { cwd: this.pagesPath, onlyFiles: true, }); @@ -35,9 +35,32 @@ export class AssistantApp extends Manager { user, app, version: content?.version, + title: content?.title || '', + description: content?.description || '', content, }; }); return pagesParse; } + async getPageAndAppList() { + const root = this.config.configPath.configDir; + const pages = await glob([root + '/apps/*/package.json', root + '/pages/*/*/package.json'], { + cwd: root, + onlyFiles: true, + }); + const pagesParse = pages.map((page) => { + const relativePath = path.relative(root, page); + const contentStr = fs.readFileSync(path.join(page), 'utf-8'); + const content = parseIfJson(contentStr); + if (!content.appType) { + const isWeb = relativePath.startsWith('pages/'); + content.appType = isWeb ? 'web' : 'app'; + } + return { + ...content, + filepath: relativePath, + }; + }); + return pagesParse; + } } diff --git a/assistant/src/module/logger.ts b/assistant/src/module/logger.ts index b707e36..31eb6b1 100644 --- a/assistant/src/module/logger.ts +++ b/assistant/src/module/logger.ts @@ -1,6 +1,6 @@ import { Logger } from '@kevisual/logger'; const level = process.env.LOG_LEVEL || 'info'; -const logger = new Logger({ level: level as any }); +export const logger = new Logger({ level: level as any }); export const console = { log: logger.info, diff --git a/assistant/src/routes/index.ts b/assistant/src/routes/index.ts index c6e7247..4b94ffc 100644 --- a/assistant/src/routes/index.ts +++ b/assistant/src/routes/index.ts @@ -11,3 +11,13 @@ app // }) .addTo(app); + +app + .route({ + path: 'client', + key: 'version', + }) + .define(async (ctx) => { + ctx.body = 'v1.0.0'; + }) + .addTo(app); diff --git a/assistant/src/routes/shop-install/define.ts b/assistant/src/routes/shop-install/define.ts new file mode 100644 index 0000000..fd56294 --- /dev/null +++ b/assistant/src/routes/shop-install/define.ts @@ -0,0 +1,27 @@ +import { QueryUtil } from '@kevisual/router/define'; + +export const shopDefine = QueryUtil.create({ + getRegistry: { + path: 'shop', + key: 'get-registry', + description: '获取应用商店注册表信息', + }, + + listInstalled: { + path: 'shop', + key: 'list-installed', + description: '列出当前已安装的所有应用', + }, + + install: { + path: 'shop', + key: 'install', + description: '安装指定的应用,可以指定 id、type、force 和 yes 参数', + }, + + uninstall: { + path: 'shop', + key: 'uninstall', + description: '卸载指定的应用,可以指定 id 和 type 参数', + }, +}); diff --git a/assistant/src/routes/shop-install/index.ts b/assistant/src/routes/shop-install/index.ts index b222198..5c7fd87 100644 --- a/assistant/src/routes/shop-install/index.ts +++ b/assistant/src/routes/shop-install/index.ts @@ -1,64 +1,69 @@ -import { app } from '@/app.ts'; -// import { getInstallList, installApp, uninstallApp } from '@/modules/install.ts'; -const getInstallList = async () => { - return []; -}; -const installApp = async (pkg: string) => { - return { - code: 200, - message: 'success', - data: { - pkg, - }, - }; -}; -const uninstallApp = async (pkg: string) => { - return { - code: 200, - message: 'success', - }; -}; - +import { app, assistantConfig } from '@/app.ts'; +import { AppDownload } from '@/services/app/index.ts'; +import { AssistantApp } from '@/module/assistant/index.ts'; +import { shopDefine } from './define.ts'; app .route({ - path: 'shop', - key: 'list-installed', + ...shopDefine.get('getRegistry'), middleware: ['auth'], }) .define(async (ctx) => { - // https://localhost:51015/client/router?path=shop&key=list-installed - const list = await getInstallList(); - ctx.body = list; + const registry = assistantConfig.getRegistry(); + assistantConfig.checkMounted(); + ctx.body = registry; }) .addTo(app); app .route({ - path: 'shop', - key: 'install', + ...shopDefine.get('listInstalled'), + middleware: ['auth'], + }) + .define(async (ctx) => { + const manager = new AssistantApp(assistantConfig); + await manager.loadConfig(); + const data = await manager.getPageAndAppList(); + ctx.body = data; + }) + .addTo(app); + +app + .route({ + ...shopDefine.get('install'), middleware: ['auth'], }) .define(async (ctx) => { // https://localhost:51015/client/router?path=shop&key=install - const { pkg } = ctx.query.data; - const res = await installApp(pkg); - if (res.code !== 200) { - ctx.throw(res.code, res.message); + const options = ctx.query?.data || {}; + const { id, type, force, yes } = options; + assistantConfig.checkMounted(); + const registry = options.registry || assistantConfig.getRegistry(); + // console.log('registry', registry); + const app = new AppDownload(assistantConfig); + let info = ''; + if (id) { + const msg = await app.downloadApp({ id, type, registry, force, yes }); + info = String(msg); } - ctx.body = res; + ctx.body = { info }; }) .addTo(app); app .route({ - path: 'shop', - key: 'uninstall', + ...shopDefine.get('uninstall'), middleware: ['auth'], }) .define(async (ctx) => { // https://localhost:51015/client/router?path=shop&key=uninstall - const { pkg } = ctx.query.data; - const res = await uninstallApp(pkg); - ctx.body = res; + const options = ctx.query?.data || {}; + const { id, type, yes } = options; + const app = new AppDownload(assistantConfig); + let info = ''; + if (id) { + const msg = await app.deleteApp({ id, type, yes }); + info = String(msg); + } + ctx.body = { info }; }) .addTo(app); diff --git a/assistant/src/services/app/index.ts b/assistant/src/services/app/index.ts index a71cca5..6955b62 100644 --- a/assistant/src/services/app/index.ts +++ b/assistant/src/services/app/index.ts @@ -48,14 +48,19 @@ type DeleteAppOptions = { id: string; type?: appType; appName?: string; + yes?: boolean; }; + export class AppDownload { config: AssistantConfig; constructor(config: AssistantConfig) { this.config = config; } + async getRegistry() { + return this.config.getRegistry(); + } async downloadApp(opts: DownloadAppOptions) { - const { id, type = 'web', force } = opts; + const { id, type = 'web', force, yes } = opts; const configDir = this.config.configDir; this.config?.checkMounted(); const appsDir = this.config.configPath?.appsDir; @@ -100,7 +105,7 @@ export class AppDownload { return confirm; } async deleteApp(opts: DeleteAppOptions) { - const { id, type = 'web' } = opts; + const { id, type = 'web', yes = false } = opts; const appName = opts?.appName || id.split('/').pop(); this.config?.checkMounted(); const appsDir = this.config.configPath?.appsDir; @@ -119,10 +124,12 @@ export class AppDownload { deletePath = appPath; } if (deletePath && checkFileExists(deletePath)) { - const confirm = await this.confirm(`是否删除 ${deletePath} 应用?`); - if (!confirm) { - console.log('取消删除应用'); - return; + if (!yes) { + const confirm = await this.confirm(`是否删除 ${deletePath} 应用?`); + if (!confirm) { + console.log('取消删除应用'); + return; + } } fs.rmSync(deletePath, { recursive: true }); isDelete = true; diff --git a/assistant/src/services/proxy/proxy-page-index.ts b/assistant/src/services/proxy/proxy-page-index.ts index c35072a..5ccaef9 100644 --- a/assistant/src/services/proxy/proxy-page-index.ts +++ b/assistant/src/services/proxy/proxy-page-index.ts @@ -2,7 +2,7 @@ import { fileProxy, httpProxy, createApiProxy, wsProxy } from '@/module/assistan import http from 'http'; import { LocalProxy } from './local-proxy.ts'; import { assistantConfig, app } from '@/app.ts'; -import { log } from '@/module/logger.ts'; +import { log, logger } from '@/module/logger.ts'; const localProxy = new LocalProxy({ assistantConfig, }); @@ -21,6 +21,7 @@ export const proxyRoute = async (req: http.IncomingMessage, res: http.ServerResp return; } if (pathname.startsWith('/client')) { + logger.info('url', { url: req.url }); console.debug('handle by router'); return; } @@ -74,7 +75,7 @@ export const proxyRoute = async (req: http.IncomingMessage, res: http.ServerResp indexPath: localProxyProxy.indexPath, }); } - const creatCenterProxy = createApiProxy(_assistantConfig?.pageApi || 'https://kevisual.cn', ['/root']); + const creatCenterProxy = createApiProxy(_assistantConfig?.pageApi || 'https://kevisual.cn', ['/root', '/' + _user]); const centerProxy = creatCenterProxy.find((item) => pathname.startsWith(item.path)); if (centerProxy) { return httpProxy(req, res, { diff --git a/package.json b/package.json index cac4cdf..b5a219d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kevisual/envision-cli", - "version": "0.0.49", + "version": "0.0.51", "description": "envision command tools", "main": "dist/app.mjs", "type": "module", @@ -39,20 +39,20 @@ "author": "abearxiong", "dependencies": { "micromatch": "^4.0.8", - "pm2": "^6.0.5" + "pm2": "^6.0.6" }, "devDependencies": { "@kevisual/load": "^0.0.6", "@kevisual/logger": "^0.0.3", - "@kevisual/query": "0.0.17", + "@kevisual/query": "0.0.18", "@kevisual/query-login": "0.0.5", "@types/bun": "^1.2.13", "@types/crypto-js": "^4.2.2", "@types/jsonwebtoken": "^9.0.9", "@types/micromatch": "^4.0.9", - "@types/node": "^22.15.17", + "@types/node": "^22.15.18", "chalk": "^5.4.1", - "commander": "^13.1.0", + "commander": "^14.0.0", "crypto-js": "^4.2.0", "fast-glob": "^3.3.3", "filesize": "^10.1.6", @@ -60,7 +60,7 @@ "ignore": "^7.0.4", "inquirer": "^12.6.1", "jsonwebtoken": "^9.0.2", - "rollup": "^4.40.2", + "rollup": "^4.41.0", "rollup-plugin-dts": "^6.2.1", "tar": "^7.4.3", "zustand": "^5.0.4" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4f7512b..23241b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^4.0.8 version: 4.0.8 pm2: - specifier: ^6.0.5 - version: 6.0.5(supports-color@10.0.0) + specifier: ^6.0.6 + version: 6.0.6(supports-color@10.0.0) devDependencies: '@kevisual/load': specifier: ^0.0.6 @@ -22,11 +22,11 @@ importers: specifier: ^0.0.3 version: 0.0.3 '@kevisual/query': - specifier: 0.0.17 - version: 0.0.17(encoding@0.1.13)(ws@8.18.0) + specifier: 0.0.18 + version: 0.0.18(encoding@0.1.13)(ws@8.18.0) '@kevisual/query-login': specifier: 0.0.5 - version: 0.0.5(@kevisual/query@0.0.17(encoding@0.1.13)(ws@8.18.0))(rollup@4.40.2)(typescript@5.8.2) + version: 0.0.5(@kevisual/query@0.0.18(encoding@0.1.13)(ws@8.18.0))(rollup@4.41.0)(typescript@5.8.2) '@types/bun': specifier: ^1.2.13 version: 1.2.13 @@ -40,14 +40,14 @@ importers: specifier: ^4.0.9 version: 4.0.9 '@types/node': - specifier: ^22.15.17 - version: 22.15.17 + specifier: ^22.15.18 + version: 22.15.18 chalk: specifier: ^5.4.1 version: 5.4.1 commander: - specifier: ^13.1.0 - version: 13.1.0 + specifier: ^14.0.0 + version: 14.0.0 crypto-js: specifier: ^4.2.0 version: 4.2.0 @@ -65,16 +65,16 @@ importers: version: 7.0.4 inquirer: specifier: ^12.6.1 - version: 12.6.1(@types/node@22.15.17) + version: 12.6.1(@types/node@22.15.18) jsonwebtoken: specifier: ^9.0.2 version: 9.0.2 rollup: - specifier: ^4.40.2 - version: 4.40.2 + specifier: ^4.41.0 + version: 4.41.0 rollup-plugin-dts: specifier: ^6.2.1 - version: 6.2.1(rollup@4.40.2)(typescript@5.8.2) + version: 6.2.1(rollup@4.41.0)(typescript@5.8.2) tar: specifier: ^7.4.3 version: 7.4.3 @@ -85,8 +85,8 @@ importers: assistant: dependencies: pm2: - specifier: ^6.0.5 - version: 6.0.5(supports-color@10.0.0) + specifier: ^6.0.6 + version: 6.0.6(supports-color@10.0.0) devDependencies: '@kevisual/ai-center': specifier: ^0.0.3 @@ -95,35 +95,38 @@ importers: specifier: ^0.0.6 version: 0.0.6 '@kevisual/local-app-manager': - specifier: ^0.1.17 - version: 0.1.17(@kevisual/router@0.0.13)(@kevisual/types@0.0.7)(@kevisual/use-config@1.0.11(dotenv@16.5.0))(pm2@6.0.5(supports-color@10.0.0)) + specifier: ^0.1.18 + version: 0.1.18(@kevisual/router@0.0.20)(@kevisual/types@0.0.10)(@kevisual/use-config@1.0.17(dotenv@16.5.0))(pm2@6.0.6(supports-color@10.0.0)) + '@kevisual/logger': + specifier: ^0.0.3 + version: 0.0.3 '@kevisual/query': - specifier: 0.0.17 - version: 0.0.17(@kevisual/ws@8.0.0)(encoding@0.1.13) + specifier: 0.0.18 + version: 0.0.18(@kevisual/ws@8.0.0)(encoding@0.1.13) '@kevisual/query-login': specifier: 0.0.5 - version: 0.0.5(@kevisual/query@0.0.17(@kevisual/ws@8.0.0)(encoding@0.1.13))(rollup@4.40.2)(typescript@5.8.2) + version: 0.0.5(@kevisual/query@0.0.18(@kevisual/ws@8.0.0)(encoding@0.1.13))(rollup@4.41.0)(typescript@5.8.2) '@kevisual/router': - specifier: ^0.0.13 - version: 0.0.13 + specifier: ^0.0.20 + version: 0.0.20 '@kevisual/task-command': - specifier: ^0.0.2 - version: 0.0.2 - '@kevisual/types': specifier: ^0.0.7 version: 0.0.7 + '@kevisual/types': + specifier: ^0.0.10 + version: 0.0.10 '@kevisual/use-config': - specifier: ^1.0.11 - version: 1.0.11(dotenv@16.5.0) + specifier: ^1.0.17 + version: 1.0.17(dotenv@16.5.0) '@types/bun': - specifier: ^1.2.10 - version: 1.2.10 + specifier: ^1.2.13 + version: 1.2.13 '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 '@types/node': - specifier: ^22.15.2 - version: 22.15.2 + specifier: ^22.15.18 + version: 22.15.18 '@types/send': specifier: ^0.17.4 version: 0.17.4 @@ -149,8 +152,8 @@ importers: specifier: ^7.1.0 version: 7.1.0 inquirer: - specifier: ^12.6.0 - version: 12.6.0(@types/node@22.15.2) + specifier: ^12.6.1 + version: 12.6.1(@types/node@22.15.18) lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -171,7 +174,7 @@ importers: dependencies: '@kevisual/cache': specifier: ^0.0.2 - version: 0.0.2(rollup@4.40.2)(tslib@2.8.1)(typescript@5.8.2) + version: 0.0.2(rollup@4.41.0)(tslib@2.8.1)(typescript@5.8.2) '@kevisual/query': specifier: ^0.0.17 version: 0.0.17(encoding@0.1.13)(ws@8.18.0) @@ -346,15 +349,6 @@ packages: cpu: [x64] os: [win32] - '@inquirer/checkbox@4.1.5': - resolution: {integrity: sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/checkbox@4.1.6': resolution: {integrity: sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg==} engines: {node: '>=18'} @@ -373,24 +367,6 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.9': - resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/core@10.1.10': - resolution: {integrity: sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/core@10.1.11': resolution: {integrity: sha512-BXwI/MCqdtAhzNQlBEFE7CEflhPkl/BqvAuV/aK6lW3DClIfYVDWPP/kXuXHtBWC7/EEbNqd/1BGq2BGBBnuxw==} engines: {node: '>=18'} @@ -400,15 +376,6 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.10': - resolution: {integrity: sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/editor@4.2.11': resolution: {integrity: sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw==} engines: {node: '>=18'} @@ -418,15 +385,6 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.12': - resolution: {integrity: sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/expand@4.0.13': resolution: {integrity: sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ==} engines: {node: '>=18'} @@ -449,24 +407,6 @@ packages: '@types/node': optional: true - '@inquirer/input@4.1.9': - resolution: {integrity: sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/number@3.0.12': - resolution: {integrity: sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/number@3.0.13': resolution: {integrity: sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew==} engines: {node: '>=18'} @@ -476,15 +416,6 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.12': - resolution: {integrity: sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/password@4.0.13': resolution: {integrity: sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ==} engines: {node: '>=18'} @@ -494,15 +425,6 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.5.0': - resolution: {integrity: sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/prompts@7.5.1': resolution: {integrity: sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==} engines: {node: '>=18'} @@ -512,15 +434,6 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.1.0': - resolution: {integrity: sha512-6ob45Oh9pXmfprKqUiEeMz/tjtVTFQTgDDz1xAMKMrIvyrYjAmRbQZjMJfsictlL4phgjLhdLu27IkHNnNjB7g==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/rawlist@4.1.1': resolution: {integrity: sha512-VBUC0jPN2oaOq8+krwpo/mf3n/UryDUkKog3zi+oIi8/e5hykvdntgHUB9nhDM78RubiyR1ldIOfm5ue+2DeaQ==} engines: {node: '>=18'} @@ -530,15 +443,6 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.12': - resolution: {integrity: sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/search@3.0.13': resolution: {integrity: sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g==} engines: {node: '>=18'} @@ -548,15 +452,6 @@ packages: '@types/node': optional: true - '@inquirer/select@4.2.0': - resolution: {integrity: sha512-KkXQ4aSySWimpV4V/TUJWdB3tdfENZUU765GjOIZ0uPwdbGIG6jrxD4dDf1w68uP+DVtfNhr1A92B+0mbTZ8FA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/select@4.2.1': resolution: {integrity: sha512-gt1Kd5XZm+/ddemcT3m23IP8aD8rC9drRckWoP/1f7OL46Yy2FGi8DSmNjEjQKtPl6SV96Kmjbl6p713KXJ/Jg==} engines: {node: '>=18'} @@ -610,8 +505,8 @@ packages: '@kevisual/load@0.0.6': resolution: {integrity: sha512-+3YTFehRcZ1haGel5DKYMUwmi5i6f2psyaPZlfkKU/cOXgkpwoG9/BEqPCnPjicKqqnksEpixVRkyHJ+5bjLVA==} - '@kevisual/local-app-manager@0.1.17': - resolution: {integrity: sha512-0Ye+GwxPd9FwaICNJoG5avkScVZ9OnTtUfskFFA6UBiSJ7MT4ZBhS2dzwU4o2Yl6mV951M7rXN5Kbs08pYJWUg==} + '@kevisual/local-app-manager@0.1.18': + resolution: {integrity: sha512-uJbob3/iaqzPWTNMZ2VjOlSTIZNEmN3MXdqtXwR+BAMIMQdsBllueZNGWlqnUyOXdHk09Y8dQU38u7QGsIYkeA==} peerDependencies: '@kevisual/router': ^0.0.6 '@kevisual/types': ^0.0.1 @@ -629,17 +524,20 @@ packages: '@kevisual/query@0.0.17': resolution: {integrity: sha512-WMvWM+3pNlPKNhoxPX9fldMp1tOeJrkRM/tXA4bvOnftIoX2yeI4v0wTpbGJXES/bLlo7OC2kV8SeKF0K6dnxQ==} - '@kevisual/router@0.0.13': - resolution: {integrity: sha512-raji8aKXr0jigmJVOKBXb5gpstiAuyoIDy9m6SyPf4lRjCU3pspVI1bpscOUCBlaPICo6TLzPQxXhyTvvvtdWw==} + '@kevisual/query@0.0.18': + resolution: {integrity: sha512-I2vHTu0I6AyD9PJyr+vxyp9jIJ6rd2EZqLVHTv/+zrVKVc2SS76Tg7aGNkmAFqqLSCB8kLLsmMGtSJU1Qb8VVg==} - '@kevisual/task-command@0.0.2': - resolution: {integrity: sha512-GVGcm2edTdIkiRaO8PoR8MhkHEyqq2xG3knMI6Ba+0YknzRECAzR0tgkHLGRPyIClG0J6gDzo2qaglf2s3ci5w==} + '@kevisual/router@0.0.20': + resolution: {integrity: sha512-uSwDYWh+kvAu6i0m0SJVgcLR/CYz7WvIWGz0nSF8Vg6smJuAgI+laHR4ESO8Fbz+Xn8bPHuSwmM//HHLMLx2FA==} - '@kevisual/types@0.0.7': - resolution: {integrity: sha512-qU/vg7WilTmxbWQZ4PbYNaTDQO83KaCqoT10FbGg8FCwGG2luuEKTvCYcXfvpl7qA+AHGKcSm0JJc61s4oLCww==} + '@kevisual/task-command@0.0.7': + resolution: {integrity: sha512-2vkKJVgjCQEeewKeCU7+U5K4mU6by2rWTDEsUrCbZ6K0fgg4QpfvrtXK1YGVNbywKIXuT95ol7QQS+gMN7hgcA==} - '@kevisual/use-config@1.0.11': - resolution: {integrity: sha512-ccilQTRZTpO075L67ZBXhr8Lp3i73/W5cCMT5enMjVrnJT5K0i5JH5IbzBhF6WY5Rj8dmVsAyyjJe24ClyM7Eg==} + '@kevisual/types@0.0.10': + resolution: {integrity: sha512-Q73uzzjk9UidumnmCvOpgzqDDvQxsblz22bIFuoiioUFJWwaparx8bpd8ArRyFojicYL1YJoFDzDZ9j9NN8grA==} + + '@kevisual/use-config@1.0.17': + resolution: {integrity: sha512-EsuMJ5bhAbdERvpD55td1diRxx4kSxtYVaIHo0vDvnLetuXLfq+j2DPGmWl/oRdO48op0dme5oo1DctCqpgYcQ==} peerDependencies: dotenv: ^16.4.7 @@ -717,103 +615,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.40.2': - resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} + '@rollup/rollup-android-arm-eabi@4.41.0': + resolution: {integrity: sha512-KxN+zCjOYHGwCl4UCtSfZ6jrq/qi88JDUtiEFk8LELEHq2Egfc/FgW+jItZiOLRuQfb/3xJSgFuNPC9jzggX+A==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.40.2': - resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} + '@rollup/rollup-android-arm64@4.41.0': + resolution: {integrity: sha512-yDvqx3lWlcugozax3DItKJI5j05B0d4Kvnjx+5mwiUpWramVvmAByYigMplaoAQ3pvdprGCTCE03eduqE/8mPQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.40.2': - resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} + '@rollup/rollup-darwin-arm64@4.41.0': + resolution: {integrity: sha512-2KOU574vD3gzcPSjxO0eyR5iWlnxxtmW1F5CkNOHmMlueKNCQkxR6+ekgWyVnz6zaZihpUNkGxjsYrkTJKhkaw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.40.2': - resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} + '@rollup/rollup-darwin-x64@4.41.0': + resolution: {integrity: sha512-gE5ACNSxHcEZyP2BA9TuTakfZvULEW4YAOtxl/A/YDbIir/wPKukde0BNPlnBiP88ecaN4BJI2TtAd+HKuZPQQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.40.2': - resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} + '@rollup/rollup-freebsd-arm64@4.41.0': + resolution: {integrity: sha512-GSxU6r5HnWij7FoSo7cZg3l5GPg4HFLkzsFFh0N/b16q5buW1NAWuCJ+HMtIdUEi6XF0qH+hN0TEd78laRp7Dg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.40.2': - resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} + '@rollup/rollup-freebsd-x64@4.41.0': + resolution: {integrity: sha512-KGiGKGDg8qLRyOWmk6IeiHJzsN/OYxO6nSbT0Vj4MwjS2XQy/5emsmtoqLAabqrohbgLWJ5GV3s/ljdrIr8Qjg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.40.2': - resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} + '@rollup/rollup-linux-arm-gnueabihf@4.41.0': + resolution: {integrity: sha512-46OzWeqEVQyX3N2/QdiU/CMXYDH/lSHpgfBkuhl3igpZiaB3ZIfSjKuOnybFVBQzjsLwkus2mjaESy8H41SzvA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.40.2': - resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} + '@rollup/rollup-linux-arm-musleabihf@4.41.0': + resolution: {integrity: sha512-lfgW3KtQP4YauqdPpcUZHPcqQXmTmH4nYU0cplNeW583CMkAGjtImw4PKli09NFi2iQgChk4e9erkwlfYem6Lg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.40.2': - resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} + '@rollup/rollup-linux-arm64-gnu@4.41.0': + resolution: {integrity: sha512-nn8mEyzMbdEJzT7cwxgObuwviMx6kPRxzYiOl6o/o+ChQq23gfdlZcUNnt89lPhhz3BYsZ72rp0rxNqBSfqlqw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.40.2': - resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} + '@rollup/rollup-linux-arm64-musl@4.41.0': + resolution: {integrity: sha512-l+QK99je2zUKGd31Gh+45c4pGDAqZSuWQiuRFCdHYC2CSiO47qUWsCcenrI6p22hvHZrDje9QjwSMAFL3iwXwQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.40.2': - resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} + '@rollup/rollup-linux-loongarch64-gnu@4.41.0': + resolution: {integrity: sha512-WbnJaxPv1gPIm6S8O/Wg+wfE/OzGSXlBMbOe4ie+zMyykMOeqmgD1BhPxZQuDqwUN+0T/xOFtL2RUWBspnZj3w==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': - resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} + '@rollup/rollup-linux-powerpc64le-gnu@4.41.0': + resolution: {integrity: sha512-eRDWR5t67/b2g8Q/S8XPi0YdbKcCs4WQ8vklNnUYLaSWF+Cbv2axZsp4jni6/j7eKvMLYCYdcsv8dcU+a6QNFg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.40.2': - resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} + '@rollup/rollup-linux-riscv64-gnu@4.41.0': + resolution: {integrity: sha512-TWrZb6GF5jsEKG7T1IHwlLMDRy2f3DPqYldmIhnA2DVqvvhY2Ai184vZGgahRrg8k9UBWoSlHv+suRfTN7Ua4A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.40.2': - resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} + '@rollup/rollup-linux-riscv64-musl@4.41.0': + resolution: {integrity: sha512-ieQljaZKuJpmWvd8gW87ZmSFwid6AxMDk5bhONJ57U8zT77zpZ/TPKkU9HpnnFrM4zsgr4kiGuzbIbZTGi7u9A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.40.2': - resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} + '@rollup/rollup-linux-s390x-gnu@4.41.0': + resolution: {integrity: sha512-/L3pW48SxrWAlVsKCN0dGLB2bi8Nv8pr5S5ocSM+S0XCn5RCVCXqi8GVtHFsOBBCSeR+u9brV2zno5+mg3S4Aw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.40.2': - resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} + '@rollup/rollup-linux-x64-gnu@4.41.0': + resolution: {integrity: sha512-XMLeKjyH8NsEDCRptf6LO8lJk23o9wvB+dJwcXMaH6ZQbbkHu2dbGIUindbMtRN6ux1xKi16iXWu6q9mu7gDhQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.40.2': - resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} + '@rollup/rollup-linux-x64-musl@4.41.0': + resolution: {integrity: sha512-m/P7LycHZTvSQeXhFmgmdqEiTqSV80zn6xHaQ1JSqwCtD1YGtwEK515Qmy9DcB2HK4dOUVypQxvhVSy06cJPEg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.40.2': - resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} + '@rollup/rollup-win32-arm64-msvc@4.41.0': + resolution: {integrity: sha512-4yodtcOrFHpbomJGVEqZ8fzD4kfBeCbpsUy5Pqk4RluXOdsWdjLnjhiKy2w3qzcASWd04fp52Xz7JKarVJ5BTg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.40.2': - resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} + '@rollup/rollup-win32-ia32-msvc@4.41.0': + resolution: {integrity: sha512-tmazCrAsKzdkXssEc65zIE1oC6xPHwfy9d5Ta25SRCDOZS+I6RypVVShWALNuU9bxIfGA0aqrmzlzoM5wO5SPQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.40.2': - resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} + '@rollup/rollup-win32-x64-msvc@4.41.0': + resolution: {integrity: sha512-h1J+Yzjo/X+0EAvR2kIXJDuTuyT7drc+t2ALY0nIcGPbTatNOf0VWdhEA2Z4AAjv6X1NJV7SYo5oCTYRJhSlVA==} cpu: [x64] os: [win32] @@ -823,9 +721,6 @@ packages: '@types/braces@3.0.5': resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==} - '@types/bun@1.2.10': - resolution: {integrity: sha512-eilv6WFM3M0c9ztJt7/g80BDusK98z/FrFwseZgT4bXCq2vPhXD4z8R3oddmAn+R/Nmz9vBn4kweJKmGTZj+lg==} - '@types/bun@1.2.13': resolution: {integrity: sha512-u6vXep/i9VBxoJl3GjZsl/BFIsvML8DfVDO0RYLEwtSZSp981kEO1V5NwRcO1CPJ7AmvpbnDCiMKo3JvbDEjAg==} @@ -868,11 +763,8 @@ packages: '@types/node@22.14.1': resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==} - '@types/node@22.15.17': - resolution: {integrity: sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==} - - '@types/node@22.15.2': - resolution: {integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==} + '@types/node@22.15.18': + resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -925,6 +817,10 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansis@4.0.0: + resolution: {integrity: sha512-P8nrHI1EyW9OfBt1X7hMSwGN2vwRuqHSKJAT1gbLWZRzDa24oHjYwGHvEgHeBepupzk878yS/HBZ0NMPYtbolw==} + engines: {node: '>=14'} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -980,9 +876,6 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - bun-types@1.2.10: - resolution: {integrity: sha512-b5ITZMnVdf3m1gMvJHG+gIfeJHiQPJak0f7925Hxu6ZN5VKA8AGy4GZ4lM+Xkn6jtWxg5S3ldWvfmXdvnkp3GQ==} - bun-types@1.2.13: resolution: {integrity: sha512-rRjA1T6n7wto4gxhAO/ErZEtOXyEZEmnIHQfl0Dt1QQSB4QV0iP6BZ9/YB5fZaHFQ2dwHFrmPaRQ9GGMX01k9Q==} @@ -1049,6 +942,10 @@ packages: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} + commander@14.0.0: + resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} + engines: {node: '>=20'} + commander@2.15.1: resolution: {integrity: sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==} @@ -1404,15 +1301,6 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - inquirer@12.6.0: - resolution: {integrity: sha512-3zmmccQd/8o65nPOZJZ+2wqt76Ghw3+LaMrmc6JE/IzcvQhJ1st+QLCOo/iLS85/tILU0myG31a2TAZX0ysAvg==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - inquirer@12.6.1: resolution: {integrity: sha512-MGFnzHVS3l3oM3cy+LWkyR7UUtVEn3D5U41CZbEY34szToWoJAvaVtCTz1mxsEzZFk/HXWyCArn0HDgloTXMDw==} engines: {node: '>=18'} @@ -1664,6 +1552,18 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} + openai@4.100.0: + resolution: {integrity: sha512-9soq/wukv3utxcuD7TWFqKdKp0INWdeyhUCvxwrne5KwnxaCp4eHL4GdT/tMFhYolxgNhxFzg5GFwM331Z5CZg==} + hasBin: true + peerDependencies: + ws: ^8.18.0 + zod: ^3.23.8 + peerDependenciesMeta: + ws: + optional: true + zod: + optional: true + openai@4.88.0: resolution: {integrity: sha512-Ll2ZJCdX/56WcCF/wLtAFou+zWRyLeneoXy+qya5T5/wm5LkIr6heJfSn53c5ujXWPB+24cgumiOetbFqcppFA==} hasBin: true @@ -1750,8 +1650,8 @@ packages: pm2-sysmonit@1.2.8: resolution: {integrity: sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==} - pm2@6.0.5: - resolution: {integrity: sha512-+O43WPaEiwYbm6/XSpAOO1Rtya/Uof0n7x8hJZGfwIuepesNTIVArpZh4KqFfze0cvvqZMr0maTW3ifhvmyeMQ==} + pm2@6.0.6: + resolution: {integrity: sha512-6t+I+Gc232dKe0OjwFYlU59JoY8MWBqsBmcZMSfKollByL4q8APUFwWOt7OtPH4lGO4Sb6GiFAqu7xT42QeRBA==} engines: {node: '>=16.0.0'} hasBin: true @@ -1837,8 +1737,8 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 - rollup@4.40.2: - resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} + rollup@4.41.0: + resolution: {integrity: sha512-HqMFpUbWlf/tvcxBFNKnJyzc7Lk+XO3FGc3pbNBLqEbOz0gPLRgcrlS3UF4MfUrVlstOaP/q0kM6GVvi+LrLRg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2246,44 +2146,27 @@ snapshots: '@esbuild/win32-x64@0.25.0': optional: true - '@inquirer/checkbox@4.1.5(@types/node@22.15.2)': + '@inquirer/checkbox@4.1.6(@types/node@22.15.18)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.15.2) + '@inquirer/core': 10.1.11(@types/node@22.15.18) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@22.15.2) + '@inquirer/type': 3.0.6(@types/node@22.15.18) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.18 - '@inquirer/checkbox@4.1.6(@types/node@22.15.17)': + '@inquirer/confirm@5.1.10(@types/node@22.15.18)': dependencies: - '@inquirer/core': 10.1.11(@types/node@22.15.17) - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@22.15.17) - ansi-escapes: 4.3.2 - yoctocolors-cjs: 2.1.2 + '@inquirer/core': 10.1.11(@types/node@22.15.18) + '@inquirer/type': 3.0.6(@types/node@22.15.18) optionalDependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 - '@inquirer/confirm@5.1.10(@types/node@22.15.17)': - dependencies: - '@inquirer/core': 10.1.11(@types/node@22.15.17) - '@inquirer/type': 3.0.6(@types/node@22.15.17) - optionalDependencies: - '@types/node': 22.15.17 - - '@inquirer/confirm@5.1.9(@types/node@22.15.2)': - dependencies: - '@inquirer/core': 10.1.10(@types/node@22.15.2) - '@inquirer/type': 3.0.6(@types/node@22.15.2) - optionalDependencies: - '@types/node': 22.15.2 - - '@inquirer/core@10.1.10(@types/node@22.15.2)': + '@inquirer/core@10.1.11(@types/node@22.15.18)': dependencies: '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@22.15.2) + '@inquirer/type': 3.0.6(@types/node@22.15.18) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -2291,190 +2174,93 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.18 - '@inquirer/core@10.1.11(@types/node@22.15.17)': + '@inquirer/editor@4.2.11(@types/node@22.15.18)': dependencies: - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@22.15.17) - ansi-escapes: 4.3.2 - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 - optionalDependencies: - '@types/node': 22.15.17 - - '@inquirer/editor@4.2.10(@types/node@22.15.2)': - dependencies: - '@inquirer/core': 10.1.10(@types/node@22.15.2) - '@inquirer/type': 3.0.6(@types/node@22.15.2) + '@inquirer/core': 10.1.11(@types/node@22.15.18) + '@inquirer/type': 3.0.6(@types/node@22.15.18) external-editor: 3.1.0 optionalDependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.18 - '@inquirer/editor@4.2.11(@types/node@22.15.17)': + '@inquirer/expand@4.0.13(@types/node@22.15.18)': dependencies: - '@inquirer/core': 10.1.11(@types/node@22.15.17) - '@inquirer/type': 3.0.6(@types/node@22.15.17) - external-editor: 3.1.0 - optionalDependencies: - '@types/node': 22.15.17 - - '@inquirer/expand@4.0.12(@types/node@22.15.2)': - dependencies: - '@inquirer/core': 10.1.10(@types/node@22.15.2) - '@inquirer/type': 3.0.6(@types/node@22.15.2) + '@inquirer/core': 10.1.11(@types/node@22.15.18) + '@inquirer/type': 3.0.6(@types/node@22.15.18) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.2 - - '@inquirer/expand@4.0.13(@types/node@22.15.17)': - dependencies: - '@inquirer/core': 10.1.11(@types/node@22.15.17) - '@inquirer/type': 3.0.6(@types/node@22.15.17) - yoctocolors-cjs: 2.1.2 - optionalDependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 '@inquirer/figures@1.0.11': {} - '@inquirer/input@4.1.10(@types/node@22.15.17)': + '@inquirer/input@4.1.10(@types/node@22.15.18)': dependencies: - '@inquirer/core': 10.1.11(@types/node@22.15.17) - '@inquirer/type': 3.0.6(@types/node@22.15.17) + '@inquirer/core': 10.1.11(@types/node@22.15.18) + '@inquirer/type': 3.0.6(@types/node@22.15.18) optionalDependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 - '@inquirer/input@4.1.9(@types/node@22.15.2)': + '@inquirer/number@3.0.13(@types/node@22.15.18)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.15.2) - '@inquirer/type': 3.0.6(@types/node@22.15.2) + '@inquirer/core': 10.1.11(@types/node@22.15.18) + '@inquirer/type': 3.0.6(@types/node@22.15.18) optionalDependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.18 - '@inquirer/number@3.0.12(@types/node@22.15.2)': + '@inquirer/password@4.0.13(@types/node@22.15.18)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.15.2) - '@inquirer/type': 3.0.6(@types/node@22.15.2) - optionalDependencies: - '@types/node': 22.15.2 - - '@inquirer/number@3.0.13(@types/node@22.15.17)': - dependencies: - '@inquirer/core': 10.1.11(@types/node@22.15.17) - '@inquirer/type': 3.0.6(@types/node@22.15.17) - optionalDependencies: - '@types/node': 22.15.17 - - '@inquirer/password@4.0.12(@types/node@22.15.2)': - dependencies: - '@inquirer/core': 10.1.10(@types/node@22.15.2) - '@inquirer/type': 3.0.6(@types/node@22.15.2) + '@inquirer/core': 10.1.11(@types/node@22.15.18) + '@inquirer/type': 3.0.6(@types/node@22.15.18) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.18 - '@inquirer/password@4.0.13(@types/node@22.15.17)': + '@inquirer/prompts@7.5.1(@types/node@22.15.18)': dependencies: - '@inquirer/core': 10.1.11(@types/node@22.15.17) - '@inquirer/type': 3.0.6(@types/node@22.15.17) - ansi-escapes: 4.3.2 + '@inquirer/checkbox': 4.1.6(@types/node@22.15.18) + '@inquirer/confirm': 5.1.10(@types/node@22.15.18) + '@inquirer/editor': 4.2.11(@types/node@22.15.18) + '@inquirer/expand': 4.0.13(@types/node@22.15.18) + '@inquirer/input': 4.1.10(@types/node@22.15.18) + '@inquirer/number': 3.0.13(@types/node@22.15.18) + '@inquirer/password': 4.0.13(@types/node@22.15.18) + '@inquirer/rawlist': 4.1.1(@types/node@22.15.18) + '@inquirer/search': 3.0.13(@types/node@22.15.18) + '@inquirer/select': 4.2.1(@types/node@22.15.18) optionalDependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 - '@inquirer/prompts@7.5.0(@types/node@22.15.2)': + '@inquirer/rawlist@4.1.1(@types/node@22.15.18)': dependencies: - '@inquirer/checkbox': 4.1.5(@types/node@22.15.2) - '@inquirer/confirm': 5.1.9(@types/node@22.15.2) - '@inquirer/editor': 4.2.10(@types/node@22.15.2) - '@inquirer/expand': 4.0.12(@types/node@22.15.2) - '@inquirer/input': 4.1.9(@types/node@22.15.2) - '@inquirer/number': 3.0.12(@types/node@22.15.2) - '@inquirer/password': 4.0.12(@types/node@22.15.2) - '@inquirer/rawlist': 4.1.0(@types/node@22.15.2) - '@inquirer/search': 3.0.12(@types/node@22.15.2) - '@inquirer/select': 4.2.0(@types/node@22.15.2) - optionalDependencies: - '@types/node': 22.15.2 - - '@inquirer/prompts@7.5.1(@types/node@22.15.17)': - dependencies: - '@inquirer/checkbox': 4.1.6(@types/node@22.15.17) - '@inquirer/confirm': 5.1.10(@types/node@22.15.17) - '@inquirer/editor': 4.2.11(@types/node@22.15.17) - '@inquirer/expand': 4.0.13(@types/node@22.15.17) - '@inquirer/input': 4.1.10(@types/node@22.15.17) - '@inquirer/number': 3.0.13(@types/node@22.15.17) - '@inquirer/password': 4.0.13(@types/node@22.15.17) - '@inquirer/rawlist': 4.1.1(@types/node@22.15.17) - '@inquirer/search': 3.0.13(@types/node@22.15.17) - '@inquirer/select': 4.2.1(@types/node@22.15.17) - optionalDependencies: - '@types/node': 22.15.17 - - '@inquirer/rawlist@4.1.0(@types/node@22.15.2)': - dependencies: - '@inquirer/core': 10.1.10(@types/node@22.15.2) - '@inquirer/type': 3.0.6(@types/node@22.15.2) + '@inquirer/core': 10.1.11(@types/node@22.15.18) + '@inquirer/type': 3.0.6(@types/node@22.15.18) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.18 - '@inquirer/rawlist@4.1.1(@types/node@22.15.17)': + '@inquirer/search@3.0.13(@types/node@22.15.18)': dependencies: - '@inquirer/core': 10.1.11(@types/node@22.15.17) - '@inquirer/type': 3.0.6(@types/node@22.15.17) - yoctocolors-cjs: 2.1.2 - optionalDependencies: - '@types/node': 22.15.17 - - '@inquirer/search@3.0.12(@types/node@22.15.2)': - dependencies: - '@inquirer/core': 10.1.10(@types/node@22.15.2) + '@inquirer/core': 10.1.11(@types/node@22.15.18) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@22.15.2) + '@inquirer/type': 3.0.6(@types/node@22.15.18) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.18 - '@inquirer/search@3.0.13(@types/node@22.15.17)': + '@inquirer/select@4.2.1(@types/node@22.15.18)': dependencies: - '@inquirer/core': 10.1.11(@types/node@22.15.17) + '@inquirer/core': 10.1.11(@types/node@22.15.18) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@22.15.17) - yoctocolors-cjs: 2.1.2 - optionalDependencies: - '@types/node': 22.15.17 - - '@inquirer/select@4.2.0(@types/node@22.15.2)': - dependencies: - '@inquirer/core': 10.1.10(@types/node@22.15.2) - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@22.15.2) + '@inquirer/type': 3.0.6(@types/node@22.15.18) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.18 - '@inquirer/select@4.2.1(@types/node@22.15.17)': - dependencies: - '@inquirer/core': 10.1.11(@types/node@22.15.17) - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@22.15.17) - ansi-escapes: 4.3.2 - yoctocolors-cjs: 2.1.2 + '@inquirer/type@3.0.6(@types/node@22.15.18)': optionalDependencies: - '@types/node': 22.15.17 - - '@inquirer/type@3.0.6(@types/node@22.15.17)': - optionalDependencies: - '@types/node': 22.15.17 - - '@inquirer/type@3.0.6(@types/node@22.15.2)': - optionalDependencies: - '@types/node': 22.15.2 + '@types/node': 22.15.18 '@isaacs/cliui@8.0.2': dependencies: @@ -2508,13 +2294,13 @@ snapshots: '@kevisual/ai-center@0.0.3': {} - '@kevisual/cache@0.0.2(rollup@4.40.2)(tslib@2.8.1)(typescript@5.8.2)': + '@kevisual/cache@0.0.2(rollup@4.41.0)(tslib@2.8.1)(typescript@5.8.2)': dependencies: - '@rollup/plugin-commonjs': 28.0.3(rollup@4.40.2) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.40.2) - '@rollup/plugin-typescript': 12.1.2(rollup@4.40.2)(tslib@2.8.1)(typescript@5.8.2) + '@rollup/plugin-commonjs': 28.0.3(rollup@4.41.0) + '@rollup/plugin-node-resolve': 16.0.1(rollup@4.41.0) + '@rollup/plugin-typescript': 12.1.2(rollup@4.41.0)(tslib@2.8.1)(typescript@5.8.2) idb-keyval: 6.2.1 - rollup-plugin-dts: 6.2.1(rollup@4.40.2)(typescript@5.8.2) + rollup-plugin-dts: 6.2.1(rollup@4.41.0)(typescript@5.8.2) transitivePeerDependencies: - rollup - tslib @@ -2524,43 +2310,35 @@ snapshots: dependencies: eventemitter3: 5.0.1 - '@kevisual/local-app-manager@0.1.17(@kevisual/router@0.0.13)(@kevisual/types@0.0.7)(@kevisual/use-config@1.0.11(dotenv@16.5.0))(pm2@6.0.5(supports-color@10.0.0))': + '@kevisual/local-app-manager@0.1.18(@kevisual/router@0.0.20)(@kevisual/types@0.0.10)(@kevisual/use-config@1.0.17(dotenv@16.5.0))(pm2@6.0.6(supports-color@10.0.0))': dependencies: - '@kevisual/router': 0.0.13 - '@kevisual/types': 0.0.7 - '@kevisual/use-config': 1.0.11(dotenv@16.5.0) - pm2: 6.0.5(supports-color@10.0.0) + '@kevisual/router': 0.0.20 + '@kevisual/types': 0.0.10 + '@kevisual/use-config': 1.0.17(dotenv@16.5.0) + pm2: 6.0.6(supports-color@10.0.0) '@kevisual/logger@0.0.3': {} - '@kevisual/query-login@0.0.5(@kevisual/query@0.0.17(@kevisual/ws@8.0.0)(encoding@0.1.13))(rollup@4.40.2)(typescript@5.8.2)': + '@kevisual/query-login@0.0.5(@kevisual/query@0.0.18(@kevisual/ws@8.0.0)(encoding@0.1.13))(rollup@4.41.0)(typescript@5.8.2)': dependencies: - '@kevisual/cache': 0.0.2(rollup@4.40.2)(tslib@2.8.1)(typescript@5.8.2) - '@kevisual/query': 0.0.17(@kevisual/ws@8.0.0)(encoding@0.1.13) + '@kevisual/cache': 0.0.2(rollup@4.41.0)(tslib@2.8.1)(typescript@5.8.2) + '@kevisual/query': 0.0.18(@kevisual/ws@8.0.0)(encoding@0.1.13) dotenv: 16.5.0 transitivePeerDependencies: - rollup - tslib - typescript - '@kevisual/query-login@0.0.5(@kevisual/query@0.0.17(encoding@0.1.13)(ws@8.18.0))(rollup@4.40.2)(typescript@5.8.2)': + '@kevisual/query-login@0.0.5(@kevisual/query@0.0.18(encoding@0.1.13)(ws@8.18.0))(rollup@4.41.0)(typescript@5.8.2)': dependencies: - '@kevisual/cache': 0.0.2(rollup@4.40.2)(tslib@2.8.1)(typescript@5.8.2) - '@kevisual/query': 0.0.17(encoding@0.1.13)(ws@8.18.0) + '@kevisual/cache': 0.0.2(rollup@4.41.0)(tslib@2.8.1)(typescript@5.8.2) + '@kevisual/query': 0.0.18(encoding@0.1.13)(ws@8.18.0) dotenv: 16.5.0 transitivePeerDependencies: - rollup - tslib - typescript - '@kevisual/query@0.0.17(@kevisual/ws@8.0.0)(encoding@0.1.13)': - dependencies: - openai: 4.88.0(@kevisual/ws@8.0.0)(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - ws - - zod - '@kevisual/query@0.0.17(encoding@0.1.13)(ws@8.18.0)': dependencies: openai: 4.88.0(encoding@0.1.13)(ws@8.18.0) @@ -2569,16 +2347,32 @@ snapshots: - ws - zod - '@kevisual/router@0.0.13': + '@kevisual/query@0.0.18(@kevisual/ws@8.0.0)(encoding@0.1.13)': + dependencies: + openai: 4.100.0(@kevisual/ws@8.0.0)(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - ws + - zod + + '@kevisual/query@0.0.18(encoding@0.1.13)(ws@8.18.0)': + dependencies: + openai: 4.100.0(encoding@0.1.13)(ws@8.18.0) + transitivePeerDependencies: + - encoding + - ws + - zod + + '@kevisual/router@0.0.20': dependencies: path-to-regexp: 8.2.0 selfsigned: 2.4.1 - '@kevisual/task-command@0.0.2': {} + '@kevisual/task-command@0.0.7': {} - '@kevisual/types@0.0.7': {} + '@kevisual/types@0.0.10': {} - '@kevisual/use-config@1.0.11(dotenv@16.5.0)': + '@kevisual/use-config@1.0.17(dotenv@16.5.0)': dependencies: '@kevisual/load': 0.0.6 dotenv: 16.5.0 @@ -2650,9 +2444,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@rollup/plugin-commonjs@28.0.3(rollup@4.40.2)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.41.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.40.2) + '@rollup/pluginutils': 5.1.2(rollup@4.41.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.0(picomatch@4.0.2) @@ -2660,103 +2454,99 @@ snapshots: magic-string: 0.30.11 picomatch: 4.0.2 optionalDependencies: - rollup: 4.40.2 + rollup: 4.41.0 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.40.2)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.41.0)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.40.2) + '@rollup/pluginutils': 5.1.2(rollup@4.41.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.40.2 + rollup: 4.41.0 - '@rollup/plugin-typescript@12.1.2(rollup@4.40.2)(tslib@2.8.1)(typescript@5.8.2)': + '@rollup/plugin-typescript@12.1.2(rollup@4.41.0)(tslib@2.8.1)(typescript@5.8.2)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.40.2) + '@rollup/pluginutils': 5.1.2(rollup@4.41.0) resolve: 1.22.8 typescript: 5.8.2 optionalDependencies: - rollup: 4.40.2 + rollup: 4.41.0 tslib: 2.8.1 - '@rollup/pluginutils@5.1.2(rollup@4.40.2)': + '@rollup/pluginutils@5.1.2(rollup@4.41.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.40.2 + rollup: 4.41.0 - '@rollup/rollup-android-arm-eabi@4.40.2': + '@rollup/rollup-android-arm-eabi@4.41.0': optional: true - '@rollup/rollup-android-arm64@4.40.2': + '@rollup/rollup-android-arm64@4.41.0': optional: true - '@rollup/rollup-darwin-arm64@4.40.2': + '@rollup/rollup-darwin-arm64@4.41.0': optional: true - '@rollup/rollup-darwin-x64@4.40.2': + '@rollup/rollup-darwin-x64@4.41.0': optional: true - '@rollup/rollup-freebsd-arm64@4.40.2': + '@rollup/rollup-freebsd-arm64@4.41.0': optional: true - '@rollup/rollup-freebsd-x64@4.40.2': + '@rollup/rollup-freebsd-x64@4.41.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + '@rollup/rollup-linux-arm-gnueabihf@4.41.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.40.2': + '@rollup/rollup-linux-arm-musleabihf@4.41.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.40.2': + '@rollup/rollup-linux-arm64-gnu@4.41.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.40.2': + '@rollup/rollup-linux-arm64-musl@4.41.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + '@rollup/rollup-linux-loongarch64-gnu@4.41.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.41.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.40.2': + '@rollup/rollup-linux-riscv64-gnu@4.41.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.40.2': + '@rollup/rollup-linux-riscv64-musl@4.41.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.40.2': + '@rollup/rollup-linux-s390x-gnu@4.41.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.40.2': + '@rollup/rollup-linux-x64-gnu@4.41.0': optional: true - '@rollup/rollup-linux-x64-musl@4.40.2': + '@rollup/rollup-linux-x64-musl@4.41.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.40.2': + '@rollup/rollup-win32-arm64-msvc@4.41.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.40.2': + '@rollup/rollup-win32-ia32-msvc@4.41.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.40.2': + '@rollup/rollup-win32-x64-msvc@4.41.0': optional: true '@tootallnate/quickjs-emscripten@0.23.0': {} '@types/braces@3.0.5': {} - '@types/bun@1.2.10': - dependencies: - bun-types: 1.2.10 - '@types/bun@1.2.13': dependencies: bun-types: 1.2.13 @@ -2770,7 +2560,7 @@ snapshots: '@types/jsonwebtoken@9.0.9': dependencies: '@types/ms': 0.7.34 - '@types/node': 22.15.17 + '@types/node': 22.15.18 '@types/lodash-es@4.17.12': dependencies: @@ -2788,12 +2578,12 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 form-data: 4.0.2 '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 '@types/node@18.19.80': dependencies: @@ -2803,11 +2593,7 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@22.15.17': - dependencies: - undici-types: 6.21.0 - - '@types/node@22.15.2': + '@types/node@22.15.18': dependencies: undici-types: 6.21.0 @@ -2816,11 +2602,11 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.15.17 + '@types/node': 22.15.18 '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 abort-controller@3.0.0: dependencies: @@ -2854,6 +2640,8 @@ snapshots: ansi-styles@6.2.1: {} + ansis@4.0.0: {} + any-promise@1.3.0: {} anymatch@3.1.3: @@ -2897,13 +2685,9 @@ snapshots: buffer-from@1.1.2: {} - bun-types@1.2.10: - dependencies: - '@types/node': 22.15.17 - bun-types@1.2.13: dependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 bundle-require@5.1.0(esbuild@0.25.0): dependencies: @@ -2964,6 +2748,8 @@ snapshots: commander@13.1.0: {} + commander@14.0.0: {} + commander@2.15.1: {} commander@4.1.1: {} @@ -3304,29 +3090,17 @@ snapshots: ini@1.3.8: {} - inquirer@12.6.0(@types/node@22.15.2): + inquirer@12.6.1(@types/node@22.15.18): dependencies: - '@inquirer/core': 10.1.10(@types/node@22.15.2) - '@inquirer/prompts': 7.5.0(@types/node@22.15.2) - '@inquirer/type': 3.0.6(@types/node@22.15.2) + '@inquirer/core': 10.1.11(@types/node@22.15.18) + '@inquirer/prompts': 7.5.1(@types/node@22.15.18) + '@inquirer/type': 3.0.6(@types/node@22.15.18) ansi-escapes: 4.3.2 mute-stream: 2.0.0 run-async: 3.0.0 rxjs: 7.8.2 optionalDependencies: - '@types/node': 22.15.2 - - inquirer@12.6.1(@types/node@22.15.17): - dependencies: - '@inquirer/core': 10.1.11(@types/node@22.15.17) - '@inquirer/prompts': 7.5.1(@types/node@22.15.17) - '@inquirer/type': 3.0.6(@types/node@22.15.17) - ansi-escapes: 4.3.2 - mute-stream: 2.0.0 - run-async: 3.0.0 - rxjs: 7.8.2 - optionalDependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 ip-address@9.0.5: dependencies: @@ -3535,7 +3309,7 @@ snapshots: dependencies: ee-first: 1.1.1 - openai@4.88.0(@kevisual/ws@8.0.0)(encoding@0.1.13): + openai@4.100.0(@kevisual/ws@8.0.0)(encoding@0.1.13): dependencies: '@types/node': 18.19.80 '@types/node-fetch': 2.6.12 @@ -3549,6 +3323,20 @@ snapshots: transitivePeerDependencies: - encoding + openai@4.100.0(encoding@0.1.13)(ws@8.18.0): + dependencies: + '@types/node': 18.19.80 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.6.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + optionalDependencies: + ws: 8.18.0 + transitivePeerDependencies: + - encoding + openai@4.88.0(encoding@0.1.13)(ws@8.18.0): dependencies: '@types/node': 18.19.80 @@ -3650,15 +3438,15 @@ snapshots: - supports-color optional: true - pm2@6.0.5(supports-color@10.0.0): + pm2@6.0.6(supports-color@10.0.0): dependencies: '@pm2/agent': 2.1.1(supports-color@10.0.0) '@pm2/io': 6.1.0(supports-color@10.0.0) '@pm2/js-api': 0.8.0(supports-color@10.0.0) '@pm2/pm2-version-check': 1.0.4(supports-color@10.0.0) + ansis: 4.0.0 async: 3.2.6 blessed: 0.1.81 - chalk: 3.0.0 chokidar: 3.6.0 cli-tableau: 2.0.1 commander: 2.15.1 @@ -3758,38 +3546,38 @@ snapshots: dependencies: glob: 10.4.5 - rollup-plugin-dts@6.2.1(rollup@4.40.2)(typescript@5.8.2): + rollup-plugin-dts@6.2.1(rollup@4.41.0)(typescript@5.8.2): dependencies: magic-string: 0.30.17 - rollup: 4.40.2 + rollup: 4.41.0 typescript: 5.8.2 optionalDependencies: '@babel/code-frame': 7.26.2 - rollup@4.40.2: + rollup@4.41.0: dependencies: '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.40.2 - '@rollup/rollup-android-arm64': 4.40.2 - '@rollup/rollup-darwin-arm64': 4.40.2 - '@rollup/rollup-darwin-x64': 4.40.2 - '@rollup/rollup-freebsd-arm64': 4.40.2 - '@rollup/rollup-freebsd-x64': 4.40.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 - '@rollup/rollup-linux-arm-musleabihf': 4.40.2 - '@rollup/rollup-linux-arm64-gnu': 4.40.2 - '@rollup/rollup-linux-arm64-musl': 4.40.2 - '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 - '@rollup/rollup-linux-riscv64-gnu': 4.40.2 - '@rollup/rollup-linux-riscv64-musl': 4.40.2 - '@rollup/rollup-linux-s390x-gnu': 4.40.2 - '@rollup/rollup-linux-x64-gnu': 4.40.2 - '@rollup/rollup-linux-x64-musl': 4.40.2 - '@rollup/rollup-win32-arm64-msvc': 4.40.2 - '@rollup/rollup-win32-ia32-msvc': 4.40.2 - '@rollup/rollup-win32-x64-msvc': 4.40.2 + '@rollup/rollup-android-arm-eabi': 4.41.0 + '@rollup/rollup-android-arm64': 4.41.0 + '@rollup/rollup-darwin-arm64': 4.41.0 + '@rollup/rollup-darwin-x64': 4.41.0 + '@rollup/rollup-freebsd-arm64': 4.41.0 + '@rollup/rollup-freebsd-x64': 4.41.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.41.0 + '@rollup/rollup-linux-arm-musleabihf': 4.41.0 + '@rollup/rollup-linux-arm64-gnu': 4.41.0 + '@rollup/rollup-linux-arm64-musl': 4.41.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.41.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.41.0 + '@rollup/rollup-linux-riscv64-gnu': 4.41.0 + '@rollup/rollup-linux-riscv64-musl': 4.41.0 + '@rollup/rollup-linux-s390x-gnu': 4.41.0 + '@rollup/rollup-linux-x64-gnu': 4.41.0 + '@rollup/rollup-linux-x64-musl': 4.41.0 + '@rollup/rollup-win32-arm64-msvc': 4.41.0 + '@rollup/rollup-win32-ia32-msvc': 4.41.0 + '@rollup/rollup-win32-x64-msvc': 4.41.0 fsevents: 2.3.3 run-async@3.0.0: {} @@ -3987,7 +3775,7 @@ snapshots: picocolors: 1.1.1 postcss-load-config: 6.0.1(postcss@8.5.3) resolve-from: 5.0.0 - rollup: 4.40.2 + rollup: 4.41.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 diff --git a/src/command/npm.ts b/src/command/npm.ts index 01ae897..c1a2816 100644 --- a/src/command/npm.ts +++ b/src/command/npm.ts @@ -7,11 +7,18 @@ import { getConfig } from '@/module/get-config.ts'; import fs from 'fs'; import inquirer from 'inquirer'; import { checkPnpm } from '@/uitls/npm.ts'; - +const parseIfJson = (str: string) => { + try { + return JSON.parse(str); + } catch (e) { + return {}; + } +}; const command = new Command('npm').description('npm command show publish and set .npmrc').action(async (options) => {}); const publish = new Command('publish') .argument('[registry]') .option('-p --proxy', 'proxy') + .option('-t, --tag', 'tag') .description('publish npm') .action(async (registry, options) => { const answer = await inquirer.prompt([ @@ -53,15 +60,12 @@ const publish = new Command('publish') switch (registry) { case 'me': cmd = 'npm publish --registry https://npm.xiongxiao.me'; - console.log(chalk.green(cmd)); break; case 'npm': cmd = 'npm publish --registry https://registry.npmjs.org'; - console.log(chalk.green(cmd)); break; default: cmd = 'npm publish --registry https://npm.xiongxiao.me'; - console.log(chalk.green(cmd)); break; } if (fileIsExist(packageJson)) { @@ -72,6 +76,20 @@ const publish = new Command('publish') [key]: config[key], }; }, {}); + const pkg = fs.readFileSync(packageJson, 'utf-8'); + const pkgJson = parseIfJson(pkg); + const version = pkgJson?.version as string; + if (version && options?.tag) { + let tag = String(version).split('-')[1] || ''; + if (tag) { + if (tag.includes('.')) { + tag = tag.split('.')[0]; + } + cmd = `${cmd} --tag ${tag}`; + } + } + console.log(chalk.green(cmd)); + const child = spawn(cmd, { shell: true, cwd: execPath, diff --git a/src/module/download/install.ts b/src/module/download/install.ts index 07e70ec..4647745 100644 --- a/src/module/download/install.ts +++ b/src/module/download/install.ts @@ -94,6 +94,29 @@ const checkDelete = async (opts?: { force?: boolean; dir?: string; yes?: boolean } } }; +export const rewritePkg = (packagePath: string, pkg: Package) => { + const readJsonFile = (filePath: string) => { + try { + return JSON.parse(fs.readFileSync(filePath, 'utf-8')); + } catch (error) { + return {}; + } + }; + try { + const dirname = path.dirname(packagePath); + if (!fs.existsSync(dirname)) { + fs.mkdirSync(dirname, { recursive: true }); + } + const json = readJsonFile(packagePath); + json.id = pkg?.id; + json.appInfo = pkg; + + fs.writeFileSync(packagePath, JSON.stringify(json, null, 2)); + } catch (error) { + fs.writeFileSync(packagePath, JSON.stringify({ appInfo: pkg, id: pkg?.id }, null, 2)); + } + return pkg; +}; type InstallAppOpts = { appDir?: string; kevisualUrl?: string; @@ -118,7 +141,6 @@ export const installApp = async (app: Package, opts: InstallAppOpts = {}) => { try { let files = _app.data.files || []; const version = _app.version; - let hasPackage = false; const user = _app.user; const key = _app.key; const downloadDirPath = appType === 'web' ? path.join(appDir, user, key) : path.join(appDir); @@ -128,9 +150,6 @@ export const installApp = async (app: Package, opts: InstallAppOpts = {}) => { .filter((file: any) => file?.path) .map((file: any) => { const name = file?.name || ''; - if (name.startsWith('package.json')) { - hasPackage = true; - } const noVersionPath = file.path.replace(`/${version}`, ''); let downloadPath = noVersionPath; let downloadUrl = ''; @@ -150,15 +169,7 @@ export const installApp = async (app: Package, opts: InstallAppOpts = {}) => { }); const downloadTasks: DownloadTask[] = downFiles as any; console.log('downloadTasks', downloadTasks); - if (!hasPackage) { - console.log('没有package.json文件, 生成一个'); - const pkg = { ..._app }; - if (pkg.data) { - delete pkg.data.permission; - } - fs.writeFileSync(packagePath, JSON.stringify(pkg, null, 2)); - } - // return; + for (const file of downloadTasks) { const downloadPath = file.downloadPath; const downloadUrl = file.downloadUrl; @@ -186,6 +197,7 @@ export const installApp = async (app: Package, opts: InstallAppOpts = {}) => { // fs.writeFileSync(path.join(appDir, `${user}/${key}/index.html`), JSON.stringify(app, null, 2)); // } _app.data.files = files; + rewritePkg(packagePath, _app); return { code: 200, data: _app, diff --git a/submodules/kevisual-query-login b/submodules/kevisual-query-login index 557cd99..0a0ffbd 160000 --- a/submodules/kevisual-query-login +++ b/submodules/kevisual-query-login @@ -1 +1 @@ -Subproject commit 557cd99b20ae6c051d5b448e32c6fc6075e4b04e +Subproject commit 0a0ffbdb235e01ee3b63745e3d4045e032d42216