@ebay/muse-boot-default
Advanced tools
@@ -1,2 +0,2 @@ | ||
| (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=>{var t=r[e];t||(museModule=t,r[e]=n(e));let i=r[e];if(!i)throw Error(`Muse shared module not found: `+e);return i.__require__(i.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.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=` | ||
| (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=` | ||
| <div> | ||
@@ -3,0 +3,0 @@ <div class='muse-loading-node-inner'> |
@@ -1,1 +0,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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"} | ||
| {"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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"} |
@@ -6,11 +6,11 @@ { | ||
| "branch": "release", | ||
| "sha": "5efeba5f4b9cb2253977c78ce0c0b2dd317169e5", | ||
| "sha": "3cf03c33ba76e2067f10c27d56006e71414a7340", | ||
| "repo": "https://github.com/ebay/Muse", | ||
| "size": { | ||
| "main": 5523, | ||
| "chunks": 5523, | ||
| "main": 5522, | ||
| "chunks": 5522, | ||
| "media": 20732 | ||
| }, | ||
| "buildTime": 35, | ||
| "buildTime": 29, | ||
| "esModule": true | ||
| } |
+2
-2
@@ -8,3 +8,3 @@ { | ||
| }, | ||
| "version": "2.0.0", | ||
| "version": "2.0.1", | ||
| "main": "index.js", | ||
@@ -21,3 +21,3 @@ "license": "MIT", | ||
| "devDependencies": { | ||
| "@ebay/muse-modules": "^1.0.29", | ||
| "@ebay/muse-modules": "^2.0.0", | ||
| "@ebay/muse-vanilla-vite-plugin": "link:../../workspace/packages/muse-vanilla-vite-plugin", | ||
@@ -24,0 +24,0 @@ "@vitest/coverage-v8": "2.1.9", |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
0
-100%110629
-0.02%