diff --git a/packages/ui/certd-client/package.json b/packages/ui/certd-client/package.json
index a3930e1f..c2550aa5 100644
--- a/packages/ui/certd-client/package.json
+++ b/packages/ui/certd-client/package.json
@@ -29,10 +29,10 @@
"@aws-sdk/client-s3": "^3.535.0",
"@aws-sdk/s3-request-presigner": "^3.535.0",
"@ctrl/tinycolor": "^4.1.0",
- "@fast-crud/fast-crud": "^1.25.7",
- "@fast-crud/fast-extends": "^1.25.7",
- "@fast-crud/ui-antdv4": "^1.25.7",
- "@fast-crud/ui-interface": "^1.25.7",
+ "@fast-crud/fast-crud": "^1.25.8",
+ "@fast-crud/fast-extends": "^1.25.8",
+ "@fast-crud/ui-antdv4": "^1.25.8",
+ "@fast-crud/ui-interface": "^1.25.8",
"@iconify/tailwind": "^1.2.0",
"@iconify/vue": "^4.1.1",
"@manypkg/get-packages": "^2.2.2",
diff --git a/packages/ui/certd-client/src/components/code-editor/import-works.ts b/packages/ui/certd-client/src/components/code-editor/import-works.ts
index 8b67ff01..e65ec2a9 100644
--- a/packages/ui/certd-client/src/components/code-editor/import-works.ts
+++ b/packages/ui/certd-client/src/components/code-editor/import-works.ts
@@ -1,10 +1,3 @@
-// const editorWorker = await import("monaco-editor/esm/vs/editor/editor.worker?worker");
-// const jsonWorker = await import("monaco-editor/esm/vs/language/json/json.worker?worker");
-// const cssWorker = await import("monaco-editor/esm/vs/language/css/css.worker?worker");
-// const htmlWorker = await import("monaco-editor/esm/vs/language/html/html.worker?worker");
-// const tsWorker = await import("monaco-editor/esm/vs/language/typescript/ts.worker?worker");
-// const yamlWorker = await import("monaco-yaml/yaml.worker.js?worker");
-
import editorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker";
import jsonWorker from "monaco-editor/esm/vs/language/json/json.worker?worker";
import cssWorker from "monaco-editor/esm/vs/language/css/css.worker?worker";
diff --git a/packages/ui/certd-client/src/views/sys/plugin/crud.tsx b/packages/ui/certd-client/src/views/sys/plugin/crud.tsx
index 0570eb8d..98ee8f79 100644
--- a/packages/ui/certd-client/src/views/sys/plugin/crud.tsx
+++ b/packages/ui/certd-client/src/views/sys/plugin/crud.tsx
@@ -6,6 +6,8 @@ import { AddReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq,
import { useUserStore } from "/src/store/modules/user";
import { useSettingStore } from "/src/store/modules/settings";
import { Modal } from "ant-design-vue";
+//@ts-ignore
+import yaml from "js-yaml";
export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet {
const router = useRouter();
@@ -277,7 +279,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
},
},
},
- "default.strategy.runStrategy": {
+ "extra.default.strategy.runStrategy": {
title: "运行策略",
type: "dict-select",
@@ -299,6 +301,16 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
color: "auto",
},
},
+ valueBuilder({ row }) {
+ if (row.extra) {
+ row.extra = yaml.load(row.extra);
+ }
+ },
+ valueResolve({ row }) {
+ if (row.extra) {
+ row.extra = yaml.dump(row.extra);
+ }
+ },
},
disabled: {
title: "点击禁用/启用",
diff --git a/packages/ui/certd-client/src/views/sys/plugin/edit.vue b/packages/ui/certd-client/src/views/sys/plugin/edit.vue
index ee160c7e..d77c6434 100644
--- a/packages/ui/certd-client/src/views/sys/plugin/edit.vue
+++ b/packages/ui/certd-client/src/views/sys/plugin/edit.vue
@@ -33,7 +33,9 @@
-
+
+
+
@@ -42,10 +44,10 @@
import { onMounted, provide, ref, Ref } from "vue";
import { useRoute } from "vue-router";
import * as api from "./api";
-import yaml from "js-yaml";
import { notification } from "ant-design-vue";
import createCrudOptions from "./crud";
import { useColumns } from "@fast-crud/fast-crud";
+import yaml from "js-yaml";
const CertApplyPluginNames = ["CertApply", "CertApplyLego", "CertApplyUpload"];
defineOptions({
@@ -81,19 +83,14 @@ initFormOptions();
async function getPlugin() {
const id = route.query.id;
const pluginObj = await api.GetObj(id);
- if (pluginObj.metadata) {
- const metadata = yaml.load(pluginObj.metadata);
- pluginObj.default = metadata.default || {};
- delete metadata.default;
- pluginObj.metadata = yaml.dump(metadata, {
- indent: 2,
- });
- }
plugin.value = pluginObj;
const baseFrom = {
...pluginObj,
};
+ if (baseFrom.extra) {
+ baseFrom.extra = yaml.load(baseFrom.extra);
+ }
delete baseFrom.metadata;
delete baseFrom.content;
baseFormRef.value.setFormData(baseFrom);
@@ -107,17 +104,31 @@ provide("get:plugin", () => {
return plugin;
});
+function validate() {
+ try {
+ yaml.load(plugin.value.metadata);
+ } catch (e: any) {
+ const message = `元数据校验失败:${e.message}`;
+ notification.error({
+ message,
+ });
+
+ throw new Error(message);
+ }
+}
+
const saveLoading = ref(false);
async function doSave() {
+ validate();
saveLoading.value = true;
const baseForm = baseFormRef.value.getFormData();
- const metadata = yaml.load(plugin.value.metadata);
- metadata.default = baseForm.default;
const form = {
...plugin.value,
...baseForm,
- metadata: yaml.dump(metadata, { indent: 2 }),
};
+ if (form.extra) {
+ form.extra = yaml.dump(form.extra);
+ }
try {
await api.UpdateObj(form);
notification.success({
@@ -161,6 +172,10 @@ async function doTest() {
display: flex;
flex-direction: column;
height: 100%;
+ .base-body {
+ flex: 1;
+ overflow: auto;
+ }
}
.metadata {
@@ -191,6 +206,9 @@ async function doTest() {
display: flex;
flex-direction: column;
height: 100%;
+ .script-body {
+ flex: 1;
+ }
}
}
}
diff --git a/packages/ui/certd-client/src/views/sys/plugin/index.vue b/packages/ui/certd-client/src/views/sys/plugin/index.vue
index c4f1b188..80e0c21c 100644
--- a/packages/ui/certd-client/src/views/sys/plugin/index.vue
+++ b/packages/ui/certd-client/src/views/sys/plugin/index.vue
@@ -1,7 +1,10 @@
- 插件管理
+
+ 插件管理
+ 自定义插件处于BETA测试版,后续可能会有破坏性变更
+
diff --git a/packages/ui/certd-server/db/migration/v10021__plugin.sql b/packages/ui/certd-server/db/migration/v10021__plugin.sql
index 3d91613d..ee1a9fc2 100644
--- a/packages/ui/certd-server/db/migration/v10021__plugin.sql
+++ b/packages/ui/certd-server/db/migration/v10021__plugin.sql
@@ -1,6 +1,7 @@
ALTER TABLE pi_plugin ADD COLUMN "pluginType" varchar(100);
ALTER TABLE pi_plugin ADD COLUMN "metadata" varchar(40960);
ALTER TABLE pi_plugin ADD COLUMN "author" varchar(100);
+ALTER TABLE pi_plugin ADD COLUMN "extra" varchar(40960);
diff --git a/packages/ui/certd-server/src/modules/plugin/entity/plugin.ts b/packages/ui/certd-server/src/modules/plugin/entity/plugin.ts
index e40a495a..2c15de37 100644
--- a/packages/ui/certd-server/src/modules/plugin/entity/plugin.ts
+++ b/packages/ui/certd-server/src/modules/plugin/entity/plugin.ts
@@ -44,6 +44,9 @@ export class PluginEntity {
@Column({ comment: '元数据', length: 40960, nullable: true })
metadata: string;
+ @Column({ comment: '额外配置', length: 40960, nullable: true })
+ extra: string;
+
@Column({ comment: '作者', length: 100, nullable: true })
author: string;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7d69fc13..d218fe10 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1059,17 +1059,17 @@ importers:
specifier: ^4.1.0
version: 4.1.0
'@fast-crud/fast-crud':
- specifier: ^1.25.7
- version: 1.25.7(vue@3.5.13(typescript@5.8.2))
+ specifier: ^1.25.8
+ version: 1.25.8(vue@3.5.13(typescript@5.8.2))
'@fast-crud/fast-extends':
- specifier: ^1.25.7
- version: 1.25.7(aws-crt@1.25.3)(vue@3.5.13(typescript@5.8.2))
+ specifier: ^1.25.8
+ version: 1.25.8(aws-crt@1.25.3)(vue@3.5.13(typescript@5.8.2))
'@fast-crud/ui-antdv4':
- specifier: ^1.25.7
- version: 1.25.7
+ specifier: ^1.25.8
+ version: 1.25.8
'@fast-crud/ui-interface':
- specifier: ^1.25.7
- version: 1.25.7
+ specifier: ^1.25.8
+ version: 1.25.8
'@iconify/tailwind':
specifier: ^1.2.0
version: 1.2.0
@@ -3250,17 +3250,17 @@ packages:
resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- '@fast-crud/fast-crud@1.25.7':
- resolution: {integrity: sha512-dq5ijw6PU/FQBTP+ZwBezMHqAEZDbAoShHGNIkCK9a0vOqL5MhBnOzq5DPRz6yFUNnJEFX8kYB7N7A00Qnw5Zg==}
+ '@fast-crud/fast-crud@1.25.8':
+ resolution: {integrity: sha512-ftIhCJwDwNdHTgCYeuSwheD9c/Vvf/5ef9hu7ZwDQ22qD9dJmSUxrAYv6UWuJ4r4zcbNCk8BaBcaKwqSltd3Dg==}
- '@fast-crud/fast-extends@1.25.7':
- resolution: {integrity: sha512-vZu6CGXvacgnZI4d78qEc0X1xrdylJjABapU1O60xwwDx+CIcJfH6N+Q4ku/12YdTTeJAsYDnsSFzNEDtzQpwQ==}
+ '@fast-crud/fast-extends@1.25.8':
+ resolution: {integrity: sha512-aw/8SLJJvBtwQOwafaG87r0IWIncZK7BOiJRl7MZiv3Cp+G4naLam7WjtIQIZIT9zfLZqb+z3zy+x00cbUMRkw==}
- '@fast-crud/ui-antdv4@1.25.7':
- resolution: {integrity: sha512-T95LiMO2WV6XcnLyALLRB59xmi43eWHxIeABeZBeDD5Y2nmXR3ceQj63VBo4SJMDNEu49MKabQpOa/A2X6Rmwg==}
+ '@fast-crud/ui-antdv4@1.25.8':
+ resolution: {integrity: sha512-lRehabbucwKV2OM0bfVHt0BI8BYu+sb4z9l+9EkIvTDQurowfxZO+WFk/KIe3BhuKHtKlmmwEa73cefMMVzvjA==}
- '@fast-crud/ui-interface@1.25.7':
- resolution: {integrity: sha512-JrP2/dm1Sco0UdSYhIMkf9tdynYURHlO1qyDHmssF1lqo9+PrU1kwuizaK1soG+myHiYznbBiXo1+GIly/MU+A==}
+ '@fast-crud/ui-interface@1.25.8':
+ resolution: {integrity: sha512-UUoXce20z+BlPu/KKNfdHb6qpX1OdrrkMuIO2KdaI4FENVa9IW83AsttmNSHNkZkvG7zeVacxd03Y0xmdGeioA==}
'@fidm/asn1@1.0.4':
resolution: {integrity: sha512-esd1jyNvRb2HVaQGq2Gg8Z0kbQPXzV9Tq5Z14KNIov6KfFD6PTaRIO8UpcsYiTNzOqJpmyzWgVTrUwFV3UF4TQ==}
@@ -15297,7 +15297,7 @@ snapshots:
'@eslint/js@8.57.0': {}
- '@fast-crud/fast-crud@1.25.7(vue@3.5.13(typescript@5.8.2))':
+ '@fast-crud/fast-crud@1.25.8(vue@3.5.13(typescript@5.8.2))':
dependencies:
'@iconify/types': 2.0.0
file-saver: 2.0.5
@@ -15307,7 +15307,7 @@ snapshots:
transitivePeerDependencies:
- vue
- '@fast-crud/fast-extends@1.25.7(aws-crt@1.25.3)(vue@3.5.13(typescript@5.8.2))':
+ '@fast-crud/fast-extends@1.25.8(aws-crt@1.25.3)(vue@3.5.13(typescript@5.8.2))':
dependencies:
'@aws-sdk/client-s3': 3.758.0(aws-crt@1.25.3)
'@aws-sdk/s3-request-presigner': 3.758.0
@@ -15339,9 +15339,9 @@ snapshots:
- utf-8-validate
- vue
- '@fast-crud/ui-antdv4@1.25.7': {}
+ '@fast-crud/ui-antdv4@1.25.8': {}
- '@fast-crud/ui-interface@1.25.7':
+ '@fast-crud/ui-interface@1.25.8':
dependencies:
lodash-es: 4.17.21
@@ -20616,13 +20616,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:
@@ -23336,7 +23336,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