subapp-web
Advanced tools
Comparing version 1.0.43 to 1.0.44
@@ -16,2 +16,3 @@ import { createBrowserHistory } from "history"; | ||
var name = info.name; | ||
var ns = info.ns; | ||
var subApp = xarc.getSubApp(name) || { | ||
@@ -21,4 +22,4 @@ info: info | ||
if (!xarc.getBundle(name)) { | ||
xarc.setBundle(name, true); | ||
if (!xarc.getBundle(name, ns)) { | ||
xarc.setBundle(name, true, ns); | ||
} // subapp already loaded, do nothing and return the info | ||
@@ -212,3 +213,4 @@ | ||
onError = _ref4.onError, | ||
fallback = _ref4.fallback; | ||
fallback = _ref4.fallback, | ||
ns = _ref4.ns; | ||
// TODO: timeout and callback | ||
@@ -241,4 +243,4 @@ var lname = name.toLowerCase(); | ||
if (xarc.getBundle(name) === undefined) { | ||
xarc.loadSubAppBundles(lname); | ||
if (xarc.getBundle(name, ns) === undefined) { | ||
xarc.loadSubAppBundles(lname, null, ns); | ||
} else if (!id && !onLoad) { | ||
@@ -245,0 +247,0 @@ var inlined = renderInline(); |
@@ -20,2 +20,9 @@ // xarc subapp client side lib version 1 | ||
var xv1; | ||
var DEFAULT_NAMESPACE = "root"; | ||
var ensureNamespace = function ensureNamespace() { | ||
var namespace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_NAMESPACE; | ||
return namespace; | ||
}; | ||
return w.xarcV1 = xv1 = { | ||
@@ -109,7 +116,15 @@ IS_BROWSER: true, | ||
}, | ||
getBundle: function getBundle(name) { | ||
return name ? runtimeInfo.bundles[name.toLowerCase()] : undefined; | ||
getBundle: function getBundle(name, namespace) { | ||
namespace = ensureNamespace(namespace); | ||
if (!name || !runtimeInfo.bundles[namespace] || !runtimeInfo.bundles[namespace][name.toLowerCase()]) { | ||
return; | ||
} | ||
return runtimeInfo.bundles[namespace][name.toLowerCase()]; | ||
}, | ||
setBundle: function setBundle(name, state) { | ||
runtimeInfo.bundles[name.toLowerCase()] = state; | ||
setBundle: function setBundle(name, state, namespace) { | ||
namespace = ensureNamespace(namespace); | ||
runtimeInfo.bundles[namespace] = runtimeInfo.bundles[namespace] || {}; | ||
runtimeInfo.bundles[namespace][name.toLowerCase()] = state; | ||
}, | ||
@@ -292,20 +307,29 @@ getSubApp: function getSubApp(name) { | ||
}, | ||
markBundlesLoaded: function markBundlesLoaded(ids) { | ||
markBundlesLoaded: function markBundlesLoaded(ids, namespace) { | ||
[].concat(ids).forEach(function (id) { | ||
xv1.setBundle(id.toString(), 1); | ||
xv1.setBundle(id.toString(), 1, namespace); | ||
}); | ||
}, | ||
getBundleAssets: function getBundleAssets() { | ||
getBundleAssets: function getBundleAssets(namespace) { | ||
namespace = ensureNamespace(namespace); | ||
if (!runtimeInfo.bundleAssets) { | ||
runtimeInfo.bundleAssets = xv1.dyn("bundleAssets"); | ||
xv1.cdnInit(runtimeInfo.bundleAssets); | ||
runtimeInfo.bundleAssets = {}; | ||
} | ||
return runtimeInfo.bundleAssets; | ||
if (!runtimeInfo.bundleAssets[namespace]) { | ||
var bundleName = namespace === DEFAULT_NAMESPACE ? "bundleAssets" : "".concat(namespace, "Assets"); | ||
runtimeInfo.bundleAssets[namespace] = xv1.dyn(bundleName); | ||
var updater = xv1.rt.md === "undefined" ? xv1.cdnInit : xv1.cdnUpdate; | ||
updater(runtimeInfo.bundleAssets[namespace]); | ||
} | ||
return runtimeInfo.bundleAssets[namespace]; | ||
}, | ||
loadSubAppBundles: function loadSubAppBundles(names, done) { | ||
loadSubAppBundles: function loadSubAppBundles(names, done, namespace) { | ||
done = done || function () {}; | ||
namespace = ensureNamespace(namespace); | ||
var toLoad = [].concat(names).filter(function (x) { | ||
return xv1.getBundle(x) === undefined; | ||
return xv1.getBundle(x, namespace) === undefined; | ||
}); | ||
@@ -317,3 +341,3 @@ | ||
var ba = xv1.getBundleAssets(); | ||
var ba = xv1.getBundleAssets(namespace); | ||
var loaded = []; | ||
@@ -335,4 +359,4 @@ var assetsToLoad = toLoad.reduce(function (a, name) { | ||
if (xv1.getBundle(id) === undefined) { | ||
xv1.setBundle(id, 0); // mark as loading | ||
if (xv1.getBundle(id, namespace) === undefined) { | ||
xv1.setBundle(id, 0, namespace); // mark as loading | ||
@@ -339,0 +363,0 @@ return true; |
@@ -1,1 +0,1 @@ | ||
import{createBrowserHistory}from"history";import makeSubAppSpec from"./make-subapp-spec";import xarc from"./xarc";export{default as makeSubAppSpec}from"./make-subapp-spec";export{default as xarc}from"./xarc";var FrameworkLib;export function setupFramework(a){FrameworkLib=a}export function loadSubApp(a,b){setTimeout(function(){return xarc.watchSubAppOnLoad()},0),a=makeSubAppSpec(a);var c=a.name,d=xarc.getSubApp(c)||{info:a};if(xarc.getBundle(c)||xarc.setBundle(c,!0),d._started)return a;d._started=[],xarc.setSubApp(c,d),d._renderStart=b||function(a,b){var c=new FrameworkLib({subApp:d,element:b,options:a});return c.renderStart()},d.getInstance=function(a){var b,c=a.id||a.elementId;c?b=document.getElementById(c):c=a._genId;var e=d._started.find(function(a){return a.id===c});return e?e.element!==b&&(e.element=b):(e=Object.assign({},a,{id:c,element:b}),d._started.push(e)),b&&void 0,e},d.preStart=function(a,b,c){return a=a||d.getInstance(b),c=c||d.info,a._prepared||(c.prepare?a._prepared=c.prepare(a,b,c):a._prepared=b.initialState||{}),a},d.preRender=a.__preRender,d.signalReady=a.__signalReady,d.start=function(a,b,c){a=a||d.preStart(a,b,c),c=c||d.info;var e=function(){return c.start?c.start(a,a.element):d._renderStart(a,a.element)};return a._prepared&&a._prepared.then?a._prepared.then(function(b){return a._prepared=b,e()}):e()};var e=function(a,b,c){return a.queue.find(function(a){return a.options.name===c&&a.options.group===b&&a.options.inline?a.instance:void 0})},f=function(a){var b=a.name;for(var c in xarc.rt.groups){var d=xarc.rt.groups[c];return e(d,d.group,b)}};return d.inline=function(a){var b,g=a.group,h=a.props,i=function(a){return console.error(a),"<!--\n****** ".concat(a,"\n-->")};if(g){var j=xarc.rt.groups[g];if(!j)return i("subApp inline unable to find group ".concat(g));if(b=e(j,g,d.info.name),!b)return i("subApp inline unable to find instance in group ".concat(g," for subapp ").concat(d.info.name))}else if(b=f(h),!b)return i("subApp inline unable to find a group with instance for subApp ".concat(c));return d.start(b.instance,Object.assign({},b.options,{props:h}),b.info)},a}export function getSubAppComponent(a){var b=a.name,c=a.timeout,d=void 0===c?15e3:c,e=a.onReady,f=a.onError,g=a.fallback}export function waitForSubApp(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:15e3;return new Promise(function(c,d){lazyLoadSubApp({name:a,onLoad:function onLoad(){return c()},onError:function onError(){return d()},timeout:b})})}export function isLoaded(a){return!!xarc.getSubApp(a)}export function lazyLoadSubApp(a){var b=a.name,c=a.id,d=a.timeout,e=void 0===d?15e3:d,f=a.onLoad,g=a.onError,h=a.fallback,i=b.toLowerCase(),j=function(a,b){if(!c)return f&&f();var d=document.getElementById(c);if(d&&b.start)return b.start(a,{id:c})},k=function(){var a=xarc.getSubApp(b);return!!a&&a.start(null,{})};if(void 0===xarc.getBundle(b))xarc.loadSubAppBundles(i);else if(!c&&!f){var n=k();if(n)return n}var l=Date.now(),m=function(a){setTimeout(function(){var a=xarc.getSubApp(b);return a?xarc.startSubApp(a,{id:c},!0).then(function(){return j(null,a)}):50<e&&Date.now()-l>e?g(new Error("lazyLoadSubApp Timeout")):m(50)},a)};return m(0),h}export{lazyLoadSubApp as dynamicLoadSubApp};export function getBrowserHistory(){return xarc.rt.history||(xarc.rt.history=createBrowserHistory()),xarc.rt.history}export function hotReloadSubApp(a){a=a["default"]||a;var b=xarc.getSubApp(a.name);b.info=a,b._started.forEach(function(a){return setTimeout(function(){return b.start(a)},0)})} | ||
import{createBrowserHistory}from"history";import makeSubAppSpec from"./make-subapp-spec";import xarc from"./xarc";export{default as makeSubAppSpec}from"./make-subapp-spec";export{default as xarc}from"./xarc";var FrameworkLib;export function setupFramework(a){FrameworkLib=a}export function loadSubApp(a,b){setTimeout(function(){return xarc.watchSubAppOnLoad()},0),a=makeSubAppSpec(a);var c=a.name,d=a.ns,e=xarc.getSubApp(c)||{info:a};if(xarc.getBundle(c,d)||xarc.setBundle(c,!0,d),e._started)return a;e._started=[],xarc.setSubApp(c,e),e._renderStart=b||function(a,b){var c=new FrameworkLib({subApp:e,element:b,options:a});return c.renderStart()},e.getInstance=function(a){var b,c=a.id||a.elementId;c?b=document.getElementById(c):c=a._genId;var d=e._started.find(function(a){return a.id===c});return d?d.element!==b&&(d.element=b):(d=Object.assign({},a,{id:c,element:b}),e._started.push(d)),b&&void 0,d},e.preStart=function(a,b,c){return a=a||e.getInstance(b),c=c||e.info,a._prepared||(c.prepare?a._prepared=c.prepare(a,b,c):a._prepared=b.initialState||{}),a},e.preRender=a.__preRender,e.signalReady=a.__signalReady,e.start=function(a,b,c){a=a||e.preStart(a,b,c),c=c||e.info;var d=function(){return c.start?c.start(a,a.element):e._renderStart(a,a.element)};return a._prepared&&a._prepared.then?a._prepared.then(function(b){return a._prepared=b,d()}):d()};var f=function(a,b,c){return a.queue.find(function(a){return a.options.name===c&&a.options.group===b&&a.options.inline?a.instance:void 0})},g=function(a){var b=a.name;for(var c in xarc.rt.groups){var d=xarc.rt.groups[c];return f(d,d.group,b)}};return e.inline=function(a){var b,d=a.group,h=a.props,i=function(a){return console.error(a),"<!--\n****** ".concat(a,"\n-->")};if(d){var j=xarc.rt.groups[d];if(!j)return i("subApp inline unable to find group ".concat(d));if(b=f(j,d,e.info.name),!b)return i("subApp inline unable to find instance in group ".concat(d," for subapp ").concat(e.info.name))}else if(b=g(h),!b)return i("subApp inline unable to find a group with instance for subApp ".concat(c));return e.start(b.instance,Object.assign({},b.options,{props:h}),b.info)},a}export function getSubAppComponent(a){var b=a.name,c=a.timeout,d=void 0===c?15e3:c,e=a.onReady,f=a.onError,g=a.fallback}export function waitForSubApp(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:15e3;return new Promise(function(c,d){lazyLoadSubApp({name:a,onLoad:function onLoad(){return c()},onError:function onError(){return d()},timeout:b})})}export function isLoaded(a){return!!xarc.getSubApp(a)}export function lazyLoadSubApp(a){var b=a.name,c=a.id,d=a.timeout,e=void 0===d?15e3:d,f=a.onLoad,g=a.onError,h=a.fallback,i=a.ns,j=b.toLowerCase(),k=function(a,b){if(!c)return f&&f();var d=document.getElementById(c);if(d&&b.start)return b.start(a,{id:c})},l=function(){var a=xarc.getSubApp(b);return!!a&&a.start(null,{})};if(void 0===xarc.getBundle(b,i))xarc.loadSubAppBundles(j,null,i);else if(!c&&!f){var o=l();if(o)return o}var m=Date.now(),n=function(a){setTimeout(function(){var a=xarc.getSubApp(b);return a?xarc.startSubApp(a,{id:c},!0).then(function(){return k(null,a)}):50<e&&Date.now()-m>e?g(new Error("lazyLoadSubApp Timeout")):n(50)},a)};return n(0),h}export{lazyLoadSubApp as dynamicLoadSubApp};export function getBrowserHistory(){return xarc.rt.history||(xarc.rt.history=createBrowserHistory()),xarc.rt.history}export function hotReloadSubApp(a){a=a["default"]||a;var b=xarc.getSubApp(a.name);b.info=a,b._started.forEach(function(a){return setTimeout(function(){return b.start(a)},0)})} |
@@ -1,1 +0,1 @@ | ||
(function(a){a._wml||(a._wml={});if(a.xarcV1&&a.xarcV1.version>=1000000)return a.xarcV1;var b,c={instId:1,subApps:{},bundles:{},onLoadStart:{},groups:{},started:!1};return a.xarcV1=b={IS_BROWSER:!0,HAS_WINDOW:"undefined"!=typeof window,version:1000000,rt:c,cdnInit:function cdnInit(){},cdnUpdate:function cdnUpdate(){},cdnMap:function cdnMap(a){return a},defer:function(){var a={};return a.promise=new Promise(function(b,c){a.resolve=b,a.reject=c,a.done=function(a,d){a?c(a):b(d)}}),a},asyncMap:function asyncMap(a,c,d){var e,f=[],g=0,h=0,i=a&&a.length;0<d||(d=10);var j=b.defer(),k=function(){if(!(e||h>=i||0>=d)){d--;var b=h++;f[b]=void 0;var l=function(a){d++,g++,f[b]=a,e||g!==i?k():j.resolve(f)},m=function(a){e||(e=a,a.partial=f,j.reject(a))};try{var n=c(a[b],b,a);n&&n.then?(n.then(l,m),k()):l(n)}catch(a){m(a)}}};return setTimeout(0<i?k:function(){return j.resolve(f)},0),j.promise},getBundle:function getBundle(a){return a?c.bundles[a.toLowerCase()]:void 0},setBundle:function setBundle(a,b){c.bundles[a.toLowerCase()]=b},getSubApp:function getSubApp(a){return c.subApps[a]},setSubApp:function setSubApp(a,b){c.subApps[a]=b},getOnLoadStart:function getOnLoadStart(a){return c.onLoadStart[a]||(c.onLoadStart[a]=[]),c.onLoadStart[a]},addOnLoadStart:function addOnLoadStart(a,c){b.getOnLoadStart(a).push(c)},startSubApp:function startSubApp(a,b,c){var d,e=function(c){return function(){return a[c]&&a[c](d,b,a.info)}},f=Promise.resolve().then(e("preStart")).then(function(a){return(d=a)&&a._prepared}).then(e("preRender")).then(e("signalReady"));return c?f:f.then(e("start"))},startGroup:function startGroup(a){if(!(!c.started||a.started||a.queue.length<a.total)){var d=function(c,d){return function(){return b.asyncMap(d||a.queue,function(a){var b=a.subApp;return b[c]&&b[c](a.instance,a.options,b.info)})}};a.started=!0,b.asyncMap(a.queue,function(a){return a.instance._prepared}).then(d("preRender")).then(d("signalReady")).then(d("start",a.queue.filter(function(a){return!a.options.inline})))}},watchSubAppOnLoad:function watchSubAppOnLoad(a){c.onLoadWatcher&&(clearTimeout(c.onLoadWatcher),c.onLoadWatcher=void 0);var d=function(){c.onLoadWatcher=void 0;var a=c.onLoadStart,d=0,e=function(e){if(!a[e])return"continue";var f=b.getSubApp(e);if(!f||!f._started)d++;else if(f.start&&f.info){var g=a[e];a[e]=void 0,g.forEach(function(a){if(a.id||a.elementId||(a=Object.assign({},a),a._genId=a.name+"_inst_id_"+c.instId++),a.getInitialState&&(a.initialState=a.getInitialState()),a.group){var d=c.groups[a.group],e={options:a,subApp:f,instance:f.preStart(null,a)};d.queue.push(e),b.startGroup(d),d.queue.length<d.total&&void 0}else return b.startSubApp(f,a)})}else console.error("subApp ".concat(e," exist but missing start or info"))};for(var g in a){var f=e(g)}d?b.watchSubAppOnLoad():c.onLoadStart={}};a&&d(),c.onLoadWatcher=setTimeout(d,10)},startSubAppOnLoad:function startSubAppOnLoad(a){var b=a.name,d=c.onLoadStart;d[b]||(d[b]=[]);var e=a.group;if(e){var f=c.groups[e];f||(f=c.groups[e]={group:e,total:0,queue:[]}),f.total++}d[b].push(a)},start:function start(){void 0,c.started=!0;var a=c.groups;for(var d in a)b.startGroup(a[d]);b.watchSubAppOnLoad(!0)},markBundlesLoaded:function markBundlesLoaded(a){[].concat(a).forEach(function(a){b.setBundle(a.toString(),1)})},getBundleAssets:function getBundleAssets(){return c.bundleAssets||(c.bundleAssets=b.dyn("bundleAssets"),b.cdnInit(c.bundleAssets)),c.bundleAssets},loadSubAppBundles:function loadSubAppBundles(a,d){d=d||function(){};var e=[].concat(a).filter(function(a){return b.getBundle(a)===void 0});if(0===e.length)return d();var f=b.getBundleAssets(),g=[],h=e.reduce(function(b,a){var c=f.entryPoints[a];return c.reduce(function(b,c){var d=f.jsChunksById[c];return d?b.concat({name:a,id:c,assets:[].concat(d)}):b},b)},[]).filter(function(a){var c=a.id;return c=c.toString(),void 0===b.getBundle(c)&&(b.setBundle(c,0),!0)});h.forEach(function(a){var b=a.name,e=a.id,i=a.assets,j=i.map(function(a){return"".concat(f.basePath).concat(a)}),k=function(){g.push(i),g.length===h.length&&(void 0,d())};loadjs(j,e,{success:function success(){void 0,c.bundles[e]++,k()},error:function error(){console.error("load asset ".concat(b," (id: ").concat(e,") failed"),err),k()}})})},dyn:function dyn(a){var b=document.getElementById(a);if(!b)console.error("ERROR: fail retrieve dynamic data from element",a,"- get");else try{return JSON.parse(b.innerHTML)}catch(a){return console.error("ERROR: fail retrieve dynamic data from element","- parse"),{}}}}})(window); | ||
(function(a){a._wml||(a._wml={});if(a.xarcV1&&a.xarcV1.version>=1000000)return a.xarcV1;var b,c={instId:1,subApps:{},bundles:{},onLoadStart:{},groups:{},started:!1},d="root",e=function(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:d;return a};return a.xarcV1=b={IS_BROWSER:!0,HAS_WINDOW:"undefined"!=typeof window,version:1000000,rt:c,cdnInit:function cdnInit(){},cdnUpdate:function cdnUpdate(){},cdnMap:function cdnMap(a){return a},defer:function(){var a={};return a.promise=new Promise(function(b,c){a.resolve=b,a.reject=c,a.done=function(a,d){a?c(a):b(d)}}),a},asyncMap:function asyncMap(a,c,d){var e,f=[],g=0,h=0,i=a&&a.length;0<d||(d=10);var j=b.defer(),k=function(){if(!(e||h>=i||0>=d)){d--;var b=h++;f[b]=void 0;var l=function(a){d++,g++,f[b]=a,e||g!==i?k():j.resolve(f)},m=function(a){e||(e=a,a.partial=f,j.reject(a))};try{var n=c(a[b],b,a);n&&n.then?(n.then(l,m),k()):l(n)}catch(a){m(a)}}};return setTimeout(0<i?k:function(){return j.resolve(f)},0),j.promise},getBundle:function getBundle(a,b){return b=e(b),a&&c.bundles[b]&&c.bundles[b][a.toLowerCase()]?c.bundles[b][a.toLowerCase()]:void 0},setBundle:function setBundle(a,b,d){d=e(d),c.bundles[d]=c.bundles[d]||{},c.bundles[d][a.toLowerCase()]=b},getSubApp:function getSubApp(a){return c.subApps[a]},setSubApp:function setSubApp(a,b){c.subApps[a]=b},getOnLoadStart:function getOnLoadStart(a){return c.onLoadStart[a]||(c.onLoadStart[a]=[]),c.onLoadStart[a]},addOnLoadStart:function addOnLoadStart(a,c){b.getOnLoadStart(a).push(c)},startSubApp:function startSubApp(a,b,c){var d,e=function(c){return function(){return a[c]&&a[c](d,b,a.info)}},f=Promise.resolve().then(e("preStart")).then(function(a){return(d=a)&&a._prepared}).then(e("preRender")).then(e("signalReady"));return c?f:f.then(e("start"))},startGroup:function startGroup(a){if(!(!c.started||a.started||a.queue.length<a.total)){var d=function(c,d){return function(){return b.asyncMap(d||a.queue,function(a){var b=a.subApp;return b[c]&&b[c](a.instance,a.options,b.info)})}};a.started=!0,b.asyncMap(a.queue,function(a){return a.instance._prepared}).then(d("preRender")).then(d("signalReady")).then(d("start",a.queue.filter(function(a){return!a.options.inline})))}},watchSubAppOnLoad:function watchSubAppOnLoad(a){c.onLoadWatcher&&(clearTimeout(c.onLoadWatcher),c.onLoadWatcher=void 0);var d=function(){c.onLoadWatcher=void 0;var a=c.onLoadStart,d=0,e=function(e){if(!a[e])return"continue";var f=b.getSubApp(e);if(!f||!f._started)d++;else if(f.start&&f.info){var g=a[e];a[e]=void 0,g.forEach(function(a){if(a.id||a.elementId||(a=Object.assign({},a),a._genId=a.name+"_inst_id_"+c.instId++),a.getInitialState&&(a.initialState=a.getInitialState()),a.group){var d=c.groups[a.group],e={options:a,subApp:f,instance:f.preStart(null,a)};d.queue.push(e),b.startGroup(d),d.queue.length<d.total&&void 0}else return b.startSubApp(f,a)})}else console.error("subApp ".concat(e," exist but missing start or info"))};for(var g in a){var f=e(g)}d?b.watchSubAppOnLoad():c.onLoadStart={}};a&&d(),c.onLoadWatcher=setTimeout(d,10)},startSubAppOnLoad:function startSubAppOnLoad(a){var b=a.name,d=c.onLoadStart;d[b]||(d[b]=[]);var e=a.group;if(e){var f=c.groups[e];f||(f=c.groups[e]={group:e,total:0,queue:[]}),f.total++}d[b].push(a)},start:function start(){void 0,c.started=!0;var a=c.groups;for(var d in a)b.startGroup(a[d]);b.watchSubAppOnLoad(!0)},markBundlesLoaded:function markBundlesLoaded(a,c){[].concat(a).forEach(function(a){b.setBundle(a.toString(),1,c)})},getBundleAssets:function getBundleAssets(a){if(a=e(a),c.bundleAssets||(c.bundleAssets={}),!c.bundleAssets[a]){var f=a===d?"bundleAssets":"".concat(a,"Assets");c.bundleAssets[a]=b.dyn(f);var g="undefined"===b.rt.md?b.cdnInit:b.cdnUpdate;g(c.bundleAssets[a])}return c.bundleAssets[a]},loadSubAppBundles:function loadSubAppBundles(a,d,f){d=d||function(){},f=e(f);var g=[].concat(a).filter(function(a){return b.getBundle(a,f)===void 0});if(0===g.length)return d();var h=b.getBundleAssets(f),i=[],j=g.reduce(function(b,a){var c=h.entryPoints[a];return c.reduce(function(b,c){var d=h.jsChunksById[c];return d?b.concat({name:a,id:c,assets:[].concat(d)}):b},b)},[]).filter(function(a){var c=a.id;return c=c.toString(),void 0===b.getBundle(c,f)&&(b.setBundle(c,0,f),!0)});j.forEach(function(a){var b=a.name,e=a.id,f=a.assets,g=f.map(function(a){return"".concat(h.basePath).concat(a)}),k=function(){i.push(f),i.length===j.length&&(void 0,d())};loadjs(g,e,{success:function success(){void 0,c.bundles[e]++,k()},error:function error(){console.error("load asset ".concat(b," (id: ").concat(e,") failed"),err),k()}})})},dyn:function dyn(a){var b=document.getElementById(a);if(!b)console.error("ERROR: fail retrieve dynamic data from element",a,"- get");else try{return JSON.parse(b.innerHTML)}catch(a){return console.error("ERROR: fail retrieve dynamic data from element","- parse"),{}}}}})(window); |
@@ -45,2 +45,3 @@ "use strict"; | ||
const name = info.name; | ||
const ns = info.ns; | ||
let subApp = _xarc.default.getSubApp(name) || { | ||
@@ -50,4 +51,4 @@ info | ||
if (!_xarc.default.getBundle(name)) { | ||
_xarc.default.setBundle(name, true); | ||
if (!_xarc.default.getBundle(name, ns)) { | ||
_xarc.default.setBundle(name, true, ns); | ||
} // subapp already loaded, do nothing and return the info | ||
@@ -240,3 +241,4 @@ | ||
onError, | ||
fallback | ||
fallback, | ||
ns | ||
}) { | ||
@@ -270,4 +272,4 @@ // TODO: timeout and callback | ||
if (_xarc.default.getBundle(name) === undefined) { | ||
_xarc.default.loadSubAppBundles(lname); | ||
if (_xarc.default.getBundle(name, ns) === undefined) { | ||
_xarc.default.loadSubAppBundles(lname, null, ns); | ||
} else if (!id && !onLoad) { | ||
@@ -274,0 +276,0 @@ const inlined = renderInline(); |
@@ -22,2 +22,6 @@ "use strict"; | ||
let xv1; | ||
const DEFAULT_NAMESPACE = "root"; | ||
const ensureNamespace = (namespace = DEFAULT_NAMESPACE) => namespace; | ||
return w.xarcV1 = xv1 = { | ||
@@ -113,8 +117,16 @@ IS_BROWSER: true, | ||
getBundle(name) { | ||
return name ? runtimeInfo.bundles[name.toLowerCase()] : undefined; | ||
getBundle(name, namespace) { | ||
namespace = ensureNamespace(namespace); | ||
if (!name || !runtimeInfo.bundles[namespace] || !runtimeInfo.bundles[namespace][name.toLowerCase()]) { | ||
return; | ||
} | ||
return runtimeInfo.bundles[namespace][name.toLowerCase()]; | ||
}, | ||
setBundle(name, state) { | ||
runtimeInfo.bundles[name.toLowerCase()] = state; | ||
setBundle(name, state, namespace) { | ||
namespace = ensureNamespace(namespace); | ||
runtimeInfo.bundles[namespace] = runtimeInfo.bundles[namespace] || {}; | ||
runtimeInfo.bundles[namespace][name.toLowerCase()] = state; | ||
}, | ||
@@ -293,21 +305,30 @@ | ||
markBundlesLoaded(ids) { | ||
markBundlesLoaded(ids, namespace) { | ||
[].concat(ids).forEach(id => { | ||
xv1.setBundle(id.toString(), 1); | ||
xv1.setBundle(id.toString(), 1, namespace); | ||
}); | ||
}, | ||
getBundleAssets() { | ||
getBundleAssets(namespace) { | ||
namespace = ensureNamespace(namespace); | ||
if (!runtimeInfo.bundleAssets) { | ||
runtimeInfo.bundleAssets = xv1.dyn("bundleAssets"); | ||
xv1.cdnInit(runtimeInfo.bundleAssets); | ||
runtimeInfo.bundleAssets = {}; | ||
} | ||
return runtimeInfo.bundleAssets; | ||
if (!runtimeInfo.bundleAssets[namespace]) { | ||
const bundleName = namespace === DEFAULT_NAMESPACE ? "bundleAssets" : `${namespace}Assets`; | ||
runtimeInfo.bundleAssets[namespace] = xv1.dyn(bundleName); | ||
const updater = xv1.rt.md === "undefined" ? xv1.cdnInit : xv1.cdnUpdate; | ||
updater(runtimeInfo.bundleAssets[namespace]); | ||
} | ||
return runtimeInfo.bundleAssets[namespace]; | ||
}, | ||
loadSubAppBundles(names, done) { | ||
loadSubAppBundles(names, done, namespace) { | ||
done = done || (() => {}); | ||
const toLoad = [].concat(names).filter(x => xv1.getBundle(x) === undefined); | ||
namespace = ensureNamespace(namespace); | ||
const toLoad = [].concat(names).filter(x => xv1.getBundle(x, namespace) === undefined); | ||
@@ -318,3 +339,3 @@ if (toLoad.length === 0) { | ||
const ba = xv1.getBundleAssets(); | ||
const ba = xv1.getBundleAssets(namespace); | ||
const loaded = []; | ||
@@ -337,4 +358,4 @@ const assetsToLoad = toLoad.reduce((a, name) => { | ||
if (xv1.getBundle(id) === undefined) { | ||
xv1.setBundle(id, 0); // mark as loading | ||
if (xv1.getBundle(id, namespace) === undefined) { | ||
xv1.setBundle(id, 0, namespace); // mark as loading | ||
@@ -341,0 +362,0 @@ return true; |
{ | ||
"name": "subapp-web", | ||
"version": "1.0.43", | ||
"version": "1.0.44", | ||
"description": "Electrode subapp web support", | ||
@@ -5,0 +5,0 @@ "module": "dist/dev/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
181589
2334