mirror of https://github.com/certd/certd
Merge remote-tracking branch 'origin/v2-plugin' into v2-plugin
commit
420b0394a7
|
@ -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",
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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: "点击禁用/启用",
|
||||
|
|
|
@ -33,7 +33,9 @@
|
|||
<a-tabs type="card">
|
||||
<a-tab-pane key="script" tab="脚本"> </a-tab-pane>
|
||||
</a-tabs>
|
||||
<code-editor id="content" v-model:model-value="plugin.content" language="javascript" @save="doSave"></code-editor>
|
||||
<div class="script-body">
|
||||
<code-editor id="content" v-model:model-value="plugin.content" language="javascript" @save="doSave"></code-editor>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fs-page>
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
<template>
|
||||
<fs-page class="page-cert">
|
||||
<template #header>
|
||||
<div class="title">插件管理</div>
|
||||
<div class="title">
|
||||
插件管理
|
||||
<span class="sub">自定义插件处于BETA测试版,后续可能会有破坏性变更</span>
|
||||
</div>
|
||||
</template>
|
||||
<fs-crud ref="crudRef" v-bind="crudBinding">
|
||||
<!-- <template #pagination-left>-->
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue