@tachybase/plugin-action-custom-request 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/hooks/useCustomRequestsResource.d.ts +2 -2
- package/dist/client/index.js +1 -1
- package/dist/externalVersion.js +6 -11
- package/dist/server/actions/listByCurrentRole.d.ts +1 -1
- package/dist/server/actions/send.d.ts +1 -1
- package/dist/server/actions/send.js +3 -5
- package/dist/server/collections/customRequest.d.ts +1 -1
- package/dist/server/collections/customRequest.js +2 -2
- package/dist/server/collections/customRequestsRoles.d.ts +1 -1
- package/dist/server/collections/customRequestsRoles.js +2 -2
- package/dist/server/plugin.d.ts +1 -2
- package/dist/server/plugin.js +3 -3
- package/package.json +9 -19
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { IResource } from '@
|
|
2
|
-
export declare const useCustomRequestsResource: () => import("@
|
|
1
|
+
export type { IResource } from '@tego/client';
|
|
2
|
+
export declare const useCustomRequestsResource: () => import("@tego/client").IResource;
|
package/dist/client/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(n,i){typeof exports=="object"&&typeof module!="undefined"?i(exports,require("react/jsx-runtime"),require("@tachybase/client"),require("@tachybase/schema"),require("@tachybase/utils/client"),require("antd"),require("react-router-dom"),require("react-i18next"),require("react"),require("@tachybase/components")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@tachybase/client","@tachybase/schema","@tachybase/utils/client","antd","react-router-dom","react-i18next","react","@tachybase/components"],i):(n=typeof globalThis!="undefined"?globalThis:n||self,i(n["@tachybase/plugin-action-custom-request"]={},n.jsxRuntime,n["@tachybase/client"],n["@tachybase/schema"],n["@tachybase/utils"],n.antd,n["react-router-dom"],n["react-i18next"],n.react,n["@tachybase/components"]))})(this,function(n,i,e,p,S,M,D,w,C,F){"use strict";var Ae=Object.defineProperty,we=Object.defineProperties;var Fe=Object.getOwnPropertyDescriptors;var B=Object.getOwnPropertySymbols;var re=Object.prototype.hasOwnProperty,ae=Object.prototype.propertyIsEnumerable;var ne=(n,i,e)=>i in n?Ae(n,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[i]=e,g=(n,i)=>{for(var e in i||(i={}))re.call(i,e)&&ne(n,e,i[e]);if(B)for(var e of B(i))ae.call(i,e)&&ne(n,e,i[e]);return n},A=(n,i)=>we(n,Fe(i));var ie=(n,i)=>{var e={};for(var p in n)re.call(n,p)&&i.indexOf(p)<0&&(e[p]=n[p]);if(n!=null&&B)for(var p of B(n))i.indexOf(p)<0&&ae.call(n,p)&&(e[p]=n[p]);return e};var T=(n,i,e)=>new Promise((p,S)=>{var M=C=>{try{w(e.next(C))}catch(F){S(F)}},D=C=>{try{w(e.throw(C))}catch(F){S(F)}},w=C=>C.done?p(C.value):Promise.resolve(C.value).then(M,D);w((e=e.apply(n,i)).next())});const k="customRequests:listByCurrentRole";var E=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},L={exports:{}},ue=L.exports,_;function ce(){return _||(_=1,function(o,r){(function(u,c){c()})(ue,function(){function u(s,a){return typeof a=="undefined"?a={autoBom:!1}:typeof a!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),a={autoBom:!a}),a.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(s.type)?new Blob(["\uFEFF",s],{type:s.type}):s}function c(s,a,b){var m=new XMLHttpRequest;m.open("GET",s),m.responseType="blob",m.onload=function(){h(m.response,a,b)},m.onerror=function(){console.error("could not download file")},m.send()}function l(s){var a=new XMLHttpRequest;a.open("HEAD",s,!1);try{a.send()}catch(b){}return 200<=a.status&&299>=a.status}function d(s){try{s.dispatchEvent(new MouseEvent("click"))}catch(b){var a=document.createEvent("MouseEvents");a.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),s.dispatchEvent(a)}}var f=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof E=="object"&&E.global===E?E:void 0,x=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),h=f.saveAs||(typeof window!="object"||window!==f?function(){}:"download"in HTMLAnchorElement.prototype&&!x?function(s,a,b){var m=f.URL||f.webkitURL,v=document.createElement("a");a=a||s.name||"download",v.download=a,v.rel="noopener",typeof s=="string"?(v.href=s,v.origin===location.origin?d(v):l(v.href)?c(s,a,b):d(v,v.target="_blank")):(v.href=m.createObjectURL(s),setTimeout(function(){m.revokeObjectURL(v.href)},4e4),setTimeout(function(){d(v)},0))}:"msSaveOrOpenBlob"in navigator?function(s,a,b){if(a=a||s.name||"download",typeof s!="string")navigator.msSaveOrOpenBlob(u(s,b),a);else if(l(s))c(s,a,b);else{var m=document.createElement("a");m.href=s,m.target="_blank",setTimeout(function(){d(m)})}}:function(s,a,b,m){if(m=m||open("","_blank"),m&&(m.document.title=m.document.body.innerText="downloading..."),typeof s=="string")return c(s,a,b);var v=s.type==="application/octet-stream",O=/constructor/i.test(f.HTMLElement)||f.safari,P=/CriOS\/[\d]+/.test(navigator.userAgent);if((P||v&&O||x)&&typeof FileReader!="undefined"){var H=new FileReader;H.onloadend=function(){var R=H.result;R=P?R:R.replace(/^data:[^;]*;/,"data:attachment/file;"),m?m.location.href=R:location=R,m=null},H.readAsDataURL(s)}else{var N=f.URL||f.webkitURL,t=N.createObjectURL(s);m?m.location=t:location.href=t,m=null,setTimeout(function(){N.revokeObjectURL(t)},4e4)}});f.saveAs=h.saveAs=h,o.exports=h})}(L)),L.exports}var le=ce();const G="action-custom-request";function y(o){return`{{t('${o}', { ns: '${G}', nsMode: 'fallback' })}}`}function I(){return w.useTranslation(G,{nsMode:"fallback"})}function me(o){if(!o)return null;let r=o.match(/filename="([^"]+)"/i);return r?r[1]:(r=o.match(/filename\*=UTF-8''(.+)/i),r?decodeURIComponent(r[1]):null)}const pe=()=>{const o=e.useAPIClient(),r=D.useNavigate(),u=p.useFieldSchema(),c=e.useCompile(),l=p.useForm(),{getPrimaryKey:d}=e.useCollection_deprecated(),{resource:f,__parent:x,service:h}=e.useBlockRequestContext(),s=e.useRecord(),a=p.useFieldSchema(),b=p.useField(),{setVisible:m}=e.useActionContext(),{modal:v,message:O}=M.App.useApp(),{t:P}=I();return{onClick(){return T(this,null,function*(){var Y,Z,ee,U,te,oe;const{skipValidator:N,onSuccess:t}=(Y=u==null?void 0:u["x-action-settings"])!=null?Y:{},R=u==null?void 0:u["x-action"];N!==!0&&R==="customize:form:request"&&(yield l.submit());let Q={};R==="customize:form:request"&&(Q=l.values),(Z=b.data)!=null||(b.data={}),b.data.loading=!0;try{const V=yield o.request({url:`/customRequests:send/${a["x-uid"]}`,method:"POST",responseType:t!=null&&t.down?"blob":"json",data:{currentRecord:{id:s[d()],appends:(ee=h.params[0])==null?void 0:ee.appends,data:Q},successMessage:t.successMessage},headers:{"X-Response-Type":t!=null&&t.down?"blob":"json"}}),Te=V.headers.getContentType();let se=me(V.headers["content-disposition"]);if(t!=null&&t.down)if(Te==="application/octet-stream"){const q=t.downTitle;le.saveAs(V.data,S.parse(q)({filename:se||""}))}else O.error(P("The current return type is not a document type"));if(b.data.loading=!1,f instanceof e.TableFieldResource||(te=(U=x==null?void 0:x.service)==null?void 0:U.refresh)==null||te.call(U),(oe=h==null?void 0:h.refresh)==null||oe.call(h),R==="customize:form:request"&&(m==null||m(!1)),t!=null&&t.successMessage){let q=S.parse(t==null?void 0:t.successMessage)({res:V,filename:se});typeof q!="string"&&(q=JSON.stringify(q)),t!=null&&t.manualClose?v.success({title:c(q),onOk:()=>T(null,null,function*(){t!=null&&t.redirecting&&(t!=null&&t.redirectTo)&&(S.isURL(t.redirectTo)?window.location.href=t.redirectTo:r(t.redirectTo))})}):(O.success(c(q)),t!=null&&t.redirecting&&(t!=null&&t.redirectTo)&&(S.isURL(t.redirectTo)?window.location.href=t.redirectTo:r(t.redirectTo)))}else O.success(P("Request success"))}finally{b.data.loading=!1}})}}},K=()=>{const r=`customRequests:get/${p.useFieldSchema()["x-uid"]}`;return e.useRequest({url:r,params:{appends:["roles"]}},{manual:!0,cacheKey:r})},de=()=>{const o=e.useCollection_deprecated(),{t:r}=I(),u=e.useCollectionFilterOptions(o),c=e.useCollectionFilterOptions("users"),l=e.useCompile(),[d,f]=C.useMemo(()=>[l(u),l(c)],[u,c]),x=e.useGlobalVariable("$env");return C.useMemo(()=>{const h=[{name:"currentRecord",title:r("Current record",{ns:"core"}),children:[...d]},{name:"currentUser",title:r("Current user",{ns:"core"}),children:f},{name:"currentTime",title:r("Current time",{ns:"core"}),children:null}];return x&&h.unshift(x),h},[d,f])},j=()=>e.useAPIClient().resource("customRequests"),$={type:"object",properties:{method:{type:"string",required:!0,title:y("HTTP method"),"x-decorator-props":{tooltip:y("When the HTTP method is Post, Put or Patch, and this custom request inside the form, the request body will be automatically filled in with the form data")},"x-decorator":"FormItem","x-component":"Select","x-component-props":{showSearch:!1,allowClear:!1,className:"auto-width"},enum:[{label:"GET",value:"GET"},{label:"POST",value:"POST"},{label:"PUT",value:"PUT"},{label:"PATCH",value:"PATCH"},{label:"DELETE",value:"DELETE"}],default:"POST"},url:{type:"string",required:!0,title:y("URL"),"x-decorator":"FormItem","x-component":"Variable.RawTextArea","x-component-props":{scope:"{{useCustomRequestVariableOptions}}",autoSize:!0,fieldNames:{value:"name",label:"title"},placeholder:"https://www.tachybase.com"}},headers:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:y("Headers"),description:y('"Content-Type" only support "application/json", and no need to specify'),items:{type:"object",properties:{space:{type:"void","x-component":"Space",properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:y("Name")}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.Input","x-component-props":{scope:"{{useCustomRequestVariableOptions}}",fieldNames:{value:"name",label:"title"},useTypedConstant:!0}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:y("Add request header"),"x-component":"ArrayItems.Addition"}}},params:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:y("Parameters"),items:{type:"object",properties:{space:{type:"void","x-component":"Space",properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:y("Name")}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.Input","x-component-props":{scope:"{{useCustomRequestVariableOptions}}",fieldNames:{value:"name",label:"title"},useTypedConstant:!0}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:y("Add parameter"),"x-component":"ArrayItems.Addition"}}},data:{type:"string",title:y("Body"),"x-decorator":"FormItem","x-decorator-props":{},"x-component":"Variable.JSON","x-component-props":{scope:"{{useCustomRequestVariableOptions}}",fieldNames:{value:"name",label:"title"},changeOnSelect:!0,autoSize:{minRows:10},placeholder:y("Input request data")},description:y("Only support standard JSON data")},timeout:{type:"number",title:y("Timeout config"),"x-decorator":"FormItem","x-decorator-props":{},"x-component":"InputNumber","x-component-props":{addonAfter:y("ms"),min:1,step:1e3,defaultValue:5e3}}}},fe={type:"object",properties:{roles:{type:"array",title:y("Roles"),"x-decorator":"FormItem","x-decorator-props":{tooltip:y("If not set, all roles can see this action")},"x-component":"RemoteSelect","x-component-props":{multiple:!0,objectValue:!0,service:{resource:"roles"},manual:!1,fieldNames:{label:"title",value:"name"}}}}};function J(){var h;const{t:o}=I(),{name:r}=e.useCollection_deprecated(),u=p.useFieldSchema(),c=j(),{data:l,refresh:d}=K(),{dn:f}=e.useDesignable(),x=C.useMemo(()=>{var a;const s=g({},(a=l==null?void 0:l.data)==null?void 0:a.options);return s.data&&typeof s.data!="string"&&(s.data=JSON.stringify(s.data,null,2)),s},[(h=l==null?void 0:l.data)==null?void 0:h.options]);return i.jsx(i.Fragment,{children:i.jsx(e.SchemaSettingsActionModalItem,{title:o("Request settings"),components:{ArrayItems:F.ArrayItems},beforeOpen:()=>!l&&d(),scope:{useCustomRequestVariableOptions:de},schema:$,initialValues:x,onSubmit:s=>T(null,null,function*(){const a=ie(s,[]);yield c.updateOrCreate({values:{key:u["x-uid"],options:A(g({},a),{collectionName:r})},filterKeys:["key"]}),f.refresh(),d()})})})}function X(){var x;const{t:o}=I(),r=p.useFieldSchema(),u=j(),{message:c}=M.App.useApp(),{data:l,refresh:d}=K(),{refresh:f}=e.useRequest({url:k},{manual:!0,cacheKey:k});return i.jsx(i.Fragment,{children:i.jsx(e.SchemaSettingsActionModalItem,{title:o("Access control"),schema:fe,initialValues:{roles:(x=l==null?void 0:l.data)==null?void 0:x.roles},beforeOpen:()=>!l&&d(),onSubmit:s=>T(null,[s],function*({roles:h}){return yield u.updateOrCreate({values:{key:r["x-uid"],roles:h},filterKeys:["key"]}),d(),f(),c.success(o("Saved successfully"))})})})}const he=new e.SchemaSettings({name:"CustomRequestActionSettings",items:[A(g({},e.actionSettingsItems[0]),{children:[...e.actionSettingsItems[0].children,{name:"request settings",Component:J},{name:"accessControl",Component:X}]})]}),ye=()=>{const o=j(),r=p.useFieldSchema();return i.jsx(e.Action.Designer,{linkageAction:!0,schemaSettings:"CustomRequestActionSettings",buttonEditorProps:{isLink:r["x-action"]==="customize:table:request"},linkageRulesProps:{type:"button"},removeButtonProps:{onConfirmOk(){return o.destroy({filterByTk:r["x-uid"]})}}})},xe=o=>{var d;const u=e.useAPIClient().auth.role==="root",c=p.useFieldSchema(),{data:l}=e.useRequest({url:k},{manual:u,cacheKey:k});return!u&&!((d=l==null?void 0:l.data)!=null&&d.includes(c==null?void 0:c["x-uid"]))?null:o.children},be={"customize:table:request":e.Action.Link},z=o=>{const u=p.useFieldSchema()["x-action"],c=be[u]||e.Action;return i.jsx(c,A(g({},o),{useProps:pe}))};z.Designer=ye,z.Decorator=xe;const ve=o=>{const r=j(),u={title:'{{ t("Custom request") }}',"x-component":"CustomRequestAction","x-action":"customize:form:request","x-toolbar":"ActionSchemaToolbar","x-settings":"actionSettings:customRequest","x-decorator":"CustomRequestAction.Decorator","x-uid":p.uid(),"x-action-settings":{onSuccess:{manualClose:!1,redirecting:!1,successMessage:'{{ t("Request success") }}'}}},c=e.useSchemaInitializerItem(),{insert:l}=e.useSchemaInitializer();return i.jsx(e.SchemaInitializerItem,A(g({},c),{onClick:()=>T(null,null,function*(){var f;const d=p.merge(u||{},c.schema||{});(f=c==null?void 0:c.schemaInitialize)==null||f.call(c,d),yield r.create({values:{key:d["x-uid"]}}),l(d)})}))},Ce=o=>{const{t:r}=I(),{value:u,onChange:c}=o,l=[{value:"res.data",label:r("Response body")},{value:"filename",label:r("Download file name")}];return i.jsx(e.Variable.CodeMirror,{value:u,onChange:c,scope:l,fieldNames:{value:"value",label:"value"}})},ge=o=>({type:"object",title:o("After successful submission"),properties:{down:{title:'{{t("Is DownLoad")}}',"x-decorator":"FormItem","x-component":"Checkbox","x-component-props":{}},downTitle:{title:'{{t("Setting Down Title")}}',default:"{{ filename }}","x-decorator":"FormItem","x-component":"Input","x-component-props":{},"x-reactions":{dependencies:["down"],fulfill:{state:{visible:"{{!!$deps[0]}}"}}}},successMessage:{title:'{{t("Popup message")}}',"x-decorator":"FormItem","x-component":Ce,"x-component-props":{}},popupClose:{title:'{{t("Popup close method")}}',enum:[{label:'{{t("Automatic close")}}',value:!1},{label:'{{t("Manually close")}}',value:!0}],"x-decorator":"FormItem","x-component":"Radio.Group","x-component-props":{}},manualClose:{title:'{{t("Message clear metchod")}}',enum:[{label:'{{t("Automatic close")}}',value:!1},{label:'{{t("Manually close")}}',value:!0}],"x-decorator":"FormItem","x-component":"Radio.Group","x-component-props":{}},redirecting:{title:'{{t("Then")}}',enum:[{label:'{{t("Stay on current page")}}',value:!1},{label:'{{t("Redirect to")}}',value:!0}],"x-decorator":"FormItem","x-component":"Radio.Group","x-component-props":{},"x-reactions":{target:"redirectTo",fulfill:{state:{visible:"{{!!$self.value}}"}}}},redirectTo:{title:'{{t("Link")}}',"x-decorator":"FormItem","x-component":"Input","x-component-props":{}}}});function Re(){var x;const{dn:o}=e.useDesignable(),{t:r}=e.useTranslation(),u=p.useFieldSchema(),c=e.useActionContext(),l=e.findSchema(c.fieldSchema),d=u.parent.parent["x-component"],f=g({},ge(r));return((!l||l==="page")&&d.includes("Form")||!d.includes("Form"))&&delete f.properties.popupClose,i.jsx(e.SchemaSettingsModalItem,{title:r("After successful submission"),initialValues:(x=u==null?void 0:u["x-action-settings"])==null?void 0:x.onSuccess,schema:g({},f),onSubmit:h=>{u["x-action-settings"].onSuccess=h,o.emit("patch",{schema:{"x-uid":u["x-uid"],"x-action-settings":u["x-action-settings"]}})}})}const Se=new e.SchemaSettings({name:"actionSettings:customRequest",items:[{name:"editButton",Component:e.ButtonEditor,useComponentProps(){const{buttonEditorProps:o}=e.useSchemaToolbar();return g({isLink:!0},o)}},{name:"linkageRules",Component:e.SchemaSettingsLinkageRules,useComponentProps(){const{name:o}=e.useCollection(),{linkageRulesProps:r}=e.useSchemaToolbar();return A(g({},r),{collectionName:o,type:"button"})}},{name:"secondConFirm",Component:e.SecondConFirm},{name:"afterSuccessfulSubmission",Component:Re},{name:"request settings",Component:J},{name:"accessControl",Component:X},{name:"delete",sort:100,Component:e.RemoveButton,useComponentProps(){const{removeButtonProps:o}=e.useSchemaToolbar();return o}}]}),qe=o=>i.jsx(e.SchemaComponentOptions,{scope:{CustomRequestConfigurationFieldsSchema:$},components:{CustomRequestAction:z,CustomRequestInitializer:ve},children:o.children});class W extends e.Plugin{load(){return T(this,null,function*(){this.app.use(qe),this.app.schemaSettingsManager.add(Se),this.app.schemaSettingsManager.add(he)})}}n.CustomRequestPlugin=W,n.default=W,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
1
|
+
(function(n,i){typeof exports=="object"&&typeof module!="undefined"?i(exports,require("react/jsx-runtime"),require("@tachybase/client"),require("@tachybase/schema"),require("@tego/client"),require("antd"),require("react-router-dom"),require("react-i18next"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@tachybase/client","@tachybase/schema","@tego/client","antd","react-router-dom","react-i18next","react"],i):(n=typeof globalThis!="undefined"?globalThis:n||self,i(n["@tachybase/plugin-action-custom-request"]={},n.jsxRuntime,n["@tachybase/client"],n["@tachybase/schema"],n["@tego/client"],n.antd,n["react-router-dom"],n["react-i18next"],n.react))})(this,function(n,i,e,p,S,M,B,F,v){"use strict";var Te=Object.defineProperty,Ae=Object.defineProperties;var we=Object.getOwnPropertyDescriptors;var V=Object.getOwnPropertySymbols;var ne=Object.prototype.hasOwnProperty,re=Object.prototype.propertyIsEnumerable;var se=(n,i,e)=>i in n?Te(n,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[i]=e,C=(n,i)=>{for(var e in i||(i={}))ne.call(i,e)&&se(n,e,i[e]);if(V)for(var e of V(i))re.call(i,e)&&se(n,e,i[e]);return n},w=(n,i)=>Ae(n,we(i));var ae=(n,i)=>{var e={};for(var p in n)ne.call(n,p)&&i.indexOf(p)<0&&(e[p]=n[p]);if(n!=null&&V)for(var p of V(n))i.indexOf(p)<0&&re.call(n,p)&&(e[p]=n[p]);return e};var A=(n,i,e)=>new Promise((p,S)=>{var M=v=>{try{F(e.next(v))}catch(q){S(q)}},B=v=>{try{F(e.throw(v))}catch(q){S(q)}},F=v=>v.done?p(v.value):Promise.resolve(v.value).then(M,B);F((e=e.apply(n,i)).next())});const q="customRequests:listByCurrentRole";var k=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},E={exports:{}},ie=E.exports,H;function ue(){return H||(H=1,function(o,r){(function(u,c){c()})(ie,function(){function u(s,a){return typeof a=="undefined"?a={autoBom:!1}:typeof a!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),a={autoBom:!a}),a.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(s.type)?new Blob(["\uFEFF",s],{type:s.type}):s}function c(s,a,g){var m=new XMLHttpRequest;m.open("GET",s),m.responseType="blob",m.onload=function(){h(m.response,a,g)},m.onerror=function(){console.error("could not download file")},m.send()}function l(s){var a=new XMLHttpRequest;a.open("HEAD",s,!1);try{a.send()}catch(g){}return 200<=a.status&&299>=a.status}function d(s){try{s.dispatchEvent(new MouseEvent("click"))}catch(g){var a=document.createEvent("MouseEvents");a.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),s.dispatchEvent(a)}}var f=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof k=="object"&&k.global===k?k:void 0,y=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),h=f.saveAs||(typeof window!="object"||window!==f?function(){}:"download"in HTMLAnchorElement.prototype&&!y?function(s,a,g){var m=f.URL||f.webkitURL,b=document.createElement("a");a=a||s.name||"download",b.download=a,b.rel="noopener",typeof s=="string"?(b.href=s,b.origin===location.origin?d(b):l(b.href)?c(s,a,g):d(b,b.target="_blank")):(b.href=m.createObjectURL(s),setTimeout(function(){m.revokeObjectURL(b.href)},4e4),setTimeout(function(){d(b)},0))}:"msSaveOrOpenBlob"in navigator?function(s,a,g){if(a=a||s.name||"download",typeof s!="string")navigator.msSaveOrOpenBlob(u(s,g),a);else if(l(s))c(s,a,g);else{var m=document.createElement("a");m.href=s,m.target="_blank",setTimeout(function(){d(m)})}}:function(s,a,g,m){if(m=m||open("","_blank"),m&&(m.document.title=m.document.body.innerText="downloading..."),typeof s=="string")return c(s,a,g);var b=s.type==="application/octet-stream",O=/constructor/i.test(f.HTMLElement)||f.safari,P=/CriOS\/[\d]+/.test(navigator.userAgent);if((P||b&&O||y)&&typeof FileReader!="undefined"){var z=new FileReader;z.onloadend=function(){var R=z.result;R=P?R:R.replace(/^data:[^;]*;/,"data:attachment/file;"),m?m.location.href=R:location=R,m=null},z.readAsDataURL(s)}else{var j=f.URL||f.webkitURL,t=j.createObjectURL(s);m?m.location=t:location.href=t,m=null,setTimeout(function(){j.revokeObjectURL(t)},4e4)}});f.saveAs=h.saveAs=h,o.exports=h})}(E)),E.exports}var ce=ue();const _="action-custom-request";function x(o){return`{{t('${o}', { ns: '${_}', nsMode: 'fallback' })}}`}function I(){return F.useTranslation(_,{nsMode:"fallback"})}function le(o){if(!o)return null;let r=o.match(/filename="([^"]+)"/i);return r?r[1]:(r=o.match(/filename\*=UTF-8''(.+)/i),r?decodeURIComponent(r[1]):null)}const me=()=>{const o=e.useAPIClient(),r=B.useNavigate(),u=p.useFieldSchema(),c=e.useCompile(),l=p.useForm(),{getPrimaryKey:d}=e.useCollection_deprecated(),{resource:f,__parent:y,service:h}=e.useBlockRequestContext(),s=e.useRecord(),a=p.useFieldSchema(),g=p.useField(),{setVisible:m}=e.useActionContext(),{modal:b,message:O}=M.App.useApp(),{t:P}=I();return{onClick(){return A(this,null,function*(){var Q,Y,Z,N,ee,te;const{skipValidator:j,onSuccess:t}=(Q=u==null?void 0:u["x-action-settings"])!=null?Q:{},R=u==null?void 0:u["x-action"];j!==!0&&R==="customize:form:request"&&(yield l.submit());let W={};R==="customize:form:request"&&(W=l.values),(Y=g.data)!=null||(g.data={}),g.data.loading=!0;try{const U=yield o.request({url:`/customRequests:send/${a["x-uid"]}`,method:"POST",responseType:t!=null&&t.down?"blob":"json",data:{currentRecord:{id:s[d()],appends:(Z=h.params[0])==null?void 0:Z.appends,data:W},successMessage:t.successMessage},headers:{"X-Response-Type":t!=null&&t.down?"blob":"json"}}),qe=U.headers.getContentType();let oe=le(U.headers["content-disposition"]);if(t!=null&&t.down)if(qe==="application/octet-stream"){const T=t.downTitle;ce.saveAs(U.data,S.parse(T)({filename:oe||""}))}else O.error(P("The current return type is not a document type"));if(g.data.loading=!1,f instanceof e.TableFieldResource||(ee=(N=y==null?void 0:y.service)==null?void 0:N.refresh)==null||ee.call(N),(te=h==null?void 0:h.refresh)==null||te.call(h),R==="customize:form:request"&&(m==null||m(!1)),t!=null&&t.successMessage){let T=S.parse(t==null?void 0:t.successMessage)({res:U,filename:oe});typeof T!="string"&&(T=JSON.stringify(T)),t!=null&&t.manualClose?b.success({title:c(T),onOk:()=>A(null,null,function*(){t!=null&&t.redirecting&&(t!=null&&t.redirectTo)&&(S.isURL(t.redirectTo)?window.location.href=t.redirectTo:r(t.redirectTo))})}):(O.success(c(T)),t!=null&&t.redirecting&&(t!=null&&t.redirectTo)&&(S.isURL(t.redirectTo)?window.location.href=t.redirectTo:r(t.redirectTo)))}else O.success(P("Request success"))}finally{g.data.loading=!1}})}}},G=()=>{const r=`customRequests:get/${p.useFieldSchema()["x-uid"]}`;return e.useRequest({url:r,params:{appends:["roles"]}},{manual:!0,cacheKey:r})},pe=()=>{const o=e.useCollection_deprecated(),{t:r}=I(),u=e.useCollectionFilterOptions(o),c=e.useCollectionFilterOptions("users"),l=e.useCompile(),[d,f]=v.useMemo(()=>[l(u),l(c)],[u,c]),y=e.useGlobalVariable("$env");return v.useMemo(()=>{const h=[{name:"currentRecord",title:r("Current record",{ns:"core"}),children:[...d]},{name:"currentUser",title:r("Current user",{ns:"core"}),children:f},{name:"currentTime",title:r("Current time",{ns:"core"}),children:null}];return y&&h.unshift(y),h},[d,f])},L=()=>e.useAPIClient().resource("customRequests"),K={type:"object",properties:{method:{type:"string",required:!0,title:x("HTTP method"),"x-decorator-props":{tooltip:x("When the HTTP method is Post, Put or Patch, and this custom request inside the form, the request body will be automatically filled in with the form data")},"x-decorator":"FormItem","x-component":"Select","x-component-props":{showSearch:!1,allowClear:!1,className:"auto-width"},enum:[{label:"GET",value:"GET"},{label:"POST",value:"POST"},{label:"PUT",value:"PUT"},{label:"PATCH",value:"PATCH"},{label:"DELETE",value:"DELETE"}],default:"POST"},url:{type:"string",required:!0,title:x("URL"),"x-decorator":"FormItem","x-component":"Variable.RawTextArea","x-component-props":{scope:"{{useCustomRequestVariableOptions}}",autoSize:!0,fieldNames:{value:"name",label:"title"},placeholder:"https://www.tachybase.com"}},headers:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:x("Headers"),description:x('"Content-Type" only support "application/json", and no need to specify'),items:{type:"object",properties:{space:{type:"void","x-component":"Space",properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:x("Name")}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.Input","x-component-props":{scope:"{{useCustomRequestVariableOptions}}",fieldNames:{value:"name",label:"title"},useTypedConstant:!0}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:x("Add request header"),"x-component":"ArrayItems.Addition"}}},params:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:x("Parameters"),items:{type:"object",properties:{space:{type:"void","x-component":"Space",properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:x("Name")}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.Input","x-component-props":{scope:"{{useCustomRequestVariableOptions}}",fieldNames:{value:"name",label:"title"},useTypedConstant:!0}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:x("Add parameter"),"x-component":"ArrayItems.Addition"}}},data:{type:"string",title:x("Body"),"x-decorator":"FormItem","x-decorator-props":{},"x-component":"Variable.JSON","x-component-props":{scope:"{{useCustomRequestVariableOptions}}",fieldNames:{value:"name",label:"title"},changeOnSelect:!0,autoSize:{minRows:10},placeholder:x("Input request data")},description:x("Only support standard JSON data")},timeout:{type:"number",title:x("Timeout config"),"x-decorator":"FormItem","x-decorator-props":{},"x-component":"InputNumber","x-component-props":{addonAfter:x("ms"),min:1,step:1e3,defaultValue:5e3}}}},de={type:"object",properties:{roles:{type:"array",title:x("Roles"),"x-decorator":"FormItem","x-decorator-props":{tooltip:x("If not set, all roles can see this action")},"x-component":"RemoteSelect","x-component-props":{multiple:!0,objectValue:!0,service:{resource:"roles"},manual:!1,fieldNames:{label:"title",value:"name"}}}}};function $(){var h;const{t:o}=I(),{name:r}=e.useCollection_deprecated(),u=p.useFieldSchema(),c=L(),{data:l,refresh:d}=G(),{dn:f}=e.useDesignable(),y=v.useMemo(()=>{var a;const s=C({},(a=l==null?void 0:l.data)==null?void 0:a.options);return s.data&&typeof s.data!="string"&&(s.data=JSON.stringify(s.data,null,2)),s},[(h=l==null?void 0:l.data)==null?void 0:h.options]);return i.jsx(i.Fragment,{children:i.jsx(e.SchemaSettingsActionModalItem,{title:o("Request settings"),components:{ArrayItems:S.ArrayItems},beforeOpen:()=>!l&&d(),scope:{useCustomRequestVariableOptions:pe},schema:K,initialValues:y,onSubmit:s=>A(null,null,function*(){const a=ae(s,[]);yield c.updateOrCreate({values:{key:u["x-uid"],options:w(C({},a),{collectionName:r})},filterKeys:["key"]}),f.refresh(),d()})})})}function J(){var y;const{t:o}=I(),r=p.useFieldSchema(),u=L(),{message:c}=M.App.useApp(),{data:l,refresh:d}=G(),{refresh:f}=e.useRequest({url:q},{manual:!0,cacheKey:q});return i.jsx(i.Fragment,{children:i.jsx(e.SchemaSettingsActionModalItem,{title:o("Access control"),schema:de,initialValues:{roles:(y=l==null?void 0:l.data)==null?void 0:y.roles},beforeOpen:()=>!l&&d(),onSubmit:s=>A(null,[s],function*({roles:h}){return yield u.updateOrCreate({values:{key:r["x-uid"],roles:h},filterKeys:["key"]}),d(),f(),c.success(o("Saved successfully"))})})})}const fe=new e.SchemaSettings({name:"CustomRequestActionSettings",items:[w(C({},e.actionSettingsItems[0]),{children:[...e.actionSettingsItems[0].children,{name:"request settings",Component:$},{name:"accessControl",Component:J}]})]}),he=()=>{const o=L(),r=p.useFieldSchema();return i.jsx(e.Action.Designer,{linkageAction:!0,schemaSettings:"CustomRequestActionSettings",buttonEditorProps:{isLink:r["x-action"]==="customize:table:request"},linkageRulesProps:{type:"button"},removeButtonProps:{onConfirmOk(){return o.destroy({filterByTk:r["x-uid"]})}}})},xe=o=>{var d;const u=e.useAPIClient().auth.role==="root",c=p.useFieldSchema(),{data:l}=e.useRequest({url:q},{manual:u,cacheKey:q});return!u&&!((d=l==null?void 0:l.data)!=null&&d.includes(c==null?void 0:c["x-uid"]))?null:o.children},ye={"customize:table:request":e.Action.Link},D=o=>{const u=p.useFieldSchema()["x-action"],c=ye[u]||e.Action;return i.jsx(c,w(C({},o),{useProps:me}))};D.Designer=he,D.Decorator=xe;const ge=o=>{const r=L(),u={title:'{{ t("Custom request") }}',"x-component":"CustomRequestAction","x-action":"customize:form:request","x-toolbar":"ActionSchemaToolbar","x-settings":"actionSettings:customRequest","x-decorator":"CustomRequestAction.Decorator","x-uid":p.uid(),"x-action-settings":{onSuccess:{manualClose:!1,redirecting:!1,successMessage:'{{ t("Request success") }}'}}},c=e.useSchemaInitializerItem(),{insert:l}=e.useSchemaInitializer();return i.jsx(e.SchemaInitializerItem,w(C({},c),{onClick:()=>A(null,null,function*(){var f;const d=p.merge(u||{},c.schema||{});(f=c==null?void 0:c.schemaInitialize)==null||f.call(c,d),yield r.create({values:{key:d["x-uid"]}}),l(d)})}))},be=o=>{const{t:r}=I(),{value:u,onChange:c}=o,l=[{value:"res.data",label:r("Response body")},{value:"filename",label:r("Download file name")}];return i.jsx(e.Variable.CodeMirror,{value:u,onChange:c,scope:l,fieldNames:{value:"value",label:"value"}})},ve=o=>({type:"object",title:o("After successful submission"),properties:{down:{title:'{{t("Is DownLoad")}}',"x-decorator":"FormItem","x-component":"Checkbox","x-component-props":{}},downTitle:{title:'{{t("Setting Down Title")}}',default:"{{ filename }}","x-decorator":"FormItem","x-component":"Input","x-component-props":{},"x-reactions":{dependencies:["down"],fulfill:{state:{visible:"{{!!$deps[0]}}"}}}},successMessage:{title:'{{t("Popup message")}}',"x-decorator":"FormItem","x-component":be,"x-component-props":{}},popupClose:{title:'{{t("Popup close method")}}',enum:[{label:'{{t("Automatic close")}}',value:!1},{label:'{{t("Manually close")}}',value:!0}],"x-decorator":"FormItem","x-component":"Radio.Group","x-component-props":{}},manualClose:{title:'{{t("Message clear metchod")}}',enum:[{label:'{{t("Automatic close")}}',value:!1},{label:'{{t("Manually close")}}',value:!0}],"x-decorator":"FormItem","x-component":"Radio.Group","x-component-props":{}},redirecting:{title:'{{t("Then")}}',enum:[{label:'{{t("Stay on current page")}}',value:!1},{label:'{{t("Redirect to")}}',value:!0}],"x-decorator":"FormItem","x-component":"Radio.Group","x-component-props":{},"x-reactions":{target:"redirectTo",fulfill:{state:{visible:"{{!!$self.value}}"}}}},redirectTo:{title:'{{t("Link")}}',"x-decorator":"FormItem","x-component":"Input","x-component-props":{}}}});function Ce(){var y;const{dn:o}=e.useDesignable(),{t:r}=e.useTranslation(),u=p.useFieldSchema(),c=e.useActionContext(),l=e.findSchema(c.fieldSchema),d=u.parent.parent["x-component"],f=C({},ve(r));return((!l||l==="page")&&d.includes("Form")||!d.includes("Form"))&&delete f.properties.popupClose,i.jsx(e.SchemaSettingsModalItem,{title:r("After successful submission"),initialValues:(y=u==null?void 0:u["x-action-settings"])==null?void 0:y.onSuccess,schema:C({},f),onSubmit:h=>{u["x-action-settings"].onSuccess=h,o.emit("patch",{schema:{"x-uid":u["x-uid"],"x-action-settings":u["x-action-settings"]}})}})}const Re=new e.SchemaSettings({name:"actionSettings:customRequest",items:[{name:"editButton",Component:e.ButtonEditor,useComponentProps(){const{buttonEditorProps:o}=e.useSchemaToolbar();return C({isLink:!0},o)}},{name:"linkageRules",Component:e.SchemaSettingsLinkageRules,useComponentProps(){const{name:o}=e.useCollection(),{linkageRulesProps:r}=e.useSchemaToolbar();return w(C({},r),{collectionName:o,type:"button"})}},{name:"secondConFirm",Component:e.SecondConFirm},{name:"afterSuccessfulSubmission",Component:Ce},{name:"request settings",Component:$},{name:"accessControl",Component:J},{name:"delete",sort:100,Component:e.RemoveButton,useComponentProps(){const{removeButtonProps:o}=e.useSchemaToolbar();return o}}]}),Se=o=>i.jsx(e.SchemaComponentOptions,{scope:{CustomRequestConfigurationFieldsSchema:K},components:{CustomRequestAction:D,CustomRequestInitializer:ge},children:o.children});class X extends e.Plugin{load(){return A(this,null,function*(){this.app.use(Se),this.app.schemaSettingsManager.add(Re),this.app.schemaSettingsManager.add(fe)})}}n.CustomRequestPlugin=X,n.default=X,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/externalVersion.js
CHANGED
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
"react": "18.3.1",
|
|
3
|
-
"@tachybase/client": "1.3.
|
|
3
|
+
"@tachybase/client": "1.3.22",
|
|
4
4
|
"react-i18next": "15.2.0",
|
|
5
|
-
"@
|
|
6
|
-
"@tachybase/
|
|
7
|
-
"@tachybase/
|
|
8
|
-
"@
|
|
9
|
-
"@tachybase/components": "1.3.20",
|
|
5
|
+
"@tego/server": "1.3.39",
|
|
6
|
+
"@tachybase/test": "1.3.39",
|
|
7
|
+
"@tachybase/schema": "1.3.39",
|
|
8
|
+
"@tego/client": "1.3.39",
|
|
10
9
|
"antd": "5.22.5",
|
|
11
|
-
"@tachybase/utils": "1.3.20",
|
|
12
10
|
"react-router-dom": "6.28.1",
|
|
13
|
-
"
|
|
14
|
-
"@tachybase/evaluators": "1.3.20",
|
|
15
|
-
"axios": "1.7.7",
|
|
16
|
-
"@tachybase/database": "1.3.20"
|
|
11
|
+
"axios": "1.7.7"
|
|
17
12
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Context } from '@
|
|
1
|
+
import { Context } from '@tego/server';
|
|
2
2
|
export declare function listByCurrentRole(ctx: Context): Promise<void>;
|
|
@@ -30,9 +30,7 @@ __export(send_exports, {
|
|
|
30
30
|
send: () => send
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(send_exports);
|
|
33
|
-
var
|
|
34
|
-
var import_server = require("@tachybase/server");
|
|
35
|
-
var import_utils = require("@tachybase/utils");
|
|
33
|
+
var import_server = require("@tego/server");
|
|
36
34
|
var import_axios = __toESM(require("axios"));
|
|
37
35
|
const getHeaders = (headers) => {
|
|
38
36
|
return Object.keys(headers).reduce((hds, key) => {
|
|
@@ -133,9 +131,9 @@ async function send(ctx, next) {
|
|
|
133
131
|
$env: ctx.app.environment.getVariables()
|
|
134
132
|
};
|
|
135
133
|
const getParsedValue = (value) => {
|
|
136
|
-
const template = (0,
|
|
134
|
+
const template = (0, import_server.parse)(value);
|
|
137
135
|
template.parameters.forEach(({ key }) => {
|
|
138
|
-
(0,
|
|
136
|
+
(0, import_server.appendArrayColumn)(variables, key);
|
|
139
137
|
});
|
|
140
138
|
return template(variables);
|
|
141
139
|
};
|
|
@@ -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(customRequest_exports, {
|
|
|
20
20
|
default: () => customRequest_default
|
|
21
21
|
});
|
|
22
22
|
module.exports = __toCommonJS(customRequest_exports);
|
|
23
|
-
var
|
|
24
|
-
var customRequest_default = (0,
|
|
23
|
+
var import_server = require("@tego/server");
|
|
24
|
+
var customRequest_default = (0, import_server.defineCollection)({
|
|
25
25
|
dumpRules: "required",
|
|
26
26
|
name: "customRequests",
|
|
27
27
|
fields: [
|
|
@@ -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(customRequestsRoles_exports, {
|
|
|
20
20
|
default: () => customRequestsRoles_default
|
|
21
21
|
});
|
|
22
22
|
module.exports = __toCommonJS(customRequestsRoles_exports);
|
|
23
|
-
var
|
|
24
|
-
var customRequestsRoles_default = (0,
|
|
23
|
+
var import_server = require("@tego/server");
|
|
24
|
+
var customRequestsRoles_default = (0, import_server.defineCollection)({
|
|
25
25
|
dumpRules: "required",
|
|
26
26
|
name: "customRequestsRoles"
|
|
27
27
|
});
|
package/dist/server/plugin.d.ts
CHANGED
package/dist/server/plugin.js
CHANGED
|
@@ -21,8 +21,8 @@ __export(plugin_exports, {
|
|
|
21
21
|
default: () => plugin_default
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(plugin_exports);
|
|
24
|
-
var
|
|
25
|
-
var import_server = require("@
|
|
24
|
+
var import_node_path = require("node:path");
|
|
25
|
+
var import_server = require("@tego/server");
|
|
26
26
|
var import_listByCurrentRole = require("./actions/listByCurrentRole");
|
|
27
27
|
var import_send = require("./actions/send");
|
|
28
28
|
class CustomRequestPlugin extends import_server.Plugin {
|
|
@@ -40,7 +40,7 @@ class CustomRequestPlugin extends import_server.Plugin {
|
|
|
40
40
|
return logger;
|
|
41
41
|
}
|
|
42
42
|
async load() {
|
|
43
|
-
await this.importCollections((0,
|
|
43
|
+
await this.importCollections((0, import_node_path.resolve)(__dirname, "collections"));
|
|
44
44
|
this.app.resource({
|
|
45
45
|
name: "customRequests",
|
|
46
46
|
actions: {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tachybase/plugin-action-custom-request",
|
|
3
3
|
"displayName": "Action: Custom request",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.22",
|
|
5
5
|
"description": "Sending a request to any HTTP service supports sending context data to the target service.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"Actions"
|
|
@@ -10,29 +10,19 @@
|
|
|
10
10
|
"main": "dist/server/index.js",
|
|
11
11
|
"dependencies": {},
|
|
12
12
|
"devDependencies": {
|
|
13
|
+
"@tachybase/schema": "^1.3.39",
|
|
14
|
+
"@tachybase/test": "^1.3.39",
|
|
15
|
+
"@tego/client": "^1.3.39",
|
|
16
|
+
"@tego/server": "^1.3.39",
|
|
13
17
|
"antd": "5.22.5",
|
|
14
18
|
"axios": "1.7.7",
|
|
15
19
|
"file-saver": "^2.0.5",
|
|
16
|
-
"lodash": "
|
|
17
|
-
"react-i18next": "
|
|
20
|
+
"lodash": "4.17.21",
|
|
21
|
+
"react-i18next": "15.2.0",
|
|
18
22
|
"react-router-dom": "6.28.1",
|
|
19
|
-
"@tachybase/
|
|
20
|
-
"@tachybase/components": "1.3.20"
|
|
21
|
-
},
|
|
22
|
-
"peerDependencies": {
|
|
23
|
-
"@tachybase/actions": "1.3.20",
|
|
24
|
-
"@tachybase/client": "1.3.20",
|
|
25
|
-
"@tachybase/logger": "1.3.20",
|
|
26
|
-
"@tachybase/database": "1.3.20",
|
|
27
|
-
"@tachybase/evaluators": "1.3.20",
|
|
28
|
-
"@tachybase/sdk": "1.3.20",
|
|
29
|
-
"@tachybase/server": "1.3.20",
|
|
30
|
-
"@tachybase/test": "1.3.20",
|
|
31
|
-
"@tachybase/utils": "1.3.20"
|
|
23
|
+
"@tachybase/client": "1.3.22"
|
|
32
24
|
},
|
|
33
25
|
"description.zh-CN": "向任意 HTTP 服务发送请求,支持将上下文数据发送给目标服务。",
|
|
34
26
|
"displayName.zh-CN": "操作:自定义请求",
|
|
35
|
-
"scripts": {
|
|
36
|
-
"build": "tachybase-build --no-dts @tachybase/plugin-action-custom-request"
|
|
37
|
-
}
|
|
27
|
+
"scripts": {}
|
|
38
28
|
}
|