@tachybase/module-env-secrets 1.3.20 → 1.3.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.js +3 -3
- package/dist/externalVersion.js +5 -6
- package/dist/server/collections/environmentVariables.d.ts +1 -1
- package/dist/server/collections/environmentVariables.js +2 -2
- package/dist/server/plugin.d.ts +2 -2
- package/dist/server/plugin.js +1 -1
- package/package.json +7 -10
package/dist/client/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
(function(a,r){typeof exports=="object"&&typeof module!="undefined"?r(exports,require("@tachybase/client"),require("react/jsx-runtime"),require("react"),require("@tachybase/
|
|
1
|
+
(function(a,r){typeof exports=="object"&&typeof module!="undefined"?r(exports,require("@tachybase/client"),require("react/jsx-runtime"),require("react"),require("@tachybase/schema"),require("@ant-design/icons"),require("@tego/client"),require("antd")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","react/jsx-runtime","react","@tachybase/schema","@ant-design/icons","@tego/client","antd"],r):(a=typeof globalThis!="undefined"?globalThis:a||self,r(a["@tachybase/module-env-secrets"]={},a["@tachybase/client"],a.jsxRuntime,a.react,a["@tachybase/schema"],a["@ant-design/icons"],a["@tego/client"],a.antd))})(this,function(a,r,e,v,b,x,l,s){"use strict";var W=Object.defineProperty;var E=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,J=Object.prototype.propertyIsEnumerable;var P=(a,r,e)=>r in a?W(a,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[r]=e,k=(a,r)=>{for(var e in r||(r={}))H.call(r,e)&&P(a,e,r[e]);if(E)for(var e of E(r))J.call(r,e)&&P(a,e,r[e]);return a};var h=(a,r,e)=>new Promise((v,b)=>{var x=y=>{try{s(e.next(y))}catch(f){b(f)}},l=y=>{try{s(e.throw(y))}catch(f){b(f)}},s=y=>y.done?v(y.value):Promise.resolve(y.value).then(x,l);s((e=e.apply(a,r)).next())});const y=/^[A-Za-z][A-Za-z0-9_]*$/,f=v.createContext({}),T=o=>{const n=r.useRequest({url:"environmentVariables?paginate=false"});return e.jsx(f.Provider,{value:{variablesRequest:n},children:o.children})},D=b.observer(o=>location.pathname.startsWith("/_admin")?e.jsx(T,k({},o)):e.jsx(e.Fragment,{children:o.children}),{displayName:"EnvironmentVariablesAndSecretsProvider"}),j={name:"@tachybase/module-env-secrets"};function S(){const o=r.useApp();return n=>o.i18n.t(n,{ns:[j.name,"client"]})}b.registerValidateRules({env_name_rule(o){return o?y.test(o)?"":"Only letters, numbers and underscores are allowed, and it must start with a letter.":""}});const O=b.createSchemaField({components:{FormItem:l.FormItem,Input:l.Input,Checkbox:l.Checkbox,Radio:l.Radio}}),_={type:"object",properties:{variables:{type:"string",title:'{{ t("Plain text") }}',"x-decorator":"FormItem","x-component":"Input.TextArea","x-component-props":{autoSize:{minRows:10,maxRows:20},placeholder:`FOO=aaa
|
|
2
2
|
BAR=bbb
|
|
3
3
|
`}},secret:{type:"string",title:'{{ t("Encrypted") }}',"x-decorator":"FormItem","x-component":"Input.TextArea","x-component-props":{autoSize:{minRows:10,maxRows:20},placeholder:`FOO=aaa
|
|
4
4
|
BAR=bbb
|
|
5
|
-
`}}}},B={type:"object",properties:{name:{type:"string",title:'{{ t("Name") }}',required:!0,"x-validator":{env_name_rule:!0},"x-decorator":"FormItem","x-component":"Input","x-disabled":"{{ !createOnly }}"},type:{type:"string",title:'{{ t("Type") }}',required:!0,"x-decorator":"FormItem","x-component":"Radio.Group",default:"default",enum:[{value:"default",label:'{{t("Plain text")}}'},{value:"secret",label:'{{t("Encrypted")}}'}]},value:{type:"string",title:'{{ t("Value") }}',required:!0,"x-decorator":"FormItem","x-component":"Input.TextArea"}}};function
|
|
6
|
-
`).map(d=>{const[t,...p]=d.split("=");return t&&{name:t.trim(),value:p.join("=").trim(),type:n==="secret"?"secret":"default"}})}function
|
|
5
|
+
`}}}},B={type:"object",properties:{name:{type:"string",title:'{{ t("Name") }}',required:!0,"x-validator":{env_name_rule:!0},"x-decorator":"FormItem","x-component":"Input","x-disabled":"{{ !createOnly }}"},type:{type:"string",title:'{{ t("Type") }}',required:!0,"x-decorator":"FormItem","x-component":"Radio.Group",default:"default",enum:[{value:"default",label:'{{t("Plain text")}}'},{value:"secret",label:'{{t("Encrypted")}}'}]},value:{type:"string",title:'{{ t("Value") }}',required:!0,"x-decorator":"FormItem","x-component":"Input.TextArea"}}};function q({request:o,setSelectRowKeys:n}){const{modal:d}=s.App.useApp(),t=S(),p=r.useAPIClient(),{data:m,loading:F,refresh:V}=o||{},w={default:{label:t("Plain text"),color:"green"},secret:{label:t("Encrypted"),color:"red"}},C=p.resource("environmentVariables"),A=i=>{d.confirm({title:t("Delete variable"),content:t("Are you sure you want to delete it?"),onOk(){return h(this,null,function*(){yield C.destroy({filterByTk:i.name}),V()})}})},I=i=>h(null,null,function*(){const g=l.FormDrawer({title:t("Edit")},()=>e.jsxs(l.FormLayout,{layout:"vertical",children:[e.jsx(r.SchemaComponentOptions,{scope:{createOnly:!1,t},children:e.jsx(O,{schema:B})}),e.jsx(l.FormDrawer.Footer,{children:e.jsxs(l.FormButtonGroup,{align:"right",children:[e.jsx(l.Reset,{onClick:()=>{g.close()},children:t("Cancel")}),e.jsx(l.Submit,{onSubmit:c=>h(null,null,function*(){yield p.request({url:`environmentVariables:update?filterByTk=${i.name}`,method:"post",data:k({},c)}),o.refresh()}),children:t("Submit")})]})})]}));g.open({initialValues:k({},i)})});return e.jsx("div",{children:e.jsx(s.Table,{loading:F,size:"middle",rowKey:"name",dataSource:m==null?void 0:m.data,pagination:!1,columns:[{title:t("Name"),dataIndex:"name",ellipsis:!0},{title:t("Type"),dataIndex:"type",render:i=>e.jsx(s.Tag,{color:w[i].color,children:w[i].label})},{title:t("Value"),ellipsis:!0,render:i=>e.jsx("div",{children:i.type==="default"?i.value:"******"})},{title:t("Actions"),width:200,render:i=>e.jsxs(s.Space,{children:[e.jsx("a",{onClick:()=>I(i),children:t("Edit")}),e.jsx("a",{onClick:()=>A(i),children:t("Delete")})]})}],rowSelection:{type:"checkbox",onChange:(i,g)=>{n(i)}}})})}function z(o,n){return o.trim().split(`
|
|
6
|
+
`).map(d=>{const[t,...p]=d.split("=");return t&&{name:t.trim(),value:p.join("=").trim(),type:n==="secret"?"secret":"default"}})}function N(){var i,g;const o=r.useAPIClient(),n=S(),{modal:d}=s.App.useApp(),{variablesRequest:t}=v.useContext(f),[p,m]=v.useState([]),F=o.resource("environmentVariables"),V=c=>h(null,null,function*(){const u=Object.entries(c).map(([L,Z])=>z(Z,L).filter(Boolean));yield o.request({url:"environmentVariables:create",method:"post",data:u.flat()})}),w=()=>{if(p.length>0){let c;d.confirm({title:n("Delete variable"),content:n("Are you sure you want to delete it?"),onOk(){return h(this,null,function*(){var u;yield F.destroy({filterByTk:p}),(u=t==null?void 0:t.refresh)==null||u.call(t)})}})}},C=()=>{var c;(c=t==null?void 0:t.refresh)==null||c.call(t)},A=[{name:"name",title:n("Name"),operators:[{label:'{{t("contains")}}',value:"$includes",selected:!0},{label:'{{t("does not contain")}}',value:"$notIncludes"},{label:'{{t("is")}}',value:"$eq"},{label:'{{t("is not")}}',value:"$ne"}],schema:{type:"string",title:n("Name"),"x-component":"Input"}},{name:"type",title:n("Type"),operators:[{label:'{{t("is")}}',value:"$match",selected:!0,schema:{"x-component":"Select","x-component-props":{mode:"tags"}}},{label:'{{t("is not")}}',value:"$notMatch",schema:{"x-component":"Select","x-component-props":{mode:"tags"}}}],schema:{type:"string",title:n("Type"),"x-component":"Select",enum:[{value:"default",label:'{{t("Plain text")}}'},{value:"secret",label:'{{t("Encrypted")}}'}]}},{name:"value",title:n("Value"),operators:[{label:'{{t("contains")}}',value:"$includes",selected:!0},{label:'{{t("does not contain")}}',value:"$notIncludes"},{label:'{{t("is")}}',value:"$eq"},{label:'{{t("is not")}}',value:"$ne"}],schema:{type:"string",title:n("Value"),"x-component":"Input"}}],I=()=>{const c=b.useField();return{options:A,onSubmit:u=>h(null,null,function*(){t==null||t.run(u),c.setValue(u)}),onReset:u=>{c.setValue(u)}}};return e.jsxs("div",{children:[((g=(i=t==null?void 0:t.data)==null?void 0:i.meta)==null?void 0:g.updated)&&e.jsx(s.Alert,{type:"warning",style:{marginBottom:"1.2em",alignItems:"center"},description:e.jsxs("div",{children:[n("Variables and secrets have been updated. A restart is required for the changes to take effect.")," "]}),action:e.jsx(s.Button,{size:"middle",type:"primary",onClick:()=>h(null,null,function*(){yield o.resource("app").refresh()}),children:n("Restart now")})}),e.jsxs(s.Card,{children:[e.jsx("div",{style:{float:"left"},children:e.jsx(r.SchemaComponent,{schema:{name:"filter",type:"object",title:'{{ t("Filter") }}',default:{$and:[{name:{$includes:""}}]},"x-component":"Filter.Action",enum:A,"x-use-component-props":I},scope:{t:n}})}),e.jsx(s.Flex,{justify:"end",style:{marginBottom:16},children:e.jsxs(s.Space,{children:[e.jsx(s.Button,{icon:e.jsx(x.ReloadOutlined,{}),onClick:C,children:n("Refresh")}),e.jsx(s.Button,{icon:e.jsx(x.DeleteOutlined,{}),onClick:w,children:n("Delete")}),e.jsx(s.Dropdown,{menu:{onClick(c){l.FormDrawer({variable:n("Add variable"),bulk:n("Bulk import")}[c.key],()=>e.jsxs(l.FormLayout,{layout:"vertical",children:[e.jsx(r.SchemaComponentOptions,{scope:{createOnly:!0,t:n},children:e.jsx(O,{schema:c.key==="bulk"?_:B})}),e.jsx(l.FormDrawer.Footer,{children:e.jsxs(l.FormButtonGroup,{align:"right",children:[e.jsx(l.Reset,{children:n("Cancel")}),e.jsx(l.Submit,{onSubmit:u=>h(null,null,function*(){c.key==="bulk"?(yield V(u),t.refresh()):(yield o.request({url:"environmentVariables:create",method:"post",data:k({},u)}),t.refresh())}),children:n("Submit")})]})})]})).open({initialValues:{}}).then(console.log).catch(console.log)},items:[{key:"variable",label:n("Add variable")},{type:"divider"},{key:"bulk",label:n("Bulk import")}]},children:e.jsxs(s.Button,{type:"primary",icon:e.jsx(x.PlusOutlined,{}),children:[n("Add new")," ",e.jsx(x.DownOutlined,{})]})})]})}),e.jsx(q,{request:t,setSelectRowKeys:m})]})]})}function G(){return e.jsx(N,{})}const M=()=>{var p;const o=S(),{variablesRequest:n}=v.useContext(f),{data:d,loading:t}=n||{};return!t&&((p=d==null?void 0:d.data)!=null&&p.length)?{name:"$env",title:o("Variables and secrets"),value:"$env",label:o("Variables and secrets"),children:d==null?void 0:d.data.map(m=>({title:m.name,name:m.name,value:m.name,label:m.name})).filter(Boolean)}:null};class K extends r.Plugin{load(){return h(this,null,function*(){this.app.systemSettingsManager.add("system-services.environment",{title:this.t("Variables and secrets"),icon:"TableOutlined",Component:G,aclSnippet:"pm.system-services.env-secrets"}),this.app.addGlobalVar("$env",M),this.app.use(D)})}}a.default=K,Object.defineProperties(a,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/externalVersion.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
"react": "18.3.1",
|
|
3
|
-
"@tachybase/client": "1.3.
|
|
4
|
-
"@tachybase/schema": "1.3.
|
|
5
|
-
"@
|
|
6
|
-
"@tachybase/components": "1.3.20",
|
|
3
|
+
"@tachybase/client": "1.3.22",
|
|
4
|
+
"@tachybase/schema": "1.3.39",
|
|
5
|
+
"@tego/server": "1.3.39",
|
|
7
6
|
"@ant-design/icons": "5.6.1",
|
|
8
|
-
"
|
|
9
|
-
"
|
|
7
|
+
"@tego/client": "1.3.39",
|
|
8
|
+
"antd": "5.22.5"
|
|
10
9
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import("@
|
|
1
|
+
declare const _default: import("@tego/server").CollectionOptions;
|
|
2
2
|
export default _default;
|
|
@@ -20,8 +20,8 @@ __export(environmentVariables_exports, {
|
|
|
20
20
|
default: () => environmentVariables_default
|
|
21
21
|
});
|
|
22
22
|
module.exports = __toCommonJS(environmentVariables_exports);
|
|
23
|
-
var
|
|
24
|
-
var environmentVariables_default = (0,
|
|
23
|
+
var import_server = require("@tego/server");
|
|
24
|
+
var environmentVariables_default = (0, import_server.defineCollection)({
|
|
25
25
|
name: "environmentVariables",
|
|
26
26
|
autoGenId: false,
|
|
27
27
|
fields: [
|
package/dist/server/plugin.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Plugin } from '@
|
|
1
|
+
import { Plugin } from '@tego/server';
|
|
2
2
|
export declare class PluginEnvironmentVariablesServer extends Plugin {
|
|
3
3
|
updated: boolean;
|
|
4
|
-
get aesEncryptor(): import("
|
|
4
|
+
get aesEncryptor(): import("@tego/server").AesEncryptor;
|
|
5
5
|
handleSyncMessage(message: any): Promise<void>;
|
|
6
6
|
load(): Promise<void>;
|
|
7
7
|
registerACL(): void;
|
package/dist/server/plugin.js
CHANGED
|
@@ -21,7 +21,7 @@ __export(plugin_exports, {
|
|
|
21
21
|
default: () => plugin_default
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(plugin_exports);
|
|
24
|
-
var import_server = require("@
|
|
24
|
+
var import_server = require("@tego/server");
|
|
25
25
|
class PluginEnvironmentVariablesServer extends import_server.Plugin {
|
|
26
26
|
constructor() {
|
|
27
27
|
super(...arguments);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tachybase/module-env-secrets",
|
|
3
3
|
"displayName": "Variables and secrets",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.22",
|
|
5
5
|
"description": "Centralized management of environment variables and secrets, used for sensitive data storage, configuration data reuse, multi-environment isolation, and more.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"System management"
|
|
@@ -9,15 +9,12 @@
|
|
|
9
9
|
"main": "dist/server/index.js",
|
|
10
10
|
"devDependencies": {
|
|
11
11
|
"@ant-design/icons": "^5.6.1",
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"@
|
|
16
|
-
"
|
|
17
|
-
"@tachybase/
|
|
18
|
-
"@tachybase/schema": "1.3.20",
|
|
19
|
-
"@tachybase/server": "1.3.20",
|
|
20
|
-
"@tachybase/test": "1.3.20"
|
|
12
|
+
"@tachybase/schema": "^1.3.39",
|
|
13
|
+
"@tachybase/test": "^1.3.39",
|
|
14
|
+
"@tego/client": "^1.3.39",
|
|
15
|
+
"@tego/server": "^1.3.39",
|
|
16
|
+
"antd": "5.22.5",
|
|
17
|
+
"@tachybase/client": "1.3.22"
|
|
21
18
|
},
|
|
22
19
|
"description.zh-CN": "集中管理环境变量和密钥,用于敏感数据存储、配置数据重用、多环境隔离等。",
|
|
23
20
|
"displayName.zh-CN": "变量和密钥"
|