@nocobase/plugin-multi-app-manager 1.5.0-beta.3 → 1.5.0-beta.30

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.3",
11
+ "@nocobase/client": "1.5.0-beta.30",
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.3",
19
- "@nocobase/server": "1.5.0-beta.3",
18
+ "@nocobase/database": "1.5.0-beta.30",
19
+ "@nocobase/server": "1.5.0-beta.30",
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.3",
23
+ "@nocobase/utils": "1.5.0-beta.30",
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-10T07:17:22.741Z"}
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-16T03:41:52.979Z"}
@@ -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,9 +20,11 @@ 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;
26
27
  beforeLoad(): void;
28
+ beforeEnable(): Promise<void>;
27
29
  load(): Promise<void>;
28
30
  }
@@ -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
  }
@@ -162,6 +187,11 @@ class PluginMultiAppManagerServer extends import_server.Plugin {
162
187
  ApplicationModel: import_server2.ApplicationModel
163
188
  });
164
189
  }
190
+ async beforeEnable() {
191
+ if (this.app.name !== "main") {
192
+ throw new Error("@nocobase/plugin-multi-app-manager can only be enabled in the main app");
193
+ }
194
+ }
165
195
  async load() {
166
196
  await this.importCollections(import_path.default.resolve(__dirname, "collections"));
167
197
  this.db.on(
@@ -176,6 +206,12 @@ class PluginMultiAppManagerServer extends import_server.Plugin {
176
206
  const subApp = model.registerToSupervisor(this.app, {
177
207
  appOptionsFactory: this.appOptionsFactory
178
208
  });
209
+ subApp.on("afterStart", async () => {
210
+ this.sendSyncMessage({
211
+ type: "subAppStarted",
212
+ appName: name
213
+ });
214
+ });
179
215
  const quickstart = async () => {
180
216
  await this.appDbCreator(subApp, {
181
217
  transaction,
@@ -190,8 +226,17 @@ class PluginMultiAppManagerServer extends import_server.Plugin {
190
226
  }
191
227
  }
192
228
  );
193
- this.db.on("applications.afterDestroy", async (model) => {
229
+ this.db.on("applications.afterDestroy", async (model, options) => {
194
230
  await import_server.AppSupervisor.getInstance().removeApp(model.get("name"));
231
+ this.sendSyncMessage(
232
+ {
233
+ type: "removeApp",
234
+ appName: model.get("name")
235
+ },
236
+ {
237
+ transaction: options.transaction
238
+ }
239
+ );
195
240
  });
196
241
  const self = this;
197
242
  async function LazyLoadApplication({
@@ -223,6 +268,12 @@ class PluginMultiAppManagerServer extends import_server.Plugin {
223
268
  const subApp = applicationRecord.registerToSupervisor(mainApp, {
224
269
  appOptionsFactory: self.appOptionsFactory
225
270
  });
271
+ subApp.on("afterStart", async () => {
272
+ this.sendSyncMessage({
273
+ type: "subAppStarted",
274
+ appName: name
275
+ });
276
+ });
226
277
  if (!loadButNotStart) {
227
278
  await subApp.runCommand("start", "--quickstart");
228
279
  }
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.3",
7
+ "version": "1.5.0-beta.30",
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": "81afcf4affdb652faf4636e6d9351828ce8906be",
31
+ "gitHead": "40c48b2ecf3e2315a76dcb729dbda825b6a1331c",
32
32
  "keywords": [
33
33
  "system"
34
34
  ]