{"version":3,"file":"bundle.mjs","sources":["../src/typings.ts","../src/utils/tools.ts","../src/communication/base.ts","../src/communication/index.ts","../src/proxy/proxyEventListener.ts","../src/global/index.ts","../src/utils/scopedcss.ts","../src/utils/index.ts","../src/proxy/proxyDocument.ts","../src/proxy/proxyHistory.ts","../src/proxy/proxyLocation.ts","../src/proxy/proxyStorage.ts","../src/proxy/sandBox.ts","../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js","../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js","../src/utils/source.ts","../src/utils/log.ts","../src/app.ts","../src/check/urlCheck.ts","../src/element.ts"],"sourcesContent":["import App from './app';\r\nimport { EventCenterMicroApp } from './communication';\r\nimport { MustardApp } from './element';\r\n\r\nexport type TFunction = (...arg:unknown[]) => unknown\r\n\r\nexport const AppName = 'mustard-app'; // 元素名\r\n\r\nexport const LocationPrefix = 'mApp-'; // location path 前缀\r\n\r\nexport type IApp = App;\r\n\r\nexport const MainMustardApp = 'main'; // 基座标识（禁用）\r\n\r\nexport type MustardName = string; // 子应用标识, 不能为 MainMustardApp\r\n\r\nexport type MustardURL = string; // `http://${string}`|`https://${string}`; // 应用开启地址\r\n\r\n// 子应用状态\r\nexport enum IAppStatus {\r\n    create = 0, // 初始化\r\n    loading = 1, // 数据加载中\r\n    mount = 2, // dom节点 挂载完成阶段\r\n    unmount = 3, // dom节点 卸载\r\n    destory = 4, // 销毁应用\r\n    error = -100 // 子应用异常\r\n}\r\n\r\nexport type IAppStatusCN = keyof typeof IAppStatus;\r\n\r\nexport const APPStAtUSCNKEYS: IAppStatusCN[] = ['create', 'loading', 'mount', 'unmount', 'destory', 'error'];\r\n\r\nexport interface SpurceValue {\r\n    code: string; // 具体代码\r\n    isExternal?: boolean; // 是否远程资源\r\n}\r\n\r\nexport interface IAppConstructor {\r\n    name: MustardName;\r\n    url: MustardURL; \r\n    container: MustardApp;\r\n}       \r\n\r\ndeclare global{\r\n    interface HTMLElementTagNameMap{\r\n        'mustard-app': MustardApp\r\n    }\r\n    interface Window{\r\n        mustardAppInfos: { // 微应用实例\r\n            currentReadDocMAppName?: MustardName;\r\n            appInstanceMap: Map<MustardName, IApp>; // 当前所有子应用实例\r\n            getAppProxyWindow: (appName: MustardName) => IApp['sandbox']['proxyWindow'];\r\n        };\r\n        // 子应用通讯方法\r\n        microApp: EventCenterMicroApp\r\n    }\r\n}\r\n\r\nexport abstract class AMustardApp extends HTMLElement {\r\n    url:MustardURL; // 子应用资源地址\r\n    name:MustardName; // 子应用标识\r\n\r\n    // 组件刷新\r\n    abstract reload : void;\r\n}","import { State } from '../proxy/proxyHistory';\r\nimport { APPStAtUSCNKEYS, IAppStatusCN } from '../typings';\r\n\r\ntype Tfunction = (...arg:unknown[])=>unknown;\r\n\r\nexport function isString (value:unknown):value is string {\r\n    return typeof value === 'string';\r\n}\r\n\r\nexport function isNumber (value:unknown):value is number {\r\n    return typeof value === 'number';\r\n}\r\n\r\nexport function isBoolean (value:unknown):value is boolean {\r\n    return typeof value === 'boolean';\r\n}\r\n\r\nexport function isFunction (value:unknown):value is Tfunction {\r\n    return value instanceof Function;\r\n}\r\n\r\nexport function isObject (value:unknown): value is ObjectConstructor {\r\n    return value instanceof Object;\r\n}\r\n\r\nexport function isURL (value:unknown): value is URL {\r\n    return value instanceof URL;\r\n}\r\n\r\n/**\r\n * 是否是子应用的state\r\n * @param value \r\n * @returns \r\n */\r\nexport function isMustardState (value: unknown):value is State {\r\n    return (value as State)?.isMustard === 'MustardApp';\r\n}\r\n\r\n/**\r\n * 是否是生命周期的key\r\n * @param value \r\n * @returns \r\n */\r\nexport function isIAppStatusKey (value: unknown):value is IAppStatusCN {\r\n    return APPStAtUSCNKEYS.includes(value as IAppStatusCN);\r\n}\r\n\r\n/**\r\n * 是否是远程类型资源\r\n * @param dom \r\n * @returns boolean\r\n */\r\nexport function isRemotezElement (dom: Element):dom is HTMLImageElement|HTMLVideoElement|HTMLAudioElement|HTMLSourceElement {\r\n    return dom instanceof HTMLImageElement || dom instanceof HTMLVideoElement || dom instanceof HTMLAudioElement || dom instanceof HTMLSourceElement;\r\n}\r\n\r\n/**\r\n * 是否是相对地址\r\n * @param src    \r\n * @returns boolean\r\n */\r\nexport function isRelativePath (src: string = '') {\r\n    return /^(\\.){0,2}\\//.test(src);\r\n}","import { IAppStatus, IAppStatusCN, MustardName } from '../typings';\r\nimport { isFunction } from '../utils/tools';\r\n\r\nexport type EventName = MustardName; // 用于区分子应用\r\nexport type BindMethod = string;\r\n\r\nexport type TCallback = (value: unknown, oldValue:unknown, source:MustardName) => void;\r\nexport type TLifeCallback = (key: MustardName) => void;\r\nexport type TDataChangeCallback = (key: MustardName, data:unknown) => void;\r\n\r\ntype EventGlobalLifeKey = `globalLife_${IAppStatusCN}`; // 全局生命周期key\r\ntype EventGlobalDataChangeKey = 'globalDataChange'; // 全局prop修改key\r\n\r\ntype EventDataKey = `data_${EventName}`; // prop注入key \r\ntype EventDataChangeKey = `dataChange_${EventName}`; // prop修改key\r\ntype EventLifeKey = `life_${EventName}_${IAppStatusCN}`; // 生命周期key\r\ntype EventBindKey = `bind_${EventName}_${BindMethod}`; // 自定义事件key\r\n\r\nexport type EventKey = |EventDataKey\r\n                |EventDataChangeKey\r\n                |EventLifeKey\r\n                |EventBindKey\r\n                |EventGlobalLifeKey\r\n                |EventGlobalDataChangeKey;\r\n\r\nexport interface EventValue {\r\n    data: unknown, // 订阅的数据\r\n    sourceOfData: MustardName, // 数据的来源\r\n    assignment: boolean, // 是否已经赋值过\r\n    callbacks: Set<TCallback>,\r\n    repeatSend: WeakSet<TCallback>, // 多次dispatch相同的data,只有第一次生效, 用于去重\r\n}\r\n\r\n// 发布订阅系统中心\r\nexport class EventCenter {\r\n    eventList : Map<EventKey, EventValue> = new Map();\r\n\r\n    /**\r\n     * 初始化\r\n     * @param name 事件名\r\n     * @param options 事件配置\r\n     */\r\n    private initEvent (name:EventKey, options:Partial<EventValue> = {}) {\r\n        this.eventList.set(name, {\r\n            data: undefined,\r\n            sourceOfData: undefined,\r\n            assignment: false,\r\n            callbacks: new Set(),\r\n            repeatSend: new WeakSet(),\r\n            ...options\r\n        });\r\n    }\r\n\r\n    /**\r\n     * 订阅事件\r\n     * @param name 事件名\r\n     * @param fn 事件\r\n     * @param param2.immediately 是否立即执行（对应消息dispatch过）\r\n     * @param param2.repeatSend 多次dispatch相同的data,只有第一次生效\r\n     */\r\n    on (name:EventKey, fn: TCallback, { immediately, repeatSend }:{immediately?: boolean, repeatSend?: boolean} = {}) {\r\n        if(!isFunction(fn)) {\r\n            return;\r\n        }\r\n        const events = this.eventList.get(name);\r\n        if(!events) {\r\n            this.initEvent(name, {\r\n                callbacks: new Set([fn]),\r\n                repeatSend: new WeakSet(repeatSend ? [fn] : [])\r\n            });\r\n        }else{\r\n            events.callbacks.add(fn);\r\n            repeatSend && events.repeatSend.add(fn);\r\n            immediately && events.assignment && fn(events.data, undefined, events.sourceOfData);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 注销订阅事件\r\n     * @param name 事件名\r\n     * @param fn 事件 不传递全部清空\r\n     */\r\n    off (name:EventKey, fn?: TCallback) {\r\n        const events = this.eventList.get(name);\r\n        if(events) {\r\n            fn ? events.callbacks.delete(fn) : events.callbacks.clear();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 发布消息\r\n     * @param name 事件名\r\n     * @param source 那个应用发送的消息\r\n     * @param data 数据\r\n     */\r\n    dispatch (name:EventKey, source: MustardName, data?:unknown) {\r\n        const events = this.eventList.get(name);\r\n        const isSameData = events?.data === data;\r\n        if(events) {\r\n            const oldData = events.data;\r\n            events.assignment = true;\r\n            for (const callback of events.callbacks) {\r\n                // 存在且值等于上一次不执行，其他的都执行\r\n                if(!(events.repeatSend.has(callback) && isSameData)) {\r\n                    callback(data, oldData, source); \r\n                }\r\n            }\r\n            events.data = data;\r\n            events.assignment = true;\r\n            events.sourceOfData = source;\r\n        }else{\r\n            this.initEvent(name, {\r\n                data: data,\r\n                sourceOfData: source,\r\n                assignment: true,\r\n                callbacks: new Set([])\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\nexport function getEventGlobalLifeKeyByValue (value: IAppStatusCN):EventGlobalLifeKey {\r\n    return `globalLife_${value}`; \r\n}\r\nexport function getEventGlobalDataChangeKey ():EventGlobalDataChangeKey {\r\n    return 'globalDataChange'; \r\n}\r\nexport function getEventDataKey (name: EventName):EventDataKey {\r\n    return `data_${name}`;\r\n}\r\nexport function getEventDataChangeKey (name: EventName):EventDataChangeKey {\r\n    return `dataChange_${name}`;\r\n}\r\nexport function getEventLifeKeyByKey (name: EventName, key: IAppStatusCN):EventLifeKey {\r\n    return `life_${name}_${key}`; \r\n}\r\nexport function getEventLifeKeyByValue (name: EventName, value: IAppStatus):EventLifeKey {\r\n    return `life_${name}_${IAppStatus[value]}` as EventLifeKey; \r\n}\r\nexport function getEventBindKey (name: EventName, method: BindMethod):EventBindKey {\r\n    return `bind_${name}_${method}`; \r\n}","import { MainMustardApp, IAppStatus, IAppStatusCN, MustardName } from '@typings';\r\nimport { isFunction, isIAppStatusKey } from '../utils/tools';\r\nimport { TDataChangeCallback, TLifeCallback, BindMethod, EventCenter, TCallback, getEventLifeKeyByValue, getEventBindKey, getEventDataChangeKey, getEventDataKey, getEventGlobalDataChangeKey, getEventGlobalLifeKeyByValue, getEventLifeKeyByKey } from './base';\r\n\r\nexport { getEventLifeKeyByValue, getEventBindKey, getEventDataChangeKey, getEventDataKey, getEventGlobalDataChangeKey, getEventGlobalLifeKeyByValue, getEventLifeKeyByKey };\r\n\r\n// 订阅实例\r\nconst eventCenter = new EventCenter();\r\n\r\n// 全局事件配置注册\r\ntype TGlobalEventConfigKeys = IAppStatusCN|'dataChange';\r\n\r\nexport function setGlobalEvents (options:Partial<Record<IAppStatusCN, TLifeCallback>>|Partial< Record<'dataChange', TDataChangeCallback>>) {\r\n    (Reflect.ownKeys(options) as TGlobalEventConfigKeys[]).forEach(key => {\r\n        if(isFunction(options[key])) {\r\n            if(key === 'dataChange') {\r\n                eventCenter.off(getEventGlobalDataChangeKey());\r\n                eventCenter.on(getEventGlobalDataChangeKey(), options[key]);\r\n            }else if(isIAppStatusKey(key)) {\r\n                eventCenter.off(getEventGlobalLifeKeyByValue(key));\r\n                eventCenter.on(getEventGlobalLifeKeyByValue(key), options[key]);\r\n            }\r\n        }\r\n    });\r\n}\r\n\r\nexport function globalDataChangeDispatch (name: MustardName, data:unknown) {\r\n    eventCenter.dispatch(getEventGlobalDataChangeKey(), name, data);\r\n    \r\n}\r\nexport function globalLifeDispatch (key:IAppStatusCN, name: MustardName) {\r\n    eventCenter.dispatch(getEventGlobalLifeKeyByValue(key), name);\r\n   \r\n}\r\n\r\n// 基座通讯集合\r\nexport class EventCenterBaseApp {\r\n    \r\n    /**\r\n     * 向子应用发送data数据\r\n     * @param name 子应用名字\r\n     * @param data 发送数据\r\n     */\r\n    dispatch (name:MustardName, data:unknown) {\r\n        eventCenter.dispatch(getEventDataKey(name), MainMustardApp, data);\r\n    }\r\n\r\n    /**\r\n     * 订阅props修改事件\r\n     * @param name 子应用名字\r\n     * @param fn 事件\r\n     */\r\n    onData (name:MustardName, fn: TCallback) {\r\n        eventCenter.on(getEventDataChangeKey(name), fn);\r\n    }\r\n\r\n    /**\r\n     * 订阅生命事件\r\n     * @param name 子应用名字\r\n     * @param life 生命周期映射\r\n     * @param fn 事件\r\n     */\r\n    onLife (name:MustardName, life:IAppStatusCN, fn: TCallback) {\r\n        eventCenter.on(getEventLifeKeyByKey(name, life), fn);\r\n    }\r\n\r\n    /**\r\n     * 订阅自定义事件\r\n     * @param name 子应用名字\r\n     * @param method 自定义方法名\r\n     * @param fn 事件\r\n     */\r\n    onCustomize (name:MustardName, method:BindMethod, fn: TCallback) {\r\n        eventCenter.on(getEventBindKey(name, method), fn);\r\n    }\r\n\r\n    /**\r\n     * 取消订阅生命事件\r\n     * @param name 子应用名字\r\n     * @param fn 事件\r\n     */\r\n    offData (name:MustardName, fn: TCallback) {\r\n        eventCenter.off(getEventDataChangeKey(name), fn);\r\n    }\r\n\r\n    /**\r\n     * 取消订阅生命事件\r\n     * @param name 子应用名字\r\n     * @param life 生命周期映射\r\n     * @param fn 事件\r\n     */\r\n    offLife (name:MustardName, life:IAppStatusCN, fn: TCallback) {\r\n        eventCenter.off(getEventLifeKeyByKey(name, life), fn);\r\n    }\r\n\r\n    /**\r\n     * 取消订阅自定义事件\r\n     * @param name 子应用名字\r\n     * @param method 自定义方法名\r\n     * @param fn 事件\r\n     */\r\n    offCustomize (name:MustardName, method:BindMethod, fn: TCallback) {\r\n        eventCenter.off(getEventBindKey(name, method), fn);\r\n    }\r\n}\r\n\r\n// 子应用通讯类（注入到子应用的window.microApp）\r\nexport class EventCenterMicroApp {\r\n    name:MustardName;\r\n\r\n    constructor (name:MustardName) {\r\n        this.name = name;\r\n    }\r\n    \r\n    // 添加data事件监听\r\n    addDataListener (fn:TCallback) {\r\n        eventCenter.on(getEventDataKey(this.name), fn, { immediately: true, repeatSend: true });\r\n    }\r\n\r\n    // 解除data监听\r\n    removeDataListener (fn:TCallback) {\r\n        fn && eventCenter.off(getEventDataKey(this.name), fn);\r\n    }\r\n    \r\n    // 解除所以的data监听事件\r\n    clearDateListener () {\r\n        eventCenter.off(getEventDataKey(this.name));\r\n    }\r\n\r\n    /**\r\n     * 发送data数据修改事件\r\n     * @param data 发送数据\r\n     */\r\n    dispatch (data:unknown) {\r\n        globalDataChangeDispatch(this.name, data);\r\n        eventCenter.dispatch(getEventDataChangeKey(this.name), this.name, data);\r\n    }\r\n\r\n    /**\r\n     * 发送自定义事件\r\n     * @param method \r\n     */\r\n    dispatchCustomize (method:BindMethod, data:unknown) {\r\n        eventCenter.dispatch(getEventBindKey(this.name, method), this.name, data);\r\n    }\r\n}\r\n\r\n// 子应用生命周期通讯类（内部调用）\r\nexport class EventCenterMicorLife {\r\n    private name:MustardName;\r\n\r\n    constructor (name:MustardName) {\r\n        this.name = name;\r\n    }\r\n    \r\n    /**\r\n     * 发送生命周期\r\n     * @param state 子应用的生命周期\r\n     */\r\n    public dispatchLife (state:IAppStatus) {\r\n        globalLifeDispatch(IAppStatus[state] as IAppStatusCN, this.name);\r\n        eventCenter.dispatch(getEventLifeKeyByValue(this.name, state), this.name);\r\n    }\r\n}","export type IEventLisParameters = Parameters<typeof addEventListener>;\r\nexport type IEventLisReturn = ReturnType<typeof addEventListener>;\r\n\r\ntype IType = IEventLisParameters[0];\r\ntype Ilistener = IEventLisParameters[1];\r\ntype Ioptions = IEventLisParameters[2];\r\n\r\nexport class ProxyEventListener {\r\n    eventLis = new Map<IType, Map<Ilistener, Ioptions>>();\r\n\r\n    // 添加事件\r\n    addEventListener (type: IType, listener: Ilistener, options: Ioptions) {\r\n        if(!this.eventLis.has(type)) {\r\n            this.eventLis.set(type, new Map());\r\n        }\r\n        const listeners = this.eventLis.get(type);\r\n        listeners?.set(listener, options);\r\n        return window.addEventListener(type, listener, options);\r\n    }\r\n\r\n    // 删除事件\r\n    removeEventListener (type: IType, listener: Ilistener, options: Ioptions) {\r\n        if(!this.eventLis.has(type)) {\r\n            this.eventLis.set(type, new Map());\r\n        }\r\n        const listeners = this.eventLis.get(type);\r\n        if(listeners?.get(listener) === options) {\r\n            listeners?.delete(listener);\r\n        }\r\n        return window.removeEventListener(type, listener, options);\r\n    }\r\n\r\n    // 全部清除事件\r\n    clear () {\r\n        Array.from(this.eventLis.keys()).forEach(key => {\r\n            const listeners = this.eventLis.get(key);\r\n            if(listeners instanceof Map) {\r\n                Array.from(listeners.keys()).forEach(listener => {\r\n                    window.removeEventListener(key, listener, listeners.get(listener));\r\n                });\r\n            }\r\n        });\r\n    }\r\n}","import { IApp, MustardName } from '../typings';\r\n\r\ntype TMustardAppInfos = typeof window['mustardAppInfos'];\r\n\r\nexport const mustardAppInfos:TMustardAppInfos = window.mustardAppInfos = window?.mustardAppInfos ?? {\r\n    currentReadDocMAppName: '', // 子应用临时标识\r\n    appInstanceMap: new Map<MustardName, IApp>(), // 当前子应用的实例\r\n    getAppProxyWindow (appName: MustardName) {\r\n        // eslint-disable-next-line no-use-before-define\r\n        const app = getAppFromInstance(appName);\r\n        if(app) {\r\n            return app.sandbox.proxyWindow;\r\n        }\r\n        return null;\r\n    }\r\n};\r\n\r\n/**\r\n * 获取所以实例app.name\r\n * @returns IApp[]\r\n */\r\nexport function getAllApp () {\r\n    return Array.from(mustardAppInfos.appInstanceMap.keys());\r\n}\r\n\r\n/**\r\n * 实例写入缓存\r\n * @param name 子应用标识\r\n * @param app 实例\r\n * @returns \r\n */\r\nexport function addInstance (name:MustardName, app: IApp) {\r\n    return mustardAppInfos.appInstanceMap.set(name, app);\r\n}\r\n\r\n/**\r\n * 删除实例\r\n * @param name 子应用标识\r\n */\r\nexport function removeInstance (name:MustardName) {\r\n    mustardAppInfos.appInstanceMap.delete(name);\r\n}\r\n\r\n/**\r\n * 获取实例\r\n * @param name 子应用标识\r\n * @returns IApp\r\n */\r\nexport function getAppFromInstance (name:MustardName) {\r\n    return mustardAppInfos.appInstanceMap.get(name);\r\n}\r\n\r\n/**\r\n * 子应用是否存在\r\n * @param name 子应用标识\r\n * @returns \r\n */\r\nexport function appIsExist (name:MustardName) {\r\n    return mustardAppInfos.appInstanceMap.has(name);\r\n}\r\n\r\n\r\n/**\r\n * 设置子应用标识\r\n * 用于后续同步步骤的消费\r\n * e.g document.querySelector\r\n * @param appName \r\n */\r\nexport function setReadDocumentName (appName:MustardName) {\r\n    return mustardAppInfos.currentReadDocMAppName = appName;\r\n}\r\n\r\n/**\r\n * 消费标识\r\n * @returns \r\n */\r\nexport function consumption () {\r\n    const name = mustardAppInfos.currentReadDocMAppName;\r\n    mustardAppInfos.currentReadDocMAppName = '';\r\n    return name;\r\n}","import { getCompletePath } from '.';\r\n\r\nlet templateStyle:HTMLStyleElement;\r\n\r\nfunction scopedStyleRule (rule:CSSStyleRule, prefix:string, path?:string) {\r\n    const { selectorText, cssText } = rule;\r\n    let str = '';\r\n    \r\n    // 处理选择器\r\n    if(/^((html[\\s>~,]+body)|(html|body|:root))$/.test(selectorText)) {\r\n        // 处理顶层选择器，如 body，html 都转换为 micro-app[name=xxx]\r\n        str = cssText.replace(/^((html[\\s>~,]+body)|(html|body|:root))/, prefix) + '\\n';\r\n    }else {\r\n        // 选择器添加前缀\r\n        str = cssText.replace(/^[\\s\\S]*{/, cssHead => {\r\n            return cssHead.replace(/(^|,)([^,]+)/g, (_, $1, $2)=>{\r\n                if(/^[\\s]*((html|body|:root)|(html[\\s>~]+body))/.test($2)) {\r\n                    return `${$1} ${$2.replace(/^[\\s]*((html[\\s>~]+body)|(html|body|:root))/, prefix)}` + '\\n';\r\n                }\r\n                return `${$1} ${prefix} ${$2} \\n`;\r\n            });\r\n        });\r\n        \r\n    }\r\n\r\n    // 处理样式里的相对地址\r\n    return str.replace(/url\\(((\".+?\")|('.+?')|(.+?))\\)/gi, (_, url) => {\r\n        const src = url.replace(/[\"']/g, '');\r\n        return `url(${getCompletePath(src, path)})`;\r\n    });\r\n}\r\n\r\n// 处理媒体查询和样式支持查询\r\nfunction scopedStyleRuleOther (rule:CSSMediaRule|CSSSupportsRule, prefix:string, packName:string, path?:string) {\r\n    // eslint-disable-next-line no-use-before-define\r\n    const rules = scopedStyleRules(rule.cssRules, prefix, path);\r\n    return `@${packName} ${rule.conditionText} {\\n${rules}\\n}`;\r\n}\r\n\r\nfunction scopedStyleRules (cssRules:CSSRuleList, prefix:string, path?:string) {\r\n    let rules = '';\r\n    if(cssRules?.length) {\r\n        Array.from(cssRules).forEach((cssRule) => {\r\n            switch (cssRule.type) {\r\n            case 1: // STYLE_RULE\r\n                rules += scopedStyleRule(cssRule as CSSStyleRule, prefix, path) + '\\n';\r\n                break;\r\n            case 4: // MEDIA_RULE 媒体查询\r\n                rules += scopedStyleRuleOther(cssRule as CSSMediaRule, prefix, 'media', path) + '\\n';\r\n                break;\r\n            case 12: // SUPPORTS_RULE 样式支持\r\n                rules += scopedStyleRuleOther(cssRule as CSSSupportsRule, prefix, 'supports', path) + '\\n';\r\n                break;\r\n            default:\r\n                rules += cssRule.cssText;\r\n                break;\r\n            }\r\n        });\r\n        \r\n    }\r\n    return rules;\r\n}\r\n\r\nexport function scopedCSSTextContent (textContent:string, appName:string, path?:string) {\r\n    const prefix = `mustard-app[name='${appName}'] `; // 样式前缀\r\n\r\n    if(!templateStyle) {\r\n        templateStyle = document.createElement('style');\r\n        document.body.appendChild(templateStyle);\r\n        if(templateStyle?.sheet) {\r\n            templateStyle.sheet.disabled = false; // 样式标记不可用\r\n        }\r\n    }\r\n\r\n    if(textContent && templateStyle.sheet?.cssRules) {\r\n        templateStyle.textContent = textContent;\r\n        const _textContent = scopedStyleRules(templateStyle.sheet.cssRules, prefix, path);\r\n        templateStyle.textContent = '';\r\n\r\n        return _textContent;\r\n    }\r\n    return textContent;\r\n}\r\n\r\nexport function scopedCSS (styleEle:HTMLElement, appName:string, path?:string) {\r\n    const s = new Date();\r\n\r\n    styleEle.textContent = scopedCSSTextContent(styleEle.textContent, appName, path);\r\n    console.log('============', new Date().getTime() - s.getTime());\r\n\r\n}\r\n\r\n\r\n","import { consumption, getAppFromInstance, mustardAppInfos } from '../global';\r\nimport { LocationPrefix, MustardName, MustardURL, TFunction } from '../typings';\r\nimport { scopedCSSTextContent } from './scopedcss';\r\nimport { isFunction, isRelativePath, isRemotezElement } from './tools';\r\n\r\n/**\r\n * 获取虚拟路由key\r\n * @param appName \r\n * @returns \r\n */\r\nexport function getLocationNameByAppName (appName:MustardName) {\r\n    return LocationPrefix + appName;\r\n}\r\n\r\n/**\r\n * 根据相对地址和当前页面地址返回具体资源路径\r\n * @param relativePath 相对地址\r\n * @param absolutePath 当前页面地址\r\n * @returns \r\n */\r\nexport function getCompletePath (relativePath: string, absolutePath?: string) {\r\n    if (!absolutePath || !isRelativePath(relativePath)) return relativePath;\r\n    return new URL(relativePath, absolutePath).href;\r\n}\r\n\r\n/**\r\n * 请求资源\r\n * @param relativePath 相对地址\r\n * @param absolutePath 当前页面地址\r\n * @returns \r\n */\r\nexport function fetchSource (relativePath: string, absolutePath?: string) {\r\n    return fetch(getCompletePath(relativePath, absolutePath)).then((res) => {\r\n        return res.text();\r\n    });\r\n}\r\n\r\n/**\r\n * 监听Dom变化\r\n * @param dom 需要监听的dom元素\r\n * @param config 需要监听的范围 e.g 属性变动/子节点变动\r\n * @param callback 监听变动回调函数\r\n */\r\nexport function mutationObserver (dom:Element, config:MutationObserverInit, callback:MutationCallback) {\r\n    const observer = new MutationObserver((mutationsList, observer) => {\r\n        observer.disconnect();\r\n        callback(mutationsList, observer);\r\n        observer.observe(dom, config);\r\n    });\r\n\r\n    // 以上述配置开始观察目标节点\r\n    observer.observe(dom, config);\r\n\r\n    return observer;\r\n}\r\n\r\n/**\r\n * 处理子应用的dom\r\n * 1. 加上子应用标识 appName\r\n * 2. 修改ownerDocument，代理到proxydocument\r\n * 3. 特殊dom，特殊处理 e.g 1. 远程资源src 2. 动态style处理（实时加入前缀）\r\n * @param dom \r\n * @param _appName 子应用标识 \r\n * @returns \r\n */\r\nexport function handleDom<T extends Element> (dom:T, _appName?:MustardName):T {\r\n    if(!dom) return dom;\r\n    const appName = _appName ?? consumption();\r\n\r\n    if(appName && !(dom as unknown as {appName?:string})?.appName) {\r\n        const app = getAppFromInstance(appName);\r\n        const proxyWindow = mustardAppInfos.getAppProxyWindow(appName);\r\n\r\n        const config:PropertyDescriptorMap = {\r\n            // 1. 子应用标识\r\n            // 2. 判断是否处理过的元素\r\n            appName: {\r\n                value: appName\r\n            },\r\n            ownerDocument: {\r\n                enumerable: true,\r\n                get () {\r\n                    return proxyWindow?.document ?? document;\r\n                }\r\n            }\r\n        };\r\n\r\n        // 远程资源地址适配\r\n        if(isRemotezElement(dom)) {\r\n            mutationObserver(dom, { attributes: true, attributeFilter: ['src'] }, function ([mutations] = []) {\r\n                if(mutations.type === 'attributes') {\r\n                    const target = mutations.target as HTMLImageElement;\r\n                    target.src = getCompletePath(target.getAttribute('src'), app.url);\r\n                }\r\n            });\r\n        }\r\n\r\n        // 动态style适配\r\n        if(dom instanceof HTMLStyleElement) {\r\n            mutationObserver(dom, { childList: true }, function ([mutations] = []) {\r\n                if(mutations.type === 'childList') {\r\n                    mutations.target.textContent = scopedCSSTextContent(mutations.target.textContent, appName);\r\n                }\r\n            });\r\n        }\r\n        return Object.defineProperties(dom, config);\r\n    }\r\n\r\n    return dom;\r\n}\r\n\r\n/**\r\n * 处理选择器\r\n * e.g.\r\n *  1. head -> mustard-app-head\r\n *  2. body -> mustard-app-body\r\n * @param selectors \r\n */\r\nexport function handleSelectors (selectors:string) {\r\n    if(!selectors) return '';\r\n    if(selectors?.trim() === 'head') return 'mustard-app-head';\r\n    if(selectors?.trim() === 'body') return 'mustard-app-body';\r\n    return selectors.split(',').map(\r\n        _selector => _selector.replace(/(^|,|\\s)(head|body)([^a-zA-Z]|$)/g, function (test) {\r\n            return test.replace(/(head|body)/, (_, $1)=> `mustard-app-${$1}`);\r\n        })\r\n    ).join(',');\r\n}\r\n\r\n/**\r\n * 获取相对地址\r\n * 根据子应用的appName，从loaction.search 上读取对应数据\r\n * @param appName \r\n * @returns \r\n */\r\nexport function getPath (appName:MustardName) {\r\n    const search = location.search;\r\n    const searchParams = new URLSearchParams(search);\r\n    const href = searchParams.get(`${LocationPrefix}${appName}`) ?? '/';\r\n    return decodeURIComponent(href);\r\n}\r\n\r\n/**\r\n * 获取地址的URL对象\r\n * @param appName \r\n * @param baseUrl \r\n * @returns \r\n */\r\nexport function getURL (appName:MustardName, baseUrl:MustardURL) {\r\n    return new URL(getPath(appName), baseUrl);\r\n}\r\n\r\n/**\r\n * \r\n * @param path 子应用地址路径\r\n * @param appName 子应用标识\r\n * @param location // 父应用或基座location\r\n * @returns \r\n */\r\nexport function getNewPathToMustard (path:string, appName:MustardName) {\r\n    const { pathname: pathnameFromTop, search: searchFromTop = '', hash: hashFromTop } = location; \r\n    \r\n    const SearchParams = new URLSearchParams(searchFromTop);\r\n\r\n    SearchParams.set(LocationPrefix + appName, encodeURIComponent(path));\r\n\r\n    const searchParams = SearchParams.toString();\r\n    return `${pathnameFromTop}${searchParams ? '?' + searchParams : ''}${hashFromTop}`;\r\n}\r\n\r\n/**\r\n * 异步下一微任务运行\r\n * @param fn 待运行的方法\r\n */\r\nexport function nextTick (fn: TFunction) {\r\n    Promise.resolve().then(() => {\r\n        isFunction(fn) && fn();\r\n    });\r\n}","import { MustardName } from '../typings';\r\nimport { consumption, getAppFromInstance, setReadDocumentName } from '../global';\r\nimport { handleDom, handleSelectors } from '../utils';\r\n\r\nexport function proxyDocument (appName:MustardName) {\r\n    return new Proxy(document, {\r\n        get: (target, key) => {\r\n            if(key === 'defaultView') {\r\n                return getAppFromInstance(appName)?.sandbox?.proxyWindow;\r\n            }\r\n            // 设置要消费的子应用标识\r\n            if(target[key] instanceof Function) {\r\n                return function (...args) {\r\n                    setReadDocumentName(appName);\r\n                    return target[key].call(target, ...args);\r\n                };\r\n            }\r\n            return target[key];\r\n        }\r\n    });\r\n}\r\n\r\nexport function changeDomPropety () {\r\n    // 修改Document原型链\r\n    const createElement = Document.prototype.createElement;\r\n    const createElementNS = Document.prototype.createElementNS;\r\n    const createTextNode = Document.prototype.createTextNode;\r\n    const createComment = Document.prototype.createComment;\r\n    const createDocumentFragment = Document.prototype.createDocumentFragment;\r\n    const caretRangeFromPoint = Document.prototype.caretRangeFromPoint;\r\n    \r\n    Document.prototype.createElement = function (tagName:string, ...options) {\r\n        return handleDom(createElement.call(this, tagName, ...options));\r\n    };\r\n    Document.prototype.createElementNS = function (...options) {\r\n        return handleDom(createElementNS.call(this, ...options));\r\n    };\r\n    Document.prototype.createTextNode = function (...options) {\r\n        return handleDom(createTextNode.call(this, ...options));\r\n    };\r\n    Document.prototype.createComment = function (...options) {\r\n        return handleDom(createComment.call(this, ...options));\r\n    };\r\n    Document.prototype.createDocumentFragment = function (...options) {\r\n        return handleDom(createDocumentFragment.call(this, ...options));\r\n    };\r\n    caretRangeFromPoint && (Document.prototype.caretRangeFromPoint = function (...options) {\r\n        return handleDom(caretRangeFromPoint.call(this, ...options));\r\n    });\r\n\r\n    const getElementById = Document.prototype.getElementById;\r\n    const querySelector = Document.prototype.querySelector;\r\n    const querySelectorAll = Document.prototype.querySelectorAll;\r\n    const getElementsByClassName = Document.prototype.getElementsByClassName;\r\n    const getElementsByTagName = Document.prototype.getElementsByTagName;\r\n    const getElementsByName = Document.prototype.getElementsByName;\r\n\r\n    Document.prototype.getElementById = function (selectors:string) {\r\n        const appName = consumption();\r\n        if(appName) {\r\n            const miniRootDom = getAppFromInstance(appName)?.container;\r\n            const ele = miniRootDom?.querySelector(`#${selectors}`); \r\n            return handleDom(ele, appName); // 已经消费过唯一标识，需要手动传递标识\r\n        }\r\n        return getElementById.call(this, selectors);\r\n    };\r\n    Document.prototype.querySelector = function (selectors:string) {\r\n        const appName = consumption();\r\n        if(appName) {\r\n            const miniRootDom = getAppFromInstance(appName)?.container;\r\n            const ele = miniRootDom?.querySelector(handleSelectors(selectors));\r\n            return handleDom(ele, appName); // 已经消费过唯一标识，需要手动传递标识\r\n        }\r\n        return querySelector.call(this, selectors);\r\n    };\r\n    Document.prototype.querySelectorAll = function (selectors:string) {\r\n        const appName = consumption();\r\n        if(appName) {\r\n            const miniRootDom = getAppFromInstance(appName)?.container;\r\n            const eles = miniRootDom?.querySelectorAll(handleSelectors(selectors));\r\n            Array.from(eles).forEach((ele)=>{\r\n                handleDom(ele, appName); // 已经消费过唯一标识，需要手动传递标识\r\n            });\r\n            return eles;\r\n        }\r\n        return querySelectorAll.call(this, selectors);\r\n    };\r\n    Document.prototype.getElementsByClassName = function (selectors:string) {\r\n        const appName = consumption();\r\n        if(appName) {\r\n            const miniRootDom = getAppFromInstance(appName)?.container;\r\n            const eles = miniRootDom?.getElementsByClassName(selectors);\r\n            Array.from(eles).forEach((ele)=>{\r\n                handleDom(ele, appName); // 已经消费过唯一标识，需要手动传递标识\r\n            });\r\n            return eles;\r\n        }\r\n        return getElementsByClassName.call(this, selectors);\r\n    };\r\n    Document.prototype.getElementsByTagName = function (selectors:string) {\r\n        const appName = consumption();\r\n        if(appName) {\r\n            const miniRootDom = getAppFromInstance(appName)?.container;\r\n            const eles = miniRootDom?.getElementsByTagName(handleSelectors(selectors));\r\n            Array.from(eles).forEach((ele)=>{\r\n                handleDom(ele, appName); // 已经消费过唯一标识，需要手动传递标识\r\n            });\r\n            return eles;\r\n        }\r\n        return getElementsByTagName.call(this, selectors);\r\n    };\r\n    Document.prototype.getElementsByName = function (name:string) {\r\n        const appName = consumption();\r\n        if(appName) {\r\n            const miniRootDom = getAppFromInstance(appName)?.container;\r\n            const eles = miniRootDom?.querySelectorAll(`[name=${name}]`);\r\n            Array.from(eles).forEach((ele)=>{\r\n                handleDom(ele, appName); // 已经消费过唯一标识，需要手动传递标识\r\n            });\r\n            return eles;\r\n        }\r\n        return getElementsByName.call(this, name);\r\n    };\r\n}","/* eslint-disable no-use-before-define */\r\nimport { getAllApp, getAppFromInstance } from '../global';\r\nimport { MainMustardApp, MustardName, MustardURL } from '../typings';\r\nimport { getLocationNameByAppName } from '../utils';\r\nimport { isFunction, isMustardState, isURL } from '../utils/tools';\r\n\r\ntype ChangeState = (_state:unknown, _unused:string, _url:string | URL, _isMustard?:boolean) => void;\r\n\r\nexport interface MustardStateOptions {\r\n    origin?:MustardURL, // document 来源\r\n    flushed?:boolean // 是否更新文档\r\n}\r\n\r\nexport interface MustardState extends MustardStateOptions{\r\n    data?: unknown, // pushState 和 replaceState 第一个参数\r\n    index: number, // 用于计算当前state 的顺序\r\n}\r\n\r\nexport type State = {\r\n    [key: string]: MustardState;\r\n} & {\r\n    isMustard: 'MustardApp';\r\n    [MainMustardApp]: undefined\r\n}\r\n\r\nexport function encodeState (data:unknown, appName:MustardName, options?:MustardStateOptions) {\r\n    const app = getAppFromInstance(appName);\r\n    const index = getStateIndex(appName) + 1;\r\n    // todo origin\r\n    const { flushed = false, origin = app?.state?.origin } = options ?? {};\r\n    const allAppState = getAllAppState();\r\n    return {\r\n        ...allAppState,\r\n        [appName]: {\r\n            data,\r\n            index,\r\n            origin,\r\n            flushed            \r\n        }\r\n    };\r\n}\r\n\r\nexport function decodeState (appName:MustardName):MustardState|undefined {\r\n    const state = history.state;\r\n    if(state?.[appName]) {\r\n        return state[appName];\r\n    }\r\n}\r\n\r\nexport function getAllAppState () {\r\n    const state = {\r\n        isMustard: 'MustardApp',\r\n        [MainMustardApp]: undefined\r\n    } as State;\r\n\r\n    getAllApp().forEach(name => {\r\n        if(decodeState(name)) {\r\n            state[name] = decodeState(name);\r\n        }\r\n    });\r\n\r\n    return state;\r\n}\r\n\r\nexport function getStateIndex (appName:MustardName) {\r\n    return decodeState(appName)?.index ?? 0;\r\n}\r\n\r\nexport function initState (appName: MustardName, state:unknown, unused:string, url:string) {\r\n    let preState = history.state;\r\n    if(!isMustardState(preState)) {\r\n        preState = {\r\n            isMustard: 'MustardApp',\r\n            [MainMustardApp]: preState\r\n        };\r\n    }\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    (history.replaceState as any as ChangeState)({ \r\n        ...preState,\r\n        [appName]: {\r\n            index: 0,\r\n            origin: url\r\n        }\r\n    }, unused, undefined, true);\r\n}\r\n\r\nexport function navigateTo (appName:MustardName, type: 'pushState'|'replaceState', flushed?:boolean) {\r\n    const navigateToMehtods = function (_state:unknown, _unused:string, _url?:string | URL) {\r\n        return history[type].call(history, _state, _unused, _url, true);\r\n    };\r\n    const pathKey = getLocationNameByAppName(appName);\r\n    return function (_state:unknown, _unused:string, _url?:string | URL) {\r\n        const app = getAppFromInstance(appName);\r\n        const preState = decodeState(appName);\r\n\r\n        if(!_url) {\r\n            // 不刷新\r\n            return navigateToMehtods(encodeState(_state, appName, {\r\n                flushed: type === 'replaceState' ? preState?.flushed : flushed\r\n            }), _unused);\r\n        }\r\n\r\n        // 处理_url：相对地址->绝对地址\r\n        const url = new URL(isURL(_url) ? _url.href : _url, app.url);\r\n\r\n        const state = encodeState(_state, appName, {\r\n            flushed: type === 'replaceState' ? preState?.flushed : flushed,\r\n            origin: !flushed ? app.state.origin : url.href // 不刷新页面 使用当前 app.state.origin，否则使用跳转的地址做文档来源\r\n        });\r\n\r\n        const { pathname: pathnameFromLocation, search: searchFromLocation = '', hash: hashFromLocation } = location;\r\n\r\n        const searchFromLocationParams = new URLSearchParams(searchFromLocation);\r\n        \r\n        searchFromLocationParams.set(pathKey, encodeURIComponent(url.href)); // 设置app对应的地址\r\n        const searchParams = searchFromLocationParams.toString();\r\n\r\n        app.state = state[appName];\r\n\r\n        return navigateToMehtods(state, _unused, `${pathnameFromLocation}${searchParams ? '?' + searchParams : ''}${hashFromLocation}`);\r\n    };\r\n}\r\n\r\nexport function proxyHistory (appName:MustardName) {\r\n    return new Proxy(history, {\r\n        get (target, key) {\r\n            if(key === 'pushState') {\r\n                return navigateTo(appName, 'pushState');\r\n            }else if(key === 'replaceState') {\r\n                return navigateTo(appName, 'replaceState');\r\n            }else if(key === 'state') {\r\n                return decodeState(appName)?.data;\r\n            }else if(isFunction(target[key])) {\r\n                return target[key].bind(history);\r\n            }\r\n            return target[key];\r\n        }\r\n    });\r\n}\r\n\r\n// 修改全局history方法\r\nexport function changeHistoryPropety () {\r\n    const pushState = History.prototype.pushState;\r\n    const replaceState = History.prototype.replaceState;\r\n\r\n    function changeState (type:'pushState'|'replaceState') {\r\n        const methodState = type === 'pushState' ? pushState : replaceState;\r\n        return function (_state:unknown, _unused:string, _url:string | URL, _isMustard?:boolean) {\r\n            if(_isMustard) {\r\n                return methodState.call(this, _state, _unused, _url);\r\n            }else{\r\n                const allAppState = getAllAppState();\r\n                return methodState.call(this, { ...allAppState, [MainMustardApp]: _state }, _unused, _url);\r\n            }\r\n        };\r\n    }\r\n    \r\n    History.prototype.pushState = changeState('pushState');\r\n    History.prototype.replaceState = changeState('replaceState');\r\n}","import { getAppFromInstance } from '../global';\r\nimport { MustardName, MustardURL } from '../typings';\r\nimport { getPath, getURL } from '../utils';\r\nimport { navigateTo } from './proxyHistory';\r\n\r\n/**\r\n * 创建子应用的location\r\n */\r\nexport function createLocation (appName:MustardName) {\r\n    const assign = navigateTo(appName, 'pushState', true);\r\n    const replace = navigateTo(appName, 'replaceState', true);\r\n    \r\n    class Location extends URL {\r\n        assign (url:MustardURL) {\r\n            const app = getAppFromInstance(appName);\r\n            assign('', '', url);\r\n            app && app.reload();\r\n        }\r\n\r\n        reload () {\r\n            const app = getAppFromInstance(appName);\r\n            app && app.reload();\r\n        }\r\n\r\n        replace (url:MustardURL) {\r\n            const app = getAppFromInstance(appName);\r\n            replace('', '', url);\r\n            app && app.reload();\r\n        }\r\n        \r\n        toString () {\r\n            return this.href;\r\n        }\r\n    }\r\n    \r\n    return (path: string | URL, base?: string) => {\r\n        return (base ? new Location('' + path, base) : new Location('' + path));\r\n    };\r\n}\r\n\r\n\r\nexport function proxyLocation (appName:MustardName, url:MustardURL) {\r\n    const _createLocation = createLocation(appName);\r\n    const _location = _createLocation(getPath(appName), url);\r\n    return new Proxy(_location, {\r\n        get (target, key) {\r\n            target.href = getURL(appName, url).href;\r\n            return target[key];\r\n        },\r\n        set (target, key, value) {\r\n            target.href = getURL(appName, url).href;\r\n            const result = target[key] = value;\r\n            target.assign(target.href);\r\n            return result;\r\n        }\r\n    });\r\n}","import { getAppFromInstance } from '../global';\r\nimport { MustardName } from '../typings';\r\n\r\nexport function proxyStorage (appName:MustardName, _storage:typeof localStorage|typeof sessionStorage) {\r\n\r\n    const nullObject = JSON.stringify(Object.create(null));\r\n\r\n    const getItem = _storage.getItem.bind(_storage);\r\n    const setItem = _storage.setItem.bind(_storage);\r\n    const removeItem = _storage.removeItem.bind(_storage);\r\n\r\n    const app = getAppFromInstance(appName);\r\n    const origin = new URL(app.url)?.origin;\r\n\r\n    function _getAllItem () {\r\n        return JSON.parse(getItem(origin) ?? nullObject) as Record<string, string>;\r\n    }\r\n    function _getItem (key:string) {\r\n        return _getAllItem()[key];\r\n    }\r\n    function _setItem (value:Record<string, string>) {\r\n        return setItem(origin, JSON.stringify(value));\r\n    }\r\n\r\n    class Storage {\r\n        constructor () {\r\n            const data = _getAllItem();\r\n            Reflect.ownKeys(data).forEach((key:string) => {\r\n                this[key] = data[key];\r\n            });\r\n        }\r\n        get length () {\r\n            const data = _getAllItem();\r\n            return Reflect.ownKeys(data)?.length;\r\n        }\r\n        clear () {\r\n            Reflect.ownKeys(this).forEach(key => {\r\n                Reflect.deleteProperty(this, key);\r\n            });\r\n            removeItem(origin);\r\n        }\r\n        getItem (key:string) {\r\n            return _getItem(key);\r\n        }\r\n        setItem (key:string, value:unknown) {\r\n            const data = _getAllItem();\r\n            this[key] = data[key] = value?.toString?.();\r\n            return _setItem(data);\r\n        }\r\n        removeItem (key:string) {\r\n            const data = _getAllItem();\r\n            Reflect.deleteProperty(this, key);\r\n            const result = Reflect.deleteProperty(data, key);\r\n            _setItem(data);\r\n            return result;\r\n        }\r\n        key (index:number) {\r\n            const data = _getAllItem();\r\n            return Reflect.ownKeys(data)[index];\r\n        }\r\n    }\r\n\r\n    const storage = new Storage();\r\n\r\n    return new Proxy(storage, {\r\n        get (target, key:string) {\r\n            if(key === 'length') {\r\n                return target.length;\r\n            }else if(['clear', 'getItem', 'setItem', 'removeItem', 'key'].includes(key)) {\r\n                return target[key].bind(target);\r\n            }else{\r\n                return _getItem(key);\r\n            }\r\n        },\r\n        set (target, key:string, value:unknown) {\r\n            if(key === 'length') return value;\r\n            return target.setItem(key, value);\r\n        },\r\n        ownKeys () {\r\n            const data = _getAllItem();\r\n            return Reflect.ownKeys(data);\r\n        },\r\n        deleteProperty (target, key:string) {\r\n            return target.removeItem(key);\r\n        }\r\n    });\r\n}\r\n\r\nexport function proxyLocalStorage (appName:MustardName) {\r\n    return proxyStorage(appName, localStorage);\r\n}\r\n\r\nexport function proxySessionStorage (appName:MustardName) {\r\n    return proxyStorage(appName, sessionStorage);\r\n}","import { ProxyEventListener }from './proxyEventListener';\r\nimport { proxyDocument }from './proxyDocument';\r\nimport { proxyHistory }from './proxyHistory';\r\nimport { proxyLocation }from './proxyLocation';\r\nimport { proxyLocalStorage, proxySessionStorage }from './proxyStorage';\r\nimport { MustardName, MustardURL } from '../typings';\r\nimport { EventCenterMicroApp } from '../communication';\r\n\r\nexport class SandBox {\r\n    active = false; // 沙箱是否在运行\r\n    microWindow = {}; // 代理的对象\r\n    injectedKeys = new Set<string | symbol>(); // 新添加的属性，在卸载时清空\r\n\r\n    name:MustardName; // 沙箱标识同app标识一致\r\n    proxyEventListener:ProxyEventListener; // 全局事件代理\r\n    proxyWindow; // window 代理\r\n    proxyDocument; // document 代理\r\n    proxyHistory; // history 代理\r\n    proxyLocation; // location 代理\r\n    proxyLocalStorage; // localStorage 代理\r\n    proxySessionStorage; // sessionStorage 代理\r\n\r\n    microApp: EventCenterMicroApp; // 事件通讯\r\n  \r\n    // todo\r\n    // url: MustardURL\r\n    constructor (name:MustardName, url: MustardURL) {\r\n        this.name = name;\r\n        this.proxyLocation = proxyLocation(this.name, url);\r\n        this.proxyHistory = proxyHistory(this.name);\r\n        this.proxyLocalStorage = proxyLocalStorage(this.name);\r\n        this.proxySessionStorage = proxySessionStorage(this.name);\r\n        this.proxyDocument = proxyDocument(this.name);\r\n        this.proxyEventListener = new ProxyEventListener();\r\n        this.microApp = new EventCenterMicroApp(this.name);\r\n        this.proxyWindow = new Proxy(this.microWindow, {\r\n            // 取值\r\n            get: (target, key) => {\r\n                // 优先从代理对象上取值\r\n                if (Reflect.has(target, key)) {\r\n                    return Reflect.get(target, key);\r\n                }\r\n                if(key === 'document') {\r\n                    return this.proxyDocument;\r\n                }\r\n                if(key === 'addEventListener') {\r\n                    return this.proxyEventListener.addEventListener.bind(this.proxyEventListener);\r\n                }\r\n                if(key === 'history') {\r\n                    return this.proxyHistory;\r\n                }\r\n                if(key === 'location') {\r\n                    return this.proxyLocation;\r\n                }\r\n                if(key === 'localStorage') {\r\n                    return this.proxyLocalStorage;\r\n                }\r\n                if(key === 'sessionStorage') {\r\n                    return this.proxySessionStorage;\r\n                }\r\n\r\n                if(key === 'microApp') {\r\n                    return this.microApp;\r\n                }\r\n                    \r\n                // 否则兜底到window对象上取值\r\n                const rawValue = Reflect.get(window, key);\r\n        \r\n                // 如果兜底的值为函数，则需要绑定window对象，如：console、alert等\r\n                if (typeof rawValue === 'function') {\r\n                    const valueStr = rawValue.toString();\r\n                    // 排除构造函数\r\n                    if (!/^function\\s+[A-Z]/.test(valueStr) && !/^class\\s+/.test(valueStr)) {\r\n                        return rawValue.bind(window);\r\n                    }\r\n                }\r\n        \r\n                // 其它情况直接返回\r\n                return rawValue;\r\n            },\r\n            // 设置变量\r\n            set: (target, key, value) => {\r\n                // 沙箱只有在运行时可以设置变量\r\n                if (this.active) {\r\n                    Reflect.set(target, key, value);\r\n                    // 记录添加的变量，用于后续清空操作\r\n                    this.injectedKeys.add(key);\r\n                }\r\n                return true;\r\n            },\r\n            deleteProperty: (target, key) => {\r\n                // 当前key存在于代理对象上时才满足删除条件\r\n                if (Object.prototype.hasOwnProperty.call(target, key)) {\r\n                    return Reflect.deleteProperty(target, key);\r\n                }\r\n                return true;\r\n            },\r\n            has (target, key) {\r\n                return key in target || key in window;\r\n            }\r\n        });\r\n    }\r\n\r\n    start () {\r\n        if(!this.active) {\r\n            this.active = true;\r\n        }\r\n    }\r\n\r\n    stop () {\r\n        if(this.active) {\r\n            this.microApp.clearDateListener();\r\n            this.active = false;\r\n            Array.from(this.injectedKeys.keys()).forEach(key => Reflect.deleteProperty(this.microWindow, key));\r\n            this.injectedKeys.clear();\r\n            this.proxyEventListener.clear();\r\n        }\r\n    }\r\n\r\n    // 修改js作用域\r\n    bindScope (code) {\r\n        return `\r\n            ;(function(window, self){\r\n                const microApp = window.microApp;\r\n                const history = window.history;\r\n                const location = window.location;\r\n                const document = window.document;\r\n                const localStorage = window.localStorage;\r\n                const sessionStorage = window.sessionStorage;\r\n                const addEventListener = window.addEventListener;\r\n                ${code}\\n;\r\n            }).call(\r\n                mustardAppInfos.getAppProxyWindow('${this.name}'),\r\n                mustardAppInfos.getAppProxyWindow('${this.name}'),\r\n                mustardAppInfos.getAppProxyWindow('${this.name}'),\r\n            )\r\n        `;\r\n    }\r\n}","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n  randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  if (native.randomUUID && !buf && !options) {\n    return native.randomUUID();\n  }\n\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\n\nexport default v4;","import { fetchSource, getCompletePath } from '.';\r\nimport { IApp } from '../typings';\r\nimport { scopedCSS } from './scopedcss';\r\nimport { v4 } from 'uuid';\r\nimport { isRelativePath, isRemotezElement } from './tools';\r\n\r\n// 请求link\r\nfunction fetchLinkFormHtml (app:IApp, htmlDom: HTMLDivElement) {\r\n    const head = htmlDom.querySelector('mustard-app-head');\r\n    const linkEntries = Array.from(app.source.links.entries());\r\n    // 通过fetch请求所有css资源\r\n    const fetchLinkPromise:Promise<string>[] = [];\r\n    for (const [url, info] of linkEntries) {\r\n        fetchLinkPromise.push(\r\n            info.isExternal ?\r\n                fetchSource(url, app.url) :\r\n                Promise.resolve(info.code)\r\n        );\r\n    }\r\n    Promise.all(fetchLinkPromise).then(res =>{\r\n        res.forEach(code => {\r\n            const styleEle = document.createElement('style');\r\n            styleEle.textContent = code;\r\n            // 处理css，加上前缀 mustard-app[name='${appName}']\r\n            scopedCSS(styleEle, app.name);\r\n            head && head.appendChild(styleEle);\r\n        });\r\n        app.onLoad(htmlDom);\r\n    }).catch(error => app.error(error));\r\n}\r\n\r\nfunction fetchScriptFormHtml (app:IApp, htmlDom: HTMLDivElement) {\r\n    const scriptEntries = Array.from(app.source.scripts.entries());\r\n    // 通过fetch请求所有css资源\r\n    const fetchPromise:Promise<string>[] = [];\r\n    for (const [url, info] of scriptEntries) {\r\n        fetchPromise.push(\r\n            info.isExternal ? \r\n                fetchSource(url, app.url) : \r\n                Promise.resolve(info.code));\r\n    }\r\n    Promise.all(fetchPromise).then(res =>{\r\n        res.forEach((code, i) => {\r\n            // 将代码放入缓存，再次渲染时可以从缓存中获取\r\n            scriptEntries[i][1].code = code;\r\n        });\r\n        app.onLoad(htmlDom);\r\n    }).catch(error => app.error(error));\r\n}\r\n\r\n/**\r\n * 递归并处理dom\r\n * 收集静态的样式和js\r\n * 处理远程资源 e.g img,video,audio\r\n * @param parent \r\n * @param app \r\n */\r\nfunction extractSourceDom (parent:Element, app:IApp) {\r\n    const children = Array.from(parent.children);\r\n\r\n    children?.length && children.forEach(child => extractSourceDom(child, app));\r\n\r\n    for (const dom of children) {\r\n        // const attrs = dom.getAttributeNames();\r\n\r\n        // attrs.forEach(attr => {\r\n        //     // 处理dom上直接绑定的事件\r\n        //     if(/^on[a-zA_Z]+/.test(attr)){\r\n        //         const time = attr +  v4();\r\n        //         app.source.domClick +=  `\r\n        //             this.${time} = function(){\r\n        //                 ${dom.getAttribute(attr)}}\\n;\r\n        //             `;               \r\n        //         dom.setAttribute(attr,`proxyWindow.${time}()`);\r\n        //     }\r\n        // });\r\n        \r\n        // link 记录并收集，并提取src\r\n        if(dom instanceof HTMLLinkElement) {\r\n            const href = dom.getAttribute('href');\r\n            if (dom.getAttribute('rel') === 'stylesheet' && href) {\r\n                app.source.links.set(href, {\r\n                    code: '',\r\n                    isExternal: true\r\n                });\r\n            }\r\n            parent.removeChild(dom);\r\n        }else if(dom instanceof HTMLStyleElement) {\r\n            // style 记录并收集，并提取code\r\n            app.source.links.set(v4(), {\r\n                code: dom.textContent ?? ''\r\n            });\r\n            parent.removeChild(dom);\r\n        }else if(dom instanceof HTMLScriptElement) {\r\n            // script 记录并收集，并提取code\r\n            const src = dom.getAttribute('src');\r\n            // 远程js\r\n            if(src) {\r\n                app.source.scripts.set(src, {\r\n                    code: '',\r\n                    isExternal: true // 是否远程js\r\n                });\r\n            }else{\r\n                app.source.scripts.set(v4(), {\r\n                    code: dom.textContent ?? ''\r\n                });\r\n            }\r\n            parent.removeChild(dom);\r\n        }else if(isRemotezElement(dom)) {\r\n            // 远程资源相对地址处理\r\n            const src = dom.getAttribute('src');\r\n            if(isRelativePath(src)) {\r\n                dom.setAttribute('src', getCompletePath(src, app.url));\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nexport function loadHtml (app:IApp) {\r\n    fetchSource(app.url).then(html => {\r\n        html = html\r\n            .replace(/<head[^>]*>[\\s\\S]*?<\\/head>/i, match =>\r\n                match.replace(/<head/i, '<mustard-app-head').replace(/<\\/head>/i, '</mustard-app-head>')\r\n            ).replace(/<body[^>]*>[\\s\\S]*?<\\/body>/i, match => \r\n                match.replace(/<body/i, '<mustard-app-body').replace(/<\\/body>/i, '</mustard-app-body>')\r\n            );\r\n\r\n        // htmlText -> Dom\r\n        const Box = document.createElement('div');\r\n        Box.innerHTML = html;\r\n\r\n        // 提取静态js和link，处理style\r\n        extractSourceDom(Box, app);\r\n\r\n        if(app.source.links.size) {\r\n            fetchLinkFormHtml(app, Box);\r\n        }else{\r\n            app.onLoad(Box);\r\n        }\r\n\r\n        if(app.source.scripts.size) {\r\n            fetchScriptFormHtml(app, Box);\r\n        }else{\r\n            app.onLoad(Box);\r\n        }\r\n    }).catch(error => app.error(error));\r\n}","export function errorLog (e:string|Error) {\r\n    const message = e instanceof Error ? e.message : e;\r\n    console.error(message);\r\n}\r\n\r\nexport function warnLog (str:string) {\r\n    // eslint-disable-next-line no-console\r\n    console.warn(str);\r\n}\r\n\r\nexport function log (...args:unknown[]) {\r\n    // eslint-disable-next-line no-console\r\n    console.log(...args);\r\n}","import { SandBox } from './proxy/sandBox';\r\nimport { loadHtml } from './utils/source';\r\nimport { errorLog } from './utils/log';\r\nimport { getURL } from './utils';\r\nimport { MustardApp } from './element'; \r\nimport { addInstance, removeInstance } from './global';\r\nimport { MustardState, decodeState, initState } from './proxy/proxyHistory';\r\nimport { IAppConstructor, IAppStatus, MustardName, MustardURL, SpurceValue } from './typings';\r\nimport { EventCenterMicorLife } from './communication';\r\n\r\n\r\nexport default class App {\r\n    baseUrl: MustardURL;\r\n    url: MustardURL;\r\n    name: MustardName;\r\n    container: MustardApp;\r\n\r\n    sandbox: SandBox;\r\n\r\n    loadCount: number = 0;\r\n    status = IAppStatus.create;\r\n\r\n    state: MustardState; // document 来源\r\n    microLifeCenter: EventCenterMicorLife; // 生命周期通讯\r\n\r\n    // 存放动态资源\r\n    source = {\r\n        links: new Map<string, SpurceValue>(), // 存放links\r\n        scripts: new Map<string, SpurceValue>(), // 存放scripts\r\n        domClick: '\\n;' // 存放 dom attrs 上的事件\r\n    };\r\n\r\n    constructor ({ name, url: baseUrl, container }: IAppConstructor) {\r\n        this.name = name;\r\n        this.baseUrl = baseUrl;\r\n        this.container = container;\r\n        this.microLifeCenter = new EventCenterMicorLife(this.name);\r\n        this.init();\r\n    }\r\n\r\n    // 刷新 卸载->初始化\r\n    reload () {\r\n        this.unmount(true);\r\n        this.init();\r\n    }\r\n\r\n    // 初始化\r\n    init () {\r\n        this.status = IAppStatus.create;\r\n        this.microLifeCenter.dispatchLife(this.status);\r\n        // 初始化立刻存入 mustardAppInfos.appInstanceMap\r\n        addInstance(this.name, this); \r\n\r\n        this.loadCount = 0;\r\n        // 设置资源的真正地址\r\n        this.url = getURL(this.name, this.baseUrl).href;\r\n        \r\n        this.source = {\r\n            links: new Map<string, SpurceValue>(), // 存放links\r\n            scripts: new Map<string, SpurceValue>(), // 存放scripts\r\n            domClick: '\\n;' // 存放 dom attrs 上的事件\r\n        };\r\n\r\n        // 刷新页面时，为了保证 document.origin 正确，默认取history\r\n        this.state = decodeState(this.name);\r\n\r\n        if(!this.state) {\r\n            initState(this.name, '', '', this.url);\r\n            this.state = decodeState(this.name);\r\n        }\r\n        \r\n        this.status = IAppStatus.loading;\r\n        this.microLifeCenter.dispatchLife(this.status);\r\n\r\n        // 加载对应的资源\r\n        loadHtml(this);\r\n        // 初始化砂箱\r\n        this.sandbox = new SandBox(this.name, this.url);\r\n    }\r\n\r\n    // 资源加载完时执行\r\n    onLoad (htmlDom: HTMLElement) {\r\n        this.loadCount += 1;\r\n        // 第二次执行且组件未卸载时执行渲染\r\n        if (this.loadCount === 2 && this.status !== IAppStatus.unmount) {\r\n            // 执行mount方法\r\n            this.mount(htmlDom);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 资源加载完成后进行渲染\r\n     */\r\n    mount (html: HTMLElement) {\r\n        this.sandbox.start();\r\n        // 克隆DOM节点\r\n        const cloneHtml = html.cloneNode(true);\r\n        // 创建一个fragment节点作为模版，这样不会产生冗余的元素\r\n        const fragment = document.createDocumentFragment();\r\n        Array.from(cloneHtml.childNodes).forEach((node) => {\r\n            fragment.appendChild(node);\r\n        });\r\n\r\n        // 将格式化后的DOM结构插入到容器中\r\n        this.container.appendChild(fragment);\r\n\r\n        // 执行js\r\n        let scripts = '';\r\n        this.source.scripts.forEach((info) => {\r\n            scripts += info.code + '\\n;';\r\n        });\r\n\r\n        {\r\n            (0, eval)(this.sandbox.bindScope(scripts + '\\n;' + this.source.domClick));\r\n        }\r\n\r\n        // 标记应用为已渲染\r\n        this.status = IAppStatus.mount;\r\n        this.microLifeCenter.dispatchLife(this.status);\r\n    }\r\n\r\n    /**\r\n     * 卸载应用\r\n     * 执行关闭沙箱，清空缓存等操作\r\n     * @param destory 是否销毁应用\r\n     */\r\n    unmount (destory: boolean) {\r\n        this.sandbox.stop(); // 暂停沙箱\r\n        this.status = IAppStatus.unmount;\r\n        this.microLifeCenter.dispatchLife(this.status);\r\n        if (destory) {\r\n            this.destory();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 销毁应用\r\n     */\r\n    destory () {\r\n        this.sandbox = null;\r\n        this.container.innerHTML = '';\r\n        this.status = IAppStatus.destory;\r\n        this.microLifeCenter.dispatchLife(this.status);\r\n        removeInstance(this.name);\r\n    }\r\n\r\n    /**\r\n     * 子应用加载失败\r\n     * @param error 失败原因\r\n     */\r\n    error (error: Error): void {\r\n        errorLog(error);\r\n        this.status = IAppStatus.error;\r\n        this.microLifeCenter.dispatchLife(this.status);\r\n        this.microLifeCenter = null;\r\n    }\r\n}","import { getAppFromInstance } from '../global/index';\r\nimport { decodeState } from '../proxy/proxyHistory';\r\nimport { MustardName } from '../typings';\r\nimport { log } from '../utils/log';\r\n\r\n// 监听实时地址与对应的子应用url不匹配问题\r\nexport function addEventListenerUrl (callback:()=>void) {\r\n    window.addEventListener('popstate', callback);\r\n    return function () {\r\n        window.removeEventListener('popstate', callback);\r\n    };\r\n}\r\n\r\nexport function checkUrl (name:MustardName) {\r\n    const app = getAppFromInstance(name); // 路由history改变前的实例\r\n    const previousState = app.state; // history 切换前的 state\r\n    \r\n    const currentState = decodeState(name); // history 切换后的 state\r\n\r\n    if(currentState && previousState) {\r\n        if(currentState.origin !== previousState.origin) {\r\n            log(`${name}: 域名不一致: ${previousState.origin}->${currentState.origin}`);\r\n            return app.reload();\r\n        }else if(currentState.index < previousState.index && previousState.flushed) {\r\n            log(`${name}: history后退: ${previousState.origin}->${currentState.origin}`);\r\n            return app.reload();\r\n        }else if(currentState.index > previousState.index && currentState.flushed) {\r\n            log(`${name}: history前进: ${previousState.origin}->${currentState.origin}`);\r\n            return app.reload();\r\n        }\r\n    }\r\n    // else{\r\n    //     const origin = currentState?.origin || previousState?.origin;\r\n    //     if(getURL(name, app.baseUrl)?.href !== origin) {\r\n    //         log('checkUrl-one', name, getURL(name, app.baseUrl)?.href, origin);\r\n    //         return app.reload();\r\n    //     }\r\n    // }\r\n\r\n    app.state = decodeState(name); // 更新后自动刷新state\r\n}","import App from './app';\r\nimport { changeDomPropety } from './proxy/proxyDocument';\r\nimport { appIsExist, getAppFromInstance }from './global';\r\nimport { AppName, IAppStatusCN, MainMustardApp, MustardName, MustardURL } from './typings';\r\nimport { addEventListenerUrl, checkUrl } from './check/urlCheck';\r\nimport { changeHistoryPropety } from './proxy/proxyHistory';\r\nimport { EventCenterBaseApp } from './communication';\r\nimport { isFunction, isIAppStatusKey } from './utils/tools';\r\nimport { nextTick } from './utils';\r\n\r\nconst eventCenter = new EventCenterBaseApp();\r\nconst rawSetAttribute = HTMLElement.prototype.setAttribute;\r\nconst rawAddEventListener = HTMLElement.prototype.addEventListener;\r\nconst rawRemoveEventListener = HTMLElement.prototype.removeEventListener;\r\n\r\ntype AddEventListenerParams = Parameters<typeof rawAddEventListener>\r\ntype EventListenerType = 'dataChange' | IAppStatusCN | keyof HTMLElementEventMap;\r\ntype EventListenerListener = AddEventListenerParams[1];\r\ntype EventListenerOptions = AddEventListenerParams[2];\r\n\r\nexport class MustardApp extends HTMLElement {\r\n    url:MustardURL = ''; // 子应用资源地址\r\n    name:MustardName = ''; // 子应用标识\r\n    // keepAlive:boolean = true; // dom移除是否保活\r\n\r\n    checkUrlStop:()=>void; // URL 校验关闭\r\n\r\n    static get observedAttributes () {\r\n        return ['name', 'url'];\r\n    }\r\n\r\n    constructor () {\r\n        super();\r\n    }\r\n\r\n    // 组件刷新\r\n    reload () {\r\n        const app = getAppFromInstance(this.name);\r\n        if(app) {\r\n            app.reload();\r\n        }\r\n    }\r\n\r\n    // 子应用添加至页面\r\n    connectedCallback () {\r\n        if(!appIsExist(this.name) && this.url) {\r\n            nextTick(() => {\r\n                new App({\r\n                    url: this.url,\r\n                    name: this.name,\r\n                    container: this\r\n                });\r\n            });\r\n        }\r\n        // 开启URL校验\r\n        this.checkUrlStop = addEventListenerUrl(()=>{\r\n            checkUrl(this.name);\r\n        });\r\n    }\r\n\r\n    // 子应用从页面中移除\r\n    disconnectedCallback () {\r\n        // 关闭URL校验\r\n        this.checkUrlStop?.();\r\n        // getAppFromInstance(this.name)?.unmount(true);\r\n    }\r\n\r\n    // 子应用移动至新页面。\r\n    adoptedCallback () {}\r\n\r\n    /**\r\n     * 属性变化\r\n     * @param name 属性名\r\n     * @param oldValue 属性旧值\r\n     * @param newValue 属性新值\r\n     */\r\n    attributeChangedCallback (name, oldValue, newValue) {\r\n        if(!this.name && name === 'name') {\r\n            if(newValue === MainMustardApp) {\r\n                throw new Error('子应用标识非法');\r\n            }\r\n            if(appIsExist(name)) {\r\n                throw new Error(`子应用标识已存在: ${name}`);\r\n            }else{\r\n                this.name = newValue;\r\n            }\r\n        }else if(!this.url && name === 'url') {\r\n            this.url = newValue;\r\n        }\r\n    }\r\n\r\n    setAttribute (key:string, value:unknown) {\r\n        if (/^mustard-app/i.test(this.tagName) && key === 'data') {\r\n            // 发送数据\r\n            eventCenter.dispatch(this.name, value);\r\n        } else {\r\n            rawSetAttribute.call(this, key, value);\r\n        }\r\n    }\r\n\r\n    addEventListener (type: EventListenerType, listener: EventListenerListener, options?: EventListenerOptions): void {\r\n        if(isFunction(listener)) {\r\n            if(type === 'dataChange') {\r\n                eventCenter.onData(this.name, listener);\r\n            }else if(isIAppStatusKey(type)) {\r\n                eventCenter.onLife(this.name, type, listener);\r\n            }else{\r\n                rawAddEventListener.call(this, type, listener, options);\r\n            }\r\n        }\r\n    }\r\n\r\n    removeEventListener (type: EventListenerType, listener: EventListenerListener, options?: EventListenerOptions): void {\r\n        if(isFunction(listener)) {\r\n            if(type === 'dataChange') {\r\n                eventCenter.offData(this.name, listener);\r\n            }else if(isIAppStatusKey(type)) {\r\n                eventCenter.offLife(this.name, type, listener);\r\n            }else{\r\n                rawRemoveEventListener.call(this, type, listener, options);\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nexport function defineMustardAppElement () {\r\n    if(!customElements.get(AppName)) {\r\n        changeDomPropety();\r\n        changeHistoryPropety();\r\n        customElements.define(AppName, MustardApp);\r\n    }\r\n}"],"names":["eventCenter"],"mappings":"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","x_google_ignoreList":[13,14,15,16]}