@nocobase/plugin-multi-app-manager 1.5.0-beta.2 → 1.5.0-beta.20

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.
@@ -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
+ "use strict";(self.webpackChunk_nocobase_plugin_multi_app_manager=self.webpackChunk_nocobase_plugin_multi_app_manager||[]).push([["970"],{660:function(e,n,r){r.r(n),r.d(n,{AppManager:function(){return s}});var a=r(772),t=r(721),c=r(156),o=r.n(c),u=r(888),p=r(109),i=function(){var e=(0,a.useRecord)(),n=(0,a.useApp)();return e.cname?"//".concat(e.cname):n.getRouteUrl("/apps/".concat(e.name,"/admin/"))},m=function(){var e=(0,p.g)().t,n=i();return o().createElement("a",{href:n,target:"_blank",rel:"noreferrer"},e("View",{ns:"client"}))},s=function(){return o().createElement(t.Card,{bordered:!1},o().createElement(a.SchemaComponent,{schema:u.fK,components:{AppVisitor:m}}))}}}]);
@@ -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("react/jsx-runtime"),require("antd"),require("react-router-dom"),require("@formily/react"),require("antd-style"),require("react-i18next"),require("@formily/shared"),require("@nocobase/utils/client"),require("react")):typeof define=="function"&&define.amd?define(["exports","@nocobase/client","react/jsx-runtime","antd","react-router-dom","@formily/react","antd-style","react-i18next","@formily/shared","@nocobase/utils/client","react"],e):(o=typeof globalThis!="undefined"?globalThis:o||self,e(o["@nocobase/plugin-multi-app-manager"]={},o["@nocobase/client"],o.jsxRuntime,o.antd,o["react-router-dom"],o["@formily/react"],o["antd-style"],o["react-i18next"],o["@formily/shared"],o["@nocobase/utils"],o.react))})(this,function(o,e,n,c,m,d,y,l,i,a,T){"use strict";var z=Object.defineProperty,B=Object.defineProperties;var K=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable;var F=(o,e,n)=>e in o?z(o,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):o[e]=n,x=(o,e)=>{for(var n in e||(e={}))L.call(e,n)&&F(o,n,e[n]);if(M)for(var n of M(e))U.call(e,n)&&F(o,n,e[n]);return o},g=(o,e)=>B(o,K(e));var v=(o,e,n)=>new Promise((c,m)=>{var d=i=>{try{l(n.next(i))}catch(a){m(a)}},y=i=>{try{l(n.throw(i))}catch(a){m(a)}},l=i=>i.done?c(i.value):Promise.resolve(i.value).then(d,y);l((n=n.apply(o,e)).next())});const k=t=>{const r=e.useApp(),u=t.value&&n.jsx("a",{target:"_blank",href:r.getRouteUrl(`/apps/${t.value}/admin`),rel:"noreferrer",children:t.value});return n.jsxs("div",{style:t.style,children:[t.addonBefore,t.prefix,u,t.suffix,t.addonAfter]})},q=d.connect(c.Input,d.mapReadPretty(k)),I=y.createStyles(({token:t})=>({button:{color:t.colorTextHeaderMenu+" !important"}})),b=()=>{const{t}=l.useTranslation("multi-app-manager");return{t}},s=t=>`{{t("${t}", { ns: 'multi-app-manager' })}}`,N=()=>{const{styles:t}=I(),{data:r,run:u}=e.useRequest({resource:"applications",action:"listPinned"},{manual:!0}),{t:f}=b(),P=e.useApp(),$=[...((r==null?void 0:r.data)||[]).map(p=>{let w=P.getRouteUrl(`/apps/${p.name}/admin/`);return p.cname&&(w=`//${p.cname}`),{key:p.name,label:n.jsx("a",{href:w,target:"_blank",rel:"noopener noreferrer",children:p.displayName||p.name})}}),{key:".manager",label:n.jsx(m.Link,{to:P.pluginSettingsManager.getRoutePath("multi-app-manager"),children:f("Manage applications")})}];return n.jsx(c.Dropdown,{onOpenChange:p=>{u()},menu:{items:$},children:n.jsx(c.Button,{className:t.button,title:"Apps",icon:n.jsx(e.Icon,{type:"AppstoreOutlined"})})})},O=t=>n.jsx(e.PinnedPluginListProvider,{items:{am:{order:201,component:"MultiAppManager",pin:!0}},children:n.jsx(e.SchemaComponentOptions,{components:{MultiAppManager:N,AppNameInput:q},children:t.children})}),h={name:"applications",targetKey:"name",fields:[{type:"uid",name:"name",primaryKey:!0,prefix:"a",interface:"input",uiSchema:{type:"string",title:s("App ID"),required:!0,"x-component":"Input","x-validator":"uid"}},{type:"string",name:"displayName",interface:"input",uiSchema:{type:"string",title:s("App display name"),required:!0,"x-component":"Input"}},{type:"string",name:"pinned",interface:"checkbox",uiSchema:{type:"boolean","x-content":s("Pin to menu"),"x-component":"Checkbox"}},{type:"string",name:"status",interface:"radioGroup",defaultValue:"pending",uiSchema:{type:"string",title:s("App status"),enum:[{label:"Initializing",value:"initializing"},{label:"Initialized",value:"initialized"},{label:"Running",value:"running"},{label:"Commanding",value:"commanding"},{label:"Stopped",value:"stopped"},{label:"Error",value:"error"},{label:"Not found",value:"not_found"}],"x-component":"Radio.Group"}}]},R=()=>{const{state:t,setState:r,refresh:u}=e.useResourceActionContext(),{resource:f}=e.useResourceContext();return{run(){return v(this,null,function*(){yield f.destroy({filterByTk:(t==null?void 0:t.selectedRowKeys)||[]}),r==null||r({selectedRowKeys:[]}),u()})}}},A={type:"void","x-component":"div",properties:{displayName:{"x-component":"CollectionField","x-decorator":"FormItem"},name:{"x-component":"CollectionField","x-decorator":"FormItem","x-disabled":"{{ !createOnly }}"},"options.autoStart":{title:a.tval("Start mode",{ns:"@nocobase/plugin-multi-app-manager"}),"x-component":"Radio.Group","x-decorator":"FormItem",default:!1,enum:[{label:a.tval("Start on first visit",{ns:"@nocobase/plugin-multi-app-manager"}),value:!1},{label:a.tval("Start with main application",{ns:"@nocobase/plugin-multi-app-manager"}),value:!0}]},cname:{title:s("Custom domain"),"x-component":"Input","x-decorator":"FormItem"},pinned:{"x-component":"CollectionField","x-decorator":"FormItem"}}},C={properties:{view:{type:"void","x-component":"AppVisitor","x-component-props":{}},update:{type:"void",title:'{{t("Edit")}}',"x-component":"Action.Link","x-component-props":{},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:"{{ cm.useValuesFromRecord }}"},title:'{{t("Edit")}}',properties:{formSchema:A,footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useUpdateAction }}"}}}}}}}},delete:{type:"void",title:'{{ t("Delete") }}',"x-component":"Action.Link","x-component-props":{confirm:{title:"{{t('Delete')}}",content:"{{t('Are you sure you want to delete it?')}}"},useAction:"{{cm.useDestroyAction}}"}}}},V={type:"object",properties:{[i.uid()]:{type:"void","x-decorator":"ResourceActionProvider","x-decorator-props":{collection:h,resourceName:"applications",request:{resource:"applications",action:"list",params:{pageSize:50,sort:["-createdAt"],appends:[]}}},"x-component":"CollectionProvider_deprecated","x-component-props":{collection:h},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{delete:{type:"void",title:'{{ t("Delete") }}',"x-component":"Action","x-component-props":{icon:"DeleteOutlined",useAction:R,confirm:{title:"{{t('Delete')}}",content:"{{t('Are you sure you want to delete it?')}}"}}},create:{type:"void",title:'{{t("Add new")}}',"x-decorator":t=>T.createElement(e.SchemaComponentOptions,g(x({},t),{scope:{createOnly:!0}})),"x-component":"Action","x-component-props":{type:"primary",icon:"PlusOutlined"},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues(t){const r=e.useActionContext();return e.useRequest(()=>Promise.resolve({data:{name:`a_${i.uid()}`}}),g(x({},t),{refreshDeps:[r.visible]}))}},title:'{{t("Add new")}}',properties:{formSchema:A,footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useCreateAction }}"}}}}}}}}}},table:{type:"void","x-uid":"input","x-component":"Table.Void","x-component-props":{rowKey:"name",rowSelection:{type:"checkbox"},useDataSource:"{{ cm.useDataSourceFromRAC }}"},properties:{displayName:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{displayName:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},name:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{name:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},pinned:{type:"void",title:s("Pin to menu"),"x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{pinned:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},status:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{status:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},actions:{type:"void",title:'{{t("Actions")}}',"x-component":"Table.Column",properties:{actions:x({type:"void","x-component":"Space","x-component-props":{split:"|"}},C)}}}}}}}},_=()=>{const t=e.useRecord(),r=e.useApp();return t.cname?`//${t.cname}`:r.getRouteUrl(`/apps/${t.name}/admin/`)},j=()=>{const{t}=b(),r=_();return n.jsx("a",{href:r,target:"_blank",rel:"noreferrer",children:t("View",{ns:"client"})})},E=()=>n.jsx(c.Card,{bordered:!1,children:n.jsx(e.SchemaComponent,{schema:V,components:{AppVisitor:j}})}),S="multi-app-manager";class D extends e.Plugin{load(){return v(this,null,function*(){this.app.use(O),this.app.pluginSettingsManager.add(S,{title:`{{t("Multi-app manager", { ns: "${S}" })}}`,icon:"AppstoreOutlined",Component:E,aclSnippet:"pm.multi-app-manager.applications"})})}}o.PluginMultiAppManagerClient=D,o.default=D,o.formSchema=A,o.tableActionColumnSchema=C,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("@formily/shared"),require("@nocobase/utils/client"),require("@nocobase/client"),require("antd"),require("@formily/react"),require("antd-style"),require("react-router-dom"),require("react")):"function"==typeof define&&define.amd?define("@nocobase/plugin-multi-app-manager",["react-i18next","@formily/shared","@nocobase/utils/client","@nocobase/client","antd","@formily/react","antd-style","react-router-dom","react"],t):"object"==typeof exports?exports["@nocobase/plugin-multi-app-manager"]=t(require("react-i18next"),require("@formily/shared"),require("@nocobase/utils/client"),require("@nocobase/client"),require("antd"),require("@formily/react"),require("antd-style"),require("react-router-dom"),require("react")):e["@nocobase/plugin-multi-app-manager"]=t(e["react-i18next"],e["@formily/shared"],e["@nocobase/utils/client"],e["@nocobase/client"],e.antd,e["@formily/react"],e["antd-style"],e["react-router-dom"],e.react)}(self,function(e,t,n,r,o,i,a,c,u){return function(){var p,l,s,f,m,d,y={109:function(e,t,n){"use strict";n.d(t,{W:function(){return i},g:function(){return o}});var r=n(238),o=function(){return{t:(0,r.useTranslation)("multi-app-manager").t}},i=function(e){return'{{t("'.concat(e,"\", { ns: 'multi-app-manager' })}}")}},888:function(e,t,n){"use strict";n.d(t,{fK:function(){return b},kn:function(){return d},vh:function(){return y}});var r=n(875),o=n(584),i=n(772),a=n(156),c=n.n(a),u=n(109);function p(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(e){n(e);return}c.done?t(u):Promise.resolve(u).then(r,o)}function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){l(e,t,n[t])})}return e}function f(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}var m={name:"applications",targetKey:"name",fields:[{type:"uid",name:"name",primaryKey:!0,prefix:"a",interface:"input",uiSchema:{type:"string",title:(0,u.W)("App ID"),required:!0,"x-component":"Input","x-validator":"uid"}},{type:"string",name:"displayName",interface:"input",uiSchema:{type:"string",title:(0,u.W)("App display name"),required:!0,"x-component":"Input"}},{type:"string",name:"pinned",interface:"checkbox",uiSchema:{type:"boolean","x-content":(0,u.W)("Pin to menu"),"x-component":"Checkbox"}},{type:"string",name:"status",interface:"radioGroup",defaultValue:"pending",uiSchema:{type:"string",title:(0,u.W)("App status"),enum:[{label:"Initializing",value:"initializing"},{label:"Initialized",value:"initialized"},{label:"Running",value:"running"},{label:"Commanding",value:"commanding"},{label:"Stopped",value:"stopped"},{label:"Error",value:"error"},{label:"Not found",value:"not_found"}],"x-component":"Radio.Group"}}]},d={type:"void","x-component":"div",properties:{displayName:{"x-component":"CollectionField","x-decorator":"FormItem"},name:{"x-component":"CollectionField","x-decorator":"FormItem","x-disabled":"{{ !createOnly }}"},"options.autoStart":{title:(0,o.tval)("Start mode",{ns:"@nocobase/plugin-multi-app-manager"}),"x-component":"Radio.Group","x-decorator":"FormItem",default:!1,enum:[{label:(0,o.tval)("Start on first visit",{ns:"@nocobase/plugin-multi-app-manager"}),value:!1},{label:(0,o.tval)("Start with main application",{ns:"@nocobase/plugin-multi-app-manager"}),value:!0}]},cname:{title:(0,u.W)("Custom domain"),"x-component":"Input","x-decorator":"FormItem"},pinned:{"x-component":"CollectionField","x-decorator":"FormItem"}}},y={properties:{view:{type:"void","x-component":"AppVisitor","x-component-props":{}},update:{type:"void",title:'{{t("Edit")}}',"x-component":"Action.Link","x-component-props":{},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:"{{ cm.useValuesFromRecord }}"},title:'{{t("Edit")}}',properties:{formSchema:d,footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useUpdateAction }}"}}}}}}}},delete:{type:"void",title:'{{ t("Delete") }}',"x-component":"Action.Link","x-component-props":{confirm:{title:"{{t('Delete')}}",content:"{{t('Are you sure you want to delete it?')}}"},useAction:"{{cm.useDestroyAction}}"}}}},b={type:"object",properties:l({},(0,r.uid)(),{type:"void","x-decorator":"ResourceActionProvider","x-decorator-props":{collection:m,resourceName:"applications",request:{resource:"applications",action:"list",params:{pageSize:50,sort:["-createdAt"],appends:[]}}},"x-component":"CollectionProvider_deprecated","x-component-props":{collection:m},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{delete:{type:"void",title:'{{ t("Delete") }}',"x-component":"Action","x-component-props":{icon:"DeleteOutlined",useAction:function(){var e=(0,i.useResourceActionContext)(),t=e.state,n=e.setState,r=e.refresh,o=(0,i.useResourceContext)().resource;return{run:function(){var e;return(e=function(){return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}(this,function(e){switch(e.label){case 0:return[4,o.destroy({filterByTk:(null==t?void 0:t.selectedRowKeys)||[]})];case 1:return e.sent(),null==n||n({selectedRowKeys:[]}),r(),[2]}})},function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function a(e){p(i,r,o,a,c,"next",e)}function c(e){p(i,r,o,a,c,"throw",e)}a(void 0)})})()}}},confirm:{title:"{{t('Delete')}}",content:"{{t('Are you sure you want to delete it?')}}"}}},create:{type:"void",title:'{{t("Add new")}}',"x-decorator":function(e){return c().createElement(i.SchemaComponentOptions,f(s({},e),{scope:{createOnly:!0}}))},"x-component":"Action","x-component-props":{type:"primary",icon:"PlusOutlined"},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:function(e){var t=(0,i.useActionContext)();return(0,i.useRequest)(function(){return Promise.resolve({data:{name:"a_".concat((0,r.uid)())}})},f(s({},e),{refreshDeps:[t.visible]}))}},title:'{{t("Add new")}}',properties:{formSchema:d,footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useCreateAction }}"}}}}}}}}}},table:{type:"void","x-uid":"input","x-component":"Table.Void","x-component-props":{rowKey:"name",rowSelection:{type:"checkbox"},useDataSource:"{{ cm.useDataSourceFromRAC }}"},properties:{displayName:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{displayName:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},name:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{name:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},pinned:{type:"void",title:(0,u.W)("Pin to menu"),"x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{pinned:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},status:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{status:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},actions:{type:"void",title:'{{t("Actions")}}',"x-component":"Table.Column",properties:{actions:s({type:"void","x-component":"Space","x-component-props":{split:"|"}},y)}}}}}})}},581:function(e){e.exports=function(e,t){return"undefined"!=typeof __deoptimization_sideEffect__&&__deoptimization_sideEffect__(e,t),t}},505:function(e){"use strict";e.exports=i},875:function(e){"use strict";e.exports=t},772:function(e){"use strict";e.exports=r},584:function(e){"use strict";e.exports=n},721:function(e){"use strict";e.exports=o},202:function(e){"use strict";e.exports=a},156:function(e){"use strict";e.exports=u},238:function(t){"use strict";t.exports=e},128:function(e){"use strict";e.exports=c}},b={};function v(e){var t=b[e];if(void 0!==t)return t.exports;var n=b[e]={exports:{}};return y[e](n,n.exports,v),n.exports}v.m=y,v.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return v.d(t,{a:t}),t},v.d=function(e,t){for(var n in t)v.o(t,n)&&!v.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},v.f={},v.e=function(e){return Promise.all(Object.keys(v.f).reduce(function(t,n){return v.f[n](e,t),t},[]))},v.u=function(e){return"dc6fbb75042f9740.js"},v.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),v.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},p={},l="@nocobase/plugin-multi-app-manager:",v.l=function(e,t,n,r){if(p[e]){p[e].push(t);return}if(void 0!==n){for(var o,i,a=document.getElementsByTagName("script"),c=0;c<a.length;c++){var u=a[c];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==l+n){o=u;break}}}!o&&(i=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,v.nc&&o.setAttribute("nonce",v.nc),o.setAttribute("data-webpack",l+n),o.src=e),p[e]=[t];var s=function(t,n){o.onerror=o.onload=null,clearTimeout(f);var r=p[e];if(delete p[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach(function(e){return e(n)}),t)return t(n)},f=setTimeout(s.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=s.bind(null,o.onerror),o.onload=s.bind(null,o.onload),i&&document.head.appendChild(o)},v.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},v.p=(!(s=window.__nocobase_public_path__||"/").endsWith("/")&&(s+="/"),s+"static/plugins/@nocobase/plugin-multi-app-manager/dist/client/"),f={909:0},v.f.j=function(e,t){var n=v.o(f,e)?f[e]:void 0;if(0!==n){if(n)t.push(n[2]);else{var r=new Promise(function(t,r){n=f[e]=[t,r]});t.push(n[2]=r);var o=v.p+v.u(e),i=Error();v.l(o,function(t){if(v.o(f,e)&&(0!==(n=f[e])&&(f[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",i.name="ChunkLoadError",i.type=r,i.request=o,n[1](i)}},"chunk-"+e,e)}}},m=function(e,t){var n=t[0],r=t[1],o=t[2],i,a,c=0;if(n.some(function(e){return 0!==f[e]})){for(i in r)v.o(r,i)&&(v.m[i]=r[i]);o&&o(v)}for(e&&e(t);c<n.length;c++)a=n[c],v.o(f,a)&&f[a]&&f[a][0](),f[a]=0},(d=self.webpackChunk_nocobase_plugin_multi_app_manager=self.webpackChunk_nocobase_plugin_multi_app_manager||[]).forEach(m.bind(null,0)),d.push=m.bind(null,d.push.bind(d));var g={};return!function(){"use strict";v.r(g),v.d(g,{default:function(){return C},tableActionColumnSchema:function(){return m.vh},formSchema:function(){return m.kn},PluginMultiAppManagerClient:function(){return _}});var e=v("772"),t=v("721"),n=v("156"),r=v.n(n),o=v("128"),i=v("505"),a=(0,i.connect)(t.Input,(0,i.mapReadPretty)(function(t){var n=(0,e.useApp)(),o=t.value&&r().createElement("a",{target:"_blank",href:n.getRouteUrl("/apps/".concat(t.value,"/admin")),rel:"noreferrer"},t.value);return r().createElement("div",{style:t.style},t.addonBefore,t.prefix,o,t.suffix,t.addonAfter)})),c=(0,v("202").createStyles)(function(e){return{button:{color:e.token.colorTextHeaderMenu+" !important"}}}),u=v("109");function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var l=function(){var n,i=c().styles,a=(0,e.useRequest)({resource:"applications",action:"listPinned"},{manual:!0}),l=a.data,s=a.run,f=(0,u.g)().t,m=(0,e.useApp)();var d=((function(e){if(Array.isArray(e))return p(e)})(n=((null==l?void 0:l.data)||[]).map(function(e){var t=m.getRouteUrl("/apps/".concat(e.name,"/admin/"));return e.cname&&(t="//".concat(e.cname)),{key:e.name,label:r().createElement("a",{href:t,target:"_blank",rel:"noopener noreferrer"},e.displayName||e.name)}}))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(e,t){if(e){if("string"==typeof e)return p(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 p(e,t)}}(n)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).concat([{key:".manager",label:r().createElement(o.Link,{to:m.pluginSettingsManager.getRoutePath("multi-app-manager")},f("Manage applications"))}]);return r().createElement(t.Dropdown,{onOpenChange:function(e){s()},menu:{items:d}},r().createElement(t.Button,{className:i.button,title:"Apps",icon:r().createElement(e.Icon,{type:"AppstoreOutlined"})}))},s=function(t){return r().createElement(e.PinnedPluginListProvider,{items:{am:{order:201,component:"MultiAppManager",pin:!0}}},r().createElement(e.SchemaComponentOptions,{components:{MultiAppManager:l,AppNameInput:a}},t.children))},f="multi-app-manager",m=v("888"),d=v(581);function y(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(e){n(e);return}c.done?t(u):Promise.resolve(u).then(r,o)}function b(e,t,n){return(b=O()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&w(o,n.prototype),o}).apply(null,arguments)}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function h(e){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function w(e,t){return(w=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function A(e){var t="function"==typeof Map?new Map:void 0;return(A=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,r)}function r(){return b(e,arguments,h(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),w(r,e)})(e)}function O(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(O=function(){return!!e})()}var S=(0,e.lazy)(function(){return d("imported_-2qibu4_component",v.e("970").then(v.bind(v,660)))},"AppManager").AppManager,_=function(e){var t,n,r;function o(){var e,t,n;return!function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}(this,o),e=this,t=o,n=arguments,t=h(t),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)}(e,O()?Reflect.construct(t,n||[],h(e).constructor):t.apply(e,n))}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&&w(e,t)}(o,e),t=o,n=[{key:"load",value:function(){var e,t=this;return(e=function(){return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}(this,function(e){return t.app.use(s),t.app.pluginSettingsManager.add(f,{title:'{{t("Multi-app manager", { ns: "'.concat(f,'" })}}'),icon:"AppstoreOutlined",Component:S,aclSnippet:"pm.multi-app-manager.applications"}),[2]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function a(e){y(i,r,o,a,c,"next",e)}function c(e){y(i,r,o,a,c,"throw",e)}a(void 0)})})()}}],x(t.prototype,n),o}(A(e.Plugin)),C=_}(),g}()});
@@ -8,18 +8,18 @@
8
8
  */
9
9
 
10
10
  module.exports = {
11
- "@nocobase/client": "1.5.0-beta.2",
11
+ "@nocobase/client": "1.5.0-beta.20",
12
12
  "antd": "5.12.8",
13
13
  "react": "18.2.0",
14
14
  "@formily/react": "2.3.0",
15
15
  "antd-style": "3.7.1",
16
16
  "react-router-dom": "6.21.0",
17
17
  "react-i18next": "11.18.6",
18
- "@nocobase/database": "1.5.0-beta.2",
19
- "@nocobase/server": "1.5.0-beta.2",
18
+ "@nocobase/database": "1.5.0-beta.20",
19
+ "@nocobase/server": "1.5.0-beta.20",
20
20
  "lodash": "4.17.21",
21
21
  "mysql2": "3.11.0",
22
22
  "pg": "8.11.3",
23
- "@nocobase/utils": "1.5.0-beta.2",
23
+ "@nocobase/utils": "1.5.0-beta.20",
24
24
  "@formily/shared": "2.3.2"
25
25
  };
@@ -1 +1 @@
1
- {"name":"mariadb","version":"2.5.6","description":"fast mariadb/mysql connector.","main":"promise.js","types":"types/index.d.ts","directories":{"lib":"lib","test":"test"},"private":false,"scripts":{"test":"npm run test:types-prettier && npm run test:prettier && npm run test:types && npm run test:lint && npm run test:base","test:base":"mocha --no-parallel --timeout 5000 \"test/**/*.js\" ","test:lint":"eslint \"{lib,test}/**/*.js\" ","test:types":"eslint \"types/*.ts\" ","test:types-prettier":"prettier --write \"types/*.ts\"","test:prettier":"prettier --write \"{tools,lib,test,benchmarks}/**/*.js\"","coverage":"npm run coverage:test && npm run coverage:report","coverage:test":"nyc mocha --no-parallel --timeout 5000 \"test/**/*.js\"","coverage:report":"nyc report --reporter=text-lcov > coverage.lcov && codecov","benchmark":"node ./benchmarks/benchmarks.js","generate":"node ./tools/generate-mariadb.js"},"repository":{"type":"git","url":"git+https://github.com/mariadb-corporation/mariadb-connector-nodejs.git"},"keywords":["mariadb","mysql","client","driver","connector"],"files":["lib","types/index.d.ts","promise.js","callback.js"],"engines":{"node":">= 10.13"},"author":"Diego Dupin <diego.dupin@mariadb.com>","license":"LGPL-2.1-or-later","dependencies":{"@types/geojson":"^7946.0.8","@types/node":"^17.0.10","denque":"^2.0.1","iconv-lite":"^0.6.3","long":"^5.2.0","moment-timezone":"^0.5.34","please-upgrade-node":"^3.2.0"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^5.10.0","benchmark":"^2.1.4","chai":"^4.3.4","codecov":"^3.8.2","chalk":"^4.1.2","dom-parser":"^0.1.6","error-stack-parser":"^2.0.6","eslint":"^8.7.0","eslint-config-prettier":"^8.3.0","eslint-plugin-markdown":"^2.2.1","eslint-plugin-prettier":"^4.0.0","mocha":"^9.2.0","mocha-lcov-reporter":"^1.3.0","nyc":"^15.1.0","prettier":"^2.5.1","typescript":"^4.5.5"},"bugs":{"url":"https://jira.mariadb.org/projects/CONJS/"},"homepage":"https://github.com/mariadb-corporation/mariadb-connector-nodejs#readme","_lastModified":"2024-12-06T08:59:28.038Z"}
1
+ {"name":"mariadb","version":"2.5.6","description":"fast mariadb/mysql connector.","main":"promise.js","types":"types/index.d.ts","directories":{"lib":"lib","test":"test"},"private":false,"scripts":{"test":"npm run test:types-prettier && npm run test:prettier && npm run test:types && npm run test:lint && npm run test:base","test:base":"mocha --no-parallel --timeout 5000 \"test/**/*.js\" ","test:lint":"eslint \"{lib,test}/**/*.js\" ","test:types":"eslint \"types/*.ts\" ","test:types-prettier":"prettier --write \"types/*.ts\"","test:prettier":"prettier --write \"{tools,lib,test,benchmarks}/**/*.js\"","coverage":"npm run coverage:test && npm run coverage:report","coverage:test":"nyc mocha --no-parallel --timeout 5000 \"test/**/*.js\"","coverage:report":"nyc report --reporter=text-lcov > coverage.lcov && codecov","benchmark":"node ./benchmarks/benchmarks.js","generate":"node ./tools/generate-mariadb.js"},"repository":{"type":"git","url":"git+https://github.com/mariadb-corporation/mariadb-connector-nodejs.git"},"keywords":["mariadb","mysql","client","driver","connector"],"files":["lib","types/index.d.ts","promise.js","callback.js"],"engines":{"node":">= 10.13"},"author":"Diego Dupin <diego.dupin@mariadb.com>","license":"LGPL-2.1-or-later","dependencies":{"@types/geojson":"^7946.0.8","@types/node":"^17.0.10","denque":"^2.0.1","iconv-lite":"^0.6.3","long":"^5.2.0","moment-timezone":"^0.5.34","please-upgrade-node":"^3.2.0"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^5.10.0","benchmark":"^2.1.4","chai":"^4.3.4","codecov":"^3.8.2","chalk":"^4.1.2","dom-parser":"^0.1.6","error-stack-parser":"^2.0.6","eslint":"^8.7.0","eslint-config-prettier":"^8.3.0","eslint-plugin-markdown":"^2.2.1","eslint-plugin-prettier":"^4.0.0","mocha":"^9.2.0","mocha-lcov-reporter":"^1.3.0","nyc":"^15.1.0","prettier":"^2.5.1","typescript":"^4.5.5"},"bugs":{"url":"https://jira.mariadb.org/projects/CONJS/"},"homepage":"https://github.com/mariadb-corporation/mariadb-connector-nodejs#readme","_lastModified":"2025-01-01T17:41:57.967Z"}
@@ -41,7 +41,11 @@ class ApplicationModel extends import_database.Model {
41
41
  ...(0, import_utils.merge)(appOptions, appModelOptions),
42
42
  name: appName
43
43
  };
44
- return new import_server.Application(subAppOptions);
44
+ const subApp = new import_server.Application(subAppOptions);
45
+ subApp.on("afterStart", () => {
46
+ mainApp.emit("subAppStarted", subApp);
47
+ });
48
+ return subApp;
45
49
  }
46
50
  }
47
51
  // Annotate the CommonJS export names for ESM import in node:
@@ -20,6 +20,7 @@ export declare class PluginMultiAppManagerServer extends Plugin {
20
20
  appOptionsFactory: AppOptionsFactory;
21
21
  subAppUpgradeHandler: SubAppUpgradeHandler;
22
22
  static getDatabaseConfig(app: Application): IDatabaseOptions;
23
+ handleSyncMessage(message: any): Promise<void>;
23
24
  setSubAppUpgradeHandler(handler: SubAppUpgradeHandler): void;
24
25
  setAppOptionsFactory(factory: AppOptionsFactory): void;
25
26
  setAppDbCreator(appDbCreator: AppDbCreator): void;
@@ -148,6 +148,31 @@ class PluginMultiAppManagerServer extends import_server.Plugin {
148
148
  }
149
149
  return import_lodash.default.cloneDeep(import_lodash.default.omit(oldConfig, ["migrator"]));
150
150
  }
151
+ async handleSyncMessage(message) {
152
+ const { type } = message;
153
+ if (type === "subAppStarted") {
154
+ const { appName } = message;
155
+ const model = await this.app.db.getRepository("applications").findOne({
156
+ filter: {
157
+ name: appName
158
+ }
159
+ });
160
+ if (!model) {
161
+ return;
162
+ }
163
+ if (import_server.AppSupervisor.getInstance().hasApp(appName)) {
164
+ return;
165
+ }
166
+ const subApp = model.registerToSupervisor(this.app, {
167
+ appOptionsFactory: this.appOptionsFactory
168
+ });
169
+ subApp.runCommand("start", "--quickstart");
170
+ }
171
+ if (type === "removeApp") {
172
+ const { appName } = message;
173
+ await import_server.AppSupervisor.getInstance().removeApp(appName);
174
+ }
175
+ }
151
176
  setSubAppUpgradeHandler(handler) {
152
177
  this.subAppUpgradeHandler = handler;
153
178
  }
@@ -176,6 +201,12 @@ class PluginMultiAppManagerServer extends import_server.Plugin {
176
201
  const subApp = model.registerToSupervisor(this.app, {
177
202
  appOptionsFactory: this.appOptionsFactory
178
203
  });
204
+ subApp.on("afterStart", async () => {
205
+ this.sendSyncMessage({
206
+ type: "subAppStarted",
207
+ appName: name
208
+ });
209
+ });
179
210
  const quickstart = async () => {
180
211
  await this.appDbCreator(subApp, {
181
212
  transaction,
@@ -190,8 +221,17 @@ class PluginMultiAppManagerServer extends import_server.Plugin {
190
221
  }
191
222
  }
192
223
  );
193
- this.db.on("applications.afterDestroy", async (model) => {
224
+ this.db.on("applications.afterDestroy", async (model, options) => {
194
225
  await import_server.AppSupervisor.getInstance().removeApp(model.get("name"));
226
+ this.sendSyncMessage(
227
+ {
228
+ type: "removeApp",
229
+ appName: model.get("name")
230
+ },
231
+ {
232
+ transaction: options.transaction
233
+ }
234
+ );
195
235
  });
196
236
  const self = this;
197
237
  async function LazyLoadApplication({
@@ -223,6 +263,12 @@ class PluginMultiAppManagerServer extends import_server.Plugin {
223
263
  const subApp = applicationRecord.registerToSupervisor(mainApp, {
224
264
  appOptionsFactory: self.appOptionsFactory
225
265
  });
266
+ subApp.on("afterStart", async () => {
267
+ this.sendSyncMessage({
268
+ type: "subAppStarted",
269
+ appName: name
270
+ });
271
+ });
226
272
  if (!loadButNotStart) {
227
273
  await subApp.runCommand("start", "--quickstart");
228
274
  }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName.zh-CN": "多应用管理器",
5
5
  "description": "Dynamically create multiple apps without separate deployments.",
6
6
  "description.zh-CN": "无需单独部署即可动态创建多个应用。",
7
- "version": "1.5.0-beta.2",
7
+ "version": "1.5.0-beta.20",
8
8
  "license": "AGPL-3.0",
9
9
  "main": "./dist/server/index.js",
10
10
  "homepage": "https://docs.nocobase.com/handbook/multi-app-manager",
@@ -14,7 +14,7 @@
14
14
  "@formily/shared": "2.x",
15
15
  "antd": "5.x",
16
16
  "antd-style": "3.x",
17
- "async-mutex": "^0.3.2",
17
+ "async-mutex": "^0.5.0",
18
18
  "mysql2": "^3.11.0",
19
19
  "pg": "^8.7.3",
20
20
  "react": "18.x",
@@ -28,7 +28,7 @@
28
28
  "@nocobase/test": "1.x",
29
29
  "@nocobase/utils": "1.x"
30
30
  },
31
- "gitHead": "8a9c29fdac5c6295dcc7abf00c3fa81bd9e01a36",
31
+ "gitHead": "211221dfc5014bf44543a080b56c3337396940ec",
32
32
  "keywords": [
33
33
  "system"
34
34
  ]