@micro-zoe/micro-app 0.7.1 β 0.8.3
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/README.md +1 -1
- package/README.zh-cn.md +1 -1
- package/lib/index.d.ts +12 -8
- package/lib/index.esm.js +2337 -2141
- package/lib/index.esm.js.map +1 -1
- package/lib/index.min.js +1 -1
- package/lib/index.min.js.map +1 -1
- package/lib/index.umd.js +1 -1
- package/lib/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/typings/global.d.ts +3 -2
package/lib/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/libs/utils.ts","../src/constants.ts","../src/source/fetch.ts","../src/libs/global_env.ts","../src/source/scoped_css.ts","../src/source/load_event.ts","../src/source/links.ts","../src/source/scripts.ts","../src/source/index.ts","../src/interact/event_center.ts","../src/interact/index.ts","../src/sandbox/bind_function.ts","../src/sandbox/effect.ts","../src/sandbox/index.ts","../src/interact/lifecycles_event.ts","../src/create_app.ts","../src/source/patch.ts","../src/libs/additional.ts","../src/micro_app_element.ts","../src/prefetch.ts","../src/micro_app.ts"],"sourcesContent":["/* eslint-disable no-new-func, indent, @typescript-eslint/explicit-module-boundary-types */\nimport type { Func } from '@micro-app/types'\n\nexport const version = '__MICRO_APP_VERSION__'\n\n// do not use isUndefined\nexport const isBrowser = typeof window !== 'undefined'\n\n// do not use isUndefined\nexport const globalThis = (typeof global !== 'undefined')\n ? global\n : (\n (typeof window !== 'undefined')\n ? window\n : (\n (typeof self !== 'undefined') ? self : Function('return this')()\n )\n )\n\n// is Undefined\nexport function isUndefined (target: unknown): target is undefined {\n return target === undefined\n}\n\n// is Null\nexport function isNull (target: unknown): target is null {\n return target === null\n}\n\n// is String\nexport function isString (target: unknown): target is string {\n return typeof target === 'string'\n}\n\n// is Boolean\nexport function isBoolean (target: unknown): target is boolean {\n return typeof target === 'boolean'\n}\n\n// is function\nexport function isFunction (target: unknown): boolean {\n return typeof target === 'function'\n}\n\n// is Array\nexport const isArray = Array.isArray\n\n// is PlainObject\nexport function isPlainObject (target: unknown): boolean {\n return toString.call(target) === '[object Object]'\n}\n\n// is Promise\nexport function isPromise (target: unknown): boolean {\n return toString.call(target) === '[object Promise]'\n}\n\n// is bind function\nexport function isBoundFunction (target: any): boolean {\n return isFunction(target) && target.name.indexOf('bound ') === 0 && !target.hasOwnProperty('prototype')\n}\n\n// is ShadowRoot\nexport function isShadowRoot (target: unknown): boolean {\n return typeof ShadowRoot !== 'undefined' && target instanceof ShadowRoot\n}\n\nexport const rawDefineProperty = Object.defineProperty\n\nexport const rawDefineProperties = Object.defineProperties\nexport const rawHasOwnProperty = Object.prototype.hasOwnProperty\n\n/**\n * format error log\n * @param msg message\n * @param appName app name, default is null\n */\nexport function logError (\n msg: unknown,\n appName: string | null = null,\n ...rest: any[]\n): void {\n const appNameTip = appName && isString(appName) ? ` app ${appName}:` : ''\n if (isString(msg)) {\n console.error(`[micro-app]${appNameTip} ${msg}`, ...rest)\n } else {\n console.error(`[micro-app]${appNameTip}`, msg, ...rest)\n }\n}\n\n/**\n * format warn log\n * @param msg message\n * @param appName app name, default is null\n */\nexport function logWarn (\n msg: unknown,\n appName: string | null = null,\n ...rest: any[]\n): void {\n const appNameTip = appName && isString(appName) ? ` app ${appName}:` : ''\n if (isString(msg)) {\n console.warn(`[micro-app]${appNameTip} ${msg}`, ...rest)\n } else {\n console.warn(`[micro-app]${appNameTip}`, msg, ...rest)\n }\n}\n\n/**\n * async execution\n * @param fn callback\n * @param args params\n */\nexport function defer (fn: Func, ...args: any[]): void {\n Promise.resolve().then(fn.bind(null, ...args))\n}\n\n/**\n * Add address protocol\n * @param url address\n */\nexport function addProtocol (url: string): string {\n return url.startsWith('//') ? `${location.protocol}${url}` : url\n}\n\n/**\n * format URL address\n * note the scenes:\n * 1. micro-app -> attributeChangedCallback\n * 2. preFetch\n */\nexport function formatAppURL (url: string | null, appName: string | null = null): string {\n if (!isString(url) || !url) return ''\n\n try {\n const { origin, pathname, search } = new URL(addProtocol(url))\n // If it ends with .html/.node/.php/.net/.etc, donβt need to add /\n if (/\\.(\\w+)$/.test(pathname)) {\n return `${origin}${pathname}${search}`\n }\n const fullPath = `${origin}${pathname}/`.replace(/\\/\\/$/, '/')\n return /^https?:\\/\\//.test(fullPath) ? `${fullPath}${search}` : ''\n } catch (e) {\n logError(e, appName)\n return ''\n }\n}\n\n/**\n * format name\n * note the scenes:\n * 1. micro-app -> attributeChangedCallback\n * 2. event_center -> EventCenterForMicroApp -> constructor\n * 3. event_center -> EventCenterForBaseApp -> all methods\n * 4. preFetch\n * 5. plugins\n */\nexport function formatAppName (name: string | null): string {\n if (!isString(name) || !name) return ''\n return name.replace(/(^\\d+)|([^\\w\\d-_])/gi, '')\n}\n\n/**\n * Get valid address, such as https://xxx/xx/xx.html to https://xxx/xx/\n * @param url app.url\n */\nexport function getEffectivePath (url: string): string {\n const { origin, pathname } = new URL(url)\n if (/\\.(\\w+)$/.test(pathname)) {\n const fullPath = `${origin}${pathname}`\n const pathArr = fullPath.split('/')\n pathArr.pop()\n return pathArr.join('/') + '/'\n }\n\n return `${origin}${pathname}/`.replace(/\\/\\/$/, '/')\n}\n\n/**\n * Complete address\n * @param path address\n * @param baseURI base url(app.url)\n */\nexport function CompletionPath (path: string, baseURI: string): string {\n if (\n !path ||\n /^((((ht|f)tps?)|file):)?\\/\\//.test(path) ||\n /^(data|blob):/.test(path)\n ) return path\n\n return new URL(path, getEffectivePath(addProtocol(baseURI))).toString()\n}\n\n/**\n * Get the folder where the link resource is located,\n * which is used to complete the relative address in the css\n * @param linkpath full link address\n */\nexport function getLinkFileDir (linkpath: string): string {\n const pathArr = linkpath.split('/')\n pathArr.pop()\n return addProtocol(pathArr.join('/') + '/')\n}\n\n/**\n * promise stream\n * @param promiseList promise list\n * @param successCb success callback\n * @param errorCb failed callback\n * @param finallyCb finally callback\n */\nexport function promiseStream <T> (\n promiseList: Array<Promise<T> | T>,\n successCb: CallableFunction,\n errorCb: CallableFunction,\n finallyCb?: CallableFunction,\n): void {\n let finishedNum = 0\n\n function isFinished () {\n if (++finishedNum === promiseList.length && finallyCb) finallyCb()\n }\n\n promiseList.forEach((p, i) => {\n if (isPromise(p)) {\n (p as Promise<T>).then((res: T) => {\n successCb({\n data: res,\n index: i,\n })\n isFinished()\n }).catch((err: Error) => {\n errorCb({\n error: err,\n index: i,\n })\n isFinished()\n })\n } else {\n successCb({\n data: p,\n index: i,\n })\n isFinished()\n }\n })\n}\n\n// Check whether the browser supports module script\nexport function isSupportModuleScript (): boolean {\n const s = document.createElement('script')\n return 'noModule' in s\n}\n\n// Create a random symbol string\nexport function createNonceSrc (): string {\n return 'inline-' + Math.random().toString(36).substr(2, 15)\n}\n\n// Array deduplication\nexport function unique (array: any[]): any[] {\n return array.filter(function (this: Record<PropertyKey, boolean>, item) {\n return item in this ? false : (this[item] = true)\n }, Object.create(null))\n}\n\n// requestIdleCallback polyfill\nexport const requestIdleCallback = globalThis.requestIdleCallback ||\n function (fn: CallableFunction) {\n const lastTime = Date.now()\n return setTimeout(function () {\n fn({\n didTimeout: false,\n timeRemaining () {\n return Math.max(0, 50 - (Date.now() - lastTime))\n },\n })\n }, 1)\n }\n\n/**\n * Record the currently running app.name\n */\nlet currentMicroAppName: string | null = null\nexport function setCurrentAppName (appName: string | null): void {\n currentMicroAppName = appName\n}\n\nlet isWaitingForReset = false\nexport function throttleDeferForSetAppName (appName: string) {\n if (!isWaitingForReset || currentMicroAppName !== appName) {\n isWaitingForReset = true\n setCurrentAppName(appName)\n defer(() => {\n isWaitingForReset = false\n setCurrentAppName(null)\n })\n }\n}\n\n// get the currently running app.name\nexport function getCurrentAppName (): string | null {\n return currentMicroAppName\n}\n\n// Clear appName\nexport function removeDomScope (): void {\n setCurrentAppName(null)\n}\n\n// is safari browser\nexport function isSafari (): boolean {\n return /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent)\n}\n\n/**\n * Create pure elements\n */\nexport function pureCreateElement<K extends keyof HTMLElementTagNameMap> (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K] {\n const element = document.createElement(tagName, options)\n if (element.__MICRO_APP_NAME__) delete element.__MICRO_APP_NAME__\n return element\n}\n\n/**\n * clone origin elements to target\n * @param origin Cloned element\n * @param target Accept cloned elements\n * @param deep deep clone or transfer dom\n */\nexport function cloneContainer <T extends Element, Q extends Element> (\n origin: T,\n target: Q,\n deep: boolean,\n): void {\n target.innerHTML = ''\n if (deep) {\n const clonedNode = origin.cloneNode(true)\n const fragment = document.createDocumentFragment()\n Array.from(clonedNode.childNodes).forEach((node: Node | Element) => {\n fragment.appendChild(node)\n })\n target.appendChild(fragment)\n } else {\n Array.from(origin.childNodes).forEach((node: Node | Element) => {\n target.appendChild(node)\n })\n }\n}\n\n// is invalid key of querySelector\nexport function isInvalidQuerySelectorKey (key: string): boolean {\n if (__TEST__) return !key || /(^\\d)|([^\\w\\d-_$])/gi.test(key)\n return !key || /(^\\d)|([^\\w\\d-_\\u4e00-\\u9fa5])/gi.test(key)\n}\n\n// unique element\nexport function isUniqueElement (key: string): boolean {\n return (\n /^body$/i.test(key) ||\n /^head$/i.test(key) ||\n /^html$/i.test(key)\n )\n}\n\n/**\n * get micro-app element\n * @param target app container\n */\nexport function getRootContainer (target: HTMLElement | ShadowRoot): HTMLElement {\n return (isShadowRoot(target) ? (target as ShadowRoot).host : target) as HTMLElement\n}\n","export enum ObservedAttrName {\n NAME = 'name',\n URL = 'url',\n}\n\n// app status\nexport enum appStates {\n NOT_LOADED = 'NOT_LOADED',\n LOADING_SOURCE_CODE = 'LOADING_SOURCE_CODE',\n LOAD_SOURCE_FINISHED = 'LOAD_SOURCE_FINISHED',\n LOAD_SOURCE_ERROR = 'LOAD_SOURCE_ERROR',\n MOUNTING = 'MOUNTING',\n MOUNTED = 'MOUNTED',\n UNMOUNT = 'UNMOUNT',\n}\n\n// lifecycles\nexport enum lifeCycles {\n CREATED = 'created',\n BEFOREMOUNT = 'beforemount',\n MOUNTED = 'mounted',\n UNMOUNT = 'unmount',\n ERROR = 'error',\n // π keep-alive only\n BEFORESHOW = 'beforeshow',\n AFTERSHOW = 'aftershow',\n AFTERHIDDEN = 'afterhidden',\n}\n\n// keep-alive status\nexport enum keepAliveStates {\n KEEP_ALIVE_SHOW = 'KEEP_ALIVE_SHOW',\n KEEP_ALIVE_HIDDEN = 'KEEP_ALIVE_HIDDEN',\n}\n\nexport const globalKeyToBeCached = 'window,self,globalThis,Array,Object,String,Boolean,Math,Number,Symbol,Date,Promise,Function,Proxy,WeakMap,WeakSet,Set,Map,Reflect,Element,Node,Document,RegExp,Error,TypeError,JSON,isNaN,parseFloat,parseInt,performance,console,decodeURI,encodeURI,decodeURIComponent,encodeURIComponent,location,navigator,undefined'\n","import { isFunction } from '../libs/utils'\nimport microApp from '../micro_app'\n\n/**\n * fetch source of html, js, css\n * @param url source path\n * @param appName app name\n * @param config config of fetch\n */\nexport function fetchSource (url: string, appName: string | null = null, options = {}): Promise<string> {\n if (isFunction(microApp.fetch)) {\n return microApp.fetch!(url, options, appName)\n }\n return fetch(url, options).then((res) => {\n return res.text()\n })\n}\n","import { isSupportModuleScript, isBrowser, getCurrentAppName } from './utils'\n\ntype RequestIdleCallbackOptions = {\n timeout: number\n}\n\ntype RequestIdleCallbackInfo = {\n readonly didTimeout: boolean\n timeRemaining: () => number\n}\n\ndeclare global {\n interface Window {\n requestIdleCallback (\n callback: (info: RequestIdleCallbackInfo) => void,\n opts?: RequestIdleCallbackOptions,\n ): number\n _babelPolyfill: boolean\n __MICRO_APP_ENVIRONMENT__?: boolean\n __MICRO_APP_UMD_MODE__?: boolean\n __MICRO_APP_BASE_APPLICATION__?: boolean\n }\n\n interface Node {\n __MICRO_APP_NAME__?: string | null\n data?: any\n }\n\n interface HTMLStyleElement {\n __MICRO_APP_LINK_PATH__?: string\n __MICRO_APP_HAS_SCOPED__?: boolean\n }\n}\n\nconst globalEnv: Record<string, any> = {}\n\n/**\n * Note loop nesting\n * Only prototype or unique values can be put here\n */\nexport function initGlobalEnv (): void {\n if (isBrowser) {\n /**\n * save patch raw methods\n * pay attention to this binding\n */\n const rawSetAttribute = Element.prototype.setAttribute\n const rawAppendChild = Element.prototype.appendChild\n const rawInsertBefore = Element.prototype.insertBefore\n const rawReplaceChild = Element.prototype.replaceChild\n const rawRemoveChild = Element.prototype.removeChild\n const rawAppend = Element.prototype.append\n const rawPrepend = Element.prototype.prepend\n const rawCloneNode = Element.prototype.cloneNode\n\n const rawCreateElement = Document.prototype.createElement\n const rawCreateElementNS = Document.prototype.createElementNS\n const rawCreateDocumentFragment = Document.prototype.createDocumentFragment\n const rawQuerySelector = Document.prototype.querySelector\n const rawQuerySelectorAll = Document.prototype.querySelectorAll\n const rawGetElementById = Document.prototype.getElementById\n const rawGetElementsByClassName = Document.prototype.getElementsByClassName\n const rawGetElementsByTagName = Document.prototype.getElementsByTagName\n const rawGetElementsByName = Document.prototype.getElementsByName\n\n const ImageProxy = new Proxy(Image, {\n construct (Target, args): HTMLImageElement {\n const elementImage = new Target(...args)\n elementImage.__MICRO_APP_NAME__ = getCurrentAppName()\n return elementImage\n },\n })\n\n const rawWindow = Function('return window')()\n const rawDocument = Function('return document')()\n const supportModuleScript = isSupportModuleScript()\n const templateStyle: HTMLStyleElement = rawDocument.body.querySelector('#micro-app-template-style')\n\n /**\n * save effect raw methods\n * pay attention to this binding, especially setInterval, setTimeout, clearInterval, clearTimeout\n */\n const rawWindowAddEventListener = rawWindow.addEventListener\n const rawWindowRemoveEventListener = rawWindow.removeEventListener\n const rawSetInterval = rawWindow.setInterval\n const rawSetTimeout = rawWindow.setTimeout\n const rawClearInterval = rawWindow.clearInterval\n const rawClearTimeout = rawWindow.clearTimeout\n\n const rawDocumentAddEventListener = rawDocument.addEventListener\n const rawDocumentRemoveEventListener = rawDocument.removeEventListener\n\n // mark current application as base application\n window.__MICRO_APP_BASE_APPLICATION__ = true\n\n Object.assign(globalEnv, {\n // source/patch\n rawSetAttribute,\n rawAppendChild,\n rawInsertBefore,\n rawReplaceChild,\n rawRemoveChild,\n rawAppend,\n rawPrepend,\n rawCloneNode,\n rawCreateElement,\n rawCreateElementNS,\n rawCreateDocumentFragment,\n rawQuerySelector,\n rawQuerySelectorAll,\n rawGetElementById,\n rawGetElementsByClassName,\n rawGetElementsByTagName,\n rawGetElementsByName,\n ImageProxy,\n\n // common global vars\n rawWindow,\n rawDocument,\n supportModuleScript,\n templateStyle,\n\n // sandbox/effect\n rawWindowAddEventListener,\n rawWindowRemoveEventListener,\n rawSetInterval,\n rawSetTimeout,\n rawClearInterval,\n rawClearTimeout,\n rawDocumentAddEventListener,\n rawDocumentRemoveEventListener,\n })\n }\n}\n\nexport default globalEnv\n","import type { AppInterface } from '@micro-app/types'\nimport { CompletionPath, isSafari, pureCreateElement, getLinkFileDir } from '../libs/utils'\nimport microApp from '../micro_app'\nimport globalEnv from '../libs/global_env'\n\n/**\n * Bind css scope\n * Special case:\n * 1. html-abc | abc-html\n * 2. html body.abc\n * 3. abchtml | htmlabc | abcbody | bodyabc\n * 4. html + body | html > body | html.body | html[name=xx] | body[name=xx]\n * 5. xxx, html xxx, body xxx\n *\n * TODO: BUG\n .test-b {\n border: 1px solid var(--color-a);\n border-bottom-color: var(--color-b);\n }\n */\nfunction scopedStyleRule (rule: CSSStyleRule, prefix: string): string {\n const { selectorText, cssText } = rule\n if (/^((html[\\s>~,]+body)|(html|body|:root))$/.test(selectorText)) {\n return cssText.replace(/^((html[\\s>~,]+body)|(html|body|:root))/, prefix)\n } else if (selectorText === '*') {\n return cssText.replace('*', `${prefix} *`)\n }\n\n const builtInRootSelectorRE = /(^|\\s+)((html[\\s>~]+body)|(html|body|:root))(?=[\\s>~]+|$)/\n\n return cssText.replace(/^[\\s\\S]+{/, (selectors) => {\n return selectors.replace(/(^|,)([^,]+)/g, (all, $1, $2) => {\n if (builtInRootSelectorRE.test($2)) {\n // body[name=xx]|body.xx|body#xx etc. do not need to handle\n return all.replace(builtInRootSelectorRE, prefix)\n }\n return `${$1} ${prefix} ${$2.replace(/^\\s*/, '')}`\n })\n })\n}\n\n/**\n * Complete static resource address\n * @param cssText css content\n * @param baseURI domain name\n * @param textContent origin content\n * @param linkpath link resource address, if it is the style converted from link, it will have linkpath\n */\nfunction scopedHost (\n cssText: string,\n baseURI: string,\n textContent: string,\n linkpath?: string,\n) {\n return cssText.replace(/url\\([\"']?([^)\"']+)[\"']?\\)/gm, (all, $1) => {\n if (/^((data|blob):|#)/.test($1)) {\n return all\n } else if (/^(https?:)?\\/\\//.test($1)) {\n if (isSafari()) {\n const purePath = $1.replace(/^https?:/, '')\n if (textContent.indexOf(purePath) === -1) {\n $1 = $1.replace(window.location.origin, '')\n } else {\n return all\n }\n } else {\n return all\n }\n }\n\n // ./a/b.png ../a/b.png a/b.png\n if (/^((\\.\\.?\\/)|[^/])/.test($1) && linkpath) {\n baseURI = getLinkFileDir(linkpath)\n }\n\n return `url(\"${CompletionPath($1, baseURI)}\")`\n })\n}\n\n// handle media and supports\nfunction scopedPackRule (\n rule: CSSMediaRule | CSSSupportsRule,\n prefix: string,\n packName: string,\n): string {\n const result = scopedRule(Array.from(rule.cssRules), prefix)\n return `@${packName} ${rule.conditionText} {${result}}`\n}\n\n/**\n * Process each cssrule\n * @param rules cssRule\n * @param prefix prefix as micro-app[name=xxx]\n */\nfunction scopedRule (rules: CSSRule[], prefix: string): string {\n let result = ''\n for (const rule of rules) {\n // https://developer.mozilla.org/zh-CN/docs/Web/API/CSSRule\n switch (rule.constructor.name) {\n case 'CSSStyleRule':\n result += scopedStyleRule(rule as CSSStyleRule, prefix)\n break\n case 'CSSMediaRule':\n result += scopedPackRule(rule as CSSMediaRule, prefix, 'media')\n break\n case 'CSSSupportsRule':\n result += scopedPackRule(rule as CSSSupportsRule, prefix, 'supports')\n break\n default:\n result += rule.cssText\n break\n }\n }\n\n return result.replace(/^\\s+/, '')\n}\n\n/**\n * common method of bind CSS\n */\nfunction commonAction (\n templateStyle: HTMLStyleElement,\n styleElement: HTMLStyleElement,\n originContent: string,\n prefix: string,\n baseURI: string,\n linkpath?: string,\n) {\n if (!styleElement.__MICRO_APP_HAS_SCOPED__) {\n const rules: CSSRule[] = Array.from(templateStyle.sheet?.cssRules ?? [])\n let result = scopedHost(\n scopedRule(rules, prefix),\n baseURI,\n originContent,\n linkpath,\n )\n /**\n * Solve the problem of missing content quotes in some Safari browsers\n * docs: https://developer.mozilla.org/zh-CN/docs/Web/CSS/content\n * If there are still problems, it is recommended to use the attr()\n */\n if (isSafari()) {\n result = result.replace(/([;{]\\s*content:\\s*)([^\\s\"][^\";}]*)/gm, (all, $1, $2) => {\n if (\n $2 === 'none' ||\n /^(url\\()|(counter\\()|(attr\\()|(open-quote)|(close-quote)/.test($2)\n ) {\n return all\n }\n return `${$1}\"${$2}\"`\n })\n }\n styleElement.textContent = result\n styleElement.__MICRO_APP_HAS_SCOPED__ = true\n }\n}\n\n/**\n * scopedCSS\n * @param styleElement target style element\n * @param appName app name\n */\nexport default function scopedCSS (\n styleElement: HTMLStyleElement,\n app: AppInterface,\n): HTMLStyleElement {\n if (app.scopecss) {\n const prefix = `${microApp.tagName}[name=${app.name}]`\n let templateStyle = globalEnv.templateStyle\n if (!templateStyle) {\n globalEnv.templateStyle = templateStyle = pureCreateElement('style')\n templateStyle.setAttribute('id', 'micro-app-template-style')\n globalEnv.rawDocument.body.appendChild(templateStyle)\n templateStyle.sheet!.disabled = true\n }\n\n if (styleElement.textContent) {\n templateStyle.textContent = styleElement.textContent\n commonAction(\n templateStyle,\n styleElement,\n styleElement.textContent,\n prefix,\n app.url,\n styleElement.__MICRO_APP_LINK_PATH__,\n )\n templateStyle.textContent = ''\n } else {\n const observer = new MutationObserver(function () {\n observer.disconnect()\n // styled-component will not be processed temporarily\n if (\n (!styleElement.textContent && styleElement.sheet?.cssRules?.length) ||\n styleElement.hasAttribute('data-styled')\n ) return\n commonAction(\n styleElement,\n styleElement,\n styleElement.textContent!,\n prefix,\n app.url,\n styleElement.__MICRO_APP_LINK_PATH__,\n )\n })\n\n observer.observe(styleElement, { childList: true })\n }\n }\n\n return styleElement\n}\n","import { isFunction } from '../libs/utils'\n\nfunction eventHandler (event: Event, element: HTMLLinkElement | HTMLScriptElement): void {\n Object.defineProperties(event, {\n currentTarget: {\n get () {\n return element\n }\n },\n srcElement: {\n get () {\n return element\n }\n },\n target: {\n get () {\n return element\n }\n },\n })\n}\n\nexport function dispatchOnLoadEvent (element: HTMLLinkElement | HTMLScriptElement): void {\n const event = new CustomEvent('load')\n eventHandler(event, element)\n if (isFunction(element.onload)) {\n element.onload!(event)\n } else {\n element.dispatchEvent(event)\n }\n}\n\nexport function dispatchOnErrorEvent (element: HTMLLinkElement | HTMLScriptElement): void {\n const event = new CustomEvent('error')\n eventHandler(event, element)\n if (isFunction(element.onerror)) {\n element.onerror!(event)\n } else {\n element.dispatchEvent(event)\n }\n}\n","import type {\n AppInterface,\n sourceLinkInfo,\n} from '@micro-app/types'\nimport { fetchSource } from './fetch'\nimport {\n CompletionPath,\n promiseStream,\n pureCreateElement,\n defer,\n logError,\n} from '../libs/utils'\nimport scopedCSS from './scoped_css'\nimport {\n dispatchOnLoadEvent,\n dispatchOnErrorEvent,\n} from './load_event'\n\n// Global links, reuse across apps\nexport const globalLinks = new Map<string, string>()\n\n/**\n * Extract link elements\n * @param link link element\n * @param parent parent element of link\n * @param app app\n * @param microAppHead micro-app-head element\n * @param isDynamic dynamic insert\n */\nexport function extractLinkFromHtml (\n link: HTMLLinkElement,\n parent: Node,\n app: AppInterface,\n isDynamic = false,\n): any {\n const rel = link.getAttribute('rel')\n let href = link.getAttribute('href')\n let replaceComment: Comment | null = null\n if (rel === 'stylesheet' && href) {\n href = CompletionPath(href, app.url)\n if (!isDynamic) {\n replaceComment = document.createComment(`link element with href=${href} move to micro-app-head as style element`)\n app.source.links.set(href, {\n code: '',\n placeholder: replaceComment,\n isGlobal: link.hasAttribute('global'),\n })\n } else {\n return {\n url: href,\n info: {\n code: '',\n isGlobal: link.hasAttribute('global'),\n }\n }\n }\n } else if (rel && ['prefetch', 'preload', 'prerender', 'icon', 'apple-touch-icon'].includes(rel)) {\n // preload prefetch icon ....\n if (isDynamic) {\n replaceComment = document.createComment(`link element with rel=${rel}${href ? ' & href=' + href : ''} removed by micro-app`)\n } else {\n parent.removeChild(link)\n }\n } else if (href) {\n // dns-prefetch preconnect modulepreload search ....\n link.setAttribute('href', CompletionPath(href, app.url))\n }\n\n if (isDynamic) {\n return { replaceComment }\n } else if (replaceComment) {\n return parent.replaceChild(replaceComment, link)\n }\n}\n\n/**\n * Get link remote resources\n * @param wrapElement htmlDom\n * @param app app\n * @param microAppHead micro-app-head\n */\nexport function fetchLinksFromHtml (\n wrapElement: HTMLElement,\n app: AppInterface,\n microAppHead: Element,\n): void {\n const linkEntries: Array<[string, sourceLinkInfo]> = Array.from(app.source.links.entries())\n const fetchLinkPromise: Array<Promise<string>|string> = []\n for (const [url] of linkEntries) {\n const globalLinkCode = globalLinks.get(url)\n globalLinkCode ? fetchLinkPromise.push(globalLinkCode) : fetchLinkPromise.push(fetchSource(url, app.name))\n }\n\n promiseStream<string>(fetchLinkPromise, (res: {data: string, index: number}) => {\n fetchLinkSuccess(\n linkEntries[res.index][0],\n linkEntries[res.index][1],\n res.data,\n microAppHead,\n app,\n )\n }, (err: {error: Error, index: number}) => {\n logError(err, app.name)\n }, () => {\n app.onLoad(wrapElement)\n })\n}\n\n/**\n * fetch link succeeded, replace placeholder with style tag\n * @param url resource address\n * @param info resource link info\n * @param data code\n * @param microAppHead micro-app-head\n * @param app app\n */\nexport function fetchLinkSuccess (\n url: string,\n info: sourceLinkInfo,\n data: string,\n microAppHead: Element,\n app: AppInterface,\n): void {\n if (info.isGlobal && !globalLinks.has(url)) {\n globalLinks.set(url, data)\n }\n\n const styleLink = pureCreateElement('style')\n styleLink.textContent = data\n styleLink.__MICRO_APP_LINK_PATH__ = url\n styleLink.setAttribute('data-origin-href', url)\n\n if (info.placeholder!.parentNode) {\n info.placeholder!.parentNode.replaceChild(scopedCSS(styleLink, app), info.placeholder!)\n } else {\n microAppHead.appendChild(scopedCSS(styleLink, app))\n }\n\n info.placeholder = null\n info.code = data\n}\n\n/**\n * get css from dynamic link\n * @param url link address\n * @param info info\n * @param app app\n * @param originLink origin link element\n * @param replaceStyle style element which replaced origin link\n */\nexport function foramtDynamicLink (\n url: string,\n info: sourceLinkInfo,\n app: AppInterface,\n originLink: HTMLLinkElement,\n replaceStyle: HTMLStyleElement,\n): void {\n if (app.source.links.has(url)) {\n replaceStyle.textContent = app.source.links.get(url)!.code\n scopedCSS(replaceStyle, app)\n defer(() => dispatchOnLoadEvent(originLink))\n return\n }\n\n if (globalLinks.has(url)) {\n const code = globalLinks.get(url)!\n info.code = code\n app.source.links.set(url, info)\n replaceStyle.textContent = code\n scopedCSS(replaceStyle, app)\n defer(() => dispatchOnLoadEvent(originLink))\n return\n }\n\n fetchSource(url, app.name).then((data: string) => {\n info.code = data\n app.source.links.set(url, info)\n info.isGlobal && globalLinks.set(url, data)\n replaceStyle.textContent = data\n scopedCSS(replaceStyle, app)\n dispatchOnLoadEvent(originLink)\n }).catch((err) => {\n logError(err, app.name)\n dispatchOnErrorEvent(originLink)\n })\n}\n","/* eslint-disable node/no-callback-literal */\nimport type {\n AppInterface,\n sourceScriptInfo,\n plugins,\n Func,\n} from '@micro-app/types'\nimport { fetchSource } from './fetch'\nimport {\n CompletionPath,\n promiseStream,\n createNonceSrc,\n pureCreateElement,\n defer,\n logError,\n isUndefined,\n isPlainObject,\n isArray,\n isFunction,\n} from '../libs/utils'\nimport {\n dispatchOnLoadEvent,\n dispatchOnErrorEvent,\n} from './load_event'\nimport microApp from '../micro_app'\nimport globalEnv from '../libs/global_env'\nimport { globalKeyToBeCached } from '../constants'\n\ntype moduleCallBack = Func & { moduleCount?: number, errorCount?: number }\n\n// Global scripts, reuse across apps\nexport const globalScripts = new Map<string, string>()\n\n/**\n * Extract script elements\n * @param script script element\n * @param parent parent element of script\n * @param app app\n * @param isDynamic dynamic insert\n */\nexport function extractScriptElement (\n script: HTMLScriptElement,\n parent: Node,\n app: AppInterface,\n isDynamic = false,\n): any {\n let replaceComment: Comment | null = null\n let src: string | null = script.getAttribute('src')\n if (script.hasAttribute('exclude')) {\n replaceComment = document.createComment('script element with exclude attribute removed by micro-app')\n } else if (\n (script.type && !['text/javascript', 'text/ecmascript', 'application/javascript', 'application/ecmascript', 'module'].includes(script.type)) ||\n script.hasAttribute('ignore')\n ) {\n return null\n } else if (\n (globalEnv.supportModuleScript && script.noModule) ||\n (!globalEnv.supportModuleScript && script.type === 'module')\n ) {\n replaceComment = document.createComment(`${script.noModule ? 'noModule' : 'module'} script ignored by micro-app`)\n } else if (src) { // remote script\n src = CompletionPath(src, app.url)\n const info = {\n code: '',\n isExternal: true,\n isDynamic: isDynamic,\n async: script.hasAttribute('async'),\n defer: script.defer || script.type === 'module',\n module: script.type === 'module',\n isGlobal: script.hasAttribute('global'),\n }\n if (!isDynamic) {\n app.source.scripts.set(src, info)\n replaceComment = document.createComment(`script with src='${src}' extract by micro-app`)\n } else {\n return { url: src, info }\n }\n } else if (script.textContent) { // inline script\n const nonceStr: string = createNonceSrc()\n const info = {\n code: script.textContent,\n isExternal: false,\n isDynamic: isDynamic,\n async: false,\n defer: script.type === 'module',\n module: script.type === 'module',\n }\n if (!isDynamic) {\n app.source.scripts.set(nonceStr, info)\n replaceComment = document.createComment('inline script extract by micro-app')\n } else {\n return { url: nonceStr, info }\n }\n } else if (!isDynamic) {\n /**\n * script with empty src or empty script.textContent remove in static html\n * & not removed if it created by dynamic\n */\n replaceComment = document.createComment('script element removed by micro-app')\n }\n\n if (isDynamic) {\n return { replaceComment }\n } else {\n return parent.replaceChild(replaceComment!, script)\n }\n}\n\n/**\n * Get remote resources of script\n * @param wrapElement htmlDom\n * @param app app\n */\nexport function fetchScriptsFromHtml (\n wrapElement: HTMLElement,\n app: AppInterface,\n): void {\n const scriptEntries: Array<[string, sourceScriptInfo]> = Array.from(app.source.scripts.entries())\n const fetchScriptPromise: Promise<string>[] = []\n const fetchScriptPromiseInfo: Array<[string, sourceScriptInfo]> = []\n for (const [url, info] of scriptEntries) {\n if (info.isExternal) {\n const globalScriptText = globalScripts.get(url)\n if (globalScriptText) {\n info.code = globalScriptText\n } else if (!info.defer && !info.async) {\n fetchScriptPromise.push(fetchSource(url, app.name))\n fetchScriptPromiseInfo.push([url, info])\n }\n }\n }\n\n if (fetchScriptPromise.length) {\n promiseStream<string>(fetchScriptPromise, (res: {data: string, index: number}) => {\n fetchScriptSuccess(\n fetchScriptPromiseInfo[res.index][0],\n fetchScriptPromiseInfo[res.index][1],\n res.data,\n )\n }, (err: {error: Error, index: number}) => {\n logError(err, app.name)\n }, () => {\n app.onLoad(wrapElement)\n })\n } else {\n app.onLoad(wrapElement)\n }\n}\n\n/**\n * fetch js succeeded, record the code value\n * @param url script address\n * @param info resource script info\n * @param data code\n */\nexport function fetchScriptSuccess (\n url: string,\n info: sourceScriptInfo,\n data: string,\n): void {\n if (info.isGlobal && !globalScripts.has(url)) {\n globalScripts.set(url, data)\n }\n\n info.code = data\n}\n\n/**\n * Execute js in the mount lifecycle\n * @param scriptList script list\n * @param app app\n * @param initedHook callback for umd mode\n */\nexport function execScripts (\n scriptList: Map<string, sourceScriptInfo>,\n app: AppInterface,\n initedHook: moduleCallBack,\n): void {\n const scriptListEntries: Array<[string, sourceScriptInfo]> = Array.from(scriptList.entries())\n const deferScriptPromise: Array<Promise<string>|string> = []\n const deferScriptInfo: Array<[string, sourceScriptInfo]> = []\n for (const [url, info] of scriptListEntries) {\n if (!info.isDynamic) {\n // Notice the second render\n if (info.defer || info.async) {\n if (info.isExternal && !info.code) {\n deferScriptPromise.push(fetchSource(url, app.name))\n } else {\n deferScriptPromise.push(info.code)\n }\n deferScriptInfo.push([url, info])\n\n info.module && (initedHook.moduleCount = initedHook.moduleCount ? ++initedHook.moduleCount : 1)\n } else {\n runScript(url, app, info, false)\n initedHook(false)\n }\n }\n }\n\n if (deferScriptPromise.length) {\n promiseStream<string>(deferScriptPromise, (res: {data: string, index: number}) => {\n const info = deferScriptInfo[res.index][1]\n info.code = info.code || res.data\n }, (err: {error: Error, index: number}) => {\n initedHook.errorCount = initedHook.errorCount ? ++initedHook.errorCount : 1\n logError(err, app.name)\n }, () => {\n deferScriptInfo.forEach(([url, info]) => {\n if (info.code) {\n runScript(url, app, info, false, initedHook)\n !info.module && initedHook(false)\n }\n })\n initedHook(\n isUndefined(initedHook.moduleCount) ||\n initedHook.errorCount === deferScriptPromise.length\n )\n })\n } else {\n initedHook(true)\n }\n}\n\n/**\n * run code\n * @param url script address\n * @param app app\n * @param info script info\n * @param isDynamic dynamically created script\n * @param callback callback of module script\n */\nexport function runScript (\n url: string,\n app: AppInterface,\n info: sourceScriptInfo,\n isDynamic: boolean,\n callback?: moduleCallBack,\n): any {\n try {\n const code = bindScope(url, app, info.code, info.module)\n if (app.inline || info.module) {\n const scriptElement = pureCreateElement('script')\n runCode2InlineScript(url, code, info.module, scriptElement, callback)\n if (isDynamic) return scriptElement\n // TEST IGNORE\n app.container?.querySelector('micro-app-body')!.appendChild(scriptElement)\n } else {\n runCode2Function(code, info)\n if (isDynamic) return document.createComment('dynamic script extract by micro-app')\n }\n } catch (e) {\n console.error(`[micro-app from runScript] app ${app.name}: `, e)\n }\n}\n\n/**\n * Get dynamically created remote script\n * @param url script address\n * @param info info\n * @param app app\n * @param originScript origin script element\n */\nexport function runDynamicRemoteScript (\n url: string,\n info: sourceScriptInfo,\n app: AppInterface,\n originScript: HTMLScriptElement,\n): HTMLScriptElement | Comment {\n const dispatchScriptOnLoadEvent = () => dispatchOnLoadEvent(originScript)\n\n // url is unique\n if (app.source.scripts.has(url)) {\n const existInfo: sourceScriptInfo = app.source.scripts.get(url)!\n !existInfo.module && defer(dispatchScriptOnLoadEvent)\n return runScript(url, app, existInfo, true, dispatchScriptOnLoadEvent)\n }\n\n if (globalScripts.has(url)) {\n const code = globalScripts.get(url)!\n info.code = code\n app.source.scripts.set(url, info)\n !info.module && defer(dispatchScriptOnLoadEvent)\n return runScript(url, app, info, true, dispatchScriptOnLoadEvent)\n }\n\n let replaceElement: Comment | HTMLScriptElement\n if (app.inline || info.module) {\n replaceElement = pureCreateElement('script')\n } else {\n replaceElement = document.createComment(`dynamic script with src='${url}' extract by micro-app`)\n }\n\n fetchSource(url, app.name).then((code: string) => {\n info.code = code\n app.source.scripts.set(url, info)\n info.isGlobal && globalScripts.set(url, code)\n try {\n code = bindScope(url, app, code, info.module)\n if (app.inline || info.module) {\n runCode2InlineScript(url, code, info.module, replaceElement as HTMLScriptElement, dispatchScriptOnLoadEvent)\n } else {\n runCode2Function(code, info)\n }\n } catch (e) {\n console.error(`[micro-app from runDynamicScript] app ${app.name}: `, e, url)\n }\n !info.module && dispatchOnLoadEvent(originScript)\n }).catch((err) => {\n logError(err, app.name)\n dispatchOnErrorEvent(originScript)\n })\n\n return replaceElement\n}\n\n/**\n * common handle for inline script\n * @param url script address\n * @param code bound code\n * @param module type='module' of script\n * @param scriptElement target script element\n * @param callback callback of module script\n */\nfunction runCode2InlineScript (\n url: string,\n code: string,\n module: boolean,\n scriptElement: HTMLScriptElement,\n callback?: moduleCallBack,\n): void {\n if (module) {\n // module script is async, transform it to a blob for subsequent operations\n const blob = new Blob([code], { type: 'text/javascript' })\n scriptElement.src = URL.createObjectURL(blob)\n scriptElement.setAttribute('type', 'module')\n if (callback) {\n callback.moduleCount && callback.moduleCount--\n scriptElement.onload = callback.bind(scriptElement, callback.moduleCount === 0)\n }\n } else {\n scriptElement.textContent = code\n }\n\n if (!url.startsWith('inline-')) {\n scriptElement.setAttribute('data-origin-src', url)\n }\n}\n\n// init & run code2Function\nfunction runCode2Function (code: string, info: sourceScriptInfo) {\n if (!info.code2Function) {\n info.code2Function = new Function(code)\n }\n info.code2Function.call(window)\n}\n\n/**\n * bind js scope\n * @param url script address\n * @param app app\n * @param code code\n * @param module type='module' of script\n */\nfunction bindScope (\n url: string,\n app: AppInterface,\n code: string,\n module: boolean,\n): string {\n if (isPlainObject(microApp.plugins)) {\n code = usePlugins(url, code, app.name, microApp.plugins!)\n }\n\n if (app.sandBox && !module) {\n globalEnv.rawWindow.__MICRO_APP_PROXY_WINDOW__ = app.sandBox.proxyWindow\n return `;(function(proxyWindow){with(proxyWindow.__MICRO_APP_WINDOW__){(function(${globalKeyToBeCached}){;${code}\\n}).call(proxyWindow,${globalKeyToBeCached})}})(window.__MICRO_APP_PROXY_WINDOW__);`\n }\n\n return code\n}\n\n/**\n * Call the plugin to process the file\n * @param url script address\n * @param code code\n * @param appName app name\n * @param plugins plugin list\n */\nfunction usePlugins (url: string, code: string, appName: string, plugins: plugins): string {\n if (isArray(plugins.global)) {\n for (const plugin of plugins.global) {\n if (isPlainObject(plugin) && isFunction(plugin.loader)) {\n code = plugin.loader!(code, url, plugin.options)\n }\n }\n }\n\n if (isArray(plugins.modules?.[appName])) {\n for (const plugin of plugins.modules![appName]) {\n if (isPlainObject(plugin) && isFunction(plugin.loader)) {\n code = plugin.loader!(code, url, plugin.options)\n }\n }\n }\n\n return code\n}\n","import type { AppInterface } from '@micro-app/types'\nimport { fetchSource } from './fetch'\nimport { logError, CompletionPath, pureCreateElement } from '../libs/utils'\nimport { extractLinkFromHtml, fetchLinksFromHtml } from './links'\nimport { extractScriptElement, fetchScriptsFromHtml } from './scripts'\nimport scopedCSS from './scoped_css'\n\n/**\n * transform html string to dom\n * @param str string dom\n */\nfunction getWrapElement (str: string): HTMLElement {\n const wrapDiv = pureCreateElement('div')\n\n wrapDiv.innerHTML = str\n\n return wrapDiv\n}\n\n/**\n * Recursively process each child element\n * @param parent parent element\n * @param app app\n * @param microAppHead micro-app-head element\n */\nfunction flatChildren (\n parent: HTMLElement,\n app: AppInterface,\n microAppHead: Element,\n): void {\n const children = Array.from(parent.children)\n\n children.length && children.forEach((child) => {\n flatChildren(child as HTMLElement, app, microAppHead)\n })\n\n for (const dom of children) {\n if (dom instanceof HTMLLinkElement) {\n if (dom.hasAttribute('exclude')) {\n parent.replaceChild(document.createComment('link element with exclude attribute ignored by micro-app'), dom)\n } else if (!dom.hasAttribute('ignore')) {\n extractLinkFromHtml(dom, parent, app)\n } else if (dom.hasAttribute('href')) {\n dom.setAttribute('href', CompletionPath(dom.getAttribute('href')!, app.url))\n }\n } else if (dom instanceof HTMLStyleElement) {\n if (dom.hasAttribute('exclude')) {\n parent.replaceChild(document.createComment('style element with exclude attribute ignored by micro-app'), dom)\n } else if (app.scopecss && !dom.hasAttribute('ignore')) {\n scopedCSS(dom, app)\n }\n } else if (dom instanceof HTMLScriptElement) {\n extractScriptElement(dom, parent, app)\n } else if (dom instanceof HTMLMetaElement || dom instanceof HTMLTitleElement) {\n parent.removeChild(dom)\n } else if (dom instanceof HTMLImageElement && dom.hasAttribute('src')) {\n dom.setAttribute('src', CompletionPath(dom.getAttribute('src')!, app.url))\n }\n }\n}\n\n/**\n * Extract link and script, bind style scope\n * @param htmlStr html string\n * @param app app\n */\nfunction extractSourceDom (htmlStr: string, app: AppInterface) {\n const wrapElement = getWrapElement(htmlStr)\n const microAppHead = wrapElement.querySelector('micro-app-head')\n const microAppBody = wrapElement.querySelector('micro-app-body')\n\n if (!microAppHead || !microAppBody) {\n const msg = `element ${microAppHead ? 'body' : 'head'} is missing`\n app.onerror(new Error(msg))\n return logError(msg, app.name)\n }\n\n flatChildren(wrapElement, app, microAppHead)\n\n if (app.source.links.size) {\n fetchLinksFromHtml(wrapElement, app, microAppHead)\n } else {\n app.onLoad(wrapElement)\n }\n\n if (app.source.scripts.size) {\n fetchScriptsFromHtml(wrapElement, app)\n } else {\n app.onLoad(wrapElement)\n }\n}\n\n/**\n * Get and format html\n * @param app app\n */\nexport default function extractHtml (app: AppInterface): void {\n fetchSource(app.ssrUrl || app.url, app.name, { cache: 'no-cache' }).then((htmlStr: string) => {\n if (!htmlStr) {\n const msg = 'html is empty, please check in detail'\n app.onerror(new Error(msg))\n return logError(msg, app.name)\n }\n htmlStr = htmlStr\n .replace(/<head[^>]*>[\\s\\S]*?<\\/head>/i, (match) => {\n return match\n .replace(/<head/i, '<micro-app-head')\n .replace(/<\\/head>/i, '</micro-app-head>')\n })\n .replace(/<body[^>]*>[\\s\\S]*?<\\/body>/i, (match) => {\n return match\n .replace(/<body/i, '<micro-app-body')\n .replace(/<\\/body>/i, '</micro-app-body>')\n })\n\n extractSourceDom(htmlStr, app)\n }).catch((e) => {\n logError(`Failed to fetch data from ${app.url}, micro-app stop rendering`, app.name, e)\n app.onLoadError(e)\n })\n}\n","import { CallableFunctionForInteract } from '@micro-app/types'\nimport { logError, isFunction, isPlainObject } from '../libs/utils'\n\nexport default class EventCenter {\n eventList = new Map<string, {\n data: Record<PropertyKey, unknown>,\n callbacks: Set<CallableFunctionForInteract>,\n }>()\n\n // whether the name is legal\n isLegalName (name: string): boolean {\n if (!name) {\n logError('event-center: Invalid name')\n return false\n }\n\n return true\n }\n\n /**\n * add listener\n * @param name event name\n * @param f listener\n * @param autoTrigger If there is cached data when first bind listener, whether it needs to trigger, default is false\n */\n on (name: string, f: CallableFunctionForInteract, autoTrigger = false): void {\n if (this.isLegalName(name)) {\n if (!isFunction(f)) {\n return logError('event-center: Invalid callback function')\n }\n\n let eventInfo = this.eventList.get(name)\n if (!eventInfo) {\n eventInfo = {\n data: {},\n callbacks: new Set(),\n }\n this.eventList.set(name, eventInfo)\n } else if (autoTrigger && Object.getOwnPropertyNames(eventInfo.data).length) {\n // auto trigger when data not null\n f(eventInfo.data)\n }\n\n eventInfo.callbacks.add(f)\n }\n }\n\n // remove listener, but the data is not cleared\n off (name: string, f?: CallableFunctionForInteract): void {\n if (this.isLegalName(name)) {\n const eventInfo = this.eventList.get(name)\n if (eventInfo) {\n if (isFunction(f)) {\n eventInfo.callbacks.delete(f!)\n } else {\n eventInfo.callbacks.clear()\n }\n }\n }\n }\n\n // dispatch data\n dispatch (name: string, data: Record<PropertyKey, unknown>): void {\n if (this.isLegalName(name)) {\n if (!isPlainObject(data)) {\n return logError('event-center: data must be object')\n }\n let eventInfo = this.eventList.get(name)\n if (eventInfo) {\n // Update when the data is not equal\n if (eventInfo.data !== data) {\n eventInfo.data = data\n for (const f of eventInfo.callbacks) {\n f(data)\n }\n }\n } else {\n eventInfo = {\n data: data,\n callbacks: new Set(),\n }\n this.eventList.set(name, eventInfo)\n }\n }\n }\n\n // get data\n getData (name: string): Record<PropertyKey, unknown> | null {\n const eventInfo = this.eventList.get(name)\n return eventInfo?.data ?? null\n }\n}\n","import { CallableFunctionForInteract } from '@micro-app/types'\nimport EventCenter from './event_center'\nimport { appInstanceMap } from '../create_app'\nimport {\n removeDomScope,\n isString,\n isFunction,\n isPlainObject,\n formatAppName,\n logError,\n getRootContainer,\n} from '../libs/utils'\n\nconst eventCenter = new EventCenter()\n\n/**\n * Format event name\n * @param appName app.name\n * @param fromBaseApp is from base app\n */\nfunction formatEventName (appName: string, fromBaseApp: boolean): string {\n if (!isString(appName) || !appName) return ''\n return fromBaseApp ? `__from_base_app_${appName}__` : `__from_micro_app_${appName}__`\n}\n\n// Global data\nclass EventCenterForGlobal {\n /**\n * add listener of global data\n * @param cb listener\n * @param autoTrigger If there is cached data when first bind listener, whether it needs to trigger, default is false\n */\n addGlobalDataListener (cb: CallableFunctionForInteract, autoTrigger?: boolean): void {\n const appName = (this as any).appName\n // if appName exists, this is in sub app\n if (appName) {\n cb.__APP_NAME__ = appName\n cb.__AUTO_TRIGGER__ = autoTrigger\n }\n eventCenter.on('global', cb, autoTrigger)\n }\n\n /**\n * remove listener of global data\n * @param cb listener\n */\n removeGlobalDataListener (cb: CallableFunctionForInteract): void {\n isFunction(cb) && eventCenter.off('global', cb)\n }\n\n /**\n * dispatch global data\n * @param data data\n */\n setGlobalData (data: Record<PropertyKey, unknown>): void {\n // clear dom scope before dispatch global data, apply to micro app\n removeDomScope()\n\n eventCenter.dispatch('global', data)\n }\n\n /**\n * get global data\n */\n getGlobalData (): Record<PropertyKey, unknown> | null {\n return eventCenter.getData('global')\n }\n\n /**\n * clear all listener of global data\n * if appName exists, only the specified functions is cleared\n * if appName not exists, only clear the base app functions\n */\n clearGlobalDataListener (): void {\n const appName = (this as any).appName\n const eventInfo = eventCenter.eventList.get('global')\n if (eventInfo) {\n for (const cb of eventInfo.callbacks) {\n if (\n (appName && appName === cb.__APP_NAME__) ||\n !(appName || cb.__APP_NAME__)\n ) {\n eventInfo.callbacks.delete(cb)\n }\n }\n }\n }\n}\n\n// Event center for base app\nexport class EventCenterForBaseApp extends EventCenterForGlobal {\n /**\n * add listener\n * @param appName app.name\n * @param cb listener\n * @param autoTrigger If there is cached data when first bind listener, whether it needs to trigger, default is false\n */\n addDataListener (appName: string, cb: CallableFunction, autoTrigger?: boolean): void {\n eventCenter.on(formatEventName(formatAppName(appName), false), cb, autoTrigger)\n }\n\n /**\n * remove listener\n * @param appName app.name\n * @param cb listener\n */\n removeDataListener (appName: string, cb: CallableFunction): void {\n isFunction(cb) && eventCenter.off(formatEventName(formatAppName(appName), false), cb)\n }\n\n /**\n * get data from micro app or base app\n * @param appName app.name\n * @param fromBaseApp whether get data from base app, default is false\n */\n getData (appName: string, fromBaseApp = false): Record<PropertyKey, unknown> | null {\n return eventCenter.getData(formatEventName(formatAppName(appName), fromBaseApp))\n }\n\n /**\n * Dispatch data to the specified micro app\n * @param appName app.name\n * @param data data\n */\n setData (appName: string, data: Record<PropertyKey, unknown>): void {\n eventCenter.dispatch(formatEventName(formatAppName(appName), true), data)\n }\n\n /**\n * clear all listener for specified micro app\n * @param appName app.name\n */\n clearDataListener (appName: string): void {\n eventCenter.off(formatEventName(formatAppName(appName), false))\n }\n}\n\n// Event center for sub app\nexport class EventCenterForMicroApp extends EventCenterForGlobal {\n appName: string\n umdDataListeners?: {\n global: Set<CallableFunctionForInteract>,\n normal: Set<CallableFunctionForInteract>,\n }\n\n constructor (appName: string) {\n super()\n this.appName = formatAppName(appName)\n !this.appName && logError(`Invalid appName ${appName}`)\n }\n\n /**\n * add listener, monitor the data sent by the base app\n * @param cb listener\n * @param autoTrigger If there is cached data when first bind listener, whether it needs to trigger, default is false\n */\n addDataListener (cb: CallableFunctionForInteract, autoTrigger?: boolean): void {\n cb.__AUTO_TRIGGER__ = autoTrigger\n eventCenter.on(formatEventName(this.appName, true), cb, autoTrigger)\n }\n\n /**\n * remove listener\n * @param cb listener\n */\n removeDataListener (cb: CallableFunctionForInteract): void {\n isFunction(cb) && eventCenter.off(formatEventName(this.appName, true), cb)\n }\n\n /**\n * get data from base app\n */\n getData (): Record<PropertyKey, unknown> | null {\n return eventCenter.getData(formatEventName(this.appName, true))\n }\n\n /**\n * dispatch data to base app\n * @param data data\n */\n dispatch (data: Record<PropertyKey, unknown>): void {\n removeDomScope()\n\n eventCenter.dispatch(formatEventName(this.appName, false), data)\n\n const app = appInstanceMap.get(this.appName)\n if (app?.container && isPlainObject(data)) {\n const event = new CustomEvent('datachange', {\n detail: {\n data,\n }\n })\n\n getRootContainer(app.container).dispatchEvent(event)\n }\n }\n\n /**\n * clear all listeners\n */\n clearDataListener (): void {\n eventCenter.off(formatEventName(this.appName, true))\n }\n}\n\n/**\n * Record UMD function before exec umdHookMount\n * @param microAppEventCneter\n */\nexport function recordDataCenterSnapshot (microAppEventCneter: EventCenterForMicroApp): void {\n const appName = microAppEventCneter.appName\n microAppEventCneter.umdDataListeners = { global: new Set(), normal: new Set() }\n\n const globalEventInfo = eventCenter.eventList.get('global')\n if (globalEventInfo) {\n for (const cb of globalEventInfo.callbacks) {\n if (appName === cb.__APP_NAME__) {\n microAppEventCneter.umdDataListeners.global.add(cb)\n }\n }\n }\n\n const subAppEventInfo = eventCenter.eventList.get(formatEventName(appName, true))\n if (subAppEventInfo) {\n microAppEventCneter.umdDataListeners.normal = new Set(subAppEventInfo.callbacks)\n }\n}\n\n/**\n * Rebind the UMD function of the record before remount\n * @param microAppEventCneter instance of EventCenterForMicroApp\n */\nexport function rebuildDataCenterSnapshot (microAppEventCneter: EventCenterForMicroApp): void {\n for (const cb of microAppEventCneter.umdDataListeners!.global) {\n microAppEventCneter.addGlobalDataListener(cb, cb.__AUTO_TRIGGER__)\n }\n\n for (const cb of microAppEventCneter.umdDataListeners!.normal) {\n microAppEventCneter.addDataListener(cb, cb.__AUTO_TRIGGER__)\n }\n}\n","/* eslint-disable no-return-assign */\nimport { isBoundFunction, rawDefineProperty, isBoolean } from '../libs/utils'\n\nfunction isBoundedFunction (value: CallableFunction & {__MICRO_APP_ISBOUND_FUNCTION: boolean}): boolean {\n if (isBoolean(value.__MICRO_APP_ISBOUND_FUNCTION)) return value.__MICRO_APP_ISBOUND_FUNCTION\n return value.__MICRO_APP_ISBOUND_FUNCTION = isBoundFunction(value)\n}\n\nfunction isConstructor (value: FunctionConstructor & {__MICRO_APP_ISCONSTRUCTOR: boolean}) {\n if (isBoolean(value.__MICRO_APP_ISCONSTRUCTOR)) return value.__MICRO_APP_ISCONSTRUCTOR\n\n const valueStr = value.toString()\n\n const result = (\n value.prototype?.constructor === value &&\n Object.getOwnPropertyNames(value.prototype).length > 1\n ) ||\n /^function\\s+[A-Z]/.test(valueStr) ||\n /^class\\s+/.test(valueStr)\n\n return value.__MICRO_APP_ISCONSTRUCTOR = result\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport default function bindFunctionToRawWindow (rawWindow: Window, value: any): unknown {\n if (value.__MICRO_APP_BOUND_WINDOW_FUNCTION) return value.__MICRO_APP_BOUND_WINDOW_FUNCTION\n\n if (!isConstructor(value) && !isBoundedFunction(value)) {\n const bindRawWindowValue = value.bind(rawWindow)\n\n for (const key in value) {\n bindRawWindowValue[key] = value[key]\n }\n\n if (value.hasOwnProperty('prototype')) {\n rawDefineProperty(bindRawWindowValue, 'prototype', {\n value: value.prototype,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n\n return value.__MICRO_APP_BOUND_WINDOW_FUNCTION = bindRawWindowValue\n }\n\n return value\n}\n","import type { microAppWindowType } from '@micro-app/types'\nimport {\n getCurrentAppName,\n setCurrentAppName,\n logWarn,\n isFunction,\n isBoundFunction,\n rawDefineProperty,\n} from '../libs/utils'\nimport { appInstanceMap } from '../create_app'\n// import { getActiveApps } from '../micro_app'\nimport globalEnv from '../libs/global_env'\n\ntype MicroEventListener = EventListenerOrEventListenerObject & Record<string, any>\ntype timeInfo = {\n handler: TimerHandler,\n timeout?: number,\n args: any[],\n}\n\n// document.onclick binding list, the binding function of each application is unique\nconst documentClickListMap = new Map<string, unknown>()\nlet hasRewriteDocumentOnClick = false\n/**\n * Rewrite document.onclick and execute it only once\n */\nfunction overwriteDocumentOnClick (): void {\n hasRewriteDocumentOnClick = true\n if (Object.getOwnPropertyDescriptor(document, 'onclick')) {\n return logWarn('Cannot redefine document property onclick')\n }\n const rawOnClick = document.onclick\n document.onclick = null\n let hasDocumentClickInited = false\n\n function onClickHandler (e: MouseEvent) {\n documentClickListMap.forEach((f) => {\n isFunction(f) && (f as Function).call(document, e)\n })\n }\n\n rawDefineProperty(document, 'onclick', {\n configurable: true,\n enumerable: true,\n get () {\n const appName = getCurrentAppName()\n return appName ? documentClickListMap.get(appName) : documentClickListMap.get('base')\n },\n set (f: GlobalEventHandlers['onclick']) {\n const appName = getCurrentAppName()\n if (appName) {\n documentClickListMap.set(appName, f)\n } else {\n documentClickListMap.set('base', f)\n }\n\n if (!hasDocumentClickInited && isFunction(f)) {\n hasDocumentClickInited = true\n globalEnv.rawDocumentAddEventListener.call(globalEnv.rawDocument, 'click', onClickHandler, false)\n }\n }\n })\n\n rawOnClick && (document.onclick = rawOnClick)\n}\n\n/**\n * The document event is globally, we need to clear these event bindings when micro application unmounted\n */\nconst documentEventListenerMap = new Map<string, Map<string, Set<MicroEventListener>>>()\nexport function effectDocumentEvent (): void {\n const {\n rawDocument,\n rawDocumentAddEventListener,\n rawDocumentRemoveEventListener,\n } = globalEnv\n\n !hasRewriteDocumentOnClick && overwriteDocumentOnClick()\n\n document.addEventListener = function (\n type: string,\n listener: MicroEventListener,\n options?: boolean | AddEventListenerOptions\n ): void {\n const appName = getCurrentAppName()\n /**\n * ignore bound function of document event in umd mode, used to solve problem of react global events\n */\n if (appName && !(appInstanceMap.get(appName)?.umdMode && isBoundFunction(listener))) {\n const appListenersMap = documentEventListenerMap.get(appName)\n if (appListenersMap) {\n const appListenerList = appListenersMap.get(type)\n if (appListenerList) {\n appListenerList.add(listener)\n } else {\n appListenersMap.set(type, new Set([listener]))\n }\n } else {\n documentEventListenerMap.set(appName, new Map([[type, new Set([listener])]]))\n }\n listener && (listener.__MICRO_APP_MARK_OPTIONS__ = options)\n }\n rawDocumentAddEventListener.call(rawDocument, type, listener, options)\n }\n\n document.removeEventListener = function (\n type: string,\n listener: MicroEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const appName = getCurrentAppName()\n if (appName && !(appInstanceMap.get(appName)?.umdMode && isBoundFunction(listener))) {\n const appListenersMap = documentEventListenerMap.get(appName)\n if (appListenersMap) {\n const appListenerList = appListenersMap.get(type)\n if (appListenerList?.size && appListenerList.has(listener)) {\n appListenerList.delete(listener)\n }\n }\n }\n rawDocumentRemoveEventListener.call(rawDocument, type, listener, options)\n }\n}\n\n// Clear the document event agent\nexport function releaseEffectDocumentEvent (): void {\n document.addEventListener = globalEnv.rawDocumentAddEventListener\n document.removeEventListener = globalEnv.rawDocumentRemoveEventListener\n}\n\n// this events should be sent to the specified app\nconst formatEventList = ['unmount', 'appstate-change']\n\n/**\n * Format event name\n * @param type event name\n * @param microAppWindow micro window\n */\nfunction formatEventType (type: string, microAppWindow: microAppWindowType): string {\n if (formatEventList.includes(type)) {\n return `${type}-${microAppWindow.__MICRO_APP_NAME__}`\n }\n return type\n}\n\n/**\n * Rewrite side-effect events\n * @param microAppWindow micro window\n */\nexport default function effect (microAppWindow: microAppWindowType): Record<string, CallableFunction> {\n const appName = microAppWindow.__MICRO_APP_NAME__\n const eventListenerMap = new Map<string, Set<MicroEventListener>>()\n const intervalIdMap = new Map<number, timeInfo>()\n const timeoutIdMap = new Map<number, timeInfo>()\n const {\n rawWindow,\n rawDocument,\n rawWindowAddEventListener,\n rawWindowRemoveEventListener,\n rawSetInterval,\n rawSetTimeout,\n rawClearInterval,\n rawClearTimeout,\n rawDocumentRemoveEventListener,\n } = globalEnv\n\n // listener may be null, e.g test-passive\n microAppWindow.addEventListener = function (\n type: string,\n listener: MicroEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n type = formatEventType(type, microAppWindow)\n const listenerList = eventListenerMap.get(type)\n if (listenerList) {\n listenerList.add(listener)\n } else {\n eventListenerMap.set(type, new Set([listener]))\n }\n listener && (listener.__MICRO_APP_MARK_OPTIONS__ = options)\n rawWindowAddEventListener.call(rawWindow, type, listener, options)\n }\n\n microAppWindow.removeEventListener = function (\n type: string,\n listener: MicroEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n type = formatEventType(type, microAppWindow)\n const listenerList = eventListenerMap.get(type)\n if (listenerList?.size && listenerList.has(listener)) {\n listenerList.delete(listener)\n }\n rawWindowRemoveEventListener.call(rawWindow, type, listener, options)\n }\n\n microAppWindow.setInterval = function (\n handler: TimerHandler,\n timeout?: number,\n ...args: any[]\n ): number {\n const intervalId = rawSetInterval.call(rawWindow, handler, timeout, ...args)\n intervalIdMap.set(intervalId, { handler, timeout, args })\n return intervalId\n }\n\n microAppWindow.setTimeout = function (\n handler: TimerHandler,\n timeout?: number,\n ...args: any[]\n ): number {\n const timeoutId = rawSetTimeout.call(rawWindow, handler, timeout, ...args)\n timeoutIdMap.set(timeoutId, { handler, timeout, args })\n return timeoutId\n }\n\n microAppWindow.clearInterval = function (intervalId: number) {\n intervalIdMap.delete(intervalId)\n rawClearInterval.call(rawWindow, intervalId)\n }\n\n microAppWindow.clearTimeout = function (timeoutId: number) {\n timeoutIdMap.delete(timeoutId)\n rawClearTimeout.call(rawWindow, timeoutId)\n }\n\n const umdWindowListenerMap = new Map<string, Set<MicroEventListener>>()\n const umdDocumentListenerMap = new Map<string, Set<MicroEventListener>>()\n let umdIntervalIdMap = new Map<number, timeInfo>()\n let umdTimeoutIdMap = new Map<number, timeInfo>()\n let umdOnClickHandler: unknown\n\n // record event and timer before exec umdMountHook\n const recordUmdEffect = () => {\n // record window event\n eventListenerMap.forEach((listenerList, type) => {\n if (listenerList.size) {\n umdWindowListenerMap.set(type, new Set(listenerList))\n }\n })\n\n // record timers\n if (intervalIdMap.size) {\n umdIntervalIdMap = new Map(intervalIdMap)\n }\n\n if (timeoutIdMap.size) {\n umdTimeoutIdMap = new Map(timeoutIdMap)\n }\n\n // record onclick handler\n umdOnClickHandler = documentClickListMap.get(appName)\n\n // record document event\n const documentAppListenersMap = documentEventListenerMap.get(appName)\n if (documentAppListenersMap) {\n documentAppListenersMap.forEach((listenerList, type) => {\n if (listenerList.size) {\n umdDocumentListenerMap.set(type, new Set(listenerList))\n }\n })\n }\n }\n\n // rebuild event and timer before remount umd app\n const rebuildUmdEffect = () => {\n // rebuild window event\n umdWindowListenerMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n microAppWindow.addEventListener(type, listener, listener?.__MICRO_APP_MARK_OPTIONS__)\n }\n })\n\n // rebuild timer\n umdIntervalIdMap.forEach((info: timeInfo) => {\n microAppWindow.setInterval(info.handler, info.timeout, ...info.args)\n })\n\n umdTimeoutIdMap.forEach((info: timeInfo) => {\n microAppWindow.setTimeout(info.handler, info.timeout, ...info.args)\n })\n\n // rebuild onclick event\n umdOnClickHandler && documentClickListMap.set(appName, umdOnClickHandler)\n\n // rebuild document event\n setCurrentAppName(appName)\n umdDocumentListenerMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n document.addEventListener(type, listener, listener?.__MICRO_APP_MARK_OPTIONS__)\n }\n })\n setCurrentAppName(null)\n }\n\n // release all event listener & interval & timeout when unmount app\n const releaseEffect = () => {\n // Clear window binding events\n if (eventListenerMap.size) {\n eventListenerMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n rawWindowRemoveEventListener.call(rawWindow, type, listener)\n }\n })\n eventListenerMap.clear()\n }\n\n // Clear timers\n if (intervalIdMap.size) {\n intervalIdMap.forEach((_, intervalId: number) => {\n rawClearInterval.call(rawWindow, intervalId)\n })\n intervalIdMap.clear()\n }\n\n if (timeoutIdMap.size) {\n timeoutIdMap.forEach((_, timeoutId: number) => {\n rawClearTimeout.call(rawWindow, timeoutId)\n })\n timeoutIdMap.clear()\n }\n\n // Clear the function bound by micro application through document.onclick\n documentClickListMap.delete(appName)\n\n // Clear document binding event\n const documentAppListenersMap = documentEventListenerMap.get(appName)\n if (documentAppListenersMap) {\n documentAppListenersMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n rawDocumentRemoveEventListener.call(rawDocument, type, listener)\n }\n })\n documentAppListenersMap.clear()\n }\n }\n\n return {\n recordUmdEffect,\n rebuildUmdEffect,\n releaseEffect,\n }\n}\n\n// window.addEventListener('mousedown', (e: Event) => {\n// const targetNode = e.target\n// const activeApps = getActiveApps(true)\n// let isScopeOfMicroApp = false\n// for (const appName of activeApps) {\n// const app = appInstanceMap.get(appName)!\n// if (targetNode instanceof Node && app.container!.contains(targetNode)) {\n// isScopeOfMicroApp = true\n// // console.log(111111, appName)\n// setCurrentAppName(appName)\n// break\n// }\n// }\n// if (!isScopeOfMicroApp) {\n// setCurrentAppName(null)\n// }\n// }, false)\n\n// let isWaitingForMacroReset = false\n// window.addEventListener('mouseup', () => {\n// if (!isWaitingForMacroReset && getCurrentAppName()) {\n// isWaitingForMacroReset = true\n// setTimeout(() => {\n// setCurrentAppName(null)\n// isWaitingForMacroReset = false\n// })\n// }\n// }, false)\n","import type { microAppWindowType, SandBoxInterface } from '@micro-app/types'\nimport {\n EventCenterForMicroApp, rebuildDataCenterSnapshot, recordDataCenterSnapshot\n} from '../interact'\nimport globalEnv from '../libs/global_env'\nimport {\n getEffectivePath,\n isArray,\n isPlainObject,\n isString,\n removeDomScope,\n unique,\n throttleDeferForSetAppName,\n rawDefineProperty,\n rawDefineProperties,\n isFunction,\n rawHasOwnProperty,\n} from '../libs/utils'\nimport microApp from '../micro_app'\nimport bindFunctionToRawWindow from './bind_function'\nimport effect, { effectDocumentEvent, releaseEffectDocumentEvent } from './effect'\n\n/* eslint-disable camelcase */\nexport type MicroAppWindowDataType = {\n __MICRO_APP_ENVIRONMENT__: boolean\n __MICRO_APP_NAME__: string\n __MICRO_APP_PUBLIC_PATH__: string\n __MICRO_APP_BASE_URL__: string\n __MICRO_APP_BASE_ROUTE__: string\n __MICRO_APP_UMDMODE__: boolean\n microApp: EventCenterForMicroApp\n rawWindow: Window\n rawDocument: Document\n removeDomScope: () => void\n}\n\nexport type MicroAppWindowType = Window & MicroAppWindowDataType\n\n// Variables that can escape to rawWindow\nconst staticEscapeProperties: PropertyKey[] = [\n 'System',\n '__cjsWrapper',\n]\n\n// Variables that can only assigned to rawWindow\nconst escapeSetterKeyList: PropertyKey[] = [\n 'location',\n]\n\nconst globalPropertyList: Array<PropertyKey> = ['window', 'self', 'globalThis']\n\nexport default class SandBox implements SandBoxInterface {\n static activeCount = 0 // number of active sandbox\n // @ts-ignore\n private recordUmdEffect: CallableFunction\n // @ts-ignore\n private rebuildUmdEffect: CallableFunction\n // @ts-ignore\n private releaseEffect: CallableFunction\n // Scoped global Properties(Properties that can only get and set in microAppWindow, will not escape to rawWindow)\n private scopeProperties: PropertyKey[] = ['webpackJsonp']\n // Properties that can be escape to rawWindow\n private escapeProperties: PropertyKey[] = []\n // Properties newly added to microAppWindow\n private injectedKeys = new Set<PropertyKey>()\n // Properties escape to rawWindow, cleared when unmount\n private escapeKeys = new Set<PropertyKey>()\n // record injected values before the first execution of umdHookMount and rebuild before remount umd app\n private recordUmdinjectedValues?: Map<PropertyKey, unknown>\n // sandbox state\n private active = false\n proxyWindow: WindowProxy // Proxy\n microAppWindow = {} as MicroAppWindowType // Proxy target\n\n constructor (appName: string, url: string) {\n // get scopeProperties and escapeProperties from plugins\n this.getScopeProperties(appName)\n // create proxyWindow with Proxy(microAppWindow)\n this.proxyWindow = this.createProxyWindow()\n // inject global properties\n this.initMicroAppWindow(this.microAppWindow, appName, url)\n // Rewrite global event listener & timeout\n Object.assign(this, effect(this.microAppWindow))\n }\n\n start (baseroute: string): void {\n if (!this.active) {\n this.active = true\n this.microAppWindow.__MICRO_APP_BASE_ROUTE__ = this.microAppWindow.__MICRO_APP_BASE_URL__ = baseroute\n // BUG FIX: bable-polyfill@6.x\n globalEnv.rawWindow._babelPolyfill && (globalEnv.rawWindow._babelPolyfill = false)\n if (++SandBox.activeCount === 1) {\n effectDocumentEvent()\n }\n }\n }\n\n stop (): void {\n if (this.active) {\n this.active = false\n this.releaseEffect()\n this.microAppWindow.microApp.clearDataListener()\n this.microAppWindow.microApp.clearGlobalDataListener()\n\n this.injectedKeys.forEach((key: PropertyKey) => {\n Reflect.deleteProperty(this.microAppWindow, key)\n })\n this.injectedKeys.clear()\n\n this.escapeKeys.forEach((key: PropertyKey) => {\n Reflect.deleteProperty(globalEnv.rawWindow, key)\n })\n this.escapeKeys.clear()\n\n if (--SandBox.activeCount === 0) {\n releaseEffectDocumentEvent()\n }\n }\n }\n\n // record umd snapshot before the first execution of umdHookMount\n recordUmdSnapshot (): void {\n this.microAppWindow.__MICRO_APP_UMD_MODE__ = true\n this.recordUmdEffect()\n recordDataCenterSnapshot(this.microAppWindow.microApp)\n\n this.recordUmdinjectedValues = new Map<PropertyKey, unknown>()\n this.injectedKeys.forEach((key: PropertyKey) => {\n this.recordUmdinjectedValues!.set(key, Reflect.get(this.microAppWindow, key))\n })\n }\n\n // rebuild umd snapshot before remount umd app\n rebuildUmdSnapshot (): void {\n this.recordUmdinjectedValues!.forEach((value: unknown, key: PropertyKey) => {\n Reflect.set(this.proxyWindow, key, value)\n })\n this.rebuildUmdEffect()\n rebuildDataCenterSnapshot(this.microAppWindow.microApp)\n }\n\n /**\n * get scopeProperties and escapeProperties from plugins\n * @param appName app name\n */\n private getScopeProperties (appName: string): void {\n if (!isPlainObject(microApp.plugins)) return\n\n if (isArray(microApp.plugins!.global)) {\n for (const plugin of microApp.plugins!.global) {\n if (isPlainObject(plugin)) {\n if (isArray(plugin.scopeProperties)) {\n this.scopeProperties = this.scopeProperties.concat(plugin.scopeProperties!)\n }\n if (isArray(plugin.escapeProperties)) {\n this.escapeProperties = this.escapeProperties.concat(plugin.escapeProperties!)\n }\n }\n }\n }\n\n if (isArray(microApp.plugins!.modules?.[appName])) {\n for (const plugin of microApp.plugins!.modules![appName]) {\n if (isPlainObject(plugin)) {\n if (isArray(plugin.scopeProperties)) {\n this.scopeProperties = this.scopeProperties.concat(plugin.scopeProperties!)\n }\n if (isArray(plugin.escapeProperties)) {\n this.escapeProperties = this.escapeProperties.concat(plugin.escapeProperties!)\n }\n }\n }\n }\n }\n\n // create proxyWindow with Proxy(microAppWindow)\n private createProxyWindow () {\n const rawWindow = globalEnv.rawWindow\n const descriptorTargetMap = new Map<PropertyKey, 'target' | 'rawWindow'>()\n // window.xxx will trigger proxy\n return new Proxy(this.microAppWindow, {\n get: (target: microAppWindowType, key: PropertyKey): unknown => {\n if (\n Reflect.has(target, key) ||\n (isString(key) && /^__MICRO_APP_/.test(key)) ||\n this.scopeProperties.includes(key)\n ) return Reflect.get(target, key)\n\n const rawValue = Reflect.get(rawWindow, key)\n\n return isFunction(rawValue) ? bindFunctionToRawWindow(rawWindow, rawValue) : rawValue\n },\n set: (target: microAppWindowType, key: PropertyKey, value: unknown): boolean => {\n if (this.active) {\n if (escapeSetterKeyList.includes(key)) {\n Reflect.set(rawWindow, key, value)\n } else if (\n // target.hasOwnProperty has been rewritten\n !rawHasOwnProperty.call(target, key) &&\n rawHasOwnProperty.call(rawWindow, key) &&\n !this.scopeProperties.includes(key)\n ) {\n const descriptor = Object.getOwnPropertyDescriptor(rawWindow, key)\n const { configurable, enumerable, writable, set } = descriptor!\n // set value because it can be set\n rawDefineProperty(target, key, {\n value,\n configurable,\n enumerable,\n writable: writable ?? !!set,\n })\n\n this.injectedKeys.add(key)\n } else {\n Reflect.set(target, key, value)\n this.injectedKeys.add(key)\n }\n\n if (\n (\n this.escapeProperties.includes(key) ||\n (staticEscapeProperties.includes(key) && !Reflect.has(rawWindow, key))\n ) &&\n !this.scopeProperties.includes(key)\n ) {\n Reflect.set(rawWindow, key, value)\n this.escapeKeys.add(key)\n }\n }\n\n return true\n },\n has: (target: microAppWindowType, key: PropertyKey): boolean => {\n if (this.scopeProperties.includes(key)) return key in target\n return key in target || key in rawWindow\n },\n // Object.getOwnPropertyDescriptor(window, key)\n getOwnPropertyDescriptor: (target: microAppWindowType, key: PropertyKey): PropertyDescriptor|undefined => {\n if (rawHasOwnProperty.call(target, key)) {\n descriptorTargetMap.set(key, 'target')\n return Object.getOwnPropertyDescriptor(target, key)\n }\n\n if (rawHasOwnProperty.call(rawWindow, key)) {\n descriptorTargetMap.set(key, 'rawWindow')\n const descriptor = Object.getOwnPropertyDescriptor(rawWindow, key)\n if (descriptor && !descriptor.configurable) {\n descriptor.configurable = true\n }\n return descriptor\n }\n\n return undefined\n },\n // Object.defineProperty(window, key, Descriptor)\n defineProperty: (target: microAppWindowType, key: PropertyKey, value: PropertyDescriptor): boolean => {\n const from = descriptorTargetMap.get(key)\n if (from === 'rawWindow') {\n return Reflect.defineProperty(rawWindow, key, value)\n }\n return Reflect.defineProperty(target, key, value)\n },\n // Object.getOwnPropertyNames(window)\n ownKeys: (target: microAppWindowType): Array<string | symbol> => {\n return unique(Reflect.ownKeys(rawWindow).concat(Reflect.ownKeys(target)))\n },\n deleteProperty: (target: microAppWindowType, key: PropertyKey): boolean => {\n if (rawHasOwnProperty.call(target, key)) {\n this.injectedKeys.has(key) && this.injectedKeys.delete(key)\n this.escapeKeys.has(key) && Reflect.deleteProperty(rawWindow, key)\n return Reflect.deleteProperty(target, key)\n }\n return true\n },\n })\n }\n\n /**\n * inject global properties to microAppWindow\n * @param microAppWindow micro window\n * @param appName app name\n * @param url app url\n */\n private initMicroAppWindow (microAppWindow: microAppWindowType, appName: string, url: string): void {\n microAppWindow.__MICRO_APP_ENVIRONMENT__ = true\n microAppWindow.__MICRO_APP_NAME__ = appName\n microAppWindow.__MICRO_APP_PUBLIC_PATH__ = getEffectivePath(url)\n microAppWindow.__MICRO_APP_WINDOW__ = microAppWindow\n microAppWindow.microApp = new EventCenterForMicroApp(appName)\n microAppWindow.rawWindow = globalEnv.rawWindow\n microAppWindow.rawDocument = globalEnv.rawDocument\n microAppWindow.removeDomScope = removeDomScope\n microAppWindow.hasOwnProperty = (key: PropertyKey) => rawHasOwnProperty.call(microAppWindow, key) || rawHasOwnProperty.call(globalEnv.rawWindow, key)\n this.setMappingPropertiesWithRawDescriptor(microAppWindow)\n this.setHijackProperties(microAppWindow, appName)\n }\n\n // properties associated with the native window\n private setMappingPropertiesWithRawDescriptor (microAppWindow: microAppWindowType): void {\n let topValue: Window, parentValue: Window\n const rawWindow = globalEnv.rawWindow\n if (rawWindow === rawWindow.parent) { // not in iframe\n topValue = parentValue = this.proxyWindow\n } else { // in iframe\n topValue = rawWindow.top\n parentValue = rawWindow.parent\n }\n\n rawDefineProperty(\n microAppWindow,\n 'top',\n this.createDescriptorFormicroAppWindow('top', topValue)\n )\n\n rawDefineProperty(\n microAppWindow,\n 'parent',\n this.createDescriptorFormicroAppWindow('parent', parentValue)\n )\n\n globalPropertyList.forEach((key: PropertyKey) => {\n rawDefineProperty(\n microAppWindow,\n key,\n this.createDescriptorFormicroAppWindow(key, this.proxyWindow)\n )\n })\n }\n\n private createDescriptorFormicroAppWindow (key: PropertyKey, value: unknown): PropertyDescriptor {\n const { configurable = true, enumerable = true, writable, set } = Object.getOwnPropertyDescriptor(globalEnv.rawWindow, key) || { writable: true }\n const descriptor: PropertyDescriptor = {\n value,\n configurable,\n enumerable,\n writable: writable ?? !!set\n }\n\n return descriptor\n }\n\n // set hijack Properties to microAppWindow\n private setHijackProperties (microAppWindow: microAppWindowType, appName: string): void {\n let modifiedEval: unknown, modifiedImage: unknown\n rawDefineProperties(microAppWindow, {\n document: {\n get () {\n throttleDeferForSetAppName(appName)\n return globalEnv.rawDocument\n },\n configurable: false,\n enumerable: true,\n },\n eval: {\n get () {\n throttleDeferForSetAppName(appName)\n return modifiedEval || eval\n },\n set: (value) => {\n modifiedEval = value\n },\n configurable: true,\n enumerable: false,\n },\n Image: {\n get () {\n throttleDeferForSetAppName(appName)\n return modifiedImage || globalEnv.ImageProxy\n },\n set: (value) => {\n modifiedImage = value\n },\n configurable: true,\n enumerable: false,\n },\n })\n }\n}\n","import microApp from '../micro_app'\nimport { logError, isFunction, removeDomScope, getRootContainer } from '../libs/utils'\n\nfunction formatEventInfo (event: CustomEvent, element: HTMLElement): void {\n Object.defineProperties(event, {\n currentTarget: {\n get () {\n return element\n }\n },\n target: {\n get () {\n return element\n }\n },\n })\n}\n\n/**\n * dispatch lifeCycles event to base app\n * created, beforemount, mounted, unmount, error\n * @param element container\n * @param appName app.name\n * @param lifecycleName lifeCycle name\n * @param error param from error hook\n */\nexport default function dispatchLifecyclesEvent (\n element: HTMLElement | ShadowRoot,\n appName: string,\n lifecycleName: string,\n error?: Error,\n): void {\n if (!element) {\n return logError(`element does not exist in lifecycle ${lifecycleName}`, appName)\n }\n\n element = getRootContainer(element)\n\n // clear dom scope before dispatch lifeCycles event to base app, especially mounted & unmount\n removeDomScope()\n\n const detail = Object.assign({\n name: appName,\n container: element,\n }, error && {\n error\n })\n\n const event = new CustomEvent(lifecycleName, {\n detail,\n })\n\n formatEventInfo(event, element)\n // global hooks\n // @ts-ignore\n if (isFunction(microApp.lifeCycles?.[lifecycleName])) {\n // @ts-ignore\n microApp.lifeCycles[lifecycleName](event)\n }\n\n element.dispatchEvent(event)\n}\n\n/**\n * Dispatch custom event to micro app\n * @param eventName event name\n * @param appName app name\n * @param detail event detail\n */\nexport function dispatchCustomEventToMicroApp (\n eventName: string,\n appName: string,\n detail: Record<string, any> = {},\n): void {\n const event = new CustomEvent(`${eventName}-${appName}`, {\n detail,\n })\n window.dispatchEvent(event)\n}\n","import type {\n AppInterface,\n sourceType,\n SandBoxInterface,\n sourceLinkInfo,\n sourceScriptInfo,\n Func,\n} from '@micro-app/types'\nimport extractHtml from './source'\nimport { execScripts } from './source/scripts'\nimport { appStates, lifeCycles, keepAliveStates } from './constants'\nimport SandBox from './sandbox'\nimport {\n isFunction,\n cloneContainer,\n isBoolean,\n isPromise,\n logError,\n getRootContainer,\n} from './libs/utils'\nimport dispatchLifecyclesEvent, { dispatchCustomEventToMicroApp } from './interact/lifecycles_event'\nimport globalEnv from './libs/global_env'\n\n// micro app instances\nexport const appInstanceMap = new Map<string, AppInterface>()\n\n// params of CreateApp\nexport interface CreateAppParam {\n name: string\n url: string\n ssrUrl?: string\n scopecss: boolean\n useSandbox: boolean\n inline?: boolean\n baseroute?: string\n container?: HTMLElement | ShadowRoot\n}\n\nexport default class CreateApp implements AppInterface {\n private state: string = appStates.NOT_LOADED\n private keepAliveState: string | null = null\n private keepAliveContainer: HTMLElement | null = null\n private loadSourceLevel: -1|0|1|2 = 0\n private umdHookMount: Func | null = null\n private umdHookUnmount: Func | null = null\n private libraryName: string | null = null\n umdMode = false\n isPrefetch = false\n name: string\n url: string\n ssrUrl: string\n container: HTMLElement | ShadowRoot | null = null\n inline: boolean\n scopecss: boolean\n useSandbox: boolean\n baseroute = ''\n source: sourceType\n sandBox: SandBoxInterface | null = null\n\n constructor ({\n name,\n url,\n ssrUrl,\n container,\n inline,\n scopecss,\n useSandbox,\n baseroute,\n }: CreateAppParam) {\n this.container = container ?? null\n this.inline = inline ?? false\n this.baseroute = baseroute ?? ''\n this.ssrUrl = ssrUrl ?? ''\n // optional during initπ\n this.name = name\n this.url = url\n this.useSandbox = useSandbox\n this.scopecss = this.useSandbox && scopecss\n this.source = {\n links: new Map<string, sourceLinkInfo>(),\n scripts: new Map<string, sourceScriptInfo>(),\n }\n this.loadSourceCode()\n this.useSandbox && (this.sandBox = new SandBox(name, url))\n }\n\n // Load resources\n loadSourceCode (): void {\n this.state = appStates.LOADING_SOURCE_CODE\n extractHtml(this)\n }\n\n /**\n * When resource is loaded, mount app if it is not prefetch or unmount\n */\n onLoad (html: HTMLElement): void {\n if (++this.loadSourceLevel === 2) {\n this.source.html = html\n\n if (this.isPrefetch || appStates.UNMOUNT === this.state) return\n\n this.state = appStates.LOAD_SOURCE_FINISHED\n\n this.mount()\n }\n }\n\n /**\n * Error loading HTML\n * @param e Error\n */\n onLoadError (e: Error): void {\n this.loadSourceLevel = -1\n if (appStates.UNMOUNT !== this.state) {\n this.onerror(e)\n this.state = appStates.LOAD_SOURCE_ERROR\n }\n }\n\n /**\n * mount app\n * @param container app container\n * @param inline js runs in inline mode\n * @param baseroute route prefix, default is ''\n */\n mount (\n container?: HTMLElement | ShadowRoot,\n inline?: boolean,\n baseroute?: string,\n ): void {\n if (isBoolean(inline) && inline !== this.inline) {\n this.inline = inline\n }\n\n this.container = this.container ?? container!\n this.baseroute = baseroute ?? this.baseroute\n\n if (this.loadSourceLevel !== 2) {\n this.state = appStates.LOADING_SOURCE_CODE\n return\n }\n\n dispatchLifecyclesEvent(\n this.container,\n this.name,\n lifeCycles.BEFOREMOUNT,\n )\n\n this.state = appStates.MOUNTING\n\n cloneContainer(this.source.html as Element, this.container as Element, !this.umdMode)\n\n this.sandBox?.start(this.baseroute)\n\n let umdHookMountResult: any // result of mount function\n\n if (!this.umdMode) {\n let hasDispatchMountedEvent = false\n // if all js are executed, param isFinished will be true\n execScripts(this.source.scripts, this, (isFinished: boolean) => {\n if (!this.umdMode) {\n const { mount, unmount } = this.getUmdLibraryHooks()\n // if mount & unmount is function, the sub app is umd mode\n if (isFunction(mount) && isFunction(unmount)) {\n this.umdHookMount = mount as Func\n this.umdHookUnmount = unmount as Func\n this.umdMode = true\n this.sandBox?.recordUmdSnapshot()\n try {\n umdHookMountResult = this.umdHookMount()\n } catch (e) {\n logError('an error occurred in the mount function \\n', this.name, e)\n }\n }\n }\n\n if (!hasDispatchMountedEvent && (isFinished === true || this.umdMode)) {\n hasDispatchMountedEvent = true\n this.handleMounted(umdHookMountResult)\n }\n })\n } else {\n this.sandBox?.rebuildUmdSnapshot()\n try {\n umdHookMountResult = this.umdHookMount!()\n } catch (e) {\n logError('an error occurred in the mount function \\n', this.name, e)\n }\n this.handleMounted(umdHookMountResult)\n }\n }\n\n /**\n * handle for promise umdHookMount\n * @param umdHookMountResult result of umdHookMount\n */\n private handleMounted (umdHookMountResult: any): void {\n if (isPromise(umdHookMountResult)) {\n umdHookMountResult\n .then(() => this.dispatchMountedEvent())\n .catch((e: Error) => this.onerror(e))\n } else {\n this.dispatchMountedEvent()\n }\n }\n\n /**\n * dispatch mounted event when app run finished\n */\n private dispatchMountedEvent (): void {\n if (appStates.UNMOUNT !== this.state) {\n this.state = appStates.MOUNTED\n dispatchLifecyclesEvent(\n this.container!,\n this.name,\n lifeCycles.MOUNTED,\n )\n }\n }\n\n /**\n * unmount app\n * @param destroy completely destroy, delete cache resources\n * @param unmountcb callback of unmount\n */\n unmount (destroy: boolean, unmountcb?: CallableFunction): void {\n if (this.state === appStates.LOAD_SOURCE_ERROR) {\n destroy = true\n }\n\n this.state = appStates.UNMOUNT\n this.keepAliveState = null\n this.keepAliveContainer = null\n\n // result of unmount function\n let umdHookUnmountResult: any\n /**\n * send an unmount event to the micro app or call umd unmount hook\n * before the sandbox is cleared\n */\n if (this.umdHookUnmount) {\n try {\n umdHookUnmountResult = this.umdHookUnmount()\n } catch (e) {\n logError('an error occurred in the unmount function \\n', this.name, e)\n }\n }\n\n // dispatch unmount event to micro app\n dispatchCustomEventToMicroApp('unmount', this.name)\n\n this.handleUnmounted(destroy, umdHookUnmountResult, unmountcb)\n }\n\n /**\n * handle for promise umdHookUnmount\n * @param destroy completely destroy, delete cache resources\n * @param umdHookUnmountResult result of umdHookUnmount\n * @param unmountcb callback of unmount\n */\n private handleUnmounted (\n destroy: boolean,\n umdHookUnmountResult: any,\n unmountcb?: CallableFunction,\n ): void {\n if (isPromise(umdHookUnmountResult)) {\n umdHookUnmountResult\n .then(() => this.actionsForUnmount(destroy, unmountcb))\n .catch(() => this.actionsForUnmount(destroy, unmountcb))\n } else {\n this.actionsForUnmount(destroy, unmountcb)\n }\n }\n\n /**\n * actions for unmount app\n * @param destroy completely destroy, delete cache resources\n * @param unmountcb callback of unmount\n */\n private actionsForUnmount (destroy: boolean, unmountcb?: CallableFunction): void {\n this.sandBox?.stop()\n if (destroy) {\n this.actionsForCompletelyDestroy()\n } else if (this.umdMode && (this.container as Element).childElementCount) {\n cloneContainer(this.container as Element, this.source.html as Element, false)\n }\n\n // dispatch unmount event to base app\n dispatchLifecyclesEvent(\n this.container!,\n this.name,\n lifeCycles.UNMOUNT,\n )\n\n this.container!.innerHTML = ''\n this.container = null\n\n unmountcb && unmountcb()\n }\n\n // actions for completely destroy\n actionsForCompletelyDestroy (): void {\n if (!this.useSandbox && this.umdMode) {\n delete window[this.libraryName as any]\n }\n appInstanceMap.delete(this.name)\n }\n\n // hidden app when disconnectedCallback called with keep-alive\n hiddenKeepAliveApp (): void {\n const oldContainer = this.container\n\n cloneContainer(\n this.container as Element,\n this.keepAliveContainer ? this.keepAliveContainer : (this.keepAliveContainer = document.createElement('div')),\n false,\n )\n\n this.container = this.keepAliveContainer\n\n this.keepAliveState = keepAliveStates.KEEP_ALIVE_HIDDEN\n\n // event should dispatch before clone node\n // dispatch afterhidden event to micro-app\n dispatchCustomEventToMicroApp('appstate-change', this.name, {\n appState: 'afterhidden',\n })\n\n // dispatch afterhidden event to base app\n dispatchLifecyclesEvent(\n oldContainer!,\n this.name,\n lifeCycles.AFTERHIDDEN,\n )\n }\n\n // show app when connectedCallback called with keep-alive\n showKeepAliveApp (container: HTMLElement | ShadowRoot): void {\n // dispatch beforeshow event to micro-app\n dispatchCustomEventToMicroApp('appstate-change', this.name, {\n appState: 'beforeshow',\n })\n\n // dispatch beforeshow event to base app\n dispatchLifecyclesEvent(\n container,\n this.name,\n lifeCycles.BEFORESHOW,\n )\n\n cloneContainer(\n this.container as Element,\n container as Element,\n false,\n )\n\n this.container = container\n\n this.keepAliveState = keepAliveStates.KEEP_ALIVE_SHOW\n\n // dispatch aftershow event to micro-app\n dispatchCustomEventToMicroApp('appstate-change', this.name, {\n appState: 'aftershow',\n })\n\n // dispatch aftershow event to base app\n dispatchLifecyclesEvent(\n this.container,\n this.name,\n lifeCycles.AFTERSHOW,\n )\n }\n\n /**\n * app rendering error\n * @param e Error\n */\n onerror (e: Error): void {\n dispatchLifecyclesEvent(\n this.container!,\n this.name,\n lifeCycles.ERROR,\n e,\n )\n }\n\n // get app state\n getAppState (): string {\n return this.state\n }\n\n // get keep-alive state\n getKeepAliveState (): string | null {\n return this.keepAliveState\n }\n\n // get umd library, if it not exist, return empty object\n private getUmdLibraryHooks (): Record<string, unknown> {\n // after execScripts, the app maybe unmounted\n if (appStates.UNMOUNT !== this.state) {\n const global = (this.sandBox?.proxyWindow ?? globalEnv.rawWindow) as any\n this.libraryName = getRootContainer(this.container!).getAttribute('library') || `micro-app-${this.name}`\n // do not use isObject\n return typeof global[this.libraryName] === 'object' ? global[this.libraryName] : {}\n }\n\n return {}\n }\n}\n","import type { Func, AppInterface } from '@micro-app/types'\nimport { appInstanceMap } from '../create_app'\nimport {\n CompletionPath,\n getCurrentAppName,\n pureCreateElement,\n setCurrentAppName,\n logWarn,\n isPlainObject,\n isString,\n isInvalidQuerySelectorKey,\n isUniqueElement,\n} from '../libs/utils'\nimport scopedCSS from './scoped_css'\nimport { extractLinkFromHtml, foramtDynamicLink } from './links'\nimport { extractScriptElement, runScript, runDynamicRemoteScript } from './scripts'\nimport microApp from '../micro_app'\nimport globalEnv from '../libs/global_env'\n\n// Record element and map element\nconst dynamicElementInMicroAppMap = new WeakMap<Node, Element | Comment>()\n\n/**\n * Process the new node and format the style, link and script element\n * @param parent parent node\n * @param child new node\n * @param app app\n */\nfunction handleNewNode (parent: Node, child: Node, app: AppInterface): Node {\n if (child instanceof HTMLStyleElement) {\n if (child.hasAttribute('exclude')) {\n const replaceComment = document.createComment('style element with exclude attribute ignored by micro-app')\n dynamicElementInMicroAppMap.set(child, replaceComment)\n return replaceComment\n } else if (app.scopecss && !child.hasAttribute('ignore')) {\n return scopedCSS(child, app)\n }\n return child\n } else if (child instanceof HTMLLinkElement) {\n if (child.hasAttribute('exclude')) {\n const linkReplaceComment = document.createComment('link element with exclude attribute ignored by micro-app')\n dynamicElementInMicroAppMap.set(child, linkReplaceComment)\n return linkReplaceComment\n } else if (child.hasAttribute('ignore')) {\n return child\n }\n\n const { url, info, replaceComment } = extractLinkFromHtml(\n child,\n parent,\n app,\n true,\n )\n\n if (url && info) {\n const replaceStyle = pureCreateElement('style')\n replaceStyle.__MICRO_APP_LINK_PATH__ = url\n foramtDynamicLink(url, info, app, child, replaceStyle)\n dynamicElementInMicroAppMap.set(child, replaceStyle)\n return replaceStyle\n } else if (replaceComment) {\n dynamicElementInMicroAppMap.set(child, replaceComment)\n return replaceComment\n }\n\n return child\n } else if (child instanceof HTMLScriptElement) {\n const { replaceComment, url, info } = extractScriptElement(\n child,\n parent,\n app,\n true,\n ) || {}\n\n if (url && info) {\n if (!info.isExternal) { // inline script\n const replaceElement = runScript(url, app, info, true)\n dynamicElementInMicroAppMap.set(child, replaceElement)\n return replaceElement\n } else { // remote script\n const replaceElement = runDynamicRemoteScript(url, info, app, child)\n dynamicElementInMicroAppMap.set(child, replaceElement)\n return replaceElement\n }\n } else if (replaceComment) {\n dynamicElementInMicroAppMap.set(child, replaceComment)\n return replaceComment\n }\n\n return child\n }\n\n return child\n}\n\n/**\n * Handle the elements inserted into head and body, and execute normally in other cases\n * @param app app\n * @param method raw method\n * @param parent parent node\n * @param targetChild target node\n * @param passiveChild second param of insertBefore and replaceChild\n */\nfunction invokePrototypeMethod (\n app: AppInterface,\n rawMethod: Func,\n parent: Node,\n targetChild: Node,\n passiveChild?: Node | null,\n): any {\n /**\n * If passiveChild is not the child node, insertBefore replaceChild will have a problem, at this time, it will be degraded to appendChild\n * E.g: document.head.insertBefore(targetChild, document.head.childNodes[0])\n */\n if (parent === document.head) {\n const microAppHead = app.container!.querySelector('micro-app-head')!\n /**\n * 1. If passivechild exists, it must be insertBefore or replacechild\n * 2. When removeChild, targetChild may not be in microAppHead or head\n */\n if (passiveChild && !microAppHead.contains(passiveChild)) {\n return globalEnv.rawAppendChild.call(microAppHead, targetChild)\n } else if (rawMethod === globalEnv.rawRemoveChild && !microAppHead.contains(targetChild)) {\n if (parent.contains(targetChild)) {\n return rawMethod.call(parent, targetChild)\n }\n return targetChild\n } else if (rawMethod === globalEnv.rawAppend || rawMethod === globalEnv.rawPrepend) {\n return rawMethod.call(microAppHead, targetChild)\n }\n return rawMethod.call(microAppHead, targetChild, passiveChild)\n } else if (parent === document.body) {\n const microAppBody = app.container!.querySelector('micro-app-body')!\n if (passiveChild && !microAppBody.contains(passiveChild)) {\n return globalEnv.rawAppendChild.call(microAppBody, targetChild)\n } else if (rawMethod === globalEnv.rawRemoveChild && !microAppBody.contains(targetChild)) {\n if (parent.contains(targetChild)) {\n return rawMethod.call(parent, targetChild)\n }\n return targetChild\n } else if (rawMethod === globalEnv.rawAppend || rawMethod === globalEnv.rawPrepend) {\n return rawMethod.call(microAppBody, targetChild)\n }\n return rawMethod.call(microAppBody, targetChild, passiveChild)\n } else if (rawMethod === globalEnv.rawAppend || rawMethod === globalEnv.rawPrepend) {\n return rawMethod.call(parent, targetChild)\n }\n\n return rawMethod.call(parent, targetChild, passiveChild)\n}\n\n// Get the map element\nfunction getMappingNode (node: Node): Node {\n return dynamicElementInMicroAppMap.get(node) ?? node\n}\n\n/**\n * method of handle new node\n * @param parent parent node\n * @param newChild new node\n * @param passiveChild passive node\n * @param rawMethodraw method\n */\nfunction commonElementHander (\n parent: Node,\n newChild: Node,\n passiveChild: Node | null,\n rawMethod: Func,\n) {\n if (newChild?.__MICRO_APP_NAME__) {\n const app = appInstanceMap.get(newChild.__MICRO_APP_NAME__)\n if (app?.container) {\n return invokePrototypeMethod(\n app,\n rawMethod,\n parent,\n handleNewNode(parent, newChild, app),\n passiveChild && getMappingNode(passiveChild),\n )\n } else if (rawMethod === globalEnv.rawAppend || rawMethod === globalEnv.rawPrepend) {\n return rawMethod.call(parent, newChild)\n }\n return rawMethod.call(parent, newChild, passiveChild)\n } else if (rawMethod === globalEnv.rawAppend || rawMethod === globalEnv.rawPrepend) {\n const appName = getCurrentAppName()\n if (!(newChild instanceof Node) && appName) {\n const app = appInstanceMap.get(appName)\n if (app?.container) {\n if (parent === document.head) {\n return rawMethod.call(app.container.querySelector('micro-app-head'), newChild)\n } else if (parent === document.body) {\n return rawMethod.call(app.container.querySelector('micro-app-body'), newChild)\n }\n }\n }\n return rawMethod.call(parent, newChild)\n }\n\n return rawMethod.call(parent, newChild, passiveChild)\n}\n\n/**\n * Rewrite element prototype method\n */\nexport function patchElementPrototypeMethods (): void {\n patchDocument()\n\n // Rewrite setAttribute\n Element.prototype.setAttribute = function setAttribute (key: string, value: string): void {\n if (/^micro-app(-\\S+)?/i.test(this.tagName) && key === 'data') {\n if (isPlainObject(value)) {\n const cloneValue: Record<PropertyKey, unknown> = {}\n Object.getOwnPropertyNames(value).forEach((propertyKey: PropertyKey) => {\n if (!(isString(propertyKey) && propertyKey.indexOf('__') === 0)) {\n // @ts-ignore\n cloneValue[propertyKey] = value[propertyKey]\n }\n })\n this.data = cloneValue\n } else if (value !== '[object Object]') {\n logWarn('property data must be an object', this.getAttribute('name'))\n }\n } else if (\n (\n ((key === 'src' || key === 'srcset') && /^(img|script)$/i.test(this.tagName)) ||\n (key === 'href' && /^link$/i.test(this.tagName))\n ) &&\n this.__MICRO_APP_NAME__ &&\n appInstanceMap.has(this.__MICRO_APP_NAME__)\n ) {\n const app = appInstanceMap.get(this.__MICRO_APP_NAME__)\n globalEnv.rawSetAttribute.call(this, key, CompletionPath(value, app!.url))\n } else {\n globalEnv.rawSetAttribute.call(this, key, value)\n }\n }\n\n // prototype methods of add elementπ\n Element.prototype.appendChild = function appendChild<T extends Node> (newChild: T): T {\n return commonElementHander(this, newChild, null, globalEnv.rawAppendChild)\n }\n\n Element.prototype.insertBefore = function insertBefore<T extends Node> (newChild: T, refChild: Node | null): T {\n return commonElementHander(this, newChild, refChild, globalEnv.rawInsertBefore)\n }\n\n Element.prototype.replaceChild = function replaceChild<T extends Node> (newChild: Node, oldChild: T): T {\n return commonElementHander(this, newChild, oldChild, globalEnv.rawReplaceChild)\n }\n\n Element.prototype.append = function append (...nodes: (Node | string)[]): void {\n let i = 0\n const length = nodes.length\n while (i < length) {\n commonElementHander(this, nodes[i] as Node, null, globalEnv.rawAppend)\n i++\n }\n }\n\n Element.prototype.prepend = function prepend (...nodes: (Node | string)[]): void {\n let i = nodes.length\n while (i > 0) {\n commonElementHander(this, nodes[i - 1] as Node, null, globalEnv.rawPrepend)\n i--\n }\n }\n\n // prototype methods of delete elementπ\n Element.prototype.removeChild = function removeChild<T extends Node> (oldChild: T): T {\n if (oldChild?.__MICRO_APP_NAME__) {\n const app = appInstanceMap.get(oldChild.__MICRO_APP_NAME__)\n if (app?.container) {\n return invokePrototypeMethod(\n app,\n globalEnv.rawRemoveChild,\n this,\n getMappingNode(oldChild),\n )\n }\n return globalEnv.rawRemoveChild.call(this, oldChild) as T\n }\n\n return globalEnv.rawRemoveChild.call(this, oldChild) as T\n }\n\n // patch cloneNode\n Element.prototype.cloneNode = function cloneNode (deep?: boolean): Node {\n const clonedNode = globalEnv.rawCloneNode.call(this, deep)\n this.__MICRO_APP_NAME__ && (clonedNode.__MICRO_APP_NAME__ = this.__MICRO_APP_NAME__)\n return clonedNode\n }\n}\n\n/**\n * Mark the newly created element in the micro application\n * @param element new element\n */\nfunction markElement <T extends { __MICRO_APP_NAME__: string }> (element: T): T {\n const appName = getCurrentAppName()\n appName && (element.__MICRO_APP_NAME__ = appName)\n return element\n}\n\n// methods of document\nfunction patchDocument () {\n const rawDocument = globalEnv.rawDocument\n\n // create element π\n Document.prototype.createElement = function createElement (\n tagName: string,\n options?: ElementCreationOptions,\n ): HTMLElement {\n const element = globalEnv.rawCreateElement.call(this, tagName, options)\n return markElement(element)\n }\n\n Document.prototype.createElementNS = function createElementNS (\n namespaceURI: string,\n name: string,\n options?: string | ElementCreationOptions,\n ): any {\n const element = globalEnv.rawCreateElementNS.call(this, namespaceURI, name, options)\n return markElement(element)\n }\n\n Document.prototype.createDocumentFragment = function createDocumentFragment (): DocumentFragment {\n const element = globalEnv.rawCreateDocumentFragment.call(this)\n return markElement(element)\n }\n\n // query elementπ\n function querySelector (this: Document, selectors: string): any {\n const appName = getCurrentAppName()\n if (\n !appName ||\n !selectors ||\n isUniqueElement(selectors) ||\n // see https://github.com/micro-zoe/micro-app/issues/56\n rawDocument !== this\n ) {\n return globalEnv.rawQuerySelector.call(this, selectors)\n }\n return appInstanceMap.get(appName)?.container?.querySelector(selectors) ?? null\n }\n\n function querySelectorAll (this: Document, selectors: string): any {\n const appName = getCurrentAppName()\n if (\n !appName ||\n !selectors ||\n isUniqueElement(selectors) ||\n rawDocument !== this\n ) {\n return globalEnv.rawQuerySelectorAll.call(this, selectors)\n }\n return appInstanceMap.get(appName)?.container?.querySelectorAll(selectors) ?? []\n }\n\n Document.prototype.querySelector = querySelector\n Document.prototype.querySelectorAll = querySelectorAll\n\n Document.prototype.getElementById = function getElementById (key: string): HTMLElement | null {\n if (!getCurrentAppName() || isInvalidQuerySelectorKey(key)) {\n return globalEnv.rawGetElementById.call(this, key)\n }\n\n try {\n return querySelector.call(this, `#${key}`)\n } catch {\n return globalEnv.rawGetElementById.call(this, key)\n }\n }\n\n Document.prototype.getElementsByClassName = function getElementsByClassName (key: string): HTMLCollectionOf<Element> {\n if (!getCurrentAppName() || isInvalidQuerySelectorKey(key)) {\n return globalEnv.rawGetElementsByClassName.call(this, key)\n }\n\n try {\n return querySelectorAll.call(this, `.${key}`)\n } catch {\n return globalEnv.rawGetElementsByClassName.call(this, key)\n }\n }\n\n Document.prototype.getElementsByTagName = function getElementsByTagName (key: string): HTMLCollectionOf<Element> {\n const appName = getCurrentAppName()\n if (\n !appName ||\n isUniqueElement(key) ||\n isInvalidQuerySelectorKey(key) ||\n (!appInstanceMap.get(appName)?.inline && /^script$/i.test(key))\n ) {\n return globalEnv.rawGetElementsByTagName.call(this, key)\n }\n\n try {\n return querySelectorAll.call(this, key)\n } catch {\n return globalEnv.rawGetElementsByTagName.call(this, key)\n }\n }\n\n Document.prototype.getElementsByName = function getElementsByName (key: string): NodeListOf<HTMLElement> {\n if (!getCurrentAppName() || isInvalidQuerySelectorKey(key)) {\n return globalEnv.rawGetElementsByName.call(this, key)\n }\n\n try {\n return querySelectorAll.call(this, `[name=${key}]`)\n } catch {\n return globalEnv.rawGetElementsByName.call(this, key)\n }\n }\n}\n\nfunction releasePatchDocument (): void {\n Document.prototype.createElement = globalEnv.rawCreateElement\n Document.prototype.createElementNS = globalEnv.rawCreateElementNS\n Document.prototype.createDocumentFragment = globalEnv.rawCreateDocumentFragment\n Document.prototype.querySelector = globalEnv.rawQuerySelector\n Document.prototype.querySelectorAll = globalEnv.rawQuerySelectorAll\n Document.prototype.getElementById = globalEnv.rawGetElementById\n Document.prototype.getElementsByClassName = globalEnv.rawGetElementsByClassName\n Document.prototype.getElementsByTagName = globalEnv.rawGetElementsByTagName\n Document.prototype.getElementsByName = globalEnv.rawGetElementsByName\n}\n\n// release patch\nexport function releasePatches (): void {\n setCurrentAppName(null)\n releasePatchDocument()\n Element.prototype.setAttribute = globalEnv.rawSetAttribute\n Element.prototype.appendChild = globalEnv.rawAppendChild\n Element.prototype.insertBefore = globalEnv.rawInsertBefore\n Element.prototype.replaceChild = globalEnv.rawReplaceChild\n Element.prototype.removeChild = globalEnv.rawRemoveChild\n Element.prototype.append = globalEnv.rawAppend\n Element.prototype.prepend = globalEnv.rawPrepend\n Element.prototype.cloneNode = globalEnv.rawCloneNode\n}\n\n// Set the style of micro-app-head and micro-app-body\nlet hasRejectMicroAppStyle = false\nexport function rejectMicroAppStyle (): void {\n if (!hasRejectMicroAppStyle) {\n hasRejectMicroAppStyle = true\n const style = pureCreateElement('style')\n style.setAttribute('type', 'text/css')\n style.textContent = `\\n${microApp.tagName}, micro-app-body { display: block; } \\nmicro-app-head { display: none; }`\n globalEnv.rawDocument.head.appendChild(style)\n }\n}\n","import { appInstanceMap } from '../create_app'\nimport { elementInstanceMap } from '../micro_app_element'\nimport { releasePatches } from '../source/patch'\nimport { getRootContainer } from '../libs/utils'\n\nfunction unmountNestedApp (): void {\n releaseUnmountOfNestedApp()\n\n appInstanceMap.forEach(app => {\n // @ts-ignore\n app.container && getRootContainer(app.container).disconnectedCallback()\n })\n\n !window.__MICRO_APP_UMD_MODE__ && appInstanceMap.clear()\n\n if (elementInstanceMap.size) {\n elementInstanceMap.clear()\n releasePatches()\n }\n}\n\n// if micro-app run in micro application, delete all next generation application when unmount event received\nexport function listenUmountOfNestedApp (): void {\n if (window.__MICRO_APP_ENVIRONMENT__) {\n window.addEventListener('unmount', unmountNestedApp, false)\n }\n}\n\n// release listener\nexport function releaseUnmountOfNestedApp (): void {\n if (window.__MICRO_APP_ENVIRONMENT__) {\n window.removeEventListener('unmount', unmountNestedApp, false)\n }\n}\n","import type { AttrType, MicroAppElementType, AppInterface } from '@micro-app/types'\nimport {\n defer,\n formatAppName,\n formatAppURL,\n version,\n logError,\n logWarn,\n isString,\n isFunction,\n CompletionPath,\n} from './libs/utils'\nimport {\n ObservedAttrName,\n appStates,\n lifeCycles,\n keepAliveStates,\n} from './constants'\nimport CreateApp, { appInstanceMap } from './create_app'\nimport {\n patchElementPrototypeMethods,\n releasePatches,\n rejectMicroAppStyle,\n} from './source/patch'\nimport {\n listenUmountOfNestedApp,\n releaseUnmountOfNestedApp,\n} from './libs/additional'\nimport microApp from './micro_app'\nimport dispatchLifecyclesEvent from './interact/lifecycles_event'\nimport globalEnv from './libs/global_env'\n\n// record all micro-app elements\nexport const elementInstanceMap = new Map<Element, boolean>()\n\n/**\n * define element\n * @param tagName element name\n */\nexport function defineElement (tagName: string): void {\n class MicroAppElement extends HTMLElement implements MicroAppElementType {\n static get observedAttributes (): string[] {\n return ['name', 'url']\n }\n\n constructor () {\n super()\n // cloned node of umd container also trigger constructor, we should skip\n if (!this.querySelector('micro-app-head')) {\n this.performWhenFirstCreated()\n }\n }\n\n private isWating = false\n private cacheData: Record<PropertyKey, unknown> | null = null\n private hasConnected = false\n appName = '' // app name\n appUrl = '' // app url\n ssrUrl = '' // html path in ssr mode\n version = version\n\n // π Configuration\n // name: app name\n // url: html address\n // shadowDom: use shadowDOM, default is false\n // destroy: whether delete cache resources when unmount, default is false\n // inline: whether js runs in inline script mode, default is false\n // disableScopecss: whether disable css scoped, default is false\n // disableSandbox: whether disable sandbox, default is false\n // baseRoute: route prefix, default is ''\n // keep-alive: open keep-alive mode\n\n connectedCallback (): void {\n this.hasConnected = true\n if (!elementInstanceMap.has(this)) {\n this.performWhenFirstCreated()\n }\n\n defer(() => dispatchLifecyclesEvent(\n this,\n this.appName,\n lifeCycles.CREATED,\n ))\n\n this.initialMount()\n }\n\n disconnectedCallback (): void {\n this.hasConnected = false\n // keep-alive\n if (this.getKeepAliveModeResult()) {\n this.handleHiddenKeepAliveApp()\n } else {\n elementInstanceMap.delete(this)\n this.handleUnmount(\n this.getDestroyCompatibleResult(),\n () => {\n if (elementInstanceMap.size === 0) {\n releasePatches()\n }\n }\n )\n }\n }\n\n attributeChangedCallback (attr: ObservedAttrName, _oldVal: string, newVal: string): void {\n if (\n this.legalAttribute(attr, newVal) &&\n this[attr === ObservedAttrName.NAME ? 'appName' : 'appUrl'] !== newVal\n ) {\n if (attr === ObservedAttrName.URL && !this.appUrl) {\n newVal = formatAppURL(newVal, this.appName)\n if (!newVal) {\n return logError(`Invalid attribute url ${newVal}`, this.appName)\n }\n this.appUrl = newVal\n this.handleInitialNameAndUrl()\n } else if (attr === ObservedAttrName.NAME && !this.appName) {\n const formatNewName = formatAppName(newVal)\n\n if (!formatNewName) {\n return logError(`Invalid attribute name ${newVal}`, this.appName)\n }\n\n if (this.cacheData) {\n microApp.setData(formatNewName, this.cacheData)\n this.cacheData = null\n }\n\n this.appName = formatNewName\n if (formatNewName !== newVal) {\n this.setAttribute('name', this.appName)\n }\n this.handleInitialNameAndUrl()\n } else if (!this.isWating) {\n this.isWating = true\n defer(this.handleAttributeUpdate)\n }\n }\n }\n\n // handle for connectedCallback run before attributeChangedCallback\n private handleInitialNameAndUrl (): void {\n this.hasConnected && this.initialMount()\n }\n\n // Perform global initialization when the element count is 1\n private performWhenFirstCreated (): void {\n if (elementInstanceMap.set(this, true).size === 1) {\n patchElementPrototypeMethods()\n rejectMicroAppStyle()\n releaseUnmountOfNestedApp()\n listenUmountOfNestedApp()\n }\n }\n\n /**\n * first mount of this app\n */\n private initialMount (): void {\n if (!this.appName || !this.appUrl) return\n\n if (this.getDisposeResult('shadowDOM') && !this.shadowRoot && isFunction(this.attachShadow)) {\n this.attachShadow({ mode: 'open' })\n }\n\n if (this.getDisposeResult('ssr')) {\n this.ssrUrl = CompletionPath(globalEnv.rawWindow.location.pathname, this.appUrl)\n } else if (this.ssrUrl) {\n this.ssrUrl = ''\n }\n\n if (appInstanceMap.has(this.appName)) {\n const app = appInstanceMap.get(this.appName)!\n const existAppUrl = app.ssrUrl || app.url\n const activeAppUrl = this.ssrUrl || this.appUrl\n // keep-alive don't care about ssrUrl\n // Even if the keep-alive app is pushed into the background, it is still active and cannot be replaced. Otherwise, it is difficult for developers to troubleshoot in case of conflict and will leave developers at a loss\n if (\n app.getKeepAliveState() === keepAliveStates.KEEP_ALIVE_HIDDEN &&\n app.url === this.appUrl\n ) {\n this.handleShowKeepAliveApp(app)\n } else if (\n existAppUrl === activeAppUrl && (\n app.isPrefetch ||\n app.getAppState() === appStates.UNMOUNT\n )\n ) {\n this.handleAppMount(app)\n } else if (app.isPrefetch || app.getAppState() === appStates.UNMOUNT) {\n /**\n * url is different & old app is unmounted or prefetch, create new app to replace old one\n */\n logWarn(`the ${app.isPrefetch ? 'prefetch' : 'unmounted'} app with url: ${existAppUrl} is replaced by a new app`, this.appName)\n this.handleCreateApp()\n } else {\n logError(`app name conflict, an app named ${this.appName} is running`, this.appName)\n }\n } else {\n this.handleCreateApp()\n }\n }\n\n /**\n * handle for change of name an url after element inited\n */\n private handleAttributeUpdate = (): void => {\n this.isWating = false\n const formatAttrName = formatAppName(this.getAttribute('name'))\n const formatAttrUrl = formatAppURL(this.getAttribute('url'), this.appName)\n if (this.legalAttribute('name', formatAttrName) && this.legalAttribute('url', formatAttrUrl)) {\n const existApp = appInstanceMap.get(formatAttrName)\n if (formatAttrName !== this.appName && existApp) {\n // handling of cached and non-prefetch apps\n if (\n appStates.UNMOUNT !== existApp.getAppState() &&\n keepAliveStates.KEEP_ALIVE_HIDDEN !== existApp.getKeepAliveState() &&\n !existApp.isPrefetch\n ) {\n this.setAttribute('name', this.appName)\n return logError(`app name conflict, an app named ${formatAttrName} is running`, this.appName)\n }\n }\n\n if (formatAttrName !== this.appName || formatAttrUrl !== this.appUrl) {\n if (formatAttrName === this.appName) {\n this.handleUnmount(true, () => {\n this.actionsForAttributeChange(formatAttrName, formatAttrUrl, existApp)\n })\n } else if (this.getKeepAliveModeResult()) {\n this.handleHiddenKeepAliveApp()\n this.actionsForAttributeChange(formatAttrName, formatAttrUrl, existApp)\n } else {\n this.handleUnmount(\n this.getDestroyCompatibleResult(),\n () => {\n this.actionsForAttributeChange(formatAttrName, formatAttrUrl, existApp)\n }\n )\n }\n }\n } else if (formatAttrName !== this.appName) {\n this.setAttribute('name', this.appName)\n }\n }\n\n // remount app or create app if attribute url or name change\n private actionsForAttributeChange (\n formatAttrName: string,\n formatAttrUrl: string,\n existApp: AppInterface | undefined,\n ): void {\n /**\n * change ssrUrl in ssr mode\n * do not add judgment of formatAttrUrl === this.appUrl\n */\n if (this.getDisposeResult('ssr')) {\n this.ssrUrl = CompletionPath(globalEnv.rawWindow.location.pathname, formatAttrUrl)\n } else if (this.ssrUrl) {\n this.ssrUrl = ''\n }\n\n this.appName = formatAttrName\n this.appUrl = formatAttrUrl\n ;(this.shadowRoot ?? this).innerHTML = ''\n if (formatAttrName !== this.getAttribute('name')) {\n this.setAttribute('name', this.appName)\n }\n\n /**\n * when existApp not null: this.appName === existApp.name\n * scene1: if formatAttrName and this.appName are equal: exitApp is the current app, the url must be different, existApp has been unmounted\n * scene2: if formatAttrName and this.appName are different: existApp must be prefetch or unmounted, if url is equal, then just mount, if url is different, then create new app to replace existApp\n * scene3: url is different but ssrUrl is equal\n * scene4: url is equal but ssrUrl is different, if url is equal, name must different\n * scene5: if existApp is KEEP_ALIVE_HIDDEN, name must different\n */\n if (existApp) {\n if (existApp.getKeepAliveState() === keepAliveStates.KEEP_ALIVE_HIDDEN) {\n if (existApp.url === this.appUrl) {\n this.handleShowKeepAliveApp(existApp)\n } else {\n // the hidden keep-alive app is still active\n logError(`app name conflict, an app named ${this.appName} is running`, this.appName)\n }\n } else if (existApp.url === this.appUrl && existApp.ssrUrl === this.ssrUrl) {\n // mount app\n this.handleAppMount(existApp)\n } else {\n this.handleCreateApp()\n }\n } else {\n this.handleCreateApp()\n }\n }\n\n /**\n * judge the attribute is legal\n * @param name attribute name\n * @param val attribute value\n */\n private legalAttribute (name: string, val: AttrType): boolean {\n if (!isString(val) || !val) {\n logError(`unexpected attribute ${name}, please check again`, this.appName)\n\n return false\n }\n\n return true\n }\n\n /**\n * mount app\n * some serious note before mount:\n * 1. is prefetch ?\n * 2. is remount in another container ?\n * 3. is remount with change properties of the container ?\n */\n private handleAppMount (app: AppInterface): void {\n app.isPrefetch = false\n defer(() => app.mount(\n this.shadowRoot ?? this,\n this.getDisposeResult('inline'),\n this.getBaseRouteCompatible(),\n ))\n }\n\n // create app instance\n private handleCreateApp (): void {\n /**\n * actions for destory old app\n * fix of unmounted umd app with disableSandbox\n */\n if (appInstanceMap.has(this.appName)) {\n appInstanceMap.get(this.appName)!.actionsForCompletelyDestroy()\n }\n\n const instance: AppInterface = new CreateApp({\n name: this.appName,\n url: this.appUrl,\n ssrUrl: this.ssrUrl,\n container: this.shadowRoot ?? this,\n inline: this.getDisposeResult('inline'),\n scopecss: !(this.getDisposeResult('disableScopecss') || this.getDisposeResult('shadowDOM')),\n useSandbox: !this.getDisposeResult('disableSandbox'),\n baseroute: this.getBaseRouteCompatible(),\n })\n\n appInstanceMap.set(this.appName, instance)\n }\n\n /**\n * unmount app\n * @param destroy delete cache resources when unmount\n */\n private handleUnmount (destroy: boolean, unmountcb?: CallableFunction): void {\n const app = appInstanceMap.get(this.appName)\n if (\n app &&\n app.getAppState() !== appStates.UNMOUNT\n ) app.unmount(destroy, unmountcb)\n }\n\n // hidden app when disconnectedCallback called with keep-alive\n private handleHiddenKeepAliveApp () {\n const app = appInstanceMap.get(this.appName)\n if (\n app &&\n app.getAppState() !== appStates.UNMOUNT &&\n app.getKeepAliveState() !== keepAliveStates.KEEP_ALIVE_HIDDEN\n ) app.hiddenKeepAliveApp()\n }\n\n // show app when connectedCallback called with keep-alive\n private handleShowKeepAliveApp (app: AppInterface) {\n // must be asnyc\n defer(() => app.showKeepAliveApp(this.shadowRoot ?? this))\n }\n\n /**\n * Get configuration\n * Global setting is lowest priority\n * @param name Configuration item name\n */\n private getDisposeResult (name: string): boolean {\n // @ts-ignore\n return (this.compatibleSpecialProperties(name) || microApp[name]) && this.compatibleDisablSpecialProperties(name)\n }\n\n // compatible of disableScopecss & disableSandbox\n private compatibleSpecialProperties (name: string): boolean {\n if (name === 'disableScopecss') {\n return this.hasAttribute('disableScopecss') || this.hasAttribute('disable-scopecss')\n } else if (name === 'disableSandbox') {\n return this.hasAttribute('disableSandbox') || this.hasAttribute('disable-sandbox')\n }\n return this.hasAttribute(name)\n }\n\n // compatible of disableScopecss & disableSandbox\n private compatibleDisablSpecialProperties (name: string): boolean {\n if (name === 'disableScopecss') {\n return this.getAttribute('disableScopecss') !== 'false' && this.getAttribute('disable-scopecss') !== 'false'\n } else if (name === 'disableSandbox') {\n return this.getAttribute('disableSandbox') !== 'false' && this.getAttribute('disable-sandbox') !== 'false'\n }\n return this.getAttribute(name) !== 'false'\n }\n\n /**\n * 2021-09-08\n * get baseRoute\n * getAttribute('baseurl') is compatible writing of versions below 0.3.1\n */\n private getBaseRouteCompatible (): string {\n return this.getAttribute('baseroute') ?? this.getAttribute('baseurl') ?? ''\n }\n\n // compatible of destroy\n private getDestroyCompatibleResult (): boolean {\n return this.getDisposeResult('destroy') || this.getDisposeResult('destory')\n }\n\n /**\n * destroy has priority over destroy keep-alive\n */\n private getKeepAliveModeResult (): boolean {\n return this.getDisposeResult('keep-alive') && !this.getDestroyCompatibleResult()\n }\n\n /**\n * Data from the base application\n */\n set data (value: Record<PropertyKey, unknown> | null) {\n if (this.appName) {\n microApp.setData(this.appName, value!)\n } else {\n this.cacheData = value\n }\n }\n\n /**\n * get data only used in jsx-custom-event once\n */\n get data (): Record<PropertyKey, unknown> | null {\n if (this.appName) {\n return microApp.getData(this.appName, true)\n } else if (this.cacheData) {\n return this.cacheData\n }\n return null\n }\n }\n\n window.customElements.define(tagName, MicroAppElement)\n}\n","import type { prefetchParamList, prefetchParam, globalAssetsType } from '@micro-app/types'\nimport CreateApp, { appInstanceMap } from './create_app'\nimport {\n requestIdleCallback,\n formatAppURL,\n formatAppName,\n promiseStream,\n logError,\n isBrowser,\n isArray,\n isPlainObject,\n isString,\n isFunction,\n} from './libs/utils'\nimport { fetchSource } from './source/fetch'\nimport { globalLinks } from './source/links'\nimport { globalScripts } from './source/scripts'\nimport microApp from './micro_app'\n\nfunction filterPreFetchTarget<T extends prefetchParam> (apps: T[]): T[] {\n const validApps: T[] = []\n\n if (isArray(apps)) {\n apps.forEach((item) => {\n if (isPlainObject(item)) {\n item.name = formatAppName(item.name)\n item.url = formatAppURL(item.url, item.name)\n if (item.name && item.url && !appInstanceMap.has(item.name)) {\n validApps.push(item)\n }\n }\n })\n }\n\n return validApps\n}\n\n/**\n * preFetch([\n * {\n * name: string,\n * url: string,\n * disableScopecss?: boolean,\n * disableSandbox?: boolean,\n * },\n * ...\n * ])\n * Note:\n * 1: preFetch is asynchronous and is performed only when the browser is idle\n * 2: disableScopecss, disableSandbox must be same with micro-app element, if conflict, the one who executes first shall prevail\n * @param apps micro apps\n */\nexport default function preFetch (apps: prefetchParamList): void {\n if (!isBrowser) {\n return logError('preFetch is only supported in browser environment')\n }\n requestIdleCallback(() => {\n isFunction(apps) && (apps = (apps as Function)())\n\n filterPreFetchTarget(apps as prefetchParam[]).forEach((item) => {\n const app = new CreateApp({\n name: item.name,\n url: item.url,\n scopecss: !(item.disableScopecss ?? microApp.disableScopecss),\n useSandbox: !(item.disableSandbox ?? microApp.disableSandbox),\n })\n\n app.isPrefetch = true\n appInstanceMap.set(item.name, app)\n })\n })\n}\n\n/**\n * load global assets into cache\n * @param assets global assets of js, css\n */\nexport function getGlobalAssets (assets: globalAssetsType): void {\n if (isPlainObject(assets)) {\n requestIdleCallback(() => {\n if (isArray(assets.js)) {\n const effectiveJs = assets.js!.filter((path) => isString(path) && path.includes('.js') && !globalScripts.has(path))\n\n const fetchJSPromise: Array<Promise<string>> = []\n effectiveJs.forEach((path) => {\n fetchJSPromise.push(fetchSource(path))\n })\n\n // fetch js with stream\n promiseStream<string>(fetchJSPromise, (res: {data: string, index: number}) => {\n const path = effectiveJs[res.index]\n if (!globalScripts.has(path)) {\n globalScripts.set(path, res.data)\n }\n }, (err: {error: Error, index: number}) => {\n logError(err)\n })\n }\n\n if (isArray(assets.css)) {\n const effectiveCss = assets.css!.filter((path) => isString(path) && path.includes('.css') && !globalLinks.has(path))\n\n const fetchCssPromise: Array<Promise<string>> = []\n effectiveCss.forEach((path) => {\n fetchCssPromise.push(fetchSource(path))\n })\n\n // fetch css with stream\n promiseStream<string>(fetchCssPromise, (res: {data: string, index: number}) => {\n const path = effectiveCss[res.index]\n if (!globalLinks.has(path)) {\n globalLinks.set(path, res.data)\n }\n }, (err: {error: Error, index: number}) => {\n logError(err)\n })\n }\n })\n }\n}\n","import type { OptionsType, MicroAppConfigType, lifeCyclesType, plugins, fetchType, AppInterface } from '@micro-app/types'\nimport { defineElement } from './micro_app_element'\nimport preFetch, { getGlobalAssets } from './prefetch'\nimport { logError, logWarn, isFunction, isBrowser, isPlainObject, formatAppName, getRootContainer } from './libs/utils'\nimport { EventCenterForBaseApp } from './interact'\nimport { initGlobalEnv } from './libs/global_env'\nimport { appInstanceMap } from './create_app'\nimport { appStates, keepAliveStates } from './constants'\n\n/**\n * if app not prefetch & not unmount, then app is active\n * @param excludeHiddenApp exclude hidden keep-alive app\n * @returns active apps\n */\nexport function getActiveApps (excludeHiddenApp?: boolean): string[] {\n const activeApps: string[] = []\n appInstanceMap.forEach((app: AppInterface, appName: string) => {\n if (\n appStates.UNMOUNT !== app.getAppState() &&\n !app.isPrefetch &&\n (\n !excludeHiddenApp ||\n keepAliveStates.KEEP_ALIVE_HIDDEN !== app.getKeepAliveState()\n )\n ) {\n activeApps.push(appName)\n }\n })\n\n return activeApps\n}\n\n// get all registered apps\nexport function getAllApps (): string[] {\n return Array.from(appInstanceMap.keys())\n}\n\nexport interface unmountAppParams {\n destroy?: boolean // destroy app, default is false\n clearAliveState?: boolean // clear keep-alive app state, default is false\n}\n\n/**\n * unmount app by appname\n * @param appName\n * @param options unmountAppParams\n * @returns Promise<void>\n */\nexport function unmountApp (appName: string, options?: unmountAppParams): Promise<void> {\n const app = appInstanceMap.get(formatAppName(appName))\n return new Promise((reslove) => { // eslint-disable-line\n if (app) {\n if (app.getAppState() === appStates.UNMOUNT || app.isPrefetch) {\n if (options?.destroy) {\n app.actionsForCompletelyDestroy()\n }\n reslove()\n } else if (app.getKeepAliveState() === keepAliveStates.KEEP_ALIVE_HIDDEN) {\n if (options?.destroy) {\n app.unmount(true, reslove)\n } else if (options?.clearAliveState) {\n app.unmount(false, reslove)\n } else {\n reslove()\n }\n } else {\n const container = getRootContainer(app.container!)\n const unmountHandler = () => {\n container.removeEventListener('unmount', unmountHandler)\n container.removeEventListener('afterhidden', afterhiddenHandler)\n reslove()\n }\n\n const afterhiddenHandler = () => {\n container.removeEventListener('unmount', unmountHandler)\n container.removeEventListener('afterhidden', afterhiddenHandler)\n reslove()\n }\n\n container.addEventListener('unmount', unmountHandler)\n container.addEventListener('afterhidden', afterhiddenHandler)\n\n if (options?.destroy) {\n let destroyAttrValue, destoryAttrValue\n container.hasAttribute('destroy') && (destroyAttrValue = container.getAttribute('destroy'))\n container.hasAttribute('destory') && (destoryAttrValue = container.getAttribute('destory'))\n\n container.setAttribute('destroy', 'true')\n container.parentNode!.removeChild(container)\n container.removeAttribute('destroy')\n\n typeof destroyAttrValue === 'string' && container.setAttribute('destroy', destroyAttrValue)\n typeof destoryAttrValue === 'string' && container.setAttribute('destory', destoryAttrValue)\n } else if (options?.clearAliveState && container.hasAttribute('keep-alive')) {\n const keepAliveAttrValue = container.getAttribute('keep-alive')!\n\n container.removeAttribute('keep-alive')\n container.parentNode!.removeChild(container)\n\n container.setAttribute('keep-alive', keepAliveAttrValue)\n } else {\n container.parentNode!.removeChild(container)\n }\n }\n } else {\n logWarn(`app ${appName} does not exist`)\n reslove()\n }\n })\n}\n\n// unmount all apps in turn\nexport function unmountAllApps (options?: unmountAppParams): Promise<void> {\n return Array.from(appInstanceMap.keys()).reduce((pre, next) => pre.then(() => unmountApp(next, options)), Promise.resolve())\n}\n\nexport class MicroApp extends EventCenterForBaseApp implements MicroAppConfigType {\n tagName = 'micro-app'\n shadowDOM?: boolean\n destroy?: boolean\n inline?: boolean\n disableScopecss?: boolean\n disableSandbox?: boolean\n ssr?: boolean\n lifeCycles?: lifeCyclesType\n plugins?: plugins\n fetch?: fetchType\n preFetch = preFetch\n start (options?: OptionsType): void {\n if (!isBrowser || !window.customElements) {\n return logError('micro-app is not supported in this environment')\n }\n\n if (options?.tagName) {\n if (/^micro-app(-\\S+)?/.test(options.tagName)) {\n this.tagName = options.tagName\n } else {\n return logError(`${options.tagName} is invalid tagName`)\n }\n }\n\n if (window.customElements.get(this.tagName)) {\n return logWarn(`element ${this.tagName} is already defined`)\n }\n\n initGlobalEnv()\n\n if (options && isPlainObject(options)) {\n this.shadowDOM = options.shadowDOM\n this.destroy = options.destroy\n /**\n * compatible with versions below 0.4.2 of destroy\n * do not merge with the previous line\n */\n // @ts-ignore\n this.destory = options.destory\n this.inline = options.inline\n this.disableScopecss = options.disableScopecss\n this.disableSandbox = options.disableSandbox\n this.ssr = options.ssr\n isFunction(options.fetch) && (this.fetch = options.fetch)\n\n isPlainObject(options.lifeCycles) && (this.lifeCycles = options.lifeCycles)\n\n // load app assets when browser is idle\n options.preFetchApps && preFetch(options.preFetchApps)\n\n // load global assets when browser is idle\n options.globalAssets && getGlobalAssets(options.globalAssets)\n\n if (isPlainObject(options.plugins)) {\n const modules = options.plugins!.modules\n if (isPlainObject(modules)) {\n for (const appName in modules) {\n const formattedAppName = formatAppName(appName)\n if (formattedAppName && appName !== formattedAppName) {\n modules[formattedAppName] = modules[appName]\n delete modules[appName]\n }\n }\n }\n\n this.plugins = options.plugins\n }\n }\n\n // define customElement after init\n defineElement(this.tagName)\n }\n}\n\nexport default new MicroApp()\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/libs/utils.ts","../src/constants.ts","../src/source/fetch.ts","../src/source/scoped_css.ts","../src/source/load_event.ts","../src/source/links.ts","../src/source/patch.ts","../src/libs/additional.ts","../src/libs/global_env.ts","../src/source/scripts.ts","../src/source/index.ts","../src/interact/event_center.ts","../src/interact/index.ts","../src/sandbox/bind_function.ts","../src/sandbox/effect.ts","../src/sandbox/index.ts","../src/interact/lifecycles_event.ts","../src/create_app.ts","../src/micro_app_element.ts","../src/prefetch.ts","../src/micro_app.ts"],"sourcesContent":["/* eslint-disable no-new-func, indent, @typescript-eslint/explicit-module-boundary-types */\nimport type { Func } from '@micro-app/types'\n\nexport const version = '__MICRO_APP_VERSION__'\n\n// do not use isUndefined\nexport const isBrowser = typeof window !== 'undefined'\n\n// do not use isUndefined\nexport const globalThis = (typeof global !== 'undefined')\n ? global\n : (\n (typeof window !== 'undefined')\n ? window\n : (\n (typeof self !== 'undefined') ? self : Function('return this')()\n )\n )\n\n// is Undefined\nexport function isUndefined (target: unknown): target is undefined {\n return target === undefined\n}\n\n// is Null\nexport function isNull (target: unknown): target is null {\n return target === null\n}\n\n// is String\nexport function isString (target: unknown): target is string {\n return typeof target === 'string'\n}\n\n// is Boolean\nexport function isBoolean (target: unknown): target is boolean {\n return typeof target === 'boolean'\n}\n\n// is function\nexport function isFunction (target: unknown): boolean {\n return typeof target === 'function'\n}\n\n// is Array\nexport const isArray = Array.isArray\n\n// is PlainObject\nexport function isPlainObject (target: unknown): boolean {\n return toString.call(target) === '[object Object]'\n}\n\n// is Promise\nexport function isPromise (target: unknown): boolean {\n return toString.call(target) === '[object Promise]'\n}\n\n// is bind function\nexport function isBoundFunction (target: any): boolean {\n return isFunction(target) && target.name.indexOf('bound ') === 0 && !target.hasOwnProperty('prototype')\n}\n\n// is ShadowRoot\nexport function isShadowRoot (target: unknown): boolean {\n return typeof ShadowRoot !== 'undefined' && target instanceof ShadowRoot\n}\n\nexport const rawDefineProperty = Object.defineProperty\n\nexport const rawDefineProperties = Object.defineProperties\nexport const rawHasOwnProperty = Object.prototype.hasOwnProperty\n\n/**\n * format error log\n * @param msg message\n * @param appName app name, default is null\n */\nexport function logError (\n msg: unknown,\n appName: string | null = null,\n ...rest: any[]\n): void {\n const appNameTip = appName && isString(appName) ? ` app ${appName}:` : ''\n if (isString(msg)) {\n console.error(`[micro-app]${appNameTip} ${msg}`, ...rest)\n } else {\n console.error(`[micro-app]${appNameTip}`, msg, ...rest)\n }\n}\n\n/**\n * format warn log\n * @param msg message\n * @param appName app name, default is null\n */\nexport function logWarn (\n msg: unknown,\n appName: string | null = null,\n ...rest: any[]\n): void {\n const appNameTip = appName && isString(appName) ? ` app ${appName}:` : ''\n if (isString(msg)) {\n console.warn(`[micro-app]${appNameTip} ${msg}`, ...rest)\n } else {\n console.warn(`[micro-app]${appNameTip}`, msg, ...rest)\n }\n}\n\n/**\n * async execution\n * @param fn callback\n * @param args params\n */\nexport function defer (fn: Func, ...args: any[]): void {\n Promise.resolve().then(fn.bind(null, ...args))\n}\n\n/**\n * Add address protocol\n * @param url address\n */\nexport function addProtocol (url: string): string {\n return url.startsWith('//') ? `${location.protocol}${url}` : url\n}\n\n/**\n * format URL address\n * note the scenes:\n * 1. micro-app -> attributeChangedCallback\n * 2. preFetch\n */\nexport function formatAppURL (url: string | null, appName: string | null = null): string {\n if (!isString(url) || !url) return ''\n\n try {\n const { origin, pathname, search } = new URL(addProtocol(url))\n // If it ends with .html/.node/.php/.net/.etc, donβt need to add /\n if (/\\.(\\w+)$/.test(pathname)) {\n return `${origin}${pathname}${search}`\n }\n const fullPath = `${origin}${pathname}/`.replace(/\\/\\/$/, '/')\n return /^https?:\\/\\//.test(fullPath) ? `${fullPath}${search}` : ''\n } catch (e) {\n logError(e, appName)\n return ''\n }\n}\n\n/**\n * format name\n * note the scenes:\n * 1. micro-app -> attributeChangedCallback\n * 2. event_center -> EventCenterForMicroApp -> constructor\n * 3. event_center -> EventCenterForBaseApp -> all methods\n * 4. preFetch\n * 5. plugins\n */\nexport function formatAppName (name: string | null): string {\n if (!isString(name) || !name) return ''\n return name.replace(/(^\\d+)|([^\\w\\d-_])/gi, '')\n}\n\n/**\n * Get valid address, such as https://xxx/xx/xx.html to https://xxx/xx/\n * @param url app.url\n */\nexport function getEffectivePath (url: string): string {\n const { origin, pathname } = new URL(url)\n if (/\\.(\\w+)$/.test(pathname)) {\n const fullPath = `${origin}${pathname}`\n const pathArr = fullPath.split('/')\n pathArr.pop()\n return pathArr.join('/') + '/'\n }\n\n return `${origin}${pathname}/`.replace(/\\/\\/$/, '/')\n}\n\n/**\n * Complete address\n * @param path address\n * @param baseURI base url(app.url)\n */\nexport function CompletionPath (path: string, baseURI: string): string {\n if (\n !path ||\n /^((((ht|f)tps?)|file):)?\\/\\//.test(path) ||\n /^(data|blob):/.test(path)\n ) return path\n\n return new URL(path, getEffectivePath(addProtocol(baseURI))).toString()\n}\n\n/**\n * Get the folder where the link resource is located,\n * which is used to complete the relative address in the css\n * @param linkPath full link address\n */\nexport function getLinkFileDir (linkPath: string): string {\n const pathArr = linkPath.split('/')\n pathArr.pop()\n return addProtocol(pathArr.join('/') + '/')\n}\n\n/**\n * promise stream\n * @param promiseList promise list\n * @param successCb success callback\n * @param errorCb failed callback\n * @param finallyCb finally callback\n */\nexport function promiseStream <T> (\n promiseList: Array<Promise<T> | T>,\n successCb: CallableFunction,\n errorCb: CallableFunction,\n finallyCb?: CallableFunction,\n): void {\n let finishedNum = 0\n\n function isFinished () {\n if (++finishedNum === promiseList.length && finallyCb) finallyCb()\n }\n\n promiseList.forEach((p, i) => {\n if (isPromise(p)) {\n (p as Promise<T>).then((res: T) => {\n successCb({\n data: res,\n index: i,\n })\n isFinished()\n }).catch((err: Error) => {\n errorCb({\n error: err,\n index: i,\n })\n isFinished()\n })\n } else {\n successCb({\n data: p,\n index: i,\n })\n isFinished()\n }\n })\n}\n\n// Check whether the browser supports module script\nexport function isSupportModuleScript (): boolean {\n const s = document.createElement('script')\n return 'noModule' in s\n}\n\n// Create a random symbol string\nexport function createNonceSrc (): string {\n return 'inline-' + Math.random().toString(36).substr(2, 15)\n}\n\n// Array deduplication\nexport function unique (array: any[]): any[] {\n return array.filter(function (this: Record<PropertyKey, boolean>, item) {\n return item in this ? false : (this[item] = true)\n }, Object.create(null))\n}\n\n// requestIdleCallback polyfill\nexport const requestIdleCallback = globalThis.requestIdleCallback ||\n function (fn: CallableFunction) {\n const lastTime = Date.now()\n return setTimeout(function () {\n fn({\n didTimeout: false,\n timeRemaining () {\n return Math.max(0, 50 - (Date.now() - lastTime))\n },\n })\n }, 50)\n }\n\n/**\n * Record the currently running app.name\n */\nlet currentMicroAppName: string | null = null\nexport function setCurrentAppName (appName: string | null): void {\n currentMicroAppName = appName\n}\n\nexport function throttleDeferForSetAppName (appName: string) {\n if (currentMicroAppName !== appName) {\n setCurrentAppName(appName)\n defer(() => {\n setCurrentAppName(null)\n })\n }\n}\n\n// get the currently running app.name\nexport function getCurrentAppName (): string | null {\n return currentMicroAppName\n}\n\n// Clear appName\nexport function removeDomScope (): void {\n setCurrentAppName(null)\n}\n\n// is safari browser\nexport function isSafari (): boolean {\n return /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent)\n}\n\n/**\n * Create pure elements\n */\nexport function pureCreateElement<K extends keyof HTMLElementTagNameMap> (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K] {\n const element = document.createElement(tagName, options)\n if (element.__MICRO_APP_NAME__) delete element.__MICRO_APP_NAME__\n return element\n}\n\n/**\n * clone origin elements to target\n * @param origin Cloned element\n * @param target Accept cloned elements\n * @param deep deep clone or transfer dom\n */\nexport function cloneContainer <T extends Element, Q extends Element> (\n origin: T,\n target: Q,\n deep: boolean,\n): void {\n target.innerHTML = ''\n if (deep) {\n const clonedNode = origin.cloneNode(true)\n const fragment = document.createDocumentFragment()\n Array.from(clonedNode.childNodes).forEach((node: Node | Element) => {\n fragment.appendChild(node)\n })\n target.appendChild(fragment)\n } else {\n Array.from(origin.childNodes).forEach((node: Node | Element) => {\n target.appendChild(node)\n })\n }\n}\n\n// is invalid key of querySelector\nexport function isInvalidQuerySelectorKey (key: string): boolean {\n if (__TEST__) return !key || /(^\\d)|([^\\w\\d-_$])/gi.test(key)\n return !key || /(^\\d)|([^\\w\\d-_\\u4e00-\\u9fa5])/gi.test(key)\n}\n\n// unique element\nexport function isUniqueElement (key: string): boolean {\n return (\n /^body$/i.test(key) ||\n /^head$/i.test(key) ||\n /^html$/i.test(key)\n )\n}\n\n/**\n * get micro-app element\n * @param target app container\n */\nexport function getRootContainer (target: HTMLElement | ShadowRoot): HTMLElement {\n return (isShadowRoot(target) ? (target as ShadowRoot).host : target) as HTMLElement\n}\n\n/**\n * trim start & end\n */\nexport function trim (str: string): string {\n return str ? str.replace(/^\\s+|\\s+$/g, '') : ''\n}\n","export enum ObservedAttrName {\n NAME = 'name',\n URL = 'url',\n}\n\n// app status\nexport enum appStates {\n NOT_LOADED = 'NOT_LOADED',\n LOADING_SOURCE_CODE = 'LOADING_SOURCE_CODE',\n LOAD_SOURCE_FINISHED = 'LOAD_SOURCE_FINISHED',\n LOAD_SOURCE_ERROR = 'LOAD_SOURCE_ERROR',\n MOUNTING = 'MOUNTING',\n MOUNTED = 'MOUNTED',\n UNMOUNT = 'UNMOUNT',\n}\n\n// lifecycles\nexport enum lifeCycles {\n CREATED = 'created',\n BEFOREMOUNT = 'beforemount',\n MOUNTED = 'mounted',\n UNMOUNT = 'unmount',\n ERROR = 'error',\n // π keep-alive only\n BEFORESHOW = 'beforeshow',\n AFTERSHOW = 'aftershow',\n AFTERHIDDEN = 'afterhidden',\n}\n\n// keep-alive status\nexport enum keepAliveStates {\n KEEP_ALIVE_SHOW = 'KEEP_ALIVE_SHOW',\n KEEP_ALIVE_HIDDEN = 'KEEP_ALIVE_HIDDEN',\n}\n\nexport const globalKeyToBeCached = 'window,self,globalThis,Array,Object,String,Boolean,Math,Number,Symbol,Date,Promise,Function,Proxy,WeakMap,WeakSet,Set,Map,Reflect,Element,Node,Document,RegExp,Error,TypeError,JSON,isNaN,parseFloat,parseInt,performance,console,decodeURI,encodeURI,decodeURIComponent,encodeURIComponent,location,navigator,undefined'\n","import { isFunction } from '../libs/utils'\nimport microApp from '../micro_app'\n\n/**\n * fetch source of html, js, css\n * @param url source path\n * @param appName app name\n * @param config config of fetch\n */\nexport function fetchSource (url: string, appName: string | null = null, options = {}): Promise<string> {\n if (isFunction(microApp.fetch)) {\n return microApp.fetch!(url, options, appName)\n }\n return fetch(url, options).then((res) => {\n return res.text()\n })\n}\n","/* eslint-disable no-useless-escape, no-cond-assign */\nimport type { AppInterface } from '@micro-app/types'\nimport { CompletionPath, getLinkFileDir, logError, trim } from '../libs/utils'\nimport microApp from '../micro_app'\n\n// common reg\nconst rootSelectorREG = /(^|\\s+)(html|:root)(?=[\\s>~[.#:]+|$)/\nconst bodySelectorREG = /(^|\\s+)((html[\\s>~]+body)|body)(?=[\\s>~[.#:]+|$)/\n\ntype parseErrorType = Error & { reason: string, filename?: string }\nfunction parseError (msg: string, linkPath?: string): void {\n msg = linkPath ? `${linkPath} ${msg}` : msg\n const err = new Error(msg) as parseErrorType\n err.reason = msg\n if (linkPath) {\n err.filename = linkPath\n }\n\n throw err\n}\n\n/**\n * Reference resources https://github.com/reworkcss/css\n * CSSParser mainly deals with 3 scenes: styleRule, @, and comment\n * And scopecss deals with 2 scenes: selector & url\n * And can also disable scopecss with inline comments\n */\nclass CSSParser {\n private cssText = '' // css content\n private prefix = '' // prefix as micro-app[name=xxx]\n private baseURI = '' // domain name\n private linkPath = '' // link resource address, if it is the style converted from link, it will have linkPath\n private result = '' // parsed cssText\n private scopecssDisable = false // use block comments /* scopecss-disable */ to disable scopecss in your file, and use /* scopecss-enable */ to enable scopecss\n private scopecssDisableSelectors: Array<string> = [] // disable or enable scopecss for specific selectors\n private scopecssDisableNextLine = false // use block comments /* scopecss-disable-next-line */ to disable scopecss on a specific line\n\n public exec (\n cssText: string,\n prefix: string,\n baseURI: string,\n linkPath?: string,\n ): string {\n this.cssText = cssText\n this.prefix = prefix\n this.baseURI = baseURI\n this.linkPath = linkPath || ''\n this.matchRules()\n return this.result\n }\n\n public reset (): void {\n this.cssText = this.prefix = this.baseURI = this.linkPath = this.result = ''\n this.scopecssDisable = this.scopecssDisableNextLine = false\n this.scopecssDisableSelectors = []\n }\n\n // core action for match rules\n private matchRules (): void {\n this.matchLeadingSpaces()\n this.matchComments()\n while (\n this.cssText.length &&\n this.cssText.charAt(0) !== '}' &&\n (this.matchAtRule() || this.matchStyleRule())\n ) {\n this.matchComments()\n }\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule\n private matchStyleRule (): boolean | void {\n const selectorList = this.formatSelector()\n\n // reset scopecssDisableNextLine\n this.scopecssDisableNextLine = false\n\n if (!selectorList) return parseError('selector missing', this.linkPath)\n\n this.result += (selectorList as Array<string>).join(', ')\n\n this.matchComments()\n\n this.styleDeclarations()\n\n this.matchLeadingSpaces()\n\n return true\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration\n private styleDeclarations (): boolean | void {\n if (!this.matchOpenBrace()) return parseError(\"Declaration missing '{'\", this.linkPath)\n\n this.matchAllDeclarations()\n\n if (!this.matchCloseBrace()) return parseError(\"Declaration missing '}'\", this.linkPath)\n\n return true\n }\n\n private matchAllDeclarations (): void {\n let cssValue = (this.commonMatch(/^(?:url\\([\"']?(?:[^)\"'}]+)[\"']?\\)|[^}/])*/, true) as RegExpExecArray)[0]\n\n if (cssValue) {\n if (\n !this.scopecssDisableNextLine &&\n (!this.scopecssDisable || this.scopecssDisableSelectors.length)\n ) {\n cssValue = cssValue.replace(/url\\([\"']?([^)\"']+)[\"']?\\)/gm, (all, $1) => {\n if (/^((data|blob):|#)/.test($1) || /^(https?:)?\\/\\//.test($1)) {\n return all\n }\n\n // ./a/b.png ../a/b.png a/b.png\n if (/^((\\.\\.?\\/)|[^/])/.test($1) && this.linkPath) {\n this.baseURI = getLinkFileDir(this.linkPath)\n }\n\n return `url(\"${CompletionPath($1, this.baseURI)}\")`\n })\n }\n\n this.result += cssValue\n }\n\n // reset scopecssDisableNextLine\n this.scopecssDisableNextLine = false\n\n if (!this.cssText || this.cssText.charAt(0) === '}') return\n\n // extract comments in declarations\n if (this.cssText.charAt(0) === '/' && this.cssText.charAt(1) === '*') {\n this.matchComments()\n } else {\n this.commonMatch(/\\/+/)\n }\n\n return this.matchAllDeclarations()\n }\n\n private formatSelector (): boolean | Array<string> {\n const m = this.commonMatch(/^([^{]+)/, true)\n if (!m) return false\n return trim(m[0])\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (r) => {\n return r.replace(/,/g, '\\u200C')\n })\n .split(/\\s*(?![^(]*\\)),\\s*/)\n .map((s: string) => {\n const selectorText = s.replace(/\\u200C/g, ',')\n if (this.scopecssDisableNextLine) {\n return selectorText\n } else if (this.scopecssDisable) {\n if (\n !this.scopecssDisableSelectors.length ||\n this.scopecssDisableSelectors.includes(selectorText)\n ) {\n return selectorText\n }\n }\n\n if (selectorText === '*') {\n return this.prefix + ' *'\n } else if (bodySelectorREG.test(selectorText)) {\n return selectorText.replace(bodySelectorREG, this.prefix + ' micro-app-body')\n } else if (rootSelectorREG.test(selectorText)) { // ignore root selector\n return selectorText\n }\n return this.prefix + ' ' + selectorText\n })\n }\n\n private matchAtRule (): boolean | void {\n if (this.cssText[0] !== '@') return false\n // reset scopecssDisableNextLine\n this.scopecssDisableNextLine = false\n\n return this.keyframesRule() ||\n this.mediaRule() ||\n this.customMediaRule() ||\n this.supportsRule() ||\n this.importRule() ||\n this.charsetRule() ||\n this.namespaceRule() ||\n this.documentRule() ||\n this.pageRule() ||\n this.hostRule() ||\n this.fontFaceRule()\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule\n private keyframesRule (): boolean | void {\n if (!this.commonMatch(/^@([-\\w]+)?keyframes\\s*/)) return false\n\n if (!this.commonMatch(/^([-\\w]+)\\s*/)) return parseError('@keyframes missing name', this.linkPath)\n\n this.matchComments()\n\n if (!this.matchOpenBrace()) return parseError(\"@keyframes missing '{'\", this.linkPath)\n\n this.matchComments()\n while (this.keyframeRule()) {\n this.matchComments()\n }\n\n if (!this.matchCloseBrace()) return parseError(\"@keyframes missing '}'\", this.linkPath)\n\n this.matchLeadingSpaces()\n\n return true\n }\n\n private keyframeRule (): boolean {\n let r; const valList = []\n\n while (r = this.commonMatch(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/)) {\n valList.push(r[1])\n this.commonMatch(/^,\\s*/)\n }\n\n if (!valList.length) return false\n\n this.styleDeclarations()\n\n this.matchLeadingSpaces()\n\n return true\n }\n\n // https://github.com/postcss/postcss-custom-media\n private customMediaRule (): boolean {\n if (!this.commonMatch(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/)) return false\n\n this.matchLeadingSpaces()\n\n return true\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule\n private pageRule (): boolean | void {\n if (!this.commonMatch(/^@page */)) return false\n\n this.formatSelector()\n\n // reset scopecssDisableNextLine\n this.scopecssDisableNextLine = false\n\n return this.commonHandlerForAtRuleWithSelfRule('page')\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule\n private fontFaceRule (): boolean | void {\n if (!this.commonMatch(/^@font-face\\s*/)) return false\n\n return this.commonHandlerForAtRuleWithSelfRule('font-face')\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule\n private mediaRule = this.createMatcherForAtRuleWithChildRule(/^@media *([^{]+)/, 'media')\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule\n private supportsRule = this.createMatcherForAtRuleWithChildRule(/^@supports *([^{]+)/, 'supports')\n private documentRule = this.createMatcherForAtRuleWithChildRule(/^@([-\\w]+)?document *([^{]+)/, 'document')\n private hostRule = this.createMatcherForAtRuleWithChildRule(/^@host\\s*/, 'host')\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule\n private importRule = this.createMatcherForNoneBraceAtRule('import')\n // Removed in most browsers\n private charsetRule = this.createMatcherForNoneBraceAtRule('charset')\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSNamespaceRule\n private namespaceRule = this.createMatcherForNoneBraceAtRule('namespace')\n\n // common matcher for @media, @supports, @document, @host\n private createMatcherForAtRuleWithChildRule (reg: RegExp, name: string): () => boolean | void {\n return () => {\n if (!this.commonMatch(reg)) return false\n\n if (!this.matchOpenBrace()) return parseError(`@${name} missing '{'`, this.linkPath)\n\n this.matchComments()\n\n this.matchRules()\n\n if (!this.matchCloseBrace()) return parseError(`@${name} missing '}'`, this.linkPath)\n\n this.matchLeadingSpaces()\n\n return true\n }\n }\n\n // common matcher for @import, @charset, @namespace\n private createMatcherForNoneBraceAtRule (name: string): () => boolean {\n const reg = new RegExp('^@' + name + '\\\\s*([^;]+);')\n return () => {\n if (!this.commonMatch(reg)) return false\n this.matchLeadingSpaces()\n return false\n }\n }\n\n // common handler for @font-face, @page\n private commonHandlerForAtRuleWithSelfRule (name: string): boolean | void {\n if (!this.matchOpenBrace()) return parseError(`@${name} missing '{'`, this.linkPath)\n\n this.matchAllDeclarations()\n\n if (!this.matchCloseBrace()) return parseError(`@${name} missing '}'`, this.linkPath)\n\n this.matchLeadingSpaces()\n\n return true\n }\n\n // match and slice comments\n private matchComments (): void {\n while (this.matchComment());\n }\n\n // css comment\n private matchComment (): boolean | void {\n if (this.cssText.charAt(0) !== '/' || this.cssText.charAt(1) !== '*') return false\n // reset scopecssDisableNextLine\n this.scopecssDisableNextLine = false\n\n let i = 2\n while (this.cssText.charAt(i) !== '' && (this.cssText.charAt(i) !== '*' || this.cssText.charAt(i + 1) !== '/')) ++i\n i += 2\n\n if (this.cssText.charAt(i - 1) === '') {\n return parseError('End of comment missing', this.linkPath)\n }\n\n // get comment content\n let commentText = this.cssText.slice(2, i - 2)\n\n this.result += `/*${commentText}*/`\n\n commentText = trim(commentText.replace(/^\\s*!/, ''))\n\n // set ignore config\n if (commentText === 'scopecss-disable-next-line') {\n this.scopecssDisableNextLine = true\n } else if (/^scopecss-disable/.test(commentText)) {\n if (commentText === 'scopecss-disable') {\n this.scopecssDisable = true\n } else {\n this.scopecssDisable = true\n const ignoreRules = commentText.replace('scopecss-disable', '').split(',')\n ignoreRules.forEach((rule: string) => {\n this.scopecssDisableSelectors.push(trim(rule))\n })\n }\n } else if (commentText === 'scopecss-enable') {\n this.scopecssDisable = false\n this.scopecssDisableSelectors = []\n }\n\n this.cssText = this.cssText.slice(i)\n\n this.matchLeadingSpaces()\n\n return true\n }\n\n private commonMatch (reg: RegExp, skip = false): RegExpExecArray | null | void {\n const matchArray = reg.exec(this.cssText)\n if (!matchArray) return\n const matchStr = matchArray[0]\n this.cssText = this.cssText.slice(matchStr.length)\n if (!skip) this.result += matchStr\n return matchArray\n }\n\n private matchOpenBrace () {\n return this.commonMatch(/^{\\s*/)\n }\n\n private matchCloseBrace () {\n return this.commonMatch(/^}/)\n }\n\n // match and slice the leading spaces\n private matchLeadingSpaces (): void {\n this.commonMatch(/^\\s*/)\n }\n}\n\n/**\n * common method of bind CSS\n */\nfunction commonAction (\n styleElement: HTMLStyleElement,\n appName: string,\n prefix: string,\n baseURI: string,\n linkPath?: string,\n) {\n if (!styleElement.__MICRO_APP_HAS_SCOPED__) {\n styleElement.__MICRO_APP_HAS_SCOPED__ = true\n let result: string | null = null\n try {\n result = parser.exec(\n styleElement.textContent!,\n prefix,\n baseURI,\n linkPath,\n )\n parser.reset()\n } catch (e) {\n parser.reset()\n logError('An error occurred while parsing CSS:\\n', appName, e)\n }\n\n if (result) styleElement.textContent = result\n }\n}\n\nlet parser: CSSParser\n/**\n * scopedCSS\n * @param styleElement target style element\n * @param appName app name\n */\nexport default function scopedCSS (\n styleElement: HTMLStyleElement,\n app: AppInterface,\n): HTMLStyleElement {\n if (app.scopecss) {\n const prefix = `${microApp.tagName}[name=${app.name}]`\n\n if (!parser) parser = new CSSParser()\n\n if (styleElement.textContent) {\n commonAction(\n styleElement,\n app.name,\n prefix,\n app.url,\n styleElement.__MICRO_APP_LINK_PATH__,\n )\n } else {\n const observer = new MutationObserver(function () {\n observer.disconnect()\n // styled-component will be ignore\n if (styleElement.textContent && !styleElement.hasAttribute('data-styled')) {\n commonAction(\n styleElement,\n app.name,\n prefix,\n app.url,\n styleElement.__MICRO_APP_LINK_PATH__,\n )\n }\n })\n\n observer.observe(styleElement, { childList: true })\n }\n }\n\n return styleElement\n}\n","import { isFunction } from '../libs/utils'\n\nfunction eventHandler (event: Event, element: HTMLLinkElement | HTMLScriptElement): void {\n Object.defineProperties(event, {\n currentTarget: {\n get () {\n return element\n }\n },\n srcElement: {\n get () {\n return element\n }\n },\n target: {\n get () {\n return element\n }\n },\n })\n}\n\nexport function dispatchOnLoadEvent (element: HTMLLinkElement | HTMLScriptElement): void {\n const event = new CustomEvent('load')\n eventHandler(event, element)\n if (isFunction(element.onload)) {\n element.onload!(event)\n } else {\n element.dispatchEvent(event)\n }\n}\n\nexport function dispatchOnErrorEvent (element: HTMLLinkElement | HTMLScriptElement): void {\n const event = new CustomEvent('error')\n eventHandler(event, element)\n if (isFunction(element.onerror)) {\n element.onerror!(event)\n } else {\n element.dispatchEvent(event)\n }\n}\n","import type {\n AppInterface,\n sourceLinkInfo,\n} from '@micro-app/types'\nimport { fetchSource } from './fetch'\nimport {\n CompletionPath,\n promiseStream,\n pureCreateElement,\n defer,\n logError,\n} from '../libs/utils'\nimport scopedCSS from './scoped_css'\nimport {\n dispatchOnLoadEvent,\n dispatchOnErrorEvent,\n} from './load_event'\n\n// Global links, reuse across apps\nexport const globalLinks = new Map<string, string>()\n\n/**\n * Extract link elements\n * @param link link element\n * @param parent parent element of link\n * @param app app\n * @param microAppHead micro-app-head element\n * @param isDynamic dynamic insert\n */\nexport function extractLinkFromHtml (\n link: HTMLLinkElement,\n parent: Node,\n app: AppInterface,\n isDynamic = false,\n): any {\n const rel = link.getAttribute('rel')\n let href = link.getAttribute('href')\n let replaceComment: Comment | null = null\n if (rel === 'stylesheet' && href) {\n href = CompletionPath(href, app.url)\n if (!isDynamic) {\n replaceComment = document.createComment(`link element with href=${href} move to micro-app-head as style element`)\n app.source.links.set(href, {\n code: '',\n placeholder: replaceComment,\n isGlobal: link.hasAttribute('global'),\n })\n } else {\n return {\n url: href,\n info: {\n code: '',\n isGlobal: link.hasAttribute('global'),\n }\n }\n }\n } else if (rel && ['prefetch', 'preload', 'prerender', 'icon', 'apple-touch-icon'].includes(rel)) {\n // preload prefetch icon ....\n if (isDynamic) {\n replaceComment = document.createComment(`link element with rel=${rel}${href ? ' & href=' + href : ''} removed by micro-app`)\n } else {\n parent.removeChild(link)\n }\n } else if (href) {\n // dns-prefetch preconnect modulepreload search ....\n link.setAttribute('href', CompletionPath(href, app.url))\n }\n\n if (isDynamic) {\n return { replaceComment }\n } else if (replaceComment) {\n return parent.replaceChild(replaceComment, link)\n }\n}\n\n/**\n * Get link remote resources\n * @param wrapElement htmlDom\n * @param app app\n * @param microAppHead micro-app-head\n */\nexport function fetchLinksFromHtml (\n wrapElement: HTMLElement,\n app: AppInterface,\n microAppHead: Element,\n): void {\n const linkEntries: Array<[string, sourceLinkInfo]> = Array.from(app.source.links.entries())\n\n const fetchLinkPromise: Array<Promise<string>|string> = linkEntries.map(([url]) => {\n return globalLinks.has(url) ? globalLinks.get(url)! : fetchSource(url, app.name)\n })\n\n promiseStream<string>(fetchLinkPromise, (res: {data: string, index: number}) => {\n fetchLinkSuccess(\n linkEntries[res.index][0],\n linkEntries[res.index][1],\n res.data,\n microAppHead,\n app,\n )\n }, (err: {error: Error, index: number}) => {\n logError(err, app.name)\n }, () => {\n app.onLoad(wrapElement)\n })\n}\n\n/**\n * fetch link succeeded, replace placeholder with style tag\n * @param url resource address\n * @param info resource link info\n * @param data code\n * @param microAppHead micro-app-head\n * @param app app\n */\nexport function fetchLinkSuccess (\n url: string,\n info: sourceLinkInfo,\n data: string,\n microAppHead: Element,\n app: AppInterface,\n): void {\n if (info.isGlobal && !globalLinks.has(url)) {\n globalLinks.set(url, data)\n }\n\n const styleLink = pureCreateElement('style')\n styleLink.textContent = data\n styleLink.__MICRO_APP_LINK_PATH__ = url\n styleLink.setAttribute('data-origin-href', url)\n\n if (info.placeholder!.parentNode) {\n info.placeholder!.parentNode.replaceChild(scopedCSS(styleLink, app), info.placeholder!)\n } else {\n microAppHead.appendChild(scopedCSS(styleLink, app))\n }\n\n info.placeholder = null\n info.code = data\n}\n\n/**\n * get css from dynamic link\n * @param url link address\n * @param info info\n * @param app app\n * @param originLink origin link element\n * @param replaceStyle style element which replaced origin link\n */\nexport function formatDynamicLink (\n url: string,\n info: sourceLinkInfo,\n app: AppInterface,\n originLink: HTMLLinkElement,\n replaceStyle: HTMLStyleElement,\n): void {\n if (app.source.links.has(url)) {\n replaceStyle.textContent = app.source.links.get(url)!.code\n scopedCSS(replaceStyle, app)\n defer(() => dispatchOnLoadEvent(originLink))\n return\n }\n\n if (globalLinks.has(url)) {\n const code = globalLinks.get(url)!\n info.code = code\n app.source.links.set(url, info)\n replaceStyle.textContent = code\n scopedCSS(replaceStyle, app)\n defer(() => dispatchOnLoadEvent(originLink))\n return\n }\n\n fetchSource(url, app.name).then((data: string) => {\n info.code = data\n app.source.links.set(url, info)\n info.isGlobal && globalLinks.set(url, data)\n replaceStyle.textContent = data\n scopedCSS(replaceStyle, app)\n dispatchOnLoadEvent(originLink)\n }).catch((err) => {\n logError(err, app.name)\n dispatchOnErrorEvent(originLink)\n })\n}\n","import type { Func, AppInterface } from '@micro-app/types'\nimport { appInstanceMap } from '../create_app'\nimport {\n CompletionPath,\n getCurrentAppName,\n pureCreateElement,\n setCurrentAppName,\n logWarn,\n isPlainObject,\n isString,\n isInvalidQuerySelectorKey,\n isUniqueElement,\n} from '../libs/utils'\nimport scopedCSS from './scoped_css'\nimport { extractLinkFromHtml, formatDynamicLink } from './links'\nimport { extractScriptElement, runScript, runDynamicRemoteScript } from './scripts'\nimport microApp from '../micro_app'\nimport globalEnv from '../libs/global_env'\n\n// Record element and map element\nconst dynamicElementInMicroAppMap = new WeakMap<Node, Element | Comment>()\n\n/**\n * Process the new node and format the style, link and script element\n * @param parent parent node\n * @param child new node\n * @param app app\n */\nfunction handleNewNode (parent: Node, child: Node, app: AppInterface): Node {\n if (child instanceof HTMLStyleElement) {\n if (child.hasAttribute('exclude')) {\n const replaceComment = document.createComment('style element with exclude attribute ignored by micro-app')\n dynamicElementInMicroAppMap.set(child, replaceComment)\n return replaceComment\n } else if (app.scopecss && !child.hasAttribute('ignore')) {\n return scopedCSS(child, app)\n }\n return child\n } else if (child instanceof HTMLLinkElement) {\n if (child.hasAttribute('exclude')) {\n const linkReplaceComment = document.createComment('link element with exclude attribute ignored by micro-app')\n dynamicElementInMicroAppMap.set(child, linkReplaceComment)\n return linkReplaceComment\n } else if (child.hasAttribute('ignore')) {\n return child\n }\n\n const { url, info, replaceComment } = extractLinkFromHtml(\n child,\n parent,\n app,\n true,\n )\n\n if (url && info) {\n const replaceStyle = pureCreateElement('style')\n replaceStyle.__MICRO_APP_LINK_PATH__ = url\n formatDynamicLink(url, info, app, child, replaceStyle)\n dynamicElementInMicroAppMap.set(child, replaceStyle)\n return replaceStyle\n } else if (replaceComment) {\n dynamicElementInMicroAppMap.set(child, replaceComment)\n return replaceComment\n }\n\n return child\n } else if (child instanceof HTMLScriptElement) {\n const { replaceComment, url, info } = extractScriptElement(\n child,\n parent,\n app,\n true,\n ) || {}\n\n if (url && info) {\n if (!info.isExternal) { // inline script\n const replaceElement = runScript(url, app, info, true)\n dynamicElementInMicroAppMap.set(child, replaceElement)\n return replaceElement\n } else { // remote script\n const replaceElement = runDynamicRemoteScript(url, info, app, child)\n dynamicElementInMicroAppMap.set(child, replaceElement)\n return replaceElement\n }\n } else if (replaceComment) {\n dynamicElementInMicroAppMap.set(child, replaceComment)\n return replaceComment\n }\n\n return child\n }\n\n return child\n}\n\n/**\n * Handle the elements inserted into head and body, and execute normally in other cases\n * @param app app\n * @param method raw method\n * @param parent parent node\n * @param targetChild target node\n * @param passiveChild second param of insertBefore and replaceChild\n */\nfunction invokePrototypeMethod (\n app: AppInterface,\n rawMethod: Func,\n parent: Node,\n targetChild: Node,\n passiveChild?: Node | null,\n): any {\n /**\n * If passiveChild is not the child node, insertBefore replaceChild will have a problem, at this time, it will be degraded to appendChild\n * E.g: document.head.insertBefore(targetChild, document.head.childNodes[0])\n */\n if (parent === document.head) {\n const microAppHead = app.container!.querySelector('micro-app-head')!\n /**\n * 1. If passiveChild exists, it must be insertBefore or replaceChild\n * 2. When removeChild, targetChild may not be in microAppHead or head\n */\n if (passiveChild && !microAppHead.contains(passiveChild)) {\n return globalEnv.rawAppendChild.call(microAppHead, targetChild)\n } else if (rawMethod === globalEnv.rawRemoveChild && !microAppHead.contains(targetChild)) {\n if (parent.contains(targetChild)) {\n return rawMethod.call(parent, targetChild)\n }\n return targetChild\n } else if (rawMethod === globalEnv.rawAppend || rawMethod === globalEnv.rawPrepend) {\n return rawMethod.call(microAppHead, targetChild)\n }\n return rawMethod.call(microAppHead, targetChild, passiveChild)\n } else if (parent === document.body) {\n const microAppBody = app.container!.querySelector('micro-app-body')!\n if (passiveChild && !microAppBody.contains(passiveChild)) {\n return globalEnv.rawAppendChild.call(microAppBody, targetChild)\n } else if (rawMethod === globalEnv.rawRemoveChild && !microAppBody.contains(targetChild)) {\n if (parent.contains(targetChild)) {\n return rawMethod.call(parent, targetChild)\n }\n return targetChild\n } else if (rawMethod === globalEnv.rawAppend || rawMethod === globalEnv.rawPrepend) {\n return rawMethod.call(microAppBody, targetChild)\n }\n return rawMethod.call(microAppBody, targetChild, passiveChild)\n } else if (rawMethod === globalEnv.rawAppend || rawMethod === globalEnv.rawPrepend) {\n return rawMethod.call(parent, targetChild)\n }\n\n return rawMethod.call(parent, targetChild, passiveChild)\n}\n\n// Get the map element\nfunction getMappingNode (node: Node): Node {\n return dynamicElementInMicroAppMap.get(node) ?? node\n}\n\n/**\n * method of handle new node\n * @param parent parent node\n * @param newChild new node\n * @param passiveChild passive node\n * @param rawMethod method\n */\nfunction commonElementHandler (\n parent: Node,\n newChild: Node,\n passiveChild: Node | null,\n rawMethod: Func,\n) {\n if (newChild?.__MICRO_APP_NAME__) {\n const app = appInstanceMap.get(newChild.__MICRO_APP_NAME__)\n if (app?.container) {\n return invokePrototypeMethod(\n app,\n rawMethod,\n parent,\n handleNewNode(parent, newChild, app),\n passiveChild && getMappingNode(passiveChild),\n )\n } else if (rawMethod === globalEnv.rawAppend || rawMethod === globalEnv.rawPrepend) {\n return rawMethod.call(parent, newChild)\n }\n return rawMethod.call(parent, newChild, passiveChild)\n } else if (rawMethod === globalEnv.rawAppend || rawMethod === globalEnv.rawPrepend) {\n const appName = getCurrentAppName()\n if (!(newChild instanceof Node) && appName) {\n const app = appInstanceMap.get(appName)\n if (app?.container) {\n if (parent === document.head) {\n return rawMethod.call(app.container.querySelector('micro-app-head'), newChild)\n } else if (parent === document.body) {\n return rawMethod.call(app.container.querySelector('micro-app-body'), newChild)\n }\n }\n }\n return rawMethod.call(parent, newChild)\n }\n\n return rawMethod.call(parent, newChild, passiveChild)\n}\n\n/**\n * Rewrite element prototype method\n */\nexport function patchElementPrototypeMethods (): void {\n patchDocument()\n\n // prototype methods of add elementπ\n Element.prototype.appendChild = function appendChild<T extends Node> (newChild: T): T {\n return commonElementHandler(this, newChild, null, globalEnv.rawAppendChild)\n }\n\n Element.prototype.insertBefore = function insertBefore<T extends Node> (newChild: T, refChild: Node | null): T {\n return commonElementHandler(this, newChild, refChild, globalEnv.rawInsertBefore)\n }\n\n Element.prototype.replaceChild = function replaceChild<T extends Node> (newChild: Node, oldChild: T): T {\n return commonElementHandler(this, newChild, oldChild, globalEnv.rawReplaceChild)\n }\n\n Element.prototype.append = function append (...nodes: (Node | string)[]): void {\n let i = 0\n const length = nodes.length\n while (i < length) {\n commonElementHandler(this, nodes[i] as Node, null, globalEnv.rawAppend)\n i++\n }\n }\n\n Element.prototype.prepend = function prepend (...nodes: (Node | string)[]): void {\n let i = nodes.length\n while (i > 0) {\n commonElementHandler(this, nodes[i - 1] as Node, null, globalEnv.rawPrepend)\n i--\n }\n }\n\n // prototype methods of delete elementπ\n Element.prototype.removeChild = function removeChild<T extends Node> (oldChild: T): T {\n if (oldChild?.__MICRO_APP_NAME__) {\n const app = appInstanceMap.get(oldChild.__MICRO_APP_NAME__)\n if (app?.container) {\n return invokePrototypeMethod(\n app,\n globalEnv.rawRemoveChild,\n this,\n getMappingNode(oldChild),\n )\n }\n return globalEnv.rawRemoveChild.call(this, oldChild) as T\n }\n\n return globalEnv.rawRemoveChild.call(this, oldChild) as T\n }\n\n // patch cloneNode\n Element.prototype.cloneNode = function cloneNode (deep?: boolean): Node {\n const clonedNode = globalEnv.rawCloneNode.call(this, deep)\n this.__MICRO_APP_NAME__ && (clonedNode.__MICRO_APP_NAME__ = this.__MICRO_APP_NAME__)\n return clonedNode\n }\n\n // patch getBoundingClientRect\n // TODO: scenes test\n // Element.prototype.getBoundingClientRect = function getBoundingClientRect () {\n // const rawRect: DOMRect = globalEnv.rawGetBoundingClientRect.call(this)\n // if (this.__MICRO_APP_NAME__) {\n // const app = appInstanceMap.get(this.__MICRO_APP_NAME__)\n // if (!app?.container) {\n // return rawRect\n // }\n // const appBody = app.container.querySelector('micro-app-body')\n // const appBodyRect: DOMRect = globalEnv.rawGetBoundingClientRect.call(appBody)\n // const computedRect: DOMRect = new DOMRect(\n // rawRect.x - appBodyRect.x,\n // rawRect.y - appBodyRect.y,\n // rawRect.width,\n // rawRect.height,\n // )\n // return computedRect\n // }\n\n // return rawRect\n // }\n}\n\n/**\n * Mark the newly created element in the micro application\n * @param element new element\n */\nfunction markElement <T extends { __MICRO_APP_NAME__: string }> (element: T): T {\n const appName = getCurrentAppName()\n appName && (element.__MICRO_APP_NAME__ = appName)\n return element\n}\n\n// methods of document\nfunction patchDocument () {\n const rawDocument = globalEnv.rawDocument\n\n // create element π\n Document.prototype.createElement = function createElement (\n tagName: string,\n options?: ElementCreationOptions,\n ): HTMLElement {\n const element = globalEnv.rawCreateElement.call(this, tagName, options)\n return markElement(element)\n }\n\n Document.prototype.createElementNS = function createElementNS (\n namespaceURI: string,\n name: string,\n options?: string | ElementCreationOptions,\n ): any {\n const element = globalEnv.rawCreateElementNS.call(this, namespaceURI, name, options)\n return markElement(element)\n }\n\n Document.prototype.createDocumentFragment = function createDocumentFragment (): DocumentFragment {\n const element = globalEnv.rawCreateDocumentFragment.call(this)\n return markElement(element)\n }\n\n // query elementπ\n function querySelector (this: Document, selectors: string): any {\n const appName = getCurrentAppName()\n if (\n !appName ||\n !selectors ||\n isUniqueElement(selectors) ||\n // see https://github.com/micro-zoe/micro-app/issues/56\n rawDocument !== this\n ) {\n return globalEnv.rawQuerySelector.call(this, selectors)\n }\n return appInstanceMap.get(appName)?.container?.querySelector(selectors) ?? null\n }\n\n function querySelectorAll (this: Document, selectors: string): any {\n const appName = getCurrentAppName()\n if (\n !appName ||\n !selectors ||\n isUniqueElement(selectors) ||\n rawDocument !== this\n ) {\n return globalEnv.rawQuerySelectorAll.call(this, selectors)\n }\n return appInstanceMap.get(appName)?.container?.querySelectorAll(selectors) ?? []\n }\n\n Document.prototype.querySelector = querySelector\n Document.prototype.querySelectorAll = querySelectorAll\n\n Document.prototype.getElementById = function getElementById (key: string): HTMLElement | null {\n if (!getCurrentAppName() || isInvalidQuerySelectorKey(key)) {\n return globalEnv.rawGetElementById.call(this, key)\n }\n\n try {\n return querySelector.call(this, `#${key}`)\n } catch {\n return globalEnv.rawGetElementById.call(this, key)\n }\n }\n\n Document.prototype.getElementsByClassName = function getElementsByClassName (key: string): HTMLCollectionOf<Element> {\n if (!getCurrentAppName() || isInvalidQuerySelectorKey(key)) {\n return globalEnv.rawGetElementsByClassName.call(this, key)\n }\n\n try {\n return querySelectorAll.call(this, `.${key}`)\n } catch {\n return globalEnv.rawGetElementsByClassName.call(this, key)\n }\n }\n\n Document.prototype.getElementsByTagName = function getElementsByTagName (key: string): HTMLCollectionOf<Element> {\n const appName = getCurrentAppName()\n if (\n !appName ||\n isUniqueElement(key) ||\n isInvalidQuerySelectorKey(key) ||\n (!appInstanceMap.get(appName)?.inline && /^script$/i.test(key))\n ) {\n return globalEnv.rawGetElementsByTagName.call(this, key)\n }\n\n try {\n return querySelectorAll.call(this, key)\n } catch {\n return globalEnv.rawGetElementsByTagName.call(this, key)\n }\n }\n\n Document.prototype.getElementsByName = function getElementsByName (key: string): NodeListOf<HTMLElement> {\n if (!getCurrentAppName() || isInvalidQuerySelectorKey(key)) {\n return globalEnv.rawGetElementsByName.call(this, key)\n }\n\n try {\n return querySelectorAll.call(this, `[name=${key}]`)\n } catch {\n return globalEnv.rawGetElementsByName.call(this, key)\n }\n }\n}\n\n/**\n * patchSetAttribute is different from other patch\n * it not dependent on sandbox\n * it should exec when micro-app first created & release when all app unmounted\n */\nlet hasRewriteSetAttribute = false\nexport function patchSetAttribute (): void {\n if (hasRewriteSetAttribute) return\n hasRewriteSetAttribute = true\n Element.prototype.setAttribute = function setAttribute (key: string, value: string): void {\n if (/^micro-app(-\\S+)?/i.test(this.tagName) && key === 'data') {\n if (isPlainObject(value)) {\n const cloneValue: Record<PropertyKey, unknown> = {}\n Object.getOwnPropertyNames(value).forEach((propertyKey: PropertyKey) => {\n if (!(isString(propertyKey) && propertyKey.indexOf('__') === 0)) {\n // @ts-ignore\n cloneValue[propertyKey] = value[propertyKey]\n }\n })\n this.data = cloneValue\n } else if (value !== '[object Object]') {\n logWarn('property data must be an object', this.getAttribute('name'))\n }\n } else if (\n (\n ((key === 'src' || key === 'srcset') && /^(img|script)$/i.test(this.tagName)) ||\n (key === 'href' && /^link$/i.test(this.tagName))\n ) &&\n this.__MICRO_APP_NAME__ &&\n appInstanceMap.has(this.__MICRO_APP_NAME__)\n ) {\n const app = appInstanceMap.get(this.__MICRO_APP_NAME__)\n globalEnv.rawSetAttribute.call(this, key, CompletionPath(value, app!.url))\n } else {\n globalEnv.rawSetAttribute.call(this, key, value)\n }\n }\n}\n\nexport function releasePatchSetAttribute (): void {\n hasRewriteSetAttribute = false\n Element.prototype.setAttribute = globalEnv.rawSetAttribute\n}\n\nfunction releasePatchDocument (): void {\n Document.prototype.createElement = globalEnv.rawCreateElement\n Document.prototype.createElementNS = globalEnv.rawCreateElementNS\n Document.prototype.createDocumentFragment = globalEnv.rawCreateDocumentFragment\n Document.prototype.querySelector = globalEnv.rawQuerySelector\n Document.prototype.querySelectorAll = globalEnv.rawQuerySelectorAll\n Document.prototype.getElementById = globalEnv.rawGetElementById\n Document.prototype.getElementsByClassName = globalEnv.rawGetElementsByClassName\n Document.prototype.getElementsByTagName = globalEnv.rawGetElementsByTagName\n Document.prototype.getElementsByName = globalEnv.rawGetElementsByName\n}\n\n// release patch\nexport function releasePatches (): void {\n setCurrentAppName(null)\n releasePatchDocument()\n\n Element.prototype.appendChild = globalEnv.rawAppendChild\n Element.prototype.insertBefore = globalEnv.rawInsertBefore\n Element.prototype.replaceChild = globalEnv.rawReplaceChild\n Element.prototype.removeChild = globalEnv.rawRemoveChild\n Element.prototype.append = globalEnv.rawAppend\n Element.prototype.prepend = globalEnv.rawPrepend\n Element.prototype.cloneNode = globalEnv.rawCloneNode\n // Element.prototype.getBoundingClientRect = globalEnv.rawGetBoundingClientRect\n}\n\n// Set the style of micro-app-head and micro-app-body\nlet hasRejectMicroAppStyle = false\nexport function rejectMicroAppStyle (): void {\n if (!hasRejectMicroAppStyle) {\n hasRejectMicroAppStyle = true\n const style = pureCreateElement('style')\n globalEnv.rawSetAttribute.call(style, 'type', 'text/css')\n style.textContent = `\\n${microApp.tagName}, micro-app-body { display: block; } \\nmicro-app-head { display: none; }`\n globalEnv.rawDocument.head.appendChild(style)\n }\n}\n","import { appInstanceMap } from '../create_app'\nimport { getRootContainer } from '../libs/utils'\n\nfunction unmountNestedApp (): void {\n releaseUnmountOfNestedApp()\n\n appInstanceMap.forEach(app => {\n // @ts-ignore\n app.container && getRootContainer(app.container).disconnectedCallback()\n })\n\n !window.__MICRO_APP_UMD_MODE__ && appInstanceMap.clear()\n}\n\n// if micro-app run in micro application, delete all next generation application when unmount event received\nexport function listenUmountOfNestedApp (): void {\n if (window.__MICRO_APP_ENVIRONMENT__) {\n window.addEventListener('unmount', unmountNestedApp, false)\n }\n}\n\n// release listener\nexport function releaseUnmountOfNestedApp (): void {\n if (window.__MICRO_APP_ENVIRONMENT__) {\n window.removeEventListener('unmount', unmountNestedApp, false)\n }\n}\n","import { isSupportModuleScript, isBrowser, getCurrentAppName } from './utils'\nimport { rejectMicroAppStyle } from '../source/patch'\nimport { listenUmountOfNestedApp, releaseUnmountOfNestedApp } from '../libs/additional'\n\ntype RequestIdleCallbackOptions = {\n timeout: number\n}\n\ntype RequestIdleCallbackInfo = {\n readonly didTimeout: boolean\n timeRemaining: () => number\n}\n\ndeclare global {\n interface Window {\n requestIdleCallback (\n callback: (info: RequestIdleCallbackInfo) => void,\n opts?: RequestIdleCallbackOptions,\n ): number\n _babelPolyfill: boolean\n __MICRO_APP_ENVIRONMENT__?: boolean\n __MICRO_APP_UMD_MODE__?: boolean\n __MICRO_APP_BASE_APPLICATION__?: boolean\n }\n\n interface Node {\n __MICRO_APP_NAME__?: string | null\n data?: any\n }\n\n interface HTMLStyleElement {\n __MICRO_APP_LINK_PATH__?: string\n __MICRO_APP_HAS_SCOPED__?: boolean\n }\n}\n\nconst globalEnv: Record<string, any> = {}\n\n/**\n * Note loop nesting\n * Only prototype or unique values can be put here\n */\nexport function initGlobalEnv (): void {\n if (isBrowser) {\n /**\n * save patch raw methods\n * pay attention to this binding\n */\n const rawSetAttribute = Element.prototype.setAttribute\n const rawAppendChild = Element.prototype.appendChild\n const rawInsertBefore = Element.prototype.insertBefore\n const rawReplaceChild = Element.prototype.replaceChild\n const rawRemoveChild = Element.prototype.removeChild\n const rawAppend = Element.prototype.append\n const rawPrepend = Element.prototype.prepend\n const rawCloneNode = Element.prototype.cloneNode\n // const rawGetBoundingClientRect = Element.prototype.getBoundingClientRect\n\n const rawCreateElement = Document.prototype.createElement\n const rawCreateElementNS = Document.prototype.createElementNS\n const rawCreateDocumentFragment = Document.prototype.createDocumentFragment\n const rawQuerySelector = Document.prototype.querySelector\n const rawQuerySelectorAll = Document.prototype.querySelectorAll\n const rawGetElementById = Document.prototype.getElementById\n const rawGetElementsByClassName = Document.prototype.getElementsByClassName\n const rawGetElementsByTagName = Document.prototype.getElementsByTagName\n const rawGetElementsByName = Document.prototype.getElementsByName\n\n const ImageProxy = new Proxy(Image, {\n construct (Target, args): HTMLImageElement {\n const elementImage = new Target(...args)\n elementImage.__MICRO_APP_NAME__ = getCurrentAppName()\n return elementImage\n },\n })\n\n const rawWindow = Function('return window')()\n const rawDocument = Function('return document')()\n const supportModuleScript = isSupportModuleScript()\n\n /**\n * save effect raw methods\n * pay attention to this binding, especially setInterval, setTimeout, clearInterval, clearTimeout\n */\n const rawWindowAddEventListener = rawWindow.addEventListener\n const rawWindowRemoveEventListener = rawWindow.removeEventListener\n const rawSetInterval = rawWindow.setInterval\n const rawSetTimeout = rawWindow.setTimeout\n const rawClearInterval = rawWindow.clearInterval\n const rawClearTimeout = rawWindow.clearTimeout\n\n const rawDocumentAddEventListener = rawDocument.addEventListener\n const rawDocumentRemoveEventListener = rawDocument.removeEventListener\n\n // mark current application as base application\n window.__MICRO_APP_BASE_APPLICATION__ = true\n\n Object.assign(globalEnv, {\n // source/patch\n rawSetAttribute,\n rawAppendChild,\n rawInsertBefore,\n rawReplaceChild,\n rawRemoveChild,\n rawAppend,\n rawPrepend,\n rawCloneNode,\n // rawGetBoundingClientRect,\n rawCreateElement,\n rawCreateElementNS,\n rawCreateDocumentFragment,\n rawQuerySelector,\n rawQuerySelectorAll,\n rawGetElementById,\n rawGetElementsByClassName,\n rawGetElementsByTagName,\n rawGetElementsByName,\n ImageProxy,\n\n // common global vars\n rawWindow,\n rawDocument,\n supportModuleScript,\n\n // sandbox/effect\n rawWindowAddEventListener,\n rawWindowRemoveEventListener,\n rawSetInterval,\n rawSetTimeout,\n rawClearInterval,\n rawClearTimeout,\n rawDocumentAddEventListener,\n rawDocumentRemoveEventListener,\n })\n\n // global effect\n rejectMicroAppStyle()\n releaseUnmountOfNestedApp()\n listenUmountOfNestedApp()\n }\n}\n\nexport default globalEnv\n","/* eslint-disable node/no-callback-literal */\nimport type {\n AppInterface,\n sourceScriptInfo,\n plugins,\n Func,\n} from '@micro-app/types'\nimport { fetchSource } from './fetch'\nimport {\n CompletionPath,\n promiseStream,\n createNonceSrc,\n pureCreateElement,\n defer,\n logError,\n isUndefined,\n isPlainObject,\n isArray,\n isFunction,\n} from '../libs/utils'\nimport {\n dispatchOnLoadEvent,\n dispatchOnErrorEvent,\n} from './load_event'\nimport microApp from '../micro_app'\nimport globalEnv from '../libs/global_env'\nimport { globalKeyToBeCached } from '../constants'\n\ntype moduleCallBack = Func & { moduleCount?: number, errorCount?: number }\n\n// Global scripts, reuse across apps\nexport const globalScripts = new Map<string, string>()\n\n/**\n * Extract script elements\n * @param script script element\n * @param parent parent element of script\n * @param app app\n * @param isDynamic dynamic insert\n */\nexport function extractScriptElement (\n script: HTMLScriptElement,\n parent: Node,\n app: AppInterface,\n isDynamic = false,\n): any {\n let replaceComment: Comment | null = null\n let src: string | null = script.getAttribute('src')\n if (script.hasAttribute('exclude')) {\n replaceComment = document.createComment('script element with exclude attribute removed by micro-app')\n } else if (\n (script.type && !['text/javascript', 'text/ecmascript', 'application/javascript', 'application/ecmascript', 'module'].includes(script.type)) ||\n script.hasAttribute('ignore')\n ) {\n return null\n } else if (\n (globalEnv.supportModuleScript && script.noModule) ||\n (!globalEnv.supportModuleScript && script.type === 'module')\n ) {\n replaceComment = document.createComment(`${script.noModule ? 'noModule' : 'module'} script ignored by micro-app`)\n } else if (src) { // remote script\n src = CompletionPath(src, app.url)\n const info = {\n code: '',\n isExternal: true,\n isDynamic: isDynamic,\n async: script.hasAttribute('async'),\n defer: script.defer || script.type === 'module',\n module: script.type === 'module',\n isGlobal: script.hasAttribute('global'),\n }\n if (!isDynamic) {\n app.source.scripts.set(src, info)\n replaceComment = document.createComment(`script with src='${src}' extract by micro-app`)\n } else {\n return { url: src, info }\n }\n } else if (script.textContent) { // inline script\n const nonceStr: string = createNonceSrc()\n const info = {\n code: script.textContent,\n isExternal: false,\n isDynamic: isDynamic,\n async: false,\n defer: script.type === 'module',\n module: script.type === 'module',\n }\n if (!isDynamic) {\n app.source.scripts.set(nonceStr, info)\n replaceComment = document.createComment('inline script extract by micro-app')\n } else {\n return { url: nonceStr, info }\n }\n } else if (!isDynamic) {\n /**\n * script with empty src or empty script.textContent remove in static html\n * & not removed if it created by dynamic\n */\n replaceComment = document.createComment('script element removed by micro-app')\n }\n\n if (isDynamic) {\n return { replaceComment }\n } else {\n return parent.replaceChild(replaceComment!, script)\n }\n}\n\n/**\n * Get remote resources of script\n * @param wrapElement htmlDom\n * @param app app\n */\nexport function fetchScriptsFromHtml (\n wrapElement: HTMLElement,\n app: AppInterface,\n): void {\n const scriptEntries: Array<[string, sourceScriptInfo]> = Array.from(app.source.scripts.entries())\n const fetchScriptPromise: Promise<string>[] = []\n const fetchScriptPromiseInfo: Array<[string, sourceScriptInfo]> = []\n for (const [url, info] of scriptEntries) {\n if (info.isExternal) {\n const globalScriptText = globalScripts.get(url)\n if (globalScriptText) {\n info.code = globalScriptText\n } else if ((!info.defer && !info.async) || app.isPrefetch) {\n fetchScriptPromise.push(fetchSource(url, app.name))\n fetchScriptPromiseInfo.push([url, info])\n }\n }\n }\n\n if (fetchScriptPromise.length) {\n promiseStream<string>(fetchScriptPromise, (res: {data: string, index: number}) => {\n fetchScriptSuccess(\n fetchScriptPromiseInfo[res.index][0],\n fetchScriptPromiseInfo[res.index][1],\n res.data,\n )\n }, (err: {error: Error, index: number}) => {\n logError(err, app.name)\n }, () => {\n app.onLoad(wrapElement)\n })\n } else {\n app.onLoad(wrapElement)\n }\n}\n\n/**\n * fetch js succeeded, record the code value\n * @param url script address\n * @param info resource script info\n * @param data code\n */\nexport function fetchScriptSuccess (\n url: string,\n info: sourceScriptInfo,\n data: string,\n): void {\n if (info.isGlobal && !globalScripts.has(url)) {\n globalScripts.set(url, data)\n }\n\n info.code = data\n}\n\n/**\n * Execute js in the mount lifecycle\n * @param scriptList script list\n * @param app app\n * @param initHook callback for umd mode\n */\nexport function execScripts (\n scriptList: Map<string, sourceScriptInfo>,\n app: AppInterface,\n initHook: moduleCallBack,\n): void {\n const scriptListEntries: Array<[string, sourceScriptInfo]> = Array.from(scriptList.entries())\n const deferScriptPromise: Array<Promise<string>|string> = []\n const deferScriptInfo: Array<[string, sourceScriptInfo]> = []\n for (const [url, info] of scriptListEntries) {\n if (!info.isDynamic) {\n // Notice the second render\n if (info.defer || info.async) {\n if (info.isExternal && !info.code) {\n deferScriptPromise.push(fetchSource(url, app.name))\n } else {\n deferScriptPromise.push(info.code)\n }\n deferScriptInfo.push([url, info])\n\n info.module && (initHook.moduleCount = initHook.moduleCount ? ++initHook.moduleCount : 1)\n } else {\n runScript(url, app, info, false)\n initHook(false)\n }\n }\n }\n\n if (deferScriptPromise.length) {\n promiseStream<string>(deferScriptPromise, (res: {data: string, index: number}) => {\n const info = deferScriptInfo[res.index][1]\n info.code = info.code || res.data\n }, (err: {error: Error, index: number}) => {\n initHook.errorCount = initHook.errorCount ? ++initHook.errorCount : 1\n logError(err, app.name)\n }, () => {\n deferScriptInfo.forEach(([url, info]) => {\n if (info.code) {\n runScript(url, app, info, false, initHook)\n !info.module && initHook(false)\n }\n })\n initHook(\n isUndefined(initHook.moduleCount) ||\n initHook.errorCount === deferScriptPromise.length\n )\n })\n } else {\n initHook(true)\n }\n}\n\n/**\n * run code\n * @param url script address\n * @param app app\n * @param info script info\n * @param isDynamic dynamically created script\n * @param callback callback of module script\n */\nexport function runScript (\n url: string,\n app: AppInterface,\n info: sourceScriptInfo,\n isDynamic: boolean,\n callback?: moduleCallBack,\n): any {\n try {\n const code = bindScope(url, app, info.code, info.module)\n if (app.inline || info.module) {\n const scriptElement = pureCreateElement('script')\n runCode2InlineScript(url, code, info.module, scriptElement, callback)\n if (isDynamic) return scriptElement\n // TEST IGNORE\n app.container?.querySelector('micro-app-body')!.appendChild(scriptElement)\n } else {\n runCode2Function(code, info)\n if (isDynamic) return document.createComment('dynamic script extract by micro-app')\n }\n } catch (e) {\n console.error(`[micro-app from runScript] app ${app.name}: `, e)\n }\n}\n\n/**\n * Get dynamically created remote script\n * @param url script address\n * @param info info\n * @param app app\n * @param originScript origin script element\n */\nexport function runDynamicRemoteScript (\n url: string,\n info: sourceScriptInfo,\n app: AppInterface,\n originScript: HTMLScriptElement,\n): HTMLScriptElement | Comment {\n const dispatchScriptOnLoadEvent = () => dispatchOnLoadEvent(originScript)\n\n // url is unique\n if (app.source.scripts.has(url)) {\n const existInfo: sourceScriptInfo = app.source.scripts.get(url)!\n !existInfo.module && defer(dispatchScriptOnLoadEvent)\n return runScript(url, app, existInfo, true, dispatchScriptOnLoadEvent)\n }\n\n if (globalScripts.has(url)) {\n const code = globalScripts.get(url)!\n info.code = code\n app.source.scripts.set(url, info)\n !info.module && defer(dispatchScriptOnLoadEvent)\n return runScript(url, app, info, true, dispatchScriptOnLoadEvent)\n }\n\n let replaceElement: Comment | HTMLScriptElement\n if (app.inline || info.module) {\n replaceElement = pureCreateElement('script')\n } else {\n replaceElement = document.createComment(`dynamic script with src='${url}' extract by micro-app`)\n }\n\n fetchSource(url, app.name).then((code: string) => {\n info.code = code\n app.source.scripts.set(url, info)\n info.isGlobal && globalScripts.set(url, code)\n try {\n code = bindScope(url, app, code, info.module)\n if (app.inline || info.module) {\n runCode2InlineScript(url, code, info.module, replaceElement as HTMLScriptElement, dispatchScriptOnLoadEvent)\n } else {\n runCode2Function(code, info)\n }\n } catch (e) {\n console.error(`[micro-app from runDynamicScript] app ${app.name}: `, e, url)\n }\n !info.module && dispatchOnLoadEvent(originScript)\n }).catch((err) => {\n logError(err, app.name)\n dispatchOnErrorEvent(originScript)\n })\n\n return replaceElement\n}\n\n/**\n * common handle for inline script\n * @param url script address\n * @param code bound code\n * @param module type='module' of script\n * @param scriptElement target script element\n * @param callback callback of module script\n */\nfunction runCode2InlineScript (\n url: string,\n code: string,\n module: boolean,\n scriptElement: HTMLScriptElement,\n callback?: moduleCallBack,\n): void {\n if (module) {\n // module script is async, transform it to a blob for subsequent operations\n const blob = new Blob([code], { type: 'text/javascript' })\n scriptElement.src = URL.createObjectURL(blob)\n scriptElement.setAttribute('type', 'module')\n if (callback) {\n callback.moduleCount && callback.moduleCount--\n scriptElement.onload = callback.bind(scriptElement, callback.moduleCount === 0)\n }\n } else {\n scriptElement.textContent = code\n }\n\n if (!url.startsWith('inline-')) {\n scriptElement.setAttribute('data-origin-src', url)\n }\n}\n\n// init & run code2Function\nfunction runCode2Function (code: string, info: sourceScriptInfo) {\n if (!info.code2Function) {\n info.code2Function = new Function(code)\n }\n info.code2Function.call(window)\n}\n\n/**\n * bind js scope\n * @param url script address\n * @param app app\n * @param code code\n * @param module type='module' of script\n */\nfunction bindScope (\n url: string,\n app: AppInterface,\n code: string,\n module: boolean,\n): string {\n if (isPlainObject(microApp.plugins)) {\n code = usePlugins(url, code, app.name, microApp.plugins!)\n }\n\n if (app.sandBox && !module) {\n globalEnv.rawWindow.__MICRO_APP_PROXY_WINDOW__ = app.sandBox.proxyWindow\n return `;(function(proxyWindow){with(proxyWindow.__MICRO_APP_WINDOW__){(function(${globalKeyToBeCached}){;${code}\\n}).call(proxyWindow,${globalKeyToBeCached})}})(window.__MICRO_APP_PROXY_WINDOW__);`\n }\n\n return code\n}\n\n/**\n * Call the plugin to process the file\n * @param url script address\n * @param code code\n * @param appName app name\n * @param plugins plugin list\n */\nfunction usePlugins (url: string, code: string, appName: string, plugins: plugins): string {\n const newCode = processCode(plugins.global, code, url)\n\n return processCode(plugins.modules?.[appName], newCode, url)\n}\n\nfunction processCode (configs: plugins['global'], code: string, url: string) {\n if (!isArray(configs)) {\n return code\n }\n\n return configs.reduce((preCode, config) => {\n if (isPlainObject(config) && isFunction(config.loader)) {\n return config.loader!(preCode, url, config.options)\n }\n\n return preCode\n }, code)\n}\n","import type { AppInterface } from '@micro-app/types'\nimport { fetchSource } from './fetch'\nimport { logError, CompletionPath, pureCreateElement } from '../libs/utils'\nimport { extractLinkFromHtml, fetchLinksFromHtml } from './links'\nimport { extractScriptElement, fetchScriptsFromHtml } from './scripts'\nimport scopedCSS from './scoped_css'\n\n/**\n * transform html string to dom\n * @param str string dom\n */\nfunction getWrapElement (str: string): HTMLElement {\n const wrapDiv = pureCreateElement('div')\n\n wrapDiv.innerHTML = str\n\n return wrapDiv\n}\n\n/**\n * Recursively process each child element\n * @param parent parent element\n * @param app app\n * @param microAppHead micro-app-head element\n */\nfunction flatChildren (\n parent: HTMLElement,\n app: AppInterface,\n microAppHead: Element,\n): void {\n const children = Array.from(parent.children)\n\n children.length && children.forEach((child) => {\n flatChildren(child as HTMLElement, app, microAppHead)\n })\n\n for (const dom of children) {\n if (dom instanceof HTMLLinkElement) {\n if (dom.hasAttribute('exclude')) {\n parent.replaceChild(document.createComment('link element with exclude attribute ignored by micro-app'), dom)\n } else if (!dom.hasAttribute('ignore')) {\n extractLinkFromHtml(dom, parent, app)\n } else if (dom.hasAttribute('href')) {\n dom.setAttribute('href', CompletionPath(dom.getAttribute('href')!, app.url))\n }\n } else if (dom instanceof HTMLStyleElement) {\n if (dom.hasAttribute('exclude')) {\n parent.replaceChild(document.createComment('style element with exclude attribute ignored by micro-app'), dom)\n } else if (app.scopecss && !dom.hasAttribute('ignore')) {\n scopedCSS(dom, app)\n }\n } else if (dom instanceof HTMLScriptElement) {\n extractScriptElement(dom, parent, app)\n } else if (dom instanceof HTMLMetaElement || dom instanceof HTMLTitleElement) {\n parent.removeChild(dom)\n } else if (dom instanceof HTMLImageElement && dom.hasAttribute('src')) {\n dom.setAttribute('src', CompletionPath(dom.getAttribute('src')!, app.url))\n }\n }\n}\n\n/**\n * Extract link and script, bind style scope\n * @param htmlStr html string\n * @param app app\n */\nfunction extractSourceDom (htmlStr: string, app: AppInterface) {\n const wrapElement = getWrapElement(htmlStr)\n const microAppHead = wrapElement.querySelector('micro-app-head')\n const microAppBody = wrapElement.querySelector('micro-app-body')\n\n if (!microAppHead || !microAppBody) {\n const msg = `element ${microAppHead ? 'body' : 'head'} is missing`\n app.onerror(new Error(msg))\n return logError(msg, app.name)\n }\n\n flatChildren(wrapElement, app, microAppHead)\n\n if (app.source.links.size) {\n fetchLinksFromHtml(wrapElement, app, microAppHead)\n } else {\n app.onLoad(wrapElement)\n }\n\n if (app.source.scripts.size) {\n fetchScriptsFromHtml(wrapElement, app)\n } else {\n app.onLoad(wrapElement)\n }\n}\n\n/**\n * Get and format html\n * @param app app\n */\nexport default function extractHtml (app: AppInterface): void {\n fetchSource(app.ssrUrl || app.url, app.name, { cache: 'no-cache' }).then((htmlStr: string) => {\n if (!htmlStr) {\n const msg = 'html is empty, please check in detail'\n app.onerror(new Error(msg))\n return logError(msg, app.name)\n }\n htmlStr = htmlStr\n .replace(/<head[^>]*>[\\s\\S]*?<\\/head>/i, (match) => {\n return match\n .replace(/<head/i, '<micro-app-head')\n .replace(/<\\/head>/i, '</micro-app-head>')\n })\n .replace(/<body[^>]*>[\\s\\S]*?<\\/body>/i, (match) => {\n return match\n .replace(/<body/i, '<micro-app-body')\n .replace(/<\\/body>/i, '</micro-app-body>')\n })\n\n extractSourceDom(htmlStr, app)\n }).catch((e) => {\n logError(`Failed to fetch data from ${app.url}, micro-app stop rendering`, app.name, e)\n app.onLoadError(e)\n })\n}\n","import { CallableFunctionForInteract } from '@micro-app/types'\nimport { logError, isFunction, isPlainObject } from '../libs/utils'\n\nexport default class EventCenter {\n eventList = new Map<string, {\n data: Record<PropertyKey, unknown>,\n callbacks: Set<CallableFunctionForInteract>,\n }>()\n\n // whether the name is legal\n isLegalName (name: string): boolean {\n if (!name) {\n logError('event-center: Invalid name')\n return false\n }\n\n return true\n }\n\n /**\n * add listener\n * @param name event name\n * @param f listener\n * @param autoTrigger If there is cached data when first bind listener, whether it needs to trigger, default is false\n */\n on (name: string, f: CallableFunctionForInteract, autoTrigger = false): void {\n if (this.isLegalName(name)) {\n if (!isFunction(f)) {\n return logError('event-center: Invalid callback function')\n }\n\n let eventInfo = this.eventList.get(name)\n if (!eventInfo) {\n eventInfo = {\n data: {},\n callbacks: new Set(),\n }\n this.eventList.set(name, eventInfo)\n } else if (autoTrigger && Object.getOwnPropertyNames(eventInfo.data).length) {\n // auto trigger when data not null\n f(eventInfo.data)\n }\n\n eventInfo.callbacks.add(f)\n }\n }\n\n // remove listener, but the data is not cleared\n off (name: string, f?: CallableFunctionForInteract): void {\n if (this.isLegalName(name)) {\n const eventInfo = this.eventList.get(name)\n if (eventInfo) {\n if (isFunction(f)) {\n eventInfo.callbacks.delete(f!)\n } else {\n eventInfo.callbacks.clear()\n }\n }\n }\n }\n\n // dispatch data\n dispatch (name: string, data: Record<PropertyKey, unknown>): void {\n if (this.isLegalName(name)) {\n if (!isPlainObject(data)) {\n return logError('event-center: data must be object')\n }\n let eventInfo = this.eventList.get(name)\n if (eventInfo) {\n // Update when the data is not equal\n if (eventInfo.data !== data) {\n eventInfo.data = data\n for (const f of eventInfo.callbacks) {\n f(data)\n }\n }\n } else {\n eventInfo = {\n data: data,\n callbacks: new Set(),\n }\n this.eventList.set(name, eventInfo)\n }\n }\n }\n\n // get data\n getData (name: string): Record<PropertyKey, unknown> | null {\n const eventInfo = this.eventList.get(name)\n return eventInfo?.data ?? null\n }\n}\n","import { CallableFunctionForInteract } from '@micro-app/types'\nimport EventCenter from './event_center'\nimport { appInstanceMap } from '../create_app'\nimport {\n removeDomScope,\n isString,\n isFunction,\n isPlainObject,\n formatAppName,\n logError,\n getRootContainer,\n} from '../libs/utils'\n\nconst eventCenter = new EventCenter()\n\n/**\n * Format event name\n * @param appName app.name\n * @param fromBaseApp is from base app\n */\nfunction formatEventName (appName: string, fromBaseApp: boolean): string {\n if (!isString(appName) || !appName) return ''\n return fromBaseApp ? `__from_base_app_${appName}__` : `__from_micro_app_${appName}__`\n}\n\n// Global data\nclass EventCenterForGlobal {\n /**\n * add listener of global data\n * @param cb listener\n * @param autoTrigger If there is cached data when first bind listener, whether it needs to trigger, default is false\n */\n addGlobalDataListener (cb: CallableFunctionForInteract, autoTrigger?: boolean): void {\n const appName = (this as any).appName\n // if appName exists, this is in sub app\n if (appName) {\n cb.__APP_NAME__ = appName\n cb.__AUTO_TRIGGER__ = autoTrigger\n }\n eventCenter.on('global', cb, autoTrigger)\n }\n\n /**\n * remove listener of global data\n * @param cb listener\n */\n removeGlobalDataListener (cb: CallableFunctionForInteract): void {\n isFunction(cb) && eventCenter.off('global', cb)\n }\n\n /**\n * dispatch global data\n * @param data data\n */\n setGlobalData (data: Record<PropertyKey, unknown>): void {\n // clear dom scope before dispatch global data, apply to micro app\n removeDomScope()\n\n eventCenter.dispatch('global', data)\n }\n\n /**\n * get global data\n */\n getGlobalData (): Record<PropertyKey, unknown> | null {\n return eventCenter.getData('global')\n }\n\n /**\n * clear all listener of global data\n * if appName exists, only the specified functions is cleared\n * if appName not exists, only clear the base app functions\n */\n clearGlobalDataListener (): void {\n const appName = (this as any).appName\n const eventInfo = eventCenter.eventList.get('global')\n if (eventInfo) {\n for (const cb of eventInfo.callbacks) {\n if (\n (appName && appName === cb.__APP_NAME__) ||\n !(appName || cb.__APP_NAME__)\n ) {\n eventInfo.callbacks.delete(cb)\n }\n }\n }\n }\n}\n\n// Event center for base app\nexport class EventCenterForBaseApp extends EventCenterForGlobal {\n /**\n * add listener\n * @param appName app.name\n * @param cb listener\n * @param autoTrigger If there is cached data when first bind listener, whether it needs to trigger, default is false\n */\n addDataListener (appName: string, cb: CallableFunction, autoTrigger?: boolean): void {\n eventCenter.on(formatEventName(formatAppName(appName), false), cb, autoTrigger)\n }\n\n /**\n * remove listener\n * @param appName app.name\n * @param cb listener\n */\n removeDataListener (appName: string, cb: CallableFunction): void {\n isFunction(cb) && eventCenter.off(formatEventName(formatAppName(appName), false), cb)\n }\n\n /**\n * get data from micro app or base app\n * @param appName app.name\n * @param fromBaseApp whether get data from base app, default is false\n */\n getData (appName: string, fromBaseApp = false): Record<PropertyKey, unknown> | null {\n return eventCenter.getData(formatEventName(formatAppName(appName), fromBaseApp))\n }\n\n /**\n * Dispatch data to the specified micro app\n * @param appName app.name\n * @param data data\n */\n setData (appName: string, data: Record<PropertyKey, unknown>): void {\n eventCenter.dispatch(formatEventName(formatAppName(appName), true), data)\n }\n\n /**\n * clear all listener for specified micro app\n * @param appName app.name\n */\n clearDataListener (appName: string): void {\n eventCenter.off(formatEventName(formatAppName(appName), false))\n }\n}\n\n// Event center for sub app\nexport class EventCenterForMicroApp extends EventCenterForGlobal {\n appName: string\n umdDataListeners?: {\n global: Set<CallableFunctionForInteract>,\n normal: Set<CallableFunctionForInteract>,\n }\n\n constructor (appName: string) {\n super()\n this.appName = formatAppName(appName)\n !this.appName && logError(`Invalid appName ${appName}`)\n }\n\n /**\n * add listener, monitor the data sent by the base app\n * @param cb listener\n * @param autoTrigger If there is cached data when first bind listener, whether it needs to trigger, default is false\n */\n addDataListener (cb: CallableFunctionForInteract, autoTrigger?: boolean): void {\n cb.__AUTO_TRIGGER__ = autoTrigger\n eventCenter.on(formatEventName(this.appName, true), cb, autoTrigger)\n }\n\n /**\n * remove listener\n * @param cb listener\n */\n removeDataListener (cb: CallableFunctionForInteract): void {\n isFunction(cb) && eventCenter.off(formatEventName(this.appName, true), cb)\n }\n\n /**\n * get data from base app\n */\n getData (): Record<PropertyKey, unknown> | null {\n return eventCenter.getData(formatEventName(this.appName, true))\n }\n\n /**\n * dispatch data to base app\n * @param data data\n */\n dispatch (data: Record<PropertyKey, unknown>): void {\n removeDomScope()\n\n eventCenter.dispatch(formatEventName(this.appName, false), data)\n\n const app = appInstanceMap.get(this.appName)\n if (app?.container && isPlainObject(data)) {\n const event = new CustomEvent('datachange', {\n detail: {\n data,\n }\n })\n\n getRootContainer(app.container).dispatchEvent(event)\n }\n }\n\n /**\n * clear all listeners\n */\n clearDataListener (): void {\n eventCenter.off(formatEventName(this.appName, true))\n }\n}\n\n/**\n * Record UMD function before exec umdHookMount\n * @param microAppEventCenter\n */\nexport function recordDataCenterSnapshot (microAppEventCenter: EventCenterForMicroApp): void {\n const appName = microAppEventCenter.appName\n microAppEventCenter.umdDataListeners = { global: new Set(), normal: new Set() }\n\n const globalEventInfo = eventCenter.eventList.get('global')\n if (globalEventInfo) {\n for (const cb of globalEventInfo.callbacks) {\n if (appName === cb.__APP_NAME__) {\n microAppEventCenter.umdDataListeners.global.add(cb)\n }\n }\n }\n\n const subAppEventInfo = eventCenter.eventList.get(formatEventName(appName, true))\n if (subAppEventInfo) {\n microAppEventCenter.umdDataListeners.normal = new Set(subAppEventInfo.callbacks)\n }\n}\n\n/**\n * Rebind the UMD function of the record before remount\n * @param microAppEventCenter instance of EventCenterForMicroApp\n */\nexport function rebuildDataCenterSnapshot (microAppEventCenter: EventCenterForMicroApp): void {\n for (const cb of microAppEventCenter.umdDataListeners!.global) {\n microAppEventCenter.addGlobalDataListener(cb, cb.__AUTO_TRIGGER__)\n }\n\n for (const cb of microAppEventCenter.umdDataListeners!.normal) {\n microAppEventCenter.addDataListener(cb, cb.__AUTO_TRIGGER__)\n }\n}\n","/* eslint-disable no-return-assign */\nimport { isBoundFunction, rawDefineProperty, isBoolean } from '../libs/utils'\n\nfunction isBoundedFunction (value: CallableFunction & {__MICRO_APP_IS_BOUND_FUNCTION__: boolean}): boolean {\n if (isBoolean(value.__MICRO_APP_IS_BOUND_FUNCTION__)) return value.__MICRO_APP_IS_BOUND_FUNCTION__\n return value.__MICRO_APP_IS_BOUND_FUNCTION__ = isBoundFunction(value)\n}\n\nfunction isConstructor (value: FunctionConstructor & {__MICRO_APP_IS_CONSTRUCTOR__: boolean}) {\n if (isBoolean(value.__MICRO_APP_IS_CONSTRUCTOR__)) return value.__MICRO_APP_IS_CONSTRUCTOR__\n\n const valueStr = value.toString()\n\n const result = (\n value.prototype?.constructor === value &&\n Object.getOwnPropertyNames(value.prototype).length > 1\n ) ||\n /^function\\s+[A-Z]/.test(valueStr) ||\n /^class\\s+/.test(valueStr)\n\n return value.__MICRO_APP_IS_CONSTRUCTOR__ = result\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport default function bindFunctionToRawWindow (rawWindow: Window, value: any): unknown {\n if (value.__MICRO_APP_BOUND_WINDOW_FUNCTION__) return value.__MICRO_APP_BOUND_WINDOW_FUNCTION__\n\n if (!isConstructor(value) && !isBoundedFunction(value)) {\n const bindRawWindowValue = value.bind(rawWindow)\n\n for (const key in value) {\n bindRawWindowValue[key] = value[key]\n }\n\n if (value.hasOwnProperty('prototype')) {\n rawDefineProperty(bindRawWindowValue, 'prototype', {\n value: value.prototype,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n\n return value.__MICRO_APP_BOUND_WINDOW_FUNCTION__ = bindRawWindowValue\n }\n\n return value\n}\n","import type { microAppWindowType } from '@micro-app/types'\nimport {\n getCurrentAppName,\n setCurrentAppName,\n logWarn,\n isFunction,\n isBoundFunction,\n rawDefineProperty,\n} from '../libs/utils'\nimport { appInstanceMap } from '../create_app'\nimport globalEnv from '../libs/global_env'\n\ntype MicroEventListener = EventListenerOrEventListenerObject & Record<string, any>\ntype timeInfo = {\n handler: TimerHandler,\n timeout?: number,\n args: any[],\n}\n\n// document.onclick binding list, the binding function of each application is unique\nconst documentClickListMap = new Map<string, unknown>()\nlet hasRewriteDocumentOnClick = false\n/**\n * Rewrite document.onclick and execute it only once\n */\nfunction overwriteDocumentOnClick (): void {\n hasRewriteDocumentOnClick = true\n if (Object.getOwnPropertyDescriptor(document, 'onclick')) {\n return logWarn('Cannot redefine document property onclick')\n }\n const rawOnClick = document.onclick\n document.onclick = null\n let hasDocumentClickInited = false\n\n function onClickHandler (e: MouseEvent) {\n documentClickListMap.forEach((f) => {\n isFunction(f) && (f as Function).call(document, e)\n })\n }\n\n rawDefineProperty(document, 'onclick', {\n configurable: true,\n enumerable: true,\n get () {\n const appName = getCurrentAppName()\n return appName ? documentClickListMap.get(appName) : documentClickListMap.get('base')\n },\n set (f: GlobalEventHandlers['onclick']) {\n const appName = getCurrentAppName()\n if (appName) {\n documentClickListMap.set(appName, f)\n } else {\n documentClickListMap.set('base', f)\n }\n\n if (!hasDocumentClickInited && isFunction(f)) {\n hasDocumentClickInited = true\n globalEnv.rawDocumentAddEventListener.call(globalEnv.rawDocument, 'click', onClickHandler, false)\n }\n }\n })\n\n rawOnClick && (document.onclick = rawOnClick)\n}\n\n/**\n * The document event is globally, we need to clear these event bindings when micro application unmounted\n */\nconst documentEventListenerMap = new Map<string, Map<string, Set<MicroEventListener>>>()\nexport function effectDocumentEvent (): void {\n const {\n rawDocument,\n rawDocumentAddEventListener,\n rawDocumentRemoveEventListener,\n } = globalEnv\n\n !hasRewriteDocumentOnClick && overwriteDocumentOnClick()\n\n document.addEventListener = function (\n type: string,\n listener: MicroEventListener,\n options?: boolean | AddEventListenerOptions\n ): void {\n const appName = getCurrentAppName()\n /**\n * ignore bound function of document event in umd mode, used to solve problem of react global events\n */\n if (appName && !(appInstanceMap.get(appName)?.umdMode && isBoundFunction(listener))) {\n const appListenersMap = documentEventListenerMap.get(appName)\n if (appListenersMap) {\n const appListenerList = appListenersMap.get(type)\n if (appListenerList) {\n appListenerList.add(listener)\n } else {\n appListenersMap.set(type, new Set([listener]))\n }\n } else {\n documentEventListenerMap.set(appName, new Map([[type, new Set([listener])]]))\n }\n listener && (listener.__MICRO_APP_MARK_OPTIONS__ = options)\n }\n rawDocumentAddEventListener.call(rawDocument, type, listener, options)\n }\n\n document.removeEventListener = function (\n type: string,\n listener: MicroEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const appName = getCurrentAppName()\n if (appName && !(appInstanceMap.get(appName)?.umdMode && isBoundFunction(listener))) {\n const appListenersMap = documentEventListenerMap.get(appName)\n if (appListenersMap) {\n const appListenerList = appListenersMap.get(type)\n if (appListenerList?.size && appListenerList.has(listener)) {\n appListenerList.delete(listener)\n }\n }\n }\n rawDocumentRemoveEventListener.call(rawDocument, type, listener, options)\n }\n}\n\n// Clear the document event agent\nexport function releaseEffectDocumentEvent (): void {\n document.addEventListener = globalEnv.rawDocumentAddEventListener\n document.removeEventListener = globalEnv.rawDocumentRemoveEventListener\n}\n\n// this events should be sent to the specified app\nconst formatEventList = ['unmount', 'appstate-change']\n\n/**\n * Format event name\n * @param type event name\n * @param microAppWindow micro window\n */\nfunction formatEventType (type: string, microAppWindow: microAppWindowType): string {\n if (formatEventList.includes(type)) {\n return `${type}-${microAppWindow.__MICRO_APP_NAME__}`\n }\n return type\n}\n\n/**\n * Rewrite side-effect events\n * @param microAppWindow micro window\n */\nexport default function effect (microAppWindow: microAppWindowType): Record<string, CallableFunction> {\n const appName = microAppWindow.__MICRO_APP_NAME__\n const eventListenerMap = new Map<string, Set<MicroEventListener>>()\n const intervalIdMap = new Map<number, timeInfo>()\n const timeoutIdMap = new Map<number, timeInfo>()\n const {\n rawWindow,\n rawDocument,\n rawWindowAddEventListener,\n rawWindowRemoveEventListener,\n rawSetInterval,\n rawSetTimeout,\n rawClearInterval,\n rawClearTimeout,\n rawDocumentRemoveEventListener,\n } = globalEnv\n\n // listener may be null, e.g test-passive\n microAppWindow.addEventListener = function (\n type: string,\n listener: MicroEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n type = formatEventType(type, microAppWindow)\n const listenerList = eventListenerMap.get(type)\n if (listenerList) {\n listenerList.add(listener)\n } else {\n eventListenerMap.set(type, new Set([listener]))\n }\n listener && (listener.__MICRO_APP_MARK_OPTIONS__ = options)\n rawWindowAddEventListener.call(rawWindow, type, listener, options)\n }\n\n microAppWindow.removeEventListener = function (\n type: string,\n listener: MicroEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n type = formatEventType(type, microAppWindow)\n const listenerList = eventListenerMap.get(type)\n if (listenerList?.size && listenerList.has(listener)) {\n listenerList.delete(listener)\n }\n rawWindowRemoveEventListener.call(rawWindow, type, listener, options)\n }\n\n microAppWindow.setInterval = function (\n handler: TimerHandler,\n timeout?: number,\n ...args: any[]\n ): number {\n const intervalId = rawSetInterval.call(rawWindow, handler, timeout, ...args)\n intervalIdMap.set(intervalId, { handler, timeout, args })\n return intervalId\n }\n\n microAppWindow.setTimeout = function (\n handler: TimerHandler,\n timeout?: number,\n ...args: any[]\n ): number {\n const timeoutId = rawSetTimeout.call(rawWindow, handler, timeout, ...args)\n timeoutIdMap.set(timeoutId, { handler, timeout, args })\n return timeoutId\n }\n\n microAppWindow.clearInterval = function (intervalId: number) {\n intervalIdMap.delete(intervalId)\n rawClearInterval.call(rawWindow, intervalId)\n }\n\n microAppWindow.clearTimeout = function (timeoutId: number) {\n timeoutIdMap.delete(timeoutId)\n rawClearTimeout.call(rawWindow, timeoutId)\n }\n\n const umdWindowListenerMap = new Map<string, Set<MicroEventListener>>()\n const umdDocumentListenerMap = new Map<string, Set<MicroEventListener>>()\n let umdIntervalIdMap = new Map<number, timeInfo>()\n let umdTimeoutIdMap = new Map<number, timeInfo>()\n let umdOnClickHandler: unknown\n\n // record event and timer before exec umdMountHook\n const recordUmdEffect = () => {\n // record window event\n eventListenerMap.forEach((listenerList, type) => {\n if (listenerList.size) {\n umdWindowListenerMap.set(type, new Set(listenerList))\n }\n })\n\n // record timers\n if (intervalIdMap.size) {\n umdIntervalIdMap = new Map(intervalIdMap)\n }\n\n if (timeoutIdMap.size) {\n umdTimeoutIdMap = new Map(timeoutIdMap)\n }\n\n // record onclick handler\n umdOnClickHandler = documentClickListMap.get(appName)\n\n // record document event\n const documentAppListenersMap = documentEventListenerMap.get(appName)\n if (documentAppListenersMap) {\n documentAppListenersMap.forEach((listenerList, type) => {\n if (listenerList.size) {\n umdDocumentListenerMap.set(type, new Set(listenerList))\n }\n })\n }\n }\n\n // rebuild event and timer before remount umd app\n const rebuildUmdEffect = () => {\n // rebuild window event\n umdWindowListenerMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n microAppWindow.addEventListener(type, listener, listener?.__MICRO_APP_MARK_OPTIONS__)\n }\n })\n\n // rebuild timer\n umdIntervalIdMap.forEach((info: timeInfo) => {\n microAppWindow.setInterval(info.handler, info.timeout, ...info.args)\n })\n\n umdTimeoutIdMap.forEach((info: timeInfo) => {\n microAppWindow.setTimeout(info.handler, info.timeout, ...info.args)\n })\n\n // rebuild onclick event\n umdOnClickHandler && documentClickListMap.set(appName, umdOnClickHandler)\n\n // rebuild document event\n setCurrentAppName(appName)\n umdDocumentListenerMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n document.addEventListener(type, listener, listener?.__MICRO_APP_MARK_OPTIONS__)\n }\n })\n setCurrentAppName(null)\n }\n\n // release all event listener & interval & timeout when unmount app\n const releaseEffect = () => {\n // Clear window binding events\n if (eventListenerMap.size) {\n eventListenerMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n rawWindowRemoveEventListener.call(rawWindow, type, listener)\n }\n })\n eventListenerMap.clear()\n }\n\n // Clear timers\n if (intervalIdMap.size) {\n intervalIdMap.forEach((_, intervalId: number) => {\n rawClearInterval.call(rawWindow, intervalId)\n })\n intervalIdMap.clear()\n }\n\n if (timeoutIdMap.size) {\n timeoutIdMap.forEach((_, timeoutId: number) => {\n rawClearTimeout.call(rawWindow, timeoutId)\n })\n timeoutIdMap.clear()\n }\n\n // Clear the function bound by micro application through document.onclick\n documentClickListMap.delete(appName)\n\n // Clear document binding event\n const documentAppListenersMap = documentEventListenerMap.get(appName)\n if (documentAppListenersMap) {\n documentAppListenersMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n rawDocumentRemoveEventListener.call(rawDocument, type, listener)\n }\n })\n documentAppListenersMap.clear()\n }\n }\n\n return {\n recordUmdEffect,\n rebuildUmdEffect,\n releaseEffect,\n }\n}\n","import type { microAppWindowType, SandBoxInterface, plugins } from '@micro-app/types'\nimport {\n EventCenterForMicroApp, rebuildDataCenterSnapshot, recordDataCenterSnapshot\n} from '../interact'\nimport globalEnv from '../libs/global_env'\nimport {\n getEffectivePath,\n isArray,\n isPlainObject,\n isString,\n removeDomScope,\n unique,\n throttleDeferForSetAppName,\n rawDefineProperty,\n rawDefineProperties,\n isFunction,\n rawHasOwnProperty,\n pureCreateElement,\n} from '../libs/utils'\nimport microApp from '../micro_app'\nimport bindFunctionToRawWindow from './bind_function'\nimport effect, {\n effectDocumentEvent,\n releaseEffectDocumentEvent,\n} from './effect'\nimport {\n patchElementPrototypeMethods,\n releasePatches,\n} from '../source/patch'\n\nexport type MicroAppWindowDataType = {\n __MICRO_APP_ENVIRONMENT__: boolean\n __MICRO_APP_NAME__: string\n __MICRO_APP_PUBLIC_PATH__: string\n __MICRO_APP_BASE_URL__: string\n __MICRO_APP_BASE_ROUTE__: string\n __MICRO_APP_UMD_MODE__: boolean\n microApp: EventCenterForMicroApp\n rawWindow: Window\n rawDocument: Document\n removeDomScope: () => void\n}\n\nexport type MicroAppWindowType = Window & MicroAppWindowDataType\n\n// Variables that can escape to rawWindow\nconst staticEscapeProperties: PropertyKey[] = [\n 'System',\n '__cjsWrapper',\n]\n\n// Variables that can only assigned to rawWindow\nconst escapeSetterKeyList: PropertyKey[] = [\n 'location',\n]\n\nconst globalPropertyList: Array<PropertyKey> = ['window', 'self', 'globalThis']\n\nexport default class SandBox implements SandBoxInterface {\n static activeCount = 0 // number of active sandbox\n private recordUmdEffect!: CallableFunction\n private rebuildUmdEffect!: CallableFunction\n private releaseEffect!: CallableFunction\n /**\n * Scoped global Properties(Properties that can only get and set in microAppWindow, will not escape to rawWindow)\n * https://github.com/micro-zoe/micro-app/issues/234\n */\n private scopeProperties: PropertyKey[] = ['webpackJsonp', 'Vue']\n // Properties that can be escape to rawWindow\n private escapeProperties: PropertyKey[] = []\n // Properties newly added to microAppWindow\n private injectedKeys = new Set<PropertyKey>()\n // Properties escape to rawWindow, cleared when unmount\n private escapeKeys = new Set<PropertyKey>()\n // record injected values before the first execution of umdHookMount and rebuild before remount umd app\n private recordUmdInjectedValues?: Map<PropertyKey, unknown>\n // sandbox state\n private active = false\n proxyWindow: WindowProxy // Proxy\n microAppWindow = {} as MicroAppWindowType // Proxy target\n\n constructor (appName: string, url: string) {\n // get scopeProperties and escapeProperties from plugins\n this.getSpecialProperties(appName)\n // create proxyWindow with Proxy(microAppWindow)\n this.proxyWindow = this.createProxyWindow(appName)\n // inject global properties\n this.initMicroAppWindow(this.microAppWindow, appName, url)\n // Rewrite global event listener & timeout\n Object.assign(this, effect(this.microAppWindow))\n }\n\n start (baseRoute: string): void {\n if (!this.active) {\n this.active = true\n this.microAppWindow.__MICRO_APP_BASE_ROUTE__ = this.microAppWindow.__MICRO_APP_BASE_URL__ = baseRoute\n // BUG FIX: bable-polyfill@6.x\n globalEnv.rawWindow._babelPolyfill && (globalEnv.rawWindow._babelPolyfill = false)\n if (++SandBox.activeCount === 1) {\n effectDocumentEvent()\n patchElementPrototypeMethods()\n }\n }\n }\n\n stop (): void {\n if (this.active) {\n this.active = false\n this.releaseEffect()\n this.microAppWindow.microApp.clearDataListener()\n this.microAppWindow.microApp.clearGlobalDataListener()\n\n this.injectedKeys.forEach((key: PropertyKey) => {\n Reflect.deleteProperty(this.microAppWindow, key)\n })\n this.injectedKeys.clear()\n\n this.escapeKeys.forEach((key: PropertyKey) => {\n Reflect.deleteProperty(globalEnv.rawWindow, key)\n })\n this.escapeKeys.clear()\n\n if (--SandBox.activeCount === 0) {\n releaseEffectDocumentEvent()\n releasePatches()\n }\n }\n }\n\n // record umd snapshot before the first execution of umdHookMount\n recordUmdSnapshot (): void {\n this.microAppWindow.__MICRO_APP_UMD_MODE__ = true\n this.recordUmdEffect()\n recordDataCenterSnapshot(this.microAppWindow.microApp)\n\n this.recordUmdInjectedValues = new Map<PropertyKey, unknown>()\n this.injectedKeys.forEach((key: PropertyKey) => {\n this.recordUmdInjectedValues!.set(key, Reflect.get(this.microAppWindow, key))\n })\n }\n\n // rebuild umd snapshot before remount umd app\n rebuildUmdSnapshot (): void {\n this.recordUmdInjectedValues!.forEach((value: unknown, key: PropertyKey) => {\n Reflect.set(this.proxyWindow, key, value)\n })\n this.rebuildUmdEffect()\n rebuildDataCenterSnapshot(this.microAppWindow.microApp)\n }\n\n /**\n * get scopeProperties and escapeProperties from plugins\n * @param appName app name\n */\n private getSpecialProperties (appName: string): void {\n if (!isPlainObject(microApp.plugins)) return\n\n this.commonActionForSpecialProperties(microApp.plugins!.global)\n this.commonActionForSpecialProperties(microApp.plugins!.modules?.[appName])\n }\n\n // common action for global plugins and module plugins\n private commonActionForSpecialProperties (plugins: plugins['global']) {\n if (isArray(plugins)) {\n for (const plugin of plugins) {\n if (isPlainObject(plugin)) {\n if (isArray(plugin.scopeProperties)) {\n this.scopeProperties = this.scopeProperties.concat(plugin.scopeProperties!)\n }\n if (isArray(plugin.escapeProperties)) {\n this.escapeProperties = this.escapeProperties.concat(plugin.escapeProperties!)\n }\n }\n }\n }\n }\n\n // create proxyWindow with Proxy(microAppWindow)\n private createProxyWindow (appName: string) {\n const rawWindow = globalEnv.rawWindow\n const descriptorTargetMap = new Map<PropertyKey, 'target' | 'rawWindow'>()\n // window.xxx will trigger proxy\n return new Proxy(this.microAppWindow, {\n get: (target: microAppWindowType, key: PropertyKey): unknown => {\n throttleDeferForSetAppName(appName)\n\n if (\n Reflect.has(target, key) ||\n (isString(key) && /^__MICRO_APP_/.test(key)) ||\n this.scopeProperties.includes(key)\n ) return Reflect.get(target, key)\n\n const rawValue = Reflect.get(rawWindow, key)\n\n return isFunction(rawValue) ? bindFunctionToRawWindow(rawWindow, rawValue) : rawValue\n },\n set: (target: microAppWindowType, key: PropertyKey, value: unknown): boolean => {\n if (this.active) {\n if (escapeSetterKeyList.includes(key)) {\n Reflect.set(rawWindow, key, value)\n } else if (\n // target.hasOwnProperty has been rewritten\n !rawHasOwnProperty.call(target, key) &&\n rawHasOwnProperty.call(rawWindow, key) &&\n !this.scopeProperties.includes(key)\n ) {\n const descriptor = Object.getOwnPropertyDescriptor(rawWindow, key)\n const { configurable, enumerable, writable, set } = descriptor!\n // set value because it can be set\n rawDefineProperty(target, key, {\n value,\n configurable,\n enumerable,\n writable: writable ?? !!set,\n })\n\n this.injectedKeys.add(key)\n } else {\n Reflect.set(target, key, value)\n this.injectedKeys.add(key)\n }\n\n if (\n (\n this.escapeProperties.includes(key) ||\n (staticEscapeProperties.includes(key) && !Reflect.has(rawWindow, key))\n ) &&\n !this.scopeProperties.includes(key)\n ) {\n Reflect.set(rawWindow, key, value)\n this.escapeKeys.add(key)\n }\n }\n\n return true\n },\n has: (target: microAppWindowType, key: PropertyKey): boolean => {\n if (this.scopeProperties.includes(key)) return key in target\n return key in target || key in rawWindow\n },\n // Object.getOwnPropertyDescriptor(window, key)\n getOwnPropertyDescriptor: (target: microAppWindowType, key: PropertyKey): PropertyDescriptor|undefined => {\n if (rawHasOwnProperty.call(target, key)) {\n descriptorTargetMap.set(key, 'target')\n return Object.getOwnPropertyDescriptor(target, key)\n }\n\n if (rawHasOwnProperty.call(rawWindow, key)) {\n descriptorTargetMap.set(key, 'rawWindow')\n const descriptor = Object.getOwnPropertyDescriptor(rawWindow, key)\n if (descriptor && !descriptor.configurable) {\n descriptor.configurable = true\n }\n return descriptor\n }\n\n return undefined\n },\n // Object.defineProperty(window, key, Descriptor)\n defineProperty: (target: microAppWindowType, key: PropertyKey, value: PropertyDescriptor): boolean => {\n const from = descriptorTargetMap.get(key)\n if (from === 'rawWindow') {\n return Reflect.defineProperty(rawWindow, key, value)\n }\n return Reflect.defineProperty(target, key, value)\n },\n // Object.getOwnPropertyNames(window)\n ownKeys: (target: microAppWindowType): Array<string | symbol> => {\n return unique(Reflect.ownKeys(rawWindow).concat(Reflect.ownKeys(target)))\n },\n deleteProperty: (target: microAppWindowType, key: PropertyKey): boolean => {\n if (rawHasOwnProperty.call(target, key)) {\n this.injectedKeys.has(key) && this.injectedKeys.delete(key)\n this.escapeKeys.has(key) && Reflect.deleteProperty(rawWindow, key)\n return Reflect.deleteProperty(target, key)\n }\n return true\n },\n })\n }\n\n /**\n * inject global properties to microAppWindow\n * @param microAppWindow micro window\n * @param appName app name\n * @param url app url\n */\n private initMicroAppWindow (microAppWindow: microAppWindowType, appName: string, url: string): void {\n microAppWindow.__MICRO_APP_ENVIRONMENT__ = true\n microAppWindow.__MICRO_APP_NAME__ = appName\n microAppWindow.__MICRO_APP_PUBLIC_PATH__ = getEffectivePath(url)\n microAppWindow.__MICRO_APP_WINDOW__ = microAppWindow\n microAppWindow.microApp = Object.assign(new EventCenterForMicroApp(appName), {\n removeDomScope,\n pureCreateElement,\n })\n microAppWindow.rawWindow = globalEnv.rawWindow\n microAppWindow.rawDocument = globalEnv.rawDocument\n microAppWindow.hasOwnProperty = (key: PropertyKey) => rawHasOwnProperty.call(microAppWindow, key) || rawHasOwnProperty.call(globalEnv.rawWindow, key)\n this.setMappingPropertiesWithRawDescriptor(microAppWindow)\n this.setHijackProperties(microAppWindow, appName)\n }\n\n // properties associated with the native window\n private setMappingPropertiesWithRawDescriptor (microAppWindow: microAppWindowType): void {\n let topValue: Window, parentValue: Window\n const rawWindow = globalEnv.rawWindow\n if (rawWindow === rawWindow.parent) { // not in iframe\n topValue = parentValue = this.proxyWindow\n } else { // in iframe\n topValue = rawWindow.top\n parentValue = rawWindow.parent\n }\n\n rawDefineProperty(\n microAppWindow,\n 'top',\n this.createDescriptorForMicroAppWindow('top', topValue)\n )\n\n rawDefineProperty(\n microAppWindow,\n 'parent',\n this.createDescriptorForMicroAppWindow('parent', parentValue)\n )\n\n globalPropertyList.forEach((key: PropertyKey) => {\n rawDefineProperty(\n microAppWindow,\n key,\n this.createDescriptorForMicroAppWindow(key, this.proxyWindow)\n )\n })\n }\n\n private createDescriptorForMicroAppWindow (key: PropertyKey, value: unknown): PropertyDescriptor {\n const { configurable = true, enumerable = true, writable, set } = Object.getOwnPropertyDescriptor(globalEnv.rawWindow, key) || { writable: true }\n const descriptor: PropertyDescriptor = {\n value,\n configurable,\n enumerable,\n writable: writable ?? !!set\n }\n\n return descriptor\n }\n\n // set hijack Properties to microAppWindow\n private setHijackProperties (microAppWindow: microAppWindowType, appName: string): void {\n let modifiedEval: unknown, modifiedImage: unknown\n rawDefineProperties(microAppWindow, {\n document: {\n get () {\n throttleDeferForSetAppName(appName)\n return globalEnv.rawDocument\n },\n configurable: false,\n enumerable: true,\n },\n eval: {\n get () {\n throttleDeferForSetAppName(appName)\n return modifiedEval || eval\n },\n set: (value) => {\n modifiedEval = value\n },\n configurable: true,\n enumerable: false,\n },\n Image: {\n get () {\n throttleDeferForSetAppName(appName)\n return modifiedImage || globalEnv.ImageProxy\n },\n set: (value) => {\n modifiedImage = value\n },\n configurable: true,\n enumerable: false,\n },\n })\n }\n}\n","import microApp from '../micro_app'\nimport { logError, isFunction, removeDomScope, getRootContainer } from '../libs/utils'\n\nfunction formatEventInfo (event: CustomEvent, element: HTMLElement): void {\n Object.defineProperties(event, {\n currentTarget: {\n get () {\n return element\n }\n },\n target: {\n get () {\n return element\n }\n },\n })\n}\n\n/**\n * dispatch lifeCycles event to base app\n * created, beforemount, mounted, unmount, error\n * @param element container\n * @param appName app.name\n * @param lifecycleName lifeCycle name\n * @param error param from error hook\n */\nexport default function dispatchLifecyclesEvent (\n element: HTMLElement | ShadowRoot,\n appName: string,\n lifecycleName: string,\n error?: Error,\n): void {\n if (!element) {\n return logError(`element does not exist in lifecycle ${lifecycleName}`, appName)\n }\n\n element = getRootContainer(element)\n\n // clear dom scope before dispatch lifeCycles event to base app, especially mounted & unmount\n removeDomScope()\n\n const detail = Object.assign({\n name: appName,\n container: element,\n }, error && {\n error\n })\n\n const event = new CustomEvent(lifecycleName, {\n detail,\n })\n\n formatEventInfo(event, element)\n // global hooks\n // @ts-ignore\n if (isFunction(microApp.lifeCycles?.[lifecycleName])) {\n // @ts-ignore\n microApp.lifeCycles[lifecycleName](event)\n }\n\n element.dispatchEvent(event)\n}\n\n/**\n * Dispatch custom event to micro app\n * @param eventName event name\n * @param appName app name\n * @param detail event detail\n */\nexport function dispatchCustomEventToMicroApp (\n eventName: string,\n appName: string,\n detail: Record<string, any> = {},\n): void {\n const event = new CustomEvent(`${eventName}-${appName}`, {\n detail,\n })\n window.dispatchEvent(event)\n}\n","import type {\n AppInterface,\n sourceType,\n SandBoxInterface,\n sourceLinkInfo,\n sourceScriptInfo,\n Func,\n} from '@micro-app/types'\nimport extractHtml from './source'\nimport { execScripts } from './source/scripts'\nimport { appStates, lifeCycles, keepAliveStates } from './constants'\nimport SandBox from './sandbox'\nimport {\n isFunction,\n cloneContainer,\n isBoolean,\n isPromise,\n logError,\n getRootContainer,\n} from './libs/utils'\nimport dispatchLifecyclesEvent, { dispatchCustomEventToMicroApp } from './interact/lifecycles_event'\nimport globalEnv from './libs/global_env'\nimport { releasePatchSetAttribute } from './source/patch'\nimport { getActiveApps } from './micro_app'\n\n// micro app instances\nexport const appInstanceMap = new Map<string, AppInterface>()\n\n// params of CreateApp\nexport interface CreateAppParam {\n name: string\n url: string\n ssrUrl?: string\n scopecss: boolean\n useSandbox: boolean\n inline?: boolean\n baseroute?: string\n container?: HTMLElement | ShadowRoot\n}\n\nexport default class CreateApp implements AppInterface {\n private state: string = appStates.NOT_LOADED\n private keepAliveState: string | null = null\n private keepAliveContainer: HTMLElement | null = null\n private loadSourceLevel: -1|0|1|2 = 0\n private umdHookMount: Func | null = null\n private umdHookUnmount: Func | null = null\n private libraryName: string | null = null\n umdMode = false\n isPrefetch = false\n prefetchResolve: (() => void) | null = null\n name: string\n url: string\n ssrUrl: string\n container: HTMLElement | ShadowRoot | null = null\n inline: boolean\n scopecss: boolean\n useSandbox: boolean\n baseroute = ''\n source: sourceType\n sandBox: SandBoxInterface | null = null\n\n constructor ({\n name,\n url,\n ssrUrl,\n container,\n inline,\n scopecss,\n useSandbox,\n baseroute,\n }: CreateAppParam) {\n this.container = container ?? null\n this.inline = inline ?? false\n this.baseroute = baseroute ?? ''\n this.ssrUrl = ssrUrl ?? ''\n // optional during initπ\n this.name = name\n this.url = url\n this.useSandbox = useSandbox\n this.scopecss = this.useSandbox && scopecss\n this.source = {\n links: new Map<string, sourceLinkInfo>(),\n scripts: new Map<string, sourceScriptInfo>(),\n }\n this.loadSourceCode()\n this.useSandbox && (this.sandBox = new SandBox(name, url))\n }\n\n // Load resources\n loadSourceCode (): void {\n this.state = appStates.LOADING_SOURCE_CODE\n extractHtml(this)\n }\n\n /**\n * When resource is loaded, mount app if it is not prefetch or unmount\n */\n onLoad (html: HTMLElement): void {\n if (++this.loadSourceLevel === 2) {\n this.source.html = html\n\n if (this.isPrefetch) {\n this.prefetchResolve?.()\n this.prefetchResolve = null\n } else if (appStates.UNMOUNT !== this.state) {\n this.state = appStates.LOAD_SOURCE_FINISHED\n this.mount()\n }\n }\n }\n\n /**\n * Error loading HTML\n * @param e Error\n */\n onLoadError (e: Error): void {\n this.loadSourceLevel = -1\n if (this.prefetchResolve) {\n this.prefetchResolve()\n this.prefetchResolve = null\n }\n\n if (appStates.UNMOUNT !== this.state) {\n this.onerror(e)\n this.state = appStates.LOAD_SOURCE_ERROR\n }\n }\n\n /**\n * mount app\n * @param container app container\n * @param inline js runs in inline mode\n * @param baseroute route prefix, default is ''\n */\n mount (\n container?: HTMLElement | ShadowRoot,\n inline?: boolean,\n baseroute?: string,\n ): void {\n if (isBoolean(inline) && inline !== this.inline) {\n this.inline = inline\n }\n\n this.container = this.container ?? container!\n this.baseroute = baseroute ?? this.baseroute\n\n if (this.loadSourceLevel !== 2) {\n this.state = appStates.LOADING_SOURCE_CODE\n return\n }\n\n dispatchLifecyclesEvent(\n this.container,\n this.name,\n lifeCycles.BEFOREMOUNT,\n )\n\n this.state = appStates.MOUNTING\n\n cloneContainer(this.source.html as Element, this.container as Element, !this.umdMode)\n\n this.sandBox?.start(this.baseroute)\n\n let umdHookMountResult: any // result of mount function\n\n if (!this.umdMode) {\n let hasDispatchMountedEvent = false\n // if all js are executed, param isFinished will be true\n execScripts(this.source.scripts, this, (isFinished: boolean) => {\n if (!this.umdMode) {\n const { mount, unmount } = this.getUmdLibraryHooks()\n // if mount & unmount is function, the sub app is umd mode\n if (isFunction(mount) && isFunction(unmount)) {\n this.umdHookMount = mount as Func\n this.umdHookUnmount = unmount as Func\n this.umdMode = true\n this.sandBox?.recordUmdSnapshot()\n try {\n umdHookMountResult = this.umdHookMount()\n } catch (e) {\n logError('an error occurred in the mount function \\n', this.name, e)\n }\n }\n }\n\n if (!hasDispatchMountedEvent && (isFinished === true || this.umdMode)) {\n hasDispatchMountedEvent = true\n this.handleMounted(umdHookMountResult)\n }\n })\n } else {\n this.sandBox?.rebuildUmdSnapshot()\n try {\n umdHookMountResult = this.umdHookMount!()\n } catch (e) {\n logError('an error occurred in the mount function \\n', this.name, e)\n }\n this.handleMounted(umdHookMountResult)\n }\n }\n\n /**\n * handle for promise umdHookMount\n * @param umdHookMountResult result of umdHookMount\n */\n private handleMounted (umdHookMountResult: any): void {\n if (isPromise(umdHookMountResult)) {\n umdHookMountResult\n .then(() => this.dispatchMountedEvent())\n .catch((e: Error) => this.onerror(e))\n } else {\n this.dispatchMountedEvent()\n }\n }\n\n /**\n * dispatch mounted event when app run finished\n */\n private dispatchMountedEvent (): void {\n if (appStates.UNMOUNT !== this.state) {\n this.state = appStates.MOUNTED\n dispatchLifecyclesEvent(\n this.container!,\n this.name,\n lifeCycles.MOUNTED,\n )\n }\n }\n\n /**\n * unmount app\n * @param destroy completely destroy, delete cache resources\n * @param unmountcb callback of unmount\n */\n unmount (destroy: boolean, unmountcb?: CallableFunction): void {\n if (this.state === appStates.LOAD_SOURCE_ERROR) {\n destroy = true\n }\n\n this.state = appStates.UNMOUNT\n this.keepAliveState = null\n this.keepAliveContainer = null\n\n // result of unmount function\n let umdHookUnmountResult: any\n /**\n * send an unmount event to the micro app or call umd unmount hook\n * before the sandbox is cleared\n */\n if (this.umdHookUnmount) {\n try {\n umdHookUnmountResult = this.umdHookUnmount()\n } catch (e) {\n logError('an error occurred in the unmount function \\n', this.name, e)\n }\n }\n\n // dispatch unmount event to micro app\n dispatchCustomEventToMicroApp('unmount', this.name)\n\n this.handleUnmounted(destroy, umdHookUnmountResult, unmountcb)\n }\n\n /**\n * handle for promise umdHookUnmount\n * @param destroy completely destroy, delete cache resources\n * @param umdHookUnmountResult result of umdHookUnmount\n * @param unmountcb callback of unmount\n */\n private handleUnmounted (\n destroy: boolean,\n umdHookUnmountResult: any,\n unmountcb?: CallableFunction,\n ): void {\n if (isPromise(umdHookUnmountResult)) {\n umdHookUnmountResult\n .then(() => this.actionsForUnmount(destroy, unmountcb))\n .catch(() => this.actionsForUnmount(destroy, unmountcb))\n } else {\n this.actionsForUnmount(destroy, unmountcb)\n }\n }\n\n /**\n * actions for unmount app\n * @param destroy completely destroy, delete cache resources\n * @param unmountcb callback of unmount\n */\n private actionsForUnmount (destroy: boolean, unmountcb?: CallableFunction): void {\n if (destroy) {\n this.actionsForCompletelyDestroy()\n } else if (this.umdMode && (this.container as Element).childElementCount) {\n cloneContainer(this.container as Element, this.source.html as Element, false)\n }\n\n // this.container maybe contains micro-app element, stop sandbox should exec after cloneContainer\n this.sandBox?.stop()\n if (!getActiveApps().length) {\n releasePatchSetAttribute()\n }\n\n // dispatch unmount event to base app\n dispatchLifecyclesEvent(\n this.container!,\n this.name,\n lifeCycles.UNMOUNT,\n )\n\n this.container!.innerHTML = ''\n this.container = null\n\n unmountcb && unmountcb()\n }\n\n // actions for completely destroy\n actionsForCompletelyDestroy (): void {\n if (!this.useSandbox && this.umdMode) {\n delete window[this.libraryName as any]\n }\n appInstanceMap.delete(this.name)\n }\n\n // hidden app when disconnectedCallback called with keep-alive\n hiddenKeepAliveApp (): void {\n const oldContainer = this.container\n\n cloneContainer(\n this.container as Element,\n this.keepAliveContainer ? this.keepAliveContainer : (this.keepAliveContainer = document.createElement('div')),\n false,\n )\n\n this.container = this.keepAliveContainer\n\n this.keepAliveState = keepAliveStates.KEEP_ALIVE_HIDDEN\n\n // event should dispatch before clone node\n // dispatch afterhidden event to micro-app\n dispatchCustomEventToMicroApp('appstate-change', this.name, {\n appState: 'afterhidden',\n })\n\n // dispatch afterhidden event to base app\n dispatchLifecyclesEvent(\n oldContainer!,\n this.name,\n lifeCycles.AFTERHIDDEN,\n )\n }\n\n // show app when connectedCallback called with keep-alive\n showKeepAliveApp (container: HTMLElement | ShadowRoot): void {\n // dispatch beforeshow event to micro-app\n dispatchCustomEventToMicroApp('appstate-change', this.name, {\n appState: 'beforeshow',\n })\n\n // dispatch beforeshow event to base app\n dispatchLifecyclesEvent(\n container,\n this.name,\n lifeCycles.BEFORESHOW,\n )\n\n cloneContainer(\n this.container as Element,\n container as Element,\n false,\n )\n\n this.container = container\n\n this.keepAliveState = keepAliveStates.KEEP_ALIVE_SHOW\n\n // dispatch aftershow event to micro-app\n dispatchCustomEventToMicroApp('appstate-change', this.name, {\n appState: 'aftershow',\n })\n\n // dispatch aftershow event to base app\n dispatchLifecyclesEvent(\n this.container,\n this.name,\n lifeCycles.AFTERSHOW,\n )\n }\n\n /**\n * app rendering error\n * @param e Error\n */\n onerror (e: Error): void {\n dispatchLifecyclesEvent(\n this.container!,\n this.name,\n lifeCycles.ERROR,\n e,\n )\n }\n\n // get app state\n getAppState (): string {\n return this.state\n }\n\n // get keep-alive state\n getKeepAliveState (): string | null {\n return this.keepAliveState\n }\n\n // get umd library, if it not exist, return empty object\n private getUmdLibraryHooks (): Record<string, unknown> {\n // after execScripts, the app maybe unmounted\n if (appStates.UNMOUNT !== this.state) {\n const global = (this.sandBox?.proxyWindow ?? globalEnv.rawWindow) as any\n this.libraryName = getRootContainer(this.container!).getAttribute('library') || `micro-app-${this.name}`\n // do not use isObject\n return typeof global[this.libraryName] === 'object' ? global[this.libraryName] : {}\n }\n\n return {}\n }\n}\n","import type { AttrType, MicroAppElementType, AppInterface } from '@micro-app/types'\nimport {\n defer,\n formatAppName,\n formatAppURL,\n version,\n logError,\n logWarn,\n isString,\n isFunction,\n CompletionPath,\n} from './libs/utils'\nimport {\n ObservedAttrName,\n appStates,\n lifeCycles,\n keepAliveStates,\n} from './constants'\nimport CreateApp, { appInstanceMap } from './create_app'\nimport { patchSetAttribute } from './source/patch'\nimport microApp from './micro_app'\nimport dispatchLifecyclesEvent from './interact/lifecycles_event'\nimport globalEnv from './libs/global_env'\n\n/**\n * define element\n * @param tagName element name\n */\nexport function defineElement (tagName: string): void {\n class MicroAppElement extends HTMLElement implements MicroAppElementType {\n static get observedAttributes (): string[] {\n return ['name', 'url']\n }\n\n constructor () {\n super()\n patchSetAttribute()\n }\n\n private isWaiting = false\n private cacheData: Record<PropertyKey, unknown> | null = null\n private hasConnected = false\n appName = '' // app name\n appUrl = '' // app url\n ssrUrl = '' // html path in ssr mode\n version = version\n\n // π Configuration\n // name: app name\n // url: html address\n // shadowDom: use shadowDOM, default is false\n // destroy: whether delete cache resources when unmount, default is false\n // inline: whether js runs in inline script mode, default is false\n // disableScopecss: whether disable css scoped, default is false\n // disableSandbox: whether disable sandbox, default is false\n // baseRoute: route prefix, default is ''\n // keep-alive: open keep-alive mode\n\n connectedCallback (): void {\n this.hasConnected = true\n\n defer(() => dispatchLifecyclesEvent(\n this,\n this.appName,\n lifeCycles.CREATED,\n ))\n\n this.initialMount()\n }\n\n disconnectedCallback (): void {\n this.hasConnected = false\n // keep-alive\n if (this.getKeepAliveModeResult()) {\n this.handleHiddenKeepAliveApp()\n } else {\n this.handleUnmount(this.getDestroyCompatibleResult())\n }\n }\n\n attributeChangedCallback (attr: ObservedAttrName, _oldVal: string, newVal: string): void {\n if (\n this.legalAttribute(attr, newVal) &&\n this[attr === ObservedAttrName.NAME ? 'appName' : 'appUrl'] !== newVal\n ) {\n if (attr === ObservedAttrName.URL && !this.appUrl) {\n newVal = formatAppURL(newVal, this.appName)\n if (!newVal) {\n return logError(`Invalid attribute url ${newVal}`, this.appName)\n }\n this.appUrl = newVal\n this.handleInitialNameAndUrl()\n } else if (attr === ObservedAttrName.NAME && !this.appName) {\n const formatNewName = formatAppName(newVal)\n\n if (!formatNewName) {\n return logError(`Invalid attribute name ${newVal}`, this.appName)\n }\n\n if (this.cacheData) {\n microApp.setData(formatNewName, this.cacheData)\n this.cacheData = null\n }\n\n this.appName = formatNewName\n if (formatNewName !== newVal) {\n this.setAttribute('name', this.appName)\n }\n this.handleInitialNameAndUrl()\n } else if (!this.isWaiting) {\n this.isWaiting = true\n defer(this.handleAttributeUpdate)\n }\n }\n }\n\n // handle for connectedCallback run before attributeChangedCallback\n private handleInitialNameAndUrl (): void {\n this.hasConnected && this.initialMount()\n }\n\n /**\n * first mount of this app\n */\n private initialMount (): void {\n if (!this.appName || !this.appUrl) return\n\n if (this.getDisposeResult('shadowDOM') && !this.shadowRoot && isFunction(this.attachShadow)) {\n this.attachShadow({ mode: 'open' })\n }\n\n if (this.getDisposeResult('ssr')) {\n this.ssrUrl = CompletionPath(globalEnv.rawWindow.location.pathname, this.appUrl)\n } else if (this.ssrUrl) {\n this.ssrUrl = ''\n }\n\n if (appInstanceMap.has(this.appName)) {\n const app = appInstanceMap.get(this.appName)!\n const existAppUrl = app.ssrUrl || app.url\n const activeAppUrl = this.ssrUrl || this.appUrl\n // keep-alive don't care about ssrUrl\n // Even if the keep-alive app is pushed into the background, it is still active and cannot be replaced. Otherwise, it is difficult for developers to troubleshoot in case of conflict and will leave developers at a loss\n if (\n app.getKeepAliveState() === keepAliveStates.KEEP_ALIVE_HIDDEN &&\n app.url === this.appUrl\n ) {\n this.handleShowKeepAliveApp(app)\n } else if (\n existAppUrl === activeAppUrl && (\n app.isPrefetch ||\n app.getAppState() === appStates.UNMOUNT\n )\n ) {\n this.handleAppMount(app)\n } else if (app.isPrefetch || app.getAppState() === appStates.UNMOUNT) {\n /**\n * url is different & old app is unmounted or prefetch, create new app to replace old one\n */\n logWarn(`the ${app.isPrefetch ? 'prefetch' : 'unmounted'} app with url: ${existAppUrl} is replaced by a new app`, this.appName)\n this.handleCreateApp()\n } else {\n logError(`app name conflict, an app named ${this.appName} is running`, this.appName)\n }\n } else {\n this.handleCreateApp()\n }\n }\n\n /**\n * handle for change of name an url after element init\n */\n private handleAttributeUpdate = (): void => {\n this.isWaiting = false\n const formatAttrName = formatAppName(this.getAttribute('name'))\n const formatAttrUrl = formatAppURL(this.getAttribute('url'), this.appName)\n if (this.legalAttribute('name', formatAttrName) && this.legalAttribute('url', formatAttrUrl)) {\n const existApp = appInstanceMap.get(formatAttrName)\n if (formatAttrName !== this.appName && existApp) {\n // handling of cached and non-prefetch apps\n if (\n appStates.UNMOUNT !== existApp.getAppState() &&\n keepAliveStates.KEEP_ALIVE_HIDDEN !== existApp.getKeepAliveState() &&\n !existApp.isPrefetch\n ) {\n this.setAttribute('name', this.appName)\n return logError(`app name conflict, an app named ${formatAttrName} is running`, this.appName)\n }\n }\n\n if (formatAttrName !== this.appName || formatAttrUrl !== this.appUrl) {\n if (formatAttrName === this.appName) {\n this.handleUnmount(true, () => {\n this.actionsForAttributeChange(formatAttrName, formatAttrUrl, existApp)\n })\n } else if (this.getKeepAliveModeResult()) {\n this.handleHiddenKeepAliveApp()\n this.actionsForAttributeChange(formatAttrName, formatAttrUrl, existApp)\n } else {\n this.handleUnmount(\n this.getDestroyCompatibleResult(),\n () => {\n this.actionsForAttributeChange(formatAttrName, formatAttrUrl, existApp)\n }\n )\n }\n }\n } else if (formatAttrName !== this.appName) {\n this.setAttribute('name', this.appName)\n }\n }\n\n // remount app or create app if attribute url or name change\n private actionsForAttributeChange (\n formatAttrName: string,\n formatAttrUrl: string,\n existApp: AppInterface | undefined,\n ): void {\n /**\n * change ssrUrl in ssr mode\n * do not add judgment of formatAttrUrl === this.appUrl\n */\n if (this.getDisposeResult('ssr')) {\n this.ssrUrl = CompletionPath(globalEnv.rawWindow.location.pathname, formatAttrUrl)\n } else if (this.ssrUrl) {\n this.ssrUrl = ''\n }\n\n this.appName = formatAttrName\n this.appUrl = formatAttrUrl\n ;(this.shadowRoot ?? this).innerHTML = ''\n if (formatAttrName !== this.getAttribute('name')) {\n this.setAttribute('name', this.appName)\n }\n\n /**\n * when existApp not null: this.appName === existApp.name\n * scene1: if formatAttrName and this.appName are equal: exitApp is the current app, the url must be different, existApp has been unmounted\n * scene2: if formatAttrName and this.appName are different: existApp must be prefetch or unmounted, if url is equal, then just mount, if url is different, then create new app to replace existApp\n * scene3: url is different but ssrUrl is equal\n * scene4: url is equal but ssrUrl is different, if url is equal, name must different\n * scene5: if existApp is KEEP_ALIVE_HIDDEN, name must different\n */\n if (existApp) {\n if (existApp.getKeepAliveState() === keepAliveStates.KEEP_ALIVE_HIDDEN) {\n if (existApp.url === this.appUrl) {\n this.handleShowKeepAliveApp(existApp)\n } else {\n // the hidden keep-alive app is still active\n logError(`app name conflict, an app named ${this.appName} is running`, this.appName)\n }\n } else if (existApp.url === this.appUrl && existApp.ssrUrl === this.ssrUrl) {\n // mount app\n this.handleAppMount(existApp)\n } else {\n this.handleCreateApp()\n }\n } else {\n this.handleCreateApp()\n }\n }\n\n /**\n * judge the attribute is legal\n * @param name attribute name\n * @param val attribute value\n */\n private legalAttribute (name: string, val: AttrType): boolean {\n if (!isString(val) || !val) {\n logError(`unexpected attribute ${name}, please check again`, this.appName)\n\n return false\n }\n\n return true\n }\n\n /**\n * mount app\n * some serious note before mount:\n * 1. is prefetch ?\n * 2. is remount in another container ?\n * 3. is remount with change properties of the container ?\n */\n private handleAppMount (app: AppInterface): void {\n app.isPrefetch = false\n defer(() => app.mount(\n this.shadowRoot ?? this,\n this.getDisposeResult('inline'),\n this.getBaseRouteCompatible(),\n ))\n }\n\n // create app instance\n private handleCreateApp (): void {\n /**\n * actions for destory old app\n * fix of unmounted umd app with disableSandbox\n */\n if (appInstanceMap.has(this.appName)) {\n appInstanceMap.get(this.appName)!.actionsForCompletelyDestroy()\n }\n\n const instance: AppInterface = new CreateApp({\n name: this.appName,\n url: this.appUrl,\n ssrUrl: this.ssrUrl,\n container: this.shadowRoot ?? this,\n inline: this.getDisposeResult('inline'),\n scopecss: !(this.getDisposeResult('disableScopecss') || this.getDisposeResult('shadowDOM')),\n useSandbox: !this.getDisposeResult('disableSandbox'),\n baseroute: this.getBaseRouteCompatible(),\n })\n\n appInstanceMap.set(this.appName, instance)\n }\n\n /**\n * unmount app\n * @param destroy delete cache resources when unmount\n */\n private handleUnmount (destroy: boolean, unmountcb?: CallableFunction): void {\n const app = appInstanceMap.get(this.appName)\n if (\n app &&\n app.getAppState() !== appStates.UNMOUNT\n ) app.unmount(destroy, unmountcb)\n }\n\n // hidden app when disconnectedCallback called with keep-alive\n private handleHiddenKeepAliveApp () {\n const app = appInstanceMap.get(this.appName)\n if (\n app &&\n app.getAppState() !== appStates.UNMOUNT &&\n app.getKeepAliveState() !== keepAliveStates.KEEP_ALIVE_HIDDEN\n ) app.hiddenKeepAliveApp()\n }\n\n // show app when connectedCallback called with keep-alive\n private handleShowKeepAliveApp (app: AppInterface) {\n // must be async\n defer(() => app.showKeepAliveApp(this.shadowRoot ?? this))\n }\n\n /**\n * Get configuration\n * Global setting is lowest priority\n * @param name Configuration item name\n */\n private getDisposeResult (name: string): boolean {\n // @ts-ignore\n return (this.compatibleSpecialProperties(name) || microApp[name]) && this.compatibleDisableSpecialProperties(name)\n }\n\n // compatible of disableScopecss & disableSandbox\n private compatibleSpecialProperties (name: string): boolean {\n if (name === 'disableScopecss') {\n return this.hasAttribute('disableScopecss') || this.hasAttribute('disable-scopecss')\n } else if (name === 'disableSandbox') {\n return this.hasAttribute('disableSandbox') || this.hasAttribute('disable-sandbox')\n }\n return this.hasAttribute(name)\n }\n\n // compatible of disableScopecss & disableSandbox\n private compatibleDisableSpecialProperties (name: string): boolean {\n if (name === 'disableScopecss') {\n return this.getAttribute('disableScopecss') !== 'false' && this.getAttribute('disable-scopecss') !== 'false'\n } else if (name === 'disableSandbox') {\n return this.getAttribute('disableSandbox') !== 'false' && this.getAttribute('disable-sandbox') !== 'false'\n }\n return this.getAttribute(name) !== 'false'\n }\n\n /**\n * 2021-09-08\n * get baseRoute\n * getAttribute('baseurl') is compatible writing of versions below 0.3.1\n */\n private getBaseRouteCompatible (): string {\n return this.getAttribute('baseroute') ?? this.getAttribute('baseurl') ?? ''\n }\n\n // compatible of destroy\n private getDestroyCompatibleResult (): boolean {\n return this.getDisposeResult('destroy') || this.getDisposeResult('destory')\n }\n\n /**\n * destroy has priority over destroy keep-alive\n */\n private getKeepAliveModeResult (): boolean {\n return this.getDisposeResult('keep-alive') && !this.getDestroyCompatibleResult()\n }\n\n /**\n * Data from the base application\n */\n set data (value: Record<PropertyKey, unknown> | null) {\n if (this.appName) {\n microApp.setData(this.appName, value!)\n } else {\n this.cacheData = value\n }\n }\n\n /**\n * get data only used in jsx-custom-event once\n */\n get data (): Record<PropertyKey, unknown> | null {\n if (this.appName) {\n return microApp.getData(this.appName, true)\n } else if (this.cacheData) {\n return this.cacheData\n }\n return null\n }\n }\n\n window.customElements.define(tagName, MicroAppElement)\n}\n","import type { prefetchParamList, prefetchParam, globalAssetsType } from '@micro-app/types'\nimport CreateApp, { appInstanceMap } from './create_app'\nimport {\n requestIdleCallback,\n formatAppURL,\n formatAppName,\n promiseStream,\n logError,\n isBrowser,\n isArray,\n isPlainObject,\n isString,\n isFunction,\n} from './libs/utils'\nimport { fetchSource } from './source/fetch'\nimport { globalLinks } from './source/links'\nimport { globalScripts } from './source/scripts'\nimport microApp from './micro_app'\n\n/**\n * preFetch([\n * {\n * name: string,\n * url: string,\n * disableScopecss?: boolean,\n * disableSandbox?: boolean,\n * },\n * ...\n * ])\n * Note:\n * 1: preFetch is asynchronous and is performed only when the browser is idle\n * 2: disableScopecss, disableSandbox must be same with micro-app element, if conflict, the one who executes first shall prevail\n * @param apps micro apps\n */\nexport default function preFetch (apps: prefetchParamList): void {\n if (!isBrowser) {\n return logError('preFetch is only supported in browser environment')\n }\n requestIdleCallback(() => {\n isFunction(apps) && (apps = (apps as Function)())\n\n if (isArray(apps)) {\n apps.reduce((pre, next) => pre.then(() => preFetchInSerial(next)), Promise.resolve())\n }\n })\n}\n\n// sequential preload app\nfunction preFetchInSerial (prefetchApp: prefetchParam): Promise<void> {\n return new Promise((resolve) => {\n requestIdleCallback(() => {\n if (isPlainObject(prefetchApp) && navigator.onLine) {\n prefetchApp.name = formatAppName(prefetchApp.name)\n prefetchApp.url = formatAppURL(prefetchApp.url, prefetchApp.name)\n if (prefetchApp.name && prefetchApp.url && !appInstanceMap.has(prefetchApp.name)) {\n const app = new CreateApp({\n name: prefetchApp.name,\n url: prefetchApp.url,\n scopecss: !(prefetchApp.disableScopecss ?? microApp.disableScopecss),\n useSandbox: !(prefetchApp.disableSandbox ?? microApp.disableSandbox),\n })\n\n app.isPrefetch = true\n app.prefetchResolve = resolve\n appInstanceMap.set(prefetchApp.name, app)\n } else {\n resolve()\n }\n } else {\n resolve()\n }\n })\n })\n}\n\n/**\n * load global assets into cache\n * @param assets global assets of js, css\n */\nexport function getGlobalAssets (assets: globalAssetsType): void {\n if (isPlainObject(assets)) {\n requestIdleCallback(() => {\n fetchGlobalResources(assets.js, 'js', globalScripts)\n fetchGlobalResources(assets.css, 'css', globalLinks)\n })\n }\n}\n\nfunction fetchGlobalResources (resources:string[] | undefined, suffix:string, cache:Map<string, string>) {\n if (isArray(resources)) {\n const effectiveResource = resources!.filter((path) => isString(path) && path.includes(`.${suffix}`) && !cache.has(path))\n\n const fetchResourcePromise = effectiveResource.map((path) => fetchSource(path))\n\n // fetch resource with stream\n promiseStream<string>(fetchResourcePromise, (res: {data: string, index: number}) => {\n const path = effectiveResource[res.index]\n if (!cache.has(path)) {\n cache.set(path, res.data)\n }\n }, (err: {error: Error, index: number}) => {\n logError(err)\n })\n }\n}\n","import type { OptionsType, MicroAppConfigType, lifeCyclesType, plugins, fetchType, AppInterface } from '@micro-app/types'\nimport { defineElement } from './micro_app_element'\nimport preFetch, { getGlobalAssets } from './prefetch'\nimport { logError, logWarn, isFunction, isBrowser, isPlainObject, formatAppName, getRootContainer } from './libs/utils'\nimport { EventCenterForBaseApp } from './interact'\nimport { initGlobalEnv } from './libs/global_env'\nimport { appInstanceMap } from './create_app'\nimport { appStates, keepAliveStates } from './constants'\n\n/**\n * if app not prefetch & not unmount, then app is active\n * @param excludeHiddenApp exclude hidden keep-alive app, default is false\n * @returns active apps\n */\nexport function getActiveApps (excludeHiddenApp?: boolean): string[] {\n const activeApps: string[] = []\n appInstanceMap.forEach((app: AppInterface, appName: string) => {\n if (\n appStates.UNMOUNT !== app.getAppState() &&\n !app.isPrefetch &&\n (\n !excludeHiddenApp ||\n keepAliveStates.KEEP_ALIVE_HIDDEN !== app.getKeepAliveState()\n )\n ) {\n activeApps.push(appName)\n }\n })\n\n return activeApps\n}\n\n// get all registered apps\nexport function getAllApps (): string[] {\n return Array.from(appInstanceMap.keys())\n}\n\nexport interface unmountAppParams {\n destroy?: boolean // destroy app, default is false\n clearAliveState?: boolean // clear keep-alive app state, default is false\n}\n\n/**\n * unmount app by appName\n * @param appName\n * @param options unmountAppParams\n * @returns Promise<void>\n */\nexport function unmountApp (appName: string, options?: unmountAppParams): Promise<void> {\n const app = appInstanceMap.get(formatAppName(appName))\n return new Promise((resolve) => { // eslint-disable-line\n if (app) {\n if (app.getAppState() === appStates.UNMOUNT || app.isPrefetch) {\n if (options?.destroy) {\n app.actionsForCompletelyDestroy()\n }\n resolve()\n } else if (app.getKeepAliveState() === keepAliveStates.KEEP_ALIVE_HIDDEN) {\n if (options?.destroy) {\n app.unmount(true, resolve)\n } else if (options?.clearAliveState) {\n app.unmount(false, resolve)\n } else {\n resolve()\n }\n } else {\n const container = getRootContainer(app.container!)\n const unmountHandler = () => {\n container.removeEventListener('unmount', unmountHandler)\n container.removeEventListener('afterhidden', afterhiddenHandler)\n resolve()\n }\n\n const afterhiddenHandler = () => {\n container.removeEventListener('unmount', unmountHandler)\n container.removeEventListener('afterhidden', afterhiddenHandler)\n resolve()\n }\n\n container.addEventListener('unmount', unmountHandler)\n container.addEventListener('afterhidden', afterhiddenHandler)\n\n if (options?.destroy) {\n let destroyAttrValue, destoryAttrValue\n container.hasAttribute('destroy') && (destroyAttrValue = container.getAttribute('destroy'))\n container.hasAttribute('destory') && (destoryAttrValue = container.getAttribute('destory'))\n\n container.setAttribute('destroy', 'true')\n container.parentNode!.removeChild(container)\n container.removeAttribute('destroy')\n\n typeof destroyAttrValue === 'string' && container.setAttribute('destroy', destroyAttrValue)\n typeof destoryAttrValue === 'string' && container.setAttribute('destory', destoryAttrValue)\n } else if (options?.clearAliveState && container.hasAttribute('keep-alive')) {\n const keepAliveAttrValue = container.getAttribute('keep-alive')!\n\n container.removeAttribute('keep-alive')\n container.parentNode!.removeChild(container)\n\n container.setAttribute('keep-alive', keepAliveAttrValue)\n } else {\n container.parentNode!.removeChild(container)\n }\n }\n } else {\n logWarn(`app ${appName} does not exist`)\n resolve()\n }\n })\n}\n\n// unmount all apps in turn\nexport function unmountAllApps (options?: unmountAppParams): Promise<void> {\n return Array.from(appInstanceMap.keys()).reduce((pre, next) => pre.then(() => unmountApp(next, options)), Promise.resolve())\n}\n\nexport class MicroApp extends EventCenterForBaseApp implements MicroAppConfigType {\n tagName = 'micro-app'\n shadowDOM?: boolean\n destroy?: boolean\n inline?: boolean\n disableScopecss?: boolean\n disableSandbox?: boolean\n ssr?: boolean\n lifeCycles?: lifeCyclesType\n plugins?: plugins\n fetch?: fetchType\n preFetch = preFetch\n start (options?: OptionsType): void {\n if (!isBrowser || !window.customElements) {\n return logError('micro-app is not supported in this environment')\n }\n\n if (options?.tagName) {\n if (/^micro-app(-\\S+)?/.test(options.tagName)) {\n this.tagName = options.tagName\n } else {\n return logError(`${options.tagName} is invalid tagName`)\n }\n }\n\n if (window.customElements.get(this.tagName)) {\n return logWarn(`element ${this.tagName} is already defined`)\n }\n\n initGlobalEnv()\n\n if (options && isPlainObject(options)) {\n this.shadowDOM = options.shadowDOM\n this.destroy = options.destroy\n /**\n * compatible with versions below 0.4.2 of destroy\n * do not merge with the previous line\n */\n // @ts-ignore\n this.destory = options.destory\n this.inline = options.inline\n this.disableScopecss = options.disableScopecss\n this.disableSandbox = options.disableSandbox\n this.ssr = options.ssr\n isFunction(options.fetch) && (this.fetch = options.fetch)\n\n isPlainObject(options.lifeCycles) && (this.lifeCycles = options.lifeCycles)\n\n // load app assets when browser is idle\n options.preFetchApps && preFetch(options.preFetchApps)\n\n // load global assets when browser is idle\n options.globalAssets && getGlobalAssets(options.globalAssets)\n\n if (isPlainObject(options.plugins)) {\n const modules = options.plugins!.modules\n if (isPlainObject(modules)) {\n for (const appName in modules) {\n const formattedAppName = formatAppName(appName)\n if (formattedAppName && appName !== formattedAppName) {\n modules[formattedAppName] = modules[appName]\n delete modules[appName]\n }\n }\n }\n\n this.plugins = options.plugins\n }\n }\n\n // define customElement after init\n defineElement(this.tagName)\n }\n}\n\nexport default new MicroApp()\n"],"names":[],"mappings":"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"}
|