Compare commits

...

7 Commits

Author SHA1 Message Date
xiaojunnuo 7b6b71cd4b chore: 1 2026-04-08 10:36:02 +08:00
xiaojunnuo df98463325 fix: 修复自定义插件删除后没有反注册的bug 2026-04-07 23:36:05 +08:00
xiaojunnuo f7492db8bd docs: admin mode docs 2026-04-07 23:07:12 +08:00
xiaojunnuo 70b46d4a8f fix: 修复spaceship创建record报错的bug
https://github.com/certd/certd/issues/705
2026-04-07 22:29:30 +08:00
xiaojunnuo 411486e1e7 build: release 2026-04-06 01:53:40 +08:00
xiaojunnuo 6f81305232 build: publish 2026-04-06 01:26:21 +08:00
xiaojunnuo 79bc22d8ce build: trigger build image 2026-04-06 01:26:09 +08:00
29 changed files with 240 additions and 106 deletions
+1
View File
@@ -124,6 +124,7 @@ export default defineConfig({
{text: "子域名托管", link: "/guide/use/cert/subdomain.md"},
{text: "流水线有效期", link: "/guide/use/pipeline/valid.md"},
{text: "IP证书申请", link: "/guide/use/cert/ip.md"},
{text: "企业模式", link: "/guide/use/mode/enterprise.md"},
{text: "插件开发", link: "/guide/use/dev/plugin.md"},
]
},
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.39.9](https://github.com/certd/certd/compare/v1.39.8...v1.39.9) (2026-04-05)
### Bug Fixes
* 修复cn域名获取不到到期时间的问题 ([73b8e85](https://github.com/certd/certd/commit/73b8e859766097b5251fc4e5051593d686669eb2))
* 修复某些情况下报无法修改通知的问题 ([d1a6592](https://github.com/certd/certd/commit/d1a65922d7e152d6edcf6c53b70079f16b54a0d3))
### Performance Improvements
* 腾讯云CLB大区增加台北 ([6b109d1](https://github.com/certd/certd/commit/6b109d172f0c7b6ce6ec164dc196d646a65f529f))
* 优化腾讯云CLB插件支持选择证书id ([c875971](https://github.com/certd/certd/commit/c875971b71dc6d392e56f0a7605281c40d9bb405))
* 支持域名到期时间监控通知 ([c6628e7](https://github.com/certd/certd/commit/c6628e7311d6c43c2a784581fb25ec37b29c168d))
* **monitor:** 支持查看监控执行记录 ([b5cc794](https://github.com/certd/certd/commit/b5cc794061c11b7200b669473c25c4bbfc944b61))
* **plugin-dnsmgr:** 添加彩虹DNS插件支持 ([af50344](https://github.com/certd/certd/commit/af503442b8298c5b89d11cf2ea351d62e66a609e))
* **spaceship:** 新增Spaceship DNS插件和授权模块 ([21aec77](https://github.com/certd/certd/commit/21aec77e5c3307b5973d4185baba33edcb28926f))
## [1.39.8](https://github.com/certd/certd/compare/v1.39.7...v1.39.8) (2026-03-31)
### Bug Fixes
+40
View File
@@ -0,0 +1,40 @@
# 企业模式(项目管理)
## 模式简介
Certd支持两种管理模式,`SaaS模式(默认)``企业模式`
![](../../../../packages/ui/certd-client/public/static/images/ent/admin_mode.png)
## SaaS模式
* 默认的模式,每个用户管理自己的流水线和授权资源,每个用户独立使用。
* Certd系统作为SaaS提供证书自动申请部署服务,您的客户注册即可使用,无需自己部署
## 企业模式
* 通过项目合作管理流水线证书和授权资源,所有用户视为企业内部员工。
* 当你想在企业内部使用,企业内部有多个项目,各个项目成员共同管理项目资源和证书时可以启用此模式
* 需要在"系统设置->管理模式"中开启`企业模式`
![](./images/admin_mode.jpg)
::: warning
* 建议在开始使用时固定一个合适的模式,之后就不要随意切换了。
* 商业版不能使用企业模式,因为商业版提供功能价值在于SaaS服务,与企业模式冲突
:::
### 数据迁移
模式之间数据不互通,您可以通过个人数据迁移功能将数据转到项目之下
#### 个人数据迁移到项目
注意:此操作不可逆,请谨慎操作
![](./images/transfer.jpg)
#### 流水线数据转到其他项目
项目之间流水线数据可以转移,依赖的授权数据会同步复制一份
![](./images/move.png)
Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

+1 -1
View File
@@ -70,5 +70,5 @@
"bugs": {
"url": "https://github.com/publishlab/node-acme-client/issues"
},
"gitHead": "de0ae14544f1c3da4923dddc6a1a3bea4db295e7"
"gitHead": "1c634a702af9298d25542acc270d68f71d9b1049"
}
+1 -1
View File
@@ -47,5 +47,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "de0ae14544f1c3da4923dddc6a1a3bea4db295e7"
"gitHead": "1c634a702af9298d25542acc270d68f71d9b1049"
}
+1 -1
View File
@@ -45,5 +45,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "de0ae14544f1c3da4923dddc6a1a3bea4db295e7"
"gitHead": "1c634a702af9298d25542acc270d68f71d9b1049"
}
+1 -1
View File
@@ -24,5 +24,5 @@
"prettier": "^2.8.8",
"tslib": "^2.8.1"
},
"gitHead": "de0ae14544f1c3da4923dddc6a1a3bea4db295e7"
"gitHead": "1c634a702af9298d25542acc270d68f71d9b1049"
}
+1 -1
View File
@@ -31,5 +31,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "de0ae14544f1c3da4923dddc6a1a3bea4db295e7"
"gitHead": "1c634a702af9298d25542acc270d68f71d9b1049"
}
+1 -1
View File
@@ -56,5 +56,5 @@
"fetch"
]
},
"gitHead": "de0ae14544f1c3da4923dddc6a1a3bea4db295e7"
"gitHead": "1c634a702af9298d25542acc270d68f71d9b1049"
}
+1 -1
View File
@@ -33,5 +33,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "de0ae14544f1c3da4923dddc6a1a3bea4db295e7"
"gitHead": "1c634a702af9298d25542acc270d68f71d9b1049"
}
+1 -1
View File
@@ -64,5 +64,5 @@
"typeorm": "^0.3.11",
"typescript": "^5.4.2"
},
"gitHead": "de0ae14544f1c3da4923dddc6a1a3bea4db295e7"
"gitHead": "1c634a702af9298d25542acc270d68f71d9b1049"
}
@@ -76,10 +76,12 @@ export abstract class BaseService<T> {
* @param where
*/
async delete(ids: string | any[], where?: any) {
const idArr = this.resolveIdArr(ids);
let idArr = this.resolveIdArr(ids);
idArr = this.filterIds(idArr);
if (idArr.length === 0) {
return;
}
await this.getRepository().delete({
id: In(idArr),
...where,
@@ -94,7 +96,9 @@ export abstract class BaseService<T> {
}
if (typeof ids === 'string') {
return ids.split(',');
} else {
} else if(!Array.isArray(ids)){
return [ids];
}else {
return ids;
}
}
@@ -217,6 +221,7 @@ export abstract class BaseService<T> {
if (!Array.isArray(ids)) {
ids = [ids];
}
ids = this.filterIds(ids);
const res = await this.getRepository().find({
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
@@ -234,7 +239,16 @@ export abstract class BaseService<T> {
throw new PermissionException('权限不足');
}
filterIds(ids: any[]) {
if (!ids) {
throw new ValidateException('ids不能为空');
}
return ids.filter((item) => {
return item!=null && item != ""
});
}
async batchDelete(ids: number[], userId: number,projectId?:number) {
ids = this.filterIds(ids);
if(userId!=null){
const list = await this.getRepository().find({
where: {
+1 -1
View File
@@ -46,5 +46,5 @@
"typeorm": "^0.3.11",
"typescript": "^5.4.2"
},
"gitHead": "de0ae14544f1c3da4923dddc6a1a3bea4db295e7"
"gitHead": "1c634a702af9298d25542acc270d68f71d9b1049"
}
+1 -1
View File
@@ -38,5 +38,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "de0ae14544f1c3da4923dddc6a1a3bea4db295e7"
"gitHead": "1c634a702af9298d25542acc270d68f71d9b1049"
}
+1 -1
View File
@@ -57,5 +57,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "de0ae14544f1c3da4923dddc6a1a3bea4db295e7"
"gitHead": "1c634a702af9298d25542acc270d68f71d9b1049"
}
@@ -204,13 +204,13 @@ const vipTypeDefine: any = {
desc: t("vip.community_free_version"),
type: "free",
icon: "lucide:package-open",
privilege: [t("vip.unlimited_certificate_application"), t("vip.unlimited_domain_count"), t("vip.unlimited_certificate_pipelines"), t("vip.common_deployment_plugins"), t("vip.email_webhook_notifications")],
privilege: t("vip.free_privilege").split("\n"),
},
plus: {
title: t("vip.professional_edition"),
desc: t("vip.open_source_support"),
type: "plus",
privilege: [t("vip.vip_group_priority"), t("vip.unlimited_site_certificate_monitoring"), t("vip.more_notification_methods"), t("vip.plugins_fully_open")],
privilege: t("vip.plus_privilege").split("\n"),
trial: {
title: t("vip.click_to_get_7_day_trial"),
click: () => {
@@ -227,7 +227,7 @@ const vipTypeDefine: any = {
desc: t("vip.commercial_license"),
type: "comm",
icon: "vaadin:handshake",
privilege: [t("vip.all_pro_privileges"), t("vip.allow_commercial_use_modify_logo_title"), t("vip.data_statistics"), t("vip.plugin_management"), t("vip.unlimited_multi_users"), t("vip.support_user_payment")],
privilege: t("vip.comm_privilege").split("\n"),
priceText: props.productInfo.comm.priceText || `¥${props.productInfo.comm.price}/${t("vip.years")}`,
discountText: props.productInfo.comm.discountText || `¥${props.productInfo.comm.price3}/3${t("vip.years")}`,
tooltip: props.productInfo.comm.tooltip,
@@ -53,6 +53,7 @@ export default {
unlimited_certificate_pipelines: "Unlimited certificate pipelines",
common_deployment_plugins: "Common host, cloud platform, CDN, Baota, 1Panel deployment plugins",
email_webhook_notifications: "Email, webhook notification methods",
free_privilege: "Unlimited certificate applications\nUnlimited domain count\nUnlimited certificate pipelines\nCommon host, cloud platform, CDN, Baota, 1Panel deployment plugins\nEmail, webhook notification methods",
professional_edition: "Professional Edition",
open_source_support: "Open source requires your sponsorship support",
@@ -60,6 +61,7 @@ export default {
unlimited_site_certificate_monitoring: "Unlimited site certificate monitoring",
more_notification_methods: "More notification methods",
plugins_fully_open: "All plugins open, including Synology and more",
plus_privilege: "Access to VIP group, your requests will have priority\nUnlimited site certificate monitoring\nMore notification methods\nAll plugins open, including Synology and more",
click_to_get_7_day_trial: "Click to get 7-day trial",
years: "years",
afdian_support_vip: "Obtain the permanent professional version coupon",
@@ -73,6 +75,7 @@ export default {
plugin_management: "Plugin management",
unlimited_multi_users: "Unlimited multi-users",
support_user_payment: "Supports user payments",
comm_privilege: "All professional edition privileges\nAllows commercial use, can modify logo and title\nData statistics\nPlugin management\nUnlimited multi-users\nSupports user payments",
contact_author_for_trial: "Buy It Now",
activate: "Activate",
get_pro_code_after_support: "Go to sponsoring",
@@ -53,6 +53,7 @@ export default {
unlimited_certificate_pipelines: "证书流水线数量无限制",
common_deployment_plugins: "常用的主机、云平台、cdn、宝塔、1Panel等部署插件",
email_webhook_notifications: "邮件、webhook通知方式",
free_privilege: "证书申请无限制\n域名数量无限制\n证书流水线数量无限制\n常用的主机、云平台、cdn、宝塔、1Panel等部署插件\n邮件、webhook通知方式",
professional_edition: "专业版",
open_source_support: "开源需要您的赞助支持,个人和企业内部使用",
@@ -60,6 +61,7 @@ export default {
unlimited_site_certificate_monitoring: "站点证书监控无限制",
more_notification_methods: "更多通知方式",
plugins_fully_open: "插件全开放,群晖等更多插件",
plus_privilege: "可加VIP群,您的需求将优先实现\n站点证书监控无限制\n更多通知方式\n插件全开放,群晖等更多插件\n企业模式,项目管理\n域名到期监控\n第三方登录,PassKey登录",
click_to_get_7_day_trial: "点击获取7天试用",
years: "年",
afdian_support_vip: "新用户开通永久专业版立享50优惠券",
@@ -73,6 +75,7 @@ export default {
plugin_management: "插件管理",
unlimited_multi_users: "多用户无限制",
support_user_payment: "支持用户支付(购买套餐,按流水线条数、域名数量、部署次数计费)",
comm_privilege: "拥有专业版所有特权\n允许商用,可修改logo、标题\n数据统计\n插件管理\n多用户无限制\n支持用户支付(购买套餐,按流水线条数、域名数量、部署次数计费)",
activate: "激活",
get_pro_code_after_support: "前往获取",
business_contact_author: "",
@@ -9,6 +9,7 @@ import yaml from "js-yaml";
import { usePluginImport } from "./use-import";
import { usePluginConfig } from "./use-config";
import { useSettingStore } from "/src/store/settings/index";
import { usePluginStore } from "/@/store/plugin";
export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet {
const router = useRouter();
@@ -43,6 +44,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
const { openConfigDialog } = usePluginConfig();
const settingStore = useSettingStore();
const pluginStore = usePluginStore();
return {
crudOptions: {
settings: {
@@ -83,6 +85,15 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
},
},
},
table: {
rowKey: "name",
remove: {
afterRemove: async context => {
await pluginStore.reload();
},
confirmMessage: "确定要删除吗?如果该插件已被使用,删除可能会导致流水线执行失败!",
},
},
rowHandle: {
show: true,
minWidth: 200,
@@ -142,9 +153,6 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
},
},
},
table: {
rowKey: "name",
},
tabs: {
name: "type",
show: true,
@@ -58,7 +58,8 @@ export class PluginController extends CrudController<PluginService> {
@Post('/delete', { description: 'sys:settings:edit' })
async delete(@Query('id') id: number) {
return super.deleteByIds([id]);
const res = await this.service.deleteByIds([id]);
return this.ok(res);
}
@Post('/deleteByIds', { description: 'sys:settings:edit' })
@@ -524,15 +524,12 @@ export class PluginService extends BaseService<PluginEntity> {
id: pluginEntity.id
};
}
async deleteByIds(ids: any[]) {
ids = this.filterIds(ids);
for (const id of ids) {
await this.unRegisterById(id)
await this.unRegisterById(id);
await this.delete(id);
}
}
}
@@ -37,7 +37,7 @@ export class SpaceshipAccess extends BaseAccess {
name: "api-test",
action: "TestRequest"
},
helper: "测试 API 连接是否正常"
helper: "测试 API 连接是否正常,需要域名查询权限"
})
testRequest = true;
@@ -48,7 +48,7 @@ export class SpaceshipAccess extends BaseAccess {
async doRequest(options: {
url: string;
method: 'GET' | 'POST' | 'DELETE';
method: 'GET' | 'POST' | 'DELETE' | 'PUT';
params?: any;
data?: any;
}) {
@@ -3,11 +3,7 @@ import { SpaceshipAccess } from "./access.js";
import { PageRes, PageSearch } from "@certd/pipeline";
export type SpaceshipRecord = {
id: string;
name: string;
type: string;
content: string;
domainId: string;
};
@IsDnsProvider({
@@ -32,8 +28,9 @@ export class SpaceshipProvider extends AbstractDnsProvider<SpaceshipRecord> {
await this.access.getDomainInfo(domain);
const recordRes = await this.access.doRequest({
url: `https://spaceship.dev/api/v1/domains/${domain}/records`,
method: "POST",
// https://spaceship.dev/api/v1/dns/records/{domain}
url: `https://spaceship.dev/api/v1/dns/records/${domain}`,
method: "PUT",
data: {
force: false,
items: [
@@ -41,40 +38,33 @@ export class SpaceshipProvider extends AbstractDnsProvider<SpaceshipRecord> {
type: type,
value: value,
name: hostRecord,
ttl: 300
ttl: 60
}
]
}
});
return {
id: recordRes.items[0].id,
name: hostRecord,
type: type,
content: value,
domainId: domain
};
return recordRes;
}
async removeRecord(options: RemoveRecordOptions<SpaceshipRecord>): Promise<void> {
const recordRes = options.recordRes;
this.logger.info("删除域名解析:", recordRes);
const recordReq = options.recordReq;
this.logger.info("删除域名解析:", recordReq);
await this.access.doRequest({
url: `https://spaceship.dev/api/v1/domains/${recordRes.domainId}/records`,
// https://spaceship.dev/api/v1/dns/records/xxx.net
url: `https://spaceship.dev/api/v1/dns/records/${recordReq.domain}`,
method: "DELETE",
data: {
Records: [
{
type: recordRes.type,
value: recordRes.content,
name: recordRes.name
}
]
}
data: [
{
type: recordReq.type,
value: recordReq.value,
name: recordReq.hostRecord
}
]
});
this.logger.info("删除域名解析成功:", recordRes.name);
this.logger.info("删除域名解析成功:", JSON.stringify(recordReq));
}
async getDomainListPage(req: PageSearch): Promise<PageRes<DomainRecord>> {
+111 -50
View File
@@ -49,7 +49,7 @@ importers:
packages/core/acme-client:
dependencies:
'@certd/basic':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../basic
'@peculiar/x509':
specifier: ^1.11.0
@@ -213,11 +213,11 @@ importers:
packages/core/pipeline:
dependencies:
'@certd/basic':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../basic
'@certd/plus-core':
specifier: ^1.39.8
version: link:../../pro/plus-core
specifier: ^1.39.9
version: 1.39.9
dayjs:
specifier: ^1.11.7
version: 1.11.13
@@ -412,7 +412,7 @@ importers:
packages/libs/lib-k8s:
dependencies:
'@certd/basic':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/basic
'@kubernetes/client-node':
specifier: 0.21.0
@@ -452,20 +452,20 @@ importers:
packages/libs/lib-server:
dependencies:
'@certd/acme-client':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../plugins/plugin-lib
'@certd/plus-core':
specifier: ^1.39.8
version: link:../../pro/plus-core
specifier: ^1.39.9
version: 1.39.9
'@midwayjs/cache':
specifier: 3.14.0
version: 3.14.0
@@ -610,16 +610,16 @@ importers:
packages/plugins/plugin-cert:
dependencies:
'@certd/acme-client':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../plugin-lib
psl:
specifier: ^1.9.0
@@ -683,17 +683,17 @@ importers:
specifier: ^3.964.0
version: 3.964.0(aws-crt@1.26.2)
'@certd/acme-client':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/pipeline
'@certd/plus-core':
specifier: ^1.39.8
version: link:../../pro/plus-core
specifier: ^1.39.9
version: 1.39.9
'@kubernetes/client-node':
specifier: 0.21.0
version: 0.21.0
@@ -783,16 +783,16 @@ importers:
packages/pro/commercial-core:
dependencies:
'@certd/basic':
specifier: ^1.39.8
specifier: ^1.39.7
version: link:../../core/basic
'@certd/lib-server':
specifier: ^1.39.8
specifier: ^1.39.7
version: link:../../libs/lib-server
'@certd/pipeline':
specifier: ^1.39.8
specifier: ^1.39.7
version: link:../../core/pipeline
'@certd/plus-core':
specifier: ^1.39.8
specifier: ^1.39.7
version: link:../plus-core
'@midwayjs/core':
specifier: 3.20.11
@@ -868,16 +868,16 @@ importers:
packages/pro/plugin-plus:
dependencies:
'@certd/basic':
specifier: ^1.39.8
specifier: ^1.39.7
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.39.8
specifier: ^1.39.7
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.39.8
specifier: ^1.39.7
version: link:../../plugins/plugin-lib
'@certd/plus-core':
specifier: ^1.39.8
specifier: ^1.39.7
version: link:../plus-core
crypto-js:
specifier: ^4.2.0
@@ -953,7 +953,7 @@ importers:
packages/pro/plus-core:
dependencies:
'@certd/basic':
specifier: ^1.39.8
specifier: ^1.39.7
version: link:../../core/basic
dayjs:
specifier: ^1.11.7
@@ -1249,10 +1249,10 @@ importers:
version: 0.1.3(zod@3.24.4)
devDependencies:
'@certd/lib-iframe':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../libs/lib-iframe
'@certd/pipeline':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/pipeline
'@rollup/plugin-commonjs':
specifier: ^25.0.7
@@ -1447,47 +1447,47 @@ importers:
specifier: ^3.990.0
version: 3.990.0(aws-crt@1.26.2)
'@certd/acme-client':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/basic
'@certd/commercial-core':
specifier: ^1.39.8
version: link:../../pro/commercial-core
specifier: ^1.39.9
version: 1.39.9(better-sqlite3@11.10.0)(mysql2@3.14.1)(pg@8.16.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@18.19.100)(typescript@5.9.3))
'@certd/cv4pve-api-javascript':
specifier: ^8.4.2
version: 8.4.2
'@certd/jdcloud':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../libs/lib-jdcloud
'@certd/lib-huawei':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../libs/lib-huawei
'@certd/lib-k8s':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../libs/lib-k8s
'@certd/lib-server':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../libs/lib-server
'@certd/midway-flyway-js':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../libs/midway-flyway-js
'@certd/pipeline':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../core/pipeline
'@certd/plugin-cert':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../plugins/plugin-cert
'@certd/plugin-lib':
specifier: ^1.39.8
specifier: ^1.39.9
version: link:../../plugins/plugin-lib
'@certd/plugin-plus':
specifier: ^1.39.8
version: link:../../pro/plugin-plus
specifier: ^1.39.9
version: 1.39.9
'@certd/plus-core':
specifier: ^1.39.8
version: link:../../pro/plus-core
specifier: ^1.39.9
version: 1.39.9
'@google-cloud/publicca':
specifier: ^1.3.0
version: 1.3.0(encoding@0.1.13)
@@ -2838,9 +2838,18 @@ packages:
'@better-scroll/zoom@2.5.1':
resolution: {integrity: sha512-aGvFY5ooeZWS4RcxQLD+pGLpQHQxpPy0sMZV3yadcd2QK53PK9gS4Dp+BYfRv8lZ4/P2LoNEhr6Wq1DN6+uPlA==}
'@certd/commercial-core@1.39.9':
resolution: {integrity: sha512-oq4rWrK6Xxy9hkxZaUbQbZ2pFgtRcPuqlg9Ud1vtzO8zmFkZY48j+vsUH0V32k1dNr75BIl9r9RFY2Vwc6rcVg==}
'@certd/cv4pve-api-javascript@8.4.2':
resolution: {integrity: sha512-udGce7ewrVl4DmZvX+17PjsnqsdDIHEDatr8QP0AVrY2p+8JkaSPW4mXCKiLGf82C9K2+GXgT+qNIqgW7tfF9Q==}
'@certd/plugin-plus@1.39.9':
resolution: {integrity: sha512-OdY0glIHQeaGUYwH8KvN++go4QB5KUBmRvw1jzIDKu5pHZEKkEij0UBfeDv8a5CC9ynA+4/aoNPCvB0tncNuCg==}
'@certd/plus-core@1.39.9':
resolution: {integrity: sha512-75Wo4KQoHFxhWwLB3XjRC+ihButagGiaxiwS1u4oVzESW9EqQ+XKcGEw/WJF3oh81dE7orexo2nA4p/PdoTSlg==}
'@certd/vue-js-cron-core@6.0.3':
resolution: {integrity: sha512-kqzoAMhYz9j6FGNWEODRYtt4NpUEUwjpkU89z5WVg2tCtOcI5VhwyUGOd8AxiBCRfd6PtXvzuqw85PaOps9wrQ==}
@@ -15146,12 +15155,64 @@ snapshots:
dependencies:
'@better-scroll/core': 2.5.1
'@certd/commercial-core@1.39.9(better-sqlite3@11.10.0)(mysql2@3.14.1)(pg@8.16.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@18.19.100)(typescript@5.9.3))':
dependencies:
'@certd/basic': link:packages/core/basic
'@certd/lib-server': link:packages/libs/lib-server
'@certd/pipeline': link:packages/core/pipeline
'@certd/plus-core': 1.39.9
'@midwayjs/core': 3.20.11
'@midwayjs/koa': 3.20.13
'@midwayjs/logger': 3.4.2
'@midwayjs/swagger': 3.20.11
'@midwayjs/typeorm': 3.20.11
dayjs: 1.11.13
typeorm: 0.3.24(better-sqlite3@11.10.0)(mysql2@3.14.1)(pg@8.16.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@18.19.100)(typescript@5.9.3))
transitivePeerDependencies:
- '@google-cloud/spanner'
- '@sap/hana-client'
- babel-plugin-macros
- better-sqlite3
- hdb-pool
- ioredis
- mongodb
- mssql
- mysql2
- oracledb
- pg
- pg-native
- pg-query-stream
- redis
- reflect-metadata
- sql.js
- sqlite3
- supports-color
- ts-node
- typeorm-aurora-data-api-driver
'@certd/cv4pve-api-javascript@8.4.2':
dependencies:
debug: 4.4.3(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
'@certd/plugin-plus@1.39.9':
dependencies:
'@certd/basic': link:packages/core/basic
'@certd/pipeline': link:packages/core/pipeline
'@certd/plugin-lib': link:packages/plugins/plugin-lib
'@certd/plus-core': 1.39.9
crypto-js: 4.2.0
dayjs: 1.11.13
form-data: 4.0.2
jsrsasign: 11.1.0
querystring: 0.2.1
'@certd/plus-core@1.39.9':
dependencies:
'@certd/basic': link:packages/core/basic
dayjs: 1.11.13
'@certd/vue-js-cron-core@6.0.3':
dependencies:
mustache: 4.2.0
@@ -20864,13 +20925,13 @@ snapshots:
resolve: 1.22.10
semver: 6.3.1
eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@7.32.0))(eslint@7.32.0)(prettier@2.8.8):
eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@7.32.0)(prettier@2.8.8):
dependencies:
eslint: 7.32.0
prettier: 2.8.8
prettier-linter-helpers: 1.0.0
optionalDependencies:
eslint-config-prettier: 8.10.0(eslint@7.32.0)
eslint-config-prettier: 8.10.0(eslint@8.57.0)
eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8):
dependencies:
@@ -23296,7 +23357,7 @@ snapshots:
eslint: 7.32.0
eslint-config-prettier: 8.10.0(eslint@7.32.0)
eslint-plugin-node: 11.1.0(eslint@7.32.0)
eslint-plugin-prettier: 3.4.1(eslint-config-prettier@8.10.0(eslint@7.32.0))(eslint@7.32.0)(prettier@2.8.8)
eslint-plugin-prettier: 3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@7.32.0)(prettier@2.8.8)
execa: 5.1.1
inquirer: 7.3.3
json5: 2.2.3
+1 -1
View File
@@ -1 +1 @@
23:58
01:26
+1 -1
View File
@@ -1 +1 @@
00:29
01:53