@worktile/planet 16.0.0-next.0 → 16.0.0

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/component/planet-component-outlet.d.ts +1 -1
  3. package/{esm2020 → esm2022}/application/planet-application-loader.mjs +4 -4
  4. package/{esm2020 → esm2022}/application/planet-application.service.mjs +4 -4
  5. package/{esm2020 → esm2022}/assets-loader.mjs +4 -4
  6. package/{esm2020 → esm2022}/component/planet-component-loader.mjs +4 -4
  7. package/{esm2020 → esm2022}/component/planet-component-outlet.mjs +4 -4
  8. package/{esm2020 → esm2022}/empty/empty.component.mjs +4 -4
  9. package/{esm2020 → esm2022}/global-event-dispatcher.mjs +4 -4
  10. package/esm2022/module.mjs +33 -0
  11. package/{esm2020 → esm2022}/planet.mjs +4 -4
  12. package/{esm2020 → esm2022}/router/route-redirect.mjs +4 -4
  13. package/{fesm2020 → fesm2022}/worktile-planet.mjs +31 -31
  14. package/{fesm2020 → fesm2022}/worktile-planet.mjs.map +1 -1
  15. package/package.json +5 -11
  16. package/esm2020/module.mjs +0 -33
  17. package/fesm2015/worktile-planet.mjs +0 -2193
  18. package/fesm2015/worktile-planet.mjs.map +0 -1
  19. /package/{esm2020 → esm2022}/application/planet-application-ref.mjs +0 -0
  20. /package/{esm2020 → esm2022}/application/portal-application.mjs +0 -0
  21. /package/{esm2020 → esm2022}/component/planet-component-ref.mjs +0 -0
  22. /package/{esm2020 → esm2022}/component/plant-component.config.mjs +0 -0
  23. /package/{esm2020 → esm2022}/debug.mjs +0 -0
  24. /package/{esm2020 → esm2022}/global-planet.mjs +0 -0
  25. /package/{esm2020 → esm2022}/helpers.mjs +0 -0
  26. /package/{esm2020 → esm2022}/planet.class.mjs +0 -0
  27. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  28. /package/{esm2020 → esm2022}/sandbox/constants.mjs +0 -0
  29. /package/{esm2020 → esm2022}/sandbox/exec.mjs +0 -0
  30. /package/{esm2020 → esm2022}/sandbox/index.mjs +0 -0
  31. /package/{esm2020 → esm2022}/sandbox/proxy/patches/document.mjs +0 -0
  32. /package/{esm2020 → esm2022}/sandbox/proxy/patches/eventListener.mjs +0 -0
  33. /package/{esm2020 → esm2022}/sandbox/proxy/patches/index.mjs +0 -0
  34. /package/{esm2020 → esm2022}/sandbox/proxy/patches/storage.mjs +0 -0
  35. /package/{esm2020 → esm2022}/sandbox/proxy/patches/timer.mjs +0 -0
  36. /package/{esm2020 → esm2022}/sandbox/proxy/proxies/common.mjs +0 -0
  37. /package/{esm2020 → esm2022}/sandbox/proxy/proxies/document.mjs +0 -0
  38. /package/{esm2020 → esm2022}/sandbox/proxy/proxies/window.mjs +0 -0
  39. /package/{esm2020 → esm2022}/sandbox/proxy/proxy-sandbox.mjs +0 -0
  40. /package/{esm2020 → esm2022}/sandbox/proxy/types.mjs +0 -0
  41. /package/{esm2020 → esm2022}/sandbox/sandbox.mjs +0 -0
  42. /package/{esm2020 → esm2022}/sandbox/snapshot/snapshot-sandbox.mjs +0 -0
  43. /package/{esm2020 → esm2022}/sandbox/types.mjs +0 -0
  44. /package/{esm2020 → esm2022}/worktile-planet.mjs +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"worktile-planet.mjs","sources":["../../../packages/planet/src/planet.class.ts","../../../packages/planet/src/helpers.ts","../../../packages/planet/src/sandbox/constants.ts","../../../packages/planet/src/sandbox/proxy/proxies/common.ts","../../../packages/planet/src/sandbox/proxy/proxies/window.ts","../../../packages/planet/src/sandbox/proxy/patches/eventListener.ts","../../../packages/planet/src/sandbox/proxy/proxies/document.ts","../../../packages/planet/src/sandbox/proxy/patches/document.ts","../../../packages/planet/src/sandbox/proxy/patches/timer.ts","../../../packages/planet/src/sandbox/proxy/patches/storage.ts","../../../packages/planet/src/sandbox/proxy/patches/index.ts","../../../packages/planet/src/sandbox/exec.ts","../../../packages/planet/src/sandbox/sandbox.ts","../../../packages/planet/src/sandbox/proxy/proxy-sandbox.ts","../../../packages/planet/src/sandbox/snapshot/snapshot-sandbox.ts","../../../packages/planet/src/sandbox/index.ts","../../../packages/planet/src/assets-loader.ts","../../../packages/planet/src/application/planet-application-ref.ts","../../../packages/planet/src/global-planet.ts","../../../packages/planet/src/application/planet-application.service.ts","../../../packages/planet/src/application/portal-application.ts","../../../packages/planet/src/global-event-dispatcher.ts","../../../packages/planet/src/debug.ts","../../../packages/planet/src/application/planet-application-loader.ts","../../../packages/planet/src/planet.ts","../../../packages/planet/src/empty/empty.component.ts","../../../packages/planet/src/component/planet-component-ref.ts","../../../packages/planet/src/component/planet-component-loader.ts","../../../packages/planet/src/component/planet-component-outlet.ts","../../../packages/planet/src/router/route-redirect.ts","../../../packages/planet/src/module.ts","../../../packages/planet/src/component/plant-component.config.ts","../../../packages/planet/src/public-api.ts","../../../packages/planet/src/worktile-planet.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Debug } from './debug';\n\nexport interface PlanetOptions {\n switchMode?: SwitchModes;\n errorHandler: (error: Error) => void;\n debugFactory?: Debug;\n}\n\nexport interface PlanetApplication<TExtra = any> {\n name: string;\n // 应用加载的宿主元素或者选择器\n hostParent: string | HTMLElement;\n\n // 子应用的选择器\n /**\n * @deprecated please use new defineApplication to set selector\n */\n selector?: string;\n // 子应用路由前缀路径\n routerPathPrefix: string | RegExp;\n // 宿主元素附加样式\n hostClass?: string | string[];\n // 是否需要预加载\n preload?: boolean;\n // 是否开启沙箱\n sandbox?: boolean;\n // 切换应用的模式\n switchMode?: SwitchModes;\n // 资源文件路径的前缀\n resourcePathPrefix?: string;\n // 样式前缀\n stylePrefix?: string;\n // 样式资源文件\n styles?: string[];\n // 脚本资源文件\n scripts?: string[];\n // 串行加载,默认并行加载脚本资源\n loadSerial?: boolean;\n // 皮肤样式的路径\n themeStylesPath?: string;\n // 应用程序打包后的脚本和样式文件替换\n manifest?: string;\n // 附加数据,主要应用于业务,比如图标,子应用的颜色,显示名等个性化配置\n extra?: TExtra;\n}\n\nexport enum SwitchModes {\n default = 'default',\n coexist = 'coexist'\n}\n\nexport interface PlanetRouterEvent {\n url: string;\n}\n\nconst PLANET_APPLICATIONS = new InjectionToken<PlanetApplication>('PLANET_APPLICATIONS');\n\nexport { PLANET_APPLICATIONS };\n","import { PlanetApplication } from './planet.class';\n\nconst ELEMENT_NODE_TYPE = 1;\n\nexport function hashCode(str: string): number {\n let hash = 0;\n let chr: number;\n if (str.length === 0) {\n return hash;\n }\n for (let i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n}\n\nexport function getHTMLElement(selector: string | HTMLElement): HTMLElement | null {\n if (selector instanceof HTMLElement) {\n return selector;\n } else {\n return document.querySelector(selector);\n }\n}\n\nexport function getTagNameByTemplate(template: string): string {\n const element = createElementByTemplate(template);\n return element ? element.nodeName : '';\n}\n\nexport function createElementByTemplate(template: string) {\n if (!template) {\n return null;\n }\n const element = document.createRange().createContextualFragment(template).firstChild;\n if (element && element.nodeType === ELEMENT_NODE_TYPE) {\n return element as HTMLElement;\n } else {\n throw new Error(`invalid template '${template}'`);\n }\n}\n\nexport function coerceArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\nexport function isEmpty(value: any): boolean {\n if (!value || value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function isFunction(value: any): value is Function {\n const type = typeof value;\n return !!value && type === 'function';\n}\n\nexport function isObject(val: any) {\n return val && typeof val === 'object';\n}\n/**\n * Get file name from path\n * 1. \"main.js\" => \"main.js\"\n * 2. \"assets/scripts/main.js\" => \"main.js\"\n * @param path path\n */\nexport function getResourceFileName(path: string) {\n const lastSlashIndex = path.lastIndexOf('/');\n if (lastSlashIndex >= 0) {\n return path.slice(lastSlashIndex + 1);\n } else {\n return path;\n }\n}\n\n/**\n * Build resource path by manifest\n * if manifest is { \"main.js\": \"main.h2sh23abee.js\"}\n * 1. \"main.js\" => \"main.h2sh23abee.js\"\n * 2. \"assets/scripts/main.js\" =>\"assets/scripts/main.h2sh23abee.js\"\n * @param resourceFilePath Resource File Path\n * @param manifestResult manifest\n */\nexport function buildResourceFilePath(resourceFilePath: string, manifestResult: { [key: string]: string }) {\n const fileName = getResourceFileName(resourceFilePath);\n if (manifestResult[fileName]) {\n return resourceFilePath.replace(fileName, manifestResult[fileName]);\n } else {\n return resourceFilePath;\n }\n}\n\n/**\n * Get static resource full path\n * @param app PlanetApplication\n * @param manifestResult manifest\n */\nexport function getScriptsAndStylesFullPaths(app: PlanetApplication, manifestResult?: { [key: string]: string }) {\n let scripts = app.scripts || [];\n let styles = app.styles || [];\n // combine resource path by manifest\n if (manifestResult) {\n scripts = scripts.map(script => {\n return buildResourceFilePath(script, manifestResult);\n });\n styles = styles.map(style => {\n return buildResourceFilePath(style, manifestResult);\n });\n }\n if (app.resourcePathPrefix) {\n scripts = scripts.map(script => {\n return `${app.resourcePathPrefix}${script}`;\n });\n styles = styles.map(style => {\n return `${app.resourcePathPrefix}${style}`;\n });\n }\n return {\n scripts: scripts,\n styles: styles\n };\n}\n","export const PLANET_SANDBOX_WINDOW_WHITELIST = window['___PLANET_SANDBOX_WINDOW_WHITELIST___'];\nexport const PLANET_SANDBOX_DOCUMENT_WHITELIST = window['___PLANET_SANDBOX_DOCUMENT_WHITELIST___'];\nexport const SANDBOX_INSTANCE = Symbol.for('PLANET_SANDBOX_INSTANCE');\nexport const RAW_NODE = Symbol.for('PLANET_RAW_NODE');\nexport const WINDOW_BIND_FN = Symbol.for('PLANET_WINDOW_BIND_FN');\nexport const DOCUMENT_BIND_FN = Symbol.for('PLANET_DOCUMENT_BIND_FN');\n","import { isObject } from '../../../helpers';\nimport { RAW_NODE } from '../../constants';\n\nconst rawHasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProp(obj: any, key: PropertyKey): boolean {\n return rawHasOwnProperty.call(obj, key);\n}\n\nexport function isValueDescriptor(desc?: PropertyDescriptor) {\n if (desc === undefined) {\n return false;\n }\n return 'value' in desc || 'writable' in desc;\n}\n\nexport function isAccessorDescriptor(desc?: PropertyDescriptor) {\n if (desc === undefined) {\n return false;\n }\n return 'get' in desc || 'set' in desc;\n}\n\nexport function isNonWriteableValue(desc?: PropertyDescriptor) {\n return desc && desc.configurable === false && 'value' in desc && desc.writable === false;\n}\n\nexport function isInvalidSetAccessor(desc?: PropertyDescriptor) {\n if (desc && desc.configurable === false && 'set' in desc && desc.set === undefined) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function isInvalidGetAccessor(desc?: PropertyDescriptor) {\n if (desc && desc.configurable === false && 'get' in desc && desc.get === undefined) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction transferParams(args: IArguments | Array<any>) {\n args = Array.isArray(args) ? args : Array.from(args);\n return args.map(arg => {\n return arg[RAW_NODE] ? arg[RAW_NODE] : arg;\n });\n}\n\nconst buildInProps: PropertyKey[] = ['length', 'caller', 'callee', 'arguments', 'prototype', Symbol.hasInstance];\nfunction transferProps(o: Function, n: Function) {\n for (const key of Reflect.ownKeys(o)) {\n if (buildInProps.includes(key)) {\n continue;\n }\n const desc = Object.getOwnPropertyDescriptor(n, key);\n if (desc && desc.writable) {\n n[key] = o[key];\n }\n }\n}\n\nexport function bind(fn: any, context: any) {\n const fNOP = function() {};\n function bound() {\n const args = transferParams(arguments);\n if (this instanceof bound) {\n const obj = new fn(...args);\n Object.setPrototypeOf(obj, bound.prototype);\n return obj;\n } else {\n return fn.apply(context, args);\n }\n }\n bound.$native = fn;\n transferProps(fn, bound);\n if (fn.prototype) {\n fNOP.prototype = fn.prototype;\n }\n bound.prototype = new fNOP();\n if (Symbol.hasInstance) {\n Object.defineProperty(bound, Symbol.hasInstance, {\n configurable: true,\n value(instance: any) {\n const op = fn.prototype;\n return isObject(op) || typeof op === 'function' ? instance instanceof fn : false;\n }\n });\n }\n return bound;\n}\n\nexport function createFakeObject(target: Record<PropertyKey, any>, writableKeys?: PropertyKey[]) {\n const fakeObject = {};\n const propertyMap: Record<string, string | boolean> = {};\n const storageBox = Object.create(null);\n const propertyNames = Object.getOwnPropertyNames(target);\n const def = (p: string) => {\n const descriptor = Object.getOwnPropertyDescriptor(target, p);\n if (descriptor?.configurable) {\n const hasGetter = hasOwnProp(descriptor, 'get');\n const hasSetter = hasOwnProp(descriptor, 'set');\n const canWritable = writableKeys && writableKeys.length > 0 && writableKeys.includes(p);\n if (hasGetter) {\n descriptor.get = () => (hasOwnProp(storageBox, p) ? storageBox[p] : target[p]);\n }\n if (hasSetter) {\n descriptor.set = val => {\n storageBox[p] = val;\n return true;\n };\n }\n if (canWritable) {\n if (descriptor.writable === false) {\n descriptor.writable = true;\n } else if (hasGetter) {\n descriptor.set = val => {\n storageBox[p] = val;\n return true;\n };\n }\n }\n Object.defineProperty(fakeObject, p, Object.freeze(descriptor));\n }\n };\n propertyNames.forEach(p => {\n propertyMap[p] = true;\n def(p);\n });\n // 再次循环是为了处理原型链中的属性\n for (const prop in target) {\n if (!propertyMap[prop]) {\n def(prop);\n }\n }\n return fakeObject as any;\n}\n","import {\n hasOwnProp,\n createFakeObject,\n bind,\n isInvalidSetAccessor,\n isNonWriteableValue,\n isInvalidGetAccessor\n} from './common';\nimport { PLANET_SANDBOX_WINDOW_WHITELIST, SANDBOX_INSTANCE, WINDOW_BIND_FN } from '../../constants';\nimport { isFunction } from '../../../helpers';\nimport { ProxySandboxInstance } from '../types';\n\nconst esGlobalFunctions: PropertyKey[] = (\n 'eval,isFinite,isNaN,parseFloat,parseInt,' +\n // URL handling functions\n 'decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n // Constructor properties of the global object\n 'Array,ArrayBuffer,BigInt,BigInt64Array,BigUint64Array,Boolean,DataView,Date,Error,EvalError,' +\n 'FinalizationRegistry,Float32Array,Float64Array,Function,Int8Array,Int16Array,Int32Array,Map,Number,' +\n 'Object,Promise,Proxy,RangeError,ReferenceError,RegExp,Set,SharedArrayBuffer,String,Symbol,SyntaxError,' +\n 'TypeError,Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,URIError,WeakMap,WeakRef,WeakSet,' +\n // Other Properties of the Global Object\n 'Atomics,JSON,Math,Reflect'\n).split(',');\n\nconst whitelistVariables = PLANET_SANDBOX_WINDOW_WHITELIST || [];\n\nfunction isConstructor(fn: () => void | FunctionConstructor) {\n const fp = fn.prototype;\n const hasConstructor = fp && fp.constructor === fn && Object.getOwnPropertyNames(fp).length > 1;\n const functionStr = !hasConstructor && fn.toString();\n return hasConstructor || /^function\\s+[A-Z]/.test(functionStr as string) || /^class\\b/.test(functionStr as string);\n}\n\nconst unscopables = {\n undefined: true,\n Array: true,\n Object: true,\n String: true,\n Boolean: true,\n Math: true,\n Number: true,\n Symbol: true,\n parseFloat: true,\n Float32Array: true\n};\n\nexport class ProxyWindow {\n constructor(private sandbox: ProxySandboxInstance) {}\n\n private definedVariables = new Set();\n\n private createGetter() {\n return (target: Window, key: PropertyKey, receiver: any) => {\n if (key === Symbol.unscopables) {\n return unscopables;\n }\n if (key === SANDBOX_INSTANCE) {\n return this.sandbox;\n }\n let value = null;\n if (whitelistVariables.includes(key)) {\n return Reflect.get(window, key);\n } else {\n value = hasOwnProp(target, key) ? Reflect.get(target, key, receiver) : Reflect.get(window, key);\n }\n if (isFunction(value)) {\n if (\n esGlobalFunctions.includes(key) ||\n whitelistVariables.includes(key) ||\n this.sandbox.rewriteVariables.includes(key) ||\n this.definedVariables.has(key) ||\n isConstructor(value)\n ) {\n return value;\n } else {\n const newValue = hasOwnProp(value, WINDOW_BIND_FN) ? value[WINDOW_BIND_FN] : bind(value, window);\n const desc = Object.getOwnPropertyDescriptor(target, key);\n if (isNonWriteableValue(desc)) {\n return value;\n }\n if (isInvalidGetAccessor(desc)) {\n return undefined;\n }\n value[WINDOW_BIND_FN] = newValue;\n return newValue;\n }\n } else {\n return value;\n }\n };\n }\n\n private createSetter() {\n return (target: Window, key: PropertyKey, value: unknown, receiver: any) => {\n const desc = Object.getOwnPropertyDescriptor(\n whitelistVariables.includes(key) ? window : receiver ? receiver : target,\n key\n );\n if (desc && isNonWriteableValue(desc)) {\n if (!Object.is(value, desc.value)) {\n return false;\n } else {\n return true;\n }\n }\n if (isInvalidSetAccessor(desc)) {\n return false;\n }\n if (whitelistVariables.includes(key)) {\n return Reflect.set(window, key, value);\n } else {\n const success = Reflect.set(target, key, value, receiver);\n if (success) {\n if (this.sandbox.running) {\n this.definedVariables.add(key);\n }\n }\n return success;\n }\n };\n }\n\n private createDefineProperty() {\n return (target: Window, p: PropertyKey, descriptor: PropertyDescriptor) => {\n if (whitelistVariables.includes(p)) {\n return Reflect.defineProperty(window, p, descriptor);\n } else {\n const success = Reflect.defineProperty(target, p, descriptor);\n if (this.sandbox.running && success) {\n this.definedVariables.add(p);\n }\n return success;\n }\n };\n }\n\n private createDeleteProperty() {\n return (target: Window, p: PropertyKey) => {\n if (hasOwnProp(target, p)) {\n delete (target as any)[p];\n if (this.sandbox.running && this.definedVariables.has(p)) {\n this.definedVariables.delete(p);\n }\n }\n return true;\n };\n }\n\n private createHas() {\n return (_target: Window, key: PropertyKey) => {\n return !whitelistVariables.includes(key);\n };\n }\n\n create() {\n const fakeWindow = createFakeObject(window, this.sandbox.rewriteVariables);\n const baseHandlers = {\n get: this.createGetter(),\n set: this.createSetter(),\n defineProperty: this.createDefineProperty(),\n deleteProperty: this.createDeleteProperty()\n };\n const proxy = new Proxy(fakeWindow, {\n ...baseHandlers,\n has: this.createHas()\n });\n const subProxy = new Proxy(fakeWindow, baseHandlers);\n proxy.self = subProxy;\n proxy.window = subProxy;\n proxy.globalThis = subProxy;\n proxy.top = window.top === window ? subProxy : window.top;\n proxy.parent = window.parent === window ? subProxy : window.top;\n return proxy;\n }\n}\n","import { SandboxPatchHandler, ProxySandboxInstance } from '../types';\nimport { Observable, Subscription } from 'rxjs';\n\nexport function eventListenerPatch(sandbox: ProxySandboxInstance): SandboxPatchHandler {\n const rawAddEventListener = window.addEventListener;\n const rawRemoveEventListener = window.removeEventListener;\n const listenerSubscriptions = new Map<EventListenerOrEventListenerObject, Subscription>();\n\n function addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ) {\n const observable = new Observable(() => {\n rawAddEventListener.call(this, type, listener, options);\n return () => {\n rawRemoveEventListener.call(this, type, listener, options);\n };\n });\n const subscription = observable.subscribe(() => {});\n listenerSubscriptions.set(listener, subscription);\n }\n\n function removeEventListener(type: string, listener: EventListenerOrEventListenerObject) {\n const subscription = listenerSubscriptions.get(listener);\n if (subscription) {\n subscription.unsubscribe();\n listenerSubscriptions.delete(listener);\n }\n }\n\n return {\n rewrite: {\n addEventListener: addEventListener.bind(window),\n removeEventListener: removeEventListener.bind(window)\n },\n init() {\n const fakeDocument = sandbox.global.document;\n if (fakeDocument) {\n fakeDocument.addEventListener = addEventListener.bind(document);\n fakeDocument.removeEventListener = removeEventListener.bind(document);\n }\n },\n destroy() {\n listenerSubscriptions.forEach(subscription => subscription.unsubscribe());\n listenerSubscriptions.clear();\n }\n };\n}\n","import { isFunction } from '../../../helpers';\nimport { DOCUMENT_BIND_FN, PLANET_SANDBOX_DOCUMENT_WHITELIST, RAW_NODE } from '../../constants';\nimport {\n hasOwnProp,\n createFakeObject,\n isInvalidSetAccessor,\n isNonWriteableValue,\n bind,\n isInvalidGetAccessor\n} from './common';\n\nconst rawDocument = Document;\nconst whitelist: PropertyKey[] = ['cookie', 'title', 'location', ...(PLANET_SANDBOX_DOCUMENT_WHITELIST || [])];\n\nexport class ProxyDocument {\n constructor() {}\n\n private createGetter() {\n return (target: any, p: PropertyKey, receiver?: any) => {\n const value = hasOwnProp(target, p) ? Reflect.get(target, p, receiver) : Reflect.get(document, p);\n if (p === 'activeElement') {\n return Reflect.get(document, p);\n }\n // TODO: 处理动态节点\n // if (p === 'createElement') {\n // return function(tagName: string, options: ElementCreationOptions) {\n // const created = value.call(document, tagName, options);\n // if (isObject(created)) {\n // created[SANDBOX_INSTANCE] = sandbox;\n // }\n // return created;\n // };\n // }\n if (isFunction(value)) {\n let newValue = hasOwnProp(value, DOCUMENT_BIND_FN) ? value[DOCUMENT_BIND_FN] : null;\n if (!newValue) {\n newValue = bind(value, document);\n }\n const desc = Object.getOwnPropertyDescriptor(target, p);\n if (desc && isNonWriteableValue(desc)) {\n if (!Object.is(newValue, desc.value)) {\n return value;\n }\n }\n if (isInvalidGetAccessor(desc)) {\n return undefined;\n }\n value[DOCUMENT_BIND_FN] = newValue;\n return newValue;\n }\n return value;\n };\n }\n\n private createSetter() {\n return (target: any, p: PropertyKey, value: any, receiver: any) => {\n const desc = Object.getOwnPropertyDescriptor(whitelist.includes(p) ? document : receiver || target, p);\n if (desc && isNonWriteableValue(desc)) {\n if (Object.is(value, desc.value)) {\n return true;\n } else {\n return false;\n }\n }\n if (isInvalidSetAccessor(desc)) {\n return false;\n }\n return whitelist.includes(p) ? Reflect.set(document, p, value) : Reflect.set(target, p, value, receiver);\n };\n }\n\n private createDefineProperty() {\n return (target: any, p: PropertyKey, descriptor: PropertyDescriptor) => {\n return whitelist.includes(p)\n ? Reflect.defineProperty(document, p, descriptor)\n : Reflect.defineProperty(target, p, descriptor);\n };\n }\n\n create() {\n let proxyDocument = null;\n const fakeDocument = createFakeObject(document);\n const getter = this.createGetter();\n const fakeDocumentProto = new Proxy(fakeDocument, {\n get: (...args) => {\n return getter(...args);\n }\n });\n const fakeDocumentCtor = function Document() {\n if (!(this instanceof fakeDocumentCtor)) {\n throw new TypeError(`Failed to construct 'Document': Please use the 'new' operator.`);\n }\n const docInstance = new rawDocument();\n Object.setPrototypeOf(docInstance, fakeDocument);\n return docInstance;\n };\n fakeDocumentCtor.prototype = fakeDocumentProto;\n fakeDocumentCtor.prototype.constructor = fakeDocumentCtor;\n if (Symbol.hasInstance) {\n Object.defineProperty(fakeDocumentCtor, Symbol.hasInstance, {\n configurable: true,\n value(value: any) {\n let proto = value;\n if (proto === document) {\n return true;\n }\n while ((proto = Object.getPrototypeOf(proto))) {\n if (proto === fakeDocumentProto) {\n return true;\n }\n }\n const cloned = function() {};\n cloned.prototype = fakeDocument;\n return value instanceof cloned;\n }\n });\n }\n proxyDocument = new Proxy(\n Object.create(fakeDocumentProto, {\n currentScript: {\n value: null,\n writable: true\n },\n [RAW_NODE]: {\n writable: false,\n configurable: false,\n value: document\n }\n }),\n {\n set: this.createSetter(),\n defineProperty: this.createDefineProperty()\n }\n );\n return {\n document: proxyDocument,\n Document: fakeDocumentCtor\n };\n }\n}\n","import { ProxyDocument } from '../proxies/document';\nimport { SandboxPatchHandler } from '../types';\n\nexport function documentPatch(): SandboxPatchHandler {\n const proxyDocument = new ProxyDocument();\n const { document, Document } = proxyDocument.create();\n return {\n rewrite: {\n document,\n Document\n }\n };\n}\n","import { SandboxPatchHandler } from '../types';\n\nconst rawSetTimeout = window.setTimeout;\nconst rawClearTimeout = window.clearTimeout;\nconst rawSetInterval = window.setInterval;\nconst rawClearInterval = window.clearInterval;\n\nexport function timerPatch(): SandboxPatchHandler {\n const timeout = new Set<number>();\n const interval = new Set<number>();\n\n function rewriteSetTimeout(handler: TimerHandler, ms?: number, ...args: any[]) {\n const timeoutId = rawSetTimeout(handler, ms, ...args);\n timeout.add(timeoutId);\n return timeoutId;\n }\n\n function rewriteClearTimeout(timeoutId: number) {\n timeout.delete(timeoutId);\n rawClearTimeout(timeoutId);\n }\n\n function rewriteSetInterval(handler: TimerHandler, ms: number, ...args: any[]) {\n const intervalId = rawSetInterval(handler, ms, ...args);\n interval.add(intervalId);\n return intervalId;\n }\n\n function rewriteClearInterval(intervalId: number) {\n interval.delete(intervalId);\n rawClearInterval(intervalId);\n }\n\n return {\n rewrite: {\n setTimeout: rewriteSetTimeout,\n clearTimeout: rewriteClearTimeout,\n setInterval: rewriteSetInterval,\n clearInterval: rewriteClearInterval\n },\n destroy: () => {\n timeout.forEach(timeoutId => {\n rawClearTimeout(timeoutId);\n });\n interval.forEach(intervalId => {\n rawClearInterval(intervalId);\n });\n }\n };\n}\n","import { ProxySandboxInstance, SandboxPatchHandler } from '../types';\n\nconst PLANET_STORAGE_PREFIX = '__planet-storage-';\n\nexport class RewriteStorage {\n prefix: string;\n rawStorage: Storage;\n\n constructor(app: string, rawStorage: Storage) {\n this.rawStorage = rawStorage;\n this.prefix = `${PLANET_STORAGE_PREFIX}${app}__:`;\n }\n\n get length() {\n return this.getKeys().length;\n }\n\n private getKeys() {\n return Object.keys(this.rawStorage).filter(key => key.startsWith(this.prefix));\n }\n\n key(n: number) {\n const key = this.getKeys()[n];\n return key ? key.substring(this.prefix.length) : null;\n }\n\n getItem(key: string) {\n return this.rawStorage.getItem(`${this.prefix + key}`);\n }\n\n setItem(key: string, value: string) {\n this.rawStorage.setItem(`${this.prefix + key}`, value);\n }\n\n removeItem(key: string) {\n this.rawStorage.removeItem(`${this.prefix + key}`);\n }\n\n clear() {\n this.getKeys().forEach(key => {\n this.rawStorage.removeItem(key);\n });\n }\n}\n\nexport function storagePatch(sandbox: ProxySandboxInstance): SandboxPatchHandler {\n return {\n rewrite: {\n localStorage: new RewriteStorage(sandbox.app, localStorage),\n sessionStorage: new RewriteStorage(sandbox.app, sessionStorage)\n }\n };\n}\n","import { ProxySandboxInstance, SandboxPatch, SandboxPatchHandler } from '../types';\nimport { eventListenerPatch } from './eventListener';\nimport { documentPatch } from './document';\nimport { timerPatch } from './timer';\nimport { storagePatch } from './storage';\n\nconst sandboxPatches: SandboxPatch[] = [documentPatch, eventListenerPatch, timerPatch, storagePatch];\n\nexport function getSandboxPatchHandlers(sandbox: ProxySandboxInstance): SandboxPatchHandler[] {\n return sandboxPatches.map(patch => {\n return patch(sandbox);\n });\n}\n","import { Global } from './types';\n\nexport function execScript(code: string, url: string, global: Global, strictGlobal: boolean) {\n const sourceUrl = '//# sourceURL='.concat(url, '\\n');\n const window = (0, eval)('window');\n window.tempGlobal = global;\n code = strictGlobal\n ? ';(function(window, self, globalThis){with(window){;'\n .concat(code, '\\n')\n .concat(\n sourceUrl,\n '}}).bind(window.tempGlobal)(window.tempGlobal, window.tempGlobal, window.tempGlobal);'\n )\n : ';(function(window, self, globalThis){;'\n .concat(code, '\\n')\n .concat(\n sourceUrl,\n '}).bind(window.tempGlobal)(window.tempGlobal, window.tempGlobal, window.tempGlobal);'\n );\n (0, eval)(code);\n delete window.tempGlobal;\n}\n","import { execScript } from './exec';\nimport { Global } from './types';\n\nexport interface SandboxOptions {\n strictGlobal?: boolean;\n}\n\nexport abstract class Sandbox {\n options!: SandboxOptions;\n\n global!: Global;\n\n abstract start(): void;\n\n abstract destroy(): void;\n\n execScript(code: string, url = '') {\n execScript(code, url, this.global, !!this.options.strictGlobal);\n }\n}\n","import { ProxyWindow } from './proxies/window';\nimport { getSandboxPatchHandlers } from './patches';\nimport { SandboxPatchHandler } from './types';\nimport { Global } from '../types';\nimport { Sandbox, SandboxOptions } from '../sandbox';\n\nexport class ProxySandbox extends Sandbox {\n public running = false;\n\n public global!: Global;\n\n public rewriteVariables!: PropertyKey[];\n\n private patchHandlers: SandboxPatchHandler[] = [];\n\n constructor(public app: string, public options: SandboxOptions) {\n super();\n this.patchHandlers = getSandboxPatchHandlers(this);\n this.start();\n }\n\n start() {\n this.running = true;\n this.rewriteVariables = this.getPatchRewriteVariables();\n const proxyWindow = new ProxyWindow(this);\n this.global = proxyWindow.create();\n this.execPatchHandlers();\n }\n\n destroy() {\n this.running = false;\n this.patchHandlers.forEach(handler => {\n if (handler.destroy) {\n handler.destroy();\n }\n });\n }\n\n private getPatchRewriteVariables() {\n return this.patchHandlers.reduce<string[]>((pre, cur) => {\n return [...pre, ...(cur.rewrite ? Object.keys(cur.rewrite) : [])];\n }, []);\n }\n\n private execPatchHandlers() {\n this.patchHandlers.forEach(handler => {\n if (handler.rewrite) {\n for (const key in handler.rewrite) {\n if (handler.rewrite[key]) {\n this.global[key] = handler.rewrite[key];\n }\n }\n }\n if (handler.init) {\n handler?.init();\n }\n });\n }\n}\n","import { Sandbox, SandboxOptions } from '../sandbox';\n\nexport class SnapshotSandbox extends Sandbox {\n constructor(public app: string, public options: SandboxOptions) {\n super();\n this.start();\n }\n\n start() {}\n\n destroy() {}\n}\n","import { SandboxOptions } from './sandbox';\nimport { ProxySandbox } from './proxy/proxy-sandbox';\nimport { SnapshotSandbox } from './snapshot/snapshot-sandbox';\nimport { SANDBOX_INSTANCE } from './constants';\n\nexport { Sandbox } from './sandbox';\n\nconst defaultOptions: Partial<SandboxOptions> = {\n strictGlobal: false\n};\n\nexport function createSandbox(app: string, options?: SandboxOptions) {\n options = Object.assign({}, defaultOptions, options || {});\n\n if (window.Proxy) {\n return new ProxySandbox(app, options);\n } else {\n return new SnapshotSandbox(app, options);\n }\n}\n\nexport function getSandboxInstance() {\n return window[SANDBOX_INSTANCE];\n}\n","import { Injectable } from '@angular/core';\nimport { hashCode, isEmpty, getScriptsAndStylesFullPaths } from './helpers';\nimport { of, Observable, Observer, forkJoin, concat } from 'rxjs';\nimport { map, switchMap, concatAll } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\nimport { PlanetApplication } from './planet.class';\nimport { createSandbox } from './sandbox';\n\nexport interface AssetsLoadResult {\n src: string;\n hashCode: number;\n loaded: boolean;\n status: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetsLoader {\n private loadedSources: number[] = [];\n\n constructor(private http: HttpClient) {}\n\n loadScript(src: string): Observable<AssetsLoadResult> {\n const id = hashCode(src);\n if (this.loadedSources.includes(id)) {\n return of({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n }\n return new Observable((observer: Observer<AssetsLoadResult>) => {\n const script: HTMLScriptElement = document.createElement('script');\n script.type = 'text/javascript';\n script.src = src;\n script.async = true;\n if (script['readyState']) {\n // IE\n script['onreadystatechange'] = () => {\n if (script['readyState'] === 'loaded' || script['readyState'] === 'complete') {\n script['onreadystatechange'] = null;\n observer.next({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n observer.complete();\n this.loadedSources.push(id);\n }\n };\n } else {\n // Others\n script.onload = () => {\n observer.next({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n observer.complete();\n this.loadedSources.push(id);\n };\n }\n script.onerror = error => {\n observer.error({\n src: src,\n hashCode: id,\n loaded: false,\n status: 'Error',\n error: error\n });\n observer.complete();\n };\n document.body.appendChild(script);\n });\n }\n\n loadScriptWithSandbox(app: string, src: string): Observable<AssetsLoadResult> {\n const id = hashCode(src);\n if (this.loadedSources.includes(id)) {\n return of({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n }\n return new Observable((observer: Observer<AssetsLoadResult>) => {\n this.http.get(src, { responseType: 'text' }).subscribe(\n (code: string) => {\n this.loadedSources.push(id);\n const sandbox = createSandbox(app);\n sandbox.execScript(code, src);\n observer.next({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n observer.complete();\n },\n error => {\n observer.error({\n src: src,\n hashCode: id,\n loaded: false,\n status: 'Error',\n error: error\n });\n observer.complete();\n }\n );\n });\n }\n\n loadStyle(src: string): Observable<AssetsLoadResult> {\n const id = hashCode(src);\n if (this.loadedSources.includes(id)) {\n return of({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n }\n return new Observable((observer: Observer<AssetsLoadResult>) => {\n const head = document.getElementsByTagName('head')[0];\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.href = src;\n link.media = 'all';\n link.onload = () => {\n observer.next({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n observer.complete();\n this.loadedSources.push(id);\n };\n link.onerror = error => {\n observer.error({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded',\n error: error\n });\n observer.complete();\n };\n head.appendChild(link);\n });\n }\n\n loadScripts(\n sources: string[],\n options: {\n app?: string;\n sandbox?: boolean;\n serial?: boolean;\n } = {\n serial: false,\n sandbox: false\n }\n ): Observable<AssetsLoadResult[]> {\n if (isEmpty(sources)) {\n return of(null);\n }\n const observables = sources.map(src => {\n // TODO: 暂时只支持Proxy沙箱\n if (options.sandbox && window.Proxy) {\n return this.loadScriptWithSandbox(options.app, src);\n } else {\n return this.loadScript(src);\n }\n });\n if (options.serial) {\n const a = concat(...observables).pipe(\n map(item => {\n return of([item]);\n }),\n concatAll()\n );\n return a;\n } else {\n return forkJoin(observables).pipe();\n }\n }\n\n loadStyles(sources: string[]): Observable<AssetsLoadResult[]> {\n if (isEmpty(sources)) {\n return of(null);\n }\n return forkJoin(\n sources.map(src => {\n return this.loadStyle(src);\n })\n );\n }\n\n loadScriptsAndStyles(\n scripts: string[] = [],\n styles: string[] = [],\n options?: {\n app?: string;\n sandbox?: boolean;\n serial?: boolean;\n }\n ) {\n return forkJoin([this.loadScripts(scripts, options), this.loadStyles(styles)]);\n }\n\n loadAppAssets(app: PlanetApplication) {\n if (app.manifest) {\n return this.loadManifest(`${app.manifest}?t=${new Date().getTime()}`).pipe(\n switchMap(manifestResult => {\n const { scripts, styles } = getScriptsAndStylesFullPaths(app, manifestResult);\n return this.loadScriptsAndStyles(scripts, styles, {\n app: app.name,\n sandbox: app.sandbox,\n serial: app.loadSerial\n });\n })\n );\n } else {\n const { scripts, styles } = getScriptsAndStylesFullPaths(app);\n return this.loadScriptsAndStyles(scripts, styles, {\n app: app.name,\n sandbox: app.sandbox,\n serial: app.loadSerial\n });\n }\n }\n\n loadManifest(url: string): Observable<{ [key: string]: string }> {\n return this.http.get(url).pipe(\n map((response: any) => {\n return response;\n })\n );\n }\n}\n","import { NgModuleRef, NgZone } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { take } from 'rxjs/operators';\nimport { Observable, from } from 'rxjs';\nimport { PlanetPortalApplication } from './portal-application';\nimport { PlantComponentConfig } from '../component/plant-component.config';\nimport { PlanetComponentRef } from '../component/planet-component-ref';\nimport { getTagNameByTemplate } from '../helpers';\nimport { getSandboxInstance, Sandbox } from '../sandbox/';\n\nexport interface BootstrapOptions {\n template: string;\n bootstrap: BootstrapAppModule;\n}\n\nexport type BootstrapAppModule = (portalApp: PlanetPortalApplication) => Promise<NgModuleRef<any> | undefined | null>;\n\nexport type PlantComponentFactory = <TData, TComp>(\n componentName: string,\n config: PlantComponentConfig<TData>\n) => PlanetComponentRef<TComp>;\n\nexport class PlanetApplicationRef {\n public appModuleRef?: NgModuleRef<any>;\n public template?: string;\n private innerSelector?: string;\n private name: string;\n private portalApp!: PlanetPortalApplication;\n private appModuleBootstrap?: BootstrapAppModule;\n private componentFactory?: PlantComponentFactory;\n\n public get selector() {\n return this.innerSelector;\n }\n\n public get bootstrapped() {\n return !!this.appModuleRef;\n }\n\n public get ngZone(): NgZone | undefined {\n return this.appModuleRef?.injector.get(NgZone);\n }\n\n public get sandbox(): Sandbox {\n return getSandboxInstance();\n }\n\n constructor(name: string, options?: BootstrapOptions) {\n this.name = name;\n if (options) {\n this.template = options.template;\n this.innerSelector = this.template ? getTagNameByTemplate(this.template) : '';\n this.appModuleBootstrap = options.bootstrap;\n }\n // This is a hack, since NgZone doesn't allow you to configure the property that identifies your zone.\n // See https://github.com/PlaceMe-SAS/single-spa-angular-cli/issues/33,\n NgZone.isInAngularZone = () => {\n // @ts-ignore\n return window.Zone.current._properties[`ngx-planet-${name}`] === true;\n };\n }\n\n // 子应用路由变化后同步修改 portal 的 Route\n private syncPortalRouteWhenNavigationEnd() {\n const router = this.appModuleRef?.injector.get(Router);\n if (router) {\n router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.ngZone?.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.portalApp.router!.navigateByUrl(event.url);\n });\n }\n });\n }\n }\n\n bootstrap(app: PlanetPortalApplication): Observable<this> {\n if (!this.appModuleBootstrap) {\n throw new Error(`app(${this.name}) is not defined`);\n }\n this.portalApp = app;\n return from(\n this.appModuleBootstrap(app).then(appModuleRef => {\n this.appModuleRef = appModuleRef!;\n this.appModuleRef.instance.appName = this.name;\n this.syncPortalRouteWhenNavigationEnd();\n return this;\n })\n );\n }\n\n getRouter() {\n return this.appModuleRef?.injector.get(Router);\n }\n\n getCurrentRouterStateUrl() {\n return this.getRouter()?.routerState.snapshot.url;\n }\n\n navigateByUrl(url: string): void {\n const router = this.getRouter();\n this.ngZone?.run(() => {\n router?.navigateByUrl(url);\n });\n }\n\n getComponentFactory() {\n return this.componentFactory;\n }\n\n registerComponentFactory(componentFactory: PlantComponentFactory) {\n this.componentFactory = componentFactory;\n }\n\n destroy(): void {\n if (this.appModuleRef) {\n const router = this.appModuleRef.injector.get(Router);\n if (router) {\n router.dispose();\n }\n if (this.sandbox) {\n this.sandbox.destroy();\n }\n this.appModuleRef.destroy();\n this.appModuleRef = undefined;\n }\n }\n}\n","import { PlanetApplicationRef, BootstrapAppModule, BootstrapOptions } from './application/planet-application-ref';\nimport { PlanetPortalApplication } from './application/portal-application';\nimport { PlanetApplicationLoader } from './application/planet-application-loader';\nimport { PlanetApplicationService } from './application/planet-application.service';\nimport { isFunction } from './helpers';\n\ndeclare const window: any;\n\nexport interface GlobalPlanet {\n apps: { [key: string]: PlanetApplicationRef };\n portalApplication?: PlanetPortalApplication;\n applicationLoader: PlanetApplicationLoader;\n applicationService: PlanetApplicationService;\n}\n\nexport const globalPlanet: GlobalPlanet = (window.planet = window.planet || {\n apps: {}\n});\n\nexport function defineApplication(name: string, options: BootstrapAppModule | BootstrapOptions) {\n if (globalPlanet.apps[name]) {\n throw new Error(`${name} application has exist.`);\n }\n if (isFunction(options)) {\n options = {\n template: '',\n bootstrap: options as BootstrapAppModule\n };\n }\n const appRef = new PlanetApplicationRef(name, options as BootstrapOptions);\n globalPlanet.apps[name] = appRef;\n}\n\nexport function getPlanetApplicationRef(appName: string): PlanetApplicationRef | null {\n if (globalPlanet && globalPlanet.apps && globalPlanet.apps[appName]) {\n return globalPlanet.apps[appName];\n } else {\n return null;\n }\n}\n\nexport function setPortalApplicationData<T>(data: T) {\n if (globalPlanet.portalApplication) {\n globalPlanet.portalApplication.data = data;\n }\n}\n\nexport function getPortalApplicationData<TData>(): TData {\n return globalPlanet.portalApplication?.data as TData;\n}\n\nexport function setApplicationLoader(loader: PlanetApplicationLoader) {\n globalPlanet.applicationLoader = loader;\n}\n\nexport function getApplicationLoader() {\n return globalPlanet.applicationLoader;\n}\n\nexport function setApplicationService(service: PlanetApplicationService) {\n globalPlanet.applicationService = service;\n}\n\nexport function getApplicationService() {\n return globalPlanet.applicationService;\n}\n\nexport function clearGlobalPlanet() {\n window.planet.apps = {};\n window.planet.portalApplication = null;\n window.planet.applicationLoader = null;\n window.planet.applicationService = null;\n}\n","import { PlanetApplication } from '../planet.class';\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { shareReplay, map } from 'rxjs/operators';\nimport { coerceArray } from '../helpers';\nimport { Observable } from 'rxjs';\nimport { AssetsLoader } from '../assets-loader';\nimport { getApplicationService } from '../global-planet';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlanetApplicationService {\n private apps: PlanetApplication[] = [];\n\n private appsMap: { [key: string]: PlanetApplication } = {};\n\n constructor(private http: HttpClient, private assetsLoader: AssetsLoader) {\n if (getApplicationService()) {\n throw new Error(\n 'PlanetApplicationService has been injected in the portal, repeated injection is not allowed'\n );\n }\n }\n\n register<TExtra>(appOrApps: PlanetApplication<TExtra> | PlanetApplication<TExtra>[]) {\n const apps = coerceArray(appOrApps);\n apps.forEach(app => {\n if (this.appsMap[app.name]) {\n throw new Error(`${app.name} has be registered.`);\n }\n this.apps.push(app);\n this.appsMap[app.name] = app;\n });\n }\n\n registerByUrl(url: string): Observable<void> {\n const result = this.http.get(`${url}`).pipe(\n map(apps => {\n if (apps && Array.isArray(apps)) {\n this.register(apps);\n } else {\n this.register(apps as PlanetApplication);\n }\n }),\n shareReplay()\n );\n result.subscribe();\n return result;\n }\n\n unregister(name: string) {\n if (this.appsMap[name]) {\n delete this.appsMap[name];\n this.apps = this.apps.filter(app => {\n return app.name !== name;\n });\n }\n }\n\n getAppsByMatchedUrl<TExtra = unknown>(url: string): PlanetApplication<TExtra>[] {\n return this.getApps().filter(app => {\n if (app.routerPathPrefix instanceof RegExp) {\n return app.routerPathPrefix.test(url);\n } else {\n return url.startsWith(app.routerPathPrefix);\n }\n });\n }\n\n getAppByName(name: string) {\n return this.appsMap[name];\n }\n\n getAppsToPreload(excludeAppNames?: string[]) {\n return this.getApps().filter(app => {\n if (excludeAppNames) {\n return app.preload && !excludeAppNames.includes(app.name);\n } else {\n return app.preload;\n }\n });\n }\n\n getApps() {\n return this.apps;\n }\n}\n","import { Router, UrlTree, NavigationExtras } from '@angular/router';\nimport { NgZone, Injector, ApplicationRef } from '@angular/core';\nimport { GlobalEventDispatcher } from '../global-event-dispatcher';\n\nexport class PlanetPortalApplication<TData = any> {\n applicationRef?: ApplicationRef;\n injector?: Injector;\n router?: Router;\n ngZone?: NgZone;\n globalEventDispatcher?: GlobalEventDispatcher;\n data?: TData;\n\n navigateByUrl(url: string | UrlTree, extras?: NavigationExtras): Promise<boolean> {\n return this.ngZone!.run(() => {\n return this.router!.navigateByUrl(url, extras);\n });\n }\n\n run<T>(fn: (...args: any[]) => T): T {\n return this.ngZone!.run<T>(() => {\n return fn();\n });\n }\n\n tick() {\n this.applicationRef!.tick();\n }\n}\n","import { Subject, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { Injectable, NgZone } from '@angular/core';\n\nexport interface GlobalDispatcherEvent {\n name: string;\n payload: any;\n}\n\nconst CUSTOM_EVENT_NAME = 'PLANET_GLOBAL_EVENT_DISPATCHER';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GlobalEventDispatcher {\n private subject$: Subject<GlobalDispatcherEvent> = new Subject();\n\n private hasAddGlobalEventListener = false;\n\n private subscriptionCount = 0;\n\n private globalEventListener = (event: CustomEvent) => {\n this.subject$.next(event.detail);\n };\n\n private addGlobalEventListener() {\n this.hasAddGlobalEventListener = true;\n window.addEventListener(CUSTOM_EVENT_NAME, this.globalEventListener);\n }\n\n private removeGlobalEventListener() {\n this.hasAddGlobalEventListener = false;\n window.removeEventListener(CUSTOM_EVENT_NAME, this.globalEventListener);\n }\n\n constructor(private ngZone: NgZone) {}\n\n dispatch<TPayload>(name: string, payload?: TPayload) {\n window.dispatchEvent(\n new CustomEvent(CUSTOM_EVENT_NAME, {\n detail: {\n name: name,\n payload: payload\n }\n })\n );\n }\n\n register<T>(eventName: string): Observable<T> {\n return new Observable(observer => {\n if (!this.hasAddGlobalEventListener) {\n this.addGlobalEventListener();\n }\n this.subscriptionCount++;\n const subscription = this.subject$\n .pipe(\n filter(event => {\n return event.name === eventName;\n }),\n map(event => {\n return event.payload;\n })\n )\n .subscribe(payload => {\n this.ngZone.run(() => {\n observer.next(payload);\n });\n });\n return () => {\n this.subscriptionCount--;\n subscription.unsubscribe();\n if (!this.subscriptionCount) {\n this.removeGlobalEventListener();\n }\n };\n });\n }\n\n getSubscriptionCount() {\n return this.subscriptionCount;\n }\n}\n","import { isFunction } from './helpers';\n\nexport interface Debugger {\n (formatter: any, ...args: any[]): void;\n\n // color: string;\n // enabled: boolean;\n // log: (...args: any[]) => any;\n // namespace: string;\n // destroy: () => boolean;\n // extend: (namespace: string, delimiter?: string) => Debugger;\n}\n\nexport interface Formatters {\n [formatter: string]: (v: any) => string;\n}\n\nexport interface Debug {\n (namespace: string): Debugger;\n coerce: (val: any) => any;\n disable: () => string;\n enable: (namespaces: string) => void;\n enabled: (namespaces: string) => boolean;\n log: (...args: any[]) => any;\n\n names: RegExp[];\n skips: RegExp[];\n\n formatters: Formatters;\n}\n\n/**\n * Debug factory for debug module\n */\nlet _debugFactory: Debug | undefined;\nlet _debuggerMap: Record<string, Debugger> = {};\n\nexport function createDebug(namespace: string): Debugger {\n const key = `planet:${namespace}`;\n return function(formatter: any, ...args: any[]) {\n if (_debugFactory) {\n let debugDebugger = _debuggerMap[key];\n if (!debugDebugger) {\n debugDebugger = _debugFactory(key);\n _debuggerMap[key] = debugDebugger;\n }\n debugDebugger(formatter, args);\n }\n };\n}\n\nexport function setDebugFactory(debug: Debug) {\n if (debug && !isFunction(debug)) {\n throw new Error('debug factory type is invalid, must be function');\n }\n _debugFactory = debug;\n}\n\nexport function clearDebugFactory() {\n _debugFactory = undefined;\n _debuggerMap = {};\n}\n\nexport function getDebugFactory() {\n return _debugFactory;\n}\n","import { Injectable, NgZone, ApplicationRef, Injector } from '@angular/core';\nimport { of, Observable, Subject, forkJoin, from, throwError } from 'rxjs';\nimport { AssetsLoader } from '../assets-loader';\nimport { PlanetApplication, PlanetRouterEvent, SwitchModes, PlanetOptions } from '../planet.class';\nimport { switchMap, share, map, tap, distinctUntilChanged, take, filter, catchError } from 'rxjs/operators';\nimport { getHTMLElement, coerceArray, createElementByTemplate } from '../helpers';\nimport { PlanetApplicationRef } from './planet-application-ref';\nimport { PlanetPortalApplication } from './portal-application';\nimport { PlanetApplicationService } from './planet-application.service';\nimport { GlobalEventDispatcher } from '../global-event-dispatcher';\nimport { Router } from '@angular/router';\nimport { globalPlanet, getPlanetApplicationRef, getApplicationLoader } from '../global-planet';\nimport { createDebug } from '../debug';\nconst debug = createDebug('app-loader');\n\nexport enum ApplicationStatus {\n assetsLoading = 1,\n assetsLoaded = 2,\n bootstrapping = 3,\n bootstrapped = 4,\n active = 5,\n loadError = 10\n}\n\nexport interface AppsLoadingStartEvent {\n shouldLoadApps: PlanetApplication[];\n shouldUnloadApps: PlanetApplication[];\n}\n\nexport interface AppStatusChangeEvent {\n app: PlanetApplication;\n status: ApplicationStatus;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlanetApplicationLoader {\n private firstLoad = true;\n\n private startRouteChangeEvent!: PlanetRouterEvent;\n\n private options: PlanetOptions;\n\n private inProgressAppAssetsLoads = new Map<string, Observable<PlanetApplication>>();\n\n private appsStatus = new Map<PlanetApplication, ApplicationStatus>();\n\n private portalApp = new PlanetPortalApplication();\n\n private routeChange$ = new Subject<PlanetRouterEvent>();\n\n private appStatusChange$ = new Subject<AppStatusChangeEvent>();\n\n private appsLoadingStart$ = new Subject<AppsLoadingStartEvent>();\n\n public get appStatusChange(): Observable<AppStatusChangeEvent> {\n return this.appStatusChange$.asObservable();\n }\n\n public get appsLoadingStart(): Observable<AppsLoadingStartEvent> {\n return this.appsLoadingStart$.asObservable();\n }\n\n public loadingDone = false;\n\n constructor(\n private assetsLoader: AssetsLoader,\n private planetApplicationService: PlanetApplicationService,\n private ngZone: NgZone,\n router: Router,\n injector: Injector,\n applicationRef: ApplicationRef\n ) {\n if (getApplicationLoader()) {\n throw new Error(\n 'PlanetApplicationLoader has been injected in the portal, repeated injection is not allowed'\n );\n }\n\n this.options = {\n switchMode: SwitchModes.default,\n errorHandler: (error: Error) => {\n console.error(error);\n }\n };\n this.portalApp.ngZone = ngZone;\n this.portalApp.applicationRef = applicationRef;\n this.portalApp.router = router;\n this.portalApp.injector = injector;\n this.portalApp.globalEventDispatcher = injector.get(GlobalEventDispatcher);\n globalPlanet.portalApplication = this.portalApp;\n this.setupRouteChange();\n }\n\n private setAppStatus(app: PlanetApplication, status: ApplicationStatus) {\n this.ngZone.run(() => {\n const fromStatus = this.appsStatus.get(app);\n debug(\n `app(${app.name}) status change: ${fromStatus ? ApplicationStatus[fromStatus] : 'empty'} => ${\n ApplicationStatus[status]\n }`\n );\n this.appsStatus.set(app, status);\n this.appStatusChange$.next({\n app: app,\n status: status\n });\n });\n }\n\n private getAppStatusChange$(\n app: PlanetApplication,\n status = ApplicationStatus.bootstrapped\n ): Observable<PlanetApplication> {\n return this.appStatusChange.pipe(\n filter(event => {\n return event.app === app && event.status === status;\n }),\n map(() => {\n return app;\n })\n );\n }\n\n private switchModeIsCoexist(app: PlanetApplication) {\n if (app && app.switchMode) {\n return app.switchMode === SwitchModes.coexist;\n } else {\n return this.options.switchMode === SwitchModes.coexist;\n }\n }\n\n private errorHandler(error: Error) {\n this.ngZone.run(() => {\n this.options.errorHandler(error);\n });\n }\n\n private setLoadingDone() {\n this.ngZone.run(() => {\n this.loadingDone = true;\n });\n }\n\n private getAppNames(apps: PlanetApplication[]): string | string[] {\n return apps.length === 0\n ? `[]`\n : apps.map(item => {\n return item.name;\n });\n }\n\n private setupRouteChange() {\n this.routeChange$\n .pipe(\n distinctUntilChanged((x, y) => {\n return (x && x.url) === (y && y.url);\n }),\n // Using switchMap so we cancel executing loading when a new one comes in\n switchMap(event => {\n // Return new observable use of and catchError,\n // in order to prevent routeChange$ completed which never trigger new route change\n return of(event).pipe(\n // unload apps and return should load apps\n map(() => {\n debug(`route change, url is: ${event.url}`);\n this.startRouteChangeEvent = event;\n const shouldLoadApps = this.planetApplicationService.getAppsByMatchedUrl(event.url);\n debug(`should load apps: ${this.getAppNames(shouldLoadApps)}`);\n const shouldUnloadApps = this.getUnloadApps(shouldLoadApps);\n this.appsLoadingStart$.next({\n shouldLoadApps,\n shouldUnloadApps\n });\n this.unloadApps(shouldUnloadApps, event);\n debug(`unload apps: ${this.getAppNames(shouldUnloadApps)}`);\n return shouldLoadApps;\n }),\n // Load app assets (static resources)\n switchMap(shouldLoadApps => {\n let hasAppsNeedLoadingAssets = false;\n const loadApps$ = shouldLoadApps.map(app => {\n const appStatus = this.appsStatus.get(app);\n if (\n !appStatus ||\n appStatus === ApplicationStatus.assetsLoading ||\n appStatus === ApplicationStatus.loadError\n ) {\n debug(\n `app(${app.name}) status is ${\n ApplicationStatus[appStatus as ApplicationStatus]\n }, start load assets`\n );\n hasAppsNeedLoadingAssets = true;\n return this.ngZone.runOutsideAngular(() => {\n return this.startLoadAppAssets(app);\n });\n } else {\n return of(app);\n }\n });\n if (hasAppsNeedLoadingAssets) {\n this.loadingDone = false;\n }\n return loadApps$.length > 0 ? forkJoin(loadApps$) : of([] as PlanetApplication[]);\n }),\n // Bootstrap or show apps\n map(apps => {\n const apps$: Observable<PlanetApplication>[] = apps.map(app => {\n return of(app).pipe(\n switchMap(app => {\n const appStatus = this.appsStatus.get(app);\n if (appStatus === ApplicationStatus.bootstrapped) {\n debug(\n `[routeChange] app(${app.name}) status is bootstrapped, show app and active`\n );\n this.showApp(app);\n const appRef = getPlanetApplicationRef(app.name);\n appRef?.navigateByUrl(event.url);\n this.setAppStatus(app, ApplicationStatus.active);\n this.setLoadingDone();\n return of(app);\n } else if (appStatus === ApplicationStatus.assetsLoaded) {\n debug(\n `[routeChange] app(${app.name}) status is assetsLoaded, start bootstrapping`\n );\n return this.bootstrapApp(app).pipe(\n map(() => {\n debug(`app(${app.name}) bootstrapped success, active it`);\n this.setAppStatus(app, ApplicationStatus.active);\n this.setLoadingDone();\n return app;\n })\n );\n } else if (appStatus === ApplicationStatus.active) {\n debug(`[routeChange] app(${app.name}) is active, do nothings`);\n const appRef = getPlanetApplicationRef(app.name);\n // Backwards compatibility sub app use old version which has not getCurrentRouterStateUrl\n const currentUrl = appRef?.getCurrentRouterStateUrl\n ? appRef.getCurrentRouterStateUrl()\n : '';\n if (currentUrl !== event.url) {\n appRef?.navigateByUrl(event.url);\n }\n return of(app);\n } else {\n debug(\n `[routeChange] app(${app.name}) status is ${\n ApplicationStatus[appStatus as ApplicationStatus]\n }`\n );\n return this.getAppStatusChange$(app).pipe(\n take(1),\n map(() => {\n debug(\n `app(${app.name}) status is bootstrapped by subscribe status change, active it`\n );\n this.setAppStatus(app, ApplicationStatus.active);\n this.showApp(app);\n return app;\n })\n );\n }\n })\n );\n });\n\n if (apps$.length > 0) {\n debug(`start load and active apps: ${this.getAppNames(apps)}`);\n // 切换到应用后会有闪烁现象,所以使用 setTimeout 后启动应用\n // example: redirect to app1's dashboard from portal's about page\n // If app's route has redirect, it doesn't work, it ok just in setTimeout, I don't know why.\n // TODO:: remove it, it is ok in version Angular 9.x\n setTimeout(() => {\n // 此处判断是因为如果静态资源加载完毕还未启动被取消,还是会启动之前的应用,虽然可能性比较小,但是无法排除这种可能性,所以只有当 Event 是最后一个才会启动\n if (this.startRouteChangeEvent === event) {\n // runOutsideAngular for fix error: `Expected to not be in Angular Zone, but it is!`\n this.ngZone.runOutsideAngular(() => {\n forkJoin(apps$).subscribe(() => {\n this.setLoadingDone();\n this.ensurePreloadApps(apps);\n });\n });\n }\n });\n } else {\n debug(`no apps need to be loaded, ensure preload apps`);\n this.ensurePreloadApps(apps);\n this.setLoadingDone();\n }\n }),\n // Error handler\n catchError(error => {\n debug(`apps loader error: ${error}`);\n this.errorHandler(error);\n return [];\n })\n );\n })\n )\n .subscribe();\n }\n\n private startLoadAppAssets(app: PlanetApplication): Observable<PlanetApplication> {\n if (this.inProgressAppAssetsLoads.get(app.name)) {\n return this.inProgressAppAssetsLoads.get(app.name);\n } else {\n const loadApp$ = this.assetsLoader.loadAppAssets(app).pipe(\n tap(() => {\n this.inProgressAppAssetsLoads.delete(app.name);\n this.setAppStatus(app, ApplicationStatus.assetsLoaded);\n }),\n map(() => {\n return app;\n }),\n catchError(error => {\n this.inProgressAppAssetsLoads.delete(app.name);\n this.setAppStatus(app, ApplicationStatus.loadError);\n throw error;\n }),\n share()\n );\n this.inProgressAppAssetsLoads.set(app.name, loadApp$);\n this.setAppStatus(app, ApplicationStatus.assetsLoading);\n return loadApp$;\n }\n }\n\n private hideApp(planetApp: PlanetApplication) {\n const appRef = getPlanetApplicationRef(planetApp.name);\n const appRootElement = document.querySelector(appRef?.selector || (planetApp.selector as string));\n if (appRootElement) {\n appRootElement.setAttribute('style', 'display:none;');\n }\n }\n\n private showApp(planetApp: PlanetApplication) {\n const appRef = getPlanetApplicationRef(planetApp.name);\n const appRootElement = document.querySelector(appRef?.selector || (planetApp.selector as string));\n if (appRootElement) {\n appRootElement.setAttribute('style', '');\n }\n }\n\n private destroyApp(planetApp: PlanetApplication) {\n const appRef = getPlanetApplicationRef(planetApp.name);\n if (appRef) {\n appRef.destroy();\n }\n const container = getHTMLElement(planetApp.hostParent);\n const appRootElement = container?.querySelector((appRef && appRef.selector) || (planetApp.selector as string));\n if (appRootElement) {\n container?.removeChild(appRootElement);\n }\n }\n\n private bootstrapApp(\n app: PlanetApplication,\n defaultStatus: 'hidden' | 'display' = 'display'\n ): Observable<PlanetApplicationRef> {\n debug(`app(${app.name}) start bootstrapping`);\n this.setAppStatus(app, ApplicationStatus.bootstrapping);\n const appRef = getPlanetApplicationRef(app.name);\n if (appRef && appRef.bootstrap) {\n const container = getHTMLElement(app.hostParent);\n let appRootElement: HTMLElement;\n if (container) {\n appRootElement = container.querySelector(appRef.selector || app.selector!)!;\n if (!appRootElement) {\n if (appRef.template) {\n appRootElement = createElementByTemplate(appRef.template)!;\n } else {\n appRootElement = document.createElement(app.selector!);\n }\n appRootElement.setAttribute('style', 'display:none;');\n if (app.hostClass) {\n appRootElement.classList.add(...coerceArray(app.hostClass));\n }\n if (app.stylePrefix) {\n appRootElement.classList.add(...coerceArray(app.stylePrefix));\n }\n container.appendChild(appRootElement);\n }\n }\n let result = appRef.bootstrap(this.portalApp);\n // Backwards compatibility promise for bootstrap\n if ((result as any)['then']) {\n result = from(result) as Observable<PlanetApplicationRef>;\n }\n return result.pipe(\n tap(() => {\n debug(`app(${app.name}) bootstrapped success for ${defaultStatus}`);\n this.setAppStatus(app, ApplicationStatus.bootstrapped);\n if (defaultStatus === 'display' && appRootElement) {\n appRootElement.removeAttribute('style');\n }\n }),\n map(() => {\n return appRef;\n })\n );\n } else {\n throw new Error(\n `[${app.name}] not found, make sure that the app has the correct name defined use defineApplication(${app.name}) and runtimeChunk and vendorChunk are set to true, details see https://github.com/worktile/ngx-planet#throw-error-cannot-read-property-call-of-undefined-at-__webpack_require__-bootstrap79`\n );\n }\n }\n\n private getUnloadApps(activeApps: PlanetApplication[]) {\n const unloadApps: PlanetApplication[] = [];\n this.appsStatus.forEach((value, app) => {\n if (value === ApplicationStatus.active && !activeApps.find(item => item.name === app.name)) {\n unloadApps.push(app);\n }\n });\n return unloadApps;\n }\n\n private unloadApps(shouldUnloadApps: PlanetApplication[], event: PlanetRouterEvent) {\n const hideApps: PlanetApplication[] = [];\n const destroyApps: PlanetApplication[] = [];\n shouldUnloadApps.forEach(app => {\n if (this.switchModeIsCoexist(app)) {\n debug(`hide app(${app.name}) for coexist mode`);\n hideApps.push(app);\n this.hideApp(app);\n this.setAppStatus(app, ApplicationStatus.bootstrapped);\n } else {\n destroyApps.push(app);\n // 销毁之前先隐藏,否则会出现闪烁,因为 destroy 是延迟执行的\n // 如果销毁不延迟执行,会出现切换到主应用的时候会有视图卡顿现象\n this.hideApp(app);\n this.setAppStatus(app, ApplicationStatus.assetsLoaded);\n }\n });\n\n if (hideApps.length > 0 || destroyApps.length > 0) {\n // 从其他应用切换到主应用的时候会有视图卡顿现象,所以先等主应用渲染完毕后再加载其他应用\n // 此处尝试使用 this.ngZone.onStable.pipe(take(1)) 应用之间的切换会出现闪烁\n setTimeout(() => {\n hideApps.forEach(app => {\n const appRef = getPlanetApplicationRef(app.name);\n if (appRef) {\n appRef.navigateByUrl(event.url);\n }\n });\n destroyApps.forEach(app => {\n debug(`destroy app(${app.name})`);\n this.destroyApp(app);\n });\n });\n }\n }\n\n private preloadApps(activeApps?: PlanetApplication[]) {\n setTimeout(() => {\n const toPreloadApps = this.planetApplicationService.getAppsToPreload(\n activeApps ? activeApps.map(item => item.name) : undefined\n );\n debug(`start preload apps: ${this.getAppNames(toPreloadApps)}`);\n const loadApps$ = toPreloadApps.map(preloadApp => {\n return this.preloadInternal(preloadApp);\n });\n\n forkJoin(loadApps$).subscribe({\n error: error => {\n this.errorHandler(error);\n }\n });\n });\n }\n\n private ensurePreloadApps(activeApps?: PlanetApplication[]) {\n // Start preload apps\n // Start preload when first time app loaded\n if (this.firstLoad) {\n this.preloadApps(activeApps);\n this.firstLoad = false;\n }\n }\n\n public setOptions(options: Partial<PlanetOptions>) {\n this.options = {\n ...this.options,\n ...options\n };\n }\n\n /**\n * reset route by current router\n */\n public reroute(event: PlanetRouterEvent) {\n this.routeChange$.next(event);\n }\n\n private preloadInternal(app: PlanetApplication, immediate?: boolean): Observable<PlanetApplicationRef | null> {\n const status = this.appsStatus.get(app);\n if (!status || status === ApplicationStatus.loadError) {\n debug(`preload app(${app.name}), status is empty, start to load assets`);\n return this.startLoadAppAssets(app).pipe(\n switchMap(() => {\n debug(`preload app(${app.name}), assets loaded, start bootstrap app, immediate: ${!!immediate}`);\n if (immediate) {\n return this.bootstrapApp(app, 'hidden');\n } else {\n return this.ngZone.runOutsideAngular(() => {\n return this.bootstrapApp(app, 'hidden');\n });\n }\n }),\n catchError(error => {\n this.errorHandler(error);\n return of(null);\n }),\n map(() => {\n return getPlanetApplicationRef(app.name);\n })\n );\n } else if (\n [ApplicationStatus.assetsLoading, ApplicationStatus.assetsLoaded, ApplicationStatus.bootstrapping].includes(\n status\n )\n ) {\n debug(`preload app(${app.name}), status is ${ApplicationStatus[status]}, return until bootstrapped`);\n return this.getAppStatusChange$(app).pipe(\n take(1),\n map(() => {\n return getPlanetApplicationRef(app.name);\n })\n );\n } else {\n const appRef = getPlanetApplicationRef(app.name);\n if (!appRef) {\n throw new Error(`${app.name}'s status is ${ApplicationStatus[status]}, planetApplicationRef is null.`);\n }\n return of(appRef);\n }\n }\n\n /**\n * Preload planet application\n * @param app app\n * @param immediate bootstrap on stable by default, setting immediate is true, it will bootstrap immediate\n */\n public preload(app: PlanetApplication, immediate?: boolean): Observable<PlanetApplicationRef> {\n return this.preloadInternal(app, immediate);\n }\n}\n","import { Injectable, Inject, Optional, Injector } from '@angular/core';\nimport { NavigationEnd, RouterEvent, Router } from '@angular/router';\nimport { PlanetOptions, PlanetApplication, PLANET_APPLICATIONS } from './planet.class';\nimport { PlanetApplicationService } from './application/planet-application.service';\nimport {\n PlanetApplicationLoader,\n AppsLoadingStartEvent,\n AppStatusChangeEvent\n} from './application/planet-application-loader';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, startWith, distinctUntilChanged, map } from 'rxjs/operators';\nimport {\n setPortalApplicationData,\n setApplicationLoader,\n setApplicationService,\n getApplicationLoader,\n getApplicationService\n} from './global-planet';\nimport { setDebugFactory } from './debug';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Planet {\n private get planetApplicationLoader(): PlanetApplicationLoader {\n return getApplicationLoader();\n }\n\n private get planetApplicationService() {\n return getApplicationService();\n }\n\n public get loadingDone() {\n return this.planetApplicationLoader.loadingDone;\n }\n\n public get appStatusChange(): Observable<AppStatusChangeEvent> {\n return this.planetApplicationLoader.appStatusChange;\n }\n\n public get appsLoadingStart(): Observable<AppsLoadingStartEvent> {\n return this.planetApplicationLoader.appsLoadingStart;\n }\n\n private subscription?: Subscription;\n\n constructor(\n private injector: Injector,\n private router: Router,\n @Inject(PLANET_APPLICATIONS) @Optional() planetApplications: PlanetApplication[]\n ) {\n if (!this.planetApplicationLoader) {\n setApplicationLoader(this.injector.get(PlanetApplicationLoader));\n }\n if (!this.planetApplicationService) {\n setApplicationService(this.injector.get(PlanetApplicationService));\n }\n\n if (planetApplications) {\n this.registerApps(planetApplications);\n }\n }\n\n setOptions(options: Partial<PlanetOptions>) {\n this.planetApplicationLoader.setOptions(options);\n if (options.debugFactory) {\n setDebugFactory(options.debugFactory);\n }\n }\n\n setPortalAppData<T>(data: T) {\n setPortalApplicationData(data);\n }\n\n registerApp<TExtra>(app: PlanetApplication<TExtra>) {\n this.planetApplicationService.register(app);\n }\n\n registerApps<TExtra>(apps: PlanetApplication<TExtra>[]) {\n this.planetApplicationService.register(apps);\n }\n\n unregisterApp(name: string) {\n this.planetApplicationService.unregister(name);\n }\n\n getApps() {\n return this.planetApplicationService.getApps();\n }\n\n start() {\n this.subscription = (this.router.events as Observable<RouterEvent>)\n .pipe(\n filter(event => {\n return event instanceof NavigationEnd;\n }),\n map(event => {\n return (event as NavigationEnd).urlAfterRedirects || event.url;\n }),\n startWith(location.pathname),\n distinctUntilChanged()\n )\n .subscribe((url: string) => {\n this.planetApplicationLoader.reroute({\n url: url\n });\n });\n }\n\n stop() {\n this.subscription?.unsubscribe();\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'empty-component',\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class EmptyComponent {}\n","import { ComponentRef, ElementRef } from '@angular/core';\n\nexport class PlanetComponentRef<TComp = any> {\n wrapperElement: HTMLElement;\n hostElement: HTMLElement;\n componentInstance: TComp;\n componentRef: ComponentRef<TComp>;\n dispose: () => void;\n}\n","import {\n Injectable,\n ApplicationRef,\n NgModuleRef,\n NgZone,\n ElementRef,\n Inject,\n Injector,\n createComponent,\n Type,\n ComponentRef,\n EmbeddedViewRef,\n reflectComponentType\n} from '@angular/core';\nimport { PlanetApplicationRef } from '../application/planet-application-ref';\nimport { PlanetComponentRef } from './planet-component-ref';\nimport { PlantComponentConfig } from './plant-component.config';\nimport { coerceArray } from '../helpers';\nimport { map, shareReplay, delayWhen } from 'rxjs/operators';\nimport { of, Observable, timer } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\nimport { globalPlanet, getApplicationLoader, getApplicationService } from '../global-planet';\n\nconst componentWrapperClass = 'planet-component-wrapper';\n\nfunction isComponentType<T>(component: PlanetComponent<T>): component is Type<T> {\n return typeof component === 'function' && component.constructor === Function;\n}\n\nexport type PlanetComponent<T = unknown> =\n | {\n name: string;\n component: Type<T>;\n }\n | Type<T>;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlanetComponentLoader {\n private get applicationLoader() {\n return getApplicationLoader();\n }\n\n private get applicationService() {\n return getApplicationService();\n }\n\n constructor(\n private applicationRef: ApplicationRef,\n private ngModuleRef: NgModuleRef<any>,\n private ngZone: NgZone,\n @Inject(DOCUMENT) private document: any\n ) {}\n\n private getPlantAppRef(name: string): Observable<PlanetApplicationRef> {\n if (globalPlanet.apps[name] && globalPlanet.apps[name].appModuleRef) {\n return of(globalPlanet.apps[name]);\n } else {\n const app = this.applicationService.getAppByName(name);\n return this.applicationLoader.preload(app, true).pipe(\n map(() => {\n return globalPlanet.apps[name];\n })\n );\n }\n }\n\n private createInjector<TData>(appModuleRef: NgModuleRef<any>, componentRef: PlanetComponentRef<TData>): Injector {\n return Injector.create({\n providers: [\n {\n provide: PlanetComponentRef,\n useValue: componentRef\n }\n ],\n parent: appModuleRef.injector\n });\n }\n\n private getContainerElement(config: PlantComponentConfig): HTMLElement {\n if (!config.container) {\n throw new Error(`config 'container' cannot be null`);\n } else {\n if ((config.container as ElementRef).nativeElement) {\n return (config.container as ElementRef).nativeElement;\n } else {\n return config.container as HTMLElement;\n }\n }\n }\n\n private insertComponentRootNodeToContainer(\n container: HTMLElement,\n componentRootNode: HTMLElement,\n hostClass: string\n ) {\n const subApp = this.applicationService.getAppByName(this.ngModuleRef.instance.appName);\n componentRootNode.classList.add(componentWrapperClass);\n componentRootNode.setAttribute('planet-inline', '');\n if (hostClass) {\n componentRootNode.classList.add(hostClass);\n }\n if (subApp && subApp.stylePrefix) {\n componentRootNode.classList.add(subApp.stylePrefix);\n }\n // container 是注释则在前方插入,否则在元素内部插入\n if (container.nodeType === 8) {\n container.parentElement.insertBefore(componentRootNode, container);\n } else {\n container.appendChild(componentRootNode);\n }\n }\n\n private attachComponent<TData>(\n component: Type<unknown>,\n appModuleRef: NgModuleRef<unknown>,\n config: PlantComponentConfig\n ): PlanetComponentRef<TData> {\n const plantComponentRef = new PlanetComponentRef();\n const appRef = this.applicationRef;\n const injector = this.createInjector<TData>(appModuleRef, plantComponentRef);\n const container = this.getContainerElement(config);\n const componentRef = createComponent(component, {\n environmentInjector: appModuleRef.injector,\n elementInjector: injector\n });\n appRef.attachView(componentRef.hostView);\n const componentRootNode = this.getComponentRootNode(componentRef);\n this.insertComponentRootNodeToContainer(container, componentRootNode, config.hostClass || config.wrapperClass);\n if (config.initialState) {\n Object.assign(componentRef.instance, config.initialState);\n }\n plantComponentRef.componentInstance = componentRef.instance;\n plantComponentRef.componentRef = componentRef;\n plantComponentRef.hostElement = componentRootNode;\n plantComponentRef.dispose = () => {\n if (appRef.viewCount > 0) {\n appRef.detachView(componentRef.hostView);\n }\n componentRef?.destroy();\n componentRootNode.remove();\n };\n return plantComponentRef;\n }\n\n /** Gets the root HTMLElement for an instantiated component. */\n private getComponentRootNode(componentRef: ComponentRef<any>): HTMLElement {\n return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n }\n\n private registerComponentFactory(componentOrComponents: PlanetComponent | PlanetComponent[]) {\n const app = this.ngModuleRef.instance.appName;\n this.getPlantAppRef(app).subscribe(appRef => {\n appRef.registerComponentFactory((componentName: string, config: PlantComponentConfig<any>) => {\n const components = coerceArray(componentOrComponents);\n const planetComponent = components.find(item => {\n return isComponentType(item)\n ? reflectComponentType(item).selector.includes(componentName)\n : item.name === componentName;\n });\n if (planetComponent) {\n return this.ngZone.run(() => {\n const componentRef = this.attachComponent<any>(\n isComponentType(planetComponent) ? planetComponent : planetComponent.component,\n appRef.appModuleRef,\n config\n );\n return componentRef;\n });\n } else {\n throw Error(`unregistered component ${componentName} in app ${app}`);\n }\n });\n });\n }\n\n register(components: PlanetComponent | PlanetComponent[]) {\n setTimeout(() => {\n this.registerComponentFactory(components);\n });\n }\n\n load<TComp = unknown, TData = unknown>(\n app: string,\n componentName: string,\n config: PlantComponentConfig<TData>\n ): Observable<PlanetComponentRef<TComp>> {\n const result = this.getPlantAppRef(app).pipe(\n delayWhen(appRef => {\n if (appRef.getComponentFactory()) {\n return of('');\n } else {\n // Because register use 'setTimeout',so timer 20\n return timer(20);\n }\n }),\n map(appRef => {\n const componentFactory = appRef.getComponentFactory();\n if (componentFactory) {\n return componentFactory<TData, TComp>(componentName, config);\n } else {\n throw new Error(`${app}'s component(${componentName}) is not registered`);\n }\n }),\n shareReplay()\n );\n result.subscribe();\n return result;\n }\n}\n","import {\n Directive,\n ViewContainerRef,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n Input,\n AfterViewInit,\n ElementRef,\n NgZone,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PlanetComponentLoader } from './planet-component-loader';\nimport { PlanetComponentRef } from './planet-component-ref';\n\n@Directive({\n selector: '[planetComponentOutlet]',\n standalone: true\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class PlanetComponentOutlet implements OnChanges, OnDestroy, AfterViewInit {\n @Input() planetComponentOutlet: string;\n\n @Input() planetComponentOutletApp: string;\n\n @Input() planetComponentOutletInitialState: any;\n\n @Output() planetComponentLoaded = new EventEmitter<PlanetComponentRef>();\n\n private componentRef: PlanetComponentRef;\n\n private destroyed$ = new Subject<void>();\n\n constructor(\n private elementRef: ElementRef,\n private planetComponentLoader: PlanetComponentLoader,\n private ngZone: NgZone\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.planetComponentOutlet && !changes.planetComponentOutlet.isFirstChange()) {\n this.loadComponent();\n }\n }\n\n ngAfterViewInit(): void {\n this.loadComponent();\n }\n\n loadComponent() {\n this.clear();\n if (this.planetComponentOutlet && this.planetComponentOutletApp) {\n this.planetComponentLoader\n .load(this.planetComponentOutletApp, this.planetComponentOutlet, {\n container: this.elementRef.nativeElement,\n initialState: this.planetComponentOutletInitialState\n })\n .pipe(takeUntil(this.destroyed$))\n .subscribe(componentRef => {\n this.componentRef = componentRef;\n this.ngZone.run(() => {\n Promise.resolve().then(() => {\n this.planetComponentLoaded.emit(this.componentRef);\n });\n });\n });\n }\n }\n\n ngOnDestroy(): void {\n this.clear();\n this.destroyed$.complete();\n }\n\n clear() {\n this.componentRef?.dispose();\n this.destroyed$.next();\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { ActivatedRoute, Route, Router, UrlTree } from '@angular/router';\n\nclass RouteRedirect {\n activatedRoute = inject(ActivatedRoute);\n router = inject(Router);\n\n constructor(redirectTo: string) {\n const finalRedirectTo = redirectTo || this.activatedRoute.snapshot.data.redirectTo;\n if (finalRedirectTo) {\n const activatedRouteUrl = this.activatedRoute.pathFromRoot\n .filter(route => {\n return route.snapshot.url?.length > 0;\n })\n .map(route => {\n return route.snapshot.url.join('/');\n })\n .join('/');\n if (\n this.router.isActive(activatedRouteUrl, {\n matrixParams: 'exact',\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'exact'\n })\n ) {\n this.router.navigate(\n [`${finalRedirectTo}`],\n // By replacing the current URL in the history, we keep the Browser's Back\n // Button behavior in tact. This will allow the user to easily navigate back\n // to the previous URL without getting caught in a redirect.\n {\n replaceUrl: true,\n relativeTo: this.activatedRoute\n }\n );\n }\n }\n }\n}\n\nexport function routeRedirect(redirectTo?: string) {\n return new RouteRedirect(redirectTo);\n}\n\n@Component({\n selector: 'planet-redirect-to-route',\n template: '',\n standalone: true\n})\nexport class RedirectToRouteComponent {\n routeRedirect = routeRedirect();\n}\n\nexport function redirectToRoute(redirectTo: string): Route {\n return {\n path: '',\n component: RedirectToRouteComponent,\n data: {\n redirectTo: redirectTo\n }\n };\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { PlanetApplication, PLANET_APPLICATIONS } from './planet.class';\nimport { HttpClientModule } from '@angular/common/http';\nimport { EmptyComponent } from './empty/empty.component';\nimport { PlanetComponentOutlet } from './component/planet-component-outlet';\nimport { RedirectToRouteComponent } from './router/route-redirect';\n\n@NgModule({\n declarations: [],\n imports: [HttpClientModule, PlanetComponentOutlet, EmptyComponent, RedirectToRouteComponent],\n providers: [],\n exports: [HttpClientModule, EmptyComponent, PlanetComponentOutlet]\n})\nexport class NgxPlanetModule {\n static forRoot(apps: PlanetApplication[]): ModuleWithProviders<NgxPlanetModule> {\n return {\n ngModule: NgxPlanetModule,\n providers: [\n {\n provide: PLANET_APPLICATIONS,\n useValue: apps\n }\n ]\n };\n }\n}\n","import { ViewContainerRef, ElementRef } from '@angular/core';\n\nexport class PlantComponentConfig<TData = any> {\n /** Load target container */\n container: HTMLElement | ElementRef<HTMLElement | any> | Comment;\n /**\n * Wrapper class of plant component\n * @deprecated please use hostClass\n */\n wrapperClass?: string;\n /**\n * Host class of plant component\n */\n hostClass?: string;\n /** Data being injected into the child component. */\n initialState?: TData | null = null;\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './planet';\nexport * from './global-event-dispatcher';\nexport * from './application/portal-application';\nexport * from './planet.class';\nexport * from './module';\nexport { PlanetApplicationRef } from './application/planet-application-ref';\nexport { defineApplication, getPortalApplicationData, getPlanetApplicationRef } from './global-planet';\nexport { PlanetApplicationService } from './application/planet-application.service';\nexport * from './application/planet-application-loader';\nexport * from './assets-loader';\nexport { PlanetComponent, PlanetComponentLoader } from './component/planet-component-loader';\nexport { PlanetComponentRef } from './component/planet-component-ref';\nexport { PlanetComponentOutlet } from './component/planet-component-outlet';\nexport { PlantComponentConfig } from './component/plant-component.config';\nexport * from './empty/empty.component';\nexport * from './router/route-redirect';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.AssetsLoader","i1.AssetsLoader","i2.PlanetApplicationService","i1.PlanetComponentLoader"],"mappings":"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"}
