@tachybase/module-env-secrets 1.0.18 → 1.0.25
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 -5
- package/package.json +7 -7
package/dist/client/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
(function(r
|
|
1
|
+
(function(a,r){typeof exports=="object"&&typeof module!="undefined"?r(exports,require("@tachybase/client"),require("react/jsx-runtime"),require("react"),require("@tachybase/components"),require("@tachybase/schema"),require("@ant-design/icons"),require("antd")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","react/jsx-runtime","react","@tachybase/components","@tachybase/schema","@ant-design/icons","antd"],r):(a=typeof globalThis!="undefined"?globalThis:a||self,r(a["@tachybase/module-env-secrets"]={},a["@tachybase/client"],a.jsxRuntime,a.react,a["@tachybase/components"],a["@tachybase/schema"],a["@ant-design/icons"],a.antd))})(this,function(a,r,e,f,o,v,x,s){"use strict";var Z=Object.defineProperty;var E=Object.getOwnPropertySymbols;var W=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var P=(a,r,e)=>r in a?Z(a,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[r]=e,k=(a,r)=>{for(var e in r||(r={}))W.call(r,e)&&P(a,e,r[e]);if(E)for(var e of E(r))H.call(r,e)&&P(a,e,r[e]);return a};var h=(a,r,e)=>new Promise((f,o)=>{var v=y=>{try{s(e.next(y))}catch(b){o(b)}},x=y=>{try{s(e.throw(y))}catch(b){o(b)}},s=y=>y.done?f(y.value):Promise.resolve(y.value).then(v,x);s((e=e.apply(a,r)).next())});const y=/^[A-Za-z][A-Za-z0-9_]*$/,b=f.createContext({}),T=l=>{const n=r.useRequest({url:"environmentVariables?paginate=false"});return e.jsx(b.Provider,{value:{variablesRequest:n},children:l.children})},$=v.observer(l=>location.pathname.startsWith("/_admin")?e.jsx(T,k({},l)):e.jsx(e.Fragment,{children:l.children}),{displayName:"EnvironmentVariablesAndSecretsProvider"}),D={name:"@tachybase/module-env-secrets"};function S(){const l=r.useApp();return n=>l.i18n.t(n,{ns:[D.name,"client"]})}v.registerValidateRules({env_name_rule(l){return l?y.test(l)?"":"Only letters, numbers and underscores are allowed, and it must start with a letter.":""}});const O=v.createSchemaField({components:{FormItem:o.FormItem,Input:o.Input,Checkbox:o.Checkbox,Radio:o.Radio}}),j={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,...
|
|
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 _({request:l,setSelectRowKeys:n}){const{modal:d}=s.App.useApp(),t=S(),p=r.useAPIClient(),{data:m,loading:F,refresh:V}=l||{},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(this,null,function*(){const g=o.FormDrawer({title:t("Edit")},()=>e.jsxs(o.FormLayout,{layout:"vertical",children:[e.jsx(r.SchemaComponentOptions,{scope:{createOnly:!1,t},children:e.jsx(O,{schema:B})}),e.jsx(o.FormDrawer.Footer,{children:e.jsxs(o.FormButtonGroup,{align:"right",children:[e.jsx(o.Reset,{onClick:()=>{g.close()},children:t("Cancel")}),e.jsx(o.Submit,{onSubmit:c=>h(this,null,function*(){yield p.request({url:`environmentVariables:update?filterByTk=${i.name}`,method:"post",data:k({},c)}),l.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 q(l,n){return l.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 z(){var i,g;const l=r.useAPIClient(),n=S(),{modal:d}=s.App.useApp(),{variablesRequest:t}=f.useContext(b),[p,m]=f.useState([]),F=l.resource("environmentVariables"),V=c=>h(this,null,function*(){const u=Object.entries(c).map(([K,L])=>q(L,K).filter(Boolean));yield l.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=v.useField();return{options:A,onSubmit:u=>h(this,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(this,null,function*(){yield l.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){o.FormDrawer({variable:n("Add variable"),bulk:n("Bulk import")}[c.key],()=>e.jsxs(o.FormLayout,{layout:"vertical",children:[e.jsx(r.SchemaComponentOptions,{scope:{createOnly:!0,t:n},children:e.jsx(O,{schema:c.key==="bulk"?j:B})}),e.jsx(o.FormDrawer.Footer,{children:e.jsxs(o.FormButtonGroup,{align:"right",children:[e.jsx(o.Reset,{children:n("Cancel")}),e.jsx(o.Submit,{onSubmit:u=>h(this,null,function*(){c.key==="bulk"?(yield V(u),t.refresh()):(yield l.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(_,{request:t,setSelectRowKeys:m})]})]})}function N(){return e.jsx(z,{})}const G=()=>{var p;const l=S(),{variablesRequest:n}=f.useContext(b),{data:d,loading:t}=n||{};return!t&&((p=d==null?void 0:d.data)!=null&&p.length)?{name:"$env",title:l("Variables and secrets"),value:"$env",label:l("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 M 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:N,aclSnippet:"pm.system-services.env-secrets"}),this.app.addGlobalVar("$env",G),this.app.use($)})}}a.default=M,Object.defineProperties(a,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/externalVersion.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
"react": "18.3.1",
|
|
3
|
-
"@tachybase/client": "1.0.
|
|
4
|
-
"@tachybase/schema": "1.0.
|
|
5
|
-
"@tachybase/server": "1.0.
|
|
6
|
-
"@tachybase/components": "1.0.
|
|
3
|
+
"@tachybase/client": "1.0.25",
|
|
4
|
+
"@tachybase/schema": "1.0.25",
|
|
5
|
+
"@tachybase/server": "1.0.25",
|
|
6
|
+
"@tachybase/components": "1.0.25",
|
|
7
7
|
"@ant-design/icons": "5.6.1",
|
|
8
8
|
"antd": "5.22.5",
|
|
9
|
-
"@tachybase/database": "1.0.
|
|
9
|
+
"@tachybase/database": "1.0.25"
|
|
10
10
|
};
|
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.0.
|
|
4
|
+
"version": "1.0.25",
|
|
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"
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"antd": "5.22.5"
|
|
13
13
|
},
|
|
14
14
|
"peerDependencies": {
|
|
15
|
-
"@tachybase/
|
|
16
|
-
"@tachybase/database": "1.0.
|
|
17
|
-
"@tachybase/
|
|
18
|
-
"@tachybase/
|
|
19
|
-
"@tachybase/server": "1.0.
|
|
20
|
-
"@tachybase/test": "1.0.
|
|
15
|
+
"@tachybase/components": "1.0.25",
|
|
16
|
+
"@tachybase/database": "1.0.25",
|
|
17
|
+
"@tachybase/schema": "1.0.25",
|
|
18
|
+
"@tachybase/client": "1.0.25",
|
|
19
|
+
"@tachybase/server": "1.0.25",
|
|
20
|
+
"@tachybase/test": "1.0.25"
|
|
21
21
|
},
|
|
22
22
|
"description.zh-CN": "集中管理环境变量和密钥,用于敏感数据存储、配置数据重用、多环境隔离等。",
|
|
23
23
|
"displayName.zh-CN": "变量和密钥"
|