@tachybase/plugin-data-source-common 0.23.8

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.
Files changed (126) hide show
  1. package/.turbo/turbo-build.log +14 -0
  2. package/LICENSE +201 -0
  3. package/README.md +1 -0
  4. package/client.d.ts +2 -0
  5. package/client.js +1 -0
  6. package/dist/client/features/rest-api/collection-add/AddCollection.d.ts +2 -0
  7. package/dist/client/features/rest-api/collection-add/AddCollectionAction.component.d.ts +2 -0
  8. package/dist/client/features/rest-api/collection-add/CreateCollection.schema.d.ts +389 -0
  9. package/dist/client/features/rest-api/collection-add/CreateCollection.view.d.ts +2 -0
  10. package/dist/client/features/rest-api/collection-add/PreviewComponent.d.ts +2 -0
  11. package/dist/client/features/rest-api/collection-add/PreviewFields.d.ts +5 -0
  12. package/dist/client/features/rest-api/collection-add/RequestActionItems.provider.d.ts +2 -0
  13. package/dist/client/features/rest-api/collection-add/getSchemaRequestAction.d.ts +57 -0
  14. package/dist/client/features/rest-api/collection-add/useActionCreateCollection.d.ts +3 -0
  15. package/dist/client/features/rest-api/collection-delete/DeleteCollection.d.ts +2 -0
  16. package/dist/client/features/rest-api/collection-delete/DeleteCollectionAction.component.d.ts +5 -0
  17. package/dist/client/features/rest-api/collection-delete/useBulkDestroyActionAndRefreshCM.d.ts +3 -0
  18. package/dist/client/features/rest-api/collection-delete/useDestroyActionAndRefreshCM.d.ts +3 -0
  19. package/dist/client/features/rest-api/collection-edit/EditCollection.d.ts +2 -0
  20. package/dist/client/features/rest-api/collection-edit/EditCollectionAction.component.d.ts +2 -0
  21. package/dist/client/features/rest-api/collection-edit/EditCollectionForm.view.d.ts +2 -0
  22. package/dist/client/features/rest-api/collection-edit/useActionEditCollection.d.ts +3 -0
  23. package/dist/client/features/rest-api/constants/mapListve.d.ts +7 -0
  24. package/dist/client/features/rest-api/constants/requestHeaderList.d.ts +4 -0
  25. package/dist/client/features/rest-api/contexts/RequestForm.context.d.ts +11 -0
  26. package/dist/client/features/rest-api/contexts/ResponseInfo.context.d.ts +12 -0
  27. package/dist/client/features/rest-api/form-data-source/DataSourceSettingsForm.d.ts +2 -0
  28. package/dist/client/features/rest-api/form-data-source/DataSourceSettingsForm.schema.d.ts +172 -0
  29. package/dist/client/features/rest-api/kit.d.ts +4 -0
  30. package/dist/client/features/rest-api/request-configs/debug-area/Debug.provider.d.ts +2 -0
  31. package/dist/client/features/rest-api/request-configs/debug-area/Debug.schema.d.ts +164 -0
  32. package/dist/client/features/rest-api/request-configs/debug-area/Debug.view.d.ts +2 -0
  33. package/dist/client/features/rest-api/request-configs/debug-area/DebugComponent.d.ts +2 -0
  34. package/dist/client/features/rest-api/request-configs/debug-area/components/AlertError.d.ts +2 -0
  35. package/dist/client/features/rest-api/request-configs/debug-area/components/DebugResponse.schema.d.ts +21 -0
  36. package/dist/client/features/rest-api/request-configs/debug-area/components/DebugResponse.view.d.ts +2 -0
  37. package/dist/client/features/rest-api/request-configs/debug-area/components/DebugResponseTabs.d.ts +2 -0
  38. package/dist/client/features/rest-api/request-configs/debug-area/components/DebugResponseTabs.items.d.ts +6 -0
  39. package/dist/client/features/rest-api/request-configs/debug-area/components/ExtractFieldMetadata.d.ts +2 -0
  40. package/dist/client/features/rest-api/request-configs/debug-area/components/Headers.schema.d.ts +60 -0
  41. package/dist/client/features/rest-api/request-configs/debug-area/components/RequestHeaders.view.d.ts +2 -0
  42. package/dist/client/features/rest-api/request-configs/debug-area/components/ResponseBody.schema.d.ts +21 -0
  43. package/dist/client/features/rest-api/request-configs/debug-area/components/ResponseBody.view.d.ts +2 -0
  44. package/dist/client/features/rest-api/request-configs/debug-area/components/ResponseHeaders.view.d.ts +2 -0
  45. package/dist/client/features/rest-api/request-configs/debug-area/components/ResponseTab.d.ts +2 -0
  46. package/dist/client/features/rest-api/request-configs/debug-area/components/ResponseTab.item.d.ts +6 -0
  47. package/dist/client/features/rest-api/request-configs/debug-area/components/TooltipContainer.d.ts +2 -0
  48. package/dist/client/features/rest-api/request-configs/debug-area/schemas/getSchemaAction.d.ts +88 -0
  49. package/dist/client/features/rest-api/request-configs/debug-area/schemas/getSchemaParam.d.ts +1 -0
  50. package/dist/client/features/rest-api/request-configs/debug-area/scopes/useCancelAction.d.ts +3 -0
  51. package/dist/client/features/rest-api/request-configs/debug-area/scopes/useDebugAction.d.ts +3 -0
  52. package/dist/client/features/rest-api/request-configs/method-path/FieldMethod.schema.d.ts +23 -0
  53. package/dist/client/features/rest-api/request-configs/method-path/FieldMethod.view.d.ts +2 -0
  54. package/dist/client/features/rest-api/request-configs/method-path/FieldPath.schema.d.ts +35 -0
  55. package/dist/client/features/rest-api/request-configs/method-path/FieldPath.view.d.ts +2 -0
  56. package/dist/client/features/rest-api/request-configs/method-path/MethodPathComponent.d.ts +2 -0
  57. package/dist/client/features/rest-api/request-configs/request-tab/RequestBody.schema.d.ts +124 -0
  58. package/dist/client/features/rest-api/request-configs/request-tab/RequestBody.view.d.ts +2 -0
  59. package/dist/client/features/rest-api/request-configs/request-tab/RequestHeaders.schema.d.ts +77 -0
  60. package/dist/client/features/rest-api/request-configs/request-tab/RequestHeaders.view.d.ts +2 -0
  61. package/dist/client/features/rest-api/request-configs/request-tab/RequestParams.schema.d.ts +81 -0
  62. package/dist/client/features/rest-api/request-configs/request-tab/RequestParams.view.d.ts +2 -0
  63. package/dist/client/features/rest-api/request-configs/request-tab/RequestTab.d.ts +2 -0
  64. package/dist/client/features/rest-api/request-configs/request-tab/RequestTab.items.d.ts +6 -0
  65. package/dist/client/features/rest-api/request-configs/request-tab/debounceClick.util.d.ts +2 -0
  66. package/dist/client/features/rest-api/request-configs/request-transformer/ResponseTransformerComponent.d.ts +2 -0
  67. package/dist/client/features/rest-api/scopes/useVariableOptions.d.ts +1 -0
  68. package/dist/client/features/rest-api/utils/filterObjectWithMethodAndPath.d.ts +1 -0
  69. package/dist/client/features/rest-api/utils/filterTree.d.ts +1 -0
  70. package/dist/client/features/rest-api/utils/getRequestActions.d.ts +1 -0
  71. package/dist/client/features/rest-api/utils/getRequestValues.d.ts +1 -0
  72. package/dist/client/features/rest-api/utils/responseTransformerAe.d.ts +4 -0
  73. package/dist/client/features/rest-api/utils/setFormValue.d.ts +1 -0
  74. package/dist/client/forms/msql.d.ts +2 -0
  75. package/dist/client/forms/pg.d.ts +2 -0
  76. package/dist/client/index.d.ts +6 -0
  77. package/dist/client/index.js +86 -0
  78. package/dist/client/locale.d.ts +4 -0
  79. package/dist/externalVersion.js +16 -0
  80. package/dist/index.d.ts +2 -0
  81. package/dist/index.js +39 -0
  82. package/dist/locale/en-US.json +32 -0
  83. package/dist/locale/zh-CN.json +32 -0
  84. package/dist/server/http/plugin.d.ts +10 -0
  85. package/dist/server/http/plugin.js +78 -0
  86. package/dist/server/http/services/http-api-repository.d.ts +18 -0
  87. package/dist/server/http/services/http-api-repository.js +125 -0
  88. package/dist/server/http/services/http-collection-manager.d.ts +6 -0
  89. package/dist/server/http/services/http-collection-manager.js +36 -0
  90. package/dist/server/http/services/http-collection.d.ts +7 -0
  91. package/dist/server/http/services/http-collection.js +270 -0
  92. package/dist/server/http/services/http-data-source.d.ts +10 -0
  93. package/dist/server/http/services/http-data-source.js +67 -0
  94. package/dist/server/http/services/http-request-builder.d.ts +3 -0
  95. package/dist/server/http/services/http-request-builder.js +30 -0
  96. package/dist/server/http/services/transform-response.d.ts +1 -0
  97. package/dist/server/http/services/transform-response.js +185 -0
  98. package/dist/server/http/services/type-interface-map.d.ts +182 -0
  99. package/dist/server/http/services/type-interface-map.js +246 -0
  100. package/dist/server/http/services/utils.d.ts +2 -0
  101. package/dist/server/http/services/utils.js +49 -0
  102. package/dist/server/index.d.ts +1 -0
  103. package/dist/server/index.js +33 -0
  104. package/dist/server/mysql/database-introspector.d.ts +27 -0
  105. package/dist/server/mysql/database-introspector.js +254 -0
  106. package/dist/server/mysql/mysql-collection-manager.d.ts +3 -0
  107. package/dist/server/mysql/mysql-collection-manager.js +29 -0
  108. package/dist/server/mysql/mysql-data-source.d.ts +7 -0
  109. package/dist/server/mysql/mysql-data-source.js +111 -0
  110. package/dist/server/mysql/type-interface-map.d.ts +193 -0
  111. package/dist/server/mysql/type-interface-map.js +257 -0
  112. package/dist/server/pg/database-introspector.d.ts +54 -0
  113. package/dist/server/pg/database-introspector.js +286 -0
  114. package/dist/server/pg/postgres-collection-manager.d.ts +3 -0
  115. package/dist/server/pg/postgres-collection-manager.js +29 -0
  116. package/dist/server/pg/postgres-data-source.d.ts +8 -0
  117. package/dist/server/pg/postgres-data-source.js +127 -0
  118. package/dist/server/pg/type-interface-map.d.ts +183 -0
  119. package/dist/server/pg/type-interface-map.js +243 -0
  120. package/dist/server/pg/utils.d.ts +1 -0
  121. package/dist/server/pg/utils.js +48 -0
  122. package/dist/server/plugin.d.ts +13 -0
  123. package/dist/server/plugin.js +60 -0
  124. package/package.json +32 -0
  125. package/server.d.ts +2 -0
  126. package/server.js +1 -0
