@micro-zoe/micro-app 1.0.0-alpha.2 → 1.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 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\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 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 )\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, 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.fetch)) {\n return microApp.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","/* 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(/^[^{]+/)) 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 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): 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\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 && html.parentNode !== proxyDocument) {\n setRootParentNode(html, proxyDocument)\n defer(() => {\n setRootParentNode(html, globalEnv.rawDocument)\n })\n }\n}\n\nexport function setRootParentNode (root: Element, value: Document): void {\n Object.defineProperty(root, 'parentNode', {\n value,\n configurable: true,\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 const currentAppName = getCurrentAppName()\n if (\n newChild instanceof Node &&\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 (newChild instanceof Element) {\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 (!(newChild instanceof Node) && currentAppName) {\n const app = appInstanceMap.get(currentAppName)\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 try {\n return globalEnv.rawRemoveChild.call(this, oldChild) as T\n } catch {\n return oldChild?.parentNode?.removeChild(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\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\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 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)?.container?.querySelector(selectors) ?? null\n }\n\n function querySelectorAll (this: Document, selectors: string): any {\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)?.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 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 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: 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\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 __PURE_ELEMENT__?: boolean\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 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 } 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 /**\n * 1. unmount app & hidden keep-alive app will not receive popstate event\n * 2. filter out onlyForBrowser\n */\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'\nimport bindFunctionToRawObject from '../bind_function'\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: unknown[]): 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 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 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, rawHistory.state)\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 })\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 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 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/attachToURL/attachAllToURL\n * just attach microRoute info to browser, dispatch event to base app(exclude child)\n * @param result result of add/remove microApp path on browser url\n * @param state history.state\n */\nexport function attachRouteToBrowserURL (\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 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(appName: string, path: string): () => boolean\n removeDefaultPage(appName: string): boolean\n getDefaultPage(key: PropertyKey): string | undefined\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 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().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 /**\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 setMicroPathToURL(appName, app.sandBox.proxyWindow.location as MicroLocation),\n setMicroState(\n appName,\n globalEnv.rawWindow.history.state,\n null,\n ),\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 */\n function attachAllToURL (): void {\n getActiveApps().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 * @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 || !path) {\n if (process.env.NODE_ENV !== 'production') {\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, 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 })\n } else if (process.env.NODE_ENV !== 'production') {\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 } 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 | 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\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 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 attachRouteToBrowserURL(\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 attachRouteToBrowserURL(\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 * 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 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","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 { initEnvOfNestedApp } 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 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 initRouteStateWithURL,\n clearRouteStateFromURL,\n addHistoryListener,\n removeStateAndPathFromBrowser,\n updateBrowserURLWithLocation,\n router,\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 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 initEnvOfNestedApp()\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 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 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.setProxyDocument(microAppWindow, appName)\n this.setMappingPropertiesWithRawDescriptor(microAppWindow)\n if (useMemoryRouter) this.setMicroAppRouter(microAppWindow, appName, url)\n }\n\n private setProxyDocument (microAppWindow: microAppWindowType, appName: string): void {\n const proxyDocument = this.createProxyDocument(appName)\n rawDefineProperty(microAppWindow, 'document', {\n configurable: false,\n enumerable: true,\n get () {\n throttleDeferForSetAppName(appName)\n // return globalEnv.rawDocument\n return proxyDocument\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 */\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.setHijackProperty(microAppWindow, appName)\n this.patchRequestApi(microAppWindow, appName, url)\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 // 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 private createProxyDocument (appName: string): Document {\n const createElement = function (tagName: string, options?: ElementCreationOptions): HTMLElement {\n const element = globalEnv.rawCreateElement.call(globalEnv.rawDocument, tagName, options)\n element.__MICRO_APP_NAME__ = appName\n return element\n }\n\n const proxyDocument = new Proxy(globalEnv.rawDocument, {\n get (target: Document, key: PropertyKey): unknown {\n throttleDeferForSetAppName(appName)\n throttleDeferForParentNode(proxyDocument)\n if (key === 'createElement') return createElement\n const rawValue = Reflect.get(target, key)\n return isFunction(rawValue) ? bindFunctionToRawObject(target, rawValue, 'DOCUMENT') : rawValue\n },\n })\n\n return proxyDocument\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') || 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 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 appName,\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): appName[] {\n const activeApps: appName[] = []\n appInstanceMap.forEach((app: AppInterface, appName: appName) => {\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/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 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\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 }, 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 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 )\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, 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.fetch)) {\n return microApp.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","/* 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(/^[^{]+/)) 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 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): 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\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 && html.parentNode !== proxyDocument) {\n setRootParentNode(html, proxyDocument)\n defer(() => {\n setRootParentNode(html, globalEnv.rawDocument)\n })\n }\n}\n\nexport function setRootParentNode (root: Element, value: Document): void {\n Object.defineProperty(root, 'parentNode', {\n value,\n configurable: true,\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} 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 const currentAppName = getCurrentAppName()\n if (\n newChild instanceof Node &&\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 (newChild instanceof Element) {\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 (!(newChild instanceof Node) && currentAppName) {\n const app = appInstanceMap.get(currentAppName)\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 try {\n return globalEnv.rawRemoveChild.call(this, oldChild) as T\n } catch {\n return oldChild?.parentNode?.removeChild(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\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)?.container?.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)?.container?.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}\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 { 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 __PURE_ELEMENT__?: boolean\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 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\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 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 */\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 /**\n * TODO: 这里要改,当script初始化时动态创建远程script时,初次渲染和二次渲染的顺序不一致,会导致错误\n * 1、url不存在缓存,初始化的时候肯定是要异步请求,那么执行顺序就会靠后,至少落后于html自带的script\n * 2、url存在缓存,那么二次渲染的时候这里会同步执行,就会先于html自带的script执行\n * 3、测试一下,初次渲染和二次渲染时,onload的执行时机,是在js执行完成,还是执行之前\n * 4、将上述问题做成注释,方便后续阅读和理解\n */\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 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 } 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 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 // 生成新的state对象\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\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 return 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 /**\n * 1. unmount app & hidden keep-alive app will not receive popstate event\n * 2. filter out onlyForBrowser\n */\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)\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 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","/* 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 } 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 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(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 })\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 const method = methodName === 'pushState' ? globalEnv.rawPushState : globalEnv.rawReplaceState\n method.call(globalEnv.rawWindow.history, 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 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 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/attachToURL/attachAllToURL\n * just attach microRoute info to browser, dispatch event to base app(exclude child)\n * @param result result of add/remove microApp path on browser url\n * @param state history.state\n */\nexport function attachRouteToBrowserURL (\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 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 * 4.\n */\n getActiveApps(true).forEach(appName => {\n const app = appInstanceMap.get(appName)!\n if (app.sandBox && app.useMemoryRouter && !getMicroPathFromURL(appName)) {\n attachRouteToBrowserURL(\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} 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(appName: string, path: string): () => boolean\n removeDefaultPage(appName: string): boolean\n getDefaultPage(key: PropertyKey): string | undefined\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(\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().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 /**\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 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 * exclude hidden keep-alive app\n */\n function attachAllToURL (includeHiddenApp = false): void {\n getActiveApps(!includeHiddenApp).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 * @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 || !path) {\n if (process.env.NODE_ENV !== 'production') {\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, 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 })\n } else if (process.env.NODE_ENV !== 'production') {\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 } 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 | 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\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// 当沙箱执行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 attachRouteToBrowserURL(\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 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 * 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 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} 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 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 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 initEnvOfNestedApp()\n patchHistory()\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 releasePatchHistory()\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 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 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.setProxyDocument(microAppWindow, appName)\n this.setMappingPropertiesWithRawDescriptor(microAppWindow)\n if (useMemoryRouter) this.setMicroAppRouter(microAppWindow, appName, url)\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 throttleDeferForSetAppName(appName)\n // return globalEnv.rawDocument\n return proxyDocument\n },\n },\n Document: {\n configurable: false,\n enumerable: false,\n get () {\n throttleDeferForSetAppName(appName)\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 */\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.setHijackProperty(microAppWindow, appName)\n this.patchRequestApi(microAppWindow, appName, url)\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 // 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 const rawValue = Reflect.get(target, key)\n return isFunction(rawValue) ? bindFunctionToRawObject(rawDocument, rawValue, 'DOCUMENT') : rawValue\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.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 }))\n\n return {\n proxyDocument,\n MicroDocument,\n }\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 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 hiddenRouter?: 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 hiddenRouter: 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 hiddenRouter,\n defaultPage,\n }: CreateAppParam) {\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 // optional during init base on prefetch 👇\n this.container = container ?? null\n this.ssrUrl = ssrUrl ?? ''\n this.inline = inline ?? false\n this.baseroute = baseroute ?? ''\n this.keepRouteState = keepRouteState ?? false\n this.hiddenRouter = hiddenRouter ?? false\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 hiddenRouter?: boolean,\n ): void {\n this.inline = inline ?? this.inline\n this.keepRouteState = keepRouteState ?? this.keepRouteState\n this.container = this.container ?? container!\n this.baseroute = baseroute ?? this.baseroute\n this.defaultPage = defaultPage ?? this.defaultPage\n this.hiddenRouter = hiddenRouter ?? this.hiddenRouter\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 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 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 this.getDisposeResult('hidden-router'),\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('disable-scopecss') || this.getDisposeResult('shadowDOM')),\n useSandbox: !this.getDisposeResult('disable-sandbox'),\n useMemoryRouter: !this.getDisposeResult('disable-memory-router'),\n baseroute: this.getBaseRouteCompatible(),\n keepRouteState: this.getDisposeResult('keep-router-state'),\n defaultPage: this.getDefaultPageValue(),\n hiddenRouter: this.getDisposeResult('hidden-router'),\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 === '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 /**\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 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['disable-scopecss'] ?? prefetchApp.disableScopecss ?? microApp['disable-scopecss']),\n useSandbox: !(prefetchApp['disable-sandbox'] ?? prefetchApp.disableSandbox ?? microApp['disable-sandbox']),\n useMemoryRouter: !(prefetchApp['disable-memory-router'] ?? microApp['disable-memory-router']),\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 appName,\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 = false): appName[] {\n const activeApps: appName[] = []\n appInstanceMap.forEach((app: AppInterface, appName: appName) => {\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 'disable-scopecss'?: boolean\n 'disable-sandbox'?: boolean\n 'disable-memory-router'?: boolean\n 'keep-router-state'?: boolean\n 'hidden-router'?: boolean\n esmodule?: 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['disable-scopecss'] = options['disable-scopecss'] ?? options.disableScopecss\n this['disable-sandbox'] = options['disable-sandbox'] ?? options.disableSandbox\n this['disable-memory-router'] = options['disable-memory-router']\n this['keep-router-state'] = options['keep-router-state']\n this['hidden-router'] = options['hidden-router']\n this.esmodule = options.esmodule\n this.ssr = options.ssr\n\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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"}