@blueking/bk-weweb 0.0.2 → 0.0.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":"collect-source.js","sources":["../common/state.ts","../utils/common.ts","../context/memory.ts","../context/document.ts","../typings/source.ts","../typings/sandbox.ts","../utils/element-event.ts","../entry/style.ts","../utils/element.ts","../context/element.ts","../lifecircle/before-load.ts","../context/function.ts","../context/window.ts","../context/sandbox.ts","../mode/instance.ts","../lifecircle/load.ts","../lifecircle/unmount.ts","../lifecircle/activated.ts","../lifecircle/deactivated.ts","../component/web-compnent.ts","../utils/load-source.ts","../index.ts","../utils/fetch.ts","../entry/script.ts","../mode/app.ts","../entry/entry.ts","../cache/app-cache.ts","../base-app/base-element.ts","../base-app/collect-source.ts"],"sourcesContent":["// app status\nexport enum AppState {\n UNSET = 'UNSET',\n LOADING = 'LOADING',\n LOADED = 'LOADED',\n ERROR = 'ERROR',\n MOUNTING = 'MOUNTING',\n MOUNTED = 'MOUNTED',\n ACTIVATED = 'ACTIVATED',\n DEACTIVATED = 'DEACTIVATED',\n UNMOUNT = 'UNMOUNT'\n}\n","// is function\nexport function isFunction(target: unknown): boolean {\n return typeof target === 'function';\n}\n// Promise.then might be synchronized in Zone.js context, we need to use setTimeout instead to mock next tick.\nexport const nextTask: (cb: () => void) => any = typeof window.Zone === 'function' ? setTimeout : cb => Promise.resolve().then(cb);\n\nlet globalTaskPending = false;\nexport function nextTick(cb: () => void): void {\n if (!globalTaskPending) {\n globalTaskPending = true;\n nextTask(() => {\n cb();\n globalTaskPending = false;\n });\n }\n}\n\nexport function addUrlProtocol(url: string): string {\n return url.startsWith('//') ? `${location.protocol}${url}` : url;\n}\n\n// Get valid address, such as https://xxx/xx/xx.html to https://xxx/xx/\nexport function getUrlDir(url: string): string {\n const { origin, pathname } = new URL(url);\n if (/\\.(\\w+)$/.test(pathname)) {\n const fullPath = `${origin}${pathname}`;\n const pathArr = fullPath.split('/');\n pathArr.pop();\n return `${pathArr.join('/')}/`;\n }\n return `${origin}${pathname}/`.replace(/\\/\\/$/, '/');\n}\n// 补齐url地址\nexport function fillUpPath(path: string, baseURI: string): string {\n if (!path || /^((((ht|f)tps?)|file):)?\\/\\//.test(path) || /^(data|blob):/.test(path)) return path;\n\n return new URL(path, getUrlDir(addUrlProtocol(baseURI))).toString();\n}\n// 获取url目录\nexport function getFileDir(linkpath: string): string {\n const pathArr = linkpath.split('/');\n pathArr.pop();\n return addUrlProtocol(`${pathArr.join('/')}/`);\n}\n// is ie11\nexport const isIE11 = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('Trident') !== -1;\n\n// 随机url\nexport function randomUrl(): string {\n return `inline-${random(16)}`;\n}\n\n// Array deduplication\nexport function arrayUnique(array: any[]): any[] {\n return Array.from(new Set(array));\n}\n\n// requestIdleCallback polyfill\nexport const requestIdleCallback = window.requestIdleCallback\n || function (fn: CallableFunction) {\n const lastTime = Date.now();\n return setTimeout(() => {\n fn({\n didTimeout: false,\n handle() {\n return Math.max(0, 50 - (Date.now() - lastTime));\n },\n });\n }, 1);\n };\n\n// is safari browser\nexport function isSafari(): boolean {\n return /Safari/.test(navigator.userAgent);\n}\n\n// Create pure elements\nexport function createElement<K extends keyof HTMLElementTagNameMap>(\n tagName: K,\n options?: ElementCreationOptions,\n): HTMLElementTagNameMap[K] {\n const element = document.createElement(tagName, options);\n if (element.__BK_WEWEB_APP_KEY__) delete element.__BK_WEWEB_APP_KEY__;\n return element;\n}\n\n// bodyle element\nexport function isBodyElement(key: string): boolean {\n return /^(body|head|html)$/i.test(key);\n}\n// create random string\nexport const random = (n: number, str = 'abcdefghijklmnopqrstuvwxyz0123456789') => {\n // 生成n位长度的字符串\n let result = '';\n for (let i = 0; i < n; i++) {\n result += str[parseInt((Math.random() * str.length).toString(), 10)];\n }\n return result;\n};\n","import { BaseModel } from '../typings';\n\nlet currentRunningApp: BaseModel | null = null;\nexport function getCurrentRunningApp() {\n return currentRunningApp;\n}\nexport function setCurrentRunningApp(appInstance: BaseModel | null) {\n currentRunningApp = appInstance;\n}\n\n\nexport const documentClickListMap = new Map<string, unknown>();\nexport type DocumentEventType = keyof DocumentEventMap;\nexport type DocumentEventListener =(this: Document, ev: DocumentEventMap[DocumentEventType]) => any;\nexport const documentEventListenerMap = new Map<string, Map<keyof DocumentEventMap, Set<DocumentEventListener>>>();\n\nconst script = document.createElement('script');\nexport const isSupportModuleScript = 'noModule' in script;\n\nexport const SCOPED_CSS_STYLE_ID = 'SCOPED_CSS_STYLE_ID';\n\nconst templateStyle: HTMLStyleElement = document.createElement('style');\ntemplateStyle.setAttribute('id', SCOPED_CSS_STYLE_ID);\ndocument.body.appendChild(templateStyle);\ntemplateStyle.sheet!.disabled = true;\nexport const disabledStyleDom = templateStyle;\n","import { isBodyElement } from '../utils/common';\nimport { getCurrentRunningApp } from './memory';\nconst { document } = window;\nconst {\n createElement,\n querySelector,\n querySelectorAll,\n getElementById,\n getElementsByClassName,\n getElementsByTagName,\n getElementsByName,\n} = Document.prototype;\n\nexport function rewriteDocumentPrototypeMethods() {\n Document.prototype.createElement = function<K extends keyof HTMLElementTagNameMap>(\n tagName: K,\n options?: ElementCreationOptions | undefined,\n ) {\n const element = createElement.call(this, tagName, options);\n const app = getCurrentRunningApp();\n // img.src = '' iframe.src = '' 均不能在setAttributes上监听 但是这里所有的src都是 全地址 无法判断是否需要添加子应用域名\n // if (tagName.toLocaleLowerCase() === 'img') {\n // const observer = new MutationObserver((list, observer) => {\n // observer.disconnect();\n // const url = new URL((element as HTMLImageElement).src)\n // (element as HTMLImageElement).src = `${}`\n // });\n // observer.observe(element, { attributeFilter: ['src'], subtree: false, childList: false });\n // }\n if (app) element.__BK_WEWEB_APP_KEY__ = app.appCacheKey;\n return element;\n };\n function querySelectorNew(this: Document, selectors: string): any {\n const app = getCurrentRunningApp();\n if (!app || !selectors || isBodyElement(selectors) || document !== this) {\n return querySelector.call(this, selectors);\n }\n return app?.container?.querySelector(selectors) ?? null;\n }\n function querySelectorAllNew(this: Document, selectors: string): any {\n const app = getCurrentRunningApp();\n if (!app || !selectors || isBodyElement(selectors) || document !== this) {\n return querySelectorAll.call(this, selectors);\n }\n return app?.container?.querySelectorAll(selectors) ?? [];\n }\n Document.prototype.querySelector = querySelectorNew;\n Document.prototype.querySelectorAll = querySelectorAllNew;\n\n Document.prototype.getElementById = function getElementByIdNew(key: string): HTMLElement | null {\n if (!getCurrentRunningApp()) {\n return getElementById.call(this, key);\n }\n try {\n return querySelectorNew.call(this, `#${key}`);\n } catch {\n return getElementById.call(this, key);\n }\n };\n Document.prototype.getElementsByClassName = function (key: string): HTMLCollectionOf<Element> {\n if (!getCurrentRunningApp()) {\n return getElementsByClassName.call(this, key);\n }\n try {\n return querySelectorAllNew.call(this, `.${key}`);\n } catch {\n return getElementsByClassName.call(this, key);\n }\n };\n // eslint-disable-next-line max-len\n Document.prototype.getElementsByTagName = function<K extends keyof HTMLElementTagNameMap>(key: K): HTMLCollectionOf<Element> {\n const app = getCurrentRunningApp();\n if (\n !app\n || isBodyElement(key)\n || (!app?.showSourceCode && key.toLocaleLowerCase() === 'script')\n ) {\n return getElementsByTagName.call(this, key);\n }\n\n try {\n return querySelectorAllNew.call(this, key);\n } catch {\n return getElementsByTagName.call(this, key);\n }\n };\n Document.prototype.getElementsByName = function (key: string): NodeListOf<HTMLElement> {\n if (!getCurrentRunningApp()) {\n return getElementsByName.call(this, key);\n }\n try {\n return querySelectorAllNew.call(this, `[name=${key}]`);\n } catch {\n return getElementsByName.call(this, key);\n }\n };\n}\n\nexport function resetDocumentPrototypeMethods(): void {\n Document.prototype.createElement = createElement;\n Document.prototype.querySelector = querySelector;\n Document.prototype.querySelectorAll = querySelectorAll;\n Document.prototype.getElementById = getElementById;\n Document.prototype.getElementsByClassName = getElementsByClassName;\n Document.prototype.getElementsByTagName = getElementsByTagName;\n Document.prototype.getElementsByName = getElementsByName;\n}\n","export interface IStyleOption {\n code: string;\n prefetch?: boolean;\n preload?: boolean;\n url?: string;\n fromHtml: boolean\n initial?: boolean\n}\n\nexport interface IScriptOption {\n code: string; // code\n async: boolean; // async script\n defer: boolean; // defer script\n isModule: boolean; // module type script\n url?: string;\n fromHtml: boolean;\n initial?: boolean;\n};\n\nexport const CSS_ATTRIBUTE_KEY = 'id';\n\nexport enum CSS_RULE_TYPE {\n STYLE_RULE = 1,\n MEDIA_RULE = 4,\n SUPPORTS_RULE = 12\n}\n","export interface IInjectWindowAttrs {\n __POWERED_BY_BK_WEWEB__: boolean;\n __BK_WEWEB_APP_KEY__: string;\n __BK_WEWEB_DATA__: Record<string, unknown>;\n rawWindow: Window;\n rawDocument: Document;\n}\n\n\nexport const commonEScapeKeyList: PropertyKey[] = ['System', '__cjsWrapper', '__REACT_ERROR_OVERLAY_GLOBAL_HOOK__'];\n// 共享主应用上下文属性名\nexport const escapeSetterKeyList: PropertyKey[] = ['location'];\n// 一定需要在子应用自身上下文获取的属性名\nexport const scopeWindowKeyList: PropertyKey[] = ['webpackJsonp', '__POWERED_BY_BK_WEWEB__', '__BK_WEWEB_APP_KEY__', '__BK_WEWEB_DATA__'];\n// 设置了scopedLocation 后需要监听属性名\nexport const scopedLocationKeyList: PropertyKey[] = ['location', 'history'];\n\nexport enum DescriptorMapValue {\n 'TARGET' = 'TARGET',\n 'WINDOW' = 'WINDOW'\n};\n\nexport const commonRawWindowKeyMap: any = {\n undefined: true,\n Array: true,\n Object: true,\n String: true,\n Boolean: true,\n Math: true,\n Reflect: true,\n Function: true,\n Number: true,\n Symbol: true,\n parseFloat: true,\n parseInt: true,\n Float32Array: true,\n Set: true,\n Infinity: true,\n navigator: true,\n devicePixelRatio: true,\n Promise: true,\n HTMLElement: true,\n Map: true,\n Element: true,\n performance: true,\n console: true,\n isFinite: true,\n RegExp: true,\n JSON: true,\n Date: true,\n Proxy: true,\n isNaN: true,\n WeakMap: true,\n WeakSet: true,\n Uint8Array: true,\n // btoa: true,\n // unescape: true,\n // WebSocket: true,\n // encodeURIComponent: true,\n // decodeURIComponent: true,\n // ArrayBuffer: true,\n // XMLHttpRequest: true,\n // SVGElement: true,\n // URLSearchParams: true,\n // URL: true,\n // RangeError: true,\n // TypeError: true,\n // Uint16Array: true,\n // Uint32Array: true,\n // Float64Array: true,\n // Int32Array: true,\n // requestAnimationFrame: true,\n // SVGRect: true,\n // Error: true,\n // Buffer: true,\n // SyntaxError: true,\n // DataView: true,\n // Worker: true,\n // localStorage: true,\n // Text: true,\n // FormData: true,\n // ShadowRoot: true,\n // encodeURI: true,\n // crypto: true,\n // HTMLAnchorElement: true,\n // Int8Array: true,\n // FinalizationRegistry: true,\n // BigInt: true,\n // Atomics: true,\n // Uint8ClampedArray: true,\n // WeakRef: true,\n // getComputedStyle,\n // innerHeight: true,\n // innerWidth: true,\n // getComputedStyle: true,\n};\nexport const commonFakeWindowKeyMap: any = {\n __VUE_OPTIONS_API__: true,\n __VUE_I18N_LEGACY_API__: true,\n __VUE_I18N_FULL_INSTALL__: true,\n __VUE_DEVTOOLS_GLOBAL_HOOK__: true,\n __VUE_DEVTOOLS_HOOK_REPLAY__: true,\n __VUE_DEVTOOLS_PLUGINS__: true,\n __DEV__: true,\n webpackChunktrace: true,\n i18n: true,\n '__core-js_shared__': true,\n};\nexport const commonWindowNameMap: any = {\n window: true,\n self: true,\n globalThis: true,\n};\n","import { isFunction } from './common';\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}\nexport function dispatchLinkOrScriptLoad(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 dispatchLinkOrScriptError(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","/* eslint-disable no-param-reassign */\nimport { appCache } from '../cache/app-cache';\nimport { disabledStyleDom } from '../context/memory';\nimport { BaseModel, CSS_RULE_TYPE, IStyleOption } from '../typings';\nimport { setMarkElement } from '../utils';\nimport { fillUpPath, getFileDir, isSafari, createElement } from '../utils/common';\nimport { dispatchLinkOrScriptError, dispatchLinkOrScriptLoad } from '../utils/element-event';\nimport { fetchSource } from '../utils/fetch';\n\nexport class Style {\n scopedCode = '';\n code ='';\n prefetch = false;\n preload = false;\n url: string | undefined;\n scoped: boolean;\n fromHtml: boolean;\n initial: boolean;\n constructor({ code, prefetch, preload, url, fromHtml, initial }: IStyleOption) {\n this.scoped = false;\n this.code = code;\n this.prefetch = prefetch ?? false;\n this.preload = preload ?? false;\n this.url = url;\n this.fromHtml = fromHtml;\n this.initial = initial ?? false;\n }\n async getCode(app?: BaseModel): Promise<string> {\n if (this.code.length || !this.url) {\n return this.code;\n }\n let code = '';\n if (app?.source?.styles?.has(this.url)) {\n code = app.source.styles.get(this.url)?.code || '';\n }\n if (!code && appCache.getCacheStyle(this.url)) {\n const style = appCache.getCacheStyle(this.url);\n code = style?.code || '';\n }\n if (!code) {\n code = await fetchSource(this.url).catch(() => '');\n }\n this.code = code;\n return code;\n }\n async excuteCode(app: BaseModel): Promise<HTMLStyleElement> {\n app.registerRunningApp();\n let styleElement = createElement('style');\n styleElement.setAttribute('type', 'text/css');\n styleElement.textContent = this.code!;\n try {\n if (!this.code) await this.getCode(app);\n styleElement = this.scopedStyleCSS(app, styleElement);\n this.scoped = true;\n } catch (e) {\n console.error('scoped style error', e);\n }\n return styleElement;\n }\n scopedStyleCSS(app: BaseModel, styleElement: HTMLStyleElement): HTMLStyleElement {\n const needKeepAlive = !!app.keepAlive && !(app.container instanceof ShadowRoot);\n setMarkElement(styleElement, app, needKeepAlive);\n if (this.code || styleElement.textContent) {\n if (styleElement.textContent) {\n styleElement.textContent = '';\n styleElement.innerHTML = '';\n }\n disabledStyleDom.textContent = this.code;\n this.commonScoped(\n disabledStyleDom,\n styleElement,\n app,\n );\n disabledStyleDom.textContent = '';\n } else {\n const observer = new MutationObserver(() => {\n if (!(styleElement.textContent || styleElement.sheet?.cssRules?.length)) return;\n observer.disconnect();\n this.commonScoped(\n styleElement,\n styleElement,\n app,\n );\n });\n observer.observe(styleElement, { attributes: false, childList: true, subtree: true, characterData: true });\n }\n this.url && styleElement.setAttribute('origin-src', this.url);\n return styleElement;\n }\n scopedLinkCSS(app: BaseModel, linkElement: HTMLLinkElement): HTMLStyleElement {\n const styleElement = createElement('style');\n styleElement.setAttribute('type', 'text/css');\n const needKeepAlive = !!app.keepAlive && !(app.container instanceof ShadowRoot);\n setMarkElement(styleElement, app, needKeepAlive);\n const container = needKeepAlive ? document.head : app.container;\n try {\n if (this.code) {\n disabledStyleDom.textContent = styleElement.textContent || this.code;\n this.commonScoped(\n disabledStyleDom,\n styleElement,\n app,\n );\n container?.prepend(styleElement);\n linkElement && dispatchLinkOrScriptLoad(linkElement);\n disabledStyleDom.textContent = '';\n } else if (linkElement.getAttribute('href')) {\n this.url = fillUpPath(linkElement.getAttribute('href')!, app.url);\n this.getCode(app).then(() => {\n this.scopedStyleCSS(app, styleElement);\n linkElement.remove();\n container?.prepend(styleElement);\n linkElement && dispatchLinkOrScriptLoad(linkElement);\n this.scoped = true;\n });\n } else {\n const observer = new MutationObserver(() => {\n if (!linkElement.href) return;\n observer.disconnect();\n this.url = fillUpPath(linkElement.getAttribute('href')!, app.url);\n this.getCode(app).then(() => {\n this.scopedStyleCSS(app, styleElement);\n linkElement.remove();\n container?.prepend(styleElement);\n linkElement && dispatchLinkOrScriptLoad(linkElement);\n this.scoped = true;\n });\n });\n observer.observe(linkElement, { attributeFilter: ['href'], subtree: false, childList: false });\n }\n } catch {\n linkElement && dispatchLinkOrScriptError(linkElement);\n }\n return styleElement;\n }\n commonScoped(\n templateStyle: HTMLStyleElement,\n styleElement: HTMLStyleElement,\n app: BaseModel,\n ) {\n if (app.scopeCss && !(app.container instanceof ShadowRoot)) {\n const rules: CSSRule[] = Array.from(templateStyle.sheet?.cssRules ?? []);\n const cssPrefix = `#${app.name}`;\n const scopedCss = this.scopeRule(rules, cssPrefix);\n let cssText = this.resetUrlHost(\n scopedCss,\n app.url,\n this.url,\n );\n if (isSafari()) {\n cssText = cssText.replace(/([;{]\\s*content:\\s*)([^\\s\"][^\";}]*)/gm, (all, $1, $2) => {\n if ($2 === 'none' || /^(url\\()|(counter\\()|(attr\\()|(open-quote)|(close-quote)/.test($2)) {\n return all;\n }\n return `${$1}\"${$2}\"`;\n });\n }\n styleElement.textContent = cssText;\n this.scopedCode = cssText;\n } else {\n const cssText = this.resetUrlHost(\n styleElement.textContent || templateStyle.textContent || '',\n app.url,\n this.url,\n );\n styleElement.textContent = cssText;\n }\n this.scoped = true;\n }\n scopeRule(rules: CSSRule[], cssPrefix: string): string {\n let result = '';\n for (const rule of rules) {\n switch (rule.type) {\n case CSS_RULE_TYPE.STYLE_RULE:\n result += this.scopeStyleRule(rule as CSSStyleRule, cssPrefix);\n break;\n case CSS_RULE_TYPE.MEDIA_RULE:\n result += this.resetPackRule(rule as CSSMediaRule, cssPrefix, 'media');\n break;\n case CSS_RULE_TYPE.SUPPORTS_RULE:\n result += this.resetPackRule(rule as CSSSupportsRule, cssPrefix, 'supports');\n break;\n default:\n result += rule.cssText;\n break;\n }\n }\n return result.replace(/^\\s+/, '');\n }\n resetPackRule(rule: CSSMediaRule | CSSSupportsRule, prefix: string, packName: string): string {\n const result = this.scopeRule(Array.from(rule.cssRules), prefix);\n return `@${packName} ${rule.conditionText} {${result}}`;\n }\n resetUrlHost(cssText: string, baseURI: string, linkpath?: string) {\n return cssText.replace(/url\\([\"']?([^)\"']+)[\"']?\\)/gm, (text, $1) => {\n if (/^(data|blob):/.test($1) || /^(https?:)?\\/\\//.test($1)) {\n return text;\n }\n if (/^((\\.\\.?\\/)|[^/])/.test($1) && linkpath) {\n baseURI = getFileDir(linkpath);\n }\n return `url(\"${fillUpPath($1, baseURI)}\")`;\n });\n }\n scopeStyleRule(rule: CSSStyleRule, prefix: string): string {\n const { selectorText, cssText } = rule;\n if (/^((html[\\s>~,]+body)|(html|body|:root))$/.test(selectorText)) {\n return cssText.replace(/^((html[\\s>~,]+body)|(html|body|:root))/, prefix);\n }\n if (selectorText === '*') {\n return cssText.replace('*', `${prefix} *`);\n }\n\n const builtInRootSelectorRE = /(^|\\s+)((html[\\s>~]+body)|(html|body|:root))(?=[\\s>~]+|$)/;\n\n return cssText.replace(/^[\\s\\S]+{/, selectors => selectors.replace(/(^|,)([^,]+)/g, (all, $1, $2) => {\n if (builtInRootSelectorRE.test($2)) {\n return all.replace(builtInRootSelectorRE, prefix);\n }\n return `${$1} ${prefix} ${$2.replace(/^\\s*/, '')}`;\n }));\n }\n}\n\nexport async function excuteAppStyles(app: BaseModel, container?: Element | ShadowRoot) {\n const styleList: Style[] = Array.from(app.source!.styles.values());\n const promiseList: Promise<HTMLStyleElement>[] = [];\n styleList.forEach((style) => {\n promiseList.push(style.excuteCode(app));\n });\n await Promise.all(promiseList).then((styleElementList: HTMLStyleElement[]) => {\n const parentElemnt = container || app.container;\n if (app.keepAlive && !(parentElemnt instanceof ShadowRoot)) {\n document.head.append(...styleElementList);\n } else {\n parentElemnt?.prepend(...styleElementList);\n }\n });\n}\n","import { appCache } from '../cache/app-cache';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\nimport { randomUrl } from './common';\nimport { dispatchLinkOrScriptLoad } from './element-event';\nimport { BaseModel } from '../typings';\nconst { appendChild: bodyAppendChild } = HTMLBodyElement.prototype;\nexport function resetNewElement(\n parent: Node,\n child: Node,\n app: BaseModel,\n): Node {\n if (child instanceof HTMLStyleElement) {\n if (child.hasAttribute('exclude')) {\n return document.createComment('【bk-weweb】style with exclude attribute is ignored');\n }\n if (!child.hasAttribute('ignore')) {\n const styleInstance = new Style({\n code: child.textContent || '',\n url: '',\n fromHtml: false,\n });\n app.source?.setStyle(randomUrl(), styleInstance);\n styleInstance.scopedStyleCSS(app, child);\n }\n return child;\n }\n if (child instanceof HTMLLinkElement) {\n const result = app.source?.collectLink(child, parent, true);\n if (!result) return child;\n if (result.style) {\n result.style.scopedLinkCSS(app, child);\n }\n if (result.replace !== child) {\n return result.replace;\n }\n return child;\n }\n if (child instanceof HTMLScriptElement) {\n const replaceInfo = app.source!.collectScript(child, parent, true);\n if (!replaceInfo) {\n return child;\n }\n if (replaceInfo.script) {\n replaceInfo.script.excuteCode(app);\n }\n if (replaceInfo.replace !== child) {\n return replaceInfo.replace;\n }\n if (app.scopeJs && !child.getAttribute('src') && !child.textContent) {\n const observer = new MutationObserver(() => {\n if (child.getAttribute('src')) {\n observer.disconnect();\n const scriptInfo = app.source!.collectScript(child, parent, true);\n if (scriptInfo?.replace) {\n bodyAppendChild.call(app.container, scriptInfo.replace);\n }\n if (scriptInfo?.script) {\n scriptInfo.script.excuteCode(app);\n }\n child.remove();\n } else if (child.textContent) {\n observer.disconnect();\n const scriptInstance = new Script({\n code: child.textContent,\n async: false,\n defer: child.type === 'module',\n isModule: child.type === 'module',\n fromHtml: false,\n });\n app.source!.scripts.set(randomUrl(), scriptInstance);\n try {\n scriptInstance.excuteCode(app);\n } catch (e) {\n console.error(e);\n } finally {\n !scriptInstance.isModule && dispatchLinkOrScriptLoad(child);\n child.remove();\n }\n }\n });\n observer.observe(child, { attributeFilter: ['src'], childList: true, subtree: false });\n return document.createComment('【bk-weweb】dynamic script or module');\n }\n return child;\n }\n return child;\n}\nexport function isSepcailElement(node: Node) {\n return node instanceof HTMLScriptElement\n|| node instanceof HTMLStyleElement\n|| node instanceof HTMLLinkElement;\n}\nexport function elmentAppendHandler(\n parent: Node,\n newChild: Node,\n rawMethod: Function,\n) {\n if (newChild.__BK_WEWEB_APP_KEY__) {\n const app = appCache.getApp(newChild.__BK_WEWEB_APP_KEY__!);\n if (app?.container) {\n const targetChild = resetNewElement(parent, newChild, app);\n const needKeepAlive = isSepcailElement(newChild) && !!app.keepAlive && !(app.container instanceof ShadowRoot);\n const container = needKeepAlive ? document.head : app?.container;\n setMarkElement(targetChild as Element, app, needKeepAlive);\n return rawMethod.call(container, targetChild);\n }\n }\n return rawMethod.call(parent, newChild);\n}\nexport function elementInsertHandler(\n parent: Node,\n newChild: Node,\n passiveChild: Node | null,\n rawMethod: Function,\n) {\n if (newChild.__BK_WEWEB_APP_KEY__) {\n const app = appCache.getApp(newChild.__BK_WEWEB_APP_KEY__!);\n if (app?.container) {\n const needKeepAlive = isSepcailElement(newChild) && app.keepAlive && !(app.container instanceof ShadowRoot) ;\n const container = needKeepAlive ? document.head : app?.container;\n const targetChild = resetNewElement(parent, newChild, app);\n if (needKeepAlive) {\n targetChild.__KEEP_ALIVE__ = app.appCacheKey;\n (targetChild as Element).setAttribute('data-from', app.name);\n (targetChild as Element).setAttribute('data-keep-alive', 'true');\n }\n if (passiveChild && !container.contains(passiveChild)) {\n return bodyAppendChild.call(container, targetChild);\n }\n return rawMethod.call(container, targetChild, passiveChild);\n }\n }\n return rawMethod.call(parent, newChild, passiveChild);\n}\n\nexport function setMarkElement<T extends Element>(element: T, app: BaseModel, keepAlive: boolean): T {\n if (keepAlive) {\n element.__KEEP_ALIVE__ = app.appCacheKey;\n element.setAttribute('data-from', app.name);\n element.setAttribute('data-keep-alive', 'true');\n }\n element.setAttribute?.('powered-by', 'bk-weweb');\n return element;\n}\n","import { appCache } from '../cache/app-cache';\nimport { fillUpPath } from '../utils/common';\nimport { elementInsertHandler, elmentAppendHandler, isSepcailElement } from '../utils/element';\nimport { setCurrentRunningApp } from './memory';\n\nconst { setAttribute } = Element.prototype;\nconst {\n appendChild: bodyAppendChild,\n removeChild: bodyRemoveChild,\n append,\n} = HTMLBodyElement.prototype;\nconst {\n appendChild: headAppendChild,\n removeChild: headRemoveChild,\n insertBefore: headInsertBefore,\n} = HTMLHeadElement.prototype;\nconst rawHead = document.head;\n\nexport function rewriteBodyAndHeaderMethods(): void {\n Element.prototype.setAttribute = function (key: string, value: string): void {\n const tagName = this.tagName.toLocaleUpperCase();\n if (\n ((['src', 'srcset'].includes(key) && ['SCRIPT', 'IMG'].includes(tagName))\n || (key === 'href' && ['LINK'].includes(tagName)))\n && this.__BK_WEWEB_APP_KEY__\n && appCache.getApp(this.__BK_WEWEB_APP_KEY__ || '')\n ) {\n setAttribute.call(this, key, fillUpPath(value, appCache.getApp(this.__BK_WEWEB_APP_KEY__!)!.url));\n } else {\n setAttribute.call(this, key, value);\n }\n };\n\n HTMLBodyElement.prototype.appendChild = function appendChildNew<T extends Node>(newChild: T): T {\n if (newChild.__KEEP_ALIVE__ && isSepcailElement(newChild)) return (headAppendChild as any).call(rawHead, newChild);\n return elmentAppendHandler(this, newChild, bodyAppendChild);\n };\n HTMLBodyElement.prototype.append = function <T extends Node>(...nodes: T[]): void {\n let i = 0;\n const { length } = nodes;\n while (i < length) {\n if (nodes[i].__KEEP_ALIVE__ && isSepcailElement(nodes[i])) {\n return (headAppendChild as any).call(rawHead, nodes[i]);\n };\n elmentAppendHandler(this, nodes[i] as Node, bodyAppendChild);\n i += 1;\n }\n };\n HTMLHeadElement.prototype.appendChild = HTMLBodyElement.prototype.appendChild;\n\n\n HTMLHeadElement.prototype.insertBefore = function <T extends Node>(newChild: T, refChild: Node | null): T {\n return elementInsertHandler(this, newChild, refChild, headInsertBefore);\n };\n HTMLBodyElement.prototype.removeChild = function removeChildNew<T extends Node>(oldChild: T): T {\n const app = appCache.getApp(oldChild.__BK_WEWEB_APP_KEY__!);\n if (app?.container?.contains(oldChild)) {\n const node = bodyRemoveChild.call(app.container, oldChild) as T;\n return node;\n } if (this.contains(oldChild)) {\n return bodyRemoveChild.call(this, oldChild) as T;\n }\n return oldChild;\n };\n HTMLHeadElement.prototype.removeChild = HTMLBodyElement.prototype.removeChild;\n}\n\nexport function resetBodyAndHeaderMethods(): void {\n setCurrentRunningApp(null);\n Element.prototype.setAttribute = setAttribute;\n HTMLBodyElement.prototype.appendChild = bodyAppendChild;\n HTMLBodyElement.prototype.append = append;\n HTMLBodyElement.prototype.removeChild = bodyRemoveChild;\n HTMLHeadElement.prototype.appendChild = headAppendChild;\n HTMLHeadElement.prototype.insertBefore = headInsertBefore;\n HTMLHeadElement.prototype.removeChild = headRemoveChild;\n}\n","import { rewriteDocumentPrototypeMethods } from '../context/document';\nimport { rewriteBodyAndHeaderMethods } from '../context/element';\n\nexport function beforeLoad() {\n rewriteBodyAndHeaderMethods();\n rewriteDocumentPrototypeMethods();\n}\n","import { isFunction } from '../utils/common';\n\nconst constructorMap = new WeakMap<Function | FunctionConstructor, boolean>();\nfunction isConstructor(value: Function | FunctionConstructor) {\n if (constructorMap.has(value)) {\n return constructorMap.get(value);\n }\n\n const valueStr = value.toString();\n\n const result = (value.prototype\n && value.prototype.constructor === value\n && Object.getOwnPropertyNames(value.prototype).length > 1)\n || /^function\\s+[A-Z]/.test(valueStr)\n || /^class\\s+/.test(valueStr);\n\n constructorMap.set(value, result);\n\n return result;\n}\nconst rawWindowMethodMap = new WeakMap<CallableFunction, CallableFunction>();\nexport default function bindFunctionToRawWindow(rawWindow: Window, value: any): unknown {\n if (rawWindowMethodMap.has(value)) {\n return rawWindowMethodMap.get(value);\n }\n\n if (isFunction(value) && !isConstructor(value)) {\n const bindRawWindowValue = value.bind(rawWindow);\n Object.keys(value).forEach(key => (bindRawWindowValue[key] = value[key]));\n // eslint-disable-next-line no-prototype-builtins\n if (value.hasOwnProperty('prototype') && !bindRawWindowValue.hasOwnProperty('prototype')) {\n bindRawWindowValue.prototype = value.prototype;\n }\n\n rawWindowMethodMap.set(value, bindRawWindowValue);\n return bindRawWindowValue;\n }\n\n return value;\n}\n","/* eslint-disable no-param-reassign */\nimport { documentClickListMap, documentEventListenerMap, DocumentEventListener, getCurrentRunningApp } from './memory';\n\nexport type IntervalOrTimeout = {\n handler: TimerHandler;\n timeout?: number;\n args: unknown[];\n};\n// rewrite document and body event listener\nexport function rewriteDocumentAndBodyEvent(): {resetDocumentAndBodyEvent: () => void} {\n const { addEventListener, removeEventListener } = window.document;\n const { addEventListener: bodyAddEventListener, removeEventListener: bodyRemoveEventListener } = window.document.body;\n document.addEventListener = function<K extends keyof DocumentEventMap>(\n type: K,\n listener: DocumentEventListener,\n options?: boolean | AddEventListenerOptions | undefined,\n ): void {\n const app = getCurrentRunningApp();\n if (app) {\n const appListenersMap = documentEventListenerMap.get(app.appCacheKey);\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(app.appCacheKey, new Map([[type, new Set([listener])]]));\n }\n }\n addEventListener.call(app?.container instanceof ShadowRoot ? app.container : this, type, listener, options);\n };\n document.body.addEventListener = document.addEventListener;\n\n document.removeEventListener = function<K extends keyof DocumentEventMap>(\n type: K,\n listener: DocumentEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const app = getCurrentRunningApp();\n if (app) {\n const appListenersMap = documentEventListenerMap.get(app.appCacheKey);\n if (appListenersMap) {\n const appListenerList = appListenersMap.get(type);\n if (appListenerList?.size && appListenerList.has(listener)) {\n appListenerList.delete(listener);\n }\n }\n }\n removeEventListener.call(app?.container instanceof ShadowRoot ? app.container : this, type, listener, options);\n };\n document.body.removeEventListener = document.removeEventListener;\n\n function resetDocumentAndBodyEvent(): void {\n document.addEventListener = addEventListener;\n document.body.addEventListener = bodyAddEventListener;\n document.removeEventListener = removeEventListener;\n document.body.removeEventListener = bodyRemoveEventListener;\n }\n return {\n resetDocumentAndBodyEvent,\n };\n}\n\n// rewrite window funtion like settimeout setinterval ...\nexport function rewriteWindowFunction(fakeWindow: Window & any): Record<string, CallableFunction> {\n const app = getCurrentRunningApp();\n const eventListenerMap = new Map<string, Set<DocumentEventListener>>();\n const intervalIdMap = new Map<number, IntervalOrTimeout>();\n const timeoutIdMap = new Map<number, IntervalOrTimeout>();\n const rawWindow = window;\n const rawDocument = window.document;\n const { addEventListener, removeEventListener, setInterval, setTimeout, clearInterval, clearTimeout } = window;\n const { removeEventListener: documentRemoveEventListener } = window.document;\n\n // listener may be null, e.g test-passive\n fakeWindow.addEventListener = function (\n type: string,\n listener: DocumentEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const listenerList = eventListenerMap.get(type);\n if (listenerList) {\n listenerList.add(listener);\n } else {\n eventListenerMap.set(type, new Set([listener]));\n }\n addEventListener.call(rawWindow, type, listener, options);\n };\n\n fakeWindow.removeEventListener = function (\n type: string,\n listener: DocumentEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const listenerList = eventListenerMap.get(type);\n if (listenerList?.size && listenerList.has(listener)) {\n listenerList.delete(listener);\n }\n removeEventListener.call(rawWindow, type, listener, options);\n };\n\n fakeWindow.setInterval = function (\n handler: TimerHandler | string,\n timeout?: number | undefined, ...args: any[]\n ): number {\n const intervalId: any = setInterval.call(rawWindow, handler as any, timeout, ...(args as []));\n intervalIdMap.set(intervalId, { handler, timeout, args });\n return intervalId;\n };\n\n fakeWindow.setTimeout = function (\n handler: TimerHandler,\n timeout?: number,\n ...args: any[]\n ): number {\n const timeoutId: any = setTimeout.call(rawWindow, handler as any, timeout, ...(args as []));\n timeoutIdMap.set(timeoutId, { handler, timeout, args });\n return timeoutId;\n };\n\n fakeWindow.clearInterval = function (intervalId: number) {\n intervalIdMap.delete(intervalId);\n clearInterval.call(rawWindow, intervalId as any);\n };\n\n fakeWindow.clearTimeout = function (timeoutId: number) {\n timeoutIdMap.delete(timeoutId);\n clearTimeout.call(rawWindow, timeoutId as any);\n };\n // reset all event listener & interval & timeout when unmount app\n const resetWindowFunction = () => {\n // clear window events listener\n if (eventListenerMap.size) {\n eventListenerMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n removeEventListener.call(rawWindow, type, listener);\n }\n });\n eventListenerMap.clear();\n }\n\n // clear settimeout timers\n if (intervalIdMap.size) {\n intervalIdMap.forEach((_, intervalId: number) => {\n clearInterval.call(rawWindow, intervalId as any);\n });\n intervalIdMap.clear();\n }\n\n if (timeoutIdMap.size) {\n timeoutIdMap.forEach((_, timeoutId: number) => {\n clearTimeout.call(rawWindow, timeoutId as any);\n });\n timeoutIdMap.clear();\n }\n\n if (app) {\n documentClickListMap.delete(app.appCacheKey);\n const documentAppListenersMap = documentEventListenerMap.get(app.appCacheKey);\n if (documentAppListenersMap) {\n documentAppListenersMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n documentRemoveEventListener.call(rawDocument, type, listener);\n }\n });\n documentAppListenersMap.clear();\n }\n }\n };\n\n return {\n resetWindowFunction,\n };\n}\n","/* eslint-disable no-new-func */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\nimport {\n BaseModel,\n escapeSetterKeyList,\n IInjectWindowAttrs,\n scopedLocationKeyList,\n scopeWindowKeyList,\n commonEScapeKeyList,\n commonFakeWindowKeyMap,\n commonRawWindowKeyMap,\n DescriptorMapValue,\n} from '../typings';\nimport { arrayUnique, random } from '../utils/common';\nimport { MicroAppModel } from '../mode/app';\nimport bindFunctionToRawWindow from './function';\nimport { rewriteWindowFunction, rewriteDocumentAndBodyEvent } from './window';\nexport default class SandBox {\n private resetWindowFunction: CallableFunction;\n private resetDocumentAndBodyEvent?: CallableFunction;\n private injectedKeySet = new Set<PropertyKey>();\n private escapedKeySet = new Set<PropertyKey>();\n private active = false;\n\n public rawWindow: Window;\n public rawDocument: Document;\n public proxyWindow: WindowProxy & IInjectWindowAttrs;\n public fakeWindow: Window & IInjectWindowAttrs = {} as any;\n public windowSymbolKey: keyof Window;\n constructor(public app: BaseModel) {\n const descriptorMap = new Map<PropertyKey, DescriptorMapValue>();\n const rawWindow = window;\n const rawDocument = window.document;\n this.fakeWindow.__POWERED_BY_BK_WEWEB__ = true;\n this.fakeWindow.__BK_WEWEB_APP_KEY__ = app.appCacheKey;\n this.rawWindow = rawWindow;\n this.rawDocument = rawDocument;\n this.fakeWindow.rawWindow = rawWindow;\n this.fakeWindow.rawDocument = rawDocument;\n const { resetWindowFunction } = rewriteWindowFunction(this.fakeWindow);\n this.resetWindowFunction = resetWindowFunction;\n this.windowSymbolKey = `__${(app.name || app.appCacheKey).replace(/(-|,|:|~|'|\")/gmi, '_')}_${random(10)}__` as keyof Window;\n this.proxyWindow = new Proxy(this.fakeWindow, {\n get: (target: Window & any, key: PropertyKey): unknown => {\n if (commonRawWindowKeyMap[key] || key === Symbol.unscopables) return rawWindow[key as any];\n if (commonFakeWindowKeyMap[key]) return this.fakeWindow[key as any];\n if (['window', 'self', 'globalThis'].includes(key as string)) return this.proxyWindow;\n if (key === 'document' || key === 'eval') {\n app.registerRunningApp();\n // eslint-disable-next-line no-eval\n return key === 'document' ? rawDocument : eval;\n }\n if (\n scopedLocationKeyList.includes(key)\n && this.app instanceof MicroAppModel\n && this.app.iframe\n && this.app.scopeLocation\n ) {\n return this.app.iframe.contentWindow?.[key as any];\n }\n // if (key === Symbol.unscopables) return com;\n if (key === 'hasOwnProperty') return (key: PropertyKey) => this.fakeWindow.hasOwnProperty(key) || rawWindow.hasOwnProperty(key);\n if (key === 'top' || key === 'parent') {\n if (rawWindow === rawWindow.parent) {\n return this.proxyWindow;\n }\n return Reflect.get(rawWindow, key); // iframe\n }\n if (\n Reflect.has(target, key)\n || scopeWindowKeyList.includes(key)\n ) return Reflect.get(target, key);\n const rawValue = Reflect.get(rawWindow, key);\n return bindFunctionToRawWindow(rawWindow, rawValue);\n },\n set: (target: any, key: PropertyKey, value: unknown): boolean => {\n if (this.active) {\n if (\n scopedLocationKeyList.includes(key)\n && this.app instanceof MicroAppModel\n && this.app.iframe\n && this.app.scopeLocation\n ) {\n return Reflect.set(this.app.iframe.contentWindow!, key, value);\n }\n if (escapeSetterKeyList.includes(key)) {\n Reflect.set(rawWindow, key, value);\n } else if (\n !target.hasOwnProperty(key)\n && rawWindow.hasOwnProperty(key)\n && !scopeWindowKeyList.includes(key)\n ) {\n const descriptor = Object.getOwnPropertyDescriptor(rawWindow, key);\n const { writable, configurable, enumerable } = descriptor!;\n if (writable) {\n Object.defineProperty(target, key, {\n configurable,\n enumerable,\n writable,\n value,\n });\n this.injectedKeySet.add(key);\n }\n } else {\n Reflect.set(target, key, value);\n this.injectedKeySet.add(key);\n }\n if ((commonEScapeKeyList.includes(key) && !Reflect.has(rawWindow, key))\n && !scopeWindowKeyList.includes(key)) {\n Reflect.set(rawWindow, key, value);\n this.escapedKeySet.add(key);\n }\n }\n return true;\n },\n has: (target: Window & any, key: PropertyKey): boolean => (commonRawWindowKeyMap as any)[key]\n || key in target\n || key in rawWindow,\n getOwnPropertyDescriptor: (target: any, key: PropertyKey): PropertyDescriptor | undefined => {\n if (target.hasOwnProperty(key)) {\n return Object.getOwnPropertyDescriptor(target, key);\n }\n if (rawWindow.hasOwnProperty(key)) {\n descriptorMap.set(key, DescriptorMapValue.WINDOW);\n const descriptor = Object.getOwnPropertyDescriptor(rawWindow, key);\n if (descriptor && !descriptor.configurable) {\n descriptor.configurable = true;\n }\n return descriptor;\n }\n return undefined;\n },\n // Object.defineProperty(window, key, Descriptor)\n defineProperty: (target: Window & any, key: PropertyKey, value: PropertyDescriptor): boolean => {\n const from = descriptorMap.get(key);\n if (from === DescriptorMapValue.WINDOW) {\n return Reflect.defineProperty(rawWindow, key, value);\n }\n return Reflect.defineProperty(target, key, value);\n },\n // Object.getOwnPropertyNames(window)\n ownKeys: (target: Window & any): Array<string | symbol> => arrayUnique(Reflect.ownKeys(rawWindow)\n .concat(Reflect.ownKeys(target))),\n deleteProperty: (target: Window & any, key: PropertyKey): boolean => {\n if (target.hasOwnProperty(key)) {\n this.injectedKeySet.has(key) && this.injectedKeySet.delete(key);\n this.escapedKeySet.has(key) && Reflect.deleteProperty(rawWindow, key);\n return Reflect.deleteProperty(target, key);\n }\n return true;\n },\n });\n if (app.showSourceCode) {\n rawWindow[this.windowSymbolKey as any] = this.proxyWindow;\n }\n }\n activeated(data?: Record<string, unknown>): void {\n if (!this.active) {\n this.active = true;\n this.fakeWindow.__BK_WEWEB_DATA__ = data ?? {};\n const { resetDocumentAndBodyEvent } = rewriteDocumentAndBodyEvent();\n this.resetDocumentAndBodyEvent = resetDocumentAndBodyEvent;\n }\n }\n deactivated(): void {\n if (this.active) {\n this.active = false;\n this.resetWindowFunction();\n // this.injectedKeySet.forEach((key: PropertyKey) => Reflect.deleteProperty(this.fakeWindow, key));\n this.injectedKeySet.clear();\n this.escapedKeySet.forEach((key: PropertyKey) => Reflect.deleteProperty(window, key));\n this.escapedKeySet.clear();\n this.resetDocumentAndBodyEvent?.();\n }\n }\n}\n","import { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { setCurrentRunningApp } from '../context/memory';\nimport SandBox from '../context/sandbox';\nimport { EntrySource } from '../entry/entry';\nimport { execAppScripts } from '../entry/script';\nimport { excuteAppStyles } from '../entry/style';\nimport { BaseModel, CSS_ATTRIBUTE_KEY, IJsModelProps } from '../typings';\nimport { random } from '../utils/common';\nimport { SourceType } from '../utils/load-source';\nexport class MicroInstanceModel implements BaseModel {\n private state: AppState = AppState.UNSET;\n isPreLoad = false;\n appCacheKey: string;\n url: string;\n container?: HTMLElement | ShadowRoot;\n scopeJs = false;\n source?: EntrySource;\n sandBox?: SandBox;\n name: string;\n showSourceCode = true;\n scopeCss = true;\n keepAlive: boolean;\n initSource: SourceType;\n public data: Record<string, unknown>;\n constructor(props: IJsModelProps) {\n this.name = props.id !== props.url ? props.id! : random(5);\n this.appCacheKey = props.id || this.name;\n this.url = props.url;\n this.container = props.container ?? undefined;\n this.scopeJs = props.scopeJs ?? true;\n this.showSourceCode = props.showSourceCode ?? true;\n this.scopeCss = props.scopeCss ?? true;\n this.keepAlive = props.keepAlive ?? false;\n this.data = props.data ?? {};\n this.initSource = props.initSource ?? [];\n // 是否启用沙盒\n if (this.scopeJs) {\n this.sandBox = new SandBox(this);\n }\n }\n get status(): AppState {\n return this.state;\n }\n set status(v: AppState) {\n this.state = v;\n }\n async start(): Promise<void> {\n if (!this.source || [AppState.UNSET, AppState.ERROR].includes(this.status)) {\n this.source = new EntrySource(this.url);\n await this.source.importEntery(this);\n }\n }\n onMount(): void {\n if (this.isPreLoad) return;\n this.state = AppState.LOADED;\n this.mount();\n }\n onError(): void {\n this.state = AppState.ERROR;\n }\n mount<T>(\n container?: HTMLElement | ShadowRoot,\n callback?: (instance: MicroInstanceModel, exportInstance: T) => void,\n ): void {\n this.isPreLoad = false;\n this.container = container ?? this.container!;\n this.state = AppState.MOUNTING;\n if (this.container instanceof HTMLElement) {\n this.container!.setAttribute(CSS_ATTRIBUTE_KEY, this.name);\n }\n this.container.innerHTML = '';\n const instanceWrap = document.createElement('div');\n const wrapId = `${this.name}-wrapper`;\n instanceWrap.setAttribute('id', wrapId);\n if (this.source?.styles.size) {\n excuteAppStyles(this, this.container);\n }\n this.container.appendChild(instanceWrap);\n this.sandBox?.activeated();\n execAppScripts(this).finally(() => {\n this.state = AppState.MOUNTED;\n const scriptInfo = this.source?.getScript(this.url);\n if (typeof scriptInfo?.exportInstance?.render === 'function') {\n scriptInfo.exportInstance.render(instanceWrap, this.data);\n }\n callback?.(this, scriptInfo?.exportInstance);\n });\n }\n activated<T>(\n container: HTMLElement | ShadowRoot,\n callback?: (instance: BaseModel, exportInstance?: T) => void,\n ): void {\n this.isPreLoad = false;\n this.state = AppState.ACTIVATED;\n if (this.container && container) {\n if (container instanceof Element) container!.setAttribute(CSS_ATTRIBUTE_KEY, this.name);\n const fragment = document.createDocumentFragment();\n Array.from(this.container.childNodes).forEach((node: Node | Element) => {\n fragment.appendChild(node);\n });\n container.appendChild(fragment);\n this.container = container;\n this.sandBox?.activeated();\n const scriptInfo = this.source?.getScript(this.url);\n callback?.(this, scriptInfo?.exportInstance);\n }\n }\n deactivated(): void {\n this.state = AppState.DEACTIVATED;\n this.sandBox?.deactivated();\n }\n unmount(needDestroy?: boolean): void {\n this.state = AppState.UNMOUNT;\n this.sandBox?.deactivated();\n needDestroy && appCache.deleteApp(this.url);\n this.container!.innerHTML = '';\n this.container = undefined;\n }\n registerRunningApp() {\n setCurrentRunningApp(this);\n Promise.resolve().then(() => setCurrentRunningApp(null));\n }\n}\n","import { MicroAppModel } from '../mode/app';\nimport { appCache } from '../cache/app-cache';\nimport { BaseModel, IAppModleProps, IBaseModelProps, IJsModelProps } from '../typings';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { AppState } from '../common';\n\nexport async function load(props: IBaseModelProps): Promise<BaseModel> {\n if (props.mode === 'app') return await loadApp(props);\n if (props.mode === 'js') return await loadInstance(props);\n return await loadApp(props);\n}\n// 加载app\nexport async function loadApp(props: IAppModleProps): Promise<MicroAppModel> {\n let instance = appCache.getApp(props.id);\n if (!instance) {\n instance = new MicroAppModel(props);\n appCache.setApp(instance);\n }\n await instance.start();\n return instance as MicroAppModel;\n}\n// 加载instance\nexport function loadInstance(props: IJsModelProps): Promise<MicroInstanceModel> {\n return new Promise((resolve) => {\n let instance = appCache.getApp(props.id);\n if (!instance) {\n instance = new MicroInstanceModel(props);\n appCache.setApp(instance);\n instance.start().then(() => resolve(instance as MicroInstanceModel));\n } else if ([AppState.UNSET, AppState.MOUNTING].includes(instance.status)) {\n const timer = setInterval(() => {\n if ([AppState.ERROR, AppState.MOUNTED].includes(instance!.status)) {\n resolve(instance as MicroInstanceModel);\n clearInterval(timer);\n }\n }, 300);\n } else {\n resolve(instance as MicroInstanceModel);\n }\n });\n}\n","import { resetDocumentPrototypeMethods } from '../context/document';\nimport { resetBodyAndHeaderMethods } from '../context/element';\nimport { AppState } from '../common';\nimport { appCache } from '../cache/app-cache';\n\nexport function unmount(appKey: string) {\n const app = appCache.getApp(appKey);\n if (app?.status !== AppState.UNMOUNT) {\n app?.unmount();\n }\n if (!appCache.hasActiveApp) {\n resetBodyAndHeaderMethods();\n resetDocumentPrototypeMethods();\n }\n}\n","import { nextTask } from '../utils/common';\nimport { appCache } from '../cache/app-cache';\nimport { BaseModel } from '../typings';\nimport { AppState } from '../common';\n\nexport function activated<T>(\n appKey: string,\n container: HTMLElement | ShadowRoot,\n callback?: <M extends BaseModel>(instance: M, exportInstance?: T) => void,\n) {\n const app = appCache.getApp(appKey);\n if (app?.status === AppState.DEACTIVATED && app.keepAlive) {\n nextTask(() => app?.activated(container, callback));\n } else {\n nextTask(() => app?.mount(container, callback));\n }\n}\n","import { resetDocumentPrototypeMethods } from '../context/document';\nimport { resetBodyAndHeaderMethods } from '../context/element';\nimport { AppState } from '../common';\nimport { appCache } from '../cache/app-cache';\n\nexport function deactivated(appKey: string) {\n const app = appCache.getApp(appKey);\n if (app && [AppState.ACTIVATED, AppState.MOUNTED].includes(app.status)) {\n app.keepAlive ? app.deactivated() : app.unmount();\n }\n if (!appCache.hasActiveApp) {\n resetBodyAndHeaderMethods();\n resetDocumentPrototypeMethods();\n }\n}\n","import { AppState } from '../common';\nimport { IAppModleProps, IJsModelProps } from '../typings';\nimport { appCache } from '../cache/app-cache';\nimport { beforeLoad } from '../lifecircle/before-load';\nimport { load } from '../lifecircle/load';\nimport { unmount } from '../lifecircle/unmount';\n// import { mount } from '../lifecircle/mount';\nimport { activated } from '../lifecircle/activated';\nimport { deactivated } from '../lifecircle/deactivated';\n// bk-weweb支持的属性配置\nexport enum ObserveAttrs {\n URL = 'url',\n showSourceCode = 'showSourceCode',\n scopeLocation = 'scopeLocation',\n setShodowDom = 'setShodowDom',\n mode = 'mode',\n data = 'data',\n id = 'id',\n scopeJs = 'scopeJs',\n scopeCss = 'scopeCss',\n keepAlive = 'keepAlive'\n}\nexport default class BkIframeElement extends HTMLElement {\n static get observedAttributes(): string[] {\n return [ObserveAttrs.URL];\n }\n private connected = false;\n private appUrl = '';\n // 考虑到js模式下 需要js bundle的复用性 需用户设置id属性 如果单实例下则可以不用配置\n get appKey(): string | null {\n return this.getAttribute(ObserveAttrs.id) || this.getAttribute(ObserveAttrs.URL);\n }\n get appData(): Record<string, unknown> {\n if (this.hasAttribute(ObserveAttrs.data)) {\n try {\n return JSON.parse(this.getAttribute(ObserveAttrs.data)!);\n } catch {}\n }\n return {};\n }\n get appProps(): IAppModleProps | IJsModelProps {\n if (this.getAttribute('mode') === 'js') {\n return {\n url: this.getAttribute(ObserveAttrs.URL)!,\n mode: 'js',\n id: this.appKey!,\n data: this.appData,\n container: this.shadowRoot ?? this,\n showSourceCode: this.getBooleanAttr(ObserveAttrs.showSourceCode),\n scopeCss: this.getBooleanAttr(ObserveAttrs.scopeCss) && !this.getBooleanAttr(ObserveAttrs.setShodowDom),\n scopeJs: this.getBooleanAttr(ObserveAttrs.scopeJs),\n keepAlive: this.getBooleanAttr(ObserveAttrs.keepAlive),\n };\n }\n return {\n url: this.getAttribute(ObserveAttrs.URL)!,\n mode: 'app',\n id: this.appKey!,\n data: this.appData,\n container: this.shadowRoot ?? this,\n scopeLocation: this.getBooleanAttr(ObserveAttrs.scopeLocation),\n showSourceCode: this.getBooleanAttr(ObserveAttrs.showSourceCode),\n scopeCss: !this.getBooleanAttr(ObserveAttrs.setShodowDom),\n scopeJs: !this.getBooleanAttr(ObserveAttrs.scopeJs),\n keepAlive: this.getBooleanAttr(ObserveAttrs.keepAlive),\n };\n }\n async connectedCallback(): Promise<void> {\n beforeLoad();\n if (this.getBooleanAttr(ObserveAttrs.setShodowDom) && !this.shadowRoot) {\n this.attachShadow({ mode: 'open', delegatesFocus: true });\n }\n await load(this.appProps);\n activated(this.appKey!, this.shadowRoot ?? this);\n this.connected = true;\n }\n disconnectedCallback(): void {\n this.connected = false;\n if (this.appProps.keepAlive) {\n deactivated(this.appKey!);\n } else unmount(this.appKey!);\n }\n attributeChangedCallback(attr: ObserveAttrs, _oldVal: string, newVal: string): void {\n if (attr !== ObserveAttrs.URL || (this as any)[attr] === newVal) return;\n this.appUrl = newVal;\n (this.connected || appCache.getApp(this.appKey!)) && this.handleAttributeChanged();\n }\n private async handleAttributeChanged(): Promise<void> {\n if (!this.appKey) return;\n if (this.getBooleanAttr(ObserveAttrs.setShodowDom)) {\n this.attachShadow({ mode: 'open' });\n }\n const app = appCache.getApp(this.appKey!);\n if (app && app.url === this.appUrl && (app.isPreLoad || app.status === AppState.UNMOUNT)) {\n activated(this.appKey!, this.shadowRoot ?? this);\n return;\n }\n await load(this.appProps);\n }\n private getBooleanAttr(name: string): boolean | undefined {\n return this.hasAttribute(name) ? this.getAttribute(name) !== 'false' : undefined;\n }\n}\n","import { appCache } from '../cache/app-cache';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\n\nexport type SourceFuncType = () => Promise<string[]>;\n\nexport type SourceType = string[] | SourceFuncType;\n\n// 收集和辩证资源\nexport async function collectSource(soruceList: SourceType) {\n let source: string[] = [];\n if (typeof soruceList === 'function') {\n source = await soruceList();\n } else {\n source = soruceList || [];\n }\n if (!source.length) return {};\n const collectScript: Map<string, Script> = new Map();\n const collectStyle: Map<string, Style> = new Map();\n source.forEach((str) => {\n try {\n const url = new URL(str);\n if (url.pathname.match(/\\.js$/)) {\n const script = appCache.getCacheScript(str);\n collectScript.set(str, new Script({\n code: script?.code || '',\n async: false,\n defer: false,\n url: str,\n isModule: false,\n initial: true,\n fromHtml: false,\n }));\n } else if (url.pathname.match(/\\.css$/)) {\n const style = appCache.getCacheStyle(str);\n collectStyle.set(str, new Style({\n code: style?.code || '',\n prefetch: false,\n preload: false,\n url: str,\n fromHtml: true,\n initial: true,\n }));\n }\n } catch {\n console.error(`【bk-weweb】: ${str} is invalid URL`);\n }\n });\n return {\n collectScript,\n collectStyle,\n };\n}\n\n// 加载全局静态资源\nexport async function LoadGlobalSource(soruceList: SourceType) {\n const { collectScript, collectStyle } = await collectSource(soruceList);\n const promiseList: Promise<string>[] = [];\n collectScript && Array.from(collectScript.entries()).forEach((item) => {\n promiseList.push(item[1].getCode());\n appCache.setBaseAppScript(...item);\n });\n collectStyle && Array.from(collectStyle.entries()).forEach((item) => {\n promiseList.push(item[1].getCode());\n appCache.setBaseAppStyle(...item);\n });\n await Promise.all(promiseList).catch((e) => {\n throw e;\n });\n}\n","import './context/memory';\nimport { FetchSourceType, IStartOption } from './typings';\nimport BkIframeElement from './component/web-compnent';\n\nexport * from './lifecircle/before-load';\nexport * from './lifecircle/load';\nexport * from './lifecircle/mount';\nexport * from './lifecircle/unload';\nexport * from './lifecircle/unmount';\nexport * from './lifecircle/activated';\nexport * from './lifecircle/deactivated';\nexport * from './preload/preload';\n\nconst CUSTOM_ELEMENT_TAG = 'bk-weweb';\nexport class IframeApp {\n fetchSource?: FetchSourceType;\n webcomponentTag = CUSTOM_ELEMENT_TAG;\n constructor() {\n if (!window.customElements.get(CUSTOM_ELEMENT_TAG)) {\n window.customElements.define(CUSTOM_ELEMENT_TAG, BkIframeElement);\n }\n }\n // todo set some global start props\n start(option?: IStartOption) {\n if (typeof option?.fetchSource === 'function') {\n this.fetchSource = option.fetchSource;\n }\n this.webcomponentTag = option?.webcomponentTag || CUSTOM_ELEMENT_TAG;\n this.setWebComponentTag();\n }\n // 设置自定义dom标签名\n setWebComponentTag() {\n if (!window.customElements.get(this.webcomponentTag)) {\n window.customElements.define(this.webcomponentTag, BkIframeElement);\n }\n }\n}\nconst iframeApp = new IframeApp();\nexport default iframeApp;\n","import weWeb from '..';\n\nexport function fetchSource(url: string, options = {}): Promise<string> {\n if (weWeb.fetchSource) {\n return weWeb.fetchSource(url, options);\n }\n return window.fetch(url, options).then(res => res.text());\n}\n","/* eslint-disable no-restricted-syntax */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-param-reassign */\n/* eslint-disable max-len */\nimport { MicroAppModel } from '../mode/app';\nimport { BaseModel, IScriptOption } from '../typings';\nimport { isIE11, createElement } from '../utils/common';\nimport { fetchSource } from '../utils/fetch';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { appCache } from '../cache/app-cache';\nimport { setMarkElement } from '../utils';\n\nlet firstGlobalProp: string | undefined;\nlet secondGlobalProp: string | undefined;\nlet lastGlobalProp: string | undefined;\n\n// Script脚本实例\nexport class Script {\n code = '';\n async = false;\n defer = false;\n isModule = false;\n url: string | undefined;\n exportInstance?: any;\n scoped: boolean;\n fromHtml: boolean;\n initial: boolean;\n\n constructor({ code, async, defer, isModule, url, fromHtml, initial }: IScriptOption) {\n this.code = code;\n this.async = async;\n this.defer = defer;\n this.isModule = isModule;\n this.url = url;\n this.scoped = false;\n this.fromHtml = fromHtml ?? false;\n this.initial = initial ?? false;\n }\n async getCode(app?: BaseModel): Promise<string> {\n if (this.code.length || !this.url) {\n return this.code;\n }\n let code = '';\n if (app?.source?.getScript(this.url)) {\n code = app.source.getScript(this.url)?.code || '';\n }\n if (!code && appCache.getCacheScript(this.url)) {\n code = appCache.getCacheScript(this.url)?.code || '';\n }\n if (!code) {\n code = await fetchSource(this.url).catch((e) => {\n console.error(`fetch script ${this.url} error`, e);\n return '';\n });\n }\n this.code = code;\n return code;\n }\n async excuteCode(app: BaseModel, needRelaceScriptElement = false): Promise<HTMLScriptElement | Comment | undefined> {\n try {\n if (!this.code) await this.getCode(app);\n if (app instanceof MicroInstanceModel) {\n noteGlobalProps(app.sandBox?.proxyWindow || window);\n }\n let scopedCode = this.code;\n scopedCode = this.transformCode(app);\n if (app.showSourceCode || this.isModule) {\n const scriptElement = createElement('script');\n app.registerRunningApp();\n this.executeSourceScript(scriptElement, scopedCode);\n if (needRelaceScriptElement) return scriptElement;\n const needKeepAlive = !!app.keepAlive && !(app.container instanceof ShadowRoot);\n const container = needKeepAlive ? document.head : app.container;\n setMarkElement(scriptElement, app, needKeepAlive);\n container!.appendChild(scriptElement);\n } else {\n this.executeMemoryScript(app, scopedCode);\n if (needRelaceScriptElement) return document.createComment('【bk-weweb】dynamic script');\n }\n if (app instanceof MicroInstanceModel) {\n const exportProp: any = getGlobalProp(app.sandBox?.proxyWindow || window);\n exportProp && (this.exportInstance = (app.sandBox?.proxyWindow || window)[exportProp]);\n }\n } catch (e) {\n console.error('execute script code error', e);\n }\n return;\n }\n transformCode(app: BaseModel): string {\n if (app.sandBox) {\n if (app.showSourceCode || this.isModule) {\n return `;(function(window, self){\n with(window){\n ;${this.code}\\n\n }\n }).call(window.${app.sandBox.windowSymbolKey},\n window.${app.sandBox.windowSymbolKey});`;\n }\n return `\n with(window) {\n try {\n ${this.code}\n }\n catch(e) {\n console.error(e)\n }\n }\n `;\n }\n return this.code;\n }\n executeSourceScript(\n scriptElement: HTMLScriptElement,\n scopedCode: string,\n ): void {\n if (this.isModule) {\n const blob = new Blob([scopedCode], { type: 'text/javascript' });\n scriptElement.src = URL.createObjectURL(blob);\n scriptElement.setAttribute('type', 'module');\n } else {\n scriptElement.textContent = scopedCode;\n }\n this.url && scriptElement.setAttribute('origin-src', this.url);\n }\n executeMemoryScript(app: BaseModel, scopedCode: string) {\n try {\n const isScopedLocation = app instanceof MicroAppModel && app.scopeLocation;\n app.registerRunningApp();\n // eslint-disable-next-line no-new-func\n new Function('window', 'location', 'history', scopedCode)(\n app.sandBox!.proxyWindow,\n isScopedLocation ? app.iframe?.contentWindow?.location : window.location,\n isScopedLocation ? app.iframe?.contentWindow?.history : window.history,\n );\n } catch (e) {\n console.error(e);\n }\n }\n}\n// 全局属性是否跳过标记\nexport function shouldSkipProperty(global: Window, p: any) {\n return (\n !global.hasOwnProperty(p)\n || (!isNaN(p) && p < global.length)\n || (isIE11 && global[p] && typeof window !== 'undefined' && global[p].parent === window)\n );\n}\n// 获取instance js source code 执行后 绑定的export 实例\nexport function getGlobalProp(global: Window, useFirstGlobalProp?: boolean) {\n let cnt = 0;\n let foundLastProp;\n let result;\n for (const p in global) {\n // do not check frames cause it could be removed during import\n if (shouldSkipProperty(global, p)) continue;\n if ((cnt === 0 && p !== firstGlobalProp) || (cnt === 1 && p !== secondGlobalProp)) return p;\n if (foundLastProp) {\n lastGlobalProp = p;\n result = (useFirstGlobalProp && result) || p;\n } else {\n foundLastProp = p === lastGlobalProp;\n }\n cnt += 1;\n }\n return result;\n}\n// 标记全局属性\nexport function noteGlobalProps(global: Window) {\n secondGlobalProp = undefined;\n firstGlobalProp = secondGlobalProp;\n for (const p in global) {\n if (shouldSkipProperty(global, p)) continue;\n if (!firstGlobalProp) firstGlobalProp = p;\n else if (!secondGlobalProp) secondGlobalProp = p;\n lastGlobalProp = p;\n }\n return lastGlobalProp;\n}\n// app初始化dom 脚本执行\nexport async function execAppScripts(app: BaseModel) {\n const appInitialScriptList = Array.from(app.source!.scripts.values()).filter(script => script.initial);\n // 初始化脚本最先执行\n if (appInitialScriptList.length) {\n await Promise.all(appInitialScriptList.map(script => script.excuteCode(app)));\n }\n const appScriptList = Array.from(app.source!.scripts.values()).filter(script => script.fromHtml && !script.initial);\n const commomList = appScriptList.filter(script => ((!script.async && !script.defer) || script.isModule));\n // 保证同步脚本 和 module类型 最先执行\n await Promise.all(commomList.map(script => script.excuteCode(app)));\n // 最后执行 defer 和 async 脚本\n const deferScriptList: Promise<HTMLScriptElement | Comment | undefined>[] = [];\n const asyncScriptList: Promise<HTMLScriptElement | Comment | undefined>[] = [];\n // async defer 脚本执行\n appScriptList.forEach((script) => {\n if ((script.defer || script.async)) {\n if (!script.code && script.defer) {\n deferScriptList.push(script.excuteCode(app));\n } else asyncScriptList.push(script.excuteCode(app));\n }\n });\n await Promise.all([...asyncScriptList, ...deferScriptList])\n .catch((e) => {\n console.error(e);\n });\n}\n","import { AppState } from '../common';\nimport { execAppScripts } from '../entry/script';\nimport { EntrySource } from '../entry/entry';\nimport { AppMode, BaseModel, CSS_ATTRIBUTE_KEY, IAppModleProps } from '../typings';\nimport { random } from '../utils/common';\nimport SandBox from '../context/sandbox';\nimport { appCache } from '../cache/app-cache';\nimport { setCurrentRunningApp } from '../context/memory';\nimport { SourceType } from '../utils/load-source';\n\nexport class MicroAppModel implements BaseModel {\n private state: AppState = AppState.UNSET;\n public isPreLoad = false;\n mode: AppMode = 'app';\n name: string;\n url: string;\n container?: HTMLElement | ShadowRoot;\n showSourceCode: boolean;\n scopeCss: boolean;\n scopeJs: boolean;\n source?: EntrySource;\n sandBox?: SandBox;\n scopeLocation: boolean;\n keepAlive: boolean;\n initSource: SourceType;\n iframe: HTMLIFrameElement | null = null;\n public data: Record<string, unknown>;\n constructor(props: IAppModleProps) {\n this.name = props.id !== props.url ? props.id! : random(5);\n this.mode = props.mode ?? 'app';\n this.container = props.container ?? undefined;\n this.showSourceCode = props.showSourceCode ?? false;\n this.url = props.url;\n this.data = props.data || {};\n this.scopeJs = props.scopeJs ?? true;\n this.scopeCss = props.scopeCss ?? true;\n this.scopeLocation = props.scopeLocation ?? false;\n this.isPreLoad = props.isPreLoad ?? false;\n this.keepAlive = props.keepAlive ?? false;\n this.initSource = props.initSource ?? [];\n if (this.scopeJs) {\n this.sandBox = new SandBox(this);\n }\n if (this.container instanceof HTMLElement) {\n this.container.setAttribute(CSS_ATTRIBUTE_KEY, this.name);\n }\n }\n get appCacheKey(): string {\n return this.url;\n }\n public get status() {\n return this.state;\n }\n public set status(v: AppState) {\n this.state = v;\n }\n async start() {\n if (!this.source || [AppState.UNSET, AppState.ERROR].includes(this.status)) {\n this.state = AppState.LOADING;\n if (this.scopeLocation) {\n const iframe = await this.createIframe();\n this.iframe = iframe;\n }\n this.source = new EntrySource(this.url);\n await this.source.importEntery(this);\n }\n }\n onMount(): void {\n if (this.isPreLoad) return;\n this.state = AppState.LOADED;\n this.mount();\n }\n onError(): void {\n this.state = AppState.ERROR;\n }\n mount(\n container?: HTMLElement | ShadowRoot,\n callback?: (app: BaseModel) => void,\n ): void {\n this.isPreLoad = false;\n this.container = container ?? this.container!;\n this.state = AppState.MOUNTING;\n if (this.container) {\n if (this.container instanceof Element) this.container!.setAttribute(CSS_ATTRIBUTE_KEY, this.name);\n const clonedNode = this.source!.html!.cloneNode(true);\n const fragment = document.createDocumentFragment();\n Array.from(clonedNode.childNodes).forEach((node: Node | Element) => {\n fragment.appendChild(node);\n });\n this.container!.innerHTML = '';\n this.container!.appendChild(fragment);\n this.sandBox?.activeated(this.data);\n execAppScripts(this).finally(() => {\n this.state = AppState.MOUNTED;\n callback?.(this);\n });\n }\n }\n activated(\n container: HTMLElement | ShadowRoot,\n callback?: (app: BaseModel) => void,\n ) {\n this.isPreLoad = false;\n this.state = AppState.ACTIVATED;\n if (container && this.container) {\n if (container instanceof Element) container!.setAttribute(CSS_ATTRIBUTE_KEY, this.name);\n const fragment = document.createDocumentFragment();\n Array.from(this.container.childNodes).forEach((node: Node | Element) => {\n fragment.appendChild(node);\n });\n container!.innerHTML = '';\n container!.appendChild(fragment);\n this.container = container;\n this.sandBox?.activeated(this.data);\n callback?.(this);\n }\n }\n deactivated() {\n this.state = AppState.DEACTIVATED;\n this.sandBox?.deactivated();\n }\n unmount(needDestroy = false): void {\n this.state = AppState.UNMOUNT;\n this.sandBox?.deactivated();\n needDestroy && appCache.deleteApp(this.url);\n this.container!.innerHTML = '';\n this.container = undefined;\n }\n createIframe(): Promise<HTMLIFrameElement> {\n return new Promise((resolve) => {\n const iframe = document.createElement('iframe');\n const url = new URL(this.url);\n iframe.setAttribute('src', `about:blank${url.pathname || '/'}${url.search}${url.hash}`);\n iframe.style.cssText = 'position: fixed; top: -9999px; width: 100%; height: 1px;';\n document.body.appendChild(iframe);\n setTimeout(() => resolve(iframe), 100);\n });\n }\n registerRunningApp() {\n setCurrentRunningApp(this);\n Promise.resolve().then(() => setCurrentRunningApp(null));\n }\n}\nexport const createApp = (props: IAppModleProps) => {\n appCache.deleteApp(props.url);\n const instance = new MicroAppModel(props);\n appCache.setApp(instance);\n};\n","import { BaseModel, IScriptOption } from '../typings';\nimport { MicroAppModel } from '../mode/app';\nimport { fillUpPath, randomUrl, createElement } from '../utils/common';\nimport { fetchSource } from '../utils/fetch';\nimport { excuteAppStyles, Style } from './style';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { Script } from './script';\nimport { isSupportModuleScript } from '../context/memory';\nimport { appCache } from '../cache/app-cache';\nimport { collectSource } from '../utils/load-source';\n\nexport class EntrySource {\n scripts: Map<string, Script>;\n styles: Map<string, Style>;\n html: HTMLElement | null = null;\n rawHtml?: string;\n constructor(public url: string) {\n this.scripts = new Map();\n this.styles = new Map();\n }\n async importEntery(app: BaseModel): Promise<void> {\n let importEntry: Promise<void> | undefined;\n if (app.initSource?.length) {\n // 初始化配置的公共source资源\n const { collectScript, collectStyle } = await collectSource(app.initSource);\n if (collectScript) {\n this.scripts = collectScript;\n }\n if (collectStyle) {\n this.styles = collectStyle;\n }\n }\n if (app instanceof MicroAppModel) importEntry = this.importHtmlEntry(app);\n else if (app instanceof MicroInstanceModel) importEntry = this.importInstanceEntry();\n importEntry && await importEntry;\n }\n async importHtmlEntry(app: MicroAppModel): Promise<void> {\n let htmlStr = appCache.getCacheHtml(this.url);\n if (!htmlStr) {\n htmlStr = await fetchSource(this.url, { cache: 'no-cache' });\n if (!htmlStr) {\n console.error('load app entry error, pleace check');\n return Promise.reject();\n }\n }\n this.rawHtml = htmlStr;\n const wrapElement = createElement('div');\n wrapElement.innerHTML = htmlStr.replace(/<\\/?head>/gim, '').replace(/<\\/?body>/i, '');\n this.collectScriptAndStyle(wrapElement, app);\n await excuteAppStyles(app, wrapElement);\n this.html = wrapElement;\n }\n async importInstanceEntry(): Promise<void> {\n let jsStr = appCache.getCacheScript(this.url)?.code;\n if (!jsStr) {\n jsStr = await fetchSource(this.url, { cache: 'no-cache' });\n }\n if (!jsStr) {\n console.error('load app entry error, pleace check');\n return Promise.reject();\n }\n this.scripts.set(this.url, new Script({\n code: jsStr,\n async: false,\n defer: false,\n url: this.url,\n isModule: false,\n fromHtml: true,\n }));\n }\n collectScriptAndStyle(parent: HTMLElement, app: MicroAppModel): void {\n const children = Array.from(parent.children);\n children.length\n && children.forEach((child) => {\n this.collectScriptAndStyle(child as HTMLElement, app);\n });\n for (const dom of children) {\n if (dom instanceof HTMLLinkElement) {\n this.collectLink(dom, parent);\n } else if (dom instanceof HTMLStyleElement) {\n if (dom.hasAttribute('exclude')) {\n } else if (!dom.hasAttribute('ignore')) {\n this.styles.set(randomUrl(), new Style({\n code: dom.textContent || '',\n url: '',\n fromHtml: true,\n }));\n dom.remove();\n }\n } else if (dom instanceof HTMLScriptElement) {\n this.collectScript(dom, parent);\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', fillUpPath(dom.getAttribute('src')!, this.url));\n }\n }\n }\n collectLink(\n link: HTMLLinkElement,\n parent: Node,\n needReplaceELement = false,\n ): {replace: Element | Comment, style?: Style} {\n if (link.hasAttribute('exclude')) {\n return { replace: document.createComment('【bk-weweb】style with exclude attribute is ignored') };\n }\n if (link.hasAttribute('ignore')) {\n return { replace: link };\n }\n const rel = link.getAttribute('rel');\n let href = link.getAttribute('href');\n let replaceElement;\n if (rel === 'stylesheet' && href) {\n href = fillUpPath(href, this.url);\n replaceElement = document.createComment(`【bk-weweb】style with href=${href}`);\n let styleInstance = this.getStyle(href);\n if (!styleInstance) {\n styleInstance = new Style({\n code: '',\n url: href,\n prefetch: !!link.getAttribute('prefetch'),\n preload: !!link.getAttribute('preload'),\n fromHtml: !needReplaceELement,\n });\n this.styles.set(href, styleInstance);\n }\n !needReplaceELement && parent.replaceChild(replaceElement, link);\n return { replace: replaceElement, style: styleInstance };\n } if (rel && ['prefetch', 'preload', 'prerender', 'icon', 'apple-touch-icon'].includes(rel)) {\n // preload prefetch icon ....\n replaceElement = document.createComment(`【bk-weweb】style with rel=${rel}${href ? ` & href=${href}` : ''}`);\n !needReplaceELement && parent.removeChild(link);\n return { replace: replaceElement };\n } if (href) {\n // dns-prefetch preconnect modulepreload search ....\n link.setAttribute('href', fillUpPath(href, this.url));\n }\n return { replace: link };\n }\n collectScript(\n script: HTMLScriptElement,\n parent: Node,\n needReplaceELement = false,\n ): {replace: Element | Comment, script?: Script} | undefined {\n if (script.hasAttribute('ignore')\n || (script.hasAttribute('type') && !['text/javascript', 'text/ecmascript', 'application/javascript', 'application/ecmascript', 'module'].includes(script.type))\n || (!isSupportModuleScript && script.type === 'module')) {\n return;\n }\n let replaceElement = null;\n if (script.hasAttribute('exclude')) {\n replaceElement = document.createComment('【bk-weweb】script element with exclude attribute is removed');\n !needReplaceELement && parent.replaceChild(replaceElement, script);\n return { replace: replaceElement };\n }\n let src: string | null = script.getAttribute('src');\n if (src) {\n src = fillUpPath(src, this.url);\n let scriptInstance = this.getScript(src);\n if (!scriptInstance) {\n scriptInstance = new Script({\n code: '',\n async: script.hasAttribute('async'),\n defer: script.defer || script.type === 'module',\n isModule: script.type === 'module',\n url: src,\n fromHtml: !needReplaceELement,\n });\n this.scripts.set(src, scriptInstance);\n }\n replaceElement = document.createComment(`【bk-weweb】script with src='${src}'`);\n !needReplaceELement && parent.replaceChild(replaceElement, script);\n return { replace: replaceElement, script: scriptInstance };\n }\n if (script.textContent) {\n const nonceStr: string = randomUrl();\n const scriptInstance = new Script({\n code: script.textContent,\n async: false,\n defer: script.type === 'module',\n isModule: script.type === 'module',\n url: nonceStr!,\n fromHtml: !needReplaceELement,\n });\n this.scripts.set(nonceStr, scriptInstance);\n replaceElement = document.createComment('【bk-weweb】script with texcontent');\n !needReplaceELement && parent.replaceChild(replaceElement, script);\n return { replace: replaceElement, script: scriptInstance };\n }\n return { replace: script };\n }\n setScript(url: string, script: IScriptOption) {\n this.scripts.set(url, new Script(script));\n }\n getScript(url: string) {\n return this.scripts.get(url);\n }\n setStyle(url: string, style: Style) {\n this.styles.set(url, style);\n }\n getStyle(url: string) {\n return this.styles.get(url);\n }\n}\n","import { BaseModel } from '../typings';\nimport { EntrySource } from '../entry/entry';\nimport { AppState } from '../common';\nimport { Style } from '../entry/style';\nimport { Script } from '../entry/script';\n\n// 所有应用缓存\nexport class AppCache {\n private cache: Map<string, BaseModel>;\n // todo 主应用共享资源包\n private baseSource: EntrySource;\n constructor() {\n this.cache = new Map();\n this.baseSource = new EntrySource(location.href);\n // this.baseApp = new\n }\n get hasActiveApp() {\n return Array.from(this.cache.values()).some((app: BaseModel) => app.status !== AppState.UNMOUNT);\n }\n setApp(app: BaseModel) {\n this.cache.set(app.appCacheKey, app);\n }\n getApp(name?: string | null): BaseModel | undefined {\n if (!name) return undefined;\n const app = this.cache.get(name);\n if (app) return app;\n return Array.from(this.cache.values()).find((item: BaseModel) => item.name === name);\n }\n getCacheHtml(url: string): string {\n const list = Array.from(this.cache.values());\n const app = list.find(item => item.url === url);\n if (app) return app.source?.rawHtml || '';\n return '';\n }\n getCacheStyle(url: string): Style | undefined {\n let style: Style | undefined = this.baseSource.getStyle(url);\n if (style) return;\n const list = Array.from(this.cache.values());\n list.some((app) => {\n style = app.source?.getStyle(url);\n return !!style;\n });\n return style;\n }\n getCacheScript(url: string): Script | undefined {\n let script: Script | undefined = this.baseSource.getScript(url);\n if (script) return;\n const list = Array.from(this.cache.values());\n list.some((app) => {\n script = app.source?.getScript(url);\n return !!script;\n });\n return script;\n }\n deleteApp(url: string) {\n this.cache.delete(url);\n }\n setBaseAppStyle(url: string, style: Style) {\n this.baseSource.setStyle(url, style);\n }\n setBaseAppScript(url: string, script: Script) {\n this.baseSource.setScript(url, script);\n }\n}\nconst appCache = new AppCache();\n// 注册全局获取缓存app 或者 instance\nwindow.__getAppOrInstance__ = function (id?: string) {\n if (!id) return appCache;\n return appCache.getApp(id);\n};\nexport {\n appCache,\n};\n","import { appCache } from '../cache/app-cache';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\nimport { fillUpPath, createElement } from '../utils/common';\nimport { dispatchLinkOrScriptError, dispatchLinkOrScriptLoad } from '../utils/element-event';\nimport { fetchSource } from '../utils/fetch';\n\nexport function getStyleSource(url: string, style: Style, originLink: HTMLLinkElement): HTMLStyleElement {\n const replaceStyle = createElement('style');\n fetchSource(url)\n .then((data: string) => {\n style.code = data;\n appCache.setBaseAppStyle(url, style);\n replaceStyle.textContent = data;\n dispatchLinkOrScriptLoad(originLink);\n })\n .catch((err) => {\n console.error(err);\n dispatchLinkOrScriptError(originLink);\n });\n return replaceStyle;\n}\nexport function getScriptSource(\n url: string,\n script: Script,\n originScript: HTMLScriptElement,\n): HTMLScriptElement | Comment {\n const replaceElement: Comment | HTMLScriptElement = createElement('script');\n fetchSource(url)\n .then((code: string) => {\n script.code = code;\n try {\n replaceElement.textContent = code;\n if (!url.startsWith('inline-')) {\n originScript.setAttribute('origin-src', url);\n }\n } catch (e) {\n console.error(e, url);\n }\n dispatchLinkOrScriptLoad(originScript);\n })\n .catch((err) => {\n console.error(err);\n dispatchLinkOrScriptError(originScript);\n });\n return replaceElement;\n}\nexport function rewriteNewNode(child: Node): Node {\n if (child instanceof HTMLLinkElement) {\n const rel = child.getAttribute('rel');\n let href = child.getAttribute('href');\n if (rel === 'stylesheet' && href) {\n href = fillUpPath(href, location.href);\n const replaceStyle = createElement('style');\n const styleInstance = new Style({\n code: '',\n url: href,\n fromHtml: false,\n });\n getStyleSource(href, styleInstance, child);\n return replaceStyle;\n }\n }\n if (child instanceof HTMLScriptElement) {\n let src = child.getAttribute('src');\n if (src && child.type !== 'module') {\n src = fillUpPath(src, location.href);\n const script = new Script({\n code: '',\n async: child.hasAttribute('async'),\n defer: child.defer || child.type === 'module',\n isModule: false,\n fromHtml: false,\n });\n appCache.setBaseAppScript(src, script);\n const replaceElement = getScriptSource(src, script, child);\n return replaceElement || child;\n }\n }\n return child;\n}\nexport function baseElementHandle(\n parent: Node,\n newChild: Node,\n passiveChild: Node | null,\n rawMethod: Function,\n baseSource: boolean,\n) {\n if (baseSource) {\n const targetChild = rewriteNewNode(newChild);\n return rawMethod.call(parent, targetChild, passiveChild);\n }\n return rawMethod.call(parent, newChild, passiveChild);\n}\n","import { baseElementHandle } from './base-element';\n\n(function () {\n const rawBodyAppendChild = HTMLBodyElement.prototype.appendChild;\n const rawHeadAppendChild = HTMLHeadElement.prototype.appendChild;\n const rawHeadInsertBefore = HTMLHeadElement.prototype.appendChild;\n HTMLBodyElement.prototype.appendChild = function <T extends Node>(newChild: T): T {\n return baseElementHandle(this, newChild, null, rawBodyAppendChild, true);\n };\n HTMLHeadElement.prototype.appendChild = function <T extends Node>(newChild: T): T {\n return baseElementHandle(this, newChild, null, rawHeadAppendChild, true);\n };\n HTMLHeadElement.prototype.insertBefore = function <T extends Node>(newChild: T, refChild: Node | null): T {\n return baseElementHandle(this, newChild, refChild, rawHeadInsertBefore, true);\n };\n}());\n"],"names":["createElement","document","bodyAppendChild","weWeb"],"mappings":"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"}
1
+ {"version":3,"file":"collect-source.js","sources":["../common/state.ts","../utils/common.ts","../context/memory.ts","../context/document.ts","../typings/source.ts","../typings/sandbox.ts","../utils/element-event.ts","../entry/style.ts","../utils/element.ts","../context/element.ts","../lifecircle/before-load.ts","../context/function.ts","../context/window.ts","../context/sandbox.ts","../mode/instance.ts","../lifecircle/load.ts","../lifecircle/unmount.ts","../lifecircle/activated.ts","../lifecircle/deactivated.ts","../component/web-compnent.ts","../utils/load-source.ts","../index.ts","../utils/fetch.ts","../entry/script.ts","../mode/app.ts","../entry/entry.ts","../cache/app-cache.ts","../base-app/base-element.ts","../base-app/collect-source.ts"],"sourcesContent":["// app status\nexport enum AppState {\n UNSET = 'UNSET',\n LOADING = 'LOADING',\n LOADED = 'LOADED',\n ERROR = 'ERROR',\n MOUNTING = 'MOUNTING',\n MOUNTED = 'MOUNTED',\n ACTIVATED = 'ACTIVATED',\n DEACTIVATED = 'DEACTIVATED',\n UNMOUNT = 'UNMOUNT'\n}\n","// is function\nexport function isFunction(target: unknown): boolean {\n return typeof target === 'function';\n}\n// Promise.then might be synchronized in Zone.js context, we need to use setTimeout instead to mock next tick.\nexport const nextTask: (cb: () => void) => any = typeof window.Zone === 'function' ? setTimeout : cb => Promise.resolve().then(cb);\n\nlet globalTaskPending = false;\nexport function nextTick(cb: () => void): void {\n if (!globalTaskPending) {\n globalTaskPending = true;\n nextTask(() => {\n cb();\n globalTaskPending = false;\n });\n }\n}\n\nexport function addUrlProtocol(url: string): string {\n return url.startsWith('//') ? `${location.protocol}${url}` : url;\n}\n\n// Get valid address, such as https://xxx/xx/xx.html to https://xxx/xx/\nexport function getUrlDir(url: string): string {\n const { origin, pathname } = new URL(url);\n if (/\\.(\\w+)$/.test(pathname)) {\n const fullPath = `${origin}${pathname}`;\n const pathArr = fullPath.split('/');\n pathArr.pop();\n return `${pathArr.join('/')}/`;\n }\n return `${origin}${pathname}/`.replace(/\\/\\/$/, '/');\n}\n// 补齐url地址\nexport function fillUpPath(path: string, baseURI: string): string {\n if (!path || /^((((ht|f)tps?)|file):)?\\/\\//.test(path) || /^(data|blob):/.test(path)) return path;\n\n return new URL(path, getUrlDir(addUrlProtocol(baseURI))).toString();\n}\n// 获取url目录\nexport function getFileDir(linkpath: string): string {\n const pathArr = linkpath.split('/');\n pathArr.pop();\n return addUrlProtocol(`${pathArr.join('/')}/`);\n}\n// is ie11\nexport const isIE11 = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('Trident') !== -1;\n\n// 随机url\nexport function randomUrl(): string {\n return `inline-${random(16)}`;\n}\n\n// Array deduplication\nexport function arrayUnique(array: any[]): any[] {\n return Array.from(new Set(array));\n}\n\n// requestIdleCallback polyfill\nexport const requestIdleCallback = window.requestIdleCallback\n || function (fn: CallableFunction) {\n const lastTime = Date.now();\n return setTimeout(() => {\n fn({\n didTimeout: false,\n handle() {\n return Math.max(0, 50 - (Date.now() - lastTime));\n },\n });\n }, 1);\n };\n\n// is safari browser\nexport function isSafari(): boolean {\n return /Safari/.test(navigator.userAgent);\n}\n\n// Create pure elements\nexport function createElement<K extends keyof HTMLElementTagNameMap>(\n tagName: K,\n options?: ElementCreationOptions,\n): HTMLElementTagNameMap[K] {\n const element = document.createElement(tagName, options);\n if (element.__BK_WEWEB_APP_KEY__) delete element.__BK_WEWEB_APP_KEY__;\n return element;\n}\n\n// bodyle element\nexport function isBodyElement(key: string): boolean {\n return /^(body|head|html)$/i.test(key);\n}\n// create random string\nexport const random = (n: number, str = 'abcdefghijklmnopqrstuvwxyz0123456789') => {\n // 生成n位长度的字符串\n let result = '';\n for (let i = 0; i < n; i++) {\n result += str[parseInt((Math.random() * str.length).toString(), 10)];\n }\n return result;\n};\n","import { BaseModel } from '../typings';\n\nlet currentRunningApp: BaseModel | null = null;\nexport function getCurrentRunningApp() {\n return currentRunningApp;\n}\nexport function setCurrentRunningApp(appInstance: BaseModel | null) {\n currentRunningApp = appInstance;\n}\n\n\nexport const documentClickListMap = new Map<string, unknown>();\nexport type DocumentEventType = keyof DocumentEventMap;\nexport type DocumentEventListener =(this: Document, ev: DocumentEventMap[DocumentEventType]) => any;\nexport const documentEventListenerMap = new Map<string, Map<keyof DocumentEventMap, Set<DocumentEventListener>>>();\n\nconst script = document.createElement('script');\nexport const isSupportModuleScript = 'noModule' in script;\n\nexport const SCOPED_CSS_STYLE_ID = 'SCOPED_CSS_STYLE_ID';\n\nconst templateStyle: HTMLStyleElement = document.createElement('style');\ntemplateStyle.setAttribute('id', SCOPED_CSS_STYLE_ID);\ndocument.body.appendChild(templateStyle);\ntemplateStyle.sheet!.disabled = true;\nexport const disabledStyleDom = templateStyle;\n","import { isBodyElement } from '../utils/common';\nimport { getCurrentRunningApp } from './memory';\nconst { document } = window;\nconst {\n createElement,\n querySelector,\n querySelectorAll,\n getElementById,\n getElementsByClassName,\n getElementsByTagName,\n getElementsByName,\n} = Document.prototype;\n\nexport function rewriteDocumentPrototypeMethods() {\n Document.prototype.createElement = function<K extends keyof HTMLElementTagNameMap>(\n tagName: K,\n options?: ElementCreationOptions | undefined,\n ) {\n const element = createElement.call(this, tagName, options);\n const app = getCurrentRunningApp();\n // img.src = '' iframe.src = '' 均不能在setAttributes上监听 但是这里所有的src都是 全地址 无法判断是否需要添加子应用域名\n // if (tagName.toLocaleLowerCase() === 'img') {\n // const observer = new MutationObserver((list, observer) => {\n // observer.disconnect();\n // const url = new URL((element as HTMLImageElement).src)\n // (element as HTMLImageElement).src = `${}`\n // });\n // observer.observe(element, { attributeFilter: ['src'], subtree: false, childList: false });\n // }\n if (app) element.__BK_WEWEB_APP_KEY__ = app.appCacheKey;\n return element;\n };\n function querySelectorNew(this: Document, selectors: string): any {\n const app = getCurrentRunningApp();\n if (!app || !selectors || isBodyElement(selectors) || document !== this) {\n return querySelector.call(this, selectors);\n }\n return app?.container?.querySelector(selectors) ?? null;\n }\n function querySelectorAllNew(this: Document, selectors: string): any {\n const app = getCurrentRunningApp();\n if (!app || !selectors || isBodyElement(selectors) || document !== this) {\n return querySelectorAll.call(this, selectors);\n }\n return app?.container?.querySelectorAll(selectors) ?? [];\n }\n Document.prototype.querySelector = querySelectorNew;\n Document.prototype.querySelectorAll = querySelectorAllNew;\n\n Document.prototype.getElementById = function getElementByIdNew(key: string): HTMLElement | null {\n if (!getCurrentRunningApp()) {\n return getElementById.call(this, key);\n }\n try {\n return querySelectorNew.call(this, `#${key}`);\n } catch {\n return getElementById.call(this, key);\n }\n };\n Document.prototype.getElementsByClassName = function (key: string): HTMLCollectionOf<Element> {\n if (!getCurrentRunningApp()) {\n return getElementsByClassName.call(this, key);\n }\n try {\n return querySelectorAllNew.call(this, `.${key}`);\n } catch {\n return getElementsByClassName.call(this, key);\n }\n };\n // eslint-disable-next-line max-len\n Document.prototype.getElementsByTagName = function<K extends keyof HTMLElementTagNameMap>(key: K): HTMLCollectionOf<Element> {\n const app = getCurrentRunningApp();\n if (\n !app\n || isBodyElement(key)\n || (!app?.showSourceCode && key.toLocaleLowerCase() === 'script')\n ) {\n return getElementsByTagName.call(this, key);\n }\n\n try {\n return querySelectorAllNew.call(this, key);\n } catch {\n return getElementsByTagName.call(this, key);\n }\n };\n Document.prototype.getElementsByName = function (key: string): NodeListOf<HTMLElement> {\n if (!getCurrentRunningApp()) {\n return getElementsByName.call(this, key);\n }\n try {\n return querySelectorAllNew.call(this, `[name=${key}]`);\n } catch {\n return getElementsByName.call(this, key);\n }\n };\n}\n\nexport function resetDocumentPrototypeMethods(): void {\n Document.prototype.createElement = createElement;\n Document.prototype.querySelector = querySelector;\n Document.prototype.querySelectorAll = querySelectorAll;\n Document.prototype.getElementById = getElementById;\n Document.prototype.getElementsByClassName = getElementsByClassName;\n Document.prototype.getElementsByTagName = getElementsByTagName;\n Document.prototype.getElementsByName = getElementsByName;\n}\n","export interface IStyleOption {\n code: string;\n prefetch?: boolean;\n preload?: boolean;\n url?: string;\n fromHtml: boolean\n initial?: boolean\n}\n\nexport interface IScriptOption {\n code: string; // code\n async: boolean; // async script\n defer: boolean; // defer script\n isModule: boolean; // module type script\n url?: string;\n fromHtml: boolean;\n initial?: boolean;\n};\n\nexport const CSS_ATTRIBUTE_KEY = 'id';\n\nexport enum CSS_RULE_TYPE {\n STYLE_RULE = 1,\n MEDIA_RULE = 4,\n SUPPORTS_RULE = 12\n}\n","export interface IInjectWindowAttrs {\n __POWERED_BY_BK_WEWEB__: boolean;\n __BK_WEWEB_APP_KEY__: string;\n __BK_WEWEB_DATA__: Record<string, unknown>;\n rawWindow: Window;\n rawDocument: Document;\n webpackChunkpc?: any[];\n}\n\n\nexport const commonEScapeKeyList: PropertyKey[] = ['System', '__cjsWrapper', '__REACT_ERROR_OVERLAY_GLOBAL_HOOK__'];\n// 共享主应用上下文属性名\nexport const escapeSetterKeyList: PropertyKey[] = ['location'];\n// 一定需要在子应用自身上下文获取的属性名\nexport const scopeWindowKeyList: PropertyKey[] = ['webpackJsonp', '__POWERED_BY_BK_WEWEB__', '__BK_WEWEB_APP_KEY__', '__BK_WEWEB_DATA__'];\n// 设置了scopedLocation 后需要监听属性名\nexport const scopedLocationKeyList: PropertyKey[] = ['location', 'history'];\n\nexport enum DescriptorMapValue {\n 'TARGET' = 'TARGET',\n 'WINDOW' = 'WINDOW'\n};\n\nexport const commonRawWindowKeyMap: any = {\n undefined: true,\n Array: true,\n Object: true,\n String: true,\n Boolean: true,\n Math: true,\n Reflect: true,\n Function: true,\n Number: true,\n Symbol: true,\n parseFloat: true,\n parseInt: true,\n Float32Array: true,\n Set: true,\n Infinity: true,\n navigator: true,\n devicePixelRatio: true,\n Promise: true,\n HTMLElement: true,\n Map: true,\n Element: true,\n performance: true,\n console: true,\n isFinite: true,\n RegExp: true,\n JSON: true,\n Date: true,\n Proxy: true,\n isNaN: true,\n WeakMap: true,\n WeakSet: true,\n Uint8Array: true,\n // btoa: true,\n // unescape: true,\n // WebSocket: true,\n // encodeURIComponent: true,\n // decodeURIComponent: true,\n // ArrayBuffer: true,\n // XMLHttpRequest: true,\n // SVGElement: true,\n // URLSearchParams: true,\n // URL: true,\n // RangeError: true,\n // TypeError: true,\n // Uint16Array: true,\n // Uint32Array: true,\n // Float64Array: true,\n // Int32Array: true,\n // requestAnimationFrame: true,\n // SVGRect: true,\n // Error: true,\n // Buffer: true,\n // SyntaxError: true,\n // DataView: true,\n // Worker: true,\n // localStorage: true,\n // Text: true,\n // FormData: true,\n // ShadowRoot: true,\n // encodeURI: true,\n // crypto: true,\n // HTMLAnchorElement: true,\n // Int8Array: true,\n // FinalizationRegistry: true,\n // BigInt: true,\n // Atomics: true,\n // Uint8ClampedArray: true,\n // WeakRef: true,\n // getComputedStyle,\n // innerHeight: true,\n // innerWidth: true,\n // getComputedStyle: true,\n};\nexport const commonFakeWindowKeyMap: any = {\n __VUE_OPTIONS_API__: true,\n __VUE_I18N_LEGACY_API__: true,\n __VUE_I18N_FULL_INSTALL__: true,\n __VUE_DEVTOOLS_GLOBAL_HOOK__: true,\n __VUE_DEVTOOLS_HOOK_REPLAY__: true,\n __VUE_DEVTOOLS_PLUGINS__: true,\n __DEV__: true,\n webpackChunktrace: true,\n webpackChunkpc: true,\n webpackChunkapm: true,\n i18n: true,\n '__core-js_shared__': true,\n};\nexport const commonWindowNameMap: any = {\n window: true,\n self: true,\n globalThis: true,\n};\n","import { isFunction } from './common';\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}\nexport function dispatchLinkOrScriptLoad(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 dispatchLinkOrScriptError(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","/* eslint-disable no-param-reassign */\nimport { appCache } from '../cache/app-cache';\nimport { disabledStyleDom } from '../context/memory';\nimport { BaseModel, CSS_RULE_TYPE, IStyleOption } from '../typings';\nimport { setMarkElement } from '../utils';\nimport { fillUpPath, getFileDir, isSafari, createElement } from '../utils/common';\nimport { dispatchLinkOrScriptError, dispatchLinkOrScriptLoad } from '../utils/element-event';\nimport { fetchSource } from '../utils/fetch';\n\nexport class Style {\n scopedCode = '';\n code ='';\n prefetch = false;\n preload = false;\n url: string | undefined;\n scoped: boolean;\n fromHtml: boolean;\n initial: boolean;\n constructor({ code, prefetch, preload, url, fromHtml, initial }: IStyleOption) {\n this.scoped = false;\n this.code = code;\n this.prefetch = prefetch ?? false;\n this.preload = preload ?? false;\n this.url = url;\n this.fromHtml = fromHtml;\n this.initial = initial ?? false;\n }\n async getCode(app?: BaseModel): Promise<string> {\n if (this.code.length || !this.url) {\n return this.code;\n }\n let code = '';\n if (app?.source?.styles?.has(this.url)) {\n code = app.source.styles.get(this.url)?.code || '';\n }\n if (!code && appCache.getCacheStyle(this.url)) {\n const style = appCache.getCacheStyle(this.url);\n code = style?.code || '';\n }\n if (!code) {\n code = await fetchSource(this.url).catch(() => '');\n }\n this.code = code;\n return code;\n }\n async excuteCode(app: BaseModel): Promise<HTMLStyleElement> {\n app.registerRunningApp();\n let styleElement = createElement('style');\n styleElement.setAttribute('type', 'text/css');\n styleElement.textContent = this.code!;\n try {\n if (!this.code) await this.getCode(app);\n styleElement = this.scopedStyleCSS(app, styleElement);\n this.scoped = true;\n } catch (e) {\n console.error('scoped style error', e);\n }\n return styleElement;\n }\n scopedStyleCSS(app: BaseModel, styleElement: HTMLStyleElement): HTMLStyleElement {\n const needKeepAlive = !!app.keepAlive && !(app.container instanceof ShadowRoot);\n setMarkElement(styleElement, app, needKeepAlive);\n if (this.code || styleElement.textContent) {\n if (styleElement.textContent) {\n styleElement.textContent = '';\n styleElement.innerHTML = '';\n }\n disabledStyleDom.textContent = this.code;\n this.commonScoped(\n disabledStyleDom,\n styleElement,\n app,\n );\n disabledStyleDom.textContent = '';\n } else {\n const observer = new MutationObserver(() => {\n if (!(styleElement.textContent || styleElement.sheet?.cssRules?.length)) return;\n observer.disconnect();\n this.commonScoped(\n styleElement,\n styleElement,\n app,\n );\n });\n observer.observe(styleElement, { attributes: false, childList: true, subtree: true, characterData: true });\n }\n this.url && styleElement.setAttribute('origin-src', this.url);\n return styleElement;\n }\n scopedLinkCSS(app: BaseModel, linkElement: HTMLLinkElement): HTMLStyleElement {\n const styleElement = createElement('style');\n styleElement.setAttribute('type', 'text/css');\n const needKeepAlive = !!app.keepAlive && !(app.container instanceof ShadowRoot);\n setMarkElement(styleElement, app, needKeepAlive);\n const container = needKeepAlive ? document.head : app.container;\n try {\n if (this.code) {\n disabledStyleDom.textContent = styleElement.textContent || this.code;\n this.commonScoped(\n disabledStyleDom,\n styleElement,\n app,\n );\n container?.prepend(styleElement);\n linkElement && dispatchLinkOrScriptLoad(linkElement);\n disabledStyleDom.textContent = '';\n } else if (linkElement.getAttribute('href')) {\n this.url = fillUpPath(linkElement.getAttribute('href')!, app.url);\n this.getCode(app).then(() => {\n this.scopedStyleCSS(app, styleElement);\n linkElement.remove();\n container?.prepend(styleElement);\n linkElement && dispatchLinkOrScriptLoad(linkElement);\n this.scoped = true;\n });\n } else {\n const observer = new MutationObserver(() => {\n if (!linkElement.href) return;\n observer.disconnect();\n this.url = fillUpPath(linkElement.getAttribute('href')!, app.url);\n this.getCode(app).then(() => {\n this.scopedStyleCSS(app, styleElement);\n linkElement.remove();\n container?.prepend(styleElement);\n linkElement && dispatchLinkOrScriptLoad(linkElement);\n this.scoped = true;\n });\n });\n observer.observe(linkElement, { attributeFilter: ['href'], subtree: false, childList: false });\n }\n } catch {\n linkElement && dispatchLinkOrScriptError(linkElement);\n }\n return styleElement;\n }\n commonScoped(\n templateStyle: HTMLStyleElement,\n styleElement: HTMLStyleElement,\n app: BaseModel,\n ) {\n if (app.scopeCss && !(app.container instanceof ShadowRoot)) {\n const rules: CSSRule[] = Array.from(templateStyle.sheet?.cssRules ?? []);\n const cssPrefix = `#${app.name}`;\n const scopedCss = this.scopeRule(rules, cssPrefix);\n let cssText = this.resetUrlHost(\n scopedCss,\n app.url,\n this.url,\n );\n if (isSafari()) {\n cssText = cssText.replace(/([;{]\\s*content:\\s*)([^\\s\"][^\";}]*)/gm, (all, $1, $2) => {\n if ($2 === 'none' || /^(url\\()|(counter\\()|(attr\\()|(open-quote)|(close-quote)/.test($2)) {\n return all;\n }\n return `${$1}\"${$2}\"`;\n });\n }\n styleElement.textContent = cssText;\n this.scopedCode = cssText;\n } else {\n const cssText = this.resetUrlHost(\n styleElement.textContent || templateStyle.textContent || '',\n app.url,\n this.url,\n );\n styleElement.textContent = cssText;\n }\n this.scoped = true;\n }\n scopeRule(rules: CSSRule[], cssPrefix: string): string {\n let result = '';\n for (const rule of rules) {\n switch (rule.type) {\n case CSS_RULE_TYPE.STYLE_RULE:\n result += this.scopeStyleRule(rule as CSSStyleRule, cssPrefix);\n break;\n case CSS_RULE_TYPE.MEDIA_RULE:\n result += this.resetPackRule(rule as CSSMediaRule, cssPrefix, 'media');\n break;\n case CSS_RULE_TYPE.SUPPORTS_RULE:\n result += this.resetPackRule(rule as CSSSupportsRule, cssPrefix, 'supports');\n break;\n default:\n result += rule.cssText;\n break;\n }\n }\n return result.replace(/^\\s+/, '');\n }\n resetPackRule(rule: CSSMediaRule | CSSSupportsRule, prefix: string, packName: string): string {\n const result = this.scopeRule(Array.from(rule.cssRules), prefix);\n return `@${packName} ${rule.conditionText} {${result}}`;\n }\n resetUrlHost(cssText: string, baseURI: string, linkpath?: string) {\n return cssText.replace(/url\\([\"']?([^)\"']+)[\"']?\\)/gm, (text, $1) => {\n if (/^(data|blob):/.test($1) || /^(https?:)?\\/\\//.test($1)) {\n return text;\n }\n if (/^((\\.\\.?\\/)|[^/])/.test($1) && linkpath) {\n baseURI = getFileDir(linkpath);\n }\n return `url(\"${fillUpPath($1, baseURI)}\")`;\n });\n }\n scopeStyleRule(rule: CSSStyleRule, prefix: string): string {\n const { selectorText, cssText } = rule;\n if (/^((html[\\s>~,]+body)|(html|body|:root))$/.test(selectorText)) {\n return cssText.replace(/^((html[\\s>~,]+body)|(html|body|:root))/, prefix);\n }\n if (selectorText === '*') {\n return cssText.replace('*', `${prefix} *`);\n }\n\n const builtInRootSelectorRE = /(^|\\s+)((html[\\s>~]+body)|(html|body|:root))(?=[\\s>~]+|$)/;\n\n return cssText.replace(/^[\\s\\S]+{/, selectors => selectors.replace(/(^|,)([^,]+)/g, (all, $1, $2) => {\n if (builtInRootSelectorRE.test($2)) {\n return all.replace(builtInRootSelectorRE, prefix);\n }\n return `${$1} ${prefix} ${$2.replace(/^\\s*/, '')}`;\n }));\n }\n}\n\nexport async function excuteAppStyles(app: BaseModel, container?: Element | ShadowRoot) {\n const styleList: Style[] = Array.from(app.source!.styles.values());\n const promiseList: Promise<HTMLStyleElement>[] = [];\n styleList.forEach((style) => {\n promiseList.push(style.excuteCode(app));\n });\n await Promise.all(promiseList).then((styleElementList: HTMLStyleElement[]) => {\n const parentElemnt = container || app.container;\n if (app.keepAlive && !(parentElemnt instanceof ShadowRoot)) {\n document.head.append(...styleElementList);\n } else {\n parentElemnt?.prepend(...styleElementList);\n }\n });\n}\n","import { appCache } from '../cache/app-cache';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\nimport { randomUrl } from './common';\nimport { dispatchLinkOrScriptLoad } from './element-event';\nimport { BaseModel } from '../typings';\nconst { appendChild: bodyAppendChild } = HTMLBodyElement.prototype;\nexport function resetNewElement(\n parent: Node,\n child: Node,\n app: BaseModel,\n): Node {\n if (child instanceof HTMLStyleElement) {\n if (child.hasAttribute('exclude')) {\n return document.createComment('【bk-weweb】style with exclude attribute is ignored');\n }\n if (!child.hasAttribute('ignore')) {\n const styleInstance = new Style({\n code: child.textContent || '',\n url: '',\n fromHtml: false,\n });\n app.source?.setStyle(randomUrl(), styleInstance);\n styleInstance.scopedStyleCSS(app, child);\n }\n return child;\n }\n if (child instanceof HTMLLinkElement) {\n const result = app.source?.collectLink(child, parent, true);\n if (!result) return child;\n if (result.style) {\n result.style.scopedLinkCSS(app, child);\n }\n if (result.replace !== child) {\n return result.replace;\n }\n return child;\n }\n if (child instanceof HTMLScriptElement) {\n const replaceInfo = app.source!.collectScript(child, parent, true);\n if (!replaceInfo) {\n return child;\n }\n if (replaceInfo.script) {\n replaceInfo.script.excuteCode(app);\n }\n if (replaceInfo.replace !== child) {\n return replaceInfo.replace;\n }\n if (app.scopeJs && !child.getAttribute('src') && !child.textContent) {\n const observer = new MutationObserver(() => {\n if (child.getAttribute('src')) {\n observer.disconnect();\n const scriptInfo = app.source!.collectScript(child, parent, true);\n if (scriptInfo?.replace) {\n bodyAppendChild.call(app.container, scriptInfo.replace);\n }\n if (scriptInfo?.script) {\n scriptInfo.script.excuteCode(app);\n }\n child.remove();\n } else if (child.textContent) {\n observer.disconnect();\n const scriptInstance = new Script({\n code: child.textContent,\n async: false,\n defer: child.type === 'module',\n isModule: child.type === 'module',\n fromHtml: false,\n });\n app.source!.scripts.set(randomUrl(), scriptInstance);\n try {\n scriptInstance.excuteCode(app);\n } catch (e) {\n console.error(e);\n } finally {\n !scriptInstance.isModule && dispatchLinkOrScriptLoad(child);\n child.remove();\n }\n }\n });\n observer.observe(child, { attributeFilter: ['src'], childList: true, subtree: false });\n return document.createComment('【bk-weweb】dynamic script or module');\n }\n return child;\n }\n return child;\n}\nexport function isSepcailElement(node: Node) {\n return node instanceof HTMLScriptElement\n|| node instanceof HTMLStyleElement\n|| node instanceof HTMLLinkElement;\n}\nexport function elmentAppendHandler(\n parent: Node,\n newChild: Node,\n rawMethod: Function,\n) {\n if (newChild.__BK_WEWEB_APP_KEY__) {\n const app = appCache.getApp(newChild.__BK_WEWEB_APP_KEY__!);\n if (app?.container) {\n const targetChild = resetNewElement(parent, newChild, app);\n const needKeepAlive = isSepcailElement(newChild) && !!app.keepAlive && !(app.container instanceof ShadowRoot);\n const container = needKeepAlive ? document.head : app?.container;\n setMarkElement(targetChild as Element, app, needKeepAlive);\n return rawMethod.call(container, targetChild);\n }\n }\n return rawMethod.call(parent, newChild);\n}\nexport function elementInsertHandler(\n parent: Node,\n newChild: Node,\n passiveChild: Node | null,\n rawMethod: Function,\n) {\n if (newChild.__BK_WEWEB_APP_KEY__) {\n const app = appCache.getApp(newChild.__BK_WEWEB_APP_KEY__!);\n if (app?.container) {\n const needKeepAlive = isSepcailElement(newChild) && app.keepAlive && !(app.container instanceof ShadowRoot) ;\n const container = needKeepAlive ? document.head : app?.container;\n const targetChild = resetNewElement(parent, newChild, app);\n if (needKeepAlive) {\n targetChild.__KEEP_ALIVE__ = app.appCacheKey;\n (targetChild as Element).setAttribute('data-from', app.name);\n (targetChild as Element).setAttribute('data-keep-alive', 'true');\n }\n if (passiveChild && !container.contains(passiveChild)) {\n return bodyAppendChild.call(container, targetChild);\n }\n return rawMethod.call(container, targetChild, passiveChild);\n }\n }\n return rawMethod.call(parent, newChild, passiveChild);\n}\n\nexport function setMarkElement<T extends Element>(element: T, app: BaseModel, keepAlive: boolean): T {\n if (keepAlive) {\n element.__KEEP_ALIVE__ = app.appCacheKey;\n element.setAttribute('data-from', app.name);\n element.setAttribute('data-keep-alive', 'true');\n }\n element.setAttribute?.('powered-by', 'bk-weweb');\n return element;\n}\n","import { appCache } from '../cache/app-cache';\nimport { fillUpPath } from '../utils/common';\nimport { elementInsertHandler, elmentAppendHandler, isSepcailElement } from '../utils/element';\nimport { setCurrentRunningApp } from './memory';\n\nconst { setAttribute } = Element.prototype;\nconst {\n appendChild: bodyAppendChild,\n removeChild: bodyRemoveChild,\n append,\n} = HTMLBodyElement.prototype;\nconst {\n appendChild: headAppendChild,\n removeChild: headRemoveChild,\n insertBefore: headInsertBefore,\n} = HTMLHeadElement.prototype;\nconst rawHead = document.head;\n\nexport function rewriteBodyAndHeaderMethods(): void {\n Element.prototype.setAttribute = function (key: string, value: string): void {\n const tagName = this.tagName.toLocaleUpperCase();\n if (\n ((['src', 'srcset'].includes(key) && ['SCRIPT', 'IMG'].includes(tagName))\n || (key === 'href' && ['LINK'].includes(tagName)))\n && this.__BK_WEWEB_APP_KEY__\n && appCache.getApp(this.__BK_WEWEB_APP_KEY__ || '')\n ) {\n setAttribute.call(this, key, fillUpPath(value, appCache.getApp(this.__BK_WEWEB_APP_KEY__!)!.url));\n } else {\n setAttribute.call(this, key, value);\n }\n };\n\n HTMLBodyElement.prototype.appendChild = function appendChildNew<T extends Node>(newChild: T): T {\n if (newChild.__KEEP_ALIVE__ && isSepcailElement(newChild)) return (headAppendChild as any).call(rawHead, newChild);\n return elmentAppendHandler(this, newChild, bodyAppendChild);\n };\n HTMLBodyElement.prototype.append = function <T extends Node>(...nodes: T[]): void {\n let i = 0;\n const { length } = nodes;\n while (i < length) {\n if (nodes[i].__KEEP_ALIVE__ && isSepcailElement(nodes[i])) {\n return (headAppendChild as any).call(rawHead, nodes[i]);\n };\n elmentAppendHandler(this, nodes[i] as Node, bodyAppendChild);\n i += 1;\n }\n };\n HTMLHeadElement.prototype.appendChild = HTMLBodyElement.prototype.appendChild;\n\n\n HTMLHeadElement.prototype.insertBefore = function <T extends Node>(newChild: T, refChild: Node | null): T {\n return elementInsertHandler(this, newChild, refChild, headInsertBefore);\n };\n HTMLBodyElement.prototype.removeChild = function removeChildNew<T extends Node>(oldChild: T): T {\n const app = appCache.getApp(oldChild.__BK_WEWEB_APP_KEY__!);\n if (app?.container?.contains(oldChild)) {\n const node = bodyRemoveChild.call(app.container, oldChild) as T;\n return node;\n } if (this.contains(oldChild)) {\n return bodyRemoveChild.call(this, oldChild) as T;\n }\n return oldChild;\n };\n HTMLHeadElement.prototype.removeChild = HTMLBodyElement.prototype.removeChild;\n}\n\nexport function resetBodyAndHeaderMethods(): void {\n setCurrentRunningApp(null);\n Element.prototype.setAttribute = setAttribute;\n HTMLBodyElement.prototype.appendChild = bodyAppendChild;\n HTMLBodyElement.prototype.append = append;\n HTMLBodyElement.prototype.removeChild = bodyRemoveChild;\n HTMLHeadElement.prototype.appendChild = headAppendChild;\n HTMLHeadElement.prototype.insertBefore = headInsertBefore;\n HTMLHeadElement.prototype.removeChild = headRemoveChild;\n}\n","import { rewriteDocumentPrototypeMethods } from '../context/document';\nimport { rewriteBodyAndHeaderMethods } from '../context/element';\n\nexport function beforeLoad() {\n rewriteBodyAndHeaderMethods();\n rewriteDocumentPrototypeMethods();\n}\n","import { isFunction } from '../utils/common';\n\nconst constructorMap = new WeakMap<Function | FunctionConstructor, boolean>();\nfunction isConstructor(value: Function | FunctionConstructor) {\n if (constructorMap.has(value)) {\n return constructorMap.get(value);\n }\n\n const valueStr = value.toString();\n\n const result = (value.prototype\n && value.prototype.constructor === value\n && Object.getOwnPropertyNames(value.prototype).length > 1)\n || /^function\\s+[A-Z]/.test(valueStr)\n || /^class\\s+/.test(valueStr);\n\n constructorMap.set(value, result);\n\n return result;\n}\nconst rawWindowMethodMap = new WeakMap<CallableFunction, CallableFunction>();\nexport default function bindFunctionToRawWindow(rawWindow: Window, value: any): unknown {\n if (rawWindowMethodMap.has(value)) {\n return rawWindowMethodMap.get(value);\n }\n\n if (isFunction(value) && !isConstructor(value)) {\n const bindRawWindowValue = value.bind(rawWindow);\n Object.keys(value).forEach(key => (bindRawWindowValue[key] = value[key]));\n // eslint-disable-next-line no-prototype-builtins\n if (value.hasOwnProperty('prototype') && !bindRawWindowValue.hasOwnProperty('prototype')) {\n bindRawWindowValue.prototype = value.prototype;\n }\n\n rawWindowMethodMap.set(value, bindRawWindowValue);\n return bindRawWindowValue;\n }\n\n return value;\n}\n","/* eslint-disable no-param-reassign */\nimport { documentClickListMap, documentEventListenerMap, DocumentEventListener, getCurrentRunningApp } from './memory';\n\nexport type IntervalOrTimeout = {\n handler: TimerHandler;\n timeout?: number;\n args: unknown[];\n};\n// rewrite document and body event listener\nexport function rewriteDocumentAndBodyEvent(): {resetDocumentAndBodyEvent: () => void} {\n const { addEventListener, removeEventListener } = window.document;\n const { addEventListener: bodyAddEventListener, removeEventListener: bodyRemoveEventListener } = window.document.body;\n document.addEventListener = function<K extends keyof DocumentEventMap>(\n type: K,\n listener: DocumentEventListener,\n options?: boolean | AddEventListenerOptions | undefined,\n ): void {\n const app = getCurrentRunningApp();\n if (app) {\n const appListenersMap = documentEventListenerMap.get(app.appCacheKey);\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(app.appCacheKey, new Map([[type, new Set([listener])]]));\n }\n }\n addEventListener.call(app?.container instanceof ShadowRoot ? app.container : this, type, listener, options);\n };\n document.body.addEventListener = document.addEventListener;\n\n document.removeEventListener = function<K extends keyof DocumentEventMap>(\n type: K,\n listener: DocumentEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const app = getCurrentRunningApp();\n if (app) {\n const appListenersMap = documentEventListenerMap.get(app.appCacheKey);\n if (appListenersMap) {\n const appListenerList = appListenersMap.get(type);\n if (appListenerList?.size && appListenerList.has(listener)) {\n appListenerList.delete(listener);\n }\n }\n }\n removeEventListener.call(app?.container instanceof ShadowRoot ? app.container : this, type, listener, options);\n };\n document.body.removeEventListener = document.removeEventListener;\n\n function resetDocumentAndBodyEvent(): void {\n document.addEventListener = addEventListener;\n document.body.addEventListener = bodyAddEventListener;\n document.removeEventListener = removeEventListener;\n document.body.removeEventListener = bodyRemoveEventListener;\n }\n return {\n resetDocumentAndBodyEvent,\n };\n}\n\n// rewrite window funtion like settimeout setinterval ...\nexport function rewriteWindowFunction(fakeWindow: Window & any): Record<string, CallableFunction> {\n const app = getCurrentRunningApp();\n const eventListenerMap = new Map<string, Set<DocumentEventListener>>();\n const intervalIdMap = new Map<number, IntervalOrTimeout>();\n const timeoutIdMap = new Map<number, IntervalOrTimeout>();\n const rawWindow = window;\n const rawDocument = window.document;\n const { addEventListener, removeEventListener, setInterval, setTimeout, clearInterval, clearTimeout } = window;\n const { removeEventListener: documentRemoveEventListener } = window.document;\n\n // listener may be null, e.g test-passive\n fakeWindow.addEventListener = function (\n type: string,\n listener: DocumentEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const listenerList = eventListenerMap.get(type);\n if (listenerList) {\n listenerList.add(listener);\n } else {\n eventListenerMap.set(type, new Set([listener]));\n }\n addEventListener.call(rawWindow, type, listener, options);\n };\n\n fakeWindow.removeEventListener = function (\n type: string,\n listener: DocumentEventListener,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const listenerList = eventListenerMap.get(type);\n if (listenerList?.size && listenerList.has(listener)) {\n listenerList.delete(listener);\n }\n removeEventListener.call(rawWindow, type, listener, options);\n };\n\n fakeWindow.setInterval = function (\n handler: TimerHandler | string,\n timeout?: number | undefined, ...args: any[]\n ): number {\n const intervalId: any = setInterval.call(rawWindow, handler as any, timeout, ...(args as []));\n intervalIdMap.set(intervalId, { handler, timeout, args });\n return intervalId;\n };\n\n fakeWindow.setTimeout = function (\n handler: TimerHandler,\n timeout?: number,\n ...args: any[]\n ): number {\n const timeoutId: any = setTimeout.call(rawWindow, handler as any, timeout, ...(args as []));\n timeoutIdMap.set(timeoutId, { handler, timeout, args });\n return timeoutId;\n };\n\n fakeWindow.clearInterval = function (intervalId: number) {\n intervalIdMap.delete(intervalId);\n clearInterval.call(rawWindow, intervalId as any);\n };\n\n fakeWindow.clearTimeout = function (timeoutId: number) {\n timeoutIdMap.delete(timeoutId);\n clearTimeout.call(rawWindow, timeoutId as any);\n };\n // reset all event listener & interval & timeout when unmount app\n const resetWindowFunction = () => {\n // clear window events listener\n if (eventListenerMap.size) {\n eventListenerMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n removeEventListener.call(rawWindow, type, listener);\n }\n });\n eventListenerMap.clear();\n }\n\n // clear settimeout timers\n if (intervalIdMap.size) {\n intervalIdMap.forEach((_, intervalId: number) => {\n clearInterval.call(rawWindow, intervalId as any);\n });\n intervalIdMap.clear();\n }\n\n if (timeoutIdMap.size) {\n timeoutIdMap.forEach((_, timeoutId: number) => {\n clearTimeout.call(rawWindow, timeoutId as any);\n });\n timeoutIdMap.clear();\n }\n\n if (app) {\n documentClickListMap.delete(app.appCacheKey);\n const documentAppListenersMap = documentEventListenerMap.get(app.appCacheKey);\n if (documentAppListenersMap) {\n documentAppListenersMap.forEach((listenerList, type) => {\n for (const listener of listenerList) {\n documentRemoveEventListener.call(rawDocument, type, listener);\n }\n });\n documentAppListenersMap.clear();\n }\n }\n };\n\n return {\n resetWindowFunction,\n };\n}\n","/* eslint-disable no-new-func */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\nimport {\n BaseModel,\n escapeSetterKeyList,\n IInjectWindowAttrs,\n scopedLocationKeyList,\n scopeWindowKeyList,\n commonEScapeKeyList,\n commonFakeWindowKeyMap,\n commonRawWindowKeyMap,\n DescriptorMapValue,\n} from '../typings';\nimport { arrayUnique, random } from '../utils/common';\nimport { MicroAppModel } from '../mode/app';\nimport bindFunctionToRawWindow from './function';\nimport { rewriteWindowFunction, rewriteDocumentAndBodyEvent } from './window';\nexport default class SandBox {\n private resetWindowFunction: CallableFunction;\n private resetDocumentAndBodyEvent?: CallableFunction;\n private injectedKeySet = new Set<PropertyKey>();\n private escapedKeySet = new Set<PropertyKey>();\n private active = false;\n\n public rawWindow: Window;\n public rawDocument: Document;\n public proxyWindow: WindowProxy & IInjectWindowAttrs;\n public fakeWindow: Window & IInjectWindowAttrs = {} as any;\n public windowSymbolKey: keyof Window;\n constructor(public app: BaseModel) {\n const descriptorMap = new Map<PropertyKey, DescriptorMapValue>();\n const rawWindow = window;\n const rawDocument = window.document;\n this.fakeWindow.__POWERED_BY_BK_WEWEB__ = true;\n this.fakeWindow.__BK_WEWEB_APP_KEY__ = app.appCacheKey;\n this.rawWindow = rawWindow;\n this.rawDocument = rawDocument;\n this.fakeWindow.rawWindow = rawWindow;\n this.fakeWindow.rawDocument = rawDocument;\n const { resetWindowFunction } = rewriteWindowFunction(this.fakeWindow);\n this.resetWindowFunction = resetWindowFunction;\n this.windowSymbolKey = `__${(app.name || app.appCacheKey).replace(/(-|,|:|~|'|\")/gmi, '_')}_${random(10)}__` as keyof Window;\n this.proxyWindow = new Proxy(this.fakeWindow, {\n get: (target: Window & any, key: PropertyKey): unknown => {\n if (commonRawWindowKeyMap[key] || key === Symbol.unscopables) return rawWindow[key as any];\n if (commonFakeWindowKeyMap[key]) return this.fakeWindow[key as any];\n if (['window', 'self', 'globalThis'].includes(key as string)) return this.proxyWindow;\n if (key === 'document' || key === 'eval') {\n app.registerRunningApp();\n // eslint-disable-next-line no-eval\n return key === 'document' ? rawDocument : eval;\n }\n if (\n scopedLocationKeyList.includes(key)\n && this.app instanceof MicroAppModel\n && this.app.iframe\n && this.app.scopeLocation\n ) {\n return this.app.iframe.contentWindow?.[key as any];\n }\n // if (key === Symbol.unscopables) return com;\n if (key === 'hasOwnProperty') return (key: PropertyKey) => this.fakeWindow.hasOwnProperty(key) || rawWindow.hasOwnProperty(key);\n if (key === 'top' || key === 'parent') {\n if (rawWindow === rawWindow.parent) {\n return this.proxyWindow;\n }\n return Reflect.get(rawWindow, key); // iframe\n }\n if (\n Reflect.has(target, key)\n || scopeWindowKeyList.includes(key)\n ) return Reflect.get(target, key);\n const rawValue = Reflect.get(rawWindow, key);\n return bindFunctionToRawWindow(rawWindow, rawValue);\n },\n set: (target: any, key: PropertyKey, value: unknown): boolean => {\n if (this.active) {\n if (\n scopedLocationKeyList.includes(key)\n && this.app instanceof MicroAppModel\n && this.app.iframe\n && this.app.scopeLocation\n ) {\n return Reflect.set(this.app.iframe.contentWindow!, key, value);\n }\n if (escapeSetterKeyList.includes(key)) {\n Reflect.set(rawWindow, key, value);\n } else if (\n !target.hasOwnProperty(key)\n && rawWindow.hasOwnProperty(key)\n && !scopeWindowKeyList.includes(key)\n ) {\n const descriptor = Object.getOwnPropertyDescriptor(rawWindow, key);\n const { writable, configurable, enumerable } = descriptor!;\n if (writable) {\n Object.defineProperty(target, key, {\n configurable,\n enumerable,\n writable,\n value,\n });\n this.injectedKeySet.add(key);\n }\n } else {\n Reflect.set(target, key, value);\n this.injectedKeySet.add(key);\n }\n if ((commonEScapeKeyList.includes(key) && !Reflect.has(rawWindow, key))\n && !scopeWindowKeyList.includes(key)) {\n Reflect.set(rawWindow, key, value);\n this.escapedKeySet.add(key);\n }\n }\n return true;\n },\n has: (target: Window & any, key: PropertyKey): boolean => (commonRawWindowKeyMap as any)[key]\n || key in target\n || key in rawWindow,\n getOwnPropertyDescriptor: (target: any, key: PropertyKey): PropertyDescriptor | undefined => {\n if (target.hasOwnProperty(key)) {\n return Object.getOwnPropertyDescriptor(target, key);\n }\n if (rawWindow.hasOwnProperty(key)) {\n descriptorMap.set(key, DescriptorMapValue.WINDOW);\n const descriptor = Object.getOwnPropertyDescriptor(rawWindow, key);\n if (descriptor && !descriptor.configurable) {\n descriptor.configurable = true;\n }\n return descriptor;\n }\n return undefined;\n },\n // Object.defineProperty(window, key, Descriptor)\n defineProperty: (target: Window & any, key: PropertyKey, value: PropertyDescriptor): boolean => {\n const from = descriptorMap.get(key);\n if (from === DescriptorMapValue.WINDOW) {\n return Reflect.defineProperty(rawWindow, key, value);\n }\n return Reflect.defineProperty(target, key, value);\n },\n // Object.getOwnPropertyNames(window)\n ownKeys: (target: Window & any): Array<string | symbol> => arrayUnique(Reflect.ownKeys(rawWindow)\n .concat(Reflect.ownKeys(target))),\n deleteProperty: (target: Window & any, key: PropertyKey): boolean => {\n if (target.hasOwnProperty(key)) {\n this.injectedKeySet.has(key) && this.injectedKeySet.delete(key);\n this.escapedKeySet.has(key) && Reflect.deleteProperty(rawWindow, key);\n return Reflect.deleteProperty(target, key);\n }\n return true;\n },\n });\n if (app.showSourceCode) {\n rawWindow[this.windowSymbolKey as any] = this.proxyWindow;\n }\n }\n activeated(data?: Record<string, unknown>): void {\n if (!this.active) {\n this.active = true;\n this.fakeWindow.__BK_WEWEB_DATA__ = data ?? {};\n const { resetDocumentAndBodyEvent } = rewriteDocumentAndBodyEvent();\n this.resetDocumentAndBodyEvent = resetDocumentAndBodyEvent;\n }\n }\n deactivated(): void {\n if (this.active) {\n this.active = false;\n this.resetWindowFunction();\n // this.injectedKeySet.forEach((key: PropertyKey) => Reflect.deleteProperty(this.fakeWindow, key));\n this.injectedKeySet.clear();\n this.escapedKeySet.forEach((key: PropertyKey) => Reflect.deleteProperty(window, key));\n this.escapedKeySet.clear();\n this.resetDocumentAndBodyEvent?.();\n }\n }\n}\n","import { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { setCurrentRunningApp } from '../context/memory';\nimport SandBox from '../context/sandbox';\nimport { EntrySource } from '../entry/entry';\nimport { execAppScripts } from '../entry/script';\nimport { excuteAppStyles } from '../entry/style';\nimport { BaseModel, CSS_ATTRIBUTE_KEY, IJsModelProps } from '../typings';\nimport { random } from '../utils/common';\nimport { SourceType } from '../utils/load-source';\nexport class MicroInstanceModel implements BaseModel {\n private state: AppState = AppState.UNSET;\n isPreLoad = false;\n appCacheKey: string;\n url: string;\n container?: HTMLElement | ShadowRoot;\n scopeJs = false;\n source?: EntrySource;\n sandBox?: SandBox;\n name: string;\n showSourceCode = true;\n scopeCss = true;\n keepAlive: boolean;\n initSource: SourceType;\n public data: Record<string, unknown>;\n constructor(props: IJsModelProps) {\n this.name = props.id !== props.url ? props.id! : random(5);\n this.appCacheKey = props.id || this.name;\n this.url = props.url;\n this.container = props.container ?? undefined;\n this.scopeJs = props.scopeJs ?? true;\n this.showSourceCode = props.showSourceCode ?? true;\n this.scopeCss = props.scopeCss ?? true;\n this.keepAlive = props.keepAlive ?? false;\n this.data = props.data ?? {};\n this.initSource = props.initSource ?? [];\n // 是否启用沙盒\n if (this.scopeJs) {\n this.sandBox = new SandBox(this);\n }\n }\n get status(): AppState {\n return this.state;\n }\n set status(v: AppState) {\n this.state = v;\n }\n async start(): Promise<void> {\n if (!this.source || [AppState.UNSET, AppState.ERROR].includes(this.status)) {\n this.source = new EntrySource(this.url);\n await this.source.importEntery(this);\n }\n }\n onMount(): void {\n if (this.isPreLoad) return;\n this.state = AppState.LOADED;\n this.mount();\n }\n onError(): void {\n this.state = AppState.ERROR;\n }\n mount<T>(\n container?: HTMLElement | ShadowRoot,\n callback?: (instance: MicroInstanceModel, exportInstance: T) => void,\n ): void {\n this.isPreLoad = false;\n this.container = container ?? this.container!;\n this.state = AppState.MOUNTING;\n if (this.container instanceof HTMLElement) {\n this.container!.setAttribute(CSS_ATTRIBUTE_KEY, this.name);\n }\n this.container.innerHTML = '';\n const instanceWrap = document.createElement('div');\n const wrapId = `${this.name}-wrapper`;\n instanceWrap.setAttribute('id', wrapId);\n if (this.source?.styles.size) {\n excuteAppStyles(this, this.container);\n }\n this.container.appendChild(instanceWrap);\n this.sandBox?.activeated();\n execAppScripts(this).finally(() => {\n this.state = AppState.MOUNTED;\n const scriptInfo = this.source?.getScript(this.url);\n if (typeof scriptInfo?.exportInstance?.render === 'function') {\n scriptInfo.exportInstance.render(instanceWrap, this.data);\n }\n callback?.(this, scriptInfo?.exportInstance);\n });\n }\n activated<T>(\n container: HTMLElement | ShadowRoot,\n callback?: (instance: BaseModel, exportInstance?: T) => void,\n ): void {\n this.isPreLoad = false;\n this.state = AppState.ACTIVATED;\n if (this.container && container) {\n if (container instanceof Element) container!.setAttribute(CSS_ATTRIBUTE_KEY, this.name);\n const fragment = document.createDocumentFragment();\n Array.from(this.container.childNodes).forEach((node: Node | Element) => {\n fragment.appendChild(node);\n });\n container.appendChild(fragment);\n this.container = container;\n this.sandBox?.activeated();\n const scriptInfo = this.source?.getScript(this.url);\n callback?.(this, scriptInfo?.exportInstance);\n }\n }\n deactivated(): void {\n this.state = AppState.DEACTIVATED;\n this.sandBox?.deactivated();\n }\n unmount(needDestroy?: boolean): void {\n this.state = AppState.UNMOUNT;\n this.sandBox?.deactivated();\n needDestroy && appCache.deleteApp(this.url);\n this.container!.innerHTML = '';\n this.container = undefined;\n }\n registerRunningApp() {\n setCurrentRunningApp(this);\n Promise.resolve().then(() => setCurrentRunningApp(null));\n }\n}\n","import { MicroAppModel } from '../mode/app';\nimport { appCache } from '../cache/app-cache';\nimport { BaseModel, IAppModleProps, IBaseModelProps, IJsModelProps } from '../typings';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { AppState } from '../common';\n\nexport async function load(props: IBaseModelProps): Promise<BaseModel> {\n if (props.mode === 'app') return await loadApp(props);\n if (props.mode === 'js') return await loadInstance(props);\n return await loadApp(props);\n}\n// 加载app\nexport async function loadApp(props: IAppModleProps): Promise<MicroAppModel> {\n let instance = appCache.getApp(props.id);\n if (!instance) {\n instance = new MicroAppModel(props);\n appCache.setApp(instance);\n }\n await instance.start();\n return instance as MicroAppModel;\n}\n// 加载instance\nexport function loadInstance(props: IJsModelProps): Promise<MicroInstanceModel> {\n return new Promise((resolve) => {\n let instance = appCache.getApp(props.id);\n if (!instance) {\n instance = new MicroInstanceModel(props);\n appCache.setApp(instance);\n instance.start().then(() => resolve(instance as MicroInstanceModel));\n } else if ([AppState.UNSET, AppState.MOUNTING].includes(instance.status)) {\n const timer = setInterval(() => {\n if ([AppState.ERROR, AppState.MOUNTED].includes(instance!.status)) {\n resolve(instance as MicroInstanceModel);\n clearInterval(timer);\n }\n }, 300);\n } else {\n resolve(instance as MicroInstanceModel);\n }\n });\n}\n","import { resetDocumentPrototypeMethods } from '../context/document';\nimport { resetBodyAndHeaderMethods } from '../context/element';\nimport { AppState } from '../common';\nimport { appCache } from '../cache/app-cache';\n\nexport function unmount(appKey: string) {\n const app = appCache.getApp(appKey);\n if (app?.status !== AppState.UNMOUNT) {\n app?.unmount();\n }\n if (!appCache.hasActiveApp) {\n resetBodyAndHeaderMethods();\n resetDocumentPrototypeMethods();\n }\n}\n","import { nextTask } from '../utils/common';\nimport { appCache } from '../cache/app-cache';\nimport { BaseModel } from '../typings';\nimport { AppState } from '../common';\n\nexport function activated<T>(\n appKey: string,\n container: HTMLElement | ShadowRoot,\n callback?: <M extends BaseModel>(instance: M, exportInstance?: T) => void,\n) {\n const app = appCache.getApp(appKey);\n if (app?.status === AppState.DEACTIVATED && app.keepAlive) {\n nextTask(() => app?.activated(container, callback));\n } else {\n nextTask(() => app?.mount(container, callback));\n }\n}\n","import { resetDocumentPrototypeMethods } from '../context/document';\nimport { resetBodyAndHeaderMethods } from '../context/element';\nimport { AppState } from '../common';\nimport { appCache } from '../cache/app-cache';\n\nexport function deactivated(appKey: string) {\n const app = appCache.getApp(appKey);\n if (app && [AppState.ACTIVATED, AppState.MOUNTED].includes(app.status)) {\n app.keepAlive ? app.deactivated() : app.unmount();\n }\n if (!appCache.hasActiveApp) {\n resetBodyAndHeaderMethods();\n resetDocumentPrototypeMethods();\n }\n}\n","import { AppState } from '../common';\nimport { IAppModleProps, IJsModelProps } from '../typings';\nimport { appCache } from '../cache/app-cache';\nimport { beforeLoad } from '../lifecircle/before-load';\nimport { load } from '../lifecircle/load';\nimport { unmount } from '../lifecircle/unmount';\n// import { mount } from '../lifecircle/mount';\nimport { activated } from '../lifecircle/activated';\nimport { deactivated } from '../lifecircle/deactivated';\n// bk-weweb支持的属性配置\nexport enum ObserveAttrs {\n URL = 'url',\n showSourceCode = 'showSourceCode',\n scopeLocation = 'scopeLocation',\n setShodowDom = 'setShodowDom',\n mode = 'mode',\n data = 'data',\n id = 'id',\n scopeJs = 'scopeJs',\n scopeCss = 'scopeCss',\n keepAlive = 'keepAlive'\n}\nexport default class BkIframeElement extends HTMLElement {\n static get observedAttributes(): string[] {\n return [ObserveAttrs.URL];\n }\n private connected = false;\n private appUrl = '';\n // 考虑到js模式下 需要js bundle的复用性 需用户设置id属性 如果单实例下则可以不用配置\n get appKey(): string | null {\n return this.getAttribute(ObserveAttrs.id) || this.getAttribute(ObserveAttrs.URL);\n }\n get appData(): Record<string, unknown> {\n if (this.hasAttribute(ObserveAttrs.data)) {\n try {\n return JSON.parse(this.getAttribute(ObserveAttrs.data)!);\n } catch {}\n }\n return {};\n }\n get appProps(): IAppModleProps | IJsModelProps {\n if (this.getAttribute('mode') === 'js') {\n return {\n url: this.getAttribute(ObserveAttrs.URL)!,\n mode: 'js',\n id: this.appKey!,\n data: this.appData,\n container: this.shadowRoot ?? this,\n showSourceCode: this.getBooleanAttr(ObserveAttrs.showSourceCode),\n scopeCss: this.getBooleanAttr(ObserveAttrs.scopeCss) && !this.getBooleanAttr(ObserveAttrs.setShodowDom),\n scopeJs: this.getBooleanAttr(ObserveAttrs.scopeJs),\n keepAlive: this.getBooleanAttr(ObserveAttrs.keepAlive),\n };\n }\n return {\n url: this.getAttribute(ObserveAttrs.URL)!,\n mode: 'app',\n id: this.appKey!,\n data: this.appData,\n container: this.shadowRoot ?? this,\n scopeLocation: this.getBooleanAttr(ObserveAttrs.scopeLocation),\n showSourceCode: this.getBooleanAttr(ObserveAttrs.showSourceCode),\n scopeCss: !this.getBooleanAttr(ObserveAttrs.setShodowDom),\n scopeJs: !this.getBooleanAttr(ObserveAttrs.scopeJs),\n keepAlive: this.getBooleanAttr(ObserveAttrs.keepAlive),\n };\n }\n async connectedCallback(): Promise<void> {\n beforeLoad();\n if (this.getBooleanAttr(ObserveAttrs.setShodowDom) && !this.shadowRoot) {\n this.attachShadow({ mode: 'open', delegatesFocus: true });\n }\n await load(this.appProps);\n activated(this.appKey!, this.shadowRoot ?? this);\n this.connected = true;\n }\n disconnectedCallback(): void {\n this.connected = false;\n if (this.appProps.keepAlive) {\n deactivated(this.appKey!);\n } else unmount(this.appKey!);\n }\n attributeChangedCallback(attr: ObserveAttrs, _oldVal: string, newVal: string): void {\n if (attr !== ObserveAttrs.URL || (this as any)[attr] === newVal) return;\n this.appUrl = newVal;\n (this.connected || appCache.getApp(this.appKey!)) && this.handleAttributeChanged();\n }\n private async handleAttributeChanged(): Promise<void> {\n if (!this.appKey) return;\n if (this.getBooleanAttr(ObserveAttrs.setShodowDom)) {\n this.attachShadow({ mode: 'open' });\n }\n const app = appCache.getApp(this.appKey!);\n if (app && app.url === this.appUrl && (app.isPreLoad || app.status === AppState.UNMOUNT)) {\n activated(this.appKey!, this.shadowRoot ?? this);\n return;\n }\n await load(this.appProps);\n }\n private getBooleanAttr(name: string): boolean | undefined {\n return this.hasAttribute(name) ? this.getAttribute(name) !== 'false' : undefined;\n }\n}\n","import { appCache } from '../cache/app-cache';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\n\nexport type SourceFuncType = () => Promise<string[]>;\n\nexport type SourceType = string[] | SourceFuncType;\n\n// 收集和辩证资源\nexport async function collectSource(soruceList: SourceType) {\n let source: string[] = [];\n if (typeof soruceList === 'function') {\n source = await soruceList();\n } else {\n source = soruceList || [];\n }\n if (!source.length) return {};\n const collectScript: Map<string, Script> = new Map();\n const collectStyle: Map<string, Style> = new Map();\n source.forEach((str) => {\n try {\n const url = new URL(str);\n if (url.pathname.match(/\\.js$/)) {\n const script = appCache.getCacheScript(str);\n collectScript.set(str, new Script({\n code: script?.code || '',\n async: false,\n defer: false,\n url: str,\n isModule: false,\n initial: true,\n fromHtml: false,\n }));\n } else if (url.pathname.match(/\\.css$/)) {\n const style = appCache.getCacheStyle(str);\n collectStyle.set(str, new Style({\n code: style?.code || '',\n prefetch: false,\n preload: false,\n url: str,\n fromHtml: true,\n initial: true,\n }));\n }\n } catch {\n console.error(`【bk-weweb】: ${str} is invalid URL`);\n }\n });\n return {\n collectScript,\n collectStyle,\n };\n}\n\n// 加载全局静态资源\nexport async function LoadGlobalSource(soruceList: SourceType) {\n const { collectScript, collectStyle } = await collectSource(soruceList);\n const promiseList: Promise<string>[] = [];\n collectScript && Array.from(collectScript.entries()).forEach((item) => {\n promiseList.push(item[1].getCode());\n appCache.setBaseAppScript(...item);\n });\n collectStyle && Array.from(collectStyle.entries()).forEach((item) => {\n promiseList.push(item[1].getCode());\n appCache.setBaseAppStyle(...item);\n });\n await Promise.all(promiseList).catch((e) => {\n throw e;\n });\n}\n","import './context/memory';\nimport { FetchSourceType, IStartOption } from './typings';\nimport BkIframeElement from './component/web-compnent';\n\nexport * from './lifecircle/before-load';\nexport * from './lifecircle/load';\nexport * from './lifecircle/mount';\nexport * from './lifecircle/unload';\nexport * from './lifecircle/unmount';\nexport * from './lifecircle/activated';\nexport * from './lifecircle/deactivated';\nexport * from './preload/preload';\n\nconst CUSTOM_ELEMENT_TAG = 'bk-weweb';\nexport class IframeApp {\n fetchSource?: FetchSourceType;\n webcomponentTag = CUSTOM_ELEMENT_TAG;\n constructor() {\n if (!window.customElements.get(CUSTOM_ELEMENT_TAG)) {\n window.customElements.define(CUSTOM_ELEMENT_TAG, BkIframeElement);\n }\n }\n // todo set some global start props\n start(option?: IStartOption) {\n if (typeof option?.fetchSource === 'function') {\n this.fetchSource = option.fetchSource;\n }\n this.webcomponentTag = option?.webcomponentTag || CUSTOM_ELEMENT_TAG;\n this.setWebComponentTag();\n }\n // 设置自定义dom标签名\n setWebComponentTag() {\n if (!window.customElements.get(this.webcomponentTag)) {\n window.customElements.define(this.webcomponentTag, BkIframeElement);\n }\n }\n}\nconst iframeApp = new IframeApp();\nexport default iframeApp;\n","import weWeb from '..';\n\nexport function fetchSource(url: string, options = {}): Promise<string> {\n if (weWeb.fetchSource) {\n return weWeb.fetchSource(url, options);\n }\n return window.fetch(url, options).then(res => res.text());\n}\n","/* eslint-disable no-restricted-syntax */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-param-reassign */\n/* eslint-disable max-len */\nimport { MicroAppModel } from '../mode/app';\nimport { BaseModel, IScriptOption } from '../typings';\nimport { isIE11, createElement } from '../utils/common';\nimport { fetchSource } from '../utils/fetch';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { appCache } from '../cache/app-cache';\nimport { setMarkElement } from '../utils';\n\nlet firstGlobalProp: string | undefined;\nlet secondGlobalProp: string | undefined;\nlet lastGlobalProp: string | undefined;\n\n// Script脚本实例\nexport class Script {\n code = '';\n async = false;\n defer = false;\n isModule = false;\n url: string | undefined;\n exportInstance?: any;\n scoped: boolean;\n fromHtml: boolean;\n initial: boolean;\n\n constructor({ code, async, defer, isModule, url, fromHtml, initial }: IScriptOption) {\n this.code = code;\n this.async = async;\n this.defer = defer;\n this.isModule = isModule;\n this.url = url;\n this.scoped = false;\n this.fromHtml = fromHtml ?? false;\n this.initial = initial ?? false;\n }\n async getCode(app?: BaseModel): Promise<string> {\n if (this.code.length || !this.url) {\n return this.code;\n }\n let code = '';\n if (app?.source?.getScript(this.url)) {\n code = app.source.getScript(this.url)?.code || '';\n }\n if (!code && appCache.getCacheScript(this.url)) {\n code = appCache.getCacheScript(this.url)?.code || '';\n }\n if (!code) {\n code = await fetchSource(this.url).catch((e) => {\n console.error(`fetch script ${this.url} error`, e);\n return '';\n });\n }\n this.code = code;\n return code;\n }\n async excuteCode(app: BaseModel, needRelaceScriptElement = false): Promise<HTMLScriptElement | Comment | undefined> {\n try {\n if (!this.code) await this.getCode(app);\n if (app instanceof MicroInstanceModel) {\n noteGlobalProps(app.sandBox?.proxyWindow || window);\n }\n let scopedCode = this.code;\n scopedCode = this.transformCode(app);\n if (app.showSourceCode || this.isModule) {\n const scriptElement = createElement('script');\n app.registerRunningApp();\n this.executeSourceScript(scriptElement, scopedCode);\n if (needRelaceScriptElement) return scriptElement;\n const needKeepAlive = !!app.keepAlive && !(app.container instanceof ShadowRoot);\n const container = needKeepAlive ? document.head : app.container;\n setMarkElement(scriptElement, app, needKeepAlive);\n container!.appendChild(scriptElement);\n } else {\n this.executeMemoryScript(app, scopedCode);\n if (needRelaceScriptElement) return document.createComment('【bk-weweb】dynamic script');\n }\n if (app instanceof MicroInstanceModel) {\n const exportProp: any = getGlobalProp(app.sandBox?.proxyWindow || window);\n exportProp && (this.exportInstance = (app.sandBox?.proxyWindow || window)[exportProp]);\n }\n } catch (e) {\n console.error('execute script code error', e);\n }\n return;\n }\n transformCode(app: BaseModel): string {\n if (app.sandBox) {\n if (app.showSourceCode || this.isModule) {\n return `;(function(window, self){\n with(window){\n ;${this.code}\\n\n }\n }).call(window.${app.sandBox.windowSymbolKey},\n window.${app.sandBox.windowSymbolKey});`;\n }\n return `\n with(window) {\n try {\n ${this.code}\n }\n catch(e) {\n console.error(e)\n }\n }\n `;\n }\n return this.code;\n }\n executeSourceScript(\n scriptElement: HTMLScriptElement,\n scopedCode: string,\n ): void {\n if (this.isModule) {\n const blob = new Blob([scopedCode], { type: 'text/javascript' });\n scriptElement.src = URL.createObjectURL(blob);\n scriptElement.setAttribute('type', 'module');\n } else {\n scriptElement.textContent = scopedCode;\n }\n this.url && scriptElement.setAttribute('origin-src', this.url);\n }\n executeMemoryScript(app: BaseModel, scopedCode: string) {\n try {\n const isScopedLocation = app instanceof MicroAppModel && app.scopeLocation;\n app.registerRunningApp();\n // eslint-disable-next-line no-new-func\n new Function('window', 'location', 'history', scopedCode)(\n app.sandBox!.proxyWindow,\n isScopedLocation ? app.iframe?.contentWindow?.location : window.location,\n isScopedLocation ? app.iframe?.contentWindow?.history : window.history,\n );\n } catch (e) {\n console.error(e);\n }\n }\n}\n// 全局属性是否跳过标记\nexport function shouldSkipProperty(global: Window, p: any) {\n return (\n !global.hasOwnProperty(p)\n || (!isNaN(p) && p < global.length)\n || (isIE11 && global[p] && typeof window !== 'undefined' && global[p].parent === window)\n );\n}\n// 获取instance js source code 执行后 绑定的export 实例\nexport function getGlobalProp(global: Window, useFirstGlobalProp?: boolean) {\n let cnt = 0;\n let foundLastProp;\n let result;\n for (const p in global) {\n // do not check frames cause it could be removed during import\n if (shouldSkipProperty(global, p)) continue;\n if ((cnt === 0 && p !== firstGlobalProp) || (cnt === 1 && p !== secondGlobalProp)) return p;\n if (foundLastProp) {\n lastGlobalProp = p;\n result = (useFirstGlobalProp && result) || p;\n } else {\n foundLastProp = p === lastGlobalProp;\n }\n cnt += 1;\n }\n return result;\n}\n// 标记全局属性\nexport function noteGlobalProps(global: Window) {\n secondGlobalProp = undefined;\n firstGlobalProp = secondGlobalProp;\n for (const p in global) {\n if (shouldSkipProperty(global, p)) continue;\n if (!firstGlobalProp) firstGlobalProp = p;\n else if (!secondGlobalProp) secondGlobalProp = p;\n lastGlobalProp = p;\n }\n return lastGlobalProp;\n}\n// app初始化dom 脚本执行\nexport async function execAppScripts(app: BaseModel) {\n const appInitialScriptList = Array.from(app.source!.scripts.values()).filter(script => script.initial);\n // 初始化脚本最先执行\n if (appInitialScriptList.length) {\n await Promise.all(appInitialScriptList.map(script => script.excuteCode(app)));\n }\n const appScriptList = Array.from(app.source!.scripts.values()).filter(script => script.fromHtml && !script.initial);\n const commomList = appScriptList.filter(script => ((!script.async && !script.defer) || script.isModule));\n // 保证同步脚本 和 module类型 最先执行\n await Promise.all(commomList.map(script => script.excuteCode(app)));\n // 最后执行 defer 和 async 脚本\n const deferScriptList: Promise<HTMLScriptElement | Comment | undefined>[] = [];\n const asyncScriptList: Promise<HTMLScriptElement | Comment | undefined>[] = [];\n // async defer 脚本执行\n appScriptList.forEach((script) => {\n if ((script.defer || script.async)) {\n if (!script.code && script.defer) {\n deferScriptList.push(script.excuteCode(app));\n } else asyncScriptList.push(script.excuteCode(app));\n }\n });\n await Promise.all([...asyncScriptList, ...deferScriptList])\n .catch((e) => {\n console.error(e);\n });\n}\n","import { AppState } from '../common';\nimport { execAppScripts } from '../entry/script';\nimport { EntrySource } from '../entry/entry';\nimport { AppMode, BaseModel, CSS_ATTRIBUTE_KEY, IAppModleProps } from '../typings';\nimport { random } from '../utils/common';\nimport SandBox from '../context/sandbox';\nimport { appCache } from '../cache/app-cache';\nimport { setCurrentRunningApp } from '../context/memory';\nimport { SourceType } from '../utils/load-source';\n\nexport class MicroAppModel implements BaseModel {\n private state: AppState = AppState.UNSET;\n public isPreLoad = false;\n mode: AppMode = 'app';\n name: string;\n url: string;\n container?: HTMLElement | ShadowRoot;\n showSourceCode: boolean;\n scopeCss: boolean;\n scopeJs: boolean;\n source?: EntrySource;\n sandBox?: SandBox;\n scopeLocation: boolean;\n keepAlive: boolean;\n initSource: SourceType;\n iframe: HTMLIFrameElement | null = null;\n public data: Record<string, unknown>;\n constructor(props: IAppModleProps) {\n this.name = props.id !== props.url ? props.id! : random(5);\n this.mode = props.mode ?? 'app';\n this.container = props.container ?? undefined;\n this.showSourceCode = props.showSourceCode ?? false;\n this.url = props.url;\n this.data = props.data || {};\n this.scopeJs = props.scopeJs ?? true;\n this.scopeCss = props.scopeCss ?? true;\n this.scopeLocation = props.scopeLocation ?? false;\n this.isPreLoad = props.isPreLoad ?? false;\n this.keepAlive = props.keepAlive ?? false;\n this.initSource = props.initSource ?? [];\n if (this.scopeJs) {\n this.sandBox = new SandBox(this);\n }\n if (this.container instanceof HTMLElement) {\n this.container.setAttribute(CSS_ATTRIBUTE_KEY, this.name);\n }\n }\n get appCacheKey(): string {\n return this.url;\n }\n public get status() {\n return this.state;\n }\n public set status(v: AppState) {\n this.state = v;\n }\n async start() {\n if (!this.source || [AppState.UNSET, AppState.ERROR].includes(this.status)) {\n this.state = AppState.LOADING;\n if (this.scopeLocation) {\n const iframe = await this.createIframe();\n this.iframe = iframe;\n }\n this.source = new EntrySource(this.url);\n await this.source.importEntery(this);\n }\n }\n onMount(): void {\n if (this.isPreLoad) return;\n this.state = AppState.LOADED;\n this.mount();\n }\n onError(): void {\n this.state = AppState.ERROR;\n }\n mount(\n container?: HTMLElement | ShadowRoot,\n callback?: (app: BaseModel) => void,\n ): void {\n this.isPreLoad = false;\n this.container = container ?? this.container!;\n this.state = AppState.MOUNTING;\n if (this.container) {\n debugger;\n if (this.container instanceof Element) this.container!.setAttribute(CSS_ATTRIBUTE_KEY, this.name);\n const clonedNode = this.source!.html!.cloneNode(true);\n const fragment = document.createDocumentFragment();\n Array.from(clonedNode.childNodes).forEach((node: Node | Element) => {\n fragment.appendChild(node);\n });\n this.container!.innerHTML = '';\n this.container!.appendChild(fragment);\n this.sandBox?.activeated(this.data);\n execAppScripts(this).finally(() => {\n this.state = AppState.MOUNTED;\n callback?.(this);\n });\n }\n }\n activated(\n container: HTMLElement | ShadowRoot,\n callback?: (app: BaseModel) => void,\n ) {\n this.isPreLoad = false;\n this.state = AppState.ACTIVATED;\n if (container && this.container) {\n if (container instanceof Element) container!.setAttribute(CSS_ATTRIBUTE_KEY, this.name);\n const fragment = document.createDocumentFragment();\n Array.from(this.container.childNodes).forEach((node: Node | Element) => {\n fragment.appendChild(node);\n });\n container!.innerHTML = '';\n container!.appendChild(fragment);\n this.container = container;\n this.sandBox?.activeated(this.data);\n callback?.(this);\n }\n }\n deactivated() {\n this.state = AppState.DEACTIVATED;\n this.sandBox?.deactivated();\n }\n unmount(needDestroy = false): void {\n this.state = AppState.UNMOUNT;\n this.sandBox?.deactivated();\n needDestroy && appCache.deleteApp(this.url);\n this.container!.innerHTML = '';\n this.container = undefined;\n }\n createIframe(): Promise<HTMLIFrameElement> {\n return new Promise((resolve) => {\n const iframe = document.createElement('iframe');\n const url = new URL(this.url);\n iframe.setAttribute('src', `about:blank${url.pathname || '/'}${url.search}${url.hash}`);\n iframe.style.cssText = 'position: fixed; top: -9999px; width: 100%; height: 1px;';\n document.body.appendChild(iframe);\n setTimeout(() => resolve(iframe), 100);\n });\n }\n registerRunningApp() {\n setCurrentRunningApp(this);\n Promise.resolve().then(() => setCurrentRunningApp(null));\n }\n}\nexport const createApp = (props: IAppModleProps) => {\n appCache.deleteApp(props.url);\n const instance = new MicroAppModel(props);\n appCache.setApp(instance);\n};\n","import { BaseModel, IScriptOption } from '../typings';\nimport { MicroAppModel } from '../mode/app';\nimport { fillUpPath, randomUrl, createElement } from '../utils/common';\nimport { fetchSource } from '../utils/fetch';\nimport { excuteAppStyles, Style } from './style';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { Script } from './script';\nimport { isSupportModuleScript } from '../context/memory';\nimport { appCache } from '../cache/app-cache';\nimport { collectSource } from '../utils/load-source';\n\nexport class EntrySource {\n scripts: Map<string, Script>;\n styles: Map<string, Style>;\n html: HTMLElement | null = null;\n rawHtml?: string;\n constructor(public url: string) {\n this.scripts = new Map();\n this.styles = new Map();\n }\n async importEntery(app: BaseModel): Promise<void> {\n let importEntry: Promise<void> | undefined;\n if (app.initSource?.length) {\n // 初始化配置的公共source资源\n const { collectScript, collectStyle } = await collectSource(app.initSource);\n if (collectScript) {\n this.scripts = collectScript;\n }\n if (collectStyle) {\n this.styles = collectStyle;\n }\n }\n if (app instanceof MicroAppModel) importEntry = this.importHtmlEntry(app);\n else if (app instanceof MicroInstanceModel) importEntry = this.importInstanceEntry();\n importEntry && await importEntry;\n }\n async importHtmlEntry(app: MicroAppModel): Promise<void> {\n let htmlStr = appCache.getCacheHtml(this.url);\n if (!htmlStr) {\n htmlStr = await fetchSource(this.url, { cache: 'no-cache' });\n if (!htmlStr) {\n console.error('load app entry error, pleace check');\n return Promise.reject();\n }\n }\n this.rawHtml = htmlStr;\n const wrapElement = createElement('div');\n wrapElement.innerHTML = htmlStr.replace(/<\\/?head>/gim, '').replace(/<\\/?body>/i, '');\n this.collectScriptAndStyle(wrapElement, app);\n await excuteAppStyles(app, wrapElement);\n this.html = wrapElement;\n }\n async importInstanceEntry(): Promise<void> {\n let jsStr = appCache.getCacheScript(this.url)?.code;\n if (!jsStr) {\n jsStr = await fetchSource(this.url, { cache: 'no-cache' });\n }\n if (!jsStr) {\n console.error('load app entry error, pleace check');\n return Promise.reject();\n }\n this.scripts.set(this.url, new Script({\n code: jsStr,\n async: false,\n defer: false,\n url: this.url,\n isModule: false,\n fromHtml: true,\n }));\n }\n collectScriptAndStyle(parent: HTMLElement, app: MicroAppModel): void {\n const children = Array.from(parent.children);\n children.length\n && children.forEach((child) => {\n this.collectScriptAndStyle(child as HTMLElement, app);\n });\n for (const dom of children) {\n if (dom instanceof HTMLLinkElement) {\n this.collectLink(dom, parent);\n } else if (dom instanceof HTMLStyleElement) {\n if (dom.hasAttribute('exclude')) {\n } else if (!dom.hasAttribute('ignore')) {\n this.styles.set(randomUrl(), new Style({\n code: dom.textContent || '',\n url: '',\n fromHtml: true,\n }));\n dom.remove();\n }\n } else if (dom instanceof HTMLScriptElement) {\n this.collectScript(dom, parent);\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', fillUpPath(dom.getAttribute('src')!, this.url));\n }\n }\n }\n collectLink(\n link: HTMLLinkElement,\n parent: Node,\n needReplaceELement = false,\n ): {replace: Element | Comment, style?: Style} {\n if (link.hasAttribute('exclude')) {\n return { replace: document.createComment('【bk-weweb】style with exclude attribute is ignored') };\n }\n if (link.hasAttribute('ignore')) {\n return { replace: link };\n }\n const rel = link.getAttribute('rel');\n let href = link.getAttribute('href');\n let replaceElement;\n if (rel === 'stylesheet' && href) {\n href = fillUpPath(href, this.url);\n replaceElement = document.createComment(`【bk-weweb】style with href=${href}`);\n let styleInstance = this.getStyle(href);\n if (!styleInstance) {\n styleInstance = new Style({\n code: '',\n url: href,\n prefetch: !!link.getAttribute('prefetch'),\n preload: !!link.getAttribute('preload'),\n fromHtml: !needReplaceELement,\n });\n this.styles.set(href, styleInstance);\n }\n !needReplaceELement && parent.replaceChild(replaceElement, link);\n return { replace: replaceElement, style: styleInstance };\n } if (rel && ['prefetch', 'preload', 'prerender', 'icon', 'apple-touch-icon'].includes(rel)) {\n // preload prefetch icon ....\n replaceElement = document.createComment(`【bk-weweb】style with rel=${rel}${href ? ` & href=${href}` : ''}`);\n !needReplaceELement && parent.removeChild(link);\n return { replace: replaceElement };\n } if (href) {\n // dns-prefetch preconnect modulepreload search ....\n link.setAttribute('href', fillUpPath(href, this.url));\n }\n return { replace: link };\n }\n collectScript(\n script: HTMLScriptElement,\n parent: Node,\n needReplaceELement = false,\n ): {replace: Element | Comment, script?: Script} | undefined {\n if (script.hasAttribute('ignore')\n || (script.hasAttribute('type') && !['text/javascript', 'text/ecmascript', 'application/javascript', 'application/ecmascript', 'module'].includes(script.type))\n || (!isSupportModuleScript && script.type === 'module')) {\n return;\n }\n let replaceElement = null;\n if (script.hasAttribute('exclude')) {\n replaceElement = document.createComment('【bk-weweb】script element with exclude attribute is removed');\n !needReplaceELement && parent.replaceChild(replaceElement, script);\n return { replace: replaceElement };\n }\n let src: string | null = script.getAttribute('src');\n if (src) {\n src = fillUpPath(src, this.url);\n let scriptInstance = this.getScript(src);\n if (!scriptInstance) {\n scriptInstance = new Script({\n code: '',\n async: script.hasAttribute('async'),\n defer: script.defer || script.type === 'module',\n isModule: script.type === 'module',\n url: src,\n fromHtml: !needReplaceELement,\n });\n this.scripts.set(src, scriptInstance);\n }\n replaceElement = document.createComment(`【bk-weweb】script with src='${src}'`);\n !needReplaceELement && parent.replaceChild(replaceElement, script);\n return { replace: replaceElement, script: scriptInstance };\n }\n if (script.textContent) {\n const nonceStr: string = randomUrl();\n const scriptInstance = new Script({\n code: script.textContent,\n async: false,\n defer: script.type === 'module',\n isModule: script.type === 'module',\n url: nonceStr!,\n fromHtml: !needReplaceELement,\n });\n this.scripts.set(nonceStr, scriptInstance);\n replaceElement = document.createComment('【bk-weweb】script with texcontent');\n !needReplaceELement && parent.replaceChild(replaceElement, script);\n return { replace: replaceElement, script: scriptInstance };\n }\n return { replace: script };\n }\n setScript(url: string, script: IScriptOption) {\n this.scripts.set(url, new Script(script));\n }\n getScript(url: string) {\n return this.scripts.get(url);\n }\n setStyle(url: string, style: Style) {\n this.styles.set(url, style);\n }\n getStyle(url: string) {\n return this.styles.get(url);\n }\n}\n","import { BaseModel } from '../typings';\nimport { EntrySource } from '../entry/entry';\nimport { AppState } from '../common';\nimport { Style } from '../entry/style';\nimport { Script } from '../entry/script';\n\n// 所有应用缓存\nexport class AppCache {\n private cache: Map<string, BaseModel>;\n // todo 主应用共享资源包\n private baseSource: EntrySource;\n constructor() {\n this.cache = new Map();\n this.baseSource = new EntrySource(location.href);\n // this.baseApp = new\n }\n get hasActiveApp() {\n return Array.from(this.cache.values()).some((app: BaseModel) => app.status !== AppState.UNMOUNT);\n }\n setApp(app: BaseModel) {\n this.cache.set(app.appCacheKey, app);\n }\n getApp(name?: string | null): BaseModel | undefined {\n if (!name) return undefined;\n const app = this.cache.get(name);\n if (app) return app;\n return Array.from(this.cache.values()).find((item: BaseModel) => item.name === name);\n }\n getCacheHtml(url: string): string {\n const list = Array.from(this.cache.values());\n const app = list.find(item => item.url === url);\n if (app) return app.source?.rawHtml || '';\n return '';\n }\n getCacheStyle(url: string): Style | undefined {\n let style: Style | undefined = this.baseSource.getStyle(url);\n if (style) return;\n const list = Array.from(this.cache.values());\n list.some((app) => {\n style = app.source?.getStyle(url);\n return !!style;\n });\n return style;\n }\n getCacheScript(url: string): Script | undefined {\n let script: Script | undefined = this.baseSource.getScript(url);\n if (script) return;\n const list = Array.from(this.cache.values());\n list.some((app) => {\n script = app.source?.getScript(url);\n return !!script;\n });\n return script;\n }\n deleteApp(url: string) {\n this.cache.delete(url);\n }\n setBaseAppStyle(url: string, style: Style) {\n this.baseSource.setStyle(url, style);\n }\n setBaseAppScript(url: string, script: Script) {\n this.baseSource.setScript(url, script);\n }\n}\nconst appCache = new AppCache();\n// 注册全局获取缓存app 或者 instance\nwindow.__getAppOrInstance__ = function (id?: string) {\n if (!id) return appCache;\n return appCache.getApp(id);\n};\nexport {\n appCache,\n};\n","import { appCache } from '../cache/app-cache';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\nimport { fillUpPath, createElement } from '../utils/common';\nimport { dispatchLinkOrScriptError, dispatchLinkOrScriptLoad } from '../utils/element-event';\nimport { fetchSource } from '../utils/fetch';\n\nexport function getStyleSource(url: string, style: Style, originLink: HTMLLinkElement): HTMLStyleElement {\n const replaceStyle = createElement('style');\n fetchSource(url)\n .then((data: string) => {\n style.code = data;\n appCache.setBaseAppStyle(url, style);\n replaceStyle.textContent = data;\n dispatchLinkOrScriptLoad(originLink);\n })\n .catch((err) => {\n console.error(err);\n dispatchLinkOrScriptError(originLink);\n });\n return replaceStyle;\n}\nexport function getScriptSource(\n url: string,\n script: Script,\n originScript: HTMLScriptElement,\n): HTMLScriptElement | Comment {\n const replaceElement: Comment | HTMLScriptElement = createElement('script');\n fetchSource(url)\n .then((code: string) => {\n script.code = code;\n try {\n replaceElement.textContent = code;\n if (!url.startsWith('inline-')) {\n originScript.setAttribute('origin-src', url);\n }\n } catch (e) {\n console.error(e, url);\n }\n dispatchLinkOrScriptLoad(originScript);\n })\n .catch((err) => {\n console.error(err);\n dispatchLinkOrScriptError(originScript);\n });\n return replaceElement;\n}\nexport function rewriteNewNode(child: Node): Node {\n if (child instanceof HTMLLinkElement) {\n const rel = child.getAttribute('rel');\n let href = child.getAttribute('href');\n if (rel === 'stylesheet' && href) {\n href = fillUpPath(href, location.href);\n const replaceStyle = createElement('style');\n const styleInstance = new Style({\n code: '',\n url: href,\n fromHtml: false,\n });\n getStyleSource(href, styleInstance, child);\n return replaceStyle;\n }\n }\n if (child instanceof HTMLScriptElement) {\n let src = child.getAttribute('src');\n if (src && child.type !== 'module') {\n src = fillUpPath(src, location.href);\n const script = new Script({\n code: '',\n async: child.hasAttribute('async'),\n defer: child.defer || child.type === 'module',\n isModule: false,\n fromHtml: false,\n });\n appCache.setBaseAppScript(src, script);\n const replaceElement = getScriptSource(src, script, child);\n return replaceElement || child;\n }\n }\n return child;\n}\nexport function baseElementHandle(\n parent: Node,\n newChild: Node,\n passiveChild: Node | null,\n rawMethod: Function,\n baseSource: boolean,\n) {\n if (baseSource) {\n const targetChild = rewriteNewNode(newChild);\n return rawMethod.call(parent, targetChild, passiveChild);\n }\n return rawMethod.call(parent, newChild, passiveChild);\n}\n","import { baseElementHandle } from './base-element';\n\n(function () {\n const rawBodyAppendChild = HTMLBodyElement.prototype.appendChild;\n const rawHeadAppendChild = HTMLHeadElement.prototype.appendChild;\n const rawHeadInsertBefore = HTMLHeadElement.prototype.appendChild;\n HTMLBodyElement.prototype.appendChild = function <T extends Node>(newChild: T): T {\n return baseElementHandle(this, newChild, null, rawBodyAppendChild, true);\n };\n HTMLHeadElement.prototype.appendChild = function <T extends Node>(newChild: T): T {\n return baseElementHandle(this, newChild, null, rawHeadAppendChild, true);\n };\n HTMLHeadElement.prototype.insertBefore = function <T extends Node>(newChild: T, refChild: Node | null): T {\n return baseElementHandle(this, newChild, refChild, rawHeadInsertBefore, true);\n };\n}());\n"],"names":["createElement","document","bodyAppendChild","weWeb"],"mappings":"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"}