@@ -0,0 +1,86 @@
1
+ (function(m,r){typeof exports=="object"&&typeof module!="undefined"?r(exports,require("@tachybase/client"),require("@tachybase/module-data-source/client"),require("react/jsx-runtime"),require("react"),require("@ant-design/icons"),require("antd"),require("@tachybase/components"),require("@tachybase/schema"),require("lodash"),require("@tachybase/utils/client"),require("react-router-dom")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","@tachybase/module-data-source/client","react/jsx-runtime","react","@ant-design/icons","antd","@tachybase/components","@tachybase/schema","lodash","@tachybase/utils/client","react-router-dom"],r):(m=typeof globalThis!="undefined"?globalThis:m||self,r(m["@tachybase/plugin-data-source-common"]={},m["@tachybase/client"],m["@tachybase/module-data-source"],m.jsxRuntime,m.react,m["@ant-design/icons"],m.antd,m["@tachybase/components"],m["@tachybase/schema"],m.lodash,m["@tachybase/utils"],m["react-router-dom"]))})(this,function(m,r,q,c,I,R,h,k,y,V,X,L){"use strict";var bt=Object.defineProperty,gt=Object.defineProperties;var It=Object.getOwnPropertyDescriptors;var U=Object.getOwnPropertySymbols;var ie=Object.prototype.hasOwnProperty,pe=Object.prototype.propertyIsEnumerable;var ce=(m,r,q)=>r in m?bt(m,r,{enumerable:!0,configurable:!0,writable:!0,value:q}):m[r]=q,f=(m,r)=>{for(var q in r||(r={}))ie.call(r,q)&&ce(m,q,r[q]);if(U)for(var q of U(r))pe.call(r,q)&&ce(m,q,r[q]);return m},w=(m,r)=>gt(m,It(r));var le=(m,r)=>{var q={};for(var c in m)ie.call(m,c)&&r.indexOf(c)<0&&(q[c]=m[c]);if(m!=null&&U)for(var c of U(m))r.indexOf(c)<0&&pe.call(m,c)&&(q[c]=m[c]);return q};var M=(m,r,q)=>new Promise((c,I)=>{var R=y=>{try{k(q.next(y))}catch(V){I(V)}},h=y=>{try{k(q.throw(y))}catch(V){I(V)}},k=y=>y.done?c(y.value):Promise.resolve(y.value).then(R,h);k((q=q.apply(m,r)).next())});const F="data-source-common",C=(e,t=!1)=>r.tval(e,{ns:t?void 0:F}),P=(e=!1)=>{const{i18n:t}=r.useApp();return{t:(o,n={})=>t.t(o,f({ns:e?void 0:F},n))}},_=I.createContext({}),de=_.Provider;function j(){return I.useContext(_)}const J=I.createContext({}),ue=J.Provider;function O(){return I.useContext(J)}const me=e=>{const{visible:t,setVisible:s}=e,[o,n]=I.useState(null),[a,i]=I.useState(null),[p,l]=I.useState(null);return c.jsx(r.ActionContextProvider,{visible:t,setVisible:s,children:c.jsx(ue,{value:{rawResponse:o,debugResponse:a,responseValidationErrorMessage:p,setRawResponse:n,setDebugResponse:i,setResponseValidationErrorMessage:l},children:e.children})})},G={list:["page","pageSize","filter","sort","appends","fields","except"],get:["filterByTk","filter","sort","appends","fields","except"],create:["whiteList","blacklist","body"],update:["filterByTk","filter","whiteList","blacklist","body"],destroy:["filterByTk","filter"]},ye=[{name:"X-App",title:"X-App"},{name:"X-Locale",title:"X-Locale"},{name:"X-Hostname",title:"X-Hostname"},{name:"X-Timezone",title:"X-Timezone"},{name:"X-Role",title:"X-Role"},{name:"X-Authenticator",title:"X-Authenticator"}],$=e=>{var p,l;const t=r.useCompile(),{t:s}=P(),o=I.useContext(r.SchemaComponentContext),{actionKey:n}=j(),{variables:a}=((l=(p=o.dataSourceData)==null?void 0:p.data)==null?void 0:l.options)||{};return I.useMemo(()=>xe({t:s,variables:a,compile:t,actionKey:n,showResponse:e}),[n])},xe=e=>{const{t,variables:s,compile:o,actionKey:n,showResponse:a}=e,i=[];return s&&i.push({name:"dataSourceVariables",title:t("Custom variables"),children:s==null?void 0:s.map(p=>({name:o(p.name),title:p.name}))}),i.push({name:"request",title:t("TachyBase request"),children:[{name:"params",title:"params",children:(G[n]||[]).map(p=>({name:p,title:p}))},{name:"header",title:"headers",children:ye},{name:"body",title:"Body"},{name:"token",title:"Token"}]}),a&&i.push({name:"rawResponse",title:t("Third party response"),children:[{name:"body",title:"body"}]}),i},fe=e=>{const{t,method:s,setFormValue:o}=e;return{name:"method",title:"HTTP method",default:s,"x-decorator":"FormItem","x-decorator-props":{validator:{required:!0,message:t("Method is required")},feedbackLayout:"popover"},required:!0,"x-component":"Select","x-component-props":{defaultValue:s,onChange:n=>{o(n,"method")},options:[{value:"GET",label:"GET"},{value:"POST",label:"POST"},{value:"PUT",label:"PUT"},{value:"PATCH",label:"PATCH"},{value:"DELETE",label:"DELETE"}]}}},he=e=>{const{t}=P(),{method:s,setFormValue:o}=e,n=fe({t,method:s,setFormValue:o});return c.jsx(r.SchemaComponent,{schema:n})},be=e=>{var a,i,p;const{t,path:s,setFormValue:o,scCtx:n}=e;return{name:"path",title:"URL",required:!0,default:s,"x-decorator":"FormItem","x-decorator-props":{feedbackLayout:"popover",addonBefore:c.jsx(r.EllipsisWithTooltip,{ellipsis:!0,children:c.jsx(r.Input.ReadPretty,{value:(p=(i=(a=n==null?void 0:n.dataSourceData)==null?void 0:a.data)==null?void 0:i.options)==null?void 0:p.baseUrl})}),validator:{required:!0,message:t("Path is required")},className:r.css`
2
+ .ant-formily-item-addon-before {
3
+ border-width: 1px;
4
+ border-style: solid;
5
+ border-color: #d9d9d9;
6
+ padding: 0px 5px;
7
+ margin-right: 0px;
8
+ background: rgba(0, 0, 0, 0.02);
9
+ border-right: 0px;
10
+ margin-inline-end: 0px !important;
11
+ border-top-left-radius: 6px;
12
+ border-bottom-left-radius: 6px;
13
+ .ant-description-input {
14
+ white-space: nowrap;
15
+ max-width: 230px;
16
+ overflow: hidden;
17
+ text-overflow: ellipsis;
18
+ }
19
+ }
20
+ `,style:{width:"100%"}},"x-component":r.Variable.RawTextArea,"x-component-props":{defaultValue:s,autoSize:!0,onChange:l=>{o(l.target.value,"path")},scope:$,fieldNames:{value:"name",label:"title"},style:{borderTopLeftRadius:"0",borderBottomLeftRadius:"0"}}}},ge=e=>{const{t}=P(),s=r.useSchemaComponentContext(),{path:o,setFormValue:n}=e,a=be({t,path:o,setFormValue:n,scCtx:s});return c.jsx(r.SchemaComponent,{schema:a})},Y=e=>{var x;const{data:t}=r.useCollectionRecord(),{form:s,actionKey:o,requestActionForm:n}=j(),a=r.useSchemaComponentContext(),{path:i,method:p}=((x=t==null?void 0:t.actions)==null?void 0:x[o])||{},l=V.debounce((g,T)=>M(this,null,function*(){const{actions:A}=(s==null?void 0:s.values)||{};s.setValuesIn("actions",w(f({},A),{[o]:w(f({},A==null?void 0:A[o]),{[T]:g})})),n.setValuesIn(T,g)}),100),d=I.useMemo(()=>y.createForm({initialValues:n.values}),[]);return c.jsxs(r.FormProvider,{form:e!=null&&e.actionForm?d:n,children:[c.jsx(he,{method:p,setFormValue:l}),c.jsx(y.SchemaOptionsContext.Provider,{value:a,children:c.jsx(ge,{path:i,setFormValue:l})})]})},W=X.lodash.debounce((e,t,s,o)=>{const{actions:n}=e.values||{};e.setValuesIn("actions",w(f({},n),{[t]:w(f({},n==null?void 0:n[t]),{[s]:o})}))},400),Ie=({defaultValue:e,actionKey:t,parentForm:s,field:o})=>({type:"object",properties:{contentType:{type:"string","x-decorator":"FormItem","x-component":"Select",placeholder:`{{t("Content-Type",{ ns: "${F}" })}}`,default:e==null?void 0:e.contentType,"x-component-props":{onChange:n=>{W(s,t,"contentType",n)}},enum:[{value:"application/x-www-form-urlencoded",label:"application/x-www-form-urlencoded "},{value:"application/json",label:"application/json"}],"x-reactions":n=>{const a=s.values.actions[t],i=a==null?void 0:a.contentType;(n==null?void 0:n.value)!==i&&n.setValue(i!=null?i:"application/json"),n.value||W(s,t,"contentType","application/json")}},body:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",default:e.body,items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{style:{flexWrap:"nowrap",maxWidth:"100%",display:"flex"},className:r.css`
21
+ & > .ant-space-item:first-child,
22
+ & > .ant-space-item:last-child {
23
+ flex-shrink: 0;
24
+ }
25
+ & > .ant-space-item:first-child,
26
+ & > .ant-space-item:nth-of-type(2) {
27
+ flex: 1;
28
+ }
29
+ `},properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{t("Name")}}'}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.RawTextArea","x-component-props":{scope:"{{useVariableOptions}}",autoSize:!0,fieldNames:{value:"name",label:"title"},style:{minWidth:"220px"}}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove","x-component-props":{onClick:()=>{W(s,t,"body",o.form.values.body)}}}}}}},properties:{add:{type:"void",title:`{{t("Add", { ns: "${F}" })}}`,"x-component":"ArrayItems.Addition"}},"x-reactions":[{dependencies:[".contentType"],fulfill:{state:{visible:'{{ $deps[0]==="application/x-www-form-urlencoded"}}'}}}]},jsonBody:{type:"string","x-decorator":"FormItem","x-component":"Variable.JSON",default:e.jsonBody,"x-component-props":{scope:"{{useVariableOptions}}",autoSize:!0,fieldNames:{value:"name",label:"title"},placeholder:'{{t("Value")}}',style:{minHeight:200},onChange:n=>{const{actions:a}=s.values||{};s.setValuesIn("actions",w(f({},a),{[t]:w(f({},a==null?void 0:a[t]),{body:n})}))}},"x-reactions":[{dependencies:[".contentType"],fulfill:{state:{visible:'{{ $deps[0]==="application/json"}}'}}},n=>{var i,p,l;const a=(l=(p=(i=s==null?void 0:s.values)==null?void 0:i.actions)==null?void 0:p[t])==null?void 0:l.body;(n==null?void 0:n.value)!==a&&n.setValue(s.values.actions[t].body)}]}}}),ve=()=>{var a,i;const e=y.useField(),{form:t,actionKey:s}=j(),o=(i=(a=t==null?void 0:t.values)==null?void 0:a.actions)==null?void 0:i[s],n=Ie({parentForm:t,actionKey:s,defaultValue:{contentType:o==null?void 0:o.contentType,body:o==null?void 0:o.body,jsonBody:o==null?void 0:o.body},field:e});return c.jsx(r.SchemaComponent,{schema:n,components:{ArrayItems:k.ArrayItems,FormItem:r.FormItem,Input:h.Input,FormProvider:r.FormProvider},scope:{useVariableOptions:$}})},Ce=({title:e,defaultValue:t,field:s,parentForm:o,actionKey:n})=>{const a=p=>{var d,x,g;const l=(g=(x=(d=o==null?void 0:o.values)==null?void 0:d.actions)==null?void 0:x[n])==null?void 0:g.headers;(l==null?void 0:l.length)>0&&l!==t&&p.setValue(l)},i=()=>{W(o,n,"headers",s.form.values.headers)};return{type:"object","x-decorator":"Form",properties:{headers:{type:"array","x-component":"ArrayItems",default:t,"x-decorator":"FormItem","x-reactions":a,items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{style:{flexWrap:"nowrap",maxWidth:"100%",display:"flex"},className:r.css`
30
+ & > .ant-space-item:first-child,
31
+ & > .ant-space-item:last-child {
32
+ flex-shrink: 0;
33
+ }
34
+ & > .ant-space-item:first-child,
35
+ & > .ant-space-item:nth-of-type(2) {
36
+ flex: 1;
37
+ }
38
+ `},properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{t("Name")}}'}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.RawTextArea","x-component-props":{scope:"{{useVariableOptions}}",autoSize:!0,fieldNames:{value:"name",label:"title"},style:{minWidth:"220px"}}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove","x-component-props":{onClick:i}}}}}},properties:{add:{title:e,type:"void","x-component":"ArrayItems.Addition"}}}}}},Fe=()=>{var i,p;const{t:e}=P(),t=y.useField(),{form:s,actionKey:o}=j(),n=(p=(i=s==null?void 0:s.values)==null?void 0:i.actions)==null?void 0:p[o],a=Ce({title:e("Add header"),defaultValue:(n==null?void 0:n.headers)||[],field:t,parentForm:s,actionKey:o});return c.jsx(r.SchemaComponent,{schema:a,components:{ArrayItems:k.ArrayItems,FormItem:r.FormItem,Input:h.Input},scope:{useVariableOptions:$}})},Ae=({title:e,defaultValue:t,field:s,parentForm:o,actionKey:n})=>({type:"object","x-decorator":"Form",properties:{params:{type:"array","x-component":"ArrayItems",default:t,"x-decorator":"FormItem","x-reactions":a=>{var p,l,d;const i=(d=(l=(p=o.values)==null?void 0:p.actions)==null?void 0:l[n])==null?void 0:d.params;i!=null&&i.length&&i!==t&&a.setValue(i)},items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{style:{flexWrap:"nowrap",maxWidth:"100%",display:"flex"},className:r.css`
39
+ & > .ant-space-item:first-child,
40
+ & > .ant-space-item:last-child {
41
+ flex-shrink: 0;
42
+ }
43
+ & > .ant-space-item:first-child,
44
+ & > .ant-space-item:nth-of-type(2) {
45
+ flex: 1;
46
+ }
47
+ `},properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{t("Name")}}',style:{width:"100%"}}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.RawTextArea","x-component-props":{scope:"{{useVariableOptions}}",autoSize:!0,fieldNames:{value:"name",label:"title"},style:{minWidth:"230px",width:"100%"}}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove","x-component-props":{onClick:()=>{var a;W(o,n,"params",(a=s.form.values)==null?void 0:a.params)}}}}}}},properties:{add:{type:"void",title:e,"x-component":"ArrayItems.Addition"}}}}}),Se=()=>{var i,p;const{t:e}=P(),t=y.useField(),{form:s,actionKey:o}=j(),n=(p=(i=s==null?void 0:s.values)==null?void 0:i.actions)==null?void 0:p[o],a=Ae({title:e("Add parameter"),defaultValue:n==null?void 0:n.params,field:t,parentForm:s,actionKey:o});return c.jsx(r.SchemaComponent,{schema:a,components:{ArrayItems:k.ArrayItems,FormItem:r.FormItem,Input:h.Input},scope:{useVariableOptions:$}})},we=e=>{const{t}=e;return[{key:"parameters",label:t("Parameters"),children:c.jsx(Se,{})},{key:"body",label:t("Body"),children:c.jsx(ve,{})},{key:"headers",label:t("Headers"),children:c.jsx(Fe,{})}]},Q=()=>{const{t:e}=P(),t=we({t:e});return c.jsx(h.Tabs,{items:t})},Te={data:"{{rawResponse.body}}",meta:{}},qe=(e,t,s)=>M(this,null,function*(){const{actions:o}=e.values||{};e.setValuesIn("actions",w(f({},o),{[t]:w(f({},o==null?void 0:o[t]),{responseTransformer:s})}))}),Z=()=>{var l,d,x;const{form:e,actionKey:t,responseTransformer:s,setResponseTransformer:o}=j(),n=(x=(d=(l=e==null?void 0:e.values)==null?void 0:l.actions)==null?void 0:d[t])==null?void 0:x.responseTransformer,a=s!=null?s:n,{data:i}=r.useCollectionRecord();I.useEffect(()=>{var g,T;if(!((T=(g=i==null?void 0:i.actions)==null?void 0:g[t])!=null&&T.responseTransformer)&&!n){const{actions:A}=e.values||{};e.setValuesIn("actions",w(f({},A),{[t]:w(f({},A==null?void 0:A[t]),{responseTransformer:Te})}))}},[]);const p=$(!0);return c.jsx(r.Variable.JSON,{value:a,onChange:g=>{o(g),qe(e,t,g)},autoSize:{minRows:5},fieldNames:{value:"name",label:"title"},scope:()=>p})},Pe=()=>{const{responseValidationErrorMessage:e}=O();return e?c.jsxs(c.Fragment,{children:[c.jsx(h.Alert,{type:"error",showIcon:!0,message:e}),c.jsx("br",{})]}):null},ke=e=>({type:"object","x-decorator":"Form","x-decorator-props":{useValues(t){return r.useRequest(()=>Promise.resolve({data:{}}),t)}},properties:{[y.uid()]:{type:"string",default:e,"x-read-pretty":!0,"x-decorator":"FormItem","x-component":"Input.JSON","x-component-props":{style:{maxHeight:"350px"}}}}}),Ve=()=>{const{debugResponse:e}=O(),t=ke(e);return c.jsx(r.SchemaComponent,{schema:t,components:{ArrayTable:k.ArrayTable,FormItem:r.FormItem,Input:r.Input}})},De=e=>{const{t}=e;return[{key:"body",label:t("Body"),children:c.jsx(Ve,{})}]},Me=()=>{const{t:e}=P(),{debugResponse:t}=O(),s=De({t:e});return t?c.jsx(h.Tabs,{defaultActiveKey:"body",items:s}):null},Ne=e=>{const{t}=P(),s=t("Extract field metadata from the response data");return c.jsx(h.Tooltip,{title:s,children:e.children})},Be=()=>{const e=y.useForm(),t=r.useAPIClient(),{t:s}=P(),{setVisible:o}=I.useContext(r.ActionContext),{name:n}=L.useParams(),{rawResponse:a,responseValidationErrorMessage:i}=O(),{form:p,actionKey:l}=j(),{fields:d}=p.values,[x,g]=I.useState(!1),T=V.omit(e.values,"responseTab"),A=()=>M(this,null,function*(){var v,b;try{g(!0);const S=(b=(v=p==null?void 0:p.values)==null?void 0:v.actions)==null?void 0:b[l],u=t.resource("dataSources.httpCollections",n),{data:{data:D}}=yield u.runAction({values:{debug:!1,inferFields:!0,actionOptions:w(f({},S),{type:l,responseTransformer:S==null?void 0:S.responseTransformer}),debugVars:T}});o(!1),g(!1);const{transformedResponse:N,fields:E,filterTargetKey:H}=D;if(H&&p.setValuesIn("filterTargetKey",H),E){const B=V.unionBy(d,E,"name");p.setValuesIn("fields",B)}if(typeof(N==null?void 0:N.data)=="object"){let B=[];l==="get"?B=[N==null?void 0:N.data]:B=N==null?void 0:N.data,p.setValuesIn("preview",B)}}catch(S){g(!1),console.log(S)}});return["list","get"].includes(l)?c.jsx(Ne,{children:c.jsx(h.Button,{type:"primary",disabled:!a||i,loading:x,onClick:A,children:s("Extract field metadata")})}):null},ee=({key:e,defaultValue:t})=>({type:"object",properties:{[e]:{type:"array","x-decorator":"FormItem","x-component":"ArrayTable",default:t,"x-component-props":{scroll:{y:300}},items:{type:"object",properties:{column1:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:200,title:`{{t("Name",{ ns: "${F}" })}}`},properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{t("Name")}}'}}}},column2:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:200,title:`{{t("Value",{ ns: "${F}" })}}`},properties:{value:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{t("Value")}}'}}}}}}}}}),je=()=>{const{rawResponse:e}=O(),{request:t}=e||{},s=Object.entries((t==null?void 0:t.headers)||{}).map(([n,a])=>({name:n,value:a})),o=ee({key:"requestHeaders",defaultValue:s});return c.jsx(r.SchemaComponent,{schema:o,components:{ArrayTable:k.ArrayTable,FormItem:r.FormItem,Input:r.Input}})},Oe=e=>({type:"object","x-decorator":"Form","x-decorator-props":{useValues(t){return r.useRequest(()=>Promise.resolve({data:{}}),t)}},properties:{[y.uid()]:{type:"string",default:e,"x-read-pretty":!0,"x-decorator":"FormItem","x-component":"Input.JSON","x-component-props":{style:{maxHeight:"400px"}}}}}),Ee=()=>{const{rawResponse:e}=O(),{data:t}=e||{},s=Oe(t);return c.jsx(r.SchemaComponent,{schema:s,components:{ArrayTable:k.ArrayTable,FormItem:r.FormItem,Input:r.Input}})},He=()=>{const{rawResponse:e}=O(),{headers:t}=e||{},s=Object.entries(t||{}).map(([n,a])=>({name:n,value:a})),o=ee({key:"responseHeaders",defaultValue:s});return c.jsx(r.SchemaComponent,{schema:o,components:{ArrayTable:k.ArrayTable,FormItem:r.FormItem,Input:r.Input}})},Le=e=>{const{t}=e;return[{key:"body",label:t("Body"),children:c.jsx(Ee,{})},{key:"responseHeaders",label:t("Response headers"),children:c.jsx(He,{})},{key:"requestHeaders",label:t("Request headers"),children:c.jsx(je,{})}]},$e=()=>{const{t:e}=P(),{rawResponse:t}=O(),{status:s}=t||{},o=Le({t:e});if(!t)return null;const n=s.toString().startsWith("2")?"success":"error",a=c.jsx(h.Tag,{color:n,children:`HTTP Code:${s}`});return c.jsx(h.Card,{title:a,children:c.jsx(h.Tabs,{defaultActiveKey:"body",items:o})})};function We(e,t){var p,l;const s=(l=(p=e==null?void 0:e.values)==null?void 0:p.actions)==null?void 0:l[t];let o=[];const{params:n=[],headers:a=[],body:i=[]}=s||{};return o=[...n,...a].map(d=>{var x;return(x=d==null?void 0:d.value)==null?void 0:x.replace(/{{|}}/g,"")}),typeof i=="string"?o.concat(i==null?void 0:i.replace(/{{|}}/g,"")):o.concat(i==null?void 0:i.map(d=>d==null?void 0:d.value.replace(/{{|}}/g,""))),o.filter(Boolean)}const Ke=(e,t)=>{const s=(o,n)=>{We(e,t).find(p=>((p==null?void 0:p.split("."))||[]).pop()===o)&&(n.description=null)};return{page:{type:"number",title:"Page","x-decorator":"FormItem","x-component":"InputNumber",description:"{{t('Page variable not used. Pagination based on total current request data.')}}","x-reactions":o=>s("page",o)},pageSize:{type:"number",title:"PageSize","x-decorator":"FormItem","x-component":"InputNumber",description:"{{t('PageSize variable not used. Pagination based on total current request data.')}}","x-reactions":o=>s("pageSize",o)},filter:{type:"object",title:"Filter","x-decorator":"FormItem","x-component":"Input.JSON",description:"{{t('Filter variable not used. Filtering will apply to the current request data.')}}","x-reactions":o=>s("filter",o)},sort:{type:"string",title:"Sort","x-decorator":"FormItem","x-component":"Input",description:"{{t('Sort variable not used. Sorting will apply to the current request data.')}}","x-reactions":o=>s("sort",o)},appends:{type:"string",title:"Appends","x-decorator":"FormItem","x-component":"Input"},fields:{type:"string",title:"Fields","x-decorator":"FormItem","x-component":"Input",description:"{{t('Fields variable not used. Filtering will be based on the current request data.')}}","x-reactions":o=>s("fields",o)},except:{type:"string",title:"Except","x-decorator":"FormItem","x-component":"Input",description:"{{t('Except variable not used. Filtering will be based on the current request data.')}}","x-reactions":o=>s("except",o)},filterByTk:{type:"string",title:"FilterByTk","x-decorator":"FormItem","x-component":"Input",description:"{{t('The current parameters are not adapted')}}","x-reactions":o=>s("filterByTk",o)},whiteList:{type:"string",title:"whiteList","x-decorator":"FormItem","x-component":"Input"},blacklist:{type:"string",title:"blacklist","x-decorator":"FormItem","x-component":"Input"},body:{type:"object",title:"Body","x-decorator":"FormItem","x-component":"Input.JSON","x-component-props":{autoSize:{minRows:5,maxRows:20}}}}};function ze(e,t){const s={},o=G[e]||[],n=Ke(t,e);for(const a of o)s[a]=n[a];return s}const Re=()=>{const{t:e}=P(),{actionKey:t,form:s,requestActionForm:o}=j(),n=ze(t,s),a=()=>{const i=l=>M(this,null,function*(){const{actions:d}=s.values||{},{path:x,value:g}=l.getState();x.includes("add")||(yield s.setValuesIn("actions",w(f({},d),{[t]:X.unflatten(w(f({},d==null?void 0:d[t]),{[x]:g}))})),["method","path"].includes(x)&&(yield o.setValuesIn([x],g)))}),p=V.debounce(i,400);y.onFieldChange("*",(l,d)=>{d.modified&&p(l)})};return{type:"object",properties:{modal:{type:"void","x-decorator":"Form","x-component":"Action.Modal","x-component-props":{className:r.cx("tb-action-popup",r.css`
48
+ .ant-modal-content {
49
+ padding: 0;
50
+ }
51
+ .ant-modal-footer {
52
+ position: absolute;
53
+ bottom: 24px;
54
+ right: 24px;
55
+ }
56
+ `),width:"90%",styles:{body:{padding:0}},centered:!0,destroyOnClose:!0},properties:{bodyContainer:{type:"void","x-component":"Row","x-component-props":{gutter:1},properties:{request:{type:"void","x-decorator":"Col","x-decorator-props":{span:8},"x-component":"Card","x-component-props":{bordered:!1,title:e("TachyBase request"),style:{height:"80vh",overflowY:"auto",borderTopRightRadius:0,borderBottomRightRadius:0}},properties:{layout:{type:"void","x-component":"FormLayout","x-component-props":{labelCol:6,wrapperCol:10,layout:"vertical",className:r.css`
57
+ .ant-formily-item-feedback-layout-loose {
58
+ margin-bottom: 5px;
59
+ }
60
+ `},properties:n}}},thirdPartyApi:{type:"void","x-decorator":"Col","x-decorator-props":{span:8},"x-component":"Card","x-component-props":{title:e("Third party API"),bordered:!1,style:{height:"80vh",overflowY:"auto",borderRadius:0}},properties:{responseContainer:{type:"void","x-decorator":"Form","x-decorator-props":{effects:a,className:r.css`
61
+ .ant-formily-item-feedback-layout-loose {
62
+ margin-bottom: 10px;
63
+ }
64
+ `},properties:{requestAction:{type:"string","x-component":Y,"x-component-props":{actionForm:!0}},requestTab:{type:"void","x-decorator":"FormItem","x-component":Q},responseTab:{type:"string","x-component":$e}}}}},nocoBaseResponse:{type:"void","x-decorator":"Col","x-decorator-props":{span:8},"x-component":"Card","x-component-props":{bordered:!1,title:e("TachyBase response"),style:{height:"80vh",overflowY:"auto",borderTopLeftRadius:0,borderBottomLeftRadius:0}},properties:{responseContainer:{type:"void","x-decorator":"Form",properties:{alertError:{type:"string","x-component":Pe},responseTransformer:{type:"string","x-decorator":"FormItem","x-component":Z},debugResponse:{type:"string","x-component":Me}}}}}}},footer:{type:"void","x-component":"Action.Modal.Footer",properties:{debug:{title:'{{t("Debug")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useDebugAction }}"}},extractFieldMetadata:{"x-component":Be}}}}}}}},Ue=()=>{const e=y.useForm(),{setVisible:t}=I.useContext(r.ActionContext),{setRawResponse:s,setDebugResponse:o}=O();return{run(){t(!1),e.reset(),e.setValuesIn("responseTab",null),s(null),o(null)}}},Xe=()=>{const e=y.useField(),t=r.useAPIClient(),s=y.useForm(),{form:o,actionKey:n,requestActionForm:a}=j(),{name:i}=L.useParams(),{setRawResponse:p,setDebugResponse:l,setResponseValidationErrorMessage:d}=O();return{run(){return M(this,null,function*(){var T,A;const g=(A=(T=o==null?void 0:o.values)==null?void 0:T.actions)==null?void 0:A[n];try{e.data=(e==null?void 0:e.data)||{},e.data.loading=!0,yield a.submit();const v=t.resource("dataSources.httpCollections",i),b=V.omit(s.values,"responseTab"),{data:{data:S}}=yield v.runAction({values:{debug:!0,inferFields:!1,actionOptions:w(f({},g),{type:n,responseTransformer:g==null?void 0:g.responseTransformer}),debugVars:b}});e.data.loading=!1;const{rawResponse:u,debugBody:D,responseValidationErrorMessage:N}=S;p(u),l(D),d(N)}catch(v){e.data.loading=!1,console.log(v)}})}}},_e=()=>{const{t:e}=P(),t=Re();return c.jsx(r.SchemaComponent,{schema:t,components:{Form:k.Form,Input:r.Input,Action:r.Action,FormItem:r.FormItem,InputNumber:r.InputNumber,Card:h.Card,Variable:r.Variable,Space:r.Space,Select:h.Select,FormLayout:k.FormLayout,Row:h.Row,Col:h.Col},scope:{t:e,useDebugAction:Xe,useCancelAction:Ue,useVariableOptions:$}})},Je=()=>{const{t:e}=P(),{requestActionForm:t}=j(),[s,o]=I.useState(!1),n=()=>M(this,null,function*(){yield t.submit(),o(!0)});return c.jsxs(c.Fragment,{children:[c.jsx(h.Button,{type:"primary",onClick:n,children:e("Try it out")}),c.jsx(me,{visible:s,setVisible:o,children:c.jsx(_e,{})})]})},Ge=e=>{const t=y.useForm(),{actionKey:s}=e,o=I.useMemo(()=>y.createForm({}),[]),[n,a]=I.useState(null);return c.jsx(de,{value:{form:w(f({},t),{[s]:o}),actionKey:s,requestActionForm:o,responseTransformer:n,setResponseTransformer:a},children:e.children})},K=(e,t)=>{const s=I.useRef();return{type:"void","x-decorator":Ge,"x-decorator-props":{actionKey:e},"x-component":"FormCollapse.CollapsePanel","x-component-props":{header:t,key:e},properties:{form:{"x-decorator":"Form","x-decorator-props":{className:r.css`
65
+ .ant-formily-item-feedback-layout-loose {
66
+ margin-bottom: 10px;
67
+ }
68
+ `,useValues(o){return s.current=y.useForm(),r.useRequest(()=>Promise.resolve(),o)},effects:()=>{const o=a=>{const i=s.current,{actions:p}=i.values||{},{path:l,value:d}=a.getState();l.includes("add")||i.setValuesIn("actions",w(f({},p),{[e]:X.unflatten(w(f({},p==null?void 0:p[e]),{[l]:d}))}))},n=V.debounce((a,i)=>M(this,null,function*(){i.modified&&(yield o(a))}),400);y.onFieldChange("*",(a,i)=>{i.modified&&n(a,i)})}},type:"void",properties:{[y.uid()]:{type:"void",properties:{requestAction:{type:"string","x-component":Y},requestTab:{type:"void","x-decorator":"FormItem",title:`{{t("Adapt request parameters",{ ns: "${F}" })}}`,"x-component":Q,"x-decorator-props":{tooltip:`{{t("Provide request variables from TachyBase for use by third-party APIs.",{ ns: "${F}" })}}`}},responseTransformer:{type:"string","x-decorator":"FormItem",title:`{{t("Convert third-party response results to NocoBase standard",{ ns: "${F}" })}}`,"x-component":Z,"x-decorator-props":{tooltip:`{{t("The response results from third-party APIs need to be converted to the NocoBase standard to display correctly on the frontend.",{ ns: "${F}" })}}`}},debug:{type:"void","x-component":Je}}}}}}}},Ye=e=>{const t=y.useForm(),s=r.useCompile(),{t:o}=P(),{fields:n,preview:a}=e,[i,p]=I.useState([]),[l,d]=I.useState(a),{getInterface:x}=r.useCollectionManager_deprecated(),g=T=>{const A=T.filter(b=>b.source||b.interface);return A?A.map(b=>{var D,N;const S=((D=b==null?void 0:b.uiSchema)==null?void 0:D.title)||b.name,u=(N=x(b.interface))==null?void 0:N.default.uiSchema;return{key:b.name,title:s(S),dataIndex:b.name,width:200,render:(E,H,B)=>{const z=H[b.name],ht={type:"object",properties:{[b.name]:w(f({name:`${b.name}`},u),{"x-read-pretty":!0,default:b.interface==="json"||typeof z=="object"?JSON.stringify(z):z})}};return c.jsx(r.EllipsisWithTooltip,{ellipsis:!0,children:c.jsx(y.RecursionField,{schema:ht,name:B,onlyRenderProperties:!0})})}}}):void 0};return I.useEffect(()=>{d(a)},[a,n]),I.useEffect(()=>{p([]);const T=g(n);p(T)},[t.values.fields]),c.jsx("div",{style:{marginBottom:"var(--tb-spacing)"},children:(l==null?void 0:l.length)>0&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"ant-formily-item-label",style:{marginTop:"var(--tb-spacing)",display:"flex",padding:"0 0 8px"},children:[c.jsx("div",{className:"ant-formily-item-label-content",children:c.jsx("span",{children:c.jsx("label",{children:o("Preview")})})}),c.jsx("span",{className:"ant-formily-item-colon",children:":"})]}),c.jsx(h.Table,{size:"middle",pagination:!1,bordered:!0,columns:i,dataSource:l,scroll:{x:1e3,y:300}},"preview")]})},y.uid())},Qe=(e,t)=>e.filter(o=>o.children.filter(a=>a.availableTypes&&a.availableTypes.includes(t)).length>0).map(o=>({label:o.label,key:o.key,children:o.children.filter(n=>n.availableTypes&&n.availableTypes.includes(t))})),te=e=>{const t=r.useCompile(),{getInterface:s}=r.useCollectionManager_deprecated(),{t:o}=P(),n=y.useForm(),a=y.useField(),[i,p]=I.useState(a.value),l=r.useFieldInterfaceOptions().filter(v=>!["relation","systemInfo"].includes(v.key)),{modal:d}=h.App.useApp(),x=(v,b)=>{setTimeout(()=>{i.splice(b,1,v),p(i),a.value=i.concat()},300)},g=v=>{i.splice(v,1);const b=i.concat();a.value=b,p(b)},T=()=>{d.confirm({title:o("Are you sure you want to clear fields?"),onOk:()=>{n.setValuesIn("fields",[]),n.setValuesIn("preview",[])}})},A=I.useMemo(()=>[{dataIndex:"index",width:60,key:"index",render:(v,b,S)=>S+1},{title:o("Field display name"),dataIndex:"title",key:"title",width:150,render:(v,b,S)=>{const u=i[S];return c.jsx(h.Input,{defaultValue:u.uiSchema.title,onChange:V.debounce(D=>{x(w(f({},u),{uiSchema:w(f({},V.omit(u==null?void 0:u.uiSchema,"rawTitle")),{title:D.target.value})}),S)},300)})}},{title:o("Field name"),dataIndex:"name",key:"name",width:130},{title:o("Field type"),dataIndex:"type",width:140,key:"type",render:(v,b,S)=>{const u=i[S];return u!=null&&u.source||!(u!=null&&u.possibleTypes)?c.jsxs(h.Tag,{children:[" ",v]}):c.jsx(h.Select,{defaultValue:v,popupMatchSelectWidth:!1,style:{width:"100%"},options:(u==null?void 0:u.possibleTypes.map(D=>({label:D,value:D})))||[],onChange:D=>{x(w(f({},u),{type:D}),S)}})}},{title:o("Field interface"),dataIndex:"interface",key:"interface",width:150,render:(v,b,S)=>{const u=i[S],D=(u==null?void 0:u.type)&&Qe(l,u==null?void 0:u.type),N=E=>{var B;const H=s(E);x(w(f({},u),{interface:E,uiSchema:f(f({},u.uiSchema),(B=H==null?void 0:H.default)==null?void 0:B.uiSchema)}),S)};return c.jsx(h.Select,{defaultValue:v,style:{width:"100%"},popupMatchSelectWidth:!1,onChange:N,children:D==null?void 0:D.map(E=>c.jsx(h.Select.OptGroup,{label:t(E.label),children:E.children.map(({label:H,value:B,name:z})=>c.jsx(h.Select.Option,{value:z,children:t(H)},B))},E.key))})}},{title:o("Actions"),dataIndex:"actions",fixed:"right",key:"actions",align:"center",width:100,render:(v,b,S)=>c.jsxs("a",{onClick:()=>g(S),children:[" ",o("Delete")]})}],[i]);return I.useEffect(()=>{p(a.value)},[a.value]),c.jsxs(c.Fragment,{children:[i.length?c.jsx(h.Button,{style:{position:"absolute",top:"-10px",right:"0px"},onClick:T,children:o("Clear")}):null,c.jsx(h.Table,{bordered:!0,size:"middle",columns:A,dataSource:i,scroll:{y:300},pagination:!1})]})};te.displayName="PreviewFields";function oe(e,t,s={}){const o=V.cloneDeep(s),n=f({name:`t_${y.uid()}`},o);n.reverseField&&(n.reverseField.name=`f_${y.uid()}`);const a=K("list",`{{t("List",{ ns: "${F}" })}}`),i=K("get",`{{t("Get",{ ns: "${F}" })}}`),p=K("create",`{{t("Create",{ ns: "${F}" })}}`),l=K("update",`{{t("Update",{ ns: "${F}" })}}`),d=K("destroy",`{{t("Destroy",{ ns: "${F}" })}}`);return{type:"object",properties:{[y.uid()]:{type:"void","x-component":"Action.Drawer","x-component-props":{getContainer:"{{ getContainer }}"},"x-decorator":"Form","x-decorator-props":{useValues(x){return r.useRequest(()=>Promise.resolve({data:n}),x)}},title:e,properties:{title:{type:"string",title:'{{ t("Collection display name") }}',required:!0,"x-decorator":"FormItem","x-component":"Input"},name:{type:"string",title:'{{t("Collection name")}}',required:!0,"x-disabled":"{{ !createOnly }}","x-decorator":"FormItem","x-component":"Input","x-validator":"uid",description:"{{t('Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.')}}"},description:{title:'{{t("Description")}}',type:"string",name:"description","x-decorator":"FormItem","x-component":"Input"},actions:{type:"void",title:C("Request actions"),"x-decorator":"FormItem","x-component":"FormCollapse","x-component-props":{size:"small",accordion:!0,defaultActiveKey:[]},properties:{list:a,get:i,create:p,update:l,destroy:d}},fields:{type:"array",required:!0,"x-component":te,"x-decorator":"FormItem",title:C("Fields",!0)},filterTargetKey:{title:C("Record unique key"),required:!0,type:"single",description:C("If a collection lacks a primary key, you must configure a unique record key to locate row records within a block, failure to configure this will prevent the creation of data blocks for the collection."),"x-decorator":"FormItem","x-component":"Select","x-reactions":["{{useAsyncDataSource(loadFilterTargetKeys)}}"]},preview:{type:"void","x-visible":"{{ createOnly }}","x-component":Ye,"x-reactions":{dependencies:["fields"],fulfill:{schema:{"x-component-props":"{{$form.values}}"}}}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{action1:{title:'{{ t("Cancel") }}',"x-component":"Action","x-component-props":{useAction:"{{ useCancelAction }}"}},action2:{title:'{{ t("Submit") }}',"x-component":"Action","x-component-props":{type:"primary",useAction:t}}}}}}}}}function re(e){return Object.keys(e).filter(n=>{const a=e[n];return a.method&&a.path}).reduce((n,a)=>w(f({},n),{[a]:e[a]}),{})}function se(e){return["list","get"].filter(t=>!e.includes(t))}function Ze(){const e=y.useForm(),{refreshCM:t}=r.useCollectionManager_deprecated(),s=r.useActionContext(),{refresh:o}=r.useResourceActionContext(),n=r.useAPIClient(),{name:a}=L.useParams(),i=n.resource("dataSources.collections",a),p=y.useField(),l=r.useDataSourceManager();return P(),{run(){return M(this,null,function*(){p.data=p.data||{},p.data.loading=!0;try{yield e.submit();const x=V.cloneDeep(e.values),g=re(x==null?void 0:x.actions),T=se(Object.keys(g)),A=V.pick(x,["fields","name","title","filterTargetKey"]),v=T[0];v?(e.query(`*.actions.${v}`).take(b=>{b.setComponentProps({style:{border:"1px solid #ff4d4f"}})}),yield e[v].submit()):(yield i.create({values:w(f({logging:!0},A),{actions:g})}),s.setVisible(!1),yield e.reset(),p.data.loading=!1,o(),yield t(),l.getDataSource(a).reload())}catch(x){console.error(x),p.data.loading=!1}})}}}const et=e=>{const{scope:t,getContainer:s,item:o}=e,n=C("Create collection",!0),a=oe(n,Ze);return c.jsx(r.SchemaComponent,{schema:a,components:{ArrayTable:k.ArrayTable,TemplateSummay:r.TemplateSummary,FormCollapse:k.FormCollapse,ArrayItems:k.ArrayItems,FormLayout:k.FormLayout,FormItem:r.FormItem},scope:f({createOnly:!0,record:o,showReverseFieldConfig:!0,presetFieldsDisabled:!0,getContainer:s,useCancelAction:r.useCancelAction},t)})},tt=e=>{const{t}=P(!0),{scope:s,getContainer:o,item:n}=e,[a,i]=I.useState(!1),p=()=>i(!0);return c.jsx(r.RecordProvider,{record:n,children:c.jsxs(r.ActionContextProvider,{value:{visible:a,setVisible:i},children:[c.jsx(h.Button,{type:"primary",icon:c.jsx(R.PlusOutlined,{}),onClick:p,children:t("Create collection")}),c.jsx(et,{scope:s,getContainer:o,item:n})]})})},ot=e=>{const t=r.useRecord();return c.jsx(tt,f({item:t},e))};function rt(){const{run:e}=st(),{refreshCM:t}=r.useCollectionManager_deprecated();return{run(){return M(this,null,function*(){yield e(),yield t()})}}}function st(){const e=r.useAPIClient(),{t}=P(),s=y.useForm(),o=r.useActionContext(),{name:n}=L.useParams(),{state:a,setState:i,refresh:p}=r.useResourceActionContext();return{run(){return M(this,null,function*(){var d;if(!(a!=null&&a.selectedRowKeys)||a.selectedRowKeys.length===0)return h.message.error(t("Please select the records you want to delete"));yield e.resource("dataSources.collections",n).destroy({filterByTk:(a==null?void 0:a.selectedRowKeys)||[]}),s.reset(),(d=o==null?void 0:o.setVisible)==null||d.call(o,!1),i==null||i({selectedRowKeys:[]}),p()})}}}function nt(){const{run:e}=at(),{refreshCM:t}=r.useCollectionManager_deprecated();return{run(){return M(this,null,function*(){yield e(),yield t()})}}}function at(){const e=r.useAPIClient(),t=r.useActionContext(),{targetKey:s}=r.useResourceContext(),{[s]:o}=r.useRecord(),{name:n}=L.useParams(),{refresh:a}=r.useResourceActionContext();return{run(){return M(this,null,function*(){var p;yield e.resource("dataSources.collections",n).destroy({filterByTk:o}),(p=t==null?void 0:t.setVisible)==null||p.call(t,!1),a()})}}}const ne=e=>{const{t}=P(),{modal:s}=h.App.useApp(),v=e,{item:o,isBulk:n,children:a}=v,i=le(v,["item","isBulk","children"]),p=V.omit(i,["scope","getContainer","useAction"]),[l,d]=I.useState(!1),{run:x}=rt(),{run:g}=nt(),T=n?x:g,A=()=>{s.confirm({title:t("Delete collection"),content:t("Are you sure you want to delete it?"),onOk:T})};return c.jsx(r.RecordProvider,{record:o,children:c.jsx(r.ActionContextProvider,{value:{visible:l,setVisible:d},children:n?c.jsx(h.Button,{icon:c.jsx(R.DeleteOutlined,{}),onClick:A,children:a||t("Delete")}):c.jsx("a",w(f({onClick:A},p),{children:a||t("Delete")}))})})};ne.displayName="DeleteCollectionAction";const ct=e=>{const t=r.useRecord();return c.jsx(ne,f({item:t},e))},it=e=>{const t=r.useAPIClient(),s=r.useDataSourceManager(),{refreshCM:o}=r.useCollectionManager_deprecated(),{refresh:n}=r.useResourceActionContext(),a=y.useForm(),i=r.useActionContext(),{targetKey:p}=r.useResourceContext(),{name:l}=L.useParams(),{[p]:d}=r.useRecord(),x=t.resource("dataSources.collections",l);return{run(){return M(this,null,function*(){yield a.submit();const T=V.cloneDeep(a.values),A=re(T==null?void 0:T.actions),v=se(Object.keys(A)),b=V.pick(a.values,["fields","name","title","filterTargetKey"]),S=v[0];if(S)a.query(`*.actions.${S}`).take(u=>{u.setComponentProps({style:{border:"1px solid #ff4d4f"}})}),yield a[S].submit();else{yield x.update({filterByTk:d,values:w(f({},b),{actions:A})}),i.setVisible(!1);const u=s.getDataSource(l);u!=null&&u.reload||u.reload.call(u),yield a.reset(),n(),yield o()}})}}},pt=e=>{const{scope:t,getContainer:s,item:o}=e,n=oe('{{ t("Edit collection") }}',it,o);return c.jsx(r.SchemaComponent,{schema:n,components:{ArrayTable:k.ArrayTable,TemplateSummay:r.TemplateSummary,FormCollapse:k.FormCollapse,ArrayItems:k.ArrayItems,FormLayout:k.FormLayout,FormItem:r.FormItem},scope:f({createOnly:!0,record:o,showReverseFieldConfig:!0,presetFieldsDisabled:!0,getContainer:s,useCancelAction:r.useCancelAction},t)})},lt=e=>{const{t}=P(),{scope:s,getContainer:o,item:n}=e,[a,i]=I.useState(!1);return c.jsx(r.RecordProvider,{record:n,children:c.jsxs(r.ActionContextProvider,{value:{visible:a,setVisible:i},children:[c.jsx("a",{onClick:()=>i(!0),children:t("Edit")}),c.jsx(pt,{scope:s,item:n,getContainer:o})]})})},dt=e=>{const t=r.useRecord();return c.jsx(lt,f({item:t},e))},ut={type:"object",properties:{displayName:{type:"string",title:`{{t("Data source display name",{ ns: "${F}" })}}`,required:!0,"x-decorator":"FormItem","x-component":"Input"},key:{type:"string",title:`{{t("Data source name",{ ns: "${F}" })}}`,required:!0,"x-decorator":"FormItem","x-component":"Input","x-validator":"uid","x-disabled":"{{ createOnly }}",description:`{{t('Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.',{ ns: "${F}" })}}`},options:{type:"object",properties:{baseUrl:{type:"string",title:`{{t("BaseURL",{ ns: "${F}" })}}`,required:!0,"x-decorator":"FormItem","x-component":"Input.URL","x-validator":"url"},headers:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:`{{t("Headers", { ns: "${F}" })}}`,items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{style:{flexWrap:"nowrap",maxWidth:"100%",display:"flex"},className:r.css`
69
+ & > .ant-space-item:first-child,
70
+ & > .ant-space-item:last-child {
71
+ flex-shrink: 0;
72
+ }
73
+ & > .ant-space-item:first-child,
74
+ & > .ant-space-item:nth-of-type(2) {
75
+ flex: 1;
76
+ }
77
+ `},properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{t("Name")}}'}},value:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{useTypedConstant:!0}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:`{{t("Add request header", { ns: "${F}" })}}`,"x-component":"ArrayItems.Addition"}}},variables:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:`{{t("Variables", { ns: "${F}" })}}`,items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{style:{flexWrap:"nowrap",maxWidth:"100%",display:"flex"},className:r.css`
78
+ & > .ant-space-item:first-child,
79
+ & > .ant-space-item:last-child {
80
+ flex-shrink: 0;
81
+ }
82
+ & > .ant-space-item:first-child,
83
+ & > .ant-space-item:nth-of-type(2) {
84
+ flex: 1;
85
+ }
86
+ `},properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{t("Name")}}'}},value:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{useTypedConstant:!0}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:`{{t("Add variable", { ns: "${F}" })}}`,"x-component":"ArrayItems.Addition"}}},timeout:{type:"string",title:`{{t("Timeout",{ ns: "${F}" })}}`,"x-decorator":"FormItem","x-component":"InputNumber","x-component-props":{addonAfter:"ms",style:{minWidth:200}},default:5e3},responseType:{type:"string",title:`{{t("Response type",{ ns: "${F}" })}}`,"x-decorator":"FormItem","x-component":"Select",default:"json",enum:[{value:"json",label:`{{t("JSON",{ ns: "${F}" })}}`}]}}},enabled:{type:"string","x-content":`{{t("Enabled the data source",{ ns: "${F}" })}}`,"x-decorator":"FormItem","x-component":"Checkbox",default:!0}}},mt=()=>{const{t:e}=P();return c.jsx(r.SchemaComponent,{schema:ut,components:{Space:r.Space},scope:{t:e}})};class yt extends r.Plugin{load(){return M(this,null,function*(){this.app.pm.get(q).registerType("http",{label:C("REST API"),allowCollectionCreate:!0,allowCollectionDeletion:!1,disabledConfigureFields:!1,disableAddFields:!0,disableTestConnection:!0,DataSourceSettingsForm:mt,AddCollection:ot,EditCollection:dt,DeleteCollection:ct})})}}const xt=()=>{const{t:e}=P();return c.jsx(r.SchemaComponent,{scope:{t:e},schema:{type:"object",properties:{key:{type:"string",title:C("Data source name"),required:!0,"x-decorator":"FormItem","x-component":"Input","x-validator":"uid","x-disabled":"{{ createOnly }}",description:C("Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.")},displayName:{type:"string",title:C("Data source display name"),required:!0,"x-decorator":"FormItem","x-component":"Input"},options:{type:"object",properties:{host:{type:"string",title:C("Host"),required:!0,"x-decorator":"FormItem","x-component":"Input",default:"localhost"},port:{type:"string",title:C("Port"),required:!0,"x-decorator":"FormItem","x-component":"Input",default:3306},database:{type:"string",title:C("Database"),required:!0,"x-decorator":"FormItem","x-component":"Input"},username:{type:"string",title:C("Username"),required:!0,"x-decorator":"FormItem","x-component":"Input"},password:{type:"string",title:C("Password"),"x-decorator":"FormItem","x-component":"Password"},tablePrefix:{type:"string",title:C("Table prefix"),"x-decorator":"FormItem","x-component":"Input"}}},enabled:{type:"string","x-content":C("Enabled the data source"),"x-decorator":"FormItem","x-component":"Checkbox",default:!0}}}})},ft=()=>{const{t:e}=P();return c.jsx(r.SchemaComponent,{scope:{t:e},components:{Space:h.Space},schema:{type:"object",properties:{key:{type:"string",title:C("Data source name"),required:!0,"x-decorator":"FormItem","x-component":"Input","x-validator":"uid","x-disabled":"{{ createOnly }}",description:C("Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.")},displayName:{type:"string",title:C("Data source display name"),required:!0,"x-decorator":"FormItem","x-component":"Input"},options:{type:"object",properties:{host:{type:"string",title:C("Host"),required:!0,"x-decorator":"FormItem","x-component":"Input",default:"localhost"},port:{type:"string",title:C("Port"),required:!0,"x-decorator":"FormItem","x-component":"Input",default:5432},database:{type:"string",title:C("Database"),required:!0,"x-decorator":"FormItem","x-component":"Input"},username:{type:"string",title:C("Username"),required:!0,"x-decorator":"FormItem","x-component":"Input"},password:{type:"string",title:C("Password"),"x-decorator":"FormItem","x-component":"Password"},tablePrefix:{type:"string",title:C("Table prefix"),"x-decorator":"FormItem","x-component":"Input"},schema:{type:"string",title:C("Schema"),"x-decorator":"FormItem","x-component":"Input"}}},enabled:{type:"string","x-content":C("Enabled the data source"),"x-decorator":"FormItem","x-component":"Checkbox",default:!0}}}})};class ae extends r.Plugin{afterAdd(){return M(this,null,function*(){this.app.pm.add(yt)})}load(){return M(this,null,function*(){this.app.pm.get(q.PluginDataSourceManagerClient).registerType("postgres",{DataSourceSettingsForm:ft,label:C("PostgreSQL")}),this.app.pm.get(q.PluginDataSourceManagerClient).registerType("mysql",{DataSourceSettingsForm:xt,label:C("MySQL")})})}}m.PluginExternalDataSourceClient=ae,m.default=ae,Object.defineProperties(m,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -0,0 +1,4 @@
1
+ export declare const NAMESPACE = "data-source-common";
2
+ export declare const tval: (key: string, useCore?: boolean) => string;
3
+ export declare function lang(key: string, options?: {}): string;
4
+ export declare const useTranslation: (useCore?: boolean) => any;
@@ -0,0 +1,16 @@
1
+ module.exports = {
2
+ "@tachybase/client": "0.23.8",
3
+ "@tachybase/module-data-source": "0.23.8",
4
+ "@tachybase/server": "0.23.8",
5
+ "react": "18.3.1",
6
+ "antd": "5.22.5",
7
+ "lodash": "4.17.21",
8
+ "@tachybase/database": "0.23.8",
9
+ "@tachybase/data-source": "0.23.8",
10
+ "@tachybase/utils": "0.23.8",
11
+ "axios": "1.7.9",
12
+ "@ant-design/icons": "5.5.2",
13
+ "@tachybase/schema": "0.23.8",
14
+ "@tachybase/components": "0.23.8",
15
+ "react-router-dom": "6.28.1"
16
+ };
@@ -0,0 +1,2 @@
1
+ export * from './server';
2
+ export { default } from './server';
package/dist/index.js ADDED
@@ -0,0 +1,39 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var src_exports = {};
30
+ __export(src_exports, {
31
+ default: () => import_server.default
32
+ });
33
+ module.exports = __toCommonJS(src_exports);
34
+ __reExport(src_exports, require("./server"), module.exports);
35
+ var import_server = __toESM(require("./server"));
36
+ // Annotate the CommonJS export names for ESM import in node:
37
+ 0 && (module.exports = {
38
+ ...require("./server")
39
+ });
@@ -0,0 +1,32 @@
1
+ {
2
+ "Allow adding and modifying collection": "Allow adding and modifying collection",
3
+ "Collections": "Collections",
4
+ "Connection successful'": "Connection successful'",
5
+ "Create collection": "Create collection",
6
+ "Data source display name": "Data source display name",
7
+ "Data source name": "Data source name",
8
+ "Database": "Database",
9
+ "Database connections": "Database connections",
10
+ "Database dialaect": "Database dialaect",
11
+ "Description": "Description",
12
+ "Display name": "Display name",
13
+ "Enabled the data source": "Enabled the data source",
14
+ "Field database type": "Field database type",
15
+ "Get": "Get(required)",
16
+ "Host": "Host",
17
+ "If a collection lacks a primary key, you must configure a unique record key to locate row records within a block, failure to configure this will prevent the creation of data blocks for the collection.": "If a collection lacks a primary key, you must configure a unique record key to locate row records within a block, failure to configure this will prevent the creation of data blocks for the collection.",
18
+ "List": "List(required)",
19
+ "Password": "Password",
20
+ "Permissions": "Permissions",
21
+ "Port": "Port",
22
+ "Postgres": "Postgres",
23
+ "Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.": "Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.",
24
+ "Record unique key": "Record unique key",
25
+ "Request actions": "Request actions",
26
+ "Storage": "Storage",
27
+ "Table prefix": "Table prefix",
28
+ "Test Connection": "Test Connection",
29
+ "The following field types are not compatible and do not support output and display": "The following field types are not compatible and do not support output and display",
30
+ "Unknown field type": "Unknown field type",
31
+ "Username": "Username"
32
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "Allow adding and modifying collection": "允许添加和修改数据表结构",
3
+ "Collections": "数据表",
4
+ "Connection successful'": "连接成功",
5
+ "Create collection": "创建数据表",
6
+ "Data source display name": "数据源名称",
7
+ "Data source name": "数据源标识",
8
+ "Database": "数据库",
9
+ "Database connections": "连接第三方数据库",
10
+ "Database dialaect": "数据库",
11
+ "Description": "描述",
12
+ "Display name": "名称",
13
+ "Enabled the data source": "启用数据源",
14
+ "Field database type": "字段数据库类型",
15
+ "Get": "Get(必填)",
16
+ "Host": "服务器地址",
17
+ "If a collection lacks a primary key, you must configure a unique record key to locate row records within a block, failure to configure this will prevent the creation of data blocks for the collection.": "当数据表没有主键时,你需要配置记录唯一标识符,用于在卡片中定位行记录,不配置将无法创建该表的数据卡片。",
18
+ "List": "List(必填)",
19
+ "Password": "密码",
20
+ "Permissions": "权限",
21
+ "Port": "端口",
22
+ "Postgres": "PostgreSQL",
23
+ "Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.": "随机生成,可修改。支持英文、数字和下划线,必须以英文字母开头。",
24
+ "Record unique key": "记录唯一标识符",
25
+ "Request actions": "请求操作",
26
+ "Storage": "文件地址",
27
+ "Table prefix": "表前缀",
28
+ "Test Connection": "测试连接",
29
+ "The following field types are not compatible and do not support output and display": "以下字段类型未适配,不支持输出和显示",
30
+ "Unknown field type": "未知字段类型",
31
+ "Username": "用户名"
32
+ }
@@ -0,0 +1,10 @@
1
+ import { Plugin } from '@tachybase/server';
2
+ export declare class PluginHttpDatasource extends Plugin {
3
+ afterAdd(): Promise<void>;
4
+ beforeLoad(): Promise<void>;
5
+ load(): Promise<void>;
6
+ install(): Promise<void>;
7
+ afterEnable(): Promise<void>;
8
+ afterDisable(): Promise<void>;
9
+ remove(): Promise<void>;
10
+ }
@@ -0,0 +1,78 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var plugin_exports = {};
29
+ __export(plugin_exports, {
30
+ PluginHttpDatasource: () => PluginHttpDatasource
31
+ });
32
+ module.exports = __toCommonJS(plugin_exports);
33
+ var import_server = require("@tachybase/server");
34
+ var import_lodash = __toESM(require("lodash"));
35
+ var import_http_collection = require("./services/http-collection");
36
+ var import_http_data_source = require("./services/http-data-source");
37
+ class PluginHttpDatasource extends import_server.Plugin {
38
+ async afterAdd() {
39
+ }
40
+ async beforeLoad() {
41
+ this.app.dataSourceManager.factory.register("http", import_http_data_source.HttpDataSource);
42
+ this.app.resourcer.define({
43
+ name: "dataSources.httpCollections",
44
+ actions: {
45
+ async runAction(ctx, next) {
46
+ const { sourceId } = ctx.action;
47
+ const { actionOptions, inferFields, debugVars, debug } = ctx.action.params.values;
48
+ if (!actionOptions.type) {
49
+ import_lodash.default.set(actionOptions, "type", "list");
50
+ }
51
+ const dataSource = ctx.app.dataSourceManager.dataSources.get(sourceId);
52
+ ctx.body = await import_http_collection.HttpCollection.runAction({
53
+ dataSource,
54
+ actionOptions,
55
+ parseField: inferFields,
56
+ runAsDebug: debug,
57
+ debugVars
58
+ });
59
+ await next();
60
+ }
61
+ }
62
+ });
63
+ }
64
+ async load() {
65
+ }
66
+ async install() {
67
+ }
68
+ async afterEnable() {
69
+ }
70
+ async afterDisable() {
71
+ }
72
+ async remove() {
73
+ }
74
+ }
75
+ // Annotate the CommonJS export names for ESM import in node:
76
+ 0 && (module.exports = {
77
+ PluginHttpDatasource
78
+ });
@@ -0,0 +1,18 @@
1
+ import { HttpCollection } from './http-collection';
2
+ export declare class HttpApiRepository {
3
+ collection: HttpCollection;
4
+ constructor(collection: HttpCollection);
5
+ count(options: any): Promise<any>;
6
+ find(options: any): Promise<any>;
7
+ findAndCount(options?: {
8
+ context?: any;
9
+ filter?: any;
10
+ sort?: any;
11
+ }): Promise<any[]>;
12
+ findOne(options: any): Promise<any>;
13
+ create(options: any): Promise<any>;
14
+ update(options: any): Promise<any>;
15
+ destroy(options: any): Promise<any>;
16
+ buildTemplateContextFromRequestContext(ctx: any, others?: {}): {};
17
+ handleValuesWithWhiteListAndBlackList(options: any): any;
18
+ }
@@ -0,0 +1,125 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var http_api_repository_exports = {};
29
+ __export(http_api_repository_exports, {
30
+ HttpApiRepository: () => HttpApiRepository
31
+ });
32
+ module.exports = __toCommonJS(http_api_repository_exports);
33
+ var import_lodash = __toESM(require("lodash"));
34
+ class HttpApiRepository {
35
+ constructor(collection) {
36
+ this.collection = collection;
37
+ }
38
+ async count(options) {
39
+ const { transformedResponse } = await this.collection.runAction("list");
40
+ return import_lodash.default.get(transformedResponse, "meta.count", transformedResponse.data.length);
41
+ }
42
+ async find(options) {
43
+ const { transformedResponse } = await this.collection.runAction("list");
44
+ return transformedResponse.data;
45
+ }
46
+ async findAndCount(options = {}) {
47
+ const templateContext = this.buildTemplateContextFromRequestContext(options.context, {
48
+ filter: options.filter,
49
+ sort: options.sort
50
+ });
51
+ const { transformedResponse } = await this.collection.runAction("list", templateContext);
52
+ return [transformedResponse.data, import_lodash.default.get(transformedResponse, "meta.count", transformedResponse.length)];
53
+ }
54
+ async findOne(options) {
55
+ const templateContext = this.buildTemplateContextFromRequestContext(options.context, {
56
+ filter: options.filter,
57
+ sort: options.sort,
58
+ filterByTk: options.filterByTk
59
+ });
60
+ const { transformedResponse } = await this.collection.runAction("get", templateContext);
61
+ return transformedResponse.data;
62
+ }
63
+ async create(options) {
64
+ options.values = this.handleValuesWithWhiteListAndBlackList(options);
65
+ const templateContext = this.buildTemplateContextFromRequestContext(options.context, {
66
+ values: options.values
67
+ });
68
+ const { transformedResponse } = await this.collection.runAction("create", templateContext);
69
+ return transformedResponse.data;
70
+ }
71
+ async update(options) {
72
+ options.values = this.handleValuesWithWhiteListAndBlackList(options);
73
+ const templateContext = this.buildTemplateContextFromRequestContext(options.context, {
74
+ filter: options.filter,
75
+ sort: options.sort,
76
+ filterByTk: options.filterByTk,
77
+ values: options.values
78
+ });
79
+ const { transformedResponse } = await this.collection.runAction("update", templateContext);
80
+ return transformedResponse.data;
81
+ }
82
+ async destroy(options) {
83
+ const templateContext = this.buildTemplateContextFromRequestContext(options.context, {
84
+ filter: options.filter,
85
+ sort: options.sort,
86
+ filterByTk: options.filterByTk
87
+ });
88
+ const { transformedResponse } = await this.collection.runAction("destroy", templateContext);
89
+ return transformedResponse.data;
90
+ }
91
+ buildTemplateContextFromRequestContext(ctx, others = {}) {
92
+ const templateContext = { ...others };
93
+ if (import_lodash.default.get(ctx, "action.params")) {
94
+ import_lodash.default.set(templateContext, "request.params", ctx.action.params);
95
+ if (ctx.action.params.page) {
96
+ import_lodash.default.set(templateContext, "page", ctx.action.params.page);
97
+ }
98
+ if (ctx.action.params.pageSize) {
99
+ import_lodash.default.set(templateContext, "pageSize", ctx.action.params.pageSize);
100
+ }
101
+ }
102
+ if (import_lodash.default.get(ctx, "request.headers")) {
103
+ import_lodash.default.set(templateContext, "request.headers", ctx.request.headers);
104
+ }
105
+ return templateContext;
106
+ }
107
+ handleValuesWithWhiteListAndBlackList(options) {
108
+ const { whiteList, blackList } = options;
109
+ let { values } = options;
110
+ if (!values) {
111
+ return values;
112
+ }
113
+ if (whiteList && whiteList.length) {
114
+ values = import_lodash.default.pick(values, whiteList);
115
+ }
116
+ if (blackList && blackList.length) {
117
+ values = import_lodash.default.omit(values, blackList);
118
+ }
119
+ return values;
120
+ }
121
+ }
122
+ // Annotate the CommonJS export names for ESM import in node:
123
+ 0 && (module.exports = {
124
+ HttpApiRepository
125
+ });
@@ -0,0 +1,6 @@
1
+ import { CollectionManager, CollectionOptions } from '@tachybase/data-source';
2
+ import { HttpCollection } from './http-collection';
3
+ export declare class HttpCollectionManager extends CollectionManager {
4
+ constructor(options?: {});
5
+ newCollection(options: CollectionOptions): HttpCollection;
6
+ }
@@ -0,0 +1,36 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var http_collection_manager_exports = {};
19
+ __export(http_collection_manager_exports, {
20
+ HttpCollectionManager: () => HttpCollectionManager
21
+ });
22
+ module.exports = __toCommonJS(http_collection_manager_exports);
23
+ var import_data_source = require("@tachybase/data-source");
24
+ var import_http_collection = require("./http-collection");
25
+ class HttpCollectionManager extends import_data_source.CollectionManager {
26
+ constructor(options = {}) {
27
+ super(options);
28
+ }
29
+ newCollection(options) {
30
+ return new import_http_collection.HttpCollection(options, this);
31
+ }
32
+ }
33
+ // Annotate the CommonJS export names for ESM import in node:
34
+ 0 && (module.exports = {
35
+ HttpCollectionManager
36
+ });
@@ -0,0 +1,7 @@
1
+ import { Collection } from '@tachybase/data-source';
2
+ export declare class HttpCollection extends Collection {
3
+ availableActions(): string[];
4
+ static runAction(options: any): Promise<any>;
5
+ getActionOptions(action: any): any;
6
+ runAction(action: string, templateContext?: any): Promise<any>;
7
+ }