@ebay/muse-boot-default 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/dist/boot.js +1 -1
- package/build/dist/boot.js.map +1 -1
- package/build/dist/info.json +4 -4
- package/package.json +2 -2
package/build/dist/boot.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`#muse-loading-node{z-index:99999;place-items:center;width:100%;height:100%;transition:opacity .3s ease-out;display:grid;position:fixed;top:0%;left:0;line-height:1.5!important}#muse-loading-node .muse-loading-node-inner{place-items:center;display:grid;position:relative}#muse-loading-node .muse-loading-node-inner>img{width:60px;position:absolute}#muse-loading-node div>label{text-align:center;color:#888;font-family:Helvetica,Arial,sans-serif;font-size:13px;display:block}@keyframes ldio-klconu2768{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}.ldio-klconu2768 div{transform-origin:70px 72px;border-radius:50%;width:140px;height:140px;animation:1s linear infinite ldio-klconu2768;position:absolute;top:30px;left:30px;box-shadow:0 4px #00b4d8}.loadingio-spinner-eclipse-p5fn84x4bh8{width:200px;height:200px;display:inline-block;overflow:hidden}.ldio-klconu2768{backface-visibility:hidden;transform-origin:0 0;width:100%;height:100%;position:relative;transform:translateZ(0)scale(1)}.ldio-klconu2768 div{box-sizing:content-box}#muse-error-node{color:red;place-items:center;width:100%;height:100%;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:150%;display:grid;position:fixed;top:0;left:0}#muse-error-node .muse-error-node-inner{border:1px solid red;border-radius:3px;min-width:500px;max-width:800px;padding:15px}#muse-error-node h4{margin-top:0;margin-bottom:10px;font-size:16px}#muse-error-node li{padding:3px 0}#muse-error-node p{color:#777;font-size:13px;font-style:italic}#muse-error-node p a{color:#039be5;text-decoration:none}#muse-error-node p a:hover{text-decoration:underline}.muse-theme-dark{background-color:#141414}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),l=o((()=>{})),u=o(((e,t)=>{function n(e){try{let t=/((^@[^/]+\/)?([^@/]+))@(\d+)\.(\d+)\.(\d+)([^./][^/]*)?\/(.+)$/.exec(e);return t?{name:t[1],path:t[8],id:`${t[1]}/${t[8]}`,museId:e,version:t.slice(4,7).map(Number),preRelease:t[7]?.replace(`-`,``)}:null}catch{return null}}t.exports=n})),d=o(((e,t)=>{var n=u();function r(e){e.cache||={},e.modules||={},Object.keys(e.modules).forEach(t=>{let r=n(t);r&&(e.cache[r.id]||(e.cache[r.id]=[]),e.cache[r.id].push(r))})}t.exports=r})),f=o(((e,t)=>{var n=u(),r=d(),i=l(),a=(e,t)=>[0,1,2].map(n=>Math.abs(e[n]-t[n])),o=(e,t)=>{for(let n=0;n<3;n++){if(e[n]<t[n])return!0;if(e[n]>t[n])return!1}return!1},s=(e,t)=>!o(e,t);function c(e,t){if(e=e.replace(/\\/g,`/`).replace(/\/+/g,`/`),t||=MUSE_GLOBAL.__shared__,t.modules[e])return t.modules[e];let c=t.cache;c||=(r(t),t.cache);let l=n(e);if(!l)return null;let u=c[l.id];if(!u)return null;let d=u[0],f=a(l.version,d.version);for(let e=1;e<u.length;e++){let t=u[e];if(l.version.join(`.`)===t.version.join(`.`)){d=t;break}if(s(d.version,l.version)&&o(t.version,l.version))continue;let n=a(t.version,l.version);(o(d.version,l.version)&&s(t.version,l.version)||o(n,f))&&(f=n,d=t)}switch(i.matchVersion){case`major`:if(f[0]!==0)return null;break;case`minor`:if(f[0]!==0||f[1]!==0)return null;break;case`patch`:if(f[0]!==0||f[1]!==0||f[2]!==0)return null;break;case`all`:break;default:break}return t.modules[d.museId]}t.exports=c})),p=o(((e,t)=>{var n=f(),r={};t.exports=e=>{
|
|
1
|
+
(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`#muse-loading-node{z-index:99999;place-items:center;width:100%;height:100%;transition:opacity .3s ease-out;display:grid;position:fixed;top:0%;left:0;line-height:1.5!important}#muse-loading-node .muse-loading-node-inner{place-items:center;display:grid;position:relative}#muse-loading-node .muse-loading-node-inner>img{width:60px;position:absolute}#muse-loading-node div>label{text-align:center;color:#888;font-family:Helvetica,Arial,sans-serif;font-size:13px;display:block}@keyframes ldio-klconu2768{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}.ldio-klconu2768 div{transform-origin:70px 72px;border-radius:50%;width:140px;height:140px;animation:1s linear infinite ldio-klconu2768;position:absolute;top:30px;left:30px;box-shadow:0 4px #00b4d8}.loadingio-spinner-eclipse-p5fn84x4bh8{width:200px;height:200px;display:inline-block;overflow:hidden}.ldio-klconu2768{backface-visibility:hidden;transform-origin:0 0;width:100%;height:100%;position:relative;transform:translateZ(0)scale(1)}.ldio-klconu2768 div{box-sizing:content-box}#muse-error-node{color:red;place-items:center;width:100%;height:100%;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:150%;display:grid;position:fixed;top:0;left:0}#muse-error-node .muse-error-node-inner{border:1px solid red;border-radius:3px;min-width:500px;max-width:800px;padding:15px}#muse-error-node h4{margin-top:0;margin-bottom:10px;font-size:16px}#muse-error-node li{padding:3px 0}#muse-error-node p{color:#777;font-size:13px;font-style:italic}#muse-error-node p a{color:#039be5;text-decoration:none}#muse-error-node p a:hover{text-decoration:underline}.muse-theme-dark{background-color:#141414}`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),l=o((()=>{})),u=o(((e,t)=>{function n(e){try{let t=/((^@[^/]+\/)?([^@/]+))@(\d+)\.(\d+)\.(\d+)([^./][^/]*)?\/(.+)$/.exec(e);return t?{name:t[1],path:t[8],id:`${t[1]}/${t[8]}`,museId:e,version:t.slice(4,7).map(Number),preRelease:t[7]?.replace(`-`,``)}:null}catch{return null}}t.exports=n})),d=o(((e,t)=>{var n=u();function r(e){e.cache||={},e.modules||={},Object.keys(e.modules).forEach(t=>{let r=n(t);r&&(e.cache[r.id]||(e.cache[r.id]=[]),e.cache[r.id].push(r))})}t.exports=r})),f=o(((e,t)=>{var n=u(),r=d(),i=l(),a=(e,t)=>[0,1,2].map(n=>Math.abs(e[n]-t[n])),o=(e,t)=>{for(let n=0;n<3;n++){if(e[n]<t[n])return!0;if(e[n]>t[n])return!1}return!1},s=(e,t)=>!o(e,t);function c(e,t){if(e=e.replace(/\\/g,`/`).replace(/\/+/g,`/`),t||=MUSE_GLOBAL.__shared__,t.modules[e])return t.modules[e];let c=t.cache;c||=(r(t),t.cache);let l=n(e);if(!l)return null;let u=c[l.id];if(!u)return null;let d=u[0],f=a(l.version,d.version);for(let e=1;e<u.length;e++){let t=u[e];if(l.version.join(`.`)===t.version.join(`.`)){d=t;break}if(s(d.version,l.version)&&o(t.version,l.version))continue;let n=a(t.version,l.version);(o(d.version,l.version)&&s(t.version,l.version)||o(n,f))&&(f=n,d=t)}switch(i.matchVersion){case`major`:if(f[0]!==0)return null;break;case`minor`:if(f[0]!==0||f[1]!==0)return null;break;case`patch`:if(f[0]!==0||f[1]!==0||f[2]!==0)return null;break;case`all`:break;default:break}return t.modules[d.museId]}t.exports=c})),p=o(((e,t)=>{var n=f(),r={};t.exports=e=>{r[e]||(r[e]=n(e));let t=r[e];if(!t)throw Error(`Muse shared module not found: `+e);return t.__require__(t.id)}})),m=o(((e,t)=>{t.exports=function(){if(typeof self<`u`)return self;if(typeof window<`u`)return window;if(typeof global<`u`)return global;throw Error(`unable to locate global object`)}()})),h=o(((e,t)=>{var n=m(),r=u();function i(e,t){for(let i in e)r(i)&&(e[i],n.MUSE_GLOBAL.__shared__.modules[i]={id:i,__require__:t||(t=>e[t])})}t.exports=i})),g=c(o(((e,t)=>{t.exports={config:l(),require:p(),register:h(),parseMuseId:u(),findMuseModule:f()}}))(),1),_=`/assets/logo-CIFLYZ7b.png`,v={init(){let{app:e,cdn:t}=window.MUSE_GLOBAL,n=document.createElement(`div`);n.innerHTML=`
|
|
2
2
|
<div>
|
|
3
3
|
<div class='muse-loading-node-inner'>
|
|
4
4
|
<div class="loadingio-spinner-eclipse-p5fn84x4bh8"><div class="ldio-klconu2768"><div>
|
package/build/dist/boot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.js","names":["logo","museModules"],"sources":["../../node_modules/.pnpm/@ebay+muse-modules@1.0.29/node_modules/@ebay/muse-modules/config.js","../../node_modules/.pnpm/@ebay+muse-modules@1.0.29/node_modules/@ebay/muse-modules/parseMuseId.js","../../node_modules/.pnpm/@ebay+muse-modules@1.0.29/node_modules/@ebay/muse-modules/buildCache.js","../../node_modules/.pnpm/@ebay+muse-modules@1.0.29/node_modules/@ebay/muse-modules/findMuseModule.js","../../node_modules/.pnpm/@ebay+muse-modules@1.0.29/node_modules/@ebay/muse-modules/museRequire.js","../../node_modules/.pnpm/@ebay+muse-modules@1.0.29/node_modules/@ebay/muse-modules/getGlobal.js","../../node_modules/.pnpm/@ebay+muse-modules@1.0.29/node_modules/@ebay/muse-modules/register.js","../../node_modules/.pnpm/@ebay+muse-modules@1.0.29/node_modules/@ebay/muse-modules/index.js","../../src/logo.png","../../src/loading.js","../../src/error.js","../../src/registerSw.js","../../src/utils.js","../../src/msgEngine.js","../../src/urlListener.js","../../src/boot.js","../../src/index.js"],"sourcesContent":["const config = {\n matchVersion: 'all', // all|major|minor|patch\n};\n","/**\n * moduleId: muse module id example:\n * - lib1@1.0.3/src/index.js\n * - @ebay/nice-modal@1.2.3/src/index.ts // scoped package\n * - @ebay/nice-modal@1.2.3-alpha.1/src/index.ts // scoped package\n */\nfunction parseMuseId(museId) {\n try {\n const m = /((^@[^/]+\\/)?([^@/]+))@(\\d+)\\.(\\d+)\\.(\\d+)([^./][^/]*)?\\/(.+)$/.exec(museId);\n if (!m) return null;\n return {\n name: m[1],\n path: m[8],\n id: `${m[1]}/${m[8]}`,\n museId,\n version: m.slice(4, 7).map(Number),\n preRelease: m[7]?.replace('-', ''),\n };\n } catch (err) {\n return null;\n }\n}\n\nmodule.exports = parseMuseId;\n","const parseMuseId = require('./parseMuseId');\n\n/* \n Group modules by module's id (pkgName/path) to support multiple versions.\n For example:\n cache: {\n 'loadash/lib/get.js': [\n { moduleId: 'lodash@1.0.1/lib/get.js, name, version, ...},\n { moduleId: 'lodash@4.0.0/lib/get.js, name, version, ...},\n ]\n }\n*/\nfunction buildCache(obj) {\n if (!obj.cache) obj.cache = {};\n if (!obj.modules) obj.modules = {};\n\n Object.keys(obj.modules).forEach((mid) => {\n const m = parseMuseId(mid);\n if (!m) return;\n if (!obj.cache[m.id]) obj.cache[m.id] = [];\n obj.cache[m.id].push(m);\n });\n}\n\nmodule.exports = buildCache;\n","const parseMuseId = require('./parseMuseId');\nconst buildCache = require('./buildCache');\nconst config = require('./config');\n\n// Get the version diff, e.g: [1,2,3] - [1,2,4] = [0,0,1]\nconst verDiff = (v1, v2) => [0, 1, 2].map((i) => Math.abs(v1[i] - v2[i]));\n\n// Whether ver1 is less than ver2, e.g: [1,2,3] < [1,2,4]\n// This can also be used to compare version diff from verDiff()\nconst lt = (v1, v2) => {\n for (let i = 0; i < 3; i++) {\n if (v1[i] < v2[i]) return true;\n if (v1[i] > v2[i]) return false;\n }\n return false;\n};\n\nconst gt = (v1, v2) => !lt(v1, v2);\n\n/**\n * Resolve module to the greater and closest semantic version.\n * If there is only one version, use it.\n * If there are multiple versions, use the closest but greater one.\n *\n * NOTE: it doesn't support prerelease versions. e.g: 1.0.0-beta.1 will be treated as 1.0.0\n *\n * @param {String} museId example: @ebay/nice-modal-react@1.0.0/src/index.js\n * @param {*} museSharedModules { modules, cache }\n * @returns\n */\nfunction findMuseModule(museId, museShared) {\n museId = museId.replace(/\\\\/g, '/').replace(/\\/+/g, '/');\n if (!museShared) museShared = MUSE_GLOBAL.__shared__;\n\n if (museShared.modules[museId]) {\n return museShared.modules[museId];\n }\n\n let cache = museShared.cache;\n\n if (!cache) {\n // group different versions by module id\n buildCache(museShared);\n cache = museShared.cache;\n }\n\n const m = parseMuseId(museId);\n\n if (!m) return null;\n const candidates = cache[m.id];\n if (!candidates) return null;\n let picked = candidates[0];\n let minDiff = verDiff(m.version, picked.version);\n\n for (let i = 1; i < candidates.length; i++) {\n const c = candidates[i];\n\n // if same version, use it\n if (m.version.join('.') === c.version.join('.')) {\n picked = c;\n break;\n }\n\n // apply match version config\n\n // Ensure picked version is grater than target version\n if (gt(picked.version, m.version) && lt(c.version, m.version)) continue;\n\n // The version diff between the current version and the target version\n const currentDiff = verDiff(c.version, m.version);\n\n if ((lt(picked.version, m.version) && gt(c.version, m.version)) || lt(currentDiff, minDiff)) {\n minDiff = currentDiff;\n picked = c;\n }\n }\n\n switch (config.matchVersion) {\n case 'major':\n if (minDiff[0] !== 0) return null;\n break;\n case 'minor':\n if (minDiff[0] !== 0 || minDiff[1] !== 0) return null;\n break;\n case 'patch':\n if (minDiff[0] !== 0 || minDiff[1] !== 0 || minDiff[2] !== 0) return null;\n break;\n case 'all':\n break;\n default:\n break;\n }\n\n return museShared.modules[picked.museId];\n}\n\nmodule.exports = findMuseModule;\n","const findMuseModule = require('./findMuseModule');\n\nvar __muse_module_cache__ = {};\nmodule.exports = (museId) => {\n // Check if module is in cache\n var cachedModule = __muse_module_cache__[museId];\n if (!cachedModule) {\n museModule = cachedModule;\n __muse_module_cache__[museId] = findMuseModule(museId);\n }\n\n // Use module's require method to get the final module\n const m = __muse_module_cache__[museId];\n if (!m) throw new Error('Muse shared module not found: ' + museId);\n\n return m.__require__(m.id);\n};\n","const getGlobal = function () {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n};\n\nmodule.exports = getGlobal();\n","const theGlobal = require('./getGlobal');\nconst parseMuseId = require('./parseMuseId');\n/**\n * Register modules to muse module system.\n *\n * @param {Object} modules Key value object for Muse modules.\n * @param {Function} __require__ used to require the actual module, for example: __webpack_require__\n */\nfunction register(modules, __require__) {\n for (const mid in modules) {\n // If it's not muse module, continue\n if (!parseMuseId(mid)) continue;\n const m = modules[mid];\n theGlobal.MUSE_GLOBAL.__shared__.modules[mid] = {\n id: mid,\n __require__,\n };\n }\n}\nmodule.exports = register;\n","module.exports = {\n config: require('./config'),\n require: require('./museRequire'),\n register: require('./register'),\n parseMuseId: require('./parseMuseId'),\n findMuseModule: require('./findMuseModule'),\n};\n","export default \"__VITE_ASSET__VRAku6fjghkApIISiBWPzg__\"","import logo from './logo.png';\n\nconst loading = {\n init() {\n const { app, cdn } = window.MUSE_GLOBAL;\n const loadingDiv = document.createElement('div');\n const logoUrl = app.iconId\n ? `${cdn}/p/app-icon.${app.name}/v0.0.${app.iconId}/dist/icon.png`\n : logo;\n loadingDiv.innerHTML = `\n <div>\n <div class='muse-loading-node-inner'>\n <div class=\"loadingio-spinner-eclipse-p5fn84x4bh8\"><div class=\"ldio-klconu2768\"><div>\n </div></div></div>\n <img src=\"${logoUrl}\" aria-label=\"logo\" />\n </div>\n <label>Starting...</label>\n </div>\n `;\n loadingDiv.id = 'muse-loading-node';\n if (\n (app.config?.theme === 'dark' && !localStorage.getItem('muse.theme')) ||\n (localStorage.getItem('muse.theme') && localStorage.getItem('muse.theme') === 'dark')\n ) {\n document.body.classList.add('muse-theme-dark');\n }\n document.body.appendChild(loadingDiv);\n this.mountNode = loadingDiv;\n this.labelNode = loadingDiv.querySelector('label');\n },\n\n hide() {\n if (!this.mountNode) return;\n setTimeout(() => {\n this.mountNode.style.opacity = 0;\n }, 10);\n\n setTimeout(() => {\n document.body.removeChild(this.mountNode);\n delete this.mountNode;\n }, 800);\n\n delete this.labelNode;\n },\n\n showMessage(msg) {\n if (this.labelNode) this.labelNode.innerHTML = msg || '';\n },\n};\n\nexport default loading;\n","const error = {\n errors: [],\n init() {\n const errorDiv = document.createElement('div');\n errorDiv.innerHTML = ``;\n errorDiv.id = 'muse-error-node';\n document.body.appendChild(errorDiv);\n this.mountNode = errorDiv;\n },\n showMessage(msg) {\n const arr = msg?.splice ? msg : [msg];\n this.errors.push(...arr);\n this.update();\n },\n update() {\n if (!this.mountNode) this.init();\n\n const content =\n this.errors.length === 1\n ? `<div>${this.errors[0]}</div>`\n : `<ul>\n ${this.errors.map((err) => '<li>' + err + '</li>').join('')}\n </ul>`;\n this.mountNode.innerHTML = `\n <div class=\"muse-error-node-inner\">\n <h4>Failed to load:</h4>\n ${content}\n <p>* Unexpected error happened, please refresh to retry or <a href=\"${\n window.MUSE_GLOBAL.appConfig?.supportLink || '#'\n }\">contact support</a>.</p>\n </div>\n `;\n },\n};\n\nexport default error;\n","// Try to register service worker.\nimport loading from './loading';\n\nfunction registerSw() {\n const { serviceWorker } = window.MUSE_GLOBAL;\n if (!navigator.serviceWorker) return;\n if (serviceWorker && window.location.protocol === 'https:') {\n loading.showMessage('Registering Muse service worker.');\n return new Promise((resolve) => {\n let resolved = false;\n setTimeout(() => {\n if (!resolved) {\n console.log('Failed to register service worker in 10 seconds. Skip it.');\n resolve();\n }\n }, 10000);\n navigator.serviceWorker\n .register(serviceWorker, {})\n .then(function () {\n resolved = true;\n console.log('Service Worker register done.');\n resolve();\n })\n .catch(() => {\n resolved = true;\n console.log('Failed to register service worker, skip it.');\n resolve(); // Tolerate failures\n });\n });\n }\n}\n\nexport default registerSw;\n","import error from './error';\nconst noop = () => {};\n\nexport function load(plugin, callback) {\n callback = callback || noop;\n if (plugin.then && plugin.catch) {\n plugin.then(callback);\n return;\n }\n\n if (plugin.url) {\n return new Promise((resolve, reject) => {\n const head = document.querySelector('head');\n const script = document.createElement('script');\n script.setAttribute('crossorigin', 'anonymous');\n // script.crossOrigin = 'anonymous';\n script.src = plugin.url;\n if (1 || plugin.esModule) script.type = 'module'; // eslint-disable-line\n head.appendChild(script);\n script.onload = () => {\n callback();\n resolve();\n };\n // from unit tests, we resolve this Promise immediately. This is needed, as jest will never run the script.onload() function,\n // as it's not a real browser, making the Promise never resolve.\n if (process.env.NODE_ENV === 'test') {\n resolve();\n }\n script.onerror = () => {\n error.showMessage(`Failed to load resource: ${plugin.url} .`);\n reject();\n };\n });\n }\n}\n\nexport async function loadInParallel(items, callback = noop) {\n let count = 0;\n await Promise.all(\n items.map(async (item) => {\n await load(item);\n callback(++count);\n }),\n );\n}\n\nexport async function loadInSerial(items, callback = noop) {\n // const head = document.querySelector('head');\n // const script = document.createElement('script');\n // script.type = 'module';\n // script.textContent = `\n // console.log('This is a dummy script to trigger the onload event for loadInSerial.');\n // ${items\n // .map((p) => {\n // return 'import ' + JSON.stringify(p.url) + ';\\n';\n // })\n // .join('\\n')}\n // `;\n // head.appendChild(script);\n // script.setAttribute('crossorigin', 'anonymous');\n // script.crossOrigin = 'anonymous';\n // script.src = plugin.url;\n // if (1 || plugin.esModule) script.type = 'module';\n // head.appendChild(script);\n // script.onload = () => {\n // callback();\n // resolve();\n // };\n // from unit tests, we resolve this Promise immediately. This is needed, as jest will never run the script.onload() function,\n // as it's not a real browser, making the Promise never resolve.\n // if (process.env.NODE_ENV === 'test') {\n // resolve();\n // }\n // script.onerror = () => {\n // error.showMessage(`Failed to load resource: ${plugin.url} .`);\n // reject();\n // };\n\n let count = 0;\n for (const item of items) {\n await load(item);\n // await new Promise((resolve) => setTimeout(resolve, 1000)); // This is to ensure the UI gets a chance to update between plugin loads.\n callback(++count);\n }\n}\n\nexport function joinPath(p1, p2) {\n if (!p1.endsWith('/')) p1 += '/';\n if (p2.startsWith('/')) p2 = p2.replace(/^\\/+/, '');\n return p1 + p2;\n}\n\nexport function getPluginId(name) {\n if (name.startsWith('@')) return name.replace('/', '.');\n return name;\n}\n","// Message engine is used to communicate between main app and sub app via postMessage\nconst makeId = () => Math.random().toString(36).substring(2);\n\nconst msgEngine = {\n listeners: {},\n promises: {},\n iframes: {},\n register(key, iframe) {\n this.iframes[key] = iframe;\n },\n unregister(key) {\n delete this.iframes[key];\n },\n getIframe(iframe) {\n if (typeof iframe === 'string') return this.iframes[iframe];\n return iframe;\n },\n init() {\n // Assert a client is a Muse app\n this.addListener('handle-muse-app-check', (payload, msg) => {\n if (payload?.type === 'assert-muse-app' && msg.data?.from?.clientKey === 'parent') {\n // Tell parent I'm a Muse app.\n this.sendToParent({\n promiseId: msg?.data?.promiseId,\n data: {\n app: window.MUSE_GLOBAL.app.name,\n env: window.MUSE_GLOBAL.env.name,\n },\n });\n\n window.MUSE_GLOBAL.parentApp = msg?.data?.from;\n }\n });\n\n window.addEventListener(\n 'message',\n (msg) => {\n if (msg?.data?.type !== 'muse') return;\n console.log('on muse post msg: ', msg);\n if (msg?.data?.payload?.promiseId) {\n this.resolvePromise(msg.data.payload.promiseId, msg?.data.payload?.data);\n }\n Object.entries(this.listeners).forEach(([id, func]) => {\n try {\n func(msg.data.payload, msg);\n } catch (err) {\n console.log(`Warning: failed to process message \"${id}\"`, msg, err);\n }\n });\n },\n false,\n );\n },\n resolve(promiseId, payload) {\n // Todo: send\n },\n // a component could listen messages from other apps\n addListener(id, callback) {\n this.listeners[id] = callback;\n },\n removeListener(id) {\n delete this.listeners[id];\n },\n sendToChild(msg, iframe, isPromise = false) {\n let promise = null;\n let promiseHandler = null;\n let id = null;\n if (isPromise) {\n id = makeId();\n promise = new Promise((resolve, reject) => {\n promiseHandler = this.promises[id] = { resolve, reject };\n });\n }\n try {\n this.getIframe(iframe)?.contentWindow?.postMessage(\n {\n type: 'muse',\n promiseId: id,\n from: {\n app: window.MUSE_GLOBAL.appName,\n env: window.MUSE_GLOBAL.envName,\n clientKey: 'parent',\n },\n payload: msg,\n },\n '*',\n );\n } catch (err) {\n console.log(`Failed to post message to child: `, msg);\n if (promise) promiseHandler.reject(err);\n }\n return promise;\n },\n\n sendToParent(msg, isPromise = false) {\n let promise = null;\n let promiseHandler = null;\n let id = null;\n if (isPromise) {\n id = makeId();\n promise = new Promise((resolve, reject) => {\n promiseHandler = this.promises[id] = { resolve, reject };\n });\n }\n if (window.parent && window.parent !== window) {\n try {\n window.parent.postMessage(\n {\n type: 'muse',\n promiseId: id,\n from: {\n app: window.MUSE_GLOBAL.appName,\n env: window.MUSE_GLOBAL.envName,\n type: 'child',\n },\n payload: msg,\n },\n '*',\n );\n } catch (err) {\n console.log('Failed to send message to parent: ', msg);\n if (promise) promiseHandler.reject(err);\n }\n }\n return promise;\n },\n\n // assert the app in iframe is a muse app\n assertMuseApp(iframe) {\n return new Promise((resolve, reject) => {\n this.sendToChild({ type: 'assert-muse-app' }, this.getIframe(iframe), true).then(resolve);\n setTimeout(() => reject(new Error('Muse app check timeout.')), 300); // if no response in 300ms (normally 30ms), it means it's not a Muse app.\n });\n },\n\n getParentUrl() {\n return new Promise((resolve, reject) => {\n this.sendToParent({ type: 'get-parent-url' }, true).then(resolve);\n setTimeout(() => reject(new Error('Get parent url timeout.')), 300); // if no response in 300ms (normally 30ms), it means it's not a Muse app.\n });\n },\n\n parentNavigate(url) {\n this.sendToParent({ type: 'parent-navigate', url });\n },\n\n resolvePromise(promiseId, payload) {\n this.promises[promiseId]?.resolve(payload);\n delete this.promises[promiseId];\n },\n resolveParent(promiseId, payload) {\n msgEngine.sendToParent({ promiseId: promiseId, data: payload });\n },\n\n resolveChild(promiseId, payload, msg) {\n msgEngine.sendToChild({ promiseId: promiseId, data: payload }, msg?.source);\n },\n};\n\n// Assert a client is a Muse app\nmsgEngine.addListener('handle-muse-app-check', (payload, msg) => {\n if (payload?.type === 'assert-muse-app' && msg.data?.from?.clientKey === 'parent') {\n // Tell parent I'm a Muse app.\n msgEngine.resolveParent(msg?.data?.promiseId, {\n app: window.MUSE_GLOBAL.appName,\n env: window.MUSE_GLOBAL.envName,\n });\n }\n});\n\n// Allow to navigate from sub app\nmsgEngine.addListener('parent-navigate', (payload) => {\n if (payload?.type === 'parent-navigate' && payload?.url) {\n window.location.href = payload.url;\n }\n});\n\n// Allow to get url from parent\nmsgEngine.addListener('get-parent-url', (payload, msg) => {\n if (payload?.type === 'get-parent-url') {\n console.log('get-parent-url: ', window.location.href);\n msgEngine.resolveChild(msg?.data?.promiseId, window.location.href, msg);\n }\n});\n\nexport default msgEngine;\n","// Notify the parent of the url change\n// subapp => parent\n// In muse-react/src/common/history handle url change msg\n\nimport msgEngine from './msgEngine';\n\nconst patchHistoryMethod = (method) => {\n const history = window.history;\n const original = history[method];\n\n history[method] = function (state) {\n const result = original.apply(this, arguments);\n const event = new Event('muse_boot_' + method.toLowerCase());\n event.state = state;\n window.dispatchEvent(event);\n return result;\n };\n};\n\npatchHistoryMethod('pushState');\npatchHistoryMethod('replaceState');\n\nconst handleUrlChange = () => {\n msgEngine.sendToParent({\n type: 'child-route-change',\n path: window.location.href.replace(window.location.origin, ''),\n });\n};\nwindow.addEventListener('popstate', handleUrlChange);\nwindow.addEventListener('muse_boot_pushstate', handleUrlChange);\nwindow.addEventListener('muse_boot_replacestate', handleUrlChange);\n","import museModules from '@ebay/muse-modules';\nimport loading from './loading';\nimport error from './error';\nimport registerSw from './registerSw';\nimport { loadInParallel, loadInSerial, getPluginId } from './utils';\nimport msgEngine from './msgEngine';\nimport './urlListener';\nimport './style.css';\n\nasync function start() {\n // If MUSE_TEMP_temp-redirect-url has a value, then redirect to that url.\n // This is a one time redirect, so remove the value after redirecting.\n // It's used for sub app login flow.\n const tempRedirectUrl = window.sessionStorage.getItem('MUSE_TEMP_temp-redirect-url');\n if (tempRedirectUrl) {\n window.sessionStorage.removeItem('MUSE_TEMP_temp-redirect-url');\n window.location = tempRedirectUrl;\n return;\n }\n\n const mg = window.MUSE_GLOBAL;\n\n loading.showMessage('Starting...');\n const waitForLoaders = mg.waitForLoaders || [];\n\n // Get the config from both app and env\n // That is, app.config is the default, env.config can override any value on app.config\n const appConfig = Object.assign({}, mg.app?.config);\n Object.entries(mg.env?.config || {}).forEach(([key, value]) => {\n if (value !== null && value !== undefined && value !== '') {\n appConfig[key] = value;\n }\n });\n\n Object.assign(mg, {\n appVariables: mg.appVariables || {},\n pluginVariables: mg.pluginVariables || {},\n appConfig,\n msgEngine,\n loading,\n error,\n isSubApp: window.parent !== window,\n getUser: () => null,\n appEntries: mg.appEntries || [], // entries to start the app\n initEntries: mg.initEntries || [], // entries from init plugins\n pluginEntries: mg.pluginEntries || [], // entries from lib or normal plugins\n // Allow to register some func to wait for before starting the app\n waitFor: (asyncFuncOrPromise) => {\n waitForLoaders.push(asyncFuncOrPromise);\n },\n // TODO: get plugin assets public paths (assets in public folder)\n getPublicPath: (pluginName, assetPath) => {\n if (!assetPath) throw new Error('assetPath is required for getPublicPath method.');\n assetPath = assetPath.replace(/^\\/*/, '');\n const pluginId = getPluginId(pluginName);\n\n if (mg.isDev) {\n // for dev, check if there's local plugins\n const names = mg.plugins.find((p) => !!p.localPlugins)?.localPlugins;\n if (names && names.includes(pluginName)) {\n return `/muse-assets/local/p/${pluginId}/${assetPath}`;\n }\n }\n const currentPlugin = window.MUSE_GLOBAL.plugins?.find((p) => p.name === pluginName);\n if (!currentPlugin) return;\n let { version } = currentPlugin || {};\n if (!version.startsWith('v')) {\n version = `v${version}`;\n }\n let publicPath = `${window.MUSE_GLOBAL.cdn}/p/${pluginId}/${version}`;\n if (window.MUSE_GLOBAL.isDev || window.MUSE_GLOBAL.isLocal) {\n publicPath = publicPath + `/dev/${assetPath}`;\n } else {\n publicPath = publicPath + `/dist/${assetPath}`;\n }\n return publicPath;\n },\n // Muse shared modules global methods\n __shared__: {\n modules: {},\n register: museModules.register,\n require: museModules.require,\n parseMuseId: museModules.parseMuseId,\n },\n });\n\n const { cdn = '', initEntries, pluginEntries, appEntries, isDev = false, isE2eTest = false } = mg;\n let { plugins = [] } = window.MUSE_GLOBAL;\n\n // MUSE_CONFIG is for backward compatibility\n window.MUSE_CONFIG = mg;\n\n msgEngine.sendToParent({\n type: 'app-state-change',\n state: 'app-starting',\n });\n\n registerSw();\n\n // Print app plugins in dev console\n const bootPlugin = plugins.find((p) => p.type === 'boot');\n if (bootPlugin) {\n console.log(\n `Loading Muse app by ${bootPlugin.name}@${bootPlugin.version || bootPlugin.url}...`,\n );\n }\n\n /* Handle forcePlugins query parameter */\n const searchParams = new URLSearchParams(window.location.search);\n const forcePluginStr = searchParams.get('forcePlugins');\n if (forcePluginStr) {\n const forcePluginById = forcePluginStr\n .split(';')\n .filter(Boolean)\n .reduce((p, c) => {\n const separator = '@';\n const limit = 2;\n let prefix = '';\n if (c.startsWith('@') && c[0] === separator) {\n // Starts with @, means it's a scoped plugin\n c = c.substring(1);\n prefix = '@';\n }\n const arr = c.split(separator, limit);\n if (arr.length === limit) {\n const [name, type] = arr[0].split('!');\n p[`${prefix}${name}`] = {\n version: arr[1],\n type: type,\n };\n }\n return p;\n }, {});\n // Update or remove plugins from the list based on forcePlugins\n plugins = plugins\n .map((p) => {\n if (!forcePluginById[p.name]) return p;\n const newPlugin = { ...p, version: forcePluginById[p.name].version };\n delete forcePluginById[p.name];\n return newPlugin;\n })\n .filter((p) => p.version !== 'null');\n\n // Need to get the type of plugin from muse registry directly.\n for (const p in forcePluginById) {\n if (forcePluginById[p].version !== 'null') {\n plugins.push({\n name: p,\n type: forcePluginById[p].type,\n version: forcePluginById[p].version,\n });\n }\n }\n }\n\n console.log(`Plugins(${plugins.length}):`);\n // If a plugin has isLocal, it means its bundle is loaded somewhere else.\n // The registered plugin item is used to provide configurations. e.g plugin variables.\n plugins.forEach((p) => {\n let source = '';\n if (p.linkedTo) source = 'Linked to: ' + p.linkedTo;\n else if (p.isLocalLib) {\n source = 'Local:' + (/\\d{4,}/.exec(p.url)?.[0] || document.location.port); // find port number\n } else if (p.url) source = p.url;\n if (source) source = ` (${source})`;\n\n console.log(` * ${p.name}@${p.version || 'local'}${source}`);\n });\n msgEngine.sendToParent({\n type: 'app-state-change',\n state: 'app-loading',\n });\n // Load init plugins\n // Init plugins should be small and not depend on each other\n const initPluginsToLoad = plugins\n .filter((p) => p.type === 'init')\n .map((p) => {\n return {\n url:\n p.isLocal || p.linkedTo\n ? false\n : p.url || `${cdn}/p/${getPluginId(p.name)}/v${p.version}/dist/main.js`,\n ...p,\n };\n })\n .filter(Boolean);\n\n // Load init plugins\n if (initPluginsToLoad.length > 0) {\n loading.showMessage(`Loading init plugins 1/${initPluginsToLoad.length}...`);\n await loadInParallel(initPluginsToLoad, (loadedCount) =>\n loading.showMessage(\n `Loading init plugins ${Math.min(loadedCount + 1, initPluginsToLoad.length)}/${\n initPluginsToLoad.length\n }...`,\n ),\n );\n }\n\n // Exec init entries\n if (initEntries.length > 0) {\n loading.showMessage(`Executing init entries...`);\n initEntries.sort((a, b) => (a.order || 10) - (b.order || 10)); // sort by order\n for (const initEntry of initEntries) {\n // Allow an init entry to break the start of the app\n if ((await initEntry.func()) === false) return;\n }\n }\n\n // NOTE: init plugins have the opportunity to modify plugins list.\n // It's an expected behavior for some permission control.\n\n // Load normal and lib plugins\n const bundleDir = isDev ? 'dev' : isE2eTest ? 'test' : 'dist';\n const pluginsLoaded = {};\n\n const pluginsToLoad = plugins\n .filter((p) => p.type !== 'boot' && p.type !== 'init')\n .map((p) => {\n const result = {\n url:\n p.isLocal || p.linkedTo\n ? false\n : p.url || `${cdn}/p/${getPluginId(p.name)}/v${p.version}/${bundleDir}/main.js`,\n ...p, // if a plugin already has url, always use it\n };\n pluginsLoaded[result.url] = false;\n return result;\n })\n .filter(Boolean);\n\n // Load plugin bundles\n const libPluginsToLoad = pluginsToLoad\n .filter((p) => p.type === 'lib')\n .sort((a, b) => b.name.localeCompare(a.name));\n const normalPluginsToLoad = pluginsToLoad.filter((p) => p.type === 'normal' || !p.type);\n\n const libAndNormalPluginsToLoad = [...libPluginsToLoad, ...normalPluginsToLoad];\n const observer =\n typeof PerformanceObserver !== 'undefined' &&\n new PerformanceObserver((list) => {\n const urls = Object.keys(pluginsLoaded);\n for (const entry of list.getEntries()) {\n if (urls.some((u) => entry.name.endsWith(u))) {\n pluginsLoaded[entry.name] = true;\n loading.showMessage(\n `Loading plugins ${Object.values(pluginsLoaded).filter(Boolean).length}/${\n libAndNormalPluginsToLoad.length\n }...`,\n );\n }\n }\n });\n observer?.observe({ type: 'resource', buffered: true });\n loading.showMessage(`Loading plugins 1/${libAndNormalPluginsToLoad.length}...`);\n await new Promise((resolve, reject) => {\n const head = document.querySelector('head');\n const script = document.createElement('script');\n script.setAttribute('crossorigin', 'anonymous');\n script.crossOrigin = 'anonymous';\n\n script.type = 'module'; // eslint-disable-line\n mg.__onMusePluginsLoaded = resolve;\n // Sort libPluginsToLoad based on the \"deps\" property using topological sort\n const sortedLibPlugins = [];\n const visited = new Set();\n const pluginByName = Object.fromEntries(libPluginsToLoad.map((p) => [p.name, p]));\n function visit(plugin) {\n if (visited.has(plugin.name)) return;\n visited.add(plugin.name);\n for (const dep of plugin.deps || []) {\n if (pluginByName[dep]) visit(pluginByName[dep]);\n }\n sortedLibPlugins.push(plugin);\n }\n for (const plugin of libPluginsToLoad) {\n visit(plugin);\n }\n const textContent =\n [...sortedLibPlugins, ...normalPluginsToLoad]\n .map((p) => `import ${JSON.stringify(p.url)}; // ${p.name}\\n`)\n .join('') + 'window.MUSE_GLOBAL.__onMusePluginsLoaded();\\n';\n\n script.textContent = textContent;\n\n head.appendChild(script);\n });\n observer?.disconnect();\n\n // Exec plugin entries which are generated by building process\n // This ensures a fixed order for plugins to initialize\n if (pluginEntries.length > 0) {\n loading.showMessage(`Executing plugin entries...`);\n pluginEntries.forEach((entry) => entry.func());\n }\n\n // Wait for loader\n if (waitForLoaders.length > 0) {\n loading.showMessage(`Executing custom loaders ...`);\n const arr = await Promise.all(\n waitForLoaders.map(async (loader) => {\n // Usually a plugin waitFor a promise so that it doesn't need to wait for all plugins loaded before executing\n if (loader.then) return await loader;\n // If pass an async function, it executes while all plugins are loaded.\n else return await loader();\n }),\n );\n // If a loader returns false, then don't continue starting\n // NOTE: if a loader needs to show an error message, just throw an error.\n if (arr.some((s) => s === false)) return;\n }\n\n // Start the application\n let entryName = appConfig.entry;\n if (!entryName) {\n // If there isn't entry defined and there's only one app entry from the plugins list.\n // Then just use the only one.\n if (appEntries.length === 1) {\n entryName = appEntries[0].name;\n } else if (appEntries.length === 0) {\n throw new Error(\n 'No app entry found. You need a plugin deployed to the app to provide an app entry.',\n );\n } else {\n throw new Error(\n `Multiple entries found: ${appEntries\n .map((e) => e.name)\n .join(', ')}. You need to specify one entry in app config.`,\n );\n }\n }\n const entryApp = appEntries.find((e) => e.name === entryName);\n if (entryApp) {\n console.log(`Starting the app from ${entryName}...`);\n loading.showMessage(`Starting the app...`);\n await entryApp.func();\n } else {\n throw new Error(`The specified app entry was not found: ${entryName}.`);\n }\n loading.hide();\n}\n\nexport function bootstrap() {\n if (!window.MUSE_GLOBAL) {\n throw new Error('There must be a global window.MUSE_GLOBAL object');\n }\n\n loading.init();\n msgEngine.init();\n\n const timeStart = Date.now();\n const appStartExceptions = [];\n let status = 'success';\n let errorMsg;\n start()\n .then(() => {\n const timeEnd = Date.now();\n msgEngine.sendToParent({\n type: 'app-state-change',\n state: 'app-loaded',\n });\n console.log(`Muse app started in ${(timeEnd - timeStart) / 1000} seconds.`);\n })\n .catch((err) => {\n console.log('Failed to start the app.');\n status = 'failure';\n errorMsg = err?.message || 'App failed to start.';\n appStartExceptions.push(err);\n\n err && console.error(err);\n loading.hide();\n if (err?.message) {\n error.showMessage(err.message);\n }\n msgEngine.sendToParent({\n type: 'app-state-change',\n state: 'app-failed',\n });\n })\n .finally(() => {\n const bootCompleteEvent = new CustomEvent('muse_boot_completed', {\n detail: {\n result: status,\n metrics: [\n {\n name: 'app-start-result',\n payload: {\n duration: Date.now() - timeStart,\n status,\n errorMsg,\n url: document.location.href,\n },\n },\n {\n name: 'app-start-exceptions',\n payload: appStartExceptions,\n },\n ],\n },\n });\n window.dispatchEvent(bootCompleteEvent);\n });\n}\n","// boot plugin is used to load other plugins based on the app config\nimport { bootstrap } from './boot';\n\nbootstrap();\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"boot.js","names":["logo","museModules"],"sources":["../../node_modules/.pnpm/@ebay+muse-modules@2.0.0/node_modules/@ebay/muse-modules/config.js","../../node_modules/.pnpm/@ebay+muse-modules@2.0.0/node_modules/@ebay/muse-modules/parseMuseId.js","../../node_modules/.pnpm/@ebay+muse-modules@2.0.0/node_modules/@ebay/muse-modules/buildCache.js","../../node_modules/.pnpm/@ebay+muse-modules@2.0.0/node_modules/@ebay/muse-modules/findMuseModule.js","../../node_modules/.pnpm/@ebay+muse-modules@2.0.0/node_modules/@ebay/muse-modules/museRequire.js","../../node_modules/.pnpm/@ebay+muse-modules@2.0.0/node_modules/@ebay/muse-modules/getGlobal.js","../../node_modules/.pnpm/@ebay+muse-modules@2.0.0/node_modules/@ebay/muse-modules/register.js","../../node_modules/.pnpm/@ebay+muse-modules@2.0.0/node_modules/@ebay/muse-modules/index.js","../../src/logo.png","../../src/loading.js","../../src/error.js","../../src/registerSw.js","../../src/utils.js","../../src/msgEngine.js","../../src/urlListener.js","../../src/boot.js","../../src/index.js"],"sourcesContent":["const config = {\n matchVersion: 'all', // all|major|minor|patch\n};\n","/**\n * moduleId: muse module id example:\n * - lib1@1.0.3/src/index.js\n * - @ebay/nice-modal@1.2.3/src/index.ts // scoped package\n * - @ebay/nice-modal@1.2.3-alpha.1/src/index.ts // scoped package\n */\nfunction parseMuseId(museId) {\n try {\n const m = /((^@[^/]+\\/)?([^@/]+))@(\\d+)\\.(\\d+)\\.(\\d+)([^./][^/]*)?\\/(.+)$/.exec(museId);\n if (!m) return null;\n return {\n name: m[1],\n path: m[8],\n id: `${m[1]}/${m[8]}`,\n museId,\n version: m.slice(4, 7).map(Number),\n preRelease: m[7]?.replace('-', ''),\n };\n } catch (err) {\n return null;\n }\n}\n\nmodule.exports = parseMuseId;\n","const parseMuseId = require('./parseMuseId');\n\n/* \n Group modules by module's id (pkgName/path) to support multiple versions.\n For example:\n cache: {\n 'loadash/lib/get.js': [\n { moduleId: 'lodash@1.0.1/lib/get.js, name, version, ...},\n { moduleId: 'lodash@4.0.0/lib/get.js, name, version, ...},\n ]\n }\n*/\nfunction buildCache(obj) {\n if (!obj.cache) obj.cache = {};\n if (!obj.modules) obj.modules = {};\n\n Object.keys(obj.modules).forEach((mid) => {\n const m = parseMuseId(mid);\n if (!m) return;\n if (!obj.cache[m.id]) obj.cache[m.id] = [];\n obj.cache[m.id].push(m);\n });\n}\n\nmodule.exports = buildCache;\n","const parseMuseId = require('./parseMuseId');\nconst buildCache = require('./buildCache');\nconst config = require('./config');\n\n// Get the version diff, e.g: [1,2,3] - [1,2,4] = [0,0,1]\nconst verDiff = (v1, v2) => [0, 1, 2].map((i) => Math.abs(v1[i] - v2[i]));\n\n// Whether ver1 is less than ver2, e.g: [1,2,3] < [1,2,4]\n// This can also be used to compare version diff from verDiff()\nconst lt = (v1, v2) => {\n for (let i = 0; i < 3; i++) {\n if (v1[i] < v2[i]) return true;\n if (v1[i] > v2[i]) return false;\n }\n return false;\n};\n\nconst gt = (v1, v2) => !lt(v1, v2);\n\n/**\n * Resolve module to the greater and closest semantic version.\n * If there is only one version, use it.\n * If there are multiple versions, use the closest but greater one.\n *\n * NOTE: it doesn't support prerelease versions. e.g: 1.0.0-beta.1 will be treated as 1.0.0\n *\n * @param {String} museId example: @ebay/nice-modal-react@1.0.0/src/index.js\n * @param {*} museSharedModules { modules, cache }\n * @returns\n */\nfunction findMuseModule(museId, museShared) {\n museId = museId.replace(/\\\\/g, '/').replace(/\\/+/g, '/');\n if (!museShared) museShared = MUSE_GLOBAL.__shared__;\n\n if (museShared.modules[museId]) {\n return museShared.modules[museId];\n }\n\n let cache = museShared.cache;\n\n if (!cache) {\n // group different versions by module id\n buildCache(museShared);\n cache = museShared.cache;\n }\n\n const m = parseMuseId(museId);\n\n if (!m) return null;\n const candidates = cache[m.id];\n if (!candidates) return null;\n let picked = candidates[0];\n let minDiff = verDiff(m.version, picked.version);\n\n for (let i = 1; i < candidates.length; i++) {\n const c = candidates[i];\n\n // if same version, use it\n if (m.version.join('.') === c.version.join('.')) {\n picked = c;\n break;\n }\n\n // apply match version config\n\n // Ensure picked version is grater than target version\n if (gt(picked.version, m.version) && lt(c.version, m.version)) continue;\n\n // The version diff between the current version and the target version\n const currentDiff = verDiff(c.version, m.version);\n\n if ((lt(picked.version, m.version) && gt(c.version, m.version)) || lt(currentDiff, minDiff)) {\n minDiff = currentDiff;\n picked = c;\n }\n }\n\n switch (config.matchVersion) {\n case 'major':\n if (minDiff[0] !== 0) return null;\n break;\n case 'minor':\n if (minDiff[0] !== 0 || minDiff[1] !== 0) return null;\n break;\n case 'patch':\n if (minDiff[0] !== 0 || minDiff[1] !== 0 || minDiff[2] !== 0) return null;\n break;\n case 'all':\n break;\n default:\n break;\n }\n\n return museShared.modules[picked.museId];\n}\n\nmodule.exports = findMuseModule;\n","const findMuseModule = require('./findMuseModule');\n\nvar __muse_module_cache__ = {};\nmodule.exports = (museId) => {\n // Check if module is in cache\n var cachedModule = __muse_module_cache__[museId];\n if (!cachedModule) {\n __muse_module_cache__[museId] = findMuseModule(museId);\n }\n\n // Use module's require method to get the final module\n const m = __muse_module_cache__[museId];\n if (!m) throw new Error('Muse shared module not found: ' + museId);\n\n return m.__require__(m.id);\n};\n","const getGlobal = function () {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n};\n\nmodule.exports = getGlobal();\n","const theGlobal = require('./getGlobal');\nconst parseMuseId = require('./parseMuseId');\n/**\n * Register modules to muse module system.\n *\n * @param {Object} modules Key value object for Muse modules.\n * @param {Function} __require__ used to require the actual module, for example: __webpack_require__\n */\nfunction register(modules, __require__) {\n for (const mid in modules) {\n // If it's not muse module, continue\n if (!parseMuseId(mid)) continue;\n const m = modules[mid];\n theGlobal.MUSE_GLOBAL.__shared__.modules[mid] = {\n id: mid,\n __require__: __require__ || ((id) => modules[id]),\n };\n }\n}\nmodule.exports = register;\n","module.exports = {\n config: require('./config'),\n require: require('./museRequire'),\n register: require('./register'),\n parseMuseId: require('./parseMuseId'),\n findMuseModule: require('./findMuseModule'),\n};\n","export default \"__VITE_ASSET__VRAku6fjghkApIISiBWPzg__\"","import logo from './logo.png';\n\nconst loading = {\n init() {\n const { app, cdn } = window.MUSE_GLOBAL;\n const loadingDiv = document.createElement('div');\n const logoUrl = app.iconId\n ? `${cdn}/p/app-icon.${app.name}/v0.0.${app.iconId}/dist/icon.png`\n : logo;\n loadingDiv.innerHTML = `\n <div>\n <div class='muse-loading-node-inner'>\n <div class=\"loadingio-spinner-eclipse-p5fn84x4bh8\"><div class=\"ldio-klconu2768\"><div>\n </div></div></div>\n <img src=\"${logoUrl}\" aria-label=\"logo\" />\n </div>\n <label>Starting...</label>\n </div>\n `;\n loadingDiv.id = 'muse-loading-node';\n if (\n (app.config?.theme === 'dark' && !localStorage.getItem('muse.theme')) ||\n (localStorage.getItem('muse.theme') && localStorage.getItem('muse.theme') === 'dark')\n ) {\n document.body.classList.add('muse-theme-dark');\n }\n document.body.appendChild(loadingDiv);\n this.mountNode = loadingDiv;\n this.labelNode = loadingDiv.querySelector('label');\n },\n\n hide() {\n if (!this.mountNode) return;\n setTimeout(() => {\n this.mountNode.style.opacity = 0;\n }, 10);\n\n setTimeout(() => {\n document.body.removeChild(this.mountNode);\n delete this.mountNode;\n }, 800);\n\n delete this.labelNode;\n },\n\n showMessage(msg) {\n if (this.labelNode) this.labelNode.innerHTML = msg || '';\n },\n};\n\nexport default loading;\n","const error = {\n errors: [],\n init() {\n const errorDiv = document.createElement('div');\n errorDiv.innerHTML = ``;\n errorDiv.id = 'muse-error-node';\n document.body.appendChild(errorDiv);\n this.mountNode = errorDiv;\n },\n showMessage(msg) {\n const arr = msg?.splice ? msg : [msg];\n this.errors.push(...arr);\n this.update();\n },\n update() {\n if (!this.mountNode) this.init();\n\n const content =\n this.errors.length === 1\n ? `<div>${this.errors[0]}</div>`\n : `<ul>\n ${this.errors.map((err) => '<li>' + err + '</li>').join('')}\n </ul>`;\n this.mountNode.innerHTML = `\n <div class=\"muse-error-node-inner\">\n <h4>Failed to load:</h4>\n ${content}\n <p>* Unexpected error happened, please refresh to retry or <a href=\"${\n window.MUSE_GLOBAL.appConfig?.supportLink || '#'\n }\">contact support</a>.</p>\n </div>\n `;\n },\n};\n\nexport default error;\n","// Try to register service worker.\nimport loading from './loading';\n\nfunction registerSw() {\n const { serviceWorker } = window.MUSE_GLOBAL;\n if (!navigator.serviceWorker) return;\n if (serviceWorker && window.location.protocol === 'https:') {\n loading.showMessage('Registering Muse service worker.');\n return new Promise((resolve) => {\n let resolved = false;\n setTimeout(() => {\n if (!resolved) {\n console.log('Failed to register service worker in 10 seconds. Skip it.');\n resolve();\n }\n }, 10000);\n navigator.serviceWorker\n .register(serviceWorker, {})\n .then(function () {\n resolved = true;\n console.log('Service Worker register done.');\n resolve();\n })\n .catch(() => {\n resolved = true;\n console.log('Failed to register service worker, skip it.');\n resolve(); // Tolerate failures\n });\n });\n }\n}\n\nexport default registerSw;\n","import error from './error';\nconst noop = () => {};\n\nexport function load(plugin, callback) {\n callback = callback || noop;\n if (plugin.then && plugin.catch) {\n plugin.then(callback);\n return;\n }\n\n if (plugin.url) {\n return new Promise((resolve, reject) => {\n const head = document.querySelector('head');\n const script = document.createElement('script');\n script.setAttribute('crossorigin', 'anonymous');\n // script.crossOrigin = 'anonymous';\n script.src = plugin.url;\n if (1 || plugin.esModule) script.type = 'module'; // eslint-disable-line\n head.appendChild(script);\n script.onload = () => {\n callback();\n resolve();\n };\n // from unit tests, we resolve this Promise immediately. This is needed, as jest will never run the script.onload() function,\n // as it's not a real browser, making the Promise never resolve.\n if (process.env.NODE_ENV === 'test') {\n resolve();\n }\n script.onerror = () => {\n error.showMessage(`Failed to load resource: ${plugin.url} .`);\n reject();\n };\n });\n }\n}\n\nexport async function loadInParallel(items, callback = noop) {\n let count = 0;\n await Promise.all(\n items.map(async (item) => {\n await load(item);\n callback(++count);\n }),\n );\n}\n\nexport async function loadInSerial(items, callback = noop) {\n // const head = document.querySelector('head');\n // const script = document.createElement('script');\n // script.type = 'module';\n // script.textContent = `\n // console.log('This is a dummy script to trigger the onload event for loadInSerial.');\n // ${items\n // .map((p) => {\n // return 'import ' + JSON.stringify(p.url) + ';\\n';\n // })\n // .join('\\n')}\n // `;\n // head.appendChild(script);\n // script.setAttribute('crossorigin', 'anonymous');\n // script.crossOrigin = 'anonymous';\n // script.src = plugin.url;\n // if (1 || plugin.esModule) script.type = 'module';\n // head.appendChild(script);\n // script.onload = () => {\n // callback();\n // resolve();\n // };\n // from unit tests, we resolve this Promise immediately. This is needed, as jest will never run the script.onload() function,\n // as it's not a real browser, making the Promise never resolve.\n // if (process.env.NODE_ENV === 'test') {\n // resolve();\n // }\n // script.onerror = () => {\n // error.showMessage(`Failed to load resource: ${plugin.url} .`);\n // reject();\n // };\n\n let count = 0;\n for (const item of items) {\n await load(item);\n // await new Promise((resolve) => setTimeout(resolve, 1000)); // This is to ensure the UI gets a chance to update between plugin loads.\n callback(++count);\n }\n}\n\nexport function joinPath(p1, p2) {\n if (!p1.endsWith('/')) p1 += '/';\n if (p2.startsWith('/')) p2 = p2.replace(/^\\/+/, '');\n return p1 + p2;\n}\n\nexport function getPluginId(name) {\n if (name.startsWith('@')) return name.replace('/', '.');\n return name;\n}\n","// Message engine is used to communicate between main app and sub app via postMessage\nconst makeId = () => Math.random().toString(36).substring(2);\n\nconst msgEngine = {\n listeners: {},\n promises: {},\n iframes: {},\n register(key, iframe) {\n this.iframes[key] = iframe;\n },\n unregister(key) {\n delete this.iframes[key];\n },\n getIframe(iframe) {\n if (typeof iframe === 'string') return this.iframes[iframe];\n return iframe;\n },\n init() {\n // Assert a client is a Muse app\n this.addListener('handle-muse-app-check', (payload, msg) => {\n if (payload?.type === 'assert-muse-app' && msg.data?.from?.clientKey === 'parent') {\n // Tell parent I'm a Muse app.\n this.sendToParent({\n promiseId: msg?.data?.promiseId,\n data: {\n app: window.MUSE_GLOBAL.app.name,\n env: window.MUSE_GLOBAL.env.name,\n },\n });\n\n window.MUSE_GLOBAL.parentApp = msg?.data?.from;\n }\n });\n\n window.addEventListener(\n 'message',\n (msg) => {\n if (msg?.data?.type !== 'muse') return;\n console.log('on muse post msg: ', msg);\n if (msg?.data?.payload?.promiseId) {\n this.resolvePromise(msg.data.payload.promiseId, msg?.data.payload?.data);\n }\n Object.entries(this.listeners).forEach(([id, func]) => {\n try {\n func(msg.data.payload, msg);\n } catch (err) {\n console.log(`Warning: failed to process message \"${id}\"`, msg, err);\n }\n });\n },\n false,\n );\n },\n resolve(promiseId, payload) {\n // Todo: send\n },\n // a component could listen messages from other apps\n addListener(id, callback) {\n this.listeners[id] = callback;\n },\n removeListener(id) {\n delete this.listeners[id];\n },\n sendToChild(msg, iframe, isPromise = false) {\n let promise = null;\n let promiseHandler = null;\n let id = null;\n if (isPromise) {\n id = makeId();\n promise = new Promise((resolve, reject) => {\n promiseHandler = this.promises[id] = { resolve, reject };\n });\n }\n try {\n this.getIframe(iframe)?.contentWindow?.postMessage(\n {\n type: 'muse',\n promiseId: id,\n from: {\n app: window.MUSE_GLOBAL.appName,\n env: window.MUSE_GLOBAL.envName,\n clientKey: 'parent',\n },\n payload: msg,\n },\n '*',\n );\n } catch (err) {\n console.log(`Failed to post message to child: `, msg);\n if (promise) promiseHandler.reject(err);\n }\n return promise;\n },\n\n sendToParent(msg, isPromise = false) {\n let promise = null;\n let promiseHandler = null;\n let id = null;\n if (isPromise) {\n id = makeId();\n promise = new Promise((resolve, reject) => {\n promiseHandler = this.promises[id] = { resolve, reject };\n });\n }\n if (window.parent && window.parent !== window) {\n try {\n window.parent.postMessage(\n {\n type: 'muse',\n promiseId: id,\n from: {\n app: window.MUSE_GLOBAL.appName,\n env: window.MUSE_GLOBAL.envName,\n type: 'child',\n },\n payload: msg,\n },\n '*',\n );\n } catch (err) {\n console.log('Failed to send message to parent: ', msg);\n if (promise) promiseHandler.reject(err);\n }\n }\n return promise;\n },\n\n // assert the app in iframe is a muse app\n assertMuseApp(iframe) {\n return new Promise((resolve, reject) => {\n this.sendToChild({ type: 'assert-muse-app' }, this.getIframe(iframe), true).then(resolve);\n setTimeout(() => reject(new Error('Muse app check timeout.')), 300); // if no response in 300ms (normally 30ms), it means it's not a Muse app.\n });\n },\n\n getParentUrl() {\n return new Promise((resolve, reject) => {\n this.sendToParent({ type: 'get-parent-url' }, true).then(resolve);\n setTimeout(() => reject(new Error('Get parent url timeout.')), 300); // if no response in 300ms (normally 30ms), it means it's not a Muse app.\n });\n },\n\n parentNavigate(url) {\n this.sendToParent({ type: 'parent-navigate', url });\n },\n\n resolvePromise(promiseId, payload) {\n this.promises[promiseId]?.resolve(payload);\n delete this.promises[promiseId];\n },\n resolveParent(promiseId, payload) {\n msgEngine.sendToParent({ promiseId: promiseId, data: payload });\n },\n\n resolveChild(promiseId, payload, msg) {\n msgEngine.sendToChild({ promiseId: promiseId, data: payload }, msg?.source);\n },\n};\n\n// Assert a client is a Muse app\nmsgEngine.addListener('handle-muse-app-check', (payload, msg) => {\n if (payload?.type === 'assert-muse-app' && msg.data?.from?.clientKey === 'parent') {\n // Tell parent I'm a Muse app.\n msgEngine.resolveParent(msg?.data?.promiseId, {\n app: window.MUSE_GLOBAL.appName,\n env: window.MUSE_GLOBAL.envName,\n });\n }\n});\n\n// Allow to navigate from sub app\nmsgEngine.addListener('parent-navigate', (payload) => {\n if (payload?.type === 'parent-navigate' && payload?.url) {\n window.location.href = payload.url;\n }\n});\n\n// Allow to get url from parent\nmsgEngine.addListener('get-parent-url', (payload, msg) => {\n if (payload?.type === 'get-parent-url') {\n console.log('get-parent-url: ', window.location.href);\n msgEngine.resolveChild(msg?.data?.promiseId, window.location.href, msg);\n }\n});\n\nexport default msgEngine;\n","// Notify the parent of the url change\n// subapp => parent\n// In muse-react/src/common/history handle url change msg\n\nimport msgEngine from './msgEngine';\n\nconst patchHistoryMethod = (method) => {\n const history = window.history;\n const original = history[method];\n\n history[method] = function (state) {\n const result = original.apply(this, arguments);\n const event = new Event('muse_boot_' + method.toLowerCase());\n event.state = state;\n window.dispatchEvent(event);\n return result;\n };\n};\n\npatchHistoryMethod('pushState');\npatchHistoryMethod('replaceState');\n\nconst handleUrlChange = () => {\n msgEngine.sendToParent({\n type: 'child-route-change',\n path: window.location.href.replace(window.location.origin, ''),\n });\n};\nwindow.addEventListener('popstate', handleUrlChange);\nwindow.addEventListener('muse_boot_pushstate', handleUrlChange);\nwindow.addEventListener('muse_boot_replacestate', handleUrlChange);\n","import museModules from '@ebay/muse-modules';\nimport loading from './loading';\nimport error from './error';\nimport registerSw from './registerSw';\nimport { loadInParallel, loadInSerial, getPluginId } from './utils';\nimport msgEngine from './msgEngine';\nimport './urlListener';\nimport './style.css';\n\nasync function start() {\n // If MUSE_TEMP_temp-redirect-url has a value, then redirect to that url.\n // This is a one time redirect, so remove the value after redirecting.\n // It's used for sub app login flow.\n const tempRedirectUrl = window.sessionStorage.getItem('MUSE_TEMP_temp-redirect-url');\n if (tempRedirectUrl) {\n window.sessionStorage.removeItem('MUSE_TEMP_temp-redirect-url');\n window.location = tempRedirectUrl;\n return;\n }\n\n const mg = window.MUSE_GLOBAL;\n\n loading.showMessage('Starting...');\n const waitForLoaders = mg.waitForLoaders || [];\n\n // Get the config from both app and env\n // That is, app.config is the default, env.config can override any value on app.config\n const appConfig = Object.assign({}, mg.app?.config);\n Object.entries(mg.env?.config || {}).forEach(([key, value]) => {\n if (value !== null && value !== undefined && value !== '') {\n appConfig[key] = value;\n }\n });\n\n Object.assign(mg, {\n appVariables: mg.appVariables || {},\n pluginVariables: mg.pluginVariables || {},\n appConfig,\n msgEngine,\n loading,\n error,\n isSubApp: window.parent !== window,\n getUser: () => null,\n appEntries: mg.appEntries || [], // entries to start the app\n initEntries: mg.initEntries || [], // entries from init plugins\n pluginEntries: mg.pluginEntries || [], // entries from lib or normal plugins\n // Allow to register some func to wait for before starting the app\n waitFor: (asyncFuncOrPromise) => {\n waitForLoaders.push(asyncFuncOrPromise);\n },\n // TODO: get plugin assets public paths (assets in public folder)\n getPublicPath: (pluginName, assetPath) => {\n if (!assetPath) throw new Error('assetPath is required for getPublicPath method.');\n assetPath = assetPath.replace(/^\\/*/, '');\n const pluginId = getPluginId(pluginName);\n\n if (mg.isDev) {\n // for dev, check if there's local plugins\n const names = mg.plugins.find((p) => !!p.localPlugins)?.localPlugins;\n if (names && names.includes(pluginName)) {\n return `/muse-assets/local/p/${pluginId}/${assetPath}`;\n }\n }\n const currentPlugin = window.MUSE_GLOBAL.plugins?.find((p) => p.name === pluginName);\n if (!currentPlugin) return;\n let { version } = currentPlugin || {};\n if (!version.startsWith('v')) {\n version = `v${version}`;\n }\n let publicPath = `${window.MUSE_GLOBAL.cdn}/p/${pluginId}/${version}`;\n if (window.MUSE_GLOBAL.isDev || window.MUSE_GLOBAL.isLocal) {\n publicPath = publicPath + `/dev/${assetPath}`;\n } else {\n publicPath = publicPath + `/dist/${assetPath}`;\n }\n return publicPath;\n },\n // Muse shared modules global methods\n __shared__: {\n modules: {},\n register: museModules.register,\n require: museModules.require,\n parseMuseId: museModules.parseMuseId,\n },\n });\n\n const { cdn = '', initEntries, pluginEntries, appEntries, isDev = false, isE2eTest = false } = mg;\n let { plugins = [] } = window.MUSE_GLOBAL;\n\n // MUSE_CONFIG is for backward compatibility\n window.MUSE_CONFIG = mg;\n\n msgEngine.sendToParent({\n type: 'app-state-change',\n state: 'app-starting',\n });\n\n registerSw();\n\n // Print app plugins in dev console\n const bootPlugin = plugins.find((p) => p.type === 'boot');\n if (bootPlugin) {\n console.log(\n `Loading Muse app by ${bootPlugin.name}@${bootPlugin.version || bootPlugin.url}...`,\n );\n }\n\n /* Handle forcePlugins query parameter */\n const searchParams = new URLSearchParams(window.location.search);\n const forcePluginStr = searchParams.get('forcePlugins');\n if (forcePluginStr) {\n const forcePluginById = forcePluginStr\n .split(';')\n .filter(Boolean)\n .reduce((p, c) => {\n const separator = '@';\n const limit = 2;\n let prefix = '';\n if (c.startsWith('@') && c[0] === separator) {\n // Starts with @, means it's a scoped plugin\n c = c.substring(1);\n prefix = '@';\n }\n const arr = c.split(separator, limit);\n if (arr.length === limit) {\n const [name, type] = arr[0].split('!');\n p[`${prefix}${name}`] = {\n version: arr[1],\n type: type,\n };\n }\n return p;\n }, {});\n // Update or remove plugins from the list based on forcePlugins\n plugins = plugins\n .map((p) => {\n if (!forcePluginById[p.name]) return p;\n const newPlugin = { ...p, version: forcePluginById[p.name].version };\n delete forcePluginById[p.name];\n return newPlugin;\n })\n .filter((p) => p.version !== 'null');\n\n // Need to get the type of plugin from muse registry directly.\n for (const p in forcePluginById) {\n if (forcePluginById[p].version !== 'null') {\n plugins.push({\n name: p,\n type: forcePluginById[p].type,\n version: forcePluginById[p].version,\n });\n }\n }\n }\n\n console.log(`Plugins(${plugins.length}):`);\n // If a plugin has isLocal, it means its bundle is loaded somewhere else.\n // The registered plugin item is used to provide configurations. e.g plugin variables.\n plugins.forEach((p) => {\n let source = '';\n if (p.linkedTo) source = 'Linked to: ' + p.linkedTo;\n else if (p.isLocalLib) {\n source = 'Local:' + (/\\d{4,}/.exec(p.url)?.[0] || document.location.port); // find port number\n } else if (p.url) source = p.url;\n if (source) source = ` (${source})`;\n\n console.log(` * ${p.name}@${p.version || 'local'}${source}`);\n });\n msgEngine.sendToParent({\n type: 'app-state-change',\n state: 'app-loading',\n });\n // Load init plugins\n // Init plugins should be small and not depend on each other\n const initPluginsToLoad = plugins\n .filter((p) => p.type === 'init')\n .map((p) => {\n return {\n url:\n p.isLocal || p.linkedTo\n ? false\n : p.url || `${cdn}/p/${getPluginId(p.name)}/v${p.version}/dist/main.js`,\n ...p,\n };\n })\n .filter(Boolean);\n\n // Load init plugins\n if (initPluginsToLoad.length > 0) {\n loading.showMessage(`Loading init plugins 1/${initPluginsToLoad.length}...`);\n await loadInParallel(initPluginsToLoad, (loadedCount) =>\n loading.showMessage(\n `Loading init plugins ${Math.min(loadedCount + 1, initPluginsToLoad.length)}/${\n initPluginsToLoad.length\n }...`,\n ),\n );\n }\n\n // Exec init entries\n if (initEntries.length > 0) {\n loading.showMessage(`Executing init entries...`);\n initEntries.sort((a, b) => (a.order || 10) - (b.order || 10)); // sort by order\n for (const initEntry of initEntries) {\n // Allow an init entry to break the start of the app\n if ((await initEntry.func()) === false) return;\n }\n }\n\n // NOTE: init plugins have the opportunity to modify plugins list.\n // It's an expected behavior for some permission control.\n\n // Load normal and lib plugins\n const bundleDir = isDev ? 'dev' : isE2eTest ? 'test' : 'dist';\n const pluginsLoaded = {};\n\n const pluginsToLoad = plugins\n .filter((p) => p.type !== 'boot' && p.type !== 'init')\n .map((p) => {\n const result = {\n url:\n p.isLocal || p.linkedTo\n ? false\n : p.url || `${cdn}/p/${getPluginId(p.name)}/v${p.version}/${bundleDir}/main.js`,\n ...p, // if a plugin already has url, always use it\n };\n pluginsLoaded[result.url] = false;\n return result;\n })\n .filter(Boolean);\n\n // Load plugin bundles\n const libPluginsToLoad = pluginsToLoad\n .filter((p) => p.type === 'lib')\n .sort((a, b) => b.name.localeCompare(a.name));\n const normalPluginsToLoad = pluginsToLoad.filter((p) => p.type === 'normal' || !p.type);\n\n const libAndNormalPluginsToLoad = [...libPluginsToLoad, ...normalPluginsToLoad];\n const observer =\n typeof PerformanceObserver !== 'undefined' &&\n new PerformanceObserver((list) => {\n const urls = Object.keys(pluginsLoaded);\n for (const entry of list.getEntries()) {\n if (urls.some((u) => entry.name.endsWith(u))) {\n pluginsLoaded[entry.name] = true;\n loading.showMessage(\n `Loading plugins ${Object.values(pluginsLoaded).filter(Boolean).length}/${\n libAndNormalPluginsToLoad.length\n }...`,\n );\n }\n }\n });\n observer?.observe({ type: 'resource', buffered: true });\n loading.showMessage(`Loading plugins 1/${libAndNormalPluginsToLoad.length}...`);\n await new Promise((resolve, reject) => {\n const head = document.querySelector('head');\n const script = document.createElement('script');\n script.setAttribute('crossorigin', 'anonymous');\n script.crossOrigin = 'anonymous';\n\n script.type = 'module'; // eslint-disable-line\n mg.__onMusePluginsLoaded = resolve;\n // Sort libPluginsToLoad based on the \"deps\" property using topological sort\n const sortedLibPlugins = [];\n const visited = new Set();\n const pluginByName = Object.fromEntries(libPluginsToLoad.map((p) => [p.name, p]));\n function visit(plugin) {\n if (visited.has(plugin.name)) return;\n visited.add(plugin.name);\n for (const dep of plugin.deps || []) {\n if (pluginByName[dep]) visit(pluginByName[dep]);\n }\n sortedLibPlugins.push(plugin);\n }\n for (const plugin of libPluginsToLoad) {\n visit(plugin);\n }\n const textContent =\n [...sortedLibPlugins, ...normalPluginsToLoad]\n .map((p) => `import ${JSON.stringify(p.url)}; // ${p.name}\\n`)\n .join('') + 'window.MUSE_GLOBAL.__onMusePluginsLoaded();\\n';\n\n script.textContent = textContent;\n\n head.appendChild(script);\n });\n observer?.disconnect();\n\n // Exec plugin entries which are generated by building process\n // This ensures a fixed order for plugins to initialize\n if (pluginEntries.length > 0) {\n loading.showMessage(`Executing plugin entries...`);\n pluginEntries.forEach((entry) => entry.func());\n }\n\n // Wait for loader\n if (waitForLoaders.length > 0) {\n loading.showMessage(`Executing custom loaders ...`);\n const arr = await Promise.all(\n waitForLoaders.map(async (loader) => {\n // Usually a plugin waitFor a promise so that it doesn't need to wait for all plugins loaded before executing\n if (loader.then) return await loader;\n // If pass an async function, it executes while all plugins are loaded.\n else return await loader();\n }),\n );\n // If a loader returns false, then don't continue starting\n // NOTE: if a loader needs to show an error message, just throw an error.\n if (arr.some((s) => s === false)) return;\n }\n\n // Start the application\n let entryName = appConfig.entry;\n if (!entryName) {\n // If there isn't entry defined and there's only one app entry from the plugins list.\n // Then just use the only one.\n if (appEntries.length === 1) {\n entryName = appEntries[0].name;\n } else if (appEntries.length === 0) {\n throw new Error(\n 'No app entry found. You need a plugin deployed to the app to provide an app entry.',\n );\n } else {\n throw new Error(\n `Multiple entries found: ${appEntries\n .map((e) => e.name)\n .join(', ')}. You need to specify one entry in app config.`,\n );\n }\n }\n const entryApp = appEntries.find((e) => e.name === entryName);\n if (entryApp) {\n console.log(`Starting the app from ${entryName}...`);\n loading.showMessage(`Starting the app...`);\n await entryApp.func();\n } else {\n throw new Error(`The specified app entry was not found: ${entryName}.`);\n }\n loading.hide();\n}\n\nexport function bootstrap() {\n if (!window.MUSE_GLOBAL) {\n throw new Error('There must be a global window.MUSE_GLOBAL object');\n }\n\n loading.init();\n msgEngine.init();\n\n const timeStart = Date.now();\n const appStartExceptions = [];\n let status = 'success';\n let errorMsg;\n start()\n .then(() => {\n const timeEnd = Date.now();\n msgEngine.sendToParent({\n type: 'app-state-change',\n state: 'app-loaded',\n });\n console.log(`Muse app started in ${(timeEnd - timeStart) / 1000} seconds.`);\n })\n .catch((err) => {\n console.log('Failed to start the app.');\n status = 'failure';\n errorMsg = err?.message || 'App failed to start.';\n appStartExceptions.push(err);\n\n err && console.error(err);\n loading.hide();\n if (err?.message) {\n error.showMessage(err.message);\n }\n msgEngine.sendToParent({\n type: 'app-state-change',\n state: 'app-failed',\n });\n })\n .finally(() => {\n const bootCompleteEvent = new CustomEvent('muse_boot_completed', {\n detail: {\n result: status,\n metrics: [\n {\n name: 'app-start-result',\n payload: {\n duration: Date.now() - timeStart,\n status,\n errorMsg,\n url: document.location.href,\n },\n },\n {\n name: 'app-start-exceptions',\n payload: appStartExceptions,\n },\n ],\n },\n });\n window.dispatchEvent(bootCompleteEvent);\n });\n}\n","// boot plugin is used to load other plugins based on the app config\nimport { bootstrap } from './boot';\n\nbootstrap();\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7],"mappings":"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"}
|
package/build/dist/info.json
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
"type": "boot",
|
|
4
4
|
"deps": [],
|
|
5
5
|
"branch": "release",
|
|
6
|
-
"sha": "
|
|
6
|
+
"sha": "3cf03c33ba76e2067f10c27d56006e71414a7340",
|
|
7
7
|
"repo": "https://github.com/ebay/Muse",
|
|
8
8
|
"size": {
|
|
9
|
-
"main":
|
|
10
|
-
"chunks":
|
|
9
|
+
"main": 5522,
|
|
10
|
+
"chunks": 5522,
|
|
11
11
|
"media": 20732
|
|
12
12
|
},
|
|
13
|
-
"buildTime":
|
|
13
|
+
"buildTime": 29,
|
|
14
14
|
"esModule": true
|
|
15
15
|
}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"url": "https://github.com/ebay/Muse",
|
|
6
6
|
"directory": "ui-plugins/muse-boot-default"
|
|
7
7
|
},
|
|
8
|
-
"version": "2.0.
|
|
8
|
+
"version": "2.0.1",
|
|
9
9
|
"main": "index.js",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"type": "module",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"MUSE_README.md"
|
|
18
18
|
],
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@ebay/muse-modules": "^
|
|
20
|
+
"@ebay/muse-modules": "^2.0.0",
|
|
21
21
|
"@ebay/muse-vanilla-vite-plugin": "link:../../workspace/packages/muse-vanilla-vite-plugin",
|
|
22
22
|
"@vitest/coverage-v8": "2.1.9",
|
|
23
23
|
"cross-env": "^7.0.3",
|