diff --git a/CHANGELOG.md b/CHANGELOG.md index f4be9e74f..eb638d909 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +### Bug Fixes + +* 修复火山引擎查不到自定义源站域名的问题 ([02dabe1](https://github.com/certd/certd/commit/02dabe11db3e9b13ca4621ce9ddd2b808bfca390)) +* 修复火山引擎自定义源站域名查询不到的问题 ([e44bf9d](https://github.com/certd/certd/commit/e44bf9d77375d48ac7fd1582e69fae02dfd248fa)) +* **pipeline:** 重构运行时依赖加载逻辑,修复火山引擎DNS解析报runtimeDepsService未初始化的bug ([ec69b8f](https://github.com/certd/certd/commit/ec69b8f11bfd4b20991aef74a72a47182ca79a9d)) + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) ### Bug Fixes diff --git a/docs/guide/changelogs/CHANGELOG.md b/docs/guide/changelogs/CHANGELOG.md index f4be9e74f..eb638d909 100644 --- a/docs/guide/changelogs/CHANGELOG.md +++ b/docs/guide/changelogs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +### Bug Fixes + +* 修复火山引擎查不到自定义源站域名的问题 ([02dabe1](https://github.com/certd/certd/commit/02dabe11db3e9b13ca4621ce9ddd2b808bfca390)) +* 修复火山引擎自定义源站域名查询不到的问题 ([e44bf9d](https://github.com/certd/certd/commit/e44bf9d77375d48ac7fd1582e69fae02dfd248fa)) +* **pipeline:** 重构运行时依赖加载逻辑,修复火山引擎DNS解析报runtimeDepsService未初始化的bug ([ec69b8f](https://github.com/certd/certd/commit/ec69b8f11bfd4b20991aef74a72a47182ca79a9d)) + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 5a54607e4..12ec730e2 100644 --- a/lerna.json +++ b/lerna.json @@ -9,5 +9,5 @@ } }, "npmClient": "pnpm", - "version": "1.42.3" + "version": "1.42.4" } diff --git a/packages/core/acme-client/CHANGELOG.md b/packages/core/acme-client/CHANGELOG.md index 8c6fdf289..8b01a4871 100644 --- a/packages/core/acme-client/CHANGELOG.md +++ b/packages/core/acme-client/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/publishlab/node-acme-client/compare/v1.42.3...v1.42.4) (2026-07-11) + +**Note:** Version bump only for package @certd/acme-client + ## [1.42.3](https://github.com/publishlab/node-acme-client/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/acme-client diff --git a/packages/core/acme-client/package.json b/packages/core/acme-client/package.json index 4f06ec90e..c1fa8a21a 100644 --- a/packages/core/acme-client/package.json +++ b/packages/core/acme-client/package.json @@ -3,7 +3,7 @@ "description": "Simple and unopinionated ACME client", "private": false, "author": "nmorsman", - "version": "1.42.3", + "version": "1.42.4", "type": "module", "module": "./dist/index.js", "main": "./dist/index.js", @@ -18,7 +18,7 @@ "types" ], "dependencies": { - "@certd/basic": "^1.42.3", + "@certd/basic": "^1.42.4", "@peculiar/x509": "^1.11.0", "asn1js": "^3.0.5", "axios": "^1.9.0", @@ -75,5 +75,5 @@ "bugs": { "url": "https://github.com/publishlab/node-acme-client/issues" }, - "gitHead": "a6ef6996c3a68ce0c2a4577a0934ed74a53f0515" + "gitHead": "268cd6cc9cb4f1f3d5d5d77859a82f18f0cb6db7" } diff --git a/packages/core/basic/CHANGELOG.md b/packages/core/basic/CHANGELOG.md index 94a7361c4..802c41db0 100644 --- a/packages/core/basic/CHANGELOG.md +++ b/packages/core/basic/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +**Note:** Version bump only for package @certd/basic + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/basic diff --git a/packages/core/basic/build.md b/packages/core/basic/build.md index 179d3280d..376926ba0 100644 --- a/packages/core/basic/build.md +++ b/packages/core/basic/build.md @@ -1 +1 @@ -23:45 +02:45 diff --git a/packages/core/basic/package.json b/packages/core/basic/package.json index fae4a9342..8c7e91941 100644 --- a/packages/core/basic/package.json +++ b/packages/core/basic/package.json @@ -1,7 +1,7 @@ { "name": "@certd/basic", "private": false, - "version": "1.42.3", + "version": "1.42.4", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", @@ -54,5 +54,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "a6ef6996c3a68ce0c2a4577a0934ed74a53f0515" + "gitHead": "268cd6cc9cb4f1f3d5d5d77859a82f18f0cb6db7" } diff --git a/packages/core/pipeline/CHANGELOG.md b/packages/core/pipeline/CHANGELOG.md index c99fa5612..09aa981e2 100644 --- a/packages/core/pipeline/CHANGELOG.md +++ b/packages/core/pipeline/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +### Bug Fixes + +* **pipeline:** 重构运行时依赖加载逻辑,修复火山引擎DNS解析报runtimeDepsService未初始化的bug ([ec69b8f](https://github.com/certd/certd/commit/ec69b8f11bfd4b20991aef74a72a47182ca79a9d)) + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/pipeline diff --git a/packages/core/pipeline/package.json b/packages/core/pipeline/package.json index ed14813d9..218b20c3e 100644 --- a/packages/core/pipeline/package.json +++ b/packages/core/pipeline/package.json @@ -1,7 +1,7 @@ { "name": "@certd/pipeline", "private": false, - "version": "1.42.3", + "version": "1.42.4", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", @@ -21,8 +21,8 @@ "lint": "eslint --fix" }, "dependencies": { - "@certd/basic": "^1.42.3", - "@certd/plus-core": "^1.42.3", + "@certd/basic": "^1.42.4", + "@certd/plus-core": "^1.42.4", "dayjs": "^1.11.7", "lodash-es": "^4.17.21", "reflect-metadata": "^0.2.2" @@ -51,5 +51,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "a6ef6996c3a68ce0c2a4577a0934ed74a53f0515" + "gitHead": "268cd6cc9cb4f1f3d5d5d77859a82f18f0cb6db7" } diff --git a/packages/core/pipeline/src/access/api.ts b/packages/core/pipeline/src/access/api.ts index 8298b1306..d72c71cc5 100644 --- a/packages/core/pipeline/src/access/api.ts +++ b/packages/core/pipeline/src/access/api.ts @@ -62,9 +62,6 @@ export abstract class BaseAccess implements IAccess { if (!this.runtimeDepsService && this.ctx.serviceGetter) { this.runtimeDepsService = await this.ctx.serviceGetter.get("runtimeDepsService"); } - if (this.runtimeDepsService && this.ctx.define?.name) { - await this.runtimeDepsService.ensureRuntimeDependencies({ pluginKeys: `access:${this.ctx.define.name}`, logger: this.ctx.logger }); - } } async onRequest(req: AccessRequestHandleReq) { diff --git a/packages/core/pipeline/src/access/decorator.ts b/packages/core/pipeline/src/access/decorator.ts index 70779561b..549d9999d 100644 --- a/packages/core/pipeline/src/access/decorator.ts +++ b/packages/core/pipeline/src/access/decorator.ts @@ -47,7 +47,7 @@ export function AccessInput(input?: AccessInputDefine): PropertyDecorator { }; } -export async function newAccess(type: string, input: any, accessService: IAccessService, ctx?: AccessContext) { +export async function newAccess(type: string, input: any, accessService: IAccessService, ctx: AccessContext) { const register = accessRegistry.get(type); if (register == null) { throw new Error(`access ${type} not found`); diff --git a/packages/core/pipeline/src/notification/api.ts b/packages/core/pipeline/src/notification/api.ts index 130d12833..c083fe42c 100644 --- a/packages/core/pipeline/src/notification/api.ts +++ b/packages/core/pipeline/src/notification/api.ts @@ -112,9 +112,6 @@ export abstract class BaseNotification implements INotification { if (!this.runtimeDepsService && this.ctx.serviceGetter) { this.runtimeDepsService = await this.ctx.serviceGetter.get("runtimeDepsService"); } - if (this.runtimeDepsService && this.ctx.define?.name) { - await this.runtimeDepsService.ensureRuntimeDependencies({ pluginKeys: `notification:${this.ctx.define.name}`, logger: this.logger }); - } } setDefine = (define: NotificationDefine) => { this.define = define; diff --git a/packages/core/pipeline/src/plugin/api.ts b/packages/core/pipeline/src/plugin/api.ts index b04d457a6..c01ae3795 100644 --- a/packages/core/pipeline/src/plugin/api.ts +++ b/packages/core/pipeline/src/plugin/api.ts @@ -181,9 +181,6 @@ export abstract class AbstractTaskPlugin implements ITaskPlugin { if (!this.runtimeDepsService && this.ctx.serviceGetter) { this.runtimeDepsService = await this.ctx.serviceGetter.get("runtimeDepsService"); } - if (this.runtimeDepsService && this.ctx.define?.name) { - await this.runtimeDepsService.ensureRuntimeDependencies({ pluginKeys: `plugin:${this.ctx.define.name}`, logger: this.logger }); - } // 将证书加入secret // @ts-ignore if (this.cert && this.cert.crt && this.cert.key) { diff --git a/packages/libs/lib-huawei/CHANGELOG.md b/packages/libs/lib-huawei/CHANGELOG.md index a201dfc75..83f932c7e 100644 --- a/packages/libs/lib-huawei/CHANGELOG.md +++ b/packages/libs/lib-huawei/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +**Note:** Version bump only for package @certd/lib-huawei + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/lib-huawei diff --git a/packages/libs/lib-huawei/package.json b/packages/libs/lib-huawei/package.json index 8af4da08a..5ece06357 100644 --- a/packages/libs/lib-huawei/package.json +++ b/packages/libs/lib-huawei/package.json @@ -1,7 +1,7 @@ { "name": "@certd/lib-huawei", "private": false, - "version": "1.42.3", + "version": "1.42.4", "main": "./dist/bundle.js", "module": "./dist/bundle.js", "types": "./dist/d/index.d.ts", @@ -30,5 +30,5 @@ "prettier": "3.3.3", "tslib": "^2.8.1" }, - "gitHead": "a6ef6996c3a68ce0c2a4577a0934ed74a53f0515" + "gitHead": "268cd6cc9cb4f1f3d5d5d77859a82f18f0cb6db7" } diff --git a/packages/libs/lib-iframe/CHANGELOG.md b/packages/libs/lib-iframe/CHANGELOG.md index 28926719b..31324ea78 100644 --- a/packages/libs/lib-iframe/CHANGELOG.md +++ b/packages/libs/lib-iframe/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +**Note:** Version bump only for package @certd/lib-iframe + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/lib-iframe diff --git a/packages/libs/lib-iframe/package.json b/packages/libs/lib-iframe/package.json index 173f0b394..1b033f740 100644 --- a/packages/libs/lib-iframe/package.json +++ b/packages/libs/lib-iframe/package.json @@ -1,7 +1,7 @@ { "name": "@certd/lib-iframe", "private": false, - "version": "1.42.3", + "version": "1.42.4", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", @@ -37,5 +37,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "a6ef6996c3a68ce0c2a4577a0934ed74a53f0515" + "gitHead": "268cd6cc9cb4f1f3d5d5d77859a82f18f0cb6db7" } diff --git a/packages/libs/lib-jdcloud/CHANGELOG.md b/packages/libs/lib-jdcloud/CHANGELOG.md index daf6e94a1..f2fe238bf 100644 --- a/packages/libs/lib-jdcloud/CHANGELOG.md +++ b/packages/libs/lib-jdcloud/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +**Note:** Version bump only for package @certd/jdcloud + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/jdcloud diff --git a/packages/libs/lib-jdcloud/package.json b/packages/libs/lib-jdcloud/package.json index fdc7a76d9..12ecab32b 100644 --- a/packages/libs/lib-jdcloud/package.json +++ b/packages/libs/lib-jdcloud/package.json @@ -1,6 +1,6 @@ { "name": "@certd/jdcloud", - "version": "1.42.3", + "version": "1.42.4", "description": "jdcloud openApi sdk", "main": "./dist/bundle.js", "module": "./dist/bundle.js", @@ -62,5 +62,5 @@ "fetch" ] }, - "gitHead": "a6ef6996c3a68ce0c2a4577a0934ed74a53f0515" + "gitHead": "268cd6cc9cb4f1f3d5d5d77859a82f18f0cb6db7" } diff --git a/packages/libs/lib-k8s/CHANGELOG.md b/packages/libs/lib-k8s/CHANGELOG.md index a2f1eccae..7fe0455e0 100644 --- a/packages/libs/lib-k8s/CHANGELOG.md +++ b/packages/libs/lib-k8s/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +**Note:** Version bump only for package @certd/lib-k8s + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/lib-k8s diff --git a/packages/libs/lib-k8s/package.json b/packages/libs/lib-k8s/package.json index 808b2b23d..884c0e94c 100644 --- a/packages/libs/lib-k8s/package.json +++ b/packages/libs/lib-k8s/package.json @@ -1,7 +1,7 @@ { "name": "@certd/lib-k8s", "private": false, - "version": "1.42.3", + "version": "1.42.4", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", @@ -21,7 +21,7 @@ "lint": "eslint --fix" }, "dependencies": { - "@certd/basic": "^1.42.3", + "@certd/basic": "^1.42.4", "@kubernetes/client-node": "0.21.0" }, "devDependencies": { @@ -38,5 +38,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "a6ef6996c3a68ce0c2a4577a0934ed74a53f0515" + "gitHead": "268cd6cc9cb4f1f3d5d5d77859a82f18f0cb6db7" } diff --git a/packages/libs/lib-server/CHANGELOG.md b/packages/libs/lib-server/CHANGELOG.md index 4c720e170..8eacd7fc9 100644 --- a/packages/libs/lib-server/CHANGELOG.md +++ b/packages/libs/lib-server/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +### Bug Fixes + +* **pipeline:** 重构运行时依赖加载逻辑,修复火山引擎DNS解析报runtimeDepsService未初始化的bug ([ec69b8f](https://github.com/certd/certd/commit/ec69b8f11bfd4b20991aef74a72a47182ca79a9d)) + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/lib-server diff --git a/packages/libs/lib-server/package.json b/packages/libs/lib-server/package.json index fac990758..cf5d3a727 100644 --- a/packages/libs/lib-server/package.json +++ b/packages/libs/lib-server/package.json @@ -1,6 +1,6 @@ { "name": "@certd/lib-server", - "version": "1.42.3", + "version": "1.42.4", "description": "midway with flyway, sql upgrade way ", "private": false, "type": "module", @@ -29,11 +29,11 @@ ], "license": "AGPL", "dependencies": { - "@certd/acme-client": "^1.42.3", - "@certd/basic": "^1.42.3", - "@certd/pipeline": "^1.42.3", - "@certd/plugin-lib": "^1.42.3", - "@certd/plus-core": "^1.42.3", + "@certd/acme-client": "^1.42.4", + "@certd/basic": "^1.42.4", + "@certd/pipeline": "^1.42.4", + "@certd/plugin-lib": "^1.42.4", + "@certd/plus-core": "^1.42.4", "@midwayjs/cache": "3.14.0", "@midwayjs/core": "3.20.11", "@midwayjs/i18n": "3.20.13", @@ -69,5 +69,5 @@ "typeorm": "^0.3.20", "typescript": "^5.4.2" }, - "gitHead": "a6ef6996c3a68ce0c2a4577a0934ed74a53f0515" + "gitHead": "268cd6cc9cb4f1f3d5d5d77859a82f18f0cb6db7" } diff --git a/packages/libs/lib-server/src/user/access/service/access-getter.ts b/packages/libs/lib-server/src/user/access/service/access-getter.ts index d84686406..d89765c9a 100644 --- a/packages/libs/lib-server/src/user/access/service/access-getter.ts +++ b/packages/libs/lib-server/src/user/access/service/access-getter.ts @@ -1,29 +1,20 @@ -import { IAccessService, IRuntimeDepsService } from "@certd/pipeline"; - -export type AccessRuntimeDepsService = IRuntimeDepsService; +import { IAccessService } from "@certd/pipeline"; export class AccessGetter implements IAccessService { userId: number; projectId?: number; - runtimeDepsService?: AccessRuntimeDepsService; - getter: (id: any, userId?: number, projectId?: number, ignorePermission?: boolean, runtimeDepsService?: AccessRuntimeDepsService) => Promise; - constructor( - userId: number, - projectId: number, - getter: (id: any, userId: number, projectId?: number, ignorePermission?: boolean, runtimeDepsService?: AccessRuntimeDepsService) => Promise, - runtimeDepsService?: AccessRuntimeDepsService - ) { + getter: (id: any, userId?: number, projectId?: number, ignorePermission?: boolean) => Promise; + constructor(userId: number, projectId: number, getter: (id: any, userId: number, projectId?: number, ignorePermission?: boolean) => Promise) { this.userId = userId; this.projectId = projectId; this.getter = getter; - this.runtimeDepsService = runtimeDepsService; } async getById(id: any) { - return await this.getter(id, this.userId, this.projectId, false, this.runtimeDepsService); + return await this.getter(id, this.userId, this.projectId, false); } async getCommonById(id: any) { - return await this.getter(id, 0, null, false, this.runtimeDepsService); + return await this.getter(id, 0, null, false); } } diff --git a/packages/libs/lib-server/src/user/access/service/access-service.ts b/packages/libs/lib-server/src/user/access/service/access-service.ts index 44be1c588..9292ef965 100644 --- a/packages/libs/lib-server/src/user/access/service/access-service.ts +++ b/packages/libs/lib-server/src/user/access/service/access-service.ts @@ -1,8 +1,8 @@ -import { Inject, Provide, Scope, ScopeEnum } from "@midwayjs/core"; +import { ApplicationContext, Inject, Provide, Scope, ScopeEnum } from "@midwayjs/core"; +import type { IMidwayContainer } from "@midwayjs/core"; import { InjectEntityModel } from "@midwayjs/typeorm"; import { In, Repository } from "typeorm"; import { AccessGetter, BaseService, PageReq, PermissionException, ValidateException } from "../../../index.js"; -import type { AccessRuntimeDepsService } from "./access-getter.js"; import { AccessEntity } from "../entity/access.js"; import { AccessDefine, accessRegistry, newAccess } from "@certd/pipeline"; import { EncryptService } from "./encrypt-service.js"; @@ -20,6 +20,9 @@ export class AccessService extends BaseService { @Inject() encryptService: EncryptService; + @ApplicationContext() + applicationContext: IMidwayContainer; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore getRepository() { @@ -161,7 +164,7 @@ export class AccessService extends BaseService { }; } - async getAccessById(id: any, checkUserId: boolean, userId?: number, projectId?: number, runtimeDepsService?: AccessRuntimeDepsService): Promise { + async getAccessById(id: any, checkUserId: boolean, userId?: number, projectId?: number): Promise { const entity = await this.info(id); if (entity == null) { throw new Error(`该授权配置不存在,请确认是否已被删除:id=${id}`); @@ -184,20 +187,23 @@ export class AccessService extends BaseService { id: entity.id, ...setting, }; + const taskServiceBuilder: any = await this.applicationContext.getAsync("taskServiceBuilder"); + const serviceGetter = taskServiceBuilder.create({ userId: userId || 0, projectId }); const getAccessById = this.getById.bind(this); - const accessGetter = new AccessGetter(userId, projectId, getAccessById, runtimeDepsService); + const accessGetter = new AccessGetter(userId, projectId, getAccessById); const accessContext = { logger, http, utils, accessService: accessGetter, + serviceGetter, } as any; const access = await newAccess(entity.type, input, accessGetter, accessContext); return access; } - async getById(id: any, userId: number, projectId?: number, _ignorePermission?: boolean, runtimeDepsService?: AccessRuntimeDepsService): Promise { - return await this.getAccessById(id, true, userId, projectId, runtimeDepsService); + async getById(id: any, userId: number, projectId?: number, _ignorePermission?: boolean): Promise { + return await this.getAccessById(id, true, userId, projectId); } decryptAccessEntity(entity: AccessEntity): any { diff --git a/packages/libs/lib-server/src/user/addon/api/api.ts b/packages/libs/lib-server/src/user/addon/api/api.ts index 9d56e3578..b5ccf937f 100644 --- a/packages/libs/lib-server/src/user/addon/api/api.ts +++ b/packages/libs/lib-server/src/user/addon/api/api.ts @@ -121,9 +121,6 @@ export abstract class BaseAddon implements IAddon { if (!this.runtimeDepsService && this.ctx.serviceGetter) { this.runtimeDepsService = await this.ctx.serviceGetter.get("runtimeDepsService"); } - if (this.runtimeDepsService && this.define?.addonType && this.define?.name) { - await this.runtimeDepsService.ensureRuntimeDependencies({ pluginKeys: `addon:${this.define.addonType}:${this.define.name}`, logger: this.logger }); - } } setDefine = (define:AddonDefine) => { this.define = define; diff --git a/packages/libs/midway-flyway-js/CHANGELOG.md b/packages/libs/midway-flyway-js/CHANGELOG.md index d47e33278..4387d3279 100644 --- a/packages/libs/midway-flyway-js/CHANGELOG.md +++ b/packages/libs/midway-flyway-js/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +**Note:** Version bump only for package @certd/midway-flyway-js + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/midway-flyway-js diff --git a/packages/libs/midway-flyway-js/package.json b/packages/libs/midway-flyway-js/package.json index d88ec6a84..625be1329 100644 --- a/packages/libs/midway-flyway-js/package.json +++ b/packages/libs/midway-flyway-js/package.json @@ -1,6 +1,6 @@ { "name": "@certd/midway-flyway-js", - "version": "1.42.3", + "version": "1.42.4", "description": "midway with flyway, sql upgrade way ", "private": false, "type": "module", @@ -52,5 +52,5 @@ "typeorm": "^0.3.20", "typescript": "^5.4.2" }, - "gitHead": "a6ef6996c3a68ce0c2a4577a0934ed74a53f0515" + "gitHead": "268cd6cc9cb4f1f3d5d5d77859a82f18f0cb6db7" } diff --git a/packages/plugins/plugin-cert/CHANGELOG.md b/packages/plugins/plugin-cert/CHANGELOG.md index c4d7b7296..883cd55a5 100644 --- a/packages/plugins/plugin-cert/CHANGELOG.md +++ b/packages/plugins/plugin-cert/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +**Note:** Version bump only for package @certd/plugin-cert + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/plugin-cert diff --git a/packages/plugins/plugin-cert/package.json b/packages/plugins/plugin-cert/package.json index e8ae001df..d8e14ad92 100644 --- a/packages/plugins/plugin-cert/package.json +++ b/packages/plugins/plugin-cert/package.json @@ -1,7 +1,7 @@ { "name": "@certd/plugin-cert", "private": false, - "version": "1.42.3", + "version": "1.42.4", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -20,7 +20,7 @@ "lint": "eslint --fix" }, "dependencies": { - "@certd/plugin-lib": "^1.42.3" + "@certd/plugin-lib": "^1.42.4" }, "devDependencies": { "@types/chai": "^4.3.12", @@ -38,5 +38,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "a6ef6996c3a68ce0c2a4577a0934ed74a53f0515" + "gitHead": "268cd6cc9cb4f1f3d5d5d77859a82f18f0cb6db7" } diff --git a/packages/plugins/plugin-lib/CHANGELOG.md b/packages/plugins/plugin-lib/CHANGELOG.md index 07a2f7a48..cc90f9688 100644 --- a/packages/plugins/plugin-lib/CHANGELOG.md +++ b/packages/plugins/plugin-lib/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +### Bug Fixes + +* **pipeline:** 重构运行时依赖加载逻辑,修复火山引擎DNS解析报runtimeDepsService未初始化的bug ([ec69b8f](https://github.com/certd/certd/commit/ec69b8f11bfd4b20991aef74a72a47182ca79a9d)) + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/plugin-lib diff --git a/packages/plugins/plugin-lib/package.json b/packages/plugins/plugin-lib/package.json index 9391739c6..a01889b31 100644 --- a/packages/plugins/plugin-lib/package.json +++ b/packages/plugins/plugin-lib/package.json @@ -1,7 +1,7 @@ { "name": "@certd/plugin-lib", "private": false, - "version": "1.42.3", + "version": "1.42.4", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -17,9 +17,9 @@ "lint": "eslint --fix" }, "dependencies": { - "@certd/acme-client": "^1.42.3", - "@certd/basic": "^1.42.3", - "@certd/pipeline": "^1.42.3", + "@certd/acme-client": "^1.42.4", + "@certd/basic": "^1.42.4", + "@certd/pipeline": "^1.42.4", "dayjs": "^1.11.7", "jszip": "^3.10.1", "lodash-es": "^4.17.21", @@ -45,5 +45,5 @@ "tslib": "^2.8.1", "typescript": "^5.4.2" }, - "gitHead": "a6ef6996c3a68ce0c2a4577a0934ed74a53f0515" + "gitHead": "268cd6cc9cb4f1f3d5d5d77859a82f18f0cb6db7" } diff --git a/packages/plugins/plugin-lib/src/cert/dns-provider/base.ts b/packages/plugins/plugin-lib/src/cert/dns-provider/base.ts index b74df800b..45e1c2933 100644 --- a/packages/plugins/plugin-lib/src/cert/dns-provider/base.ts +++ b/packages/plugins/plugin-lib/src/cert/dns-provider/base.ts @@ -45,9 +45,6 @@ export abstract class AbstractDnsProvider implements IDnsProvider { if (!this.runtimeDepsService && this.ctx.serviceGetter) { this.runtimeDepsService = await this.ctx.serviceGetter.get("runtimeDepsService"); } - if (this.runtimeDepsService && this.ctx.define?.name) { - await this.runtimeDepsService.ensureRuntimeDependencies({ pluginKeys: `dnsProvider:${this.ctx.define.name}`, logger: this.logger }); - } } async parseDomain(fullDomain: string) { diff --git a/packages/ui/certd-client/CHANGELOG.md b/packages/ui/certd-client/CHANGELOG.md index df6859ac8..55cf22b64 100644 --- a/packages/ui/certd-client/CHANGELOG.md +++ b/packages/ui/certd-client/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +**Note:** Version bump only for package @certd/ui-client + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) **Note:** Version bump only for package @certd/ui-client diff --git a/packages/ui/certd-client/package.json b/packages/ui/certd-client/package.json index f814dae6a..15a72f3d5 100644 --- a/packages/ui/certd-client/package.json +++ b/packages/ui/certd-client/package.json @@ -1,6 +1,6 @@ { "name": "@certd/ui-client", - "version": "1.42.3", + "version": "1.42.4", "private": true, "scripts": { "dev": "vite --open", @@ -105,8 +105,8 @@ "zod-defaults": "^0.1.3" }, "devDependencies": { - "@certd/lib-iframe": "^1.42.3", - "@certd/pipeline": "^1.42.3", + "@certd/lib-iframe": "^1.42.4", + "@certd/pipeline": "^1.42.4", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.12", diff --git a/packages/ui/certd-server/CHANGELOG.md b/packages/ui/certd-server/CHANGELOG.md index 36a79bc81..a3c9b79a1 100644 --- a/packages/ui/certd-server/CHANGELOG.md +++ b/packages/ui/certd-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.42.4](https://github.com/certd/certd/compare/v1.42.3...v1.42.4) (2026-07-11) + +### Bug Fixes + +* 修复火山引擎查不到自定义源站域名的问题 ([02dabe1](https://github.com/certd/certd/commit/02dabe11db3e9b13ca4621ce9ddd2b808bfca390)) +* 修复火山引擎自定义源站域名查询不到的问题 ([e44bf9d](https://github.com/certd/certd/commit/e44bf9d77375d48ac7fd1582e69fae02dfd248fa)) +* **pipeline:** 重构运行时依赖加载逻辑,修复火山引擎DNS解析报runtimeDepsService未初始化的bug ([ec69b8f](https://github.com/certd/certd/commit/ec69b8f11bfd4b20991aef74a72a47182ca79a9d)) + ## [1.42.3](https://github.com/certd/certd/compare/v1.42.2...v1.42.3) (2026-07-08) ### Bug Fixes diff --git a/packages/ui/certd-server/metadata/deploy_VolcengineDeployToVOD.yaml b/packages/ui/certd-server/metadata/deploy_VolcengineDeployToVOD.yaml index c6182cf26..bd7bfde31 100644 --- a/packages/ui/certd-server/metadata/deploy_VolcengineDeployToVOD.yaml +++ b/packages/ui/certd-server/metadata/deploy_VolcengineDeployToVOD.yaml @@ -96,24 +96,11 @@ input: label: 点播加速域名 - value: image label: 封面加速域名 + - value: third + label: 自定义源站 value: play required: true order: 0 - sourceStationType: - title: 源站类型 - helper: 选择源站类型 - value: 1 - component: - name: a-select - vModel: value - options: - - value: 1 - label: 点播源站 - - value: 2 - label: 自定义源站 - helper: 注意:封面加速域名不支持自定义源站 - required: false - order: 0 domainList: title: 域名 component: @@ -132,7 +119,6 @@ input: - accessId - spaceName - domainType - - sourceStationType required: true mergeScript: |2- diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index 8594b22be..a9bc7b9fb 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -1,6 +1,6 @@ { "name": "@certd/ui-server", - "version": "1.42.3", + "version": "1.42.4", "description": "fast-server base midway", "private": true, "type": "module", @@ -41,20 +41,20 @@ "lint1": "eslint --fix" }, "dependencies": { - "@certd/acme-client": "^1.42.3", - "@certd/basic": "^1.42.3", - "@certd/commercial-core": "^1.42.3", + "@certd/acme-client": "^1.42.4", + "@certd/basic": "^1.42.4", + "@certd/commercial-core": "^1.42.4", "@certd/cv4pve-api-javascript": "^8.4.2", - "@certd/jdcloud": "^1.42.3", - "@certd/lib-huawei": "^1.42.3", - "@certd/lib-k8s": "^1.42.3", - "@certd/lib-server": "^1.42.3", - "@certd/midway-flyway-js": "^1.42.3", - "@certd/pipeline": "^1.42.3", - "@certd/plugin-cert": "^1.42.3", - "@certd/plugin-lib": "^1.42.3", - "@certd/plugin-plus": "^1.42.3", - "@certd/plus-core": "^1.42.3", + "@certd/jdcloud": "^1.42.4", + "@certd/lib-huawei": "^1.42.4", + "@certd/lib-k8s": "^1.42.4", + "@certd/lib-server": "^1.42.4", + "@certd/midway-flyway-js": "^1.42.4", + "@certd/pipeline": "^1.42.4", + "@certd/plugin-cert": "^1.42.4", + "@certd/plugin-lib": "^1.42.4", + "@certd/plugin-plus": "^1.42.4", + "@certd/plus-core": "^1.42.4", "@koa/cors": "^5.0.0", "@midwayjs/bootstrap": "3.20.11", "@midwayjs/cache": "3.14.0", @@ -71,7 +71,6 @@ "@peculiar/x509": "^1.11.0", "@simplewebauthn/browser": "^13.2.2", "@simplewebauthn/server": "^13.2.3", - "alipay-sdk": "^4.13.0", "axios": "^1.9.0", "bcryptjs": "^2.4.3", "better-sqlite3": "^11.1.2", @@ -96,8 +95,6 @@ "nanoid": "^5.0.7", "node-forge": "^1.3.1", "nodemailer": "^6.9.16", - "openid-client": "^6.8.1", - "otplib": "^12.0.1", "pg": "^8.12.0", "psl": "^1.15.0", "punycode.js": "^2.3.1", @@ -113,7 +110,6 @@ "svg-captcha": "^1.4.0", "typeorm": "^0.3.20", "uuid": "^10.0.0", - "wechatpay-node-v3": "^2.2.1", "whoiser": "2.0.0-beta.10", "xml2js": "^0.6.2" }, @@ -170,7 +166,11 @@ "@google-cloud/publicca": "^1.3.0", "basic-ftp": "^5.0.5", "esdk-obs-nodejs": "^3.25.6", - "qiniu": "^7.12.0" + "qiniu": "^7.12.0", + "alipay-sdk": "^4.13.0", + "wechatpay-node-v3": "^2.2.1", + "openid-client": "^6.8.1", + "otplib": "^12.0.1" }, "engines": { "node": ">=20.0.0" diff --git a/packages/ui/certd-server/src/controller/user/mine/mine-controller.ts b/packages/ui/certd-server/src/controller/user/mine/mine-controller.ts index 0935aafaf..40c4accf2 100644 --- a/packages/ui/certd-server/src/controller/user/mine/mine-controller.ts +++ b/packages/ui/certd-server/src/controller/user/mine/mine-controller.ts @@ -10,6 +10,7 @@ import { ApiTags } from "@midwayjs/swagger"; import { CodeService } from "../../../modules/basic/service/code-service.js"; import { EmailService } from "../../../modules/basic/service/email-service.js"; import { AuditType } from "../../../modules/sys/enterprise/service/audit-constants.js"; +import { TaskServiceBuilder } from "../../../modules/pipeline/service/getter/task-service-getter.js"; /** */ @@ -44,6 +45,8 @@ export class MineController extends BaseController { getAuditType(): string { return AuditType.mine; } + @Inject() + taskServiceBuilder: TaskServiceBuilder; @Post("/info", { description: Constants.per.authOnly, summary: "查询用户信息" }) public async info() { @@ -186,11 +189,13 @@ export class MineController extends BaseController { const getAccessById = this.accessService.getById.bind(this.accessService); const accessGetter = new AccessGetter(userId, undefined, getAccessById); + const serviceGetter = this.taskServiceBuilder.create({ userId }); const accessContext = { http, logger, utils, accessService: accessGetter, + serviceGetter, define: undefined, } as any; const access = await newAccess("acmeAccount", { caType: "letsencrypt", email: userEmail }, accessGetter, accessContext); diff --git a/packages/ui/certd-server/src/controller/user/pipeline/handle-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/handle-controller.ts index 021e310c1..9751a0544 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/handle-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/handle-controller.ts @@ -8,7 +8,6 @@ import { TaskServiceBuilder } from "../../../modules/pipeline/service/getter/tas import { cloneDeep } from "lodash-es"; import { ApiTags } from "@midwayjs/swagger"; import { AuthService } from "../../../modules/sys/authority/service/auth-service.js"; -import { RuntimeDepsService } from "../../../modules/runtime-deps/runtime-deps-service.js"; @Provide() @Controller("/api/pi/handle") @@ -29,9 +28,6 @@ export class HandleController extends BaseController { @Inject() notificationService: NotificationService; - @Inject() - runtimeDepsService: RuntimeDepsService; - @Post("/access", { description: Constants.per.authOnly, summary: "处理授权请求" }) async accessRequest(@Body(ALL) body: AccessRequestHandleReq) { let { projectId, userId } = await this.getProjectUserIdRead(); @@ -64,12 +60,14 @@ export class HandleController extends BaseController { } } const getAccessById = this.accessService.getById.bind(this.accessService); - const accessGetter = new AccessGetter(userId, projectId, getAccessById, this.runtimeDepsService); + const accessGetter = new AccessGetter(userId, projectId, getAccessById); + const serviceGetter = this.taskServiceBuilder.create({ userId, projectId }); const accessContext = { http, logger, utils, accessService: accessGetter, + serviceGetter, define: undefined, } as any; const access = await newAccess(body.typeName, inputAccess, accessGetter, accessContext); diff --git a/packages/ui/certd-server/src/modules/auto/auto-load-plugins.ts b/packages/ui/certd-server/src/modules/auto/auto-load-plugins.ts index 7ea7b0bb1..3b9ed1b84 100644 --- a/packages/ui/certd-server/src/modules/auto/auto-load-plugins.ts +++ b/packages/ui/certd-server/src/modules/auto/auto-load-plugins.ts @@ -2,6 +2,7 @@ import { Inject, Provide, Scope, ScopeEnum } from "@midwayjs/core"; import { logger } from "@certd/basic"; import { PluginService } from "../plugin/service/plugin-service.js"; import { registerPaymentProviders } from "../suite/payments/index.js"; +import { RuntimeDepsService } from "../runtime-deps/runtime-deps-service.js"; @Provide() @Scope(ScopeEnum.Request, { allowDowngrade: true }) @@ -9,6 +10,9 @@ export class AutoLoadPlugins { @Inject() pluginService: PluginService; + @Inject() + runtimeDepsService: RuntimeDepsService; + async init() { logger.info(`加载插件开始,加载模式:${process.env.certd_plugin_loadmode}`); if (process.env.certd_plugin_loadmode === "metadata") { @@ -30,5 +34,8 @@ export class AutoLoadPlugins { await registerPaymentProviders(); logger.info(`加载插件完成,加载模式:${process.env.certd_plugin_loadmode}`); + + // 收集插件 dependPackages 并安装 + await this.runtimeDepsService.refreshPluginDeps(); } } diff --git a/packages/ui/certd-server/src/modules/mine/service/two-factor-service.ts b/packages/ui/certd-server/src/modules/mine/service/two-factor-service.ts index 1e0a7f764..8075afc62 100644 --- a/packages/ui/certd-server/src/modules/mine/service/two-factor-service.ts +++ b/packages/ui/certd-server/src/modules/mine/service/two-factor-service.ts @@ -2,6 +2,7 @@ import { Inject, Provide, Scope, ScopeEnum } from "@midwayjs/core"; import { UserSettingsService } from "./user-settings-service.js"; import { UserTwoFactorSetting } from "./models.js"; import { UserService } from "../../sys/authority/service/user-service.js"; +import { RuntimeDepsService } from "../../runtime-deps/runtime-deps-service.js"; /** * 授权 @@ -13,13 +14,15 @@ export class TwoFactorService { userSettingsService: UserSettingsService; @Inject() userService: UserService; + @Inject() + runtimeDepsService: RuntimeDepsService; async getAuthenticatorQrCode(userId: any) { const setting = await this.getSetting(userId); const authenticatorSetting = setting.authenticator; if (!authenticatorSetting.secret) { - const { authenticator } = await import("otplib"); + const { authenticator } = await this.runtimeDepsService.importRuntime("otplib"); authenticatorSetting.secret = authenticator.generateSecret(); await this.userSettingsService.saveSetting(userId, null, setting); @@ -38,7 +41,7 @@ export class TwoFactorService { async saveAuthenticator(req: { userId: any; verifyCode: any }) { const userId = req.userId; - const { authenticator } = await import("otplib"); + const { authenticator } = await this.runtimeDepsService.importRuntime("otplib"); const setting = await this.getSetting(userId); const authenticatorSetting = setting.authenticator; @@ -77,7 +80,7 @@ export class TwoFactorService { } async verifyAuthenticatorCode(userId: any, verifyCode: string) { - const { authenticator } = await import("otplib"); + const { authenticator } = await this.runtimeDepsService.importRuntime("otplib"); const setting = await this.getSetting(userId); if (!setting.authenticator.enabled) { throw new Error("authenticator 未开启"); diff --git a/packages/ui/certd-server/src/modules/pipeline/service/getter/task-service-getter.ts b/packages/ui/certd-server/src/modules/pipeline/service/getter/task-service-getter.ts index 4c68bf1cb..2f60acb82 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/getter/task-service-getter.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/getter/task-service-getter.ts @@ -66,9 +66,8 @@ export class TaskServiceGetter implements IServiceGetter { async getAccessService(): Promise { const accessService: AccessService = await this.appCtx.getAsync("accessService"); - const runtimeDepsService = await this.getRuntimeDepsService(); const getAccessById = accessService.getById.bind(accessService); - return new AccessGetter(this.userId, this.projectId, getAccessById, runtimeDepsService); + return new AccessGetter(this.userId, this.projectId, getAccessById); } async getCnameProxyService(): Promise { diff --git a/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts index c3c6b1bf9..fe1700c4c 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts @@ -974,6 +974,7 @@ export class PipelineService extends BaseService { await this.checkUserId(id, projectId, "projectId"); } await this.delete(id); + ids.push(id); } return ids.length; } diff --git a/packages/ui/certd-server/src/modules/plugin/service/plugin-service.ts b/packages/ui/certd-server/src/modules/plugin/service/plugin-service.ts index 7b578639b..b7a2f4676 100644 --- a/packages/ui/certd-server/src/modules/plugin/service/plugin-service.ts +++ b/packages/ui/certd-server/src/modules/plugin/service/plugin-service.ts @@ -270,6 +270,7 @@ export class PluginService extends BaseService { return; } await this.registerPlugin(item); + await this.runtimeDepsService.refreshPluginDeps(); } async unRegisterById(id: any) { @@ -297,6 +298,7 @@ export class PluginService extends BaseService { } else { logger.warn(`不支持的插件类型:${item.pluginType}`); } + await this.runtimeDepsService.refreshPluginDeps(); } async update(param: any) { diff --git a/packages/ui/certd-server/src/modules/runtime-deps/runtime-deps-service.ts b/packages/ui/certd-server/src/modules/runtime-deps/runtime-deps-service.ts index af13cb9c0..d6c7ef39b 100644 --- a/packages/ui/certd-server/src/modules/runtime-deps/runtime-deps-service.ts +++ b/packages/ui/certd-server/src/modules/runtime-deps/runtime-deps-service.ts @@ -150,6 +150,11 @@ export class RuntimeDepsService { @Config("runtimeDeps.lazyDependencies") lazyDependencies: Record = {}; + /** + * 从插件 registry 收集到的懒加载依赖,键为包名,值为版本范围 + */ + pluginLazyDependencies: Record = {}; + @Inject() registryResolver!: NpmRegistryResolver; @@ -339,7 +344,8 @@ export class RuntimeDepsService { private async resolveMissingRuntimeSpecifier(specifier: string, runtimeError: any, logger?: ILogger) { const packageName = this.parsePackageName(specifier); - const lazyRange = this.lazyDependencies?.[packageName]; + const mergedDeps = this.getMergedLazyDependencies(); + const lazyRange = mergedDeps[packageName]; if (!lazyRange) { try { return this.resolveProjectSpecifier(specifier, runtimeError).resolved; @@ -565,6 +571,56 @@ export class RuntimeDepsService { }); } + /** + * 合并 package.json 的 lazyDependencies 和插件注册表收集到的 dependPackages + * 插件依赖优先(同名时使用插件声明的版本) + */ + getMergedLazyDependencies(): Record { + return { ...this.lazyDependencies, ...this.pluginLazyDependencies }; + } + + /** + * 从所有插件注册表中收集 dependPackages,合并到 pluginLazyDependencies + */ + collectPluginDeps() { + const registries: Array<{ registry: Registry; keyFormatter?: (name: string) => string }> = [ + { registry: pluginRegistry }, + { registry: accessRegistry }, + { registry: notificationRegistry }, + { registry: dnsProviderRegistry }, + { registry: addonRegistry }, + ]; + + const deps: Record = {}; + for (const { registry } of registries) { + const defineList = registry.getDefineList(); + for (const define of defineList) { + const dependPackages = (define as any).dependPackages as Record | undefined; + if (!dependPackages) { + continue; + } + for (const [pkgName, range] of Object.entries(dependPackages)) { + const existing = deps[pkgName]; + if (existing && !areRangesCompatible(existing, range)) { + logger.warn(`懒加载依赖版本冲突: ${pkgName} => ${existing} vs ${range},保留已有版本`); + continue; + } + deps[pkgName] = range; + } + } + } + + this.pluginLazyDependencies = deps; + logger.info(`从插件注册表收集到 ${Object.keys(deps).length} 个懒加载依赖`); + } + + /** + * 刷新插件懒加载依赖:收集所有插件的 dependPackages 到内存列表,实际安装延迟到 importRuntime 时触发 + */ + async refreshPluginDeps() { + this.collectPluginDeps(); + } + private readInstallState(statePath: string): any { if (!fs.existsSync(statePath)) { return null; diff --git a/packages/ui/certd-server/src/modules/suite/payments/alipay.ts b/packages/ui/certd-server/src/modules/suite/payments/alipay.ts index 19cd19eb4..0e17efea0 100644 --- a/packages/ui/certd-server/src/modules/suite/payments/alipay.ts +++ b/packages/ui/certd-server/src/modules/suite/payments/alipay.ts @@ -105,7 +105,7 @@ export class PaymentAlipay implements IPaymentProvider { } private async createAlipaySdk() { - const AlipaySdk = await import("alipay-sdk"); + const AlipaySdk = await this.access.importRuntime("alipay-sdk"); const alipaySdk = new AlipaySdk.AlipaySdk({ appId: this.access.appId, diff --git a/packages/ui/certd-server/src/modules/suite/payments/wxpay.ts b/packages/ui/certd-server/src/modules/suite/payments/wxpay.ts index 727cfbdef..e9dee7834 100644 --- a/packages/ui/certd-server/src/modules/suite/payments/wxpay.ts +++ b/packages/ui/certd-server/src/modules/suite/payments/wxpay.ts @@ -1,7 +1,6 @@ import { IPaymentProvider, TradeEntity, UpdateTrade, UpdateTradeInfo } from "@certd/commercial-core"; -import WxPay from "wechatpay-node-v3"; import dayjs from "dayjs"; -import { logger } from "@certd/basic"; // 支持使用require +import { logger } from "@certd/basic"; import { WxpayAccess } from "../../../plugins/plugin-plus/wxpay/access.js"; export class PaymentWxpay implements IPaymentProvider { access: WxpayAccess; @@ -26,7 +25,7 @@ export class PaymentWxpay implements IPaymentProvider { * } */ - const pay = this.createSdk(); + const pay = await this.createSdk(); const result: any = await pay.query({ out_trade_no: tradeNo }); logger.info(`微信支付查询订单返回:${JSON.stringify(result)}`); @@ -58,7 +57,7 @@ export class PaymentWxpay implements IPaymentProvider { async createOrder(trade: TradeEntity, opts: { bindUrl: string; clientIp: string }) { const notify_url = `${opts.bindUrl}/api/payment/notify/wxpay`; - const pay = this.createSdk(); + const pay = await this.createSdk(); const params = { description: trade.title, @@ -83,7 +82,9 @@ export class PaymentWxpay implements IPaymentProvider { }; } - private createSdk() { + private async createSdk() { + const WxPayLib = await this.access.importRuntime("wechatpay-node-v3"); + const WxPay = WxPayLib.default; const pay = new WxPay({ appid: this.access.appId, mchid: this.access.mchid, @@ -94,7 +95,7 @@ export class PaymentWxpay implements IPaymentProvider { } async onNotify(notifyData: any, updateTrade: UpdateTrade) { - const pay = this.createSdk(); + const pay = await this.createSdk(); const { ciphertext, associated_data, nonce } = notifyData.resource; logger.info(`微信支付notify:${JSON.stringify(notifyData)}`); const key = this.access.key; diff --git a/packages/ui/certd-server/src/plugins/plugin-nginx-proxy-manager/access.ts b/packages/ui/certd-server/src/plugins/plugin-nginx-proxy-manager/access.ts index df212ad79..1d86f6f34 100644 --- a/packages/ui/certd-server/src/plugins/plugin-nginx-proxy-manager/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-nginx-proxy-manager/access.ts @@ -1,6 +1,5 @@ import { AccessInput, BaseAccess, IsAccess } from "@certd/pipeline"; import FormData from "form-data"; -import { authenticator } from "otplib"; export interface ProxyHost { id: number; @@ -274,6 +273,7 @@ export class NginxProxyManagerAccess extends BaseAccess { let code: string; try { + const { authenticator } = await this.importRuntime("otplib"); code = authenticator.generate(this.totpSecret); } catch (error) { throw this.describeError(error, "Generating TOTP code"); diff --git a/packages/ui/certd-server/src/plugins/plugin-nginx-proxy-manager/nginxProxyManager.yaml b/packages/ui/certd-server/src/plugins/plugin-nginx-proxy-manager/nginxProxyManager.yaml index f9398a200..59932d6df 100644 --- a/packages/ui/certd-server/src/plugins/plugin-nginx-proxy-manager/nginxProxyManager.yaml +++ b/packages/ui/certd-server/src/plugins/plugin-nginx-proxy-manager/nginxProxyManager.yaml @@ -57,12 +57,12 @@ input: action: TestRequest helper: 测试登录并拉取代理主机列表。 content: | - const { BaseAccess } = await import("@certd/pipeline"); - const httpsModule = await import("node:https"); - const { URL } = await import("node:url"); - const axiosModule = await import("axios"); - const formDataModule = await import("form-data"); - const { authenticator } = await import("otplib"); + const runtimeImport = import; + const { BaseAccess } = await runtimeImport("@certd/pipeline"); + const httpsModule = await runtimeImport("node:https"); + const { URL } = await runtimeImport("node:url"); + const axiosModule = await runtimeImport("axios"); + const formDataModule = await runtimeImport("form-data"); const https = httpsModule.default ?? httpsModule; const axios = axiosModule.default ?? axiosModule; @@ -114,6 +114,7 @@ content: | class NginxProxyManagerClient { constructor(options) { this.options = options; + this.importFn = options.importFn; this.endpoint = normalizeEndpoint(options.endpoint); this.apiBaseUrl = `${this.endpoint}/api`; this.token = undefined; @@ -267,6 +268,7 @@ content: | let code; try { + const { authenticator } = await this.importFn("otplib"); code = authenticator.generate(this.options.totpSecret); } catch (error) { throw describeError(error, "Generating TOTP code"); @@ -327,6 +329,7 @@ content: | password: this.password, totpSecret: this.totpSecret || undefined, ignoreTls: this.ignoreTls === true, + importFn: this.importRuntime.bind(this), }); } diff --git a/packages/ui/certd-server/src/plugins/plugin-oauth/oidc/plugin-oidc.ts b/packages/ui/certd-server/src/plugins/plugin-oauth/oidc/plugin-oidc.ts index 1af5a922e..40731ba40 100644 --- a/packages/ui/certd-server/src/plugins/plugin-oauth/oidc/plugin-oidc.ts +++ b/packages/ui/certd-server/src/plugins/plugin-oauth/oidc/plugin-oidc.ts @@ -49,7 +49,7 @@ export class OidcOauthProvider extends BaseAddon implements IOauthProvider { issuerUrl = ""; async getClient() { - const client = await import("openid-client"); + const client = await this.importRuntime("openid-client"); const server = new URL(this.issuerUrl); // Authorization Server's Issuer Identifier const config = await client.discovery(server, this.clientId, this.clientSecretKey); diff --git a/packages/ui/certd-server/src/plugins/plugin-volcengine/cdn-client.ts b/packages/ui/certd-server/src/plugins/plugin-volcengine/cdn-client.ts index 148f7185c..3678ede0e 100644 --- a/packages/ui/certd-server/src/plugins/plugin-volcengine/cdn-client.ts +++ b/packages/ui/certd-server/src/plugins/plugin-volcengine/cdn-client.ts @@ -14,7 +14,8 @@ export class VolcengineCdnClient { if (this.service) { return this.service; } - const { cdn } = await this.opts.access.importRuntime("@volcengine/openapi"); + const importRuntime = this.opts.importRuntime || this.opts.access.importRuntime.bind(this.opts.access); + const { cdn } = await importRuntime("@volcengine/openapi"); const service = new cdn.CdnService(); // 设置ak、sk service.setAccessKeyId(this.opts.access.accessKeyId); diff --git a/packages/ui/certd-server/src/plugins/plugin-volcengine/dns-client.ts b/packages/ui/certd-server/src/plugins/plugin-volcengine/dns-client.ts index 7d604ad54..68cd49738 100644 --- a/packages/ui/certd-server/src/plugins/plugin-volcengine/dns-client.ts +++ b/packages/ui/certd-server/src/plugins/plugin-volcengine/dns-client.ts @@ -21,7 +21,8 @@ export class VolcengineDnsClient { } async doRequest(req: VolcengineReq) { - const { Signer } = await this.opts.access.importRuntime("@volcengine/openapi"); + const importRuntime = this.opts.importRuntime || this.opts.access.importRuntime.bind(this.opts.access); + const { Signer } = await importRuntime("@volcengine/openapi"); // http request data const openApiRequestData: any = { diff --git a/packages/ui/certd-server/src/plugins/plugin-volcengine/ve-client.ts b/packages/ui/certd-server/src/plugins/plugin-volcengine/ve-client.ts index 82fd34623..2bd2725ff 100644 --- a/packages/ui/certd-server/src/plugins/plugin-volcengine/ve-client.ts +++ b/packages/ui/certd-server/src/plugins/plugin-volcengine/ve-client.ts @@ -1,10 +1,12 @@ import { VolcengineAccess } from "./access.js"; import { HttpClient, ILogger } from "@certd/basic"; +import { ImportRuntime } from "@certd/pipeline"; export type VolcengineOpts = { access: VolcengineAccess; logger: ILogger; http: HttpClient; + importRuntime?: ImportRuntime; }; export class VolcengineClient { @@ -140,7 +142,8 @@ export class VolcengineClient { } async getTOSService(opts: { region?: string }) { - const { TosClient } = await this.opts.access.importRuntime("@volcengine/tos-sdk"); + const importRuntime = this.opts.importRuntime || this.opts.access.importRuntime.bind(this.opts.access); + const { TosClient } = await importRuntime("@volcengine/tos-sdk"); const client = new TosClient({ accessKeyId: this.opts.access.accessKeyId, @@ -169,7 +172,8 @@ export class VolcengineClient { if (this.CommonService) { return this.CommonService; } - const { Service } = await this.opts.access.importRuntime("@volcengine/openapi"); + const importRuntime = this.opts.importRuntime || this.opts.access.importRuntime.bind(this.opts.access); + const { Service } = await importRuntime("@volcengine/openapi"); class CommonService extends Service { Generic: any; diff --git a/packages/ui/certd-server/src/plugins/plugin-volcengine/volcengine-dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-volcengine/volcengine-dns-provider.ts index 3bf5b35ee..762a74ae8 100644 --- a/packages/ui/certd-server/src/plugins/plugin-volcengine/volcengine-dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-volcengine/volcengine-dns-provider.ts @@ -22,6 +22,7 @@ export class VolcengineDnsProvider extends AbstractDnsProvider { access: this.access, logger: this.logger, http: this.http, + importRuntime: this.importRuntime.bind(this), }); } diff --git a/trigger/build.trigger b/trigger/build.trigger index 78c144b10..f8e0bc578 100644 --- a/trigger/build.trigger +++ b/trigger/build.trigger @@ -1 +1 @@ -23:48 +02:48 diff --git a/trigger/release.trigger b/trigger/release.trigger index e4dc5b58d..4c82fa5e8 100644 --- a/trigger/release.trigger +++ b/trigger/release.trigger @@ -1 +1 @@ -00:00 +03:41