@micro-zoe/micro-app 1.0.0-alpha.1 → 1.0.0-alpha.10
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 +3 -4
- package/README.zh-cn.md +4 -1
- package/lib/index.d.ts +116 -33
- package/lib/index.esm.js +2480 -931
- 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 +3 -1
- package/typings/global.d.ts +213 -77
package/lib/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/libs/utils.ts","../src/libs/constants.ts","../src/source/fetch.ts","../src/sandbox/scoped_css.ts","../src/source/load_event.ts","../src/source/links.ts","../src/sandbox/adapter.ts","../src/source/patch.ts","../src/libs/global_env.ts","../src/source/scripts.ts","../src/source/index.ts","../src/interact/event_center.ts","../src/interact/index.ts","../src/libs/nest_app.ts","../src/sandbox/bind_function.ts","../src/sandbox/effect.ts","../src/sandbox/router/core.ts","../src/sandbox/router/event.ts","../src/sandbox/router/history.ts","../src/sandbox/router/api.ts","../src/sandbox/router/location.ts","../src/sandbox/router/index.ts","../src/sandbox/request.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, LocationQueryObject, LocationQueryValue, MicroLocation } 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\nexport const noop = () => {}\nexport const noopFalse = () => false\n\n// Array.isArray\nexport const isArray = Array.isArray\n// Object.assign\nexport const assign = Object.assign\n\n// Object prototype methods\nexport const rawDefineProperty = Object.defineProperty\nexport const rawDefineProperties = Object.defineProperties\nexport const rawHasOwnProperty = Object.prototype.hasOwnProperty\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): target is Function {\n return typeof target === 'function'\n}\n\n// is PlainObject\nexport function isPlainObject (target: unknown): target is Record<PropertyKey, unknown> {\n return toString.call(target) === '[object Object]'\n}\n\n// is Promise\nexport function isPromise (target: unknown): target is Promise<unknown> {\n return toString.call(target) === '[object Promise]'\n}\n\n// is bind function\nexport function isBoundFunction (target: unknown): target is Function {\n return isFunction(target) && target.name.indexOf('bound ') === 0 && !target.hasOwnProperty('prototype')\n}\n\n// is ShadowRoot\nexport function isShadowRoot (target: unknown): target is ShadowRoot {\n return typeof ShadowRoot !== 'undefined' && target instanceof ShadowRoot\n}\n\nexport function isURL (target: unknown): target is URL {\n return target instanceof URL\n}\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: unknown[]\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: unknown[]\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: unknown[]): void {\n Promise.resolve().then(fn.bind(null, ...args))\n}\n\n/**\n * create URL as MicroLocation\n */\nexport const createURL = (function (): (path: string | URL, base?: string) => MicroLocation {\n class Location extends URL {}\n return (path: string | URL, base?: string): MicroLocation => {\n return (base ? new Location('' + path, base) : new Location('' + path)) as MicroLocation\n }\n})()\n\n/**\n * Add address protocol\n * @param url address\n */\nexport function addProtocol (url: string): string {\n return url.startsWith('//') ? `${globalThis.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 } = createURL(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 * 6. router api (push, replace)\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 } = createURL(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 createURL(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({ data: res, index: i })\n isFinished()\n }).catch((err: Error) => {\n errorCb({ error: err, index: i })\n isFinished()\n })\n } else {\n successCb({ data: p, index: i })\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\nexport function isFireFox (): boolean {\n return navigator.userAgent.indexOf('Firefox') > -1\n}\n\n/**\n * Transforms a queryString into object.\n * @param search - search string to parse\n * @returns a query object\n */\nexport function parseQuery (search: string): LocationQueryObject {\n const result: LocationQueryObject = {}\n const queryList = search.split('&')\n\n // we will not decode the key/value to ensure that the values are consistent when update URL\n for (const queryItem of queryList) {\n const eqPos = queryItem.indexOf('=')\n const key = eqPos < 0 ? queryItem : queryItem.slice(0, eqPos)\n const value = eqPos < 0 ? null : queryItem.slice(eqPos + 1)\n\n if (key in result) {\n let currentValue = result[key]\n if (!isArray(currentValue)) {\n currentValue = result[key] = [currentValue]\n }\n currentValue.push(value)\n } else {\n result[key] = value\n }\n }\n\n return result\n}\n\n/**\n * Transforms an object to query string\n * @param queryObject - query object to stringify\n * @returns query string without the leading `?`\n */\nexport function stringifyQuery (queryObject: LocationQueryObject): string {\n let result = ''\n\n for (const key in queryObject) {\n const value = queryObject[key]\n if (isNull(value)) {\n result += (result.length ? '&' : '') + key\n } else {\n const valueList: LocationQueryValue[] = isArray(value) ? value : [value]\n\n valueList.forEach(value => {\n if (!isUndefined(value)) {\n result += (result.length ? '&' : '') + key\n if (!isNull(value)) result += '=' + value\n }\n })\n }\n }\n\n return result\n}\n\n/**\n * Register or unregister callback/guard with Set\n */\nexport function useSetRecord<T> () {\n const handlers: Set<T> = new Set()\n\n function add (handler: T): () => boolean {\n handlers.add(handler)\n return (): boolean => {\n if (handlers.has(handler)) return handlers.delete(handler)\n return false\n }\n }\n\n return {\n add,\n list: () => handlers,\n }\n}\n\n/**\n * record data with Map\n */\nexport function useMapRecord<T> () {\n const data: Map<PropertyKey, T> = new Map()\n\n function add (key: PropertyKey, value: T): () => boolean {\n data.set(key, value)\n return (): boolean => {\n if (data.has(key)) return data.delete(key)\n return false\n }\n }\n\n return {\n add,\n get: (key: PropertyKey) => data.get(key),\n delete: (key: PropertyKey): boolean => {\n if (data.has(key)) return data.delete(key)\n return false\n }\n }\n}\n","export enum ObservedAttrName {\n NAME = 'name',\n URL = 'url',\n}\n\n// app status\nexport enum appStates {\n CREATED = 'created',\n LOADING = 'loading',\n LOADED = 'loaded',\n LOAD_FAILED = 'load_failed',\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\n/**\n * global key must be static key, they can not rewrite\n * e.g.\n * window.Promise = newValue\n * new Promise ==> still get old value, not newValue, because they are cached by top function\n * NOTE:\n * 1. Do not add fetch, XMLHttpRequest, EventSource\n */\nexport const globalKeyToBeCached = 'window,self,globalThis,Array,Object,String,Boolean,Math,Number,Symbol,Date,Function,Proxy,WeakMap,WeakSet,Set,Map,Reflect,Element,Node,Document,RegExp,Error,TypeError,JSON,isNaN,parseFloat,parseInt,performance,console,decodeURI,encodeURI,decodeURIComponent,encodeURIComponent,navigator,undefined,location,history'\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 fetch options\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, isFireFox } 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 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 isFireFox() ? decodeURIComponent(this.result) : 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 selectors = this.formatSelector(true)\n\n // reset scopecssDisableNextLine\n this.scopecssDisableNextLine = false\n\n if (!selectors) return parseError('selector missing', this.linkPath)\n\n this.recordResult(selectors)\n\n this.matchComments()\n\n this.styleDeclarations()\n\n this.matchLeadingSpaces()\n\n return true\n }\n\n private formatSelector (skip: boolean): false | string {\n const m = this.commonMatch(/^([^{]+)/, skip)\n if (!m) return false\n\n return m[0].replace(/(^|,[\\n\\s]*)([^,]+)/g, (_, separator, selector) => {\n selector = trim(selector)\n if (!(\n this.scopecssDisableNextLine ||\n (\n this.scopecssDisable && (\n !this.scopecssDisableSelectors.length ||\n this.scopecssDisableSelectors.includes(selector)\n )\n ) ||\n rootSelectorREG.test(selector)\n )) {\n if (bodySelectorREG.test(selector)) {\n selector = selector.replace(bodySelectorREG, this.prefix + ' micro-app-body')\n } else {\n selector = this.prefix + ' ' + selector\n }\n }\n\n return separator + selector\n })\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.recordResult(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 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(false)\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 true\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.recordResult(`/*${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.recordResult(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 // splice string\n private recordResult (strFragment: string): void {\n // Firefox is slow when string contain special characters, see https://github.com/micro-zoe/micro-app/issues/256\n if (isFireFox()) {\n this.result += encodeURIComponent(strFragment)\n } else {\n this.result += strFragment\n }\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 '../sandbox/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 { SandBoxAdapter, AppInterface } from '@micro-app/types'\nimport globalEnv from '../libs/global_env'\nimport { defer } from '../libs/utils'\n\nexport default class Adapter implements SandBoxAdapter {\n constructor () {\n this.injectReactHRMProperty()\n }\n\n // keys that can only assigned to rawWindow\n public escapeSetterKeyList: PropertyKey[] = [\n 'location',\n ]\n\n // keys that can escape to rawWindow\n public staticEscapeProperties: PropertyKey[] = [\n 'System',\n '__cjsWrapper',\n ]\n\n // keys that scoped in child app\n public staticScopeProperties: PropertyKey[] = [\n 'webpackJsonp',\n 'webpackHotUpdate',\n 'Vue',\n ]\n\n // TODO: __DEV__ process.env.NODE_ENV !== 'production'\n // adapter for react\n private injectReactHRMProperty (): void {\n if (process.env.NODE_ENV !== 'production') {\n // react child in non-react env\n this.staticEscapeProperties.push('__REACT_ERROR_OVERLAY_GLOBAL_HOOK__')\n // in react parent\n if (globalEnv.rawWindow.__REACT_ERROR_OVERLAY_GLOBAL_HOOK__) {\n this.staticScopeProperties = this.staticScopeProperties.concat([\n '__REACT_ERROR_OVERLAY_GLOBAL_HOOK__',\n '__reactRefreshInjected',\n ])\n }\n }\n }\n}\n\n// Fix conflict of babel-polyfill@6.x\nexport function fixBabelPolyfill6 (): void {\n if (globalEnv.rawWindow._babelPolyfill) globalEnv.rawWindow._babelPolyfill = false\n}\n\n/**\n * Fix error of hot reload when parent&child created by create-react-app in development environment\n * Issue: https://github.com/micro-zoe/micro-app/issues/382\n */\nexport function fixReactHMRConflict (app: AppInterface): void {\n if (process.env.NODE_ENV !== 'production') {\n const rawReactErrorHook = globalEnv.rawWindow.__REACT_ERROR_OVERLAY_GLOBAL_HOOK__\n const childReactErrorHook = app.sandBox?.proxyWindow.__REACT_ERROR_OVERLAY_GLOBAL_HOOK__\n if (rawReactErrorHook && childReactErrorHook) {\n globalEnv.rawWindow.__REACT_ERROR_OVERLAY_GLOBAL_HOOK__ = childReactErrorHook\n defer(() => {\n globalEnv.rawWindow.__REACT_ERROR_OVERLAY_GLOBAL_HOOK__ = rawReactErrorHook\n })\n }\n }\n}\n","import type { Func, AppInterface, NormalKey } 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 '../sandbox/scoped_css'\nimport { extractLinkFromHtml, formatDynamicLink } from './links'\nimport { extractScriptElement, runScript, runDynamicRemoteScript } from './scripts'\nimport microApp from '../micro_app'\nimport globalEnv from '../libs/global_env'\nimport { fixReactHMRConflict } from '../sandbox/adapter'\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 const hijackElement = getHijackElement(parent, app)\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 (hijackElement) {\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 && !hijackElement.contains(passiveChild)) {\n return globalEnv.rawAppendChild.call(hijackElement, targetChild)\n } else if (rawMethod === globalEnv.rawRemoveChild && !hijackElement.contains(targetChild)) {\n if (parent.contains(targetChild)) {\n return rawMethod.call(parent, targetChild)\n }\n return targetChild\n }\n\n // TODO: __DEV__\n if (\n process.env.NODE_ENV !== 'production' &&\n targetChild instanceof HTMLIFrameElement &&\n rawMethod === globalEnv.rawAppendChild\n ) {\n fixReactHMRConflict(app)\n }\n\n return invokeRawMethod(rawMethod, hijackElement, targetChild, passiveChild)\n }\n\n return invokeRawMethod(rawMethod, parent, targetChild, passiveChild)\n}\n\n// head/body map to micro-app-head/micro-app-body\nfunction getHijackElement (node: Node, app: AppInterface) {\n if (node === document.head) {\n return app?.container?.querySelector('micro-app-head')\n }\n if (node === document.body) {\n return app?.container?.querySelector('micro-app-body')\n }\n return null\n}\n\nfunction invokeRawMethod (\n rawMethod: Func,\n parent: Node,\n targetChild: Node,\n passiveChild?: Node | null\n) {\n if (isPendMethod(rawMethod)) {\n return rawMethod.call(parent, targetChild)\n }\n\n return rawMethod.call(parent, targetChild, passiveChild)\n}\n\nfunction isPendMethod (method: CallableFunction) {\n return method === globalEnv.rawAppend || method === globalEnv.rawPrepend\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\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 if (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 !appInstanceMap.get(appName)?.container ||\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\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 !appInstanceMap.get(appName)?.container ||\n !selectors ||\n isUniqueElement(selectors) ||\n rawDocument !== this\n ) {\n return globalEnv.rawQuerySelectorAll.call(this, selectors)\n }\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<NormalKey, unknown> = {}\n Object.getOwnPropertyNames(value).forEach((key: NormalKey) => {\n if (!(isString(key) && key.indexOf('__') === 0)) {\n cloneValue[key] = value[key]\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}\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 { isSupportModuleScript, isBrowser, getCurrentAppName, assign } from './utils'\nimport { rejectMicroAppStyle } from '../source/patch'\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?: unknown\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\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 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\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 }\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 '../libs/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)\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)\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 info source script info\n */\nfunction bindScope (\n url: string,\n app: AppInterface,\n code: string,\n info: sourceScriptInfo,\n): string {\n if (isPlainObject(microApp.plugins)) {\n code = usePlugins(url, code, app.name, microApp.plugins, info)\n }\n\n if (app.sandBox && !info.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 * @param info source script info\n */\nfunction usePlugins (url: string, code: string, appName: string, plugins: plugins, info: sourceScriptInfo): string {\n const newCode = processCode(plugins.global, code, url, info)\n\n return processCode(plugins.modules?.[appName], newCode, url, info)\n}\n\nfunction processCode (configs: plugins['global'], code: string, url: string, info: sourceScriptInfo) {\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, info)\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 '../sandbox/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","import { appInstanceMap } from '../create_app'\nimport { getRootContainer } from './utils'\n\nfunction unmountNestedApp (): void {\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// release listener\nfunction releaseUnmountOfNestedApp (): void {\n if (window.__MICRO_APP_ENVIRONMENT__) {\n window.removeEventListener('unmount', unmountNestedApp, false)\n }\n}\n\n// if micro-app run in micro application, delete all next generation application when unmount event received\n// unmount event will auto release by sandbox\nexport function listenUmountOfNestedApp (): void {\n if (window.__MICRO_APP_ENVIRONMENT__) {\n releaseUnmountOfNestedApp()\n window.addEventListener('unmount', unmountNestedApp, false)\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// this events should be sent to the specified app\nconst formatEventList = ['unmount', 'appstate-change']\n\n/**\n * Format event name\n * @param eventName event name\n * @param appName app name\n */\nexport function formatEventName (eventName: string, appName: string): string {\n if (\n formatEventList.includes(eventName) ||\n (\n (eventName === 'popstate' || eventName === 'hashchange') &&\n appInstanceMap.get(appName)?.useMemoryRouter\n )\n ) {\n return `${eventName}-${appName}`\n }\n return eventName\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/**\n * Rewrite side-effect events\n * @param microAppWindow micro window\n */\nexport default function effect (appName: string, microAppWindow: microAppWindowType): Record<string, CallableFunction> {\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 = formatEventName(type, appName)\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 = formatEventName(type, appName)\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 {\n MicroLocation,\n MicroState,\n LocationQuery,\n HandleMicroPathResult,\n} from '@micro-app/types'\nimport globalEnv from '../../libs/global_env'\nimport {\n assign,\n parseQuery,\n stringifyQuery,\n isString,\n isUndefined,\n isPlainObject,\n createURL,\n} from '../../libs/utils'\n\n// set micro app state to origin state\nexport function setMicroState (\n appName: string,\n rawState: MicroState,\n microState: MicroState,\n): MicroState {\n const additionalState: Record<string, any> = {\n microAppState: assign({}, rawState?.microAppState, {\n [appName]: microState\n })\n }\n\n // create new state object\n return assign({}, rawState, additionalState)\n}\n\n// delete micro app state form origin state\nexport function removeMicroState (appName: string, rawState: MicroState): MicroState {\n if (isPlainObject(rawState?.microAppState)) {\n if (!isUndefined(rawState.microAppState[appName])) {\n delete rawState.microAppState[appName]\n }\n if (!Object.keys(rawState.microAppState).length) {\n delete rawState.microAppState\n }\n }\n\n // 生成新的state对象\n return assign({}, rawState)\n}\n\n// get micro app state form origin state\nexport function getMicroState (appName: string, state: MicroState): MicroState {\n return state?.microAppState?.[appName] || null\n}\n\nconst ENC_AD_RE = /&/g // %M1\nconst ENC_EQ_RE = /=/g // %M2\nconst DEC_AD_RE = /%M1/g // &\nconst DEC_EQ_RE = /%M2/g // =\n\nexport function encodeMicroPath (path: string): string {\n return encodeURIComponent(commonDecode(path).replace(ENC_AD_RE, '%M1').replace(ENC_EQ_RE, '%M2'))\n}\n\nexport function decodeMicroPath (path: string): string {\n return commonDecode(path).replace(DEC_AD_RE, '&').replace(DEC_EQ_RE, '=')\n}\n\nfunction commonDecode (path: string): string {\n try {\n const decPath = decodeURIComponent(path)\n if (path === decPath || DEC_AD_RE.test(decPath) || DEC_EQ_RE.test(decPath)) return decPath\n return commonDecode(decPath)\n } catch {\n return path\n }\n}\n\n// 格式化query参数key,防止与原有参数的冲突\nfunction formatQueryAppName (appName: string) {\n return `app-${appName}`\n}\n\n// 根据浏览器url参数,获取当前子应用的path\nexport function getMicroPathFromURL (appName: string): string | null {\n const rawLocation = globalEnv.rawWindow.location\n const queryObject = getQueryObjectFromURL(rawLocation.search, rawLocation.hash)\n const microPath = queryObject.hashQuery?.[formatQueryAppName(appName)] || queryObject.searchQuery?.[formatQueryAppName(appName)]\n return isString(microPath) ? decodeMicroPath(microPath) : null\n}\n\n// 将name=encodeUrl地址插入到浏览器url上\nexport function setMicroPathToURL (appName: string, microLocation: MicroLocation): HandleMicroPathResult {\n let { pathname, search, hash } = globalEnv.rawWindow.location\n const queryObject = getQueryObjectFromURL(search, hash)\n const encodedMicroPath = encodeMicroPath(\n microLocation.pathname +\n microLocation.search +\n microLocation.hash\n )\n\n let isAttach2Hash = false // 基座是否是hash模式,这个其实也不准,只是表示参数加到了hash上\n // hash存在且search不存在,则认为是hash路由\n if (hash && !search) {\n isAttach2Hash = true\n if (queryObject.hashQuery) {\n queryObject.hashQuery[formatQueryAppName(appName)] = encodedMicroPath\n } else {\n queryObject.hashQuery = {\n [formatQueryAppName(appName)]: encodedMicroPath\n }\n }\n const baseHash = hash.includes('?') ? hash.slice(0, hash.indexOf('?') + 1) : hash + '?'\n hash = baseHash + stringifyQuery(queryObject.hashQuery)\n } else {\n if (queryObject.searchQuery) {\n queryObject.searchQuery[formatQueryAppName(appName)] = encodedMicroPath\n } else {\n queryObject.searchQuery = {\n [formatQueryAppName(appName)]: encodedMicroPath\n }\n }\n search = '?' + stringifyQuery(queryObject.searchQuery)\n }\n\n return {\n fullPath: pathname + search + hash,\n isAttach2Hash,\n }\n}\n\n// 将name=encodeUrl的参数从浏览器url上删除\nexport function removeMicroPathFromURL (appName: string, targetLocation?: MicroLocation): HandleMicroPathResult {\n let { pathname, search, hash } = targetLocation || globalEnv.rawWindow.location\n const queryObject = getQueryObjectFromURL(search, hash)\n\n let isAttach2Hash = false\n if (queryObject.hashQuery?.[formatQueryAppName(appName)]) {\n isAttach2Hash = true\n delete queryObject.hashQuery?.[formatQueryAppName(appName)]\n const hashQueryStr = stringifyQuery(queryObject.hashQuery)\n hash = hash.slice(0, hash.indexOf('?') + Number(Boolean(hashQueryStr))) + hashQueryStr\n } else if (queryObject.searchQuery?.[formatQueryAppName(appName)]) {\n delete queryObject.searchQuery?.[formatQueryAppName(appName)]\n const searchQueryStr = stringifyQuery(queryObject.searchQuery)\n search = searchQueryStr ? '?' + searchQueryStr : ''\n }\n\n return {\n fullPath: pathname + search + hash,\n isAttach2Hash,\n }\n}\n\n/**\n * 根据location获取query对象\n */\nfunction getQueryObjectFromURL (search: string, hash: string): LocationQuery {\n const queryObject: LocationQuery = {}\n\n if (search !== '' && search !== '?') {\n queryObject.searchQuery = parseQuery(search.slice(1))\n }\n\n if (hash.includes('?')) {\n queryObject.hashQuery = parseQuery(hash.slice(hash.indexOf('?') + 1))\n }\n\n return queryObject\n}\n\n/**\n * get microApp path from browser URL without hash\n */\nexport function getNoHashMicroPathFromURL (appName: string, baseUrl: string): string {\n const microPath = getMicroPathFromURL(appName)\n if (!microPath) return ''\n const formatLocation = createURL(microPath, baseUrl)\n return formatLocation.origin + formatLocation.pathname + formatLocation.search\n}\n","import type { MicroLocation } from '@micro-app/types'\nimport { appInstanceMap } from '../../create_app'\nimport { getActiveApps } from '../../micro_app'\nimport { formatEventName } from '../effect'\nimport { getMicroPathFromURL, getMicroState } from './core'\nimport { updateMicroLocation } from './location'\nimport globalEnv from '../../libs/global_env'\nimport { removeDomScope } from '../../libs/utils'\n\ntype PopStateListener = (this: Window, e: PopStateEvent) => void\ntype MicroPopStateEvent = PopStateEvent & { onlyForBrowser?: boolean }\n\n/**\n * dispatch PopStateEvent & HashChangeEvent to child app\n * each child app will listen for popstate event when sandbox start\n * and release it when sandbox stop\n * @param appName app name\n * @returns release callback\n */\nexport function addHistoryListener (appName: string): CallableFunction {\n const rawWindow = globalEnv.rawWindow\n // handle popstate event and distribute to child app\n const popStateHandler: PopStateListener = (e: MicroPopStateEvent): void => {\n // exclude hidden keep-alive app\n if (getActiveApps(true).includes(appName) && !e.onlyForBrowser) {\n const microPath = getMicroPathFromURL(appName)\n const app = appInstanceMap.get(appName)!\n const proxyWindow = app.sandBox!.proxyWindow\n let isHashChange = false\n // for hashChangeEvent\n const oldHref = proxyWindow.location.href\n // Do not attach micro state to url when microPath is empty\n if (microPath) {\n const oldHash = proxyWindow.location.hash\n updateMicroLocation(appName, microPath, proxyWindow.location as MicroLocation)\n isHashChange = proxyWindow.location.hash !== oldHash\n }\n\n // dispatch formatted popStateEvent to child\n dispatchPopStateEventToMicroApp(appName, proxyWindow, rawWindow.history.state)\n\n // dispatch formatted hashChangeEvent to child when hash change\n if (isHashChange) dispatchHashChangeEventToMicroApp(appName, proxyWindow, oldHref)\n\n // clear element scope before trigger event of next app\n removeDomScope()\n }\n }\n\n rawWindow.addEventListener('popstate', popStateHandler)\n\n return () => {\n rawWindow.removeEventListener('popstate', popStateHandler)\n }\n}\n\n/**\n * dispatch formatted popstate event to microApp\n * @param appName app name\n * @param proxyWindow sandbox window\n * @param eventState history.state\n */\nexport function dispatchPopStateEventToMicroApp (\n appName: string,\n proxyWindow: WindowProxy,\n eventState: unknown,\n): void {\n // create PopStateEvent named popstate-appName with sub app state\n const newPopStateEvent = new PopStateEvent(\n formatEventName('popstate', appName),\n { state: getMicroState(appName, eventState) }\n )\n\n globalEnv.rawWindow.dispatchEvent(newPopStateEvent)\n\n // call function window.onpopstate if it exists\n typeof proxyWindow.onpopstate === 'function' && proxyWindow.onpopstate(newPopStateEvent)\n}\n\n/**\n * dispatch formatted hashchange event to microApp\n * @param appName app name\n * @param proxyWindow sandbox window\n * @param oldHref old href\n */\nexport function dispatchHashChangeEventToMicroApp (\n appName: string,\n proxyWindow: WindowProxy,\n oldHref: string,\n): void {\n const newHashChangeEvent = new HashChangeEvent(\n formatEventName('hashchange', appName),\n {\n newURL: proxyWindow.location.href,\n oldURL: oldHref,\n }\n )\n\n globalEnv.rawWindow.dispatchEvent(newHashChangeEvent)\n\n // call function window.onhashchange if it exists\n typeof proxyWindow.onhashchange === 'function' && proxyWindow.onhashchange(newHashChangeEvent)\n}\n\n/**\n * dispatch native PopStateEvent, simulate location behavior\n * @param onlyForBrowser only dispatch PopStateEvent to browser\n */\nfunction dispatchNativePopStateEvent (onlyForBrowser: boolean): void {\n const event = new PopStateEvent('popstate', { state: null }) as MicroPopStateEvent\n if (onlyForBrowser) event.onlyForBrowser = true\n globalEnv.rawWindow.dispatchEvent(event)\n}\n\n/**\n * dispatch hashchange event to browser\n * @param oldHref old href of rawWindow.location\n */\nfunction dispatchNativeHashChangeEvent (oldHref: string): void {\n const newHashChangeEvent = new HashChangeEvent(\n 'hashchange',\n {\n newURL: globalEnv.rawWindow.location.href,\n oldURL: oldHref,\n }\n )\n\n globalEnv.rawWindow.dispatchEvent(newHashChangeEvent)\n}\n\n/**\n * dispatch popstate & hashchange event to browser\n * @param onlyForBrowser only dispatch event to browser\n * @param oldHref old href of rawWindow.location\n */\nexport function dispatchNativeEvent (onlyForBrowser: boolean, oldHref?: string): void {\n // clear element scope before dispatch global event\n removeDomScope()\n dispatchNativePopStateEvent(onlyForBrowser)\n if (oldHref) {\n dispatchNativeHashChangeEvent(oldHref)\n }\n}\n","import type {\n MicroState,\n MicroLocation,\n MicroHistory,\n HistoryProxyValue,\n HandleMicroPathResult,\n} from '@micro-app/types'\nimport globalEnv from '../../libs/global_env'\nimport { isString, createURL, isPlainObject, isURL, assign, isFunction } from '../../libs/utils'\nimport { setMicroPathToURL, setMicroState, getMicroState } from './core'\nimport { dispatchNativeEvent } from './event'\nimport { updateMicroLocation } from './location'\n\n/**\n * create proxyHistory for microApp\n * MDN https://developer.mozilla.org/en-US/docs/Web/API/History\n * @param appName app name\n * @param microLocation microApp location\n */\nexport function createMicroHistory (appName: string, microLocation: MicroLocation): MicroHistory {\n const rawHistory = globalEnv.rawWindow.history\n function getMicroHistoryMethod (methodName: PropertyKey): CallableFunction {\n return function (...rests: unknown[]): void {\n if (\n (methodName === 'pushState' || methodName === 'replaceState') &&\n (isString(rests[2]) || isURL(rests[2]))\n ) {\n const targetLocation = createURL(rests[2], microLocation.href)\n if (targetLocation.origin === microLocation.origin) {\n navigateWithNativeEvent(\n methodName,\n setMicroPathToURL(appName, targetLocation),\n true,\n setMicroState(appName, rawHistory.state, rests[0]),\n rests[1] as string,\n )\n const targetFullPath = targetLocation.pathname + targetLocation.search + targetLocation.hash\n if (targetFullPath !== microLocation.fullPath) {\n updateMicroLocation(appName, targetFullPath, microLocation)\n }\n } else {\n rawHistory[methodName].apply(rawHistory, rests)\n }\n } else {\n rawHistory[methodName].apply(rawHistory, rests)\n }\n }\n }\n\n return new Proxy(rawHistory, {\n get (target: History, key: PropertyKey): HistoryProxyValue {\n if (key === 'state') {\n return getMicroState(appName, rawHistory.state)\n } else if (isFunction(Reflect.get(target, key))) {\n return getMicroHistoryMethod(key)\n }\n return Reflect.get(target, key)\n },\n set (target: History, key: PropertyKey, value: unknown): boolean {\n return Reflect.set(target, key, value)\n }\n })\n}\n\n/**\n * navigate to new path base on native method of history\n * @param methodName pushState/replaceState\n * @param fullPath full path\n * @param state history.state, default is null\n * @param title history.title, default is ''\n */\nexport function nativeHistoryNavigate (\n methodName: string,\n fullPath: string,\n state: unknown = null,\n title = '',\n): void {\n globalEnv.rawWindow.history[methodName](state, title, fullPath)\n}\n\n/**\n * Navigate to new path, and dispatch native popStateEvent/hashChangeEvent to browser\n * Use scenes:\n * 1. mount/unmount through updateBrowserURL with limited popstateEvent\n * 2. proxyHistory.pushState/replaceState with limited popstateEvent\n * 3. api microApp.router.push/replace\n * 4. proxyLocation.hash = xxx\n * @param methodName pushState/replaceState\n * @param result result of add/remove microApp path on browser url\n * @param onlyForBrowser only dispatch event to browser\n * @param state history.state, not required\n * @param title history.title, not required\n */\nexport function navigateWithNativeEvent (\n methodName: string,\n result: HandleMicroPathResult,\n onlyForBrowser: boolean,\n state?: unknown,\n title?: string,\n): void {\n const rawLocation = globalEnv.rawWindow.location\n const oldFullPath = rawLocation.pathname + rawLocation.search + rawLocation.hash\n const oldHref = result.isAttach2Hash && oldFullPath !== result.fullPath ? rawLocation.href : null\n // navigate with native history method\n nativeHistoryNavigate(methodName, result.fullPath, state, title)\n if (oldFullPath !== result.fullPath) dispatchNativeEvent(onlyForBrowser, oldHref)\n}\n\n/**\n * update browser url when mount/unmount/hidden/show\n * @param result result of add/remove microApp path on browser url\n * @param state history.state\n */\nexport function updateBrowserURL (\n result: HandleMicroPathResult,\n state: MicroState,\n): void {\n navigateWithNativeEvent('replaceState', result, true, state)\n}\n\n/**\n * When path is same, keep the microAppState in history.state\n * Fix bug of missing microAppState in next.js & angular\n * @param method history.pushState/replaceState\n */\nfunction patchHistoryState (method: History['pushState' | 'replaceState']): CallableFunction {\n const rawWindow = globalEnv.rawWindow\n return function (...rests: [data: any, unused: string, url?: string]): void {\n if (\n rawWindow.history.state?.microAppState &&\n (!isPlainObject(rests[0]) || !rests[0].microAppState) &&\n (isString(rests[2]) || isURL(rests[2]))\n ) {\n const currentHref = rawWindow.location.href\n const targetLocation = createURL(rests[2], currentHref)\n if (targetLocation.href === currentHref) {\n rests[0] = assign({}, rests[0], {\n microAppState: rawWindow.history.state.microAppState,\n })\n }\n }\n method.apply(rawWindow.history, rests)\n }\n}\n\nlet isReWriteHistoryState = false\n/**\n * rewrite history.pushState/replaceState\n * used to fix the problem that the microAppState maybe missing when mainApp navigate to same path\n * e.g: when nextjs, angular receive popstate event, they will use history.replaceState to update browser url with a new state object\n */\nexport function rewriteHistoryState (): void {\n // filter nest app\n if (!isReWriteHistoryState && !window.__MICRO_APP_ENVIRONMENT__) {\n isReWriteHistoryState = true\n const rawWindow = globalEnv.rawWindow\n rawWindow.history.pushState = patchHistoryState(\n rawWindow.history.pushState,\n )\n rawWindow.history.replaceState = patchHistoryState(\n rawWindow.history.replaceState,\n )\n }\n}\n","import type {\n Func,\n Router,\n RouterTarget,\n navigationMethod,\n MicroLocation,\n RouterGuard,\n GuardLocation,\n AccurateGuard,\n} from '@micro-app/types'\nimport {\n encodeMicroPath,\n decodeMicroPath,\n setMicroPathToURL, setMicroState, getMicroPathFromURL\n} from './core'\nimport {\n logError,\n formatAppName,\n createURL,\n isFunction,\n isPlainObject,\n useSetRecord,\n useMapRecord,\n requestIdleCallback,\n isString,\n noopFalse,\n removeDomScope,\n} from '../../libs/utils'\nimport { appInstanceMap } from '../../create_app'\nimport { getActiveApps } from '../../micro_app'\nimport globalEnv from '../../libs/global_env'\nimport { navigateWithNativeEvent } from './history'\n\nexport interface RouterApi {\n router: Router,\n executeNavigationGuard: (appName: string, to: GuardLocation, from: GuardLocation) => void\n clearRouterWhenUnmount: (appName: string) => void\n}\n\nfunction createRouterApi (): RouterApi {\n /**\n * common handler for router.push/router.replace method\n * @param appName app name\n * @param methodName replaceState/pushState\n * @param targetLocation target location\n * @param state to.state\n */\n function navigateWithRawHistory (\n appName: string,\n methodName: string,\n targetLocation: MicroLocation,\n state: unknown,\n ): void {\n navigateWithNativeEvent(\n methodName,\n setMicroPathToURL(appName, targetLocation),\n false,\n setMicroState(\n appName,\n globalEnv.rawWindow.history.state,\n state ?? null,\n ),\n )\n // clear element scope after navigate\n removeDomScope()\n }\n /**\n * create method of router.push/replace\n * NOTE:\n * 1. The same fullPath will be blocked\n * 2. name & path is required\n * 3. path is fullPath except for the domain (the domain can be taken, but not valid)\n * @param replace use router.replace?\n */\n function createNavigationMethod (replace: boolean): navigationMethod {\n return function (to: RouterTarget): void {\n const appName = formatAppName(to.name)\n // console.log(3333333, appInstanceMap.get(appName))\n if (appName && isString(to.path)) {\n const app = appInstanceMap.get(appName)\n if (app && !app.sandBox) return logError(`navigation failed, sandBox of app ${appName} is closed`)\n // active apps, include hidden keep-alive app\n if (getActiveApps().includes(appName)) {\n const microLocation = app!.sandBox!.proxyWindow.location as MicroLocation\n const targetLocation = createURL(to.path, microLocation.href)\n // Only get path data, even if the origin is different from microApp\n const targetFullPath = targetLocation.pathname + targetLocation.search + targetLocation.hash\n if (microLocation.fullPath !== targetFullPath || getMicroPathFromURL(appName) !== targetFullPath) {\n const methodName = (replace && to.replace !== false) || to.replace === true ? 'replaceState' : 'pushState'\n navigateWithRawHistory(appName, methodName, targetLocation, to.state)\n }\n } else {\n /**\n * app not exit or unmounted, update browser URL with replaceState\n * use base app location.origin as baseURL\n */\n const rawLocation = globalEnv.rawWindow.location\n const targetLocation = createURL(to.path, rawLocation.origin)\n const targetFullPath = targetLocation.pathname + targetLocation.search + targetLocation.hash\n if (getMicroPathFromURL(appName) !== targetFullPath) {\n navigateWithRawHistory(\n appName,\n to.replace === false ? 'pushState' : 'replaceState',\n targetLocation,\n to.state,\n )\n }\n }\n } else {\n logError(`navigation failed, name & path are required when use router.${replace ? 'replace' : 'push'}`)\n }\n }\n }\n\n // create method of router.go/back/forward\n function createRawHistoryMethod (methodName: string): Func {\n return function (...rests: unknown[]): void {\n return globalEnv.rawWindow.history[methodName](...rests)\n }\n }\n\n const beforeGuards = useSetRecord<RouterGuard>()\n const afterGuards = useSetRecord<RouterGuard>()\n\n /**\n * run all of beforeEach/afterEach guards\n * NOTE:\n * 1. Modify browser url first, and then run guards,\n * consistent with the browser forward & back button\n * 2. Note the element binding\n * @param appName app name\n * @param to target location\n * @param from old location\n * @param guards guards list\n */\n function runGuards (\n appName: string,\n to: GuardLocation,\n from: GuardLocation,\n guards: Set<RouterGuard>,\n ) {\n // clear element scope before execute function of parent\n removeDomScope()\n for (const guard of guards) {\n if (isFunction(guard)) {\n guard(appName, to, from)\n } else if (isPlainObject(guard) && isFunction((guard as AccurateGuard)[appName])) {\n guard[appName](to, from)\n }\n }\n }\n\n /**\n * global hook for router\n * update router information base on microLocation\n * @param appName app name\n * @param microLocation location of microApp\n */\n function executeNavigationGuard (\n appName: string,\n to: GuardLocation,\n from: GuardLocation,\n ): void {\n router.current.set(appName, to)\n\n runGuards(appName, to, from, beforeGuards.list())\n\n requestIdleCallback(() => {\n runGuards(appName, to, from, afterGuards.list())\n })\n }\n\n function clearRouterWhenUnmount (appName: string): void {\n router.current.delete(appName)\n }\n\n // defaultPage data\n const defaultPageRecord = useMapRecord<string>()\n\n /**\n * defaultPage只在子应用初始化时生效,且优先级比浏览器上的子应用路由地址低\n * @param appName app name\n * @param path page path\n */\n function setDefaultPage (appName: string, path: string): () => boolean {\n appName = formatAppName(appName)\n if (!appName) return noopFalse\n\n return defaultPageRecord.add(appName, path)\n }\n\n function removeDefaultPage (appName: string): boolean {\n appName = formatAppName(appName)\n if (!appName) return false\n\n return defaultPageRecord.delete(appName)\n }\n\n // Router API for developer\n const router: Router = {\n current: new Map<string, MicroLocation>(),\n encode: encodeMicroPath,\n decode: decodeMicroPath,\n push: createNavigationMethod(false),\n replace: createNavigationMethod(true),\n go: createRawHistoryMethod('go'),\n back: createRawHistoryMethod('back'),\n forward: createRawHistoryMethod('forward'),\n beforeEach: beforeGuards.add,\n afterEach: afterGuards.add,\n // attachToURL: 将指定的子应用路由信息添加到浏览器地址上\n // attachAllToURL: 将所有正在运行的子应用路由信息添加到浏览器地址上\n setDefaultPage,\n removeDefaultPage,\n getDefaultPage: defaultPageRecord.get,\n }\n\n return {\n router,\n executeNavigationGuard,\n clearRouterWhenUnmount,\n }\n}\n\nexport const {\n router,\n executeNavigationGuard,\n clearRouterWhenUnmount,\n} = createRouterApi()\n","/* eslint-disable no-void */\nimport type { MicroLocation, GuardLocation, ShadowLocation } from '@micro-app/types'\nimport globalEnv from '../../libs/global_env'\nimport { assign as oAssign, rawDefineProperties, createURL, noop } from '../../libs/utils'\nimport { setMicroPathToURL } from './core'\nimport { dispatchNativeEvent } from './event'\nimport { executeNavigationGuard } from './api'\nimport { nativeHistoryNavigate, navigateWithNativeEvent } from './history'\n\nconst shadowLocationKeys: ReadonlyArray<keyof MicroLocation> = ['href', 'pathname', 'search', 'hash']\n// origin is readonly, so we ignore when updateMicroLocation\nconst locationKeys: ReadonlyArray<keyof MicroLocation> = [...shadowLocationKeys, 'host', 'hostname', 'port', 'protocol', 'search']\n// origin, fullPath is necessary for guardLocation\nconst guardLocationKeys: ReadonlyArray<keyof MicroLocation> = [...locationKeys, 'origin', 'fullPath']\n\n/**\n * create guardLocation by microLocation, used for router guard\n */\nfunction createGuardLocation (appName: string, microLocation: MicroLocation): GuardLocation {\n const guardLocation = oAssign({ name: appName }, microLocation) as GuardLocation\n // The prototype values on the URL needs to be manually transferred\n for (const key of guardLocationKeys) guardLocation[key] = microLocation[key]\n return guardLocation\n}\n\n// for updateBrowserURLWithLocation when initial\nexport function autoTriggerNavigationGuard (appName: string, microLocation: MicroLocation): void {\n executeNavigationGuard(appName, createGuardLocation(appName, microLocation), createGuardLocation(appName, microLocation))\n}\n\n/**\n * The following scenes will trigger location update:\n * 1. pushState/replaceState\n * 2. popStateEvent\n * 3. query on browser url when init sub app\n * 4. set defaultPage when when init sub app\n * NOTE:\n * 1. update browser URL first, and then update microLocation\n * 2. the same fullPath will not trigger router guards\n * @param appName app name\n * @param path target path\n * @param base base url\n * @param microLocation micro app location\n * @param type auto prevent\n */\nexport function updateMicroLocation (\n appName: string,\n path: string,\n microLocation: MicroLocation,\n type?: string,\n): void {\n const newLocation = createURL(path, microLocation.href)\n // record old values of microLocation to `from`\n const from = createGuardLocation(appName, microLocation)\n for (const key of locationKeys) {\n if (shadowLocationKeys.includes(key)) {\n // reference of shadowLocation\n microLocation.shadowLocation[key] = newLocation[key] as string\n } else {\n // @ts-ignore reference of microLocation\n microLocation[key] = newLocation[key]\n }\n }\n // update latest values of microLocation to `to`\n const to = createGuardLocation(appName, microLocation)\n\n // The hook called only when fullPath changed\n if (type === 'auto' || (from.fullPath !== to.fullPath && type !== 'prevent')) {\n executeNavigationGuard(appName, to, from)\n }\n}\n\n/**\n * Create location for microApp, each microApp has only one location object, it is a reference type\n * MDN https://developer.mozilla.org/en-US/docs/Web/API/Location\n * @param appName app name\n * @param url app url\n */\nexport function createMicroLocation (appName: string, url: string): MicroLocation {\n const rawWindow = globalEnv.rawWindow\n const rawLocation = rawWindow.location\n // microLocation is the location of child app, it is globally unique\n const microLocation = createURL(url)\n // shadowLocation is the current location information (href, pathname, search, hash)\n const shadowLocation: ShadowLocation = {\n href: microLocation.href,\n pathname: microLocation.pathname,\n search: microLocation.search,\n hash: microLocation.hash,\n }\n\n /**\n * Common handler for href, assign, replace\n * It is mainly used to deal with special scenes about hash\n * @param value target path\n * @param methodName pushState/replaceState\n * @returns origin value or formatted value\n */\n const commonHandler = (value: string | URL, methodName: string): string | URL | undefined => {\n const targetLocation = createURL(value, microLocation.href)\n // Even if the origin is the same, developers still have the possibility of want to jump to a new page\n if (targetLocation.origin === microLocation.origin) {\n const setMicroPathResult = setMicroPathToURL(appName, targetLocation)\n /**\n * change hash with location.href will not trigger the browser reload\n * so we use pushState & reload to imitate href behavior\n * NOTE:\n * 1. if child app only change hash, it should not trigger browser reload\n * 2. if address is same and has hash, it should not add route stack\n */\n if (\n targetLocation.pathname === shadowLocation.pathname &&\n targetLocation.search === shadowLocation.search\n ) {\n let oldHref = null\n if (targetLocation.hash !== shadowLocation.hash) {\n if (setMicroPathResult.isAttach2Hash) oldHref = rawLocation.href\n nativeHistoryNavigate(methodName, setMicroPathResult.fullPath)\n }\n\n if (targetLocation.hash) {\n dispatchNativeEvent(false, oldHref)\n } else {\n rawLocation.reload()\n }\n return void 0\n /**\n * when baseApp is hash router, address change of child can not reload browser\n * so we imitate behavior of browser (reload)\n */\n } else if (setMicroPathResult.isAttach2Hash) {\n nativeHistoryNavigate(methodName, setMicroPathResult.fullPath)\n rawLocation.reload()\n return void 0\n }\n\n value = setMicroPathResult.fullPath\n }\n\n return value\n }\n\n /**\n * create location PropertyDescriptor (href, pathname, search, hash)\n * @param key property name\n * @param setter setter of location property\n */\n function createPropertyDescriptor (\n getter: () => string,\n setter: (v: string) => void,\n ): PropertyDescriptor {\n return {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n }\n }\n\n /**\n * common handler for location.pathname & location.search\n * @param targetPath target fullPath\n * @param key pathname/search\n */\n function handleForPathNameAndSearch (targetPath: string, key: string) {\n const targetLocation = createURL(targetPath, url)\n // When the browser url has a hash value, the same pathname/search will not refresh browser\n if (targetLocation[key] === shadowLocation[key] && shadowLocation.hash) {\n // The href has not changed, not need to dispatch hashchange event\n dispatchNativeEvent(false)\n } else {\n /**\n * When the value is the same, no new route stack will be added\n * Special scenes such as:\n * pathname: /path ==> /path#hash, /path ==> /path?query\n * search: ?query ==> ?query#hash\n */\n nativeHistoryNavigate(\n targetLocation[key] === shadowLocation[key] ? 'replaceState' : 'pushState',\n setMicroPathToURL(appName, targetLocation).fullPath,\n )\n rawLocation.reload()\n }\n }\n\n /**\n * Special processing for four keys: href, pathname, search and hash\n * They take values from shadowLocation, and require special operations when assigning values\n */\n rawDefineProperties(microLocation, {\n href: createPropertyDescriptor(\n (): string => shadowLocation.href,\n (value: string): void => {\n const targetPath = commonHandler(value, 'pushState')\n if (targetPath) rawLocation.href = targetPath\n }\n ),\n pathname: createPropertyDescriptor(\n (): string => shadowLocation.pathname,\n (value: string): void => {\n const targetPath = ('/' + value).replace(/^\\/+/, '/') + shadowLocation.search + shadowLocation.hash\n handleForPathNameAndSearch(targetPath, 'pathname')\n }\n ),\n search: createPropertyDescriptor(\n (): string => shadowLocation.search,\n (value: string): void => {\n const targetPath = shadowLocation.pathname + ('?' + value).replace(/^\\?+/, '?') + shadowLocation.hash\n handleForPathNameAndSearch(targetPath, 'search')\n }\n ),\n hash: createPropertyDescriptor(\n (): string => shadowLocation.hash,\n (value: string): void => {\n const targetPath = shadowLocation.pathname + shadowLocation.search + ('#' + value).replace(/^#+/, '#')\n const targetLocation = createURL(targetPath, url)\n // The same hash will not trigger popStateEvent\n if (targetLocation.hash !== shadowLocation.hash) {\n navigateWithNativeEvent(\n 'pushState',\n setMicroPathToURL(appName, targetLocation),\n false,\n )\n }\n }\n ),\n fullPath: createPropertyDescriptor(\n (): string => shadowLocation.pathname + shadowLocation.search + shadowLocation.hash,\n noop,\n ),\n })\n\n const createLocationMethod = (locationMethodName: string) => {\n return function (value: string | URL) {\n const targetPath = commonHandler(value, locationMethodName === 'assign' ? 'pushState' : 'replaceState')\n if (targetPath) rawLocation[locationMethodName](targetPath)\n }\n }\n\n return oAssign(microLocation, {\n assign: createLocationMethod('assign'),\n replace: createLocationMethod('replace'),\n reload: (forcedReload?: boolean): void => rawLocation.reload(forcedReload),\n shadowLocation,\n })\n}\n","import type {\n MicroRouter,\n MicroLocation,\n} from '@micro-app/types'\nimport globalEnv from '../../libs/global_env'\nimport {\n getMicroPathFromURL,\n setMicroPathToURL,\n removeMicroPathFromURL,\n removeMicroState,\n setMicroState,\n} from './core'\nimport {\n createMicroLocation,\n updateMicroLocation,\n autoTriggerNavigationGuard,\n} from './location'\nimport {\n createMicroHistory,\n updateBrowserURL,\n rewriteHistoryState,\n} from './history'\nimport { createURL } from '../../libs/utils'\nimport { clearRouterWhenUnmount } from './api'\nexport { router } from './api'\nexport { addHistoryListener } from './event'\nexport { getNoHashMicroPathFromURL } from './core'\n\n/**\n * The router system has two operations: read and write\n * Read through location and write through history & location\n * @param appName app name\n * @param url app url\n * @returns MicroRouter\n */\nexport default function createMicroRouter (appName: string, url: string): MicroRouter {\n rewriteHistoryState()\n const microLocation = createMicroLocation(appName, url)\n return {\n microLocation,\n microHistory: createMicroHistory(appName, microLocation),\n }\n}\n\n// 当沙箱执行start, 或者隐藏的keep-alive应用重新渲染时时才根据浏览器url更新location 或者 将参数更新到url上\nexport function initRouteStateWithURL (\n appName: string,\n microLocation: MicroLocation,\n defaultPage?: string,\n): void {\n const microPath = getMicroPathFromURL(appName)\n if (microPath) {\n updateMicroLocation(appName, microPath, microLocation, 'auto')\n } else {\n updateBrowserURLWithLocation(appName, microLocation, defaultPage)\n }\n}\n\n/**\n * initialize browser information according to microLocation\n * called on sandbox.start or reshow of keep-alive app\n */\nexport function updateBrowserURLWithLocation (\n appName: string,\n microLocation: MicroLocation,\n defaultPage?: string,\n): void {\n // update microLocation with defaultPage\n if (defaultPage) updateMicroLocation(appName, defaultPage, microLocation, 'prevent')\n // attach microApp route info to browser URL\n updateBrowserURL(\n setMicroPathToURL(appName, microLocation),\n setMicroState(\n appName,\n globalEnv.rawWindow.history.state,\n null,\n ),\n )\n // trigger guards after change browser URL\n autoTriggerNavigationGuard(appName, microLocation)\n}\n\n/**\n * In any case, microPath & microState will be removed from browser, but location will be initialized only when keep-router-state is false\n * @param appName app name\n * @param url app url\n * @param microLocation location of microApp\n * @param keepRouteState keep-router-state is only used to control whether to clear the location of microApp\n */\nexport function clearRouteStateFromURL (\n appName: string,\n url: string,\n microLocation: MicroLocation,\n keepRouteState: boolean,\n): void {\n if (!keepRouteState) {\n const { pathname, search, hash } = createURL(url)\n updateMicroLocation(appName, pathname + search + hash, microLocation, 'prevent')\n }\n removeStateAndPathFromBrowser(appName)\n clearRouterWhenUnmount(appName)\n}\n\n/**\n * remove microState from history.state and remove microPath from browserURL\n * called on sandbox.stop or hidden of keep-alive app\n */\nexport function removeStateAndPathFromBrowser (appName: string): void {\n updateBrowserURL(\n removeMicroPathFromURL(appName),\n removeMicroState(appName, globalEnv.rawWindow.history.state),\n )\n}\n","import globalEnv from '../libs/global_env'\nimport {\n isFunction,\n isUndefined,\n isString,\n createURL,\n isURL,\n} from '../libs/utils'\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/API/fetch\n * Promise<Response> fetch(input[, init])\n * input: string/Request\n * init?: object\n * @param url app url\n * @param target proxy target\n */\nexport function createMicroFetch (url: string, target?: Window['fetch']): Window['fetch'] {\n if (!isUndefined(target) && !isFunction(target)) return target\n const rawFetch = target || globalEnv.rawWindow.fetch\n return function microFetch (\n input: RequestInfo | URL | string,\n init?: RequestInit,\n ...rests: unknown[]\n ): Promise<Response> {\n if (isString(input) || isURL(input)) {\n input = createURL(input, url).toString()\n }\n return rawFetch.call(globalEnv.rawWindow, input, init, ...rests)\n }\n}\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest\n * @param url app url\n * @param target proxy target\n */\nexport function createMicroXMLHttpRequest (url: string, target?: XMLHttpRequest): any {\n if (!isUndefined(target) && !isFunction(target)) return target\n const rawXMLHttpRequest = target || globalEnv.rawWindow.XMLHttpRequest\n return class MicroXMLHttpRequest extends rawXMLHttpRequest {\n open (method: string, reqUrl: string, ...rests: unknown[]): void {\n if ((isString(reqUrl) && !/^f(ile|tp):\\/\\//.test(reqUrl)) || isURL(reqUrl)) {\n reqUrl = createURL(reqUrl, url).toString()\n }\n super.open(method, reqUrl, ...rests)\n }\n }\n}\n\nexport interface EventSourceInstance {\n close(): void;\n}\n\nexport interface EventSourceApi {\n createMicroEventSource(appName: string, url: string, target?: EventSource): any\n clearMicroEventSource (appName: string): void\n}\n\nexport function useMicroEventSource (): EventSourceApi {\n let eventSourceMap: Map<string, Set<EventSourceInstance>>\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/EventSource\n * pc = new EventSource(url[, configuration])\n * url: string/Request\n * configuration?: object\n * @param url app url\n * @param target proxy target\n */\n function createMicroEventSource (appName: string, url: string, target?: EventSource): any {\n if (!isUndefined(target) && !isFunction(target)) return target\n const rawEventSource = target || globalEnv.rawWindow.EventSource\n return class MicroEventSource extends rawEventSource {\n constructor (\n eventSourceUrl: string | URL,\n eventSourceInitDict?: EventSourceInit,\n ...rests: unknown[]\n ) {\n if (isString(eventSourceUrl) || isURL(eventSourceUrl)) {\n eventSourceUrl = createURL(eventSourceUrl, url).toString()\n }\n super(eventSourceUrl, eventSourceInitDict, ...rests)\n\n if (eventSourceMap) {\n const eventSourceList = eventSourceMap.get(appName)\n if (eventSourceList) {\n eventSourceList.add(this)\n } else {\n eventSourceMap.set(appName, new Set([this]))\n }\n } else {\n eventSourceMap = new Map([[appName, new Set([this])]])\n }\n }\n\n close (): void {\n super.close()\n eventSourceMap.get(appName)?.delete(this)\n }\n }\n }\n\n function clearMicroEventSource (appName: string): void {\n const eventSourceList = eventSourceMap?.get(appName)\n if (eventSourceList?.size) {\n eventSourceList.forEach(item => {\n item.close()\n })\n eventSourceList.clear()\n }\n }\n\n return {\n createMicroEventSource,\n clearMicroEventSource,\n }\n}\n","import type {\n microAppWindowType,\n SandBoxInterface,\n plugins,\n MicroLocation,\n SandBoxAdapter,\n} from '@micro-app/types'\nimport {\n EventCenterForMicroApp,\n rebuildDataCenterSnapshot,\n recordDataCenterSnapshot,\n} from '../interact'\nimport globalEnv from '../libs/global_env'\nimport {\n listenUmountOfNestedApp,\n} from '../libs/nest_app'\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 assign,\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'\nimport createMicroRouter, {\n initRouteStateWithURL,\n clearRouteStateFromURL,\n addHistoryListener,\n removeStateAndPathFromBrowser,\n updateBrowserURLWithLocation,\n router,\n} from './router'\nimport Adapter, { fixBabelPolyfill6 } from './adapter'\nimport { createMicroFetch, useMicroEventSource, createMicroXMLHttpRequest } from './request'\nexport { router, getNoHashMicroPathFromURL } from './router'\n\nexport type MicroAppWindowDataType = {\n __MICRO_APP_ENVIRONMENT__: boolean,\n __MICRO_APP_NAME__: string,\n __MICRO_APP_URL__: 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}\nexport type MicroAppWindowType = Window & MicroAppWindowDataType\nexport type proxyWindow = WindowProxy & MicroAppWindowDataType\n\nconst { createMicroEventSource, clearMicroEventSource } = useMicroEventSource()\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 private removeHistoryListener!: CallableFunction\n private adapter: SandBoxAdapter\n /**\n * Scoped global Properties(Properties that can only get and set in microAppWindow, will not escape to rawWindow)\n * Fix https://github.com/micro-zoe/micro-app/issues/234\n */\n private scopeProperties: PropertyKey[] = []\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 public proxyWindow: proxyWindow // Proxy\n public microAppWindow = {} as MicroAppWindowType // Proxy target\n\n constructor (appName: string, url: string, useMemoryRouter = true) {\n this.adapter = new Adapter()\n // get scopeProperties and escapeProperties from plugins\n this.getSpecialProperties(appName)\n // create proxyWindow with Proxy(microAppWindow)\n this.proxyWindow = this.createProxyWindow(appName)\n // Rewrite global event listener & timeout\n assign(this, effect(appName, this.microAppWindow))\n // inject global properties\n this.initStaticGlobalKeys(this.microAppWindow, appName, url, useMemoryRouter)\n }\n\n public start (\n baseRoute: string,\n useMemoryRouter = true,\n defaultPage = '',\n ): void {\n if (!this.active) {\n this.active = true\n if (useMemoryRouter) {\n this.initRouteState(defaultPage)\n // unique listener of popstate event for sub app\n this.removeHistoryListener = addHistoryListener(\n this.proxyWindow.__MICRO_APP_NAME__,\n )\n } else {\n this.microAppWindow.__MICRO_APP_BASE_ROUTE__ = this.microAppWindow.__MICRO_APP_BASE_URL__ = baseRoute\n }\n\n // prevent the key deleted during sandBox.stop after rewrite\n this.initGlobalKeysWhenStart(\n this.microAppWindow,\n this.proxyWindow.__MICRO_APP_NAME__,\n this.proxyWindow.__MICRO_APP_URL__\n )\n\n if (++SandBox.activeCount === 1) {\n effectDocumentEvent()\n patchElementPrototypeMethods()\n listenUmountOfNestedApp()\n }\n\n fixBabelPolyfill6()\n }\n }\n\n public stop (keepRouteState: boolean, clearEventSource: boolean): void {\n if (this.active) {\n this.releaseEffect()\n this.microAppWindow.microApp.clearDataListener()\n this.microAppWindow.microApp.clearGlobalDataListener()\n\n if (this.removeHistoryListener) {\n this.clearRouteState(keepRouteState)\n // release listener of popstate\n this.removeHistoryListener()\n }\n\n if (clearEventSource) {\n clearMicroEventSource(this.proxyWindow.__MICRO_APP_NAME__)\n }\n\n /**\n * NOTE:\n * 1. injectedKeys and escapeKeys must be placed at the back\n * 2. if key in initial microAppWindow, and then rewrite, this key will be delete from microAppWindow when stop, and lost when restart\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 this.active = false\n }\n }\n\n // record umd snapshot before the first execution of umdHookMount\n public 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 public 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 & adapter\n * @param appName app name\n */\n private getSpecialProperties (appName: string): void {\n this.scopeProperties = this.scopeProperties.concat(this.adapter.staticScopeProperties)\n if (isPlainObject(microApp.plugins)) {\n this.commonActionForSpecialProperties(microApp.plugins.global)\n this.commonActionForSpecialProperties(microApp.plugins.modules?.[appName])\n }\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 (this.adapter.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 (\n this.adapter.staticEscapeProperties.includes(key) &&\n !Reflect.has(rawWindow, key)\n )\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 * @param useMemoryRouter whether use memory router\n */\n private initStaticGlobalKeys (\n microAppWindow: microAppWindowType,\n appName: string,\n url: string,\n useMemoryRouter: boolean,\n ): void {\n microAppWindow.__MICRO_APP_ENVIRONMENT__ = true\n microAppWindow.__MICRO_APP_NAME__ = appName\n microAppWindow.__MICRO_APP_URL__ = url\n microAppWindow.__MICRO_APP_PUBLIC_PATH__ = getEffectivePath(url)\n microAppWindow.__MICRO_APP_WINDOW__ = microAppWindow\n microAppWindow.rawWindow = globalEnv.rawWindow\n microAppWindow.rawDocument = globalEnv.rawDocument\n microAppWindow.microApp = assign(new EventCenterForMicroApp(appName), {\n removeDomScope,\n pureCreateElement,\n router,\n })\n this.setMappingPropertiesWithRawDescriptor(microAppWindow)\n if (useMemoryRouter) this.setMicroAppRouter(microAppWindow, appName, url)\n }\n\n /**\n * init global properties of microAppWindow when exec sandBox.start\n * @param microAppWindow micro window\n * @param appName app name\n * @param url app url\n */\n private initGlobalKeysWhenStart (\n microAppWindow: microAppWindowType,\n appName: string,\n url: string,\n ): void {\n microAppWindow.hasOwnProperty = (key: PropertyKey) => rawHasOwnProperty.call(microAppWindow, key) || rawHasOwnProperty.call(globalEnv.rawWindow, key)\n this.setHijackProperties(microAppWindow, appName)\n this.patchHijackRequest(microAppWindow, appName, url)\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 configurable: true,\n enumerable: true,\n get () {\n throttleDeferForSetAppName(appName)\n return globalEnv.rawDocument\n },\n },\n eval: {\n configurable: true,\n enumerable: false,\n get () {\n throttleDeferForSetAppName(appName)\n return modifiedEval || eval\n },\n set: (value) => {\n modifiedEval = value\n },\n },\n Image: {\n configurable: true,\n enumerable: false,\n get () {\n throttleDeferForSetAppName(appName)\n return modifiedImage || globalEnv.ImageProxy\n },\n set: (value) => {\n modifiedImage = value\n },\n },\n })\n }\n\n // rewrite fetch, XMLHttpRequest, EventSource\n private patchHijackRequest (microAppWindow: microAppWindowType, appName: string, url: string): void {\n let microFetch = createMicroFetch(url)\n let microXMLHttpRequest = createMicroXMLHttpRequest(url)\n let microEventSource = createMicroEventSource(appName, url)\n\n rawDefineProperties(microAppWindow, {\n fetch: {\n configurable: true,\n enumerable: true,\n get () {\n return microFetch\n },\n set (value) {\n microFetch = createMicroFetch(url, value)\n },\n },\n XMLHttpRequest: {\n configurable: true,\n enumerable: true,\n get () {\n return microXMLHttpRequest\n },\n set (value) {\n microXMLHttpRequest = createMicroXMLHttpRequest(url, value)\n },\n },\n EventSource: {\n configurable: true,\n enumerable: true,\n get () {\n return microEventSource\n },\n set (value) {\n microEventSource = createMicroEventSource(appName, url, value)\n },\n },\n })\n }\n\n // set location & history for memory router\n private setMicroAppRouter (microAppWindow: microAppWindowType, appName: string, url: string): void {\n const { microLocation, microHistory } = createMicroRouter(appName, url)\n rawDefineProperties(microAppWindow, {\n location: {\n configurable: false,\n enumerable: true,\n get () {\n return microLocation\n },\n set: (value) => {\n globalEnv.rawWindow.location = value\n },\n },\n history: {\n configurable: true,\n enumerable: true,\n get () {\n return microHistory\n },\n },\n })\n }\n\n private initRouteState (defaultPage: string): void {\n initRouteStateWithURL(\n this.proxyWindow.__MICRO_APP_NAME__,\n this.proxyWindow.location as MicroLocation,\n defaultPage,\n )\n }\n\n private clearRouteState (keepRouteState: boolean): void {\n clearRouteStateFromURL(\n this.proxyWindow.__MICRO_APP_NAME__,\n this.proxyWindow.__MICRO_APP_URL__,\n this.proxyWindow.location as MicroLocation,\n keepRouteState,\n )\n }\n\n public setRouteInfoForKeepAliveApp (): void {\n updateBrowserURLWithLocation(\n this.proxyWindow.__MICRO_APP_NAME__,\n this.proxyWindow.location as MicroLocation,\n )\n }\n\n public removeRouteInfoForKeepAliveApp (): void {\n removeStateAndPathFromBrowser(this.proxyWindow.__MICRO_APP_NAME__)\n }\n}\n","import microApp from '../micro_app'\nimport { logError, isFunction, removeDomScope, getRootContainer, assign } from '../libs/utils'\nimport { formatEventName } from '../sandbox/effect'\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 = 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(formatEventName(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 './libs/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 useMemoryRouter: boolean\n inline?: boolean\n baseroute?: string\n keepRouteState?: boolean\n container?: HTMLElement | ShadowRoot\n defaultPage?: string\n}\n\nexport default class CreateApp implements AppInterface {\n private state: string = appStates.CREATED\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 useMemoryRouter: boolean\n baseroute: string\n keepRouteState: boolean\n source: sourceType\n sandBox: SandBoxInterface | null = null\n defaultPage: string\n\n constructor ({\n name,\n url,\n ssrUrl,\n container,\n inline,\n scopecss,\n useSandbox,\n useMemoryRouter,\n baseroute,\n keepRouteState,\n defaultPage,\n }: CreateAppParam) {\n this.container = container ?? null\n this.inline = inline ?? false\n this.baseroute = baseroute ?? ''\n this.keepRouteState = keepRouteState ?? false\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.useMemoryRouter = this.useSandbox && useMemoryRouter\n this.defaultPage = defaultPage ?? ''\n\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, this.useMemoryRouter))\n }\n\n // Load resources\n loadSourceCode (): void {\n this.state = appStates.LOADING\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.LOADED\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_FAILED\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 * @param keepRouteState keep route state when unmount, default is false\n */\n mount (\n container?: HTMLElement | ShadowRoot,\n inline?: boolean,\n baseroute?: string,\n keepRouteState?: boolean,\n defaultPage?: string,\n ): void {\n if (isBoolean(inline)) this.inline = inline\n // keepRouteState effective on unmount\n if (isBoolean(keepRouteState)) this.keepRouteState = keepRouteState\n this.container = this.container ?? container!\n this.baseroute = baseroute ?? this.baseroute\n this.defaultPage = defaultPage ?? this.defaultPage\n\n if (this.loadSourceLevel !== 2) {\n this.state = appStates.LOADING\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, this.useMemoryRouter, this.defaultPage)\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 * NOTE: Do not add any params on account of unmountApp\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_FAILED) {\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 /**\n * this.container maybe contains micro-app element, stop sandbox should exec after cloneContainer\n * NOTE:\n * 1. if destroy is true, clear route state\n * 2. umd mode and keep-alive will not clear EventSource\n */\n this.sandBox?.stop(\n this.keepRouteState && !destroy,\n !this.umdMode || destroy,\n )\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 // called after lifeCyclesEvent\n this.sandBox?.removeRouteInfoForKeepAliveApp()\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 // called before lifeCyclesEvent\n this.sandBox?.setRouteInfoForKeepAliveApp()\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 createURL,\n} from './libs/utils'\nimport {\n ObservedAttrName,\n appStates,\n lifeCycles,\n keepAliveStates,\n} from './libs/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'\nimport { getNoHashMicroPathFromURL, router } from './sandbox'\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 const app = appInstanceMap.get(this.appName)\n if (\n app &&\n app.getAppState() !== appStates.UNMOUNT &&\n app.getKeepAliveState() !== keepAliveStates.KEEP_ALIVE_HIDDEN\n ) {\n // keep-alive\n if (this.getKeepAliveModeResult()) {\n this.handleHiddenKeepAliveApp()\n } else {\n this.handleUnmount(this.getDestroyCompatibleResult())\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.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 this.updateSsrUrl(this.appUrl)\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 * do not add judgment of formatAttrUrl === this.appUrl\n */\n this.updateSsrUrl(formatAttrUrl)\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 this.getDisposeResult('keep-router-state'),\n this.getDefaultPageValue(),\n ))\n }\n\n // create app instance\n private handleCreateApp (): void {\n /**\n * actions for destroy 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 useMemoryRouter: !this.getDisposeResult('disable-memory-router'),\n baseroute: this.getBaseRouteCompatible(),\n keepRouteState: this.getDisposeResult('keep-router-state'),\n defaultPage: this.getDefaultPageValue(),\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 ) {\n app.unmount(\n destroy,\n unmountCb,\n )\n }\n }\n\n // hidden app when disconnectedCallback called with keep-alive\n private handleHiddenKeepAliveApp (): void {\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): void {\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 * change ssrUrl in ssr mode\n */\n private updateSsrUrl (baseUrl: string): void {\n if (this.getDisposeResult('ssr')) {\n if (this.getDisposeResult('disable-memory-router')) {\n const rawLocation = globalEnv.rawWindow.location\n this.ssrUrl = CompletionPath(rawLocation.pathname + rawLocation.search, baseUrl)\n } else {\n // get path from browser URL\n let targetPath = getNoHashMicroPathFromURL(this.appName, baseUrl)\n const defaultPagePath = this.getDefaultPageValue()\n if (!targetPath && defaultPagePath) {\n const targetLocation = createURL(defaultPagePath, baseUrl)\n targetPath = targetLocation.origin + targetLocation.pathname + targetLocation.search\n }\n this.ssrUrl = targetPath\n }\n } else if (this.ssrUrl) {\n this.ssrUrl = ''\n }\n }\n\n /**\n * get config of default page\n */\n private getDefaultPageValue (): string {\n return router.getDefaultPage(this.appName) ??\n this.getAttribute('default-page') ??\n this.getAttribute('defaultPage') ??\n ''\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 * disableMemoryRouter?: boolean,\n * },\n * ...\n * ])\n * Note:\n * 1: preFetch is asynchronous and is performed only when the browser is idle\n * 2: disableScopecss, disableSandbox, disableMemoryRouter 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())\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 useMemoryRouter: !(prefetchApp.disableMemoryRouter ?? microApp.disableMemoryRouter),\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\n// TODO: requestIdleCallback for every file\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 {\n OptionsType,\n MicroAppConfigType,\n lifeCyclesType,\n plugins,\n fetchType,\n AppInterface,\n Router,\n} from '@micro-app/types'\nimport { defineElement } from './micro_app_element'\nimport preFetch, { getGlobalAssets } from './prefetch'\nimport {\n logError,\n logWarn,\n isFunction,\n isBrowser,\n isPlainObject,\n formatAppName,\n getRootContainer,\n} from './libs/utils'\nimport { EventCenterForBaseApp } from './interact'\nimport { initGlobalEnv } from './libs/global_env'\nimport { appInstanceMap } from './create_app'\nimport { appStates, keepAliveStates } from './libs/constants'\nimport { router } from './sandbox'\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\ntype unmountAppOptions = {\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 unmountAppOptions\n * @returns Promise<void>\n */\nexport function unmountApp (appName: string, options?: unmountAppOptions): 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\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?: unmountAppOptions): 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 disableMemoryRouter?: boolean\n ssr?: boolean\n lifeCycles?: lifeCyclesType\n plugins?: plugins\n fetch?: fetchType\n preFetch = preFetch\n router: Router = router\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.disableMemoryRouter = options.disableMemoryRouter\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":["formatEventName","oAssign"],"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/loader/html.ts","../src/sandbox/scoped_css.ts","../src/source/load_event.ts","../src/source/source_center.ts","../src/source/links.ts","../src/sandbox/adapter.ts","../src/source/patch.ts","../src/libs/global_env.ts","../src/source/scripts.ts","../src/source/index.ts","../src/interact/event_center.ts","../src/interact/index.ts","../src/app_manager.ts","../src/libs/nest_app.ts","../src/sandbox/bind_function.ts","../src/sandbox/effect.ts","../src/sandbox/router/core.ts","../src/sandbox/router/event.ts","../src/sandbox/router/history.ts","../src/sandbox/router/api.ts","../src/sandbox/router/location.ts","../src/sandbox/router/index.ts","../src/sandbox/request.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 {\n Func,\n LocationQueryObject,\n LocationQueryValue,\n MicroLocation,\n AttrsType,\n fiberTasks,\n} 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\nexport const noop = () => {}\nexport const noopFalse = () => false\n\n// Array.isArray\nexport const isArray = Array.isArray\n// Object.assign\nexport const assign = Object.assign\n\n// Object prototype methods\nexport const rawDefineProperty = Object.defineProperty\nexport const rawDefineProperties = Object.defineProperties\nexport const rawHasOwnProperty = Object.prototype.hasOwnProperty\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 Number\nexport function isNumber (target: unknown): target is Number {\n return typeof target === 'number'\n}\n\n// is function\nexport function isFunction (target: unknown): target is Function {\n return typeof target === 'function'\n}\n\n// is PlainObject\nexport function isPlainObject <T = Record<PropertyKey, unknown>> (target: unknown): target is T {\n return toString.call(target) === '[object Object]'\n}\n\n// is Object\nexport function isObject (target: unknown): target is Object {\n return typeof target === 'object'\n}\n\n// is Promise\nexport function isPromise (target: unknown): target is Promise<unknown> {\n return toString.call(target) === '[object Promise]'\n}\n\n// is bind function\nexport function isBoundFunction (target: unknown): boolean {\n return isFunction(target) && target.name.indexOf('bound ') === 0 && !target.hasOwnProperty('prototype')\n}\n\n// is constructor function\nexport function isConstructor (target: unknown): boolean {\n if (isFunction(target)) {\n const targetStr = target.toString()\n return (\n target.prototype?.constructor === target &&\n Object.getOwnPropertyNames(target.prototype).length > 1\n ) ||\n /^function\\s+[A-Z]/.test(targetStr) ||\n /^class\\s+/.test(targetStr)\n }\n return false\n}\n\n// is ShadowRoot\nexport function isShadowRoot (target: unknown): target is ShadowRoot {\n return typeof ShadowRoot !== 'undefined' && target instanceof ShadowRoot\n}\n\nexport function isURL (target: unknown): target is URL {\n return target instanceof URL\n}\n\nexport function isElement (target: unknown): target is Element {\n return target instanceof Element\n}\n\nexport function isNode (target: unknown): target is Node {\n return target instanceof Node\n}\n\n// is ProxyDocument\nexport function isProxyDocument (target: unknown): target is Document {\n return toString.call(target) === '[object ProxyDocument]'\n}\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: unknown[]\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: unknown[]\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: unknown[]): void {\n Promise.resolve().then(fn.bind(null, ...args))\n}\n\n/**\n * create URL as MicroLocation\n */\nexport const createURL = (function (): (path: string | URL, base?: string) => MicroLocation {\n class Location extends URL {}\n return (path: string | URL, base?: string): MicroLocation => {\n return (base ? new Location('' + path, base) : new Location('' + path)) as MicroLocation\n }\n})()\n\n/**\n * Add address protocol\n * @param url address\n */\nexport function addProtocol (url: string): string {\n return url.startsWith('//') ? `${globalThis.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 } = createURL(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 * 6. router api (push, replace)\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 } = createURL(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 createURL(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({ data: res, index: i })\n isFinished()\n }).catch((err: Error) => {\n errorCb({ error: err, index: i })\n isFinished()\n })\n } else {\n successCb({ data: p, index: i })\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 * Wrap requestIdleCallback with promise\n * Exec callback when browser idle\n */\nexport function promiseRequestIdle (callback: CallableFunction): Promise<void> {\n return new Promise((resolve) => {\n requestIdleCallback(() => {\n callback(resolve)\n })\n })\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 element.__PURE_ELEMENT__ = true\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 /^title$/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\nexport function isFireFox (): boolean {\n return navigator.userAgent.indexOf('Firefox') > -1\n}\n\n/**\n * Transforms a queryString into object.\n * @param search - search string to parse\n * @returns a query object\n */\nexport function parseQuery (search: string): LocationQueryObject {\n const result: LocationQueryObject = {}\n const queryList = search.split('&')\n\n // we will not decode the key/value to ensure that the values are consistent when update URL\n for (const queryItem of queryList) {\n const eqPos = queryItem.indexOf('=')\n const key = eqPos < 0 ? queryItem : queryItem.slice(0, eqPos)\n const value = eqPos < 0 ? null : queryItem.slice(eqPos + 1)\n\n if (key in result) {\n let currentValue = result[key]\n if (!isArray(currentValue)) {\n currentValue = result[key] = [currentValue]\n }\n currentValue.push(value)\n } else {\n result[key] = value\n }\n }\n\n return result\n}\n\n/**\n * Transforms an object to query string\n * @param queryObject - query object to stringify\n * @returns query string without the leading `?`\n */\nexport function stringifyQuery (queryObject: LocationQueryObject): string {\n let result = ''\n\n for (const key in queryObject) {\n const value = queryObject[key]\n if (isNull(value)) {\n result += (result.length ? '&' : '') + key\n } else {\n const valueList: LocationQueryValue[] = isArray(value) ? value : [value]\n\n valueList.forEach(value => {\n if (!isUndefined(value)) {\n result += (result.length ? '&' : '') + key\n if (!isNull(value)) result += '=' + value\n }\n })\n }\n }\n\n return result\n}\n\n/**\n * Register or unregister callback/guard with Set\n */\nexport function useSetRecord<T> () {\n const handlers: Set<T> = new Set()\n\n function add (handler: T): () => boolean {\n handlers.add(handler)\n return (): boolean => {\n if (handlers.has(handler)) return handlers.delete(handler)\n return false\n }\n }\n\n return {\n add,\n list: () => handlers,\n }\n}\n\n/**\n * record data with Map\n */\nexport function useMapRecord<T> () {\n const data: Map<PropertyKey, T> = new Map()\n\n function add (key: PropertyKey, value: T): () => boolean {\n data.set(key, value)\n return (): boolean => {\n if (data.has(key)) return data.delete(key)\n return false\n }\n }\n\n return {\n add,\n get: (key: PropertyKey) => data.get(key),\n delete: (key: PropertyKey): boolean => {\n if (data.has(key)) return data.delete(key)\n return false\n }\n }\n}\n\nexport function getAttributes (element: Element): AttrsType {\n const attr = element.attributes\n const attrMap: AttrsType = new Map()\n for (let i = 0; i < attr.length; i++) {\n attrMap.set(attr[i].name, attr[i].value)\n }\n return attrMap\n}\n\n/**\n * if fiberTasks exist, wrap callback with promiseRequestIdle\n * if not, execute callback\n * @param fiberTasks fiber task list\n * @param callback action callback\n */\nexport function injectFiberTask (fiberTasks: fiberTasks, callback: CallableFunction): void {\n if (fiberTasks) {\n fiberTasks.push(() => promiseRequestIdle((resolve: PromiseConstructor['resolve']) => {\n callback()\n resolve()\n }))\n } else {\n callback()\n }\n}\n\n/**\n * serial exec fiber task of link, style, script\n * @param tasks task array or null\n */\nexport function serialExecFiberTasks (tasks: fiberTasks): Promise<void> | null {\n return tasks?.reduce((pre, next) => pre.then(next), Promise.resolve()) || null\n}\n\n/**\n * inline script start with inline-xxx\n * @param address source address\n */\nexport function isInlineScript (address: string): boolean {\n return address.startsWith('inline-')\n}\n\n/**\n * call function with try catch\n * @param fn target function\n * @param appName app.name\n * @param args arguments\n */\nexport function callFnWithTryCatch (\n fn: Func | null,\n appName: string,\n msgSuffix: string,\n ...args: unknown[]\n): void {\n try {\n isFunction(fn) && fn(...args)\n } catch (e) {\n logError(`an error occurred in app ${appName} ${msgSuffix} \\n`, null, e)\n }\n}\n","export enum ObservedAttrName {\n NAME = 'name',\n URL = 'url',\n}\n\n// app status\nexport enum appStates {\n CREATED = 'created',\n LOADING = 'loading',\n LOADED = 'loaded',\n LOAD_FAILED = 'load_failed',\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// global event of child app\nexport enum microGlobalEvent {\n ONMOUNT = 'onmount',\n ONUNMOUNT = 'onunmount',\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\n// micro-app config\nexport enum MicroAppConfig {\n DESTROY = 'destroy',\n DESTORY = 'destory',\n INLINE = 'inline',\n DISABLESCOPECSS = 'disableScopecss',\n DISABLESANDBOX = 'disableSandbox',\n DISABLE_SCOPECSS = 'disable-scopecss',\n DISABLE_SANDBOX = 'disable-sandbox',\n DISABLE_MEMORY_ROUTER = 'disable-memory-router',\n DISABLE_PATCH_REQUEST = 'disable-patch-request',\n KEEP_ROUTER_STATE = 'keep-router-state',\n HIDDEN_ROUTER = 'hidden-router',\n KEEP_ALIVE = 'keep-alive',\n CLEAR_DATA ='clear-data',\n ESMODULE = 'esmodule',\n SSR = 'ssr',\n FIBER = 'fiber',\n}\n\nexport const PREFETCH_LEVEL: number[] = [1, 2, 3]\n\n/**\n * global key must be static key, they can not rewrite\n * e.g.\n * window.Promise = newValue\n * new Promise ==> still get old value, not newValue, because they are cached by top function\n * NOTE:\n * 1. Do not add fetch, XMLHttpRequest, EventSource\n */\nexport const globalKeyToBeCached = 'window,self,globalThis,document,Document,Array,Object,String,Boolean,Math,Number,Symbol,Date,Function,Proxy,WeakMap,WeakSet,Set,Map,Reflect,Element,Node,RegExp,Error,TypeError,JSON,isNaN,parseFloat,parseInt,performance,console,decodeURI,encodeURI,decodeURIComponent,encodeURIComponent,navigator,undefined,location,history'\n","import { isFunction, removeDomScope } 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 fetch options\n */\nexport function fetchSource (url: string, appName: string | null = null, options = {}): Promise<string> {\n /**\n * When child navigate to new async page, click event will scope dom to child and then fetch new source\n * this may cause error when fetch rewrite by baseApp\n * e.g.\n * baseApp: <script crossorigin src=\"https://sgm-static.jd.com/sgm-2.8.0.js\" name=\"SGMH5\" sid=\"6f88a6e4ba4b4ae5acef2ec22c075085\" appKey=\"jdb-adminb2b-pc\"></script>\n */\n removeDomScope()\n if (isFunction(microApp.options.fetch)) {\n return microApp.options.fetch(url, options, appName)\n }\n // Don’t use globalEnv.rawWindow.fetch, will cause sgm-2.8.0.js throw error in nest app\n return window.fetch(url, options).then((res: Response) => {\n return res.text()\n })\n}\n","import { AppInterface, plugins } from '@micro-app/types'\nimport { fetchSource } from '../fetch'\nimport { isFunction, isPlainObject, logError } from '../../libs/utils'\nimport microApp from '../../micro_app'\n\nexport interface IHTMLLoader {\n run (app: AppInterface, successCb: CallableFunction): void\n}\n\nexport class HTMLLoader implements IHTMLLoader {\n private static instance: HTMLLoader;\n public static getInstance (): HTMLLoader {\n if (!this.instance) {\n this.instance = new HTMLLoader()\n }\n return this.instance\n }\n\n /**\n * run logic of load and format html\n * @param successCb success callback\n * @param errorCb error callback, type: (err: Error, meetFetchErr: boolean) => void\n */\n public run (app: AppInterface, successCb: CallableFunction): void {\n const appName = app.name\n const htmlUrl = app.ssrUrl || app.url\n fetchSource(htmlUrl, appName, { 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, appName)\n }\n\n htmlStr = this.formatHTML(htmlUrl, htmlStr, appName)\n\n successCb(htmlStr, app)\n }).catch((e) => {\n logError(`Failed to fetch data from ${app.url}, micro-app stop rendering`, appName, e)\n app.onLoadError(e)\n })\n }\n\n private formatHTML (htmlUrl: string, htmlStr: string, appName: string) {\n return this.processHtml(htmlUrl, htmlStr, appName, microApp.options.plugins)\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\n private processHtml (url: string, code: string, appName: string, plugins: plugins | void): string {\n if (!plugins) return code\n\n const mergedPlugins: NonNullable<plugins['global']> = []\n plugins.global && mergedPlugins.push(...plugins.global)\n plugins.modules?.[appName] && mergedPlugins.push(...plugins.modules[appName])\n\n if (mergedPlugins.length > 0) {\n return mergedPlugins.reduce((preCode, plugin) => {\n if (isPlainObject(plugin) && isFunction(plugin.processHtml)) {\n return plugin.processHtml!(preCode, url)\n }\n return preCode\n }, code)\n }\n return code\n }\n}\n","/* eslint-disable no-useless-escape, no-cond-assign */\nimport type { AppInterface } from '@micro-app/types'\nimport { CompletionPath, getLinkFileDir, logError, trim, isFireFox } 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 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 isFireFox() ? decodeURIComponent(this.result) : 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 selectors = this.formatSelector(true)\n\n // reset scopecssDisableNextLine\n this.scopecssDisableNextLine = false\n\n if (!selectors) return parseError('selector missing', this.linkPath)\n\n this.recordResult(selectors)\n\n this.matchComments()\n\n this.styleDeclarations()\n\n this.matchLeadingSpaces()\n\n return true\n }\n\n private formatSelector (skip: boolean): false | string {\n const m = this.commonMatch(/^[^{]+/, skip)\n if (!m) return false\n\n return m[0].replace(/(^|,[\\n\\s]*)([^,]+)/g, (_, separator, selector) => {\n selector = trim(selector)\n if (!(\n this.scopecssDisableNextLine ||\n (\n this.scopecssDisable && (\n !this.scopecssDisableSelectors.length ||\n this.scopecssDisableSelectors.includes(selector)\n )\n ) ||\n rootSelectorREG.test(selector)\n )) {\n if (bodySelectorREG.test(selector)) {\n selector = selector.replace(bodySelectorREG, this.prefix + ' micro-app-body')\n } else {\n selector = this.prefix + ' ' + selector\n }\n }\n\n return separator + selector\n })\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.recordResult(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 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 // :global is CSS Modules rule, it will be converted to normal syntax\n // private matchGlobalRule (): boolean | void {\n // if (this.cssText[0] !== ':') return false\n // // reset scopecssDisableNextLine\n // this.scopecssDisableNextLine = false\n\n // return this.globalRule()\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(/^[^{]+/)) 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(false)\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.createMatcherForRuleWithChildRule(/^@media *([^{]+)/, '@media')\n // https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule\n private supportsRule = this.createMatcherForRuleWithChildRule(/^@supports *([^{]+)/, '@supports')\n private documentRule = this.createMatcherForRuleWithChildRule(/^@([-\\w]+)?document *([^{]+)/, '@document')\n private hostRule = this.createMatcherForRuleWithChildRule(/^@host\\s*/, '@host')\n // :global is CSS Modules rule, it will be converted to normal syntax\n // private globalRule = this.createMatcherForRuleWithChildRule(/^:global([^{]*)/, ':global')\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, :global\n private createMatcherForRuleWithChildRule (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 true\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.recordResult(`/*${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.recordResult(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 // splice string\n private recordResult (strFragment: string): void {\n // Firefox performance degradation when string contain special characters, see https://github.com/micro-zoe/micro-app/issues/256\n if (isFireFox()) {\n this.result += encodeURIComponent(strFragment)\n } else {\n this.result += strFragment\n }\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 linkPath?: string,\n): HTMLStyleElement {\n if (app.scopecss) {\n const prefix = createPrefix(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 linkPath,\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 linkPath,\n )\n }\n })\n\n observer.observe(styleElement, { childList: true })\n }\n }\n\n return styleElement\n}\n\nexport function createPrefix (appName: string, reg = false): string {\n const regCharacter = reg ? '\\\\' : ''\n return `${microApp.tagName}${regCharacter}[name=${appName}${regCharacter}]`\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 { LinkSourceInfo, ScriptSourceInfo, SourceAddress } from '@micro-app/types'\nimport { isInlineScript } from '../libs/utils'\n\nexport interface SourceCenter<L = LinkSourceInfo, S = ScriptSourceInfo> {\n link: {\n setInfo (address: SourceAddress, info: L): void,\n getInfo (address: SourceAddress): L | null,\n hasInfo (address: SourceAddress): boolean,\n deleteInfo (address: SourceAddress): boolean,\n },\n script: {\n setInfo (address: SourceAddress, info: S): void,\n getInfo (address: SourceAddress): S | null,\n hasInfo (address: SourceAddress): boolean,\n deleteInfo (address: SourceAddress): boolean,\n deleteInlineInfo (addressList: Set<SourceAddress>): void,\n }\n}\n\nexport type LinkListType = Map<SourceAddress, LinkSourceInfo>\nexport type ScriptListType = Map<SourceAddress, ScriptSourceInfo>\n\n/**\n * SourceCenter is a resource management center\n * All html, js, css will be recorded and processed here\n * NOTE:\n * 1. All resources are global and shared between apps\n * 2. Pay attention to the case of html with parameters\n * 3. The resource is first processed by the plugin\n */\nfunction createSourceCenter (): SourceCenter {\n const linkList: LinkListType = new Map()\n const scriptList: ScriptListType = new Map()\n\n // setInterval(() => {\n // console.log(linkList, scriptList)\n // }, 10000);\n\n function createSourceHandler <P, T extends Map<SourceAddress, P>> (targetList: T): SourceCenter<P>['link'] | SourceCenter<LinkSourceInfo, P>['script'] {\n return {\n setInfo (address: SourceAddress, info: P): void {\n targetList.set(address, info)\n },\n getInfo (address: SourceAddress): P | null {\n return targetList.get(address) ?? null\n },\n hasInfo (address: SourceAddress): boolean {\n return targetList.has(address)\n },\n deleteInfo (address: SourceAddress): boolean {\n return targetList.delete(address)\n }\n }\n }\n\n return {\n link: createSourceHandler<LinkSourceInfo, LinkListType>(linkList),\n script: {\n ...createSourceHandler<ScriptSourceInfo, ScriptListType>(scriptList),\n deleteInlineInfo (addressList: Set<SourceAddress>): void {\n addressList.forEach((address) => {\n if (isInlineScript(address)) {\n scriptList.delete(address)\n }\n })\n }\n },\n }\n}\n\nexport default createSourceCenter()\n","import type {\n AppInterface,\n LinkSourceInfo,\n AttrsType,\n fiberTasks,\n} from '@micro-app/types'\nimport { fetchSource } from './fetch'\nimport {\n CompletionPath,\n promiseStream,\n pureCreateElement,\n defer,\n logError,\n getAttributes,\n injectFiberTask,\n serialExecFiberTasks,\n} from '../libs/utils'\nimport scopedCSS, { createPrefix } from '../sandbox/scoped_css'\nimport {\n dispatchOnLoadEvent,\n dispatchOnErrorEvent,\n} from './load_event'\nimport sourceCenter from './source_center'\n\n/**\n *\n * @param appName app.name\n * @param linkInfo linkInfo of current address\n */\nfunction getExistParseCode (\n appName: string,\n prefix: string,\n linkInfo: LinkSourceInfo,\n): string | void {\n const appSpace = linkInfo.appSpace\n for (const item in appSpace) {\n if (item !== appName) {\n const appSpaceData = appSpace[item]\n if (appSpaceData.parsedCode) {\n return appSpaceData.parsedCode.replaceAll(new RegExp(createPrefix(item, true), 'g'), prefix)\n }\n }\n }\n}\n\n// transfer the attributes on the link to convertStyle\nfunction setConvertStyleAttr (convertStyle: HTMLStyleElement, attrs: AttrsType): void {\n attrs.forEach((value, key) => {\n if (key === 'rel') return\n if (key === 'href') key = 'data-origin-href'\n convertStyle.setAttribute(key, value)\n })\n}\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 let linkInfo = sourceCenter.link.getInfo(href)\n const appSpaceData = {\n attrs: getAttributes(link),\n }\n if (!linkInfo) {\n linkInfo = {\n code: '',\n appSpace: {\n [app.name]: appSpaceData,\n }\n }\n } else {\n linkInfo.appSpace[app.name] = linkInfo.appSpace[app.name] || appSpaceData\n }\n\n sourceCenter.link.setInfo(href, linkInfo)\n\n if (!isDynamic) {\n app.source.links.add(href)\n replaceComment = document.createComment(`link element with href=${href} move to micro-app-head as style element`)\n linkInfo.appSpace[app.name].placeholder = replaceComment\n } else {\n return { address: href, linkInfo }\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 fiberStyleResult: Promise<void> | null,\n): void {\n const styleList: Array<string> = Array.from(app.source.links)\n const fetchLinkPromise: Array<Promise<string> | string> = styleList.map((address) => {\n const linkInfo = sourceCenter.link.getInfo(address)!\n return linkInfo.code ? linkInfo.code : fetchSource(address, app.name)\n })\n\n const fiberLinkTasks: fiberTasks = app.isPrefetch || app.fiber ? [] : null\n\n promiseStream<string>(fetchLinkPromise, (res: { data: string, index: number }) => {\n injectFiberTask(fiberLinkTasks, () => fetchLinkSuccess(\n styleList[res.index],\n res.data,\n microAppHead,\n app,\n ))\n }, (err: {error: Error, index: number}) => {\n logError(err, app.name)\n }, () => {\n if (fiberLinkTasks) {\n /**\n * 1. If fiberLinkTasks is not null, fiberStyleResult is not null\n * 2. Download link source while processing style\n * 3. Process style first, and then process link\n */\n fiberStyleResult!.then(() => {\n fiberLinkTasks.push(() => Promise.resolve(app.onLoad(wrapElement)))\n serialExecFiberTasks(fiberLinkTasks)\n })\n } else {\n app.onLoad(wrapElement)\n }\n })\n}\n\n/**\n * Fetch link succeeded, replace placeholder with style tag\n * NOTE:\n * 1. Only exec when init, no longer exec when remount\n * 2. Only handler html link element, not dynamic link or style\n * 3. The same prefix can reuse parsedCode\n * 4. Async exec with requestIdleCallback in prefetch or fiber\n * 5. appSpace[app.name].placeholder/attrs must exist\n * @param address resource address\n * @param code link source code\n * @param microAppHead micro-app-head\n * @param app app instance\n */\nexport function fetchLinkSuccess (\n address: string,\n code: string,\n microAppHead: Element,\n app: AppInterface,\n): void {\n /**\n * linkInfo must exist, but linkInfo.code not\n * so we set code to linkInfo.code\n */\n const linkInfo = sourceCenter.link.getInfo(address)!\n linkInfo.code = code\n const appSpaceData = linkInfo.appSpace[app.name]\n const placeholder = appSpaceData.placeholder!\n /**\n * When prefetch app is replaced by a new app in the processing phase, since the linkInfo is common, when the linkInfo of the prefetch app is processed, it may have already been processed.\n * This causes placeholder to be possibly null\n * e.g.\n * 1. prefetch app.url different from <micro-app></micro-app>\n * 2. prefetch param different from <micro-app></micro-app>\n */\n if (placeholder) {\n const convertStyle = pureCreateElement('style')\n\n handleConvertStyle(\n app,\n address,\n convertStyle,\n linkInfo,\n appSpaceData.attrs,\n )\n\n if (placeholder.parentNode) {\n placeholder.parentNode.replaceChild(convertStyle, placeholder)\n } else {\n microAppHead.appendChild(convertStyle)\n }\n\n // clear placeholder\n appSpaceData.placeholder = null\n }\n}\n\n/**\n * Get parsedCode, update convertStyle\n * Actions:\n * 1. get scope css (through scopedCSS or oldData)\n * 2. record parsedCode\n * 3. set parsedCode to convertStyle if need\n * @param app app instance\n * @param address resource address\n * @param convertStyle converted style\n * @param linkInfo linkInfo in sourceCenter\n * @param attrs attrs of link\n */\nexport function handleConvertStyle (\n app: AppInterface,\n address: string,\n convertStyle: HTMLStyleElement,\n linkInfo: LinkSourceInfo,\n attrs: AttrsType,\n): void {\n if (app.scopecss) {\n const appSpaceData = linkInfo.appSpace[app.name]\n appSpaceData.prefix = appSpaceData.prefix || createPrefix(app.name)\n if (!appSpaceData.parsedCode) {\n const existParsedCode = getExistParseCode(app.name, appSpaceData.prefix, linkInfo)\n if (!existParsedCode) {\n convertStyle.textContent = linkInfo.code\n scopedCSS(convertStyle, app, address)\n } else {\n convertStyle.textContent = existParsedCode\n }\n appSpaceData.parsedCode = convertStyle.textContent\n } else {\n convertStyle.textContent = appSpaceData.parsedCode\n }\n } else {\n convertStyle.textContent = linkInfo.code\n }\n\n setConvertStyleAttr(convertStyle, attrs)\n}\n\n/**\n * Handle css of dynamic link\n * @param address link address\n * @param app app\n * @param linkInfo linkInfo\n * @param originLink origin link element\n */\nexport function formatDynamicLink (\n address: string,\n app: AppInterface,\n linkInfo: LinkSourceInfo,\n originLink: HTMLLinkElement,\n): HTMLStyleElement {\n const convertStyle = pureCreateElement('style')\n\n const handleDynamicLink = () => {\n handleConvertStyle(\n app,\n address,\n convertStyle,\n linkInfo,\n linkInfo.appSpace[app.name].attrs,\n )\n dispatchOnLoadEvent(originLink)\n }\n\n if (linkInfo.code) {\n defer(handleDynamicLink)\n } else {\n fetchSource(address, app.name).then((data: string) => {\n linkInfo.code = data\n handleDynamicLink()\n }).catch((err) => {\n logError(err, app.name)\n dispatchOnErrorEvent(originLink)\n })\n }\n\n return convertStyle\n}\n","import type { SandBoxAdapter, AppInterface } from '@micro-app/types'\nimport globalEnv from '../libs/global_env'\nimport { defer, rawDefineProperty } from '../libs/utils'\n\nexport default class Adapter implements SandBoxAdapter {\n constructor () {\n this.injectReactHRMProperty()\n }\n\n // keys that can only assigned to rawWindow\n public escapeSetterKeyList: PropertyKey[] = [\n 'location',\n ]\n\n // keys that can escape to rawWindow\n public staticEscapeProperties: PropertyKey[] = [\n 'System',\n '__cjsWrapper',\n ]\n\n // keys that scoped in child app\n public staticScopeProperties: PropertyKey[] = [\n 'webpackJsonp',\n 'webpackHotUpdate',\n 'Vue',\n ]\n\n // adapter for react\n private injectReactHRMProperty (): void {\n if (__DEV__) {\n // react child in non-react env\n this.staticEscapeProperties.push('__REACT_ERROR_OVERLAY_GLOBAL_HOOK__')\n // in react parent\n if (globalEnv.rawWindow.__REACT_ERROR_OVERLAY_GLOBAL_HOOK__) {\n this.staticScopeProperties = this.staticScopeProperties.concat([\n '__REACT_ERROR_OVERLAY_GLOBAL_HOOK__',\n '__reactRefreshInjected',\n ])\n }\n }\n }\n}\n\n// Fix conflict of babel-polyfill@6.x\nexport function fixBabelPolyfill6 (): void {\n if (globalEnv.rawWindow._babelPolyfill) globalEnv.rawWindow._babelPolyfill = false\n}\n\n/**\n * Fix error of hot reload when parent&child created by create-react-app in development environment\n * Issue: https://github.com/micro-zoe/micro-app/issues/382\n */\nexport function fixReactHMRConflict (app: AppInterface): void {\n if (__DEV__) {\n const rawReactErrorHook = globalEnv.rawWindow.__REACT_ERROR_OVERLAY_GLOBAL_HOOK__\n const childReactErrorHook = app.sandBox?.proxyWindow.__REACT_ERROR_OVERLAY_GLOBAL_HOOK__\n if (rawReactErrorHook && childReactErrorHook) {\n globalEnv.rawWindow.__REACT_ERROR_OVERLAY_GLOBAL_HOOK__ = childReactErrorHook\n defer(() => {\n globalEnv.rawWindow.__REACT_ERROR_OVERLAY_GLOBAL_HOOK__ = rawReactErrorHook\n })\n }\n }\n}\n\n/**\n * reDefine parentNode of html\n * Scenes:\n * 1. element-ui popover.js\n * if (html.parentNode === document) ...\n */\nexport function throttleDeferForParentNode (proxyDocument: Document): void {\n const html = globalEnv.rawDocument.firstElementChild\n if (html?.parentNode === globalEnv.rawDocument) {\n setParentNode(html, proxyDocument)\n defer(() => {\n setParentNode(html, globalEnv.rawDocument)\n })\n }\n}\n\n/**\n * Modify the point of parentNode\n * @param target target Node\n * @param value parentNode\n */\nexport function setParentNode (target: Node, value: Document | Element): void {\n const descriptor = Object.getOwnPropertyDescriptor(target, 'parentNode')\n if (!descriptor || descriptor.configurable) {\n rawDefineProperty(target, 'parentNode', {\n value,\n configurable: true,\n })\n }\n}\n","import type { Func, AppInterface, NormalKey } from '@micro-app/types'\nimport { appInstanceMap } from '../create_app'\nimport {\n CompletionPath,\n getCurrentAppName,\n pureCreateElement,\n removeDomScope,\n logWarn,\n isPlainObject,\n isString,\n isInvalidQuerySelectorKey,\n isUniqueElement,\n isProxyDocument,\n isFunction,\n isElement,\n isNode,\n rawDefineProperty,\n} from '../libs/utils'\nimport scopedCSS from '../sandbox/scoped_css'\nimport { extractLinkFromHtml, formatDynamicLink } from './links'\nimport {\n extractScriptElement,\n runDynamicInlineScript,\n runDynamicRemoteScript,\n checkExcludeUrl,\n checkIgnoreUrl,\n} from './scripts'\nimport microApp from '../micro_app'\nimport globalEnv from '../libs/global_env'\nimport { fixReactHMRConflict } from '../sandbox/adapter'\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') || checkExcludeUrl(child.getAttribute('href'), app.name)) {\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 (\n child.hasAttribute('ignore') ||\n checkIgnoreUrl(child.getAttribute('href'), app.name) ||\n (\n child.href &&\n isFunction(microApp.options.excludeAssetFilter) &&\n microApp.options.excludeAssetFilter(child.href)\n )\n ) {\n return child\n }\n\n const { address, linkInfo, replaceComment } = extractLinkFromHtml(\n child,\n parent,\n app,\n true,\n )\n\n if (address && linkInfo) {\n const replaceStyle = formatDynamicLink(address, app, linkInfo, child)\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 if (\n child.src &&\n isFunction(microApp.options.excludeAssetFilter) &&\n microApp.options.excludeAssetFilter(child.src)\n ) {\n return child\n }\n\n const { replaceComment, address, scriptInfo } = extractScriptElement(\n child,\n parent,\n app,\n true,\n ) || {}\n\n if (address && scriptInfo) {\n // remote script or inline script\n const replaceElement: HTMLScriptElement | Comment = scriptInfo.isExternal ? runDynamicRemoteScript(address, app, scriptInfo, child) : runDynamicInlineScript(address, app, scriptInfo)\n dynamicElementInMicroAppMap.set(child, replaceElement)\n return replaceElement\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 const hijackParent = getHijackParent(parent, app)\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 (hijackParent) {\n /**\n * WARNING:\n * Verifying that the parentNode of the targetChild points to document.body will cause other problems ?\n */\n if (hijackParent.tagName === 'MICRO-APP-BODY' && rawMethod !== globalEnv.rawRemoveChild) {\n const descriptor = Object.getOwnPropertyDescriptor(targetChild, 'parentNode')\n if (!descriptor || descriptor.configurable) {\n rawDefineProperty(targetChild, 'parentNode', {\n configurable: true,\n get () {\n /**\n * When operate child from parentNode async, may have been unmount\n * e.g.\n * target.parentNode.remove(target)\n */\n return !app.container ? hijackParent : document.body\n },\n })\n }\n }\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 && !hijackParent.contains(passiveChild)) {\n return globalEnv.rawAppendChild.call(hijackParent, targetChild)\n } else if (rawMethod === globalEnv.rawRemoveChild && !hijackParent.contains(targetChild)) {\n if (parent.contains(targetChild)) {\n return rawMethod.call(parent, targetChild)\n }\n return targetChild\n }\n\n if (\n __DEV__ &&\n targetChild instanceof HTMLIFrameElement &&\n rawMethod === globalEnv.rawAppendChild\n ) {\n fixReactHMRConflict(app)\n }\n\n return invokeRawMethod(rawMethod, hijackParent, targetChild, passiveChild)\n }\n\n return invokeRawMethod(rawMethod, parent, targetChild, passiveChild)\n}\n\n// head/body map to micro-app-head/micro-app-body\nfunction getHijackParent (node: Node, app: AppInterface): HTMLElement | null | undefined {\n if (node === document.head) {\n return app?.querySelector<HTMLElement>('micro-app-head')\n }\n if (node === document.body) {\n return app?.querySelector<HTMLElement>('micro-app-body')\n }\n return null\n}\n\nfunction invokeRawMethod (\n rawMethod: Func,\n parent: Node,\n targetChild: Node,\n passiveChild?: Node | null\n) {\n if (isPendMethod(rawMethod)) {\n return rawMethod.call(parent, targetChild)\n }\n\n return rawMethod.call(parent, targetChild, passiveChild)\n}\n\nfunction isPendMethod (method: CallableFunction) {\n return method === globalEnv.rawAppend || method === globalEnv.rawPrepend\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 const currentAppName = getCurrentAppName()\n if (\n isNode(newChild) &&\n (\n newChild.__MICRO_APP_NAME__ ||\n (currentAppName && !newChild.__PURE_ELEMENT__)\n )\n ) {\n newChild.__MICRO_APP_NAME__ = newChild.__MICRO_APP_NAME__ || currentAppName!\n const app = appInstanceMap.get(newChild.__MICRO_APP_NAME__)\n if (app?.container) {\n if (isElement(newChild)) {\n if (/^(img|script)$/i.test(newChild.tagName)) {\n if (newChild.hasAttribute('src')) {\n globalEnv.rawSetAttribute.call(newChild, 'src', CompletionPath(newChild.getAttribute('src')!, app.url))\n }\n if (newChild.hasAttribute('srcset')) {\n globalEnv.rawSetAttribute.call(newChild, 'srcset', CompletionPath(newChild.getAttribute('srcset')!, app.url))\n }\n } else if (/^link$/i.test(newChild.tagName) && newChild.hasAttribute('href')) {\n globalEnv.rawSetAttribute.call(newChild, 'href', CompletionPath(newChild.getAttribute('href')!, app.url))\n }\n }\n\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 } else if (rawMethod === globalEnv.rawAppend || rawMethod === globalEnv.rawPrepend) {\n if (!isNode(newChild) && currentAppName) {\n const app = appInstanceMap.get(currentAppName)\n if (app?.container) {\n if (parent === document.head) {\n return rawMethod.call(app.querySelector('micro-app-head'), newChild)\n } else if (parent === document.body) {\n return rawMethod.call(app.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 try {\n return globalEnv.rawRemoveChild.call(this, oldChild) as T\n } catch {\n return (oldChild?.parentNode && globalEnv.rawRemoveChild.call(oldChild.parentNode, oldChild)) as T\n }\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 function getQueryTarget (node: Node): Node | null {\n const currentAppName = getCurrentAppName()\n if ((node === document.body || node === document.head) && currentAppName) {\n const app = appInstanceMap.get(currentAppName)\n if (app?.container) {\n if (node === document.body) {\n return app.querySelector('micro-app-body')\n } else if (node === document.head) {\n return app.querySelector('micro-app-head')\n }\n }\n }\n return null\n }\n\n Element.prototype.querySelector = function querySelector (selectors: string): Node | null {\n const target = getQueryTarget(this) ?? this\n return globalEnv.rawElementQuerySelector.call(target, selectors)\n }\n\n Element.prototype.querySelectorAll = function querySelectorAll (selectors: string): NodeListOf<Node> {\n const target = getQueryTarget(this) ?? this\n return globalEnv.rawElementQuerySelectorAll.call(target, selectors)\n }\n\n rawDefineProperty(Element.prototype, 'innerHTML', {\n get () {\n return globalEnv.rawInnerHTMLDesc.get.call(this)\n },\n set (code: string) {\n globalEnv.rawInnerHTMLDesc.set.call(this, code)\n const currentAppName = getCurrentAppName()\n Array.from(this.children).forEach((child) => {\n if (isElement(child) && currentAppName) {\n child.__MICRO_APP_NAME__ = currentAppName\n }\n })\n }\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 currentAppName = getCurrentAppName()\n if (currentAppName) element.__MICRO_APP_NAME__ = currentAppName\n return element\n}\n\n// methods of document\nfunction patchDocument () {\n const rawDocument = globalEnv.rawDocument\n const rawRootDocument = globalEnv.rawRootDocument\n\n function getBindTarget (target: Document): Document {\n return isProxyDocument(target) ? rawDocument : target\n }\n\n // create element 👇\n rawRootDocument.prototype.createElement = function createElement (\n tagName: string,\n options?: ElementCreationOptions,\n ): HTMLElement {\n const element = globalEnv.rawCreateElement.call(getBindTarget(this), tagName, options)\n return markElement(element)\n }\n\n rawRootDocument.prototype.createElementNS = function createElementNS (\n namespaceURI: string,\n name: string,\n options?: string | ElementCreationOptions,\n ): any {\n const element = globalEnv.rawCreateElementNS.call(getBindTarget(this), namespaceURI, name, options)\n return markElement(element)\n }\n\n rawRootDocument.prototype.createDocumentFragment = function createDocumentFragment (): DocumentFragment {\n const element = globalEnv.rawCreateDocumentFragment.call(getBindTarget(this))\n return markElement(element)\n }\n\n // query element👇\n function querySelector (this: Document, selectors: string): any {\n const _this = getBindTarget(this)\n const currentAppName = getCurrentAppName()\n if (\n !currentAppName ||\n !appInstanceMap.get(currentAppName)?.container ||\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\n return appInstanceMap.get(currentAppName)?.querySelector(selectors) ?? null\n }\n\n function querySelectorAll (this: Document, selectors: string): any {\n const _this = getBindTarget(this)\n const currentAppName = getCurrentAppName()\n if (\n !currentAppName ||\n !appInstanceMap.get(currentAppName)?.container ||\n !selectors ||\n isUniqueElement(selectors) ||\n rawDocument !== _this\n ) {\n return globalEnv.rawQuerySelectorAll.call(_this, selectors)\n }\n\n return appInstanceMap.get(currentAppName)?.querySelectorAll(selectors) ?? []\n }\n\n rawRootDocument.prototype.querySelector = querySelector\n rawRootDocument.prototype.querySelectorAll = querySelectorAll\n\n rawRootDocument.prototype.getElementById = function getElementById (key: string): HTMLElement | null {\n const _this = getBindTarget(this)\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 rawRootDocument.prototype.getElementsByClassName = function getElementsByClassName (key: string): HTMLCollectionOf<Element> {\n const _this = getBindTarget(this)\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 rawRootDocument.prototype.getElementsByTagName = function getElementsByTagName (key: string): HTMLCollectionOf<Element> {\n const _this = getBindTarget(this)\n const currentAppName = getCurrentAppName()\n if (\n !currentAppName ||\n isUniqueElement(key) ||\n isInvalidQuerySelectorKey(key) ||\n (!appInstanceMap.get(currentAppName)?.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 rawRootDocument.prototype.getElementsByName = function getElementsByName (key: string): NodeListOf<HTMLElement> {\n const _this = getBindTarget(this)\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 * NOTE:\n * 1. it not dependent on sandbox\n * 2. it should exec when first micro-app-element 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: any): void {\n if (/^micro-app(-\\S+)?/i.test(this.tagName) && key === 'data') {\n if (isPlainObject(value)) {\n const cloneValue: Record<NormalKey, unknown> = {}\n Object.getOwnPropertyNames(value).forEach((ownKey: NormalKey) => {\n if (!(isString(ownKey) && ownKey.indexOf('__') === 0)) {\n cloneValue[ownKey] = value[ownKey]\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 {\n const appName = this.__MICRO_APP_NAME__ || getCurrentAppName()\n if (\n appName &&\n appInstanceMap.has(appName) &&\n (\n ((key === 'src' || key === 'srcset') && /^(img|script)$/i.test(this.tagName)) ||\n (key === 'href' && /^link$/i.test(this.tagName))\n )\n ) {\n const app = appInstanceMap.get(appName)\n value = CompletionPath(value, app!.url)\n }\n\n globalEnv.rawSetAttribute.call(this, key, value)\n }\n }\n}\n\nfunction releasePatchDocument (): void {\n const rawRootDocument = globalEnv.rawRootDocument\n rawRootDocument.prototype.createElement = globalEnv.rawCreateElement\n rawRootDocument.prototype.createElementNS = globalEnv.rawCreateElementNS\n rawRootDocument.prototype.createDocumentFragment = globalEnv.rawCreateDocumentFragment\n rawRootDocument.prototype.querySelector = globalEnv.rawQuerySelector\n rawRootDocument.prototype.querySelectorAll = globalEnv.rawQuerySelectorAll\n rawRootDocument.prototype.getElementById = globalEnv.rawGetElementById\n rawRootDocument.prototype.getElementsByClassName = globalEnv.rawGetElementsByClassName\n rawRootDocument.prototype.getElementsByTagName = globalEnv.rawGetElementsByTagName\n rawRootDocument.prototype.getElementsByName = globalEnv.rawGetElementsByName\n}\n\n// release patch\nexport function releasePatches (): void {\n removeDomScope()\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.querySelector = globalEnv.rawElementQuerySelector\n Element.prototype.querySelectorAll = globalEnv.rawElementQuerySelectorAll\n rawDefineProperty(Element.prototype, 'innerHTML', globalEnv.rawInnerHTMLDesc)\n}\n\n// exec when last child unmount\nexport function releasePatchSetAttribute (): void {\n hasRewriteSetAttribute = false\n Element.prototype.setAttribute = globalEnv.rawSetAttribute\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 type {\n Func,\n AppInterface,\n RequestIdleCallbackInfo,\n RequestIdleCallbackOptions,\n} from '@micro-app/types'\nimport { isSupportModuleScript, isBrowser, getCurrentAppName, assign } from './utils'\nimport { rejectMicroAppStyle } from '../source/patch'\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 __REACT_ERROR_OVERLAY_GLOBAL_HOOK__: boolean\n mount: Func\n unmount: Func\n }\n\n interface Node {\n __MICRO_APP_NAME__?: string | null\n __PURE_ELEMENT__?: boolean\n data?: unknown\n }\n\n interface HTMLStyleElement {\n __MICRO_APP_HAS_SCOPED__?: boolean\n }\n\n interface HTMLElement {\n reload(destroy?: boolean): Promise<boolean>\n mount(app: AppInterface): void\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 const rawWindow = Function('return window')()\n const rawDocument = Function('return document')()\n const rawRootDocument = Function('return Document')()\n const supportModuleScript = isSupportModuleScript()\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 rawElementQuerySelector = Element.prototype.querySelector\n const rawElementQuerySelectorAll = Element.prototype.querySelectorAll\n const rawInnerHTMLDesc = Object.getOwnPropertyDescriptor(Element.prototype, 'innerHTML')\n\n const rawCreateElement = rawRootDocument.prototype.createElement\n const rawCreateElementNS = rawRootDocument.prototype.createElementNS\n const rawCreateDocumentFragment = rawRootDocument.prototype.createDocumentFragment\n const rawQuerySelector = rawRootDocument.prototype.querySelector\n const rawQuerySelectorAll = rawRootDocument.prototype.querySelectorAll\n const rawGetElementById = rawRootDocument.prototype.getElementById\n const rawGetElementsByClassName = rawRootDocument.prototype.getElementsByClassName\n const rawGetElementsByTagName = rawRootDocument.prototype.getElementsByTagName\n const rawGetElementsByName = rawRootDocument.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 /**\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 const rawPushState = rawWindow.history.pushState\n const rawReplaceState = rawWindow.history.replaceState\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 assign(globalEnv, {\n // common global vars\n rawWindow,\n rawDocument,\n rawRootDocument,\n supportModuleScript,\n\n // source/patch\n rawSetAttribute,\n rawAppendChild,\n rawInsertBefore,\n rawReplaceChild,\n rawRemoveChild,\n rawAppend,\n rawPrepend,\n rawCloneNode,\n rawElementQuerySelector,\n rawElementQuerySelectorAll,\n rawInnerHTMLDesc,\n\n rawCreateElement,\n rawCreateElementNS,\n rawCreateDocumentFragment,\n rawQuerySelector,\n rawQuerySelectorAll,\n rawGetElementById,\n rawGetElementsByClassName,\n rawGetElementsByTagName,\n rawGetElementsByName,\n ImageProxy,\n\n // sandbox/effect\n rawWindowAddEventListener,\n rawWindowRemoveEventListener,\n rawSetInterval,\n rawSetTimeout,\n rawClearInterval,\n rawClearTimeout,\n rawDocumentAddEventListener,\n rawDocumentRemoveEventListener,\n rawPushState,\n rawReplaceState,\n })\n\n // global effect\n rejectMicroAppStyle()\n }\n}\n\nexport default globalEnv\n","/* eslint-disable node/no-callback-literal, no-void */\nimport type {\n AppInterface,\n ScriptSourceInfo,\n plugins,\n Func,\n fiberTasks,\n AttrsType,\n} from '@micro-app/types'\nimport { fetchSource } from './fetch'\nimport {\n CompletionPath,\n promiseStream,\n createNonceSrc,\n pureCreateElement,\n defer,\n logError,\n logWarn,\n isUndefined,\n isPlainObject,\n isArray,\n isFunction,\n getAttributes,\n injectFiberTask,\n serialExecFiberTasks,\n isInlineScript,\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'\nimport sourceCenter from './source_center'\n\nexport type moduleCallBack = Func & { moduleCount?: number, errorCount?: number }\n\nconst scriptTypes = ['text/javascript', 'text/ecmascript', 'application/javascript', 'application/ecmascript', 'module', 'systemjs-module', 'systemjs-importmap']\n\n// whether use type='module' script\nfunction isTypeModule (app: AppInterface, scriptInfo: ScriptSourceInfo): boolean {\n return scriptInfo.appSpace[app.name].module && (!app.useSandbox || app.esmodule)\n}\n\n// special script element\nfunction isSpecialScript (app: AppInterface, scriptInfo: ScriptSourceInfo): boolean {\n const attrs = scriptInfo.appSpace[app.name].attrs\n return attrs.has('id')\n}\n\n/**\n * whether to run js in inline mode\n * scene:\n * 1. inline config for app\n * 2. inline attr in script element\n * 3. module script\n * 4. script with special attr\n */\nfunction isInlineMode (app: AppInterface, scriptInfo: ScriptSourceInfo): boolean {\n return (\n app.inline ||\n scriptInfo.appSpace[app.name].inline ||\n isTypeModule(app, scriptInfo) ||\n isSpecialScript(app, scriptInfo)\n )\n}\n\n// Convert string code to function\nfunction code2Function (code: string): Function {\n return new Function(code)\n}\n\n/**\n * If the appSpace of the current js address has other app, try to reuse parsedFunction of other app\n * @param appName app.name\n * @param scriptInfo scriptInfo of current address\n * @param currentCode pure code of current address\n */\nfunction getExistParseResult (\n appName: string,\n scriptInfo: ScriptSourceInfo,\n currentCode: string,\n): Function | void {\n const appSpace = scriptInfo.appSpace\n for (const item in appSpace) {\n if (item !== appName) {\n const appSpaceData = appSpace[item]\n if (appSpaceData.parsedCode === currentCode && appSpaceData.parsedFunction) {\n return appSpaceData.parsedFunction\n }\n }\n }\n}\n\n/**\n * get parsedFunction from exist data or parsedCode\n * @returns parsedFunction\n */\nfunction getParsedFunction (\n app: AppInterface,\n scriptInfo: ScriptSourceInfo,\n parsedCode: string,\n): Function {\n return getExistParseResult(app.name, scriptInfo, parsedCode) || code2Function(parsedCode)\n}\n\n// Prevent randomly created strings from repeating\nfunction getUniqueNonceSrc (): string {\n const nonceStr: string = createNonceSrc()\n if (sourceCenter.script.hasInfo(nonceStr)) {\n return getUniqueNonceSrc()\n }\n return nonceStr\n}\n\n// transfer the attributes on the script to convertScript\nfunction setConvertScriptAttr (convertScript: HTMLScriptElement, attrs: AttrsType): void {\n attrs.forEach((value, key) => {\n if ((key === 'type' && value === 'module') || key === 'defer' || key === 'async') return\n if (key === 'src') key = 'data-origin-src'\n convertScript.setAttribute(key, value)\n })\n}\n\n// wrap code in sandbox\nfunction isWrapInSandBox (app: AppInterface, scriptInfo: ScriptSourceInfo): boolean {\n return app.useSandbox && !isTypeModule(app, scriptInfo)\n}\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 (src) src = CompletionPath(src, app.url)\n if (script.hasAttribute('exclude') || checkExcludeUrl(src, app.name)) {\n replaceComment = document.createComment('script element with exclude attribute removed by micro-app')\n } else if (\n (\n script.type &&\n !scriptTypes.includes(script.type)\n ) ||\n script.hasAttribute('ignore') ||\n checkIgnoreUrl(src, app.name)\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 let scriptInfo = sourceCenter.script.getInfo(src)\n const appSpaceData = {\n async: script.hasAttribute('async'),\n defer: script.defer || script.type === 'module',\n module: script.type === 'module',\n inline: script.hasAttribute('inline'),\n pure: script.hasAttribute('pure'),\n attrs: getAttributes(script),\n }\n if (!scriptInfo) {\n scriptInfo = {\n code: '',\n isExternal: true,\n appSpace: {\n [app.name]: appSpaceData,\n }\n }\n } else {\n /**\n * Reuse when appSpace exists\n * NOTE:\n * 1. The same static script, appSpace must be the same (in fact, it may be different when url change)\n * 2. The same dynamic script, appSpace may be the same, but we still reuse appSpace, which should pay attention\n */\n scriptInfo.appSpace[app.name] = scriptInfo.appSpace[app.name] || appSpaceData\n }\n\n sourceCenter.script.setInfo(src, scriptInfo)\n\n if (!isDynamic) {\n app.source.scripts.add(src)\n replaceComment = document.createComment(`script with src='${src}' extract by micro-app`)\n } else {\n return { address: src, scriptInfo }\n }\n } else if (script.textContent) { // inline script\n /**\n * NOTE:\n * 1. Each inline script is unique\n * 2. Every dynamic created inline script will be re-executed\n * ACTION:\n * 1. Delete dynamic inline script info after exec\n * 2. Delete static inline script info when destroy\n */\n const nonceStr: string = getUniqueNonceSrc()\n const scriptInfo = {\n code: script.textContent,\n isExternal: false,\n appSpace: {\n [app.name]: {\n async: false,\n defer: script.type === 'module',\n module: script.type === 'module',\n inline: script.hasAttribute('inline'),\n pure: script.hasAttribute('pure'),\n attrs: getAttributes(script),\n }\n }\n }\n if (!isDynamic) {\n app.source.scripts.add(nonceStr)\n sourceCenter.script.setInfo(nonceStr, scriptInfo)\n replaceComment = document.createComment('inline script extract by micro-app')\n } else {\n // Because each dynamic script is unique, it is not put into sourceCenter\n return { address: nonceStr, scriptInfo }\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 assets plugins\n * @param appName app name\n */\nexport function getAssetsPlugins (appName: string): plugins['global'] {\n const globalPlugins = microApp.options.plugins?.global || []\n const modulePlugins = microApp.options.plugins?.modules?.[appName] || []\n\n return [...globalPlugins, ...modulePlugins]\n}\n\n/**\n * whether the address needs to be excluded\n * @param address css or js link\n * @param plugins microApp plugins\n */\nexport function checkExcludeUrl (address: string | null, appName: string): boolean {\n if (!address) return false\n const plugins = getAssetsPlugins(appName) || []\n return plugins.some(plugin => {\n if (!plugin.excludeChecker) return false\n return plugin.excludeChecker(address)\n })\n}\n\n/**\n * whether the address needs to be ignore\n * @param address css or js link\n * @param plugins microApp plugins\n */\nexport function checkIgnoreUrl (address: string | null, appName: string): boolean {\n if (!address) return false\n const plugins = getAssetsPlugins(appName) || []\n return plugins.some(plugin => {\n if (!plugin.ignoreChecker) return false\n return plugin.ignoreChecker(address)\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 scriptList: Array<string> = Array.from(app.source.scripts)\n const fetchScriptPromise: Array<Promise<string> | string> = []\n const fetchScriptPromiseInfo: Array<[string, ScriptSourceInfo]> = []\n for (const address of scriptList) {\n const scriptInfo = sourceCenter.script.getInfo(address)!\n const appSpaceData = scriptInfo.appSpace[app.name]\n if ((!appSpaceData.defer && !appSpaceData.async) || (app.isPrefetch && !app.isPrerender)) {\n fetchScriptPromise.push(scriptInfo.code ? scriptInfo.code : fetchSource(address, app.name))\n fetchScriptPromiseInfo.push([address, scriptInfo])\n }\n }\n\n const fiberScriptTasks: fiberTasks = app.isPrefetch || app.fiber ? [] : null\n\n if (fetchScriptPromise.length) {\n promiseStream<string>(fetchScriptPromise, (res: {data: string, index: number}) => {\n injectFiberTask(fiberScriptTasks, () => fetchScriptSuccess(\n fetchScriptPromiseInfo[res.index][0],\n fetchScriptPromiseInfo[res.index][1],\n res.data,\n app,\n ))\n }, (err: {error: Error, index: number}) => {\n logError(err, app.name)\n }, () => {\n if (fiberScriptTasks) {\n fiberScriptTasks.push(() => Promise.resolve(app.onLoad(wrapElement)))\n serialExecFiberTasks(fiberScriptTasks)\n } else {\n app.onLoad(wrapElement)\n }\n })\n } else {\n app.onLoad(wrapElement)\n }\n}\n\n/**\n * fetch js succeeded, record the code value\n * @param address script address\n * @param scriptInfo resource script info\n * @param data code\n */\nexport function fetchScriptSuccess (\n address: string,\n scriptInfo: ScriptSourceInfo,\n code: string,\n app: AppInterface,\n): void {\n // reset scriptInfo.code\n scriptInfo.code = code\n\n /**\n * Pre parse script for prefetch, improve rendering performance\n * NOTE:\n * 1. if global parseResult exist, skip this step\n * 2. if app is inline or script is esmodule, skip this step\n * 3. if global parseResult not exist, the current script occupies the position, when js is reused, parseResult is reference\n */\n if (app.isPrefetch && app.prefetchLevel === 2) {\n const appSpaceData = scriptInfo.appSpace[app.name]\n /**\n * When prefetch app is replaced by a new app in the processing phase, since the scriptInfo is common, when the scriptInfo of the prefetch app is processed, it may have already been processed.\n * This causes parsedCode to already exist when preloading ends\n * e.g.\n * 1. prefetch app.url different from <micro-app></micro-app>\n * 2. prefetch param different from <micro-app></micro-app>\n */\n if (!appSpaceData.parsedCode) {\n appSpaceData.parsedCode = bindScope(address, app, code, scriptInfo)\n appSpaceData.wrapInSandBox = isWrapInSandBox(app, scriptInfo)\n if (!isInlineMode(app, scriptInfo)) {\n try {\n appSpaceData.parsedFunction = getParsedFunction(app, scriptInfo, appSpaceData.parsedCode)\n } catch (err) {\n logWarn('Something went wrong while handling preloaded resources', app.name, '\\n', err)\n }\n }\n }\n }\n}\n\n/**\n * Execute js in the mount lifecycle\n * @param app app\n * @param initHook callback for umd mode\n */\nexport function execScripts (\n app: AppInterface,\n initHook: moduleCallBack,\n): void {\n const fiberScriptTasks: fiberTasks = app.fiber ? [] : null\n const scriptList: Array<string> = Array.from(app.source.scripts)\n const deferScriptPromise: Array<Promise<string>|string> = []\n const deferScriptInfo: Array<[string, ScriptSourceInfo]> = []\n for (const address of scriptList) {\n const scriptInfo = sourceCenter.script.getInfo(address)!\n const appSpaceData = scriptInfo.appSpace[app.name]\n // Notice the second render\n if (appSpaceData.defer || appSpaceData.async) {\n if (scriptInfo.isExternal && !scriptInfo.code) {\n deferScriptPromise.push(fetchSource(address, app.name))\n } else {\n deferScriptPromise.push(scriptInfo.code)\n }\n deferScriptInfo.push([address, scriptInfo])\n\n isTypeModule(app, scriptInfo) && (initHook.moduleCount = initHook.moduleCount ? ++initHook.moduleCount : 1)\n } else {\n injectFiberTask(fiberScriptTasks, () => {\n runScript(address, app, scriptInfo)\n initHook(false)\n })\n }\n }\n\n if (deferScriptPromise.length) {\n promiseStream<string>(deferScriptPromise, (res: {data: string, index: number}) => {\n const scriptInfo = deferScriptInfo[res.index][1]\n scriptInfo.code = scriptInfo.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(([address, scriptInfo]) => {\n if (scriptInfo.code) {\n injectFiberTask(fiberScriptTasks, () => {\n runScript(address, app, scriptInfo, initHook)\n !isTypeModule(app, scriptInfo) && initHook(false)\n })\n }\n })\n\n /**\n * Fiber wraps js in requestIdleCallback and executes it in sequence\n * NOTE:\n * 1. In order to ensure the execution order, wait for all js loaded and then execute\n * 2. If js create a dynamic script, it may be errors in the execution order, because the subsequent js is wrapped in requestIdleCallback, even putting dynamic script in requestIdleCallback doesn't solve it\n *\n * BUG: NOTE.2 - execution order problem\n */\n if (fiberScriptTasks) {\n fiberScriptTasks.push(() => Promise.resolve(initHook(\n isUndefined(initHook.moduleCount) ||\n initHook.errorCount === deferScriptPromise.length\n )))\n serialExecFiberTasks(fiberScriptTasks)\n } else {\n initHook(\n isUndefined(initHook.moduleCount) ||\n initHook.errorCount === deferScriptPromise.length\n )\n }\n })\n } else {\n if (fiberScriptTasks) {\n fiberScriptTasks.push(() => Promise.resolve(initHook(true)))\n serialExecFiberTasks(fiberScriptTasks)\n } else {\n initHook(true)\n }\n }\n}\n\n/**\n * run code\n * @param address script address\n * @param app app\n * @param scriptInfo script info\n * @param callback callback of module script\n */\nexport function runScript (\n address: string,\n app: AppInterface,\n scriptInfo: ScriptSourceInfo,\n callback?: moduleCallBack,\n replaceElement?: HTMLScriptElement,\n): void {\n try {\n actionsBeforeRunScript(app)\n const appSpaceData = scriptInfo.appSpace[app.name]\n const wrapInSandBox = isWrapInSandBox(app, scriptInfo)\n /**\n * NOTE:\n * 1. plugins and wrapCode will only be executed once\n * 2. if parsedCode not exist, parsedFunction is not exist\n * 3. if parsedCode exist, parsedFunction does not necessarily exist\n */\n if (!appSpaceData.parsedCode || appSpaceData.wrapInSandBox !== wrapInSandBox) {\n appSpaceData.parsedCode = bindScope(address, app, scriptInfo.code, scriptInfo)\n appSpaceData.wrapInSandBox = wrapInSandBox\n appSpaceData.parsedFunction = null\n }\n\n if (isInlineMode(app, scriptInfo)) {\n const scriptElement = replaceElement || pureCreateElement('script')\n runCode2InlineScript(\n address,\n appSpaceData.parsedCode,\n isTypeModule(app, scriptInfo),\n scriptElement,\n appSpaceData.attrs,\n callback,\n )\n\n if (!replaceElement) {\n // TEST IGNORE\n app.querySelector('micro-app-body')?.appendChild(scriptElement)\n }\n } else {\n runParsedFunction(app, scriptInfo)\n }\n } catch (e) {\n console.error(`[micro-app from ${replaceElement ? 'runDynamicScript' : 'runScript'}] app ${app.name}: `, e, address)\n }\n}\n\n/**\n * Get dynamically created remote script\n * @param address script address\n * @param app app instance\n * @param scriptInfo scriptInfo\n * @param originScript origin script element\n */\nexport function runDynamicRemoteScript (\n address: string,\n app: AppInterface,\n scriptInfo: ScriptSourceInfo,\n originScript: HTMLScriptElement,\n): HTMLScriptElement | Comment {\n const replaceElement = isInlineMode(app, scriptInfo) ? pureCreateElement('script') : document.createComment('dynamic script extract by micro-app')\n\n const dispatchScriptOnLoadEvent = () => dispatchOnLoadEvent(originScript)\n\n const runDynamicScript = () => {\n const descriptor = Object.getOwnPropertyDescriptor(globalEnv.rawDocument, 'currentScript')\n if (!descriptor || descriptor.configurable) {\n Object.defineProperty(globalEnv.rawDocument, 'currentScript', {\n value: originScript,\n configurable: true,\n })\n }\n\n runScript(address, app, scriptInfo, dispatchScriptOnLoadEvent, replaceElement as HTMLScriptElement)\n\n !isTypeModule(app, scriptInfo) && dispatchScriptOnLoadEvent()\n }\n\n if (scriptInfo.code) {\n defer(runDynamicScript)\n } else {\n fetchSource(address, app.name).then((code: string) => {\n scriptInfo.code = code\n runDynamicScript()\n }).catch((err) => {\n logError(err, app.name)\n dispatchOnErrorEvent(originScript)\n })\n }\n\n return replaceElement\n}\n\n/**\n * Get dynamically created inline script\n * @param address script address\n * @param app app instance\n * @param scriptInfo scriptInfo\n */\nexport function runDynamicInlineScript (\n address: string,\n app: AppInterface,\n scriptInfo: ScriptSourceInfo,\n): HTMLScriptElement | Comment {\n const replaceElement = isInlineMode(app, scriptInfo) ? pureCreateElement('script') : document.createComment('dynamic script extract by micro-app')\n\n runScript(address, app, scriptInfo, void 0, replaceElement as HTMLScriptElement)\n\n return replaceElement\n}\n\n/**\n * common handle for inline script\n * @param address script address\n * @param code bound code\n * @param module type='module' of script\n * @param scriptElement target script element\n * @param attrs attributes of script element\n * @param callback callback of module script\n */\nfunction runCode2InlineScript (\n address: string,\n code: string,\n module: boolean,\n scriptElement: HTMLScriptElement,\n attrs: AttrsType,\n callback?: moduleCallBack,\n): void {\n if (module) {\n // module script is async, transform it to a blob for subsequent operations\n if (isInlineScript(address)) {\n const blob = new Blob([code], { type: 'text/javascript' })\n scriptElement.src = URL.createObjectURL(blob)\n } else {\n scriptElement.src = address\n }\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 setConvertScriptAttr(scriptElement, attrs)\n}\n\n// init & run code2Function\nfunction runParsedFunction (app: AppInterface, scriptInfo: ScriptSourceInfo) {\n const appSpaceData = scriptInfo.appSpace[app.name]\n if (!appSpaceData.parsedFunction) {\n appSpaceData.parsedFunction = getParsedFunction(app, scriptInfo, appSpaceData.parsedCode!)\n }\n appSpaceData.parsedFunction.call(window)\n}\n\n/**\n * bind js scope\n * @param app app\n * @param code code\n * @param scriptInfo source script info\n */\nfunction bindScope (\n address: string,\n app: AppInterface,\n code: string,\n scriptInfo: ScriptSourceInfo,\n): string {\n // TODO: cache\n if (isPlainObject(microApp.options.plugins)) {\n code = usePlugins(address, code, app.name, microApp.options.plugins)\n }\n\n if (isWrapInSandBox(app, scriptInfo)) {\n return `;(function(proxyWindow){with(proxyWindow.__MICRO_APP_WINDOW__){(function(${globalKeyToBeCached}){;${code}\\n${isInlineScript(address) ? '' : `//# sourceURL=${address}\\n`}}).call(proxyWindow,${globalKeyToBeCached})}})(window.__MICRO_APP_PROXY_WINDOW__);`\n }\n\n return code\n}\n\n/**\n * actions before run script\n */\nfunction actionsBeforeRunScript (app: AppInterface): void {\n setActiveProxyWindow(app)\n}\n\n/**\n * set active sandBox.proxyWindow to window.__MICRO_APP_PROXY_WINDOW__\n */\nfunction setActiveProxyWindow (app: AppInterface): void {\n if (app.sandBox) {\n globalEnv.rawWindow.__MICRO_APP_PROXY_WINDOW__ = app.sandBox.proxyWindow\n }\n}\n\n/**\n * Call the plugin to process the file\n * @param address script address\n * @param code code\n * @param appName app name\n * @param plugins plugin list\n */\nfunction usePlugins (address: string, code: string, appName: string, plugins: plugins): string {\n const newCode = processCode(plugins.global, code, address)\n\n return processCode(plugins.modules?.[appName], newCode, address)\n}\n\nfunction processCode (configs: plugins['global'], code: string, address: 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, address)\n }\n\n return preCode\n }, code)\n}\n","import type { AppInterface, fiberTasks } from '@micro-app/types'\nimport {\n logError,\n CompletionPath,\n pureCreateElement,\n injectFiberTask,\n serialExecFiberTasks,\n} from '../libs/utils'\nimport { extractLinkFromHtml, fetchLinksFromHtml } from './links'\nimport { extractScriptElement, fetchScriptsFromHtml, checkExcludeUrl, checkIgnoreUrl } from './scripts'\nimport scopedCSS from '../sandbox/scoped_css'\nimport globalEnv from '../libs/global_env'\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 fiberStyleTasks: fiberTasks,\n): void {\n const children = Array.from(parent.children)\n\n children.length && children.forEach((child) => {\n flatChildren(child as HTMLElement, app, microAppHead, fiberStyleTasks)\n })\n\n for (const dom of children) {\n if (dom instanceof HTMLLinkElement) {\n if (dom.hasAttribute('exclude') || checkExcludeUrl(dom.getAttribute('href'), app.name)) {\n parent.replaceChild(document.createComment('link element with exclude attribute ignored by micro-app'), dom)\n } else if (!(dom.hasAttribute('ignore') || checkIgnoreUrl(dom.getAttribute('href'), app.name))) {\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 injectFiberTask(fiberStyleTasks, () => scopedCSS(dom, app))\n }\n } else if (dom instanceof HTMLScriptElement) {\n extractScriptElement(dom, parent, app)\n } else if (dom instanceof HTMLImageElement && dom.hasAttribute('src')) {\n dom.setAttribute('src', CompletionPath(dom.getAttribute('src')!, app.url))\n }\n /**\n * Don't remove meta and title, they have some special scenes\n * e.g.\n * document.querySelector('meta[name=\"viewport\"]') // for flexible\n * document.querySelector('meta[name=\"baseurl\"]').baseurl // for api request\n *\n * Title point to main app title, child app title used to be compatible with some special scenes\n */\n // else if (dom instanceof HTMLMetaElement || dom instanceof HTMLTitleElement) {\n // parent.removeChild(dom)\n // }\n }\n}\n\n/**\n * Extract link and script, bind style scope\n * @param htmlStr html string\n * @param app app\n */\nexport function extractSourceDom (htmlStr: string, app: AppInterface): void {\n const wrapElement = getWrapElement(htmlStr)\n const microAppHead = globalEnv.rawElementQuerySelector.call(wrapElement, 'micro-app-head')\n const microAppBody = globalEnv.rawElementQuerySelector.call(wrapElement, '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 const fiberStyleTasks: fiberTasks = app.isPrefetch || app.fiber ? [] : null\n\n flatChildren(wrapElement, app, microAppHead, fiberStyleTasks)\n\n /**\n * Style and link are parallel, because it takes a lot of time for link to request resources. During this period, style processing can be performed to improve efficiency.\n */\n const fiberStyleResult = serialExecFiberTasks(fiberStyleTasks)\n\n if (app.source.links.size) {\n fetchLinksFromHtml(wrapElement, app, microAppHead, fiberStyleResult)\n } else if (fiberStyleResult) {\n fiberStyleResult.then(() => app.onLoad(wrapElement))\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","/* eslint-disable no-cond-assign */\nimport { CallableFunctionForInteract, AppName } from '@micro-app/types'\nimport { logError, isFunction, isPlainObject, assign, defer } from '../libs/utils'\n\nexport default class EventCenter {\n public eventList = new Map<string, {\n data: Record<PropertyKey, unknown>,\n tempData?: Record<PropertyKey, unknown> | null,\n force?: boolean,\n callbacks: Set<CallableFunctionForInteract>,\n }>()\n\n // whether the name is legal\n private isLegalName (name: string): boolean {\n if (!name) {\n logError('event-center: Invalid name')\n return false\n }\n\n return true\n }\n\n private queue: string[] = []\n private recordStep: Record<string, {\n nextStepList: Array<CallableFunction>,\n dispatchDataEvent?: CallableFunction,\n } | null> = {}\n\n // add appName to queue\n private enqueue (\n name: AppName,\n nextStep: CallableFunction,\n dispatchDataEvent?: CallableFunction,\n ): void {\n // this.nextStepList.push(nextStep)\n if (this.recordStep[name]) {\n this.recordStep[name]!.nextStepList.push(nextStep)\n dispatchDataEvent && (this.recordStep[name]!.dispatchDataEvent = dispatchDataEvent)\n } else {\n this.recordStep[name] = {\n nextStepList: [nextStep],\n dispatchDataEvent,\n }\n }\n /**\n * The micro task is executed async when the second render of child.\n * We should ensure that the data changes are executed before binding the listening function\n */\n (!this.queue.includes(name) && this.queue.push(name) === 1) && defer(this.process)\n }\n\n // run task\n private process = (): void => {\n let name: string | void\n const temRecordStep = this.recordStep\n const queue = this.queue\n this.recordStep = {}\n this.queue = []\n while (name = queue.shift()) {\n const eventInfo = this.eventList.get(name)!\n // clear tempData, force before exec nextStep\n const tempData = eventInfo.tempData\n const force = eventInfo.force\n eventInfo.tempData = null\n eventInfo.force = false\n let resArr: unknown[]\n if (force || !this.isEqual(eventInfo.data, tempData)) {\n eventInfo.data = tempData || eventInfo.data\n for (const f of eventInfo.callbacks) {\n const res = f(eventInfo.data)\n res && (resArr ??= []).push(res)\n }\n\n temRecordStep[name]!.dispatchDataEvent?.()\n\n /**\n * WARING:\n * If data of other app is sent in nextStep, it may cause confusion of tempData and force\n */\n temRecordStep[name]!.nextStepList.forEach((nextStep) => nextStep(resArr))\n }\n }\n }\n\n /**\n * In react, each setState will trigger setData, so we need a filter operation to avoid repeated trigger\n */\n private isEqual (\n oldData: Record<PropertyKey, unknown>,\n newData: Record<PropertyKey, unknown> | null | void,\n ): boolean {\n if (!newData || Object.keys(oldData).length !== Object.keys(newData).length) return false\n\n for (const key in oldData) {\n if (Object.prototype.hasOwnProperty.call(oldData, key)) {\n if (oldData[key] !== newData[key]) return false\n }\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 public 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 (\n autoTrigger &&\n Object.keys(eventInfo.data).length &&\n (\n !this.queue.includes(name) ||\n this.isEqual(eventInfo.data, eventInfo.tempData)\n )\n ) {\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 public off (\n name: string,\n f?: CallableFunctionForInteract,\n ): 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 /**\n * clearData\n */\n public clearData (name: string): void {\n if (this.isLegalName(name)) {\n const eventInfo = this.eventList.get(name)\n if (eventInfo) {\n eventInfo.data = {}\n }\n }\n }\n\n // dispatch data\n public dispatch (\n name: string,\n data: Record<PropertyKey, unknown>,\n nextStep: CallableFunction,\n force?: boolean,\n dispatchDataEvent?: CallableFunction,\n ): void {\n if (this.isLegalName(name)) {\n if (!isPlainObject(data)) {\n return logError('event-center: data must be object')\n }\n\n let eventInfo = this.eventList.get(name)\n if (eventInfo) {\n eventInfo.tempData = assign({}, eventInfo.tempData || eventInfo.data, data)\n !eventInfo.force && (eventInfo.force = !!force)\n } else {\n eventInfo = {\n data: data,\n callbacks: new Set(),\n }\n this.eventList.set(name, eventInfo)\n /**\n * When sent data to parent, eventInfo probably does not exist, because parent may listen to datachange\n */\n eventInfo.force = true\n }\n // add to queue, event eventInfo is null\n this.enqueue(name, nextStep, dispatchDataEvent)\n }\n }\n\n // get data\n public 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 (\n data: Record<PropertyKey, unknown>,\n nextStep?: CallableFunction,\n force?: boolean,\n ): void {\n // clear dom scope before dispatch global data, apply to micro app\n removeDomScope()\n\n eventCenter.dispatch(\n 'global',\n data,\n (resArr: unknown[]) => isFunction(nextStep) && nextStep(resArr),\n force,\n )\n }\n\n forceSetGlobalData (\n data: Record<PropertyKey, unknown>,\n nextStep?: CallableFunction,\n ): void {\n this.setGlobalData(data, nextStep, true)\n }\n\n /**\n * get global data\n */\n getGlobalData (): Record<PropertyKey, unknown> | null {\n return eventCenter.getData('global')\n }\n\n /**\n * clear global data\n */\n clearGlobalData (): void {\n eventCenter.clearData('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 (\n appName: string,\n data: Record<PropertyKey, unknown>,\n nextStep?: CallableFunction,\n force?: boolean,\n ): void {\n eventCenter.dispatch(\n formatEventName(formatAppName(appName), true),\n data,\n (resArr: unknown[]) => isFunction(nextStep) && nextStep(resArr),\n force,\n )\n }\n\n forceSetData (\n appName: string,\n data: Record<PropertyKey, unknown>,\n nextStep?: CallableFunction,\n ): void {\n this.setData(appName, data, nextStep, true)\n }\n\n /**\n * clear data from base app\n * @param appName app.name\n * @param fromBaseApp whether clear data from child app, default is true\n */\n clearData (appName: string, fromBaseApp = true): void {\n eventCenter.clearData(formatEventName(formatAppName(appName), fromBaseApp))\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 (fromBaseApp = true): Record<PropertyKey, unknown> | null {\n return eventCenter.getData(formatEventName(this.appName, fromBaseApp))\n }\n\n /**\n * dispatch data to base app\n * @param data data\n */\n dispatch (data: Record<PropertyKey, unknown>, nextStep?: CallableFunction, force?: boolean): void {\n removeDomScope()\n\n eventCenter.dispatch(\n formatEventName(this.appName, false),\n data,\n (resArr: unknown[]) => isFunction(nextStep) && nextStep(resArr),\n force,\n () => {\n const app = appInstanceMap.get(this.appName)\n if (app?.container && isPlainObject(data)) {\n const event = new CustomEvent('datachange', {\n detail: {\n data: eventCenter.getData(formatEventName(this.appName, false))\n }\n })\n\n getRootContainer(app.container).dispatchEvent(event)\n }\n })\n }\n\n forceDispatch (data: Record<PropertyKey, unknown>, nextStep?: CallableFunction): void {\n this.dispatch(data, nextStep, true)\n }\n\n /**\n * clear data from child app\n * @param fromBaseApp whether clear data from base app, default is false\n */\n clearData (fromBaseApp = false): void {\n eventCenter.clearData(formatEventName(this.appName, fromBaseApp))\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","import { appInstanceMap } from './create_app'\nimport { AppInterface } from '@micro-app/types'\n\nexport interface IAppManager {\n get(appName: string): AppInterface | void\n set(appName: string, app: AppInterface): void\n getAll(): AppInterface[]\n clear(): void\n}\n\n// 管理 app 的单例\nexport class AppManager implements IAppManager {\n private static instance: AppManager;\n // Todo: appInstanceMap 由 AppManager 来创建,不再由 create_app 管理\n private appInstanceMap = appInstanceMap;\n\n public static getInstance (): AppManager {\n if (!this.instance) {\n this.instance = new AppManager()\n }\n return this.instance\n }\n\n public get (appName: string): AppInterface | void {\n return this.appInstanceMap.get(appName)\n }\n\n public set (appName: string, app: AppInterface): void {\n this.appInstanceMap.set(appName, app)\n }\n\n public getAll (): AppInterface[] {\n return Array.from(this.appInstanceMap.values())\n }\n\n public clear (): void {\n this.appInstanceMap.clear()\n }\n}\n","import { AppManager } from '../app_manager'\nimport { getRootContainer } from '../libs/utils'\n\nfunction unmountNestedApp (): void {\n releaseUnmountOfNestedApp()\n\n AppManager.getInstance().getAll().forEach(app => {\n // @ts-ignore\n app.container && getRootContainer(app.container).disconnectedCallback()\n })\n\n !window.__MICRO_APP_UMD_MODE__ && AppManager.getInstance().clear()\n}\n\n// release listener\nfunction releaseUnmountOfNestedApp (): void {\n if (window.__MICRO_APP_ENVIRONMENT__) {\n window.removeEventListener('unmount', unmountNestedApp, false)\n }\n}\n\n// if micro-app run in micro application, delete all next generation application when unmount event received\n// unmount event will auto release by sandbox\nexport function initEnvOfNestedApp (): void {\n if (window.__MICRO_APP_ENVIRONMENT__) {\n releaseUnmountOfNestedApp()\n window.addEventListener('unmount', unmountNestedApp, false)\n }\n}\n","/* eslint-disable no-return-assign */\nimport {\n isBoundFunction,\n isConstructor,\n rawDefineProperty,\n isBoolean,\n} 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 isConstructorFunction (value: FunctionConstructor & {__MICRO_APP_IS_CONSTRUCTOR__: boolean}) {\n if (isBoolean(value.__MICRO_APP_IS_CONSTRUCTOR__)) return value.__MICRO_APP_IS_CONSTRUCTOR__\n return value.__MICRO_APP_IS_CONSTRUCTOR__ = isConstructor(value)\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport default function bindFunctionToRawObject<T = Window> (rawObject: T, value: any, key = 'WINDOW'): unknown {\n const cacheKey = `__MICRO_APP_BOUND_${key}_FUNCTION__`\n if (value[cacheKey]) return value[cacheKey]\n\n if (!isConstructorFunction(value) && !isBoundedFunction(value)) {\n const bindRawObjectValue = value.bind(rawObject)\n\n for (const key in value) {\n bindRawObjectValue[key] = value[key]\n }\n\n if (value.hasOwnProperty('prototype')) {\n rawDefineProperty(bindRawObjectValue, 'prototype', {\n value: value.prototype,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n\n return value[cacheKey] = bindRawObjectValue\n }\n\n return value\n}\n","import type { microAppWindowType, EffectController } from '@micro-app/types'\nimport {\n getCurrentAppName,\n setCurrentAppName,\n removeDomScope,\n logWarn,\n isFunction,\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// this events should be sent to the specified app\nconst formatEventList = ['unmount', 'appstate-change']\n\n/**\n * Format event name\n * @param eventName event name\n * @param appName app name\n */\nexport function formatEventName (eventName: string, appName: string): string {\n if (\n formatEventList.includes(eventName) ||\n (\n (eventName === 'popstate' || eventName === 'hashchange') &&\n appInstanceMap.get(appName)?.useMemoryRouter\n )\n ) {\n return `${eventName}-${appName}`\n }\n return eventName\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 * update in 2022-09-02:\n * boundFunction is no longer exclude, because events in UMD mode will not cleared from v1.0.0-alpha.4\n * if (appName && !(appInstanceMap.get(appName)?.umdMode && isBoundFunction(listener))) {\n */\n if (appName) {\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 /**\n * update in 2022-09-02:\n * boundFunction is no longer exclude, because events in UMD mode will not cleared from v1.0.0-alpha.4\n * if (appName && !(appInstanceMap.get(appName)?.umdMode && isBoundFunction(listener))) {\n */\n if (appName) {\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/**\n * Rewrite side-effect events\n * @param microAppWindow micro window\n */\nexport default function effect (appName: string, microAppWindow: microAppWindowType): EffectController {\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 = formatEventName(type, appName)\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 = formatEventName(type, appName)\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 sstWindowListenerMap = new Map<string, Set<MicroEventListener>>()\n const sstDocumentListenerMap = new Map<string, Set<MicroEventListener>>()\n let sstIntervalIdMap = new Map<number, timeInfo>()\n let sstTimeoutIdMap = new Map<number, timeInfo>()\n let sstOnClickHandler: unknown\n\n const clearSnapshotData = () => {\n sstWindowListenerMap.clear()\n sstIntervalIdMap.clear()\n sstTimeoutIdMap.clear()\n sstDocumentListenerMap.clear()\n sstOnClickHandler = null\n }\n\n /**\n * record event and timer\n * Scenes:\n * 1. exec umdMountHook in umd mode\n * 2. hidden keep-alive app\n * 3. after init prerender app\n */\n const recordEffect = (): void => {\n // record window event\n eventListenerMap.forEach((listenerList, type) => {\n if (listenerList.size) {\n sstWindowListenerMap.set(type, new Set(listenerList))\n }\n })\n\n // record timers\n if (intervalIdMap.size) {\n sstIntervalIdMap = new Map(intervalIdMap)\n }\n\n if (timeoutIdMap.size) {\n sstTimeoutIdMap = new Map(timeoutIdMap)\n }\n\n // record onclick handler\n sstOnClickHandler = 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 sstDocumentListenerMap.set(type, new Set(listenerList))\n }\n })\n }\n }\n\n // rebuild event and timer before remount app\n const rebuildEffect = (): void => {\n // rebuild window event\n sstWindowListenerMap.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 sstIntervalIdMap.forEach((info: timeInfo) => {\n microAppWindow.setInterval(info.handler, info.timeout, ...info.args)\n })\n\n sstTimeoutIdMap.forEach((info: timeInfo) => {\n microAppWindow.setTimeout(info.handler, info.timeout, ...info.args)\n })\n\n // rebuild onclick event\n sstOnClickHandler && documentClickListMap.set(appName, sstOnClickHandler)\n\n /**\n * rebuild document event\n * WARNING!!: do not delete setCurrentAppName & removeDomScope\n */\n setCurrentAppName(appName)\n sstDocumentListenerMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n document.addEventListener(type, listener, listener?.__MICRO_APP_MARK_OPTIONS__)\n }\n })\n removeDomScope()\n\n clearSnapshotData()\n }\n\n // release all event listener & interval & timeout when unmount app\n const releaseEffect = (): void => {\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 recordEffect,\n rebuildEffect,\n releaseEffect,\n }\n}\n","import type {\n MicroLocation,\n MicroState,\n LocationQuery,\n HandleMicroPathResult,\n} from '@micro-app/types'\nimport globalEnv from '../../libs/global_env'\nimport {\n assign,\n parseQuery,\n stringifyQuery,\n isString,\n isUndefined,\n isPlainObject,\n createURL,\n} from '../../libs/utils'\nimport { appInstanceMap } from '../../create_app'\n\n// set micro app state to origin state\nexport function setMicroState (\n appName: string,\n microState: MicroState,\n): MicroState {\n const rawState = globalEnv.rawWindow.history.state\n const additionalState: Record<string, any> = {\n microAppState: assign({}, rawState?.microAppState, {\n [appName]: microState\n })\n }\n\n // create new state object\n return assign({}, rawState, additionalState)\n}\n\n// delete micro app state form origin state\nexport function removeMicroState (appName: string, rawState: MicroState): MicroState {\n if (isPlainObject(rawState?.microAppState)) {\n if (!isUndefined(rawState.microAppState[appName])) {\n delete rawState.microAppState[appName]\n }\n if (!Object.keys(rawState.microAppState).length) {\n delete rawState.microAppState\n }\n }\n\n return assign({}, rawState)\n}\n\n// get micro app state form origin state\nexport function getMicroState (appName: string): MicroState {\n return globalEnv.rawWindow.history.state?.microAppState?.[appName] || null\n}\n\nconst ENC_AD_RE = /&/g // %M1\nconst ENC_EQ_RE = /=/g // %M2\nconst DEC_AD_RE = /%M1/g // &\nconst DEC_EQ_RE = /%M2/g // =\n\n// encode path with special symbol\nexport function encodeMicroPath (path: string): string {\n return encodeURIComponent(commonDecode(path).replace(ENC_AD_RE, '%M1').replace(ENC_EQ_RE, '%M2'))\n}\n\n// decode path\nexport function decodeMicroPath (path: string): string {\n return commonDecode(path).replace(DEC_AD_RE, '&').replace(DEC_EQ_RE, '=')\n}\n\n// Recursively resolve address\nfunction commonDecode (path: string): string {\n try {\n const decPath = decodeURIComponent(path)\n if (path === decPath || DEC_AD_RE.test(decPath) || DEC_EQ_RE.test(decPath)) return decPath\n return commonDecode(decPath)\n } catch {\n return path\n }\n}\n\n// Format the query parameter key to prevent conflicts with the original parameters\nfunction formatQueryAppName (appName: string) {\n // return `app-${appName}`\n return appName\n}\n\n/**\n * Get app fullPath from browser url\n * @param appName app.name\n */\nexport function getMicroPathFromURL (appName: string): string | null {\n const rawLocation = globalEnv.rawWindow.location\n const queryObject = getQueryObjectFromURL(rawLocation.search, rawLocation.hash)\n const microPath = queryObject.hashQuery?.[formatQueryAppName(appName)] || queryObject.searchQuery?.[formatQueryAppName(appName)]\n return isString(microPath) ? decodeMicroPath(microPath) : null\n}\n\n/**\n * Attach child app fullPath to browser url\n * @param appName app.name\n * @param microLocation location of child app\n */\nexport function setMicroPathToURL (appName: string, microLocation: MicroLocation): HandleMicroPathResult {\n let { pathname, search, hash } = globalEnv.rawWindow.location\n const queryObject = getQueryObjectFromURL(search, hash)\n const encodedMicroPath = encodeMicroPath(\n microLocation.pathname +\n microLocation.search +\n microLocation.hash\n )\n\n /**\n * Is parent is hash router\n * In fact, this is not true. It just means that the parameter is added to the hash\n */\n let isAttach2Hash = false\n // If hash exists and search does not exist, it is considered as a hash route\n if (hash && !search) {\n isAttach2Hash = true\n if (queryObject.hashQuery) {\n queryObject.hashQuery[formatQueryAppName(appName)] = encodedMicroPath\n } else {\n queryObject.hashQuery = {\n [formatQueryAppName(appName)]: encodedMicroPath\n }\n }\n const baseHash = hash.includes('?') ? hash.slice(0, hash.indexOf('?') + 1) : hash + '?'\n hash = baseHash + stringifyQuery(queryObject.hashQuery)\n } else {\n if (queryObject.searchQuery) {\n queryObject.searchQuery[formatQueryAppName(appName)] = encodedMicroPath\n } else {\n queryObject.searchQuery = {\n [formatQueryAppName(appName)]: encodedMicroPath\n }\n }\n search = '?' + stringifyQuery(queryObject.searchQuery)\n }\n\n return {\n fullPath: pathname + search + hash,\n isAttach2Hash,\n }\n}\n\n/**\n * Delete child app fullPath from browser url\n * @param appName app.name\n * @param targetLocation target Location, default is rawLocation\n */\nexport function removeMicroPathFromURL (appName: string, targetLocation?: MicroLocation): HandleMicroPathResult {\n let { pathname, search, hash } = targetLocation || globalEnv.rawWindow.location\n const queryObject = getQueryObjectFromURL(search, hash)\n\n let isAttach2Hash = false\n if (queryObject.hashQuery?.[formatQueryAppName(appName)]) {\n isAttach2Hash = true\n delete queryObject.hashQuery?.[formatQueryAppName(appName)]\n const hashQueryStr = stringifyQuery(queryObject.hashQuery)\n hash = hash.slice(0, hash.indexOf('?') + Number(Boolean(hashQueryStr))) + hashQueryStr\n } else if (queryObject.searchQuery?.[formatQueryAppName(appName)]) {\n delete queryObject.searchQuery?.[formatQueryAppName(appName)]\n const searchQueryStr = stringifyQuery(queryObject.searchQuery)\n search = searchQueryStr ? '?' + searchQueryStr : ''\n }\n\n return {\n fullPath: pathname + search + hash,\n isAttach2Hash,\n }\n}\n\n/**\n * Format search, hash to object\n */\nfunction getQueryObjectFromURL (search: string, hash: string): LocationQuery {\n const queryObject: LocationQuery = {}\n\n if (search !== '' && search !== '?') {\n queryObject.searchQuery = parseQuery(search.slice(1))\n }\n\n if (hash.includes('?')) {\n queryObject.hashQuery = parseQuery(hash.slice(hash.indexOf('?') + 1))\n }\n\n return queryObject\n}\n\n/**\n * get microApp path from browser URL without hash\n */\nexport function getNoHashMicroPathFromURL (appName: string, baseUrl: string): string {\n const microPath = getMicroPathFromURL(appName)\n if (!microPath) return ''\n const formatLocation = createURL(microPath, baseUrl)\n return formatLocation.origin + formatLocation.pathname + formatLocation.search\n}\n\n/**\n * Effect app is an app that can perform route navigation\n * NOTE: Invalid app action\n * 1. prevent update browser url, dispatch popStateEvent, reload browser\n * 2. It can update path with pushState/replaceState\n * 3. Can not update path outside (with router api)\n * 3. Can not update path by location\n */\nexport function isEffectiveApp (appName: string): boolean {\n const app = appInstanceMap.get(appName)\n return !!(app && !app.isPrefetch)\n}\n","import type { MicroLocation } from '@micro-app/types'\nimport { appInstanceMap } from '../../create_app'\nimport { getActiveApps } from '../../micro_app'\nimport { formatEventName } from '../effect'\nimport { getMicroPathFromURL, getMicroState, isEffectiveApp } from './core'\nimport { updateMicroLocation } from './location'\nimport globalEnv from '../../libs/global_env'\nimport { removeDomScope, isFunction } from '../../libs/utils'\n\ntype PopStateListener = (this: Window, e: PopStateEvent) => void\ntype MicroPopStateEvent = PopStateEvent & { onlyForBrowser?: boolean }\n\n/**\n * dispatch PopStateEvent & HashChangeEvent to child app\n * each child app will listen for popstate event when sandbox start\n * and release it when sandbox stop\n * @param appName app name\n * @returns release callback\n */\nexport function addHistoryListener (appName: string): CallableFunction {\n const rawWindow = globalEnv.rawWindow\n // handle popstate event and distribute to child app\n const popStateHandler: PopStateListener = (e: MicroPopStateEvent): void => {\n /**\n * 1. unmount app & hidden keep-alive app will not receive popstate event\n * 2. filter out onlyForBrowser\n */\n if (\n getActiveApps({ excludeHiddenApp: true, excludePreRender: true }).includes(appName) &&\n !e.onlyForBrowser\n ) {\n const microPath = getMicroPathFromURL(appName)\n const app = appInstanceMap.get(appName)!\n const proxyWindow = app.sandBox!.proxyWindow\n let isHashChange = false\n // for hashChangeEvent\n const oldHref = proxyWindow.location.href\n // Do not attach micro state to url when microPath is empty\n if (microPath) {\n const oldHash = proxyWindow.location.hash\n updateMicroLocation(appName, microPath, proxyWindow.location as MicroLocation)\n isHashChange = proxyWindow.location.hash !== oldHash\n }\n\n // dispatch formatted popStateEvent to child\n dispatchPopStateEventToMicroApp(appName, proxyWindow)\n\n // dispatch formatted hashChangeEvent to child when hash change\n if (isHashChange) dispatchHashChangeEventToMicroApp(appName, proxyWindow, oldHref)\n\n // clear element scope before trigger event of next app\n removeDomScope()\n }\n }\n\n rawWindow.addEventListener('popstate', popStateHandler)\n\n return () => {\n rawWindow.removeEventListener('popstate', popStateHandler)\n }\n}\n\n/**\n * dispatch formatted popstate event to microApp\n * @param appName app name\n * @param proxyWindow sandbox window\n * @param eventState history.state\n */\nexport function dispatchPopStateEventToMicroApp (\n appName: string,\n proxyWindow: WindowProxy,\n): void {\n // create PopStateEvent named popstate-appName with sub app state\n const newPopStateEvent = new PopStateEvent(\n formatEventName('popstate', appName),\n { state: getMicroState(appName) }\n )\n\n /**\n * angular14 takes e.type as type judgment\n * when e.type is popstate-appName popstate event will be invalid\n */\n // Object.defineProperty(newPopStateEvent, 'type', {\n // value: 'popstate',\n // writable: true,\n // configurable: true,\n // enumerable: true,\n // })\n\n globalEnv.rawWindow.dispatchEvent(newPopStateEvent)\n\n // call function window.onpopstate if it exists\n isFunction(proxyWindow.onpopstate) && proxyWindow.onpopstate(newPopStateEvent)\n}\n\n/**\n * dispatch formatted hashchange event to microApp\n * @param appName app name\n * @param proxyWindow sandbox window\n * @param oldHref old href\n */\nexport function dispatchHashChangeEventToMicroApp (\n appName: string,\n proxyWindow: WindowProxy,\n oldHref: string,\n): void {\n const newHashChangeEvent = new HashChangeEvent(\n formatEventName('hashchange', appName),\n {\n newURL: proxyWindow.location.href,\n oldURL: oldHref,\n }\n )\n\n globalEnv.rawWindow.dispatchEvent(newHashChangeEvent)\n\n // call function window.onhashchange if it exists\n isFunction(proxyWindow.onhashchange) && proxyWindow.onhashchange(newHashChangeEvent)\n}\n\n/**\n * dispatch native PopStateEvent, simulate location behavior\n * @param onlyForBrowser only dispatch PopStateEvent to browser\n */\nfunction dispatchNativePopStateEvent (onlyForBrowser: boolean): void {\n const event = new PopStateEvent('popstate', { state: null }) as MicroPopStateEvent\n if (onlyForBrowser) event.onlyForBrowser = true\n globalEnv.rawWindow.dispatchEvent(event)\n}\n\n/**\n * dispatch hashchange event to browser\n * @param oldHref old href of rawWindow.location\n */\nfunction dispatchNativeHashChangeEvent (oldHref: string): void {\n const newHashChangeEvent = new HashChangeEvent(\n 'hashchange',\n {\n newURL: globalEnv.rawWindow.location.href,\n oldURL: oldHref,\n }\n )\n\n globalEnv.rawWindow.dispatchEvent(newHashChangeEvent)\n}\n\n/**\n * dispatch popstate & hashchange event to browser\n * @param appName app.name\n * @param onlyForBrowser only dispatch event to browser\n * @param oldHref old href of rawWindow.location\n */\nexport function dispatchNativeEvent (\n appName: string,\n onlyForBrowser: boolean,\n oldHref?: string,\n): void {\n // clear element scope before dispatch global event\n removeDomScope()\n if (isEffectiveApp(appName)) {\n dispatchNativePopStateEvent(onlyForBrowser)\n if (oldHref) {\n dispatchNativeHashChangeEvent(oldHref)\n }\n }\n}\n","/* eslint-disable no-void */\nimport type {\n MicroState,\n MicroLocation,\n MicroHistory,\n HistoryProxyValue,\n HandleMicroPathResult,\n} from '@micro-app/types'\nimport globalEnv from '../../libs/global_env'\nimport { isString, createURL, isPlainObject, isURL, assign, isFunction, removeDomScope } from '../../libs/utils'\nimport { setMicroPathToURL, setMicroState, getMicroState, getMicroPathFromURL, isEffectiveApp } from './core'\nimport { dispatchNativeEvent } from './event'\nimport { updateMicroLocation } from './location'\nimport bindFunctionToRawObject from '../bind_function'\nimport { getActiveApps } from '../../micro_app'\nimport { appInstanceMap } from '../../create_app'\n\n/**\n * create proxyHistory for microApp\n * MDN https://developer.mozilla.org/en-US/docs/Web/API/History\n * @param appName app name\n * @param microLocation microApp location\n */\nexport function createMicroHistory (appName: string, microLocation: MicroLocation): MicroHistory {\n const rawHistory = globalEnv.rawWindow.history\n function getMicroHistoryMethod (methodName: string): CallableFunction {\n return function (...rests: any[]): void {\n if (isString(rests[2]) || isURL(rests[2])) {\n const targetLocation = createURL(rests[2], microLocation.href)\n if (targetLocation.origin === microLocation.origin) {\n navigateWithNativeEvent(\n appName,\n methodName,\n setMicroPathToURL(appName, targetLocation),\n true,\n setMicroState(appName, rests[0]),\n rests[1],\n )\n const targetFullPath = targetLocation.pathname + targetLocation.search + targetLocation.hash\n if (targetFullPath !== microLocation.fullPath) {\n updateMicroLocation(appName, targetFullPath, microLocation)\n }\n return void 0\n }\n }\n\n nativeHistoryNavigate(appName, methodName, rests[2], rests[0], rests[1])\n }\n }\n\n const pushState = getMicroHistoryMethod('pushState')\n const replaceState = getMicroHistoryMethod('replaceState')\n\n return new Proxy(rawHistory, {\n get (target: History, key: PropertyKey): HistoryProxyValue {\n if (key === 'state') {\n return getMicroState(appName)\n } else if (key === 'pushState') {\n return pushState\n } else if (key === 'replaceState') {\n return replaceState\n }\n const rawValue = Reflect.get(target, key)\n return isFunction(rawValue) ? bindFunctionToRawObject(target, rawValue, 'HISTORY') : rawValue\n },\n set (target: History, key: PropertyKey, value: unknown): boolean {\n Reflect.set(target, key, value)\n /**\n * If the set() method returns false, and the assignment happened in strict-mode code, a TypeError will be thrown.\n * e.g. history.state = {}\n * TypeError: 'set' on proxy: trap returned falsish for property 'state'\n */\n return true\n }\n })\n}\n\n/**\n * navigate to new path base on native method of history\n * @param appName app.name\n * @param methodName pushState/replaceState\n * @param fullPath full path\n * @param state history.state, default is null\n * @param title history.title, default is ''\n */\nexport function nativeHistoryNavigate (\n appName: string,\n methodName: string,\n fullPath: string,\n state: unknown = null,\n title = '',\n): void {\n if (isEffectiveApp(appName)) {\n const method = methodName === 'pushState' ? globalEnv.rawPushState : globalEnv.rawReplaceState\n method.call(globalEnv.rawWindow.history, state, title, fullPath)\n }\n}\n\n/**\n * Navigate to new path, and dispatch native popStateEvent/hashChangeEvent to browser\n * Use scenes:\n * 1. mount/unmount through attachRouteToBrowserURL with limited popstateEvent\n * 2. proxyHistory.pushState/replaceState with limited popstateEvent\n * 3. api microApp.router.push/replace\n * 4. proxyLocation.hash = xxx\n * @param appName app.name\n * @param methodName pushState/replaceState\n * @param result result of add/remove microApp path on browser url\n * @param onlyForBrowser only dispatch event to browser\n * @param state history.state, not required\n * @param title history.title, not required\n */\nexport function navigateWithNativeEvent (\n appName: string,\n methodName: string,\n result: HandleMicroPathResult,\n onlyForBrowser: boolean,\n state?: unknown,\n title?: string,\n): void {\n if (isEffectiveApp(appName)) {\n const rawLocation = globalEnv.rawWindow.location\n const oldFullPath = rawLocation.pathname + rawLocation.search + rawLocation.hash\n const oldHref = result.isAttach2Hash && oldFullPath !== result.fullPath ? rawLocation.href : null\n // navigate with native history method\n nativeHistoryNavigate(appName, methodName, result.fullPath, state, title)\n if (oldFullPath !== result.fullPath) dispatchNativeEvent(appName, onlyForBrowser, oldHref)\n }\n}\n\n/**\n * update browser url when mount/unmount/hidden/show/attachToURL/attachAllToURL\n * just attach microRoute info to browser, dispatch event to base app(exclude child)\n * @param appName app.name\n * @param result result of add/remove microApp path on browser url\n * @param state history.state\n */\nexport function attachRouteToBrowserURL (\n appName: string,\n result: HandleMicroPathResult,\n state: MicroState,\n): void {\n navigateWithNativeEvent(appName, 'replaceState', result, true, state)\n}\n\n/**\n * When path is same, keep the microAppState in history.state\n * Fix bug of missing microAppState when base app is next.js or angular\n * @param method history.pushState/replaceState\n */\nfunction reWriteHistoryMethod (method: History['pushState' | 'replaceState']): CallableFunction {\n const rawWindow = globalEnv.rawWindow\n return function (...rests: [data: any, unused: string, url?: string]): void {\n if (\n rawWindow.history.state?.microAppState &&\n (!isPlainObject(rests[0]) || !rests[0].microAppState) &&\n (isString(rests[2]) || isURL(rests[2]))\n ) {\n const currentHref = rawWindow.location.href\n const targetLocation = createURL(rests[2], currentHref)\n if (targetLocation.href === currentHref) {\n rests[0] = assign({}, rests[0], {\n microAppState: rawWindow.history.state.microAppState,\n })\n }\n }\n\n method.apply(rawWindow.history, rests)\n /**\n * Attach child router info to browser url when base app navigate with pushState/replaceState\n * NOTE:\n * 1. Exec after apply pushState/replaceState\n * 2. Unable to catch when base app navigate with location\n * 3. When in nest app, rawPushState/rawReplaceState has been modified by parent\n */\n getActiveApps({\n excludeHiddenApp: true,\n excludePreRender: true,\n }).forEach(appName => {\n const app = appInstanceMap.get(appName)!\n if (app.sandBox && app.useMemoryRouter && !getMicroPathFromURL(appName)) {\n attachRouteToBrowserURL(\n appName,\n setMicroPathToURL(appName, app.sandBox.proxyWindow.location as MicroLocation),\n setMicroState(appName, getMicroState(appName)),\n )\n }\n })\n // fix bug for nest app\n removeDomScope()\n }\n}\n\n/**\n * rewrite history.pushState/replaceState\n * used to fix the problem that the microAppState maybe missing when mainApp navigate to same path\n * e.g: when nextjs, angular receive popstate event, they will use history.replaceState to update browser url with a new state object\n */\nexport function patchHistory (): void {\n const rawWindow = globalEnv.rawWindow\n rawWindow.history.pushState = reWriteHistoryMethod(\n globalEnv.rawPushState,\n )\n rawWindow.history.replaceState = reWriteHistoryMethod(\n globalEnv.rawReplaceState,\n )\n}\n\nexport function releasePatchHistory (): void {\n const rawWindow = globalEnv.rawWindow\n rawWindow.history.pushState = globalEnv.rawPushState\n rawWindow.history.replaceState = globalEnv.rawReplaceState\n}\n","import type {\n Func,\n Router,\n RouterTarget,\n navigationMethod,\n MicroLocation,\n RouterGuard,\n GuardLocation,\n AccurateGuard,\n SetDefaultPageOptions,\n AttachAllToURLParam,\n} from '@micro-app/types'\nimport {\n encodeMicroPath,\n decodeMicroPath,\n setMicroPathToURL,\n setMicroState,\n getMicroState,\n getMicroPathFromURL,\n} from './core'\nimport {\n logError,\n logWarn,\n formatAppName,\n createURL,\n isFunction,\n isPlainObject,\n useSetRecord,\n useMapRecord,\n requestIdleCallback,\n isString,\n noopFalse,\n removeDomScope,\n isObject,\n} from '../../libs/utils'\nimport { appInstanceMap } from '../../create_app'\nimport { getActiveApps } from '../../micro_app'\nimport globalEnv from '../../libs/global_env'\nimport { navigateWithNativeEvent, attachRouteToBrowserURL } from './history'\nimport bindFunctionToRawObject from '../bind_function'\n\nexport interface RouterApi {\n router: Router,\n executeNavigationGuard: (appName: string, to: GuardLocation, from: GuardLocation) => void\n clearRouterWhenUnmount: (appName: string) => void\n}\n\nexport interface CreteBaseRouter {\n setBaseAppRouter (baseRouter: unknown): void\n getBaseAppRouter(): unknown\n}\n\nexport interface CreateDefaultPage {\n setDefaultPage(options: SetDefaultPageOptions): () => boolean\n removeDefaultPage(appName: string): boolean\n getDefaultPage(key: PropertyKey): string | void\n}\n\nfunction createRouterApi (): RouterApi {\n /**\n * common handler for router.push/router.replace method\n * @param appName app name\n * @param methodName replaceState/pushState\n * @param targetLocation target location\n * @param state to.state\n */\n function navigateWithRawHistory (\n appName: string,\n methodName: string,\n targetLocation: MicroLocation,\n state: unknown,\n ): void {\n navigateWithNativeEvent(\n appName,\n methodName,\n setMicroPathToURL(\n appName,\n targetLocation,\n ),\n false,\n setMicroState(\n appName,\n state ?? null,\n ),\n )\n // clear element scope after navigate\n removeDomScope()\n }\n /**\n * create method of router.push/replace\n * NOTE:\n * 1. The same fullPath will be blocked\n * 2. name & path is required\n * 3. path is fullPath except for the domain (the domain can be taken, but not valid)\n * @param replace use router.replace?\n */\n function createNavigationMethod (replace: boolean): navigationMethod {\n return function (to: RouterTarget): void {\n const appName = formatAppName(to.name)\n if (appName && isString(to.path)) {\n const app = appInstanceMap.get(appName)\n if (app && (!app.sandBox || !app.useMemoryRouter)) {\n return logError(`navigation failed, memory router of app ${appName} is closed`)\n }\n // active apps, include hidden keep-alive app\n if (getActiveApps({ excludePreRender: true }).includes(appName)) {\n const microLocation = app!.sandBox!.proxyWindow.location as MicroLocation\n const targetLocation = createURL(to.path, microLocation.href)\n // Only get path data, even if the origin is different from microApp\n const targetFullPath = targetLocation.pathname + targetLocation.search + targetLocation.hash\n if (microLocation.fullPath !== targetFullPath || getMicroPathFromURL(appName) !== targetFullPath) {\n const methodName = (replace && to.replace !== false) || to.replace === true ? 'replaceState' : 'pushState'\n navigateWithRawHistory(appName, methodName, targetLocation, to.state)\n }\n } else {\n /**\n * app not exit or unmounted, update browser URL with replaceState\n * use base app location.origin as baseURL\n */\n const rawLocation = globalEnv.rawWindow.location\n const targetLocation = createURL(to.path, rawLocation.origin)\n const targetFullPath = targetLocation.pathname + targetLocation.search + targetLocation.hash\n if (getMicroPathFromURL(appName) !== targetFullPath) {\n navigateWithRawHistory(\n appName,\n to.replace === false ? 'pushState' : 'replaceState',\n targetLocation,\n to.state,\n )\n }\n }\n } else {\n logError(`navigation failed, name & path are required when use router.${replace ? 'replace' : 'push'}`)\n }\n }\n }\n\n // create method of router.go/back/forward\n function createRawHistoryMethod (methodName: string): Func {\n return function (...rests: unknown[]): void {\n return globalEnv.rawWindow.history[methodName](...rests)\n }\n }\n\n const beforeGuards = useSetRecord<RouterGuard>()\n const afterGuards = useSetRecord<RouterGuard>()\n\n /**\n * run all of beforeEach/afterEach guards\n * NOTE:\n * 1. Modify browser url first, and then run guards,\n * consistent with the browser forward & back button\n * 2. Prevent the element binding\n * @param appName app name\n * @param to target location\n * @param from old location\n * @param guards guards list\n */\n function runGuards (\n appName: string,\n to: GuardLocation,\n from: GuardLocation,\n guards: Set<RouterGuard>,\n ) {\n // clear element scope before execute function of parent\n removeDomScope()\n for (const guard of guards) {\n if (isFunction(guard)) {\n guard(to, from, appName)\n } else if (isPlainObject(guard) && isFunction((guard as AccurateGuard)[appName])) {\n guard[appName](to, from)\n }\n }\n }\n\n /**\n * global hook for router\n * update router information base on microLocation\n * @param appName app name\n * @param microLocation location of microApp\n */\n function executeNavigationGuard (\n appName: string,\n to: GuardLocation,\n from: GuardLocation,\n ): void {\n router.current.set(appName, to)\n\n runGuards(appName, to, from, beforeGuards.list())\n\n requestIdleCallback(() => {\n runGuards(appName, to, from, afterGuards.list())\n })\n }\n\n function clearRouterWhenUnmount (appName: string): void {\n router.current.delete(appName)\n }\n\n /**\n * NOTE:\n * 1. sandbox not open\n * 2. useMemoryRouter is false\n */\n function commonHandlerForAttachToURL (appName: string): void {\n const app = appInstanceMap.get(appName)!\n if (app.sandBox && app.useMemoryRouter) {\n attachRouteToBrowserURL(\n appName,\n setMicroPathToURL(appName, app.sandBox.proxyWindow.location as MicroLocation),\n setMicroState(appName, getMicroState(appName)),\n )\n }\n }\n\n /**\n * Attach specified active app router info to browser url\n * @param appName app name\n */\n function attachToURL (appName: string): void {\n appName = formatAppName(appName)\n if (appName && getActiveApps().includes(appName)) {\n commonHandlerForAttachToURL(appName)\n }\n }\n\n /**\n * Attach all active app router info to browser url\n * @param includeHiddenApp include hidden keep-alive app\n * @param includePreRender include preRender app\n */\n function attachAllToURL ({\n includeHiddenApp = false,\n includePreRender = false,\n }: AttachAllToURLParam): void {\n getActiveApps({\n excludeHiddenApp: !includeHiddenApp,\n excludePreRender: !includePreRender,\n }).forEach(appName => commonHandlerForAttachToURL(appName))\n }\n\n function createDefaultPageApi (): CreateDefaultPage {\n // defaultPage data\n const defaultPageRecord = useMapRecord<string>()\n\n /**\n * defaultPage only effect when mount, and has lower priority than query on browser url\n * SetDefaultPageOptions {\n * @param name app name\n * @param path page path\n * }\n */\n function setDefaultPage (options: SetDefaultPageOptions): () => boolean {\n const appName = formatAppName(options.name)\n if (!appName || !options.path) {\n if (__DEV__) {\n if (!appName) {\n logWarn(`setDefaultPage: invalid appName \"${appName}\"`)\n } else {\n logWarn('setDefaultPage: path is required')\n }\n }\n return noopFalse\n }\n\n return defaultPageRecord.add(appName, options.path)\n }\n\n function removeDefaultPage (appName: string): boolean {\n appName = formatAppName(appName)\n if (!appName) return false\n\n return defaultPageRecord.delete(appName)\n }\n\n return {\n setDefaultPage,\n removeDefaultPage,\n getDefaultPage: defaultPageRecord.get,\n }\n }\n\n function createBaseRouterApi (): CreteBaseRouter {\n /**\n * Record base app router, let child app control base app navigation\n */\n let baseRouterProxy: unknown = null\n function setBaseAppRouter (baseRouter: unknown): void {\n if (isObject(baseRouter)) {\n baseRouterProxy = new Proxy(baseRouter, {\n get (target: History, key: PropertyKey): unknown {\n removeDomScope()\n const rawValue = Reflect.get(target, key)\n return isFunction(rawValue) ? bindFunctionToRawObject(target, rawValue, 'BASEROUTER') : rawValue\n },\n set (target: History, key: PropertyKey, value: unknown): boolean {\n Reflect.set(target, key, value)\n return true\n }\n })\n } else if (__DEV__) {\n logWarn('setBaseAppRouter: Invalid base router')\n }\n }\n\n return {\n setBaseAppRouter,\n getBaseAppRouter: () => baseRouterProxy,\n }\n }\n\n // Router API for developer\n const router: Router = {\n current: new Map<string, MicroLocation>(),\n encode: encodeMicroPath,\n decode: decodeMicroPath,\n push: createNavigationMethod(false),\n replace: createNavigationMethod(true),\n go: createRawHistoryMethod('go'),\n back: createRawHistoryMethod('back'),\n forward: createRawHistoryMethod('forward'),\n beforeEach: beforeGuards.add,\n afterEach: afterGuards.add,\n attachToURL,\n attachAllToURL,\n ...createDefaultPageApi(),\n ...createBaseRouterApi(),\n }\n\n return {\n router,\n executeNavigationGuard,\n clearRouterWhenUnmount,\n }\n}\n\nexport const {\n router,\n executeNavigationGuard,\n clearRouterWhenUnmount,\n} = createRouterApi()\n","/* eslint-disable no-void */\nimport type { MicroLocation, GuardLocation, ShadowLocation } from '@micro-app/types'\nimport globalEnv from '../../libs/global_env'\nimport { assign as oAssign, rawDefineProperties, createURL, noop } from '../../libs/utils'\nimport { setMicroPathToURL, isEffectiveApp } from './core'\nimport { dispatchNativeEvent } from './event'\nimport { executeNavigationGuard } from './api'\nimport { nativeHistoryNavigate, navigateWithNativeEvent } from './history'\n\nconst shadowLocationKeys: ReadonlyArray<keyof MicroLocation> = ['href', 'pathname', 'search', 'hash']\n// origin is readonly, so we ignore when updateMicroLocation\nconst locationKeys: ReadonlyArray<keyof MicroLocation> = [...shadowLocationKeys, 'host', 'hostname', 'port', 'protocol', 'search']\n// origin, fullPath is necessary for guardLocation\nconst guardLocationKeys: ReadonlyArray<keyof MicroLocation> = [...locationKeys, 'origin', 'fullPath']\n\n/**\n * Create location for microApp, each microApp has only one location object, it is a reference type\n * MDN https://developer.mozilla.org/en-US/docs/Web/API/Location\n * @param appName app name\n * @param url app url\n */\nexport function createMicroLocation (appName: string, url: string): MicroLocation {\n const rawWindow = globalEnv.rawWindow\n const rawLocation = rawWindow.location\n // microLocation is the location of child app, it is globally unique\n const microLocation = createURL(url)\n // shadowLocation is the current location information (href, pathname, search, hash)\n const shadowLocation: ShadowLocation = {\n href: microLocation.href,\n pathname: microLocation.pathname,\n search: microLocation.search,\n hash: microLocation.hash,\n }\n\n /**\n * Common handler for href, assign, replace\n * It is mainly used to deal with special scenes about hash\n * @param value target path\n * @param methodName pushState/replaceState\n * @returns origin value or formatted value\n */\n const commonHandler = (value: string | URL, methodName: string): string | URL | void => {\n const targetLocation = createURL(value, microLocation.href)\n // Even if the origin is the same, developers still have the possibility of want to jump to a new page\n if (targetLocation.origin === microLocation.origin) {\n const setMicroPathResult = setMicroPathToURL(appName, targetLocation)\n /**\n * change hash with location.href will not trigger the browser reload\n * so we use pushState & reload to imitate href behavior\n * NOTE:\n * 1. if child app only change hash, it should not trigger browser reload\n * 2. if address is same and has hash, it should not add route stack\n */\n if (\n targetLocation.pathname === shadowLocation.pathname &&\n targetLocation.search === shadowLocation.search\n ) {\n let oldHref = null\n if (targetLocation.hash !== shadowLocation.hash) {\n if (setMicroPathResult.isAttach2Hash) oldHref = rawLocation.href\n nativeHistoryNavigate(appName, methodName, setMicroPathResult.fullPath)\n }\n\n if (targetLocation.hash) {\n dispatchNativeEvent(appName, false, oldHref)\n } else {\n rawReload()\n }\n return void 0\n /**\n * when baseApp is hash router, address change of child can not reload browser\n * so we imitate behavior of browser (reload)\n */\n } else if (setMicroPathResult.isAttach2Hash) {\n nativeHistoryNavigate(appName, methodName, setMicroPathResult.fullPath)\n rawReload()\n return void 0\n }\n\n value = setMicroPathResult.fullPath\n }\n\n return value\n }\n\n /**\n * create location PropertyDescriptor (href, pathname, search, hash)\n * @param key property name\n * @param setter setter of location property\n */\n function createPropertyDescriptor (\n getter: () => string,\n setter: (v: string) => void,\n ): PropertyDescriptor {\n return {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n }\n }\n\n /**\n * common handler for location.pathname & location.search\n * @param targetPath target fullPath\n * @param key pathname/search\n */\n function handleForPathNameAndSearch (targetPath: string, key: string): void {\n const targetLocation = createURL(targetPath, url)\n // When the browser url has a hash value, the same pathname/search will not refresh browser\n if (targetLocation[key] === shadowLocation[key] && shadowLocation.hash) {\n // The href has not changed, not need to dispatch hashchange event\n dispatchNativeEvent(appName, false)\n } else {\n /**\n * When the value is the same, no new route stack will be added\n * Special scenes such as:\n * pathname: /path ==> /path#hash, /path ==> /path?query\n * search: ?query ==> ?query#hash\n */\n nativeHistoryNavigate(\n appName,\n targetLocation[key] === shadowLocation[key] ? 'replaceState' : 'pushState',\n setMicroPathToURL(appName, targetLocation).fullPath,\n )\n rawReload()\n }\n }\n\n function rawReload () {\n isEffectiveApp(appName) && rawLocation.reload()\n }\n\n /**\n * Special processing for four keys: href, pathname, search and hash\n * They take values from shadowLocation, and require special operations when assigning values\n */\n rawDefineProperties(microLocation, {\n href: createPropertyDescriptor(\n (): string => shadowLocation.href,\n (value: string): void => {\n if (isEffectiveApp(appName)) {\n const targetPath = commonHandler(value, 'pushState')\n if (targetPath) rawLocation.href = targetPath\n }\n }\n ),\n pathname: createPropertyDescriptor(\n (): string => shadowLocation.pathname,\n (value: string): void => {\n const targetPath = ('/' + value).replace(/^\\/+/, '/') + shadowLocation.search + shadowLocation.hash\n handleForPathNameAndSearch(targetPath, 'pathname')\n }\n ),\n search: createPropertyDescriptor(\n (): string => shadowLocation.search,\n (value: string): void => {\n const targetPath = shadowLocation.pathname + ('?' + value).replace(/^\\?+/, '?') + shadowLocation.hash\n handleForPathNameAndSearch(targetPath, 'search')\n }\n ),\n hash: createPropertyDescriptor(\n (): string => shadowLocation.hash,\n (value: string): void => {\n const targetPath = shadowLocation.pathname + shadowLocation.search + ('#' + value).replace(/^#+/, '#')\n const targetLocation = createURL(targetPath, url)\n // The same hash will not trigger popStateEvent\n if (targetLocation.hash !== shadowLocation.hash) {\n navigateWithNativeEvent(\n appName,\n 'pushState',\n setMicroPathToURL(appName, targetLocation),\n false,\n )\n }\n }\n ),\n fullPath: createPropertyDescriptor(\n (): string => shadowLocation.pathname + shadowLocation.search + shadowLocation.hash,\n noop,\n ),\n })\n\n const createLocationMethod = (locationMethodName: string) => {\n return function (value: string | URL) {\n if (isEffectiveApp(appName)) {\n const targetPath = commonHandler(value, locationMethodName === 'assign' ? 'pushState' : 'replaceState')\n if (targetPath) rawLocation[locationMethodName](targetPath)\n }\n }\n }\n\n return oAssign(microLocation, {\n assign: createLocationMethod('assign'),\n replace: createLocationMethod('replace'),\n reload: (forcedReload?: boolean): void => rawLocation.reload(forcedReload),\n shadowLocation,\n })\n}\n\n/**\n * create guardLocation by microLocation, used for router guard\n */\nfunction createGuardLocation (appName: string, microLocation: MicroLocation): GuardLocation {\n const guardLocation = oAssign({ name: appName }, microLocation) as GuardLocation\n // The prototype values on the URL needs to be manually transferred\n for (const key of guardLocationKeys) guardLocation[key] = microLocation[key]\n return guardLocation\n}\n\n// for updateBrowserURLWithLocation when initial\nexport function autoTriggerNavigationGuard (appName: string, microLocation: MicroLocation): void {\n executeNavigationGuard(appName, createGuardLocation(appName, microLocation), createGuardLocation(appName, microLocation))\n}\n\n/**\n * The following scenes will trigger location update:\n * 1. pushState/replaceState\n * 2. popStateEvent\n * 3. query on browser url when init sub app\n * 4. set defaultPage when when init sub app\n * NOTE:\n * 1. update browser URL first, and then update microLocation\n * 2. the same fullPath will not trigger router guards\n * @param appName app name\n * @param path target path\n * @param base base url\n * @param microLocation micro app location\n * @param type auto prevent\n */\nexport function updateMicroLocation (\n appName: string,\n path: string,\n microLocation: MicroLocation,\n type?: string,\n): void {\n const newLocation = createURL(path, microLocation.href)\n // record old values of microLocation to `from`\n const from = createGuardLocation(appName, microLocation)\n for (const key of locationKeys) {\n if (shadowLocationKeys.includes(key)) {\n // reference of shadowLocation\n microLocation.shadowLocation[key] = newLocation[key] as string\n } else {\n // @ts-ignore reference of microLocation\n microLocation[key] = newLocation[key]\n }\n }\n // update latest values of microLocation to `to`\n const to = createGuardLocation(appName, microLocation)\n\n // The hook called only when fullPath changed\n if (type === 'auto' || (from.fullPath !== to.fullPath && type !== 'prevent')) {\n executeNavigationGuard(appName, to, from)\n }\n}\n","import type {\n MicroRouter,\n MicroLocation,\n} from '@micro-app/types'\nimport globalEnv from '../../libs/global_env'\nimport {\n getMicroPathFromURL,\n setMicroPathToURL,\n removeMicroPathFromURL,\n removeMicroState,\n setMicroState,\n} from './core'\nimport {\n createMicroLocation,\n updateMicroLocation,\n autoTriggerNavigationGuard,\n} from './location'\nimport {\n createMicroHistory,\n attachRouteToBrowserURL,\n} from './history'\nimport { createURL } from '../../libs/utils'\nimport { clearRouterWhenUnmount } from './api'\nexport { router } from './api'\nexport { addHistoryListener } from './event'\nexport { getNoHashMicroPathFromURL } from './core'\nexport { patchHistory, releasePatchHistory } from './history'\n\n/**\n * The router system has two operations: read and write\n * Read through location and write through history & location\n * @param appName app name\n * @param url app url\n * @returns MicroRouter\n */\nexport default function createMicroRouter (appName: string, url: string): MicroRouter {\n const microLocation = createMicroLocation(appName, url)\n return {\n microLocation,\n microHistory: createMicroHistory(appName, microLocation),\n }\n}\n\n/**\n * When the sandbox executes start, or the hidden keep-alive application is re-rendered, the location is updated according to the browser url or attach router info to browser url\n * @param appName app.name\n * @param microLocation MicroLocation for sandbox\n * @param defaultPage default page\n */\nexport function initRouteStateWithURL (\n appName: string,\n microLocation: MicroLocation,\n defaultPage?: string,\n): void {\n const microPath = getMicroPathFromURL(appName)\n if (microPath) {\n updateMicroLocation(appName, microPath, microLocation, 'auto')\n } else {\n updateBrowserURLWithLocation(appName, microLocation, defaultPage)\n }\n}\n\n/**\n * initialize browser information according to microLocation\n * called on sandbox.start or reshow of keep-alive app\n */\nexport function updateBrowserURLWithLocation (\n appName: string,\n microLocation: MicroLocation,\n defaultPage?: string,\n): void {\n // update microLocation with defaultPage\n if (defaultPage) updateMicroLocation(appName, defaultPage, microLocation, 'prevent')\n // attach microApp route info to browser URL\n attachRouteToBrowserURL(\n appName,\n setMicroPathToURL(appName, microLocation),\n setMicroState(\n appName,\n null,\n ),\n )\n // trigger guards after change browser URL\n autoTriggerNavigationGuard(appName, microLocation)\n}\n\n/**\n * In any case, microPath & microState will be removed from browser, but location will be initialized only when keep-router-state is false\n * @param appName app name\n * @param url app url\n * @param microLocation location of microApp\n * @param keepRouteState keep-router-state is only used to control whether to clear the location of microApp\n */\nexport function clearRouteStateFromURL (\n appName: string,\n url: string,\n microLocation: MicroLocation,\n keepRouteState: boolean,\n): void {\n if (!keepRouteState) {\n const { pathname, search, hash } = createURL(url)\n updateMicroLocation(appName, pathname + search + hash, microLocation, 'prevent')\n }\n removeStateAndPathFromBrowser(appName)\n clearRouterWhenUnmount(appName)\n}\n\n/**\n * remove microState from history.state and remove microPath from browserURL\n * called on sandbox.stop or hidden of keep-alive app\n */\nexport function removeStateAndPathFromBrowser (appName: string): void {\n attachRouteToBrowserURL(\n appName,\n removeMicroPathFromURL(appName),\n removeMicroState(appName, globalEnv.rawWindow.history.state),\n )\n}\n","import globalEnv from '../libs/global_env'\nimport {\n isFunction,\n isUndefined,\n isString,\n createURL,\n isURL,\n removeDomScope,\n isConstructor,\n} from '../libs/utils'\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/API/fetch\n * Promise<Response> fetch(input[, init])\n * input: string/Request\n * init?: object\n * @param url app url\n * @param target proxy target\n */\nexport function createMicroFetch (url: string, target?: Window['fetch']): Window['fetch'] {\n const rawFetch = !isUndefined(target) ? target : globalEnv.rawWindow.fetch\n if (!isFunction(rawFetch)) return rawFetch\n return function microFetch (\n input: RequestInfo | URL | string,\n init?: RequestInit,\n ...rests: unknown[]\n ): Promise<Response> {\n if (isString(input) || isURL(input)) {\n input = createURL(input, url).toString()\n }\n /**\n * When fetch rewrite by baseApp, domScope still active when exec rawWindow.fetch\n * If baseApp operate dom in fetch, it will cause error\n * The same for XMLHttpRequest, EventSource\n */\n removeDomScope()\n return rawFetch.call(globalEnv.rawWindow, input, init, ...rests)\n }\n}\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest\n * @param url app url\n * @param target proxy target\n */\nexport function createMicroXMLHttpRequest (url: string, target?: XMLHttpRequest): any {\n const rawXMLHttpRequest = !isUndefined(target) ? target : globalEnv.rawWindow.XMLHttpRequest\n if (!isConstructor(rawXMLHttpRequest)) return rawXMLHttpRequest\n return class MicroXMLHttpRequest extends rawXMLHttpRequest {\n open (method: string, reqUrl: string, ...rests: unknown[]): void {\n if ((isString(reqUrl) && !/^f(ile|tp):\\/\\//.test(reqUrl)) || isURL(reqUrl)) {\n reqUrl = createURL(reqUrl, url).toString()\n }\n removeDomScope()\n super.open(method, reqUrl, ...rests)\n }\n }\n}\n\nexport interface EventSourceInstance {\n close(): void;\n}\n\nexport interface EventSourceApi {\n createMicroEventSource(appName: string, url: string, target?: EventSource): any\n clearMicroEventSource (appName: string): void\n}\n\nexport function useMicroEventSource (): EventSourceApi {\n let eventSourceMap: Map<string, Set<EventSourceInstance>>\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/EventSource\n * pc = new EventSource(url[, configuration])\n * url: string/Request\n * configuration?: object\n * @param url app url\n * @param target proxy target\n */\n function createMicroEventSource (appName: string, url: string, target?: EventSource): any {\n const rawEventSource = !isUndefined(target) ? target : globalEnv.rawWindow.EventSource\n if (!isConstructor(rawEventSource)) return rawEventSource\n return class MicroEventSource extends rawEventSource {\n constructor (\n eventSourceUrl: string | URL,\n eventSourceInitDict?: EventSourceInit,\n ...rests: unknown[]\n ) {\n if (isString(eventSourceUrl) || isURL(eventSourceUrl)) {\n eventSourceUrl = createURL(eventSourceUrl, url).toString()\n }\n removeDomScope()\n super(eventSourceUrl, eventSourceInitDict, ...rests)\n\n if (eventSourceMap) {\n const eventSourceList = eventSourceMap.get(appName)\n if (eventSourceList) {\n eventSourceList.add(this)\n } else {\n eventSourceMap.set(appName, new Set([this]))\n }\n } else {\n eventSourceMap = new Map([[appName, new Set([this])]])\n }\n }\n\n close (): void {\n super.close()\n eventSourceMap.get(appName)?.delete(this)\n }\n }\n }\n\n function clearMicroEventSource (appName: string): void {\n const eventSourceList = eventSourceMap?.get(appName)\n if (eventSourceList?.size) {\n eventSourceList.forEach(item => {\n item.close()\n })\n eventSourceList.clear()\n }\n }\n\n return {\n createMicroEventSource,\n clearMicroEventSource,\n }\n}\n","/* eslint-disable no-cond-assign */\nimport type {\n microAppWindowType,\n SandBoxInterface,\n plugins,\n MicroLocation,\n SandBoxAdapter,\n SandBoxStartParams,\n SandBoxStopParams,\n EffectController,\n} from '@micro-app/types'\nimport {\n EventCenterForMicroApp,\n rebuildDataCenterSnapshot,\n recordDataCenterSnapshot,\n} from '../interact'\nimport globalEnv from '../libs/global_env'\nimport { initEnvOfNestedApp } from '../libs/nest_app'\nimport {\n getEffectivePath,\n isArray,\n isPlainObject,\n isString,\n isUndefined,\n removeDomScope,\n unique,\n throttleDeferForSetAppName,\n rawDefineProperty,\n rawDefineProperties,\n isFunction,\n rawHasOwnProperty,\n pureCreateElement,\n assign,\n} from '../libs/utils'\nimport microApp from '../micro_app'\nimport bindFunctionToRawObject from './bind_function'\nimport effect, {\n effectDocumentEvent,\n releaseEffectDocumentEvent,\n} from './effect'\nimport {\n patchElementPrototypeMethods,\n releasePatches,\n} from '../source/patch'\nimport createMicroRouter, {\n router,\n initRouteStateWithURL,\n clearRouteStateFromURL,\n addHistoryListener,\n removeStateAndPathFromBrowser,\n updateBrowserURLWithLocation,\n patchHistory,\n releasePatchHistory,\n} from './router'\nimport Adapter, {\n fixBabelPolyfill6,\n throttleDeferForParentNode,\n} from './adapter'\nimport {\n createMicroFetch,\n useMicroEventSource,\n createMicroXMLHttpRequest,\n} from './request'\nexport {\n router,\n getNoHashMicroPathFromURL,\n} from './router'\n\nexport type MicroAppWindowDataType = {\n __MICRO_APP_ENVIRONMENT__: boolean,\n __MICRO_APP_NAME__: string,\n __MICRO_APP_URL__: 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 __MICRO_APP_PRE_RENDER__: boolean\n microApp: EventCenterForMicroApp,\n rawWindow: Window,\n rawDocument: Document,\n removeDomScope: () => void,\n}\nexport type MicroAppWindowType = Window & MicroAppWindowDataType\nexport type proxyWindow = WindowProxy & MicroAppWindowDataType\n\nconst { createMicroEventSource, clearMicroEventSource } = useMicroEventSource()\nconst globalPropertyList: Array<PropertyKey> = ['window', 'self', 'globalThis']\n\nexport default class SandBox implements SandBoxInterface {\n static activeCount = 0 // number of active sandbox\n private effectController: EffectController\n private removeHistoryListener!: CallableFunction\n private adapter: SandBoxAdapter\n /**\n * Scoped global Properties(Properties that can only get and set in microAppWindow, will not escape to rawWindow)\n * Fix https://github.com/micro-zoe/micro-app/issues/234\n */\n private scopeProperties: PropertyKey[] = []\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 public proxyWindow: proxyWindow // Proxy\n public microAppWindow = {} as MicroAppWindowType // Proxy target\n\n constructor (appName: string, url: string) {\n this.adapter = new Adapter()\n // get scopeProperties and escapeProperties from plugins\n this.getSpecialProperties(appName)\n // create proxyWindow with Proxy(microAppWindow)\n this.proxyWindow = this.createProxyWindow(appName)\n // Rewrite global event listener & timeout\n this.effectController = effect(appName, this.microAppWindow)\n // inject global properties\n this.initStaticGlobalKeys(this.microAppWindow, appName, url)\n }\n\n /**\n * open sandbox and perform some initial actions\n * @param umdMode is umd mode\n * @param baseroute base route for child\n * @param useMemoryRouter use virtual router\n * @param defaultPage default page when mount child base on virtual router\n * @param disablePatchRequest prevent patchRequestApi\n */\n public start ({\n umdMode,\n baseroute,\n useMemoryRouter,\n defaultPage,\n disablePatchRequest,\n }: SandBoxStartParams): void {\n if (!this.active) {\n this.active = true\n if (useMemoryRouter) {\n if (isUndefined(this.microAppWindow.location)) {\n this.setMicroAppRouter(\n this.microAppWindow,\n this.microAppWindow.__MICRO_APP_NAME__,\n this.microAppWindow.__MICRO_APP_URL__,\n )\n }\n this.initRouteState(defaultPage)\n // unique listener of popstate event for sub app\n this.removeHistoryListener = addHistoryListener(\n this.microAppWindow.__MICRO_APP_NAME__,\n )\n } else {\n this.microAppWindow.__MICRO_APP_BASE_ROUTE__ = this.microAppWindow.__MICRO_APP_BASE_URL__ = baseroute\n }\n\n /**\n * 1. Prevent the key deleted during sandBox.stop after rewrite\n * 2. Umd mode will not delete any keys during sandBox.stop\n * 3. It must not be umd mode when call sandbox.start at the first time\n */\n if (!umdMode) {\n this.initGlobalKeysWhenStart(\n this.microAppWindow,\n this.microAppWindow.__MICRO_APP_NAME__,\n this.microAppWindow.__MICRO_APP_URL__,\n disablePatchRequest,\n )\n }\n\n if (++SandBox.activeCount === 1) {\n effectDocumentEvent()\n patchElementPrototypeMethods()\n initEnvOfNestedApp()\n patchHistory()\n }\n\n fixBabelPolyfill6()\n }\n }\n\n /**\n * close sandbox and perform some clean up actions\n * @param umdMode is umd mode\n * @param keepRouteState prevent reset route\n * @param clearEventSource clear MicroEventSource when destroy\n * @param clearData clear data from base app\n */\n public stop ({\n umdMode,\n keepRouteState,\n clearEventSource,\n clearData,\n }: SandBoxStopParams): void {\n if (this.active) {\n // clear global event, timeout, data listener\n this.releaseGlobalEffect(clearData)\n\n if (this.removeHistoryListener) {\n this.clearRouteState(keepRouteState)\n // release listener of popstate\n this.removeHistoryListener()\n }\n\n if (clearEventSource) {\n clearMicroEventSource(this.microAppWindow.__MICRO_APP_NAME__)\n }\n\n /**\n * NOTE:\n * 1. injectedKeys and escapeKeys must be placed at the back\n * 2. if key in initial microAppWindow, and then rewrite, this key will be delete from microAppWindow when stop, and lost when restart\n * 3. umd mode will not delete global keys\n */\n if (!umdMode) {\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\n if (--SandBox.activeCount === 0) {\n releaseEffectDocumentEvent()\n releasePatches()\n releasePatchHistory()\n }\n\n this.active = false\n }\n }\n\n /**\n * clear global event, timeout, data listener\n * Scenes:\n * 1. unmount of normal/umd app\n * 2. hidden keep-alive app\n * 3. after init prerender app\n * @param clearData clear data from base app\n */\n public releaseGlobalEffect (clearData = false): void {\n this.effectController.releaseEffect()\n this.microAppWindow.microApp.clearDataListener()\n this.microAppWindow.microApp.clearGlobalDataListener()\n if (clearData) {\n microApp.clearData(this.microAppWindow.__MICRO_APP_NAME__)\n this.microAppWindow.microApp.clearData()\n }\n }\n\n /**\n * record umd snapshot before the first execution of umdHookMount\n * Scenes:\n * 1. exec umdMountHook in umd mode\n * 2. hidden keep-alive app\n * 3. after init prerender app\n */\n public recordEffectSnapshot (): void {\n // this.microAppWindow.__MICRO_APP_UMD_MODE__ = true\n this.effectController.recordEffect()\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 public rebuildEffectSnapshot (): void {\n // this.recordUmdInjectedValues!.forEach((value: unknown, key: PropertyKey) => {\n // Reflect.set(this.proxyWindow, key, value)\n // })\n this.effectController.rebuildEffect()\n rebuildDataCenterSnapshot(this.microAppWindow.microApp)\n }\n\n // set __MICRO_APP_PRE_RENDER__ state\n public setPreRenderState (state: boolean): void {\n this.microAppWindow.__MICRO_APP_PRE_RENDER__ = state\n }\n\n /**\n * get scopeProperties and escapeProperties from plugins & adapter\n * @param appName app name\n */\n private getSpecialProperties (appName: string): void {\n this.scopeProperties = this.scopeProperties.concat(this.adapter.staticScopeProperties)\n if (isPlainObject(microApp.options.plugins)) {\n this.commonActionForSpecialProperties(microApp.options.plugins.global)\n this.commonActionForSpecialProperties(microApp.options.plugins.modules?.[appName])\n }\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 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) ? bindFunctionToRawObject(rawWindow, rawValue) : rawValue\n },\n set: (target: microAppWindowType, key: PropertyKey, value: unknown): boolean => {\n if (this.active) {\n if (this.adapter.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 (\n this.adapter.staticEscapeProperties.includes(key) &&\n !Reflect.has(rawWindow, key)\n )\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 * @param useMemoryRouter whether use memory router\n */\n private initStaticGlobalKeys (\n microAppWindow: microAppWindowType,\n appName: string,\n url: string,\n ): void {\n microAppWindow.__MICRO_APP_ENVIRONMENT__ = true\n microAppWindow.__MICRO_APP_NAME__ = appName\n microAppWindow.__MICRO_APP_URL__ = url\n microAppWindow.__MICRO_APP_PUBLIC_PATH__ = getEffectivePath(url)\n microAppWindow.__MICRO_APP_WINDOW__ = microAppWindow\n microAppWindow.__MICRO_APP_PRE_RENDER__ = false\n microAppWindow.rawWindow = globalEnv.rawWindow\n microAppWindow.rawDocument = globalEnv.rawDocument\n microAppWindow.microApp = assign(new EventCenterForMicroApp(appName), {\n removeDomScope,\n pureCreateElement,\n router,\n })\n\n this.setProxyDocument(microAppWindow, appName)\n this.setMappingPropertiesWithRawDescriptor(microAppWindow)\n }\n\n private setProxyDocument (microAppWindow: microAppWindowType, appName: string): void {\n const { proxyDocument, MicroDocument } = this.createProxyDocument(appName)\n rawDefineProperties(microAppWindow, {\n document: {\n configurable: false,\n enumerable: true,\n get () {\n // return globalEnv.rawDocument\n return proxyDocument\n },\n },\n Document: {\n configurable: false,\n enumerable: false,\n get () {\n // return globalEnv.rawRootDocument\n return MicroDocument\n },\n }\n })\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 /**\n * init global properties of microAppWindow when exec sandBox.start\n * @param microAppWindow micro window\n * @param appName app name\n * @param url app url\n * @param disablePatchRequest prevent rewrite request method of child app\n */\n private initGlobalKeysWhenStart (\n microAppWindow: microAppWindowType,\n appName: string,\n url: string,\n disablePatchRequest: boolean,\n ): void {\n microAppWindow.hasOwnProperty = (key: PropertyKey) => rawHasOwnProperty.call(microAppWindow, key) || rawHasOwnProperty.call(globalEnv.rawWindow, key)\n this.setHijackProperty(microAppWindow, appName)\n if (!disablePatchRequest) this.patchRequestApi(microAppWindow, appName, url)\n this.setScopeProperties(microAppWindow)\n }\n\n // set hijack Properties to microAppWindow\n private setHijackProperty (microAppWindow: microAppWindowType, appName: string): void {\n let modifiedEval: unknown, modifiedImage: unknown\n rawDefineProperties(microAppWindow, {\n eval: {\n configurable: true,\n enumerable: false,\n get () {\n throttleDeferForSetAppName(appName)\n return modifiedEval || eval\n },\n set: (value) => {\n modifiedEval = value\n },\n },\n Image: {\n configurable: true,\n enumerable: false,\n get () {\n throttleDeferForSetAppName(appName)\n return modifiedImage || globalEnv.ImageProxy\n },\n set: (value) => {\n modifiedImage = value\n },\n },\n })\n }\n\n // rewrite fetch, XMLHttpRequest, EventSource\n private patchRequestApi (microAppWindow: microAppWindowType, appName: string, url: string): void {\n let microFetch = createMicroFetch(url)\n let microXMLHttpRequest = createMicroXMLHttpRequest(url)\n let microEventSource = createMicroEventSource(appName, url)\n\n rawDefineProperties(microAppWindow, {\n fetch: {\n configurable: true,\n enumerable: true,\n get () {\n return microFetch\n },\n set (value) {\n microFetch = createMicroFetch(url, value)\n },\n },\n XMLHttpRequest: {\n configurable: true,\n enumerable: true,\n get () {\n return microXMLHttpRequest\n },\n set (value) {\n microXMLHttpRequest = createMicroXMLHttpRequest(url, value)\n },\n },\n EventSource: {\n configurable: true,\n enumerable: true,\n get () {\n return microEventSource\n },\n set (value) {\n microEventSource = createMicroEventSource(appName, url, value)\n },\n },\n })\n }\n\n /**\n * Init scope keys to microAppWindow, prevent fall to rawWindow from with(microAppWindow)\n * like: if (!xxx) {}\n * NOTE:\n * 1. Symbol.unscopables cannot affect undefined keys\n * 2. Doesn't use for window.xxx because it fall to proxyWindow\n */\n setScopeProperties (microAppWindow: microAppWindowType): void {\n this.scopeProperties.forEach((key: PropertyKey) => {\n Reflect.set(microAppWindow, key, microAppWindow[key])\n })\n }\n\n // set location & history for memory router\n private setMicroAppRouter (microAppWindow: microAppWindowType, appName: string, url: string): void {\n const { microLocation, microHistory } = createMicroRouter(appName, url)\n rawDefineProperties(microAppWindow, {\n location: {\n configurable: false,\n enumerable: true,\n get () {\n return microLocation\n },\n set: (value) => {\n globalEnv.rawWindow.location = value\n },\n },\n history: {\n configurable: true,\n enumerable: true,\n get () {\n return microHistory\n },\n },\n })\n }\n\n private initRouteState (defaultPage: string): void {\n initRouteStateWithURL(\n this.proxyWindow.__MICRO_APP_NAME__,\n this.proxyWindow.location as MicroLocation,\n defaultPage,\n )\n }\n\n private clearRouteState (keepRouteState: boolean): void {\n clearRouteStateFromURL(\n this.proxyWindow.__MICRO_APP_NAME__,\n this.proxyWindow.__MICRO_APP_URL__,\n this.proxyWindow.location as MicroLocation,\n keepRouteState,\n )\n }\n\n public setRouteInfoForKeepAliveApp (): void {\n updateBrowserURLWithLocation(\n this.proxyWindow.__MICRO_APP_NAME__,\n this.proxyWindow.location as MicroLocation,\n )\n }\n\n public removeRouteInfoForKeepAliveApp (): void {\n removeStateAndPathFromBrowser(this.proxyWindow.__MICRO_APP_NAME__)\n }\n\n /**\n * Create new document and Document\n */\n private createProxyDocument (appName: string) {\n const rawDocument = globalEnv.rawDocument\n const rawRootDocument = globalEnv.rawRootDocument\n\n const createElement = function (tagName: string, options?: ElementCreationOptions): HTMLElement {\n const element = globalEnv.rawCreateElement.call(rawDocument, tagName, options)\n element.__MICRO_APP_NAME__ = appName\n return element\n }\n\n const proxyDocument = new Proxy(rawDocument, {\n get: (target: Document, key: PropertyKey): unknown => {\n throttleDeferForSetAppName(appName)\n throttleDeferForParentNode(proxyDocument)\n if (key === 'createElement') return createElement\n if (key === Symbol.toStringTag) return 'ProxyDocument'\n if (key === 'defaultView') return this.proxyWindow\n const rawValue = Reflect.get(target, key)\n return isFunction(rawValue) ? bindFunctionToRawObject(rawDocument, rawValue, 'DOCUMENT') : rawValue\n },\n set: (target: Document, key: PropertyKey, value: unknown): boolean => {\n /**\n * 1. Fix TypeError: Illegal invocation when set document.title\n * 2. If the set method returns false, and the assignment happened in strict-mode code, a TypeError will be thrown.\n */\n Reflect.set(target, key, value)\n return true\n }\n })\n\n class MicroDocument {\n static [Symbol.hasInstance] (target: unknown) {\n let proto = target\n while (proto = Object.getPrototypeOf(proto)) {\n if (proto === MicroDocument.prototype) {\n return true\n }\n }\n return (\n target === proxyDocument ||\n target instanceof rawRootDocument\n )\n }\n }\n\n /**\n * TIP:\n * 1. child class __proto__, which represents the inherit of the constructor, always points to the parent class\n * 2. child class prototype.__proto__, which represents the inherit of methods, always points to parent class prototype\n * e.g.\n * class B extends A {}\n * B.__proto__ === A // true\n * B.prototype.__proto__ === A.prototype // true\n */\n Object.setPrototypeOf(MicroDocument, rawRootDocument)\n // Object.create(rawRootDocument.prototype) will cause MicroDocument and proxyDocument methods not same when exec Document.prototype.xxx = xxx in child app\n Object.setPrototypeOf(MicroDocument.prototype, new Proxy(rawRootDocument.prototype, {\n get (target: Document, key: PropertyKey): unknown {\n throttleDeferForSetAppName(appName)\n const rawValue = Reflect.get(target, key)\n return isFunction(rawValue) ? bindFunctionToRawObject(rawDocument, rawValue, 'DOCUMENT') : rawValue\n },\n set (target: Document, key: PropertyKey, value: unknown): boolean {\n Reflect.set(target, key, value)\n return true\n }\n }))\n\n return {\n proxyDocument,\n MicroDocument,\n }\n }\n}\n","import type { lifeCyclesType } from '@micro-app/types'\nimport microApp from '../micro_app'\nimport { logError, isFunction, removeDomScope, getRootContainer, assign } from '../libs/utils'\nimport { formatEventName } from '../sandbox/effect'\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\ntype LifecycleEventName = keyof lifeCyclesType\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: LifecycleEventName,\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 = 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 if (isFunction(microApp.options.lifeCycles?.[lifecycleName])) {\n microApp.options.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(formatEventName(eventName, appName), {\n detail,\n })\n window.dispatchEvent(event)\n}\n","import type {\n Func,\n AppInterface,\n sourceType,\n SandBoxInterface,\n MountParam,\n UnmountParam,\n} from '@micro-app/types'\nimport { HTMLLoader } from './source/loader/html'\nimport { extractSourceDom } from './source/index'\nimport { execScripts } from './source/scripts'\nimport SandBox, { router } from './sandbox'\nimport {\n appStates,\n lifeCycles,\n keepAliveStates,\n microGlobalEvent,\n} from './constants'\nimport {\n isFunction,\n cloneContainer,\n isPromise,\n logError,\n getRootContainer,\n isObject,\n callFnWithTryCatch,\n pureCreateElement,\n} from './libs/utils'\nimport dispatchLifecyclesEvent, { dispatchCustomEventToMicroApp } from './interact/lifecycles_event'\nimport globalEnv from './libs/global_env'\nimport { releasePatchSetAttribute } from './source/patch'\nimport microApp, { getActiveApps } from './micro_app'\nimport sourceCenter from './source/source_center'\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 scopecss: boolean\n useSandbox: boolean\n inline?: boolean\n esmodule?: boolean\n container?: HTMLElement | ShadowRoot\n ssrUrl?: string\n isPrefetch?: boolean\n prefetchLevel?: number\n}\n\nexport default class CreateApp implements AppInterface {\n private state: string = appStates.CREATED\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 private preRenderEvent?: CallableFunction[]\n public umdMode = false\n public source: sourceType\n public sandBox: SandBoxInterface | null = null\n public name: string\n public url: string\n public container: HTMLElement | ShadowRoot | null\n public scopecss: boolean\n public useSandbox: boolean\n public inline: boolean\n public esmodule: boolean\n public ssrUrl: string\n public isPrefetch: boolean\n public isPrerender: boolean\n public prefetchLevel?: number\n public fiber = false\n public useMemoryRouter = true\n\n constructor ({\n name,\n url,\n container,\n scopecss,\n useSandbox,\n inline,\n esmodule,\n ssrUrl,\n isPrefetch,\n prefetchLevel,\n }: CreateAppParam) {\n this.name = name\n this.url = url\n this.useSandbox = useSandbox\n this.scopecss = this.useSandbox && scopecss\n this.inline = inline ?? false\n this.esmodule = esmodule ?? false\n\n // not exist when prefetch 👇\n this.container = container ?? null\n this.ssrUrl = ssrUrl ?? ''\n\n // exist only prefetch 👇\n this.isPrefetch = isPrefetch ?? false\n this.isPrerender = prefetchLevel === 3\n this.prefetchLevel = prefetchLevel\n\n // init actions\n appInstanceMap.set(this.name, this)\n this.source = { html: null, links: new Set(), scripts: new Set() }\n this.loadSourceCode()\n this.useSandbox && (this.sandBox = new SandBox(name, url))\n }\n\n // Load resources\n public loadSourceCode (): void {\n this.state = appStates.LOADING\n HTMLLoader.getInstance().run(this, extractSourceDom)\n }\n\n /**\n * When resource is loaded, mount app if it is not prefetch or unmount\n */\n public onLoad (\n html: HTMLElement,\n defaultPage?: string,\n disablePatchRequest?: boolean,\n ): void {\n if (++this.loadSourceLevel === 2) {\n this.source.html = html\n this.state = appStates.LOADED\n\n if (!this.isPrefetch && appStates.UNMOUNT !== this.state) {\n getRootContainer(this.container!).mount(this)\n } else if (this.isPrerender) {\n /**\n * PreRender is an option of prefetch, it will render app during prefetch\n * Limit:\n * 1. fiber forced on\n * 2. only virtual router support\n *\n * NOTE: (4P: not - update browser url, dispatch popstateEvent, reload window, dispatch lifecycle event)\n * 1. pushState/replaceState in child can update microLocation, but will not attach router info to browser url\n * 2. prevent dispatch popstate/hashchange event to browser\n * 3. all navigation actions of location are invalid (In the future, we can consider update microLocation without trigger browser reload)\n * 4. lifecycle event will not trigger when prerender\n *\n * Special scenes\n * 1. unmount prerender app when loading\n * 2. unmount prerender app when exec js\n * 2. unmount prerender app after exec js\n */\n const container = pureCreateElement('div')\n container.setAttribute('prerender', 'true')\n this.sandBox?.setPreRenderState(true)\n this.mount({\n container,\n inline: this.inline,\n useMemoryRouter: true,\n baseroute: '',\n fiber: true,\n esmodule: this.esmodule,\n defaultPage: defaultPage ?? '',\n disablePatchRequest: disablePatchRequest ?? false,\n })\n }\n }\n }\n\n /**\n * Error loading HTML\n * @param e Error\n */\n public onLoadError (e: Error): void {\n this.loadSourceLevel = -1\n\n if (appStates.UNMOUNT !== this.state) {\n this.onerror(e)\n this.state = appStates.LOAD_FAILED\n }\n }\n\n /**\n * mount app\n * @param container app container\n * @param inline run js in inline mode\n * @param useMemoryRouter use virtual router\n * @param defaultPage default page of virtual router\n * @param baseroute route prefix, default is ''\n * @param disablePatchRequest prevent rewrite request method of child app\n * @param fiber run js in fiber mode\n * @param esmodule support type='module' script\n */\n public mount ({\n container,\n inline,\n useMemoryRouter,\n defaultPage,\n baseroute,\n disablePatchRequest,\n fiber,\n esmodule,\n // hiddenRouter,\n }: MountParam): void {\n if (this.loadSourceLevel !== 2) {\n /**\n * unmount prefetch app when loading source, when mount again before loading end,\n * isPrefetch & isPrerender will be reset, and this.container sill be null\n * so we should set this.container\n */\n this.container = container\n // mount before prerender exec mount (loading source), set isPrerender to false\n this.isPrerender = false\n // reset app state to LOADING\n this.state = appStates.LOADING\n return\n }\n\n /**\n * Mount app with prerender, this.container is empty\n * When rendering again, identify prerender by this.container\n * Transfer the contents of div to the <micro-app> tag\n *\n * Special scenes:\n * 1. mount before prerender exec mount (loading source)\n * 2. mount when prerender js executing\n * 3. mount after prerender js exec end\n *\n * TODO: test shadowDOM\n */\n if (\n this.container instanceof HTMLDivElement &&\n this.container.hasAttribute('prerender')\n ) {\n /**\n * rebuild effect event of window, document, data center\n * explain:\n * 1. rebuild before exec mount, do nothing\n * 2. rebuild when js executing, recovery recorded effect event, because prerender fiber mode\n * 3. rebuild after js exec end, normal recovery effect event\n */\n this.sandBox?.rebuildEffectSnapshot()\n // current this.container is <div prerender='true'></div>\n cloneContainer(this.container as Element, container as Element, false)\n /**\n * set this.container to <micro-app></micro-app>\n * NOTE:\n * must before exec this.preRenderEvent?.forEach((cb) => cb())\n */\n this.container = container\n this.preRenderEvent?.forEach((cb) => cb())\n // reset isPrerender config\n this.isPrerender = false\n this.preRenderEvent = undefined\n // attach router info to browser url\n router.attachToURL(this.name)\n return this.sandBox?.setPreRenderState(false)\n }\n this.container = container\n this.inline = inline\n this.esmodule = esmodule\n this.fiber = fiber\n // use in sandbox/effect\n this.useMemoryRouter = useMemoryRouter\n // this.hiddenRouter = hiddenRouter ?? this.hiddenRouter\n\n const dispatchBeforeMount = () => {\n dispatchLifecyclesEvent(\n this.container!,\n this.name,\n lifeCycles.BEFOREMOUNT,\n )\n }\n\n if (this.isPrerender) {\n (this.preRenderEvent ??= []).push(dispatchBeforeMount)\n } else {\n dispatchBeforeMount()\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({\n umdMode: this.umdMode,\n baseroute,\n useMemoryRouter,\n defaultPage,\n disablePatchRequest,\n })\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, (isFinished: boolean) => {\n if (!this.umdMode) {\n const { mount, unmount } = this.getUmdLibraryHooks()\n /**\n * umdHookUnmount can works in non UMD mode\n * register with window.unmount\n */\n this.umdHookUnmount = unmount as Func\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.umdMode = true\n if (this.sandBox) this.sandBox.proxyWindow.__MICRO_APP_UMD_MODE__ = true\n // this.sandBox?.recordEffectSnapshot()\n try {\n umdHookMountResult = this.umdHookMount(microApp.getData(this.name, true))\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 const dispatchMounted = () => this.handleMounted(umdHookMountResult)\n if (this.isPrerender) {\n (this.preRenderEvent ??= []).push(dispatchMounted)\n this.recordAndReleaseEffect()\n } else {\n dispatchMounted()\n }\n }\n })\n } else {\n this.sandBox?.rebuildEffectSnapshot()\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 // call window.onmount of child app\n callFnWithTryCatch(\n this.getGlobalEventListener(microGlobalEvent.ONMOUNT),\n this.name,\n `window.${microGlobalEvent.ONMOUNT}`,\n microApp.getData(this.name, true)\n )\n\n // dispatch event mounted to parent\n dispatchLifecyclesEvent(\n this.container!,\n this.name,\n lifeCycles.MOUNTED,\n )\n }\n }\n\n /**\n * unmount app\n * NOTE: Do not add any params on account of unmountApp\n * @param destroy completely destroy, delete cache resources\n * @param clearData clear data of dateCenter\n * @param keepRouteState keep route state when unmount, default is false\n * @param unmountcb callback of unmount\n */\n public unmount ({\n destroy,\n clearData,\n keepRouteState,\n unmountcb,\n }: UnmountParam): void {\n if (this.state === appStates.LOAD_FAILED) {\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 (isFunction(this.umdHookUnmount)) {\n try {\n umdHookUnmountResult = this.umdHookUnmount(microApp.getData(this.name, true))\n } catch (e) {\n logError('an error occurred in the unmount function \\n', this.name, e)\n }\n }\n\n // call window.onunmount of child app\n callFnWithTryCatch(\n this.getGlobalEventListener(microGlobalEvent.ONUNMOUNT),\n this.name,\n `window.${microGlobalEvent.ONUNMOUNT}`,\n )\n\n // dispatch unmount event to micro app\n dispatchCustomEventToMicroApp('unmount', this.name)\n\n this.handleUnmounted(\n destroy,\n clearData,\n keepRouteState,\n umdHookUnmountResult,\n unmountcb\n )\n }\n\n /**\n * handle for promise umdHookUnmount\n * @param destroy completely destroy, delete cache resources\n * @param clearData clear data of dateCenter\n * @param keepRouteState keep route state when unmount, default is false\n * @param umdHookUnmountResult result of umdHookUnmount\n * @param unmountcb callback of unmount\n */\n private handleUnmounted (\n destroy: boolean,\n clearData: boolean,\n keepRouteState: boolean,\n umdHookUnmountResult: any,\n unmountcb?: CallableFunction,\n ): void {\n const unmountParam: UnmountParam = {\n destroy,\n clearData,\n keepRouteState,\n unmountcb,\n }\n if (isPromise(umdHookUnmountResult)) {\n umdHookUnmountResult\n .then(() => this.actionsForUnmount(unmountParam))\n .catch(() => this.actionsForUnmount(unmountParam))\n } else {\n this.actionsForUnmount(unmountParam)\n }\n }\n\n /**\n * actions for unmount app\n * @param destroy completely destroy, delete cache resources\n * @param clearData clear data of dateCenter\n * @param keepRouteState keep route state when unmount, default is false\n * @param unmountcb callback of unmount\n */\n private actionsForUnmount ({\n destroy,\n clearData,\n keepRouteState,\n unmountcb\n }: UnmountParam): 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 if (this.umdMode) {\n this.sandBox?.recordEffectSnapshot()\n }\n\n /**\n * this.container maybe contains micro-app element, stop sandbox should exec after cloneContainer\n * NOTE:\n * 1. if destroy is true, clear route state\n * 2. umd mode and keep-alive will not clear EventSource\n */\n this.sandBox?.stop({\n umdMode: this.umdMode,\n keepRouteState: keepRouteState && !destroy,\n clearEventSource: !this.umdMode || destroy,\n clearData: clearData || destroy,\n })\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.resetConfig()\n\n unmountcb && unmountcb()\n }\n\n private resetConfig () {\n this.container!.innerHTML = ''\n this.container = null\n this.isPrerender = false\n this.preRenderEvent = undefined\n }\n\n // actions for completely destroy\n public actionsForCompletelyDestroy (): void {\n if (!this.useSandbox && this.umdMode) {\n delete window[this.libraryName as any]\n }\n sourceCenter.script.deleteInlineInfo(this.source.scripts)\n appInstanceMap.delete(this.name)\n }\n\n // hidden app when disconnectedCallback called with keep-alive\n public hiddenKeepAliveApp (callback?: CallableFunction): 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 if (this.useMemoryRouter) {\n // called after lifeCyclesEvent\n this.sandBox?.removeRouteInfoForKeepAliveApp()\n }\n\n this.recordAndReleaseEffect()\n\n callback && callback()\n }\n\n // show app when connectedCallback called with keep-alive\n public showKeepAliveApp (container: HTMLElement | ShadowRoot): void {\n this.sandBox?.rebuildEffectSnapshot()\n\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 if (this.useMemoryRouter) {\n // called before lifeCyclesEvent\n this.sandBox?.setRouteInfoForKeepAliveApp()\n }\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 public 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 public getAppState (): string {\n return this.state\n }\n\n // get keep-alive state\n public 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\n if (isObject(global[this.libraryName])) {\n return global[this.libraryName]\n }\n\n return {\n mount: this.sandBox?.proxyWindow.mount,\n unmount: this.sandBox?.proxyWindow.unmount,\n }\n }\n\n return {}\n }\n\n private getGlobalEventListener (eventName: string): Func | null {\n // @ts-ignore\n const listener = this.sandBox?.proxyWindow[eventName]\n return isFunction(listener) ? listener : null\n }\n\n /**\n * Record global effect and then release (effect: global event, timeout, data listener)\n * Scenes:\n * 1. hidden keep-alive app\n * 2. after init prerender app\n */\n private recordAndReleaseEffect (): void {\n this.sandBox?.recordEffectSnapshot()\n this.sandBox?.releaseGlobalEffect()\n }\n\n public querySelector (selectors: string): Node | null {\n const target = this.container\n return target ? globalEnv.rawElementQuerySelector.call(target, selectors) : null\n }\n\n public querySelectorAll (selectors: string): NodeListOf<Node> {\n const target = this.container\n return target ? globalEnv.rawElementQuerySelectorAll.call(target, selectors) : []\n }\n}\n","/* eslint-disable no-new */\nimport type {\n AttrType,\n MicroAppElementType,\n AppInterface,\n OptionsType,\n} from '@micro-app/types'\nimport {\n defer,\n formatAppName,\n formatAppURL,\n version,\n logError,\n logWarn,\n isString,\n isFunction,\n CompletionPath,\n createURL,\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'\nimport { getNoHashMicroPathFromURL, router } from './sandbox'\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 hijiack data attribute, it needs exec first\n patchSetAttribute()\n }\n\n private isWaiting = false\n private cacheData: Record<PropertyKey, unknown> | null = null\n private connectedCount = 0\n private connectStateMap: Map<number, boolean> = new Map()\n public appName = '' // app name\n public appUrl = '' // app url\n public ssrUrl = '' // html path in ssr mode\n public 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 public connectedCallback (): void {\n const cacheCount = ++this.connectedCount\n this.connectStateMap.set(cacheCount, true)\n /**\n * In some special scenes, such as vue's keep-alive, the micro-app will be inserted and deleted twice in an instant\n * So we execute the mount method async and record connectState to prevent repeated rendering\n */\n const effectiveApp = this.appName && this.appUrl\n defer(() => {\n if (this.connectStateMap.get(cacheCount)) {\n dispatchLifecyclesEvent(\n this,\n this.appName,\n lifeCycles.CREATED,\n )\n /**\n * If insert micro-app element without name or url, and set them in next action like angular,\n * handleConnected will be executed twice, causing the app render repeatedly,\n * so we only execute handleConnected() if url and name exist when connectedCallback\n */\n effectiveApp && this.handleConnected()\n }\n })\n }\n\n public disconnectedCallback (): void {\n this.connectStateMap.set(this.connectedCount, false)\n this.handleDisconnected()\n }\n\n /**\n * Re render app from the command line\n * MicroAppElement.reload(destroy)\n */\n public reload (destroy?: boolean): Promise<boolean> {\n return new Promise((resolve) => {\n const handleAfterReload = () => {\n this.removeEventListener(lifeCycles.MOUNTED, handleAfterReload)\n this.removeEventListener(lifeCycles.AFTERSHOW, handleAfterReload)\n resolve(true)\n }\n this.addEventListener(lifeCycles.MOUNTED, handleAfterReload)\n this.addEventListener(lifeCycles.AFTERSHOW, handleAfterReload)\n this.handleDisconnected(destroy, () => {\n this.handleConnected()\n })\n })\n }\n\n /**\n * common action for unmount\n * @param destroy reload param\n */\n private handleDisconnected (destroy = false, callback?: CallableFunction): void {\n const app = appInstanceMap.get(this.appName)\n if (\n app &&\n app.getAppState() !== appStates.UNMOUNT &&\n app.getKeepAliveState() !== keepAliveStates.KEEP_ALIVE_HIDDEN\n ) {\n // keep-alive\n if (this.getKeepAliveModeResult() && !destroy) {\n this.handleHiddenKeepAliveApp(callback)\n } else {\n this.handleUnmount(destroy || this.getDestroyCompatibleResult(), callback)\n }\n }\n }\n\n public 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.connectStateMap.get(this.connectedCount) && this.handleConnected()\n }\n\n /**\n * first mount of this app\n */\n private handleConnected (): 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 this.updateSsrUrl(this.appUrl)\n\n if (appInstanceMap.has(this.appName)) {\n const app = appInstanceMap.get(this.appName)!\n const existAppUrl = app.ssrUrl || app.url\n const targetAppUrl = this.ssrUrl || this.appUrl\n /**\n * NOTE:\n * 1. keep-alive don't care about ssrUrl\n * 2. 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 * 3. When scopecss, useSandbox of prefetch app different from target app, delete prefetch app and create new one\n */\n if (\n app.getKeepAliveState() === keepAliveStates.KEEP_ALIVE_HIDDEN &&\n app.url === this.appUrl\n ) {\n this.handleShowKeepAliveApp(app)\n } else if (\n existAppUrl === targetAppUrl && (\n app.getAppState() === appStates.UNMOUNT ||\n (\n app.isPrefetch && (\n app.scopecss === this.isScopecss() &&\n app.useSandbox === this.isSandbox()\n )\n )\n )\n ) {\n this.handleAppMount(app)\n } else if (app.isPrefetch || app.getAppState() === appStates.UNMOUNT) {\n if (\n __DEV__ &&\n app.scopecss === this.isScopecss() &&\n app.useSandbox === this.isSandbox()\n ) {\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} replaced by a new app with url: ${targetAppUrl}`, this.appName)\n }\n this.handleCreateApp()\n } else {\n logError(`app name conflict, an app named: ${this.appName} with url: ${existAppUrl} is running`)\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 if (!this.connectStateMap.get(this.connectedCount)) return\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`)\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 | void,\n ): void {\n /**\n * do not add judgment of formatAttrUrl === this.appUrl\n */\n this.updateSsrUrl(formatAttrUrl)\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`)\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 // create app instance\n private handleCreateApp (): void {\n /**\n * actions for destroy 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 new CreateApp({\n name: this.appName,\n url: this.appUrl,\n scopecss: this.isScopecss(),\n useSandbox: this.isSandbox(),\n inline: this.getDisposeResult('inline'),\n esmodule: this.getDisposeResult('esmodule'),\n container: this.shadowRoot ?? this,\n ssrUrl: this.ssrUrl,\n })\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(() => this.mount(app))\n }\n\n /**\n * public mount action for micro_app_element & create_app\n */\n public mount (app: AppInterface): void {\n app.mount({\n container: this.shadowRoot ?? this,\n inline: this.getDisposeResult('inline'),\n useMemoryRouter: !this.getDisposeResult('disable-memory-router'),\n defaultPage: this.getDefaultPageValue(),\n baseroute: this.getBaseRouteCompatible(),\n disablePatchRequest: this.getDisposeResult('disable-patch-request'),\n fiber: this.getDisposeResult('fiber'),\n esmodule: this.getDisposeResult('esmodule'),\n // hiddenRouter: this.getDisposeResult('hidden-router'),\n })\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 ) {\n app.unmount({\n destroy,\n clearData: this.getDisposeResult('clear-data'),\n keepRouteState: this.getDisposeResult('keep-router-state'),\n unmountcb,\n })\n }\n }\n\n // hidden app when disconnectedCallback called with keep-alive\n private handleHiddenKeepAliveApp (callback?: CallableFunction): void {\n const app = appInstanceMap.get(this.appName)\n if (\n app &&\n app.getAppState() !== appStates.UNMOUNT &&\n app.getKeepAliveState() !== keepAliveStates.KEEP_ALIVE_HIDDEN\n ) {\n app.hiddenKeepAliveApp(callback)\n }\n }\n\n // show app when connectedCallback called with keep-alive\n private handleShowKeepAliveApp (app: AppInterface): void {\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 <T extends keyof OptionsType> (name: T): boolean {\n return (this.compatibleSpecialProperties(name) || !!microApp.options[name]) && this.compatibleDisableSpecialProperties(name)\n }\n\n // compatible of disableScopecss & disableSandbox\n private compatibleSpecialProperties (name: string): boolean {\n if (name === 'disable-scopecss') {\n return this.hasAttribute('disable-scopecss') || this.hasAttribute('disableScopecss')\n } else if (name === 'disable-sandbox') {\n return this.hasAttribute('disable-sandbox') || this.hasAttribute('disableSandbox')\n }\n return this.hasAttribute(name)\n }\n\n // compatible of disableScopecss & disableSandbox\n private compatibleDisableSpecialProperties (name: string): boolean {\n if (name === 'disable-scopecss') {\n return this.getAttribute('disable-scopecss') !== 'false' && this.getAttribute('disableScopecss') !== 'false'\n } else if (name === 'disable-sandbox') {\n return this.getAttribute('disable-sandbox') !== 'false' && this.getAttribute('disableSandbox') !== 'false'\n }\n return this.getAttribute(name) !== 'false'\n }\n\n private isScopecss (): boolean {\n return !(this.getDisposeResult('disable-scopecss') || this.getDisposeResult('shadowDOM'))\n }\n\n private isSandbox (): boolean {\n return !this.getDisposeResult('disable-sandbox')\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 * change ssrUrl in ssr mode\n */\n private updateSsrUrl (baseUrl: string): void {\n if (this.getDisposeResult('ssr')) {\n if (this.getDisposeResult('disable-memory-router') || this.getDisposeResult('disableSandbox')) {\n const rawLocation = globalEnv.rawWindow.location\n this.ssrUrl = CompletionPath(rawLocation.pathname + rawLocation.search, baseUrl)\n } else {\n // get path from browser URL\n let targetPath = getNoHashMicroPathFromURL(this.appName, baseUrl)\n const defaultPagePath = this.getDefaultPageValue()\n if (!targetPath && defaultPagePath) {\n const targetLocation = createURL(defaultPagePath, baseUrl)\n targetPath = targetLocation.origin + targetLocation.pathname + targetLocation.search\n }\n this.ssrUrl = targetPath\n }\n } else if (this.ssrUrl) {\n this.ssrUrl = ''\n }\n }\n\n /**\n * get config of default page\n */\n private getDefaultPageValue (): string {\n return (\n router.getDefaultPage(this.appName) ||\n this.getAttribute('default-page') ||\n this.getAttribute('defaultPage') ||\n ''\n )\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 as Record<PropertyKey, unknown>)\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 globalEnv.rawWindow.customElements.define(tagName, MicroAppElement)\n}\n","import type { prefetchParamList, prefetchParam, globalAssetsType } from '@micro-app/types'\nimport type { SourceCenter as SourceCenterType } from './source/source_center'\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 promiseRequestIdle,\n isNumber,\n} from './libs/utils'\nimport { fetchSource } from './source/fetch'\nimport sourceCenter from './source/source_center'\nimport microApp from './micro_app'\nimport { PREFETCH_LEVEL } from './constants'\n\n/**\n * preFetch([\n * {\n * name: string,\n * url: string,\n * esmodule: boolean,\n * inline: boolean,\n * 'disable-scopecss': boolean,\n * 'disable-sandbox': boolean,\n * level: number,\n * 'default-page': string,\n * 'disable-patch-request': boolean,\n * },\n * ...\n * ])\n * Note:\n * 1: preFetch is async and is performed only when the browser is idle\n * 2: options of prefetch preferably match the config of the micro-app element, although this is not required\n * @param apps micro app options\n * @param delay delay time\n */\nexport default function preFetch (apps: prefetchParamList, delay?: number): void {\n if (!isBrowser) {\n return logError('preFetch is only supported in browser environment')\n }\n\n requestIdleCallback(() => {\n const delayTime = isNumber(delay) ? delay : microApp.options.prefetchDelay\n\n /**\n * TODO: remove setTimeout\n * Is there a better way?\n */\n setTimeout(() => {\n // releasePrefetchEffect()\n preFetchInSerial(apps)\n }, isNumber(delayTime) ? delayTime : 3000)\n })\n\n // const handleOnLoad = (): void => {\n // releasePrefetchEffect()\n // requestIdleCallback(() => {\n // preFetchInSerial(apps)\n // })\n // }\n\n // const releasePrefetchEffect = (): void => {\n // window.removeEventListener('load', handleOnLoad)\n // clearTimeout(preFetchTime)\n // }\n\n // window.addEventListener('load', handleOnLoad)\n}\n\nfunction preFetchInSerial (apps: prefetchParamList): void {\n isFunction(apps) && (apps = apps())\n\n if (isArray(apps)) {\n apps.reduce((pre, next) => pre.then(() => preFetchAction(next)), Promise.resolve())\n }\n}\n\n// sequential preload app\nfunction preFetchAction (options: prefetchParam): Promise<void> {\n return promiseRequestIdle((resolve: PromiseConstructor['resolve']) => {\n if (isPlainObject(options) && navigator.onLine) {\n options.name = formatAppName(options.name)\n options.url = formatAppURL(options.url, options.name)\n if (options.name && options.url && !appInstanceMap.has(options.name)) {\n const app = new CreateApp({\n name: options.name,\n url: options.url,\n isPrefetch: true,\n scopecss: !(options['disable-scopecss'] ?? options.disableScopecss ?? microApp.options['disable-scopecss']),\n useSandbox: !(options['disable-sandbox'] ?? options.disableSandbox ?? microApp.options['disable-sandbox']),\n inline: options.inline ?? microApp.options.inline,\n esmodule: options.esmodule ?? microApp.options.esmodule,\n prefetchLevel: options.level && PREFETCH_LEVEL.includes(options.level) ? options.level : microApp.options.prefetchLevel && PREFETCH_LEVEL.includes(microApp.options.prefetchLevel) ? microApp.options.prefetchLevel : 2,\n })\n\n const oldOnload = app.onLoad\n const oldOnLoadError = app.onLoadError\n app.onLoad = (html: HTMLElement): void => {\n resolve()\n oldOnload.call(app, html, options['default-page'], options['disable-patch-request'])\n }\n\n app.onLoadError = (...rests): void => {\n resolve()\n oldOnLoadError.call(app, ...rests)\n }\n } else {\n resolve()\n }\n } else {\n resolve()\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', sourceCenter.script)\n fetchGlobalResources(assets.css, 'css', sourceCenter.link)\n })\n }\n}\n\n// TODO: requestIdleCallback for every file\nfunction fetchGlobalResources (resources: string[] | void, suffix: string, sourceHandler: SourceCenterType['link'] | SourceCenterType['script']) {\n if (isArray(resources)) {\n const effectiveResource = resources!.filter((path) => isString(path) && path.includes(`.${suffix}`) && !sourceHandler.hasInfo(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 (suffix === 'js') {\n if (!sourceHandler.hasInfo(path)) {\n sourceHandler.setInfo(path, {\n code: res.data,\n isExternal: false,\n appSpace: {},\n })\n }\n } else {\n if (!sourceHandler.hasInfo(path)) {\n (sourceHandler as SourceCenterType['link']).setInfo(path, {\n code: res.data,\n appSpace: {}\n })\n }\n }\n }, (err: {error: Error, index: number}) => {\n logError(err)\n })\n }\n}\n","import type {\n OptionsType,\n MicroAppBaseType,\n AppInterface,\n Router,\n AppName,\n Func,\n lifeCyclesType,\n MicroAppConfig,\n GetActiveAppsParam,\n} from '@micro-app/types'\nimport { defineElement } from './micro_app_element'\nimport preFetch, { getGlobalAssets } from './prefetch'\nimport {\n logError,\n logWarn,\n isBrowser,\n isPlainObject,\n formatAppName,\n getRootContainer,\n isString,\n pureCreateElement,\n isElement,\n isFunction,\n} from './libs/utils'\nimport { EventCenterForBaseApp } from './interact'\nimport { initGlobalEnv } from './libs/global_env'\nimport { appInstanceMap } from './create_app'\nimport { appStates, keepAliveStates, lifeCycles } from './constants'\nimport { router } from './sandbox'\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 * @param excludePreRender exclude pre render app\n * @returns active apps\n */\nexport function getActiveApps ({\n excludeHiddenApp = false,\n excludePreRender = false,\n}: GetActiveAppsParam = {}): AppName[] {\n const activeApps: AppName[] = []\n appInstanceMap.forEach((app: AppInterface, appName: AppName) => {\n if (\n appStates.UNMOUNT !== app.getAppState() &&\n (\n !app.isPrefetch || (\n app.isPrerender && !excludePreRender\n )\n ) &&\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\ntype unmountAppOptions = {\n destroy?: boolean // destroy app, default is false\n clearAliveState?: boolean // clear keep-alive app state, default is false\n clearData?: boolean // clear data from base app & child app\n}\n\n/**\n * unmount app by appName\n * @param appName\n * @param options unmountAppOptions\n * @returns Promise<void>\n */\nexport function unmountApp (appName: string, options?: unmountAppOptions): Promise<boolean> {\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(true)\n } else if (app.getKeepAliveState() === keepAliveStates.KEEP_ALIVE_HIDDEN) {\n if (options?.destroy) {\n app.unmount({\n destroy: true,\n clearData: true,\n keepRouteState: true,\n unmountcb: resolve.bind(null, true)\n })\n } else if (options?.clearAliveState) {\n app.unmount({\n destroy: false,\n clearData: !!options.clearData,\n keepRouteState: true,\n unmountcb: resolve.bind(null, true)\n })\n } else {\n resolve(true)\n }\n } else {\n const container = getRootContainer(app.container!)\n const unmountHandler = () => {\n container.removeEventListener(lifeCycles.UNMOUNT, unmountHandler)\n container.removeEventListener(lifeCycles.AFTERHIDDEN, afterhiddenHandler)\n resolve(true)\n }\n\n const afterhiddenHandler = () => {\n container.removeEventListener(lifeCycles.UNMOUNT, unmountHandler)\n container.removeEventListener(lifeCycles.AFTERHIDDEN, afterhiddenHandler)\n resolve(true)\n }\n\n container.addEventListener(lifeCycles.UNMOUNT, unmountHandler)\n container.addEventListener(lifeCycles.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\n container.removeAttribute('destroy')\n\n isString(destroyAttrValue) && container.setAttribute('destroy', destroyAttrValue)\n isString(destoryAttrValue) && container.setAttribute('destory', destoryAttrValue)\n } else if (options?.clearAliveState && container.hasAttribute('keep-alive')) {\n const keepAliveAttrValue = container.getAttribute('keep-alive')!\n container.removeAttribute('keep-alive')\n\n let clearDataAttrValue\n if (options.clearData) {\n clearDataAttrValue = container.getAttribute('clear-data')\n container.setAttribute('clear-data', 'true')\n }\n\n container.parentNode!.removeChild(container)\n\n container.setAttribute('keep-alive', keepAliveAttrValue)\n isString(clearDataAttrValue) && container.setAttribute('clear-data', clearDataAttrValue)\n } else {\n let clearDataAttrValue\n if (options?.clearData) {\n clearDataAttrValue = container.getAttribute('clear-data')\n container.setAttribute('clear-data', 'true')\n }\n\n container.parentNode!.removeChild(container)\n\n isString(clearDataAttrValue) && container.setAttribute('clear-data', clearDataAttrValue)\n }\n }\n } else {\n logWarn(`app ${appName} does not exist`)\n resolve(false)\n }\n })\n}\n\n// unmount all apps in turn\nexport function unmountAllApps (options?: unmountAppOptions): Promise<boolean> {\n return Array.from(appInstanceMap.keys()).reduce((pre, next) => pre.then(() => unmountApp(next, options)), Promise.resolve(true))\n}\n\n/**\n * Re render app from the command line\n * microApp.reload(destroy)\n * @param appName app.name\n * @param destroy unmount app with destroy mode\n * @returns Promise<boolean>\n */\nexport function reload (appName: string, destroy?: boolean): Promise<boolean> {\n return new Promise((resolve) => {\n const app = appInstanceMap.get(formatAppName(appName))\n if (app) {\n const rootContainer = app.container && getRootContainer(app.container)\n if (rootContainer) {\n resolve(rootContainer.reload(destroy))\n } else {\n logWarn(`app ${appName} is not rendered, cannot use reload`)\n resolve(false)\n }\n } else {\n logWarn(`app ${appName} does not exist`)\n resolve(false)\n }\n })\n}\n\ninterface RenderAppOptions extends MicroAppConfig {\n name: string,\n url: string,\n container: string | Element,\n baseroute?: string,\n 'default-page'?: string,\n data?: Record<PropertyKey, unknown>,\n onDataChange?: Func,\n lifeCycles?: lifeCyclesType,\n [key: string]: unknown,\n}\n\n/**\n * Manually render app\n * @param options RenderAppOptions\n * @returns Promise<boolean>\n */\nexport function renderApp (options: RenderAppOptions): Promise<boolean> {\n return new Promise((resolve) => {\n if (!isPlainObject<RenderAppOptions>(options)) return logError('renderApp options must be an object')\n const container: Element | null = isElement(options.container) ? options.container : isString(options.container) ? document.querySelector(options.container) : null\n if (!isElement(container)) return logError('Target container is not a DOM element.')\n\n const microAppElement = pureCreateElement<any>(microApp.tagName)\n\n for (const attr in options) {\n if (attr === 'onDataChange') {\n if (isFunction(options[attr])) {\n microAppElement.addEventListener('datachange', options[attr])\n }\n } else if (attr === 'lifeCycles') {\n const lifeCycleConfig = options[attr]\n if (isPlainObject(lifeCycleConfig)) {\n for (const lifeName in lifeCycleConfig) {\n if (lifeName.toUpperCase() in lifeCycles && isFunction(lifeCycleConfig[lifeName])) {\n microAppElement.addEventListener(lifeName.toLowerCase(), lifeCycleConfig[lifeName])\n }\n }\n }\n } else if (attr !== 'container') {\n microAppElement.setAttribute(attr, options[attr])\n }\n }\n\n const handleMount = () => {\n releaseListener()\n resolve(true)\n }\n\n const handleError = () => {\n releaseListener()\n resolve(false)\n }\n\n const releaseListener = () => {\n microAppElement.removeEventListener(lifeCycles.MOUNTED, handleMount)\n microAppElement.removeEventListener(lifeCycles.ERROR, handleError)\n }\n\n microAppElement.addEventListener(lifeCycles.MOUNTED, handleMount)\n microAppElement.addEventListener(lifeCycles.ERROR, handleError)\n\n container.appendChild(microAppElement)\n })\n}\n\nexport class MicroApp extends EventCenterForBaseApp implements MicroAppBaseType {\n tagName = 'micro-app'\n options: OptionsType = {}\n router: Router = router\n preFetch = preFetch\n unmountApp = unmountApp\n unmountAllApps = unmountAllApps\n getActiveApps = getActiveApps\n getAllApps = getAllApps\n reload = reload\n renderApp = renderApp\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 (isPlainObject<OptionsType>(options)) {\n this.options = options\n options['disable-scopecss'] = options['disable-scopecss'] ?? options.disableScopecss\n options['disable-sandbox'] = options['disable-sandbox'] ?? options.disableSandbox\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 }\n\n // define customElement after init\n defineElement(this.tagName)\n }\n}\n\nconst microApp = new MicroApp()\n\nexport default microApp\n"],"names":["formatEventName","oAssign"],"mappings":"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"}
|