1
+ {"version":3,"file":"worktile-planet.mjs","sources":["../../../packages/planet/src/planet.class.ts","../../../packages/planet/src/helpers.ts","../../../packages/planet/src/sandbox/constants.ts","../../../packages/planet/src/sandbox/proxy/proxies/common.ts","../../../packages/planet/src/sandbox/proxy/proxies/window.ts","../../../packages/planet/src/sandbox/proxy/patches/eventListener.ts","../../../packages/planet/src/sandbox/proxy/proxies/document.ts","../../../packages/planet/src/sandbox/proxy/patches/document.ts","../../../packages/planet/src/sandbox/proxy/patches/timer.ts","../../../packages/planet/src/sandbox/proxy/patches/storage.ts","../../../packages/planet/src/sandbox/proxy/patches/index.ts","../../../packages/planet/src/sandbox/exec.ts","../../../packages/planet/src/sandbox/sandbox.ts","../../../packages/planet/src/sandbox/proxy/proxy-sandbox.ts","../../../packages/planet/src/sandbox/snapshot/snapshot-sandbox.ts","../../../packages/planet/src/sandbox/index.ts","../../../packages/planet/src/assets-loader.ts","../../../packages/planet/src/application/planet-application-ref.ts","../../../packages/planet/src/global-planet.ts","../../../packages/planet/src/application/planet-application.service.ts","../../../packages/planet/src/application/portal-application.ts","../../../packages/planet/src/global-event-dispatcher.ts","../../../packages/planet/src/debug.ts","../../../packages/planet/src/application/planet-application-loader.ts","../../../packages/planet/src/planet.ts","../../../packages/planet/src/empty/empty.component.ts","../../../packages/planet/src/component/planet-component-ref.ts","../../../packages/planet/src/component/planet-component-loader.ts","../../../packages/planet/src/component/planet-component-outlet.ts","../../../packages/planet/src/router/route-redirect.ts","../../../packages/planet/src/module.ts","../../../packages/planet/src/component/plant-component.config.ts","../../../packages/planet/src/public-api.ts","../../../packages/planet/src/worktile-planet.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Debug } from './debug';\n\nexport interface PlanetOptions {\n switchMode?: SwitchModes;\n errorHandler: (error: Error) => void;\n debugFactory?: Debug;\n}\n\nexport interface PlanetApplication<TExtra = any> {\n name: string;\n // 应用加载的宿主元素或者选择器\n hostParent: string | HTMLElement;\n\n // 子应用的选择器\n /**\n * @deprecated please use new defineApplication to set selector\n */\n selector?: string;\n // 子应用路由前缀路径\n routerPathPrefix: string | RegExp;\n // 宿主元素附加样式\n hostClass?: string | string[];\n // 是否需要预加载\n preload?: boolean;\n // 是否开启沙箱\n sandbox?: boolean;\n // 切换应用的模式\n switchMode?: SwitchModes;\n // 资源文件路径的前缀\n resourcePathPrefix?: string;\n // 样式前缀\n stylePrefix?: string;\n // 样式资源文件\n styles?: string[];\n // 脚本资源文件\n scripts?: string[];\n // 串行加载,默认并行加载脚本资源\n loadSerial?: boolean;\n // 皮肤样式的路径\n themeStylesPath?: string;\n // 应用程序打包后的脚本和样式文件替换\n manifest?: string;\n // 附加数据,主要应用于业务,比如图标,子应用的颜色,显示名等个性化配置\n extra?: TExtra;\n}\n\nexport enum SwitchModes {\n default = 'default',\n coexist = 'coexist'\n}\n\nexport interface PlanetRouterEvent {\n url: string;\n}\n\nconst PLANET_APPLICATIONS = new InjectionToken<PlanetApplication>('PLANET_APPLICATIONS');\n\nexport { PLANET_APPLICATIONS };\n","import { PlanetApplication } from './planet.class';\n\nconst ELEMENT_NODE_TYPE = 1;\n\nexport function hashCode(str: string): number {\n let hash = 0;\n let chr: number;\n if (str.length === 0) {\n return hash;\n }\n for (let i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n}\n\nexport function getHTMLElement(selector: string | HTMLElement): HTMLElement | null {\n if (selector instanceof HTMLElement) {\n return selector;\n } else {\n return document.querySelector(selector);\n }\n}\n\nexport function getTagNameByTemplate(template: string): string {\n const element = createElementByTemplate(template);\n return element ? element.nodeName : '';\n}\n\nexport function createElementByTemplate(template: string) {\n if (!template) {\n return null;\n }\n const element = document.createRange().createContextualFragment(template).firstChild;\n if (element && element.nodeType === ELEMENT_NODE_TYPE) {\n return element as HTMLElement;\n } else {\n throw new Error(`invalid template '${template}'`);\n }\n}\n\nexport function coerceArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\nexport function isEmpty(value: any): boolean {\n if (!value || value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function isFunction(value: any): value is Function {\n const type = typeof value;\n return !!value && type === 'function';\n}\n\nexport function isObject(val: any) {\n return val && typeof val === 'object';\n}\n/**\n * Get file name from path\n * 1. \"main.js\" => \"main.js\"\n * 2. \"assets/scripts/main.js\" => \"main.js\"\n * @param path path\n */\nexport function getResourceFileName(path: string) {\n const lastSlashIndex = path.lastIndexOf('/');\n if (lastSlashIndex >= 0) {\n return path.slice(lastSlashIndex + 1);\n } else {\n return path;\n }\n}\n\n/**\n * Build resource path by manifest\n * if manifest is { \"main.js\": \"main.h2sh23abee.js\"}\n * 1. \"main.js\" => \"main.h2sh23abee.js\"\n * 2. \"assets/scripts/main.js\" =>\"assets/scripts/main.h2sh23abee.js\"\n * @param resourceFilePath Resource File Path\n * @param manifestResult manifest\n */\nexport function buildResourceFilePath(resourceFilePath: string, manifestResult: { [key: string]: string }) {\n const fileName = getResourceFileName(resourceFilePath);\n if (manifestResult[fileName]) {\n return resourceFilePath.replace(fileName, manifestResult[fileName]);\n } else {\n return resourceFilePath;\n }\n}\n\n/**\n * Get static resource full path\n * @param app PlanetApplication\n * @param manifestResult manifest\n */\nexport function getScriptsAndStylesFullPaths(app: PlanetApplication, manifestResult?: { [key: string]: string }) {\n let scripts = app.scripts || [];\n let styles = app.styles || [];\n // combine resource path by manifest\n if (manifestResult) {\n scripts = scripts.map(script => {\n return buildResourceFilePath(script, manifestResult);\n });\n styles = styles.map(style => {\n return buildResourceFilePath(style, manifestResult);\n });\n }\n if (app.resourcePathPrefix) {\n scripts = scripts.map(script => {\n return `${app.resourcePathPrefix}${script}`;\n });\n styles = styles.map(style => {\n return `${app.resourcePathPrefix}${style}`;\n });\n }\n return {\n scripts: scripts,\n styles: styles\n };\n}\n","export const PLANET_SANDBOX_WINDOW_WHITELIST = window['___PLANET_SANDBOX_WINDOW_WHITELIST___'];\nexport const PLANET_SANDBOX_DOCUMENT_WHITELIST = window['___PLANET_SANDBOX_DOCUMENT_WHITELIST___'];\nexport const SANDBOX_INSTANCE = Symbol.for('PLANET_SANDBOX_INSTANCE');\nexport const RAW_NODE = Symbol.for('PLANET_RAW_NODE');\nexport const WINDOW_BIND_FN = Symbol.for('PLANET_WINDOW_BIND_FN');\nexport const DOCUMENT_BIND_FN = Symbol.for('PLANET_DOCUMENT_BIND_FN');\n","import { isObject } from '../../../helpers';\nimport { RAW_NODE } from '../../constants';\n\nconst rawHasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProp(obj: any, key: PropertyKey): boolean {\n return rawHasOwnProperty.call(obj, key);\n}\n\nexport function isValueDescriptor(desc?: PropertyDescriptor) {\n if (desc === undefined) {\n return false;\n }\n return 'value' in desc || 'writable' in desc;\n}\n\nexport function isAccessorDescriptor(desc?: PropertyDescriptor) {\n if (desc === undefined) {\n return false;\n }\n return 'get' in desc || 'set' in desc;\n}\n\nexport function isNonWriteableValue(desc?: PropertyDescriptor) {\n return desc && desc.configurable === false && 'value' in desc && desc.writable === false;\n}\n\nexport function isInvalidSetAccessor(desc?: PropertyDescriptor) {\n if (desc && desc.configurable === false && 'set' in desc && desc.set === undefined) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function isInvalidGetAccessor(desc?: PropertyDescriptor) {\n if (desc && desc.configurable === false && 'get' in desc && desc.get === undefined) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction transferParams(args: IArguments | Array<any>) {\n args = Array.isArray(args) ? args : Array.from(args);\n return args.map(arg => {\n return arg[RAW_NODE] ? arg[RAW_NODE] : arg;\n });\n}\n\nconst buildInProps: PropertyKey[] = ['length', 'caller', 'callee', 'arguments', 'prototype', Symbol.hasInstance];\nfunction transferProps(o: Function, n: Function) {\n for (const key of Reflect.ownKeys(o)) {\n if (buildInProps.includes(key)) {\n continue;\n }\n const desc = Object.getOwnPropertyDescriptor(n, key);\n if (desc && desc.writable) {\n n[key] = o[key];\n }\n }\n}\n\nexport function bind(fn: any, context: any) {\n const fNOP = function() {};\n function bound() {\n const args = transferParams(arguments);\n if (this instanceof bound) {\n const obj = new fn(...args);\n Object.setPrototypeOf(obj, bound.prototype);\n return obj;\n } else {\n return fn.apply(context, args);\n }\n }\n bound.$native = fn;\n transferProps(fn, bound);\n if (fn.prototype) {\n fNOP.prototype = fn.prototype;\n }\n bound.prototype = new fNOP();\n if (Symbol.hasInstance) {\n Object.defineProperty(bound, Symbol.hasInstance, {\n configurable: true,\n value(instance: any) {\n const op = fn.prototype;\n return isObject(op) || typeof op === 'function' ? instance instanceof fn : false;\n }\n });\n }\n return bound;\n}\n\nexport function createFakeObject(target: Record<PropertyKey, any>, writableKeys?: PropertyKey[]) {\n const fakeObject = {};\n const propertyMap: Record<string, string | boolean> = {};\n const storageBox = Object.create(null);\n const propertyNames = Object.getOwnPropertyNames(target);\n const def = (p: string) => {\n const descriptor = Object.getOwnPropertyDescriptor(target, p);\n if (descriptor?.configurable) {\n const hasGetter = hasOwnProp(descriptor, 'get');\n const hasSetter = hasOwnProp(descriptor, 'set');\n const canWritable = writableKeys && writableKeys.length > 0 && writableKeys.includes(p);\n if (hasGetter) {\n descriptor.get = () => (hasOwnProp(storageBox, p) ? storageBox[p] : target[p]);\n }\n if (hasSetter) {\n descriptor.set = val => {\n storageBox[p] = val;\n return true;\n };\n }\n if (canWritable) {\n if (descriptor.writable === false) {\n descriptor.writable = true;\n } else if (hasGetter) {\n descriptor.set = val => {\n storageBox[p] = val;\n return true;\n };\n }\n }\n Object.defineProperty(fakeObject, p, Object.freeze(descriptor));\n }\n };\n propertyNames.forEach(p => {\n propertyMap[p] = true;\n def(p);\n });\n // 再次循环是为了处理原型链中的属性\n for (const prop in target) {\n if (!propertyMap[prop]) {\n def(prop);\n }\n }\n return fakeObject as any;\n}\n","import {\n hasOwnProp,\n createFakeObject,\n bind,\n isInvalidSetAccessor,\n isNonWriteableValue,\n isInvalidGetAccessor\n} from './common';\nimport { PLANET_SANDBOX_WINDOW_WHITELIST, SANDBOX_INSTANCE, WINDOW_BIND_FN } from '../../constants';\nimport { isFunction } from '../../../helpers';\nimport { ProxySandboxInstance } from '../types';\n\nconst esGlobalFunctions: PropertyKey[] = (\n 'eval,isFinite,isNaN,parseFloat,parseInt,' +\n // URL handling functions\n 'decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n // Constructor properties of the global object\n 'Array,ArrayBuffer,BigInt,BigInt64Array,BigUint64Array,Boolean,DataView,Date,Error,EvalError,' +\n 'FinalizationRegistry,Float32Array,Float64Array,Function,Int8Array,Int16Array,Int32Array,Map,Number,' +\n 'Object,Promise,Proxy,RangeError,ReferenceError,RegExp,Set,SharedArrayBuffer,String,Symbol,SyntaxError,' +\n 'TypeError,Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,URIError,WeakMap,WeakRef,WeakSet,' +\n // Other Properties of the Global Object\n 'Atomics,JSON,Math,Reflect'\n).split(',');\n\nconst whitelistVariables = PLANET_SANDBOX_WINDOW_WHITELIST || [];\n\nfunction isConstructor(fn: () => void | FunctionConstructor) {\n const fp = fn.prototype;\n const hasConstructor = fp && fp.constructor === fn && Object.getOwnPropertyNames(fp).length > 1;\n const functionStr = !hasConstructor && fn.toString();\n return hasConstructor || /^function\\s+[A-Z]/.test(functionStr as string) || /^class\\b/.test(functionStr as string);\n}\n\nconst unscopables = {\n undefined: true,\n Array: true,\n Object: true,\n String: true,\n Boolean: true,\n Math: true,\n Number: true,\n Symbol: true,\n parseFloat: true,\n Float32Array: true\n};\n\nexport class ProxyWindow {\n constructor(private sandbox: ProxySandboxInstance) {}\n\n private definedVariables = new Set();\n\n private createGetter() {\n return (target: Window, key: PropertyKey, receiver: any) => {\n if (key === Symbol.unscopables) {\n return unscopables;\n }\n if (key === SANDBOX_INSTANCE) {\n return this.sandbox;\n }\n let value = null;\n if (whitelistVariables.includes(key)) {\n return Reflect.get(window, key);\n } else {\n value = hasOwnProp(target, key) ? Reflect.get(target, key, receiver) : Reflect.get(window, key);\n }\n if (isFunction(value)) {\n if (\n esGlobalFunctions.includes(key) ||\n whitelistVariables.includes(key) ||\n this.sandbox.rewriteVariables.includes(key) ||\n this.definedVariables.has(key) ||\n isConstructor(value)\n ) {\n return value;\n } else {\n const newValue = hasOwnProp(value, WINDOW_BIND_FN) ? value[WINDOW_BIND_FN] : bind(value, window);\n const desc = Object.getOwnPropertyDescriptor(target, key);\n if (isNonWriteableValue(desc)) {\n return value;\n }\n if (isInvalidGetAccessor(desc)) {\n return undefined;\n }\n value[WINDOW_BIND_FN] = newValue;\n return newValue;\n }\n } else {\n return value;\n }\n };\n }\n\n private createSetter() {\n return (target: Window, key: PropertyKey, value: unknown, receiver: any) => {\n const desc = Object.getOwnPropertyDescriptor(\n whitelistVariables.includes(key) ? window : receiver ? receiver : target,\n key\n );\n if (desc && isNonWriteableValue(desc)) {\n if (!Object.is(value, desc.value)) {\n return false;\n } else {\n return true;\n }\n }\n if (isInvalidSetAccessor(desc)) {\n return false;\n }\n if (whitelistVariables.includes(key)) {\n return Reflect.set(window, key, value);\n } else {\n const success = Reflect.set(target, key, value, receiver);\n if (success) {\n if (this.sandbox.running) {\n this.definedVariables.add(key);\n }\n }\n return success;\n }\n };\n }\n\n private createDefineProperty() {\n return (target: Window, p: PropertyKey, descriptor: PropertyDescriptor) => {\n if (whitelistVariables.includes(p)) {\n return Reflect.defineProperty(window, p, descriptor);\n } else {\n const success = Reflect.defineProperty(target, p, descriptor);\n if (this.sandbox.running && success) {\n this.definedVariables.add(p);\n }\n return success;\n }\n };\n }\n\n private createDeleteProperty() {\n return (target: Window, p: PropertyKey) => {\n if (hasOwnProp(target, p)) {\n delete (target as any)[p];\n if (this.sandbox.running && this.definedVariables.has(p)) {\n this.definedVariables.delete(p);\n }\n }\n return true;\n };\n }\n\n private createHas() {\n return (_target: Window, key: PropertyKey) => {\n return !whitelistVariables.includes(key);\n };\n }\n\n create() {\n const fakeWindow = createFakeObject(window, this.sandbox.rewriteVariables);\n const baseHandlers = {\n get: this.createGetter(),\n set: this.createSetter(),\n defineProperty: this.createDefineProperty(),\n deleteProperty: this.createDeleteProperty()\n };\n const proxy = new Proxy(fakeWindow, {\n ...baseHandlers,\n has: this.createHas()\n });\n const subProxy = new Proxy(fakeWindow, baseHandlers);\n proxy.self = subProxy;\n proxy.window = subProxy;\n proxy.globalThis = subProxy;\n proxy.top = window.top === window ? subProxy : window.top;\n proxy.parent = window.parent === window ? subProxy : window.top;\n return proxy;\n }\n}\n","import { SandboxPatchHandler, ProxySandboxInstance } from '../types';\nimport { Observable, Subscription } from 'rxjs';\n\nexport function eventListenerPatch(sandbox: ProxySandboxInstance): SandboxPatchHandler {\n const rawAddEventListener = window.addEventListener;\n const rawRemoveEventListener = window.removeEventListener;\n const listenerSubscriptions = new Map<EventListenerOrEventListenerObject, Subscription>();\n\n function addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ) {\n const observable = new Observable(() => {\n rawAddEventListener.call(this, type, listener, options);\n return () => {\n rawRemoveEventListener.call(this, type, listener, options);\n };\n });\n const subscription = observable.subscribe(() => {});\n listenerSubscriptions.set(listener, subscription);\n }\n\n function removeEventListener(type: string, listener: EventListenerOrEventListenerObject) {\n const subscription = listenerSubscriptions.get(listener);\n if (subscription) {\n subscription.unsubscribe();\n listenerSubscriptions.delete(listener);\n }\n }\n\n return {\n rewrite: {\n addEventListener: addEventListener.bind(window),\n removeEventListener: removeEventListener.bind(window)\n },\n init() {\n const fakeDocument = sandbox.global.document;\n if (fakeDocument) {\n fakeDocument.addEventListener = addEventListener.bind(document);\n fakeDocument.removeEventListener = removeEventListener.bind(document);\n }\n },\n destroy() {\n listenerSubscriptions.forEach(subscription => subscription.unsubscribe());\n listenerSubscriptions.clear();\n }\n };\n}\n","import { isFunction } from '../../../helpers';\nimport { DOCUMENT_BIND_FN, PLANET_SANDBOX_DOCUMENT_WHITELIST, RAW_NODE } from '../../constants';\nimport {\n hasOwnProp,\n createFakeObject,\n isInvalidSetAccessor,\n isNonWriteableValue,\n bind,\n isInvalidGetAccessor\n} from './common';\n\nconst rawDocument = Document;\nconst whitelist: PropertyKey[] = ['cookie', 'title', 'location', ...(PLANET_SANDBOX_DOCUMENT_WHITELIST || [])];\n\nexport class ProxyDocument {\n constructor() {}\n\n private createGetter() {\n return (target: any, p: PropertyKey, receiver?: any) => {\n const value = hasOwnProp(target, p) ? Reflect.get(target, p, receiver) : Reflect.get(document, p);\n if (p === 'activeElement') {\n return Reflect.get(document, p);\n }\n // TODO: 处理动态节点\n // if (p === 'createElement') {\n // return function(tagName: string, options: ElementCreationOptions) {\n // const created = value.call(document, tagName, options);\n // if (isObject(created)) {\n // created[SANDBOX_INSTANCE] = sandbox;\n // }\n // return created;\n // };\n // }\n if (isFunction(value)) {\n let newValue = hasOwnProp(value, DOCUMENT_BIND_FN) ? value[DOCUMENT_BIND_FN] : null;\n if (!newValue) {\n newValue = bind(value, document);\n }\n const desc = Object.getOwnPropertyDescriptor(target, p);\n if (desc && isNonWriteableValue(desc)) {\n if (!Object.is(newValue, desc.value)) {\n return value;\n }\n }\n if (isInvalidGetAccessor(desc)) {\n return undefined;\n }\n value[DOCUMENT_BIND_FN] = newValue;\n return newValue;\n }\n return value;\n };\n }\n\n private createSetter() {\n return (target: any, p: PropertyKey, value: any, receiver: any) => {\n const desc = Object.getOwnPropertyDescriptor(whitelist.includes(p) ? document : receiver || target, p);\n if (desc && isNonWriteableValue(desc)) {\n if (Object.is(value, desc.value)) {\n return true;\n } else {\n return false;\n }\n }\n if (isInvalidSetAccessor(desc)) {\n return false;\n }\n return whitelist.includes(p) ? Reflect.set(document, p, value) : Reflect.set(target, p, value, receiver);\n };\n }\n\n private createDefineProperty() {\n return (target: any, p: PropertyKey, descriptor: PropertyDescriptor) => {\n return whitelist.includes(p)\n ? Reflect.defineProperty(document, p, descriptor)\n : Reflect.defineProperty(target, p, descriptor);\n };\n }\n\n create() {\n let proxyDocument = null;\n const fakeDocument = createFakeObject(document);\n const getter = this.createGetter();\n const fakeDocumentProto = new Proxy(fakeDocument, {\n get: (...args) => {\n return getter(...args);\n }\n });\n const fakeDocumentCtor = function Document() {\n if (!(this instanceof fakeDocumentCtor)) {\n throw new TypeError(`Failed to construct 'Document': Please use the 'new' operator.`);\n }\n const docInstance = new rawDocument();\n Object.setPrototypeOf(docInstance, fakeDocument);\n return docInstance;\n };\n fakeDocumentCtor.prototype = fakeDocumentProto;\n fakeDocumentCtor.prototype.constructor = fakeDocumentCtor;\n if (Symbol.hasInstance) {\n Object.defineProperty(fakeDocumentCtor, Symbol.hasInstance, {\n configurable: true,\n value(value: any) {\n let proto = value;\n if (proto === document) {\n return true;\n }\n while ((proto = Object.getPrototypeOf(proto))) {\n if (proto === fakeDocumentProto) {\n return true;\n }\n }\n const cloned = function() {};\n cloned.prototype = fakeDocument;\n return value instanceof cloned;\n }\n });\n }\n proxyDocument = new Proxy(\n Object.create(fakeDocumentProto, {\n currentScript: {\n value: null,\n writable: true\n },\n [RAW_NODE]: {\n writable: false,\n configurable: false,\n value: document\n }\n }),\n {\n set: this.createSetter(),\n defineProperty: this.createDefineProperty()\n }\n );\n return {\n document: proxyDocument,\n Document: fakeDocumentCtor\n };\n }\n}\n","import { ProxyDocument } from '../proxies/document';\nimport { SandboxPatchHandler } from '../types';\n\nexport function documentPatch(): SandboxPatchHandler {\n const proxyDocument = new ProxyDocument();\n const { document, Document } = proxyDocument.create();\n return {\n rewrite: {\n document,\n Document\n }\n };\n}\n","import { SandboxPatchHandler } from '../types';\n\nconst rawSetTimeout = window.setTimeout;\nconst rawClearTimeout = window.clearTimeout;\nconst rawSetInterval = window.setInterval;\nconst rawClearInterval = window.clearInterval;\n\nexport function timerPatch(): SandboxPatchHandler {\n const timeout = new Set<number>();\n const interval = new Set<number>();\n\n function rewriteSetTimeout(handler: TimerHandler, ms?: number, ...args: any[]) {\n const timeoutId = rawSetTimeout(handler, ms, ...args);\n timeout.add(timeoutId);\n return timeoutId;\n }\n\n function rewriteClearTimeout(timeoutId: number) {\n timeout.delete(timeoutId);\n rawClearTimeout(timeoutId);\n }\n\n function rewriteSetInterval(handler: TimerHandler, ms: number, ...args: any[]) {\n const intervalId = rawSetInterval(handler, ms, ...args);\n interval.add(intervalId);\n return intervalId;\n }\n\n function rewriteClearInterval(intervalId: number) {\n interval.delete(intervalId);\n rawClearInterval(intervalId);\n }\n\n return {\n rewrite: {\n setTimeout: rewriteSetTimeout,\n clearTimeout: rewriteClearTimeout,\n setInterval: rewriteSetInterval,\n clearInterval: rewriteClearInterval\n },\n destroy: () => {\n timeout.forEach(timeoutId => {\n rawClearTimeout(timeoutId);\n });\n interval.forEach(intervalId => {\n rawClearInterval(intervalId);\n });\n }\n };\n}\n","import { ProxySandboxInstance, SandboxPatchHandler } from '../types';\n\nconst PLANET_STORAGE_PREFIX = '__planet-storage-';\n\nexport class RewriteStorage {\n prefix: string;\n rawStorage: Storage;\n\n constructor(app: string, rawStorage: Storage) {\n this.rawStorage = rawStorage;\n this.prefix = `${PLANET_STORAGE_PREFIX}${app}__:`;\n }\n\n get length() {\n return this.getKeys().length;\n }\n\n private getKeys() {\n return Object.keys(this.rawStorage).filter(key => key.startsWith(this.prefix));\n }\n\n key(n: number) {\n const key = this.getKeys()[n];\n return key ? key.substring(this.prefix.length) : null;\n }\n\n getItem(key: string) {\n return this.rawStorage.getItem(`${this.prefix + key}`);\n }\n\n setItem(key: string, value: string) {\n this.rawStorage.setItem(`${this.prefix + key}`, value);\n }\n\n removeItem(key: string) {\n this.rawStorage.removeItem(`${this.prefix + key}`);\n }\n\n clear() {\n this.getKeys().forEach(key => {\n this.rawStorage.removeItem(key);\n });\n }\n}\n\nexport function storagePatch(sandbox: ProxySandboxInstance): SandboxPatchHandler {\n return {\n rewrite: {\n localStorage: new RewriteStorage(sandbox.app, localStorage),\n sessionStorage: new RewriteStorage(sandbox.app, sessionStorage)\n }\n };\n}\n","import { ProxySandboxInstance, SandboxPatch, SandboxPatchHandler } from '../types';\nimport { eventListenerPatch } from './eventListener';\nimport { documentPatch } from './document';\nimport { timerPatch } from './timer';\nimport { storagePatch } from './storage';\n\nconst sandboxPatches: SandboxPatch[] = [documentPatch, eventListenerPatch, timerPatch, storagePatch];\n\nexport function getSandboxPatchHandlers(sandbox: ProxySandboxInstance): SandboxPatchHandler[] {\n return sandboxPatches.map(patch => {\n return patch(sandbox);\n });\n}\n","import { Global } from './types';\n\nexport function execScript(code: string, url: string, global: Global, strictGlobal: boolean) {\n const sourceUrl = '//# sourceURL='.concat(url, '\\n');\n const window = (0, eval)('window');\n window.tempGlobal = global;\n code = strictGlobal\n ? ';(function(window, self, globalThis){with(window){;'\n .concat(code, '\\n')\n .concat(\n sourceUrl,\n '}}).bind(window.tempGlobal)(window.tempGlobal, window.tempGlobal, window.tempGlobal);'\n )\n : ';(function(window, self, globalThis){;'\n .concat(code, '\\n')\n .concat(\n sourceUrl,\n '}).bind(window.tempGlobal)(window.tempGlobal, window.tempGlobal, window.tempGlobal);'\n );\n (0, eval)(code);\n delete window.tempGlobal;\n}\n","import { execScript } from './exec';\nimport { Global } from './types';\n\nexport interface SandboxOptions {\n strictGlobal?: boolean;\n}\n\nexport abstract class Sandbox {\n options!: SandboxOptions;\n\n global!: Global;\n\n abstract start(): void;\n\n abstract destroy(): void;\n\n execScript(code: string, url = '') {\n execScript(code, url, this.global, !!this.options.strictGlobal);\n }\n}\n","import { ProxyWindow } from './proxies/window';\nimport { getSandboxPatchHandlers } from './patches';\nimport { SandboxPatchHandler } from './types';\nimport { Global } from '../types';\nimport { Sandbox, SandboxOptions } from '../sandbox';\n\nexport class ProxySandbox extends Sandbox {\n public running = false;\n\n public global!: Global;\n\n public rewriteVariables!: PropertyKey[];\n\n private patchHandlers: SandboxPatchHandler[] = [];\n\n constructor(public app: string, public options: SandboxOptions) {\n super();\n this.patchHandlers = getSandboxPatchHandlers(this);\n this.start();\n }\n\n start() {\n this.running = true;\n this.rewriteVariables = this.getPatchRewriteVariables();\n const proxyWindow = new ProxyWindow(this);\n this.global = proxyWindow.create();\n this.execPatchHandlers();\n }\n\n destroy() {\n this.running = false;\n this.patchHandlers.forEach(handler => {\n if (handler.destroy) {\n handler.destroy();\n }\n });\n }\n\n private getPatchRewriteVariables() {\n return this.patchHandlers.reduce<string[]>((pre, cur) => {\n return [...pre, ...(cur.rewrite ? Object.keys(cur.rewrite) : [])];\n }, []);\n }\n\n private execPatchHandlers() {\n this.patchHandlers.forEach(handler => {\n if (handler.rewrite) {\n for (const key in handler.rewrite) {\n if (handler.rewrite[key]) {\n this.global[key] = handler.rewrite[key];\n }\n }\n }\n if (handler.init) {\n handler?.init();\n }\n });\n }\n}\n","import { Sandbox, SandboxOptions } from '../sandbox';\n\nexport class SnapshotSandbox extends Sandbox {\n constructor(public app: string, public options: SandboxOptions) {\n super();\n this.start();\n }\n\n start() {}\n\n destroy() {}\n}\n","import { SandboxOptions } from './sandbox';\nimport { ProxySandbox } from './proxy/proxy-sandbox';\nimport { SnapshotSandbox } from './snapshot/snapshot-sandbox';\nimport { SANDBOX_INSTANCE } from './constants';\n\nexport { Sandbox } from './sandbox';\n\nconst defaultOptions: Partial<SandboxOptions> = {\n strictGlobal: false\n};\n\nexport function createSandbox(app: string, options?: SandboxOptions) {\n options = Object.assign({}, defaultOptions, options || {});\n\n if (window.Proxy) {\n return new ProxySandbox(app, options);\n } else {\n return new SnapshotSandbox(app, options);\n }\n}\n\nexport function getSandboxInstance() {\n return window[SANDBOX_INSTANCE];\n}\n","import { Injectable } from '@angular/core';\nimport { hashCode, isEmpty, getScriptsAndStylesFullPaths } from './helpers';\nimport { of, Observable, Observer, forkJoin, concat } from 'rxjs';\nimport { map, switchMap, concatAll } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\nimport { PlanetApplication } from './planet.class';\nimport { createSandbox } from './sandbox';\n\nexport interface AssetsLoadResult {\n src: string;\n hashCode: number;\n loaded: boolean;\n status: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetsLoader {\n private loadedSources: number[] = [];\n\n constructor(private http: HttpClient) {}\n\n loadScript(src: string): Observable<AssetsLoadResult> {\n const id = hashCode(src);\n if (this.loadedSources.includes(id)) {\n return of({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n }\n return new Observable((observer: Observer<AssetsLoadResult>) => {\n const script: HTMLScriptElement = document.createElement('script');\n script.type = 'text/javascript';\n script.src = src;\n script.async = true;\n if (script['readyState']) {\n // IE\n script['onreadystatechange'] = () => {\n if (script['readyState'] === 'loaded' || script['readyState'] === 'complete') {\n script['onreadystatechange'] = null;\n observer.next({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n observer.complete();\n this.loadedSources.push(id);\n }\n };\n } else {\n // Others\n script.onload = () => {\n observer.next({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n observer.complete();\n this.loadedSources.push(id);\n };\n }\n script.onerror = error => {\n observer.error({\n src: src,\n hashCode: id,\n loaded: false,\n status: 'Error',\n error: error\n });\n observer.complete();\n };\n document.body.appendChild(script);\n });\n }\n\n loadScriptWithSandbox(app: string, src: string): Observable<AssetsLoadResult> {\n const id = hashCode(src);\n if (this.loadedSources.includes(id)) {\n return of({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n }\n return new Observable((observer: Observer<AssetsLoadResult>) => {\n this.http.get(src, { responseType: 'text' }).subscribe(\n (code: string) => {\n this.loadedSources.push(id);\n const sandbox = createSandbox(app);\n sandbox.execScript(code, src);\n observer.next({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n observer.complete();\n },\n error => {\n observer.error({\n src: src,\n hashCode: id,\n loaded: false,\n status: 'Error',\n error: error\n });\n observer.complete();\n }\n );\n });\n }\n\n loadStyle(src: string): Observable<AssetsLoadResult> {\n const id = hashCode(src);\n if (this.loadedSources.includes(id)) {\n return of({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n }\n return new Observable((observer: Observer<AssetsLoadResult>) => {\n const head = document.getElementsByTagName('head')[0];\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.href = src;\n link.media = 'all';\n link.onload = () => {\n observer.next({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded'\n });\n observer.complete();\n this.loadedSources.push(id);\n };\n link.onerror = error => {\n observer.error({\n src: src,\n hashCode: id,\n loaded: true,\n status: 'Loaded',\n error: error\n });\n observer.complete();\n };\n head.appendChild(link);\n });\n }\n\n loadScripts(\n sources: string[],\n options: {\n app?: string;\n sandbox?: boolean;\n serial?: boolean;\n } = {\n serial: false,\n sandbox: false\n }\n ): Observable<AssetsLoadResult[]> {\n if (isEmpty(sources)) {\n return of(null);\n }\n const observables = sources.map(src => {\n // TODO: 暂时只支持Proxy沙箱\n if (options.sandbox && window.Proxy) {\n return this.loadScriptWithSandbox(options.app, src);\n } else {\n return this.loadScript(src);\n }\n });\n if (options.serial) {\n const a = concat(...observables).pipe(\n map(item => {\n return of([item]);\n }),\n concatAll()\n );\n return a;\n } else {\n return forkJoin(observables).pipe();\n }\n }\n\n loadStyles(sources: string[]): Observable<AssetsLoadResult[]> {\n if (isEmpty(sources)) {\n return of(null);\n }\n return forkJoin(\n sources.map(src => {\n return this.loadStyle(src);\n })\n );\n }\n\n loadScriptsAndStyles(\n scripts: string[] = [],\n styles: string[] = [],\n options?: {\n app?: string;\n sandbox?: boolean;\n serial?: boolean;\n }\n ) {\n return forkJoin([this.loadScripts(scripts, options), this.loadStyles(styles)]);\n }\n\n loadAppAssets(app: PlanetApplication) {\n if (app.manifest) {\n return this.loadManifest(`${app.manifest}?t=${new Date().getTime()}`).pipe(\n switchMap(manifestResult => {\n const { scripts, styles } = getScriptsAndStylesFullPaths(app, manifestResult);\n return this.loadScriptsAndStyles(scripts, styles, {\n app: app.name,\n sandbox: app.sandbox,\n serial: app.loadSerial\n });\n })\n );\n } else {\n const { scripts, styles } = getScriptsAndStylesFullPaths(app);\n return this.loadScriptsAndStyles(scripts, styles, {\n app: app.name,\n sandbox: app.sandbox,\n serial: app.loadSerial\n });\n }\n }\n\n loadManifest(url: string): Observable<{ [key: string]: string }> {\n return this.http.get(url).pipe(\n map((response: any) => {\n return response;\n })\n );\n }\n}\n","import { NgModuleRef, NgZone } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { take } from 'rxjs/operators';\nimport { Observable, from } from 'rxjs';\nimport { PlanetPortalApplication } from './portal-application';\nimport { PlantComponentConfig } from '../component/plant-component.config';\nimport { PlanetComponentRef } from '../component/planet-component-ref';\nimport { getTagNameByTemplate } from '../helpers';\nimport { getSandboxInstance, Sandbox } from '../sandbox/';\n\nexport interface BootstrapOptions {\n template: string;\n bootstrap: BootstrapAppModule;\n}\n\nexport type BootstrapAppModule = (portalApp: PlanetPortalApplication) => Promise<NgModuleRef<any> | undefined | null>;\n\nexport type PlantComponentFactory = <TData, TComp>(\n componentName: string,\n config: PlantComponentConfig<TData>\n) => PlanetComponentRef<TComp>;\n\nexport class PlanetApplicationRef {\n public appModuleRef?: NgModuleRef<any>;\n public template?: string;\n private innerSelector?: string;\n private name: string;\n private portalApp!: PlanetPortalApplication;\n private appModuleBootstrap?: BootstrapAppModule;\n private componentFactory?: PlantComponentFactory;\n\n public get selector() {\n return this.innerSelector;\n }\n\n public get bootstrapped() {\n return !!this.appModuleRef;\n }\n\n public get ngZone(): NgZone | undefined {\n return this.appModuleRef?.injector.get(NgZone);\n }\n\n public get sandbox(): Sandbox {\n return getSandboxInstance();\n }\n\n constructor(name: string, options?: BootstrapOptions) {\n this.name = name;\n if (options) {\n this.template = options.template;\n this.innerSelector = this.template ? getTagNameByTemplate(this.template) : '';\n this.appModuleBootstrap = options.bootstrap;\n }\n // This is a hack, since NgZone doesn't allow you to configure the property that identifies your zone.\n // See https://github.com/PlaceMe-SAS/single-spa-angular-cli/issues/33,\n NgZone.isInAngularZone = () => {\n // @ts-ignore\n return window.Zone.current._properties[`ngx-planet-${name}`] === true;\n };\n }\n\n // 子应用路由变化后同步修改 portal 的 Route\n private syncPortalRouteWhenNavigationEnd() {\n const router = this.appModuleRef?.injector.get(Router);\n if (router) {\n router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.ngZone?.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.portalApp.router!.navigateByUrl(event.url);\n });\n }\n });\n }\n }\n\n bootstrap(app: PlanetPortalApplication): Observable<this> {\n if (!this.appModuleBootstrap) {\n throw new Error(`app(${this.name}) is not defined`);\n }\n this.portalApp = app;\n return from(\n this.appModuleBootstrap(app).then(appModuleRef => {\n this.appModuleRef = appModuleRef!;\n this.appModuleRef.instance.appName = this.name;\n this.syncPortalRouteWhenNavigationEnd();\n return this;\n })\n );\n }\n\n getRouter() {\n return this.appModuleRef?.injector.get(Router);\n }\n\n getCurrentRouterStateUrl() {\n return this.getRouter()?.routerState.snapshot.url;\n }\n\n navigateByUrl(url: string): void {\n const router = this.getRouter();\n this.ngZone?.run(() => {\n router?.navigateByUrl(url);\n });\n }\n\n getComponentFactory() {\n return this.componentFactory;\n }\n\n registerComponentFactory(componentFactory: PlantComponentFactory) {\n this.componentFactory = componentFactory;\n }\n\n destroy(): void {\n if (this.appModuleRef) {\n const router = this.appModuleRef.injector.get(Router);\n if (router) {\n router.dispose();\n }\n if (this.sandbox) {\n this.sandbox.destroy();\n }\n this.appModuleRef.destroy();\n this.appModuleRef = undefined;\n }\n }\n}\n","import { PlanetApplicationRef, BootstrapAppModule, BootstrapOptions } from './application/planet-application-ref';\nimport { PlanetPortalApplication } from './application/portal-application';\nimport { PlanetApplicationLoader } from './application/planet-application-loader';\nimport { PlanetApplicationService } from './application/planet-application.service';\nimport { isFunction } from './helpers';\n\ndeclare const window: any;\n\nexport interface GlobalPlanet {\n apps: { [key: string]: PlanetApplicationRef };\n portalApplication?: PlanetPortalApplication;\n applicationLoader: PlanetApplicationLoader;\n applicationService: PlanetApplicationService;\n}\n\nexport const globalPlanet: GlobalPlanet = (window.planet = window.planet || {\n apps: {}\n});\n\nexport function defineApplication(name: string, options: BootstrapAppModule | BootstrapOptions) {\n if (globalPlanet.apps[name]) {\n throw new Error(`${name} application has exist.`);\n }\n if (isFunction(options)) {\n options = {\n template: '',\n bootstrap: options as BootstrapAppModule\n };\n }\n const appRef = new PlanetApplicationRef(name, options as BootstrapOptions);\n globalPlanet.apps[name] = appRef;\n}\n\nexport function getPlanetApplicationRef(appName: string): PlanetApplicationRef | null {\n if (globalPlanet && globalPlanet.apps && globalPlanet.apps[appName]) {\n return globalPlanet.apps[appName];\n } else {\n return null;\n }\n}\n\nexport function setPortalApplicationData<T>(data: T) {\n if (globalPlanet.portalApplication) {\n globalPlanet.portalApplication.data = data;\n }\n}\n\nexport function getPortalApplicationData<TData>(): TData {\n return globalPlanet.portalApplication?.data as TData;\n}\n\nexport function setApplicationLoader(loader: PlanetApplicationLoader) {\n globalPlanet.applicationLoader = loader;\n}\n\nexport function getApplicationLoader() {\n return globalPlanet.applicationLoader;\n}\n\nexport function setApplicationService(service: PlanetApplicationService) {\n globalPlanet.applicationService = service;\n}\n\nexport function getApplicationService() {\n return globalPlanet.applicationService;\n}\n\nexport function clearGlobalPlanet() {\n window.planet.apps = {};\n window.planet.portalApplication = null;\n window.planet.applicationLoader = null;\n window.planet.applicationService = null;\n}\n","import { PlanetApplication } from '../planet.class';\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { shareReplay, map } from 'rxjs/operators';\nimport { coerceArray } from '../helpers';\nimport { Observable } from 'rxjs';\nimport { AssetsLoader } from '../assets-loader';\nimport { getApplicationService } from '../global-planet';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlanetApplicationService {\n private apps: PlanetApplication[] = [];\n\n private appsMap: { [key: string]: PlanetApplication } = {};\n\n constructor(private http: HttpClient, private assetsLoader: AssetsLoader) {\n if (getApplicationService()) {\n throw new Error(\n 'PlanetApplicationService has been injected in the portal, repeated injection is not allowed'\n );\n }\n }\n\n register<TExtra>(appOrApps: PlanetApplication<TExtra> | PlanetApplication<TExtra>[]) {\n const apps = coerceArray(appOrApps);\n apps.forEach(app => {\n if (this.appsMap[app.name]) {\n throw new Error(`${app.name} has be registered.`);\n }\n this.apps.push(app);\n this.appsMap[app.name] = app;\n });\n }\n\n registerByUrl(url: string): Observable<void> {\n const result = this.http.get(`${url}`).pipe(\n map(apps => {\n if (apps && Array.isArray(apps)) {\n this.register(apps);\n } else {\n this.register(apps as PlanetApplication);\n }\n }),\n shareReplay()\n );\n result.subscribe();\n return result;\n }\n\n unregister(name: string) {\n if (this.appsMap[name]) {\n delete this.appsMap[name];\n this.apps = this.apps.filter(app => {\n return app.name !== name;\n });\n }\n }\n\n getAppsByMatchedUrl<TExtra = unknown>(url: string): PlanetApplication<TExtra>[] {\n return this.getApps().filter(app => {\n if (app.routerPathPrefix instanceof RegExp) {\n return app.routerPathPrefix.test(url);\n } else {\n return url.startsWith(app.routerPathPrefix);\n }\n });\n }\n\n getAppByName(name: string) {\n return this.appsMap[name];\n }\n\n getAppsToPreload(excludeAppNames?: string[]) {\n return this.getApps().filter(app => {\n if (excludeAppNames) {\n return app.preload && !excludeAppNames.includes(app.name);\n } else {\n return app.preload;\n }\n });\n }\n\n getApps() {\n return this.apps;\n }\n}\n","import { Router, UrlTree, NavigationExtras } from '@angular/router';\nimport { NgZone, Injector, ApplicationRef } from '@angular/core';\nimport { GlobalEventDispatcher } from '../global-event-dispatcher';\n\nexport class PlanetPortalApplication<TData = any> {\n applicationRef?: ApplicationRef;\n injector?: Injector;\n router?: Router;\n ngZone?: NgZone;\n globalEventDispatcher?: GlobalEventDispatcher;\n data?: TData;\n\n navigateByUrl(url: string | UrlTree, extras?: NavigationExtras): Promise<boolean> {\n return this.ngZone!.run(() => {\n return this.router!.navigateByUrl(url, extras);\n });\n }\n\n run<T>(fn: (...args: any[]) => T): T {\n return this.ngZone!.run<T>(() => {\n return fn();\n });\n }\n\n tick() {\n this.applicationRef!.tick();\n }\n}\n","import { Subject, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { Injectable, NgZone } from '@angular/core';\n\nexport interface GlobalDispatcherEvent {\n name: string;\n payload: any;\n}\n\nconst CUSTOM_EVENT_NAME = 'PLANET_GLOBAL_EVENT_DISPATCHER';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GlobalEventDispatcher {\n private subject$: Subject<GlobalDispatcherEvent> = new Subject();\n\n private hasAddGlobalEventListener = false;\n\n private subscriptionCount = 0;\n\n private globalEventListener = (event: CustomEvent) => {\n this.subject$.next(event.detail);\n };\n\n private addGlobalEventListener() {\n this.hasAddGlobalEventListener = true;\n window.addEventListener(CUSTOM_EVENT_NAME, this.globalEventListener);\n }\n\n private removeGlobalEventListener() {\n this.hasAddGlobalEventListener = false;\n window.removeEventListener(CUSTOM_EVENT_NAME, this.globalEventListener);\n }\n\n constructor(private ngZone: NgZone) {}\n\n dispatch<TPayload>(name: string, payload?: TPayload) {\n window.dispatchEvent(\n new CustomEvent(CUSTOM_EVENT_NAME, {\n detail: {\n name: name,\n payload: payload\n }\n })\n );\n }\n\n register<T>(eventName: string): Observable<T> {\n return new Observable(observer => {\n if (!this.hasAddGlobalEventListener) {\n this.addGlobalEventListener();\n }\n this.subscriptionCount++;\n const subscription = this.subject$\n .pipe(\n filter(event => {\n return event.name === eventName;\n }),\n map(event => {\n return event.payload;\n })\n )\n .subscribe(payload => {\n this.ngZone.run(() => {\n observer.next(payload);\n });\n });\n return () => {\n this.subscriptionCount--;\n subscription.unsubscribe();\n if (!this.subscriptionCount) {\n this.removeGlobalEventListener();\n }\n };\n });\n }\n\n getSubscriptionCount() {\n return this.subscriptionCount;\n }\n}\n","import { isFunction } from './helpers';\n\nexport interface Debugger {\n (formatter: any, ...args: any[]): void;\n\n // color: string;\n // enabled: boolean;\n // log: (...args: any[]) => any;\n // namespace: string;\n // destroy: () => boolean;\n // extend: (namespace: string, delimiter?: string) => Debugger;\n}\n\nexport interface Formatters {\n [formatter: string]: (v: any) => string;\n}\n\nexport interface Debug {\n (namespace: string): Debugger;\n coerce: (val: any) => any;\n disable: () => string;\n enable: (namespaces: string) => void;\n enabled: (namespaces: string) => boolean;\n log: (...args: any[]) => any;\n\n names: RegExp[];\n skips: RegExp[];\n\n formatters: Formatters;\n}\n\n/**\n * Debug factory for debug module\n */\nlet _debugFactory: Debug | undefined;\nlet _debuggerMap: Record<string, Debugger> = {};\n\nexport function createDebug(namespace: string): Debugger {\n const key = `planet:${namespace}`;\n return function(formatter: any, ...args: any[]) {\n if (_debugFactory) {\n let debugDebugger = _debuggerMap[key];\n if (!debugDebugger) {\n debugDebugger = _debugFactory(key);\n _debuggerMap[key] = debugDebugger;\n }\n debugDebugger(formatter, args);\n }\n };\n}\n\nexport function setDebugFactory(debug: Debug) {\n if (debug && !isFunction(debug)) {\n throw new Error('debug factory type is invalid, must be function');\n }\n _debugFactory = debug;\n}\n\nexport function clearDebugFactory() {\n _debugFactory = undefined;\n _debuggerMap = {};\n}\n\nexport function getDebugFactory() {\n return _debugFactory;\n}\n","import { Injectable, NgZone, ApplicationRef, Injector } from '@angular/core';\nimport { of, Observable, Subject, forkJoin, from, throwError } from 'rxjs';\nimport { AssetsLoader } from '../assets-loader';\nimport { PlanetApplication, PlanetRouterEvent, SwitchModes, PlanetOptions } from '../planet.class';\nimport { switchMap, share, map, tap, distinctUntilChanged, take, filter, catchError } from 'rxjs/operators';\nimport { getHTMLElement, coerceArray, createElementByTemplate } from '../helpers';\nimport { PlanetApplicationRef } from './planet-application-ref';\nimport { PlanetPortalApplication } from './portal-application';\nimport { PlanetApplicationService } from './planet-application.service';\nimport { GlobalEventDispatcher } from '../global-event-dispatcher';\nimport { Router } from '@angular/router';\nimport { globalPlanet, getPlanetApplicationRef, getApplicationLoader } from '../global-planet';\nimport { createDebug } from '../debug';\nconst debug = createDebug('app-loader');\n\nexport enum ApplicationStatus {\n assetsLoading = 1,\n assetsLoaded = 2,\n bootstrapping = 3,\n bootstrapped = 4,\n active = 5,\n loadError = 10\n}\n\nexport interface AppsLoadingStartEvent {\n shouldLoadApps: PlanetApplication[];\n shouldUnloadApps: PlanetApplication[];\n}\n\nexport interface AppStatusChangeEvent {\n app: PlanetApplication;\n status: ApplicationStatus;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlanetApplicationLoader {\n private firstLoad = true;\n\n private startRouteChangeEvent!: PlanetRouterEvent;\n\n private options: PlanetOptions;\n\n private inProgressAppAssetsLoads = new Map<string, Observable<PlanetApplication>>();\n\n private appsStatus = new Map<PlanetApplication, ApplicationStatus>();\n\n private portalApp = new PlanetPortalApplication();\n\n private routeChange$ = new Subject<PlanetRouterEvent>();\n\n private appStatusChange$ = new Subject<AppStatusChangeEvent>();\n\n private appsLoadingStart$ = new Subject<AppsLoadingStartEvent>();\n\n public get appStatusChange(): Observable<AppStatusChangeEvent> {\n return this.appStatusChange$.asObservable();\n }\n\n public get appsLoadingStart(): Observable<AppsLoadingStartEvent> {\n return this.appsLoadingStart$.asObservable();\n }\n\n public loadingDone = false;\n\n constructor(\n private assetsLoader: AssetsLoader,\n private planetApplicationService: PlanetApplicationService,\n private ngZone: NgZone,\n router: Router,\n injector: Injector,\n applicationRef: ApplicationRef\n ) {\n if (getApplicationLoader()) {\n throw new Error(\n 'PlanetApplicationLoader has been injected in the portal, repeated injection is not allowed'\n );\n }\n\n this.options = {\n switchMode: SwitchModes.default,\n errorHandler: (error: Error) => {\n console.error(error);\n }\n };\n this.portalApp.ngZone = ngZone;\n this.portalApp.applicationRef = applicationRef;\n this.portalApp.router = router;\n this.portalApp.injector = injector;\n this.portalApp.globalEventDispatcher = injector.get(GlobalEventDispatcher);\n globalPlanet.portalApplication = this.portalApp;\n this.setupRouteChange();\n }\n\n private setAppStatus(app: PlanetApplication, status: ApplicationStatus) {\n this.ngZone.run(() => {\n const fromStatus = this.appsStatus.get(app);\n debug(\n `app(${app.name}) status change: ${fromStatus ? ApplicationStatus[fromStatus] : 'empty'} => ${\n ApplicationStatus[status]\n }`\n );\n this.appsStatus.set(app, status);\n this.appStatusChange$.next({\n app: app,\n status: status\n });\n });\n }\n\n private getAppStatusChange$(\n app: PlanetApplication,\n status = ApplicationStatus.bootstrapped\n ): Observable<PlanetApplication> {\n return this.appStatusChange.pipe(\n filter(event => {\n return event.app === app && event.status === status;\n }),\n map(() => {\n return app;\n })\n );\n }\n\n private switchModeIsCoexist(app: PlanetApplication) {\n if (app && app.switchMode) {\n return app.switchMode === SwitchModes.coexist;\n } else {\n return this.options.switchMode === SwitchModes.coexist;\n }\n }\n\n private errorHandler(error: Error) {\n this.ngZone.run(() => {\n this.options.errorHandler(error);\n });\n }\n\n private setLoadingDone() {\n this.ngZone.run(() => {\n this.loadingDone = true;\n });\n }\n\n private getAppNames(apps: PlanetApplication[]): string | string[] {\n return apps.length === 0\n ? `[]`\n : apps.map(item => {\n return item.name;\n });\n }\n\n private setupRouteChange() {\n this.routeChange$\n .pipe(\n distinctUntilChanged((x, y) => {\n return (x && x.url) === (y && y.url);\n }),\n // Using switchMap so we cancel executing loading when a new one comes in\n switchMap(event => {\n // Return new observable use of and catchError,\n // in order to prevent routeChange$ completed which never trigger new route change\n return of(event).pipe(\n // unload apps and return should load apps\n map(() => {\n debug(`route change, url is: ${event.url}`);\n this.startRouteChangeEvent = event;\n const shouldLoadApps = this.planetApplicationService.getAppsByMatchedUrl(event.url);\n debug(`should load apps: ${this.getAppNames(shouldLoadApps)}`);\n const shouldUnloadApps = this.getUnloadApps(shouldLoadApps);\n this.appsLoadingStart$.next({\n shouldLoadApps,\n shouldUnloadApps\n });\n this.unloadApps(shouldUnloadApps, event);\n debug(`unload apps: ${this.getAppNames(shouldUnloadApps)}`);\n return shouldLoadApps;\n }),\n // Load app assets (static resources)\n switchMap(shouldLoadApps => {\n let hasAppsNeedLoadingAssets = false;\n const loadApps$ = shouldLoadApps.map(app => {\n const appStatus = this.appsStatus.get(app);\n if (\n !appStatus ||\n appStatus === ApplicationStatus.assetsLoading ||\n appStatus === ApplicationStatus.loadError\n ) {\n debug(\n `app(${app.name}) status is ${\n ApplicationStatus[appStatus as ApplicationStatus]\n }, start load assets`\n );\n hasAppsNeedLoadingAssets = true;\n return this.ngZone.runOutsideAngular(() => {\n return this.startLoadAppAssets(app);\n });\n } else {\n return of(app);\n }\n });\n if (hasAppsNeedLoadingAssets) {\n this.loadingDone = false;\n }\n return loadApps$.length > 0 ? forkJoin(loadApps$) : of([] as PlanetApplication[]);\n }),\n // Bootstrap or show apps\n map(apps => {\n const apps$: Observable<PlanetApplication>[] = apps.map(app => {\n return of(app).pipe(\n switchMap(app => {\n const appStatus = this.appsStatus.get(app);\n if (appStatus === ApplicationStatus.bootstrapped) {\n debug(\n `[routeChange] app(${app.name}) status is bootstrapped, show app and active`\n );\n this.showApp(app);\n const appRef = getPlanetApplicationRef(app.name);\n appRef?.navigateByUrl(event.url);\n this.setAppStatus(app, ApplicationStatus.active);\n this.setLoadingDone();\n return of(app);\n } else if (appStatus === ApplicationStatus.assetsLoaded) {\n debug(\n `[routeChange] app(${app.name}) status is assetsLoaded, start bootstrapping`\n );\n return this.bootstrapApp(app).pipe(\n map(() => {\n debug(`app(${app.name}) bootstrapped success, active it`);\n this.setAppStatus(app, ApplicationStatus.active);\n this.setLoadingDone();\n return app;\n })\n );\n } else if (appStatus === ApplicationStatus.active) {\n debug(`[routeChange] app(${app.name}) is active, do nothings`);\n const appRef = getPlanetApplicationRef(app.name);\n // Backwards compatibility sub app use old version which has not getCurrentRouterStateUrl\n const currentUrl = appRef?.getCurrentRouterStateUrl\n ? appRef.getCurrentRouterStateUrl()\n : '';\n if (currentUrl !== event.url) {\n appRef?.navigateByUrl(event.url);\n }\n return of(app);\n } else {\n debug(\n `[routeChange] app(${app.name}) status is ${\n ApplicationStatus[appStatus as ApplicationStatus]\n }`\n );\n return this.getAppStatusChange$(app).pipe(\n take(1),\n map(() => {\n debug(\n `app(${app.name}) status is bootstrapped by subscribe status change, active it`\n );\n this.setAppStatus(app, ApplicationStatus.active);\n this.showApp(app);\n return app;\n })\n );\n }\n })\n );\n });\n\n if (apps$.length > 0) {\n debug(`start load and active apps: ${this.getAppNames(apps)}`);\n // 切换到应用后会有闪烁现象,所以使用 setTimeout 后启动应用\n // example: redirect to app1's dashboard from portal's about page\n // If app's route has redirect, it doesn't work, it ok just in setTimeout, I don't know why.\n // TODO:: remove it, it is ok in version Angular 9.x\n setTimeout(() => {\n // 此处判断是因为如果静态资源加载完毕还未启动被取消,还是会启动之前的应用,虽然可能性比较小,但是无法排除这种可能性,所以只有当 Event 是最后一个才会启动\n if (this.startRouteChangeEvent === event) {\n // runOutsideAngular for fix error: `Expected to not be in Angular Zone, but it is!`\n this.ngZone.runOutsideAngular(() => {\n forkJoin(apps$).subscribe(() => {\n this.setLoadingDone();\n this.ensurePreloadApps(apps);\n });\n });\n }\n });\n } else {\n debug(`no apps need to be loaded, ensure preload apps`);\n this.ensurePreloadApps(apps);\n this.setLoadingDone();\n }\n }),\n // Error handler\n catchError(error => {\n debug(`apps loader error: ${error}`);\n this.errorHandler(error);\n return [];\n })\n );\n })\n )\n .subscribe();\n }\n\n private startLoadAppAssets(app: PlanetApplication): Observable<PlanetApplication> {\n if (this.inProgressAppAssetsLoads.get(app.name)) {\n return this.inProgressAppAssetsLoads.get(app.name);\n } else {\n const loadApp$ = this.assetsLoader.loadAppAssets(app).pipe(\n tap(() => {\n this.inProgressAppAssetsLoads.delete(app.name);\n this.setAppStatus(app, ApplicationStatus.assetsLoaded);\n }),\n map(() => {\n return app;\n }),\n catchError(error => {\n this.inProgressAppAssetsLoads.delete(app.name);\n this.setAppStatus(app, ApplicationStatus.loadError);\n throw error;\n }),\n share()\n );\n this.inProgressAppAssetsLoads.set(app.name, loadApp$);\n this.setAppStatus(app, ApplicationStatus.assetsLoading);\n return loadApp$;\n }\n }\n\n private hideApp(planetApp: PlanetApplication) {\n const appRef = getPlanetApplicationRef(planetApp.name);\n const appRootElement = document.querySelector(appRef?.selector || (planetApp.selector as string));\n if (appRootElement) {\n appRootElement.setAttribute('style', 'display:none;');\n }\n }\n\n private showApp(planetApp: PlanetApplication) {\n const appRef = getPlanetApplicationRef(planetApp.name);\n const appRootElement = document.querySelector(appRef?.selector || (planetApp.selector as string));\n if (appRootElement) {\n appRootElement.setAttribute('style', '');\n }\n }\n\n private destroyApp(planetApp: PlanetApplication) {\n const appRef = getPlanetApplicationRef(planetApp.name);\n if (appRef) {\n appRef.destroy();\n }\n const container = getHTMLElement(planetApp.hostParent);\n const appRootElement = container?.querySelector((appRef && appRef.selector) || (planetApp.selector as string));\n if (appRootElement) {\n container?.removeChild(appRootElement);\n }\n }\n\n private bootstrapApp(\n app: PlanetApplication,\n defaultStatus: 'hidden' | 'display' = 'display'\n ): Observable<PlanetApplicationRef> {\n debug(`app(${app.name}) start bootstrapping`);\n this.setAppStatus(app, ApplicationStatus.bootstrapping);\n const appRef = getPlanetApplicationRef(app.name);\n if (appRef && appRef.bootstrap) {\n const container = getHTMLElement(app.hostParent);\n let appRootElement: HTMLElement;\n if (container) {\n appRootElement = container.querySelector(appRef.selector || app.selector!)!;\n if (!appRootElement) {\n if (appRef.template) {\n appRootElement = createElementByTemplate(appRef.template)!;\n } else {\n appRootElement = document.createElement(app.selector!);\n }\n appRootElement.setAttribute('style', 'display:none;');\n if (app.hostClass) {\n appRootElement.classList.add(...coerceArray(app.hostClass));\n }\n if (app.stylePrefix) {\n appRootElement.classList.add(...coerceArray(app.stylePrefix));\n }\n container.appendChild(appRootElement);\n }\n }\n let result = appRef.bootstrap(this.portalApp);\n // Backwards compatibility promise for bootstrap\n if ((result as any)['then']) {\n result = from(result) as Observable<PlanetApplicationRef>;\n }\n return result.pipe(\n tap(() => {\n debug(`app(${app.name}) bootstrapped success for ${defaultStatus}`);\n this.setAppStatus(app, ApplicationStatus.bootstrapped);\n if (defaultStatus === 'display' && appRootElement) {\n appRootElement.removeAttribute('style');\n }\n }),\n map(() => {\n return appRef;\n })\n );\n } else {\n throw new Error(\n `[${app.name}] not found, make sure that the app has the correct name defined use defineApplication(${app.name}) and runtimeChunk and vendorChunk are set to true, details see https://github.com/worktile/ngx-planet#throw-error-cannot-read-property-call-of-undefined-at-__webpack_require__-bootstrap79`\n );\n }\n }\n\n private getUnloadApps(activeApps: PlanetApplication[]) {\n const unloadApps: PlanetApplication[] = [];\n this.appsStatus.forEach((value, app) => {\n if (value === ApplicationStatus.active && !activeApps.find(item => item.name === app.name)) {\n unloadApps.push(app);\n }\n });\n return unloadApps;\n }\n\n private unloadApps(shouldUnloadApps: PlanetApplication[], event: PlanetRouterEvent) {\n const hideApps: PlanetApplication[] = [];\n const destroyApps: PlanetApplication[] = [];\n shouldUnloadApps.forEach(app => {\n if (this.switchModeIsCoexist(app)) {\n debug(`hide app(${app.name}) for coexist mode`);\n hideApps.push(app);\n this.hideApp(app);\n this.setAppStatus(app, ApplicationStatus.bootstrapped);\n } else {\n destroyApps.push(app);\n // 销毁之前先隐藏,否则会出现闪烁,因为 destroy 是延迟执行的\n // 如果销毁不延迟执行,会出现切换到主应用的时候会有视图卡顿现象\n this.hideApp(app);\n this.setAppStatus(app, ApplicationStatus.assetsLoaded);\n }\n });\n\n if (hideApps.length > 0 || destroyApps.length > 0) {\n // 从其他应用切换到主应用的时候会有视图卡顿现象,所以先等主应用渲染完毕后再加载其他应用\n // 此处尝试使用 this.ngZone.onStable.pipe(take(1)) 应用之间的切换会出现闪烁\n setTimeout(() => {\n hideApps.forEach(app => {\n const appRef = getPlanetApplicationRef(app.name);\n if (appRef) {\n appRef.navigateByUrl(event.url);\n }\n });\n destroyApps.forEach(app => {\n debug(`destroy app(${app.name})`);\n this.destroyApp(app);\n });\n });\n }\n }\n\n private preloadApps(activeApps?: PlanetApplication[]) {\n setTimeout(() => {\n const toPreloadApps = this.planetApplicationService.getAppsToPreload(\n activeApps ? activeApps.map(item => item.name) : undefined\n );\n debug(`start preload apps: ${this.getAppNames(toPreloadApps)}`);\n const loadApps$ = toPreloadApps.map(preloadApp => {\n return this.preloadInternal(preloadApp);\n });\n\n forkJoin(loadApps$).subscribe({\n error: error => {\n this.errorHandler(error);\n }\n });\n });\n }\n\n private ensurePreloadApps(activeApps?: PlanetApplication[]) {\n // Start preload apps\n // Start preload when first time app loaded\n if (this.firstLoad) {\n this.preloadApps(activeApps);\n this.firstLoad = false;\n }\n }\n\n public setOptions(options: Partial<PlanetOptions>) {\n this.options = {\n ...this.options,\n ...options\n };\n }\n\n /**\n * reset route by current router\n */\n public reroute(event: PlanetRouterEvent) {\n this.routeChange$.next(event);\n }\n\n private preloadInternal(app: PlanetApplication, immediate?: boolean): Observable<PlanetApplicationRef | null> {\n const status = this.appsStatus.get(app);\n if (!status || status === ApplicationStatus.loadError) {\n debug(`preload app(${app.name}), status is empty, start to load assets`);\n return this.startLoadAppAssets(app).pipe(\n switchMap(() => {\n debug(`preload app(${app.name}), assets loaded, start bootstrap app, immediate: ${!!immediate}`);\n if (immediate) {\n return this.bootstrapApp(app, 'hidden');\n } else {\n return this.ngZone.runOutsideAngular(() => {\n return this.bootstrapApp(app, 'hidden');\n });\n }\n }),\n catchError(error => {\n this.errorHandler(error);\n return of(null);\n }),\n map(() => {\n return getPlanetApplicationRef(app.name);\n })\n );\n } else if (\n [ApplicationStatus.assetsLoading, ApplicationStatus.assetsLoaded, ApplicationStatus.bootstrapping].includes(\n status\n )\n ) {\n debug(`preload app(${app.name}), status is ${ApplicationStatus[status]}, return until bootstrapped`);\n return this.getAppStatusChange$(app).pipe(\n take(1),\n map(() => {\n return getPlanetApplicationRef(app.name);\n })\n );\n } else {\n const appRef = getPlanetApplicationRef(app.name);\n if (!appRef) {\n throw new Error(`${app.name}'s status is ${ApplicationStatus[status]}, planetApplicationRef is null.`);\n }\n return of(appRef);\n }\n }\n\n /**\n * Preload planet application\n * @param app app\n * @param immediate bootstrap on stable by default, setting immediate is true, it will bootstrap immediate\n */\n public preload(app: PlanetApplication, immediate?: boolean): Observable<PlanetApplicationRef> {\n return this.preloadInternal(app, immediate);\n }\n}\n","import { Injectable, Inject, Optional, Injector } from '@angular/core';\nimport { NavigationEnd, RouterEvent, Router } from '@angular/router';\nimport { PlanetOptions, PlanetApplication, PLANET_APPLICATIONS } from './planet.class';\nimport { PlanetApplicationService } from './application/planet-application.service';\nimport {\n PlanetApplicationLoader,\n AppsLoadingStartEvent,\n AppStatusChangeEvent\n} from './application/planet-application-loader';\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, startWith, distinctUntilChanged, map } from 'rxjs/operators';\nimport {\n setPortalApplicationData,\n setApplicationLoader,\n setApplicationService,\n getApplicationLoader,\n getApplicationService\n} from './global-planet';\nimport { setDebugFactory } from './debug';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Planet {\n private get planetApplicationLoader(): PlanetApplicationLoader {\n return getApplicationLoader();\n }\n\n private get planetApplicationService() {\n return getApplicationService();\n }\n\n public get loadingDone() {\n return this.planetApplicationLoader.loadingDone;\n }\n\n public get appStatusChange(): Observable<AppStatusChangeEvent> {\n return this.planetApplicationLoader.appStatusChange;\n }\n\n public get appsLoadingStart(): Observable<AppsLoadingStartEvent> {\n return this.planetApplicationLoader.appsLoadingStart;\n }\n\n private subscription?: Subscription;\n\n constructor(\n private injector: Injector,\n private router: Router,\n @Inject(PLANET_APPLICATIONS) @Optional() planetApplications: PlanetApplication[]\n ) {\n if (!this.planetApplicationLoader) {\n setApplicationLoader(this.injector.get(PlanetApplicationLoader));\n }\n if (!this.planetApplicationService) {\n setApplicationService(this.injector.get(PlanetApplicationService));\n }\n\n if (planetApplications) {\n this.registerApps(planetApplications);\n }\n }\n\n setOptions(options: Partial<PlanetOptions>) {\n this.planetApplicationLoader.setOptions(options);\n if (options.debugFactory) {\n setDebugFactory(options.debugFactory);\n }\n }\n\n setPortalAppData<T>(data: T) {\n setPortalApplicationData(data);\n }\n\n registerApp<TExtra>(app: PlanetApplication<TExtra>) {\n this.planetApplicationService.register(app);\n }\n\n registerApps<TExtra>(apps: PlanetApplication<TExtra>[]) {\n this.planetApplicationService.register(apps);\n }\n\n unregisterApp(name: string) {\n this.planetApplicationService.unregister(name);\n }\n\n getApps() {\n return this.planetApplicationService.getApps();\n }\n\n start() {\n this.subscription = (this.router.events as Observable<RouterEvent>)\n .pipe(\n filter(event => {\n return event instanceof NavigationEnd;\n }),\n map(event => {\n return (event as NavigationEnd).urlAfterRedirects || event.url;\n }),\n startWith(location.pathname),\n distinctUntilChanged()\n )\n .subscribe((url: string) => {\n this.planetApplicationLoader.reroute({\n url: url\n });\n });\n }\n\n stop() {\n this.subscription?.unsubscribe();\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'empty-component',\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class EmptyComponent {}\n","import { ComponentRef, ElementRef } from '@angular/core';\n\nexport class PlanetComponentRef<TComp = any> {\n wrapperElement: HTMLElement;\n hostElement: HTMLElement;\n componentInstance: TComp;\n componentRef: ComponentRef<TComp>;\n dispose: () => void;\n}\n","import {\n Injectable,\n ApplicationRef,\n NgModuleRef,\n NgZone,\n ElementRef,\n Inject,\n Injector,\n createComponent,\n Type,\n ComponentRef,\n EmbeddedViewRef,\n reflectComponentType\n} from '@angular/core';\nimport { PlanetApplicationRef } from '../application/planet-application-ref';\nimport { PlanetComponentRef } from './planet-component-ref';\nimport { PlantComponentConfig } from './plant-component.config';\nimport { coerceArray } from '../helpers';\nimport { map, shareReplay, delayWhen } from 'rxjs/operators';\nimport { of, Observable, timer } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\nimport { globalPlanet, getApplicationLoader, getApplicationService } from '../global-planet';\n\nconst componentWrapperClass = 'planet-component-wrapper';\n\nfunction isComponentType<T>(component: PlanetComponent<T>): component is Type<T> {\n return typeof component === 'function' && component.constructor === Function;\n}\n\nexport type PlanetComponent<T = unknown> =\n | {\n name: string;\n component: Type<T>;\n }\n | Type<T>;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlanetComponentLoader {\n private get applicationLoader() {\n return getApplicationLoader();\n }\n\n private get applicationService() {\n return getApplicationService();\n }\n\n constructor(\n private applicationRef: ApplicationRef,\n private ngModuleRef: NgModuleRef<any>,\n private ngZone: NgZone,\n @Inject(DOCUMENT) private document: any\n ) {}\n\n private getPlantAppRef(name: string): Observable<PlanetApplicationRef> {\n if (globalPlanet.apps[name] && globalPlanet.apps[name].appModuleRef) {\n return of(globalPlanet.apps[name]);\n } else {\n const app = this.applicationService.getAppByName(name);\n return this.applicationLoader.preload(app, true).pipe(\n map(() => {\n return globalPlanet.apps[name];\n })\n );\n }\n }\n\n private createInjector<TData>(appModuleRef: NgModuleRef<any>, componentRef: PlanetComponentRef<TData>): Injector {\n return Injector.create({\n providers: [\n {\n provide: PlanetComponentRef,\n useValue: componentRef\n }\n ],\n parent: appModuleRef.injector\n });\n }\n\n private getContainerElement(config: PlantComponentConfig): HTMLElement {\n if (!config.container) {\n throw new Error(`config 'container' cannot be null`);\n } else {\n if ((config.container as ElementRef).nativeElement) {\n return (config.container as ElementRef).nativeElement;\n } else {\n return config.container as HTMLElement;\n }\n }\n }\n\n private insertComponentRootNodeToContainer(\n container: HTMLElement,\n componentRootNode: HTMLElement,\n hostClass: string\n ) {\n const subApp = this.applicationService.getAppByName(this.ngModuleRef.instance.appName);\n componentRootNode.classList.add(componentWrapperClass);\n componentRootNode.setAttribute('planet-inline', '');\n if (hostClass) {\n componentRootNode.classList.add(hostClass);\n }\n if (subApp && subApp.stylePrefix) {\n componentRootNode.classList.add(subApp.stylePrefix);\n }\n // container 是注释则在前方插入,否则在元素内部插入\n if (container.nodeType === 8) {\n container.parentElement.insertBefore(componentRootNode, container);\n } else {\n container.appendChild(componentRootNode);\n }\n }\n\n private attachComponent<TData>(\n component: Type<unknown>,\n appModuleRef: NgModuleRef<unknown>,\n config: PlantComponentConfig\n ): PlanetComponentRef<TData> {\n const plantComponentRef = new PlanetComponentRef();\n const appRef = this.applicationRef;\n const injector = this.createInjector<TData>(appModuleRef, plantComponentRef);\n const container = this.getContainerElement(config);\n const componentRef = createComponent(component, {\n environmentInjector: appModuleRef.injector,\n elementInjector: injector\n });\n appRef.attachView(componentRef.hostView);\n const componentRootNode = this.getComponentRootNode(componentRef);\n this.insertComponentRootNodeToContainer(container, componentRootNode, config.hostClass || config.wrapperClass);\n if (config.initialState) {\n Object.assign(componentRef.instance, config.initialState);\n }\n plantComponentRef.componentInstance = componentRef.instance;\n plantComponentRef.componentRef = componentRef;\n plantComponentRef.hostElement = componentRootNode;\n plantComponentRef.dispose = () => {\n if (appRef.viewCount > 0) {\n appRef.detachView(componentRef.hostView);\n }\n componentRef?.destroy();\n componentRootNode.remove();\n };\n return plantComponentRef;\n }\n\n /** Gets the root HTMLElement for an instantiated component. */\n private getComponentRootNode(componentRef: ComponentRef<any>): HTMLElement {\n return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n }\n\n private registerComponentFactory(componentOrComponents: PlanetComponent | PlanetComponent[]) {\n const app = this.ngModuleRef.instance.appName;\n this.getPlantAppRef(app).subscribe(appRef => {\n appRef.registerComponentFactory((componentName: string, config: PlantComponentConfig<any>) => {\n const components = coerceArray(componentOrComponents);\n const planetComponent = components.find(item => {\n return isComponentType(item)\n ? reflectComponentType(item).selector.includes(componentName)\n : item.name === componentName;\n });\n if (planetComponent) {\n return this.ngZone.run(() => {\n const componentRef = this.attachComponent<any>(\n isComponentType(planetComponent) ? planetComponent : planetComponent.component,\n appRef.appModuleRef,\n config\n );\n return componentRef;\n });\n } else {\n throw Error(`unregistered component ${componentName} in app ${app}`);\n }\n });\n });\n }\n\n register(components: PlanetComponent | PlanetComponent[]) {\n setTimeout(() => {\n this.registerComponentFactory(components);\n });\n }\n\n load<TComp = unknown, TData = unknown>(\n app: string,\n componentName: string,\n config: PlantComponentConfig<TData>\n ): Observable<PlanetComponentRef<TComp>> {\n const result = this.getPlantAppRef(app).pipe(\n delayWhen(appRef => {\n if (appRef.getComponentFactory()) {\n return of('');\n } else {\n // Because register use 'setTimeout',so timer 20\n return timer(20);\n }\n }),\n map(appRef => {\n const componentFactory = appRef.getComponentFactory();\n if (componentFactory) {\n return componentFactory<TData, TComp>(componentName, config);\n } else {\n throw new Error(`${app}'s component(${componentName}) is not registered`);\n }\n }),\n shareReplay()\n );\n result.subscribe();\n return result;\n }\n}\n","import {\n Directive,\n ViewContainerRef,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n Input,\n AfterViewInit,\n ElementRef,\n NgZone,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { PlanetComponentLoader } from './planet-component-loader';\nimport { PlanetComponentRef } from './planet-component-ref';\n\n@Directive({\n selector: '[planetComponentOutlet]',\n standalone: true\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class PlanetComponentOutlet implements OnChanges, OnDestroy, AfterViewInit {\n @Input() planetComponentOutlet: string;\n\n @Input() planetComponentOutletApp: string;\n\n @Input() planetComponentOutletInitialState: any;\n\n @Output() planetComponentLoaded = new EventEmitter<PlanetComponentRef>();\n\n private componentRef: PlanetComponentRef;\n\n private destroyed$ = new Subject<void>();\n\n constructor(\n private elementRef: ElementRef,\n private planetComponentLoader: PlanetComponentLoader,\n private ngZone: NgZone\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.planetComponentOutlet && !changes.planetComponentOutlet.isFirstChange()) {\n this.loadComponent();\n }\n }\n\n ngAfterViewInit(): void {\n this.loadComponent();\n }\n\n loadComponent() {\n this.clear();\n if (this.planetComponentOutlet && this.planetComponentOutletApp) {\n this.planetComponentLoader\n .load(this.planetComponentOutletApp, this.planetComponentOutlet, {\n container: this.elementRef.nativeElement,\n initialState: this.planetComponentOutletInitialState\n })\n .pipe(takeUntil(this.destroyed$))\n .subscribe(componentRef => {\n this.componentRef = componentRef;\n this.ngZone.run(() => {\n Promise.resolve().then(() => {\n this.planetComponentLoaded.emit(this.componentRef);\n });\n });\n });\n }\n }\n\n ngOnDestroy(): void {\n this.clear();\n this.destroyed$.complete();\n }\n\n clear() {\n this.componentRef?.dispose();\n this.destroyed$.next();\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { ActivatedRoute, Route, Router, UrlTree } from '@angular/router';\n\nclass RouteRedirect {\n activatedRoute = inject(ActivatedRoute);\n router = inject(Router);\n\n constructor(redirectTo: string) {\n const finalRedirectTo = redirectTo || this.activatedRoute.snapshot.data.redirectTo;\n if (finalRedirectTo) {\n const activatedRouteUrl = this.activatedRoute.pathFromRoot\n .filter(route => {\n return route.snapshot.url?.length > 0;\n })\n .map(route => {\n return route.snapshot.url.join('/');\n })\n .join('/');\n if (\n this.router.isActive(activatedRouteUrl, {\n matrixParams: 'exact',\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'exact'\n })\n ) {\n this.router.navigate(\n [`${finalRedirectTo}`],\n // By replacing the current URL in the history, we keep the Browser's Back\n // Button behavior in tact. This will allow the user to easily navigate back\n // to the previous URL without getting caught in a redirect.\n {\n replaceUrl: true,\n relativeTo: this.activatedRoute\n }\n );\n }\n }\n }\n}\n\nexport function routeRedirect(redirectTo?: string) {\n return new RouteRedirect(redirectTo);\n}\n\n@Component({\n selector: 'planet-redirect-to-route',\n template: '',\n standalone: true\n})\nexport class RedirectToRouteComponent {\n routeRedirect = routeRedirect();\n}\n\nexport function redirectToRoute(redirectTo: string): Route {\n return {\n path: '',\n component: RedirectToRouteComponent,\n data: {\n redirectTo: redirectTo\n }\n };\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { PlanetApplication, PLANET_APPLICATIONS } from './planet.class';\nimport { HttpClientModule } from '@angular/common/http';\nimport { EmptyComponent } from './empty/empty.component';\nimport { PlanetComponentOutlet } from './component/planet-component-outlet';\nimport { RedirectToRouteComponent } from './router/route-redirect';\n\n@NgModule({\n declarations: [],\n imports: [HttpClientModule, PlanetComponentOutlet, EmptyComponent, RedirectToRouteComponent],\n providers: [],\n exports: [HttpClientModule, EmptyComponent, PlanetComponentOutlet]\n})\nexport class NgxPlanetModule {\n static forRoot(apps: PlanetApplication[]): ModuleWithProviders<NgxPlanetModule> {\n return {\n ngModule: NgxPlanetModule,\n providers: [\n {\n provide: PLANET_APPLICATIONS,\n useValue: apps\n }\n ]\n };\n }\n}\n","import { ViewContainerRef, ElementRef } from '@angular/core';\n\nexport class PlantComponentConfig<TData = any> {\n /** Load target container */\n container: HTMLElement | ElementRef<HTMLElement | any> | Comment;\n /**\n * Wrapper class of plant component\n * @deprecated please use hostClass\n */\n wrapperClass?: string;\n /**\n * Host class of plant component\n */\n hostClass?: string;\n /** Data being injected into the child component. */\n initialState?: TData | null = null;\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './planet';\nexport * from './global-event-dispatcher';\nexport * from './application/portal-application';\nexport * from './planet.class';\nexport * from './module';\nexport { PlanetApplicationRef } from './application/planet-application-ref';\nexport { defineApplication, getPortalApplicationData, getPlanetApplicationRef } from './global-planet';\nexport { PlanetApplicationService } from './application/planet-application.service';\nexport * from './application/planet-application-loader';\nexport * from './assets-loader';\nexport { PlanetComponent, PlanetComponentLoader } from './component/planet-component-loader';\nexport { PlanetComponentRef } from './component/planet-component-ref';\nexport { PlanetComponentOutlet } from './component/planet-component-outlet';\nexport { PlantComponentConfig } from './component/plant-component.config';\nexport * from './empty/empty.component';\nexport * from './router/route-redirect';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.AssetsLoader","i1.AssetsLoader","i2.PlanetApplicationService","i1.PlanetComponentLoader"],"mappings":"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"}