@blueking/bk-weweb 0.0.21 → 0.0.23

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":["../src/common/state.ts","../src/context/cache.ts","../src/typings/source.ts","../src/utils/common.ts","../src/context/document.ts","../src/utils/custom.ts","../src/lifecircle/load.ts","../src/lifecircle/unmount.ts","../src/lifecircle/deactivated.ts","../src/utils/load-source.ts","../src/index.ts","../src/utils/fetch.ts","../src/entry/style.ts","../src/mode/instance.ts","../src/entry/script.ts","../src/utils/element.ts","../src/context/element.ts","../src/lifecircle/before-load.ts","../src/lifecircle/activated.ts","../src/component/web-compnent.ts","../src/typings/model.ts","../src/typings/sandbox.ts","../src/context/event.ts","../src/context/function.ts","../src/context/window.ts","../src/context/sandbox.ts","../src/mode/app.ts","../src/entry/entry.ts","../src/cache/app-cache.ts","../src/base-app/element.ts","../src/base-app/collect-source.ts"],"sourcesContent":["/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n// app status\nexport enum AppState {\n ACTIVATED = 'ACTIVATED',\n DEACTIVATED = 'DEACTIVATED',\n ERROR = 'ERROR',\n LOADED = 'LOADED',\n LOADING = 'LOADING',\n MOUNTED = 'MOUNTED',\n MOUNTING = 'MOUNTING',\n UNMOUNT = 'UNMOUNT',\n UNSET = 'UNSET',\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { 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\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;\nexport const windowNativeFuncMap = new Map<PropertyKey, true>();\n/**\n * 收集原生window方法\n */\nconst collectNativeWindowFunc = () => {\n Object.getOwnPropertyNames(window).forEach((key: any) => {\n if (\n !windowNativeFuncMap.has(key) &&\n key.match(/^[A-Z]/) &&\n typeof window[key] === 'function' &&\n window[key].toString().includes('[native code]')\n ) {\n windowNativeFuncMap.set(key, true);\n }\n });\n};\ncollectNativeWindowFunc();\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/**\n * 接口定义:样式选项\n */\nexport interface IStyleOption {\n code: string; // 样式代码\n fromHtml: boolean; // 是否来自 HTML\n initial?: boolean; // 是否初始样式\n prefetch?: boolean; // 是否预取样式\n preload?: boolean; // 是否预加载样式\n url?: string; // 样式文件的 URL\n}\n\nexport interface IScriptOption {\n async: boolean; // 是否为异步脚本\n code: string; // 脚本代码\n defer: boolean; // 是否为延迟脚本\n fromHtml: boolean; // 是否从 HTML 中提取\n initial?: boolean; // 是否为初始脚本\n isModule: boolean; // 是否为模块类型脚本\n url?: string; // 脚本的 URL 地址\n}\n\nexport const CSS_ATTRIBUTE_KEY = 'id';\n\nexport enum CssRuleEnum {\n MEDIA_RULE = 4,\n STYLE_RULE = 1,\n SUPPORTS_RULE = 12,\n}\ntype ValueOf<T> = T[keyof T];\nexport type DocumentEventListener = (this: Document, ev: ValueOf<DocumentEventMap>) => any;\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/**\n * 使用 nextTask 函数将回调函数添加到下一个任务队列中执行。\n * @param cb 回调函数\n * @returns Promise 对象,用于异步处理回调函数\n */\nexport const nextTask: (cb: () => void) => any = cb => Promise.resolve().then(cb);\n\n/**\n * 使用 nextTick 函数将回调函数添加到全局任务队列中执行。\n * 如果已经有任务在等待执行,则不会重复添加任务。\n * @param 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\n/**\n * 给 URL 添加协议头\n * @param url 要添加协议头的 URL\n * @returns 添加了协议头后的 URL\n */\nexport function addUrlProtocol(url: string): string {\n if (url.startsWith('//')) return `${location.protocol}${url}`;\n if (!url.startsWith('http')) return `${location.protocol}//${url}`;\n return url;\n}\n\n/**\n *\n * @param path 路径\n * @param baseURI 基础路径\n * @returns\n */\nexport function fillUpPath(path: string, baseURI: string): string {\n if (!path || /^((((ht|f)tps?)|file):)?\\/\\//.test(path) || /^(data|blob):/.test(path)) return path;\n const { origin, pathname } = new URL(addUrlProtocol(baseURI));\n return new URL(path, `${origin}${pathname}`.replace(/\\.(\\w+)$/, '/')).toString();\n}\n\n/**\n * 生成随机url\n */\nexport function randomUrl(): string {\n return `inline-${random(16)}`;\n}\n\n/**\n * requestIdleCallback polyfill\n */\nexport const requestIdleCallback =\n window.requestIdleCallback ||\n function (cb: CallableFunction) {\n const start = Date.now();\n return setTimeout(() => {\n cb({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, 50 - (Date.now() - start));\n },\n });\n }, 1);\n };\n\n/**\n * cancelIdleCallback polyfill\n */\nexport const cancelIdleCallback =\n window.cancelIdleCallback ||\n function (id: number) {\n clearTimeout(id);\n };\n\n/**\n *\n * @param n 生成字符串的长度\n * @param str 生成字符串的范围\n * @returns string\n */\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\n/**\n *\n * @param url string\n * @returns boolean\n * @description 判断是否是jsonp请求\n */\nexport const isJsonpUrl = (url: null | string) => {\n if (!url) return false;\n if (url.match(/\\.js$/)) return false;\n const { pathname } = new URL(addUrlProtocol(url));\n return !pathname.match(/\\.js$/);\n};\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { getCurrentRunningApp } from './cache';\n\nconst { document } = window;\nconst {\n createElement,\n getElementById,\n getElementsByClassName,\n getElementsByName,\n getElementsByTagName,\n querySelector,\n querySelectorAll,\n} = Document.prototype;\nconst SPECIAL_ELEMENT_TAG = ['body', 'html', 'head'];\nlet hasRewrite = false;\nexport function rewriteDocumentPrototypeMethods() {\n if (hasRewrite) return;\n hasRewrite = true;\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 = 'xxx' iframe.src = 'xxx' 均不能在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 /**\n * 查询选择器的新方法\n * @param selectors 选择器字符串\n * @returns 匹配的元素或 null\n */\n function querySelectorNew(this: Document, selectors: string): any {\n const app = getCurrentRunningApp();\n\n // 如果选择器是特殊元素标签\n if (SPECIAL_ELEMENT_TAG.includes(selectors)) {\n // 如果当前应用程序容器是 ShadowRoot 类型\n if (app?.container instanceof ShadowRoot) {\n return app?.container;\n }\n // 否则调用原始的 querySelector 方法\n return querySelector.call(this, selectors);\n }\n\n // 如果没有当前应用程序或选择器为空或文档不是当前文档\n if (!app || !selectors || document !== this) {\n // 调用原始的 querySelector 方法\n return querySelector.call(this, selectors);\n }\n\n // 返回当前应用程序容器中匹配选择器的元素,如果没有匹配的元素则返回 null\n return app?.container?.querySelector(selectors) ?? null;\n }\n\n /**\n * 重写了 Document 类的 querySelectorAll 方法\n * @param selectors - 要查询的选择器\n * @returns 匹配到的元素列表或空数组\n */\n function querySelectorAllNew(this: Document, selectors: string): any {\n const app = getCurrentRunningApp();\n\n // 如果选择器是特殊元素标签,则返回容器元素或调用原生 querySelector 方法\n if (SPECIAL_ELEMENT_TAG.includes(selectors)) {\n if (app?.container instanceof ShadowRoot) {\n return app?.container;\n }\n return querySelector.call(this, selectors);\n }\n\n // 如果没有运行中的应用程序、选择器为空或文档不是当前文档,则调用原生 querySelectorAll 方法\n if (!app || !selectors || document !== this) {\n return querySelectorAll.call(this, selectors);\n }\n\n // 返回运行中应用程序的容器元素中匹配到的元素列表或空数组\n return app?.container?.querySelectorAll(selectors) ?? [];\n }\n\n Document.prototype.querySelector = querySelectorNew;\n Document.prototype.querySelectorAll = querySelectorAllNew;\n\n Document.prototype.getElementById = function getElementByIdNew(key: string): HTMLElement | null {\n return getCurrentRunningApp() ? querySelectorNew.call(this, `#${key}`) : getElementById.call(this, key);\n };\n Document.prototype.getElementsByClassName = function (key: string): HTMLCollectionOf<Element> {\n return getCurrentRunningApp() ? querySelectorAllNew.call(this, `.${key}`) : getElementsByClassName.call(this, key);\n };\n // eslint-disable-next-line max-len\n Document.prototype.getElementsByTagName = function <K extends keyof HTMLElementTagNameMap>(\n key: K,\n ): HTMLCollectionOf<Element> {\n const app = getCurrentRunningApp();\n if (!app || SPECIAL_ELEMENT_TAG.includes(key) || (!app?.showSourceCode && key.toLocaleLowerCase() === 'script')) {\n return getElementsByTagName.call(this, key);\n }\n return querySelectorAllNew.call(this, key);\n };\n Document.prototype.getElementsByName = function (key: string): NodeListOf<HTMLElement> {\n return getCurrentRunningApp() ? querySelectorAllNew.call(this, `[name=${key}]`) : getElementsByName.call(this, key);\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 hasRewrite = false;\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nconst ELEMENT_TARGET_NAME = ['currentTarget', 'srcElement', 'target'];\n/**\n *\n * @param event\n * @param element\n * @returns {Event} event\n * @description 为事件对象添加 element 属性\n */\nexport function defineEventSourceElement(element: HTMLLinkElement | HTMLScriptElement, eventName = 'custom'): Event {\n return Object.defineProperties(\n new CustomEvent(eventName),\n ELEMENT_TARGET_NAME.reduce<Record<PropertyKey, any>>((props, name) => {\n props[name] = {\n get() {\n return element;\n },\n };\n return props;\n }, {}),\n );\n}\n/**\n *\n * @param element HTMLLinkElement | HTMLScriptElement\n * @description 触发 link 或者 script 的 onload 事件\n */\nexport function dispatchLinkOrScriptLoad(element: HTMLLinkElement | HTMLScriptElement): void {\n const event = defineEventSourceElement(element, 'load');\n if (typeof element.onload === 'function') {\n element.onload!(event);\n return;\n }\n element.dispatchEvent(event);\n}\n/**\n *\n * @param element HTMLLinkElement | HTMLScriptElement\n * @description 触发 link 或者 script 的 onerror 事件\n */\nexport function dispatchLinkOrScriptError(element: HTMLLinkElement | HTMLScriptElement): void {\n const event = defineEventSourceElement(element, 'error');\n if (typeof element.onerror === 'function') {\n element.onerror!(event);\n return;\n }\n element.dispatchEvent(event);\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { MicroAppModel } from '../mode/app';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { BaseModel, IAppModleProps, IBaseModelProps, IJsModelProps, WewebMode } from '../typings';\nimport { beforeLoad } from './before-load';\n\nexport async function load(props: IBaseModelProps): Promise<BaseModel> {\n beforeLoad();\n if (props.mode === WewebMode.INSTANCE) return await loadInstance(props);\n return await loadApp(props);\n}\n// 加载app\nexport async function loadApp(props: IAppModleProps): Promise<MicroAppModel> {\n beforeLoad();\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 beforeLoad();\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.MOUNTING, AppState.UNSET].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","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { resetDocumentPrototypeMethods } from '../context/document';\nimport { resetBodyAndHeaderMethods } from '../context/element';\n\nexport function unmount(appKey: string) {\n const app = appCache.getApp(appKey);\n if (app && app.status !== AppState.UNMOUNT) {\n app.unmount();\n }\n if (!appCache.hasActiveApp) {\n resetBodyAndHeaderMethods();\n resetDocumentPrototypeMethods();\n }\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { resetDocumentPrototypeMethods } from '../context/document';\nimport { resetBodyAndHeaderMethods } from '../context/element';\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","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { 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 = SourceFuncType | string[];\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(\n str,\n new Script({\n async: false,\n code: script?.code || '',\n defer: false,\n fromHtml: false,\n initial: true,\n isModule: false,\n url: str,\n }),\n );\n } else if (url.pathname.match(/\\.css$/)) {\n const style = appCache.getCacheStyle(str);\n collectStyle.set(\n str,\n new Style({\n code: style?.code || '',\n fromHtml: true,\n initial: true,\n prefetch: false,\n preload: false,\n url: str,\n }),\n );\n }\n } catch {\n console.error(`【bk-weweb】: ${str} is invalid URL`);\n }\n });\n return {\n collectScript,\n collectStyle,\n };\n}\n// 加载全局静态资源\nexport async function loadGlobalSource(soruceList: SourceType) {\n const { collectScript, collectStyle } = await collectSource(soruceList);\n const promiseList: Promise<string>[] = [];\n collectScript &&\n Array.from(collectScript.entries()).forEach(item => {\n promiseList.push(item[1].getCode());\n appCache.setBaseAppScript(...item);\n });\n collectStyle &&\n 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","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { collectBaseSource } from './base-app/collect-source';\nimport BkWewebElement from './component/web-compnent';\nimport './context/cache';\nimport { FetchSourceType, IStartOption } from './typings';\n\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';\nexport { WewebMode } from './typings';\nconst CUSTOM_ELEMENT_TAG = 'bk-weweb';\nexport class WeWeb {\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, BkWewebElement);\n }\n }\n // 设置自定义dom标签名\n setWebComponentTag() {\n if (!window.customElements.get(this.webcomponentTag)) {\n window.customElements.define(this.webcomponentTag, BkWewebElement);\n }\n }\n // todo set some global start props\n start(option?: IStartOption) {\n // 是否收集主应用资源\n if (option?.collectBaseSource) {\n collectBaseSource();\n }\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}\nconst weWeb = new WeWeb();\nexport default weWeb;\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport 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","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/* eslint-disable no-param-reassign */\nimport { appCache } from '../cache/app-cache';\nimport { disabledStyleDom } from '../context/cache';\nimport { BaseModel, CssRuleEnum, IStyleOption } from '../typings';\nimport { setMarkElement } from '../utils';\nimport { addUrlProtocol, fillUpPath } from '../utils/common';\nimport { dispatchLinkOrScriptError, dispatchLinkOrScriptLoad } from '../utils/custom';\nimport { fetchSource } from '../utils/fetch';\n\nexport class Style {\n code = '';\n fromHtml: boolean;\n initial: boolean;\n prefetch = false;\n preload = false;\n scoped: boolean;\n scopedCode = '';\n url: string | undefined;\n constructor({ code, fromHtml, initial, prefetch, preload, url }: 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 commonScoped(templateStyle: HTMLStyleElement, styleElement: HTMLStyleElement, app: BaseModel) {\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(scopedCss, app.url, this.url);\n if (/Safari/.test(navigator.userAgent)) {\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(styleElement.textContent || templateStyle.textContent || '', app.url, this.url);\n // fix https://bugs.chromium.org/p/chromium/issues/detail?id=336876\n if (cssText && app.container instanceof ShadowRoot) {\n let fontContent = '';\n cssText.match(/@font-face\\s*\\{[^}]+\\}/g)?.forEach(fontFace => {\n fontContent += `${fontFace}\\n`;\n });\n const rawDocument = app.sandBox?.rawDocument;\n if (rawDocument && fontContent) {\n const fontStyle = rawDocument.createElement('style');\n fontStyle.setAttribute('type', 'text/css');\n fontStyle.setAttribute('powered-by', 'bk-weweb');\n fontStyle.textContent = fontContent;\n rawDocument?.head?.append(fontStyle);\n }\n }\n styleElement.textContent = cssText;\n }\n this.scoped = true;\n }\n createStyleElement() {\n const styleElement = document.createElement('style');\n if (styleElement.__BK_WEWEB_APP_KEY__) delete styleElement.__BK_WEWEB_APP_KEY__;\n return styleElement;\n }\n async excuteCode(app: BaseModel): Promise<HTMLStyleElement> {\n app.registerRunningApp();\n let styleElement = this.createStyleElement();\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 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 // 主应用已生效的样式 不再应用在子应用\n linkedBaseStyle(styleElement: HTMLStyleElement, app: BaseModel) {\n if (\n !(app.container instanceof ShadowRoot) &&\n styleElement.textContent &&\n appCache.getBaseAppStyle(styleElement.textContent)\n ) {\n styleElement.textContent = '';\n styleElement.innerHTML = '';\n styleElement.setAttribute('linked-from-base', 'true');\n return true;\n }\n return false;\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 const pathArr = linkpath.split('/');\n pathArr.pop();\n baseURI = addUrlProtocol(`${pathArr.join('/')}/`);\n }\n return `url(\"${fillUpPath($1, baseURI)}\")`;\n });\n }\n scopeRule(rules: CSSRule[], cssPrefix: string): string {\n let result = '';\n for (const rule of rules) {\n switch (rule.type) {\n case CssRuleEnum.STYLE_RULE:\n result += this.scopeStyleRule(rule as CSSStyleRule, cssPrefix);\n break;\n case CssRuleEnum.MEDIA_RULE:\n result += this.resetPackRule(rule as CSSMediaRule, cssPrefix, 'media');\n break;\n case CssRuleEnum.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 scopeStyleRule(rule: CSSStyleRule, prefix: string): string {\n const { cssText, selectorText } = 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 =>\n 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 scopedLinkCSS(app: BaseModel, linkElement: HTMLLinkElement): HTMLStyleElement {\n const styleElement = this.createStyleElement();\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(disabledStyleDom, styleElement, app);\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'], childList: false, subtree: false });\n }\n } catch {\n linkElement && dispatchLinkOrScriptError(linkElement);\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 if (this.linkedBaseStyle(styleElement, app)) return styleElement;\n disabledStyleDom.textContent = this.code;\n this.commonScoped(disabledStyleDom, styleElement, app);\n disabledStyleDom.textContent = '';\n } else {\n const observer = new MutationObserver(() => {\n if (!(styleElement.textContent || styleElement.sheet?.cssRules?.length)) return;\n observer.disconnect();\n if (!this.linkedBaseStyle(styleElement, app)) {\n this.commonScoped(styleElement, styleElement, app);\n }\n });\n observer.observe(styleElement, { attributes: false, characterData: true, childList: true, subtree: true });\n }\n this.url && styleElement.setAttribute('origin-src', this.url);\n return styleElement;\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?.append(...styleElementList);\n }\n });\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { setCurrentRunningApp } from '../context/cache';\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';\n\nexport class MicroInstanceModel implements BaseModel {\n private state: AppState = AppState.UNSET;\n appCacheKey: string;\n container?: HTMLElement | ShadowRoot;\n data: Record<string, unknown>;\n initSource: SourceType;\n isPreLoad = false;\n keepAlive: boolean;\n name: string;\n sandBox?: SandBox;\n scopeCss = true;\n scopeJs = false;\n showSourceCode = true;\n source?: EntrySource;\n url: string;\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 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: Element | Node) => {\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 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 onError(): void {\n this.state = AppState.ERROR;\n }\n onMount(): void {\n if (this.isPreLoad) return;\n this.state = AppState.LOADED;\n this.mount();\n }\n registerRunningApp() {\n setCurrentRunningApp(this);\n Promise.resolve().then(() => setCurrentRunningApp(null));\n }\n async start(): Promise<void> {\n if (!this.source || [AppState.ERROR, AppState.UNSET].includes(this.status)) {\n this.source = new EntrySource(this.url);\n await this.source.importEntery(this);\n }\n }\n set status(v: AppState) {\n this.state = v;\n }\n get status(): AppState {\n return this.state;\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}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-param-reassign */\nimport { appCache } from '../cache/app-cache';\nimport { MicroAppModel } from '../mode/app';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { BaseModel, IScriptOption } from '../typings';\nimport { setMarkElement } from '../utils';\nimport { fetchSource } from '../utils/fetch';\n\nlet firstGlobalProp: string | undefined;\nlet secondGlobalProp: string | undefined;\nlet lastGlobalProp: string | undefined;\n\n// Script脚本实例\nexport class Script {\n async = false;\n code = '';\n defer = false;\n exportInstance?: any;\n fromHtml: boolean;\n initial: boolean;\n isModule = false;\n scoped: boolean;\n url: string | undefined;\n\n constructor({ async, code, defer, fromHtml, initial, isModule, url }: 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 excuteCode(app: BaseModel, needRelaceScriptElement = false): Promise<Comment | HTMLScriptElement | undefined> {\n try {\n if (!this.code) await this.getCode(app);\n if (app instanceof MicroInstanceModel) {\n const golbalWindow = app.scopeJs ? app.sandBox?.proxyWindow || window : window;\n noteGlobalProps(golbalWindow);\n }\n let scopedCode = this.code;\n scopedCode = this.transformCode(app);\n if (app.showSourceCode || this.isModule) {\n const scriptElement = document.createElement('script');\n if (scriptElement.__BK_WEWEB_APP_KEY__) delete scriptElement.__BK_WEWEB_APP_KEY__;\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 golbalWindow = app.scopeJs ? app.sandBox?.proxyWindow || window : window;\n const exportProp: any = getGlobalProp(golbalWindow);\n if (exportProp) {\n this.exportInstance = golbalWindow[exportProp];\n // window 下需清除全局副作用\n if (!app.scopeJs) {\n delete golbalWindow[exportProp];\n }\n }\n }\n } catch (e) {\n console.error('execute script code error', e);\n }\n return;\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 executeSourceScript(scriptElement: HTMLScriptElement, scopedCode: string): void {\n if (this.isModule) {\n if (this.url?.match(/\\.ts$/)) {\n scriptElement.src = this.url;\n } else {\n const blob = new Blob([scopedCode], { type: 'text/javascript' });\n scriptElement.src = URL.createObjectURL(blob);\n }\n scriptElement.setAttribute('type', 'module');\n } else {\n scriptElement.textContent = scopedCode;\n }\n this.url && scriptElement.setAttribute('origin-src', this.url);\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 setCode(code: string) {\n this.code = code;\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}\n// 全局属性是否跳过标记\nexport function shouldSkipProperty(global: Window, p: any) {\n return (\n !global.hasOwnProperty(p) ||\n (!isNaN(p) && p < global.length) ||\n (typeof navigator !== 'undefined' &&\n navigator.userAgent.indexOf('Trident') !== -1 &&\n global[p] &&\n typeof window !== 'undefined' &&\n 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<Comment | HTMLScriptElement | undefined>[] = [];\n const asyncScriptList: Promise<Comment | HTMLScriptElement | 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]).catch(e => {\n console.error(e);\n });\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\nimport { BaseModel } from '../typings';\nimport { isJsonpUrl, randomUrl } from './common';\nimport { dispatchLinkOrScriptLoad } from './custom';\n\nconst { appendChild: bodyAppendChild } = HTMLBodyElement.prototype;\nexport function resetNewElement(parent: Node, child: Node, app: BaseModel): 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.textContent) {\n // 父级应用样式已生效情况下 即可忽略子应用对应样式 webcomponent的隔离下优化不生效\n if (!(app.container instanceof ShadowRoot) && appCache.getBaseAppStyle(child.textContent)) {\n return document.createComment('【bk-weweb】style is effective in base app');\n }\n }\n // else {\n // const observer = new MutationObserver(() => {\n // if (child.textContent) {\n // observer.disconnect();\n // if (!(app.container instanceof ShadowRoot)\n // && appCache.getBaseAppStyle(child.textContent)) {\n // debugger;\n // console.info('--------------');\n // child.sheet!.disabled = true;\n // child.setAttribute('aaaaaaaaaaaa', '------');\n // parent.removeChild(child);\n // }\n // }\n // });\n // observer.observe(child, { attributeFilter: ['src'], childList: true, subtree: false });\n // }\n if (!child.hasAttribute('ignore')) {\n const styleInstance = new Style({\n code: child.textContent || '',\n fromHtml: false,\n url: '',\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 // 处理异步jsonp\n if (isJsonpUrl(child.getAttribute('src'))) {\n app.container?.append(child);\n return;\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 async: false,\n code: child.textContent,\n defer: child.type === 'module',\n fromHtml: false,\n isModule: child.type === 'module',\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 || node instanceof HTMLStyleElement || node instanceof HTMLLinkElement;\n}\nexport function elmentAppendHandler(parent: Node, newChild: Node, rawMethod: Function) {\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(parent: Node, newChild: Node, passiveChild: Node | null, rawMethod: Function) {\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 setMarkElement(targetChild as Element, app, needKeepAlive);\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 && app) {\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","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { fillUpPath } from '../utils/common';\nimport { elementInsertHandler, elmentAppendHandler, isSepcailElement } from '../utils/element';\nimport { setCurrentRunningApp } from './cache';\n\nconst { setAttribute } = Element.prototype;\n\nconst { append, appendChild: bodyAppendChild, removeChild: bodyRemoveChild } = HTMLBodyElement.prototype;\nconst {\n appendChild: headAppendChild,\n insertBefore: headInsertBefore,\n removeChild: headRemoveChild,\n} = HTMLHeadElement.prototype;\nconst rawHead = document.head;\nlet hasRewrite = false;\nexport function rewriteBodyAndHeaderMethods(): void {\n if (hasRewrite) return;\n hasRewrite = true;\n Element.prototype.setAttribute = function (key: string, value: string): void {\n const tagName = this.tagName.toLocaleUpperCase();\n if (\n ((['src', 'srcset'].includes(key) && ['IMG', 'SCRIPT'].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 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 nodes.forEach(node => {\n // keepalive link script style set in head\n if (node.__KEEP_ALIVE__ && isSepcailElement(node)) {\n return (headAppendChild as any).call(rawHead, node);\n }\n elmentAppendHandler(this, node as Node, bodyAppendChild);\n });\n };\n HTMLHeadElement.prototype.appendChild = HTMLBodyElement.prototype.appendChild;\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 }\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 hasRewrite = false;\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { rewriteDocumentPrototypeMethods } from '../context/document';\nimport { rewriteBodyAndHeaderMethods } from '../context/element';\n\nexport function beforeLoad() {\n rewriteBodyAndHeaderMethods();\n rewriteDocumentPrototypeMethods();\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { BaseModel } from '../typings';\nimport { nextTask } from '../utils/common';\nimport { beforeLoad } from './before-load';\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(() => {\n beforeLoad();\n app.activated(container, callback);\n });\n } else {\n app &&\n nextTask(() => {\n beforeLoad();\n app.mount(container, callback);\n });\n }\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { activated } from '../lifecircle/activated';\nimport { deactivated } from '../lifecircle/deactivated';\nimport { load } from '../lifecircle/load';\nimport { unmount } from '../lifecircle/unmount';\nimport { IAppModleProps, IJsModelProps, WewebMode } from '../typings';\n// bk-weweb支持的属性配置\nexport enum WewebCustomAttrs {\n data = 'data',\n id = 'id',\n keepAlive = 'keepAlive',\n mode = 'mode',\n scopeCss = 'scopeCss',\n scopeJs = 'scopeJs',\n scopeLocation = 'scopeLocation',\n setShodowDom = 'setShodowDom',\n showSourceCode = 'showSourceCode',\n url = 'url',\n}\nexport default class BkWewebElement extends HTMLElement {\n private appUrl = '';\n private connected = false;\n static get observedAttributes(): string[] {\n return [WewebCustomAttrs.url];\n }\n private getBooleanAttr(name: string): boolean | undefined {\n return this.hasAttribute(name) ? this.getAttribute(name) !== 'false' : undefined;\n }\n private async handleAttributeChanged(): Promise<void> {\n if (!this.appKey) return;\n if (this.getBooleanAttr(WewebCustomAttrs.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 get appData(): Record<string, unknown> {\n if (this.hasAttribute(WewebCustomAttrs.data)) {\n try {\n return JSON.parse(this.getAttribute(WewebCustomAttrs.data)!);\n } catch {}\n }\n return {};\n }\n // 考虑到js模式下 需要js bundle的复用性 需用户设置id属性 如果单实例下则可以不用配置\n get appKey(): null | string {\n return this.getAttribute(WewebCustomAttrs.id) || this.getAttribute(WewebCustomAttrs.url);\n }\n get appProps(): IAppModleProps | IJsModelProps {\n if (this.getAttribute('mode') === WewebMode.INSTANCE) {\n return {\n container: this.shadowRoot ?? this,\n data: this.appData,\n id: this.appKey!,\n keepAlive: this.getBooleanAttr(WewebCustomAttrs.keepAlive),\n mode: WewebMode.INSTANCE,\n scopeCss: this.getBooleanAttr(WewebCustomAttrs.scopeCss) && !this.getBooleanAttr(WewebCustomAttrs.setShodowDom),\n scopeJs: this.getBooleanAttr(WewebCustomAttrs.scopeJs),\n showSourceCode: this.getBooleanAttr(WewebCustomAttrs.showSourceCode),\n url: this.getAttribute(WewebCustomAttrs.url)!,\n };\n }\n return {\n container: this.shadowRoot ?? this,\n data: this.appData,\n id: this.appKey!,\n keepAlive: this.getBooleanAttr(WewebCustomAttrs.keepAlive),\n mode: WewebMode.APP,\n scopeCss: !this.getBooleanAttr(WewebCustomAttrs.setShodowDom),\n scopeJs: !this.getBooleanAttr(WewebCustomAttrs.scopeJs),\n scopeLocation: this.getBooleanAttr(WewebCustomAttrs.scopeLocation),\n showSourceCode: this.getBooleanAttr(WewebCustomAttrs.showSourceCode),\n url: this.getAttribute(WewebCustomAttrs.url)!,\n };\n }\n attributeChangedCallback(attr: WewebCustomAttrs, _oldVal: string, newVal: string): void {\n if (attr !== WewebCustomAttrs.url || (this as any)[attr] === newVal || !this.connected) return;\n this.appUrl = newVal;\n const cacheApp = appCache.getApp(this.appKey!);\n (this.connected || cacheApp) && this.handleAttributeChanged();\n }\n async connectedCallback(): Promise<void> {\n if (this.getBooleanAttr(WewebCustomAttrs.setShodowDom) && !this.shadowRoot) {\n this.attachShadow({ delegatesFocus: false, mode: 'open' });\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}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { AppState } from '../common';\nimport { WewebCustomAttrs } from '../component/web-compnent';\nimport SandBox from '../context/sandbox';\nimport { EntrySource } from '../entry/entry';\nimport { SourceType } from '../utils/load-source';\n\nexport interface IComponentProps {\n // 传递给子应用的数据 默认保存\n [WewebCustomAttrs.data]?: string;\n // entry mode js | config | html 默认 html\n [WewebCustomAttrs.mode]?: WewebMode;\n // 是否共享主应用路由\n [WewebCustomAttrs.scopeLocation]?: boolean;\n // 是否使用shadowDom\n [WewebCustomAttrs.setShodowDom]?: boolean;\n // 是否在dom上显示源码 默认不显示 内存执行\n [WewebCustomAttrs.showSourceCode]?: boolean;\n // url 必选\n [WewebCustomAttrs.url]: string;\n}\n\n// 基础属性接口\nexport interface IBaseModelProps {\n // entry mode js | config | html 默认 html\n [WewebCustomAttrs.mode]?: WewebMode;\n // url 必选\n [WewebCustomAttrs.url]: string;\n id?: null | string;\n // 是否是预加载\n isPreLoad?: boolean;\n}\n\n// app模式属性配置\nexport interface IAppModleProps extends IBaseModelProps {\n // 传递给子应用的数据 默认保存\n [WewebCustomAttrs.data]?: Record<string, unknown>;\n // 是否缓存dom\n [WewebCustomAttrs.keepAlive]?: boolean;\n // 是否启用样式隔离 默认隔离\n [WewebCustomAttrs.scopeCss]?: boolean;\n // 是否使用沙盒隔离 默认隔离\n [WewebCustomAttrs.scopeJs]?: boolean;\n // 是否共享主应用路由\n [WewebCustomAttrs.scopeLocation]?: boolean;\n // 是否使用shadowDom\n [WewebCustomAttrs.setShodowDom]?: boolean;\n // 是否在dom上显示源码 默认不显示 内存执行\n [WewebCustomAttrs.showSourceCode]?: boolean;\n container?: HTMLElement | ShadowRoot | null;\n // 初始化source 如 ['http://www.hostname.com/a.js', 'http://www.hostname.com/b.css']\n initSource?: SourceType;\n}\n\nexport interface IJsModelProps extends IBaseModelProps {\n // 传递给实例render方法的数据\n [WewebCustomAttrs.data]?: Record<string, unknown>;\n // 是否在dom上显示源码 默认显示\n [WewebCustomAttrs.showSourceCode]?: boolean;\n // 容器\n container?: HTMLElement | ShadowRoot | null;\n // 初始化source 如 ['http://www.hostname.com/a.js', 'http://www.hostname.com/b.css']\n initSource?: SourceType;\n // 是否缓存dom\n keepAlive?: boolean;\n // 是否启用样式隔离 默认隔离\n scopeCss?: boolean;\n // 是否使用沙盒隔离 默认不隔离\n scopeJs?: boolean;\n}\n\nexport interface BaseModel {\n activated<T>(container: HTMLElement | ShadowRoot, callback?: (instance: BaseModel, exportInstance?: T) => void): void;\n container?: HTMLElement | ShadowRoot;\n deactivated(): void;\n get appCacheKey(): string;\n get status(): AppState;\n set status(v: AppState);\n // 初始化source 如 ['http://www.hostname.com/a.js', 'http://www.hostname.com/b.css']\n // eslint-disable-next-line perfectionist/sort-interfaces\n initSource?: SourceType;\n isPreLoad: boolean;\n keepAlive?: boolean;\n mount<T>(container?: HTMLElement | ShadowRoot, callback?: (instance: BaseModel, exportInstance?: T) => void): void;\n name: string;\n onError(): void;\n onMount(): void;\n registerRunningApp(): void;\n sandBox?: SandBox;\n // 是否启用样式隔离 默认隔离\n scopeCss?: boolean;\n scopeJs: boolean;\n showSourceCode?: boolean;\n source?: EntrySource;\n start(): Promise<void>;\n unmount(needDestroy?: boolean): void;\n url: string;\n}\n\nexport enum WewebMode {\n 'APP' = 'app',\n 'CONFIG' = 'config',\n 'INSTANCE' = 'js',\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/**\n * Interface for injecting window attributes.\n */\nexport interface IInjectWindowAttrs {\n __BK_WEWEB_APP_KEY__: string; // The app key for the BK WEWEB platform.\n __BK_WEWEB_DATA__: Record<string, unknown>; // Additional data for BK WEWEB.\n __POWERED_BY_BK_WEWEB__: boolean; // Indicates if the page is powered by BK WEWEB.\n rawDocument: Document; // The original document object.\n rawWindow: Window; // The original window object.\n}\n\nexport const WINDOW_WHITE_LIST: PropertyKey[] = [\n 'System', // SystemJS\n '__cjsWrapper', // SystemJS CommonJS wrapper\n process.env.NODE_ENV !== 'production' ? '__REACT_DEVTOOLS_GLOBAL_HOOK__' : '',\n];\n// 一定需要在子应用自身上下文获取的属性名\nexport const BK_WEWEB_INJECT_KEY_LIST: PropertyKey[] = [\n '__POWERED_BY_BK_WEWEB__',\n '__BK_WEWEB_APP_KEY__',\n '__BK_WEWEB_DATA__',\n];\nexport const WINDOW_ALIAS_LIST: PropertyKey[] = ['window', 'self', 'globalThis'];\n// 设置了scopedLocation 后需要监听属性名\nexport const BK_WEWEB_LOCATION_KEY_LIST: PropertyKey[] = ['location', 'history'];\nexport const DEV_MICRO_APP_WINDOE_KEY_MAP: Record<PropertyKey, true> =\n process.env.NODE_ENV !== 'production'\n ? {\n __DEV__: true,\n __VUE_DEVTOOLS_GLOBAL_HOOK__: true,\n __VUE_DEVTOOLS_HOOK_REPLAY__: true,\n __VUE_DEVTOOLS_PLUGINS__: true,\n __VUE_I18N_FULL_INSTALL__: true,\n __VUE_I18N_LEGACY_API__: true,\n __VUE_OPTIONS_API__: true,\n __bk_pop_manager: true,\n __bk_zIndex_manager: true,\n '__core-js_shared__': true,\n i18n: true,\n webpackChunkapm: true,\n webpackChunkpc: true,\n webpackChunktrace: true,\n webpackJsonp: true,\n }\n : {};\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { DocumentEventListener } from '../typings';\nimport { getCurrentRunningApp } from './cache';\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 const documentListenerMap = new Map<keyof DocumentEventMap, DocumentEventListener[]>();\n document.addEventListener = function <K extends keyof DocumentEventMap>(\n type: K,\n listener: DocumentEventListener,\n options?: AddEventListenerOptions | boolean | undefined,\n ): void {\n const app = getCurrentRunningApp();\n if (app?.keepAlive) {\n const listeners = documentListenerMap.get(type) || [];\n documentListenerMap.set(type, [...listeners, listener]);\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?: AddEventListenerOptions | boolean,\n ): void {\n const app = getCurrentRunningApp();\n if (app?.keepAlive) {\n const listeners = documentListenerMap.get(type) || [];\n if (listeners.length && listeners.some(l => l === listener)) {\n listeners.splice(listeners.indexOf(listener), 1);\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 const app = getCurrentRunningApp();\n if (app?.keepAlive && documentListenerMap.values()) {\n Array.from(documentListenerMap.entries()).forEach(([type, listeners]) => {\n listeners?.forEach(listener => {\n document.removeEventListener.call(document, type, listener);\n });\n });\n }\n document.addEventListener = addEventListener;\n document.body.addEventListener = bodyAddEventListener;\n document.removeEventListener = removeEventListener;\n document.body.removeEventListener = bodyRemoveEventListener;\n documentListenerMap.clear();\n }\n return {\n resetDocumentAndBodyEvent,\n };\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/* eslint-disable max-len */\n/* eslint-disable no-prototype-builtins */\n/*\ninspired by https://github.com/umijs/qiankun\n*/\n// 正则表达式,用于匹配类定义\nconst CLASS_REGEX = /^class\\b/;\n\n// 正则表达式,用于匹配以大写字母开头的函数定义\nconst COMMON_CONTRUCT_FU_REGEX = /^function\\b\\s[A-Z].*/;\n\n// WeakMap 对象,用于缓存构造函数是否可实例化的结果\nconst ConstructFunCacheMap = new WeakMap<FunctionConstructor | any, boolean>();\n\n/**\n * 判断一个函数是否可实例化\n * @param fn - 要判断的函数\n * @returns 可实例化返回 true,否则返回 false\n */\nexport function isConstructFun(fn: () => FunctionConstructor | any) {\n // 如果函数的原型的构造函数等于函数本身,并且原型对象上有超过一个属性,则认为是可实例化的\n if (fn.prototype?.constructor === fn && Object.getOwnPropertyNames(fn.prototype).length > 1) {\n return true;\n }\n\n // 如果在缓存中已经存在该函数的判断结果,则直接返回\n if (ConstructFunCacheMap.has(fn)) {\n return ConstructFunCacheMap.get(fn);\n }\n\n // 使用正则表达式测试函数的字符串表示,判断是否可实例化\n const constructable = COMMON_CONTRUCT_FU_REGEX.test(fn.toString()) || CLASS_REGEX.test(fn.toString());\n\n // 将判断结果保存到缓存中\n ConstructFunCacheMap.set(fn, constructable);\n\n return constructable;\n}\n\n// 创建一个弱映射,用于存储函数和其绑定版本之间的关系\nconst functionBoundedValueMap = new WeakMap<CallableFunction, CallableFunction>();\n\n// 导出默认函数,用于将给定的值绑定到原始窗口对象\nexport default function bindFunctionToRawWindow(rawWindow: Window, value: any): unknown {\n // 如果值已经存在于映射中,直接返回与该值相关联的绑定版本\n if (functionBoundedValueMap.has(value)) {\n return functionBoundedValueMap.get(value);\n }\n // 如果值是一个函数且不是构造函数\n if (typeof value === 'function' && !isConstructFun(value)) {\n // 创建一个绑定到原始窗口对象的函数\n const boundValue = Function.prototype.bind.call(value, rawWindow);\n // 将原始函数的属性复制到绑定版本上\n for (const key in value) {\n boundValue[key] = value[key];\n }\n // 如果原始函数拥有原型并且绑定版本没有原型\n if (value.hasOwnProperty('prototype') && !boundValue.hasOwnProperty('prototype')) {\n // 将原始函数的原型属性设置到绑定版本上\n Object.defineProperty(boundValue, 'prototype', { enumerable: false, value: value.prototype, writable: true });\n }\n // 如果原始函数拥有 toString 方法\n if (typeof value.toString === 'function') {\n // 检查原始函数是否拥有 toString 属性,且绑定版本没有该属性\n const valueHasInstanceToString = value.hasOwnProperty('toString') && !boundValue.hasOwnProperty('toString');\n // 检查绑定版本的 toString 是否与 Function.prototype.toString 相同\n const boundValueHasPrototypeToString = boundValue.toString === Function.prototype.toString;\n\n // 如果原始函数的 toString 属性需要继承\n if (valueHasInstanceToString || boundValueHasPrototypeToString) {\n // 获取原始 toString 属性的描述符\n const originToStringDescriptor = Object.getOwnPropertyDescriptor(\n valueHasInstanceToString ? value : Function.prototype,\n 'toString',\n );\n\n // 将绑定版本的 toString 属性设置为与原始函数相同的方法\n Object.defineProperty(boundValue, 'toString', {\n ...originToStringDescriptor,\n ...(originToStringDescriptor?.get ? null : { value: () => value.toString() }),\n });\n }\n }\n // 将原始函数和绑定版本存储到映射中\n functionBoundedValueMap.set(value, boundValue);\n // 返回绑定版本\n return boundValue;\n }\n // 如果不是函数或是构造函数,则直接返回原始值\n return value;\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/* eslint-disable no-param-reassign */\nimport { DocumentEventListener } from '../typings';\n// rewrite window funtion like settimeout setinterval ...\nexport function rewriteWindowFunction(fakeWindow: Window & any): Record<string, CallableFunction> {\n const windowEventLisenerMap = new Map<string, DocumentEventListener[]>();\n const intervalTimerList: ReturnType<typeof setInterval>[] = [];\n const rawWindow = window;\n const { addEventListener, clearInterval, removeEventListener, setInterval } = window;\n\n fakeWindow.addEventListener = function (\n type: string,\n listener: DocumentEventListener,\n options?: AddEventListenerOptions | boolean,\n ): void {\n windowEventLisenerMap.set(type, [...(windowEventLisenerMap.get(type) || []), listener]);\n addEventListener.call(rawWindow, type, listener, options);\n };\n fakeWindow.removeEventListener = function (\n type: string,\n listener: DocumentEventListener,\n options?: AddEventListenerOptions | boolean,\n ): void {\n const listenerList = windowEventLisenerMap.get(type);\n if (listenerList?.length) {\n const index = listenerList.indexOf(listener);\n index > -1 && listenerList.splice(index, 1);\n }\n removeEventListener.call(rawWindow, type, listener, options);\n };\n fakeWindow.setInterval = function (\n handler: TimerHandler | string,\n timeout?: number | undefined,\n ...args: any[]\n ): ReturnType<typeof setInterval> {\n const timer = setInterval.call(rawWindow, handler as any, timeout, ...(args as []));\n intervalTimerList.push(timer);\n return timer;\n };\n fakeWindow.clearInterval = function (timer: ReturnType<typeof setInterval>) {\n const index = intervalTimerList.indexOf(timer);\n index > -1 && intervalTimerList.splice(index, 1);\n clearInterval.call(rawWindow, timer as any);\n };\n // reset all event listener & interval & timeout when unmount app\n function resetWindowFunction() {\n // clear window events listener\n if (windowEventLisenerMap.size) {\n windowEventLisenerMap.forEach((listenerList, type) => {\n listenerList.forEach(listener => removeEventListener.call(rawWindow, type, listener));\n });\n windowEventLisenerMap.clear();\n }\n // clear settimeout timers\n if (intervalTimerList.length) {\n intervalTimerList.forEach(timer => {\n clearInterval.call(rawWindow, timer);\n });\n }\n }\n return {\n resetWindowFunction,\n };\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/* eslint-disable no-new-func */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\nimport { MicroAppModel } from '../mode/app';\n/*\ninspired by https://github.com/umijs/qiankun\n*/\nimport {\n BK_WEWEB_INJECT_KEY_LIST,\n BK_WEWEB_LOCATION_KEY_LIST,\n BaseModel,\n DEV_MICRO_APP_WINDOE_KEY_MAP,\n IInjectWindowAttrs,\n WINDOW_ALIAS_LIST,\n WINDOW_WHITE_LIST,\n} from '../typings';\nimport { random } from '../utils/common';\nimport { windowNativeFuncMap } from './cache';\nimport { rewriteDocumentAndBodyEvent } from './event';\nimport bindFunctionToRawWindow from './function';\nimport { rewriteWindowFunction } from './window';\n\nexport default class SandBox {\n private active = false;\n private inRawWindowKeySet = new Set<PropertyKey>();\n private resetDocumentAndBodyEvent?: CallableFunction;\n private resetWindowFunction: CallableFunction;\n private sameRawWindowKeySet = new Set<PropertyKey>();\n\n public fakeWindow: Window & IInjectWindowAttrs = {} as any;\n public proxyWindow: WindowProxy & IInjectWindowAttrs;\n public rawDocument: Document;\n public rawWindow: Window;\n public windowSymbolKey: keyof Window;\n constructor(public app: BaseModel) {\n const windowDescriptorSet = new Set<PropertyKey>();\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(/(-|,|:|~|'|\")/gim, '_')}_${random(\n 10,\n )}__` as keyof Window;\n this.proxyWindow = new Proxy(this.fakeWindow, {\n // Object.defineProperty(window, key, Descriptor)\n defineProperty: (target: Window & any, key: PropertyKey, value: PropertyDescriptor): boolean => {\n if (windowDescriptorSet.has(key)) {\n return Reflect.defineProperty(rawWindow, key, value);\n }\n return Reflect.defineProperty(target, key, value);\n },\n deleteProperty: (target: Window & any, key: PropertyKey): boolean => {\n if (target.hasOwnProperty(key)) {\n this.sameRawWindowKeySet.has(key) && this.sameRawWindowKeySet.delete(key);\n this.inRawWindowKeySet.has(key) && Reflect.deleteProperty(rawWindow, key);\n return Reflect.deleteProperty(target, key);\n }\n return true;\n },\n get: (target: Window, key: string | symbol): unknown => {\n if (windowNativeFuncMap.has(key) || key === Symbol.unscopables) return rawWindow[key as any];\n if (DEV_MICRO_APP_WINDOE_KEY_MAP[key]) return this.fakeWindow[key as any];\n if (WINDOW_ALIAS_LIST.includes(key as string)) return this.proxyWindow;\n if (key === 'document') {\n app.registerRunningApp();\n return rawDocument;\n }\n if (key === 'eval') {\n app.registerRunningApp();\n // eslint-disable-next-line no-eval\n return eval;\n }\n if (\n BK_WEWEB_LOCATION_KEY_LIST.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 === 'hasOwnProperty')\n 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 (Reflect.has(target, key) || BK_WEWEB_INJECT_KEY_LIST.includes(key)) return Reflect.get(target, key);\n const rawValue = Reflect.get(rawWindow, key);\n return bindFunctionToRawWindow(rawWindow, rawValue);\n },\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 windowDescriptorSet.add(key);\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 has: (target: Window & any, key: PropertyKey): boolean =>\n windowNativeFuncMap.has(key) || key in target || key in rawWindow,\n // Object.getOwnPropertyNames(window)\n ownKeys: (target: Window & any): Array<string | symbol> =>\n Array.from(new Set(Reflect.ownKeys(rawWindow).concat(Reflect.ownKeys(target)))),\n set: (target: any, key: PropertyKey, value: unknown): boolean => {\n if (this.active) {\n // 设置了scope location,需要同步到iframe\n if (\n BK_WEWEB_LOCATION_KEY_LIST.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 // 共享主应用 location\n if (key === 'location') {\n Reflect.set(rawWindow, key, value);\n } else if (\n !target.hasOwnProperty(key) &&\n rawWindow.hasOwnProperty(key) &&\n !BK_WEWEB_INJECT_KEY_LIST.includes(key)\n ) {\n const descriptor = Object.getOwnPropertyDescriptor(rawWindow, key);\n const { configurable, enumerable, writable } = descriptor!;\n if (writable) {\n Object.defineProperty(target, key, {\n configurable,\n enumerable,\n value,\n writable,\n });\n this.sameRawWindowKeySet.add(key);\n }\n } else {\n Reflect.set(target, key, value);\n this.sameRawWindowKeySet.add(key);\n }\n if (\n WINDOW_WHITE_LIST.includes(key) &&\n !Reflect.has(rawWindow, key) &&\n !BK_WEWEB_INJECT_KEY_LIST.includes(key)\n ) {\n Reflect.set(rawWindow, key, value);\n this.inRawWindowKeySet.add(key);\n }\n }\n return true;\n },\n });\n if (app.showSourceCode) {\n rawWindow[this.windowSymbolKey as any] = this.proxyWindow;\n }\n }\n /**\n *\n * @param data data for sandbox\n * @description active hook for sandbox\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 /**\n *\n * @description decativated hook for sandbox\n */\n deactivated(): void {\n if (!this.active) return;\n this.active = false;\n this.resetWindowFunction();\n this.inRawWindowKeySet.forEach((key: PropertyKey) => Reflect.deleteProperty(window, key));\n this.inRawWindowKeySet.clear();\n this.resetDocumentAndBodyEvent?.();\n }\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { setCurrentRunningApp } from '../context/cache';\nimport SandBox from '../context/sandbox';\nimport { EntrySource } from '../entry/entry';\nimport { execAppScripts } from '../entry/script';\nimport { BaseModel, CSS_ATTRIBUTE_KEY, IAppModleProps, WewebMode } from '../typings';\nimport { addUrlProtocol, random } from '../utils/common';\nimport { SourceType } from '../utils/load-source';\n\nconst BLANK_ORIGN = 'about:blank';\nexport class MicroAppModel implements BaseModel {\n private state: AppState = AppState.UNSET;\n container?: HTMLElement | ShadowRoot;\n public data: Record<string, unknown>;\n iframe: HTMLIFrameElement | null = null;\n initSource: SourceType;\n public isPreLoad = false;\n keepAlive: boolean;\n mode: WewebMode = WewebMode.APP;\n name: string;\n sandBox?: SandBox;\n scopeCss: boolean;\n scopeJs: boolean;\n scopeLocation: boolean;\n showSourceCode: boolean;\n source?: EntrySource;\n url: string;\n constructor(props: IAppModleProps) {\n this.name = props.id !== props.url ? props.id! : random(5);\n this.mode = props.mode ?? WewebMode.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 activated(container: HTMLElement | ShadowRoot, callback?: (app: BaseModel) => void) {\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: Element | Node) => {\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 get appCacheKey(): string {\n return this.url;\n }\n createIframe(): Promise<HTMLIFrameElement> {\n return new Promise(resolve => {\n const iframe = document.createElement('iframe');\n const url = new URL(addUrlProtocol(this.url));\n const isChrome = navigator.userAgent.indexOf('Chrome') > -1;\n iframe.setAttribute(\n 'src',\n `${isChrome ? BLANK_ORIGN : location.origin}${url.pathname || '/'}${url.search}${url.hash}`,\n );\n iframe.style.cssText = 'display: none;';\n document.body.appendChild(iframe);\n if (isChrome) {\n setTimeout(() => resolve(iframe), 0);\n } else {\n // 其他浏览器在about:blank下会出现同源检测安全错误 换另一种方式来做location保持\n const interval = setInterval(() => {\n if (iframe.contentWindow && iframe.contentWindow.location.href !== BLANK_ORIGN) {\n iframe.contentWindow!.stop();\n iframe.contentDocument!.body.parentElement!.innerHTML = '<head></head><body></body>';\n clearInterval(interval);\n resolve(iframe);\n }\n }, 0);\n }\n });\n }\n deactivated() {\n this.state = AppState.DEACTIVATED;\n this.sandBox?.deactivated();\n }\n mount(container?: HTMLElement | ShadowRoot, callback?: (app: BaseModel) => void): 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: Element | Node) => {\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 onError(): void {\n this.state = AppState.ERROR;\n }\n onMount(): void {\n if (this.isPreLoad) return;\n this.state = AppState.LOADED;\n this.mount();\n }\n registerRunningApp() {\n setCurrentRunningApp(this);\n Promise.resolve().then(() => setCurrentRunningApp(null));\n }\n async start() {\n if (!this.source || [AppState.ERROR, AppState.UNSET].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 public get status() {\n return this.state;\n }\n public set status(v: AppState) {\n this.state = v;\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}\nexport const createApp = (props: IAppModleProps) => {\n appCache.deleteApp(props.url);\n const instance = new MicroAppModel(props);\n appCache.setApp(instance);\n};\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { MicroAppModel } from '../mode/app';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { BaseModel, IScriptOption } from '../typings';\nimport { addUrlProtocol, fillUpPath, isJsonpUrl, randomUrl } from '../utils/common';\nimport { fetchSource } from '../utils/fetch';\nimport { collectSource } from '../utils/load-source';\nimport { Script } from './script';\nimport { Style, excuteAppStyles } from './style';\n\nconst SCRIPT_TYPE_NAMES = [\n 'text/javascript',\n 'text/ecmascript',\n 'application/javascript',\n 'application/ecmascript',\n 'module',\n];\nexport class EntrySource {\n html: HTMLElement | null = null;\n rawHtml?: string;\n scripts: Map<string, Script>;\n styles: Map<string, Style>;\n constructor(public url: string) {\n this.scripts = new Map();\n this.styles = new Map();\n }\n collectLink(\n link: HTMLLinkElement,\n parent: Node,\n needReplaceELement = false,\n ): { replace: Comment | Element; 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 fromHtml: !needReplaceELement,\n prefetch: !!link.getAttribute('prefetch'),\n preload: !!link.getAttribute('preload'),\n url: href,\n });\n this.styles.set(href, styleInstance);\n }\n !needReplaceELement && parent.replaceChild(replaceElement, link);\n return { replace: replaceElement, style: styleInstance };\n }\n if (rel && ['apple-touch-icon', 'icon', 'prefetch', 'preload', 'prerender'].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 }\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: Comment | Element; script?: Script } | undefined {\n if (\n script.hasAttribute('ignore') ||\n isJsonpUrl(script.getAttribute('src')) ||\n (script.hasAttribute('type') && !SCRIPT_TYPE_NAMES.includes(script.type))\n ) {\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: null | string = 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 async: script.hasAttribute('async'),\n code: '',\n defer: script.defer || script.type === 'module',\n fromHtml: !needReplaceELement,\n isModule: script.type === 'module',\n url: src,\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 async: false,\n code: script.textContent,\n defer: script.type === 'module',\n fromHtml: !needReplaceELement,\n isModule: script.type === 'module',\n url: nonceStr!,\n });\n this.scripts.set(nonceStr, scriptInstance);\n replaceElement = document.createComment('【bk-weweb】script with texcontent');\n !needReplaceELement && parent.replaceChild(replaceElement, script);\n return {\n replace: replaceElement,\n script: scriptInstance,\n };\n }\n return { replace: script };\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 children?.forEach(dom => {\n if (dom instanceof HTMLLinkElement) {\n this.collectLink(dom, parent);\n } else if (dom instanceof HTMLStyleElement) {\n if (!dom.hasAttribute('exclude') && !dom.hasAttribute('ignore')) {\n this.styles.set(\n randomUrl(),\n new Style({\n code: dom.textContent || '',\n fromHtml: true,\n url: '',\n }),\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 getScript(url: string) {\n return this.scripts.get(url);\n }\n getStyle(urlOrCode: string) {\n return this.styles.get(urlOrCode) || Array.from(this.styles.values()).find(style => style.code === urlOrCode);\n }\n async importEntery(app: BaseModel): Promise<void> {\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) await this.importHtmlEntry(app);\n else if (app instanceof MicroInstanceModel) await this.importInstanceEntry();\n }\n async importHtmlEntry(app: MicroAppModel): Promise<void> {\n let htmlStr = appCache.getCacheHtml(this.url);\n if (!htmlStr) {\n htmlStr = await fetchSource(addUrlProtocol(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 = document.createElement('div');\n if (wrapElement.__BK_WEWEB_APP_KEY__) delete wrapElement.__BK_WEWEB_APP_KEY__;\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(\n this.url,\n new Script({\n async: false,\n code: jsStr,\n defer: false,\n fromHtml: true,\n isModule: !!this.url.match(/\\.ts$/),\n url: this.url,\n }),\n );\n }\n setScript(url: string, script: IScriptOption | Script) {\n this.scripts.set(url, script instanceof Script ? script : new Script(script));\n }\n setStyle(url: string, style: Style) {\n this.styles.set(url, style);\n }\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { AppState } from '../common';\nimport { EntrySource } from '../entry/entry';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\nimport { BaseModel } from '../typings';\n// 所有应用缓存\nexport class AppCache {\n // todo 主应用共享资源包\n private baseSource: EntrySource;\n private cache: Map<string, BaseModel>;\n constructor() {\n this.cache = new Map();\n this.baseSource = new EntrySource(location.href);\n // this.baseApp = new\n }\n deleteApp(url: string) {\n this.cache.delete(url);\n }\n getApp(name?: null | string): 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 getBaseAppStyle(urlOrCode: string) {\n return this.baseSource.getStyle(urlOrCode);\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 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 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 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 setBaseAppScript(url: string, script: Script) {\n this.baseSource.setScript(url, script);\n }\n setBaseAppStyle(url: string, style: Style) {\n this.baseSource.setStyle(url, style);\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 { appCache };\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\nimport { setMarkElement } from '../utils';\nimport { fillUpPath } from '../utils/common';\nimport { dispatchLinkOrScriptError, dispatchLinkOrScriptLoad } from '../utils/custom';\nimport { fetchSource } from '../utils/fetch';\n\nfunction getStyleSource(url: string, style: Style, originLink: HTMLLinkElement): HTMLStyleElement {\n const replaceStyle = document.createElement('style');\n setMarkElement(replaceStyle);\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}\nfunction getScriptSource(url: string, script: Script, originScript: HTMLScriptElement): Comment | HTMLScriptElement {\n const replaceScript: HTMLScriptElement = document.createElement('script');\n setMarkElement(replaceScript);\n fetchSource(url)\n .then((code: string) => {\n script.setCode(code);\n try {\n replaceScript.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 replaceScript;\n}\nfunction createNewNode(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.origin);\n const replaceStyle = document.createElement('style');\n const styleInstance = new Style({\n code: '',\n fromHtml: false,\n url: href,\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.origin);\n const script = new Script({\n async: child.hasAttribute('async'),\n code: '',\n defer: child.defer || child.type === 'module',\n fromHtml: false,\n isModule: false,\n });\n appCache.setBaseAppScript(src, script);\n const replaceElement = getScriptSource(src, script, child);\n return replaceElement || child;\n }\n }\n return child;\n}\nfunction isLinkOrScript(node: Node) {\n return node instanceof HTMLLinkElement || node instanceof HTMLScriptElement;\n}\nexport function baseElementInertHandle(parent: Node, newChild: Node, passiveChild: Node | null, rawMethod: Function) {\n if (isLinkOrScript(newChild)) {\n const targetChild = createNewNode(newChild);\n return rawMethod.call(parent, targetChild, passiveChild);\n }\n return rawMethod.call(parent, newChild, passiveChild);\n}\nexport function baseElementAppendHandle(parent: Node, newChild: Node, rawMethod: Function) {\n if (isLinkOrScript(newChild)) {\n const targetChild = createNewNode(newChild);\n return rawMethod.call(parent, targetChild);\n }\n return rawMethod.call(parent, newChild);\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { Style } from '../entry/style';\nimport { randomUrl } from '../utils';\nimport { baseElementAppendHandle, baseElementInertHandle } from './element';\n\nexport function collectBaseSource() {\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 baseElementAppendHandle(this, newChild, rawBodyAppendChild);\n };\n HTMLHeadElement.prototype.appendChild = function <T extends Node>(newChild: T): T {\n return baseElementAppendHandle(this, newChild, rawHeadAppendChild);\n };\n HTMLHeadElement.prototype.insertBefore = function <T extends Node>(newChild: T, refChild: Node | null): T {\n return baseElementInertHandle(this, newChild, refChild, rawHeadInsertBefore);\n };\n window.addEventListener('load', () => {\n const nodeList: NodeListOf<HTMLStyleElement> = document.head.querySelectorAll('style');\n nodeList.forEach(node => {\n node.textContent &&\n appCache.setBaseAppStyle(\n randomUrl(),\n new Style({\n code: node.textContent,\n fromHtml: false,\n url: '',\n }),\n );\n });\n });\n}\n"],"names":["document","hasRewrite","bodyAppendChild"],"mappings":"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"}
1
+ {"version":3,"file":"collect-source.js","sources":["../src/common/state.ts","../src/context/cache.ts","../src/typings/source.ts","../src/utils/common.ts","../src/context/document.ts","../src/utils/custom.ts","../src/lifecircle/load.ts","../src/lifecircle/unmount.ts","../src/lifecircle/deactivated.ts","../src/utils/load-source.ts","../src/index.ts","../src/utils/fetch.ts","../src/entry/style.ts","../src/mode/instance.ts","../src/entry/script.ts","../src/utils/element.ts","../src/context/element.ts","../src/lifecircle/before-load.ts","../src/lifecircle/activated.ts","../src/component/web-compnent.ts","../src/typings/model.ts","../src/typings/sandbox.ts","../src/context/event.ts","../src/context/function.ts","../src/context/window.ts","../src/context/sandbox.ts","../src/mode/app.ts","../src/entry/entry.ts","../src/cache/app-cache.ts","../src/base-app/element.ts","../src/base-app/collect-source.ts"],"sourcesContent":["/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n// app status\nexport enum AppState {\n ACTIVATED = 'ACTIVATED',\n DEACTIVATED = 'DEACTIVATED',\n ERROR = 'ERROR',\n LOADED = 'LOADED',\n LOADING = 'LOADING',\n MOUNTED = 'MOUNTED',\n MOUNTING = 'MOUNTING',\n UNMOUNT = 'UNMOUNT',\n UNSET = 'UNSET',\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { 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\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;\nexport const windowNativeFuncMap = new Map<PropertyKey, true>();\n/**\n * 收集原生window方法\n */\nconst collectNativeWindowFunc = () => {\n Object.getOwnPropertyNames(window).forEach((key: any) => {\n if (\n !windowNativeFuncMap.has(key) &&\n key.match(/^[A-Z]/) &&\n typeof window[key] === 'function' &&\n window[key].toString().includes('[native code]')\n ) {\n windowNativeFuncMap.set(key, true);\n }\n });\n};\ncollectNativeWindowFunc();\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/**\n * 接口定义:样式选项\n */\nexport interface IStyleOption {\n code: string; // 样式代码\n fromHtml: boolean; // 是否来自 HTML\n initial?: boolean; // 是否初始样式\n prefetch?: boolean; // 是否预取样式\n preload?: boolean; // 是否预加载样式\n url?: string; // 样式文件的 URL\n}\n\nexport interface IScriptOption {\n async: boolean; // 是否为异步脚本\n code: string; // 脚本代码\n defer: boolean; // 是否为延迟脚本\n fromHtml: boolean; // 是否从 HTML 中提取\n initial?: boolean; // 是否为初始脚本\n isModule: boolean; // 是否为模块类型脚本\n url?: string; // 脚本的 URL 地址\n}\n\nexport const CSS_ATTRIBUTE_KEY = 'id';\n\nexport enum CssRuleEnum {\n MEDIA_RULE = 4,\n STYLE_RULE = 1,\n SUPPORTS_RULE = 12,\n}\ntype ValueOf<T> = T[keyof T];\nexport type DocumentEventListener = (this: Document, ev: ValueOf<DocumentEventMap>) => any;\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/**\n * 使用 nextTask 函数将回调函数添加到下一个任务队列中执行。\n * @param cb 回调函数\n * @returns Promise 对象,用于异步处理回调函数\n */\nexport const nextTask: (cb: () => void) => any = cb => Promise.resolve().then(cb);\n\n/**\n * 使用 nextTick 函数将回调函数添加到全局任务队列中执行。\n * 如果已经有任务在等待执行,则不会重复添加任务。\n * @param 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\n/**\n * 给 URL 添加协议头\n * @param url 要添加协议头的 URL\n * @returns 添加了协议头后的 URL\n */\nexport function addUrlProtocol(url: string): string {\n if (url.startsWith('//')) return `${location.protocol}${url}`;\n if (!url.startsWith('http')) return `${location.protocol}//${url}`;\n return url;\n}\n\n/**\n *\n * @param path 路径\n * @param baseURI 基础路径\n * @returns\n */\nexport function fillUpPath(path: string, baseURI: string): string {\n if (!path || /^((((ht|f)tps?)|file):)?\\/\\//.test(path) || /^(data|blob):/.test(path)) return path;\n const { origin, pathname } = new URL(addUrlProtocol(baseURI));\n return new URL(path, `${origin}${pathname}`.replace(/\\.(\\w+)$/, '/')).toString();\n}\n\n/**\n * 生成随机url\n */\nexport function randomUrl(): string {\n return `inline-${random(16)}`;\n}\n\n/**\n * requestIdleCallback polyfill\n */\nexport const requestIdleCallback =\n window.requestIdleCallback ||\n function (cb: CallableFunction) {\n const start = Date.now();\n return setTimeout(() => {\n cb({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, 50 - (Date.now() - start));\n },\n });\n }, 1);\n };\n\n/**\n * cancelIdleCallback polyfill\n */\nexport const cancelIdleCallback =\n window.cancelIdleCallback ||\n function (id: number) {\n clearTimeout(id);\n };\n\n/**\n *\n * @param n 生成字符串的长度\n * @param str 生成字符串的范围\n * @returns string\n */\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\n/**\n *\n * @param url string\n * @returns boolean\n * @description 判断是否是jsonp请求\n */\nexport const isJsonpUrl = (url: null | string) => {\n if (!url) return false;\n if (url.match(/\\.js$/)) return false;\n const { pathname } = new URL(addUrlProtocol(url));\n return !pathname.match(/\\.js$/);\n};\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { type BaseModel } from '../typings';\nimport { getCurrentRunningApp } from './cache';\n\nconst { document } = window;\nconst {\n createElement,\n getElementById,\n getElementsByClassName,\n getElementsByName,\n getElementsByTagName,\n querySelector,\n querySelectorAll,\n} = Document.prototype;\nconst { querySelector: bodyQuerySelector } = HTMLBodyElement.prototype;\nconst SPECIAL_ELEMENT_TAG = ['body', 'html', 'head'];\nlet hasRewrite = false;\nexport function rewriteDocumentPrototypeMethods() {\n if (hasRewrite) return;\n hasRewrite = true;\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 = 'xxx' iframe.src = 'xxx' 均不能在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 /**\n * 查询选择器的新方法\n * @param selectors 选择器字符串\n * @returns 匹配的元素或 null\n */\n function querySelectorNew(this: Document, selectors: string): any {\n const app = getCurrentRunningApp();\n // 如果选择器是特殊元素标签\n if (SPECIAL_ELEMENT_TAG.includes(selectors)) {\n // 如果当前应用程序容器是 ShadowRoot 类型\n if (app?.container instanceof ShadowRoot) {\n return app?.container;\n }\n if (this instanceof HTMLBodyElement) return bodyQuerySelector.call(this, selectors);\n // 否则调用原始的 querySelector 方法\n return querySelector.call(this, selectors);\n }\n\n // 如果没有当前应用程序或选择器为空或文档不是当前文档\n if (!app || !selectors || ![document, document.body].includes(this)) {\n if (this instanceof HTMLBodyElement) return bodyQuerySelector.call(this, selectors);\n // 调用原始的 querySelector 方法\n return querySelector.call(this, selectors);\n }\n\n // 返回当前应用程序容器中匹配选择器的元素,如果没有匹配的元素则返回 null\n return app?.container?.querySelector(selectors) ?? null;\n }\n\n /**\n * 重写了 Document 类的 querySelectorAll 方法\n * @param selectors - 要查询的选择器\n * @returns 匹配到的元素列表或空数组\n */\n function querySelectorAllNew(this: Document, selectors: string): any {\n const app = getCurrentRunningApp();\n\n // 如果选择器是特殊元素标签,则返回容器元素或调用原生 querySelector 方法\n if (SPECIAL_ELEMENT_TAG.includes(selectors)) {\n if (app?.container instanceof ShadowRoot) {\n return app?.container;\n }\n return querySelector.call(this, selectors);\n }\n\n // 如果没有运行中的应用程序、选择器为空或文档不是当前文档,则调用原生 querySelectorAll 方法\n if (!app || !selectors || document !== this) {\n return querySelectorAll.call(this, selectors);\n }\n\n // 返回运行中应用程序的容器元素中匹配到的元素列表或空数组\n return app?.container?.querySelectorAll(selectors) ?? [];\n }\n\n Document.prototype.querySelector = querySelectorNew;\n Document.prototype.querySelectorAll = querySelectorAllNew;\n HTMLBodyElement.prototype.querySelector = querySelectorNew;\n Document.prototype.getElementById = function getElementByIdNew(key: string): HTMLElement | null {\n return getCurrentRunningApp() ? querySelectorNew.call(this, `#${key}`) : getElementById.call(this, key);\n };\n Document.prototype.getElementsByClassName = function (key: string): HTMLCollectionOf<Element> {\n return getCurrentRunningApp() ? querySelectorAllNew.call(this, `.${key}`) : getElementsByClassName.call(this, key);\n };\n // eslint-disable-next-line max-len\n Document.prototype.getElementsByTagName = function <K extends keyof HTMLElementTagNameMap>(\n key: K,\n ): HTMLCollectionOf<Element> {\n const app = getCurrentRunningApp();\n if (!app || SPECIAL_ELEMENT_TAG.includes(key) || (!app?.showSourceCode && key.toLocaleLowerCase() === 'script')) {\n return getElementsByTagName.call(this, key);\n }\n return querySelectorAllNew.call(this, key);\n };\n Document.prototype.getElementsByName = function (key: string): NodeListOf<HTMLElement> {\n return getCurrentRunningApp() ? querySelectorAllNew.call(this, `[name=${key}]`) : getElementsByName.call(this, key);\n };\n}\n\nexport function resetDocumentPrototypeMethods(): void {\n Document.prototype.createElement = createElement;\n Document.prototype.querySelector = querySelector;\n HTMLBodyElement.prototype.querySelector = bodyQuerySelector;\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 hasRewrite = false;\n}\n// vue3.3之后会换成document 这些需要初始化调用的app\nexport function createRewriteDocument(rawDocument: Document, app: BaseModel) {\n return Object.defineProperty(rawDocument, 'createElement', {\n get() {\n app?.registerRunningApp();\n return Document.prototype.createElement;\n },\n });\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nconst ELEMENT_TARGET_NAME = ['currentTarget', 'srcElement', 'target'];\n/**\n *\n * @param event\n * @param element\n * @returns {Event} event\n * @description 为事件对象添加 element 属性\n */\nexport function defineEventSourceElement(element: HTMLLinkElement | HTMLScriptElement, eventName = 'custom'): Event {\n return Object.defineProperties(\n new CustomEvent(eventName),\n ELEMENT_TARGET_NAME.reduce<Record<PropertyKey, any>>((props, name) => {\n props[name] = {\n get() {\n return element;\n },\n };\n return props;\n }, {}),\n );\n}\n/**\n *\n * @param element HTMLLinkElement | HTMLScriptElement\n * @description 触发 link 或者 script 的 onload 事件\n */\nexport function dispatchLinkOrScriptLoad(element: HTMLLinkElement | HTMLScriptElement): void {\n const event = defineEventSourceElement(element, 'load');\n if (typeof element.onload === 'function') {\n element.onload!(event);\n return;\n }\n element.dispatchEvent(event);\n}\n/**\n *\n * @param element HTMLLinkElement | HTMLScriptElement\n * @description 触发 link 或者 script 的 onerror 事件\n */\nexport function dispatchLinkOrScriptError(element: HTMLLinkElement | HTMLScriptElement): void {\n const event = defineEventSourceElement(element, 'error');\n if (typeof element.onerror === 'function') {\n element.onerror!(event);\n return;\n }\n element.dispatchEvent(event);\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { MicroAppModel } from '../mode/app';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { BaseModel, IAppModleProps, IBaseModelProps, IJsModelProps, WewebMode } from '../typings';\nimport { beforeLoad } from './before-load';\n\nexport async function load(props: IBaseModelProps): Promise<BaseModel> {\n beforeLoad();\n if (props.mode === WewebMode.INSTANCE) return await loadInstance(props);\n return await loadApp(props);\n}\n// 加载app\nexport async function loadApp(props: IAppModleProps): Promise<MicroAppModel> {\n beforeLoad();\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 beforeLoad();\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.MOUNTING, AppState.UNSET].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","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { resetDocumentPrototypeMethods } from '../context/document';\nimport { resetBodyAndHeaderMethods } from '../context/element';\n\nexport function unmount(appKey: string) {\n const app = appCache.getApp(appKey);\n if (app && app.status !== AppState.UNMOUNT) {\n app.unmount();\n }\n if (!appCache.hasActiveApp) {\n resetBodyAndHeaderMethods();\n resetDocumentPrototypeMethods();\n }\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { resetDocumentPrototypeMethods } from '../context/document';\nimport { resetBodyAndHeaderMethods } from '../context/element';\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","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { 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 = SourceFuncType | string[];\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(\n str,\n new Script({\n async: false,\n code: script?.code || '',\n defer: false,\n fromHtml: false,\n initial: true,\n isModule: false,\n url: str,\n }),\n );\n } else if (url.pathname.match(/\\.css$/)) {\n const style = appCache.getCacheStyle(str);\n collectStyle.set(\n str,\n new Style({\n code: style?.code || '',\n fromHtml: true,\n initial: true,\n prefetch: false,\n preload: false,\n url: str,\n }),\n );\n }\n } catch {\n console.error(`【bk-weweb】: ${str} is invalid URL`);\n }\n });\n return {\n collectScript,\n collectStyle,\n };\n}\n// 加载全局静态资源\nexport async function loadGlobalSource(soruceList: SourceType) {\n const { collectScript, collectStyle } = await collectSource(soruceList);\n const promiseList: Promise<string>[] = [];\n collectScript &&\n Array.from(collectScript.entries()).forEach(item => {\n promiseList.push(item[1].getCode());\n appCache.setBaseAppScript(...item);\n });\n collectStyle &&\n 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","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { collectBaseSource } from './base-app/collect-source';\nimport BkWewebElement from './component/web-compnent';\nimport './context/cache';\nimport { FetchSourceType, IStartOption } from './typings';\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';\nexport { WewebMode } from './typings';\nconst CUSTOM_ELEMENT_TAG = 'bk-weweb';\nexport class WeWeb {\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, BkWewebElement);\n }\n }\n // 设置自定义dom标签名\n setWebComponentTag() {\n if (!window.customElements.get(this.webcomponentTag)) {\n window.customElements.define(this.webcomponentTag, BkWewebElement);\n }\n }\n // todo set some global start props\n start(option?: IStartOption) {\n // 是否收集主应用资源\n if (option?.collectBaseSource) {\n collectBaseSource();\n }\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}\nconst weWeb = new WeWeb();\nexport default weWeb;\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport 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","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/* eslint-disable no-param-reassign */\nimport { appCache } from '../cache/app-cache';\nimport { disabledStyleDom } from '../context/cache';\nimport { BaseModel, CssRuleEnum, IStyleOption } from '../typings';\nimport { setMarkElement } from '../utils';\nimport { addUrlProtocol, fillUpPath } from '../utils/common';\nimport { dispatchLinkOrScriptError, dispatchLinkOrScriptLoad } from '../utils/custom';\nimport { fetchSource } from '../utils/fetch';\n\nexport class Style {\n code = '';\n fromHtml: boolean;\n initial: boolean;\n prefetch = false;\n preload = false;\n scoped: boolean;\n scopedCode = '';\n url: string | undefined;\n constructor({ code, fromHtml, initial, prefetch, preload, url }: 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 commonScoped(templateStyle: HTMLStyleElement, styleElement: HTMLStyleElement, app: BaseModel) {\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 const cssText = this.resetUrlHost(scopedCss, app.url, this.url);\n styleElement.textContent = cssText;\n this.scopedCode = cssText;\n } else {\n const cssText = this.resetUrlHost(styleElement.textContent || templateStyle.textContent || '', app.url, this.url);\n // fix https://bugs.chromium.org/p/chromium/issues/detail?id=336876\n if (cssText && app.container instanceof ShadowRoot) {\n let fontContent = '';\n cssText.match(/@font-face\\s*\\{[^}]+\\}/g)?.forEach(fontFace => {\n fontContent += `${fontFace}\\n`;\n });\n const rawDocument = app.sandBox?.rawDocument;\n if (rawDocument && fontContent) {\n const fontStyle = rawDocument.createElement('style');\n fontStyle.setAttribute('type', 'text/css');\n fontStyle.setAttribute('powered-by', 'bk-weweb');\n fontStyle.textContent = fontContent;\n rawDocument?.head?.append(fontStyle);\n }\n }\n styleElement.textContent = cssText;\n }\n this.scoped = true;\n }\n createStyleElement() {\n const styleElement = document.createElement('style');\n if (styleElement.__BK_WEWEB_APP_KEY__) delete styleElement.__BK_WEWEB_APP_KEY__;\n return styleElement;\n }\n async excuteCode(app: BaseModel): Promise<HTMLStyleElement> {\n app.registerRunningApp();\n let styleElement = this.createStyleElement();\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 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 // 主应用已生效的样式 不再应用在子应用\n linkedBaseStyle(styleElement: HTMLStyleElement, app: BaseModel) {\n if (\n !(app.container instanceof ShadowRoot) &&\n styleElement.textContent &&\n appCache.getBaseAppStyle(styleElement.textContent)\n ) {\n styleElement.textContent = '';\n styleElement.innerHTML = '';\n styleElement.setAttribute('linked-from-base', 'true');\n return true;\n }\n return false;\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 const pathArr = linkpath.split('/');\n pathArr.pop();\n baseURI = addUrlProtocol(`${pathArr.join('/')}/`);\n }\n return `url(\"${fillUpPath($1, baseURI)}\")`;\n });\n }\n scopeRule(rules: CSSRule[], cssPrefix: string): string {\n let result = '';\n for (const rule of rules) {\n switch (rule.type) {\n case CssRuleEnum.STYLE_RULE:\n result += this.scopeStyleRule(rule as CSSStyleRule, cssPrefix);\n break;\n case CssRuleEnum.MEDIA_RULE:\n result += this.resetPackRule(rule as CSSMediaRule, cssPrefix, 'media');\n break;\n case CssRuleEnum.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 scopeStyleRule(rule: CSSStyleRule, prefix: string): string {\n const { cssText, selectorText } = 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 =>\n 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 scopedLinkCSS(app: BaseModel, linkElement: HTMLLinkElement): HTMLStyleElement {\n const styleElement = this.createStyleElement();\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(disabledStyleDom, styleElement, app);\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'], childList: false, subtree: false });\n }\n } catch {\n linkElement && dispatchLinkOrScriptError(linkElement);\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 if (this.linkedBaseStyle(styleElement, app)) return styleElement;\n disabledStyleDom.textContent = this.code;\n this.commonScoped(disabledStyleDom, styleElement, app);\n disabledStyleDom.textContent = '';\n } else {\n const observer = new MutationObserver(() => {\n if (!(styleElement.textContent || styleElement.sheet?.cssRules?.length)) return;\n observer.disconnect();\n if (!this.linkedBaseStyle(styleElement, app)) {\n this.commonScoped(styleElement, styleElement, app);\n }\n });\n observer.observe(styleElement, { attributes: false, characterData: true, childList: true, subtree: true });\n }\n this.url && styleElement.setAttribute('origin-src', this.url);\n return styleElement;\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?.append(...styleElementList);\n }\n });\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { setCurrentRunningApp } from '../context/cache';\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';\n\nexport class MicroInstanceModel implements BaseModel {\n private state: AppState = AppState.UNSET;\n appCacheKey: string;\n container?: HTMLElement | ShadowRoot;\n data: Record<string, unknown>;\n initSource: SourceType;\n isPreLoad = false;\n keepAlive: boolean;\n name: string;\n sandBox?: SandBox;\n scopeCss = true;\n scopeJs = false;\n showSourceCode = true;\n source?: EntrySource;\n url: string;\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 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: Element | Node) => {\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 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 onError(): void {\n this.state = AppState.ERROR;\n }\n onMount(): void {\n if (this.isPreLoad) return;\n this.state = AppState.LOADED;\n this.mount();\n }\n registerRunningApp() {\n setCurrentRunningApp(this);\n Promise.resolve().then(() => setCurrentRunningApp(null));\n }\n async start(): Promise<void> {\n if (!this.source || [AppState.ERROR, AppState.UNSET].includes(this.status)) {\n this.source = new EntrySource(this.url);\n await this.source.importEntery(this);\n }\n }\n set status(v: AppState) {\n this.state = v;\n }\n get status(): AppState {\n return this.state;\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}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-param-reassign */\nimport { appCache } from '../cache/app-cache';\nimport { MicroAppModel } from '../mode/app';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { BaseModel, IScriptOption } from '../typings';\nimport { setMarkElement } from '../utils';\nimport { fetchSource } from '../utils/fetch';\n\nlet firstGlobalProp: string | undefined;\nlet secondGlobalProp: string | undefined;\nlet lastGlobalProp: string | undefined;\n\n// Script脚本实例\nexport class Script {\n async = false;\n code = '';\n defer = false;\n exportInstance?: any;\n fromHtml: boolean;\n initial: boolean;\n isModule = false;\n scoped: boolean;\n url: string | undefined;\n\n constructor({ async, code, defer, fromHtml, initial, isModule, url }: 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 excuteCode(app: BaseModel, needRelaceScriptElement = false): Promise<Comment | HTMLScriptElement | undefined> {\n try {\n if (!this.code) await this.getCode(app);\n if (app instanceof MicroInstanceModel) {\n const golbalWindow = app.scopeJs ? app.sandBox?.proxyWindow || window : window;\n noteGlobalProps(golbalWindow);\n }\n let scopedCode = this.code;\n scopedCode = this.transformCode(app);\n if (app.showSourceCode || this.isModule) {\n const scriptElement = document.createElement('script');\n if (scriptElement.__BK_WEWEB_APP_KEY__) delete scriptElement.__BK_WEWEB_APP_KEY__;\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 golbalWindow = app.scopeJs ? app.sandBox?.proxyWindow || window : window;\n const exportProp: any = getGlobalProp(golbalWindow);\n if (exportProp) {\n this.exportInstance = golbalWindow[exportProp];\n // window 下需清除全局副作用\n if (!app.scopeJs) {\n delete golbalWindow[exportProp];\n }\n }\n }\n } catch (e) {\n console.error('execute script code error', e);\n }\n return;\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 executeSourceScript(scriptElement: HTMLScriptElement, scopedCode: string): void {\n if (this.isModule) {\n if (this.url?.match(/\\.ts$/)) {\n scriptElement.src = this.url;\n } else {\n const blob = new Blob([scopedCode], { type: 'text/javascript' });\n scriptElement.src = URL.createObjectURL(blob);\n }\n scriptElement.setAttribute('type', 'module');\n } else {\n scriptElement.textContent = scopedCode;\n }\n this.url && scriptElement.setAttribute('origin-src', this.url);\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 setCode(code: string) {\n this.code = code;\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}\n// 全局属性是否跳过标记\nexport function shouldSkipProperty(global: Window, p: any) {\n return (\n !global.hasOwnProperty(p) ||\n (!isNaN(p) && p < global.length) ||\n (typeof navigator !== 'undefined' &&\n navigator.userAgent.indexOf('Trident') !== -1 &&\n global[p] &&\n typeof window !== 'undefined' &&\n 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<Comment | HTMLScriptElement | undefined>[] = [];\n const asyncScriptList: Promise<Comment | HTMLScriptElement | 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]).catch(e => {\n console.error(e);\n });\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\nimport { BaseModel } from '../typings';\nimport { isJsonpUrl, randomUrl } from './common';\nimport { dispatchLinkOrScriptLoad } from './custom';\n\nconst { appendChild: bodyAppendChild } = HTMLBodyElement.prototype;\nexport function resetNewElement(parent: Node, child: Node, app: BaseModel): 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.textContent) {\n // 父级应用样式已生效情况下 即可忽略子应用对应样式 webcomponent的隔离下优化不生效\n if (!(app.container instanceof ShadowRoot) && appCache.getBaseAppStyle(child.textContent)) {\n return document.createComment('【bk-weweb】style is effective in base app');\n }\n }\n // else {\n // const observer = new MutationObserver(() => {\n // if (child.textContent) {\n // observer.disconnect();\n // if (!(app.container instanceof ShadowRoot)\n // && appCache.getBaseAppStyle(child.textContent)) {\n // debugger;\n // console.info('--------------');\n // child.sheet!.disabled = true;\n // child.setAttribute('aaaaaaaaaaaa', '------');\n // parent.removeChild(child);\n // }\n // }\n // });\n // observer.observe(child, { attributeFilter: ['src'], childList: true, subtree: false });\n // }\n if (!child.hasAttribute('ignore')) {\n const styleInstance = new Style({\n code: child.textContent || '',\n fromHtml: false,\n url: '',\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 // 处理异步jsonp\n if (isJsonpUrl(child.getAttribute('src'))) {\n app.container?.append(child);\n return;\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 async: false,\n code: child.textContent,\n defer: child.type === 'module',\n fromHtml: false,\n isModule: child.type === 'module',\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 || node instanceof HTMLStyleElement || node instanceof HTMLLinkElement;\n}\nexport function elmentAppendHandler(parent: Node, newChild: Node, rawMethod: Function) {\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(parent: Node, newChild: Node, passiveChild: Node | null, rawMethod: Function) {\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 setMarkElement(targetChild as Element, app, needKeepAlive);\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 && app) {\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","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { fillUpPath } from '../utils/common';\nimport { elementInsertHandler, elmentAppendHandler, isSepcailElement } from '../utils/element';\nimport { setCurrentRunningApp } from './cache';\n\nconst { setAttribute } = Element.prototype;\n\nconst {\n append,\n appendChild: bodyAppendChild,\n insertBefore: bodyInsertBefore,\n removeChild: bodyRemoveChild,\n} = HTMLBodyElement.prototype;\nconst {\n appendChild: headAppendChild,\n insertBefore: headInsertBefore,\n removeChild: headRemoveChild,\n} = HTMLHeadElement.prototype;\nconst rawHead = document.head;\nlet hasRewrite = false;\nexport function rewriteBodyAndHeaderMethods(): void {\n if (hasRewrite) return;\n hasRewrite = true;\n Element.prototype.setAttribute = function (key: string, value: string): void {\n const tagName = this.tagName.toLocaleUpperCase();\n if (\n ((['src', 'srcset'].includes(key) && ['IMG', 'SCRIPT'].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 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 nodes.forEach(node => {\n // keepalive link script style set in head\n if (node.__KEEP_ALIVE__ && isSepcailElement(node)) {\n return (headAppendChild as any).call(rawHead, node);\n }\n elmentAppendHandler(this, node as Node, bodyAppendChild);\n });\n };\n HTMLHeadElement.prototype.appendChild = HTMLBodyElement.prototype.appendChild;\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.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 }\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 HTMLBodyElement.prototype.insertBefore = bodyInsertBefore;\n HTMLHeadElement.prototype.appendChild = headAppendChild;\n HTMLHeadElement.prototype.insertBefore = headInsertBefore;\n HTMLHeadElement.prototype.removeChild = headRemoveChild;\n hasRewrite = false;\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { rewriteDocumentPrototypeMethods } from '../context/document';\nimport { rewriteBodyAndHeaderMethods } from '../context/element';\n\nexport function beforeLoad() {\n rewriteBodyAndHeaderMethods();\n rewriteDocumentPrototypeMethods();\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { BaseModel } from '../typings';\nimport { nextTask } from '../utils/common';\nimport { beforeLoad } from './before-load';\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(() => {\n beforeLoad();\n app.activated(container, callback);\n });\n } else {\n app &&\n nextTask(() => {\n beforeLoad();\n app.mount(container, callback);\n });\n }\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { activated } from '../lifecircle/activated';\nimport { deactivated } from '../lifecircle/deactivated';\nimport { load } from '../lifecircle/load';\nimport { unmount } from '../lifecircle/unmount';\nimport { IAppModleProps, IJsModelProps, WewebMode } from '../typings';\n// bk-weweb支持的属性配置\nexport enum WewebCustomAttrs {\n data = 'data',\n id = 'id',\n keepAlive = 'keepAlive',\n mode = 'mode',\n scopeCss = 'scopeCss',\n scopeJs = 'scopeJs',\n scopeLocation = 'scopeLocation',\n setShodowDom = 'setShodowDom',\n showSourceCode = 'showSourceCode',\n url = 'url',\n}\nexport default class BkWewebElement extends HTMLElement {\n private appUrl = '';\n private connected = false;\n static get observedAttributes(): string[] {\n return [WewebCustomAttrs.url];\n }\n private getBooleanAttr(name: string): boolean | undefined {\n return this.hasAttribute(name) ? this.getAttribute(name) !== 'false' : undefined;\n }\n private async handleAttributeChanged(): Promise<void> {\n if (!this.appKey) return;\n if (this.getBooleanAttr(WewebCustomAttrs.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 get appData(): Record<string, unknown> {\n if (this.hasAttribute(WewebCustomAttrs.data)) {\n try {\n return JSON.parse(this.getAttribute(WewebCustomAttrs.data)!);\n } catch {}\n }\n return {};\n }\n // 考虑到js模式下 需要js bundle的复用性 需用户设置id属性 如果单实例下则可以不用配置\n get appKey(): null | string {\n return this.getAttribute(WewebCustomAttrs.id) || this.getAttribute(WewebCustomAttrs.url);\n }\n get appProps(): IAppModleProps | IJsModelProps {\n if (this.getAttribute('mode') === WewebMode.INSTANCE) {\n return {\n container: this.shadowRoot ?? this,\n data: this.appData,\n id: this.appKey!,\n keepAlive: this.getBooleanAttr(WewebCustomAttrs.keepAlive),\n mode: WewebMode.INSTANCE,\n scopeCss: this.getBooleanAttr(WewebCustomAttrs.scopeCss) && !this.getBooleanAttr(WewebCustomAttrs.setShodowDom),\n scopeJs: this.getBooleanAttr(WewebCustomAttrs.scopeJs),\n showSourceCode: this.getBooleanAttr(WewebCustomAttrs.showSourceCode),\n url: this.getAttribute(WewebCustomAttrs.url)!,\n };\n }\n return {\n container: this.shadowRoot ?? this,\n data: this.appData,\n id: this.appKey!,\n keepAlive: this.getBooleanAttr(WewebCustomAttrs.keepAlive),\n mode: WewebMode.APP,\n scopeCss: !this.getBooleanAttr(WewebCustomAttrs.setShodowDom),\n scopeJs: !this.getBooleanAttr(WewebCustomAttrs.scopeJs),\n scopeLocation: this.getBooleanAttr(WewebCustomAttrs.scopeLocation),\n showSourceCode: this.getBooleanAttr(WewebCustomAttrs.showSourceCode),\n url: this.getAttribute(WewebCustomAttrs.url)!,\n };\n }\n attributeChangedCallback(attr: WewebCustomAttrs, _oldVal: string, newVal: string): void {\n if (attr !== WewebCustomAttrs.url || (this as any)[attr] === newVal || !this.connected) return;\n this.appUrl = newVal;\n const cacheApp = appCache.getApp(this.appKey!);\n (this.connected || cacheApp) && this.handleAttributeChanged();\n }\n async connectedCallback(): Promise<void> {\n if (this.getBooleanAttr(WewebCustomAttrs.setShodowDom) && !this.shadowRoot) {\n this.attachShadow({ delegatesFocus: false, mode: 'open' });\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}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { AppState } from '../common';\nimport { WewebCustomAttrs } from '../component/web-compnent';\nimport SandBox from '../context/sandbox';\nimport { EntrySource } from '../entry/entry';\nimport { SourceType } from '../utils/load-source';\n\nexport interface IComponentProps {\n // 传递给子应用的数据 默认保存\n [WewebCustomAttrs.data]?: string;\n // entry mode js | config | html 默认 html\n [WewebCustomAttrs.mode]?: WewebMode;\n // 是否共享主应用路由\n [WewebCustomAttrs.scopeLocation]?: boolean;\n // 是否使用shadowDom\n [WewebCustomAttrs.setShodowDom]?: boolean;\n // 是否在dom上显示源码 默认不显示 内存执行\n [WewebCustomAttrs.showSourceCode]?: boolean;\n // url 必选\n [WewebCustomAttrs.url]: string;\n}\n\n// 基础属性接口\nexport interface IBaseModelProps {\n // entry mode js | config | html 默认 html\n [WewebCustomAttrs.mode]?: WewebMode;\n // url 必选\n [WewebCustomAttrs.url]: string;\n id?: null | string;\n // 是否是预加载\n isPreLoad?: boolean;\n}\n\n// app模式属性配置\nexport interface IAppModleProps extends IBaseModelProps {\n // 传递给子应用的数据 默认保存\n [WewebCustomAttrs.data]?: Record<string, unknown>;\n // 是否缓存dom\n [WewebCustomAttrs.keepAlive]?: boolean;\n // 是否启用样式隔离 默认隔离\n [WewebCustomAttrs.scopeCss]?: boolean;\n // 是否使用沙盒隔离 默认隔离\n [WewebCustomAttrs.scopeJs]?: boolean;\n // 是否共享主应用路由\n [WewebCustomAttrs.scopeLocation]?: boolean;\n // 是否使用shadowDom\n [WewebCustomAttrs.setShodowDom]?: boolean;\n // 是否在dom上显示源码 默认不显示 内存执行\n [WewebCustomAttrs.showSourceCode]?: boolean;\n container?: HTMLElement | ShadowRoot | null;\n // 初始化source 如 ['http://www.hostname.com/a.js', 'http://www.hostname.com/b.css']\n initSource?: SourceType;\n}\n\nexport interface IJsModelProps extends IBaseModelProps {\n // 传递给实例render方法的数据\n [WewebCustomAttrs.data]?: Record<string, unknown>;\n // 是否在dom上显示源码 默认显示\n [WewebCustomAttrs.showSourceCode]?: boolean;\n // 容器\n container?: HTMLElement | ShadowRoot | null;\n // 初始化source 如 ['http://www.hostname.com/a.js', 'http://www.hostname.com/b.css']\n initSource?: SourceType;\n // 是否缓存dom\n keepAlive?: boolean;\n // 是否启用样式隔离 默认隔离\n scopeCss?: boolean;\n // 是否使用沙盒隔离 默认不隔离\n scopeJs?: boolean;\n}\n\nexport interface BaseModel {\n activated<T>(container: HTMLElement | ShadowRoot, callback?: (instance: BaseModel, exportInstance?: T) => void): void;\n container?: HTMLElement | ShadowRoot;\n deactivated(): void;\n get appCacheKey(): string;\n get status(): AppState;\n set status(v: AppState);\n // 初始化source 如 ['http://www.hostname.com/a.js', 'http://www.hostname.com/b.css']\n // eslint-disable-next-line perfectionist/sort-interfaces\n initSource?: SourceType;\n isPreLoad: boolean;\n keepAlive?: boolean;\n mount<T>(container?: HTMLElement | ShadowRoot, callback?: (instance: BaseModel, exportInstance?: T) => void): void;\n name: string;\n onError(): void;\n onMount(): void;\n registerRunningApp(): void;\n sandBox?: SandBox;\n // 是否启用样式隔离 默认隔离\n scopeCss?: boolean;\n scopeJs: boolean;\n showSourceCode?: boolean;\n source?: EntrySource;\n start(): Promise<void>;\n unmount(needDestroy?: boolean): void;\n url: string;\n}\n\nexport enum WewebMode {\n 'APP' = 'app',\n 'CONFIG' = 'config',\n 'INSTANCE' = 'js',\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/**\n * Interface for injecting window attributes.\n */\nexport interface IInjectWindowAttrs {\n __BK_WEWEB_APP_KEY__: string; // The app key for the BK WEWEB platform.\n __BK_WEWEB_DATA__: Record<string, unknown>; // Additional data for BK WEWEB.\n __POWERED_BY_BK_WEWEB__: boolean; // Indicates if the page is powered by BK WEWEB.\n rawDocument: Document; // The original document object.\n rawWindow: Window; // The original window object.\n}\n\nexport const WINDOW_WHITE_LIST: PropertyKey[] = [\n 'System', // SystemJS\n '__cjsWrapper', // SystemJS CommonJS wrapper\n process.env.NODE_ENV !== 'production' ? '__REACT_DEVTOOLS_GLOBAL_HOOK__' : '',\n];\n// 一定需要在子应用自身上下文获取的属性名\nexport const BK_WEWEB_INJECT_KEY_LIST: PropertyKey[] = [\n '__POWERED_BY_BK_WEWEB__',\n '__BK_WEWEB_APP_KEY__',\n '__BK_WEWEB_DATA__',\n];\nexport const WINDOW_ALIAS_LIST: PropertyKey[] = ['window', 'self', 'globalThis'];\n// 设置了scopedLocation 后需要监听属性名\nexport const BK_WEWEB_LOCATION_KEY_LIST: PropertyKey[] = ['location', 'history'];\nexport const DEV_MICRO_APP_WINDOE_KEY_MAP: Record<PropertyKey, true> =\n process.env.NODE_ENV !== 'production'\n ? {\n __DEV__: true,\n __VUE_DEVTOOLS_GLOBAL_HOOK__: true,\n __VUE_DEVTOOLS_HOOK_REPLAY__: true,\n __VUE_DEVTOOLS_PLUGINS__: true,\n __VUE_I18N_FULL_INSTALL__: true,\n __VUE_I18N_LEGACY_API__: true,\n __VUE_OPTIONS_API__: true,\n __bk_pop_manager: true,\n __bk_zIndex_manager: true,\n '__core-js_shared__': true,\n i18n: true,\n webpackChunkapm: true,\n webpackChunkpc: true,\n webpackChunktrace: true,\n webpackJsonp: true,\n }\n : {};\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { DocumentEventListener } from '../typings';\nimport { getCurrentRunningApp } from './cache';\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 const documentListenerMap = new Map<keyof DocumentEventMap, DocumentEventListener[]>();\n document.addEventListener = function <K extends keyof DocumentEventMap>(\n type: K,\n listener: DocumentEventListener,\n options?: AddEventListenerOptions | boolean | undefined,\n ): void {\n const app = getCurrentRunningApp();\n if (app?.keepAlive) {\n const listeners = documentListenerMap.get(type) || [];\n documentListenerMap.set(type, [...listeners, listener]);\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?: AddEventListenerOptions | boolean,\n ): void {\n const app = getCurrentRunningApp();\n if (app?.keepAlive) {\n const listeners = documentListenerMap.get(type) || [];\n if (listeners.length && listeners.some(l => l === listener)) {\n listeners.splice(listeners.indexOf(listener), 1);\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 const app = getCurrentRunningApp();\n if (app?.keepAlive && documentListenerMap.values()) {\n Array.from(documentListenerMap.entries()).forEach(([type, listeners]) => {\n listeners?.forEach(listener => {\n document.removeEventListener.call(document, type, listener);\n });\n });\n }\n document.addEventListener = addEventListener;\n document.body.addEventListener = bodyAddEventListener;\n document.removeEventListener = removeEventListener;\n document.body.removeEventListener = bodyRemoveEventListener;\n documentListenerMap.clear();\n }\n return {\n resetDocumentAndBodyEvent,\n };\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/* eslint-disable max-len */\n/* eslint-disable no-prototype-builtins */\n// 正则表达式,用于匹配类定义\nconst CLASS_REGEX = /^class\\b/;\n\n// 正则表达式,用于匹配以大写字母开头的函数定义\nconst COMMON_CONTRUCT_FU_REGEX = /^function\\b\\s[A-Z].*/;\n\n// WeakMap 对象,用于缓存构造函数是否可实例化的结果\nconst ConstructFunCacheMap = new WeakMap<FunctionConstructor | any, boolean>();\n\n/**\n * 判断一个函数是否可实例化\n * @param fn - 要判断的函数\n * @returns 可实例化返回 true,否则返回 false\n */\nexport function isConstructFun(fn: () => FunctionConstructor | any) {\n // 如果函数的原型的构造函数等于函数本身,并且原型对象上有超过一个属性,则认为是可实例化的\n if (fn.prototype?.constructor === fn && Object.getOwnPropertyNames(fn.prototype).length > 1) {\n return true;\n }\n\n // 如果在缓存中已经存在该函数的判断结果,则直接返回\n if (ConstructFunCacheMap.has(fn)) {\n return ConstructFunCacheMap.get(fn);\n }\n\n // 使用正则表达式测试函数的字符串表示,判断是否可实例化\n const constructable = COMMON_CONTRUCT_FU_REGEX.test(fn.toString()) || CLASS_REGEX.test(fn.toString());\n\n // 将判断结果保存到缓存中\n ConstructFunCacheMap.set(fn, constructable);\n\n return constructable;\n}\n\n// 创建一个弱映射,用于存储函数和其绑定版本之间的关系\nconst functionBoundedValueMap = new WeakMap<CallableFunction, CallableFunction>();\n\n// 导出默认函数,用于将给定的值绑定到原始窗口对象\nexport default function bindFunctionToRawWindow(rawWindow: Window, value: any): unknown {\n // 如果值已经存在于映射中,直接返回与该值相关联的绑定版本\n if (functionBoundedValueMap.has(value)) {\n return functionBoundedValueMap.get(value);\n }\n // 如果值是一个函数且不是构造函数\n if (typeof value === 'function' && !isConstructFun(value)) {\n // 创建一个绑定到原始窗口对象的函数\n const boundValue = Function.prototype.bind.call(value, rawWindow);\n // 将原始函数的属性复制到绑定版本上\n for (const key in value) {\n boundValue[key] = value[key];\n }\n // 如果原始函数拥有原型并且绑定版本没有原型\n if (value.hasOwnProperty('prototype') && !boundValue.hasOwnProperty('prototype')) {\n // 将原始函数的原型属性设置到绑定版本上\n Object.defineProperty(boundValue, 'prototype', { enumerable: false, value: value.prototype, writable: true });\n }\n // 如果原始函数拥有 toString 方法\n if (typeof value.toString === 'function') {\n // 检查原始函数是否拥有 toString 属性,且绑定版本没有该属性\n const valueHasInstanceToString = value.hasOwnProperty('toString') && !boundValue.hasOwnProperty('toString');\n // 检查绑定版本的 toString 是否与 Function.prototype.toString 相同\n const boundValueHasPrototypeToString = boundValue.toString === Function.prototype.toString;\n\n // 如果原始函数的 toString 属性需要继承\n if (valueHasInstanceToString || boundValueHasPrototypeToString) {\n // 获取原始 toString 属性的描述符\n const originToStringDescriptor = Object.getOwnPropertyDescriptor(\n valueHasInstanceToString ? value : Function.prototype,\n 'toString',\n );\n\n // 将绑定版本的 toString 属性设置为与原始函数相同的方法\n Object.defineProperty(boundValue, 'toString', {\n ...originToStringDescriptor,\n ...(originToStringDescriptor?.get ? null : { value: () => value.toString() }),\n });\n }\n }\n // 将原始函数和绑定版本存储到映射中\n functionBoundedValueMap.set(value, boundValue);\n // 返回绑定版本\n return boundValue;\n }\n // 如果不是函数或是构造函数,则直接返回原始值\n return value;\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/* eslint-disable no-param-reassign */\nimport { DocumentEventListener } from '../typings';\n// rewrite window funtion like settimeout setinterval ...\nexport function rewriteWindowFunction(fakeWindow: Window & any): Record<string, CallableFunction> {\n const windowEventLisenerMap = new Map<string, DocumentEventListener[]>();\n const intervalTimerList: ReturnType<typeof setInterval>[] = [];\n const rawWindow = window;\n const { addEventListener, clearInterval, removeEventListener, setInterval } = window;\n\n fakeWindow.addEventListener = function (\n type: string,\n listener: DocumentEventListener,\n options?: AddEventListenerOptions | boolean,\n ): void {\n windowEventLisenerMap.set(type, [...(windowEventLisenerMap.get(type) || []), listener]);\n addEventListener.call(rawWindow, type, listener, options);\n };\n fakeWindow.removeEventListener = function (\n type: string,\n listener: DocumentEventListener,\n options?: AddEventListenerOptions | boolean,\n ): void {\n const listenerList = windowEventLisenerMap.get(type);\n if (listenerList?.length) {\n const index = listenerList.indexOf(listener);\n index > -1 && listenerList.splice(index, 1);\n }\n removeEventListener.call(rawWindow, type, listener, options);\n };\n fakeWindow.setInterval = function (\n handler: TimerHandler | string,\n timeout?: number | undefined,\n ...args: any[]\n ): ReturnType<typeof setInterval> {\n const timer = setInterval.call(rawWindow, handler as any, timeout, ...(args as []));\n intervalTimerList.push(timer);\n return timer;\n };\n fakeWindow.clearInterval = function (timer: ReturnType<typeof setInterval>) {\n const index = intervalTimerList.indexOf(timer);\n index > -1 && intervalTimerList.splice(index, 1);\n clearInterval.call(rawWindow, timer as any);\n };\n // reset all event listener & interval & timeout when unmount app\n function resetWindowFunction() {\n // clear window events listener\n if (windowEventLisenerMap.size) {\n windowEventLisenerMap.forEach((listenerList, type) => {\n listenerList.forEach(listener => removeEventListener.call(rawWindow, type, listener));\n });\n windowEventLisenerMap.clear();\n }\n // clear settimeout timers\n if (intervalTimerList.length) {\n intervalTimerList.forEach(timer => {\n clearInterval.call(rawWindow, timer);\n });\n }\n }\n return {\n resetWindowFunction,\n };\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/* eslint-disable no-new-func */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\nimport { MicroAppModel } from '../mode/app';\nimport {\n BK_WEWEB_INJECT_KEY_LIST,\n BK_WEWEB_LOCATION_KEY_LIST,\n BaseModel,\n DEV_MICRO_APP_WINDOE_KEY_MAP,\n IInjectWindowAttrs,\n WINDOW_ALIAS_LIST,\n WINDOW_WHITE_LIST,\n} from '../typings';\nimport { random } from '../utils/common';\nimport { windowNativeFuncMap } from './cache';\nimport { createRewriteDocument } from './document';\nimport { rewriteDocumentAndBodyEvent } from './event';\nimport bindFunctionToRawWindow from './function';\nimport { rewriteWindowFunction } from './window';\n\nexport default class SandBox {\n private active = false;\n private inRawWindowKeySet = new Set<PropertyKey>();\n private resetDocumentAndBodyEvent?: CallableFunction;\n private resetWindowFunction: CallableFunction;\n private sameRawWindowKeySet = new Set<PropertyKey>();\n\n public fakeWindow: Window & IInjectWindowAttrs = {} as any;\n public proxyWindow: WindowProxy & IInjectWindowAttrs;\n public rawDocument: Document;\n public rawWindow: Window;\n public windowSymbolKey: keyof Window;\n constructor(public app: BaseModel) {\n const windowDescriptorSet = new Set<PropertyKey>();\n const rawWindow = window;\n const rawDocument = createRewriteDocument(document, this.app);\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(/(-|,|:|~|'|\")/gim, '_')}_${random(\n 10,\n )}__` as keyof Window;\n this.proxyWindow = new Proxy(this.fakeWindow, {\n // Object.defineProperty(window, key, Descriptor)\n defineProperty: (target: Window & any, key: PropertyKey, value: PropertyDescriptor): boolean => {\n if (windowDescriptorSet.has(key)) {\n return Reflect.defineProperty(rawWindow, key, value);\n }\n return Reflect.defineProperty(target, key, value);\n },\n deleteProperty: (target: Window & any, key: PropertyKey): boolean => {\n if (target.hasOwnProperty(key)) {\n this.sameRawWindowKeySet.has(key) && this.sameRawWindowKeySet.delete(key);\n this.inRawWindowKeySet.has(key) && Reflect.deleteProperty(rawWindow, key);\n return Reflect.deleteProperty(target, key);\n }\n return true;\n },\n get: (target: Window, key: string | symbol): unknown => {\n if (windowNativeFuncMap.has(key) || key === Symbol.unscopables) return rawWindow[key as any];\n if (DEV_MICRO_APP_WINDOE_KEY_MAP[key]) return this.fakeWindow[key as any];\n if (WINDOW_ALIAS_LIST.includes(key as string)) return this.proxyWindow;\n if (key === 'document') {\n app.registerRunningApp();\n return rawDocument;\n }\n if (key === 'eval') {\n app.registerRunningApp();\n // eslint-disable-next-line no-eval\n return eval;\n }\n if (\n BK_WEWEB_LOCATION_KEY_LIST.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 === 'hasOwnProperty')\n 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 (Reflect.has(target, key) || BK_WEWEB_INJECT_KEY_LIST.includes(key)) return Reflect.get(target, key);\n const rawValue = Reflect.get(rawWindow, key);\n return bindFunctionToRawWindow(rawWindow, rawValue);\n },\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 windowDescriptorSet.add(key);\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 has: (target: Window & any, key: PropertyKey): boolean =>\n windowNativeFuncMap.has(key) || key in target || key in rawWindow,\n // Object.getOwnPropertyNames(window)\n ownKeys: (target: Window & any): Array<string | symbol> =>\n Array.from(new Set(Reflect.ownKeys(rawWindow).concat(Reflect.ownKeys(target)))),\n set: (target: any, key: PropertyKey, value: unknown): boolean => {\n if (this.active) {\n // 设置了scope location,需要同步到iframe\n if (\n BK_WEWEB_LOCATION_KEY_LIST.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 // 共享主应用 location\n if (key === 'location') {\n Reflect.set(rawWindow, key, value);\n } else if (\n !target.hasOwnProperty(key) &&\n rawWindow.hasOwnProperty(key) &&\n !BK_WEWEB_INJECT_KEY_LIST.includes(key)\n ) {\n const descriptor = Object.getOwnPropertyDescriptor(rawWindow, key);\n const { configurable, enumerable, writable } = descriptor!;\n if (writable) {\n Object.defineProperty(target, key, {\n configurable,\n enumerable,\n value,\n writable,\n });\n this.sameRawWindowKeySet.add(key);\n }\n } else {\n Reflect.set(target, key, value);\n this.sameRawWindowKeySet.add(key);\n }\n if (\n WINDOW_WHITE_LIST.includes(key) &&\n !Reflect.has(rawWindow, key) &&\n !BK_WEWEB_INJECT_KEY_LIST.includes(key)\n ) {\n Reflect.set(rawWindow, key, value);\n this.inRawWindowKeySet.add(key);\n }\n }\n return true;\n },\n });\n if (app.showSourceCode) {\n rawWindow[this.windowSymbolKey as any] = this.proxyWindow;\n }\n }\n /**\n *\n * @param data data for sandbox\n * @description active hook for sandbox\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 /**\n *\n * @description decativated hook for sandbox\n */\n deactivated(): void {\n if (!this.active) return;\n this.active = false;\n this.resetWindowFunction();\n this.inRawWindowKeySet.forEach((key: PropertyKey) => Reflect.deleteProperty(window, key));\n this.inRawWindowKeySet.clear();\n this.resetDocumentAndBodyEvent?.();\n }\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { AppState } from '../common';\nimport { setCurrentRunningApp } from '../context/cache';\nimport SandBox from '../context/sandbox';\nimport { EntrySource } from '../entry/entry';\nimport { execAppScripts } from '../entry/script';\nimport { BaseModel, CSS_ATTRIBUTE_KEY, IAppModleProps, WewebMode } from '../typings';\nimport { addUrlProtocol, random } from '../utils/common';\nimport { SourceType } from '../utils/load-source';\n\nconst BLANK_ORIGN = 'about:blank';\nexport class MicroAppModel implements BaseModel {\n private state: AppState = AppState.UNSET;\n container?: HTMLElement | ShadowRoot;\n public data: Record<string, unknown>;\n iframe: HTMLIFrameElement | null = null;\n initSource: SourceType;\n public isPreLoad = false;\n keepAlive: boolean;\n mode: WewebMode = WewebMode.APP;\n name: string;\n sandBox?: SandBox;\n scopeCss: boolean;\n scopeJs: boolean;\n scopeLocation: boolean;\n showSourceCode: boolean;\n source?: EntrySource;\n url: string;\n constructor(props: IAppModleProps) {\n this.name = props.id !== props.url ? props.id! : random(5);\n this.mode = props.mode ?? WewebMode.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 activated(container: HTMLElement | ShadowRoot, callback?: (app: BaseModel) => void) {\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: Element | Node) => {\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 get appCacheKey(): string {\n return this.url;\n }\n createIframe(): Promise<HTMLIFrameElement> {\n return new Promise(resolve => {\n const iframe = document.createElement('iframe');\n const url = new URL(addUrlProtocol(this.url));\n const isChrome = navigator.userAgent.indexOf('Chrome') > -1;\n iframe.setAttribute(\n 'src',\n `${isChrome ? BLANK_ORIGN : location.origin}${url.pathname || '/'}${url.search}${url.hash}`,\n );\n iframe.style.cssText = 'display: none;';\n document.body.appendChild(iframe);\n if (isChrome) {\n setTimeout(() => resolve(iframe), 0);\n } else {\n // 其他浏览器在about:blank下会出现同源检测安全错误 换另一种方式来做location保持\n const interval = setInterval(() => {\n if (iframe.contentWindow && iframe.contentWindow.location.href !== BLANK_ORIGN) {\n iframe.contentWindow!.stop();\n iframe.contentDocument!.body.parentElement!.innerHTML = '<head></head><body></body>';\n clearInterval(interval);\n resolve(iframe);\n }\n }, 0);\n }\n });\n }\n deactivated() {\n this.state = AppState.DEACTIVATED;\n this.sandBox?.deactivated();\n }\n mount(container?: HTMLElement | ShadowRoot, callback?: (app: BaseModel) => void): 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: Element | Node) => {\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 onError(): void {\n this.state = AppState.ERROR;\n }\n onMount(): void {\n if (this.isPreLoad) return;\n this.state = AppState.LOADED;\n this.mount();\n }\n registerRunningApp() {\n setCurrentRunningApp(this);\n Promise.resolve().then(() => setCurrentRunningApp(null));\n }\n async start() {\n if (!this.source || [AppState.ERROR, AppState.UNSET].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 public get status() {\n return this.state;\n }\n public set status(v: AppState) {\n this.state = v;\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}\nexport const createApp = (props: IAppModleProps) => {\n appCache.deleteApp(props.url);\n const instance = new MicroAppModel(props);\n appCache.setApp(instance);\n};\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { MicroAppModel } from '../mode/app';\nimport { MicroInstanceModel } from '../mode/instance';\nimport { BaseModel, IScriptOption } from '../typings';\nimport { addUrlProtocol, fillUpPath, isJsonpUrl, randomUrl } from '../utils/common';\nimport { fetchSource } from '../utils/fetch';\nimport { collectSource } from '../utils/load-source';\nimport { Script } from './script';\nimport { Style, excuteAppStyles } from './style';\n\nconst SCRIPT_TYPE_NAMES = [\n 'text/javascript',\n 'text/ecmascript',\n 'application/javascript',\n 'application/ecmascript',\n 'module',\n];\nexport class EntrySource {\n html: HTMLElement | null = null;\n rawHtml?: string;\n scripts: Map<string, Script>;\n styles: Map<string, Style>;\n constructor(public url: string) {\n this.scripts = new Map();\n this.styles = new Map();\n }\n collectLink(\n link: HTMLLinkElement,\n parent: Node,\n needReplaceELement = false,\n ): { replace: Comment | Element; 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 fromHtml: !needReplaceELement,\n prefetch: !!link.getAttribute('prefetch'),\n preload: !!link.getAttribute('preload'),\n url: href,\n });\n this.styles.set(href, styleInstance);\n }\n !needReplaceELement && parent.replaceChild(replaceElement, link);\n return { replace: replaceElement, style: styleInstance };\n }\n if (rel && ['apple-touch-icon', 'icon', 'prefetch', 'preload', 'prerender'].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 }\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: Comment | Element; script?: Script } | undefined {\n if (\n script.hasAttribute('ignore') ||\n isJsonpUrl(script.getAttribute('src')) ||\n (script.hasAttribute('type') && !SCRIPT_TYPE_NAMES.includes(script.type))\n ) {\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: null | string = 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 async: script.hasAttribute('async'),\n code: '',\n defer: script.defer || script.type === 'module',\n fromHtml: !needReplaceELement,\n isModule: script.type === 'module',\n url: src,\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 async: false,\n code: script.textContent,\n defer: script.type === 'module',\n fromHtml: !needReplaceELement,\n isModule: script.type === 'module',\n url: nonceStr!,\n });\n this.scripts.set(nonceStr, scriptInstance);\n replaceElement = document.createComment('【bk-weweb】script with texcontent');\n !needReplaceELement && parent.replaceChild(replaceElement, script);\n return {\n replace: replaceElement,\n script: scriptInstance,\n };\n }\n return { replace: script };\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 children?.forEach(dom => {\n if (dom instanceof HTMLLinkElement) {\n this.collectLink(dom, parent);\n } else if (dom instanceof HTMLStyleElement) {\n if (!dom.hasAttribute('exclude') && !dom.hasAttribute('ignore')) {\n this.styles.set(\n randomUrl(),\n new Style({\n code: dom.textContent || '',\n fromHtml: true,\n url: '',\n }),\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 getScript(url: string) {\n return this.scripts.get(url);\n }\n getStyle(urlOrCode: string) {\n return this.styles.get(urlOrCode) || Array.from(this.styles.values()).find(style => style.code === urlOrCode);\n }\n async importEntery(app: BaseModel): Promise<void> {\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) await this.importHtmlEntry(app);\n else if (app instanceof MicroInstanceModel) await this.importInstanceEntry();\n }\n async importHtmlEntry(app: MicroAppModel): Promise<void> {\n let htmlStr = appCache.getCacheHtml(this.url);\n if (!htmlStr) {\n htmlStr = await fetchSource(addUrlProtocol(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 = document.createElement('div');\n if (wrapElement.__BK_WEWEB_APP_KEY__) delete wrapElement.__BK_WEWEB_APP_KEY__;\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(\n this.url,\n new Script({\n async: false,\n code: jsStr,\n defer: false,\n fromHtml: true,\n isModule: !!this.url.match(/\\.ts$/),\n url: this.url,\n }),\n );\n }\n setScript(url: string, script: IScriptOption | Script) {\n this.scripts.set(url, script instanceof Script ? script : new Script(script));\n }\n setStyle(url: string, style: Style) {\n this.styles.set(url, style);\n }\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { AppState } from '../common';\nimport { EntrySource } from '../entry/entry';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\nimport { BaseModel } from '../typings';\n// 所有应用缓存\nexport class AppCache {\n // todo 主应用共享资源包\n private baseSource: EntrySource;\n private cache: Map<string, BaseModel>;\n constructor() {\n this.cache = new Map();\n this.baseSource = new EntrySource(location.href);\n // this.baseApp = new\n }\n deleteApp(url: string) {\n this.cache.delete(url);\n }\n getApp(name?: null | string): 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 getBaseAppStyle(urlOrCode: string) {\n return this.baseSource.getStyle(urlOrCode);\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 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 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 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 setBaseAppScript(url: string, script: Script) {\n this.baseSource.setScript(url, script);\n }\n setBaseAppStyle(url: string, style: Style) {\n this.baseSource.setStyle(url, style);\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 { appCache };\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { Script } from '../entry/script';\nimport { Style } from '../entry/style';\nimport { setMarkElement } from '../utils';\nimport { fillUpPath } from '../utils/common';\nimport { dispatchLinkOrScriptError, dispatchLinkOrScriptLoad } from '../utils/custom';\nimport { fetchSource } from '../utils/fetch';\n\nfunction getStyleSource(url: string, style: Style, originLink: HTMLLinkElement): HTMLStyleElement {\n const replaceStyle = document.createElement('style');\n setMarkElement(replaceStyle);\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}\nfunction getScriptSource(url: string, script: Script, originScript: HTMLScriptElement): Comment | HTMLScriptElement {\n const replaceScript: HTMLScriptElement = document.createElement('script');\n setMarkElement(replaceScript);\n fetchSource(url)\n .then((code: string) => {\n script.setCode(code);\n try {\n replaceScript.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 replaceScript;\n}\nfunction createNewNode(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.origin);\n const replaceStyle = document.createElement('style');\n const styleInstance = new Style({\n code: '',\n fromHtml: false,\n url: href,\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.origin);\n const script = new Script({\n async: child.hasAttribute('async'),\n code: '',\n defer: child.defer || child.type === 'module',\n fromHtml: false,\n isModule: false,\n });\n appCache.setBaseAppScript(src, script);\n const replaceElement = getScriptSource(src, script, child);\n return replaceElement || child;\n }\n }\n return child;\n}\nfunction isLinkOrScript(node: Node) {\n return node instanceof HTMLLinkElement || node instanceof HTMLScriptElement;\n}\nexport function baseElementInertHandle(parent: Node, newChild: Node, passiveChild: Node | null, rawMethod: Function) {\n if (isLinkOrScript(newChild)) {\n const targetChild = createNewNode(newChild);\n return rawMethod.call(parent, targetChild, passiveChild);\n }\n return rawMethod.call(parent, newChild, passiveChild);\n}\nexport function baseElementAppendHandle(parent: Node, newChild: Node, rawMethod: Function) {\n if (isLinkOrScript(newChild)) {\n const targetChild = createNewNode(newChild);\n return rawMethod.call(parent, targetChild);\n }\n return rawMethod.call(parent, newChild);\n}\n","/*\n * Tencent is pleased to support the open source community by making\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * 蓝鲸智云PaaS平台 (BlueKing PaaS) is licensed under the MIT License.\n *\n * License for 蓝鲸智云PaaS平台 (BlueKing PaaS):\n *\n * ---------------------------------------------------\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n * documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and\n * to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n * the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { appCache } from '../cache/app-cache';\nimport { Style } from '../entry/style';\nimport { randomUrl } from '../utils';\nimport { baseElementAppendHandle, baseElementInertHandle } from './element';\n\nexport function collectBaseSource() {\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 baseElementAppendHandle(this, newChild, rawBodyAppendChild);\n };\n HTMLHeadElement.prototype.appendChild = function <T extends Node>(newChild: T): T {\n return baseElementAppendHandle(this, newChild, rawHeadAppendChild);\n };\n HTMLHeadElement.prototype.insertBefore = function <T extends Node>(newChild: T, refChild: Node | null): T {\n return baseElementInertHandle(this, newChild, refChild, rawHeadInsertBefore);\n };\n window.addEventListener('load', () => {\n const nodeList: NodeListOf<HTMLStyleElement> = document.head.querySelectorAll('style');\n nodeList.forEach(node => {\n node.textContent &&\n appCache.setBaseAppStyle(\n randomUrl(),\n new Style({\n code: node.textContent,\n fromHtml: false,\n url: '',\n }),\n );\n });\n });\n}\n"],"names":["document","hasRewrite","bodyAppendChild"],"mappings":"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"}