@nocobase/plugin-user-data-sync 1.4.0-alpha.8 → 1.4.0-beta.1

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.
@@ -7,4 +7,4 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- (function(o,e){typeof exports=="object"&&typeof module!="undefined"?e(exports,require("@nocobase/client"),require("@nocobase/utils/client"),require("react-i18next"),require("react/jsx-runtime"),require("antd"),require("react"),require("@ant-design/icons"),require("@formily/react"),require("@formily/core")):typeof define=="function"&&define.amd?define(["exports","@nocobase/client","@nocobase/utils/client","react-i18next","react/jsx-runtime","antd","react","@ant-design/icons","@formily/react","@formily/core"],e):(o=typeof globalThis!="undefined"?globalThis:o||self,e(o["@nocobase/plugin-user-data-sync"]={},o["@nocobase/client"],o["@nocobase/utils"],o["react-i18next"],o.jsxRuntime,o.antd,o.react,o["@ant-design/icons"],o["@formily/react"],o["@formily/core"]))})(this,function(o,e,c,T,r,m,p,b,l,f){"use strict";var X=Object.defineProperty,Z=Object.defineProperties;var $=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var ee=Object.prototype.hasOwnProperty,te=Object.prototype.propertyIsEnumerable;var k=(o,e,c)=>e in o?X(o,e,{enumerable:!0,configurable:!0,writable:!0,value:c}):o[e]=c,C=(o,e)=>{for(var c in e||(e={}))ee.call(e,c)&&k(o,c,e[c]);if(I)for(var c of I(e))te.call(e,c)&&k(o,c,e[c]);return o},P=(o,e)=>Z(o,$(e));var B=(o,e,c)=>(k(o,typeof e!="symbol"?e+"":e,c),c);var S=(o,e,c)=>new Promise((T,r)=>{var m=l=>{try{b(c.next(l))}catch(f){r(f)}},p=l=>{try{b(c.throw(l))}catch(f){r(f)}},b=l=>l.done?T(l.value):Promise.resolve(l.value).then(m,p);b((c=c.apply(o,e)).next())});const y="user-data-sync";function x(){return T.useTranslation([y,"client"],{nsMode:"fallback"})}const D={name:"userDataSyncSources",sortable:!0,filterTargetKey:"id",fields:[{name:"id",type:"string",interface:"id"},{interface:"input",type:"string",name:"name",uiSchema:{type:"string",title:'{{t("Source name")}}',"x-component":"Input",required:!0}},{interface:"input",type:"string",name:"sourceType",allowNull:!1,uiSchema:{type:"string",title:'{{t("Type")}}',"x-component":"Select",required:!0,dataSource:"{{ types }}"}},{type:"boolean",name:"enabled",uiSchema:{type:"boolean",title:'{{t("Enabled")}}',"x-component":"Checkbox"}}]},w={name:"userDataSyncTasks",filterTargetKey:"id",fields:[{name:"id",type:"bigInt",interface:"id"},{name:"batch",interface:"input",type:"string",allowNull:!1,uiSchema:{type:"string",title:'{{t("Batch")}}',"x-component":"Input",required:!0}},{name:"source",interface:"input",type:"belongsTo",target:"userDataSyncSources",targetKey:"id",foreignKey:"sourceId",allowNull:!1,uiSchema:{type:"object",title:'{{t("Source")}}',"x-component":"AssociationField","x-component-props":{fieldNames:{value:"id",label:"name"}},required:!0,"x-read-pretty":!0}},{name:"status",interface:"input",type:"string",allowNull:!1,uiSchema:{type:"string",title:'{{t("Status")}}',"x-component":"Select",required:!0,enum:[{label:'{{t("Init")}}',value:"init",color:"default"},{label:'{{t("Processing")}}',value:"processing",color:"processing"},{label:'{{t("Success")}}',value:"success",color:"success"},{label:'{{t("Failed")}}',value:"failed",color:"error"}]}},{name:"message",interface:"input",type:"string",allowNull:!0,uiSchema:{type:"string",title:'{{t("Message")}}',"x-component":"Input",required:!1}},{name:"cost",interface:"input",type:"integer",allowNull:!0,uiSchema:{type:"integer",title:'{{t("Cost")}}',"x-component":"InputNumber","x-component-props":{precision:0},required:!1}}]},q={type:"object",properties:{drawer:{type:"void","x-component":"Action.Drawer",title:'{{t("Add new")}}',properties:{form:{type:"void","x-component":"FormV2","x-use-component-props":"useCustomFormProps",properties:{name:{"x-component":"CollectionField","x-decorator":"FormItem"},sourceType:{"x-component":"CollectionField","x-decorator":"FormItem","x-component-props":{options:"{{ types }}"}},enabled:{"x-component":"CollectionField","x-decorator":"FormItem"},options:{type:"object","x-component":"Options"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{submit:{title:'{{t("Submit")}}',"x-component":"Action","x-use-component-props":"useSubmitActionProps","x-component-props":{type:"primary"}}}}}}}}}},V={type:"object",properties:{drawer:{type:"void","x-component":"Action.Drawer",title:'{{ t("Tasks") }}',properties:{table:{type:"void","x-decorator":"TableBlockProvider","x-use-decorator-props":"useTasksTableBlockProps","x-decorator-props":{collection:w.name,dragSort:!1,action:"list",showIndex:!0},properties:{table:{type:"array","x-component":"TableV2","x-use-component-props":"useTableBlockProps","x-component-props":{rowKey:"id"},properties:{batch:{type:"void",title:'{{ t("Batch") }}',"x-component":"TableV2.Column",properties:{batch:{type:"string","x-component":"CollectionField","x-pattern":"readPretty"}}},status:{type:"void",title:'{{ t("Status") }}',"x-component":"TableV2.Column",properties:{status:{type:"string","x-component":"CollectionField","x-pattern":"readPretty"}}},message:{type:"void",title:'{{ t("Message") }}',"x-component":"TableV2.Column",properties:{message:{type:"string","x-component":"Message"}}},actions:{type:"void",title:'{{t("Actions")}}',"x-decorator":"TableV2.Column.ActionBar","x-component":"TableV2.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{split:"|"},properties:{sync:{type:"void",title:'{{ t("Retry") }}',"x-component":"Action.Link","x-use-component-props":"useRetryActionProps","x-display":'{{ $record.status === "failed" ? "visible" : "hidden" }}'}}}}}}}}}}}}},N={type:"void",name:"userDataSyncSources","x-component":"CardItem","x-decorator":"TableBlockProvider","x-decorator-props":{collection:D.name,dragSort:!1,action:"list",params:{pageSize:10},showIndex:!0},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{delete:{type:"void",title:'{{t("Delete")}}',"x-component":"Action","x-use-component-props":"useBulkDestroyActionProps","x-component-props":{icon:"DeleteOutlined",confirm:{title:"{{t('Delete')}}",content:"{{t('Are you sure you want to delete it?')}}"}}},create:{type:"void",title:'{{t("Add new")}}',"x-component":"AddNew","x-component-props":{type:"primary"}}}},table:{type:"array","x-component":"TableV2","x-use-component-props":"useTableBlockProps","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox"}},properties:{name:{type:"void",title:'{{t("Source name")}}',"x-component":"TableV2.Column",properties:{name:{type:"string","x-component":"CollectionField","x-pattern":"readPretty"}}},sourceType:{type:"void",title:'{{t("Type")}}',"x-component":"TableV2.Column",properties:{sourceType:{type:"string","x-component":"Select","x-pattern":"readPretty",enum:"{{ types }}"}}},enabled:{type:"void",title:'{{t("Enabled")}}',"x-component":"TableV2.Column",properties:{enabled:{type:"boolean","x-component":"CollectionField","x-pattern":"readPretty"}}},actions:{type:"void",title:'{{t("Actions")}}',"x-decorator":"TableV2.Column.ActionBar","x-component":"TableV2.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{split:"|"},properties:{sync:{type:"void",title:'{{ t("Sync") }}',"x-component":"Action.Link","x-use-component-props":"useSyncActionProps","x-display":'{{ $record.enabled ? "visible" : "hidden" }}'},tasks:{type:"void",title:'{{ t("Tasks") }}',"x-component":"Tasks","x-component-props":{type:"primary"},"x-display":'{{ $record.enabled ? "visible" : "hidden" }}'},edit:{type:"void",title:'{{t("Configure")}}',"x-component":"Action.Link","x-component-props":{type:"primary",openMode:"drawer"},properties:{drawer:{type:"void","x-component":"Action.Drawer",title:'{{t("Configure")}}',properties:{form:{type:"void","x-component":"FormV2","x-use-component-props":"useEditFormProps",properties:{name:{"x-component":"CollectionField","x-decorator":"FormItem"},sourceType:{"x-component":"CollectionField","x-decorator":"FormItem","x-component-props":{options:"{{ types }}"}},enabled:{"x-component":"CollectionField","x-decorator":"FormItem"},options:{type:"object","x-component":"Options"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{submit:{title:'{{t("Submit")}}',"x-component":"Action","x-use-component-props":"useSubmitActionProps","x-component-props":{type:"primary"}}}}}}}}}},delete:{type:"void",title:'{{ t("Delete") }}',"x-component":"Action.Link","x-use-component-props":"useDeleteActionProps"}}}}}}}}},g=p.createContext({type:""});g.displayName="SourceTypeContext";const v=p.createContext({types:[]});v.displayName="SourceTypesContext";const E=()=>{const{types:t}=p.useContext(v);return t},M=t=>{const n=e.useCollectionRecordData(),s=e.useRequest(()=>Promise.resolve({data:C({},n.options)}),P(C({},t),{manual:!0})),{run:i}=s,a=e.useActionContext();return p.useEffect(()=>{a.visible&&i()},[a.visible,i]),s},K=t=>{var i;const s=e.usePlugin(h).sourceTypes.get(t);return(i=s==null?void 0:s.components)==null?void 0:i.AdminSettingsForm},j=l.observer(()=>{const t=l.useForm(),n=e.useCollectionRecordData(),s=K(t.values.sourceType||n.sourceType);return s?r.jsx(s,{}):null},{displayName:"Options"}),O=()=>{const t=e.useCollectionRecordData();return{form:p.useMemo(()=>f.createForm({values:t}),[])}},_=()=>{const{setVisible:t}=e.useActionContext(),n=l.useForm(),s=e.useDataBlockResource(),{runAsync:i}=e.useDataBlockRequest(),a=e.useCollection();return{type:"primary",onClick(){return S(this,null,function*(){yield n.submit();const u=n.values;u[a.filterTargetKey]?yield s.update({values:u,filterByTk:u[a.filterTargetKey]}):yield s.create({values:u}),yield i(),t(!1)})}}};function z(){const t=e.useCollectionRecordData(),n=e.useDataBlockResource(),s=e.useCollection(),{runAsync:i}=e.useDataBlockRequest(),{t:a}=x();return{confirm:{title:a("Delete",{ns:y}),content:a("Are you sure you want to delete it?",{ns:y})},onClick(){return S(this,null,function*(){yield n.destroy({filterByTk:t[s.filterTargetKey]}),yield i()})}}}function L(){const{message:t}=m.App.useApp(),n=e.useCollectionRecordData(),s=e.useAPIClient(),{runAsync:i}=e.useDataBlockRequest(),{t:a}=x();return{onClick(){return S(this,null,function*(){yield s.resource("userData").pull({name:n.name}),yield i(),t.success(a("The synchronization has started. You can click on 'Tasks' to view the synchronization status.",{ns:y}))})}}}const U=()=>{const{type:t}=p.useContext(g);return{form:p.useMemo(()=>f.createForm({initialValues:{sourceType:t}}),[])}},R=()=>{const t=e.useCollectionRecordData(),n=e.useCollection();return{params:{pageSize:20,filter:{sourceId:t[n.filterTargetKey]},sort:["-sort"]}}};function G(){m.App.useApp();const t=e.useCollectionRecordData(),n=e.useCollection(),s=e.useAPIClient(),{runAsync:i}=e.useDataBlockRequest();return x(),{onClick(){return S(this,null,function*(){yield s.resource("userData").retry({id:t[n.filterTargetKey],sourceId:t.sourceId}),yield i()})}}}const Y=()=>{const{t}=x(),n=e.useAPIClient(),[s,i]=p.useState(!1),[a,A]=p.useState(""),u=E(),d=u.map(F=>P(C({},F),{onClick:()=>{i(!0),A(F.value)}})),W=[{key:"__empty__",label:r.jsx(m.Empty,{image:m.Empty.PRESENTED_IMAGE_SIMPLE,description:r.jsxs(r.Fragment,{children:[t("No user data source plugin installed",{ns:y}),r.jsx("br",{})," ",r.jsx("a",{target:"_blank",href:n.auth.locale==="zh-CN"?"https://docs-cn.nocobase.com/handbook/user-data-sync":"https://docs.nocobase.com/handbook/user-data-sync",rel:"noreferrer",children:t("View documentation",{ns:y})})]})}),onClick:()=>{}}];return r.jsx(e.ActionContextProvider,{value:{visible:s,setVisible:i},children:r.jsxs(g.Provider,{value:{type:a},children:[r.jsx(m.Dropdown,{menu:{items:d&&d.length>0?d:W},children:r.jsxs(m.Button,{icon:r.jsx(b.PlusOutlined,{}),type:"primary",children:[t("Add new")," ",r.jsx(b.DownOutlined,{})]})}),r.jsx(e.SchemaComponent,{scope:{types:u,setType:A,useCustomFormProps:U},schema:q})]})})},H=()=>{const{t}=x(),n=e.useCollectionRecordData();return r.jsx(e.ReadPretty.Input,{value:t(n.message),ellipsis:!0})},J=()=>{const{t}=x(),[n,s]=p.useState(!1);return r.jsxs(e.ActionContextProvider,{value:{visible:n,setVisible:s},children:[r.jsx(m.Button,{type:"link",onClick:()=>{s(!0)},children:t("Tasks")}),r.jsx(e.ExtendCollectionsProvider,{collections:[w],children:r.jsx(e.SchemaComponent,{scope:{useRetryActionProps:G,useTasksTableBlockProps:R,t},components:{Message:H},schema:V})})]})},Q=()=>{const{t}=x(),[n,s]=p.useState([]),i=e.useAPIClient();return e.useRequest(()=>i.resource("userData").listSyncTypes().then(a=>{var u;return(((u=a==null?void 0:a.data)==null?void 0:u.data)||[]).map(d=>({key:d.name,label:l.Schema.compile(d.title||d.name,{t}),value:d.name}))}),{onSuccess:a=>{s(a)}}),r.jsx(v.Provider,{value:{types:n},children:r.jsx(e.ExtendCollectionsProvider,{collections:[D],children:r.jsx(e.SchemaComponent,{schema:N,components:{AddNew:Y,Options:j,Tasks:J},scope:{types:n,t,useEditFormProps:O,useSubmitActionProps:_,useDeleteActionProps:z,useSyncActionProps:L,useValuesFromOptions:M}})})})};class h extends e.Plugin{constructor(){super(...arguments);B(this,"sourceTypes",new c.Registry)}registerType(s,i){this.sourceTypes.register(s,i)}load(){return S(this,null,function*(){this.app.pluginSettingsManager.add("users-permissions.sync",{title:c.tval("Synchronize",{ns:y}),icon:"SyncOutlined",Component:Q,sort:99,aclSnippet:"pm.user-data-sync"})})}}o.PluginUserDataSyncClient=h,o.default=h,Object.defineProperties(o,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
10
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react-i18next"),require("@ant-design/icons"),require("@formily/react"),require("@nocobase/utils/client"),require("@formily/core"),require("@nocobase/client"),require("react"),require("antd")):"function"==typeof define&&define.amd?define("@nocobase/plugin-user-data-sync",["react-i18next","@ant-design/icons","@formily/react","@nocobase/utils/client","@formily/core","@nocobase/client","react","antd"],t):"object"==typeof exports?exports["@nocobase/plugin-user-data-sync"]=t(require("react-i18next"),require("@ant-design/icons"),require("@formily/react"),require("@nocobase/utils/client"),require("@formily/core"),require("@nocobase/client"),require("react"),require("antd")):e["@nocobase/plugin-user-data-sync"]=t(e["react-i18next"],e["@ant-design/icons"],e["@formily/react"],e["@nocobase/utils/client"],e["@formily/core"],e["@nocobase/client"],e.react,e.antd)}(self,function(e,t,n,o,r,i,c,a){return function(){"use strict";var u={482:function(e){e.exports=t},563:function(e){e.exports=r},505:function(e){e.exports=n},772:function(e){e.exports=i},584:function(e){e.exports=o},721:function(e){e.exports=a},156:function(e){e.exports=c},238:function(t){t.exports=e}},s={};function l(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}};return u[e](n,n.exports,l),n.exports}l.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(t,{a:t}),t},l.d=function(e,t){for(var n in t)l.o(t,n)&&!l.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var p={};l.r(p),l.d(p,{PluginUserDataSyncClient:function(){return eo},default:function(){return er}});var y=l("772"),m=l("584"),f=l("238"),d="user-data-sync";function b(){return(0,f.useTranslation)([d,"client"],{nsMode:"fallback"})}var v=l("721"),x=l("156"),g=l.n(x),h={name:"userDataSyncSources",sortable:!0,filterTargetKey:"id",fields:[{name:"id",type:"string",interface:"id"},{interface:"input",type:"string",name:"name",uiSchema:{type:"string",title:'{{t("Source name")}}',"x-component":"Input",required:!0}},{interface:"input",type:"string",name:"sourceType",allowNull:!1,uiSchema:{type:"string",title:'{{t("Type")}}',"x-component":"Select",required:!0,dataSource:"{{ types }}"}},{type:"boolean",name:"enabled",uiSchema:{type:"boolean",title:'{{t("Enabled")}}',"x-component":"Checkbox"}}]},S={name:"userDataSyncTasks",filterTargetKey:"id",fields:[{name:"id",type:"bigInt",interface:"id"},{name:"batch",interface:"input",type:"string",allowNull:!1,uiSchema:{type:"string",title:'{{t("Batch")}}',"x-component":"Input",required:!0}},{name:"source",interface:"input",type:"belongsTo",target:"userDataSyncSources",targetKey:"id",foreignKey:"sourceId",allowNull:!1,uiSchema:{type:"object",title:'{{t("Source")}}',"x-component":"AssociationField","x-component-props":{fieldNames:{value:"id",label:"name"}},required:!0,"x-read-pretty":!0}},{name:"status",interface:"input",type:"string",allowNull:!1,uiSchema:{type:"string",title:'{{t("Status")}}',"x-component":"Select",required:!0,enum:[{label:'{{t("Init")}}',value:"init",color:"default"},{label:'{{t("Processing")}}',value:"processing",color:"processing"},{label:'{{t("Success")}}',value:"success",color:"success"},{label:'{{t("Failed")}}',value:"failed",color:"error"}]}},{name:"message",interface:"input",type:"string",allowNull:!0,uiSchema:{type:"string",title:'{{t("Message")}}',"x-component":"Input",required:!1}},{name:"cost",interface:"input",type:"integer",allowNull:!0,uiSchema:{type:"integer",title:'{{t("Cost")}}',"x-component":"InputNumber","x-component-props":{precision:0},required:!1}}]},w={type:"object",properties:{drawer:{type:"void","x-component":"Action.Drawer",title:'{{t("Add new")}}',properties:{form:{type:"void","x-component":"FormV2","x-use-component-props":"useCustomFormProps",properties:{name:{"x-component":"CollectionField","x-decorator":"FormItem"},sourceType:{"x-component":"CollectionField","x-decorator":"FormItem","x-component-props":{options:"{{ types }}"}},enabled:{"x-component":"CollectionField","x-decorator":"FormItem"},options:{type:"object","x-component":"Options"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{submit:{title:'{{t("Submit")}}',"x-component":"Action","x-use-component-props":"useSubmitActionProps","x-component-props":{type:"primary"}}}}}}}}}},P={type:"object",properties:{drawer:{type:"void","x-component":"Action.Drawer",title:'{{ t("Tasks") }}',properties:{table:{type:"void","x-decorator":"TableBlockProvider","x-use-decorator-props":"useTasksTableBlockProps","x-decorator-props":{collection:S.name,dragSort:!1,action:"list",showIndex:!0},properties:{table:{type:"array","x-component":"TableV2","x-use-component-props":"useTableBlockProps","x-component-props":{rowKey:"id"},properties:{batch:{type:"void",title:'{{ t("Batch") }}',"x-component":"TableV2.Column",properties:{batch:{type:"string","x-component":"CollectionField","x-pattern":"readPretty"}}},status:{type:"void",title:'{{ t("Status") }}',"x-component":"TableV2.Column",properties:{status:{type:"string","x-component":"CollectionField","x-pattern":"readPretty"}}},message:{type:"void",title:'{{ t("Message") }}',"x-component":"TableV2.Column",properties:{message:{type:"string","x-component":"Message"}}},actions:{type:"void",title:'{{t("Actions")}}',"x-decorator":"TableV2.Column.ActionBar","x-component":"TableV2.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{split:"|"},properties:{sync:{type:"void",title:'{{ t("Retry") }}',"x-component":"Action.Link","x-use-component-props":"useRetryActionProps","x-display":'{{ $record.status === "failed" ? "visible" : "hidden" }}'}}}}}}}}}}}}},O={type:"void",name:"userDataSyncSources","x-component":"CardItem","x-decorator":"TableBlockProvider","x-decorator-props":{collection:h.name,dragSort:!1,action:"list",params:{pageSize:10},showIndex:!0},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{delete:{type:"void",title:'{{t("Delete")}}',"x-component":"Action","x-use-component-props":"useBulkDestroyActionProps","x-component-props":{icon:"DeleteOutlined",confirm:{title:"{{t('Delete')}}",content:"{{t('Are you sure you want to delete it?')}}"}}},create:{type:"void",title:'{{t("Add new")}}',"x-component":"AddNew","x-component-props":{type:"primary"}}}},table:{type:"array","x-component":"TableV2","x-use-component-props":"useTableBlockProps","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox"}},properties:{name:{type:"void",title:'{{t("Source name")}}',"x-component":"TableV2.Column",properties:{name:{type:"string","x-component":"CollectionField","x-pattern":"readPretty"}}},sourceType:{type:"void",title:'{{t("Type")}}',"x-component":"TableV2.Column",properties:{sourceType:{type:"string","x-component":"Select","x-pattern":"readPretty",enum:"{{ types }}"}}},enabled:{type:"void",title:'{{t("Enabled")}}',"x-component":"TableV2.Column",properties:{enabled:{type:"boolean","x-component":"CollectionField","x-pattern":"readPretty"}}},actions:{type:"void",title:'{{t("Actions")}}',"x-decorator":"TableV2.Column.ActionBar","x-component":"TableV2.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{split:"|"},properties:{sync:{type:"void",title:'{{ t("Sync") }}',"x-component":"Action.Link","x-use-component-props":"useSyncActionProps","x-display":'{{ $record.enabled ? "visible" : "hidden" }}'},tasks:{type:"void",title:'{{ t("Tasks") }}',"x-component":"Tasks","x-component-props":{type:"primary"},"x-display":'{{ $record.enabled ? "visible" : "hidden" }}'},edit:{type:"void",title:'{{t("Configure")}}',"x-component":"Action.Link","x-component-props":{type:"primary",openMode:"drawer"},properties:{drawer:{type:"void","x-component":"Action.Drawer",title:'{{t("Configure")}}',properties:{form:{type:"void","x-component":"FormV2","x-use-component-props":"useEditFormProps",properties:{name:{"x-component":"CollectionField","x-decorator":"FormItem"},sourceType:{"x-component":"CollectionField","x-decorator":"FormItem","x-component-props":{options:"{{ types }}"}},enabled:{"x-component":"CollectionField","x-decorator":"FormItem"},options:{type:"object","x-component":"Options"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{submit:{title:'{{t("Submit")}}',"x-component":"Action","x-use-component-props":"useSubmitActionProps","x-component-props":{type:"primary"}}}}}}}}}},delete:{type:"void",title:'{{ t("Delete") }}',"x-component":"Action.Link","x-use-component-props":"useDeleteActionProps"}}}}}}}}},C=l("482"),T=(0,x.createContext)({type:""});T.displayName="SourceTypeContext";var k=(0,x.createContext)({types:[]});k.displayName="SourceTypesContext";var A=l("505");function j(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),o.forEach(function(t){var o,r,i;o=e,r=t,i=n[t],r in o?Object.defineProperty(o,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):o[r]=i})}return e}var D=function(e){var t,n,o=(0,y.useCollectionRecordData)();var r=(0,y.useRequest)(function(){return Promise.resolve({data:j({},o.options)})},(t=j({},e),n=(n={manual:!0},n),Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n.push.apply(n,o)}return n})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t)),i=r.run,c=(0,y.useActionContext)();return(0,x.useEffect)(function(){c.visible&&i()},[c.visible,i]),r},E=function(e){var t,n=(0,y.usePlugin)(er).sourceTypes.get(e);return null==n?void 0:null===(t=n.components)||void 0===t?void 0:t.AdminSettingsForm},F=(0,A.observer)(function(){var e=(0,A.useForm)(),t=(0,y.useCollectionRecordData)(),n=E(e.values.sourceType||t.sourceType);return n?g().createElement(n,null):null},{displayName:"Options"}),q=l("563");function I(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function R(e,t,n,o,r,i,c){try{var a=e[i](c),u=a.value}catch(e){n(e);return}a.done?t(u):Promise.resolve(u).then(o,r)}function B(e){return function(){var t=this,n=arguments;return new Promise(function(o,r){var i=e.apply(t,n);function c(e){R(i,o,r,c,a,"next",e)}function a(e){R(i,o,r,c,a,"throw",e)}c(void 0)})}}function V(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,o,r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var i=[],c=!0,a=!1;try{for(r=r.call(e);!(c=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);c=!0);}catch(e){a=!0,o=e}finally{try{!c&&null!=r.return&&r.return()}finally{if(a)throw o}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return I(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return I(e,t)}}(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 _(e,t){var n,o,r,i,c={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw TypeError("Generator is already executing.");for(;c;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return c.label++,{value:i[1],done:!1};case 5:c.label++,o=i[1],i=[0];continue;case 7:i=c.ops.pop(),c.trys.pop();continue;default:if(!(r=(r=c.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){c=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){c.label=i[1];break}if(6===i[0]&&c.label<r[1]){c.label=r[1],r=i;break}if(r&&c.label<r[2]){c.label=r[2],c.ops.push(i);break}r[2]&&c.ops.pop(),c.trys.pop();continue}i=t.call(e,c)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}var M=function(){var e=(0,y.useCollectionRecordData)();return{form:(0,x.useMemo)(function(){return(0,q.createForm)({values:e})},[])}},N=function(){var e=(0,y.useActionContext)().setVisible,t=(0,A.useForm)(),n=(0,y.useDataBlockResource)(),o=(0,y.useDataBlockRequest)().runAsync,r=(0,y.useCollection)();return{type:"primary",onClick:function(){return B(function(){var i;return _(this,function(c){switch(c.label){case 0:return[4,t.submit()];case 1:if(c.sent(),!(i=t.values)[r.filterTargetKey])return[3,3];return[4,n.update({values:i,filterByTk:i[r.filterTargetKey]})];case 2:return c.sent(),[3,5];case 3:return[4,n.create({values:i})];case 4:c.sent(),c.label=5;case 5:return[4,o()];case 6:return c.sent(),e(!1),[2]}})})()}}};function K(){var e=(0,y.useCollectionRecordData)(),t=(0,y.useDataBlockResource)(),n=(0,y.useCollection)(),o=(0,y.useDataBlockRequest)().runAsync,r=b().t;return{confirm:{title:r("Delete",{ns:d}),content:r("Are you sure you want to delete it?",{ns:d})},onClick:function(){return B(function(){return _(this,function(r){switch(r.label){case 0:return[4,t.destroy({filterByTk:e[n.filterTargetKey]})];case 1:return r.sent(),[4,o()];case 2:return r.sent(),[2]}})})()}}}function z(){var e=v.App.useApp().message,t=(0,y.useCollectionRecordData)(),n=(0,y.useAPIClient)(),o=(0,y.useDataBlockRequest)().runAsync,r=b().t;return{onClick:function(){return B(function(){return _(this,function(i){switch(i.label){case 0:return[4,n.resource("userData").pull({name:t.name})];case 1:return i.sent(),[4,o()];case 2:return i.sent(),e.success(r("The synchronization has started. You can click on 'Tasks' to view the synchronization status.",{ns:d})),[2]}})})()}}}var L=function(){var e=(0,x.useContext)(T).type;return{form:(0,x.useMemo)(function(){return(0,q.createForm)({initialValues:{sourceType:e}})},[])}},$=function(){return{params:{pageSize:20,filter:{sourceId:(0,y.useCollectionRecordData)()[(0,y.useCollection)().filterTargetKey]},sort:["-sort"]}}};function G(){v.App.useApp().message;var e=(0,y.useCollectionRecordData)(),t=(0,y.useCollection)(),n=(0,y.useAPIClient)(),o=(0,y.useDataBlockRequest)().runAsync;return b().t,{onClick:function(){return B(function(){return _(this,function(r){switch(r.label){case 0:return[4,n.resource("userData").retry({id:e[t.filterTargetKey],sourceId:e.sourceId})];case 1:return r.sent(),[4,o()];case 2:return r.sent(),[2]}})})()}}}var U=function(){var e=b().t,t=(0,y.useAPIClient)(),n=V((0,x.useState)(!1),2),o=n[0],r=n[1],i=V((0,x.useState)(""),2),c=i[0],a=i[1],u=(0,x.useContext)(k).types,s=u.map(function(e){var t,n;return t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),o.forEach(function(t){var o,r,i;o=e,r=t,i=n[t],r in o?Object.defineProperty(o,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):o[r]=i})}return e}({},e),n=(n={onClick:function(){r(!0),a(e.value)}},n),Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n.push.apply(n,o)}return n})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t}),l=[{key:"__empty__",label:g().createElement(v.Empty,{image:v.Empty.PRESENTED_IMAGE_SIMPLE,description:g().createElement(g().Fragment,null,e("No user data source plugin installed",{ns:d}),g().createElement("br",null)," ",g().createElement("a",{target:"_blank",href:"zh-CN"===t.auth.locale?"https://docs-cn.nocobase.com/handbook/user-data-sync":"https://docs.nocobase.com/handbook/user-data-sync",rel:"noreferrer"},e("View documentation",{ns:d})))}),onClick:function(){}}];return g().createElement(y.ActionContextProvider,{value:{visible:o,setVisible:r}},g().createElement(T.Provider,{value:{type:c}},g().createElement(v.Dropdown,{menu:{items:s&&s.length>0?s:l}},g().createElement(v.Button,{icon:g().createElement(C.PlusOutlined,null),type:"primary"},e("Add new")," ",g().createElement(C.DownOutlined,null))),g().createElement(y.SchemaComponent,{scope:{types:u,setType:a,useCustomFormProps:L},schema:w})))},Y=function(){var e=b().t,t=(0,y.useCollectionRecordData)();return g().createElement(y.ReadPretty.Input,{value:e(t.message),ellipsis:!0})},H=function(){var e=b().t,t=V((0,x.useState)(!1),2),n=t[0],o=t[1];return g().createElement(y.ActionContextProvider,{value:{visible:n,setVisible:o}},g().createElement(v.Button,{type:"link",onClick:function(){o(!0)}},e("Tasks")),g().createElement(y.ExtendCollectionsProvider,{collections:[S]},g().createElement(y.SchemaComponent,{scope:{useRetryActionProps:G,useTasksTableBlockProps:$,t:e},components:{Message:Y},schema:P})))},J=function(){var e=b().t,t=V((0,x.useState)([]),2),n=t[0],o=t[1],r=(0,y.useAPIClient)();return(0,y.useRequest)(function(){return r.resource("userData").listSyncTypes().then(function(t){var n;return((null==t?void 0:null===(n=t.data)||void 0===n?void 0:n.data)||[]).map(function(t){return{key:t.name,label:A.Schema.compile(t.title||t.name,{t:e}),value:t.name}})})},{onSuccess:function(e){o(e)}}),g().createElement(k.Provider,{value:{types:n}},g().createElement(y.ExtendCollectionsProvider,{collections:[h]},g().createElement(y.SchemaComponent,{schema:O,components:{AddNew:U,Options:F,Tasks:H},scope:{types:n,t:e,useEditFormProps:M,useSubmitActionProps:N,useDeleteActionProps:K,useSyncActionProps:z,useValuesFromOptions:D}})))};function Q(e,t,n,o,r,i,c){try{var a=e[i](c),u=a.value}catch(e){n(e);return}a.done?t(u):Promise.resolve(u).then(o,r)}function W(e,t,n){return(W=en()?Reflect.construct:function(e,t,n){var o=[null];o.push.apply(o,t);var r=new(Function.bind.apply(e,o));return n&&ee(r,n.prototype),r}).apply(null,arguments)}function X(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function Z(e){return(Z=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ee(e,t){return(ee=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function et(e){var t="function"==typeof Map?new Map:void 0;return(et=function(e){var n;if(null===e||(n=e,-1===Function.toString.call(n).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,o)}function o(){return W(e,arguments,Z(this).constructor)}return o.prototype=Object.create(e.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),ee(o,e)})(e)}function en(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(en=function(){return!!e})()}var eo=function(e){var t,n,o;function r(){var e,t,n,o,i,c,a;return!function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}(this,r),t=this,n=r,o=arguments,n=Z(n),i=e=function(e,t){return t&&("object"===function(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}(t)||"function"==typeof t)?t:function(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(t,en()?Reflect.construct(n,o||[],Z(t).constructor):n.apply(t,o)),c="sourceTypes",a=new m.Registry,c in i?Object.defineProperty(i,c,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[c]=a,e}return!function(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ee(e,t)}(r,e),t=r,n=[{key:"registerType",value:function(e,t){this.sourceTypes.register(e,t)}},{key:"load",value:function(){var e,t=this;return(e=function(){return function(e,t){var n,o,r,i,c={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw TypeError("Generator is already executing.");for(;c;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return c.label++,{value:i[1],done:!1};case 5:c.label++,o=i[1],i=[0];continue;case 7:i=c.ops.pop(),c.trys.pop();continue;default:if(!(r=(r=c.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){c=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){c.label=i[1];break}if(6===i[0]&&c.label<r[1]){c.label=r[1],r=i;break}if(r&&c.label<r[2]){c.label=r[2],c.ops.push(i);break}r[2]&&c.ops.pop(),c.trys.pop();continue}i=t.call(e,c)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}(this,function(e){return t.app.pluginSettingsManager.add("users-permissions.sync",{title:(0,m.tval)("Synchronize",{ns:d}),icon:"SyncOutlined",Component:J,sort:99,aclSnippet:"pm.user-data-sync"}),[2]})},function(){var t=this,n=arguments;return new Promise(function(o,r){var i=e.apply(t,n);function c(e){Q(i,o,r,c,a,"next",e)}function a(e){Q(i,o,r,c,a,"throw",e)}c(void 0)})})()}}],X(t.prototype,n),r}(et(y.Plugin)),er=eo;return p}()});
@@ -10,15 +10,15 @@
10
10
  module.exports = {
11
11
  "react": "18.2.0",
12
12
  "@formily/react": "2.3.0",
13
- "@nocobase/client": "1.4.0-alpha.8",
13
+ "@nocobase/client": "1.4.0-beta.1",
14
14
  "antd": "5.12.8",
15
15
  "@ant-design/icons": "5.2.6",
16
16
  "@formily/core": "2.3.0",
17
- "@nocobase/utils": "1.4.0-alpha.8",
18
- "@nocobase/server": "1.4.0-alpha.8",
19
- "@nocobase/logger": "1.4.0-alpha.8",
20
- "@nocobase/actions": "1.4.0-alpha.8",
17
+ "@nocobase/utils": "1.4.0-beta.1",
18
+ "@nocobase/server": "1.4.0-beta.1",
19
+ "@nocobase/logger": "1.4.0-beta.1",
20
+ "@nocobase/actions": "1.4.0-beta.1",
21
21
  "dayjs": "1.11.10",
22
- "@nocobase/database": "1.4.0-alpha.8",
22
+ "@nocobase/database": "1.4.0-beta.1",
23
23
  "react-i18next": "11.18.6"
24
24
  };
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName.zh-CN": "用户数据同步",
5
5
  "description": "Provide user data source management and user data synchronization interface. The data source can be DingTalk, WeCom, etc., and can be expanded.",
6
6
  "description.zh-CN": "提供用户数据源管理,用户数据同步接口,数据源可为钉钉、企业微信等,可扩展。",
7
- "version": "1.4.0-alpha.8",
7
+ "version": "1.4.0-beta.1",
8
8
  "main": "dist/server/index.js",
9
9
  "peerDependencies": {
10
10
  "@nocobase/client": "1.x",
@@ -14,5 +14,5 @@
14
14
  "keywords": [
15
15
  "Users & permissions"
16
16
  ],
17
- "gitHead": "aa36bd20b2028c5e133a59e922c2f1ab22c86dde"
17
+ "gitHead": "1ece4e558ba445088dbb658bd458eb0004295326"
18
18
  }