@nocobase/plugin-collection-fdw 2.1.0-beta.45 → 2.1.0-beta.47

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/client-v2.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './dist/client-v2';
2
+ export { default } from './dist/client-v2';
package/client-v2.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist/client-v2/index.js');
@@ -0,0 +1,17 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ import type { CollectionTemplateConfigureItemProps } from '@nocobase/plugin-data-source-manager/client-v2';
10
+ import React from 'react';
11
+ export declare function FdwRemoteServerConfigureItem(props: CollectionTemplateConfigureItemProps): React.JSX.Element;
12
+ export declare function FdwRemoteTableConfigureItem(props: CollectionTemplateConfigureItemProps): React.JSX.Element;
13
+ export declare function FdwFieldsConfigureItem(props: CollectionTemplateConfigureItemProps): React.JSX.Element;
14
+ export declare function FdwPreviewConfigureItem(props: CollectionTemplateConfigureItemProps): React.JSX.Element;
15
+ export declare function normalizeFdwCollectionSubmitValues(values: Record<string, unknown>): {
16
+ [x: string]: unknown;
17
+ };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ /**
10
+ * This file is part of the NocoBase (R) project.
11
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
12
+ * Authors: NocoBase Team.
13
+ *
14
+ * This program is offered under a commercial license.
15
+ * For more information, see <https://www.nocobase.com/agreement>
16
+ */
17
+ export { default } from './plugin';
18
+ export * from './plugin';
@@ -0,0 +1,10 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("ahooks"),require("@nocobase/plugin-data-source-manager/client-v2"),require("@nocobase/client-v2"),require("react"),require("antd"),require("@ant-design/icons"),require("@nocobase/flow-engine"),require("lodash")):"function"==typeof define&&define.amd?define("@nocobase/plugin-collection-fdw/client-v2",["ahooks","@nocobase/plugin-data-source-manager/client-v2","@nocobase/client-v2","react","antd","@ant-design/icons","@nocobase/flow-engine","lodash"],t):"object"==typeof exports?exports["@nocobase/plugin-collection-fdw/client-v2"]=t(require("ahooks"),require("@nocobase/plugin-data-source-manager/client-v2"),require("@nocobase/client-v2"),require("react"),require("antd"),require("@ant-design/icons"),require("@nocobase/flow-engine"),require("lodash")):e["@nocobase/plugin-collection-fdw/client-v2"]=t(e.ahooks,e["@nocobase/plugin-data-source-manager/client-v2"],e["@nocobase/client-v2"],e.react,e.antd,e["@ant-design/icons"],e["@nocobase/flow-engine"],e.lodash)}(self,function(e,t,r,n,a,o,l,i){return function(){"use strict";var u={375:function(e){e.exports=o},485:function(e){e.exports=r},694:function(e){e.exports=l},894:function(e){e.exports=t},625:function(t){t.exports=e},59:function(e){e.exports=a},773:function(e){e.exports=i},155:function(e){e.exports=n}},c={};function s(e){var t=c[e];if(void 0!==t)return t.exports;var r=c[e]={exports:{}};return u[e](r,r.exports,s),r.exports}s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,{a:t}),t},s.d=function(e,t){for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.g.importScripts&&(f=s.g.location+"");var f,p=s.g.document;if(!f&&p&&(p.currentScript&&"SCRIPT"===p.currentScript.tagName.toUpperCase()&&(f=p.currentScript.src),!f)){var d=p.getElementsByTagName("script");if(d.length)for(var m=d.length-1;m>-1&&(!f||!/^http(s?):/.test(f));)f=d[m--].src}if(!f)throw Error("Automatic publicPath is not supported in this browser");s.p=f.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/");var b={};return!function(){var e="",t="u">typeof document?document.currentScript:null;if(t&&t.src&&(e=t.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")),!e){var r=window.__webpack_public_path__||"";r&&("/"!==r.charAt(r.length-1)&&(r+="/"),e=r+"static/plugins/@nocobase/plugin-collection-fdw/dist/client-v2/")}if(!e){var n=window.__nocobase_modern_client_prefix__||"v",a="/"+(n=String(n).replace(/^\/+|\/+$/g,"")||"v")+"/";if(!(e=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var o=window.location.pathname||"/",l=o.indexOf(a);e=l>=0?o.slice(0,l+1):"/"}e&&(e=e.replace(RegExp("/"+n+"/?$"),"/")),e||(e="/"),"/"!==e.charAt(e.length-1)&&(e+="/"),e+="static/plugins/@nocobase/plugin-collection-fdw/dist/client-v2/"}s.p=e}(),!function(){s.r(b),s.d(b,{PluginCollectionFDWClientV2:function(){return G},default:function(){return U}});var e=s(485),t=s(375),r=s(694),n=s(894),a=s(625),o=s(59),l=s(773),i=s(155),u=s.n(i),c="collection-fdw";function f(){var e=(0,r.useFlowEngine)();return function(t,r){return e.context.t(t,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({ns:[c,"client"]},r))}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function d(e,t,r,n,a,o,l){try{var i=e[o](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,a)}function m(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){d(o,n,a,l,i,"next",e)}function i(e){d(o,n,a,l,i,"throw",e)}l(void 0)})}}function y(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function v(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){y(e,t,r[t])})}return e}function h(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(r=a.next()).done)&&(o.push(r.value),!t||o.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw n}}return o}}(e,t)||S(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function S(e,t){if(e){if("string"==typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return p(e,t)}}function E(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&c[0]?n.return:c[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,c[1])).done)return a;switch(n=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,n=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){o.label=c[1];break}if(6===c[0]&&o.label<a[1]){o.label=a[1],a=c;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(c);break}a[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],n=0}finally{r=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var O="__fdwUnsupportedFields",F=new Set(["lineString","point","circle","polygon"]);function I(e){var t=(0,l.get)(e,"data.data");if(Array.isArray(t))return t;var r=(0,l.get)(t,"data");return Array.isArray(r)?r:[]}function x(e){if(!e)return{remoteTableInfo:void 0,tableName:void 0};var t=g(e.includes(".")?e.split("."):[void 0,e],2),r=t[0],n=t[1];return{remoteTableInfo:r?{schema:r,tableName:n}:{tableName:n},tableName:n}}function T(e){var t=e||{};return t.rawTitle,function(e,t){if(null==e)return{};var r,n,a,o={};if("u">typeof Reflect&&Reflect.ownKeys){for(a=0,r=Reflect.ownKeys(Object(e));a<r.length;a++)n=r[a],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}if(o=function(e,t){if(null==e)return{};var r,n,a={},o=Object.getOwnPropertyNames(e);for(n=0;n<o.length;n++)r=o[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}(e,t),Object.getOwnPropertySymbols)for(a=0,r=Object.getOwnPropertySymbols(e);a<r.length;a++)n=r[a],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}(t,["rawTitle"])}function j(e){return Array.isArray((0,l.get)(e,"errorFields"))}function C(e){var t=o.App.useApp().notification,r=(0,i.useRef)(e);return(0,i.useEffect)(function(){r.current=e},[e]),(0,i.useCallback)(function(e,n){(t||o.notification).error({message:r.current(e),description:function(e){if("string"==typeof e)return e;var t=(0,l.get)(e,"response.data");return"string"==typeof t?t:(0,l.get)(e,"errorFields.0.errors.0")||(0,l.get)(t,"errors.0.message")||(0,l.get)(t,"messages.0.message")||(0,l.get)(t,"messages.0")||(0,l.get)(t,"error.message")||(0,l.get)(t,"message")||(0,l.get)(e,"message")}(n)||r.current("Operation failed")})},[t])}function P(e){e.preventDefault(),e.stopPropagation()}function A(e){var t,n=(0,r.useFlowContext)(),a=f(),c=C(a),s=g(o.Form.useForm(),1)[0],p=g((0,i.useState)(!1),2),d=p[0],b=p[1],y=g((0,i.useState)(!1),2),v=y[0],h=y[1],w=!!e.state,S=(null==(t=e.state)?void 0:t.mode)||"create";(0,i.useEffect)(function(){var t;e.state&&s.setFieldsValue((t="edit"===e.state.mode?e.state.record:void 0)?{database:t.database,description:t.description,host:t.host,name:t.name,password:t.password,port:t.port,username:t.username}:{name:(0,r.randomId)("s_")})},[s,e.state]);var O=(0,i.useCallback)(function(){d||v||(s.resetFields(),e.onCancel())},[s,e,d,v]),F=(0,i.useCallback)(function(){return m(function(){var e,t;return E(this,function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,s.validateFields()];case 1:return e=r.sent(),[3,3];case 2:return j(t=r.sent())||c("Test Connection",t),[2];case 3:h(!0),r.label=4;case 4:return r.trys.push([4,6,7,8]),[4,n.api.resource("databaseServers").testConnection({values:e})];case 5:return r.sent(),o.message.success(a("Connection successful")),[3,8];case 6:return c("Test Connection",r.sent()),[3,8];case 7:return h(!1),[7];case 8:return[2]}})})()},[n.api,s,c,a]),I=(0,i.useCallback)(function(){return m(function(){var t,r,i,u,f;return E(this,function(p){switch(p.label){case 0:return p.trys.push([0,2,,3]),[4,s.validateFields()];case 1:return t=p.sent(),[3,3];case 2:return j(r=p.sent())||c("Operation failed",r),[2];case 3:b(!0),p.label=4;case 4:if(p.trys.push([4,10,11,12]),i=n.api.resource("databaseServers"),"create"!==S)return[3,6];return[4,i.create({values:t})];case 5:return u=p.sent(),[3,8];case 6:return[4,i.update({filterByTk:t.name,values:t})];case 7:u=p.sent(),p.label=8;case 8:var d;return d=u,f=(0,l.get)(d,"data.data")||t,o.message.success(a("Saved successfully")),[4,e.onSubmitted(f)];case 9:return p.sent(),s.resetFields(),[3,12];case 10:return c("Operation failed",p.sent()),[3,12];case 11:return b(!1),[7];case 12:return[2]}})})()},[n.api,s,S,e,c,a]);return u().createElement(o.Modal,{destroyOnClose:!0,open:w,title:"create"===S?a("Create database server"):a("Edit database server"),width:520,onCancel:O,footer:u().createElement(o.Space,null,u().createElement(o.Button,{loading:v,onClick:function(){return F()}},a("Test Connection")),u().createElement(o.Button,{onClick:O},a("Cancel")),u().createElement(o.Button,{type:"primary",loading:d,onClick:function(){return I()}},a("Submit")))},u().createElement(o.Form,{form:s,layout:"vertical",preserve:!1},u().createElement(o.Form.Item,{name:"description",label:a("Display name"),rules:[{required:!0}]},u().createElement(o.Input,null)),u().createElement(o.Form.Item,{name:"name",label:a("Server name"),extra:a("Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter."),rules:[{required:!0},{pattern:/^[A-Za-z][A-Za-z0-9_]*$/,message:a("Support letters, numbers and underscores, must start with an letter.")}]},u().createElement(o.Input,{disabled:"edit"===S})),u().createElement(o.Form.Item,{name:"host",label:a("Host"),rules:[{required:!0}]},u().createElement(o.Input.TextArea,{autoSize:{minRows:1}})),u().createElement(o.Form.Item,{name:"port",label:a("Port"),rules:[{required:!0}]},u().createElement(o.Input.TextArea,{autoSize:{minRows:1}})),u().createElement(o.Form.Item,{name:"database",label:a("Database"),rules:[{required:!0}]},u().createElement(o.Input.TextArea,{autoSize:{minRows:1}})),u().createElement(o.Form.Item,{name:"username",label:a("Username"),rules:[{required:!0}]},u().createElement(o.Input.TextArea,{autoSize:{minRows:1}})),u().createElement(o.Form.Item,{name:"password",label:a("Password"),rules:[{required:!0}]},u().createElement(o.Input.Password,null))))}function k(e){var t,r,n=(null==e||null==(t=e.getFieldInterfaceGroups)?void 0:t.call(e))||{},a=(null==e||null==(r=e.getFieldInterfaces)?void 0:r.call(e))||[],o=new Map;return a.filter(function(e){return e.name&&!["relation","systemInfo"].includes(String(e.group))}).forEach(function(e){var t,r=String(e.group||"other"),n=o.get(r)||[];n.push({value:String(e.name),label:e.title||String(e.name),availableTypes:e.availableTypes,defaultType:null==(t=e.default)?void 0:t.type}),o.set(r,n)}),Array.from(o.entries()).sort(function(e,t){var r,a,o,l,i=g(e,1)[0],u=g(t,1)[0];return(null!=(r=null==(o=n[i])?void 0:o.order)?r:0)-(null!=(a=null==(l=n[u])?void 0:l.order)?a:0)}).map(function(e){var t,r=g(e,2),a=r[0],o=r[1];return{label:(null==(t=n[a])?void 0:t.label)||a,options:o}})}function _(e){var n=(0,r.useFlowContext)(),l=f(),c=g((0,i.useState)(!1),2),s=c[0],p=c[1],d=g((0,i.useState)(null),2),b=d[0],v=d[1],h=o.Form.useWatch("remoteServerName",e.form),w=(0,a.useRequest)(function(){return m(function(){return E(this,function(e){switch(e.label){case 0:return[4,n.api.resource("databaseServers").list()];case 1:return[2,I(e.sent())]}})})()}),S=(0,i.useMemo)(function(){return(w.data||[]).map(function(e){return{value:e.name,label:e.description||e.name,server:e}})},[w.data]),F=(0,i.useCallback)(function(t){e.form.setFieldsValue(y({remoteServerName:t,remoteTableName:void 0,remoteTableInfo:void 0,fields:[]},O,[]))},[e.form]),x=(0,i.useCallback)(function(){return m(function(){return E(this,function(e){switch(e.label){case 0:if(!w.refreshAsync)return[3,2];return[4,w.refreshAsync()];case 1:return e.sent(),[2];case 2:return w.refresh(),[2]}})})()},[w]),T=(0,i.useCallback)(function(e){p(!1),o.Modal.confirm({title:l("Are you sure you want to delete it?"),onOk:function(){return m(function(){return E(this,function(t){switch(t.label){case 0:return[4,n.api.resource("databaseServers").destroy({filterByTk:e.name})];case 1:return t.sent(),o.message.success(l("Saved successfully")),h===e.name&&F(void 0),[4,x()];case 2:return t.sent(),[2]}})})()}})},[F,n.api,x,h,l]),j=(0,i.useCallback)(function(){p(!1),v({mode:"create"})},[]),C=(0,i.useCallback)(function(e){p(!1),v({mode:"edit",record:e})},[]),k=(0,i.useCallback)(function(e){return m(function(){return E(this,function(t){switch(t.label){case 0:return v(null),[4,x()];case 1:return t.sent(),e.name&&F(e.name),[2]}})})()},[F,x]);return u().createElement(u().Fragment,null,u().createElement(o.Form.Item,{name:"remoteServerName",label:l("Database server"),rules:[{required:!0}]},u().createElement(o.Select,{allowClear:!0,disabled:"edit"===e.mode,dropdownRender:function(e){return u().createElement("div",null,e,u().createElement(o.Divider,{style:{margin:"8px 0"}}),u().createElement(o.Space,{style:{padding:"0 8px 4px"}},u().createElement(o.Button,{icon:u().createElement(t.PlusOutlined,null),type:"link",onClick:j},l("Create database server"))))},loading:w.loading,notFoundContent:u().createElement(o.Empty,{image:o.Empty.PRESENTED_IMAGE_SIMPLE}),onChange:F,onDropdownVisibleChange:p,open:s,optionFilterProp:"label",optionRender:function(e){var t=e.data,r=e.label,n=t.server;return u().createElement("div",{style:{alignItems:"center",display:"flex",gap:8}},u().createElement("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis"}},r),u().createElement(o.Space,{size:4,style:{color:"#1677FF"}},u().createElement(o.Button,{size:"small",type:"link",onClick:function(e){P(e),C(n)},onMouseDown:P},l("Edit")),u().createElement(o.Divider,{type:"vertical"}),u().createElement(o.Button,{size:"small",type:"link",onClick:function(e){P(e),T(n)},onMouseDown:P},l("Delete"))))},options:S,showSearch:!0})),u().createElement(A,{state:b,onCancel:function(){return v(null)},onSubmitted:k}))}function q(e){var t=(0,r.useFlowContext)(),n=f(),c=C(n),s=t.dataSourceManager.collectionFieldInterfaceManager,p=o.Form.useWatch("remoteServerName",e.form),d=(0,i.useMemo)(function(){return k(s)},[s]),b=g((0,i.useState)(!1),2),S=b[0],F=b[1],j=(0,i.useRef)(),P=(0,a.useRequest)(function(e){return m(function(){return E(this,function(r){switch(r.label){case 0:return[4,t.api.resource("databaseServers/".concat(e,"/tables")).list()];case 1:return[2,I(r.sent()).map(function(e){var t=e.schema?"".concat(e.schema,".").concat(e.name):e.name;return{value:t,label:t}})]}})})()},{manual:!0,onError:function(e){c("Remote table",e)}}),A=(0,i.useCallback)(function(r){return m(function(){var n,a;return E(this,function(o){switch(o.label){case 0:if(!p||!r)return e.form.setFieldsValue(y({fields:[]},O,[])),[2];F(!0),o.label=1;case 1:return o.trys.push([1,3,4,5]),[4,t.api.resource("databaseServers/".concat(p,"/tables")).get({filterByTk:r})];case 2:var i,u,f;return n={fields:Array.isArray(null==(u=[i=o.sent(),(0,l.get)(i,"data"),(0,l.get)(i,"data.data"),(0,l.get)(i,"data.data.data")].find(function(e){return e&&(void 0===e?"undefined":w(e))==="object"&&(Array.isArray(e.fields)||Array.isArray(e.unsupportedFields))}))?void 0:u.fields)?u.fields:[],unsupportedFields:Array.isArray(null==u?void 0:u.unsupportedFields)?u.unsupportedFields:[]},e.form.setFieldsValue(y({fields:(f=n.fields,f.map(function(e){var t,r,n,a=e.interface||function(e,t){var r=!0,n=!1,a=void 0;try{for(var o,l=t[Symbol.iterator]();!(r=(o=l.next()).done);r=!0){var i=o.value.options.find(function(t){var r;return!e||(null==(r=t.availableTypes)?void 0:r.includes(e))||t.defaultType===e});if(i)return i.value}}catch(e){n=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(n)throw a}}}(e.type,d),o=(null==s||null==(r=s.getFieldInterface)||null==(t=r.call(s,a))?void 0:t.default)||{};return h(v({},e),{interface:a,uiSchema:h(v({},o.uiSchema,T(e.uiSchema)),{title:(null==(n=e.uiSchema)?void 0:n.title)||e.name,required:!e.allowNull})})}))},O,n.unsupportedFields)),[3,5];case 3:return a=o.sent(),e.form.setFieldsValue(y({fields:[]},O,[])),c("Fields",a),[3,5];case 4:return F(!1),[7];case 5:return[2]}})})()},[t.api,d,s,e.form,p,c]);return(0,i.useEffect)(function(){p&&P.run(p)},[p,P]),u().createElement(o.Spin,{spinning:S},u().createElement(o.Form.Item,{name:"remoteTableName",label:n("Remote table"),rules:[{required:!0}]},u().createElement(o.Select,{allowClear:!0,disabled:"edit"===e.mode||!p,loading:P.loading,optionFilterProp:"label",options:P.data||[],showSearch:!0,onChange:function(t){var r=x(t),n=r.remoteTableInfo,a=r.tableName;if(e.form.setFieldsValue(y({remoteTableName:t,remoteTableInfo:n,fields:[]},O,[])),a){var o=e.form.getFieldValue("name");(!e.form.isFieldTouched("name")||o===j.current||/^t_[A-Za-z0-9]+$/.test(o))&&(j.current=a,e.form.setFieldValue("name",a)),A(t)}}})))}function N(e){var t=(0,r.useFlowContext)(),a=f(),l=t.dataSourceManager.collectionFieldInterfaceManager,c=o.Form.useWatch("fields",e.form),s=o.Form.useWatch(O,{form:e.form,preserve:!0}),d=(0,i.useMemo)(function(){return Array.isArray(c)?c:[]},[c]),m=(0,i.useMemo)(function(){return k(l)},[l]),b=(0,i.useCallback)(function(t,r){var n=function(e){if(Array.isArray(e))return p(e)}(d)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(d)||S(d)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();n.splice(t,1,r),e.form.setFieldValue("fields",n)},[d,e.form]),y=[{title:a("Name"),dataIndex:"name",width:130},{title:a("Type"),dataIndex:"type",width:140,render:function(e,t,r){var n;return(null==(n=t.possibleTypes)?void 0:n.length)?u().createElement(o.Select,{value:e,style:{width:"100%"},popupMatchSelectWidth:!1,options:t.possibleTypes.map(function(e){return{label:e,value:e}}),onChange:function(e){return b(r,h(v({},t),{type:e}))}}):u().createElement(o.Tag,null,e)}},{title:a("Interface"),dataIndex:"interface",width:180,render:function(e,t,r){return u().createElement(o.Select,{allowClear:!0,popupMatchSelectWidth:!1,style:{width:"100%"},options:m.map(function(e){return{label:(0,n.compileLegacyTemplate)(e.label,a),options:e.options.filter(function(e){var r;return!t.type||(null==(r=e.availableTypes)?void 0:r.includes(t.type))}).map(function(e){return{value:e.value,label:(0,n.compileLegacyTemplate)(e.label,a)}})}}),value:e||void 0,onChange:function(e){var n,a,o,i,u=null==l||null==(n=l.getFieldInterface)?void 0:n.call(l,e);b(r,h(v({},t),{interface:e||null,type:(null==u||null==(a=u.default)?void 0:a.type)||t.type,uiSchema:h(v({},null==u||null==(o=u.default)?void 0:o.uiSchema),{title:(null==(i=t.uiSchema)?void 0:i.title)||t.name,required:!t.allowNull})}))}})}},{title:a("Display name"),dataIndex:["uiSchema","title"],width:180,render:function(e,t,r){var n;return u().createElement(o.Input,{value:(null==(n=t.uiSchema)?void 0:n.title)||t.name,onChange:function(e){b(r,h(v({},t),{uiSchema:h(v({},T(t.uiSchema)),{title:e.target.value})}))}})}}];return u().createElement(u().Fragment,null,u().createElement(o.Form.Item,{name:"fields",hidden:!0,rules:[{validator:function(e,t){return Array.isArray(t)&&t.length?t.some(function(e){var t;return!(null==e?void 0:e.interface)||!(null==e||null==(t=e.uiSchema)?void 0:t.title)})?Promise.reject(Error(a("Fields can only be used correctly if they are defined with an interface."))):Promise.resolve():Promise.reject(Error(a("Fields")))}}]},u().createElement(o.Input,null)),d.length?u().createElement(o.Form.Item,{label:a("Fields"),required:!0,extra:a("Fields can only be used correctly if they are defined with an interface.")},u().createElement(o.Table,{bordered:!0,columns:y,dataSource:d,pagination:!1,rowKey:"name",scroll:{y:300}})):u().createElement(o.Form.Item,{label:a("Fields"),required:!0},u().createElement(o.Alert,{showIcon:!0,message:a("Remote table")})),(null==s?void 0:s.length)?u().createElement(o.Alert,{showIcon:!0,type:"warning",message:a("Unsupported fields"),description:s.map(function(e){return e.name}).join(", "),style:{marginBottom:24}}):null)}function M(e){var t=(0,r.useFlowContext)(),a=f(),l=C(a),c=o.Form.useWatch("remoteServerName",e.form),s=o.Form.useWatch("remoteTableName",e.form),p=o.Form.useWatch("fields",e.form),d=(0,i.useMemo)(function(){return Array.isArray(p)?p:[]},[p]),b=g((0,i.useState)(!1),2),y=b[0],v=b[1],h=g((0,i.useState)([]),2),S=h[0],O=h[1],x=(0,i.useMemo)(function(){return JSON.stringify(d.reduce(function(e,t){return t.type&&F.has(t.type)&&(e[t.name]=t.type),e},{}))},[d]),T=(0,i.useMemo)(function(){return d.filter(function(e){return e.interface}).map(function(e){var t;return{title:(0,n.compileLegacyTemplate)((null==(t=e.uiSchema)?void 0:t.title)||e.name,a),dataIndex:e.name,key:e.name,width:200,ellipsis:!0,render:function(e){return null==e?null:(void 0===e?"undefined":w(e))==="object"?JSON.stringify(e):String(e)}}})},[d,a]);return(0,i.useEffect)(function(){if(!c||!s||!d.length)return void O([]);var e=!1;return m(function(){var r,n;return E(this,function(a){switch(a.label){case 0:v(!0),a.label=1;case 1:return a.trys.push([1,3,4,5]),[4,t.api.resource("databaseServers.tables",c).query({filterByTk:s,fieldTypes:JSON.parse(x)})];case 2:return r=a.sent(),e||O(I(r)),[3,5];case 3:return n=a.sent(),e||(O([]),l("Preview",n)),[3,5];case 4:return e||v(!1),[7];case 5:return[2]}})})(),function(){e=!0}},[t.api,x,d.length,c,s,l]),u().createElement(o.Form.Item,{label:a("Preview")},u().createElement(o.Spin,{spinning:y},u().createElement(o.Table,{bordered:!0,columns:T,dataSource:S,pagination:!1,rowKey:function(e,t){return String(null!=t?t:0)},scroll:{x:1e3,y:300}})))}function R(e){var t=v({},e);return delete t[O],t.remoteTableInfo=x("string"==typeof t.remoteTableName?t.remoteTableName:void 0).remoteTableInfo,t}function D(e,t,r,n,a,o,l){try{var i=e[o](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,a)}function B(e,t,r){return(B=W()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var a=new(Function.bind.apply(e,n));return r&&$(a,r.prototype),a}).apply(null,arguments)}function V(e){return(V=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function $(e,t){return($=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function z(e){var t="function"==typeof Map?new Map:void 0;return(z=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return B(e,arguments,V(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),$(r,e)})(e)}function W(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(W=function(){return!!e})()}var G=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function n(){var e,t;if(!(this instanceof n))throw TypeError("Cannot call a class as a function");return e=n,t=arguments,e=V(e),function(e,t){var r;if(t&&("object"==((r=t)&&"u">typeof Symbol&&r.constructor===Symbol?"symbol":typeof r)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,W()?Reflect.construct(e,t||[],V(this).constructor):e.apply(this,t))}return n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&$(n,e),t=[{key:"load",value:function(){var e;return(e=function(){var e,t;return function(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&c[0]?n.return:c[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,c[1])).done)return a;switch(n=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,n=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){o.label=c[1];break}if(6===c[0]&&o.label<a[1]){o.label=a[1],a=c;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(c);break}a[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],n=0}finally{r=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(n){return null==(t=this.app.pm.get("@nocobase/plugin-data-source-manager")||this.app.pm.get("data-source-manager"))||null==(e=t.registerCollectionTemplate)||e.call(t,{name:"foreign",title:(0,r.tExpr)("Connect to foreign data",{ns:[c,"client"]}),order:70,color:"yellow",collection:{options:{template:"foreign",autoGenId:!1,createdAt:!1,createdBy:!1,updatedAt:!1,updatedBy:!1},fields:[]},fieldInterfaces:{include:["obo","oho","o2m","m2o","m2m"]},capabilities:{inherits:!1},configure:{items:[{name:"remoteServerName",Component:_,required:!0},{name:"remoteTableName",Component:q,required:!0},{name:"fields",Component:N,required:!0},{name:"preview",Component:M}],transformSubmitValues:R}}),[2]})},function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){D(o,n,a,l,i,"next",e)}function i(e){D(o,n,a,l,i,"throw",e)}l(void 0)})}).call(this)}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(n.prototype,t),n}(z(e.Plugin)),U=G}(),b}()});
@@ -0,0 +1,11 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ export declare const NAMESPACE = "collection-fdw";
10
+ export declare function useT(): (key: string, options?: Record<string, any>) => string;
11
+ export declare function tExpr(key: string): string;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ /**
10
+ * This file is part of the NocoBase (R) project.
11
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
12
+ * Authors: NocoBase Team.
13
+ *
14
+ * This program is offered under a commercial license.
15
+ * For more information, see <https://www.nocobase.com/agreement>
16
+ */
17
+ import { Application, Plugin } from '@nocobase/client-v2';
18
+ export declare class PluginCollectionFDWClientV2 extends Plugin<any, Application> {
19
+ load(): Promise<void>;
20
+ }
21
+ export default PluginCollectionFDWClientV2;
@@ -12,12 +12,16 @@ module.exports = {
12
12
  "antd": "5.24.2",
13
13
  "react": "18.2.0",
14
14
  "react-i18next": "11.18.6",
15
- "@nocobase/client": "2.1.0-beta.45",
16
- "@nocobase/database": "2.1.0-beta.45",
17
- "sequelize": "6.37.7",
18
- "@nocobase/server": "2.1.0-beta.45",
15
+ "@nocobase/client": "2.1.0-beta.47",
19
16
  "@ant-design/icons": "5.6.1",
17
+ "@nocobase/flow-engine": "2.1.0-beta.47",
18
+ "@nocobase/plugin-data-source-manager": "2.1.0-beta.47",
19
+ "ahooks": "3.7.8",
20
20
  "lodash": "4.18.1",
21
+ "@nocobase/client-v2": "2.1.0-beta.47",
22
+ "@nocobase/database": "2.1.0-beta.47",
23
+ "sequelize": "6.37.7",
24
+ "@nocobase/server": "2.1.0-beta.47",
21
25
  "@formily/antd-v5": "1.2.3",
22
26
  "@formily/core": "2.3.7",
23
27
  "@formily/shared": "2.3.7"
@@ -1 +1 @@
1
- {"name":"node-sql-parser","version":"4.18.0","description":"simple node sql parser","main":"index.js","types":"types.d.ts","scripts":{"start":"webpack --config webpack.config.js","build":"npm run lint && npm run compile && webpack --config webpack.config.js --mode production","test":"npm run lint && mochapack \"test/**/*.spec.js\"","lint":"eslint src","compile":"babel src -d lib","coverLocal":"cross-env NODE_ENV=coverage nyc --reporter=lcov --reporter=text npm run test","cover:run":"cross-env NODE_ENV=coverage nyc --reporter=text-lcov npm run test","cover":"npm run cover:run && nyc report --reporter=text-lcov | coveralls","release":"npm run build && npm publish output/prod"},"repository":{"type":"git","url":"git+https://github.com/taozhi8833998/node-sql-parser.git"},"pre-commit":"coverLocal","keywords":["sql","sql-parser","parser","node","nodejs","node-parser","node-sql-parser","ast","sql-ast"],"author":"taozhi8833998 <taozhi8833998@163.com>","files":["ast/","build","lib","umd/","index.d.ts","index.js","index.js.map","LICENSE","package.json","README.md","types.d.ts"],"license":"Apache-2.0","bugs":{"url":"https://github.com/taozhi8833998/node-sql-parser/issues"},"homepage":"https://github.com/taozhi8833998/node-sql-parser#readme","engines":{"node":">=8"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.10.5","@babel/plugin-proposal-object-rest-spread":"^7.5.5","@babel/preset-env":"^7.10.4","@babel/register":"^7.10.5","@types/chai":"^4.1.7","@types/mocha":"^10.0.1","babel-loader":"^8.1.0","browserify":"^17.0.0","chai":"^4.4.1","copy-webpack-plugin":"^6.0.3","coveralls":"^3.0.13","cross-env":"^7.0.2","eslint":"^8.3.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-strict":"^14.0.1","eslint-plugin-filenames":"^1.3.2","eslint-plugin-import":"^2.16.0","filemanager-webpack-plugin":"^3.1.1","istanbul-instrumenter-loader":"^3.0.1","mocha":"^10.0.0","mochapack":"^2.0.3","nyc":"15.1.0","pegjs":"^0.10.0","pegjs-loader":"^0.5.6","pre-commit":"^1.2.2","rimraf":"^5.0.1","source-map-support":"^0.5.19","tinyify":"^4.0.0","vscode-mocha-hmr":"^1.0.0","webpack":"^4.43.0","webpack-cli":"^4.7.0","webpack-node-externals":"^3.0.0"},"nyc":{"include":["src/**/*.js"],"instrument":false,"sourceMap":false},"dependencies":{"big-integer":"^1.6.48"},"_lastModified":"2026-06-08T04:31:57.934Z"}
1
+ {"name":"node-sql-parser","version":"4.18.0","description":"simple node sql parser","main":"index.js","types":"types.d.ts","scripts":{"start":"webpack --config webpack.config.js","build":"npm run lint && npm run compile && webpack --config webpack.config.js --mode production","test":"npm run lint && mochapack \"test/**/*.spec.js\"","lint":"eslint src","compile":"babel src -d lib","coverLocal":"cross-env NODE_ENV=coverage nyc --reporter=lcov --reporter=text npm run test","cover:run":"cross-env NODE_ENV=coverage nyc --reporter=text-lcov npm run test","cover":"npm run cover:run && nyc report --reporter=text-lcov | coveralls","release":"npm run build && npm publish output/prod"},"repository":{"type":"git","url":"git+https://github.com/taozhi8833998/node-sql-parser.git"},"pre-commit":"coverLocal","keywords":["sql","sql-parser","parser","node","nodejs","node-parser","node-sql-parser","ast","sql-ast"],"author":"taozhi8833998 <taozhi8833998@163.com>","files":["ast/","build","lib","umd/","index.d.ts","index.js","index.js.map","LICENSE","package.json","README.md","types.d.ts"],"license":"Apache-2.0","bugs":{"url":"https://github.com/taozhi8833998/node-sql-parser/issues"},"homepage":"https://github.com/taozhi8833998/node-sql-parser#readme","engines":{"node":">=8"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.10.5","@babel/plugin-proposal-object-rest-spread":"^7.5.5","@babel/preset-env":"^7.10.4","@babel/register":"^7.10.5","@types/chai":"^4.1.7","@types/mocha":"^10.0.1","babel-loader":"^8.1.0","browserify":"^17.0.0","chai":"^4.4.1","copy-webpack-plugin":"^6.0.3","coveralls":"^3.0.13","cross-env":"^7.0.2","eslint":"^8.3.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-strict":"^14.0.1","eslint-plugin-filenames":"^1.3.2","eslint-plugin-import":"^2.16.0","filemanager-webpack-plugin":"^3.1.1","istanbul-instrumenter-loader":"^3.0.1","mocha":"^10.0.0","mochapack":"^2.0.3","nyc":"15.1.0","pegjs":"^0.10.0","pegjs-loader":"^0.5.6","pre-commit":"^1.2.2","rimraf":"^5.0.1","source-map-support":"^0.5.19","tinyify":"^4.0.0","vscode-mocha-hmr":"^1.0.0","webpack":"^4.43.0","webpack-cli":"^4.7.0","webpack-node-externals":"^3.0.0"},"nyc":{"include":["src/**/*.js"],"instrument":false,"sourceMap":false},"dependencies":{"big-integer":"^1.6.48"},"_lastModified":"2026-06-09T23:05:07.431Z"}
@@ -3,8 +3,8 @@
3
3
  * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
4
  * Authors: NocoBase Team.
5
5
  *
6
- * This program is offered under a commercial license.
7
- * For more information, see <https://www.nocobase.com/agreement>
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  declare const _default: import("@nocobase/database").CollectionOptions;
10
10
  export default _default;
@@ -32,6 +32,7 @@ module.exports = __toCommonJS(database_server_collection_exports);
32
32
  var import_database = require("@nocobase/database");
33
33
  var database_server_collection_default = (0, import_database.defineCollection)({
34
34
  name: "databaseServers",
35
+ dataCategory: "system",
35
36
  dumpRules: "required",
36
37
  migrationRules: ["overwrite", "schema-only"],
37
38
  autoGenId: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/plugin-collection-fdw",
3
- "version": "2.1.0-beta.45",
3
+ "version": "2.1.0-beta.47",
4
4
  "main": "./dist/server/index.js",
5
5
  "keywords": [
6
6
  "Collections"
@@ -30,7 +30,10 @@
30
30
  },
31
31
  "peerDependencies": {
32
32
  "@nocobase/client": "2.x",
33
+ "@nocobase/client-v2": "2.x",
33
34
  "@nocobase/database": "2.x",
35
+ "@nocobase/flow-engine": "2.x",
36
+ "@nocobase/plugin-data-source-manager": "2.x",
34
37
  "@nocobase/server": "2.x",
35
38
  "@nocobase/test": "2.x"
36
39
  },
@@ -38,6 +41,6 @@
38
41
  "node": "18.18.2",
39
42
  "yarn": "1.22.21"
40
43
  },
41
- "gitHead": "42587115fc34c3eb01ef2b2549f1c998e5708318",
44
+ "gitHead": "bf8fc3790e3494c901b4d22861c5471a0d27c464",
42
45
  "license": "Apache-2.0"
43
46
  }