@laiye_packages/uci 1.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.
- package/dist/app/base/index.d.ts +80 -0
- package/dist/app/index.d.ts +14 -0
- package/dist/app/organization/api/department.d.ts +44 -0
- package/dist/app/organization/api/license.d.ts +60 -0
- package/dist/app/organization/api/notification.d.ts +98 -0
- package/dist/app/organization/api/oem.d.ts +39 -0
- package/dist/app/organization/api/open_api.d.ts +78 -0
- package/dist/app/organization/api/permission.d.ts +71 -0
- package/dist/app/organization/api/session.d.ts +51 -0
- package/dist/app/organization/api/sso.d.ts +0 -0
- package/dist/app/organization/api/user.d.ts +95 -0
- package/dist/app/organization/api/verificationCodes.d.ts +27 -0
- package/dist/app/organization/app/index.d.ts +30 -0
- package/dist/app/organization/authorizer/base.d.ts +35 -0
- package/dist/app/organization/authorizer/direct.d.ts +11 -0
- package/dist/app/organization/authorizer/gateway.d.ts +5 -0
- package/dist/app/organization/authorizer/redirect.d.ts +18 -0
- package/dist/app/organization/authorizer/web.d.ts +25 -0
- package/dist/app/organization/index.d.ts +1 -0
- package/dist/app/tenant/api/configuration.d.ts +8 -0
- package/dist/app/tenant/api/session.d.ts +23 -0
- package/dist/app/tenant/api/tenant.d.ts +25 -0
- package/dist/app/tenant/api/user.d.ts +27 -0
- package/dist/app/tenant/app/index.d.ts +20 -0
- package/dist/app/tenant/authorizer/index.d.ts +13 -0
- package/dist/app/tenant/index.d.ts +1 -0
- package/dist/app/tenant/session/index.d.ts +57 -0
- package/dist/config/address.d.ts +5 -0
- package/dist/config/app.d.ts +5 -0
- package/dist/config/base.d.ts +15 -0
- package/dist/config/crypto.d.ts +5 -0
- package/dist/config/http.d.ts +14 -0
- package/dist/config/index.d.ts +12 -0
- package/dist/constants/index.d.ts +1 -0
- package/dist/crypto/base.d.ts +14 -0
- package/dist/crypto/gm.d.ts +3 -0
- package/dist/crypto/index.d.ts +144 -0
- package/dist/crypto/sm.d.ts +17 -0
- package/dist/env/index.d.ts +76 -0
- package/dist/error/index.d.ts +16 -0
- package/dist/http/base.d.ts +52 -0
- package/dist/http/error.d.ts +34 -0
- package/dist/http/index.d.ts +170 -0
- package/dist/http/trace.d.ts +1 -0
- package/dist/i18n/index.d.ts +50 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +12194 -0
- package/dist/index.js.map +1 -0
- package/dist/logger/index.d.ts +75 -0
- package/dist/object/index.d.ts +57 -0
- package/dist/observable/index.d.ts +14 -0
- package/dist/observable/serializeable.d.ts +86 -0
- package/dist/permission/index.d.ts +9 -0
- package/dist/session/index.d.ts +74 -0
- package/dist/storage/index.d.ts +98 -0
- package/package.json +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["webpack://@laiye_packages/uci/../../node_modules/.pnpm/@module-federation+error-codes@0.8.12/node_modules/@module-federation/error-codes/dist/index.cjs.js","webpack://@laiye_packages/uci/../../node_modules/.pnpm/@module-federation+runtime-core@0.6.20/node_modules/@module-federation/runtime-core/dist/index.cjs.js","webpack://@laiye_packages/uci/../../node_modules/.pnpm/@module-federation+runtime-core@0.6.20/node_modules/@module-federation/runtime-core/dist/polyfills.cjs.js","webpack://@laiye_packages/uci/../../node_modules/.pnpm/@module-federation+runtime-tools@0.8.12/node_modules/@module-federation/runtime-tools/dist/runtime.cjs.js","webpack://@laiye_packages/uci/../../node_modules/.pnpm/@module-federation+runtime@0.8.12/node_modules/@module-federation/runtime/dist/index.cjs.js","webpack://@laiye_packages/uci/../../node_modules/.pnpm/@module-federation+runtime@0.8.12/node_modules/@module-federation/runtime/dist/utils.cjs.js","webpack://@laiye_packages/uci/../../node_modules/.pnpm/@module-federation+sdk@0.8.12/node_modules/@module-federation/sdk/dist/index.cjs.js","webpack://@laiye_packages/uci/../../node_modules/.pnpm/@module-federation+sdk@0.8.12/node_modules/@module-federation/sdk/dist/polyfills.cjs.js","webpack://@laiye_packages/uci/../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/dayjs.min.js","webpack://@laiye_packages/uci/../../node_modules/.pnpm/@module-federation+enhanced@0.8.12_@rspack+core@1.5.8_@swc+helpers@0.5.18__react-dom@18.3.1_r_dcbcwp56l5mltx2br2csa6d5sy/node_modules/@module-federation/enhanced/dist/src/runtime.js","webpack://@laiye_packages/uci/../../node_modules/.pnpm/isomorphic-rslog@0.0.7/node_modules/isomorphic-rslog/dist/browser/index.cjs","webpack://@laiye_packages/uci/webpack/runtime/compat_get_default_export","webpack://@laiye_packages/uci/webpack/runtime/define_property_getters","webpack://@laiye_packages/uci/webpack/runtime/global","webpack://@laiye_packages/uci/webpack/runtime/has_own_property","webpack://@laiye_packages/uci/./src/logger/index.ts","webpack://@laiye_packages/uci/./src/object/index.ts","webpack://@laiye_packages/uci/./src/error/index.ts","webpack://@laiye_packages/uci/./src/env/index.ts","webpack://@laiye_packages/uci/./src/config/base.ts","webpack://@laiye_packages/uci/./src/config/http.ts","webpack://@laiye_packages/uci/./src/config/crypto.ts","webpack://@laiye_packages/uci/./src/config/app.ts","webpack://@laiye_packages/uci/./src/config/address.ts","webpack://@laiye_packages/uci/./src/config/index.ts","webpack://@laiye_packages/uci/../../node_modules/.pnpm/mobx@6.15.0/node_modules/mobx/dist/mobx.esm.js","webpack://@laiye_packages/uci/../../node_modules/.pnpm/mobx-utils@6.1.1_mobx@6.15.0/node_modules/mobx-utils/mobx-utils.module.js","webpack://@laiye_packages/uci/./src/observable/serializeable.ts","webpack://@laiye_packages/uci/./src/observable/index.ts","webpack://@laiye_packages/uci/./src/storage/index.ts","webpack://@laiye_packages/uci/./src/http/error.ts","webpack://@laiye_packages/uci/./src/permission/index.ts","webpack://@laiye_packages/uci/./src/session/index.ts","webpack://@laiye_packages/uci/./src/i18n/index.ts","webpack://@laiye_packages/uci/./src/app/base/index.ts","webpack://@laiye_packages/uci/./src/app/organization/api/session.ts","webpack://@laiye_packages/uci/./src/app/organization/api/user.ts","webpack://@laiye_packages/uci/./src/app/organization/authorizer/base.ts","webpack://@laiye_packages/uci/./src/app/organization/authorizer/web.ts","webpack://@laiye_packages/uci/./src/app/organization/authorizer/gateway.ts","webpack://@laiye_packages/uci/./src/app/organization/authorizer/direct.ts","webpack://@laiye_packages/uci/./src/app/organization/authorizer/redirect.ts","webpack://@laiye_packages/uci/./src/app/organization/api/license.ts","webpack://@laiye_packages/uci/./src/crypto/base.ts","webpack://@laiye_packages/uci/./src/crypto/sm.ts","webpack://@laiye_packages/uci/./src/crypto/gm.ts","webpack://@laiye_packages/uci/./src/crypto/index.ts","webpack://@laiye_packages/uci/./src/app/organization/api/oem.ts","webpack://@laiye_packages/uci/./src/app/organization/api/verificationCodes.ts","webpack://@laiye_packages/uci/./src/app/organization/app/index.ts","webpack://@laiye_packages/uci/./src/app/tenant/api/tenant.ts","webpack://@laiye_packages/uci/./src/app/tenant/api/user.ts","webpack://@laiye_packages/uci/./src/app/tenant/api/configuration.ts","webpack://@laiye_packages/uci/./src/app/tenant/session/index.ts","webpack://@laiye_packages/uci/./src/app/tenant/api/session.ts","webpack://@laiye_packages/uci/./src/app/tenant/authorizer/index.ts","webpack://@laiye_packages/uci/./src/app/tenant/app/index.ts","webpack://@laiye_packages/uci/./src/app/index.ts","webpack://@laiye_packages/uci/./src/http/base.ts","webpack://@laiye_packages/uci/./src/http/index.ts"],"sourcesContent":["'use strict';\n\nconst RUNTIME_001 = 'RUNTIME-001';\nconst RUNTIME_002 = 'RUNTIME-002';\nconst RUNTIME_003 = 'RUNTIME-003';\nconst RUNTIME_004 = 'RUNTIME-004';\nconst RUNTIME_005 = 'RUNTIME-005';\nconst RUNTIME_006 = 'RUNTIME-006';\nconst RUNTIME_007 = 'RUNTIME-007';\nconst RUNTIME_008 = 'RUNTIME-008';\nconst TYPE_001 = 'TYPE-001';\nconst BUILD_001 = 'BUILD-001';\n\nconst getDocsUrl = (errorCode)=>{\n const type = errorCode.split('-')[0].toLowerCase();\n return `https://module-federation.io/guide/troubleshooting/${type}/${errorCode}`;\n};\nconst getShortErrorMsg = (errorCode, errorDescMap, args, originalErrorMsg)=>{\n const msg = [\n `${[\n errorDescMap[errorCode]\n ]} #${errorCode}`\n ];\n args && msg.push(`args: ${JSON.stringify(args)}`);\n msg.push(getDocsUrl(errorCode));\n originalErrorMsg && msg.push(`Original Error Message:\\n ${originalErrorMsg}`);\n return msg.join('\\n');\n};\n\nfunction _extends() {\n _extends = Object.assign || function assign(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nconst runtimeDescMap = {\n [RUNTIME_001]: 'Failed to get remoteEntry exports.',\n [RUNTIME_002]: 'The remote entry interface does not contain \"init\"',\n [RUNTIME_003]: 'Failed to get manifest.',\n [RUNTIME_004]: 'Failed to locate remote.',\n [RUNTIME_005]: 'Invalid loadShareSync function call from bundler runtime',\n [RUNTIME_006]: 'Invalid loadShareSync function call from runtime',\n [RUNTIME_007]: 'Failed to get remote snapshot.',\n [RUNTIME_008]: 'Failed to load script resources.'\n};\nconst typeDescMap = {\n [TYPE_001]: 'Failed to generate type declaration.'\n};\nconst buildDescMap = {\n [BUILD_001]: 'Failed to find expose module.'\n};\nconst errorDescMap = _extends({}, runtimeDescMap, typeDescMap, buildDescMap);\n\nexports.BUILD_001 = BUILD_001;\nexports.RUNTIME_001 = RUNTIME_001;\nexports.RUNTIME_002 = RUNTIME_002;\nexports.RUNTIME_003 = RUNTIME_003;\nexports.RUNTIME_004 = RUNTIME_004;\nexports.RUNTIME_005 = RUNTIME_005;\nexports.RUNTIME_006 = RUNTIME_006;\nexports.RUNTIME_007 = RUNTIME_007;\nexports.RUNTIME_008 = RUNTIME_008;\nexports.TYPE_001 = TYPE_001;\nexports.buildDescMap = buildDescMap;\nexports.errorDescMap = errorDescMap;\nexports.getShortErrorMsg = getShortErrorMsg;\nexports.runtimeDescMap = runtimeDescMap;\nexports.typeDescMap = typeDescMap;\n","'use strict';\n\nvar polyfills = require('./polyfills.cjs.js');\nvar sdk = require('@module-federation/sdk');\nvar errorCodes = require('@module-federation/error-codes');\n\nconst LOG_CATEGORY = '[ Federation Runtime ]';\n// FIXME: pre-bundle ?\nconst logger = sdk.createLogger(LOG_CATEGORY);\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction assert(condition, msg) {\n if (!condition) {\n error(msg);\n }\n}\nfunction error(msg) {\n if (msg instanceof Error) {\n msg.message = `${LOG_CATEGORY}: ${msg.message}`;\n throw msg;\n }\n throw new Error(`${LOG_CATEGORY}: ${msg}`);\n}\nfunction warn(msg) {\n if (msg instanceof Error) {\n msg.message = `${LOG_CATEGORY}: ${msg.message}`;\n logger.warn(msg);\n } else {\n logger.warn(msg);\n }\n}\n\nfunction addUniqueItem(arr, item) {\n if (arr.findIndex((name)=>name === item) === -1) {\n arr.push(item);\n }\n return arr;\n}\nfunction getFMId(remoteInfo) {\n if ('version' in remoteInfo && remoteInfo.version) {\n return `${remoteInfo.name}:${remoteInfo.version}`;\n } else if ('entry' in remoteInfo && remoteInfo.entry) {\n return `${remoteInfo.name}:${remoteInfo.entry}`;\n } else {\n return `${remoteInfo.name}`;\n }\n}\nfunction isRemoteInfoWithEntry(remote) {\n return typeof remote.entry !== 'undefined';\n}\nfunction isPureRemoteEntry(remote) {\n return !remote.entry.includes('.json') && remote.entry.includes('.js');\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function safeWrapper(callback, disableWarn) {\n try {\n const res = await callback();\n return res;\n } catch (e) {\n !disableWarn && warn(e);\n return;\n }\n}\nfunction isObject(val) {\n return val && typeof val === 'object';\n}\nconst objectToString = Object.prototype.toString;\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isPlainObject(val) {\n return objectToString.call(val) === '[object Object]';\n}\nfunction isStaticResourcesEqual(url1, url2) {\n const REG_EXP = /^(https?:)?\\/\\//i;\n // Transform url1 and url2 into relative paths\n const relativeUrl1 = url1.replace(REG_EXP, '').replace(/\\/$/, '');\n const relativeUrl2 = url2.replace(REG_EXP, '').replace(/\\/$/, '');\n // Check if the relative paths are identical\n return relativeUrl1 === relativeUrl2;\n}\nfunction arrayOptions(options) {\n return Array.isArray(options) ? options : [\n options\n ];\n}\nfunction getRemoteEntryInfoFromSnapshot(snapshot) {\n const defaultRemoteEntryInfo = {\n url: '',\n type: 'global',\n globalName: ''\n };\n if (sdk.isBrowserEnv()) {\n return 'remoteEntry' in snapshot ? {\n url: snapshot.remoteEntry,\n type: snapshot.remoteEntryType,\n globalName: snapshot.globalName\n } : defaultRemoteEntryInfo;\n }\n if ('ssrRemoteEntry' in snapshot) {\n return {\n url: snapshot.ssrRemoteEntry || defaultRemoteEntryInfo.url,\n type: snapshot.ssrRemoteEntryType || defaultRemoteEntryInfo.type,\n globalName: snapshot.globalName\n };\n }\n return defaultRemoteEntryInfo;\n}\nconst processModuleAlias = (name, subPath)=>{\n // @host/ ./button -> @host/button\n let moduleName;\n if (name.endsWith('/')) {\n moduleName = name.slice(0, -1);\n } else {\n moduleName = name;\n }\n if (subPath.startsWith('.')) {\n subPath = subPath.slice(1);\n }\n moduleName = moduleName + subPath;\n return moduleName;\n};\n\nconst CurrentGlobal = typeof globalThis === 'object' ? globalThis : window;\nconst nativeGlobal = (()=>{\n try {\n // get real window (incase of sandbox)\n return document.defaultView;\n } catch (e) {\n // node env\n return CurrentGlobal;\n }\n})();\nconst Global = nativeGlobal;\nfunction definePropertyGlobalVal(target, key, val) {\n Object.defineProperty(target, key, {\n value: val,\n configurable: false,\n writable: true\n });\n}\nfunction includeOwnProperty(target, key) {\n return Object.hasOwnProperty.call(target, key);\n}\n// This section is to prevent encapsulation by certain microfrontend frameworks. Due to reuse policies, sandbox escapes.\n// The sandbox in the microfrontend does not replicate the value of 'configurable'.\n// If there is no loading content on the global object, this section defines the loading object.\nif (!includeOwnProperty(CurrentGlobal, '__GLOBAL_LOADING_REMOTE_ENTRY__')) {\n definePropertyGlobalVal(CurrentGlobal, '__GLOBAL_LOADING_REMOTE_ENTRY__', {});\n}\nconst globalLoading = CurrentGlobal.__GLOBAL_LOADING_REMOTE_ENTRY__;\nfunction setGlobalDefaultVal(target) {\n var _target___FEDERATION__, _target___FEDERATION__1, _target___FEDERATION__2, _target___FEDERATION__3, _target___FEDERATION__4, _target___FEDERATION__5;\n if (includeOwnProperty(target, '__VMOK__') && !includeOwnProperty(target, '__FEDERATION__')) {\n definePropertyGlobalVal(target, '__FEDERATION__', target.__VMOK__);\n }\n if (!includeOwnProperty(target, '__FEDERATION__')) {\n definePropertyGlobalVal(target, '__FEDERATION__', {\n __GLOBAL_PLUGIN__: [],\n __INSTANCES__: [],\n moduleInfo: {},\n __SHARE__: {},\n __MANIFEST_LOADING__: {},\n __PRELOADED_MAP__: new Map()\n });\n definePropertyGlobalVal(target, '__VMOK__', target.__FEDERATION__);\n }\n var ___GLOBAL_PLUGIN__;\n (___GLOBAL_PLUGIN__ = (_target___FEDERATION__ = target.__FEDERATION__).__GLOBAL_PLUGIN__) != null ? ___GLOBAL_PLUGIN__ : _target___FEDERATION__.__GLOBAL_PLUGIN__ = [];\n var ___INSTANCES__;\n (___INSTANCES__ = (_target___FEDERATION__1 = target.__FEDERATION__).__INSTANCES__) != null ? ___INSTANCES__ : _target___FEDERATION__1.__INSTANCES__ = [];\n var _moduleInfo;\n (_moduleInfo = (_target___FEDERATION__2 = target.__FEDERATION__).moduleInfo) != null ? _moduleInfo : _target___FEDERATION__2.moduleInfo = {};\n var ___SHARE__;\n (___SHARE__ = (_target___FEDERATION__3 = target.__FEDERATION__).__SHARE__) != null ? ___SHARE__ : _target___FEDERATION__3.__SHARE__ = {};\n var ___MANIFEST_LOADING__;\n (___MANIFEST_LOADING__ = (_target___FEDERATION__4 = target.__FEDERATION__).__MANIFEST_LOADING__) != null ? ___MANIFEST_LOADING__ : _target___FEDERATION__4.__MANIFEST_LOADING__ = {};\n var ___PRELOADED_MAP__;\n (___PRELOADED_MAP__ = (_target___FEDERATION__5 = target.__FEDERATION__).__PRELOADED_MAP__) != null ? ___PRELOADED_MAP__ : _target___FEDERATION__5.__PRELOADED_MAP__ = new Map();\n}\nsetGlobalDefaultVal(CurrentGlobal);\nsetGlobalDefaultVal(nativeGlobal);\nfunction resetFederationGlobalInfo() {\n CurrentGlobal.__FEDERATION__.__GLOBAL_PLUGIN__ = [];\n CurrentGlobal.__FEDERATION__.__INSTANCES__ = [];\n CurrentGlobal.__FEDERATION__.moduleInfo = {};\n CurrentGlobal.__FEDERATION__.__SHARE__ = {};\n CurrentGlobal.__FEDERATION__.__MANIFEST_LOADING__ = {};\n Object.keys(globalLoading).forEach((key)=>{\n delete globalLoading[key];\n });\n}\nfunction setGlobalFederationInstance(FederationInstance) {\n CurrentGlobal.__FEDERATION__.__INSTANCES__.push(FederationInstance);\n}\nfunction getGlobalFederationConstructor() {\n return CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR__;\n}\nfunction setGlobalFederationConstructor(FederationConstructor, isDebug = sdk.isDebugMode()) {\n if (isDebug) {\n CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR__ = FederationConstructor;\n CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = \"0.6.20\";\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction getInfoWithoutType(target, key) {\n if (typeof key === 'string') {\n const keyRes = target[key];\n if (keyRes) {\n return {\n value: target[key],\n key: key\n };\n } else {\n const targetKeys = Object.keys(target);\n for (const targetKey of targetKeys){\n const [targetTypeOrName, _] = targetKey.split(':');\n const nKey = `${targetTypeOrName}:${key}`;\n const typeWithKeyRes = target[nKey];\n if (typeWithKeyRes) {\n return {\n value: typeWithKeyRes,\n key: nKey\n };\n }\n }\n return {\n value: undefined,\n key: key\n };\n }\n } else {\n throw new Error('key must be string');\n }\n}\nconst getGlobalSnapshot = ()=>nativeGlobal.__FEDERATION__.moduleInfo;\nconst getTargetSnapshotInfoByModuleInfo = (moduleInfo, snapshot)=>{\n // Check if the remote is included in the hostSnapshot\n const moduleKey = getFMId(moduleInfo);\n const getModuleInfo = getInfoWithoutType(snapshot, moduleKey).value;\n // The remoteSnapshot might not include a version\n if (getModuleInfo && !getModuleInfo.version && 'version' in moduleInfo && moduleInfo['version']) {\n getModuleInfo.version = moduleInfo['version'];\n }\n if (getModuleInfo) {\n return getModuleInfo;\n }\n // If the remote is not included in the hostSnapshot, deploy a micro app snapshot\n if ('version' in moduleInfo && moduleInfo['version']) {\n const { version } = moduleInfo, resModuleInfo = polyfills._object_without_properties_loose(moduleInfo, [\n \"version\"\n ]);\n const moduleKeyWithoutVersion = getFMId(resModuleInfo);\n const getModuleInfoWithoutVersion = getInfoWithoutType(nativeGlobal.__FEDERATION__.moduleInfo, moduleKeyWithoutVersion).value;\n if ((getModuleInfoWithoutVersion == null ? void 0 : getModuleInfoWithoutVersion.version) === version) {\n return getModuleInfoWithoutVersion;\n }\n }\n return;\n};\nconst getGlobalSnapshotInfoByModuleInfo = (moduleInfo)=>getTargetSnapshotInfoByModuleInfo(moduleInfo, nativeGlobal.__FEDERATION__.moduleInfo);\nconst setGlobalSnapshotInfoByModuleInfo = (remoteInfo, moduleDetailInfo)=>{\n const moduleKey = getFMId(remoteInfo);\n nativeGlobal.__FEDERATION__.moduleInfo[moduleKey] = moduleDetailInfo;\n return nativeGlobal.__FEDERATION__.moduleInfo;\n};\nconst addGlobalSnapshot = (moduleInfos)=>{\n nativeGlobal.__FEDERATION__.moduleInfo = polyfills._extends({}, nativeGlobal.__FEDERATION__.moduleInfo, moduleInfos);\n return ()=>{\n const keys = Object.keys(moduleInfos);\n for (const key of keys){\n delete nativeGlobal.__FEDERATION__.moduleInfo[key];\n }\n };\n};\nconst getRemoteEntryExports = (name, globalName)=>{\n const remoteEntryKey = globalName || `__FEDERATION_${name}:custom__`;\n const entryExports = CurrentGlobal[remoteEntryKey];\n return {\n remoteEntryKey,\n entryExports\n };\n};\n// This function is used to register global plugins.\n// It iterates over the provided plugins and checks if they are already registered.\n// If a plugin is not registered, it is added to the global plugins.\n// If a plugin is already registered, a warning message is logged.\nconst registerGlobalPlugins = (plugins)=>{\n const { __GLOBAL_PLUGIN__ } = nativeGlobal.__FEDERATION__;\n plugins.forEach((plugin)=>{\n if (__GLOBAL_PLUGIN__.findIndex((p)=>p.name === plugin.name) === -1) {\n __GLOBAL_PLUGIN__.push(plugin);\n } else {\n warn(`The plugin ${plugin.name} has been registered.`);\n }\n });\n};\nconst getGlobalHostPlugins = ()=>nativeGlobal.__FEDERATION__.__GLOBAL_PLUGIN__;\nconst getPreloaded = (id)=>CurrentGlobal.__FEDERATION__.__PRELOADED_MAP__.get(id);\nconst setPreloaded = (id)=>CurrentGlobal.__FEDERATION__.__PRELOADED_MAP__.set(id, true);\n\nconst DEFAULT_SCOPE = 'default';\nconst DEFAULT_REMOTE_TYPE = 'global';\n\n// fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts\n// those constants are based on https://www.rubydoc.info/gems/semantic_range/3.0.0/SemanticRange#BUILDIDENTIFIER-constant\n// Copyright (c)\n// vite-plugin-federation is licensed under Mulan PSL v2.\n// You can use this software according to the terms and conditions of the Mulan PSL v2.\n// You may obtain a copy of Mulan PSL v2 at:\n// http://license.coscl.org.cn/MulanPSL2\n// THIS SOFTWARE IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.\n// See the Mulan PSL v2 for more details.\nconst buildIdentifier = '[0-9A-Za-z-]+';\nconst build = `(?:\\\\+(${buildIdentifier}(?:\\\\.${buildIdentifier})*))`;\nconst numericIdentifier = '0|[1-9]\\\\d*';\nconst numericIdentifierLoose = '[0-9]+';\nconst nonNumericIdentifier = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*';\nconst preReleaseIdentifierLoose = `(?:${numericIdentifierLoose}|${nonNumericIdentifier})`;\nconst preReleaseLoose = `(?:-?(${preReleaseIdentifierLoose}(?:\\\\.${preReleaseIdentifierLoose})*))`;\nconst preReleaseIdentifier = `(?:${numericIdentifier}|${nonNumericIdentifier})`;\nconst preRelease = `(?:-(${preReleaseIdentifier}(?:\\\\.${preReleaseIdentifier})*))`;\nconst xRangeIdentifier = `${numericIdentifier}|x|X|\\\\*`;\nconst xRangePlain = `[v=\\\\s]*(${xRangeIdentifier})(?:\\\\.(${xRangeIdentifier})(?:\\\\.(${xRangeIdentifier})(?:${preRelease})?${build}?)?)?`;\nconst hyphenRange = `^\\\\s*(${xRangePlain})\\\\s+-\\\\s+(${xRangePlain})\\\\s*$`;\nconst mainVersionLoose = `(${numericIdentifierLoose})\\\\.(${numericIdentifierLoose})\\\\.(${numericIdentifierLoose})`;\nconst loosePlain = `[v=\\\\s]*${mainVersionLoose}${preReleaseLoose}?${build}?`;\nconst gtlt = '((?:<|>)?=?)';\nconst comparatorTrim = `(\\\\s*)${gtlt}\\\\s*(${loosePlain}|${xRangePlain})`;\nconst loneTilde = '(?:~>?)';\nconst tildeTrim = `(\\\\s*)${loneTilde}\\\\s+`;\nconst loneCaret = '(?:\\\\^)';\nconst caretTrim = `(\\\\s*)${loneCaret}\\\\s+`;\nconst star = '(<|>)?=?\\\\s*\\\\*';\nconst caret = `^${loneCaret}${xRangePlain}$`;\nconst mainVersion = `(${numericIdentifier})\\\\.(${numericIdentifier})\\\\.(${numericIdentifier})`;\nconst fullPlain = `v?${mainVersion}${preRelease}?${build}?`;\nconst tilde = `^${loneTilde}${xRangePlain}$`;\nconst xRange = `^${gtlt}\\\\s*${xRangePlain}$`;\nconst comparator = `^${gtlt}\\\\s*(${fullPlain})$|^$`;\n// copy from semver package\nconst gte0 = '^\\\\s*>=\\\\s*0.0.0\\\\s*$';\n\n// fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts\n// Copyright (c)\n// vite-plugin-federation is licensed under Mulan PSL v2.\n// You can use this software according to the terms and conditions of the Mulan PSL v2.\n// You may obtain a copy of Mulan PSL v2 at:\n// http://license.coscl.org.cn/MulanPSL2\n// THIS SOFTWARE IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.\n// See the Mulan PSL v2 for more details.\nfunction parseRegex(source) {\n return new RegExp(source);\n}\nfunction isXVersion(version) {\n return !version || version.toLowerCase() === 'x' || version === '*';\n}\nfunction pipe(...fns) {\n return (x)=>fns.reduce((v, f)=>f(v), x);\n}\nfunction extractComparator(comparatorString) {\n return comparatorString.match(parseRegex(comparator));\n}\nfunction combineVersion(major, minor, patch, preRelease) {\n const mainVersion = `${major}.${minor}.${patch}`;\n if (preRelease) {\n return `${mainVersion}-${preRelease}`;\n }\n return mainVersion;\n}\n\n// fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts\n// Copyright (c)\n// vite-plugin-federation is licensed under Mulan PSL v2.\n// You can use this software according to the terms and conditions of the Mulan PSL v2.\n// You may obtain a copy of Mulan PSL v2 at:\n// http://license.coscl.org.cn/MulanPSL2\n// THIS SOFTWARE IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.\n// See the Mulan PSL v2 for more details.\nfunction parseHyphen(range) {\n return range.replace(parseRegex(hyphenRange), (_range, from, fromMajor, fromMinor, fromPatch, _fromPreRelease, _fromBuild, to, toMajor, toMinor, toPatch, toPreRelease)=>{\n if (isXVersion(fromMajor)) {\n from = '';\n } else if (isXVersion(fromMinor)) {\n from = `>=${fromMajor}.0.0`;\n } else if (isXVersion(fromPatch)) {\n from = `>=${fromMajor}.${fromMinor}.0`;\n } else {\n from = `>=${from}`;\n }\n if (isXVersion(toMajor)) {\n to = '';\n } else if (isXVersion(toMinor)) {\n to = `<${Number(toMajor) + 1}.0.0-0`;\n } else if (isXVersion(toPatch)) {\n to = `<${toMajor}.${Number(toMinor) + 1}.0-0`;\n } else if (toPreRelease) {\n to = `<=${toMajor}.${toMinor}.${toPatch}-${toPreRelease}`;\n } else {\n to = `<=${to}`;\n }\n return `${from} ${to}`.trim();\n });\n}\nfunction parseComparatorTrim(range) {\n return range.replace(parseRegex(comparatorTrim), '$1$2$3');\n}\nfunction parseTildeTrim(range) {\n return range.replace(parseRegex(tildeTrim), '$1~');\n}\nfunction parseCaretTrim(range) {\n return range.replace(parseRegex(caretTrim), '$1^');\n}\nfunction parseCarets(range) {\n return range.trim().split(/\\s+/).map((rangeVersion)=>rangeVersion.replace(parseRegex(caret), (_, major, minor, patch, preRelease)=>{\n if (isXVersion(major)) {\n return '';\n } else if (isXVersion(minor)) {\n return `>=${major}.0.0 <${Number(major) + 1}.0.0-0`;\n } else if (isXVersion(patch)) {\n if (major === '0') {\n return `>=${major}.${minor}.0 <${major}.${Number(minor) + 1}.0-0`;\n } else {\n return `>=${major}.${minor}.0 <${Number(major) + 1}.0.0-0`;\n }\n } else if (preRelease) {\n if (major === '0') {\n if (minor === '0') {\n return `>=${major}.${minor}.${patch}-${preRelease} <${major}.${minor}.${Number(patch) + 1}-0`;\n } else {\n return `>=${major}.${minor}.${patch}-${preRelease} <${major}.${Number(minor) + 1}.0-0`;\n }\n } else {\n return `>=${major}.${minor}.${patch}-${preRelease} <${Number(major) + 1}.0.0-0`;\n }\n } else {\n if (major === '0') {\n if (minor === '0') {\n return `>=${major}.${minor}.${patch} <${major}.${minor}.${Number(patch) + 1}-0`;\n } else {\n return `>=${major}.${minor}.${patch} <${major}.${Number(minor) + 1}.0-0`;\n }\n }\n return `>=${major}.${minor}.${patch} <${Number(major) + 1}.0.0-0`;\n }\n })).join(' ');\n}\nfunction parseTildes(range) {\n return range.trim().split(/\\s+/).map((rangeVersion)=>rangeVersion.replace(parseRegex(tilde), (_, major, minor, patch, preRelease)=>{\n if (isXVersion(major)) {\n return '';\n } else if (isXVersion(minor)) {\n return `>=${major}.0.0 <${Number(major) + 1}.0.0-0`;\n } else if (isXVersion(patch)) {\n return `>=${major}.${minor}.0 <${major}.${Number(minor) + 1}.0-0`;\n } else if (preRelease) {\n return `>=${major}.${minor}.${patch}-${preRelease} <${major}.${Number(minor) + 1}.0-0`;\n }\n return `>=${major}.${minor}.${patch} <${major}.${Number(minor) + 1}.0-0`;\n })).join(' ');\n}\nfunction parseXRanges(range) {\n return range.split(/\\s+/).map((rangeVersion)=>rangeVersion.trim().replace(parseRegex(xRange), (ret, gtlt, major, minor, patch, preRelease)=>{\n const isXMajor = isXVersion(major);\n const isXMinor = isXMajor || isXVersion(minor);\n const isXPatch = isXMinor || isXVersion(patch);\n if (gtlt === '=' && isXPatch) {\n gtlt = '';\n }\n preRelease = '';\n if (isXMajor) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n return '<0.0.0-0';\n } else {\n // nothing is forbidden\n return '*';\n }\n } else if (gtlt && isXPatch) {\n // replace X with 0\n if (isXMinor) {\n minor = 0;\n }\n patch = 0;\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (isXMinor) {\n major = Number(major) + 1;\n minor = 0;\n patch = 0;\n } else {\n minor = Number(minor) + 1;\n patch = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should pass\n // Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (isXMinor) {\n major = Number(major) + 1;\n } else {\n minor = Number(minor) + 1;\n }\n }\n if (gtlt === '<') {\n preRelease = '-0';\n }\n return `${gtlt + major}.${minor}.${patch}${preRelease}`;\n } else if (isXMinor) {\n return `>=${major}.0.0${preRelease} <${Number(major) + 1}.0.0-0`;\n } else if (isXPatch) {\n return `>=${major}.${minor}.0${preRelease} <${major}.${Number(minor) + 1}.0-0`;\n }\n return ret;\n })).join(' ');\n}\nfunction parseStar(range) {\n return range.trim().replace(parseRegex(star), '');\n}\nfunction parseGTE0(comparatorString) {\n return comparatorString.trim().replace(parseRegex(gte0), '');\n}\n\n// fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts\n// Copyright (c)\n// vite-plugin-federation is licensed under Mulan PSL v2.\n// You can use this software according to the terms and conditions of the Mulan PSL v2.\n// You may obtain a copy of Mulan PSL v2 at:\n// http://license.coscl.org.cn/MulanPSL2\n// THIS SOFTWARE IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.\n// See the Mulan PSL v2 for more details.\nfunction compareAtom(rangeAtom, versionAtom) {\n rangeAtom = Number(rangeAtom) || rangeAtom;\n versionAtom = Number(versionAtom) || versionAtom;\n if (rangeAtom > versionAtom) {\n return 1;\n }\n if (rangeAtom === versionAtom) {\n return 0;\n }\n return -1;\n}\nfunction comparePreRelease(rangeAtom, versionAtom) {\n const { preRelease: rangePreRelease } = rangeAtom;\n const { preRelease: versionPreRelease } = versionAtom;\n if (rangePreRelease === undefined && Boolean(versionPreRelease)) {\n return 1;\n }\n if (Boolean(rangePreRelease) && versionPreRelease === undefined) {\n return -1;\n }\n if (rangePreRelease === undefined && versionPreRelease === undefined) {\n return 0;\n }\n for(let i = 0, n = rangePreRelease.length; i <= n; i++){\n const rangeElement = rangePreRelease[i];\n const versionElement = versionPreRelease[i];\n if (rangeElement === versionElement) {\n continue;\n }\n if (rangeElement === undefined && versionElement === undefined) {\n return 0;\n }\n if (!rangeElement) {\n return 1;\n }\n if (!versionElement) {\n return -1;\n }\n return compareAtom(rangeElement, versionElement);\n }\n return 0;\n}\nfunction compareVersion(rangeAtom, versionAtom) {\n return compareAtom(rangeAtom.major, versionAtom.major) || compareAtom(rangeAtom.minor, versionAtom.minor) || compareAtom(rangeAtom.patch, versionAtom.patch) || comparePreRelease(rangeAtom, versionAtom);\n}\nfunction eq(rangeAtom, versionAtom) {\n return rangeAtom.version === versionAtom.version;\n}\nfunction compare(rangeAtom, versionAtom) {\n switch(rangeAtom.operator){\n case '':\n case '=':\n return eq(rangeAtom, versionAtom);\n case '>':\n return compareVersion(rangeAtom, versionAtom) < 0;\n case '>=':\n return eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) < 0;\n case '<':\n return compareVersion(rangeAtom, versionAtom) > 0;\n case '<=':\n return eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) > 0;\n case undefined:\n {\n // mean * or x -> all versions\n return true;\n }\n default:\n return false;\n }\n}\n\n// fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts\n// Copyright (c)\n// vite-plugin-federation is licensed under Mulan PSL v2.\n// You can use this software according to the terms and conditions of the Mulan PSL v2.\n// You may obtain a copy of Mulan PSL v2 at:\n// http://license.coscl.org.cn/MulanPSL2\n// THIS SOFTWARE IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.\n// See the Mulan PSL v2 for more details.\nfunction parseComparatorString(range) {\n return pipe(// handle caret\n // ^ --> * (any, kinda silly)\n // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n // ^1.2.3 --> >=1.2.3 <2.0.0-0\n // ^1.2.0 --> >=1.2.0 <2.0.0-0\n parseCarets, // handle tilde\n // ~, ~> --> * (any, kinda silly)\n // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n parseTildes, parseXRanges, parseStar)(range);\n}\nfunction parseRange(range) {\n return pipe(// handle hyphenRange\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n parseHyphen, // handle trim comparator\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n parseComparatorTrim, // handle trim tilde\n // `~ 1.2.3` => `~1.2.3`\n parseTildeTrim, // handle trim caret\n // `^ 1.2.3` => `^1.2.3`\n parseCaretTrim)(range.trim()).split(/\\s+/).join(' ');\n}\nfunction satisfy(version, range) {\n if (!version) {\n return false;\n }\n const parsedRange = parseRange(range);\n const parsedComparator = parsedRange.split(' ').map((rangeVersion)=>parseComparatorString(rangeVersion)).join(' ');\n const comparators = parsedComparator.split(/\\s+/).map((comparator)=>parseGTE0(comparator));\n const extractedVersion = extractComparator(version);\n if (!extractedVersion) {\n return false;\n }\n const [, versionOperator, , versionMajor, versionMinor, versionPatch, versionPreRelease] = extractedVersion;\n const versionAtom = {\n operator: versionOperator,\n version: combineVersion(versionMajor, versionMinor, versionPatch, versionPreRelease),\n major: versionMajor,\n minor: versionMinor,\n patch: versionPatch,\n preRelease: versionPreRelease == null ? void 0 : versionPreRelease.split('.')\n };\n for (const comparator of comparators){\n const extractedComparator = extractComparator(comparator);\n if (!extractedComparator) {\n return false;\n }\n const [, rangeOperator, , rangeMajor, rangeMinor, rangePatch, rangePreRelease] = extractedComparator;\n const rangeAtom = {\n operator: rangeOperator,\n version: combineVersion(rangeMajor, rangeMinor, rangePatch, rangePreRelease),\n major: rangeMajor,\n minor: rangeMinor,\n patch: rangePatch,\n preRelease: rangePreRelease == null ? void 0 : rangePreRelease.split('.')\n };\n if (!compare(rangeAtom, versionAtom)) {\n return false; // early return\n }\n }\n return true;\n}\n\nfunction formatShare(shareArgs, from, name, shareStrategy) {\n let get;\n if ('get' in shareArgs) {\n // eslint-disable-next-line prefer-destructuring\n get = shareArgs.get;\n } else if ('lib' in shareArgs) {\n get = ()=>Promise.resolve(shareArgs.lib);\n } else {\n get = ()=>Promise.resolve(()=>{\n throw new Error(`Can not get shared '${name}'!`);\n });\n }\n if (shareArgs.strategy) {\n warn(`\"shared.strategy is deprecated, please set in initOptions.shareStrategy instead!\"`);\n }\n var _shareArgs_version, _shareArgs_scope, _shareArgs_strategy;\n return polyfills._extends({\n deps: [],\n useIn: [],\n from,\n loading: null\n }, shareArgs, {\n shareConfig: polyfills._extends({\n requiredVersion: `^${shareArgs.version}`,\n singleton: false,\n eager: false,\n strictVersion: false\n }, shareArgs.shareConfig),\n get,\n loaded: (shareArgs == null ? void 0 : shareArgs.loaded) || 'lib' in shareArgs ? true : undefined,\n version: (_shareArgs_version = shareArgs.version) != null ? _shareArgs_version : '0',\n scope: Array.isArray(shareArgs.scope) ? shareArgs.scope : [\n (_shareArgs_scope = shareArgs.scope) != null ? _shareArgs_scope : 'default'\n ],\n strategy: ((_shareArgs_strategy = shareArgs.strategy) != null ? _shareArgs_strategy : shareStrategy) || 'version-first'\n });\n}\nfunction formatShareConfigs(globalOptions, userOptions) {\n const shareArgs = userOptions.shared || {};\n const from = userOptions.name;\n const shareInfos = Object.keys(shareArgs).reduce((res, pkgName)=>{\n const arrayShareArgs = arrayOptions(shareArgs[pkgName]);\n res[pkgName] = res[pkgName] || [];\n arrayShareArgs.forEach((shareConfig)=>{\n res[pkgName].push(formatShare(shareConfig, from, pkgName, userOptions.shareStrategy));\n });\n return res;\n }, {});\n const shared = polyfills._extends({}, globalOptions.shared);\n Object.keys(shareInfos).forEach((shareKey)=>{\n if (!shared[shareKey]) {\n shared[shareKey] = shareInfos[shareKey];\n } else {\n shareInfos[shareKey].forEach((newUserSharedOptions)=>{\n const isSameVersion = shared[shareKey].find((sharedVal)=>sharedVal.version === newUserSharedOptions.version);\n if (!isSameVersion) {\n shared[shareKey].push(newUserSharedOptions);\n }\n });\n }\n });\n return {\n shared,\n shareInfos\n };\n}\nfunction versionLt(a, b) {\n const transformInvalidVersion = (version)=>{\n const isNumberVersion = !Number.isNaN(Number(version));\n if (isNumberVersion) {\n const splitArr = version.split('.');\n let validVersion = version;\n for(let i = 0; i < 3 - splitArr.length; i++){\n validVersion += '.0';\n }\n return validVersion;\n }\n return version;\n };\n if (satisfy(transformInvalidVersion(a), `<=${transformInvalidVersion(b)}`)) {\n return true;\n } else {\n return false;\n }\n}\nconst findVersion = (shareVersionMap, cb)=>{\n const callback = cb || function(prev, cur) {\n return versionLt(prev, cur);\n };\n return Object.keys(shareVersionMap).reduce((prev, cur)=>{\n if (!prev) {\n return cur;\n }\n if (callback(prev, cur)) {\n return cur;\n }\n // default version is '0' https://github.com/webpack/webpack/blob/main/lib/sharing/ProvideSharedModule.js#L136\n if (prev === '0') {\n return cur;\n }\n return prev;\n }, 0);\n};\nconst isLoaded = (shared)=>{\n return Boolean(shared.loaded) || typeof shared.lib === 'function';\n};\nconst isLoading = (shared)=>{\n return Boolean(shared.loading);\n};\nfunction findSingletonVersionOrderByVersion(shareScopeMap, scope, pkgName) {\n const versions = shareScopeMap[scope][pkgName];\n const callback = function(prev, cur) {\n return !isLoaded(versions[prev]) && versionLt(prev, cur);\n };\n return findVersion(shareScopeMap[scope][pkgName], callback);\n}\nfunction findSingletonVersionOrderByLoaded(shareScopeMap, scope, pkgName) {\n const versions = shareScopeMap[scope][pkgName];\n const callback = function(prev, cur) {\n const isLoadingOrLoaded = (shared)=>{\n return isLoaded(shared) || isLoading(shared);\n };\n if (isLoadingOrLoaded(versions[cur])) {\n if (isLoadingOrLoaded(versions[prev])) {\n return Boolean(versionLt(prev, cur));\n } else {\n return true;\n }\n }\n if (isLoadingOrLoaded(versions[prev])) {\n return false;\n }\n return versionLt(prev, cur);\n };\n return findVersion(shareScopeMap[scope][pkgName], callback);\n}\nfunction getFindShareFunction(strategy) {\n if (strategy === 'loaded-first') {\n return findSingletonVersionOrderByLoaded;\n }\n return findSingletonVersionOrderByVersion;\n}\nfunction getRegisteredShare(localShareScopeMap, pkgName, shareInfo, resolveShare) {\n if (!localShareScopeMap) {\n return;\n }\n const { shareConfig, scope = DEFAULT_SCOPE, strategy } = shareInfo;\n const scopes = Array.isArray(scope) ? scope : [\n scope\n ];\n for (const sc of scopes){\n if (shareConfig && localShareScopeMap[sc] && localShareScopeMap[sc][pkgName]) {\n const { requiredVersion } = shareConfig;\n const findShareFunction = getFindShareFunction(strategy);\n const maxOrSingletonVersion = findShareFunction(localShareScopeMap, sc, pkgName);\n //@ts-ignore\n const defaultResolver = ()=>{\n if (shareConfig.singleton) {\n if (typeof requiredVersion === 'string' && !satisfy(maxOrSingletonVersion, requiredVersion)) {\n const msg = `Version ${maxOrSingletonVersion} from ${maxOrSingletonVersion && localShareScopeMap[sc][pkgName][maxOrSingletonVersion].from} of shared singleton module ${pkgName} does not satisfy the requirement of ${shareInfo.from} which needs ${requiredVersion})`;\n if (shareConfig.strictVersion) {\n error(msg);\n } else {\n warn(msg);\n }\n }\n return localShareScopeMap[sc][pkgName][maxOrSingletonVersion];\n } else {\n if (requiredVersion === false || requiredVersion === '*') {\n return localShareScopeMap[sc][pkgName][maxOrSingletonVersion];\n }\n if (satisfy(maxOrSingletonVersion, requiredVersion)) {\n return localShareScopeMap[sc][pkgName][maxOrSingletonVersion];\n }\n for (const [versionKey, versionValue] of Object.entries(localShareScopeMap[sc][pkgName])){\n if (satisfy(versionKey, requiredVersion)) {\n return versionValue;\n }\n }\n }\n };\n const params = {\n shareScopeMap: localShareScopeMap,\n scope: sc,\n pkgName,\n version: maxOrSingletonVersion,\n GlobalFederation: Global.__FEDERATION__,\n resolver: defaultResolver\n };\n const resolveShared = resolveShare.emit(params) || params;\n return resolveShared.resolver();\n }\n }\n}\nfunction getGlobalShareScope() {\n return Global.__FEDERATION__.__SHARE__;\n}\nfunction getTargetSharedOptions(options) {\n const { pkgName, extraOptions, shareInfos } = options;\n const defaultResolver = (sharedOptions)=>{\n if (!sharedOptions) {\n return undefined;\n }\n const shareVersionMap = {};\n sharedOptions.forEach((shared)=>{\n shareVersionMap[shared.version] = shared;\n });\n const callback = function(prev, cur) {\n return !isLoaded(shareVersionMap[prev]) && versionLt(prev, cur);\n };\n const maxVersion = findVersion(shareVersionMap, callback);\n return shareVersionMap[maxVersion];\n };\n var _extraOptions_resolver;\n const resolver = (_extraOptions_resolver = extraOptions == null ? void 0 : extraOptions.resolver) != null ? _extraOptions_resolver : defaultResolver;\n return Object.assign({}, resolver(shareInfos[pkgName]), extraOptions == null ? void 0 : extraOptions.customShareInfo);\n}\n\nconst ShareUtils = {\n getRegisteredShare,\n getGlobalShareScope\n};\nconst GlobalUtils = {\n Global,\n nativeGlobal,\n resetFederationGlobalInfo,\n setGlobalFederationInstance,\n getGlobalFederationConstructor,\n setGlobalFederationConstructor,\n getInfoWithoutType,\n getGlobalSnapshot,\n getTargetSnapshotInfoByModuleInfo,\n getGlobalSnapshotInfoByModuleInfo,\n setGlobalSnapshotInfoByModuleInfo,\n addGlobalSnapshot,\n getRemoteEntryExports,\n registerGlobalPlugins,\n getGlobalHostPlugins,\n getPreloaded,\n setPreloaded\n};\nvar helpers = {\n global: GlobalUtils,\n share: ShareUtils\n};\n\nfunction getBuilderId() {\n //@ts-ignore\n return typeof FEDERATION_BUILD_IDENTIFIER !== 'undefined' ? FEDERATION_BUILD_IDENTIFIER : '';\n}\n\n// Function to match a remote with its name and expose\n// id: pkgName(@federation/app1) + expose(button) = @federation/app1/button\n// id: alias(app1) + expose(button) = app1/button\n// id: alias(app1/utils) + expose(loadash/sort) = app1/utils/loadash/sort\nfunction matchRemoteWithNameAndExpose(remotes, id) {\n for (const remote of remotes){\n // match pkgName\n const isNameMatched = id.startsWith(remote.name);\n let expose = id.replace(remote.name, '');\n if (isNameMatched) {\n if (expose.startsWith('/')) {\n const pkgNameOrAlias = remote.name;\n expose = `.${expose}`;\n return {\n pkgNameOrAlias,\n expose,\n remote\n };\n } else if (expose === '') {\n return {\n pkgNameOrAlias: remote.name,\n expose: '.',\n remote\n };\n }\n }\n // match alias\n const isAliasMatched = remote.alias && id.startsWith(remote.alias);\n let exposeWithAlias = remote.alias && id.replace(remote.alias, '');\n if (remote.alias && isAliasMatched) {\n if (exposeWithAlias && exposeWithAlias.startsWith('/')) {\n const pkgNameOrAlias = remote.alias;\n exposeWithAlias = `.${exposeWithAlias}`;\n return {\n pkgNameOrAlias,\n expose: exposeWithAlias,\n remote\n };\n } else if (exposeWithAlias === '') {\n return {\n pkgNameOrAlias: remote.alias,\n expose: '.',\n remote\n };\n }\n }\n }\n return;\n}\n// Function to match a remote with its name or alias\nfunction matchRemote(remotes, nameOrAlias) {\n for (const remote of remotes){\n const isNameMatched = nameOrAlias === remote.name;\n if (isNameMatched) {\n return remote;\n }\n const isAliasMatched = remote.alias && nameOrAlias === remote.alias;\n if (isAliasMatched) {\n return remote;\n }\n }\n return;\n}\n\nfunction registerPlugins(plugins, hookInstances) {\n const globalPlugins = getGlobalHostPlugins();\n // Incorporate global plugins\n if (globalPlugins.length > 0) {\n globalPlugins.forEach((plugin)=>{\n if (plugins == null ? void 0 : plugins.find((item)=>item.name !== plugin.name)) {\n plugins.push(plugin);\n }\n });\n }\n if (plugins && plugins.length > 0) {\n plugins.forEach((plugin)=>{\n hookInstances.forEach((hookInstance)=>{\n hookInstance.applyPlugin(plugin);\n });\n });\n }\n return plugins;\n}\n\nasync function loadEsmEntry({ entry, remoteEntryExports }) {\n return new Promise((resolve, reject)=>{\n try {\n if (!remoteEntryExports) {\n if (typeof FEDERATION_ALLOW_NEW_FUNCTION !== 'undefined') {\n new Function('callbacks', `import(\"${entry}\").then(callbacks[0]).catch(callbacks[1])`)([\n resolve,\n reject\n ]);\n } else {\n import(/* webpackIgnore: true */ /* @vite-ignore */ entry).then(resolve).catch(reject);\n }\n } else {\n resolve(remoteEntryExports);\n }\n } catch (e) {\n reject(e);\n }\n });\n}\nasync function loadSystemJsEntry({ entry, remoteEntryExports }) {\n return new Promise((resolve, reject)=>{\n try {\n if (!remoteEntryExports) {\n //@ts-ignore\n if (typeof __system_context__ === 'undefined') {\n //@ts-ignore\n System.import(entry).then(resolve).catch(reject);\n } else {\n new Function('callbacks', `System.import(\"${entry}\").then(callbacks[0]).catch(callbacks[1])`)([\n resolve,\n reject\n ]);\n }\n } else {\n resolve(remoteEntryExports);\n }\n } catch (e) {\n reject(e);\n }\n });\n}\nasync function loadEntryScript({ name, globalName, entry, loaderHook }) {\n const { entryExports: remoteEntryExports } = getRemoteEntryExports(name, globalName);\n if (remoteEntryExports) {\n return remoteEntryExports;\n }\n return sdk.loadScript(entry, {\n attrs: {},\n createScriptHook: (url, attrs)=>{\n const res = loaderHook.lifecycle.createScript.emit({\n url,\n attrs\n });\n if (!res) return;\n if (res instanceof HTMLScriptElement) {\n return res;\n }\n if ('script' in res || 'timeout' in res) {\n return res;\n }\n return;\n }\n }).then(()=>{\n const { remoteEntryKey, entryExports } = getRemoteEntryExports(name, globalName);\n assert(entryExports, errorCodes.getShortErrorMsg(errorCodes.RUNTIME_001, errorCodes.runtimeDescMap, {\n remoteName: name,\n remoteEntryUrl: entry,\n remoteEntryKey\n }));\n return entryExports;\n }).catch((e)=>{\n assert(undefined, errorCodes.getShortErrorMsg(errorCodes.RUNTIME_008, errorCodes.runtimeDescMap, {\n remoteName: name,\n resourceUrl: entry\n }));\n throw e;\n });\n}\nasync function loadEntryDom({ remoteInfo, remoteEntryExports, loaderHook }) {\n const { entry, entryGlobalName: globalName, name, type } = remoteInfo;\n switch(type){\n case 'esm':\n case 'module':\n return loadEsmEntry({\n entry,\n remoteEntryExports\n });\n case 'system':\n return loadSystemJsEntry({\n entry,\n remoteEntryExports\n });\n default:\n return loadEntryScript({\n entry,\n globalName,\n name,\n loaderHook\n });\n }\n}\nasync function loadEntryNode({ remoteInfo, loaderHook }) {\n const { entry, entryGlobalName: globalName, name, type } = remoteInfo;\n const { entryExports: remoteEntryExports } = getRemoteEntryExports(name, globalName);\n if (remoteEntryExports) {\n return remoteEntryExports;\n }\n return sdk.loadScriptNode(entry, {\n attrs: {\n name,\n globalName,\n type\n },\n loaderHook: {\n createScriptHook: (url, attrs = {})=>{\n const res = loaderHook.lifecycle.createScript.emit({\n url,\n attrs\n });\n if (!res) return;\n if ('url' in res) {\n return res;\n }\n return;\n }\n }\n }).then(()=>{\n const { remoteEntryKey, entryExports } = getRemoteEntryExports(name, globalName);\n assert(entryExports, errorCodes.getShortErrorMsg(errorCodes.RUNTIME_001, errorCodes.runtimeDescMap, {\n remoteName: name,\n remoteEntryUrl: entry,\n remoteEntryKey\n }));\n return entryExports;\n }).catch((e)=>{\n throw e;\n });\n}\nfunction getRemoteEntryUniqueKey(remoteInfo) {\n const { entry, name } = remoteInfo;\n return sdk.composeKeyWithSeparator(name, entry);\n}\nasync function getRemoteEntry({ origin, remoteEntryExports, remoteInfo }) {\n const uniqueKey = getRemoteEntryUniqueKey(remoteInfo);\n if (remoteEntryExports) {\n return remoteEntryExports;\n }\n if (!globalLoading[uniqueKey]) {\n const loadEntryHook = origin.remoteHandler.hooks.lifecycle.loadEntry;\n const loaderHook = origin.loaderHook;\n globalLoading[uniqueKey] = loadEntryHook.emit({\n loaderHook,\n remoteInfo,\n remoteEntryExports\n }).then((res)=>{\n if (res) {\n return res;\n }\n return sdk.isBrowserEnv() ? loadEntryDom({\n remoteInfo,\n remoteEntryExports,\n loaderHook\n }) : loadEntryNode({\n remoteInfo,\n loaderHook\n });\n });\n }\n return globalLoading[uniqueKey];\n}\nfunction getRemoteInfo(remote) {\n return polyfills._extends({}, remote, {\n entry: 'entry' in remote ? remote.entry : '',\n type: remote.type || DEFAULT_REMOTE_TYPE,\n entryGlobalName: remote.entryGlobalName || remote.name,\n shareScope: remote.shareScope || DEFAULT_SCOPE\n });\n}\n\nlet Module = class Module {\n async getEntry() {\n if (this.remoteEntryExports) {\n return this.remoteEntryExports;\n }\n let remoteEntryExports;\n try {\n remoteEntryExports = await getRemoteEntry({\n origin: this.host,\n remoteInfo: this.remoteInfo,\n remoteEntryExports: this.remoteEntryExports\n });\n } catch (err) {\n const uniqueKey = getRemoteEntryUniqueKey(this.remoteInfo);\n remoteEntryExports = await this.host.loaderHook.lifecycle.loadEntryError.emit({\n getRemoteEntry,\n origin: this.host,\n remoteInfo: this.remoteInfo,\n remoteEntryExports: this.remoteEntryExports,\n globalLoading,\n uniqueKey\n });\n }\n assert(remoteEntryExports, `remoteEntryExports is undefined \\n ${sdk.safeToString(this.remoteInfo)}`);\n this.remoteEntryExports = remoteEntryExports;\n return this.remoteEntryExports;\n }\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n async get(id, expose, options, remoteSnapshot) {\n const { loadFactory = true } = options || {\n loadFactory: true\n };\n // Get remoteEntry.js\n const remoteEntryExports = await this.getEntry();\n if (!this.inited) {\n const localShareScopeMap = this.host.shareScopeMap;\n const remoteShareScope = this.remoteInfo.shareScope || 'default';\n if (!localShareScopeMap[remoteShareScope]) {\n localShareScopeMap[remoteShareScope] = {};\n }\n const shareScope = localShareScopeMap[remoteShareScope];\n const initScope = [];\n const remoteEntryInitOptions = {\n version: this.remoteInfo.version || ''\n };\n // Help to find host instance\n Object.defineProperty(remoteEntryInitOptions, 'shareScopeMap', {\n value: localShareScopeMap,\n // remoteEntryInitOptions will be traversed and assigned during container init, ,so this attribute is not allowed to be traversed\n enumerable: false\n });\n const initContainerOptions = await this.host.hooks.lifecycle.beforeInitContainer.emit({\n shareScope,\n // @ts-ignore shareScopeMap will be set by Object.defineProperty\n remoteEntryInitOptions,\n initScope,\n remoteInfo: this.remoteInfo,\n origin: this.host\n });\n if (typeof (remoteEntryExports == null ? void 0 : remoteEntryExports.init) === 'undefined') {\n error(errorCodes.getShortErrorMsg(errorCodes.RUNTIME_002, errorCodes.runtimeDescMap, {\n remoteName: name,\n remoteEntryUrl: this.remoteInfo.entry,\n remoteEntryKey: this.remoteInfo.entryGlobalName\n }));\n }\n await remoteEntryExports.init(initContainerOptions.shareScope, initContainerOptions.initScope, initContainerOptions.remoteEntryInitOptions);\n await this.host.hooks.lifecycle.initContainer.emit(polyfills._extends({}, initContainerOptions, {\n id,\n remoteSnapshot,\n remoteEntryExports\n }));\n }\n this.lib = remoteEntryExports;\n this.inited = true;\n let moduleFactory;\n moduleFactory = await this.host.loaderHook.lifecycle.getModuleFactory.emit({\n remoteEntryExports,\n expose,\n moduleInfo: this.remoteInfo\n });\n // get exposeGetter\n if (!moduleFactory) {\n moduleFactory = await remoteEntryExports.get(expose);\n }\n assert(moduleFactory, `${getFMId(this.remoteInfo)} remote don't export ${expose}.`);\n // keep symbol for module name always one format\n const symbolName = processModuleAlias(this.remoteInfo.name, expose);\n const wrapModuleFactory = this.wraperFactory(moduleFactory, symbolName);\n if (!loadFactory) {\n return wrapModuleFactory;\n }\n const exposeContent = await wrapModuleFactory();\n return exposeContent;\n }\n wraperFactory(moduleFactory, id) {\n function defineModuleId(res, id) {\n if (res && typeof res === 'object' && Object.isExtensible(res) && !Object.getOwnPropertyDescriptor(res, Symbol.for('mf_module_id'))) {\n Object.defineProperty(res, Symbol.for('mf_module_id'), {\n value: id,\n enumerable: false\n });\n }\n }\n if (moduleFactory instanceof Promise) {\n return async ()=>{\n const res = await moduleFactory();\n // This parameter is used for bridge debugging\n defineModuleId(res, id);\n return res;\n };\n } else {\n return ()=>{\n const res = moduleFactory();\n // This parameter is used for bridge debugging\n defineModuleId(res, id);\n return res;\n };\n }\n }\n constructor({ remoteInfo, host }){\n this.inited = false;\n this.lib = undefined;\n this.remoteInfo = remoteInfo;\n this.host = host;\n }\n};\n\nclass SyncHook {\n on(fn) {\n if (typeof fn === 'function') {\n this.listeners.add(fn);\n }\n }\n once(fn) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n this.on(function wrapper(...args) {\n self.remove(wrapper);\n // eslint-disable-next-line prefer-spread\n return fn.apply(null, args);\n });\n }\n emit(...data) {\n let result;\n if (this.listeners.size > 0) {\n // eslint-disable-next-line prefer-spread\n this.listeners.forEach((fn)=>{\n result = fn(...data);\n });\n }\n return result;\n }\n remove(fn) {\n this.listeners.delete(fn);\n }\n removeAll() {\n this.listeners.clear();\n }\n constructor(type){\n this.type = '';\n this.listeners = new Set();\n if (type) {\n this.type = type;\n }\n }\n}\n\nclass AsyncHook extends SyncHook {\n emit(...data) {\n let result;\n const ls = Array.from(this.listeners);\n if (ls.length > 0) {\n let i = 0;\n const call = (prev)=>{\n if (prev === false) {\n return false; // Abort process\n } else if (i < ls.length) {\n return Promise.resolve(ls[i++].apply(null, data)).then(call);\n } else {\n return prev;\n }\n };\n result = call();\n }\n return Promise.resolve(result);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction checkReturnData(originalData, returnedData) {\n if (!isObject(returnedData)) {\n return false;\n }\n if (originalData !== returnedData) {\n // eslint-disable-next-line no-restricted-syntax\n for(const key in originalData){\n if (!(key in returnedData)) {\n return false;\n }\n }\n }\n return true;\n}\nclass SyncWaterfallHook extends SyncHook {\n emit(data) {\n if (!isObject(data)) {\n error(`The data for the \"${this.type}\" hook should be an object.`);\n }\n for (const fn of this.listeners){\n try {\n const tempData = fn(data);\n if (checkReturnData(data, tempData)) {\n data = tempData;\n } else {\n this.onerror(`A plugin returned an unacceptable value for the \"${this.type}\" type.`);\n break;\n }\n } catch (e) {\n warn(e);\n this.onerror(e);\n }\n }\n return data;\n }\n constructor(type){\n super(), this.onerror = error;\n this.type = type;\n }\n}\n\nclass AsyncWaterfallHook extends SyncHook {\n emit(data) {\n if (!isObject(data)) {\n error(`The response data for the \"${this.type}\" hook must be an object.`);\n }\n const ls = Array.from(this.listeners);\n if (ls.length > 0) {\n let i = 0;\n const processError = (e)=>{\n warn(e);\n this.onerror(e);\n return data;\n };\n const call = (prevData)=>{\n if (checkReturnData(data, prevData)) {\n data = prevData;\n if (i < ls.length) {\n try {\n return Promise.resolve(ls[i++](data)).then(call, processError);\n } catch (e) {\n return processError(e);\n }\n }\n } else {\n this.onerror(`A plugin returned an incorrect value for the \"${this.type}\" type.`);\n }\n return data;\n };\n return Promise.resolve(call(data));\n }\n return Promise.resolve(data);\n }\n constructor(type){\n super(), this.onerror = error;\n this.type = type;\n }\n}\n\nclass PluginSystem {\n applyPlugin(plugin) {\n assert(isPlainObject(plugin), 'Plugin configuration is invalid.');\n // The plugin's name is mandatory and must be unique\n const pluginName = plugin.name;\n assert(pluginName, 'A name must be provided by the plugin.');\n if (!this.registerPlugins[pluginName]) {\n this.registerPlugins[pluginName] = plugin;\n Object.keys(this.lifecycle).forEach((key)=>{\n const pluginLife = plugin[key];\n if (pluginLife) {\n this.lifecycle[key].on(pluginLife);\n }\n });\n }\n }\n removePlugin(pluginName) {\n assert(pluginName, 'A name is required.');\n const plugin = this.registerPlugins[pluginName];\n assert(plugin, `The plugin \"${pluginName}\" is not registered.`);\n Object.keys(plugin).forEach((key)=>{\n if (key !== 'name') {\n this.lifecycle[key].remove(plugin[key]);\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-shadow\n inherit({ lifecycle, registerPlugins }) {\n Object.keys(lifecycle).forEach((hookName)=>{\n assert(!this.lifecycle[hookName], `The hook \"${hookName}\" has a conflict and cannot be inherited.`);\n this.lifecycle[hookName] = lifecycle[hookName];\n });\n Object.keys(registerPlugins).forEach((pluginName)=>{\n assert(!this.registerPlugins[pluginName], `The plugin \"${pluginName}\" has a conflict and cannot be inherited.`);\n this.applyPlugin(registerPlugins[pluginName]);\n });\n }\n constructor(lifecycle){\n this.registerPlugins = {};\n this.lifecycle = lifecycle;\n this.lifecycleKeys = Object.keys(lifecycle);\n }\n}\n\nfunction defaultPreloadArgs(preloadConfig) {\n return polyfills._extends({\n resourceCategory: 'sync',\n share: true,\n depsRemote: true,\n prefetchInterface: false\n }, preloadConfig);\n}\nfunction formatPreloadArgs(remotes, preloadArgs) {\n return preloadArgs.map((args)=>{\n const remoteInfo = matchRemote(remotes, args.nameOrAlias);\n assert(remoteInfo, `Unable to preload ${args.nameOrAlias} as it is not included in ${!remoteInfo && sdk.safeToString({\n remoteInfo,\n remotes\n })}`);\n return {\n remote: remoteInfo,\n preloadConfig: defaultPreloadArgs(args)\n };\n });\n}\nfunction normalizePreloadExposes(exposes) {\n if (!exposes) {\n return [];\n }\n return exposes.map((expose)=>{\n if (expose === '.') {\n return expose;\n }\n if (expose.startsWith('./')) {\n return expose.replace('./', '');\n }\n return expose;\n });\n}\nfunction preloadAssets(remoteInfo, host, assets, // It is used to distinguish preload from load remote parallel loading\nuseLinkPreload = true) {\n const { cssAssets, jsAssetsWithoutEntry, entryAssets } = assets;\n if (host.options.inBrowser) {\n entryAssets.forEach((asset)=>{\n const { moduleInfo } = asset;\n const module = host.moduleCache.get(remoteInfo.name);\n if (module) {\n getRemoteEntry({\n origin: host,\n remoteInfo: moduleInfo,\n remoteEntryExports: module.remoteEntryExports\n });\n } else {\n getRemoteEntry({\n origin: host,\n remoteInfo: moduleInfo,\n remoteEntryExports: undefined\n });\n }\n });\n if (useLinkPreload) {\n const defaultAttrs = {\n rel: 'preload',\n as: 'style'\n };\n cssAssets.forEach((cssUrl)=>{\n const { link: cssEl, needAttach } = sdk.createLink({\n url: cssUrl,\n cb: ()=>{\n // noop\n },\n attrs: defaultAttrs,\n createLinkHook: (url, attrs)=>{\n const res = host.loaderHook.lifecycle.createLink.emit({\n url,\n attrs\n });\n if (res instanceof HTMLLinkElement) {\n return res;\n }\n return;\n }\n });\n needAttach && document.head.appendChild(cssEl);\n });\n } else {\n const defaultAttrs = {\n rel: 'stylesheet',\n type: 'text/css'\n };\n cssAssets.forEach((cssUrl)=>{\n const { link: cssEl, needAttach } = sdk.createLink({\n url: cssUrl,\n cb: ()=>{\n // noop\n },\n attrs: defaultAttrs,\n createLinkHook: (url, attrs)=>{\n const res = host.loaderHook.lifecycle.createLink.emit({\n url,\n attrs\n });\n if (res instanceof HTMLLinkElement) {\n return res;\n }\n return;\n },\n needDeleteLink: false\n });\n needAttach && document.head.appendChild(cssEl);\n });\n }\n if (useLinkPreload) {\n const defaultAttrs = {\n rel: 'preload',\n as: 'script'\n };\n jsAssetsWithoutEntry.forEach((jsUrl)=>{\n const { link: linkEl, needAttach } = sdk.createLink({\n url: jsUrl,\n cb: ()=>{\n // noop\n },\n attrs: defaultAttrs,\n createLinkHook: (url, attrs)=>{\n const res = host.loaderHook.lifecycle.createLink.emit({\n url,\n attrs\n });\n if (res instanceof HTMLLinkElement) {\n return res;\n }\n return;\n }\n });\n needAttach && document.head.appendChild(linkEl);\n });\n } else {\n const defaultAttrs = {\n fetchpriority: 'high',\n type: (remoteInfo == null ? void 0 : remoteInfo.type) === 'module' ? 'module' : 'text/javascript'\n };\n jsAssetsWithoutEntry.forEach((jsUrl)=>{\n const { script: scriptEl, needAttach } = sdk.createScript({\n url: jsUrl,\n cb: ()=>{\n // noop\n },\n attrs: defaultAttrs,\n createScriptHook: (url, attrs)=>{\n const res = host.loaderHook.lifecycle.createScript.emit({\n url,\n attrs\n });\n if (res instanceof HTMLScriptElement) {\n return res;\n }\n return;\n },\n needDeleteScript: true\n });\n needAttach && document.head.appendChild(scriptEl);\n });\n }\n }\n}\n\nfunction assignRemoteInfo(remoteInfo, remoteSnapshot) {\n const remoteEntryInfo = getRemoteEntryInfoFromSnapshot(remoteSnapshot);\n if (!remoteEntryInfo.url) {\n error(`The attribute remoteEntry of ${remoteInfo.name} must not be undefined.`);\n }\n let entryUrl = sdk.getResourceUrl(remoteSnapshot, remoteEntryInfo.url);\n if (!sdk.isBrowserEnv() && !entryUrl.startsWith('http')) {\n entryUrl = `https:${entryUrl}`;\n }\n remoteInfo.type = remoteEntryInfo.type;\n remoteInfo.entryGlobalName = remoteEntryInfo.globalName;\n remoteInfo.entry = entryUrl;\n remoteInfo.version = remoteSnapshot.version;\n remoteInfo.buildVersion = remoteSnapshot.buildVersion;\n}\nfunction snapshotPlugin() {\n return {\n name: 'snapshot-plugin',\n async afterResolve (args) {\n const { remote, pkgNameOrAlias, expose, origin, remoteInfo } = args;\n if (!isRemoteInfoWithEntry(remote) || !isPureRemoteEntry(remote)) {\n const { remoteSnapshot, globalSnapshot } = await origin.snapshotHandler.loadRemoteSnapshotInfo(remote);\n assignRemoteInfo(remoteInfo, remoteSnapshot);\n // preloading assets\n const preloadOptions = {\n remote,\n preloadConfig: {\n nameOrAlias: pkgNameOrAlias,\n exposes: [\n expose\n ],\n resourceCategory: 'sync',\n share: false,\n depsRemote: false\n }\n };\n const assets = await origin.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({\n origin,\n preloadOptions,\n remoteInfo,\n remote,\n remoteSnapshot,\n globalSnapshot\n });\n if (assets) {\n preloadAssets(remoteInfo, origin, assets, false);\n }\n return polyfills._extends({}, args, {\n remoteSnapshot\n });\n }\n return args;\n }\n };\n}\n\n// name\n// name:version\nfunction splitId(id) {\n const splitInfo = id.split(':');\n if (splitInfo.length === 1) {\n return {\n name: splitInfo[0],\n version: undefined\n };\n } else if (splitInfo.length === 2) {\n return {\n name: splitInfo[0],\n version: splitInfo[1]\n };\n } else {\n return {\n name: splitInfo[1],\n version: splitInfo[2]\n };\n }\n}\n// Traverse all nodes in moduleInfo and traverse the entire snapshot\nfunction traverseModuleInfo(globalSnapshot, remoteInfo, traverse, isRoot, memo = {}, remoteSnapshot) {\n const id = getFMId(remoteInfo);\n const { value: snapshotValue } = getInfoWithoutType(globalSnapshot, id);\n const effectiveRemoteSnapshot = remoteSnapshot || snapshotValue;\n if (effectiveRemoteSnapshot && !sdk.isManifestProvider(effectiveRemoteSnapshot)) {\n traverse(effectiveRemoteSnapshot, remoteInfo, isRoot);\n if (effectiveRemoteSnapshot.remotesInfo) {\n const remoteKeys = Object.keys(effectiveRemoteSnapshot.remotesInfo);\n for (const key of remoteKeys){\n if (memo[key]) {\n continue;\n }\n memo[key] = true;\n const subRemoteInfo = splitId(key);\n const remoteValue = effectiveRemoteSnapshot.remotesInfo[key];\n traverseModuleInfo(globalSnapshot, {\n name: subRemoteInfo.name,\n version: remoteValue.matchedVersion\n }, traverse, false, memo, undefined);\n }\n }\n }\n}\n// eslint-disable-next-line max-lines-per-function\nfunction generatePreloadAssets(origin, preloadOptions, remote, globalSnapshot, remoteSnapshot) {\n const cssAssets = [];\n const jsAssets = [];\n const entryAssets = [];\n const loadedSharedJsAssets = new Set();\n const loadedSharedCssAssets = new Set();\n const { options } = origin;\n const { preloadConfig: rootPreloadConfig } = preloadOptions;\n const { depsRemote } = rootPreloadConfig;\n const memo = {};\n traverseModuleInfo(globalSnapshot, remote, (moduleInfoSnapshot, remoteInfo, isRoot)=>{\n let preloadConfig;\n if (isRoot) {\n preloadConfig = rootPreloadConfig;\n } else {\n if (Array.isArray(depsRemote)) {\n // eslint-disable-next-line array-callback-return\n const findPreloadConfig = depsRemote.find((remoteConfig)=>{\n if (remoteConfig.nameOrAlias === remoteInfo.name || remoteConfig.nameOrAlias === remoteInfo.alias) {\n return true;\n }\n return false;\n });\n if (!findPreloadConfig) {\n return;\n }\n preloadConfig = defaultPreloadArgs(findPreloadConfig);\n } else if (depsRemote === true) {\n preloadConfig = rootPreloadConfig;\n } else {\n return;\n }\n }\n const remoteEntryUrl = sdk.getResourceUrl(moduleInfoSnapshot, getRemoteEntryInfoFromSnapshot(moduleInfoSnapshot).url);\n if (remoteEntryUrl) {\n entryAssets.push({\n name: remoteInfo.name,\n moduleInfo: {\n name: remoteInfo.name,\n entry: remoteEntryUrl,\n type: 'remoteEntryType' in moduleInfoSnapshot ? moduleInfoSnapshot.remoteEntryType : 'global',\n entryGlobalName: 'globalName' in moduleInfoSnapshot ? moduleInfoSnapshot.globalName : remoteInfo.name,\n shareScope: '',\n version: 'version' in moduleInfoSnapshot ? moduleInfoSnapshot.version : undefined\n },\n url: remoteEntryUrl\n });\n }\n let moduleAssetsInfo = 'modules' in moduleInfoSnapshot ? moduleInfoSnapshot.modules : [];\n const normalizedPreloadExposes = normalizePreloadExposes(preloadConfig.exposes);\n if (normalizedPreloadExposes.length && 'modules' in moduleInfoSnapshot) {\n var _moduleInfoSnapshot_modules;\n moduleAssetsInfo = moduleInfoSnapshot == null ? void 0 : (_moduleInfoSnapshot_modules = moduleInfoSnapshot.modules) == null ? void 0 : _moduleInfoSnapshot_modules.reduce((assets, moduleAssetInfo)=>{\n if ((normalizedPreloadExposes == null ? void 0 : normalizedPreloadExposes.indexOf(moduleAssetInfo.moduleName)) !== -1) {\n assets.push(moduleAssetInfo);\n }\n return assets;\n }, []);\n }\n function handleAssets(assets) {\n const assetsRes = assets.map((asset)=>sdk.getResourceUrl(moduleInfoSnapshot, asset));\n if (preloadConfig.filter) {\n return assetsRes.filter(preloadConfig.filter);\n }\n return assetsRes;\n }\n if (moduleAssetsInfo) {\n const assetsLength = moduleAssetsInfo.length;\n for(let index = 0; index < assetsLength; index++){\n const assetsInfo = moduleAssetsInfo[index];\n const exposeFullPath = `${remoteInfo.name}/${assetsInfo.moduleName}`;\n origin.remoteHandler.hooks.lifecycle.handlePreloadModule.emit({\n id: assetsInfo.moduleName === '.' ? remoteInfo.name : exposeFullPath,\n name: remoteInfo.name,\n remoteSnapshot: moduleInfoSnapshot,\n preloadConfig,\n remote: remoteInfo,\n origin\n });\n const preloaded = getPreloaded(exposeFullPath);\n if (preloaded) {\n continue;\n }\n if (preloadConfig.resourceCategory === 'all') {\n cssAssets.push(...handleAssets(assetsInfo.assets.css.async));\n cssAssets.push(...handleAssets(assetsInfo.assets.css.sync));\n jsAssets.push(...handleAssets(assetsInfo.assets.js.async));\n jsAssets.push(...handleAssets(assetsInfo.assets.js.sync));\n // eslint-disable-next-line no-constant-condition\n } else if (preloadConfig.resourceCategory = 'sync') {\n cssAssets.push(...handleAssets(assetsInfo.assets.css.sync));\n jsAssets.push(...handleAssets(assetsInfo.assets.js.sync));\n }\n setPreloaded(exposeFullPath);\n }\n }\n }, true, memo, remoteSnapshot);\n if (remoteSnapshot.shared) {\n const collectSharedAssets = (shareInfo, snapshotShared)=>{\n const registeredShared = getRegisteredShare(origin.shareScopeMap, snapshotShared.sharedName, shareInfo, origin.sharedHandler.hooks.lifecycle.resolveShare);\n // If the global share does not exist, or the lib function does not exist, it means that the shared has not been loaded yet and can be preloaded.\n if (registeredShared && typeof registeredShared.lib === 'function') {\n snapshotShared.assets.js.sync.forEach((asset)=>{\n loadedSharedJsAssets.add(asset);\n });\n snapshotShared.assets.css.sync.forEach((asset)=>{\n loadedSharedCssAssets.add(asset);\n });\n }\n };\n remoteSnapshot.shared.forEach((shared)=>{\n var _options_shared;\n const shareInfos = (_options_shared = options.shared) == null ? void 0 : _options_shared[shared.sharedName];\n if (!shareInfos) {\n return;\n }\n // if no version, preload all shared\n const sharedOptions = shared.version ? shareInfos.find((s)=>s.version === shared.version) : shareInfos;\n if (!sharedOptions) {\n return;\n }\n const arrayShareInfo = arrayOptions(sharedOptions);\n arrayShareInfo.forEach((s)=>{\n collectSharedAssets(s, shared);\n });\n });\n }\n const needPreloadJsAssets = jsAssets.filter((asset)=>!loadedSharedJsAssets.has(asset));\n const needPreloadCssAssets = cssAssets.filter((asset)=>!loadedSharedCssAssets.has(asset));\n return {\n cssAssets: needPreloadCssAssets,\n jsAssetsWithoutEntry: needPreloadJsAssets,\n entryAssets\n };\n}\nconst generatePreloadAssetsPlugin = function() {\n return {\n name: 'generate-preload-assets-plugin',\n async generatePreloadAssets (args) {\n const { origin, preloadOptions, remoteInfo, remote, globalSnapshot, remoteSnapshot } = args;\n if (isRemoteInfoWithEntry(remote) && isPureRemoteEntry(remote)) {\n return {\n cssAssets: [],\n jsAssetsWithoutEntry: [],\n entryAssets: [\n {\n name: remote.name,\n url: remote.entry,\n moduleInfo: {\n name: remoteInfo.name,\n entry: remote.entry,\n type: remoteInfo.type || 'global',\n entryGlobalName: '',\n shareScope: ''\n }\n }\n ]\n };\n }\n assignRemoteInfo(remoteInfo, remoteSnapshot);\n const assets = generatePreloadAssets(origin, preloadOptions, remoteInfo, globalSnapshot, remoteSnapshot);\n return assets;\n }\n };\n};\n\nfunction getGlobalRemoteInfo(moduleInfo, origin) {\n const hostGlobalSnapshot = getGlobalSnapshotInfoByModuleInfo({\n name: origin.options.name,\n version: origin.options.version\n });\n // get remote detail info from global\n const globalRemoteInfo = hostGlobalSnapshot && 'remotesInfo' in hostGlobalSnapshot && hostGlobalSnapshot.remotesInfo && getInfoWithoutType(hostGlobalSnapshot.remotesInfo, moduleInfo.name).value;\n if (globalRemoteInfo && globalRemoteInfo.matchedVersion) {\n return {\n hostGlobalSnapshot,\n globalSnapshot: getGlobalSnapshot(),\n remoteSnapshot: getGlobalSnapshotInfoByModuleInfo({\n name: moduleInfo.name,\n version: globalRemoteInfo.matchedVersion\n })\n };\n }\n return {\n hostGlobalSnapshot: undefined,\n globalSnapshot: getGlobalSnapshot(),\n remoteSnapshot: getGlobalSnapshotInfoByModuleInfo({\n name: moduleInfo.name,\n version: 'version' in moduleInfo ? moduleInfo.version : undefined\n })\n };\n}\nclass SnapshotHandler {\n async loadSnapshot(moduleInfo) {\n const { options } = this.HostInstance;\n const { hostGlobalSnapshot, remoteSnapshot, globalSnapshot } = this.getGlobalRemoteInfo(moduleInfo);\n const { remoteSnapshot: globalRemoteSnapshot, globalSnapshot: globalSnapshotRes } = await this.hooks.lifecycle.loadSnapshot.emit({\n options,\n moduleInfo,\n hostGlobalSnapshot,\n remoteSnapshot,\n globalSnapshot\n });\n return {\n remoteSnapshot: globalRemoteSnapshot,\n globalSnapshot: globalSnapshotRes\n };\n }\n // eslint-disable-next-line max-lines-per-function\n async loadRemoteSnapshotInfo(moduleInfo) {\n const { options } = this.HostInstance;\n await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({\n options,\n moduleInfo\n });\n let hostSnapshot = getGlobalSnapshotInfoByModuleInfo({\n name: this.HostInstance.options.name,\n version: this.HostInstance.options.version\n });\n if (!hostSnapshot) {\n hostSnapshot = {\n version: this.HostInstance.options.version || '',\n remoteEntry: '',\n remotesInfo: {}\n };\n addGlobalSnapshot({\n [this.HostInstance.options.name]: hostSnapshot\n });\n }\n // In dynamic loadRemote scenarios, incomplete remotesInfo delivery may occur. In such cases, the remotesInfo in the host needs to be completed in the snapshot at runtime.\n // This ensures the snapshot's integrity and helps the chrome plugin correctly identify all producer modules, ensuring that proxyable producer modules will not be missing.\n if (hostSnapshot && 'remotesInfo' in hostSnapshot && !getInfoWithoutType(hostSnapshot.remotesInfo, moduleInfo.name).value) {\n if ('version' in moduleInfo || 'entry' in moduleInfo) {\n hostSnapshot.remotesInfo = polyfills._extends({}, hostSnapshot == null ? void 0 : hostSnapshot.remotesInfo, {\n [moduleInfo.name]: {\n matchedVersion: 'version' in moduleInfo ? moduleInfo.version : moduleInfo.entry\n }\n });\n }\n }\n const { hostGlobalSnapshot, remoteSnapshot, globalSnapshot } = this.getGlobalRemoteInfo(moduleInfo);\n const { remoteSnapshot: globalRemoteSnapshot, globalSnapshot: globalSnapshotRes } = await this.hooks.lifecycle.loadSnapshot.emit({\n options,\n moduleInfo,\n hostGlobalSnapshot,\n remoteSnapshot,\n globalSnapshot\n });\n let mSnapshot;\n let gSnapshot;\n // global snapshot includes manifest or module info includes manifest\n if (globalRemoteSnapshot) {\n if (sdk.isManifestProvider(globalRemoteSnapshot)) {\n const remoteEntry = sdk.isBrowserEnv() ? globalRemoteSnapshot.remoteEntry : globalRemoteSnapshot.ssrRemoteEntry || globalRemoteSnapshot.remoteEntry || '';\n const moduleSnapshot = await this.getManifestJson(remoteEntry, moduleInfo, {});\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const globalSnapshotRes = setGlobalSnapshotInfoByModuleInfo(polyfills._extends({}, moduleInfo, {\n // The global remote may be overridden\n // Therefore, set the snapshot key to the global address of the actual request\n entry: remoteEntry\n }), moduleSnapshot);\n mSnapshot = moduleSnapshot;\n gSnapshot = globalSnapshotRes;\n } else {\n const { remoteSnapshot: remoteSnapshotRes } = await this.hooks.lifecycle.loadRemoteSnapshot.emit({\n options: this.HostInstance.options,\n moduleInfo,\n remoteSnapshot: globalRemoteSnapshot,\n from: 'global'\n });\n mSnapshot = remoteSnapshotRes;\n gSnapshot = globalSnapshotRes;\n }\n } else {\n if (isRemoteInfoWithEntry(moduleInfo)) {\n // get from manifest.json and merge remote info from remote server\n const moduleSnapshot = await this.getManifestJson(moduleInfo.entry, moduleInfo, {});\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const globalSnapshotRes = setGlobalSnapshotInfoByModuleInfo(moduleInfo, moduleSnapshot);\n const { remoteSnapshot: remoteSnapshotRes } = await this.hooks.lifecycle.loadRemoteSnapshot.emit({\n options: this.HostInstance.options,\n moduleInfo,\n remoteSnapshot: moduleSnapshot,\n from: 'global'\n });\n mSnapshot = remoteSnapshotRes;\n gSnapshot = globalSnapshotRes;\n } else {\n error(errorCodes.getShortErrorMsg(errorCodes.RUNTIME_007, errorCodes.runtimeDescMap, {\n hostName: moduleInfo.name,\n hostVersion: moduleInfo.version,\n globalSnapshot: JSON.stringify(globalSnapshotRes)\n }));\n }\n }\n await this.hooks.lifecycle.afterLoadSnapshot.emit({\n options,\n moduleInfo,\n remoteSnapshot: mSnapshot\n });\n return {\n remoteSnapshot: mSnapshot,\n globalSnapshot: gSnapshot\n };\n }\n getGlobalRemoteInfo(moduleInfo) {\n return getGlobalRemoteInfo(moduleInfo, this.HostInstance);\n }\n async getManifestJson(manifestUrl, moduleInfo, extraOptions) {\n const getManifest = async ()=>{\n let manifestJson = this.manifestCache.get(manifestUrl);\n if (manifestJson) {\n return manifestJson;\n }\n try {\n let res = await this.loaderHook.lifecycle.fetch.emit(manifestUrl, {});\n if (!res || !(res instanceof Response)) {\n res = await fetch(manifestUrl, {});\n }\n manifestJson = await res.json();\n } catch (err) {\n manifestJson = await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({\n id: manifestUrl,\n error,\n from: 'runtime',\n lifecycle: 'afterResolve',\n origin: this.HostInstance\n });\n if (!manifestJson) {\n delete this.manifestLoading[manifestUrl];\n error(errorCodes.getShortErrorMsg(errorCodes.RUNTIME_003, errorCodes.runtimeDescMap, {\n manifestUrl,\n moduleName: moduleInfo.name\n }, `${err}`));\n }\n }\n assert(manifestJson.metaData && manifestJson.exposes && manifestJson.shared, `${manifestUrl} is not a federation manifest`);\n this.manifestCache.set(manifestUrl, manifestJson);\n return manifestJson;\n };\n const asyncLoadProcess = async ()=>{\n const manifestJson = await getManifest();\n const remoteSnapshot = sdk.generateSnapshotFromManifest(manifestJson, {\n version: manifestUrl\n });\n const { remoteSnapshot: remoteSnapshotRes } = await this.hooks.lifecycle.loadRemoteSnapshot.emit({\n options: this.HostInstance.options,\n moduleInfo,\n manifestJson,\n remoteSnapshot,\n manifestUrl,\n from: 'manifest'\n });\n return remoteSnapshotRes;\n };\n if (!this.manifestLoading[manifestUrl]) {\n this.manifestLoading[manifestUrl] = asyncLoadProcess().then((res)=>res);\n }\n return this.manifestLoading[manifestUrl];\n }\n constructor(HostInstance){\n this.loadingHostSnapshot = null;\n this.manifestCache = new Map();\n this.hooks = new PluginSystem({\n beforeLoadRemoteSnapshot: new AsyncHook('beforeLoadRemoteSnapshot'),\n loadSnapshot: new AsyncWaterfallHook('loadGlobalSnapshot'),\n loadRemoteSnapshot: new AsyncWaterfallHook('loadRemoteSnapshot'),\n afterLoadSnapshot: new AsyncWaterfallHook('afterLoadSnapshot')\n });\n this.manifestLoading = Global.__FEDERATION__.__MANIFEST_LOADING__;\n this.HostInstance = HostInstance;\n this.loaderHook = HostInstance.loaderHook;\n }\n}\n\nclass SharedHandler {\n // register shared in shareScopeMap\n registerShared(globalOptions, userOptions) {\n const { shareInfos, shared } = formatShareConfigs(globalOptions, userOptions);\n const sharedKeys = Object.keys(shareInfos);\n sharedKeys.forEach((sharedKey)=>{\n const sharedVals = shareInfos[sharedKey];\n sharedVals.forEach((sharedVal)=>{\n const registeredShared = getRegisteredShare(this.shareScopeMap, sharedKey, sharedVal, this.hooks.lifecycle.resolveShare);\n if (!registeredShared && sharedVal && sharedVal.lib) {\n this.setShared({\n pkgName: sharedKey,\n lib: sharedVal.lib,\n get: sharedVal.get,\n loaded: true,\n shared: sharedVal,\n from: userOptions.name\n });\n }\n });\n });\n return {\n shareInfos,\n shared\n };\n }\n async loadShare(pkgName, extraOptions) {\n const { host } = this;\n // This function performs the following steps:\n // 1. Checks if the currently loaded share already exists, if not, it throws an error\n // 2. Searches globally for a matching share, if found, it uses it directly\n // 3. If not found, it retrieves it from the current share and stores the obtained share globally.\n const shareInfo = getTargetSharedOptions({\n pkgName,\n extraOptions,\n shareInfos: host.options.shared\n });\n if (shareInfo == null ? void 0 : shareInfo.scope) {\n await Promise.all(shareInfo.scope.map(async (shareScope)=>{\n await Promise.all(this.initializeSharing(shareScope, {\n strategy: shareInfo.strategy\n }));\n return;\n }));\n }\n const loadShareRes = await this.hooks.lifecycle.beforeLoadShare.emit({\n pkgName,\n shareInfo,\n shared: host.options.shared,\n origin: host\n });\n const { shareInfo: shareInfoRes } = loadShareRes;\n // Assert that shareInfoRes exists, if not, throw an error\n assert(shareInfoRes, `Cannot find ${pkgName} Share in the ${host.options.name}. Please ensure that the ${pkgName} Share parameters have been injected`);\n // Retrieve from cache\n const registeredShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);\n const addUseIn = (shared)=>{\n if (!shared.useIn) {\n shared.useIn = [];\n }\n addUniqueItem(shared.useIn, host.options.name);\n };\n if (registeredShared && registeredShared.lib) {\n addUseIn(registeredShared);\n return registeredShared.lib;\n } else if (registeredShared && registeredShared.loading && !registeredShared.loaded) {\n const factory = await registeredShared.loading;\n registeredShared.loaded = true;\n if (!registeredShared.lib) {\n registeredShared.lib = factory;\n }\n addUseIn(registeredShared);\n return factory;\n } else if (registeredShared) {\n const asyncLoadProcess = async ()=>{\n const factory = await registeredShared.get();\n shareInfoRes.lib = factory;\n shareInfoRes.loaded = true;\n addUseIn(shareInfoRes);\n const gShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);\n if (gShared) {\n gShared.lib = factory;\n gShared.loaded = true;\n }\n return factory;\n };\n const loading = asyncLoadProcess();\n this.setShared({\n pkgName,\n loaded: false,\n shared: registeredShared,\n from: host.options.name,\n lib: null,\n loading\n });\n return loading;\n } else {\n if (extraOptions == null ? void 0 : extraOptions.customShareInfo) {\n return false;\n }\n const asyncLoadProcess = async ()=>{\n const factory = await shareInfoRes.get();\n shareInfoRes.lib = factory;\n shareInfoRes.loaded = true;\n addUseIn(shareInfoRes);\n const gShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);\n if (gShared) {\n gShared.lib = factory;\n gShared.loaded = true;\n }\n return factory;\n };\n const loading = asyncLoadProcess();\n this.setShared({\n pkgName,\n loaded: false,\n shared: shareInfoRes,\n from: host.options.name,\n lib: null,\n loading\n });\n return loading;\n }\n }\n /**\n * This function initializes the sharing sequence (executed only once per share scope).\n * It accepts one argument, the name of the share scope.\n * If the share scope does not exist, it creates one.\n */ // eslint-disable-next-line @typescript-eslint/member-ordering\n initializeSharing(shareScopeName = DEFAULT_SCOPE, extraOptions) {\n const { host } = this;\n const from = extraOptions == null ? void 0 : extraOptions.from;\n const strategy = extraOptions == null ? void 0 : extraOptions.strategy;\n let initScope = extraOptions == null ? void 0 : extraOptions.initScope;\n const promises = [];\n if (from !== 'build') {\n const { initTokens } = this;\n if (!initScope) initScope = [];\n let initToken = initTokens[shareScopeName];\n if (!initToken) initToken = initTokens[shareScopeName] = {\n from: this.host.name\n };\n if (initScope.indexOf(initToken) >= 0) return promises;\n initScope.push(initToken);\n }\n const shareScope = this.shareScopeMap;\n const hostName = host.options.name;\n // Creates a new share scope if necessary\n if (!shareScope[shareScopeName]) {\n shareScope[shareScopeName] = {};\n }\n // Executes all initialization snippets from all accessible modules\n const scope = shareScope[shareScopeName];\n const register = (name, shared)=>{\n var _activeVersion_shareConfig;\n const { version, eager } = shared;\n scope[name] = scope[name] || {};\n const versions = scope[name];\n const activeVersion = versions[version];\n const activeVersionEager = Boolean(activeVersion && (activeVersion.eager || ((_activeVersion_shareConfig = activeVersion.shareConfig) == null ? void 0 : _activeVersion_shareConfig.eager)));\n if (!activeVersion || activeVersion.strategy !== 'loaded-first' && !activeVersion.loaded && (Boolean(!eager) !== !activeVersionEager ? eager : hostName > activeVersion.from)) {\n versions[version] = shared;\n }\n };\n const initFn = (mod)=>mod && mod.init && mod.init(shareScope[shareScopeName], initScope);\n const initRemoteModule = async (key)=>{\n const { module } = await host.remoteHandler.getRemoteModuleAndOptions({\n id: key\n });\n if (module.getEntry) {\n let remoteEntryExports;\n try {\n remoteEntryExports = await module.getEntry();\n } catch (error) {\n remoteEntryExports = await host.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({\n id: key,\n error,\n from: 'runtime',\n lifecycle: 'beforeLoadShare',\n origin: host\n });\n }\n if (!module.inited) {\n await initFn(remoteEntryExports);\n module.inited = true;\n }\n }\n };\n Object.keys(host.options.shared).forEach((shareName)=>{\n const sharedArr = host.options.shared[shareName];\n sharedArr.forEach((shared)=>{\n if (shared.scope.includes(shareScopeName)) {\n register(shareName, shared);\n }\n });\n });\n // TODO: strategy==='version-first' need to be removed in the future\n if (host.options.shareStrategy === 'version-first' || strategy === 'version-first') {\n host.options.remotes.forEach((remote)=>{\n if (remote.shareScope === shareScopeName) {\n promises.push(initRemoteModule(remote.name));\n }\n });\n }\n return promises;\n }\n // The lib function will only be available if the shared set by eager or runtime init is set or the shared is successfully loaded.\n // 1. If the loaded shared already exists globally, then it will be reused\n // 2. If lib exists in local shared, it will be used directly\n // 3. If the local get returns something other than Promise, then it will be used directly\n loadShareSync(pkgName, extraOptions) {\n const { host } = this;\n const shareInfo = getTargetSharedOptions({\n pkgName,\n extraOptions,\n shareInfos: host.options.shared\n });\n if (shareInfo == null ? void 0 : shareInfo.scope) {\n shareInfo.scope.forEach((shareScope)=>{\n this.initializeSharing(shareScope, {\n strategy: shareInfo.strategy\n });\n });\n }\n const registeredShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfo, this.hooks.lifecycle.resolveShare);\n const addUseIn = (shared)=>{\n if (!shared.useIn) {\n shared.useIn = [];\n }\n addUniqueItem(shared.useIn, host.options.name);\n };\n if (registeredShared) {\n if (typeof registeredShared.lib === 'function') {\n addUseIn(registeredShared);\n if (!registeredShared.loaded) {\n registeredShared.loaded = true;\n if (registeredShared.from === host.options.name) {\n shareInfo.loaded = true;\n }\n }\n return registeredShared.lib;\n }\n if (typeof registeredShared.get === 'function') {\n const module = registeredShared.get();\n if (!(module instanceof Promise)) {\n addUseIn(registeredShared);\n this.setShared({\n pkgName,\n loaded: true,\n from: host.options.name,\n lib: module,\n shared: registeredShared\n });\n return module;\n }\n }\n }\n if (shareInfo.lib) {\n if (!shareInfo.loaded) {\n shareInfo.loaded = true;\n }\n return shareInfo.lib;\n }\n if (shareInfo.get) {\n const module = shareInfo.get();\n if (module instanceof Promise) {\n const errorCode = (extraOptions == null ? void 0 : extraOptions.from) === 'build' ? errorCodes.RUNTIME_005 : errorCodes.RUNTIME_006;\n throw new Error(errorCodes.getShortErrorMsg(errorCode, errorCodes.runtimeDescMap, {\n hostName: host.options.name,\n sharedPkgName: pkgName\n }));\n }\n shareInfo.lib = module;\n this.setShared({\n pkgName,\n loaded: true,\n from: host.options.name,\n lib: shareInfo.lib,\n shared: shareInfo\n });\n return shareInfo.lib;\n }\n throw new Error(errorCodes.getShortErrorMsg(errorCodes.RUNTIME_006, errorCodes.runtimeDescMap, {\n hostName: host.options.name,\n sharedPkgName: pkgName\n }));\n }\n initShareScopeMap(scopeName, shareScope, extraOptions = {}) {\n const { host } = this;\n this.shareScopeMap[scopeName] = shareScope;\n this.hooks.lifecycle.initContainerShareScopeMap.emit({\n shareScope,\n options: host.options,\n origin: host,\n scopeName,\n hostShareScopeMap: extraOptions.hostShareScopeMap\n });\n }\n setShared({ pkgName, shared, from, lib, loading, loaded, get }) {\n const { version, scope = 'default' } = shared, shareInfo = polyfills._object_without_properties_loose(shared, [\n \"version\",\n \"scope\"\n ]);\n const scopes = Array.isArray(scope) ? scope : [\n scope\n ];\n scopes.forEach((sc)=>{\n if (!this.shareScopeMap[sc]) {\n this.shareScopeMap[sc] = {};\n }\n if (!this.shareScopeMap[sc][pkgName]) {\n this.shareScopeMap[sc][pkgName] = {};\n }\n if (!this.shareScopeMap[sc][pkgName][version]) {\n this.shareScopeMap[sc][pkgName][version] = polyfills._extends({\n version,\n scope: [\n 'default'\n ]\n }, shareInfo, {\n lib,\n loaded,\n loading\n });\n if (get) {\n this.shareScopeMap[sc][pkgName][version].get = get;\n }\n return;\n }\n const registeredShared = this.shareScopeMap[sc][pkgName][version];\n if (loading && !registeredShared.loading) {\n registeredShared.loading = loading;\n }\n });\n }\n _setGlobalShareScopeMap(hostOptions) {\n const globalShareScopeMap = getGlobalShareScope();\n const identifier = hostOptions.id || hostOptions.name;\n if (identifier && !globalShareScopeMap[identifier]) {\n globalShareScopeMap[identifier] = this.shareScopeMap;\n }\n }\n constructor(host){\n this.hooks = new PluginSystem({\n afterResolve: new AsyncWaterfallHook('afterResolve'),\n beforeLoadShare: new AsyncWaterfallHook('beforeLoadShare'),\n // not used yet\n loadShare: new AsyncHook(),\n resolveShare: new SyncWaterfallHook('resolveShare'),\n // maybe will change, temporarily for internal use only\n initContainerShareScopeMap: new SyncWaterfallHook('initContainerShareScopeMap')\n });\n this.host = host;\n this.shareScopeMap = {};\n this.initTokens = {};\n this._setGlobalShareScopeMap(host.options);\n }\n}\n\nclass RemoteHandler {\n formatAndRegisterRemote(globalOptions, userOptions) {\n const userRemotes = userOptions.remotes || [];\n return userRemotes.reduce((res, remote)=>{\n this.registerRemote(remote, res, {\n force: false\n });\n return res;\n }, globalOptions.remotes);\n }\n setIdToRemoteMap(id, remoteMatchInfo) {\n const { remote, expose } = remoteMatchInfo;\n const { name, alias } = remote;\n this.idToRemoteMap[id] = {\n name: remote.name,\n expose\n };\n if (alias && id.startsWith(name)) {\n const idWithAlias = id.replace(name, alias);\n this.idToRemoteMap[idWithAlias] = {\n name: remote.name,\n expose\n };\n return;\n }\n if (alias && id.startsWith(alias)) {\n const idWithName = id.replace(alias, name);\n this.idToRemoteMap[idWithName] = {\n name: remote.name,\n expose\n };\n }\n }\n // eslint-disable-next-line max-lines-per-function\n // eslint-disable-next-line @typescript-eslint/member-ordering\n async loadRemote(id, options) {\n const { host } = this;\n try {\n const { loadFactory = true } = options || {\n loadFactory: true\n };\n // 1. Validate the parameters of the retrieved module. There are two module request methods: pkgName + expose and alias + expose.\n // 2. Request the snapshot information of the current host and globally store the obtained snapshot information. The retrieved module information is partially offline and partially online. The online module information will retrieve the modules used online.\n // 3. Retrieve the detailed information of the current module from global (remoteEntry address, expose resource address)\n // 4. After retrieving remoteEntry, call the init of the module, and then retrieve the exported content of the module through get\n // id: pkgName(@federation/app1) + expose(button) = @federation/app1/button\n // id: alias(app1) + expose(button) = app1/button\n // id: alias(app1/utils) + expose(loadash/sort) = app1/utils/loadash/sort\n const { module, moduleOptions, remoteMatchInfo } = await this.getRemoteModuleAndOptions({\n id\n });\n const { pkgNameOrAlias, remote, expose, id: idRes, remoteSnapshot } = remoteMatchInfo;\n const moduleOrFactory = await module.get(idRes, expose, options, remoteSnapshot);\n const moduleWrapper = await this.hooks.lifecycle.onLoad.emit({\n id: idRes,\n pkgNameOrAlias,\n expose,\n exposeModule: loadFactory ? moduleOrFactory : undefined,\n exposeModuleFactory: loadFactory ? undefined : moduleOrFactory,\n remote,\n options: moduleOptions,\n moduleInstance: module,\n origin: host\n });\n this.setIdToRemoteMap(id, remoteMatchInfo);\n if (typeof moduleWrapper === 'function') {\n return moduleWrapper;\n }\n return moduleOrFactory;\n } catch (error) {\n const { from = 'runtime' } = options || {\n from: 'runtime'\n };\n const failOver = await this.hooks.lifecycle.errorLoadRemote.emit({\n id,\n error,\n from,\n lifecycle: 'onLoad',\n origin: host\n });\n if (!failOver) {\n throw error;\n }\n return failOver;\n }\n }\n // eslint-disable-next-line @typescript-eslint/member-ordering\n async preloadRemote(preloadOptions) {\n const { host } = this;\n await this.hooks.lifecycle.beforePreloadRemote.emit({\n preloadOps: preloadOptions,\n options: host.options,\n origin: host\n });\n const preloadOps = formatPreloadArgs(host.options.remotes, preloadOptions);\n await Promise.all(preloadOps.map(async (ops)=>{\n const { remote } = ops;\n const remoteInfo = getRemoteInfo(remote);\n const { globalSnapshot, remoteSnapshot } = await host.snapshotHandler.loadRemoteSnapshotInfo(remote);\n const assets = await this.hooks.lifecycle.generatePreloadAssets.emit({\n origin: host,\n preloadOptions: ops,\n remote,\n remoteInfo,\n globalSnapshot,\n remoteSnapshot\n });\n if (!assets) {\n return;\n }\n preloadAssets(remoteInfo, host, assets);\n }));\n }\n registerRemotes(remotes, options) {\n const { host } = this;\n remotes.forEach((remote)=>{\n this.registerRemote(remote, host.options.remotes, {\n force: options == null ? void 0 : options.force\n });\n });\n }\n async getRemoteModuleAndOptions(options) {\n const { host } = this;\n const { id } = options;\n let loadRemoteArgs;\n try {\n loadRemoteArgs = await this.hooks.lifecycle.beforeRequest.emit({\n id,\n options: host.options,\n origin: host\n });\n } catch (error) {\n loadRemoteArgs = await this.hooks.lifecycle.errorLoadRemote.emit({\n id,\n options: host.options,\n origin: host,\n from: 'runtime',\n error,\n lifecycle: 'beforeRequest'\n });\n if (!loadRemoteArgs) {\n throw error;\n }\n }\n const { id: idRes } = loadRemoteArgs;\n const remoteSplitInfo = matchRemoteWithNameAndExpose(host.options.remotes, idRes);\n assert(remoteSplitInfo, errorCodes.getShortErrorMsg(errorCodes.RUNTIME_004, errorCodes.runtimeDescMap, {\n hostName: host.options.name,\n requestId: idRes\n }));\n const { remote: rawRemote } = remoteSplitInfo;\n const remoteInfo = getRemoteInfo(rawRemote);\n const matchInfo = await host.sharedHandler.hooks.lifecycle.afterResolve.emit(polyfills._extends({\n id: idRes\n }, remoteSplitInfo, {\n options: host.options,\n origin: host,\n remoteInfo\n }));\n const { remote, expose } = matchInfo;\n assert(remote && expose, `The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${idRes}.`);\n let module = host.moduleCache.get(remote.name);\n const moduleOptions = {\n host: host,\n remoteInfo\n };\n if (!module) {\n module = new Module(moduleOptions);\n host.moduleCache.set(remote.name, module);\n }\n return {\n module,\n moduleOptions,\n remoteMatchInfo: matchInfo\n };\n }\n registerRemote(remote, targetRemotes, options) {\n const { host } = this;\n const normalizeRemote = ()=>{\n if (remote.alias) {\n // Validate if alias equals the prefix of remote.name and remote.alias, if so, throw an error\n // As multi-level path references cannot guarantee unique names, alias being a prefix of remote.name is not supported\n const findEqual = targetRemotes.find((item)=>{\n var _item_alias;\n return remote.alias && (item.name.startsWith(remote.alias) || ((_item_alias = item.alias) == null ? void 0 : _item_alias.startsWith(remote.alias)));\n });\n assert(!findEqual, `The alias ${remote.alias} of remote ${remote.name} is not allowed to be the prefix of ${findEqual && findEqual.name} name or alias`);\n }\n // Set the remote entry to a complete path\n if ('entry' in remote) {\n if (sdk.isBrowserEnv() && !remote.entry.startsWith('http')) {\n remote.entry = new URL(remote.entry, window.location.origin).href;\n }\n }\n if (!remote.shareScope) {\n remote.shareScope = DEFAULT_SCOPE;\n }\n if (!remote.type) {\n remote.type = DEFAULT_REMOTE_TYPE;\n }\n };\n this.hooks.lifecycle.beforeRegisterRemote.emit({\n remote,\n origin: host\n });\n const registeredRemote = targetRemotes.find((item)=>item.name === remote.name);\n if (!registeredRemote) {\n normalizeRemote();\n targetRemotes.push(remote);\n this.hooks.lifecycle.registerRemote.emit({\n remote,\n origin: host\n });\n } else {\n const messages = [\n `The remote \"${remote.name}\" is already registered.`,\n 'Please note that overriding it may cause unexpected errors.'\n ];\n if (options == null ? void 0 : options.force) {\n // remove registered remote\n this.removeRemote(registeredRemote);\n normalizeRemote();\n targetRemotes.push(remote);\n this.hooks.lifecycle.registerRemote.emit({\n remote,\n origin: host\n });\n sdk.warn(messages.join(' '));\n }\n }\n }\n removeRemote(remote) {\n try {\n const { host } = this;\n const { name } = remote;\n const remoteIndex = host.options.remotes.findIndex((item)=>item.name === name);\n if (remoteIndex !== -1) {\n host.options.remotes.splice(remoteIndex, 1);\n }\n const loadedModule = host.moduleCache.get(remote.name);\n if (loadedModule) {\n const remoteInfo = loadedModule.remoteInfo;\n const key = remoteInfo.entryGlobalName;\n if (CurrentGlobal[key]) {\n var _Object_getOwnPropertyDescriptor;\n if ((_Object_getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor(CurrentGlobal, key)) == null ? void 0 : _Object_getOwnPropertyDescriptor.configurable) {\n delete CurrentGlobal[key];\n } else {\n // @ts-ignore\n CurrentGlobal[key] = undefined;\n }\n }\n const remoteEntryUniqueKey = getRemoteEntryUniqueKey(loadedModule.remoteInfo);\n if (globalLoading[remoteEntryUniqueKey]) {\n delete globalLoading[remoteEntryUniqueKey];\n }\n host.snapshotHandler.manifestCache.delete(remoteInfo.entry);\n // delete unloaded shared and instance\n let remoteInsId = remoteInfo.buildVersion ? sdk.composeKeyWithSeparator(remoteInfo.name, remoteInfo.buildVersion) : remoteInfo.name;\n const remoteInsIndex = CurrentGlobal.__FEDERATION__.__INSTANCES__.findIndex((ins)=>{\n if (remoteInfo.buildVersion) {\n return ins.options.id === remoteInsId;\n } else {\n return ins.name === remoteInsId;\n }\n });\n if (remoteInsIndex !== -1) {\n const remoteIns = CurrentGlobal.__FEDERATION__.__INSTANCES__[remoteInsIndex];\n remoteInsId = remoteIns.options.id || remoteInsId;\n const globalShareScopeMap = getGlobalShareScope();\n let isAllSharedNotUsed = true;\n const needDeleteKeys = [];\n Object.keys(globalShareScopeMap).forEach((instId)=>{\n const shareScopeMap = globalShareScopeMap[instId];\n shareScopeMap && Object.keys(shareScopeMap).forEach((shareScope)=>{\n const shareScopeVal = shareScopeMap[shareScope];\n shareScopeVal && Object.keys(shareScopeVal).forEach((shareName)=>{\n const sharedPkgs = shareScopeVal[shareName];\n sharedPkgs && Object.keys(sharedPkgs).forEach((shareVersion)=>{\n const shared = sharedPkgs[shareVersion];\n if (shared && typeof shared === 'object' && shared.from === remoteInfo.name) {\n if (shared.loaded || shared.loading) {\n shared.useIn = shared.useIn.filter((usedHostName)=>usedHostName !== remoteInfo.name);\n if (shared.useIn.length) {\n isAllSharedNotUsed = false;\n } else {\n needDeleteKeys.push([\n instId,\n shareScope,\n shareName,\n shareVersion\n ]);\n }\n } else {\n needDeleteKeys.push([\n instId,\n shareScope,\n shareName,\n shareVersion\n ]);\n }\n }\n });\n });\n });\n });\n if (isAllSharedNotUsed) {\n remoteIns.shareScopeMap = {};\n delete globalShareScopeMap[remoteInsId];\n }\n needDeleteKeys.forEach(([insId, shareScope, shareName, shareVersion])=>{\n var _globalShareScopeMap_insId_shareScope_shareName, _globalShareScopeMap_insId_shareScope, _globalShareScopeMap_insId;\n (_globalShareScopeMap_insId = globalShareScopeMap[insId]) == null ? true : (_globalShareScopeMap_insId_shareScope = _globalShareScopeMap_insId[shareScope]) == null ? true : (_globalShareScopeMap_insId_shareScope_shareName = _globalShareScopeMap_insId_shareScope[shareName]) == null ? true : delete _globalShareScopeMap_insId_shareScope_shareName[shareVersion];\n });\n CurrentGlobal.__FEDERATION__.__INSTANCES__.splice(remoteInsIndex, 1);\n }\n const { hostGlobalSnapshot } = getGlobalRemoteInfo(remote, host);\n if (hostGlobalSnapshot) {\n const remoteKey = hostGlobalSnapshot && 'remotesInfo' in hostGlobalSnapshot && hostGlobalSnapshot.remotesInfo && getInfoWithoutType(hostGlobalSnapshot.remotesInfo, remote.name).key;\n if (remoteKey) {\n delete hostGlobalSnapshot.remotesInfo[remoteKey];\n if (//eslint-disable-next-line no-extra-boolean-cast\n Boolean(Global.__FEDERATION__.__MANIFEST_LOADING__[remoteKey])) {\n delete Global.__FEDERATION__.__MANIFEST_LOADING__[remoteKey];\n }\n }\n }\n host.moduleCache.delete(remote.name);\n }\n } catch (err) {\n logger.log('removeRemote fail: ', err);\n }\n }\n constructor(host){\n this.hooks = new PluginSystem({\n beforeRegisterRemote: new SyncWaterfallHook('beforeRegisterRemote'),\n registerRemote: new SyncWaterfallHook('registerRemote'),\n beforeRequest: new AsyncWaterfallHook('beforeRequest'),\n onLoad: new AsyncHook('onLoad'),\n handlePreloadModule: new SyncHook('handlePreloadModule'),\n errorLoadRemote: new AsyncHook('errorLoadRemote'),\n beforePreloadRemote: new AsyncHook('beforePreloadRemote'),\n generatePreloadAssets: new AsyncHook('generatePreloadAssets'),\n // not used yet\n afterPreloadRemote: new AsyncHook(),\n loadEntry: new AsyncHook()\n });\n this.host = host;\n this.idToRemoteMap = {};\n }\n}\n\nclass FederationHost {\n initOptions(userOptions) {\n this.registerPlugins(userOptions.plugins);\n const options = this.formatOptions(this.options, userOptions);\n this.options = options;\n return options;\n }\n async loadShare(pkgName, extraOptions) {\n return this.sharedHandler.loadShare(pkgName, extraOptions);\n }\n // The lib function will only be available if the shared set by eager or runtime init is set or the shared is successfully loaded.\n // 1. If the loaded shared already exists globally, then it will be reused\n // 2. If lib exists in local shared, it will be used directly\n // 3. If the local get returns something other than Promise, then it will be used directly\n loadShareSync(pkgName, extraOptions) {\n return this.sharedHandler.loadShareSync(pkgName, extraOptions);\n }\n initializeSharing(shareScopeName = DEFAULT_SCOPE, extraOptions) {\n return this.sharedHandler.initializeSharing(shareScopeName, extraOptions);\n }\n initRawContainer(name, url, container) {\n const remoteInfo = getRemoteInfo({\n name,\n entry: url\n });\n const module = new Module({\n host: this,\n remoteInfo\n });\n module.remoteEntryExports = container;\n this.moduleCache.set(name, module);\n return module;\n }\n // eslint-disable-next-line max-lines-per-function\n // eslint-disable-next-line @typescript-eslint/member-ordering\n async loadRemote(id, options) {\n return this.remoteHandler.loadRemote(id, options);\n }\n // eslint-disable-next-line @typescript-eslint/member-ordering\n async preloadRemote(preloadOptions) {\n return this.remoteHandler.preloadRemote(preloadOptions);\n }\n initShareScopeMap(scopeName, shareScope, extraOptions = {}) {\n this.sharedHandler.initShareScopeMap(scopeName, shareScope, extraOptions);\n }\n formatOptions(globalOptions, userOptions) {\n const { shared } = formatShareConfigs(globalOptions, userOptions);\n const { userOptions: userOptionsRes, options: globalOptionsRes } = this.hooks.lifecycle.beforeInit.emit({\n origin: this,\n userOptions,\n options: globalOptions,\n shareInfo: shared\n });\n const remotes = this.remoteHandler.formatAndRegisterRemote(globalOptionsRes, userOptionsRes);\n const { shared: handledShared } = this.sharedHandler.registerShared(globalOptionsRes, userOptionsRes);\n const plugins = [\n ...globalOptionsRes.plugins\n ];\n if (userOptionsRes.plugins) {\n userOptionsRes.plugins.forEach((plugin)=>{\n if (!plugins.includes(plugin)) {\n plugins.push(plugin);\n }\n });\n }\n const optionsRes = polyfills._extends({}, globalOptions, userOptions, {\n plugins,\n remotes,\n shared: handledShared\n });\n this.hooks.lifecycle.init.emit({\n origin: this,\n options: optionsRes\n });\n return optionsRes;\n }\n registerPlugins(plugins) {\n const pluginRes = registerPlugins(plugins, [\n this.hooks,\n this.remoteHandler.hooks,\n this.sharedHandler.hooks,\n this.snapshotHandler.hooks,\n this.loaderHook,\n this.bridgeHook\n ]);\n // Merge plugin\n this.options.plugins = this.options.plugins.reduce((res, plugin)=>{\n if (!plugin) return res;\n if (res && !res.find((item)=>item.name === plugin.name)) {\n res.push(plugin);\n }\n return res;\n }, pluginRes || []);\n }\n registerRemotes(remotes, options) {\n return this.remoteHandler.registerRemotes(remotes, options);\n }\n constructor(userOptions){\n this.hooks = new PluginSystem({\n beforeInit: new SyncWaterfallHook('beforeInit'),\n init: new SyncHook(),\n // maybe will change, temporarily for internal use only\n beforeInitContainer: new AsyncWaterfallHook('beforeInitContainer'),\n // maybe will change, temporarily for internal use only\n initContainer: new AsyncWaterfallHook('initContainer')\n });\n this.version = \"0.6.20\";\n this.moduleCache = new Map();\n this.loaderHook = new PluginSystem({\n // FIXME: may not be suitable , not open to the public yet\n getModuleInfo: new SyncHook(),\n createScript: new SyncHook(),\n createLink: new SyncHook(),\n fetch: new AsyncHook(),\n loadEntryError: new AsyncHook(),\n getModuleFactory: new AsyncHook()\n });\n this.bridgeHook = new PluginSystem({\n beforeBridgeRender: new SyncHook(),\n afterBridgeRender: new SyncHook(),\n beforeBridgeDestroy: new SyncHook(),\n afterBridgeDestroy: new SyncHook()\n });\n // TODO: Validate the details of the options\n // Initialize options with default values\n const defaultOptions = {\n id: getBuilderId(),\n name: userOptions.name,\n plugins: [\n snapshotPlugin(),\n generatePreloadAssetsPlugin()\n ],\n remotes: [],\n shared: {},\n inBrowser: sdk.isBrowserEnv()\n };\n this.name = userOptions.name;\n this.options = defaultOptions;\n this.snapshotHandler = new SnapshotHandler(this);\n this.sharedHandler = new SharedHandler(this);\n this.remoteHandler = new RemoteHandler(this);\n this.shareScopeMap = this.sharedHandler.shareScopeMap;\n this.registerPlugins([\n ...defaultOptions.plugins,\n ...userOptions.plugins || []\n ]);\n this.options = this.formatOptions(defaultOptions, userOptions);\n }\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nObject.defineProperty(exports, \"loadScript\", {\n enumerable: true,\n get: function () { return sdk.loadScript; }\n});\nObject.defineProperty(exports, \"loadScriptNode\", {\n enumerable: true,\n get: function () { return sdk.loadScriptNode; }\n});\nexports.CurrentGlobal = CurrentGlobal;\nexports.FederationHost = FederationHost;\nexports.Global = Global;\nexports.Module = Module;\nexports.addGlobalSnapshot = addGlobalSnapshot;\nexports.assert = assert;\nexports.getGlobalFederationConstructor = getGlobalFederationConstructor;\nexports.getGlobalSnapshot = getGlobalSnapshot;\nexports.getInfoWithoutType = getInfoWithoutType;\nexports.getRegisteredShare = getRegisteredShare;\nexports.getRemoteEntry = getRemoteEntry;\nexports.getRemoteInfo = getRemoteInfo;\nexports.helpers = helpers;\nexports.isStaticResourcesEqual = isStaticResourcesEqual;\nexports.matchRemoteWithNameAndExpose = matchRemoteWithNameAndExpose;\nexports.registerGlobalPlugins = registerGlobalPlugins;\nexports.resetFederationGlobalInfo = resetFederationGlobalInfo;\nexports.safeWrapper = safeWrapper;\nexports.satisfy = satisfy;\nexports.setGlobalFederationConstructor = setGlobalFederationConstructor;\nexports.setGlobalFederationInstance = setGlobalFederationInstance;\nexports.types = index;\n","'use strict';\n\nfunction _extends() {\n _extends = Object.assign || function assign(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nexports._extends = _extends;\nexports._object_without_properties_loose = _object_without_properties_loose;\n","'use strict';\n\nvar runtime = require('@module-federation/runtime');\n\n\n\nObject.keys(runtime).forEach(function (k) {\n\tif (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {\n\t\tenumerable: true,\n\t\tget: function () { return runtime[k]; }\n\t});\n});\n","'use strict';\n\nvar runtimeCore = require('@module-federation/runtime-core');\nvar utils = require('./utils.cjs.js');\n\nlet FederationInstance = null;\nfunction init(options) {\n // Retrieve the same instance with the same name\n const instance = utils.getGlobalFederationInstance(options.name, options.version);\n if (!instance) {\n // Retrieve debug constructor\n const FederationConstructor = runtimeCore.getGlobalFederationConstructor() || runtimeCore.FederationHost;\n FederationInstance = new FederationConstructor(options);\n runtimeCore.setGlobalFederationInstance(FederationInstance);\n return FederationInstance;\n } else {\n // Merge options\n instance.initOptions(options);\n if (!FederationInstance) {\n FederationInstance = instance;\n }\n return instance;\n }\n}\nfunction loadRemote(...args) {\n runtimeCore.assert(FederationInstance, 'Please call init first');\n const loadRemote1 = FederationInstance.loadRemote;\n // eslint-disable-next-line prefer-spread\n return loadRemote1.apply(FederationInstance, args);\n}\nfunction loadShare(...args) {\n runtimeCore.assert(FederationInstance, 'Please call init first');\n // eslint-disable-next-line prefer-spread\n const loadShare1 = FederationInstance.loadShare;\n return loadShare1.apply(FederationInstance, args);\n}\nfunction loadShareSync(...args) {\n runtimeCore.assert(FederationInstance, 'Please call init first');\n const loadShareSync1 = FederationInstance.loadShareSync;\n // eslint-disable-next-line prefer-spread\n return loadShareSync1.apply(FederationInstance, args);\n}\nfunction preloadRemote(...args) {\n runtimeCore.assert(FederationInstance, 'Please call init first');\n // eslint-disable-next-line prefer-spread\n return FederationInstance.preloadRemote.apply(FederationInstance, args);\n}\nfunction registerRemotes(...args) {\n runtimeCore.assert(FederationInstance, 'Please call init first');\n // eslint-disable-next-line prefer-spread\n return FederationInstance.registerRemotes.apply(FederationInstance, args);\n}\nfunction registerPlugins(...args) {\n runtimeCore.assert(FederationInstance, 'Please call init first');\n // eslint-disable-next-line prefer-spread\n return FederationInstance.registerPlugins.apply(FederationInstance, args);\n}\nfunction getInstance() {\n return FederationInstance;\n}\n// Inject for debug\nruntimeCore.setGlobalFederationConstructor(runtimeCore.FederationHost);\n\nObject.defineProperty(exports, \"FederationHost\", {\n enumerable: true,\n get: function () { return runtimeCore.FederationHost; }\n});\nObject.defineProperty(exports, \"Module\", {\n enumerable: true,\n get: function () { return runtimeCore.Module; }\n});\nObject.defineProperty(exports, \"getRemoteEntry\", {\n enumerable: true,\n get: function () { return runtimeCore.getRemoteEntry; }\n});\nObject.defineProperty(exports, \"getRemoteInfo\", {\n enumerable: true,\n get: function () { return runtimeCore.getRemoteInfo; }\n});\nObject.defineProperty(exports, \"loadScript\", {\n enumerable: true,\n get: function () { return runtimeCore.loadScript; }\n});\nObject.defineProperty(exports, \"loadScriptNode\", {\n enumerable: true,\n get: function () { return runtimeCore.loadScriptNode; }\n});\nObject.defineProperty(exports, \"registerGlobalPlugins\", {\n enumerable: true,\n get: function () { return runtimeCore.registerGlobalPlugins; }\n});\nexports.getInstance = getInstance;\nexports.init = init;\nexports.loadRemote = loadRemote;\nexports.loadShare = loadShare;\nexports.loadShareSync = loadShareSync;\nexports.preloadRemote = preloadRemote;\nexports.registerPlugins = registerPlugins;\nexports.registerRemotes = registerRemotes;\n","'use strict';\n\nvar runtimeCore = require('@module-federation/runtime-core');\n\n// injected by bundler, so it can not use runtime-core stuff\nfunction getBuilderId() {\n //@ts-ignore\n return typeof FEDERATION_BUILD_IDENTIFIER !== 'undefined' ? FEDERATION_BUILD_IDENTIFIER : '';\n}\nfunction getGlobalFederationInstance(name, version) {\n const buildId = getBuilderId();\n return runtimeCore.CurrentGlobal.__FEDERATION__.__INSTANCES__.find((GMInstance)=>{\n if (buildId && GMInstance.options.id === getBuilderId()) {\n return true;\n }\n if (GMInstance.options.name === name && !GMInstance.options.version && !version) {\n return true;\n }\n if (GMInstance.options.name === name && version && GMInstance.options.version === version) {\n return true;\n }\n return false;\n });\n}\n\nexports.getGlobalFederationInstance = getGlobalFederationInstance;\n","'use strict';\n\nvar isomorphicRslog = require('isomorphic-rslog');\nvar polyfills = require('./polyfills.cjs.js');\n\nconst FederationModuleManifest = 'federation-manifest.json';\nconst MANIFEST_EXT = '.json';\nconst BROWSER_LOG_KEY = 'FEDERATION_DEBUG';\nconst BROWSER_LOG_VALUE = '1';\nconst NameTransformSymbol = {\n AT: '@',\n HYPHEN: '-',\n SLASH: '/'\n};\nconst NameTransformMap = {\n [NameTransformSymbol.AT]: 'scope_',\n [NameTransformSymbol.HYPHEN]: '_',\n [NameTransformSymbol.SLASH]: '__'\n};\nconst EncodedNameTransformMap = {\n [NameTransformMap[NameTransformSymbol.AT]]: NameTransformSymbol.AT,\n [NameTransformMap[NameTransformSymbol.HYPHEN]]: NameTransformSymbol.HYPHEN,\n [NameTransformMap[NameTransformSymbol.SLASH]]: NameTransformSymbol.SLASH\n};\nconst SEPARATOR = ':';\nconst ManifestFileName = 'mf-manifest.json';\nconst StatsFileName = 'mf-stats.json';\nconst MFModuleType = {\n NPM: 'npm',\n APP: 'app'\n};\nconst MODULE_DEVTOOL_IDENTIFIER = '__MF_DEVTOOLS_MODULE_INFO__';\nconst ENCODE_NAME_PREFIX = 'ENCODE_NAME_PREFIX';\nconst TEMP_DIR = '.federation';\nconst MFPrefetchCommon = {\n identifier: 'MFDataPrefetch',\n globalKey: '__PREFETCH__',\n library: 'mf-data-prefetch',\n exportsKey: '__PREFETCH_EXPORTS__',\n fileName: 'bootstrap.js'\n};\n\nvar ContainerPlugin = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nvar ContainerReferencePlugin = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nvar ModuleFederationPlugin = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nvar SharePlugin = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nfunction isBrowserEnv() {\n return typeof window !== 'undefined';\n}\nfunction isBrowserDebug() {\n try {\n if (isBrowserEnv() && window.localStorage) {\n return localStorage.getItem(BROWSER_LOG_KEY) === BROWSER_LOG_VALUE;\n }\n } catch (error) {\n return false;\n }\n return false;\n}\nfunction isDebugMode() {\n if (typeof process !== 'undefined' && process.env && process.env['FEDERATION_DEBUG']) {\n return Boolean(process.env['FEDERATION_DEBUG']);\n }\n if (typeof FEDERATION_DEBUG !== 'undefined' && Boolean(FEDERATION_DEBUG)) {\n return true;\n }\n return isBrowserDebug();\n}\nconst getProcessEnv = function() {\n return typeof process !== 'undefined' && process.env ? process.env : {};\n};\n\nconst PREFIX = '[ Module Federation ]';\nfunction setDebug(loggerInstance) {\n if (isDebugMode()) {\n loggerInstance.level = 'verbose';\n }\n}\nfunction setPrefix(loggerInstance, prefix) {\n loggerInstance.labels = {\n warn: `${prefix} Warn`,\n error: `${prefix} Error`,\n success: `${prefix} Success`,\n info: `${prefix} Info`,\n ready: `${prefix} Ready`,\n debug: `${prefix} Debug`\n };\n}\nfunction createLogger(prefix) {\n const loggerInstance = isomorphicRslog.createLogger({\n labels: {\n warn: `${PREFIX} Warn`,\n error: `${PREFIX} Error`,\n success: `${PREFIX} Success`,\n info: `${PREFIX} Info`,\n ready: `${PREFIX} Ready`,\n debug: `${PREFIX} Debug`\n }\n });\n setDebug(loggerInstance);\n setPrefix(loggerInstance, prefix);\n return loggerInstance;\n}\nconst logger = createLogger(PREFIX);\n\nconst LOG_CATEGORY = '[ Federation Runtime ]';\n// entry: name:version version : 1.0.0 | ^1.2.3\n// entry: name:entry entry: https://localhost:9000/federation-manifest.json\nconst parseEntry = (str, devVerOrUrl, separator = SEPARATOR)=>{\n const strSplit = str.split(separator);\n const devVersionOrUrl = getProcessEnv()['NODE_ENV'] === 'development' && devVerOrUrl;\n const defaultVersion = '*';\n const isEntry = (s)=>s.startsWith('http') || s.includes(MANIFEST_EXT);\n // Check if the string starts with a type\n if (strSplit.length >= 2) {\n let [name, ...versionOrEntryArr] = strSplit;\n if (str.startsWith(separator)) {\n versionOrEntryArr = [\n devVersionOrUrl || strSplit.slice(-1)[0]\n ];\n name = strSplit.slice(0, -1).join(separator);\n }\n let versionOrEntry = devVersionOrUrl || versionOrEntryArr.join(separator);\n if (isEntry(versionOrEntry)) {\n return {\n name,\n entry: versionOrEntry\n };\n } else {\n // Apply version rule\n // devVersionOrUrl => inputVersion => defaultVersion\n return {\n name,\n version: versionOrEntry || defaultVersion\n };\n }\n } else if (strSplit.length === 1) {\n const [name] = strSplit;\n if (devVersionOrUrl && isEntry(devVersionOrUrl)) {\n return {\n name,\n entry: devVersionOrUrl\n };\n }\n return {\n name,\n version: devVersionOrUrl || defaultVersion\n };\n } else {\n throw `Invalid entry value: ${str}`;\n }\n};\nconst composeKeyWithSeparator = function(...args) {\n if (!args.length) {\n return '';\n }\n return args.reduce((sum, cur)=>{\n if (!cur) {\n return sum;\n }\n if (!sum) {\n return cur;\n }\n return `${sum}${SEPARATOR}${cur}`;\n }, '');\n};\nconst encodeName = function(name, prefix = '', withExt = false) {\n try {\n const ext = withExt ? '.js' : '';\n return `${prefix}${name.replace(new RegExp(`${NameTransformSymbol.AT}`, 'g'), NameTransformMap[NameTransformSymbol.AT]).replace(new RegExp(`${NameTransformSymbol.HYPHEN}`, 'g'), NameTransformMap[NameTransformSymbol.HYPHEN]).replace(new RegExp(`${NameTransformSymbol.SLASH}`, 'g'), NameTransformMap[NameTransformSymbol.SLASH])}${ext}`;\n } catch (err) {\n throw err;\n }\n};\nconst decodeName = function(name, prefix, withExt) {\n try {\n let decodedName = name;\n if (prefix) {\n if (!decodedName.startsWith(prefix)) {\n return decodedName;\n }\n decodedName = decodedName.replace(new RegExp(prefix, 'g'), '');\n }\n decodedName = decodedName.replace(new RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`, 'g'), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(new RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`, 'g'), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(new RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`, 'g'), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]);\n if (withExt) {\n decodedName = decodedName.replace('.js', '');\n }\n return decodedName;\n } catch (err) {\n throw err;\n }\n};\nconst generateExposeFilename = (exposeName, withExt)=>{\n if (!exposeName) {\n return '';\n }\n let expose = exposeName;\n if (expose === '.') {\n expose = 'default_export';\n }\n if (expose.startsWith('./')) {\n expose = expose.replace('./', '');\n }\n return encodeName(expose, '__federation_expose_', withExt);\n};\nconst generateShareFilename = (pkgName, withExt)=>{\n if (!pkgName) {\n return '';\n }\n return encodeName(pkgName, '__federation_shared_', withExt);\n};\nconst getResourceUrl = (module, sourceUrl)=>{\n if ('getPublicPath' in module) {\n let publicPath;\n if (!module.getPublicPath.startsWith('function')) {\n publicPath = new Function(module.getPublicPath)();\n } else {\n publicPath = new Function('return ' + module.getPublicPath)()();\n }\n return `${publicPath}${sourceUrl}`;\n } else if ('publicPath' in module) {\n return `${module.publicPath}${sourceUrl}`;\n } else {\n console.warn('Cannot get resource URL. If in debug mode, please ignore.', module, sourceUrl);\n return '';\n }\n};\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nconst assert = (condition, msg)=>{\n if (!condition) {\n error(msg);\n }\n};\nconst error = (msg)=>{\n throw new Error(`${LOG_CATEGORY}: ${msg}`);\n};\nconst warn = (msg)=>{\n console.warn(`${LOG_CATEGORY}: ${msg}`);\n};\nfunction safeToString(info) {\n try {\n return JSON.stringify(info, null, 2);\n } catch (e) {\n return '';\n }\n}\n// RegExp for version string\nconst VERSION_PATTERN_REGEXP = /^([\\d^=v<>~]|[*xX]$)/;\nfunction isRequiredVersion(str) {\n return VERSION_PATTERN_REGEXP.test(str);\n}\n\nconst simpleJoinRemoteEntry = (rPath, rName)=>{\n if (!rPath) {\n return rName;\n }\n const transformPath = (str)=>{\n if (str === '.') {\n return '';\n }\n if (str.startsWith('./')) {\n return str.replace('./', '');\n }\n if (str.startsWith('/')) {\n const strWithoutSlash = str.slice(1);\n if (strWithoutSlash.endsWith('/')) {\n return strWithoutSlash.slice(0, -1);\n }\n return strWithoutSlash;\n }\n return str;\n };\n const transformedPath = transformPath(rPath);\n if (!transformedPath) {\n return rName;\n }\n if (transformedPath.endsWith('/')) {\n return `${transformedPath}${rName}`;\n }\n return `${transformedPath}/${rName}`;\n};\nfunction inferAutoPublicPath(url) {\n return url.replace(/#.*$/, '').replace(/\\?.*$/, '').replace(/\\/[^\\/]+$/, '/');\n}\n// Priority: overrides > remotes\n// eslint-disable-next-line max-lines-per-function\nfunction generateSnapshotFromManifest(manifest, options = {}) {\n var _manifest_metaData, _manifest_metaData1;\n const { remotes = {}, overrides = {}, version } = options;\n let remoteSnapshot;\n const getPublicPath = ()=>{\n if ('publicPath' in manifest.metaData) {\n if (manifest.metaData.publicPath === 'auto' && version) {\n // use same implementation as publicPath auto runtime module implements\n return inferAutoPublicPath(version);\n }\n return manifest.metaData.publicPath;\n } else {\n return manifest.metaData.getPublicPath;\n }\n };\n const overridesKeys = Object.keys(overrides);\n let remotesInfo = {};\n // If remotes are not provided, only the remotes in the manifest will be read\n if (!Object.keys(remotes).length) {\n var _manifest_remotes;\n remotesInfo = ((_manifest_remotes = manifest.remotes) == null ? void 0 : _manifest_remotes.reduce((res, next)=>{\n let matchedVersion;\n const name = next.federationContainerName;\n // overrides have higher priority\n if (overridesKeys.includes(name)) {\n matchedVersion = overrides[name];\n } else {\n if ('version' in next) {\n matchedVersion = next.version;\n } else {\n matchedVersion = next.entry;\n }\n }\n res[name] = {\n matchedVersion\n };\n return res;\n }, {})) || {};\n }\n // If remotes (deploy scenario) are specified, they need to be traversed again\n Object.keys(remotes).forEach((key)=>remotesInfo[key] = {\n // overrides will override dependencies\n matchedVersion: overridesKeys.includes(key) ? overrides[key] : remotes[key]\n });\n const { remoteEntry: { path: remoteEntryPath, name: remoteEntryName, type: remoteEntryType }, types: remoteTypes, buildInfo: { buildVersion }, globalName, ssrRemoteEntry } = manifest.metaData;\n const { exposes } = manifest;\n let basicRemoteSnapshot = {\n version: version ? version : '',\n buildVersion,\n globalName,\n remoteEntry: simpleJoinRemoteEntry(remoteEntryPath, remoteEntryName),\n remoteEntryType,\n remoteTypes: simpleJoinRemoteEntry(remoteTypes.path, remoteTypes.name),\n remoteTypesZip: remoteTypes.zip || '',\n remoteTypesAPI: remoteTypes.api || '',\n remotesInfo,\n shared: manifest == null ? void 0 : manifest.shared.map((item)=>({\n assets: item.assets,\n sharedName: item.name,\n version: item.version\n })),\n modules: exposes == null ? void 0 : exposes.map((expose)=>({\n moduleName: expose.name,\n modulePath: expose.path,\n assets: expose.assets\n }))\n };\n if ((_manifest_metaData = manifest.metaData) == null ? void 0 : _manifest_metaData.prefetchInterface) {\n const prefetchInterface = manifest.metaData.prefetchInterface;\n basicRemoteSnapshot = polyfills._extends({}, basicRemoteSnapshot, {\n prefetchInterface\n });\n }\n if ((_manifest_metaData1 = manifest.metaData) == null ? void 0 : _manifest_metaData1.prefetchEntry) {\n const { path, name, type } = manifest.metaData.prefetchEntry;\n basicRemoteSnapshot = polyfills._extends({}, basicRemoteSnapshot, {\n prefetchEntry: simpleJoinRemoteEntry(path, name),\n prefetchEntryType: type\n });\n }\n if ('publicPath' in manifest.metaData) {\n remoteSnapshot = polyfills._extends({}, basicRemoteSnapshot, {\n publicPath: getPublicPath()\n });\n } else {\n remoteSnapshot = polyfills._extends({}, basicRemoteSnapshot, {\n getPublicPath: getPublicPath()\n });\n }\n if (ssrRemoteEntry) {\n const fullSSRRemoteEntry = simpleJoinRemoteEntry(ssrRemoteEntry.path, ssrRemoteEntry.name);\n remoteSnapshot.ssrRemoteEntry = fullSSRRemoteEntry;\n remoteSnapshot.ssrRemoteEntryType = ssrRemoteEntry.type || 'commonjs-module';\n }\n return remoteSnapshot;\n}\nfunction isManifestProvider(moduleInfo) {\n if ('remoteEntry' in moduleInfo && moduleInfo.remoteEntry.includes(MANIFEST_EXT)) {\n return true;\n } else {\n return false;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function safeWrapper(callback, disableWarn) {\n try {\n const res = await callback();\n return res;\n } catch (e) {\n !disableWarn && warn(e);\n return;\n }\n}\nfunction isStaticResourcesEqual(url1, url2) {\n const REG_EXP = /^(https?:)?\\/\\//i;\n // Transform url1 and url2 into relative paths\n const relativeUrl1 = url1.replace(REG_EXP, '').replace(/\\/$/, '');\n const relativeUrl2 = url2.replace(REG_EXP, '').replace(/\\/$/, '');\n // Check if the relative paths are identical\n return relativeUrl1 === relativeUrl2;\n}\nfunction createScript(info) {\n // Retrieve the existing script element by its src attribute\n let script = null;\n let needAttach = true;\n let timeout = 20000;\n let timeoutId;\n const scripts = document.getElementsByTagName('script');\n for(let i = 0; i < scripts.length; i++){\n const s = scripts[i];\n const scriptSrc = s.getAttribute('src');\n if (scriptSrc && isStaticResourcesEqual(scriptSrc, info.url)) {\n script = s;\n needAttach = false;\n break;\n }\n }\n if (!script) {\n const attrs = info.attrs;\n script = document.createElement('script');\n script.type = (attrs == null ? void 0 : attrs['type']) === 'module' ? 'module' : 'text/javascript';\n let createScriptRes = undefined;\n if (info.createScriptHook) {\n createScriptRes = info.createScriptHook(info.url, info.attrs);\n if (createScriptRes instanceof HTMLScriptElement) {\n script = createScriptRes;\n } else if (typeof createScriptRes === 'object') {\n if ('script' in createScriptRes && createScriptRes.script) {\n script = createScriptRes.script;\n }\n if ('timeout' in createScriptRes && createScriptRes.timeout) {\n timeout = createScriptRes.timeout;\n }\n }\n }\n if (!script.src) {\n script.src = info.url;\n }\n if (attrs && !createScriptRes) {\n Object.keys(attrs).forEach((name)=>{\n if (script) {\n if (name === 'async' || name === 'defer') {\n script[name] = attrs[name];\n // Attributes that do not exist are considered overridden\n } else if (!script.getAttribute(name)) {\n script.setAttribute(name, attrs[name]);\n }\n }\n });\n }\n }\n const onScriptComplete = async (prev, // eslint-disable-next-line @typescript-eslint/no-explicit-any\n event)=>{\n clearTimeout(timeoutId);\n const onScriptCompleteCallback = ()=>{\n if ((event == null ? void 0 : event.type) === 'error') {\n (info == null ? void 0 : info.onErrorCallback) && (info == null ? void 0 : info.onErrorCallback(event));\n } else {\n (info == null ? void 0 : info.cb) && (info == null ? void 0 : info.cb());\n }\n };\n // Prevent memory leaks in IE.\n if (script) {\n script.onerror = null;\n script.onload = null;\n safeWrapper(()=>{\n const { needDeleteScript = true } = info;\n if (needDeleteScript) {\n (script == null ? void 0 : script.parentNode) && script.parentNode.removeChild(script);\n }\n });\n if (prev && typeof prev === 'function') {\n const result = prev(event);\n if (result instanceof Promise) {\n const res = await result;\n onScriptCompleteCallback();\n return res;\n }\n onScriptCompleteCallback();\n return result;\n }\n }\n onScriptCompleteCallback();\n };\n script.onerror = onScriptComplete.bind(null, script.onerror);\n script.onload = onScriptComplete.bind(null, script.onload);\n timeoutId = setTimeout(()=>{\n onScriptComplete(null, new Error(`Remote script \"${info.url}\" time-outed.`));\n }, timeout);\n return {\n script,\n needAttach\n };\n}\nfunction createLink(info) {\n // <link rel=\"preload\" href=\"script.js\" as=\"script\">\n // Retrieve the existing script element by its src attribute\n let link = null;\n let needAttach = true;\n const links = document.getElementsByTagName('link');\n for(let i = 0; i < links.length; i++){\n const l = links[i];\n const linkHref = l.getAttribute('href');\n const linkRef = l.getAttribute('ref');\n if (linkHref && isStaticResourcesEqual(linkHref, info.url) && linkRef === info.attrs['ref']) {\n link = l;\n needAttach = false;\n break;\n }\n }\n if (!link) {\n link = document.createElement('link');\n link.setAttribute('href', info.url);\n let createLinkRes = undefined;\n const attrs = info.attrs;\n if (info.createLinkHook) {\n createLinkRes = info.createLinkHook(info.url, attrs);\n if (createLinkRes instanceof HTMLLinkElement) {\n link = createLinkRes;\n }\n }\n if (attrs && !createLinkRes) {\n Object.keys(attrs).forEach((name)=>{\n if (link && !link.getAttribute(name)) {\n link.setAttribute(name, attrs[name]);\n }\n });\n }\n }\n const onLinkComplete = (prev, // eslint-disable-next-line @typescript-eslint/no-explicit-any\n event)=>{\n const onLinkCompleteCallback = ()=>{\n if ((event == null ? void 0 : event.type) === 'error') {\n (info == null ? void 0 : info.onErrorCallback) && (info == null ? void 0 : info.onErrorCallback(event));\n } else {\n (info == null ? void 0 : info.cb) && (info == null ? void 0 : info.cb());\n }\n };\n // Prevent memory leaks in IE.\n if (link) {\n link.onerror = null;\n link.onload = null;\n safeWrapper(()=>{\n const { needDeleteLink = true } = info;\n if (needDeleteLink) {\n (link == null ? void 0 : link.parentNode) && link.parentNode.removeChild(link);\n }\n });\n if (prev) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const res = prev(event);\n onLinkCompleteCallback();\n return res;\n }\n }\n onLinkCompleteCallback();\n };\n link.onerror = onLinkComplete.bind(null, link.onerror);\n link.onload = onLinkComplete.bind(null, link.onload);\n return {\n link,\n needAttach\n };\n}\nfunction loadScript(url, info) {\n const { attrs = {}, createScriptHook } = info;\n return new Promise((resolve, reject)=>{\n const { script, needAttach } = createScript({\n url,\n cb: resolve,\n onErrorCallback: reject,\n attrs: polyfills._extends({\n fetchpriority: 'high'\n }, attrs),\n createScriptHook,\n needDeleteScript: true\n });\n needAttach && document.head.appendChild(script);\n });\n}\n\nfunction importNodeModule(name) {\n if (!name) {\n throw new Error('import specifier is required');\n }\n const importModule = new Function('name', `return import(name)`);\n return importModule(name).then((res)=>res).catch((error)=>{\n console.error(`Error importing module ${name}:`, error);\n throw error;\n });\n}\nconst loadNodeFetch = async ()=>{\n const fetchModule = await importNodeModule('node-fetch');\n return fetchModule.default || fetchModule;\n};\nconst lazyLoaderHookFetch = async (input, init, loaderHook)=>{\n const hook = (url, init)=>{\n return loaderHook.lifecycle.fetch.emit(url, init);\n };\n const res = await hook(input, init || {});\n if (!res || !(res instanceof Response)) {\n const fetchFunction = typeof fetch === 'undefined' ? await loadNodeFetch() : fetch;\n return fetchFunction(input, init || {});\n }\n return res;\n};\nfunction createScriptNode(url, cb, attrs, loaderHook) {\n if (loaderHook == null ? void 0 : loaderHook.createScriptHook) {\n const hookResult = loaderHook.createScriptHook(url);\n if (hookResult && typeof hookResult === 'object' && 'url' in hookResult) {\n url = hookResult.url;\n }\n }\n let urlObj;\n try {\n urlObj = new URL(url);\n } catch (e) {\n console.error('Error constructing URL:', e);\n cb(new Error(`Invalid URL: ${e}`));\n return;\n }\n const getFetch = async ()=>{\n if (loaderHook == null ? void 0 : loaderHook.fetch) {\n return (input, init)=>lazyLoaderHookFetch(input, init, loaderHook);\n }\n return typeof fetch === 'undefined' ? loadNodeFetch() : fetch;\n };\n const handleScriptFetch = async (f, urlObj)=>{\n try {\n var //@ts-ignore\n _vm_constants;\n const res = await f(urlObj.href);\n const data = await res.text();\n const [path, vm] = await Promise.all([\n importNodeModule('path'),\n importNodeModule('vm')\n ]);\n const scriptContext = {\n exports: {},\n module: {\n exports: {}\n }\n };\n const urlDirname = urlObj.pathname.split('/').slice(0, -1).join('/');\n const filename = path.basename(urlObj.pathname);\n var _vm_constants_USE_MAIN_CONTEXT_DEFAULT_LOADER;\n const script = new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data}\\n})`, {\n filename,\n importModuleDynamically: (_vm_constants_USE_MAIN_CONTEXT_DEFAULT_LOADER = (_vm_constants = vm.constants) == null ? void 0 : _vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER) != null ? _vm_constants_USE_MAIN_CONTEXT_DEFAULT_LOADER : importNodeModule\n });\n script.runInThisContext()(scriptContext.exports, scriptContext.module, eval('require'), urlDirname, filename);\n const exportedInterface = scriptContext.module.exports || scriptContext.exports;\n if (attrs && exportedInterface && attrs['globalName']) {\n const container = exportedInterface[attrs['globalName']] || exportedInterface;\n cb(undefined, container);\n return;\n }\n cb(undefined, exportedInterface);\n } catch (e) {\n cb(e instanceof Error ? e : new Error(`Script execution error: ${e}`));\n }\n };\n getFetch().then(async (f)=>{\n if ((attrs == null ? void 0 : attrs['type']) === 'esm' || (attrs == null ? void 0 : attrs['type']) === 'module') {\n return loadModule(urlObj.href, {\n fetch: f,\n vm: await importNodeModule('vm')\n }).then(async (module)=>{\n await module.evaluate();\n cb(undefined, module.namespace);\n }).catch((e)=>{\n cb(e instanceof Error ? e : new Error(`Script execution error: ${e}`));\n });\n }\n handleScriptFetch(f, urlObj);\n }).catch((err)=>{\n cb(err);\n });\n}\nfunction loadScriptNode(url, info) {\n return new Promise((resolve, reject)=>{\n createScriptNode(url, (error, scriptContext)=>{\n if (error) {\n reject(error);\n } else {\n var _info_attrs, _info_attrs1;\n const remoteEntryKey = (info == null ? void 0 : (_info_attrs = info.attrs) == null ? void 0 : _info_attrs['globalName']) || `__FEDERATION_${info == null ? void 0 : (_info_attrs1 = info.attrs) == null ? void 0 : _info_attrs1['name']}:custom__`;\n const entryExports = globalThis[remoteEntryKey] = scriptContext;\n resolve(entryExports);\n }\n }, info.attrs, info.loaderHook);\n });\n}\nasync function loadModule(url, options) {\n const { fetch: fetch1, vm } = options;\n const response = await fetch1(url);\n const code = await response.text();\n const module = new vm.SourceTextModule(code, {\n // @ts-ignore\n importModuleDynamically: async (specifier, script)=>{\n const resolvedUrl = new URL(specifier, url).href;\n return loadModule(resolvedUrl, options);\n }\n });\n await module.link(async (specifier)=>{\n const resolvedUrl = new URL(specifier, url).href;\n const module = await loadModule(resolvedUrl, options);\n return module;\n });\n return module;\n}\n\nfunction normalizeOptions(enableDefault, defaultOptions, key) {\n return function(options) {\n if (options === false) {\n return false;\n }\n if (typeof options === 'undefined') {\n if (enableDefault) {\n return defaultOptions;\n } else {\n return false;\n }\n }\n if (options === true) {\n return defaultOptions;\n }\n if (options && typeof options === 'object') {\n return polyfills._extends({}, defaultOptions, options);\n }\n throw new Error(`Unexpected type for \\`${key}\\`, expect boolean/undefined/object, got: ${typeof options}`);\n };\n}\n\nexports.BROWSER_LOG_KEY = BROWSER_LOG_KEY;\nexports.BROWSER_LOG_VALUE = BROWSER_LOG_VALUE;\nexports.ENCODE_NAME_PREFIX = ENCODE_NAME_PREFIX;\nexports.EncodedNameTransformMap = EncodedNameTransformMap;\nexports.FederationModuleManifest = FederationModuleManifest;\nexports.MANIFEST_EXT = MANIFEST_EXT;\nexports.MFModuleType = MFModuleType;\nexports.MFPrefetchCommon = MFPrefetchCommon;\nexports.MODULE_DEVTOOL_IDENTIFIER = MODULE_DEVTOOL_IDENTIFIER;\nexports.ManifestFileName = ManifestFileName;\nexports.NameTransformMap = NameTransformMap;\nexports.NameTransformSymbol = NameTransformSymbol;\nexports.SEPARATOR = SEPARATOR;\nexports.StatsFileName = StatsFileName;\nexports.TEMP_DIR = TEMP_DIR;\nexports.assert = assert;\nexports.composeKeyWithSeparator = composeKeyWithSeparator;\nexports.containerPlugin = ContainerPlugin;\nexports.containerReferencePlugin = ContainerReferencePlugin;\nexports.createLink = createLink;\nexports.createLogger = createLogger;\nexports.createScript = createScript;\nexports.createScriptNode = createScriptNode;\nexports.decodeName = decodeName;\nexports.encodeName = encodeName;\nexports.error = error;\nexports.generateExposeFilename = generateExposeFilename;\nexports.generateShareFilename = generateShareFilename;\nexports.generateSnapshotFromManifest = generateSnapshotFromManifest;\nexports.getProcessEnv = getProcessEnv;\nexports.getResourceUrl = getResourceUrl;\nexports.inferAutoPublicPath = inferAutoPublicPath;\nexports.isBrowserEnv = isBrowserEnv;\nexports.isDebugMode = isDebugMode;\nexports.isManifestProvider = isManifestProvider;\nexports.isRequiredVersion = isRequiredVersion;\nexports.isStaticResourcesEqual = isStaticResourcesEqual;\nexports.loadScript = loadScript;\nexports.loadScriptNode = loadScriptNode;\nexports.logger = logger;\nexports.moduleFederationPlugin = ModuleFederationPlugin;\nexports.normalizeOptions = normalizeOptions;\nexports.parseEntry = parseEntry;\nexports.safeToString = safeToString;\nexports.safeWrapper = safeWrapper;\nexports.sharePlugin = SharePlugin;\nexports.simpleJoinRemoteEntry = simpleJoinRemoteEntry;\nexports.warn = warn;\n","'use strict';\n\nfunction _extends() {\n _extends = Object.assign || function assign(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nexports._extends = _extends;\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"@module-federation/runtime-tools/runtime\"), exports);\n//# sourceMappingURL=runtime.js.map","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/browser/index.ts\nvar browser_exports = {};\n__export(browser_exports, {\n createLogger: () => createLogger2,\n logger: () => logger\n});\nmodule.exports = __toCommonJS(browser_exports);\n\n// src/browser/color.ts\nvar supportsSubstitutions = void 0;\nvar supportColor = () => {\n if (typeof supportsSubstitutions !== \"undefined\") {\n return supportsSubstitutions;\n }\n const originalConsoleLog = console.log;\n try {\n const testString = \"color test\";\n const css = \"color: red;\";\n supportsSubstitutions = false;\n console.log = (...args) => {\n if (args[0] === `%c${testString}` && args[1] === css) {\n supportsSubstitutions = true;\n }\n };\n console.log(`%c${testString}`, css);\n } catch (e) {\n supportsSubstitutions = false;\n } finally {\n console.log = originalConsoleLog;\n }\n return supportsSubstitutions;\n};\nvar ansiToCss = {\n \"bold\": \"font-weight: bold;\",\n \"red\": \"color: red;\",\n \"green\": \"color: green;\",\n \"orange\": \"color: orange;\",\n \"dodgerblue\": \"color: dodgerblue;\",\n \"magenta\": \"color: magenta;\",\n \"gray\": \"color: gray;\"\n};\nvar formatter = (key) => supportColor() ? (input) => {\n if (Array.isArray(input)) {\n const [label, style] = input;\n return [`%c${label.replace(\"%c\", \"\")}`, style ? `${ansiToCss[key]}${style}` : `${ansiToCss[key] || \"\"}`];\n }\n return [`%c${String(input).replace(\"%c\", \"\")}`, ansiToCss[key] || \"\"];\n} : (input) => [String(input)];\nvar bold = formatter(\"bold\");\nvar red = formatter(\"red\");\nvar green = formatter(\"green\");\nvar orange = formatter(\"orange\");\nvar dodgerblue = formatter(\"dodgerblue\");\nvar magenta = formatter(\"magenta\");\nvar gray = formatter(\"gray\");\n\n// src/browser/utils.ts\nfunction getLabel(type, logType, labels) {\n let label = [\"\"];\n if (\"label\" in logType) {\n const labelText = type !== \"log\" ? labels[type] : void 0;\n label = [labelText || logType.label || \"\"];\n if (logType.color) {\n const colorResult = logType.color(label[0]);\n if (Array.isArray(colorResult) && colorResult.length === 2) {\n label = bold([colorResult[0], colorResult[1]]);\n } else {\n label = bold(colorResult[0] || \"\");\n }\n } else {\n label = bold(label[0]);\n }\n }\n label = label.filter(Boolean);\n return label;\n}\nfunction finalLog(label, text, args, message) {\n if (label.length) {\n if (Array.isArray(message)) {\n console.log(...label, ...message, ...args);\n } else {\n console.log(...label, text, ...args);\n }\n } else {\n Array.isArray(message) ? console.log(...message) : console.log(text, ...args);\n }\n}\n\n// src/constants.ts\nvar LOG_LEVEL = {\n error: 0,\n warn: 1,\n info: 2,\n log: 3,\n verbose: 4\n};\n\n// src/utils.ts\nvar errorStackRegExp = /at\\s.*:\\d+:\\d+[\\s\\)]*$/;\nvar anonymousErrorStackRegExp = /at\\s.*\\(<anonymous>\\)$/;\nvar isErrorStackMessage = (message) => errorStackRegExp.test(message) || anonymousErrorStackRegExp.test(message);\n\n// src/createLogger.ts\nfunction validateOptions(options) {\n const validatedOptions = { ...options };\n if (options.labels && typeof options.labels !== \"object\") {\n throw new Error(\"Labels must be an object\");\n }\n if (options.level && typeof options.level !== \"string\") {\n throw new Error(\"Level must be a string\");\n }\n return validatedOptions;\n}\nvar createLogger = (options = {}, { getLabel: getLabel2, handleError, finalLog: finalLog2, greet, LOG_TYPES: LOG_TYPES2 }) => {\n const validatedOptions = validateOptions(options);\n let maxLevel = validatedOptions.level || \"log\";\n let customLabels = validatedOptions.labels || {};\n let log = (type, message, ...args) => {\n if (LOG_LEVEL[LOG_TYPES2[type].level] > LOG_LEVEL[maxLevel]) {\n return;\n }\n if (message === void 0 || message === null) {\n return console.log();\n }\n let logType = LOG_TYPES2[type];\n let text = \"\";\n const label = getLabel2(type, logType, customLabels);\n if (message instanceof Error) {\n if (message.stack) {\n let [name, ...rest] = message.stack.split(\"\\n\");\n if (name.startsWith(\"Error: \")) {\n name = name.slice(7);\n }\n text = `${name}\n${handleError(rest.join(\"\\n\"))}`;\n } else {\n text = message.message;\n }\n } else if (logType.level === \"error\" && typeof message === \"string\") {\n let lines = message.split(\"\\n\");\n text = lines.map((line) => isErrorStackMessage(line) ? handleError(line) : line).join(\"\\n\");\n } else {\n text = `${message}`;\n }\n finalLog2(label, text, args, message);\n };\n let logger2 = {\n // greet\n greet: (message) => log(\"log\", greet(message))\n };\n Object.keys(LOG_TYPES2).forEach((key) => {\n logger2[key] = (...args) => log(key, ...args);\n });\n Object.defineProperty(logger2, \"level\", {\n get: () => maxLevel,\n set(val) {\n maxLevel = val;\n }\n });\n Object.defineProperty(logger2, \"labels\", {\n get: () => customLabels,\n set(val) {\n customLabels = val;\n }\n });\n logger2.override = (customLogger) => {\n Object.assign(logger2, customLogger);\n };\n return logger2;\n};\n\n// src/browser/gradient.ts\nvar startColor = [189, 255, 243];\nvar endColor = [74, 194, 154];\nvar isWord = (char) => !/[\\s\\n]/.test(char);\nfunction gradient(message) {\n if (!supportColor()) {\n return [message];\n }\n const chars = [...message];\n const words = chars.filter(isWord);\n const steps = words.length - 1;\n if (steps === 0) {\n console.log(`%c${message}`, `color: rgb(${startColor.join(\",\")}); font-weight: bold;`);\n return [message];\n }\n let output = \"\";\n let styles = [];\n chars.forEach((char) => {\n if (isWord(char)) {\n const progress = words.indexOf(char) / steps;\n const r = Math.round(startColor[0] + (endColor[0] - startColor[0]) * progress);\n const g = Math.round(startColor[1] + (endColor[1] - startColor[1]) * progress);\n const b = Math.round(startColor[2] + (endColor[2] - startColor[2]) * progress);\n output += `%c${char}`;\n styles.push(`color: rgb(${r},${g},${b}); font-weight: bold;`);\n } else {\n output += char;\n }\n });\n return [output, ...styles];\n}\n\n// src/browser/constants.ts\nvar LOG_TYPES = {\n // Level error\n error: {\n label: \"error\",\n level: \"error\",\n color: red\n },\n // Level warn\n warn: {\n label: \"warn\",\n level: \"warn\",\n color: orange\n },\n // Level info\n info: {\n label: \"info\",\n level: \"info\",\n color: dodgerblue\n },\n start: {\n label: \"start\",\n level: \"info\",\n color: dodgerblue\n },\n ready: {\n label: \"ready\",\n level: \"info\",\n color: green\n },\n success: {\n label: \"success\",\n level: \"info\",\n color: green\n },\n // Level log\n log: {\n level: \"log\"\n },\n // Level debug\n debug: {\n label: \"debug\",\n level: \"verbose\",\n color: magenta\n }\n};\n\n// src/browser/createLogger.ts\nfunction createLogger2(options = {}) {\n return createLogger(options, {\n handleError: (msg) => msg,\n getLabel,\n gradient,\n finalLog,\n LOG_TYPES,\n greet: (msg) => {\n return gradient(msg);\n }\n });\n}\n\n// src/browser/index.ts\nvar logger = createLogger2();\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createLogger,\n logger\n});\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.g = (() => {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\r\n * 日志模块,提供默认日志格式化、默认IndexDB存储\r\n * 说明:\r\n * 1. 在IndexDB不可用的时候,允许日志不记录或丢失情况,也无需降级处理\r\n * - IndexDB不可用场景:隐私模式、存储空间不足、浏览器不支持等\r\n * - 日志丢失影响:仅影响问题排查,不影响核心业务功能\r\n * 2. 浏览器日志仅用于辅助分析问题,对于日志的健壮性要求不高,无需重试和备用策略\r\n * - 适用场景:开发调试、线上问题排查\r\n * - 不适用场景:业务审计、关键操作记录等\r\n */\r\n\r\nimport type { DBSchema, IDBPDatabase } from 'idb';\r\nimport { openDB } from 'idb';\r\nimport dayjs from 'dayjs';\r\n\r\nexport enum LYLogLevel {\r\n NONE = 0,\r\n ERROR = 1,\r\n WARN = 2,\r\n INFO = 3,\r\n DEBUG = 4,\r\n}\r\n\r\ntype ConsoleLevel = 'log' | 'warn' | 'error' | 'info';\r\n\r\n// 日志级别到字符串的映射\r\nconst levelToString: Record<LYLogLevel, string> = {\r\n [LYLogLevel.NONE]: 'none',\r\n [LYLogLevel.ERROR]: 'error',\r\n [LYLogLevel.WARN]: 'warn',\r\n [LYLogLevel.INFO]: 'info',\r\n [LYLogLevel.DEBUG]: 'debug',\r\n};\r\n\r\nexport interface ILYLogFormatter {\r\n format(level: string, namespace: string, args: unknown[]): string;\r\n}\r\n\r\nexport interface ILYLogStorage {\r\n printToConsole?: boolean; // 可选,是否打印到控制台\r\n write(level: string, message: string, meta?: any): Promise<void>;\r\n download(filename: string): Promise<void>;\r\n}\r\n\r\nexport interface ILYLogger {\r\n readonly level: LYLogLevel;\r\n setLevel(level: LYLogLevel): void;\r\n error(...args: unknown[]): void;\r\n warn(...args: unknown[]): void;\r\n info(...args: unknown[]): void;\r\n debug(...args: unknown[]): void;\r\n download(): Promise<void>;\r\n}\r\n\r\n// 默认日志格式化器\r\nexport class LYDefaultLogFormatter implements ILYLogFormatter {\r\n format(level: string, namespace: string, args: unknown[]): string {\r\n return `[${namespace}] ${this.formatArgs(args)}`;\r\n }\r\n\r\n private formatArgs(args: unknown[]): string {\r\n return args\r\n .map(arg => {\r\n if (arg instanceof Error) {\r\n return `${arg.name}: ${arg.message}\\n${arg.stack}`;\r\n }\r\n if (typeof arg === 'object') {\r\n return JSON.stringify(arg, (key, value) => {\r\n if (value instanceof Error) {\r\n return {\r\n name: value.name,\r\n message: value.message,\r\n stack: value.stack,\r\n };\r\n }\r\n return value;\r\n });\r\n }\r\n return String(arg);\r\n })\r\n .join(' ');\r\n }\r\n}\r\n\r\ninterface LYLog {\r\n id: string;\r\n timestamp: number;\r\n level: string;\r\n message: string;\r\n meta?: any;\r\n}\r\n\r\n// IndexedDB 日志存储\r\ninterface LYLogDB extends DBSchema {\r\n logs: {\r\n key: string;\r\n value: LYLog;\r\n indexes: {\r\n 'by-level': string;\r\n 'by-timestamp': number;\r\n };\r\n };\r\n}\r\n\r\nexport class LYIndexedDBLogStorage implements ILYLogStorage {\r\n private _db!: IDBPDatabase<LYLogDB>;\r\n private _maxLogs: number = 10000;\r\n private _logBuffer: LYLogDB['logs']['value'][] = [];\r\n private _bufferSize: number = 100;\r\n private _flushInterval: number = 5000;\r\n private _isFlushing: boolean = false;\r\n private _printToConsole: boolean = false;\r\n\r\n constructor() {\r\n this.init();\r\n }\r\n\r\n get printToConsole() {\r\n return this._printToConsole;\r\n }\r\n\r\n set printToConsole(value: boolean) {\r\n this._printToConsole = value;\r\n }\r\n\r\n private async init(): Promise<void> {\r\n try {\r\n this._db = await openDB<LYLogDB>('ly-db', 1, {\r\n upgrade(db) {\r\n const store = db.createObjectStore('logs', {\r\n keyPath: 'id',\r\n });\r\n store.createIndex('by-level', 'level');\r\n store.createIndex('by-timestamp', 'timestamp');\r\n },\r\n });\r\n setInterval(() => this.flushBuffer(), this._flushInterval);\r\n } catch (error) {\r\n console.error('IndexedDB 初始化失败:', error);\r\n }\r\n }\r\n\r\n private generateId(): string {\r\n const timestamp = Date.now();\r\n const random = Math.random().toString(36).substring(2, 8);\r\n return `${timestamp}-${random}`;\r\n }\r\n\r\n private getMicroTimestamp(): number {\r\n const now = performance.now();\r\n return Math.floor(now * 1000); // 转换为微秒\r\n }\r\n\r\n async write(level: string, message: string, meta?: any): Promise<void> {\r\n try {\r\n // 根据开关决定是否打印到控制台\r\n if (this._printToConsole) {\r\n const method = level.toLowerCase() as ConsoleLevel;\r\n const consoleMethod = console[method] || console.log;\r\n consoleMethod(message);\r\n if (meta) {\r\n consoleMethod(meta);\r\n }\r\n }\r\n\r\n const logEntry: LYLogDB['logs']['value'] = {\r\n id: this.generateId(),\r\n timestamp: this.getMicroTimestamp(),\r\n level,\r\n message,\r\n meta,\r\n };\r\n\r\n this._logBuffer.push(logEntry);\r\n\r\n if (this._logBuffer.length >= this._bufferSize) {\r\n await this.flushBuffer();\r\n }\r\n } catch (error) {\r\n console.error('日志存储失败:', error);\r\n }\r\n }\r\n\r\n private async flushBuffer(): Promise<void> {\r\n if (!this._db) return;\r\n if (this._logBuffer.length === 0 || this._isFlushing) return;\r\n\r\n this._isFlushing = true;\r\n const logsToFlush = [...this._logBuffer];\r\n try {\r\n this._logBuffer = [];\r\n\r\n const tx = this._db.transaction('logs', 'readwrite');\r\n for (const log of logsToFlush) {\r\n await tx.store.add(log);\r\n }\r\n await tx.done;\r\n\r\n await this.cleanupOldLogs();\r\n } catch (error) {\r\n console.error('日志刷新失败:', error);\r\n // 如果写入失败,将日志放回缓冲区\r\n this._logBuffer = [...this._logBuffer, ...logsToFlush];\r\n // 溢出保护\r\n if (this._logBuffer.length > this._maxLogs) {\r\n // 丢弃最旧的日志,只保留最新的 maxLogs 条\r\n this._logBuffer = this._logBuffer.slice(-this._maxLogs);\r\n }\r\n } finally {\r\n this._isFlushing = false;\r\n }\r\n }\r\n\r\n private async cleanupOldLogs(): Promise<void> {\r\n const count = await this._db.count('logs');\r\n if (count > this._maxLogs) {\r\n const tx = this._db.transaction('logs', 'readwrite');\r\n const index = tx.store.index('by-timestamp');\r\n const cursor = await index.openCursor();\r\n\r\n let deleteCount = count - this._maxLogs;\r\n while (deleteCount > 0 && cursor) {\r\n await cursor.delete();\r\n deleteCount--;\r\n await cursor.continue();\r\n }\r\n }\r\n }\r\n\r\n private async getAllLogs(): Promise<LYLog[]> {\r\n const tx = this._db.transaction('logs', 'readonly');\r\n const store = tx.store;\r\n const logs: LYLog[] = [];\r\n let cursor = await store.index('by-timestamp').openCursor();\r\n\r\n while (cursor) {\r\n logs.push(cursor.value);\r\n cursor = await cursor.continue();\r\n }\r\n\r\n return logs;\r\n }\r\n\r\n async download(filename: string): Promise<void> {\r\n const logs = await this.getAllLogs();\r\n const content = logs\r\n .map(log => {\r\n const time = dayjs(log.timestamp).format('YYYY-MM-DD HH:mm:ss.SSS');\r\n const level = log.level.toUpperCase().padEnd(5, ' ');\r\n return `${time} ${level} ${log.message}`;\r\n })\r\n .join('\\n');\r\n\r\n const blob = new Blob([content], { type: 'text/plain' });\r\n const url = URL.createObjectURL(blob);\r\n\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = `${filename}.log`;\r\n document.body.appendChild(a);\r\n a.click();\r\n\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(url);\r\n }\r\n}\r\n\r\n// 模块变量\r\nlet formatterImpl: ILYLogFormatter = new LYDefaultLogFormatter();\r\nlet storageImpl: ILYLogStorage = new LYIndexedDBLogStorage();\r\nif (process.env.NODE_ENV === 'development') {\r\n storageImpl.printToConsole = true;\r\n}\r\n\r\n// 设置函数\r\nexport function setFormatter(formatter: ILYLogFormatter): void {\r\n formatterImpl = formatter;\r\n}\r\n\r\nexport function setStorage(storage: ILYLogStorage): void {\r\n storageImpl = storage;\r\n}\r\n\r\nexport function setPrintToConsole(enabled: boolean): void {\r\n storageImpl.printToConsole = enabled;\r\n}\r\n\r\n// 日志记录器\r\nexport class LYLogger implements ILYLogger {\r\n private _level: LYLogLevel;\r\n private _namespace: string;\r\n\r\n constructor(namespace: string, level: LYLogLevel = LYLogLevel.INFO) {\r\n this._level = level;\r\n this._namespace = namespace;\r\n }\r\n\r\n get level(): LYLogLevel {\r\n return this._level;\r\n }\r\n\r\n setLevel(level: LYLogLevel): void {\r\n this._level = level;\r\n }\r\n\r\n private async log(level: LYLogLevel, ...args: unknown[]): Promise<void> {\r\n if (this._level === LYLogLevel.NONE || level > this._level) {\r\n return;\r\n }\r\n\r\n try {\r\n const levelStr = levelToString[level];\r\n const message = formatterImpl.format(levelStr, this._namespace, args);\r\n await storageImpl.write(levelStr, message);\r\n } catch (error) {\r\n console.error('日志记录失败:', error);\r\n }\r\n }\r\n\r\n error(...args: unknown[]): void {\r\n this.log(LYLogLevel.ERROR, ...args);\r\n }\r\n\r\n warn(...args: unknown[]): void {\r\n this.log(LYLogLevel.WARN, ...args);\r\n }\r\n\r\n info(...args: unknown[]): void {\r\n this.log(LYLogLevel.INFO, ...args);\r\n }\r\n\r\n debug(...args: unknown[]): void {\r\n this.log(LYLogLevel.DEBUG, ...args);\r\n }\r\n\r\n async download(): Promise<void> {\r\n await storageImpl.download(dayjs().format('YYYY-MM-DD HH:mm:ss.SSS'));\r\n }\r\n}\r\n\r\n// 默认导出\r\nexport const logger = new LYLogger('LYLogger');\r\n","import events from 'events';\r\nimport { LYLogger } from '../logger';\r\n\r\nexport type LYConstructor<T> = new (...args: any[]) => T;\r\n\r\ntype LYClassDesc = {\r\n name: string;\r\n Construct: LYConstructor<LYObject>;\r\n};\r\n\r\nconst classes: {\r\n [key: string]: LYClassDesc;\r\n} = {};\r\n\r\nevents.EventEmitter.prototype.setMaxListeners(10000);\r\n\r\nexport class LYObject extends events.EventEmitter {\r\n private _logger: LYLogger;\r\n private static _instances = new Map<string, LYObject>();\r\n\r\n static registerClass(name: string, Construct: LYConstructor<LYObject>): void {\r\n if (name in classes) {\r\n throw new Error(`class ${name} already register`);\r\n }\r\n classes[name] = {\r\n name,\r\n Construct,\r\n };\r\n }\r\n\r\n // 继承时自动注册,使用类名作为注册名\r\n protected static autoRegister(this: LYConstructor<LYObject>): void {\r\n const className = this.name;\r\n if (!className || className === 'LYObject') return;\r\n \r\n if (!(className in classes)) {\r\n classes[className] = {\r\n name: className,\r\n Construct: this,\r\n };\r\n }\r\n }\r\n\r\n static getInstance<T extends LYObject>(obj: LYConstructor<T> | string, ...args: unknown[]): T {\r\n const className: string = typeof obj !== 'string' ? LYObject.getClassName(obj) : obj;\r\n if (this._instances.has(className)) {\r\n return this._instances.get(className) as T;\r\n }\r\n const ctor = this.getClass(className);\r\n const instance = new ctor(...args) as T;\r\n this._instances.set(className, instance);\r\n return instance;\r\n }\r\n\r\n static getClassName<T extends LYObject>(obj: T | LYConstructor<T>, def?: string): string {\r\n const Construct =\r\n typeof obj === 'function' ? obj : ((obj as T).constructor as LYConstructor<T>);\r\n \r\n // 首先尝试从已注册的类中查找\r\n const name = Object.keys(classes).find(k => classes[k].Construct === Construct);\r\n if (name) return name;\r\n \r\n // 如果未注册,尝试使用类名\r\n const className = Construct.name;\r\n if (className && className !== 'Object') {\r\n // 如果有默认值,返回默认值\r\n if (def) return def;\r\n // 否则尝试自动注册\r\n LYObject.autoRegister();\r\n return className;\r\n }\r\n \r\n // 最后返回默认值或抛出错误\r\n if (def) return def;\r\n throw new Error(`class ${Construct.name} not registered and cannot be auto-registered`);\r\n }\r\n\r\n static getClass<T extends LYObject>(name: string, def?: LYConstructor<T>): LYConstructor<T> {\r\n const Construct = (classes[name]?.Construct as LYConstructor<T>) || def;\r\n if (!Construct) throw new Error(`class ${name} not registered`);\r\n return Construct;\r\n }\r\n\r\n static getDerivedClasses<T extends LYObject>(\r\n name: string | LYConstructor<T>\r\n ): LYConstructor<T>[] {\r\n const Construct = typeof name === 'string' ? classes[name]?.Construct : name;\r\n if (!Construct) {\r\n throw new Error(`class ${name} not registered`);\r\n }\r\n return Object.values(classes).reduce((previousValue, currentValue) => {\r\n if (currentValue.Construct.prototype instanceof Construct) {\r\n previousValue.push(currentValue.Construct as LYConstructor<T>);\r\n }\r\n return previousValue;\r\n }, [] as LYConstructor<T>[]);\r\n }\r\n\r\n static get classes(): { [key: string]: LYClassDesc } {\r\n return classes;\r\n }\r\n\r\n constructor() {\r\n super();\r\n // 自动注册当前类\r\n LYObject.autoRegister();\r\n this._logger = new LYLogger(LYObject.getClassName(this));\r\n }\r\n\r\n get className(): string {\r\n return LYObject.getClassName(this);\r\n }\r\n\r\n is(className: string): boolean {\r\n const Construct = LYObject.getClass(className);\r\n if (!Construct) {\r\n return false;\r\n }\r\n return this instanceof Construct;\r\n }\r\n\r\n get logger(): LYLogger {\r\n return this._logger;\r\n }\r\n}\r\n\r\nexport function register(name: string): (Construct: LYConstructor<LYObject>) => void {\r\n return function (Construct: LYConstructor<LYObject>) {\r\n LYObject.registerClass(name, Construct);\r\n };\r\n}\r\n\r\ntype LYEventsDefinition = { [event: string]: (...args: any[]) => void };\r\n\r\ntype LYAny<T> = {\r\n [key: string]: T;\r\n};\r\n\r\ntype LYValueType<T> = T extends LYAny<infer U> ? U : never;\r\n\r\ntype LYUnionToIntersection<Union> = (\r\n Union extends any ? (argument: Union) => void : never\r\n) extends (argument: infer Intersection) => void\r\n ? Intersection\r\n : never;\r\n\r\nexport type LYEventsWithoutAny<T extends { [event: string]: (...args: any[]) => void }> = {\r\n on: LYUnionToIntersection<LYValueType<{ [K in keyof T]: (event: K, listener: T[K]) => any }>>;\r\n emit: LYUnionToIntersection<\r\n LYValueType<{\r\n [K in keyof T]: (event: K, ...args: Parameters<T[K]>) => boolean;\r\n }>\r\n >;\r\n};\r\n\r\nexport type LYEvents<T extends LYEventsDefinition> = LYEventsWithoutAny<T> & {\r\n on(event: string, listener: (...args: any[]) => void): any;\r\n emit(event: string, ...args: any[]): any;\r\n};\r\n\r\nexport interface ILYEvents<T extends LYEventsDefinition> {\r\n on: LYEventsWithoutAny<T>['on'];\r\n off: LYEventsWithoutAny<T>['on'];\r\n once: LYEventsWithoutAny<T>['on'];\r\n addListener: LYEventsWithoutAny<T>['on'];\r\n removeListener: LYEventsWithoutAny<T>['on'];\r\n emit: LYEventsWithoutAny<T>['emit'];\r\n}\r\n\r\nexport function wait(interval?: number): Promise<void> {\r\n\treturn new Promise((resolve) => (interval ? setTimeout(resolve, interval) : setTimeout(resolve, 0)));\r\n}","/**\r\n * LY系列错误基类\r\n */\r\nexport class LYError extends Error {\r\n private _details?: any;\r\n protected _code: string;\r\n\r\n constructor(message: string, code: string = 'UNKNOWN_ERROR', details?: any) {\r\n super(message);\r\n this.name = this.constructor.name;\r\n this._code = code;\r\n this._details = details;\r\n \r\n // 确保堆栈跟踪正确显示\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, this.constructor);\r\n }\r\n }\r\n\r\n get code(): string {\r\n return this._code;\r\n }\r\n\r\n get details(): any {\r\n return this._details;\r\n }\r\n}\r\n\r\n/**\r\n * 加密相关错误类\r\n */\r\nexport class LYCryptoError extends LYError {\r\n constructor(message: string, code: string = 'CRYPTO_ERROR', details?: any) {\r\n super(message, code, details);\r\n }\r\n}","import type { ILYEvents, LYEvents } from '../object';\r\nimport { LYObject, register } from '../object';\r\n\r\ntype LYEnvEvents = {\r\n\tchange(key: string): void;\r\n};\r\n\r\nexport const REMOTE_ENTRY = 'remoteComponentEntry.js';\r\nexport const REMOTE_MODULE = 'Index';\r\n\r\nexport interface ILYEnv extends ILYEvents<LYEnvEvents> {\r\n\tget(key: string, def?: unknown): unknown;\r\n\tset(key: string, value: unknown): void;\r\n\thas(key: string): boolean;\r\n\ton: LYEvents<LYEnvEvents>['on'];\r\n\toff: LYEvents<LYEnvEvents>['on'];\r\n\tonce: LYEvents<LYEnvEvents>['on'];\r\n\taddListener: LYEvents<LYEnvEvents>['on'];\r\n\tremoveListener: LYEvents<LYEnvEvents>['on'];\r\n\temit: LYEvents<LYEnvEvents>['emit'];\r\n\treadonly version: string;\r\n\treadonly buildVersion: string;\r\n\treadonly isOem: boolean;\r\n\treadonly brand: string;\r\n\treadonly product: string;\r\n\treadonly embedProduct: string; // 嵌入产品和isRemote的组合\r\n\treadonly baseUrl: string;\r\n\treadonly isRemote: boolean;\t// 是否是远程组件\r\n\treadonly isIframe: boolean;\r\n\treadonly isElectron: boolean;\r\n\treadonly supportLanguages: string[];\r\n\t[key: string]: any;\r\n}\r\n\r\n// 存储所有 env 实例的 Map\r\nconst envInstances = new Map<string, LYEnv>();\r\n\r\n@register('LYEnv')\r\nexport class LYEnv extends LYObject implements ILYEnv {\r\n\ton: LYEvents<LYEnvEvents>['on'];\r\n\toff: LYEvents<LYEnvEvents>['on'];\r\n\tonce: LYEvents<LYEnvEvents>['on'];\r\n\taddListener: LYEvents<LYEnvEvents>['on'];\r\n\tremoveListener: LYEvents<LYEnvEvents>['on'];\r\n\temit: LYEvents<LYEnvEvents>['emit'];\r\n\t\r\n\t[key: string]: any; \r\n\r\n\tprivate _isOem: boolean = false;\r\n\tprivate _brand: string = '';\r\n\tprivate _baseUrl: string;\r\n\tprivate _version: string;\r\n\tprivate _buildVersion: string;\r\n\tprivate _product: string;\r\n\tprivate _embedProduct: string;\r\n\tprivate _isRemote: boolean;\r\n\tprivate _supportLanguages: string[];\r\n\r\n\tconstructor(product: string) {\r\n\t\tsuper();\r\n\t\tthis._product = product;\r\n\t\tenvInstances.set(this._product, this);\r\n\t}\r\n\r\n\tstatic override getInstance<T extends LYObject>(product: string): T {\r\n\t\treturn envInstances.get(product) as unknown as T;\r\n\t}\r\n\r\n\tset(key: string, value: unknown): void {\r\n\t\tthis[key] = value;\r\n\t\tthis.emit('change', key);\r\n\t}\r\n\r\n\tget(key: string, def?: unknown): unknown {\r\n\t\treturn key in this ? this[key] : def;\r\n\t}\r\n\r\n\thas(key: string): boolean {\r\n\t\treturn key in this;\r\n\t}\r\n\r\n\tget version(): string {\r\n\t\treturn this._version;\r\n\t}\r\n\tset version(value: string) {\r\n\t\tthis._version = value;\r\n\t}\r\n\r\n\tget buildVersion(): string {\r\n\t\treturn this._buildVersion;\r\n\t}\r\n\tset buildVersion(value: string) {\r\n\t\tthis._buildVersion = value;\r\n\t}\r\n\r\n\tget isOem(): boolean {\r\n\t\treturn this._isOem;\r\n\t}\r\n\tset isOem(value: boolean) {\r\n\t\tthis._isOem = value;\r\n\t}\r\n\r\n\tget brand(): string {\r\n\t\treturn this._brand;\r\n\t}\r\n\tset brand(value: string) {\r\n\t\tthis._brand = value;\r\n\t}\r\n\r\n\tget product(): string {\r\n\t\treturn this._product;\r\n\t}\r\n\tset product(value: string) {\r\n\t\tthis._product = value;\r\n\t}\r\n\r\n\tget embedProduct(): string {\r\n\t\treturn this._embedProduct;\r\n\t}\r\n\r\n\tset embedProduct(value: string) {\r\n\t\tthis._embedProduct = value;\r\n\t}\r\n\r\n\tget baseUrl(): string {\r\n\t\tif (!this._baseUrl) {\r\n\t\t\treturn window.origin;\r\n\t\t}\r\n\t\treturn this._baseUrl;\r\n\t}\r\n\r\n\tset baseUrl(value: string) {\r\n\t\tthis._baseUrl = value;\r\n\t}\r\n\r\n\tget isRemote(): boolean {\r\n\t\treturn this._isRemote;\r\n\t}\r\n\r\n\tset isRemote(value: boolean) {\r\n\t\tthis._isRemote = value;\r\n\t}\r\n\r\n\tget isIframe(): boolean {\r\n\t\treturn isIframe;\r\n\t}\r\n\r\n\tget isElectron(): boolean {\r\n\t\treturn isElectron;\r\n\t}\r\n\r\n\tget supportLanguages(): string[] {\r\n\t\treturn this._supportLanguages;\r\n\t}\r\n\r\n\tset supportLanguages(value: string[]) {\r\n\t\tthis._supportLanguages = value;\r\n\t}\r\n}\r\n\r\nexport const isIframe = window.self !== window.top;\r\n\r\nexport const isElectron = window.navigator.userAgent.indexOf('Electron') > -1;","import axios from 'axios';\r\nimport { LYObject, register } from '../object';\r\n\r\nconst CONFIG_ELEMENT_ID = 'uci-config';\r\ntype LYConfigMode = 'none' | 'base64' | 'json';\r\n\r\nfunction isPrimitive(value: any): boolean {\r\n return (\r\n (typeof value) in ['string', 'number', 'boolean', 'null', 'undefined'] ||\r\n value instanceof Date\r\n );\r\n}\r\n\r\nconst METADATA_KEY = Symbol('LYBaseConfigModel');\r\n\r\nexport function model<T extends typeof LYBaseConfigModel>(modelType: T) {\r\n return function (target: any, key: string): void {\r\n if (!target[METADATA_KEY]) {\r\n target[METADATA_KEY] = {};\r\n }\r\n target[METADATA_KEY][key] = { type: 'model', modelType };\r\n };\r\n}\r\n\r\nexport function array<T extends typeof LYBaseConfigModel>(modelType: T) {\r\n return function (target: any, key: string): void {\r\n if (!target[METADATA_KEY]) {\r\n target[METADATA_KEY] = {};\r\n }\r\n target[METADATA_KEY][key] = { type: 'list', modelType };\r\n };\r\n}\r\n\r\nexport function object<T extends typeof LYBaseConfigModel>(modelType: T) {\r\n return function (target: any, key: string): void {\r\n if (!target[METADATA_KEY]) {\r\n target[METADATA_KEY] = {};\r\n }\r\n target[METADATA_KEY][key] = { type: 'object', modelType };\r\n };\r\n}\r\n\r\nfunction load(config: Record<string, any>, target: any): void {\r\n Object.entries(config).forEach(([key, value]) => {\r\n if (typeof value === 'undefined' || value === null) {\r\n return;\r\n }\r\n const metadata = target[METADATA_KEY]?.[key];\r\n if (!metadata) {\r\n target[key] = value;\r\n return;\r\n }\r\n if (metadata.type === 'model') {\r\n if (typeof value !== 'object' || Array.isArray(value)) {\r\n throw new Error(`${key} must be an object`);\r\n }\r\n target[key] = new metadata.modelType();\r\n target[key].load(value);\r\n }\r\n if (metadata.type === 'list') {\r\n if (!Array.isArray(value)) {\r\n throw new Error(`${key} must be an array`);\r\n }\r\n target[key] = value.map((item: any) => {\r\n const model = new metadata.modelType();\r\n model.load(item);\r\n return model;\r\n });\r\n }\r\n if (metadata.type === 'object') {\r\n if (typeof value !== 'object' || Array.isArray(value)) {\r\n throw new Error(`${key} must be an object`);\r\n }\r\n target[key] = Object.entries(value).reduce((acc: Record<string, any>, [key, value]) => {\r\n const model = new metadata.modelType();\r\n model.load(value);\r\n acc[key] = model;\r\n return acc;\r\n }, {});\r\n }\r\n });\r\n}\r\n\r\nexport class LYBaseConfigModel {\r\n clone(): this {\r\n return JSON.parse(JSON.stringify(this));\r\n }\r\n\r\n load(config: Record<string, any>): void {\r\n load(config, this);\r\n }\r\n}\r\n\r\ninterface LYResultResponse {\r\n message: string;\r\n tips?: string;\r\n code: string | 'success';\r\n data?: Record<string, any>;\r\n}\r\n\r\n@register('LYBaseConfig')\r\nexport class LYBaseConfig extends LYObject {\r\n static async load<T extends typeof LYBaseConfig>(\r\n this: T,\r\n config_url: string\r\n ): Promise<InstanceType<T>> {\r\n const instance = this.get();\r\n await instance.load(config_url);\r\n return instance;\r\n }\r\n\r\n static get<T extends typeof LYBaseConfig>(this: T): InstanceType<T> {\r\n return this.getInstance(this) as InstanceType<T>;\r\n }\r\n\r\n private async _load_from_url(url: string): Promise<boolean> {\r\n // 此处不要使用HttpClient,防止循环依赖\r\n const response = await axios.get<Record<string, any>>(url);\r\n if (response.status !== 200) {\r\n return false;\r\n }\r\n if (response.headers['content-type'] !== 'application/json') {\r\n return false;\r\n }\r\n if (!response.data) {\r\n return false;\r\n }\r\n const result = response.data as LYResultResponse;\r\n if (result.code !== 'success') {\r\n return false;\r\n }\r\n if (!result.data) {\r\n return false;\r\n }\r\n load(result.data, this);\r\n return true;\r\n }\r\n\r\n private _load_from_element(): boolean {\r\n const configElement = document.getElementById(CONFIG_ELEMENT_ID);\r\n if (!configElement) {\r\n return false;\r\n }\r\n const configMode = configElement.getAttribute('mode') as LYConfigMode;\r\n if (configMode === 'none') {\r\n return false;\r\n }\r\n let text = configElement.textContent;\r\n if (!text) {\r\n throw new Error('Config element text content is empty');\r\n }\r\n if (configMode === 'base64') {\r\n text = atob(text);\r\n }\r\n const config: Record<string, any> = JSON.parse(text);\r\n load(config, this);\r\n return true;\r\n }\r\n\r\n async load(config_url: string): Promise<void> {\r\n if (this._load_from_element()) {\r\n return;\r\n }\r\n const success = await this._load_from_url(config_url);\r\n if (!success) {\r\n throw new Error(`Failed to load config from ${config_url}`);\r\n }\r\n }\r\n}\r\n","import { LYBaseConfigModel, model } from './base';\r\n\r\nexport class LYRetryWaitExponential extends LYBaseConfigModel {\r\n multiplier: number = 2; // 指数倍数\r\n min: number = 1; // 最小等待时间(秒)\r\n max: number = 30; // 最大等待时间(秒)\r\n}\r\n\r\nexport class LYHttpRetryConfig extends LYBaseConfigModel {\r\n timeoutPerRetry: number = 10; // 单次请求超时时间(秒)\r\n stopAfterDelay: number = 300; // 重试总时间(秒)\r\n @model(LYRetryWaitExponential)\r\n waitExponential: LYRetryWaitExponential = new LYRetryWaitExponential(); // 指数等待配置\r\n}\r\n\r\nexport class LYHttpConfig extends LYBaseConfigModel {\r\n @model(LYHttpRetryConfig)\r\n retry: LYHttpRetryConfig = new LYHttpRetryConfig();\r\n}\r\n","import { LYBaseConfigModel } from './base';\r\n\r\nexport type LYCryptoType = 'default' | 'sm' | 'gm';\r\n\r\nexport class LYCryptoConfig extends LYBaseConfigModel {\r\n type: LYCryptoType = 'default';\r\n}\r\n","import { LYBaseConfigModel } from './base';\r\n\r\nexport class LYAppConfig extends LYBaseConfigModel {\r\n name: string = '';\r\n version: string = '';\r\n}\r\n","import { LYBaseConfigModel } from './base';\r\n\r\nexport class LYAddressConfig extends LYBaseConfigModel {\r\n tenantLoginUrl: string = '/';\r\n organizationLoginUrl: string = '/';\r\n}\r\n","import { register } from '../object';\r\nimport { LYBaseConfig, model, array } from './base';\r\nimport { LYHttpConfig } from './http';\r\nimport { LYCryptoConfig } from './crypto';\r\nimport { LYAppConfig } from './app';\r\nimport { LYAddressConfig } from './address';\r\n\r\n@register('LYConfig')\r\nexport class LYConfig extends LYBaseConfig {\r\n @model(LYHttpConfig)\r\n http: LYHttpConfig = new LYHttpConfig();\r\n @model(LYCryptoConfig)\r\n crypto: LYCryptoConfig = new LYCryptoConfig();\r\n @array(LYAppConfig)\r\n apps: LYAppConfig[] = [];\r\n @model(LYAddressConfig)\r\n address: LYAddressConfig = new LYAddressConfig();\r\n host_patterns: string[] = [];\r\n}","var niceErrors = {\n 0: \"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'\",\n 1: function _(annotationType, key) {\n return \"Cannot apply '\" + annotationType + \"' to '\" + key.toString() + \"': Field not found.\";\n },\n /*\n 2(prop) {\n return `invalid decorator for '${prop.toString()}'`\n },\n 3(prop) {\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n },\n 4(prop) {\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n },\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: \"Invalid annotation\",\n 13: \"Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: \"Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)\",\n 16: \"Modification exception: the internal structure of an observable array was changed.\",\n 17: function _(index, length) {\n return \"[mobx.array] Index out of bounds, \" + index + \" is larger than \" + length;\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19: function _(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name;\n },\n 20: function _(other) {\n return \"Cannot initialize map from \" + other;\n },\n 21: function _(dataStructure) {\n return \"Cannot convert to map from '\" + dataStructure + \"'\";\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24: function _(thing) {\n return \"Cannot obtain administration from \" + thing;\n },\n 25: function _(property, name) {\n return \"the entry '\" + property + \"' does not exist in the observable map '\" + name + \"'\";\n },\n 26: \"please specify a property\",\n 27: function _(property, name) {\n return \"no observable property '\" + property.toString() + \"' found on the observable object '\" + name + \"'\";\n },\n 28: function _(thing) {\n return \"Cannot obtain atom from \" + thing;\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32: function _(name, derivation) {\n return \"Cycle detected in computation \" + name + \": \" + derivation;\n },\n 33: function _(name) {\n return \"The setter of computed value '\" + name + \"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?\";\n },\n 34: function _(name) {\n return \"[ComputedValue '\" + name + \"'] It is not possible to assign a new value to a computed value.\";\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37: function _(method) {\n return \"[mobx] `observableArray.\" + method + \"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice().\" + method + \"()` instead\";\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n};\nvar errors = process.env.NODE_ENV !== \"production\" ? niceErrors : {};\nfunction die(error) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (process.env.NODE_ENV !== \"production\") {\n var e = typeof error === \"string\" ? error : errors[error];\n if (typeof e === \"function\") e = e.apply(null, args);\n throw new Error(\"[MobX] \" + e);\n }\n throw new Error(typeof error === \"number\" ? \"[MobX] minified error nr: \" + error + (args.length ? \" \" + args.map(String).join(\",\") : \"\") + \". Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts\" : \"[MobX] \" + error);\n}\n\nvar mockGlobal = {};\nfunction getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n return mockGlobal;\n}\n\n// We shorten anything used > 5 times\nvar assign = Object.assign;\nvar getDescriptor = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar objectPrototype = Object.prototype;\nvar EMPTY_ARRAY = [];\nObject.freeze(EMPTY_ARRAY);\nvar EMPTY_OBJECT = {};\nObject.freeze(EMPTY_OBJECT);\nvar hasProxy = typeof Proxy !== \"undefined\";\nvar plainObjectString = /*#__PURE__*/Object.toString();\nfunction assertProxies() {\n if (!hasProxy) {\n die(process.env.NODE_ENV !== \"production\" ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\" : \"Proxy not available\");\n }\n}\nfunction warnAboutProxyRequirement(msg) {\n if (process.env.NODE_ENV !== \"production\" && globalState.verifyProxies) {\n die(\"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" + msg);\n }\n}\nfunction getNextId() {\n return ++globalState.mobxGuid;\n}\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nfunction once(func) {\n var invoked = false;\n return function () {\n if (invoked) {\n return;\n }\n invoked = true;\n return func.apply(this, arguments);\n };\n}\nvar noop = function noop() {};\nfunction isFunction(fn) {\n return typeof fn === \"function\";\n}\nfunction isStringish(value) {\n var t = typeof value;\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nfunction isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n var proto = Object.getPrototypeOf(value);\n if (proto == null) {\n return true;\n }\n var protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString;\n}\n// https://stackoverflow.com/a/37865170\nfunction isGenerator(obj) {\n var constructor = obj == null ? void 0 : obj.constructor;\n if (!constructor) {\n return false;\n }\n if (\"GeneratorFunction\" === constructor.name || \"GeneratorFunction\" === constructor.displayName) {\n return true;\n }\n return false;\n}\nfunction addHiddenProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value\n });\n}\nfunction addHiddenFinalProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value: value\n });\n}\nfunction createInstanceofPredicate(name, theClass) {\n var propName = \"isMobX\" + name;\n theClass.prototype[propName] = true;\n return function (x) {\n return isObject(x) && x[propName] === true;\n };\n}\n/**\n * Yields true for both native and observable Map, even across different windows.\n */\nfunction isES6Map(thing) {\n return thing != null && Object.prototype.toString.call(thing) === \"[object Map]\";\n}\n/**\n * Makes sure a Map is an instance of non-inherited native or observable Map.\n */\nfunction isPlainES6Map(thing) {\n var mapProto = Object.getPrototypeOf(thing);\n var objectProto = Object.getPrototypeOf(mapProto);\n var nullProto = Object.getPrototypeOf(objectProto);\n return nullProto === null;\n}\n/**\n * Yields true for both native and observable Set, even across different windows.\n */\nfunction isES6Set(thing) {\n return thing != null && Object.prototype.toString.call(thing) === \"[object Set]\";\n}\nvar hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\";\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nfunction getPlainObjectKeys(object) {\n var keys = Object.keys(object);\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys;\n }\n var symbols = Object.getOwnPropertySymbols(object);\n if (!symbols.length) {\n return keys;\n }\n return [].concat(keys, symbols.filter(function (s) {\n return objectPrototype.propertyIsEnumerable.call(object, s);\n }));\n}\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : hasGetOwnPropertySymbols ? function (obj) {\n return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));\n} : /* istanbul ignore next */Object.getOwnPropertyNames;\nfunction stringifyKey(key) {\n if (typeof key === \"string\") {\n return key;\n }\n if (typeof key === \"symbol\") {\n return key.toString();\n }\n return new String(key).toString();\n}\nfunction toPrimitive(value) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value;\n}\nfunction hasProp(target, prop) {\n return objectPrototype.hasOwnProperty.call(target, prop);\n}\n// From Immer utils\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(target) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n var res = {};\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(function (key) {\n res[key] = getDescriptor(target, key);\n });\n return res;\n};\nfunction getFlag(flags, mask) {\n return !!(flags & mask);\n}\nfunction setFlag(flags, mask, newValue) {\n if (newValue) {\n flags |= mask;\n } else {\n flags &= ~mask;\n }\n return flags;\n}\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nfunction _createForOfIteratorHelperLoose(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (t) return (t = t.call(r)).next.bind(t);\n if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n t && (r = t);\n var o = 0;\n return function () {\n return o >= r.length ? {\n done: !0\n } : {\n done: !1,\n value: r[o++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o);\n}\nfunction _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nvar storedAnnotationsSymbol = /*#__PURE__*/Symbol(\"mobx-stored-annotations\");\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nfunction createDecoratorAnnotation(annotation) {\n function decorator(target, property) {\n if (is20223Decorator(property)) {\n return annotation.decorate_20223_(target, property);\n } else {\n storeAnnotation(target, property, annotation);\n }\n }\n return Object.assign(decorator, annotation);\n}\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nfunction storeAnnotation(prototype, key, annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, _extends({}, prototype[storedAnnotationsSymbol]));\n }\n // @override must override something\n if (process.env.NODE_ENV !== \"production\" && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n die(\"'\" + fieldName + \"' is decorated with 'override', \" + \"but no such decorated member was found on prototype.\");\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key);\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation;\n }\n}\nfunction assertNotDecorated(prototype, annotation, key) {\n if (process.env.NODE_ENV !== \"production\" && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n var currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '@\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already decorated with '@\" + currentAnnotationType + \"'.\") + \"\\nRe-decorating fields is not allowed.\" + \"\\nUse '@override' decorator for methods overridden by subclass.\");\n }\n}\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nfunction collectStoredAnnotations(target) {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n // if (__DEV__ && !target[storedAnnotationsSymbol]) {\n // die(\n // `No annotations were passed to makeObservable, but no decorated members have been found either`\n // )\n // }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, _extends({}, target[storedAnnotationsSymbol]));\n }\n return target[storedAnnotationsSymbol];\n}\nfunction is20223Decorator(context) {\n return typeof context == \"object\" && typeof context[\"kind\"] == \"string\";\n}\nfunction assert20223DecoratorType(context, types) {\n if (process.env.NODE_ENV !== \"production\" && !types.includes(context.kind)) {\n die(\"The decorator applied to '\" + String(context.name) + \"' cannot be used on a \" + context.kind + \" element\");\n }\n}\n\nvar $mobx = /*#__PURE__*/Symbol(\"mobx administration\");\nvar Atom = /*#__PURE__*/function () {\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n function Atom(name_) {\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"Atom@\" + getNextId() : \"Atom\";\n }\n this.name_ = void 0;\n this.flags_ = 0;\n this.observers_ = new Set();\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.NOT_TRACKING_;\n // onBecomeObservedListeners\n this.onBOL = void 0;\n // onBecomeUnobservedListeners\n this.onBUOL = void 0;\n this.name_ = name_;\n }\n // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n var _proto = Atom.prototype;\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */;\n _proto.reportObserved = function reportObserved$1() {\n return reportObserved(this);\n }\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */;\n _proto.reportChanged = function reportChanged() {\n startBatch();\n propagateChanged(this);\n endBatch();\n };\n _proto.toString = function toString() {\n return this.name_;\n };\n return _createClass(Atom, [{\n key: \"isBeingObserved\",\n get: function get() {\n return getFlag(this.flags_, Atom.isBeingObservedMask_);\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, Atom.isBeingObservedMask_, newValue);\n }\n }, {\n key: \"isPendingUnobservation\",\n get: function get() {\n return getFlag(this.flags_, Atom.isPendingUnobservationMask_);\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, Atom.isPendingUnobservationMask_, newValue);\n }\n }, {\n key: \"diffValue\",\n get: function get() {\n return getFlag(this.flags_, Atom.diffValueMask_) ? 1 : 0;\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, Atom.diffValueMask_, newValue === 1 ? true : false);\n }\n }]);\n}();\nAtom.isBeingObservedMask_ = 1;\nAtom.isPendingUnobservationMask_ = 2;\nAtom.diffValueMask_ = 4;\nvar isAtom = /*#__PURE__*/createInstanceofPredicate(\"Atom\", Atom);\nfunction createAtom(name, onBecomeObservedHandler, onBecomeUnobservedHandler) {\n if (onBecomeObservedHandler === void 0) {\n onBecomeObservedHandler = noop;\n }\n if (onBecomeUnobservedHandler === void 0) {\n onBecomeUnobservedHandler = noop;\n }\n var atom = new Atom(name);\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler);\n }\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler);\n }\n return atom;\n}\n\nfunction identityComparer(a, b) {\n return a === b;\n}\nfunction structuralComparer(a, b) {\n return deepEqual(a, b);\n}\nfunction shallowComparer(a, b) {\n return deepEqual(a, b, 1);\n}\nfunction defaultComparer(a, b) {\n if (Object.is) {\n return Object.is(a, b);\n }\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b;\n}\nvar comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n \"default\": defaultComparer,\n shallow: shallowComparer\n};\n\nfunction deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v;\n }\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name\n });\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v);\n } else {\n return autoAction(name, v);\n }\n }\n return v;\n}\nfunction shallowEnhancer(v, _, name) {\n if (v === undefined || v === null) {\n return v;\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v;\n }\n if (Array.isArray(v)) {\n return observable.array(v, {\n name: name,\n deep: false\n });\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, {\n name: name,\n deep: false\n });\n }\n if (isES6Map(v)) {\n return observable.map(v, {\n name: name,\n deep: false\n });\n }\n if (isES6Set(v)) {\n return observable.set(v, {\n name: name,\n deep: false\n });\n }\n if (process.env.NODE_ENV !== \"production\") {\n die(\"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\");\n }\n}\nfunction referenceEnhancer(newValue) {\n // never turn into an observable\n return newValue;\n}\nfunction refStructEnhancer(v, oldValue) {\n if (process.env.NODE_ENV !== \"production\" && isObservable(v)) {\n die(\"observable.struct should not be used with observable values\");\n }\n if (deepEqual(v, oldValue)) {\n return oldValue;\n }\n return v;\n}\n\nvar OVERRIDE = \"override\";\nvar override = /*#__PURE__*/createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_: make_,\n extend_: extend_,\n decorate_20223_: decorate_20223_\n});\nfunction isOverride(annotation) {\n return annotation.annotationType_ === OVERRIDE;\n}\nfunction make_(adm, key) {\n // Must not be plain object\n if (process.env.NODE_ENV !== \"production\" && adm.isPlainObject_) {\n die(\"Cannot apply '\" + this.annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + this.annotationType_ + \"' cannot be used on plain objects.\"));\n }\n // Must override something\n if (process.env.NODE_ENV !== \"production\" && !hasProp(adm.appliedAnnotations_, key)) {\n die(\"'\" + adm.name_ + \".\" + key.toString() + \"' is annotated with '\" + this.annotationType_ + \"', \" + \"but no such annotated member was found on prototype.\");\n }\n return 0 /* MakeResult.Cancel */;\n}\nfunction extend_(adm, key, descriptor, proxyTrap) {\n die(\"'\" + this.annotationType_ + \"' can only be used with 'makeObservable'\");\n}\nfunction decorate_20223_(desc, context) {\n console.warn(\"'\" + this.annotationType_ + \"' cannot be used with decorators - this is a no-op\");\n}\n\nfunction createActionAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$1,\n extend_: extend_$1,\n decorate_20223_: decorate_20223_$1\n };\n}\nfunction make_$1(adm, key, descriptor, source) {\n var _this$options_;\n // bound\n if ((_this$options_ = this.options_) != null && _this$options_.bound) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* MakeResult.Break */;\n }\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false);\n defineProperty(source, key, actionDescriptor);\n return 2 /* MakeResult.Continue */;\n}\nfunction extend_$1(adm, key, descriptor, proxyTrap) {\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor);\n return adm.defineProperty_(key, actionDescriptor, proxyTrap);\n}\nfunction decorate_20223_$1(mthd, context) {\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"method\", \"field\"]);\n }\n var kind = context.kind,\n name = context.name,\n addInitializer = context.addInitializer;\n var ann = this;\n var _createAction = function _createAction(m) {\n var _ann$options_$name, _ann$options_, _ann$options_$autoAct, _ann$options_2;\n return createAction((_ann$options_$name = (_ann$options_ = ann.options_) == null ? void 0 : _ann$options_.name) != null ? _ann$options_$name : name.toString(), m, (_ann$options_$autoAct = (_ann$options_2 = ann.options_) == null ? void 0 : _ann$options_2.autoAction) != null ? _ann$options_$autoAct : false);\n };\n if (kind == \"field\") {\n return function (initMthd) {\n var _ann$options_3;\n var mthd = initMthd;\n if (!isAction(mthd)) {\n mthd = _createAction(mthd);\n }\n if ((_ann$options_3 = ann.options_) != null && _ann$options_3.bound) {\n mthd = mthd.bind(this);\n mthd.isMobxAction = true;\n }\n return mthd;\n };\n }\n if (kind == \"method\") {\n var _this$options_2;\n if (!isAction(mthd)) {\n mthd = _createAction(mthd);\n }\n if ((_this$options_2 = this.options_) != null && _this$options_2.bound) {\n addInitializer(function () {\n var self = this;\n var bound = self[name].bind(self);\n bound.isMobxAction = true;\n self[name] = bound;\n });\n }\n return mthd;\n }\n die(\"Cannot apply '\" + ann.annotationType_ + \"' to '\" + String(name) + \"' (kind: \" + kind + \"):\" + (\"\\n'\" + ann.annotationType_ + \"' can only be used on properties with a function value.\"));\n}\nfunction assertActionDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if (process.env.NODE_ENV !== \"production\" && !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a function value.\"));\n }\n}\nfunction createActionDescriptor(adm, annotation, key, descriptor,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n var _annotation$options_, _annotation$options_$, _annotation$options_2, _annotation$options_$2, _annotation$options_3, _annotation$options_4, _adm$proxy_2;\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertActionDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n if ((_annotation$options_ = annotation.options_) != null && _annotation$options_.bound) {\n var _adm$proxy_;\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return {\n value: createAction((_annotation$options_$ = (_annotation$options_2 = annotation.options_) == null ? void 0 : _annotation$options_2.name) != null ? _annotation$options_$ : key.toString(), value, (_annotation$options_$2 = (_annotation$options_3 = annotation.options_) == null ? void 0 : _annotation$options_3.autoAction) != null ? _annotation$options_$2 : false,\n // https://github.com/mobxjs/mobx/discussions/3140\n (_annotation$options_4 = annotation.options_) != null && _annotation$options_4.bound ? (_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_ : undefined),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createFlowAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$2,\n extend_: extend_$2,\n decorate_20223_: decorate_20223_$2\n };\n}\nfunction make_$2(adm, key, descriptor, source) {\n var _this$options_;\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if ((_this$options_ = this.options_) != null && _this$options_.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return 0 /* MakeResult.Cancel */;\n }\n }\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* MakeResult.Break */;\n }\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false);\n defineProperty(source, key, flowDescriptor);\n return 2 /* MakeResult.Continue */;\n}\nfunction extend_$2(adm, key, descriptor, proxyTrap) {\n var _this$options_2;\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, (_this$options_2 = this.options_) == null ? void 0 : _this$options_2.bound);\n return adm.defineProperty_(key, flowDescriptor, proxyTrap);\n}\nfunction decorate_20223_$2(mthd, context) {\n var _this$options_3;\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"method\"]);\n }\n var name = context.name,\n addInitializer = context.addInitializer;\n if (!isFlow(mthd)) {\n mthd = flow(mthd);\n }\n if ((_this$options_3 = this.options_) != null && _this$options_3.bound) {\n addInitializer(function () {\n var self = this;\n var bound = self[name].bind(self);\n bound.isMobXFlow = true;\n self[name] = bound;\n });\n }\n return mthd;\n}\nfunction assertFlowDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n if (process.env.NODE_ENV !== \"production\" && !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a generator function value.\"));\n }\n}\nfunction createFlowDescriptor(adm, annotation, key, descriptor, bound,\n// provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n assertFlowDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value);\n }\n if (bound) {\n var _adm$proxy_;\n // We do not keep original function around, so we bind the existing flow\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true;\n }\n return {\n value: value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createComputedAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$3,\n extend_: extend_$3,\n decorate_20223_: decorate_20223_$3\n };\n}\nfunction make_$3(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n}\nfunction extend_$3(adm, key, descriptor, proxyTrap) {\n assertComputedDescriptor(adm, this, key, descriptor);\n return adm.defineComputedProperty_(key, _extends({}, this.options_, {\n get: descriptor.get,\n set: descriptor.set\n }), proxyTrap);\n}\nfunction decorate_20223_$3(get, context) {\n if (process.env.NODE_ENV !== \"production\") {\n assert20223DecoratorType(context, [\"getter\"]);\n }\n var ann = this;\n var key = context.name,\n addInitializer = context.addInitializer;\n addInitializer(function () {\n var adm = asObservableObject(this)[$mobx];\n var options = _extends({}, ann.options_, {\n get: get,\n context: this\n });\n options.name || (options.name = process.env.NODE_ENV !== \"production\" ? adm.name_ + \".\" + key.toString() : \"ObservableObject.\" + key.toString());\n adm.values_.set(key, new ComputedValue(options));\n });\n return function () {\n return this[$mobx].getObservablePropValue_(key);\n };\n}\nfunction assertComputedDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var get = _ref2.get;\n if (process.env.NODE_ENV !== \"production\" && !get) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on getter(+setter) properties.\"));\n }\n}\n\nfunction createObservableAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$4,\n extend_: extend_$4,\n decorate_20223_: decorate_20223_$4\n };\n}\nfunction make_$4(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 /* MakeResult.Cancel */ : 1 /* MakeResult.Break */;\n}\nfunction extend_$4(adm, key, descriptor, proxyTrap) {\n var _this$options_$enhanc, _this$options_;\n assertObservableDescriptor(adm, this, key, descriptor);\n return adm.defineObservableProperty_(key, descriptor.value, (_this$options_$enhanc = (_this$options_ = this.options_) == null ? void 0 : _this$options_.enhancer) != null ? _this$options_$enhanc : deepEnhancer, proxyTrap);\n}\nfunction decorate_20223_$4(desc, context) {\n if (process.env.NODE_ENV !== \"production\") {\n if (context.kind === \"field\") {\n throw die(\"Please use `@observable accessor \" + String(context.name) + \"` instead of `@observable \" + String(context.name) + \"`\");\n }\n assert20223DecoratorType(context, [\"accessor\"]);\n }\n var ann = this;\n var kind = context.kind,\n name = context.name;\n // The laziness here is not ideal... It's a workaround to how 2022.3 Decorators are implemented:\n // `addInitializer` callbacks are executed _before_ any accessors are defined (instead of the ideal-for-us right after each).\n // This means that, if we were to do our stuff in an `addInitializer`, we'd attempt to read a private slot\n // before it has been initialized. The runtime doesn't like that and throws a `Cannot read private member\n // from an object whose class did not declare it` error.\n // TODO: it seems that this will not be required anymore in the final version of the spec\n // See TODO: link\n var initializedObjects = new WeakSet();\n function initializeObservable(target, value) {\n var _ann$options_$enhance, _ann$options_;\n var adm = asObservableObject(target)[$mobx];\n var observable = new ObservableValue(value, (_ann$options_$enhance = (_ann$options_ = ann.options_) == null ? void 0 : _ann$options_.enhancer) != null ? _ann$options_$enhance : deepEnhancer, process.env.NODE_ENV !== \"production\" ? adm.name_ + \".\" + name.toString() : \"ObservableObject.\" + name.toString(), false);\n adm.values_.set(name, observable);\n initializedObjects.add(target);\n }\n if (kind == \"accessor\") {\n return {\n get: function get() {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, desc.get.call(this));\n }\n return this[$mobx].getObservablePropValue_(name);\n },\n set: function set(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value);\n }\n return this[$mobx].setObservablePropValue_(name, value);\n },\n init: function init(value) {\n if (!initializedObjects.has(this)) {\n initializeObservable(this, value);\n }\n return value;\n }\n };\n }\n return;\n}\nfunction assertObservableDescriptor(adm, _ref, key, descriptor) {\n var annotationType_ = _ref.annotationType_;\n if (process.env.NODE_ENV !== \"production\" && !(\"value\" in descriptor)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' cannot be used on getter/setter properties\"));\n }\n}\n\nvar AUTO = \"true\";\nvar autoAnnotation = /*#__PURE__*/createAutoAnnotation();\nfunction createAutoAnnotation(options) {\n return {\n annotationType_: AUTO,\n options_: options,\n make_: make_$5,\n extend_: extend_$5,\n decorate_20223_: decorate_20223_$5\n };\n}\nfunction make_$5(adm, key, descriptor, source) {\n var _this$options_3, _this$options_4;\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n var set = isAction(descriptor.set) ? descriptor.set // See #4553\n : createAction(key.toString(), descriptor.set);\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: set\n }) === null ? 0 /* MakeResult.Cancel */ : 2 /* MakeResult.Continue */;\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set: set\n });\n return 2 /* MakeResult.Continue */;\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n var _this$options_2;\n if (isGenerator(descriptor.value)) {\n var _this$options_;\n var flowAnnotation = (_this$options_ = this.options_) != null && _this$options_.autoBind ? flow.bound : flow;\n return flowAnnotation.make_(adm, key, descriptor, source);\n }\n var actionAnnotation = (_this$options_2 = this.options_) != null && _this$options_2.autoBind ? autoAction.bound : autoAction;\n return actionAnnotation.make_(adm, key, descriptor, source);\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n var observableAnnotation = ((_this$options_3 = this.options_) == null ? void 0 : _this$options_3.deep) === false ? observable.ref : observable;\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_4 = this.options_) != null && _this$options_4.autoBind) {\n var _adm$proxy_;\n descriptor.value = descriptor.value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return observableAnnotation.make_(adm, key, descriptor, source);\n}\nfunction extend_$5(adm, key, descriptor, proxyTrap) {\n var _this$options_5, _this$options_6;\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap);\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set)\n }, proxyTrap);\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && (_this$options_5 = this.options_) != null && _this$options_5.autoBind) {\n var _adm$proxy_2;\n descriptor.value = descriptor.value.bind((_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_);\n }\n var observableAnnotation = ((_this$options_6 = this.options_) == null ? void 0 : _this$options_6.deep) === false ? observable.ref : observable;\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap);\n}\nfunction decorate_20223_$5(desc, context) {\n die(\"'\" + this.annotationType_ + \"' cannot be used as a decorator\");\n}\n\nvar OBSERVABLE = \"observable\";\nvar OBSERVABLE_REF = \"observable.ref\";\nvar OBSERVABLE_SHALLOW = \"observable.shallow\";\nvar OBSERVABLE_STRUCT = \"observable.struct\";\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nvar defaultCreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n};\nObject.freeze(defaultCreateObservableOptions);\nfunction asCreateObservableOptions(thing) {\n return thing || defaultCreateObservableOptions;\n}\nvar observableAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE);\nvar observableRefAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n});\nvar observableShallowAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n});\nvar observableStructAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n});\nvar observableDecoratorAnnotation = /*#__PURE__*/createDecoratorAnnotation(observableAnnotation);\nfunction getEnhancerFromOptions(options) {\n return options.deep === true ? deepEnhancer : options.deep === false ? referenceEnhancer : getEnhancerFromAnnotation(options.defaultDecorator);\n}\nfunction getAnnotationFromOptions(options) {\n var _options$defaultDecor;\n return options ? (_options$defaultDecor = options.defaultDecorator) != null ? _options$defaultDecor : createAutoAnnotation(options) : undefined;\n}\nfunction getEnhancerFromAnnotation(annotation) {\n var _annotation$options_$, _annotation$options_;\n return !annotation ? deepEnhancer : (_annotation$options_$ = (_annotation$options_ = annotation.options_) == null ? void 0 : _annotation$options_.enhancer) != null ? _annotation$options_$ : deepEnhancer;\n}\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v, arg2, arg3) {\n // @observable someProp; (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return observableAnnotation.decorate_20223_(v, arg2);\n }\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation);\n return;\n }\n // already observable - ignore\n if (isObservable(v)) {\n return v;\n }\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3);\n }\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2);\n }\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2);\n }\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2);\n }\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v;\n }\n // anything else\n return observable.box(v, arg2);\n}\nassign(createObservable, observableDecoratorAnnotation);\nvar observableFactories = {\n box: function box(value, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals);\n },\n array: function array(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return (globalState.useProxies === false || o.proxy === false ? createLegacyArray : createObservableArray)(initialValues, getEnhancerFromOptions(o), o.name);\n },\n map: function map(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name);\n },\n set: function set(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name);\n },\n object: function object(props, decorators, options) {\n return initObservable(function () {\n return extendObservable(globalState.useProxies === false || (options == null ? void 0 : options.proxy) === false ? asObservableObject({}, options) : asDynamicObservableObject({}, options), props, decorators);\n });\n },\n ref: /*#__PURE__*/createDecoratorAnnotation(observableRefAnnotation),\n shallow: /*#__PURE__*/createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: /*#__PURE__*/createDecoratorAnnotation(observableStructAnnotation)\n};\n// eslint-disable-next-line\nvar observable = /*#__PURE__*/assign(createObservable, observableFactories);\n\nvar COMPUTED = \"computed\";\nvar COMPUTED_STRUCT = \"computed.struct\";\nvar computedAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED);\nvar computedStructAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n});\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nvar computed = function computed(arg1, arg2) {\n if (is20223Decorator(arg2)) {\n // @computed (2022.3 Decorators)\n return computedAnnotation.decorate_20223_(arg1, arg2);\n }\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation);\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1));\n }\n // computed(expr, options?)\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\");\n }\n if (isFunction(arg2)) {\n die(\"A setter as second argument is no longer supported, use `{ set: fn }` option instead\");\n }\n }\n var opts = isPlainObject(arg2) ? arg2 : {};\n opts.get = arg1;\n opts.name || (opts.name = arg1.name || \"\"); /* for generated name */\n return new ComputedValue(opts);\n};\nObject.assign(computed, computedAnnotation);\ncomputed.struct = /*#__PURE__*/createDecoratorAnnotation(computedStructAnnotation);\n\nvar _getDescriptor$config, _getDescriptor;\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nvar currentActionId = 0;\nvar nextActionId = 1;\nvar isFunctionNameConfigurable = (_getDescriptor$config = (_getDescriptor = /*#__PURE__*/getDescriptor(function () {}, \"name\")) == null ? void 0 : _getDescriptor.configurable) != null ? _getDescriptor$config : false;\n// we can safely recycle this object\nvar tmpNameDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n};\nfunction createAction(actionName, fn, autoAction, ref) {\n if (autoAction === void 0) {\n autoAction = false;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\");\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(\"actions should have valid names, got: '\" + actionName + \"'\");\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments);\n }\n res.isMobxAction = true;\n res.toString = function () {\n return fn.toString();\n };\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName;\n defineProperty(res, \"name\", tmpNameDescriptor);\n }\n return res;\n}\nfunction executeAction(actionName, canRunAsDerivation, fn, scope, args) {\n var runInfo = _startAction(actionName, canRunAsDerivation, scope, args);\n try {\n return fn.apply(scope, args);\n } catch (err) {\n runInfo.error_ = err;\n throw err;\n } finally {\n _endAction(runInfo);\n }\n}\nfunction _startAction(actionName, canRunAsDerivation,\n// true for autoAction\nscope, args) {\n var notifySpy_ = process.env.NODE_ENV !== \"production\" && isSpyEnabled() && !!actionName;\n var startTime_ = 0;\n if (process.env.NODE_ENV !== \"production\" && notifySpy_) {\n startTime_ = Date.now();\n var flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY;\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n });\n }\n var prevDerivation_ = globalState.trackingDerivation;\n var runAsAction = !canRunAsDerivation || !prevDerivation_;\n startBatch();\n var prevAllowStateChanges_ = globalState.allowStateChanges; // by default preserve previous allow\n if (runAsAction) {\n untrackedStart();\n prevAllowStateChanges_ = allowStateChangesStart(true);\n }\n var prevAllowStateReads_ = allowStateReadsStart(true);\n var runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_: prevDerivation_,\n prevAllowStateChanges_: prevAllowStateChanges_,\n prevAllowStateReads_: prevAllowStateReads_,\n notifySpy_: notifySpy_,\n startTime_: startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n };\n currentActionId = runInfo.actionId_;\n return runInfo;\n}\nfunction _endAction(runInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30);\n }\n currentActionId = runInfo.parentActionId_;\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true;\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_);\n allowStateReadsEnd(runInfo.prevAllowStateReads_);\n endBatch();\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_);\n }\n if (process.env.NODE_ENV !== \"production\" && runInfo.notifySpy_) {\n spyReportEnd({\n time: Date.now() - runInfo.startTime_\n });\n }\n globalState.suppressReactionErrors = false;\n}\nfunction allowStateChanges(allowStateChanges, func) {\n var prev = allowStateChangesStart(allowStateChanges);\n try {\n return func();\n } finally {\n allowStateChangesEnd(prev);\n }\n}\nfunction allowStateChangesStart(allowStateChanges) {\n var prev = globalState.allowStateChanges;\n globalState.allowStateChanges = allowStateChanges;\n return prev;\n}\nfunction allowStateChangesEnd(prev) {\n globalState.allowStateChanges = prev;\n}\n\nvar CREATE = \"create\";\nvar ObservableValue = /*#__PURE__*/function (_Atom) {\n function ObservableValue(value, enhancer, name_, notifySpy, equals) {\n var _this;\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableValue@\" + getNextId() : \"ObservableValue\";\n }\n if (notifySpy === void 0) {\n notifySpy = true;\n }\n if (equals === void 0) {\n equals = comparer[\"default\"];\n }\n _this = _Atom.call(this, name_) || this;\n _this.enhancer = void 0;\n _this.name_ = void 0;\n _this.equals = void 0;\n _this.hasUnreportedChange_ = false;\n _this.interceptors_ = void 0;\n _this.changeListeners_ = void 0;\n _this.value_ = void 0;\n _this.dehancer = void 0;\n _this.enhancer = enhancer;\n _this.name_ = name_;\n _this.equals = equals;\n _this.value_ = enhancer(value, undefined, name_);\n if (process.env.NODE_ENV !== \"production\" && notifySpy && isSpyEnabled()) {\n var _this$value_;\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: _this,\n observableKind: \"value\",\n debugObjectName: _this.name_,\n newValue: \"\" + ((_this$value_ = _this.value_) == null ? void 0 : _this$value_.toString())\n });\n }\n return _this;\n }\n _inheritsLoose(ObservableValue, _Atom);\n var _proto = ObservableValue.prototype;\n _proto.dehanceValue = function dehanceValue(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.set = function set(newValue) {\n var oldValue = this.value_;\n newValue = this.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n this.setNewValue_(newValue);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.prepareNewValue_ = function prepareNewValue_(newValue) {\n checkIfStateModificationsAreAllowed(this);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this,\n type: UPDATE,\n newValue: newValue\n });\n if (!change) {\n return globalState.UNCHANGED;\n }\n newValue = change.newValue;\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_);\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue;\n };\n _proto.setNewValue_ = function setNewValue_(newValue) {\n var oldValue = this.value_;\n this.value_ = newValue;\n this.reportChanged();\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n };\n _proto.get = function get() {\n this.reportObserved();\n return this.dehanceValue(this.value_);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n });\n }\n return registerListener(this, listener);\n };\n _proto.raw = function raw() {\n // used by MST ot get undehanced value\n return this.value_;\n };\n _proto.toJSON = function toJSON() {\n return this.get();\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.value_ + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[Symbol.toPrimitive] = function () {\n return this.valueOf();\n };\n return ObservableValue;\n}(Atom);\nvar isObservableValue = /*#__PURE__*/createInstanceofPredicate(\"ObservableValue\", ObservableValue);\n\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\nvar ComputedValue = /*#__PURE__*/function () {\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n function ComputedValue(options) {\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.observing_ = [];\n // nodes we are looking at. Our value depends on these nodes\n this.newObserving_ = null;\n // during tracking it's an array with new observed observers\n this.observers_ = new Set();\n this.runId_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n this.unboundDepsCount_ = 0;\n this.value_ = new CaughtException(null);\n this.name_ = void 0;\n this.triggeredBy_ = void 0;\n this.flags_ = 0;\n this.derivation = void 0;\n // N.B: unminified as it is used by MST\n this.setter_ = void 0;\n this.isTracing_ = TraceMode.NONE;\n this.scope_ = void 0;\n this.equals_ = void 0;\n this.requiresReaction_ = void 0;\n this.keepAlive_ = void 0;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n if (!options.get) {\n die(31);\n }\n this.derivation = options.get;\n this.name_ = options.name || (process.env.NODE_ENV !== \"production\" ? \"ComputedValue@\" + getNextId() : \"ComputedValue\");\n if (options.set) {\n this.setter_ = createAction(process.env.NODE_ENV !== \"production\" ? this.name_ + \"-setter\" : \"ComputedValue-setter\", options.set);\n }\n this.equals_ = options.equals || (options.compareStructural || options.struct ? comparer.structural : comparer[\"default\"]);\n this.scope_ = options.context;\n this.requiresReaction_ = options.requiresReaction;\n this.keepAlive_ = !!options.keepAlive;\n }\n var _proto = ComputedValue.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n propagateMaybeChanged(this);\n };\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n // to check for cycles\n ;\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */\n _proto.get = function get() {\n if (this.isComputing) {\n die(32, this.name_, this.derivation);\n }\n if (globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 && !this.keepAlive_) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_();\n startBatch(); // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false);\n endBatch();\n }\n } else {\n reportObserved(this);\n if (shouldCompute(this)) {\n var prevTrackingContext = globalState.trackingContext;\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this;\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this);\n }\n globalState.trackingContext = prevTrackingContext;\n }\n }\n var result = this.value_;\n if (isCaughtException(result)) {\n throw result.cause;\n }\n return result;\n };\n _proto.set = function set(value) {\n if (this.setter_) {\n if (this.isRunningSetter) {\n die(33, this.name_);\n }\n this.isRunningSetter = true;\n try {\n this.setter_.call(this.scope_, value);\n } finally {\n this.isRunningSetter = false;\n }\n } else {\n die(34, this.name_);\n }\n };\n _proto.trackAndCompute = function trackAndCompute() {\n // N.B: unminified as it is used by MST\n var oldValue = this.value_;\n var wasSuspended = /* see #1208 */this.dependenciesState_ === IDerivationState_.NOT_TRACKING_;\n var newValue = this.computeValue_(true);\n var changed = wasSuspended || isCaughtException(oldValue) || isCaughtException(newValue) || !this.equals_(oldValue, newValue);\n if (changed) {\n this.value_ = newValue;\n if (process.env.NODE_ENV !== \"production\" && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue: oldValue,\n newValue: newValue\n });\n }\n }\n return changed;\n };\n _proto.computeValue_ = function computeValue_(track) {\n this.isComputing = true;\n // don't allow state changes during computation\n var prev = allowStateChangesStart(false);\n var res;\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_);\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_);\n } else {\n try {\n res = this.derivation.call(this.scope_);\n } catch (e) {\n res = new CaughtException(e);\n }\n }\n }\n allowStateChangesEnd(prev);\n this.isComputing = false;\n return res;\n };\n _proto.suspend_ = function suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this);\n this.value_ = undefined; // don't hold on to computed value!\n if (process.env.NODE_ENV !== \"production\" && this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' was suspended and it will recompute on the next access.\");\n }\n }\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n var _this = this;\n var firstTime = true;\n var prevValue = undefined;\n return autorun(function () {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n var newValue = _this.get();\n if (!firstTime || fireImmediately) {\n var prevU = untrackedStart();\n listener({\n observableKind: \"computed\",\n debugObjectName: _this.name_,\n type: UPDATE,\n object: _this,\n newValue: newValue,\n oldValue: prevValue\n });\n untrackedEnd(prevU);\n }\n firstTime = false;\n prevValue = newValue;\n });\n };\n _proto.warnAboutUntrackedRead_ = function warnAboutUntrackedRead_() {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n if (typeof this.requiresReaction_ === \"boolean\" ? this.requiresReaction_ : globalState.computedRequiresReaction) {\n console.warn(\"[mobx] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.derivation.toString() + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[Symbol.toPrimitive] = function () {\n return this.valueOf();\n };\n return _createClass(ComputedValue, [{\n key: \"isComputing\",\n get: function get() {\n return getFlag(this.flags_, ComputedValue.isComputingMask_);\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isComputingMask_, newValue);\n }\n }, {\n key: \"isRunningSetter\",\n get: function get() {\n return getFlag(this.flags_, ComputedValue.isRunningSetterMask_);\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isRunningSetterMask_, newValue);\n }\n }, {\n key: \"isBeingObserved\",\n get: function get() {\n return getFlag(this.flags_, ComputedValue.isBeingObservedMask_);\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isBeingObservedMask_, newValue);\n }\n }, {\n key: \"isPendingUnobservation\",\n get: function get() {\n return getFlag(this.flags_, ComputedValue.isPendingUnobservationMask_);\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, ComputedValue.isPendingUnobservationMask_, newValue);\n }\n }, {\n key: \"diffValue\",\n get: function get() {\n return getFlag(this.flags_, ComputedValue.diffValueMask_) ? 1 : 0;\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, ComputedValue.diffValueMask_, newValue === 1 ? true : false);\n }\n }]);\n}();\nComputedValue.isComputingMask_ = 1;\nComputedValue.isRunningSetterMask_ = 2;\nComputedValue.isBeingObservedMask_ = 4;\nComputedValue.isPendingUnobservationMask_ = 8;\nComputedValue.diffValueMask_ = 16;\nvar isComputedValue = /*#__PURE__*/createInstanceofPredicate(\"ComputedValue\", ComputedValue);\n\nvar IDerivationState_;\n(function (IDerivationState_) {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n IDerivationState_[IDerivationState_[\"NOT_TRACKING_\"] = -1] = \"NOT_TRACKING_\";\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n IDerivationState_[IDerivationState_[\"UP_TO_DATE_\"] = 0] = \"UP_TO_DATE_\";\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n IDerivationState_[IDerivationState_[\"POSSIBLY_STALE_\"] = 1] = \"POSSIBLY_STALE_\";\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n IDerivationState_[IDerivationState_[\"STALE_\"] = 2] = \"STALE_\";\n})(IDerivationState_ || (IDerivationState_ = {}));\nvar TraceMode;\n(function (TraceMode) {\n TraceMode[TraceMode[\"NONE\"] = 0] = \"NONE\";\n TraceMode[TraceMode[\"LOG\"] = 1] = \"LOG\";\n TraceMode[TraceMode[\"BREAK\"] = 2] = \"BREAK\";\n})(TraceMode || (TraceMode = {}));\nvar CaughtException = function CaughtException(cause) {\n this.cause = void 0;\n this.cause = cause;\n // Empty\n};\nfunction isCaughtException(e) {\n return e instanceof CaughtException;\n}\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nfunction shouldCompute(derivation) {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false;\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true;\n case IDerivationState_.POSSIBLY_STALE_:\n {\n // state propagation can occur outside of action/reactive context #2195\n var prevAllowStateReads = allowStateReadsStart(true);\n var prevUntracked = untrackedStart(); // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n var obs = derivation.observing_,\n l = obs.length;\n for (var i = 0; i < l; i++) {\n var obj = obs[i];\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get();\n } else {\n try {\n obj.get();\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if (derivation.dependenciesState_ === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n }\n changeDependenciesStateTo0(derivation);\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return false;\n }\n }\n}\nfunction isComputingDerivation() {\n return globalState.trackingDerivation !== null; // filter out actions inside computations\n}\nfunction checkIfStateModificationsAreAllowed(atom) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var hasObservers = atom.observers_.size > 0;\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (!globalState.allowStateChanges && (hasObservers || globalState.enforceActions === \"always\")) {\n console.warn(\"[MobX] \" + (globalState.enforceActions ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \" : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") + atom.name_);\n }\n}\nfunction checkIfStateReadsAreAllowed(observable) {\n if (process.env.NODE_ENV !== \"production\" && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\"[mobx] Observable '\" + observable.name_ + \"' being read outside a reactive context.\");\n }\n}\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nfunction trackDerivedFunction(derivation, f, context) {\n var prevAllowStateReads = allowStateReadsStart(true);\n changeDependenciesStateTo0(derivation);\n // Preallocate array; will be trimmed by bindDependencies.\n derivation.newObserving_ = new Array(\n // Reserve constant space for initial dependencies, dynamic space otherwise.\n // See https://github.com/mobxjs/mobx/pull/3833\n derivation.runId_ === 0 ? 100 : derivation.observing_.length);\n derivation.unboundDepsCount_ = 0;\n derivation.runId_ = ++globalState.runId;\n var prevTracking = globalState.trackingDerivation;\n globalState.trackingDerivation = derivation;\n globalState.inBatch++;\n var result;\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context);\n } else {\n try {\n result = f.call(context);\n } catch (e) {\n result = new CaughtException(e);\n }\n }\n globalState.inBatch--;\n globalState.trackingDerivation = prevTracking;\n bindDependencies(derivation);\n warnAboutDerivationWithoutDependencies(derivation);\n allowStateReadsEnd(prevAllowStateReads);\n return result;\n}\nfunction warnAboutDerivationWithoutDependencies(derivation) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (derivation.observing_.length !== 0) {\n return;\n }\n if (typeof derivation.requiresObservable_ === \"boolean\" ? derivation.requiresObservable_ : globalState.reactionRequiresObservable) {\n console.warn(\"[mobx] Derivation '\" + derivation.name_ + \"' is created/updated without reading any observable value.\");\n }\n}\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n var prevObserving = derivation.observing_;\n var observing = derivation.observing_ = derivation.newObserving_;\n var lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_;\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n var i0 = 0,\n l = derivation.unboundDepsCount_;\n for (var i = 0; i < l; i++) {\n var dep = observing[i];\n if (dep.diffValue === 0) {\n dep.diffValue = 1;\n if (i0 !== i) {\n observing[i0] = dep;\n }\n i0++;\n }\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if (dep.dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = dep.dependenciesState_;\n }\n }\n observing.length = i0;\n derivation.newObserving_ = null; // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length;\n while (l--) {\n var _dep = prevObserving[l];\n if (_dep.diffValue === 0) {\n removeObserver(_dep, derivation);\n }\n _dep.diffValue = 0;\n }\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n var _dep2 = observing[i0];\n if (_dep2.diffValue === 1) {\n _dep2.diffValue = 0;\n addObserver(_dep2, derivation);\n }\n }\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState;\n derivation.onBecomeStale_();\n }\n}\nfunction clearObserving(derivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n var obs = derivation.observing_;\n derivation.observing_ = [];\n var i = obs.length;\n while (i--) {\n removeObserver(obs[i], derivation);\n }\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n}\nfunction untracked(action) {\n var prev = untrackedStart();\n try {\n return action();\n } finally {\n untrackedEnd(prev);\n }\n}\nfunction untrackedStart() {\n var prev = globalState.trackingDerivation;\n globalState.trackingDerivation = null;\n return prev;\n}\nfunction untrackedEnd(prev) {\n globalState.trackingDerivation = prev;\n}\nfunction allowStateReadsStart(allowStateReads) {\n var prev = globalState.allowStateReads;\n globalState.allowStateReads = allowStateReads;\n return prev;\n}\nfunction allowStateReadsEnd(prev) {\n globalState.allowStateReads = prev;\n}\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nfunction changeDependenciesStateTo0(derivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return;\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_;\n var obs = derivation.observing_;\n var i = obs.length;\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n}\n\n/**\n * These values will persist if global state is reset\n */\nvar persistentKeys = [\"mobxGuid\", \"spyListeners\", \"enforceActions\", \"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"allowStateReads\", \"disableErrorBoundaries\", \"runId\", \"UNCHANGED\", \"useProxies\"];\nvar MobXGlobals = function MobXGlobals() {\n /**\n * MobXGlobals version.\n * MobX compatiblity with other versions loaded in memory as long as this version matches.\n * It indicates that the global state still stores similar information\n *\n * N.B: this version is unrelated to the package version of MobX, and is only the version of the\n * internal state storage of MobX, and can be the same across many different package versions\n */\n this.version = 6;\n /**\n * globally unique token to signal unchanged\n */\n this.UNCHANGED = {};\n /**\n * Currently running derivation\n */\n this.trackingDerivation = null;\n /**\n * Currently running reaction. This determines if we currently have a reactive context.\n * (Tracking derivation is also set for temporal tracking of computed values inside actions,\n * but trackingReaction can only be set by a form of Reaction)\n */\n this.trackingContext = null;\n /**\n * Each time a derivation is tracked, it is assigned a unique run-id\n */\n this.runId = 0;\n /**\n * 'guid' for general purpose. Will be persisted amongst resets.\n */\n this.mobxGuid = 0;\n /**\n * Are we in a batch block? (and how many of them)\n */\n this.inBatch = 0;\n /**\n * Observables that don't have observers anymore, and are about to be\n * suspended, unless somebody else accesses it in the same batch\n *\n * @type {IObservable[]}\n */\n this.pendingUnobservations = [];\n /**\n * List of scheduled, not yet executed, reactions.\n */\n this.pendingReactions = [];\n /**\n * Are we currently processing reactions?\n */\n this.isRunningReactions = false;\n /**\n * Is it allowed to change observables at this point?\n * In general, MobX doesn't allow that when running computations and React.render.\n * To ensure that those functions stay pure.\n */\n this.allowStateChanges = false;\n /**\n * Is it allowed to read observables at this point?\n * Used to hold the state needed for `observableRequiresReaction`\n */\n this.allowStateReads = true;\n /**\n * If strict mode is enabled, state changes are by default not allowed\n */\n this.enforceActions = true;\n /**\n * Spy callbacks\n */\n this.spyListeners = [];\n /**\n * Globally attached error handlers that react specifically to errors in reactions\n */\n this.globalReactionErrorHandlers = [];\n /**\n * Warn if computed values are accessed outside a reactive context\n */\n this.computedRequiresReaction = false;\n /**\n * (Experimental)\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n this.reactionRequiresObservable = false;\n /**\n * (Experimental)\n * Warn if observables are accessed outside a reactive context\n */\n this.observableRequiresReaction = false;\n /*\n * Don't catch and rethrow exceptions. This is useful for inspecting the state of\n * the stack when an exception occurs while debugging.\n */\n this.disableErrorBoundaries = false;\n /*\n * If true, we are already handling an exception in an action. Any errors in reactions should be suppressed, as\n * they are not the cause, see: https://github.com/mobxjs/mobx/issues/1836\n */\n this.suppressReactionErrors = false;\n this.useProxies = true;\n /*\n * print warnings about code that would fail if proxies weren't available\n */\n this.verifyProxies = false;\n /**\n * False forces all object's descriptors to\n * writable: true\n * configurable: true\n */\n this.safeDescriptors = true;\n};\nvar canMergeGlobalState = true;\nvar isolateCalled = false;\nvar globalState = /*#__PURE__*/function () {\n var global = /*#__PURE__*/getGlobal();\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false;\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false;\n }\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(function () {\n if (!isolateCalled) {\n die(35);\n }\n }, 1);\n return new MobXGlobals();\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1;\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {};\n } // make merge backward compatible\n return global.__mobxGlobals;\n } else {\n global.__mobxInstanceCount = 1;\n return global.__mobxGlobals = /*#__PURE__*/new MobXGlobals();\n }\n}();\nfunction isolateGlobalState() {\n if (globalState.pendingReactions.length || globalState.inBatch || globalState.isRunningReactions) {\n die(36);\n }\n isolateCalled = true;\n if (canMergeGlobalState) {\n var global = getGlobal();\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined;\n }\n globalState = new MobXGlobals();\n }\n}\nfunction getGlobalState() {\n return globalState;\n}\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nfunction resetGlobalState() {\n var defaultGlobals = new MobXGlobals();\n for (var key in defaultGlobals) {\n if (persistentKeys.indexOf(key) === -1) {\n globalState[key] = defaultGlobals[key];\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions;\n}\n\nfunction hasObservers(observable) {\n return observable.observers_ && observable.observers_.size > 0;\n}\nfunction getObservers(observable) {\n return observable.observers_;\n}\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nfunction addObserver(observable, node) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n observable.observers_.add(node);\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_;\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\nfunction removeObserver(observable, node) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_[\"delete\"](node);\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable);\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\nfunction queueForUnobservation(observable) {\n if (observable.isPendingUnobservation === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation = true;\n globalState.pendingUnobservations.push(observable);\n }\n}\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nfunction startBatch() {\n globalState.inBatch++;\n}\nfunction endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions();\n // the batch is actually about to finish, all unobserving should happen here.\n var list = globalState.pendingUnobservations;\n for (var i = 0; i < list.length; i++) {\n var observable = list[i];\n observable.isPendingUnobservation = false;\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved = false;\n observable.onBUO();\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_();\n }\n }\n }\n globalState.pendingUnobservations = [];\n }\n}\nfunction reportObserved(observable) {\n checkIfStateReadsAreAllowed(observable);\n var derivation = globalState.trackingDerivation;\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_;\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_[derivation.unboundDepsCount_++] = observable;\n if (!observable.isBeingObserved && globalState.trackingContext) {\n observable.isBeingObserved = true;\n observable.onBO();\n }\n }\n return observable.isBeingObserved;\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable);\n }\n return false;\n}\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n// Called by Atom when its value changes\nfunction propagateChanged(observable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (process.env.NODE_ENV !== \"production\" && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n d.onBecomeStale_();\n }\n d.dependenciesState_ = IDerivationState_.STALE_;\n });\n // invariantLOS(observable, \"changed end\");\n}\n// Called by ComputedValue when it recalculate and its value changed\nfunction propagateChangeConfirmed(observable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_;\n if (process.env.NODE_ENV !== \"production\" && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n } else if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n });\n // invariantLOS(observable, \"confirmed end\");\n}\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nfunction propagateMaybeChanged(observable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return;\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_;\n d.onBecomeStale_();\n }\n });\n // invariantLOS(observable, \"maybe end\");\n}\nfunction logTraceInfo(derivation, observable) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' is invalidated due to a change in: '\" + observable.name_ + \"'\");\n if (derivation.isTracing_ === TraceMode.BREAK) {\n var lines = [];\n printDepTree(getDependencyTree(derivation), lines, 1);\n // prettier-ignore\n new Function(\"debugger;\\n/*\\nTracing '\" + derivation.name_ + \"'\\n\\nYou are entering this break point because derivation '\" + derivation.name_ + \"' is being traced and '\" + observable.name_ + \"' is now forcing it to update.\\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\\n\\n\" + (derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\") + \"\\n\\nThe dependencies for this derivation are:\\n\\n\" + lines.join(\"\\n\") + \"\\n*/\\n \")();\n }\n}\nfunction printDepTree(tree, lines, depth) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\");\n return;\n }\n lines.push(\"\" + \"\\t\".repeat(depth - 1) + tree.name);\n if (tree.dependencies) {\n tree.dependencies.forEach(function (child) {\n return printDepTree(child, lines, depth + 1);\n });\n }\n}\n\nvar Reaction = /*#__PURE__*/function () {\n function Reaction(name_, onInvalidate_, errorHandler_, requiresObservable_) {\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"Reaction@\" + getNextId() : \"Reaction\";\n }\n this.name_ = void 0;\n this.onInvalidate_ = void 0;\n this.errorHandler_ = void 0;\n this.requiresObservable_ = void 0;\n this.observing_ = [];\n // nodes we are looking at. Our value depends on these nodes\n this.newObserving_ = [];\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.runId_ = 0;\n this.unboundDepsCount_ = 0;\n this.flags_ = 0;\n this.isTracing_ = TraceMode.NONE;\n this.name_ = name_;\n this.onInvalidate_ = onInvalidate_;\n this.errorHandler_ = errorHandler_;\n this.requiresObservable_ = requiresObservable_;\n }\n var _proto = Reaction.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n this.schedule_();\n };\n _proto.schedule_ = function schedule_() {\n if (!this.isScheduled) {\n this.isScheduled = true;\n globalState.pendingReactions.push(this);\n runReactions();\n }\n }\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */;\n _proto.runReaction_ = function runReaction_() {\n if (!this.isDisposed) {\n startBatch();\n this.isScheduled = false;\n var prev = globalState.trackingContext;\n globalState.trackingContext = this;\n if (shouldCompute(this)) {\n this.isTrackPending = true;\n try {\n this.onInvalidate_();\n if (process.env.NODE_ENV !== \"production\" && this.isTrackPending && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n });\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e);\n }\n }\n globalState.trackingContext = prev;\n endBatch();\n }\n };\n _proto.track = function track(fn) {\n if (this.isDisposed) {\n return;\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n startBatch();\n var notify = isSpyEnabled();\n var startTime;\n if (process.env.NODE_ENV !== \"production\" && notify) {\n startTime = Date.now();\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n });\n }\n this.isRunning = true;\n var prevReaction = globalState.trackingContext; // reactions could create reactions...\n globalState.trackingContext = this;\n var result = trackDerivedFunction(this, fn, undefined);\n globalState.trackingContext = prevReaction;\n this.isRunning = false;\n this.isTrackPending = false;\n if (this.isDisposed) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this);\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause);\n }\n if (process.env.NODE_ENV !== \"production\" && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n });\n }\n endBatch();\n };\n _proto.reportExceptionInDerivation_ = function reportExceptionInDerivation_(error) {\n var _this = this;\n if (this.errorHandler_) {\n this.errorHandler_(error, this);\n return;\n }\n if (globalState.disableErrorBoundaries) {\n throw error;\n }\n var message = process.env.NODE_ENV !== \"production\" ? \"[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '\" + this + \"'\" : \"[mobx] uncaught error in '\" + this + \"'\";\n if (!globalState.suppressReactionErrors) {\n console.error(message, error);\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[mobx] (error in reaction '\" + this.name_ + \"' suppressed, fix error of causing action below)\");\n } // prettier-ignore\n if (process.env.NODE_ENV !== \"production\" && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message: message,\n error: \"\" + error\n });\n }\n globalState.globalReactionErrorHandlers.forEach(function (f) {\n return f(error, _this);\n });\n };\n _proto.dispose = function dispose() {\n if (!this.isDisposed) {\n this.isDisposed = true;\n if (!this.isRunning) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch();\n clearObserving(this);\n endBatch();\n }\n }\n };\n _proto.getDisposer_ = function getDisposer_(abortSignal) {\n var _this2 = this;\n var dispose = function dispose() {\n _this2.dispose();\n abortSignal == null || abortSignal.removeEventListener == null || abortSignal.removeEventListener(\"abort\", dispose);\n };\n abortSignal == null || abortSignal.addEventListener == null || abortSignal.addEventListener(\"abort\", dispose);\n dispose[$mobx] = this;\n if (\"dispose\" in Symbol && typeof Symbol.dispose === \"symbol\") {\n dispose[Symbol.dispose] = dispose;\n }\n return dispose;\n };\n _proto.toString = function toString() {\n return \"Reaction[\" + this.name_ + \"]\";\n };\n _proto.trace = function trace$1(enterBreakPoint) {\n if (enterBreakPoint === void 0) {\n enterBreakPoint = false;\n }\n trace(this, enterBreakPoint);\n };\n return _createClass(Reaction, [{\n key: \"isDisposed\",\n get: function get() {\n return getFlag(this.flags_, Reaction.isDisposedMask_);\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, Reaction.isDisposedMask_, newValue);\n }\n }, {\n key: \"isScheduled\",\n get: function get() {\n return getFlag(this.flags_, Reaction.isScheduledMask_);\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, Reaction.isScheduledMask_, newValue);\n }\n }, {\n key: \"isTrackPending\",\n get: function get() {\n return getFlag(this.flags_, Reaction.isTrackPendingMask_);\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, Reaction.isTrackPendingMask_, newValue);\n }\n }, {\n key: \"isRunning\",\n get: function get() {\n return getFlag(this.flags_, Reaction.isRunningMask_);\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, Reaction.isRunningMask_, newValue);\n }\n }, {\n key: \"diffValue\",\n get: function get() {\n return getFlag(this.flags_, Reaction.diffValueMask_) ? 1 : 0;\n },\n set: function set(newValue) {\n this.flags_ = setFlag(this.flags_, Reaction.diffValueMask_, newValue === 1 ? true : false);\n }\n }]);\n}();\nReaction.isDisposedMask_ = 1;\nReaction.isScheduledMask_ = 2;\nReaction.isTrackPendingMask_ = 4;\nReaction.isRunningMask_ = 8;\nReaction.diffValueMask_ = 16;\nfunction onReactionError(handler) {\n globalState.globalReactionErrorHandlers.push(handler);\n return function () {\n var idx = globalState.globalReactionErrorHandlers.indexOf(handler);\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1);\n }\n };\n}\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nvar MAX_REACTION_ITERATIONS = 100;\nvar reactionScheduler = function reactionScheduler(f) {\n return f();\n};\nfunction runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return;\n }\n reactionScheduler(runReactionsHelper);\n}\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true;\n var allReactions = globalState.pendingReactions;\n var iterations = 0;\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(process.env.NODE_ENV !== \"production\" ? \"Reaction doesn't converge to a stable state after \" + MAX_REACTION_ITERATIONS + \" iterations.\" + (\" Probably there is a cycle in the reactive function: \" + allReactions[0]) : \"[mobx] cycle in reaction: \" + allReactions[0]);\n allReactions.splice(0); // clear reactions\n }\n var remainingReactions = allReactions.splice(0);\n for (var i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_();\n }\n }\n globalState.isRunningReactions = false;\n}\nvar isReaction = /*#__PURE__*/createInstanceofPredicate(\"Reaction\", Reaction);\nfunction setReactionScheduler(fn) {\n var baseScheduler = reactionScheduler;\n reactionScheduler = function reactionScheduler(f) {\n return fn(function () {\n return baseScheduler(f);\n });\n };\n}\n\nfunction isSpyEnabled() {\n return process.env.NODE_ENV !== \"production\" && !!globalState.spyListeners.length;\n}\nfunction spyReport(event) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n } // dead code elimination can do the rest\n if (!globalState.spyListeners.length) {\n return;\n }\n var listeners = globalState.spyListeners;\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event);\n }\n}\nfunction spyReportStart(event) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var change = _extends({}, event, {\n spyReportStart: true\n });\n spyReport(change);\n}\nvar END_EVENT = {\n type: \"report-end\",\n spyReportEnd: true\n};\nfunction spyReportEnd(change) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n if (change) {\n spyReport(_extends({}, change, {\n type: \"report-end\",\n spyReportEnd: true\n }));\n } else {\n spyReport(END_EVENT);\n }\n}\nfunction spy(listener) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n console.warn(\"[mobx.spy] Is a no-op in production builds\");\n return function () {};\n } else {\n globalState.spyListeners.push(listener);\n return once(function () {\n globalState.spyListeners = globalState.spyListeners.filter(function (l) {\n return l !== listener;\n });\n });\n }\n}\n\nvar ACTION = \"action\";\nvar ACTION_BOUND = \"action.bound\";\nvar AUTOACTION = \"autoAction\";\nvar AUTOACTION_BOUND = \"autoAction.bound\";\nvar DEFAULT_ACTION_NAME = \"<unnamed action>\";\nvar actionAnnotation = /*#__PURE__*/createActionAnnotation(ACTION);\nvar actionBoundAnnotation = /*#__PURE__*/createActionAnnotation(ACTION_BOUND, {\n bound: true\n});\nvar autoActionAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION, {\n autoAction: true\n});\nvar autoActionBoundAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n});\nfunction createActionFactory(autoAction) {\n var res = function action(arg1, arg2) {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction);\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction);\n }\n // @action (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return (autoAction ? autoActionAnnotation : actionAnnotation).decorate_20223_(arg1, arg2);\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation);\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction: autoAction\n }));\n }\n if (process.env.NODE_ENV !== \"production\") {\n die(\"Invalid arguments for `action`\");\n }\n };\n return res;\n}\nvar action = /*#__PURE__*/createActionFactory(false);\nObject.assign(action, actionAnnotation);\nvar autoAction = /*#__PURE__*/createActionFactory(true);\nObject.assign(autoAction, autoActionAnnotation);\naction.bound = /*#__PURE__*/createDecoratorAnnotation(actionBoundAnnotation);\nautoAction.bound = /*#__PURE__*/createDecoratorAnnotation(autoActionBoundAnnotation);\nfunction runInAction(fn) {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined);\n}\nfunction isAction(thing) {\n return isFunction(thing) && thing.isMobxAction === true;\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nfunction autorun(view, opts) {\n var _opts$name, _opts, _opts2, _opts3;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\");\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\");\n }\n }\n var name = (_opts$name = (_opts = opts) == null ? void 0 : _opts.name) != null ? _opts$name : process.env.NODE_ENV !== \"production\" ? view.name || \"Autorun@\" + getNextId() : \"Autorun\";\n var runSync = !opts.scheduler && !opts.delay;\n var reaction;\n if (runSync) {\n // normal autorun\n reaction = new Reaction(name, function () {\n this.track(reactionRunner);\n }, opts.onError, opts.requiresObservable);\n } else {\n var scheduler = createSchedulerFromOptions(opts);\n // debounced autorun\n var isScheduled = false;\n reaction = new Reaction(name, function () {\n if (!isScheduled) {\n isScheduled = true;\n scheduler(function () {\n isScheduled = false;\n if (!reaction.isDisposed) {\n reaction.track(reactionRunner);\n }\n });\n }\n }, opts.onError, opts.requiresObservable);\n }\n function reactionRunner() {\n view(reaction);\n }\n if (!((_opts2 = opts) != null && (_opts2 = _opts2.signal) != null && _opts2.aborted)) {\n reaction.schedule_();\n }\n return reaction.getDisposer_((_opts3 = opts) == null ? void 0 : _opts3.signal);\n}\nvar run = function run(f) {\n return f();\n};\nfunction createSchedulerFromOptions(opts) {\n return opts.scheduler ? opts.scheduler : opts.delay ? function (f) {\n return setTimeout(f, opts.delay);\n } : run;\n}\nfunction reaction(expression, effect, opts) {\n var _opts$name2, _opts4, _opts5;\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\");\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\");\n }\n }\n var name = (_opts$name2 = opts.name) != null ? _opts$name2 : process.env.NODE_ENV !== \"production\" ? \"Reaction@\" + getNextId() : \"Reaction\";\n var effectAction = action(name, opts.onError ? wrapErrorHandler(opts.onError, effect) : effect);\n var runSync = !opts.scheduler && !opts.delay;\n var scheduler = createSchedulerFromOptions(opts);\n var firstTime = true;\n var isScheduled = false;\n var value;\n var equals = opts.compareStructural ? comparer.structural : opts.equals || comparer[\"default\"];\n var r = new Reaction(name, function () {\n if (firstTime || runSync) {\n reactionRunner();\n } else if (!isScheduled) {\n isScheduled = true;\n scheduler(reactionRunner);\n }\n }, opts.onError, opts.requiresObservable);\n function reactionRunner() {\n isScheduled = false;\n if (r.isDisposed) {\n return;\n }\n var changed = false;\n var oldValue = value;\n r.track(function () {\n var nextValue = allowStateChanges(false, function () {\n return expression(r);\n });\n changed = firstTime || !equals(value, nextValue);\n value = nextValue;\n });\n if (firstTime && opts.fireImmediately) {\n effectAction(value, oldValue, r);\n } else if (!firstTime && changed) {\n effectAction(value, oldValue, r);\n }\n firstTime = false;\n }\n if (!((_opts4 = opts) != null && (_opts4 = _opts4.signal) != null && _opts4.aborted)) {\n r.schedule_();\n }\n return r.getDisposer_((_opts5 = opts) == null ? void 0 : _opts5.signal);\n}\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments);\n } catch (e) {\n errorHandler.call(this, e);\n }\n };\n}\n\nvar ON_BECOME_OBSERVED = \"onBO\";\nvar ON_BECOME_UNOBSERVED = \"onBUO\";\nfunction onBecomeObserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3);\n}\nfunction onBecomeUnobserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3);\n}\nfunction interceptHook(hook, thing, arg2, arg3) {\n var atom = typeof arg3 === \"function\" ? getAtom(thing, arg2) : getAtom(thing);\n var cb = isFunction(arg3) ? arg3 : arg2;\n var listenersKey = hook + \"L\";\n if (atom[listenersKey]) {\n atom[listenersKey].add(cb);\n } else {\n atom[listenersKey] = new Set([cb]);\n }\n return function () {\n var hookListeners = atom[listenersKey];\n if (hookListeners) {\n hookListeners[\"delete\"](cb);\n if (hookListeners.size === 0) {\n delete atom[listenersKey];\n }\n }\n };\n}\n\nvar NEVER = \"never\";\nvar ALWAYS = \"always\";\nvar OBSERVED = \"observed\";\n// const IF_AVAILABLE = \"ifavailable\"\nfunction configure(options) {\n if (options.isolateGlobalState === true) {\n isolateGlobalState();\n }\n var useProxies = options.useProxies,\n enforceActions = options.enforceActions;\n if (useProxies !== undefined) {\n globalState.useProxies = useProxies === ALWAYS ? true : useProxies === NEVER ? false : typeof Proxy !== \"undefined\";\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true;\n }\n if (enforceActions !== undefined) {\n var ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED;\n globalState.enforceActions = ea;\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true;\n }\n [\"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"disableErrorBoundaries\", \"safeDescriptors\"].forEach(function (key) {\n if (key in options) {\n globalState[key] = !!options[key];\n }\n });\n globalState.allowStateReads = !globalState.observableRequiresReaction;\n if (process.env.NODE_ENV !== \"production\" && globalState.disableErrorBoundaries === true) {\n console.warn(\"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\");\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler);\n }\n}\n\nfunction extendObservable(target, properties, annotations, options) {\n if (process.env.NODE_ENV !== \"production\") {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\");\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\");\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\");\n }\n if (!isPlainObject(properties)) {\n die(\"'extendObservable' only accepts plain objects as second argument\");\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(\"Extending an object with another observable (object) is not supported\");\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n var descriptors = getOwnPropertyDescriptors(properties);\n initObservable(function () {\n var adm = asObservableObject(target, options)[$mobx];\n ownKeys(descriptors).forEach(function (key) {\n adm.extend_(key, descriptors[key],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true);\n });\n });\n return target;\n}\n\nfunction getDependencyTree(thing, property) {\n return nodeToDependencyTree(getAtom(thing, property));\n}\nfunction nodeToDependencyTree(node) {\n var result = {\n name: node.name_\n };\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree);\n }\n return result;\n}\nfunction getObserverTree(thing, property) {\n return nodeToObserverTree(getAtom(thing, property));\n}\nfunction nodeToObserverTree(node) {\n var result = {\n name: node.name_\n };\n if (hasObservers(node)) {\n result.observers = Array.from(getObservers(node)).map(nodeToObserverTree);\n }\n return result;\n}\nfunction unique(list) {\n return Array.from(new Set(list));\n}\n\nvar generatorId = 0;\nfunction FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\";\n}\nFlowCancellationError.prototype = /*#__PURE__*/Object.create(Error.prototype);\nfunction isFlowCancellationError(error) {\n return error instanceof FlowCancellationError;\n}\nvar flowAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow\");\nvar flowBoundAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow.bound\", {\n bound: true\n});\nvar flow = /*#__PURE__*/Object.assign(function flow(arg1, arg2) {\n // @flow (2022.3 Decorators)\n if (is20223Decorator(arg2)) {\n return flowAnnotation.decorate_20223_(arg1, arg2);\n }\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation);\n }\n // flow(fn)\n if (process.env.NODE_ENV !== \"production\" && arguments.length !== 1) {\n die(\"Flow expects single argument with generator function\");\n }\n var generator = arg1;\n var name = generator.name || \"<unnamed flow>\";\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n var res = function res() {\n var ctx = this;\n var args = arguments;\n var runId = ++generatorId;\n var gen = action(name + \" - runid: \" + runId + \" - init\", generator).apply(ctx, args);\n var rejector;\n var pendingPromise = undefined;\n var promise = new Promise(function (resolve, reject) {\n var stepId = 0;\n rejector = reject;\n function onFulfilled(res) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen.next).call(gen, res);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function onRejected(err) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen[\"throw\"]).call(gen, err);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function next(ret) {\n if (isFunction(ret == null ? void 0 : ret.then)) {\n // an async iterator\n ret.then(next, reject);\n return;\n }\n if (ret.done) {\n return resolve(ret.value);\n }\n pendingPromise = Promise.resolve(ret.value);\n return pendingPromise.then(onFulfilled, onRejected);\n }\n onFulfilled(undefined); // kick off the process\n });\n promise.cancel = action(name + \" - runid: \" + runId + \" - cancel\", function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise);\n }\n // Finally block can return (or yield) stuff..\n var _res = gen[\"return\"](undefined);\n // eat anything that promise would do, it's cancelled!\n var yieldedPromise = Promise.resolve(_res.value);\n yieldedPromise.then(noop, noop);\n cancelPromise(yieldedPromise); // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError());\n } catch (e) {\n rejector(e); // there could be a throwing finally block\n }\n });\n return promise;\n };\n res.isMobXFlow = true;\n return res;\n}, flowAnnotation);\nflow.bound = /*#__PURE__*/createDecoratorAnnotation(flowBoundAnnotation);\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel();\n }\n}\nfunction flowResult(result) {\n return result; // just tricking TypeScript :)\n}\nfunction isFlow(fn) {\n return (fn == null ? void 0 : fn.isMobXFlow) === true;\n}\n\nfunction interceptReads(thing, propOrHandler, handler) {\n var target;\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing);\n } else if (isObservableObject(thing)) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propOrHandler)) {\n return die(\"InterceptReads can only be used with a specific property, not with an object in general\");\n }\n target = getAdministration(thing, propOrHandler);\n } else if (process.env.NODE_ENV !== \"production\") {\n return die(\"Expected observable map, object or array as first array\");\n }\n if (process.env.NODE_ENV !== \"production\" && target.dehancer !== undefined) {\n return die(\"An intercept reader was already established\");\n }\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler;\n return function () {\n target.dehancer = undefined;\n };\n}\n\nfunction intercept(thing, propOrHandler, handler) {\n if (isFunction(handler)) {\n return interceptProperty(thing, propOrHandler, handler);\n } else {\n return interceptInterceptable(thing, propOrHandler);\n }\n}\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler);\n}\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler);\n}\n\nfunction _isComputed(value, property) {\n if (property === undefined) {\n return isComputedValue(value);\n }\n if (isObservableObject(value) === false) {\n return false;\n }\n if (!value[$mobx].values_.has(property)) {\n return false;\n }\n var atom = getAtom(value, property);\n return isComputedValue(atom);\n}\nfunction isComputed(value) {\n if (process.env.NODE_ENV !== \"production\" && arguments.length > 1) {\n return die(\"isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property\");\n }\n return _isComputed(value);\n}\nfunction isComputedProp(value, propName) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propName)) {\n return die(\"isComputed expected a property name as second argument\");\n }\n return _isComputed(value, propName);\n}\n\nfunction _isObservable(value, property) {\n if (!value) {\n return false;\n }\n if (property !== undefined) {\n if (process.env.NODE_ENV !== \"production\" && (isObservableMap(value) || isObservableArray(value))) {\n return die(\"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\");\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property);\n }\n return false;\n }\n // For first check, see #701\n return isObservableObject(value) || !!value[$mobx] || isAtom(value) || isReaction(value) || isComputedValue(value);\n}\nfunction isObservable(value) {\n if (process.env.NODE_ENV !== \"production\" && arguments.length !== 1) {\n die(\"isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property\");\n }\n return _isObservable(value);\n}\nfunction isObservableProp(value, propName) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propName)) {\n return die(\"expected a property name as second argument\");\n }\n return _isObservable(value, propName);\n}\n\nfunction keys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].keys_();\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (_, index) {\n return index;\n });\n }\n die(5);\n}\nfunction values(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return obj[key];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return obj.get(key);\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values());\n }\n if (isObservableArray(obj)) {\n return obj.slice();\n }\n die(6);\n}\nfunction entries(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj.get(key)];\n });\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (key, index) {\n return [index, key];\n });\n }\n die(7);\n}\nfunction set(obj, key, value) {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch();\n var _values = key;\n try {\n for (var _key in _values) {\n set(obj, _key, _values[_key]);\n }\n } finally {\n endBatch();\n }\n return;\n }\n if (isObservableObject(obj)) {\n obj[$mobx].set_(key, value);\n } else if (isObservableMap(obj)) {\n obj.set(key, value);\n } else if (isObservableSet(obj)) {\n obj.add(key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n if (key < 0) {\n die(\"Invalid index: '\" + key + \"'\");\n }\n startBatch();\n if (key >= obj.length) {\n obj.length = key + 1;\n }\n obj[key] = value;\n endBatch();\n } else {\n die(8);\n }\n}\nfunction remove(obj, key) {\n if (isObservableObject(obj)) {\n obj[$mobx].delete_(key);\n } else if (isObservableMap(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableSet(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10);\n }\n obj.splice(key, 1);\n } else {\n die(9);\n }\n}\nfunction has(obj, key) {\n if (isObservableObject(obj)) {\n return obj[$mobx].has_(key);\n } else if (isObservableMap(obj)) {\n return obj.has(key);\n } else if (isObservableSet(obj)) {\n return obj.has(key);\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length;\n }\n die(10);\n}\nfunction get(obj, key) {\n if (!has(obj, key)) {\n return undefined;\n }\n if (isObservableObject(obj)) {\n return obj[$mobx].get_(key);\n } else if (isObservableMap(obj)) {\n return obj.get(key);\n } else if (isObservableArray(obj)) {\n return obj[key];\n }\n die(11);\n}\nfunction apiDefineProperty(obj, key, descriptor) {\n if (isObservableObject(obj)) {\n return obj[$mobx].defineProperty_(key, descriptor);\n }\n die(39);\n}\nfunction apiOwnKeys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].ownKeys_();\n }\n die(38);\n}\n\nfunction observe(thing, propOrCb, cbOrFire, fireImmediately) {\n if (isFunction(cbOrFire)) {\n return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately);\n } else {\n return observeObservable(thing, propOrCb, cbOrFire);\n }\n}\nfunction observeObservable(thing, listener, fireImmediately) {\n return getAdministration(thing).observe_(listener, fireImmediately);\n}\nfunction observeObservableProperty(thing, property, listener, fireImmediately) {\n return getAdministration(thing, property).observe_(listener, fireImmediately);\n}\n\nfunction cache(map, key, value) {\n map.set(key, value);\n return value;\n}\nfunction toJSHelper(source, __alreadySeen) {\n if (source == null || typeof source !== \"object\" || source instanceof Date || !isObservable(source)) {\n return source;\n }\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen);\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source);\n }\n if (isObservableArray(source)) {\n var res = cache(__alreadySeen, source, new Array(source.length));\n source.forEach(function (value, idx) {\n res[idx] = toJSHelper(value, __alreadySeen);\n });\n return res;\n }\n if (isObservableSet(source)) {\n var _res = cache(__alreadySeen, source, new Set());\n source.forEach(function (value) {\n _res.add(toJSHelper(value, __alreadySeen));\n });\n return _res;\n }\n if (isObservableMap(source)) {\n var _res2 = cache(__alreadySeen, source, new Map());\n source.forEach(function (value, key) {\n _res2.set(key, toJSHelper(value, __alreadySeen));\n });\n return _res2;\n } else {\n // must be observable object\n var _res3 = cache(__alreadySeen, source, {});\n apiOwnKeys(source).forEach(function (key) {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n _res3[key] = toJSHelper(source[key], __alreadySeen);\n }\n });\n return _res3;\n }\n}\n/**\n * Recursively converts an observable to it's non-observable native counterpart.\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\n * Computed and other non-enumerable properties are completely ignored.\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\n */\nfunction toJS(source, options) {\n if (process.env.NODE_ENV !== \"production\" && options) {\n die(\"toJS no longer supports options\");\n }\n return toJSHelper(source, new Map());\n}\n\nfunction trace() {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n var enterBreakPoint = false;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop();\n }\n var derivation = getAtomFromArgs(args);\n if (!derivation) {\n return die(\"'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly\");\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' tracing enabled\");\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG;\n}\nfunction getAtomFromArgs(args) {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation;\n case 1:\n return getAtom(args[0]);\n case 2:\n return getAtom(args[0], args[1]);\n }\n}\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nfunction transaction(action, thisArg) {\n if (thisArg === void 0) {\n thisArg = undefined;\n }\n startBatch();\n try {\n return action.apply(thisArg);\n } finally {\n endBatch();\n }\n}\n\nfunction when(predicate, arg1, arg2) {\n if (arguments.length === 1 || arg1 && typeof arg1 === \"object\") {\n return whenPromise(predicate, arg1);\n }\n return _when(predicate, arg1, arg2 || {});\n}\nfunction _when(predicate, effect, opts) {\n var timeoutHandle;\n if (typeof opts.timeout === \"number\") {\n var error = new Error(\"WHEN_TIMEOUT\");\n timeoutHandle = setTimeout(function () {\n if (!disposer[$mobx].isDisposed) {\n disposer();\n if (opts.onError) {\n opts.onError(error);\n } else {\n throw error;\n }\n }\n }, opts.timeout);\n }\n opts.name = process.env.NODE_ENV !== \"production\" ? opts.name || \"When@\" + getNextId() : \"When\";\n var effectAction = createAction(process.env.NODE_ENV !== \"production\" ? opts.name + \"-effect\" : \"When-effect\", effect);\n // eslint-disable-next-line\n var disposer = autorun(function (r) {\n // predicate should not change state\n var cond = allowStateChanges(false, predicate);\n if (cond) {\n r.dispose();\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n effectAction();\n }\n }, opts);\n return disposer;\n}\nfunction whenPromise(predicate, opts) {\n var _opts$signal;\n if (process.env.NODE_ENV !== \"production\" && opts && opts.onError) {\n return die(\"the options 'onError' and 'promise' cannot be combined\");\n }\n if (opts != null && (_opts$signal = opts.signal) != null && _opts$signal.aborted) {\n return Object.assign(Promise.reject(new Error(\"WHEN_ABORTED\")), {\n cancel: function cancel() {\n return null;\n }\n });\n }\n var cancel;\n var abort;\n var res = new Promise(function (resolve, reject) {\n var _opts$signal2;\n var disposer = _when(predicate, resolve, _extends({}, opts, {\n onError: reject\n }));\n cancel = function cancel() {\n disposer();\n reject(new Error(\"WHEN_CANCELLED\"));\n };\n abort = function abort() {\n disposer();\n reject(new Error(\"WHEN_ABORTED\"));\n };\n opts == null || (_opts$signal2 = opts.signal) == null || _opts$signal2.addEventListener == null || _opts$signal2.addEventListener(\"abort\", abort);\n })[\"finally\"](function () {\n var _opts$signal3;\n return opts == null || (_opts$signal3 = opts.signal) == null || _opts$signal3.removeEventListener == null ? void 0 : _opts$signal3.removeEventListener(\"abort\", abort);\n });\n res.cancel = cancel;\n return res;\n}\n\nfunction getAdm(target) {\n return target[$mobx];\n}\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nvar objectProxyTraps = {\n has: function has(target, name) {\n if (process.env.NODE_ENV !== \"production\" && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\");\n }\n return getAdm(target).has_(name);\n },\n get: function get(target, name) {\n return getAdm(target).get_(name);\n },\n set: function set(target, name, value) {\n var _getAdm$set_;\n if (!isStringish(name)) {\n return false;\n }\n if (process.env.NODE_ENV !== \"production\" && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$set_ = getAdm(target).set_(name, value, true)) != null ? _getAdm$set_ : true;\n },\n deleteProperty: function deleteProperty(target, name) {\n var _getAdm$delete_;\n if (process.env.NODE_ENV !== \"production\") {\n warnAboutProxyRequirement(\"delete properties from an observable object. Use 'remove' from 'mobx' instead.\");\n }\n if (!isStringish(name)) {\n return false;\n }\n // null (intercepted) -> true (success)\n return (_getAdm$delete_ = getAdm(target).delete_(name, true)) != null ? _getAdm$delete_ : true;\n },\n defineProperty: function defineProperty(target, name, descriptor) {\n var _getAdm$definePropert;\n if (process.env.NODE_ENV !== \"production\") {\n warnAboutProxyRequirement(\"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\");\n }\n // null (intercepted) -> true (success)\n return (_getAdm$definePropert = getAdm(target).defineProperty_(name, descriptor)) != null ? _getAdm$definePropert : true;\n },\n ownKeys: function ownKeys(target) {\n if (process.env.NODE_ENV !== \"production\" && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\");\n }\n return getAdm(target).ownKeys_();\n },\n preventExtensions: function preventExtensions(target) {\n die(13);\n }\n};\nfunction asDynamicObservableObject(target, options) {\n var _target$$mobx, _target$$mobx$proxy_;\n assertProxies();\n target = asObservableObject(target, options);\n return (_target$$mobx$proxy_ = (_target$$mobx = target[$mobx]).proxy_) != null ? _target$$mobx$proxy_ : _target$$mobx.proxy_ = new Proxy(target, objectProxyTraps);\n}\n\nfunction hasInterceptors(interceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0;\n}\nfunction registerInterceptor(interceptable, handler) {\n var interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = []);\n interceptors.push(handler);\n return once(function () {\n var idx = interceptors.indexOf(handler);\n if (idx !== -1) {\n interceptors.splice(idx, 1);\n }\n });\n}\nfunction interceptChange(interceptable, change) {\n var prevU = untrackedStart();\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n var interceptors = [].concat(interceptable.interceptors_ || []);\n for (var i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change);\n if (change && !change.type) {\n die(14);\n }\n if (!change) {\n break;\n }\n }\n return change;\n } finally {\n untrackedEnd(prevU);\n }\n}\n\nfunction hasListeners(listenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0;\n}\nfunction registerListener(listenable, handler) {\n var listeners = listenable.changeListeners_ || (listenable.changeListeners_ = []);\n listeners.push(handler);\n return once(function () {\n var idx = listeners.indexOf(handler);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n });\n}\nfunction notifyListeners(listenable, change) {\n var prevU = untrackedStart();\n var listeners = listenable.changeListeners_;\n if (!listeners) {\n return;\n }\n listeners = listeners.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change);\n }\n untrackedEnd(prevU);\n}\n\nfunction makeObservable(target, annotations, options) {\n initObservable(function () {\n var _annotations;\n var adm = asObservableObject(target, options)[$mobx];\n if (process.env.NODE_ENV !== \"production\" && annotations && target[storedAnnotationsSymbol]) {\n die(\"makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.\");\n }\n // Default to decorators\n (_annotations = annotations) != null ? _annotations : annotations = collectStoredAnnotations(target);\n // Annotate\n ownKeys(annotations).forEach(function (key) {\n return adm.make_(key, annotations[key]);\n });\n });\n return target;\n}\n// proto[keysSymbol] = new Set<PropertyKey>()\nvar keysSymbol = /*#__PURE__*/Symbol(\"mobx-keys\");\nfunction makeAutoObservable(target, overrides, options) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(\"'makeAutoObservable' can only be used for classes that don't have a superclass\");\n }\n if (isObservableObject(target)) {\n die(\"makeAutoObservable can only be used on objects not already made observable\");\n }\n }\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options);\n }\n initObservable(function () {\n var adm = asObservableObject(target, options)[$mobx];\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n var proto = Object.getPrototypeOf(target);\n var keys = new Set([].concat(ownKeys(target), ownKeys(proto)));\n keys[\"delete\"](\"constructor\");\n keys[\"delete\"]($mobx);\n addHiddenProp(proto, keysSymbol, keys);\n }\n target[keysSymbol].forEach(function (key) {\n return adm.make_(key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true);\n });\n });\n return target;\n}\n\nvar SPLICE = \"splice\";\nvar UPDATE = \"update\";\nvar MAX_SPLICE_SIZE = 10000; // See e.g. https://github.com/mobxjs/mobx/issues/859\nvar arrayTraps = {\n get: function get(target, name) {\n var adm = target[$mobx];\n if (name === $mobx) {\n return adm;\n }\n if (name === \"length\") {\n return adm.getArrayLength_();\n }\n if (typeof name === \"string\" && !isNaN(name)) {\n return adm.get_(parseInt(name));\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name];\n }\n return target[name];\n },\n set: function set(target, name, value) {\n var adm = target[$mobx];\n if (name === \"length\") {\n adm.setArrayLength_(value);\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value;\n } else {\n // numeric string\n adm.set_(parseInt(name), value);\n }\n return true;\n },\n preventExtensions: function preventExtensions() {\n die(15);\n }\n};\nvar ObservableArrayAdministration = /*#__PURE__*/function () {\n function ObservableArrayAdministration(name, enhancer, owned_, legacyMode_) {\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n this.owned_ = void 0;\n this.legacyMode_ = void 0;\n this.atom_ = void 0;\n this.values_ = [];\n // this is the prop that gets proxied, so can't replace it!\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.enhancer_ = void 0;\n this.dehancer = void 0;\n this.proxy_ = void 0;\n this.lastKnownLength_ = 0;\n this.owned_ = owned_;\n this.legacyMode_ = legacyMode_;\n this.atom_ = new Atom(name);\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, process.env.NODE_ENV !== \"production\" ? name + \"[..]\" : \"ObservableArray[..]\");\n };\n }\n var _proto = ObservableArrayAdministration.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.dehanceValues_ = function dehanceValues_(values) {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer);\n }\n return values;\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately === void 0) {\n fireImmediately = false;\n }\n if (fireImmediately) {\n listener({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n });\n }\n return registerListener(this, listener);\n };\n _proto.getArrayLength_ = function getArrayLength_() {\n this.atom_.reportObserved();\n return this.values_.length;\n };\n _proto.setArrayLength_ = function setArrayLength_(newLength) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength);\n }\n var currentLength = this.values_.length;\n if (newLength === currentLength) {\n return;\n } else if (newLength > currentLength) {\n var newItems = new Array(newLength - currentLength);\n for (var i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems);\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength);\n }\n };\n _proto.updateArrayLength_ = function updateArrayLength_(oldLength, delta) {\n if (oldLength !== this.lastKnownLength_) {\n die(16);\n }\n this.lastKnownLength_ += delta;\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1);\n }\n };\n _proto.spliceWithArray_ = function spliceWithArray_(index, deleteCount, newItems) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n var length = this.values_.length;\n if (index === undefined) {\n index = 0;\n } else if (index > length) {\n index = length;\n } else if (index < 0) {\n index = Math.max(0, length + index);\n }\n if (arguments.length === 1) {\n deleteCount = length - index;\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0;\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index));\n }\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY;\n }\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_,\n type: SPLICE,\n index: index,\n removedCount: deleteCount,\n added: newItems\n });\n if (!change) {\n return EMPTY_ARRAY;\n }\n deleteCount = change.removedCount;\n newItems = change.added;\n }\n newItems = newItems.length === 0 ? newItems : newItems.map(function (v) {\n return _this.enhancer_(v, undefined);\n });\n if (this.legacyMode_ || process.env.NODE_ENV !== \"production\") {\n var lengthDelta = newItems.length - deleteCount;\n this.updateArrayLength_(length, lengthDelta); // checks if internal array wasn't modified\n }\n var res = this.spliceItemsIntoValues_(index, deleteCount, newItems);\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res);\n }\n return this.dehanceValues_(res);\n };\n _proto.spliceItemsIntoValues_ = function spliceItemsIntoValues_(index, deleteCount, newItems) {\n if (newItems.length < MAX_SPLICE_SIZE) {\n var _this$values_;\n return (_this$values_ = this.values_).splice.apply(_this$values_, [index, deleteCount].concat(newItems));\n } else {\n // The items removed by the splice\n var res = this.values_.slice(index, index + deleteCount);\n // The items that that should remain at the end of the array\n var oldItems = this.values_.slice(index + deleteCount);\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount;\n for (var i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i];\n }\n for (var _i = 0; _i < oldItems.length; _i++) {\n this.values_[index + newItems.length + _i] = oldItems[_i];\n }\n return res;\n }\n };\n _proto.notifyArrayChildUpdate_ = function notifyArrayChildUpdate_(index, newValue, oldValue) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index: index,\n newValue: newValue,\n oldValue: oldValue\n } : null;\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.notifyArraySplice_ = function notifyArraySplice_(index, added, removed) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index: index,\n removed: removed,\n added: added,\n removedCount: removed.length,\n addedCount: added.length\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n this.atom_.reportChanged();\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get_ = function get_(index) {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn(process.env.NODE_ENV !== \"production\" ? \"[mobx.array] Attempt to read an array index (\" + index + \") that is out of bounds (\" + this.values_.length + \"). Please check length first. Out of bound indices will not be tracked by MobX\" : \"[mobx] Out of bounds read: \" + index);\n return undefined;\n }\n this.atom_.reportObserved();\n return this.dehanceValue_(this.values_[index]);\n };\n _proto.set_ = function set_(index, newValue) {\n var values = this.values_;\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length);\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_);\n var oldValue = values[index];\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_,\n // since \"this\" is the real array we need to pass its proxy\n index: index,\n newValue: newValue\n });\n if (!change) {\n return;\n }\n newValue = change.newValue;\n }\n newValue = this.enhancer_(newValue, oldValue);\n var changed = newValue !== oldValue;\n if (changed) {\n values[index] = newValue;\n this.notifyArrayChildUpdate_(index, newValue, oldValue);\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n var newItems = new Array(index + 1 - values.length);\n for (var i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue;\n this.spliceWithArray_(values.length, 0, newItems);\n }\n };\n return ObservableArrayAdministration;\n}();\nfunction createObservableArray(initialValues, enhancer, name, owned) {\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n if (owned === void 0) {\n owned = false;\n }\n assertProxies();\n return initObservable(function () {\n var adm = new ObservableArrayAdministration(name, enhancer, owned, false);\n addHiddenFinalProp(adm.values_, $mobx, adm);\n var proxy = new Proxy(adm.values_, arrayTraps);\n adm.proxy_ = proxy;\n if (initialValues && initialValues.length) {\n adm.spliceWithArray_(0, 0, initialValues);\n }\n return proxy;\n });\n}\n// eslint-disable-next-line\nvar arrayExtensions = {\n clear: function clear() {\n return this.splice(0);\n },\n replace: function replace(newItems) {\n var adm = this[$mobx];\n return adm.spliceWithArray_(0, adm.values_.length, newItems);\n },\n // Used by JSON.stringify\n toJSON: function toJSON() {\n return this.slice();\n },\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n splice: function splice(index, deleteCount) {\n for (var _len = arguments.length, newItems = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n newItems[_key - 2] = arguments[_key];\n }\n var adm = this[$mobx];\n switch (arguments.length) {\n case 0:\n return [];\n case 1:\n return adm.spliceWithArray_(index);\n case 2:\n return adm.spliceWithArray_(index, deleteCount);\n }\n return adm.spliceWithArray_(index, deleteCount, newItems);\n },\n spliceWithArray: function spliceWithArray(index, deleteCount, newItems) {\n return this[$mobx].spliceWithArray_(index, deleteCount, newItems);\n },\n push: function push() {\n var adm = this[$mobx];\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n adm.spliceWithArray_(adm.values_.length, 0, items);\n return adm.values_.length;\n },\n pop: function pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0];\n },\n shift: function shift() {\n return this.splice(0, 1)[0];\n },\n unshift: function unshift() {\n var adm = this[$mobx];\n for (var _len3 = arguments.length, items = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n items[_key3] = arguments[_key3];\n }\n adm.spliceWithArray_(0, 0, items);\n return adm.values_.length;\n },\n reverse: function reverse() {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\");\n }\n this.replace(this.slice().reverse());\n return this;\n },\n sort: function sort() {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\");\n }\n var copy = this.slice();\n copy.sort.apply(copy, arguments);\n this.replace(copy);\n return this;\n },\n remove: function remove(value) {\n var adm = this[$mobx];\n var idx = adm.dehanceValues_(adm.values_).indexOf(value);\n if (idx > -1) {\n this.splice(idx, 1);\n return true;\n }\n return false;\n }\n};\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"at\", simpleFunc);\naddArrayExtension(\"concat\", simpleFunc);\naddArrayExtension(\"flat\", simpleFunc);\naddArrayExtension(\"includes\", simpleFunc);\naddArrayExtension(\"indexOf\", simpleFunc);\naddArrayExtension(\"join\", simpleFunc);\naddArrayExtension(\"lastIndexOf\", simpleFunc);\naddArrayExtension(\"slice\", simpleFunc);\naddArrayExtension(\"toString\", simpleFunc);\naddArrayExtension(\"toLocaleString\", simpleFunc);\naddArrayExtension(\"toSorted\", simpleFunc);\naddArrayExtension(\"toSpliced\", simpleFunc);\naddArrayExtension(\"with\", simpleFunc);\n// map\naddArrayExtension(\"every\", mapLikeFunc);\naddArrayExtension(\"filter\", mapLikeFunc);\naddArrayExtension(\"find\", mapLikeFunc);\naddArrayExtension(\"findIndex\", mapLikeFunc);\naddArrayExtension(\"findLast\", mapLikeFunc);\naddArrayExtension(\"findLastIndex\", mapLikeFunc);\naddArrayExtension(\"flatMap\", mapLikeFunc);\naddArrayExtension(\"forEach\", mapLikeFunc);\naddArrayExtension(\"map\", mapLikeFunc);\naddArrayExtension(\"some\", mapLikeFunc);\naddArrayExtension(\"toReversed\", mapLikeFunc);\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc);\naddArrayExtension(\"reduceRight\", reduceLikeFunc);\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName);\n }\n}\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\n// Make sure callbacks receive correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n var _this2 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName](function (element, index) {\n return callback.call(thisArg, element, index, _this2);\n });\n };\n}\n// Make sure callbacks receive correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n var _this3 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n // #2432 - reduce behavior depends on arguments.length\n var callback = arguments[0];\n arguments[0] = function (accumulator, currentValue, index) {\n return callback(accumulator, currentValue, index, _this3);\n };\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\nvar isObservableArrayAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableArrayAdministration\", ObservableArrayAdministration);\nfunction isObservableArray(thing) {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx]);\n}\n\nvar ObservableMapMarker = {};\nvar ADD = \"add\";\nvar DELETE = \"delete\";\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\nvar ObservableMap = /*#__PURE__*/function () {\n function ObservableMap(initialData, enhancer_, name_) {\n var _this = this;\n if (enhancer_ === void 0) {\n enhancer_ = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableMap@\" + getNextId() : \"ObservableMap\";\n }\n this.enhancer_ = void 0;\n this.name_ = void 0;\n this[$mobx] = ObservableMapMarker;\n this.data_ = void 0;\n this.hasMap_ = void 0;\n // hasMap, not hashMap >-).\n this.keysAtom_ = void 0;\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = enhancer_;\n this.name_ = name_;\n if (!isFunction(Map)) {\n die(18);\n }\n initObservable(function () {\n _this.keysAtom_ = createAtom(process.env.NODE_ENV !== \"production\" ? _this.name_ + \".keys()\" : \"ObservableMap.keys()\");\n _this.data_ = new Map();\n _this.hasMap_ = new Map();\n if (initialData) {\n _this.merge(initialData);\n }\n });\n }\n var _proto = ObservableMap.prototype;\n _proto.has_ = function has_(key) {\n return this.data_.has(key);\n };\n _proto.has = function has(key) {\n var _this2 = this;\n if (!globalState.trackingDerivation) {\n return this.has_(key);\n }\n var entry = this.hasMap_.get(key);\n if (!entry) {\n var newEntry = entry = new ObservableValue(this.has_(key), referenceEnhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + stringifyKey(key) + \"?\" : \"ObservableMap.key?\", false);\n this.hasMap_.set(key, newEntry);\n onBecomeUnobserved(newEntry, function () {\n return _this2.hasMap_[\"delete\"](key);\n });\n }\n return entry.get();\n };\n _proto.set = function set(key, value) {\n var hasKey = this.has_(key);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n });\n if (!change) {\n return this;\n }\n value = change.newValue;\n }\n if (hasKey) {\n this.updateValue_(key, value);\n } else {\n this.addValue_(key, value);\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(key) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n name: key\n });\n if (!change) {\n return false;\n }\n }\n if (this.has_(key)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: this.data_.get(key).value_,\n name: key\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change);\n } // TODO fix type\n transaction(function () {\n var _this3$hasMap_$get;\n _this3.keysAtom_.reportChanged();\n (_this3$hasMap_$get = _this3.hasMap_.get(key)) == null || _this3$hasMap_$get.setNewValue_(false);\n var observable = _this3.data_.get(key);\n observable.setNewValue_(undefined);\n _this3.data_[\"delete\"](key);\n });\n if (notify) {\n notifyListeners(this, _change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.updateValue_ = function updateValue_(key, newValue) {\n var observable = this.data_.get(key);\n newValue = observable.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n };\n _proto.addValue_ = function addValue_(key, newValue) {\n var _this4 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n transaction(function () {\n var _this4$hasMap_$get;\n var observable = new ObservableValue(newValue, _this4.enhancer_, process.env.NODE_ENV !== \"production\" ? _this4.name_ + \".\" + stringifyKey(key) : \"ObservableMap.key\", false);\n _this4.data_.set(key, observable);\n newValue = observable.value_; // value might have been changed\n (_this4$hasMap_$get = _this4.hasMap_.get(key)) == null || _this4$hasMap_$get.setNewValue_(true);\n _this4.keysAtom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n };\n _proto.get = function get(key) {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key).get());\n }\n return this.dehanceValue_(undefined);\n };\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.keys = function keys() {\n this.keysAtom_.reportObserved();\n return this.data_.keys();\n };\n _proto.values = function values() {\n var self = this;\n var keys = this.keys();\n return makeIterableForMap({\n next: function next() {\n var _keys$next = keys.next(),\n done = _keys$next.done,\n value = _keys$next.value;\n return {\n done: done,\n value: done ? undefined : self.get(value)\n };\n }\n });\n };\n _proto.entries = function entries() {\n var self = this;\n var keys = this.keys();\n return makeIterableForMap({\n next: function next() {\n var _keys$next2 = keys.next(),\n done = _keys$next2.done,\n value = _keys$next2.value;\n return {\n done: done,\n value: done ? undefined : [value, self.get(value)]\n };\n }\n });\n };\n _proto[Symbol.iterator] = function () {\n return this.entries();\n };\n _proto.forEach = function forEach(callback, thisArg) {\n for (var _iterator = _createForOfIteratorHelperLoose(this), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n key = _step$value[0],\n value = _step$value[1];\n callback.call(thisArg, value, key, this);\n }\n }\n /** Merge another object into this object, returns this. */;\n _proto.merge = function merge(other) {\n var _this5 = this;\n if (isObservableMap(other)) {\n other = new Map(other);\n }\n transaction(function () {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach(function (key) {\n return _this5.set(key, other[key]);\n });\n } else if (Array.isArray(other)) {\n other.forEach(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return _this5.set(key, value);\n });\n } else if (isES6Map(other)) {\n if (!isPlainES6Map(other)) {\n die(19, other);\n }\n other.forEach(function (value, key) {\n return _this5.set(key, value);\n });\n } else if (other !== null && other !== undefined) {\n die(20, other);\n }\n });\n return this;\n };\n _proto.clear = function clear() {\n var _this6 = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator2 = _createForOfIteratorHelperLoose(_this6.keys()), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n _this6[\"delete\"](key);\n }\n });\n });\n };\n _proto.replace = function replace(values) {\n var _this7 = this;\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(function () {\n // Convert to map so we can do quick key lookups\n var replacementMap = convertToMap(values);\n var orderedData = new Map();\n // Used for optimization\n var keysReportChangedCalled = false;\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (var _iterator3 = _createForOfIteratorHelperLoose(_this7.data_.keys()), _step3; !(_step3 = _iterator3()).done;) {\n var key = _step3.value;\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n var deleted = _this7[\"delete\"](key);\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n } else {\n // Delete prevented by interceptor\n var value = _this7.data_.get(key);\n orderedData.set(key, value);\n }\n }\n }\n // Merge entries\n for (var _iterator4 = _createForOfIteratorHelperLoose(replacementMap.entries()), _step4; !(_step4 = _iterator4()).done;) {\n var _step4$value = _step4.value,\n _key = _step4$value[0],\n _value = _step4$value[1];\n // We will want to know whether a new key is added\n var keyExisted = _this7.data_.has(_key);\n // Add or update value\n _this7.set(_key, _value);\n // The addition could have been prevent by interceptor\n if (_this7.data_.has(_key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n var _value2 = _this7.data_.get(_key);\n orderedData.set(_key, _value2);\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (_this7.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n _this7.keysAtom_.reportChanged();\n } else {\n var iter1 = _this7.data_.keys();\n var iter2 = orderedData.keys();\n var next1 = iter1.next();\n var next2 = iter2.next();\n while (!next1.done) {\n if (next1.value !== next2.value) {\n _this7.keysAtom_.reportChanged();\n break;\n }\n next1 = iter1.next();\n next2 = iter2.next();\n }\n }\n }\n // Use correctly ordered map\n _this7.data_ = orderedData;\n });\n return this;\n };\n _proto.toString = function toString() {\n return \"[object ObservableMap]\";\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n return _createClass(ObservableMap, [{\n key: \"size\",\n get: function get() {\n this.keysAtom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: Symbol.toStringTag,\n get: function get() {\n return \"Map\";\n }\n }]);\n}();\n// eslint-disable-next-line\nvar isObservableMap = /*#__PURE__*/createInstanceofPredicate(\"ObservableMap\", ObservableMap);\nfunction makeIterableForMap(iterator) {\n iterator[Symbol.toStringTag] = \"MapIterator\";\n return makeIterable(iterator);\n}\nfunction convertToMap(dataStructure) {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure;\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure);\n } else if (isPlainObject(dataStructure)) {\n var map = new Map();\n for (var key in dataStructure) {\n map.set(key, dataStructure[key]);\n }\n return map;\n } else {\n return die(21, dataStructure);\n }\n}\n\nvar ObservableSetMarker = {};\nvar ObservableSet = /*#__PURE__*/function () {\n function ObservableSet(initialData, enhancer, name_) {\n var _this = this;\n if (enhancer === void 0) {\n enhancer = deepEnhancer;\n }\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableSet@\" + getNextId() : \"ObservableSet\";\n }\n this.name_ = void 0;\n this[$mobx] = ObservableSetMarker;\n this.data_ = new Set();\n this.atom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = void 0;\n this.name_ = name_;\n if (!isFunction(Set)) {\n die(22);\n }\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, name_);\n };\n initObservable(function () {\n _this.atom_ = createAtom(_this.name_);\n if (initialData) {\n _this.replace(initialData);\n }\n });\n }\n var _proto = ObservableSet.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n _proto.clear = function clear() {\n var _this2 = this;\n transaction(function () {\n untracked(function () {\n for (var _iterator = _createForOfIteratorHelperLoose(_this2.data_.values()), _step; !(_step = _iterator()).done;) {\n var value = _step.value;\n _this2[\"delete\"](value);\n }\n });\n });\n };\n _proto.forEach = function forEach(callbackFn, thisArg) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(this), _step2; !(_step2 = _iterator2()).done;) {\n var value = _step2.value;\n callbackFn.call(thisArg, value, value, this);\n }\n };\n _proto.add = function add(value) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: ADD,\n object: this,\n newValue: value\n });\n if (!change) {\n return this;\n }\n // implemented reassignment same as it's done for ObservableMap\n value = change.newValue;\n }\n if (!this.has(value)) {\n transaction(function () {\n _this3.data_.add(_this3.enhancer_(value, undefined));\n _this3.atom_.reportChanged();\n });\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n } : null;\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportStart(_change);\n }\n if (notify) {\n notifyListeners(this, _change);\n }\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportEnd();\n }\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(value) {\n var _this4 = this;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n oldValue: value\n });\n if (!change) {\n return false;\n }\n }\n if (this.has(value)) {\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var notify = hasListeners(this);\n var _change2 = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n } : null;\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportStart(_change2);\n }\n transaction(function () {\n _this4.atom_.reportChanged();\n _this4.data_[\"delete\"](value);\n });\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (notifySpy && process.env.NODE_ENV !== \"production\") {\n spyReportEnd();\n }\n return true;\n }\n return false;\n };\n _proto.has = function has(value) {\n this.atom_.reportObserved();\n return this.data_.has(this.dehanceValue_(value));\n };\n _proto.entries = function entries() {\n var values = this.values();\n return makeIterableForSet({\n next: function next() {\n var _values$next = values.next(),\n value = _values$next.value,\n done = _values$next.done;\n return !done ? {\n value: [value, value],\n done: done\n } : {\n value: undefined,\n done: done\n };\n }\n });\n };\n _proto.keys = function keys() {\n return this.values();\n };\n _proto.values = function values() {\n this.atom_.reportObserved();\n var self = this;\n var values = this.data_.values();\n return makeIterableForSet({\n next: function next() {\n var _values$next2 = values.next(),\n value = _values$next2.value,\n done = _values$next2.done;\n return !done ? {\n value: self.dehanceValue_(value),\n done: done\n } : {\n value: undefined,\n done: done\n };\n }\n });\n };\n _proto.intersection = function intersection(otherSet) {\n if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n return otherSet.intersection(this);\n } else {\n var dehancedSet = new Set(this);\n return dehancedSet.intersection(otherSet);\n }\n };\n _proto.union = function union(otherSet) {\n if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n return otherSet.union(this);\n } else {\n var dehancedSet = new Set(this);\n return dehancedSet.union(otherSet);\n }\n };\n _proto.difference = function difference(otherSet) {\n return new Set(this).difference(otherSet);\n };\n _proto.symmetricDifference = function symmetricDifference(otherSet) {\n if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n return otherSet.symmetricDifference(this);\n } else {\n var dehancedSet = new Set(this);\n return dehancedSet.symmetricDifference(otherSet);\n }\n };\n _proto.isSubsetOf = function isSubsetOf(otherSet) {\n return new Set(this).isSubsetOf(otherSet);\n };\n _proto.isSupersetOf = function isSupersetOf(otherSet) {\n return new Set(this).isSupersetOf(otherSet);\n };\n _proto.isDisjointFrom = function isDisjointFrom(otherSet) {\n if (isES6Set(otherSet) && !isObservableSet(otherSet)) {\n return otherSet.isDisjointFrom(this);\n } else {\n var dehancedSet = new Set(this);\n return dehancedSet.isDisjointFrom(otherSet);\n }\n };\n _proto.replace = function replace(other) {\n var _this5 = this;\n if (isObservableSet(other)) {\n other = new Set(other);\n }\n transaction(function () {\n if (Array.isArray(other)) {\n _this5.clear();\n other.forEach(function (value) {\n return _this5.add(value);\n });\n } else if (isES6Set(other)) {\n _this5.clear();\n other.forEach(function (value) {\n return _this5.add(value);\n });\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other);\n }\n });\n return this;\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n // ... 'fireImmediately' could also be true?\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\");\n }\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n _proto.toString = function toString() {\n return \"[object ObservableSet]\";\n };\n _proto[Symbol.iterator] = function () {\n return this.values();\n };\n return _createClass(ObservableSet, [{\n key: \"size\",\n get: function get() {\n this.atom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: Symbol.toStringTag,\n get: function get() {\n return \"Set\";\n }\n }]);\n}();\n// eslint-disable-next-line\nvar isObservableSet = /*#__PURE__*/createInstanceofPredicate(\"ObservableSet\", ObservableSet);\nfunction makeIterableForSet(iterator) {\n iterator[Symbol.toStringTag] = \"SetIterator\";\n return makeIterable(iterator);\n}\n\nvar descriptorCache = /*#__PURE__*/Object.create(null);\nvar REMOVE = \"remove\";\nvar ObservableObjectAdministration = /*#__PURE__*/function () {\n function ObservableObjectAdministration(target_, values_, name_,\n // Used anytime annotation is not explicitely provided\n defaultAnnotation_) {\n if (values_ === void 0) {\n values_ = new Map();\n }\n if (defaultAnnotation_ === void 0) {\n defaultAnnotation_ = autoAnnotation;\n }\n this.target_ = void 0;\n this.values_ = void 0;\n this.name_ = void 0;\n this.defaultAnnotation_ = void 0;\n this.keysAtom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.proxy_ = void 0;\n this.isPlainObject_ = void 0;\n this.appliedAnnotations_ = void 0;\n this.pendingKeys_ = void 0;\n this.target_ = target_;\n this.values_ = values_;\n this.name_ = name_;\n this.defaultAnnotation_ = defaultAnnotation_;\n this.keysAtom_ = new Atom(process.env.NODE_ENV !== \"production\" ? this.name_ + \".keys\" : \"ObservableObject.keys\");\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_);\n if (process.env.NODE_ENV !== \"production\" && !isAnnotation(this.defaultAnnotation_)) {\n die(\"defaultAnnotation must be valid annotation\");\n }\n if (process.env.NODE_ENV !== \"production\") {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {};\n }\n }\n var _proto = ObservableObjectAdministration.prototype;\n _proto.getObservablePropValue_ = function getObservablePropValue_(key) {\n return this.values_.get(key).get();\n };\n _proto.setObservablePropValue_ = function setObservablePropValue_(key, newValue) {\n var observable = this.values_.get(key);\n if (observable instanceof ComputedValue) {\n observable.set(newValue);\n return true;\n }\n // intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: newValue\n });\n if (!change) {\n return null;\n }\n newValue = change.newValue;\n }\n newValue = observable.prepareNewValue_(newValue);\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var _change = notify || notifySpy ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change);\n }\n observable.setNewValue_(newValue);\n if (notify) {\n notifyListeners(this, _change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n return true;\n };\n _proto.get_ = function get_(key) {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key);\n }\n return this.target_[key];\n }\n /**\n * @param {PropertyKey} key\n * @param {any} value\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.set_ = function set_(key, value, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value);\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value);\n } else {\n // Non-observable\n this.target_[key] = value;\n return true;\n }\n } else {\n // New prop\n return this.extend_(key, {\n value: value,\n enumerable: true,\n writable: true,\n configurable: true\n }, this.defaultAnnotation_, proxyTrap);\n }\n }\n // Trap for \"in\"\n ;\n _proto.has_ = function has_(key) {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_;\n }\n this.pendingKeys_ || (this.pendingKeys_ = new Map());\n var entry = this.pendingKeys_.get(key);\n if (!entry) {\n entry = new ObservableValue(key in this.target_, referenceEnhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + stringifyKey(key) + \"?\" : \"ObservableObject.key?\", false);\n this.pendingKeys_.set(key, entry);\n }\n return entry.get();\n }\n /**\n * @param {PropertyKey} key\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n */;\n _proto.make_ = function make_(key, annotation) {\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return;\n }\n assertAnnotable(this, annotation, key);\n if (!(key in this.target_)) {\n var _this$target_$storedA;\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if ((_this$target_$storedA = this.target_[storedAnnotationsSymbol]) != null && _this$target_$storedA[key]) {\n return; // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, this.name_ + \".\" + key.toString());\n }\n }\n var source = this.target_;\n while (source && source !== objectPrototype) {\n var descriptor = getDescriptor(source, key);\n if (descriptor) {\n var outcome = annotation.make_(this, key, descriptor, source);\n if (outcome === 0 /* MakeResult.Cancel */) {\n return;\n }\n if (outcome === 1 /* MakeResult.Break */) {\n break;\n }\n }\n source = Object.getPrototypeOf(source);\n }\n recordAnnotationApplied(this, annotation, key);\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.extend_ = function extend_(key, descriptor, annotation, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap);\n }\n assertAnnotable(this, annotation, key);\n var outcome = annotation.extend_(this, key, descriptor, proxyTrap);\n if (outcome) {\n recordAnnotationApplied(this, annotation, key);\n }\n return outcome;\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.defineProperty_ = function defineProperty_(key, descriptor, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n });\n if (!change) {\n return null;\n }\n var newValue = change.newValue;\n if (descriptor.value !== newValue) {\n descriptor = _extends({}, descriptor, {\n value: newValue\n });\n }\n }\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineObservableProperty_ = function defineObservableProperty_(key, value, enhancer, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n });\n if (!change) {\n return null;\n }\n value = change.newValue;\n }\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n var observable = new ObservableValue(value, enhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\", false);\n this.values_.set(key, observable);\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_);\n } finally {\n endBatch();\n }\n return true;\n }\n // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineComputedProperty_ = function defineComputedProperty_(key, options, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n try {\n startBatch();\n // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n }\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n });\n if (!change) {\n return null;\n }\n }\n options.name || (options.name = process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\");\n options.context = this.proxy_ || this.target_;\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n };\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n this.values_.set(key, new ComputedValue(options));\n // Notify\n this.notifyPropertyAddition_(key, undefined);\n } finally {\n endBatch();\n }\n return true;\n }\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */;\n _proto.delete_ = function delete_(key, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true;\n }\n // Intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n });\n // Cancelled\n if (!change) {\n return null;\n }\n }\n // Delete\n try {\n var _this$pendingKeys_;\n startBatch();\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var observable = this.values_.get(key);\n // Value needed for spies/listeners\n var value = undefined;\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n var _getDescriptor;\n value = (_getDescriptor = getDescriptor(this.target_, key)) == null ? void 0 : _getDescriptor.value;\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false;\n }\n } else {\n delete this.target_[key];\n }\n // Allow re-annotating this field\n if (process.env.NODE_ENV !== \"production\") {\n delete this.appliedAnnotations_[key];\n }\n // Clear observable\n if (observable) {\n this.values_[\"delete\"](key);\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_;\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable);\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n (_this$pendingKeys_ = this.pendingKeys_) == null || (_this$pendingKeys_ = _this$pendingKeys_.get(key)) == null || _this$pendingKeys_.set(key in this.target_);\n // Notify spies/listeners\n if (notify || notifySpy) {\n var _change2 = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n };\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(_change2);\n }\n if (notify) {\n notifyListeners(this, _change2);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n } finally {\n endBatch();\n }\n return true;\n }\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */;\n _proto.observe_ = function observe_(callback, fireImmediately) {\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\");\n }\n return registerListener(this, callback);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.notifyPropertyAddition_ = function notifyPropertyAddition_(key, value) {\n var _this$pendingKeys_2;\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n if (notify || notifySpy) {\n var change = notify || notifySpy ? {\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart(change);\n }\n if (notify) {\n notifyListeners(this, change);\n }\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportEnd();\n }\n }\n (_this$pendingKeys_2 = this.pendingKeys_) == null || (_this$pendingKeys_2 = _this$pendingKeys_2.get(key)) == null || _this$pendingKeys_2.set(true);\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n };\n _proto.ownKeys_ = function ownKeys_() {\n this.keysAtom_.reportObserved();\n return ownKeys(this.target_);\n };\n _proto.keys_ = function keys_() {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved();\n return Object.keys(this.target_);\n };\n return ObservableObjectAdministration;\n}();\nfunction asObservableObject(target, options) {\n var _options$name;\n if (process.env.NODE_ENV !== \"production\" && options && isObservableObject(target)) {\n die(\"Options can't be provided for already observable objects.\");\n }\n if (hasProp(target, $mobx)) {\n if (process.env.NODE_ENV !== \"production\" && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\"Cannot convert '\" + getDebugName(target) + \"' into observable object:\" + \"\\nThe target is already observable of different type.\" + \"\\nExtending builtins is not supported.\");\n }\n return target;\n }\n if (process.env.NODE_ENV !== \"production\" && !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\");\n }\n var name = (_options$name = options == null ? void 0 : options.name) != null ? _options$name : process.env.NODE_ENV !== \"production\" ? (isPlainObject(target) ? \"ObservableObject\" : target.constructor.name) + \"@\" + getNextId() : \"ObservableObject\";\n var adm = new ObservableObjectAdministration(target, new Map(), String(name), getAnnotationFromOptions(options));\n addHiddenProp(target, $mobx, adm);\n return target;\n}\nvar isObservableObjectAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableObjectAdministration\", ObservableObjectAdministration);\nfunction getCachedObservablePropDescriptor(key) {\n return descriptorCache[key] || (descriptorCache[key] = {\n get: function get() {\n return this[$mobx].getObservablePropValue_(key);\n },\n set: function set(value) {\n return this[$mobx].setObservablePropValue_(key, value);\n }\n });\n}\nfunction isObservableObject(thing) {\n if (isObject(thing)) {\n return isObservableObjectAdministration(thing[$mobx]);\n }\n return false;\n}\nfunction recordAnnotationApplied(adm, annotation, key) {\n var _adm$target_$storedAn;\n if (process.env.NODE_ENV !== \"production\") {\n adm.appliedAnnotations_[key] = annotation;\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n (_adm$target_$storedAn = adm.target_[storedAnnotationsSymbol]) == null || delete _adm$target_$storedAn[key];\n}\nfunction assertAnnotable(adm, annotation, key) {\n // Valid annotation\n if (process.env.NODE_ENV !== \"production\" && !isAnnotation(annotation)) {\n die(\"Cannot annotate '\" + adm.name_ + \".\" + key.toString() + \"': Invalid annotation.\");\n }\n /*\n // Configurable, not sealed, not frozen\n // Possibly not needed, just a little better error then the one thrown by engine.\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n if (__DEV__) {\n const configurable = getDescriptor(adm.target_, key)?.configurable\n const frozen = Object.isFrozen(adm.target_)\n const sealed = Object.isSealed(adm.target_)\n if (!configurable || frozen || sealed) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const requestedAnnotationType = annotation.annotationType_\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n if (frozen) {\n error += `\\nObject is frozen.`\n }\n if (sealed) {\n error += `\\nObject is sealed.`\n }\n if (!configurable) {\n error += `\\nproperty is not configurable.`\n // Mention only if caused by us to avoid confusion\n if (hasProp(adm.appliedAnnotations!, key)) {\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\n }\n }\n die(error)\n }\n }\n */\n // Not annotated\n if (process.env.NODE_ENV !== \"production\" && !isOverride(annotation) && hasProp(adm.appliedAnnotations_, key)) {\n var fieldName = adm.name_ + \".\" + key.toString();\n var currentAnnotationType = adm.appliedAnnotations_[key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already annotated with '\" + currentAnnotationType + \"'.\") + \"\\nRe-annotating fields is not allowed.\" + \"\\nUse 'override' annotation for methods overridden by subclass.\");\n }\n}\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nvar ENTRY_0 = /*#__PURE__*/createArrayEntryDescriptor(0);\nvar safariPrototypeSetterInheritanceBug = /*#__PURE__*/function () {\n var v = false;\n var p = {};\n Object.defineProperty(p, \"0\", {\n set: function set() {\n v = true;\n }\n });\n /*#__PURE__*/Object.create(p)[\"0\"] = 1;\n return v === false;\n}();\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nvar OBSERVABLE_ARRAY_BUFFER_SIZE = 0;\n// Typescript workaround to make sure ObservableArray extends Array\nvar StubArray = function StubArray() {};\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto);\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto;\n } else {\n ctor.prototype = proto;\n }\n}\ninherit(StubArray, Array.prototype);\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\nvar LegacyObservableArray = /*#__PURE__*/function (_StubArray) {\n function LegacyObservableArray(initialValues, enhancer, name, owned) {\n var _this;\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n if (owned === void 0) {\n owned = false;\n }\n _this = _StubArray.call(this) || this;\n initObservable(function () {\n var adm = new ObservableArrayAdministration(name, enhancer, owned, true);\n adm.proxy_ = _this;\n addHiddenFinalProp(_this, $mobx, adm);\n if (initialValues && initialValues.length) {\n // @ts-ignore\n _this.spliceWithArray(0, 0, initialValues);\n }\n if (safariPrototypeSetterInheritanceBug) {\n // Seems that Safari won't use numeric prototype setter until any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(_this, \"0\", ENTRY_0);\n }\n });\n return _this;\n }\n _inheritsLoose(LegacyObservableArray, _StubArray);\n var _proto = LegacyObservableArray.prototype;\n _proto.concat = function concat() {\n this[$mobx].atom_.reportObserved();\n for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) {\n arrays[_key] = arguments[_key];\n }\n return Array.prototype.concat.apply(this.slice(),\n //@ts-ignore\n arrays.map(function (a) {\n return isObservableArray(a) ? a.slice() : a;\n }));\n };\n _proto[Symbol.iterator] = function () {\n var self = this;\n var nextIndex = 0;\n return makeIterable({\n next: function next() {\n return nextIndex < self.length ? {\n value: self[nextIndex++],\n done: false\n } : {\n done: true,\n value: undefined\n };\n }\n });\n };\n return _createClass(LegacyObservableArray, [{\n key: \"length\",\n get: function get() {\n return this[$mobx].getArrayLength_();\n },\n set: function set(newLength) {\n this[$mobx].setArrayLength_(newLength);\n }\n }, {\n key: Symbol.toStringTag,\n get: function get() {\n return \"Array\";\n }\n }]);\n}(StubArray);\nObject.entries(arrayExtensions).forEach(function (_ref) {\n var prop = _ref[0],\n fn = _ref[1];\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn);\n }\n});\nfunction createArrayEntryDescriptor(index) {\n return {\n enumerable: false,\n configurable: true,\n get: function get() {\n return this[$mobx].get_(index);\n },\n set: function set(value) {\n this[$mobx].set_(index, value);\n }\n };\n}\nfunction createArrayBufferItem(index) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index));\n}\nfunction reserveArrayBuffer(max) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (var index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index);\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max;\n }\n}\nreserveArrayBuffer(1000);\nfunction createLegacyArray(initialValues, enhancer, name) {\n return new LegacyObservableArray(initialValues, enhancer, name);\n}\n\nfunction getAtom(thing, property) {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23);\n }\n return thing[$mobx].atom_;\n }\n if (isObservableSet(thing)) {\n return thing.atom_;\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_;\n }\n var observable = thing.data_.get(property) || thing.hasMap_.get(property);\n if (!observable) {\n die(25, property, getDebugName(thing));\n }\n return observable;\n }\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26);\n }\n var _observable = thing[$mobx].values_.get(property);\n if (!_observable) {\n die(27, property, getDebugName(thing));\n }\n return _observable;\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx];\n }\n }\n die(28);\n}\nfunction getAdministration(thing, property) {\n if (!thing) {\n die(29);\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property));\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing;\n }\n if (thing[$mobx]) {\n return thing[$mobx];\n }\n die(24, thing);\n}\nfunction getDebugName(thing, property) {\n var named;\n if (property !== undefined) {\n named = getAtom(thing, property);\n } else if (isAction(thing)) {\n return thing.name;\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing);\n } else {\n // valid for arrays as well\n named = getAtom(thing);\n }\n return named.name_;\n}\n/**\n * Helper function for initializing observable structures, it applies:\n * 1. allowStateChanges so we don't violate enforceActions.\n * 2. untracked so we don't accidentaly subscribe to anything observable accessed during init in case the observable is created inside derivation.\n * 3. batch to avoid state version updates\n */\nfunction initObservable(cb) {\n var derivation = untrackedStart();\n var allowStateChanges = allowStateChangesStart(true);\n startBatch();\n try {\n return cb();\n } finally {\n endBatch();\n allowStateChangesEnd(allowStateChanges);\n untrackedEnd(derivation);\n }\n}\n\nvar toString = objectPrototype.toString;\nfunction deepEqual(a, b, depth) {\n if (depth === void 0) {\n depth = -1;\n }\n return eq(a, b, depth);\n}\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Modified: \"Deep compare objects\" part to iterate over keys in forward order instead of reverse order.\n//\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a, b, depth, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b;\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false;\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b;\n }\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false;\n }\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) {\n return false;\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b;\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b;\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case \"[object Symbol]\":\n return typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b);\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++;\n }\n break;\n }\n // Unwrap any wrapped objects.\n a = unwrap(a);\n b = unwrap(b);\n var areArrays = className === \"[object Array]\";\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false;\n }\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor,\n bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor && isFunction(bCtor) && bCtor instanceof bCtor) && \"constructor\" in a && \"constructor\" in b) {\n return false;\n }\n }\n if (depth === 0) {\n return false;\n } else if (depth < 0) {\n depth = -1;\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b;\n }\n }\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false;\n }\n }\n } else {\n // Deep compare objects.\n var keys = Object.keys(a);\n var _length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== _length) {\n return false;\n }\n for (var i = 0; i < _length; i++) {\n // Deep compare each member\n var key = keys[i];\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false;\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\nfunction unwrap(a) {\n if (isObservableArray(a)) {\n return a.slice();\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries());\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries());\n }\n return a;\n}\n\nvar _getGlobal$Iterator;\n// safely get iterator prototype if available\nvar maybeIteratorPrototype = ((_getGlobal$Iterator = /*#__PURE__*/getGlobal().Iterator) == null ? void 0 : _getGlobal$Iterator.prototype) || {};\nfunction makeIterable(iterator) {\n iterator[Symbol.iterator] = getSelf;\n return Object.assign(Object.create(maybeIteratorPrototype), iterator);\n}\nfunction getSelf() {\n return this;\n}\n\nfunction isAnnotation(thing) {\n return (\n // Can be function\n thing instanceof Object && typeof thing.annotationType_ === \"string\" && isFunction(thing.make_) && isFunction(thing.extend_)\n );\n}\n\n/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\n[\"Symbol\", \"Map\", \"Set\"].forEach(function (m) {\n var g = getGlobal();\n if (typeof g[m] === \"undefined\") {\n die(\"MobX requires global '\" + m + \"' to be available or polyfilled\");\n }\n});\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy: spy,\n extras: {\n getDebugName: getDebugName\n },\n $mobx: $mobx\n });\n}\n\nexport { $mobx, FlowCancellationError, ObservableMap, ObservableSet, Reaction, allowStateChanges as _allowStateChanges, runInAction as _allowStateChangesInsideComputed, allowStateReadsEnd as _allowStateReadsEnd, allowStateReadsStart as _allowStateReadsStart, autoAction as _autoAction, _endAction, getAdministration as _getAdministration, getGlobalState as _getGlobalState, interceptReads as _interceptReads, isComputingDerivation as _isComputingDerivation, resetGlobalState as _resetGlobalState, _startAction, action, autorun, comparer, computed, configure, createAtom, apiDefineProperty as defineProperty, entries, extendObservable, flow, flowResult, get, getAtom, getDebugName, getDependencyTree, getObserverTree, has, intercept, isAction, isObservableValue as isBoxedObservable, isComputed, isComputedProp, isFlow, isFlowCancellationError, isObservable, isObservableArray, isObservableMap, isObservableObject, isObservableProp, isObservableSet, keys, makeAutoObservable, makeObservable, observable, observe, onBecomeObserved, onBecomeUnobserved, onReactionError, override, apiOwnKeys as ownKeys, reaction, remove, runInAction, set, spy, toJS, trace, transaction, untracked, values, when };\n//# sourceMappingURL=mobx.esm.js.map\n","import { action, extendObservable, observable, _allowStateChanges, createAtom, computed, observe, makeObservable, runInAction, keys, isObservableArray, isObservableMap, isComputed, isObservableObject, $mobx, isComputedProp, _getAdministration, getAtom, isAction, autorun, _isComputingDerivation, _getGlobalState, onBecomeUnobserved, entries, values, transaction, reaction, ObservableMap } from 'mobx';\n\nvar NOOP = function () { };\nvar IDENTITY = function (_) { return _; };\nfunction fail(message) {\n throw new Error(\"[mobx-utils] \" + message);\n}\nfunction invariant(cond, message) {\n if (message === void 0) { message = \"Illegal state\"; }\n if (!cond)\n fail(message);\n}\nfunction addHiddenProp(object, propName, value) {\n Object.defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value,\n });\n}\nvar deepFields = function (x) {\n return (x &&\n x !== Object.prototype &&\n Object.getOwnPropertyNames(x).concat(deepFields(Object.getPrototypeOf(x)) || []));\n};\nvar distinctDeepFields = function (x) {\n var deepFieldsIndistinct = deepFields(x);\n var deepFieldsDistinct = deepFieldsIndistinct.filter(function (item, index) { return deepFieldsIndistinct.indexOf(item) === index; });\n return deepFieldsDistinct;\n};\nvar getAllMethodsAndProperties = function (x) {\n return distinctDeepFields(x).filter(function (name) { return name !== \"constructor\" && !~name.indexOf(\"__\"); });\n};\n\nvar PENDING = \"pending\";\nvar FULFILLED = \"fulfilled\";\nvar REJECTED = \"rejected\";\nfunction caseImpl(handlers) {\n switch (this.state) {\n case PENDING:\n return handlers.pending && handlers.pending(this.value);\n case REJECTED:\n return handlers.rejected && handlers.rejected(this.value);\n case FULFILLED:\n return handlers.fulfilled ? handlers.fulfilled(this.value) : this.value;\n }\n}\n/**\n * `fromPromise` takes a Promise, extends it with 2 observable properties that track\n * the status of the promise and returns it. The returned object has the following observable properties:\n * - `value`: either the initial value, the value the Promise resolved to, or the value the Promise was rejected with. use `.state` if you need to be able to tell the difference.\n * - `state`: one of `\"pending\"`, `\"fulfilled\"` or `\"rejected\"`\n *\n * And the following methods:\n * - `case({fulfilled, rejected, pending})`: maps over the result using the provided handlers, or returns `undefined` if a handler isn't available for the current promise state.\n *\n * The returned object implements `PromiseLike<TValue>`, so you can chain additional `Promise` handlers using `then`. You may also use it with `await` in `async` functions.\n *\n * Note that the status strings are available as constants:\n * `mobxUtils.PENDING`, `mobxUtils.REJECTED`, `mobxUtil.FULFILLED`\n *\n * fromPromise takes an optional second argument, a previously created `fromPromise` based observable.\n * This is useful to replace one promise based observable with another, without going back to an intermediate\n * \"pending\" promise state while fetching data. For example:\n *\n * @example\n * \\@observer\n * class SearchResults extends React.Component {\n * \\@observable.ref searchResults\n *\n * componentDidUpdate(nextProps) {\n * if (nextProps.query !== this.props.query)\n * this.searchResults = fromPromise(\n * window.fetch(\"/search?q=\" + nextProps.query),\n * // by passing, we won't render a pending state if we had a successful search query before\n * // rather, we will keep showing the previous search results, until the new promise resolves (or rejects)\n * this.searchResults\n * )\n * }\n *\n * render() {\n * return this.searchResults.case({\n * pending: (staleValue) => {\n * return staleValue || \"searching\" // <- value might set to previous results while the promise is still pending\n * },\n * fulfilled: (value) => {\n * return value // the fresh results\n * },\n * rejected: (error) => {\n * return \"Oops: \" + error\n * }\n * })\n * }\n * }\n *\n * Observable promises can be created immediately in a certain state using\n * `fromPromise.reject(reason)` or `fromPromise.resolve(value?)`.\n * The main advantage of `fromPromise.resolve(value)` over `fromPromise(Promise.resolve(value))` is that the first _synchronously_ starts in the desired state.\n *\n * It is possible to directly create a promise using a resolve, reject function:\n * `fromPromise((resolve, reject) => setTimeout(() => resolve(true), 1000))`\n *\n * @example\n * const fetchResult = fromPromise(fetch(\"http://someurl\"))\n *\n * // combine with when..\n * when(\n * () => fetchResult.state !== \"pending\",\n * () => {\n * console.log(\"Got \", fetchResult.value)\n * }\n * )\n *\n * // or a mobx-react component..\n * const myComponent = observer(({ fetchResult }) => {\n * switch(fetchResult.state) {\n * case \"pending\": return <div>Loading...</div>\n * case \"rejected\": return <div>Ooops... {fetchResult.value}</div>\n * case \"fulfilled\": return <div>Gotcha: {fetchResult.value}</div>\n * }\n * })\n *\n * // or using the case method instead of switch:\n *\n * const myComponent = observer(({ fetchResult }) =>\n * fetchResult.case({\n * pending: () => <div>Loading...</div>,\n * rejected: error => <div>Ooops.. {error}</div>,\n * fulfilled: value => <div>Gotcha: {value}</div>,\n * }))\n *\n * // chain additional handler(s) to the resolve/reject:\n *\n * fetchResult.then(\n * (result) => doSomeTransformation(result),\n * (rejectReason) => console.error('fetchResult was rejected, reason: ' + rejectReason)\n * ).then(\n * (transformedResult) => console.log('transformed fetchResult: ' + transformedResult)\n * )\n *\n * @param origPromise The promise which will be observed\n * @param oldPromise The previously observed promise\n * @returns origPromise with added properties and methods described above.\n */\nfunction fromPromise(origPromise, oldPromise) {\n invariant(arguments.length <= 2, \"fromPromise expects up to two arguments\");\n invariant(typeof origPromise === \"function\" ||\n (typeof origPromise === \"object\" &&\n origPromise &&\n typeof origPromise.then === \"function\"), \"Please pass a promise or function to fromPromise\");\n if (origPromise.isPromiseBasedObservable === true)\n return origPromise;\n if (typeof origPromise === \"function\") {\n // If it is a (reject, resolve function, wrap it)\n origPromise = new Promise(origPromise);\n }\n var promise = origPromise;\n origPromise.then(action(\"observableFromPromise-resolve\", function (value) {\n promise.value = value;\n promise.state = FULFILLED;\n }), action(\"observableFromPromise-reject\", function (reason) {\n promise.value = reason;\n promise.state = REJECTED;\n }));\n promise.isPromiseBasedObservable = true;\n promise.case = caseImpl;\n var oldData = oldPromise && (oldPromise.state === FULFILLED || oldPromise.state === PENDING)\n ? oldPromise.value\n : undefined;\n extendObservable(promise, {\n value: oldData,\n state: PENDING,\n }, {}, { deep: false });\n return promise;\n}\n(function (fromPromise) {\n fromPromise.reject = action(\"fromPromise.reject\", function (reason) {\n var p = fromPromise(Promise.reject(reason));\n p.state = REJECTED;\n p.value = reason;\n return p;\n });\n function resolveBase(value) {\n if (value === void 0) { value = undefined; }\n var p = fromPromise(Promise.resolve(value));\n p.state = FULFILLED;\n p.value = value;\n return p;\n }\n fromPromise.resolve = action(\"fromPromise.resolve\", resolveBase);\n})(fromPromise || (fromPromise = {}));\n/**\n * Returns true if the provided value is a promise-based observable.\n * @param value any\n * @returns {boolean}\n */\nfunction isPromiseBasedObservable(value) {\n return value && value.isPromiseBasedObservable === true;\n}\n\nvar __spreadArrays = (undefined && undefined.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n/**\n * Moves an item from one position to another, checking that the indexes given are within bounds.\n *\n * @example\n * const source = observable([1, 2, 3])\n * moveItem(source, 0, 1)\n * console.log(source.map(x => x)) // [2, 1, 3]\n *\n * @export\n * @param {ObservableArray<T>} target\n * @param {number} fromIndex\n * @param {number} toIndex\n * @returns {ObservableArray<T>}\n */\nfunction moveItem(target, fromIndex, toIndex) {\n checkIndex(target, fromIndex);\n checkIndex(target, toIndex);\n if (fromIndex === toIndex) {\n return;\n }\n var oldItems = target.slice();\n var newItems;\n if (fromIndex < toIndex) {\n newItems = __spreadArrays(oldItems.slice(0, fromIndex), oldItems.slice(fromIndex + 1, toIndex + 1), [\n oldItems[fromIndex]\n ], oldItems.slice(toIndex + 1));\n }\n else {\n // toIndex < fromIndex\n newItems = __spreadArrays(oldItems.slice(0, toIndex), [\n oldItems[fromIndex]\n ], oldItems.slice(toIndex, fromIndex), oldItems.slice(fromIndex + 1));\n }\n target.replace(newItems);\n return target;\n}\n/**\n * Checks whether the specified index is within bounds. Throws if not.\n *\n * @private\n * @param {ObservableArray<any>} target\n * @param {number }index\n */\nfunction checkIndex(target, index) {\n if (index < 0) {\n throw new Error(\"[mobx.array] Index out of bounds: \" + index + \" is negative\");\n }\n var length = target.length;\n if (index >= length) {\n throw new Error(\"[mobx.array] Index out of bounds: \" + index + \" is not smaller than \" + length);\n }\n}\n\n/**\n * `lazyObservable` creates an observable around a `fetch` method that will not be invoked\n * until the observable is needed the first time.\n * The fetch method receives a `sink` callback which can be used to replace the\n * current value of the lazyObservable. It is allowed to call `sink` multiple times\n * to keep the lazyObservable up to date with some external resource.\n *\n * Note that it is the `current()` call itself which is being tracked by MobX,\n * so make sure that you don't dereference to early.\n *\n * @example\n * const userProfile = lazyObservable(\n * sink => fetch(\"/myprofile\").then(profile => sink(profile))\n * )\n *\n * // use the userProfile in a React component:\n * const Profile = observer(({ userProfile }) =>\n * userProfile.current() === undefined\n * ? <div>Loading user profile...</div>\n * : <div>{userProfile.current().displayName}</div>\n * )\n *\n * // triggers refresh the userProfile\n * userProfile.refresh()\n *\n * @param {(sink: (newValue: T) => void) => void} fetch method that will be called the first time the value of this observable is accessed. The provided sink can be used to produce a new value, synchronously or asynchronously\n * @param {T} [initialValue=undefined] optional initialValue that will be returned from `current` as long as the `sink` has not been called at least once\n * @returns {{\n * current(): T,\n * refresh(): T,\n * reset(): T\n * pending: boolean\n * }}\n */\nfunction lazyObservable(fetch, initialValue) {\n if (initialValue === void 0) { initialValue = undefined; }\n var started = false;\n var value = observable.box(initialValue, { deep: false });\n var pending = observable.box(false);\n var currentFnc = function () {\n if (!started) {\n started = true;\n _allowStateChanges(true, function () {\n pending.set(true);\n });\n fetch(function (newValue) {\n _allowStateChanges(true, function () {\n value.set(newValue);\n pending.set(false);\n });\n });\n }\n return value.get();\n };\n var resetFnc = action(\"lazyObservable-reset\", function () {\n started = false;\n value.set(initialValue);\n return value.get();\n });\n return {\n current: currentFnc,\n refresh: function () {\n if (started) {\n started = false;\n return currentFnc();\n }\n else {\n return value.get();\n }\n },\n reset: function () {\n return resetFnc();\n },\n get pending() {\n return pending.get();\n },\n };\n}\n\n/**\n * `fromResource` creates an observable whose current state can be inspected using `.current()`,\n * and which can be kept in sync with some external datasource that can be subscribed to.\n *\n * The created observable will only subscribe to the datasource if it is in use somewhere,\n * (un)subscribing when needed. To enable `fromResource` to do that two callbacks need to be provided,\n * one to subscribe, and one to unsubscribe. The subscribe callback itself will receive a `sink` callback, which can be used\n * to update the current state of the observable, allowing observes to react.\n *\n * Whatever is passed to `sink` will be returned by `current()`. The values passed to the sink will not be converted to\n * observables automatically, but feel free to do so.\n * It is the `current()` call itself which is being tracked,\n * so make sure that you don't dereference to early.\n *\n * For inspiration, an example integration with the apollo-client on [github](https://github.com/apollostack/apollo-client/issues/503#issuecomment-241101379),\n * or the [implementation](https://github.com/mobxjs/mobx-utils/blob/1d17cf7f7f5200937f68cc0b5e7ec7f3f71dccba/src/now.ts#L43-L57) of `mobxUtils.now`\n *\n * The following example code creates an observable that connects to a `dbUserRecord`,\n * which comes from an imaginary database and notifies when it has changed.\n *\n * @example\n * function createObservableUser(dbUserRecord) {\n * let currentSubscription;\n * return fromResource(\n * (sink) => {\n * // sink the current state\n * sink(dbUserRecord.fields)\n * // subscribe to the record, invoke the sink callback whenever new data arrives\n * currentSubscription = dbUserRecord.onUpdated(() => {\n * sink(dbUserRecord.fields)\n * })\n * },\n * () => {\n * // the user observable is not in use at the moment, unsubscribe (for now)\n * dbUserRecord.unsubscribe(currentSubscription)\n * }\n * )\n * }\n *\n * // usage:\n * const myUserObservable = createObservableUser(myDatabaseConnector.query(\"name = 'Michel'\"))\n *\n * // use the observable in autorun\n * autorun(() => {\n * // printed everytime the database updates its records\n * console.log(myUserObservable.current().displayName)\n * })\n *\n * // ... or a component\n * const userComponent = observer(({ user }) =>\n * <div>{user.current().displayName}</div>\n * )\n *\n * @export\n * @template T\n * @param {(sink: (newValue: T) => void) => void} subscriber\n * @param {IDisposer} [unsubscriber=NOOP]\n * @param {T} [initialValue=undefined] the data that will be returned by `get()` until the `sink` has emitted its first data\n * @returns {{\n * current(): T;\n * dispose(): void;\n * isAlive(): boolean;\n * }}\n */\nfunction fromResource(subscriber, unsubscriber, initialValue) {\n if (unsubscriber === void 0) { unsubscriber = NOOP; }\n if (initialValue === void 0) { initialValue = undefined; }\n var isActive = false;\n var isDisposed = false;\n var value = initialValue;\n var suspender = function () {\n if (isActive) {\n isActive = false;\n unsubscriber();\n }\n };\n var atom = createAtom(\"ResourceBasedObservable\", function () {\n invariant(!isActive && !isDisposed);\n isActive = true;\n subscriber(function (newValue) {\n _allowStateChanges(true, function () {\n value = newValue;\n atom.reportChanged();\n });\n });\n }, suspender);\n return {\n current: function () {\n invariant(!isDisposed, \"subscribingObservable has already been disposed\");\n var isBeingTracked = atom.reportObserved();\n if (!isBeingTracked && !isActive)\n console.warn(\"Called `get` of a subscribingObservable outside a reaction. Current value will be returned but no new subscription has started\");\n return value;\n },\n dispose: function () {\n isDisposed = true;\n suspender();\n },\n isAlive: function () { return isActive; },\n };\n}\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction observableSymbol() {\n return (typeof Symbol === \"function\" && Symbol.observable) || \"@@observable\";\n}\n/**\n * Converts an expression to an observable stream (a.k.a. TC 39 Observable / RxJS observable).\n * The provided expression is tracked by mobx as long as there are subscribers, automatically\n * emitting when new values become available. The expressions respect (trans)actions.\n *\n * @example\n *\n * const user = observable({\n * firstName: \"C.S\",\n * lastName: \"Lewis\"\n * })\n *\n * Rx.Observable\n * .from(mobxUtils.toStream(() => user.firstname + user.lastName))\n * .scan(nameChanges => nameChanges + 1, 0)\n * .subscribe(nameChanges => console.log(\"Changed name \", nameChanges, \"times\"))\n *\n * @export\n * @template T\n * @param {() => T} expression\n * @param {boolean} fireImmediately (by default false)\n * @returns {IObservableStream<T>}\n */\nfunction toStream(expression, fireImmediately) {\n var _a;\n if (fireImmediately === void 0) { fireImmediately = false; }\n var computedValue = computed(expression);\n return _a = {\n subscribe: function (observer) {\n if (\"function\" === typeof observer) {\n return {\n unsubscribe: observe(computedValue, function (_a) {\n var newValue = _a.newValue;\n return observer(newValue);\n }, fireImmediately),\n };\n }\n if (observer && \"object\" === typeof observer && observer.next) {\n return {\n unsubscribe: observe(computedValue, function (_a) {\n var newValue = _a.newValue;\n return observer.next(newValue);\n }, fireImmediately),\n };\n }\n return {\n unsubscribe: function () { },\n };\n }\n },\n _a[observableSymbol()] = function () {\n return this;\n },\n _a;\n}\nvar StreamListener = /** @class */ (function () {\n function StreamListener(observable, initialValue) {\n var _this = this;\n Object.defineProperty(this, \"current\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"subscription\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n makeObservable(this);\n runInAction(function () {\n _this.current = initialValue;\n _this.subscription = observable.subscribe(_this);\n });\n }\n Object.defineProperty(StreamListener.prototype, \"dispose\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n });\n Object.defineProperty(StreamListener.prototype, \"next\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (value) {\n this.current = value;\n }\n });\n Object.defineProperty(StreamListener.prototype, \"complete\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.dispose();\n }\n });\n Object.defineProperty(StreamListener.prototype, \"error\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (value) {\n this.current = value;\n this.dispose();\n }\n });\n __decorate([\n observable.ref\n ], StreamListener.prototype, \"current\", void 0);\n __decorate([\n action.bound\n ], StreamListener.prototype, \"next\", null);\n __decorate([\n action.bound\n ], StreamListener.prototype, \"complete\", null);\n __decorate([\n action.bound\n ], StreamListener.prototype, \"error\", null);\n return StreamListener;\n}());\nfunction fromStream(observable, initialValue) {\n if (initialValue === void 0) { initialValue = undefined; }\n return new StreamListener(observable, initialValue);\n}\n\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RESERVED_NAMES = [\"model\", \"reset\", \"submit\", \"isDirty\", \"isPropertyDirty\", \"resetProperty\"];\nvar ViewModel = /** @class */ (function () {\n function ViewModel(model) {\n var _this = this;\n Object.defineProperty(this, \"model\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: model\n });\n Object.defineProperty(this, \"localValues\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: observable.map({})\n });\n Object.defineProperty(this, \"localComputedValues\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: observable.map({})\n });\n Object.defineProperty(this, \"isPropertyDirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function (key) {\n return _this.localValues.has(key);\n }\n });\n makeObservable(this);\n invariant(isObservableObject(model), \"createViewModel expects an observable object\");\n var ownMethodsAndProperties = getAllMethodsAndProperties(this);\n // use this helper as Object.getOwnPropertyNames doesn't return getters\n getAllMethodsAndProperties(model).forEach(function (key) {\n var _a;\n if (ownMethodsAndProperties.includes(key)) {\n return;\n }\n if (key === $mobx || key === \"__mobxDidRunLazyInitializers\") {\n return;\n }\n invariant(RESERVED_NAMES.indexOf(key) === -1, \"The propertyname \" + key + \" is reserved and cannot be used with viewModels\");\n if (isComputedProp(model, key)) {\n var computedBox = _getAdministration(model, key); // Fixme: there is no clear api to get the derivation\n var get = computedBox.derivation.bind(_this);\n var set = (_a = computedBox.setter_) === null || _a === void 0 ? void 0 : _a.bind(_this);\n _this.localComputedValues.set(key, computed(get, { set: set }));\n }\n var descriptor = Object.getOwnPropertyDescriptor(model, key);\n var additionalDescriptor = descriptor ? { enumerable: descriptor.enumerable } : {};\n Object.defineProperty(_this, key, __assign(__assign({}, additionalDescriptor), { configurable: true, get: function () {\n if (isComputedProp(model, key))\n return _this.localComputedValues.get(key).get();\n if (_this.isPropertyDirty(key))\n return _this.localValues.get(key);\n else\n return _this.model[key];\n }, set: action(function (value) {\n if (isComputedProp(model, key)) {\n _this.localComputedValues.get(key).set(value);\n }\n else if (value !== _this.model[key]) {\n _this.localValues.set(key, value);\n }\n else {\n _this.localValues.delete(key);\n }\n }) }));\n });\n }\n Object.defineProperty(ViewModel.prototype, \"isDirty\", {\n get: function () {\n return this.localValues.size > 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewModel.prototype, \"changedValues\", {\n get: function () {\n return new Map(this.localValues);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewModel.prototype, \"submit\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n var _this = this;\n keys(this.localValues).forEach(function (key) {\n var source = _this.localValues.get(key);\n var destination = _this.model[key];\n if (isObservableArray(destination)) {\n destination.replace(source);\n }\n else if (isObservableMap(destination)) {\n destination.clear();\n destination.merge(source);\n }\n else if (!isComputed(source)) {\n _this.model[key] = source;\n }\n });\n this.localValues.clear();\n }\n });\n Object.defineProperty(ViewModel.prototype, \"reset\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.localValues.clear();\n }\n });\n Object.defineProperty(ViewModel.prototype, \"resetProperty\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (key) {\n this.localValues.delete(key);\n }\n });\n __decorate$1([\n computed\n ], ViewModel.prototype, \"isDirty\", null);\n __decorate$1([\n computed\n ], ViewModel.prototype, \"changedValues\", null);\n __decorate$1([\n action.bound\n ], ViewModel.prototype, \"submit\", null);\n __decorate$1([\n action.bound\n ], ViewModel.prototype, \"reset\", null);\n __decorate$1([\n action.bound\n ], ViewModel.prototype, \"resetProperty\", null);\n return ViewModel;\n}());\n/**\n * `createViewModel` takes an object with observable properties (model)\n * and wraps a viewmodel around it. The viewmodel proxies all enumerable properties of the original model with the following behavior:\n * - as long as no new value has been assigned to the viewmodel property, the original property will be returned.\n * - any future change in the model will be visible in the viewmodel as well unless the viewmodel property was dirty at the time of the attempted change.\n * - once a new value has been assigned to a property of the viewmodel, that value will be returned during a read of that property in the future. However, the original model remain untouched until `submit()` is called.\n *\n * The viewmodel exposes the following additional methods, besides all the enumerable properties of the model:\n * - `model`: The original model object for which this viewModel was created\n * - `submit()`: Copies all the values of the viewmodel to the model and resets the state\n * - `reset()`: Resets the state of the viewmodel, abandoning all local modifications\n * - `resetProperty(propName)`: Resets the specified property of the viewmodel, abandoning local modifications of this property\n * - `isDirty`: Observable property indicating if the viewModel contains any modifications\n * - `isPropertyDirty(propName)`: Returns true if the specified property is dirty\n * - `changedValues`: Returns a key / value map with the properties that have been changed in the model so far\n *\n * You may use observable arrays, maps and objects with `createViewModel` but keep in mind to assign fresh instances of those to the viewmodel's properties, otherwise you would end up modifying the properties of the original model.\n * Note that if you read a non-dirty property, viewmodel only proxies the read to the model. You therefore need to assign a fresh instance not only the first time you make the assignment but also after calling `reset()` or `submit()`.\n *\n * @example\n * class Todo {\n * \\@observable title = \"Test\"\n * }\n *\n * const model = new Todo()\n * const viewModel = createViewModel(model);\n *\n * autorun(() => console.log(viewModel.model.title, \",\", viewModel.title))\n * // prints \"Test, Test\"\n * model.title = \"Get coffee\"\n * // prints \"Get coffee, Get coffee\", viewModel just proxies to model\n * viewModel.title = \"Get tea\"\n * // prints \"Get coffee, Get tea\", viewModel's title is now dirty, and the local value will be printed\n * viewModel.submit()\n * // prints \"Get tea, Get tea\", changes submitted from the viewModel to the model, viewModel is proxying again\n * viewModel.title = \"Get cookie\"\n * // prints \"Get tea, Get cookie\" // viewModel has diverged again\n * viewModel.reset()\n * // prints \"Get tea, Get tea\", changes of the viewModel have been abandoned\n *\n * @param {T} model\n * @returns {(T & IViewModel<T>)}\n * ```\n */\nfunction createViewModel(model) {\n return new ViewModel(model);\n}\n\n/**\n * MobX normally suspends any computed value that is not in use by any reaction,\n * and lazily re-evaluates the expression if needed outside a reaction while not in use.\n * `keepAlive` marks a computed value as always in use, meaning that it will always fresh, but never disposed automatically.\n *\n * @example\n * const obj = observable({\n * number: 3,\n * doubler: function() { return this.number * 2 }\n * })\n * const stop = keepAlive(obj, \"doubler\")\n *\n * @param {Object} target an object that has a computed property, created by `@computed` or `extendObservable`\n * @param {string} property the name of the property to keep alive\n * @returns {IDisposer} stops this keep alive so that the computed value goes back to normal behavior\n */\n/**\n * @example\n * const number = observable(3)\n * const doubler = computed(() => number.get() * 2)\n * const stop = keepAlive(doubler)\n * // doubler will now stay in sync reactively even when there are no further observers\n * stop()\n * // normal behavior, doubler results will be recomputed if not observed but needed, but lazily\n *\n * @param {IComputedValue<any>} computedValue created using the `computed` function\n * @returns {IDisposer} stops this keep alive so that the computed value goes back to normal behavior\n */\nfunction keepAlive(_1, _2) {\n var computed = getAtom(_1, _2);\n if (!computed)\n throw new Error(\"No computed provided, please provide an object created with `computed(() => expr)` or an object + property name\");\n return observe(computed, function () { });\n}\n\n/**\n * `queueProcessor` takes an observable array, observes it and calls `processor`\n * once for each item added to the observable array, optionally debouncing the action\n *\n * @example\n * const pendingNotifications = observable([])\n * const stop = queueProcessor(pendingNotifications, msg => {\n * // show Desktop notification\n * new Notification(msg);\n * })\n *\n * // usage:\n * pendingNotifications.push(\"test!\")\n *\n * @param {T[]} observableArray observable array instance to track\n * @param {(item: T) => void} processor action to call per item\n * @param {number} [debounce=0] optional debounce time in ms. With debounce 0 the processor will run synchronously\n * @returns {IDisposer} stops the processor\n */\nfunction queueProcessor(observableArray, processor, debounce) {\n if (debounce === void 0) { debounce = 0; }\n if (!isObservableArray(observableArray))\n throw new Error(\"Expected observable array as first argument\");\n if (!isAction(processor))\n processor = action(\"queueProcessor\", processor);\n var runner = function () {\n // construct a final set\n var items = observableArray.slice(0);\n // clear the queue for next iteration\n runInAction(function () { return observableArray.splice(0); });\n // fire processor\n items.forEach(processor);\n };\n if (debounce > 0)\n return autorun(runner, { delay: debounce });\n else\n return autorun(runner);\n}\n\n/**\n * `chunkProcessor` takes an observable array, observes it and calls `processor`\n * once for a chunk of items added to the observable array, optionally deboucing the action.\n * The maximum chunk size can be limited by number.\n * This allows both, splitting larger into smaller chunks or (when debounced) combining smaller\n * chunks and/or single items into reasonable chunks of work.\n *\n * @example\n * const trackedActions = observable([])\n * const stop = chunkProcessor(trackedActions, chunkOfMax10Items => {\n * sendTrackedActionsToServer(chunkOfMax10Items);\n * }, 100, 10)\n *\n * // usage:\n * trackedActions.push(\"scrolled\")\n * trackedActions.push(\"hoveredButton\")\n * // when both pushes happen within 100ms, there will be only one call to server\n *\n * @param {T[]} observableArray observable array instance to track\n * @param {(item: T[]) => void} processor action to call per item\n * @param {number} [debounce=0] optional debounce time in ms. With debounce 0 the processor will run synchronously\n * @param {number} [maxChunkSize=0] optionally do not call on full array but smaller chunks. With 0 it will process the full array.\n * @returns {IDisposer} stops the processor\n */\nfunction chunkProcessor(observableArray, processor, debounce, maxChunkSize) {\n if (debounce === void 0) { debounce = 0; }\n if (maxChunkSize === void 0) { maxChunkSize = 0; }\n if (!isObservableArray(observableArray))\n throw new Error(\"Expected observable array as first argument\");\n if (!isAction(processor))\n processor = action(\"chunkProcessor\", processor);\n var runner = function () {\n var _loop_1 = function () {\n var chunkSize = maxChunkSize === 0\n ? observableArray.length\n : Math.min(observableArray.length, maxChunkSize);\n // construct a final set\n var items = observableArray.slice(0, chunkSize);\n // clear the slice for next iteration\n runInAction(function () { return observableArray.splice(0, chunkSize); });\n // fire processor\n processor(items);\n };\n while (observableArray.length > 0) {\n _loop_1();\n }\n };\n if (debounce > 0)\n return autorun(runner, { delay: debounce });\n else\n return autorun(runner);\n}\n\nvar tickers = {};\n/**\n * Disposes of all the internal Observables created by invocations of `now()`.\n *\n * The use case for this is to ensure that unit tests can run independent of each other.\n * You should not call this in regular application code.\n *\n * @example\n * afterEach(() => {\n * utils.resetNowInternalState()\n * })\n */\nfunction resetNowInternalState() {\n for (var _i = 0, _a = Object.getOwnPropertyNames(tickers); _i < _a.length; _i++) {\n var key = _a[_i];\n tickers[key].dispose();\n delete tickers[key];\n }\n}\n/**\n * Returns the current date time as epoch number.\n * The date time is read from an observable which is updated automatically after the given interval.\n * So basically it treats time as an observable.\n *\n * The function takes an interval as parameter, which indicates how often `now()` will return a new value.\n * If no interval is given, it will update each second. If \"frame\" is specified, it will update each time a\n * `requestAnimationFrame` is available.\n *\n * Multiple clocks with the same interval will automatically be synchronized.\n *\n * Countdown example: https://jsfiddle.net/mweststrate/na0qdmkw/\n *\n * @example\n *\n * const start = Date.now()\n *\n * autorun(() => {\n * console.log(\"Seconds elapsed: \", (mobxUtils.now() - start) / 1000)\n * })\n *\n *\n * @export\n * @param {(number | \"frame\")} [interval=1000] interval in milliseconds about how often the interval should update\n * @returns\n */\nfunction now(interval) {\n if (interval === void 0) { interval = 1000; }\n if (!_isComputingDerivation()) {\n // See #40\n return Date.now();\n }\n if (!tickers[interval]) {\n if (typeof interval === \"number\")\n tickers[interval] = createIntervalTicker(interval);\n else\n tickers[interval] = createAnimationFrameTicker();\n }\n return tickers[interval].current();\n}\nfunction createIntervalTicker(interval) {\n var subscriptionHandle;\n return fromResource(function (sink) {\n sink(Date.now());\n subscriptionHandle = setInterval(function () { return sink(Date.now()); }, interval);\n }, function () {\n clearInterval(subscriptionHandle);\n }, Date.now());\n}\nfunction createAnimationFrameTicker() {\n var frameBasedTicker = fromResource(function (sink) {\n sink(Date.now());\n function scheduleTick() {\n window.requestAnimationFrame(function () {\n sink(Date.now());\n if (frameBasedTicker.isAlive())\n scheduleTick();\n });\n }\n scheduleTick();\n }, function () { }, Date.now());\n return frameBasedTicker;\n}\n\n/**\n *`expr` can be used to create temporary computed values inside computed values.\n * Nesting computed values is useful to create cheap computations in order to prevent expensive computations from needing to run.\n * In the following example the expression prevents that a component is rerender _each time_ the selection changes;\n * instead it will only rerenders when the current todo is (de)selected.\n *\n * `expr(func)` is an alias for `computed(func).get()`.\n * Please note that the function given to `expr` is evaluated _twice_ in the scenario that the overall expression value changes.\n * It is evaluated the first time when any observables it depends on change.\n * It is evaluated a second time when a change in its value triggers the outer computed or reaction to evaluate, which recreates and reevaluates the expression.\n *\n * In the following example, the expression prevents the `TodoView` component from being re-rendered if the selection changes elsewhere.\n * Instead, the component will only re-render when the relevant todo is (de)selected, which happens much less frequently.\n *\n * @example\n * const TodoView = observer(({ todo, editorState }) => {\n * const isSelected = mobxUtils.expr(() => editorState.selection === todo)\n * return <div className={isSelected ? \"todo todo-selected\" : \"todo\"}>{todo.title}</div>\n * })\n */\nfunction expr(expr) {\n if (!_isComputingDerivation())\n console.warn(\"'expr' should only be used inside other reactive functions.\");\n // optimization: would be more efficient if the expr itself wouldn't be evaluated first on the next change, but just a 'changed' signal would be fired\n return computed(expr).get();\n}\n\nvar __assign$1 = (undefined && undefined.__assign) || function () {\n __assign$1 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$1.apply(this, arguments);\n};\n/**\n * Creates a function that maps an object to a view.\n * The mapping is memoized.\n *\n * See the [transformer](#createtransformer-in-detail) section for more details.\n *\n * @param transformer A function which transforms instances of A into instances of B\n * @param arg2 An optional cleanup function which is called when the transformation is no longer\n * observed from a reactive context, or config options\n * @returns The memoized transformer function\n */\nfunction createTransformer(transformer, arg2) {\n invariant(typeof transformer === \"function\" && transformer.length < 2, \"createTransformer expects a function that accepts one argument\");\n // Memoizes: object -> reactive view that applies transformer to the object\n var views = new Map();\n var opts = getOpts(arg2);\n var debugNameGenerator = opts.debugNameGenerator, keepAlive = opts.keepAlive, onCleanup = opts.onCleanup;\n function createView(sourceObject) {\n var latestValue;\n var sourceType = typeof sourceObject;\n var prettifiedName = debugNameGenerator\n ? debugNameGenerator(sourceObject)\n : \"Transformer-\" + transformer.name + \"-\" + (sourceType === \"string\" || sourceType === \"number\" ? sourceObject : \"object\");\n var expr = computed(function () {\n return (latestValue = transformer(sourceObject));\n }, __assign$1(__assign$1({}, opts), { name: prettifiedName }));\n if (!keepAlive) {\n var disposer_1 = onBecomeUnobserved(expr, function () {\n views.delete(sourceObject);\n disposer_1();\n if (onCleanup)\n onCleanup(latestValue, sourceObject);\n });\n }\n return expr;\n }\n var memoWarned = false;\n return function (object) {\n var _a;\n checkTransformableObject(object);\n var reactiveView = views.get(object);\n if (reactiveView)\n return reactiveView.get();\n if (!keepAlive && !_isComputingDerivation()) {\n if (!memoWarned &&\n ((_a = opts.requiresReaction) !== null && _a !== void 0 ? _a : _getGlobalState().computedRequiresReaction)) {\n console.warn(\"Invoking a transformer from outside a reactive context won't be memoized \" +\n \"and is cleaned up immediately, unless keepAlive is set.\");\n memoWarned = true;\n }\n var value = transformer(object);\n if (onCleanup)\n onCleanup(value, object);\n return value;\n }\n // Not in cache; create a reactive view\n reactiveView = createView(object);\n views.set(object, reactiveView);\n return reactiveView.get();\n };\n}\nfunction getOpts(opts) {\n if (typeof opts === \"object\") {\n return opts;\n }\n else if (typeof opts === \"function\") {\n return { onCleanup: opts };\n }\n else {\n return {};\n }\n}\nfunction checkTransformableObject(object) {\n var objectType = typeof object;\n if (object === null ||\n (objectType !== \"object\" &&\n objectType !== \"function\" &&\n objectType !== \"string\" &&\n objectType !== \"number\"))\n throw new Error(\"[mobx-utils] transform expected an object, function, string or number, got: \" + String(object));\n}\n\nfunction buildPath(entry) {\n if (!entry)\n return \"ROOT\";\n var res = [];\n while (entry.parent) {\n res.push(entry.path);\n entry = entry.parent;\n }\n return res.reverse().join(\"/\");\n}\nfunction isRecursivelyObservable(thing) {\n return isObservableObject(thing) || isObservableArray(thing) || isObservableMap(thing);\n}\n/**\n * Given an object, deeply observes the given object.\n * It is like `observe` from mobx, but applied recursively, including all future children.\n *\n * Note that the given object cannot ever contain cycles and should be a tree.\n *\n * As benefit: path and root will be provided in the callback, so the signature of the listener is\n * (change, path, root) => void\n *\n * The returned disposer can be invoked to clean up the listener\n *\n * deepObserve cannot be used on computed values.\n *\n * @example\n * const disposer = deepObserve(target, (change, path) => {\n * console.dir(change)\n * })\n */\nfunction deepObserve(target, listener) {\n var entrySet = new WeakMap();\n function genericListener(change) {\n var entry = entrySet.get(change.object);\n processChange(change, entry);\n listener(change, buildPath(entry), target);\n }\n function processChange(change, parent) {\n switch (change.type) {\n // Object changes\n case \"add\": // also for map\n observeRecursively(change.newValue, parent, change.name);\n break;\n case \"update\": // also for array and map\n unobserveRecursively(change.oldValue);\n observeRecursively(change.newValue, parent, change.name || \"\" + change.index);\n break;\n case \"remove\": // object\n case \"delete\": // map\n unobserveRecursively(change.oldValue);\n break;\n // Array changes\n case \"splice\":\n change.removed.map(unobserveRecursively);\n change.added.forEach(function (value, idx) {\n return observeRecursively(value, parent, \"\" + (change.index + idx));\n });\n // update paths\n for (var i = change.index + change.addedCount; i < change.object.length; i++) {\n if (isRecursivelyObservable(change.object[i])) {\n var entry = entrySet.get(change.object[i]);\n if (entry)\n entry.path = \"\" + i;\n }\n }\n break;\n }\n }\n function observeRecursively(thing, parent, path) {\n if (isRecursivelyObservable(thing)) {\n var entry = entrySet.get(thing);\n if (entry) {\n if (entry.parent !== parent || entry.path !== path)\n // MWE: this constraint is artificial, and this tool could be made to work with cycles,\n // but it increases administration complexity, has tricky edge cases and the meaning of 'path'\n // would become less clear. So doesn't seem to be needed for now\n throw new Error(\"The same observable object cannot appear twice in the same tree,\" +\n (\" trying to assign it to '\" + buildPath(parent) + \"/\" + path + \"',\") +\n (\" but it already exists at '\" + buildPath(entry.parent) + \"/\" + entry.path + \"'\"));\n }\n else {\n var entry_1 = {\n parent: parent,\n path: path,\n dispose: observe(thing, genericListener),\n };\n entrySet.set(thing, entry_1);\n entries(thing).forEach(function (_a) {\n var key = _a[0], value = _a[1];\n return observeRecursively(value, entry_1, \"\" + key);\n });\n }\n }\n }\n function unobserveRecursively(thing) {\n if (isRecursivelyObservable(thing)) {\n var entry = entrySet.get(thing);\n if (!entry)\n return;\n entrySet.delete(thing);\n entry.dispose();\n values(thing).forEach(unobserveRecursively);\n }\n }\n observeRecursively(target, undefined, \"\");\n return function () {\n unobserveRecursively(target);\n };\n}\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Reactively sorts a base observable array into multiple observable arrays based on the value of a\n * `groupBy: (item: T) => G` function.\n *\n * This observes the individual computed groupBy values and only updates the source and dest arrays\n * when there is an actual change, so this is far more efficient than, for example\n * `base.filter(i => groupBy(i) === 'we')`. Call #dispose() to stop tracking.\n *\n * No guarantees are made about the order of items in the grouped arrays.\n *\n * The resulting map of arrays is read-only. clear(), set(), delete() are not supported and\n * modifying the group arrays will lead to undefined behavior.\n *\n * NB: ObservableGroupMap relies on `Symbol`s. If you are targeting a platform which doesn't\n * support these natively, you will need to provide a polyfill.\n *\n * @param {array} base The array to sort into groups.\n * @param {function} groupBy The function used for grouping.\n * @param options Object with properties:\n * `name`: Debug name of this ObservableGroupMap.\n * `keyToName`: Function to create the debug names of the observable group arrays.\n *\n * @example\n * const slices = observable([\n * { day: \"mo\", hours: 12 },\n * { day: \"tu\", hours: 2 },\n * ])\n * const slicesByDay = new ObservableGroupMap(slices, (slice) => slice.day)\n * autorun(() => console.log(\n * slicesByDay.get(\"mo\")?.length ?? 0,\n * slicesByDay.get(\"we\"))) // outputs 1, undefined\n * slices[0].day = \"we\" // outputs 0, [{ day: \"we\", hours: 12 }]\n */\nvar ObservableGroupMap = /** @class */ (function (_super) {\n __extends(ObservableGroupMap, _super);\n function ObservableGroupMap(base, groupBy, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.name, name = _c === void 0 ? \"ogm\" + ((Math.random() * 1000) | 0) : _c, _d = _b.keyToName, keyToName = _d === void 0 ? function (x) { return \"\" + x; } : _d;\n var _this = _super.call(this) || this;\n /**\n * Base observable array which is being sorted into groups.\n */\n Object.defineProperty(_this, \"_base\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * The ObservableGroupMap needs to track some state per-item. This is the name/symbol of the\n * property used to attach the state.\n */\n Object.defineProperty(_this, \"_ogmInfoKey\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * The function used to group the items.\n */\n Object.defineProperty(_this, \"_groupBy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * This function is used to generate the mobx debug names of the observable group arrays.\n */\n Object.defineProperty(_this, \"_keyToName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(_this, \"_disposeBaseObserver\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n _this._keyToName = keyToName;\n _this._groupBy = groupBy;\n _this._ogmInfoKey = Symbol(\"ogmInfo\" + name);\n _this._base = base;\n for (var i = 0; i < base.length; i++) {\n _this._addItem(base[i]);\n }\n _this._disposeBaseObserver = observe(_this._base, function (change) {\n if (\"splice\" === change.type) {\n transaction(function () {\n for (var _i = 0, _a = change.removed; _i < _a.length; _i++) {\n var removed = _a[_i];\n _this._removeItem(removed);\n }\n for (var _b = 0, _c = change.added; _b < _c.length; _b++) {\n var added = _c[_b];\n _this._addItem(added);\n }\n });\n }\n else if (\"update\" === change.type) {\n transaction(function () {\n _this._removeItem(change.oldValue);\n _this._addItem(change.newValue);\n });\n }\n else {\n throw new Error(\"illegal state\");\n }\n });\n return _this;\n }\n Object.defineProperty(ObservableGroupMap.prototype, \"clear\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n throw new Error(\"not supported\");\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"delete\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (_key) {\n throw new Error(\"not supported\");\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"set\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (_key, _value) {\n throw new Error(\"not supported\");\n }\n });\n /**\n * Disposes all observers created during construction and removes state added to base array\n * items.\n */\n Object.defineProperty(ObservableGroupMap.prototype, \"dispose\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this._disposeBaseObserver();\n for (var i = 0; i < this._base.length; i++) {\n var item = this._base[i];\n var grouperItemInfo = item[this._ogmInfoKey];\n grouperItemInfo.reaction();\n delete item[this._ogmInfoKey];\n }\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"_getGroupArr\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (key) {\n var result = _super.prototype.get.call(this, key);\n if (undefined === result) {\n result = observable([], { name: \"GroupArray[\" + this._keyToName(key) + \"]\", deep: false });\n _super.prototype.set.call(this, key, result);\n }\n return result;\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"_removeFromGroupArr\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (key, itemIndex) {\n var arr = _super.prototype.get.call(this, key);\n if (1 === arr.length) {\n _super.prototype.delete.call(this, key);\n }\n else if (itemIndex === arr.length - 1) {\n // last position in array\n arr.length--;\n }\n else {\n arr[itemIndex] = arr[arr.length - 1];\n arr[itemIndex][this._ogmInfoKey].groupArrIndex = itemIndex;\n arr.length--;\n }\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"_addItem\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (item) {\n var _this = this;\n var groupByValue = this._groupBy(item);\n var groupArr = this._getGroupArr(groupByValue);\n var value = {\n groupByValue: groupByValue,\n groupArrIndex: groupArr.length,\n reaction: reaction(function () { return _this._groupBy(item); }, function (newGroupByValue, _r) {\n var grouperItemInfo = item[_this._ogmInfoKey];\n _this._removeFromGroupArr(grouperItemInfo.groupByValue, grouperItemInfo.groupArrIndex);\n var newGroupArr = _this._getGroupArr(newGroupByValue);\n var newGroupArrIndex = newGroupArr.length;\n newGroupArr.push(item);\n grouperItemInfo.groupByValue = newGroupByValue;\n grouperItemInfo.groupArrIndex = newGroupArrIndex;\n }),\n };\n Object.defineProperty(item, this._ogmInfoKey, {\n configurable: true,\n enumerable: false,\n value: value,\n });\n groupArr.push(item);\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"_removeItem\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (item) {\n var grouperItemInfo = item[this._ogmInfoKey];\n this._removeFromGroupArr(grouperItemInfo.groupByValue, grouperItemInfo.groupArrIndex);\n grouperItemInfo.reaction();\n delete item[this._ogmInfoKey];\n }\n });\n return ObservableGroupMap;\n}(ObservableMap));\n\n/**\n * @private\n */\nvar DeepMapEntry = /** @class */ (function () {\n function DeepMapEntry(base, args, version, versionChecker) {\n Object.defineProperty(this, \"base\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: base\n });\n Object.defineProperty(this, \"args\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: args\n });\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: version\n });\n Object.defineProperty(this, \"versionChecker\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: versionChecker\n });\n Object.defineProperty(this, \"root\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"closest\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"closestIdx\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n var current = (this.closest = this.root = base);\n var i = 0;\n for (; i < this.args.length - 1; i++) {\n current = current.get(args[i]);\n if (current)\n this.closest = current;\n else\n break;\n }\n this.closestIdx = i;\n }\n Object.defineProperty(DeepMapEntry.prototype, \"exists\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.assertCurrentVersion();\n var l = this.args.length;\n return this.closestIdx >= l - 1 && this.closest.has(this.args[l - 1]);\n }\n });\n Object.defineProperty(DeepMapEntry.prototype, \"get\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.assertCurrentVersion();\n if (!this.exists())\n throw new Error(\"Entry doesn't exist\");\n return this.closest.get(this.args[this.args.length - 1]);\n }\n });\n Object.defineProperty(DeepMapEntry.prototype, \"set\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (value) {\n this.assertCurrentVersion();\n var l = this.args.length;\n var current = this.closest;\n // create remaining maps\n for (var i = this.closestIdx; i < l - 1; i++) {\n var m = new Map();\n current.set(this.args[i], m);\n current = m;\n }\n this.closestIdx = l - 1;\n this.closest = current;\n current.set(this.args[l - 1], value);\n }\n });\n Object.defineProperty(DeepMapEntry.prototype, \"delete\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.assertCurrentVersion();\n if (!this.exists())\n throw new Error(\"Entry doesn't exist\");\n var l = this.args.length;\n this.closest.delete(this.args[l - 1]);\n // clean up remaining maps if needed (reconstruct stack first)\n var c = this.root;\n var maps = [c];\n for (var i = 0; i < l - 1; i++) {\n c = c.get(this.args[i]);\n maps.push(c);\n }\n for (var i = maps.length - 1; i > 0; i--) {\n if (maps[i].size === 0)\n maps[i - 1].delete(this.args[i - 1]);\n }\n }\n });\n Object.defineProperty(DeepMapEntry.prototype, \"assertCurrentVersion\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n if (!this.versionChecker(this.version)) {\n throw new Error(\"Concurrent modification exception\");\n }\n }\n });\n return DeepMapEntry;\n}());\n/**\n * @private\n */\nvar DeepMap = /** @class */ (function () {\n function DeepMap() {\n var _this = this;\n Object.defineProperty(this, \"store\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"argsLength\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -1\n });\n Object.defineProperty(this, \"currentVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"checkVersion\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function (version) {\n return _this.currentVersion === version;\n }\n });\n }\n Object.defineProperty(DeepMap.prototype, \"entry\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (args) {\n if (this.argsLength === -1)\n this.argsLength = args.length;\n else if (this.argsLength !== args.length)\n throw new Error(\"DeepMap should be used with functions with a consistent length, expected: \" + this.argsLength + \", got: \" + args.length);\n if (this.currentVersion >= Number.MAX_SAFE_INTEGER) {\n // Reset version counter when it reaches max safe integer\n this.currentVersion = 0;\n }\n this.currentVersion++;\n return new DeepMapEntry(this.store, args, this.currentVersion, this.checkVersion);\n }\n });\n return DeepMap;\n}());\n\nvar __assign$2 = (undefined && undefined.__assign) || function () {\n __assign$2 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$2.apply(this, arguments);\n};\nvar __spreadArrays$1 = (undefined && undefined.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n/**\n * computedFn takes a function with an arbitrary amount of arguments,\n * and memoizes the output of the function based on the arguments passed in.\n *\n * computedFn(fn) returns a function with the very same signature. There is no limit on the amount of arguments\n * that is accepted. However, the amount of arguments must be constant and default arguments are not supported.\n *\n * By default the output of a function call will only be memoized as long as the\n * output is being observed.\n *\n * The function passes into `computedFn` should be pure, not be an action and only be relying on\n * observables.\n *\n * Setting `keepAlive` to `true` will cause the output to be forcefully cached forever.\n * Note that this might introduce memory leaks!\n *\n * @example\n * const store = observable({\n a: 1,\n b: 2,\n c: 3,\n m: computedFn(function(x) {\n return this.a * this.b * x\n })\n })\n\n const d = autorun(() => {\n // store.m(3) will be cached as long as this autorun is running\n console.log(store.m(3) * store.c)\n })\n *\n * @param fn\n * @param keepAliveOrOptions\n */\nfunction computedFn(fn, keepAliveOrOptions) {\n if (keepAliveOrOptions === void 0) { keepAliveOrOptions = false; }\n if (isAction(fn))\n throw new Error(\"computedFn shouldn't be used on actions\");\n var memoWarned = false;\n var i = 0;\n var opts = typeof keepAliveOrOptions === \"boolean\"\n ? { keepAlive: keepAliveOrOptions }\n : keepAliveOrOptions;\n var d = new DeepMap();\n return function () {\n var _this = this;\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var entry = d.entry(args);\n // cache hit, return\n if (entry.exists())\n return entry.get().get();\n // if function is invoked, and its a cache miss without reactive, there is no point in caching...\n if (!opts.keepAlive && !_isComputingDerivation()) {\n if (!memoWarned &&\n ((_a = opts.requiresReaction) !== null && _a !== void 0 ? _a : _getGlobalState().computedRequiresReaction)) {\n console.warn(\"Invoking a computedFn from outside a reactive context won't be memoized \" +\n \"and is cleaned up immediately, unless keepAlive is set.\");\n memoWarned = true;\n }\n var value = fn.apply(this, args);\n if (opts.onCleanup)\n opts.onCleanup.apply(opts, __spreadArrays$1([value], args));\n return value;\n }\n // create new entry\n var latestValue;\n var c = computed(function () {\n return (latestValue = fn.apply(_this, args));\n }, __assign$2(__assign$2({}, opts), { name: \"computedFn(\" + (opts.name || fn.name) + \"#\" + ++i + \")\" }));\n entry.set(c);\n // clean up if no longer observed\n if (!opts.keepAlive)\n onBecomeUnobserved(c, function () {\n d.entry(args).delete();\n if (opts.onCleanup)\n opts.onCleanup.apply(opts, __spreadArrays$1([latestValue], args));\n latestValue = undefined;\n });\n // return current val\n return c.get();\n };\n}\n\nexport { FULFILLED, IDENTITY, NOOP, ObservableGroupMap, PENDING, REJECTED, ViewModel, addHiddenProp, chunkProcessor, computedFn, createTransformer, createViewModel, deepObserve, expr, fail, fromPromise, fromResource, fromStream, getAllMethodsAndProperties, invariant, isPromiseBasedObservable, keepAlive, lazyObservable, moveItem, now, queueProcessor, resetNowInternalState, toStream };\n","import { EventEmitter } from 'events';\nimport { observable, type IObjectDidChange, type IArrayDidChange, type IMapDidChange } from 'mobx';\nimport { deepObserve } from 'mobx-utils';\nimport { LYObject, type LYEventsWithoutAny } from '../object';\n\n/**\n * 序列化管理基类\n * 已实现按所有key进行遍历进行序列化操作,不包含原型上的属性\n * 不支持function、symbol的序列化\n * 支持递归序列化,支持循环引用对象的序列化\n * 考虑到构造函数的特异性,支持自定义构造方式\n * 自定义构造:\n * 1、重写getConstructorArguments实例方法,返回需要的构造函数参数数组\n * 2、重写create静态方法,可获取构造函数、构造对象的所有者(数组对象的所有者不是数组本身,而是上层对象)、对应的所有者的属性名、构造函数的参数(由getConstructorArguments提供)\n * 循环引用处理:\n * 1、deserializeObjects用于存储此次已序列化的对象,当出现循环引用时,直接从中获取已反序列化的对象\n * 2、addReentry、releaseReentry用于确定反序列化入口,releaseReentry过程中reentryCount为0时表示反序列化完成,此时清除deserializeObjects\n * 自定义序列化:\n * 1、可遵从规范重写doSerialize、doDeserialize方法\n * 2、使用@serialize.include定义需序列化的属性\n */\nexport const UNIQUE_ID = Symbol('id');\nconst CONSTRUCT_KEY = '__ctor';\nconst SERIALIZE_CACHE = Symbol('serializeCache');\nconst FREEZED_DATA = Symbol('freezedData');\nconst BACKUP_DATA = Symbol('backupData');\nconst OBSERVABLE_DISPOSER = Symbol('observableDisposer');\nexport const SERIALIZING = Symbol('serializing');\nexport const DESERIALIZING = Symbol('deserializing');\nexport const SERIALIZE_DATA = Symbol('serializeData');\nexport const SERIALIZE_CREATE = Symbol('serializeCreate');\nexport const SERIALIZE_GET_CONSTRUCT_ARGS = Symbol('serializeGetConstructArgs');\n\nlet uniqueId = 0;\nlet reentryCount = 0;\nlet deserializeObjects: { [key: string]: LYSerializeable } = {};\n\nfunction addReentry(obj: LYSerializeable) {\n\tdeserializeObjects[obj[UNIQUE_ID]] = obj;\n\treentryCount++;\n}\n\nfunction releaseReentry() {\n\tif (--reentryCount === 0) {\n\t\tdeserializeObjects = {};\n\t}\n}\n\nexport type LYCtorInfo = {\n\tConstruct: new (...args: any) => LYSerializeable;\n\towner: any;\n\tproperty: string;\n};\n\nexport type IChange = IObjectDidChange | IArrayDidChange | IMapDidChange;\n\ntype LYSerializeableObserveEvents = {\n\t['before-serialize'](target: LYSerializeable): void;\n\t['before-deserialize'](target: LYSerializeable): void;\n\t['after-serialize'](target: LYSerializeable): void;\n\t['after-deserialize'](target: LYSerializeable): void;\n\t['property-change'](target: LYSerializeable, property?: string): void;\n};\n\nexport class LYSerializeableObserve extends EventEmitter {\n\ton: LYEventsWithoutAny<LYSerializeableObserveEvents>['on'];\n\toff: LYEventsWithoutAny<LYSerializeableObserveEvents>['on'];\n\tonce: LYEventsWithoutAny<LYSerializeableObserveEvents>['on'];\n\taddListener: LYEventsWithoutAny<LYSerializeableObserveEvents>['on'];\n\tremoveListener: LYEventsWithoutAny<LYSerializeableObserveEvents>['on'];\n\temit: LYEventsWithoutAny<LYSerializeableObserveEvents>['emit'];\n}\n\nlet observe: LYSerializeableObserve;\n\nexport class LYSerializeable extends LYObject {\n\temit: LYEventsWithoutAny<any>['emit'];\n\t// 提供子类重写,支持反序列化时自定义构造对象,args为序列化时getConstructorArguments的返回值\n\tprotected static [SERIALIZE_CREATE](ctor: LYCtorInfo, ...args: any[]) {\n\t\tconst { Construct } = ctor;\n\t\treturn new Construct(...args);\n\t}\n\n\tstatic get observe() {\n\t\tobserve = observe || new LYSerializeableObserve();\n\t\treturn observe;\n\t}\n\n\tstatic serialize(value: any): any | any[] {\n\t\tif (typeof value !== 'object' && typeof value !== 'function' && typeof value !== 'symbol') {\n\t\t\treturn value;\n\t\t}\n\t\tif (value === null || value.constructor === Date) {\n\t\t\treturn value;\n\t\t}\n\t\tif (value instanceof LYSerializeable) {\n\t\t\treturn value.serialize();\n\t\t}\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map((value) => LYSerializeable.serialize(value));\n\t\t}\n\t\tif (value.constructor === Object) {\n\t\t\treturn Object.keys(value).reduce((result, key) => {\n\t\t\t\tresult[key] = LYSerializeable.serialize(value[key]);\n\t\t\t\treturn result;\n\t\t\t}, {} as any);\n\t\t}\n\t\tthrow new Error(`unsupported serialize type ${value.constructor}`);\n\t}\n\n\tstatic deserialize(data: any, owner?: any, property?: string): any | any[] {\n\t\tif (typeof data !== 'object' || data === null) {\n\t\t\treturn data;\n\t\t}\n\t\tif (Array.isArray(data)) {\n\t\t\treturn data.map((value) => LYSerializeable.deserialize(value, owner, property));\n\t\t}\n\t\tif (CONSTRUCT_KEY in data) {\n\t\t\tconst { ref, name, args } = data[CONSTRUCT_KEY];\n\t\t\t// 如果以引用的形式标记,则返回引用对应的对象\n\t\t\tif (ref) {\n\t\t\t\tif (!deserializeObjects[ref]) {\n\t\t\t\t\tthrow new Error(`can not find reference object ${ref}`);\n\t\t\t\t}\n\t\t\t\treturn deserializeObjects[ref];\n\t\t\t}\n\t\t\tconst Construct = LYObject.getClass(name) as any;\n\t\t\tconst create = Construct[SERIALIZE_CREATE] || LYSerializeable[SERIALIZE_CREATE];\n\t\t\tlet self: LYSerializeable;\n\t\t\tConstruct[DESERIALIZING] = true;\n\t\t\ttry {\n\t\t\t\tself = create({ Construct, owner, property }, ...args);\n\t\t\t} finally {\n\t\t\t\tConstruct[DESERIALIZING] = false;\n\t\t\t}\n\t\t\taddReentry(self);\n\t\t\ttry {\n\t\t\t\tself.deserialize(data);\n\t\t\t\treturn self;\n\t\t\t} finally {\n\t\t\t\treleaseReentry();\n\t\t\t}\n\t\t}\n\t\treturn Object.entries(data).reduce((result, [key, value]) => {\n\t\t\tresult[key] = LYSerializeable.deserialize(value, result, key);\n\t\t\treturn result;\n\t\t}, {} as any);\n\t}\n\n\tprivate [UNIQUE_ID] = ++uniqueId;\n\tprivate [SERIALIZING] = 0;\n\tprivate [DESERIALIZING] = 0;\n\tprivate [SERIALIZE_CACHE]: object | null = null;\n\tprivate [BACKUP_DATA]: any;\n\tprivate [FREEZED_DATA]:any = null;\n\tprivate [OBSERVABLE_DISPOSER]: any;\n\tprotected [SERIALIZE_DATA] = observable({}) as any;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis[OBSERVABLE_DISPOSER] = deepObserve(this[SERIALIZE_DATA], this.onDataChange.bind(this));\n\t}\n\n\t// 提供子类重写,用于支持子类构造函数存在必填参数时可进行动态创建\n\tprotected [SERIALIZE_GET_CONSTRUCT_ARGS](): unknown[] {\n\t\treturn [];\n\t}\n\n\tget isSerializing() {\n\t\treturn this[SERIALIZING] > 0;\n\t}\n\n\tget isDeserializing() {\n\t\treturn (this.constructor as any)[DESERIALIZING] || this[DESERIALIZING] > 0;\n\t}\n\n\t// 冻结属性,设置为true后将数据存放至FREEZED_DATA中\n\t// 本意为派生类可将SERIALIZE_DATA作为响应式,但在freezed为true后响应式将失效\n\tget freezed() {\n\t\treturn !!this[FREEZED_DATA];\n\t}\n\tset freezed(value) {\n\t\tif (value === !!this[FREEZED_DATA]) {\n\t\t\treturn;\n\t\t}\n\t\tif (value) {\n\t\t\tthis[FREEZED_DATA] = JSON.parse(JSON.stringify(this[SERIALIZE_DATA]));\n\t\t} else {\n\t\t\tObject.assign(this[SERIALIZE_DATA], this[FREEZED_DATA]);\n\t\t\tthis.onPropertyChange();\n\t\t\tthis[FREEZED_DATA] = null;\n\t\t}\n\t}\n\n\t// 级联进行数据备份,支持与freezed组合使用\n\tbackup() {\n\t\tthis[BACKUP_DATA] = this[FREEZED_DATA] || this[SERIALIZE_DATA];\n\t\tObject.values(this[BACKUP_DATA]).forEach((value) => {\n\t\t\tif (value instanceof LYSerializeable) {\n\t\t\t\tvalue.backup();\n\t\t\t}\n\t\t});\n\t}\n\n\t// 级联进行数据还原\n\trestore() {\n\t\tObject.values(this[BACKUP_DATA]).forEach((value) => {\n\t\t\tif (value instanceof LYSerializeable) {\n\t\t\t\tvalue.restore();\n\t\t\t}\n\t\t});\n\t\tObject.assign(this[FREEZED_DATA] || this[SERIALIZE_DATA], this[BACKUP_DATA]);\n\t}\n\n\tget serializeCached() {\n\t\treturn !!this[SERIALIZE_CACHE];\n\t}\n\n\tclearSerializeCache() {\n\t\tthis[SERIALIZE_CACHE] = null;\n\t}\n\n\tprotected onDataChange(change: IChange, path: string) {\n\t\tconst property = path && path.split('/')[0];\n\t\tif (change.observableKind === 'object') {\n\t\t\tthis.onPropertyChange(property || (change.name as string));\n\t\t}\n\t\tif (change.observableKind === 'array') {\n\t\t\tthis.onPropertyChange(property);\n\t\t}\n\t\tthis[SERIALIZE_CACHE] = null;\n\t}\n\n\tprotected onPropertyChange(property?: string) {\n\t\tobserve?.emit('property-change', this, property);\n\t}\n\n\tprotected doSerialize() {\n\t\treturn Object.entries(this[SERIALIZE_DATA]).reduce((result, [key, value]) => {\n\t\t\tresult[key] = LYSerializeable.serialize(value);\n\t\t\treturn result;\n\t\t}, {} as any);\n\t}\n\n\tserialize() {\n\t\tif (this[FREEZED_DATA]) {\n\t\t\tthrow new Error('disallow serialize when freezed is true');\n\t\t}\n\t\tif (this[SERIALIZE_CACHE]) {\n\t\t\treturn this[SERIALIZE_CACHE];\n\t\t}\n\t\tthis[SERIALIZING]++;\n\t\ttry {\n\t\t\t// 如果已重入序列化,仅保留引用信息,防止无限递归\n\t\t\tif (this[SERIALIZING] > 1) {\n\t\t\t\tthis[SERIALIZE_CACHE] = {\n\t\t\t\t\t[CONSTRUCT_KEY]: {\n\t\t\t\t\t\tref: this[UNIQUE_ID]\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tobserve?.emit('before-serialize', this);\n\t\t\t\tthis[SERIALIZE_CACHE] = {\n\t\t\t\t\t...this.doSerialize(),\n\t\t\t\t\t[CONSTRUCT_KEY]: {\n\t\t\t\t\t\tname: LYObject.getClassName(this),\n\t\t\t\t\t\targs: this[SERIALIZE_GET_CONSTRUCT_ARGS](),\n\t\t\t\t\t\tid: this[UNIQUE_ID]\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tobserve?.emit('after-serialize', this);\n\t\t\t}\n\t\t\treturn this[SERIALIZE_CACHE];\n\t\t} finally {\n\t\t\tthis[SERIALIZING]--;\n\t\t}\n\t}\n\n\tprotected doDeserialize(data: any) {\n\t\tObject.entries(data).forEach(([key, value]) => {\n\t\t\tif (key !== CONSTRUCT_KEY) {\n\t\t\t\tthis[SERIALIZE_DATA][key] = LYSerializeable.deserialize(value, this, key);\n\t\t\t}\n\t\t});\n\t}\n\n\tdeserialize(o: any) {\n\t\tif (this[FREEZED_DATA]) {\n\t\t\tthrow new Error('disallow deserialize when freezed is true');\n\t\t}\n\t\tif (!(CONSTRUCT_KEY in o)) {\n\t\t\tthrow new Error('error deserialize object');\n\t\t}\n\t\tthis[UNIQUE_ID] = o[CONSTRUCT_KEY].id;\n\t\taddReentry(this);\n\t\tthis[DESERIALIZING]++;\n\t\ttry {\n\t\t\tobserve?.emit('before-deserialize', this);\n\t\t\tthis.doDeserialize(o);\n\t\t\tthis[SERIALIZE_CACHE] = o;\n\t\t\tobserve?.emit('after-deserialize', this);\n\t\t} finally {\n\t\t\tthis[DESERIALIZING]--;\n\t\t\treleaseReentry();\n\t\t}\n\t}\n\n\t// 重写hasOwnPropetry方法的目的是为了处理代理对象上面使用Object上面的hasOwnProperty方法会失效。\n\thasOwnProperty(key: string) {\n\t\treturn this[SERIALIZE_DATA].hasOwnProperty(key) || Object.prototype.hasOwnProperty.call(this, key);\n\t}\n}\n\nexport const serialize = {\n\tinclude<T extends LYSerializeable>(target: T, property: string) {\n\t\tconst proto = target;\n\t\tif (property in target) {\n\t\t\treturn;\n\t\t}\n\t\tObject.defineProperty(proto, property, {\n\t\t\tget() {\n\t\t\t\tconst data = this[FREEZED_DATA] || this[SERIALIZE_DATA];\n\t\t\t\treturn data[property];\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tconst data = this[FREEZED_DATA] || this[SERIALIZE_DATA];\n\t\t\t\tif (data[property] === value) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tdata[property] = value;\n\t\t\t}\n\t\t});\n\t}\n};\n","/**\n * LYObservable用于支持生成可观测对象\n * 利用ILYObservableSite进行对象属性数据的全量同步或增量同步\n * 从该类继承的对象可保持主进程、渲染进程间的对象值同步\n * 为确保该功能正常运行,存在如下限制\n * 1、LYObservable的单实例对象必须使用静态属性,并使用observe.include进行修饰,如进行初始化,需使用observe.inHost进行包装\n * 2、LYObservable对象必须实现序列化、反序列化,仅支持@observe.include标记的成员进行响应式\n * 3、本模块不预设是在主进程或渲染进程执行,因此LYObservableSite仅为ILYObservableSite的部分实现,无法直接使用,由win-main、win-renderer进行各自的完全实现\n * 4、每个LYObservable实例将由references进行引用管理,数据同步时均以LYObservable实例为单位进行同步,支持实例下某个单独属性同步\n * 5、references使用WeakRef进行引用跟踪,各进程管理自身的引用,实例销毁不进行同步\n * 6、LYObservable对象支持自动同步及手工同步两种策略,均利用push加入同步信息,支持flush进行同步\n * 7、考虑性能,push时使用mergeToQueue进行队列合并,合并策略中考虑了同实例、同属性,按照timestamp、index进行合并的策略,尽可能减少通信数据量\n * 8、考虑到某些操作的互斥,如nedb不能多实例操作同一文件,方法、属性支持observe.host进行修饰,此时可确保该代码一定在主进程中执行\n * 缺陷:\n * 1、双边进行数据同步修改时,不保证数据的正确性\n * 2、方法修饰为observe.host时,并不保证flush完成,因此主进程执行时可能有部分数据尚未同步完成导致不符合预期,此时需要在代码中适当调用flush\n */\nimport { observable, action, configure } from 'mobx';\nimport { serialize, LYSerializeable, SERIALIZE_CREATE, LYCtorInfo } from './serializeable';\n\nconfigure({\n enforceActions: 'never',\n});\n\nconst OBSERVABLE_STATIC_DATA = Symbol('observableStaticData');\n\nexport class LYObservable extends LYSerializeable {}\n\nexport class LYOwnerObservable<T> extends LYObservable {\n\tprivate _owner: T;\n\n\tprotected static [SERIALIZE_CREATE](ctor: LYCtorInfo, ...args: any[]) {\n\t\tconst { Construct } = ctor;\n\t\treturn new Construct(ctor.owner, ...args);\n\t}\n\n\tconstructor(owner: T) {\n\t\tsuper();\n\t\tthis._owner = owner;\n\t}\n\n\tget owner() {\n\t\treturn this._owner;\n\t}\n\n\tset owner(value) {\n\t\tthis._owner = value;\n\t}\n}\n\nexport const observe = {\n action: action,\n include(target: any, propertyOrContext: any): any {\n // Stage 3:字段装饰器 (value, context)\n if (propertyOrContext && typeof propertyOrContext === 'object' && 'kind' in propertyOrContext) {\n const ctx = propertyOrContext;\n if (ctx.kind === 'field') {\n return function (this: any, initialValue: any) {\n const proto = Object.getPrototypeOf(this);\n // 仅在原型上定义一次 getter/setter\n if (!Object.prototype.hasOwnProperty.call(proto, ctx.name)) {\n serialize.include(proto as LYSerializeable, ctx.name as string);\n }\n // 返回初始化值给 SWC 的字段初始器\n return initialValue;\n };\n }\n return;\n }\n\n // legacy: (target, property)\n const property = propertyOrContext as string;\n if (typeof target === 'function') {\n const targetAny = target as any;\n if (!targetAny[OBSERVABLE_STATIC_DATA]) {\n targetAny[OBSERVABLE_STATIC_DATA] = observable({});\n }\n targetAny[OBSERVABLE_STATIC_DATA][property] = targetAny[property];\n Object.defineProperty(target, property, {\n get() {\n const data = targetAny[OBSERVABLE_STATIC_DATA];\n return data[property];\n },\n set(value) {\n const data = targetAny[OBSERVABLE_STATIC_DATA];\n if (data[property] !== value) data[property] = value;\n },\n });\n } else {\n serialize.include(target as LYObservable, property);\n }\n },\n};","import { cloneDeep } from 'lodash';\r\nimport type { ILYEvents, LYEvents } from '../object';\r\nimport { LYObject, register } from '../object';\r\n\r\ntype LYStorageEvents = {\r\n changed(event: { key: string; value: any; isCrossWindow?: boolean }): void;\r\n};\r\n\r\nfunction stringify(val: any): string {\r\n return val === undefined || typeof val === 'function' ? '' : JSON.stringify(val);\r\n}\r\n\r\nfunction parse(value: any): any {\r\n if (typeof value !== 'string') {\r\n return undefined;\r\n }\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return value;\r\n }\r\n}\r\n\r\nexport interface ILYStorage extends ILYEvents<LYStorageEvents> {\r\n init(): Promise<void>;\r\n flush(): Promise<void>;\r\n get<T>(key: string): Promise<T>;\r\n set(key: string, value: any): Promise<void>;\r\n has(key: string): Promise<boolean>;\r\n update(key: string, func: (value: any) => Promise<any>): Promise<void>;\r\n remove(key: string): Promise<void>;\r\n clear(): Promise<void>;\r\n keys(): Promise<string[]>;\r\n values(): Promise<any[]>;\r\n entries(): Promise<[string, any][]>;\r\n}\r\n\r\nexport interface ILYStorageSync extends ILYEvents<LYStorageEvents> {\r\n initSync(): void;\r\n flushSync(): void;\r\n getSync<T>(key: string): T;\r\n setSync(key: string, value: any): void;\r\n hasSync(key: string): boolean;\r\n updateSync(key: string, func: (value: any) => any): void;\r\n removeSync(key: string): void;\r\n clearSync(): void;\r\n keysSync(): string[];\r\n valuesSync(): any[];\r\n entriesSync(): [string, any][];\r\n}\r\n\r\n@register('LYBaseLocalStorage')\r\nclass LYBaseLocalStorage extends LYObject implements ILYStorageSync {\r\n on: LYEvents<LYStorageEvents>['on'];\r\n off: LYEvents<LYStorageEvents>['on'];\r\n once: LYEvents<LYStorageEvents>['on'];\r\n emit: LYEvents<LYStorageEvents>['emit'];\r\n\r\n protected _storage: Storage;\r\n protected _prefix: string;\r\n\r\n constructor(prefix: string, storage: Storage) {\r\n super();\r\n this._prefix = prefix;\r\n this._storage = storage;\r\n }\r\n\r\n initSync(): void {}\r\n\r\n flushSync(): void {}\r\n\r\n getSync<T>(key: string): T {\r\n return parse(this._storage.getItem(this._prefix + key)) as T;\r\n }\r\n\r\n setSync(key: string, value: any): void {\r\n const stringifyValue = stringify(value);\r\n this._storage.setItem(this._prefix + key, stringifyValue);\r\n this.emit('changed', { key, value });\r\n }\r\n\r\n hasSync(key: string): boolean {\r\n const keys = this.keysSync();\r\n return keys.includes(key);\r\n }\r\n\r\n /**\r\n * 为了更新原子化,譬如我要在原来的基础上+1,如果是先get,在set,而get和set是异步的话,那么get和set中间可能出现对这个值再进行了操作的情况,导致不符合预期\r\n */\r\n updateSync(key: string, func: (value: any) => any): void {\r\n const value = this.getSync(key);\r\n const updateValue = func(cloneDeep(value));\r\n this._storage.setItem(this._prefix + key, stringify(updateValue));\r\n this.emit('changed', { key, value: updateValue });\r\n }\r\n\r\n removeSync(key: string): boolean {\r\n this._storage.removeItem(this._prefix + key);\r\n this.emit('changed', { key });\r\n return true;\r\n }\r\n\r\n clearSync(): void {\r\n const delKeys: string[] = [];\r\n for (let i = 0; i < this._storage.length; i++) {\r\n const key = this._storage.key(i);\r\n if (key && key.startsWith(this._prefix)) {\r\n delKeys.push(key.slice(this._prefix.length));\r\n }\r\n }\r\n delKeys.map(key => this.removeSync(key));\r\n }\r\n\r\n keysSync(): string[] {\r\n const result: string[] = [];\r\n for (let i = 0; i < this._storage.length; i++) {\r\n const key = this._storage.key(i);\r\n if (key && key.indexOf(this._prefix) === 0) {\r\n result.push(key.slice(this._prefix.length));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n valuesSync(): any[] {\r\n const result: any[] = [];\r\n for (let i = 0; i < this._storage.length; i++) {\r\n const key = this._storage.key(i);\r\n if (key && key.indexOf(this._prefix) === 0) {\r\n const value = this._storage.getItem(key);\r\n if (value) {\r\n result.push(JSON.parse(value));\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n entriesSync(): [string, any][] {\r\n const result: [string, any][] = [];\r\n for (let i = 0; i < this._storage.length; i++) {\r\n const key = this._storage.key(i);\r\n if (key && key.indexOf(this._prefix) === 0) {\r\n const value = this._storage.getItem(key);\r\n if (value) {\r\n const parsedValue = JSON.parse(value);\r\n result.push([key.slice(this._prefix.length), parsedValue]);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n\r\n@register('LYLocalStorage')\r\nexport class LYLocalStorage extends LYBaseLocalStorage implements ILYStorageSync {\r\n constructor(prefix: string) {\r\n super(prefix, localStorage);\r\n window.addEventListener('storage', e => {\r\n if (e.key && e.key.startsWith(prefix)) {\r\n this.emit('changed', {\r\n key: e.key.slice(prefix.length),\r\n value: e.newValue ? JSON.parse(e.newValue) : undefined,\r\n isCrossWindow: true,\r\n });\r\n }\r\n });\r\n }\r\n}\r\n\r\n@register('LYSessionStorage')\r\nexport class LYSessionStorage extends LYBaseLocalStorage implements ILYStorageSync {\r\n constructor(prefix: string) {\r\n super(prefix, sessionStorage);\r\n }\r\n}\r\n\r\nexport interface ILYCloudStorage {\r\n setValue(key: string, value: string): Promise<void>;\r\n getValue(key: string): Promise<string>;\r\n remove(keys: string[]): Promise<void>;\r\n clear(prefix?: string): Promise<void>;\r\n getAll(): Promise<Record<string, any>>;\r\n getKeys(): Promise<string[]>;\r\n}\r\n\r\nlet impl: ILYCloudStorage;\r\n\r\nexport function setCloudStorageImpl(value: ILYCloudStorage): void {\r\n impl = value;\r\n}\r\n\r\n@register('LYCloudStorage')\r\nexport class LYCloudStorage extends LYObject implements ILYStorage {\r\n on: LYEvents<LYStorageEvents>['on'];\r\n off: LYEvents<LYStorageEvents>['on'];\r\n once: LYEvents<LYStorageEvents>['on'];\r\n addListener: LYEvents<LYStorageEvents>['on'];\r\n removeListener: LYEvents<LYStorageEvents>['on'];\r\n emit: LYEvents<LYStorageEvents>['emit'];\r\n\r\n protected _prefix: string;\r\n\r\n constructor(prefix: string) {\r\n super();\r\n this._prefix = prefix;\r\n }\r\n\r\n get keyValueImpl(): ILYCloudStorage {\r\n return impl || (LYObject.getInstance('LYCloudStorage') as unknown as ILYCloudStorage);\r\n }\r\n\r\n async init(): Promise<void> {}\r\n\r\n async flush(): Promise<void> {}\r\n\r\n async get<T>(key: string): Promise<T> {\r\n const value = await this.keyValueImpl.getValue(this._prefix + key);\r\n return parse(value) as T;\r\n }\r\n\r\n async set(key: string, value: any): Promise<void> {\r\n const stringifyValue = stringify(value);\r\n await this.keyValueImpl.setValue(this._prefix + key, stringifyValue);\r\n this.emit('changed', { key, value });\r\n }\r\n\r\n async has(key: string): Promise<boolean> {\r\n const keys = await this.keys();\r\n return keys.includes(key);\r\n }\r\n\r\n async update(key: string, func: (value: any) => Promise<any>): Promise<void> {\r\n const value = await this.get(key);\r\n const updateValue = await func(cloneDeep(value));\r\n await this.keyValueImpl.setValue(this._prefix + key, stringify(updateValue));\r\n this.emit('changed', { key, value: updateValue });\r\n }\r\n\r\n async remove(key: string): Promise<void> {\r\n await this.keyValueImpl.remove([this._prefix + key]);\r\n this.emit('changed', { key });\r\n }\r\n\r\n async clear(): Promise<void> {\r\n const keys = await this.keys();\r\n await this.keyValueImpl.clear(this._prefix);\r\n keys.map(key => this.emit('changed', { key }));\r\n }\r\n\r\n async keys(): Promise<string[]> {\r\n const keys = await this.keyValueImpl.getKeys();\r\n return keys\r\n .filter(key => key.startsWith(this._prefix))\r\n .map(key => key.slice(this._prefix.length));\r\n }\r\n\r\n async values(): Promise<any[]> {\r\n const all = await this.keyValueImpl.getAll();\r\n const result: string[] = [];\r\n for (const [key, value] of Object.entries(all)) {\r\n if (key.startsWith(this._prefix)) {\r\n result.push(parse(value));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n async entries(): Promise<[string, any][]> {\r\n const all = await this.keyValueImpl.getAll();\r\n const result: [string, any][] = [];\r\n for (const [key, value] of Object.entries(all)) {\r\n if (key.startsWith(this._prefix)) {\r\n result.push([key.slice(this._prefix.length), parse(value)]);\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nexport const sharedLocalStorage = new LYLocalStorage('LY.');\r\nexport const sharedCloudStorage = new LYCloudStorage('LY.');\r\n","import { LYError } from '../error';\r\n\r\nexport type LYBasicResultCode =\r\n | 'success'\r\n | 'failed'\r\n | 'invalid_params'\r\n | 'exists'\r\n | 'not_exists'\r\n | 'forbidden'\r\n | 'timeout'\r\n | 'expired';\r\n\r\nexport class LYBaseHttpError extends LYError {\r\n private _url: string;\r\n private _method: string;\r\n private _inner_error: Error;\r\n\r\n constructor(message: string, url: string, method: string, inner_error: Error) {\r\n super(message);\r\n this._url = url;\r\n this._method = method;\r\n this._inner_error = inner_error;\r\n }\r\n\r\n get url(): string {\r\n return this._url;\r\n }\r\n\r\n get method(): string {\r\n return this._method;\r\n }\r\n\r\n get inner_error(): Error {\r\n return this._inner_error;\r\n }\r\n}\r\n\r\nexport class LYConfigError extends LYBaseHttpError {}\r\n\r\nexport class LYNetworkError extends LYBaseHttpError {}\r\n\r\nexport enum LYHttpStatus {\r\n SUCCESS = 200,\r\n BAD_REQUEST = 400,\r\n UNAUTHORIZED = 401,\r\n FORBIDDEN = 403,\r\n NOT_FOUND = 404,\r\n TOO_MANY_REQUESTS = 429,\r\n INTERNAL_SERVER_ERROR = 500,\r\n}\r\n\r\nexport class LYHttpStatusError extends LYBaseHttpError {\r\n private _status: number;\r\n\r\n constructor(message: string, url: string, method: string, inner_error: Error, status: number) {\r\n super(message, url, method, inner_error);\r\n this._status = status;\r\n }\r\n\r\n get status(): number {\r\n return this._status;\r\n }\r\n\r\n getStatus(): LYHttpStatus | undefined {\r\n if (typeof LYHttpStatus[this._status] === 'string') {\r\n return this._status as LYHttpStatus;\r\n }\r\n return undefined;\r\n }\r\n}\r\n\r\nexport class LYAppHttpError extends LYBaseHttpError {\r\n constructor(message: string, url: string, method: string, inner_error: Error, code: string) {\r\n super(message, url, method, inner_error);\r\n this._code = code;\r\n }\r\n\r\n getCode<T extends LYBasicResultCode = LYBasicResultCode>(): T {\r\n return this._code as T;\r\n }\r\n}\r\n","import { LYObject } from '../object';\r\n\r\nexport type LYAction = 'none' | 'create' | 'read' | 'update' | 'delete' | 'execute';\r\n\r\nexport class LYAppPermission extends LYObject {\r\n private _app_name: string;\r\n private _codes: Record<string, LYAction[]> = {};\r\n\r\n constructor(app_name: string, codes: Record<string, LYAction[]>) {\r\n super();\r\n this._app_name = app_name;\r\n this._codes = codes;\r\n }\r\n\r\n get app_name(): string {\r\n return this._app_name;\r\n }\r\n\r\n getActions(code: string): LYAction[] {\r\n if (!(code in this._codes)) {\r\n return [];\r\n }\r\n return this._codes[code];\r\n }\r\n}\r\n","import { LYObject, register } from '../object';\r\nimport { type LYAction, LYAppPermission } from '../permission';\r\nimport { sharedLocalStorage } from '../storage';\r\n\r\ntype LYSessionType = 'web' | 'direct' | 'gateway' | 'redirect';\r\n\r\nconst SESSION_KEY = 'session';\r\n\r\ninterface SessionStorageData {\r\n type: LYSessionType;\r\n authentication_name: string;\r\n id: string;\r\n token: string;\r\n user_id: string;\r\n user_name: string;\r\n expires_in: number;\r\n permissions: Record<string, Record<string, LYAction[]>>;\r\n created_at: number; // 添加创建时间戳\r\n is_first_login: boolean;\r\n display_name: string;\r\n email: string;\r\n phone: string;\r\n country_code: string;\r\n}\r\n\r\n@register('LYSession')\r\nexport class LYSession extends LYObject {\r\n private static _session?: LYSession;\r\n private _type: LYSessionType;\r\n private _authentication_name: string;\r\n private _id: string;\r\n private _token: string;\r\n private _user_id: string;\r\n private _user_name: string;\r\n private _expires_in: number;\r\n private _permissions: Record<string, LYAppPermission>;\r\n private _created_at: number;\r\n private static _refreshCallback?: (session: LYSession) => Promise<void>;\r\n private static _refreshTimer?: NodeJS.Timeout;\r\n private static readonly _CHECK_INTERVAL = 10 * 1000; // 每10秒检查一次\r\n private _is_first_login: boolean;\r\n private _display_name: string;\r\n private _email: string;\r\n private _phone: string;\r\n private _country_code: string;\r\n\r\n static get(): LYSession | undefined {\r\n if (!LYSession._session) {\r\n const session = sharedLocalStorage.getSync<SessionStorageData>(SESSION_KEY);\r\n if (session) {\r\n const {\r\n type,\r\n authentication_name,\r\n id,\r\n token,\r\n user_id,\r\n user_name,\r\n expires_in,\r\n permissions,\r\n is_first_login,\r\n created_at = Date.now(), // 兼容旧版本,如果没有created_at则使用当前时间\r\n display_name = '',\r\n email = '',\r\n phone = '',\r\n country_code = '',\r\n } = session;\r\n LYSession._session = new LYSession(\r\n type,\r\n authentication_name,\r\n id,\r\n token,\r\n user_id,\r\n user_name,\r\n expires_in,\r\n permissions,\r\n created_at,\r\n is_first_login,\r\n display_name,\r\n email,\r\n phone,\r\n country_code\r\n );\r\n \r\n // 启动定时器监控\r\n LYSession._startRefreshTimer();\r\n }\r\n }\r\n return LYSession._session;\r\n }\r\n\r\n static create(\r\n type: LYSessionType,\r\n authentication_name: string,\r\n id: string,\r\n token: string,\r\n user_id: string,\r\n user_name: string,\r\n expires_in: number,\r\n permissions: Record<string, Record<string, LYAction[]>>,\r\n is_first_login?: boolean,\r\n display_name?: string,\r\n email?: string,\r\n phone?: string,\r\n country_code?: string\r\n ): LYSession {\r\n const created_at = Date.now();\r\n LYSession._session = new LYSession(\r\n type,\r\n authentication_name,\r\n id,\r\n token,\r\n user_id,\r\n user_name,\r\n expires_in,\r\n permissions,\r\n created_at,\r\n is_first_login,\r\n display_name,\r\n email,\r\n phone,\r\n country_code\r\n );\r\n sharedLocalStorage.setSync(SESSION_KEY, {\r\n type,\r\n authentication_name,\r\n id,\r\n token,\r\n user_id,\r\n user_name,\r\n expires_in,\r\n permissions,\r\n created_at,\r\n is_first_login,\r\n display_name: display_name || '',\r\n email: email || '',\r\n phone: phone || '',\r\n country_code: country_code || ''\r\n });\r\n \r\n // 启动定时器监控\r\n LYSession._startRefreshTimer();\r\n \r\n return LYSession._session;\r\n }\r\n\r\n static clear(): void {\r\n LYSession._session = undefined;\r\n sharedLocalStorage.removeSync(SESSION_KEY);\r\n \r\n // 停止定时器\r\n LYSession._stopRefreshTimer();\r\n }\r\n\r\n constructor(\r\n type: LYSessionType,\r\n authentication_name: string,\r\n id: string,\r\n token: string,\r\n user_id: string,\r\n user_name: string,\r\n expires_in: number,\r\n permissions: Record<string, Record<string, LYAction[]>>,\r\n created_at: number,\r\n is_first_login?: boolean,\r\n display_name?: string,\r\n email?: string,\r\n phone?: string,\r\n country_code?: string\r\n ) {\r\n super();\r\n this._type = type;\r\n this._authentication_name = authentication_name;\r\n this._id = id;\r\n this._token = token;\r\n this._user_id = user_id;\r\n this._user_name = user_name;\r\n this._expires_in = expires_in;\r\n this._created_at = created_at;\r\n this._is_first_login = is_first_login;\r\n this._display_name = display_name || '';\r\n this._email = email || '';\r\n this._phone = phone || '';\r\n this._country_code = country_code || '';\r\n this._permissions = Object.entries(permissions || {}).reduce<Record<string, LYAppPermission>>((acc, [app_name, codes]) => {\r\n acc[app_name] = new LYAppPermission(app_name, codes);\r\n return acc;\r\n }, {});\r\n }\r\n\r\n get type(): LYSessionType {\r\n return this._type;\r\n }\r\n\r\n get authentication_name(): string {\r\n return this._authentication_name;\r\n }\r\n\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n get token(): string {\r\n return this._token;\r\n }\r\n\r\n get user_id(): string {\r\n return this._user_id;\r\n }\r\n\r\n get user_name(): string {\r\n return this._user_name;\r\n }\r\n\r\n get expires_in(): number {\r\n return this._expires_in;\r\n }\r\n\r\n get permissions(): Record<string, LYAppPermission> {\r\n return this._permissions;\r\n }\r\n\r\n get created_at(): number {\r\n return this._created_at;\r\n }\r\n\r\n get is_first_login(): boolean | undefined {\r\n return this._is_first_login;\r\n }\r\n\r\n get display_name(): string {\r\n return this._display_name;\r\n }\r\n\r\n get email(): string {\r\n return this._email;\r\n }\r\n\r\n get phone(): string {\r\n return this._phone;\r\n }\r\n\r\n get country_code(): string {\r\n return this._country_code;\r\n }\r\n\r\n /**\r\n * 检查session是否已过期\r\n */\r\n isExpired(): boolean {\r\n const now = Date.now();\r\n const expirationTime = this._created_at + (this._expires_in * 1000);\r\n return now >= expirationTime;\r\n }\r\n\r\n /**\r\n * 检查session是否即将过期(在过期前15秒)\r\n */\r\n isNearExpiration(): boolean {\r\n const now = Date.now();\r\n const expirationTime = this._created_at + (this._expires_in * 1000);\r\n const fifteenSecondsInMs = 15 * 1000;\r\n return (expirationTime - now) <= fifteenSecondsInMs;\r\n }\r\n\r\n /**\r\n * 设置刷新回调函数\r\n */\r\n static setRefreshCallback(callback: (session: LYSession) => Promise<void>): void {\r\n LYSession._refreshCallback = callback;\r\n }\r\n\r\n /**\r\n * 获取有效的session,如果过期则尝试刷新\r\n */\r\n static async getValid(): Promise<LYSession | undefined> {\r\n const session = LYSession.get();\r\n if (!session) {\r\n return undefined;\r\n }\r\n\r\n if (session.isExpired()) {\r\n // 如果已过期,尝试刷新\r\n if (LYSession._refreshCallback) {\r\n try {\r\n await LYSession._refreshCallback(session);\r\n return LYSession.get(); // 返回刷新后的session\r\n } catch (error) {\r\n // 刷新失败,清除session\r\n LYSession.clear();\r\n return undefined;\r\n }\r\n } else {\r\n // 没有刷新回调,清除过期session\r\n LYSession.clear();\r\n return undefined;\r\n }\r\n } else if (session.isNearExpiration()) {\r\n // 如果即将过期,尝试提前刷新\r\n if (LYSession._refreshCallback) {\r\n try {\r\n await LYSession._refreshCallback(session);\r\n } catch (error) {\r\n // 刷新失败,但session还没过期,继续使用\r\n console.warn('Session refresh failed but session is still valid:', error);\r\n }\r\n }\r\n }\r\n\r\n return session;\r\n }\r\n\r\n /**\r\n * 更新session信息\r\n */\r\n static update(\r\n id: string,\r\n token: string,\r\n user_id: string,\r\n user_name: string,\r\n expires_in: number,\r\n permissions: Record<string, Record<string, LYAction[]>>,\r\n display_name?: string,\r\n email?: string,\r\n phone?: string,\r\n country_code?: string\r\n ): void {\r\n if (LYSession._session) {\r\n const created_at = Date.now();\r\n LYSession._session._id = id;\r\n LYSession._session._token = token;\r\n LYSession._session._user_id = user_id;\r\n LYSession._session._user_name = user_name;\r\n LYSession._session._expires_in = expires_in;\r\n LYSession._session._created_at = created_at;\r\n if (display_name !== undefined) LYSession._session._display_name = display_name;\r\n if (email !== undefined) LYSession._session._email = email;\r\n if (phone !== undefined) LYSession._session._phone = phone;\r\n if (country_code !== undefined) LYSession._session._country_code = country_code;\r\n LYSession._session._permissions = Object.entries(permissions || {}).reduce<Record<string, LYAppPermission>>((acc, [app_name, codes]) => {\r\n acc[app_name] = new LYAppPermission(app_name, codes);\r\n return acc;\r\n }, {});\r\n\r\n // 更新存储\r\n sharedLocalStorage.setSync(SESSION_KEY, {\r\n type: LYSession._session._type,\r\n authentication_name: LYSession._session._authentication_name,\r\n id,\r\n token,\r\n user_id,\r\n user_name,\r\n expires_in,\r\n permissions,\r\n created_at,\r\n is_first_login: LYSession._session._is_first_login,\r\n display_name: LYSession._session._display_name,\r\n email: LYSession._session._email,\r\n phone: LYSession._session._phone,\r\n country_code: LYSession._session._country_code,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * 启动定时器监控session过期\r\n */\r\n private static _startRefreshTimer(): void {\r\n // 如果已经有定时器在运行,先清除\r\n LYSession._stopRefreshTimer();\r\n \r\n LYSession._refreshTimer = setInterval(async () => {\r\n try {\r\n await LYSession._checkAndRefreshSession();\r\n } catch (error) {\r\n console.error('Session refresh timer error:', error);\r\n }\r\n }, LYSession._CHECK_INTERVAL);\r\n }\r\n\r\n /**\r\n * 停止定时器\r\n */\r\n private static _stopRefreshTimer(): void {\r\n if (LYSession._refreshTimer) {\r\n clearInterval(LYSession._refreshTimer);\r\n LYSession._refreshTimer = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * 检查并刷新session\r\n */\r\n private static async _checkAndRefreshSession(): Promise<void> {\r\n const session = LYSession._session;\r\n if (!session) {\r\n LYSession._stopRefreshTimer();\r\n return;\r\n }\r\n\r\n if (session.isExpired()) {\r\n // 如果已过期,尝试刷新\r\n if (LYSession._refreshCallback) {\r\n try {\r\n await LYSession._refreshCallback(session);\r\n } catch (error) {\r\n // 刷新失败,清除session并停止定时器\r\n console.warn('Session expired and refresh failed, clearing session:', error);\r\n LYSession.clear();\r\n }\r\n } else {\r\n // 没有刷新回调,清除过期session\r\n console.warn('Session expired and no refresh callback available, clearing session');\r\n LYSession.clear();\r\n }\r\n } else if (session.isNearExpiration()) {\r\n // 如果即将过期,尝试提前刷新\r\n if (LYSession._refreshCallback) {\r\n try {\r\n await LYSession._refreshCallback(session);\r\n } catch (error) {\r\n // 刷新失败,但session还没过期,继续监控\r\n console.warn('Session refresh failed but session is still valid:', error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import type { TOptions } from 'i18next';\r\nimport i18next from 'i18next';\r\nimport type { ILYEvents, LYEvents } from '../object';\r\nimport { LYObject, register } from '../object';\r\nimport { sharedLocalStorage } from '../storage';\r\nimport { LYEnv } from '../env';\r\nimport axios from 'axios';\r\n\r\ntype LYTranslateOptions = TOptions;\r\n\r\nexport type LYTranslateMethod = (key: string, options?: LYTranslateOptions) => string;\r\n\r\ntype LYi18nEvents = {\r\n ['lang-changed'](lang: string): void; // 当前语言变更通知\r\n};\r\n\r\nexport enum LYLangEnum {\r\n 'zh-CN' = '简体中文',\r\n 'en-US' = 'English',\r\n}\r\n\r\nexport type LYKeyofLang = keyof typeof LYLangEnum;\r\n\r\nexport const langKeys = Object.keys(LYLangEnum) as LYKeyofLang[];\r\n\r\nexport const languages: Partial<Record<LYKeyofLang, string>> = {};\r\n\r\nexport interface ILYi18n extends ILYEvents<LYi18nEvents> {\r\n readonly lang: LYKeyofLang; // 语言\r\n readonly languages: Partial<Record<LYKeyofLang, string>>; // 支持的语言列表\r\n getUrlResource(url: string):Promise<Object | undefined>;\r\n loadResource(urlOrJson: string | object, lang?: LYKeyofLang): Promise<void>; // 加载语言资源\r\n changeLanguage(lang: LYKeyofLang): Promise<void>; // 切换语言\r\n t: LYTranslateMethod; // 翻译函数\r\n}\r\n\r\nexport const LANG_KEY = 'lang';\r\n\r\n@register('LYi18n')\r\nexport class LYi18n extends LYObject implements ILYi18n {\r\n on: LYEvents<LYi18nEvents>['on'];\r\n off: LYEvents<LYi18nEvents>['on'];\r\n once: LYEvents<LYi18nEvents>['on'];\r\n emit: LYEvents<LYi18nEvents>['emit'];\r\n\r\n private _namespace: string;\r\n private _lang: LYKeyofLang;\r\n\r\n constructor(namespace?: string) {\r\n super();\r\n this._namespace = namespace || 'LY.';\r\n }\r\n\r\n get t(): LYTranslateMethod {\r\n return (rest: string, options?: TOptions | string) => {\r\n if (!rest) {\r\n return `<Null>`;\r\n }\r\n if (rest.includes(':')) {\r\n return rest.startsWith(`${this.namespace}:`)\r\n ? i18next.t(rest, options as TOptions)\r\n : i18next.t(`${this.namespace}.${rest}`, options as TOptions);\r\n }\r\n return i18next.t(`${this.namespace}:${rest}`, options as TOptions);\r\n };\r\n }\r\n\r\n get lang(): LYKeyofLang {\r\n return this._lang || this.resolveLanguage();\r\n }\r\n\r\n get languages(): Partial<Record<LYKeyofLang, string>> {\r\n return languages;\r\n }\r\n\r\n get namespace(): string {\r\n return this._namespace;\r\n }\r\n\r\n async initialize(): Promise<void> {\r\n // 初始化语言\r\n if (!this._lang) {\r\n this._lang = this.resolveLanguage();\r\n }\r\n\r\n // 多实例同步处理\r\n i18next.on('languageChanged', (lang: LYKeyofLang) => {\r\n if (this._lang !== lang) {\r\n this._lang = lang;\r\n this.emit('lang-changed', lang);\r\n }\r\n });\r\n\r\n if (i18next.isInitialized) {\r\n return;\r\n }\r\n\r\n const defaultVariables: Record<string, string> = {};\r\n const env = LYEnv.getInstance<LYEnv>(this._namespace);\r\n for (const key in env) {\r\n defaultVariables['$' + key] = env[key];\r\n }\r\n\r\n await i18next.init({\r\n fallbackLng: 'zh-CN',\r\n lng: this._lang,\r\n defaultNS: this.namespace,\r\n returnObjects: true,\r\n interpolation: {\r\n escapeValue: false,\r\n defaultVariables,\r\n },\r\n });\r\n\r\n await this.changeLanguage(this._lang);\r\n }\r\n\r\n private fallbackLng(lang: string): LYKeyofLang {\r\n if (lang.includes('en')) {\r\n return 'en-US';\r\n }\r\n return 'zh-CN';\r\n }\r\n\r\n /**\r\n * 解析当前环境语言\r\n * @returns 解析得到的语言\r\n * @private\r\n */\r\n private resolveLanguage(): LYKeyofLang {\r\n // 如果后台传了supportLanguages且只有一个语言时将当前语言设置成设置的语言\r\n const langKeys = Object.keys(this.languages);\r\n if (langKeys.length === 1) {\r\n return this.fallbackLng(langKeys[0]);\r\n }\r\n\r\n const searchParams = new URLSearchParams(location.search);\r\n let lang = searchParams.get(LANG_KEY) as LYKeyofLang;\r\n // query设置语言\r\n if (lang) {\r\n lang = this.fallbackLng(lang);\r\n return lang;\r\n }\r\n // 本地存储设置语言\r\n if (!sharedLocalStorage.getSync(LANG_KEY)) {\r\n lang = this.fallbackLng(navigator.language);\r\n return lang;\r\n }\r\n\r\n lang = (sharedLocalStorage.getSync(LANG_KEY) || 'zh-CN') as LYKeyofLang;\r\n return lang;\r\n }\r\n\r\n async loadResource(\r\n urlOrJson: string | object,\r\n lang?: LYKeyofLang,\r\n namespace?: string\r\n ): Promise<void> {\r\n if (typeof urlOrJson === 'string') {\r\n const res = await this.getUrlResource(urlOrJson);\r\n if (!res) {\r\n return;\r\n }\r\n urlOrJson = res;\r\n }\r\n if (!urlOrJson) {\r\n return;\r\n }\r\n lang = lang || this._lang;\r\n // 每一个LYi18n对象默认的命名空间,外部若定义\"a\"命名空间,实际的命名空间为\"默认命名空间.a\"形式作为扩展\r\n namespace = namespace ? `${this.namespace}.${namespace}` : this.namespace;\r\n i18next.addResourceBundle(lang, namespace, urlOrJson);\r\n }\r\n\r\n async getUrlResource(resourceUrl: string): Promise<object | undefined> {\r\n try {\r\n const res = await axios.get(resourceUrl);\r\n return res.data;\r\n } catch (error) {\r\n this.logger.error(`loadUrlResource error`);\r\n this.logger.error(error);\r\n }\r\n }\r\n\r\n async changeLanguage(lang: LYKeyofLang): Promise<void> {\r\n this.logger.info(`changeLanguage lang to ${lang}`);\r\n this._lang = lang;\r\n i18next.isInitialized && (await i18next.changeLanguage(lang));\r\n sharedLocalStorage.setSync(LANG_KEY, lang);\r\n const url = new URL(window.location.href);\r\n url.searchParams.delete(LANG_KEY);\r\n window.history.replaceState(null, '', url);\r\n i18next.isInitialized && this.emit('lang-changed', lang);\r\n }\r\n\r\n getResource(key: string, lang?: string): Record<string, string> {\r\n lang = lang || this._lang;\r\n let index = key.indexOf(':');\r\n if (index <= 0) {\r\n key = `${this.namespace}:${key}`;\r\n } else {\r\n key = key.startsWith(`${this.namespace}:`) ? key : `${this.namespace}.${key}`;\r\n }\r\n index = key.indexOf(':');\r\n const ns = key.substring(0, index);\r\n const keys = key.substring(index + 1);\r\n if (!ns || !keys) {\r\n return {};\r\n }\r\n const res = i18next.getResourceBundle(lang, ns);\r\n if (!res) {\r\n return {};\r\n }\r\n const resource = keys.split('.').reduce((result, key) => result[key], res);\r\n // 支持命名空间的全部值返回\r\n if (!resource && keys === this.namespace) {\r\n return res;\r\n }\r\n return resource;\r\n }\r\n}\r\n","import { init, loadRemote, registerRemotes } from '@module-federation/enhanced/runtime';\r\nimport { LYObject, register, wait } from '../../object';\r\nimport { LYAppHttpClient, LYTenantHttpClient, type IHeaderProvider } from '../../http';\r\nimport { LYSession } from '../../session';\r\nimport type { LYAppPermission } from '../../permission';\r\nimport { FRAMEWORK_NAME } from '../../constants';\r\nimport { LYConfig } from '../../config';\r\nimport type { LYTenantApp } from '../tenant';\r\nimport type { LYOrganizationApp } from '../organization';\r\nimport type { LYApp } from '../';\r\nimport { LYError } from '../../error';\r\nimport { LYi18n, ILYi18n, LYKeyofLang, langKeys } from '../../i18n';\r\nimport {\r\n ILYStorageSync,\r\n ILYStorage,\r\n LYLocalStorage,\r\n LYSessionStorage,\r\n LYCloudStorage,\r\n} from '../../storage';\r\nimport { LYEnv } from '../../env';\r\n\r\n// const CONFIG_URL = `/${FRAMEWORK_NAME}/configuration`;\r\nconst CONFIG_URL = `/${FRAMEWORK_NAME}/system_info`;\r\nexport const TENANT_APP_NAME = 'tenant';\r\nexport const ORGANIZATION_APP_NAME = 'organization';\r\n\r\ninit({\r\n name: 'uci',\r\n remotes: []\r\n})\r\n\r\ntype LYComponents = Record<string, unknown>;\r\n\r\n// 定义远程模块的类型\r\nexport interface LYAppRemoteModule<Host, LYComponents> {\r\n default(host: Host): LYComponents | Promise<LYComponents>;\r\n}\r\n\r\nexport type ILanguageResources = {\r\n [key in LYKeyofLang]: Object;\r\n};\r\n\r\nexport interface ILYAppProvider {\r\n provideI18nResource: (app: LYBaseApp) => Promise<ILanguageResources>;\r\n provideI18nResourcePath: (app: LYBaseApp, lang?: string) => string;\r\n}\r\n\r\n@register('LYDefaultAppProvider')\r\nexport class LYDefaultAppProvider extends LYObject implements ILYAppProvider {\r\n provideI18nResourcePath(app: LYBaseApp, lang?: string): string {\r\n const { i18n } = app;\r\n return `${app.env.baseUrl}/i18n/assets/${lang || i18n.lang}/`;\r\n }\r\n\r\n async provideI18nResource(app: LYBaseApp): Promise<ILanguageResources> {\r\n const { i18n } = app;\r\n const result: Partial<ILanguageResources> = {};\r\n for (const key of langKeys) {\r\n const lang = key as LYKeyofLang;\r\n const resource = await i18n.getUrlResource(\r\n `${app.env.baseUrl}/i18n/locale/${lang}.json`\r\n );\r\n result[lang] = resource;\r\n }\r\n return result as ILanguageResources;\r\n }\r\n}\r\n\r\n@register('LYBaseApp')\r\nexport class LYBaseApp extends LYObject {\r\n private static _apps: Record<string, LYBaseApp> = {};\r\n private static _headerProvider: IHeaderProvider;\r\n private static _initLock: boolean = false;\r\n\r\n static get apps() {\r\n return LYBaseApp._apps;\r\n }\r\n\r\n /**\r\n * 根据应用名称动态生成对应的类名\r\n * 例如: agent_system -> LYAgentSystemApp\r\n */\r\n private static getAppClassName(appName: string): string {\r\n // 将下划线转换为驼峰命名,然后添加前缀和后缀\r\n const camelCase = appName.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\r\n return `LY${camelCase.charAt(0).toUpperCase() + camelCase.slice(1)}App`;\r\n }\r\n\r\n static async init(config_url: string = CONFIG_URL): Promise<void> {\r\n if (this._initLock) {\r\n throw new LYError('Application initialization in progress');\r\n }\r\n this._initLock = true;\r\n try {\r\n if (Object.keys(LYBaseApp._apps).length === 0) {\r\n const config = await LYConfig.load(config_url);\r\n // // 测试使用\r\n // config.apps = [...config.apps, {\r\n // name: \"agentic_doc_processor\",\r\n // version: \"1.1.0\"\r\n // } as any]\r\n for (const app of config.apps) {\r\n if (app.name === TENANT_APP_NAME) {\r\n const Constructor = LYObject.getClass<LYTenantApp>('LYTenantApp');\r\n LYBaseApp._apps[app.name] = new Constructor(app.name, app.version, '');\r\n } else if (app.name === ORGANIZATION_APP_NAME) {\r\n const Constructor = LYObject.getClass<LYOrganizationApp>('LYOrganizationApp');\r\n LYBaseApp._apps[app.name] = new Constructor(\r\n app.name,\r\n app.version,\r\n ''\r\n );\r\n } else {\r\n // 尝试查找特定的应用类,例如 agent_system -> LYAgentSystemApp\r\n const specificAppClassName = this.getAppClassName(app.name);\r\n let Constructor;\r\n\r\n try {\r\n // 尝试获取特定的应用类\r\n Constructor = LYObject.getClass<LYApp>(specificAppClassName);\r\n } catch {\r\n // 如果找不到特定类,回退到默认的 LYApp 类\r\n Constructor = LYObject.getClass<LYApp>('LYApp');\r\n }\r\n\r\n LYBaseApp._apps[app.name] = new Constructor(app.name, app.version, '');\r\n }\r\n }\r\n }\r\n } finally {\r\n this._initLock = false;\r\n }\r\n }\r\n\r\n protected _name: string;\r\n protected _version: string;\r\n protected _description: string;\r\n protected _httpClient: LYAppHttpClient;\r\n protected _isLoaded: boolean = false;\r\n protected _i18n: LYi18n;\r\n protected _localStore: ILYStorageSync;\r\n protected _sessionStore: ILYStorageSync;\r\n protected _cloudStore: ILYStorage;\r\n protected _provider: ILYAppProvider;\r\n protected _env: LYEnv;\r\n protected _tenantName: string;\r\n protected _isLoadingComponent: boolean;\r\n protected _remoteComponents: { [name: string]: any };\r\n\r\n static getAll(): Record<string, LYBaseApp> {\r\n return this._apps;\r\n }\r\n\r\n static get<T extends LYBaseApp = LYBaseApp>(name: string): T {\r\n return this._apps[name] as T;\r\n }\r\n\r\n static setHeaderProvider(headerProvider: IHeaderProvider): void {\r\n LYBaseApp._headerProvider = headerProvider;\r\n }\r\n\r\n static getHeaderProvider(): IHeaderProvider {\r\n return LYBaseApp._headerProvider;\r\n }\r\n\r\n constructor(name: string, version: string, description: string) {\r\n super();\r\n this._name = name;\r\n this._version = version;\r\n this._description = description;\r\n this._i18n = new LYi18n(name);\r\n const prefix = `${this._name}.`;\r\n this._localStore = new LYLocalStorage(prefix);\r\n this._sessionStore = new LYSessionStorage(prefix);\r\n this._cloudStore = new LYCloudStorage(prefix);\r\n this._env = new LYEnv(this._name);\r\n this._env.baseUrl = this.getBaseUrl();\r\n this._httpClient = this._createHttpClient();\r\n }\r\n\r\n get location(): string {\r\n return this._name;\r\n }\r\n\r\n get name(): string {\r\n return this._name;\r\n }\r\n\r\n get tenantName(): string {\r\n return this._tenantName;\r\n }\r\n\r\n get version(): string {\r\n return this._version;\r\n }\r\n\r\n get description(): string {\r\n return this._description;\r\n }\r\n\r\n get httpClient(): LYAppHttpClient {\r\n return this._httpClient;\r\n }\r\n\r\n get permission(): LYAppPermission {\r\n const session = LYSession.get();\r\n if (!session) {\r\n throw new Error('session not found');\r\n }\r\n return session.permissions[this._name];\r\n }\r\n\r\n get provider(): ILYAppProvider {\r\n return this._provider || new LYDefaultAppProvider();\r\n }\r\n\r\n get i18n(): ILYi18n {\r\n return this._i18n;\r\n }\r\n\r\n get localStore() {\r\n return this._localStore;\r\n }\r\n\r\n get sessionStore() {\r\n return this._sessionStore;\r\n }\r\n\r\n get cloudStore() {\r\n return this._cloudStore;\r\n }\r\n\r\n get isLoaded() {\r\n return this._isLoaded;\r\n }\r\n\r\n get env() {\r\n return this._env;\r\n }\r\n\r\n protected _createHttpClient(): LYAppHttpClient {\r\n return new LYAppHttpClient(this._name, {\r\n get headers(): Record<string, string> | undefined {\r\n return LYBaseApp.getHeaderProvider().headers;\r\n },\r\n });\r\n }\r\n\r\n async load(): Promise<void> {\r\n if (this._isLoaded) {\r\n return;\r\n }\r\n this.logger.info(`start run ${this._name} app`);\r\n\r\n await this.doLoad();\r\n\r\n this._isLoaded = true;\r\n this.logger.info(`run ${this._name} app completed`);\r\n }\r\n\r\n private getBaseUrl(): string {\r\n const config = LYConfig.get();\r\n // 根据location.href拿到地址进行匹配\r\n const url = new URL(window.location.href);\r\n let baseUrl = \"\";\r\n\r\n for (const pattern of config.host_patterns) {\r\n // 如果没有占位符,走 startsWith 逻辑\r\n if (!pattern.includes(\"{tenant_name}\") && pattern.startsWith(url.origin)) {\r\n const parts = url.pathname.split('/');\r\n const index = parts.findIndex(part => part === 'view');\r\n let tenantName = parts[index + 2];\r\n if (!tenantName) throw new Error('tenantName not found');\r\n baseUrl = `${pattern}/view/${this.name}/${tenantName}`;\r\n this._tenantName = tenantName;\r\n return baseUrl;\r\n }\r\n\r\n\r\n // 把 {tenant_name} 替换成允许字母数字下划线和中横线的捕获组\r\n let filterhost = pattern\r\n .replace(/\\./g, \"\\\\.\") // 转义点\r\n .replace(\"{tenant_name}\", \"([a-zA-Z0-9_\\\\-]+)\");\r\n\r\n // 允许端口号(:数字)可选,允许后面有路径\r\n const reg = new RegExp(`^${filterhost}(?::\\\\d+)?(?:/.*)?$`);\r\n const matched = url.toString().match(reg);\r\n\r\n if (matched && matched[1]) {\r\n const tenantName = matched[1];\r\n const host = pattern.replace(\"{tenant_name}\", tenantName);\r\n baseUrl = `${host}/view/${this.name}`;\r\n this._tenantName = tenantName;\r\n return baseUrl;\r\n }\r\n }\r\n\r\n try {\r\n // 当 host_patterns 没有匹配时,尝试直接从当前 URL 解析\r\n const parts = url.pathname.split('/');\r\n const index = parts.findIndex(part => part === 'view');\r\n if (index === -1) throw new Error('view not found in URL');\r\n \r\n let tenantName = parts[index + 2];\r\n if (!tenantName) throw new Error('tenantName not found');\r\n \r\n baseUrl = `${window.origin}/view/${this.name}/${tenantName}`;\r\n this._tenantName = tenantName;\r\n return baseUrl;\r\n } catch (error) {\r\n console.error('Error getting base URL:', error);\r\n }\r\n\r\n // 最后的兜底方案\r\n return window.origin;\r\n }\r\n\r\n protected async doLoad(): Promise<void> {\r\n await this.initI18n();\r\n }\r\n\r\n private async initI18n() {\r\n try {\r\n const resources = await this.provider.provideI18nResource(this);\r\n await this._i18n.initialize();\r\n for (const key in resources) {\r\n this._i18n.loadResource(resources[key as LYKeyofLang] || {}, key as LYKeyofLang);\r\n }\r\n } catch (error) {\r\n this.logger.error('initI18n error');\r\n this.logger.error(error);\r\n }\r\n }\r\n\r\n getI18nResourceUrl(relativeUrl: string, lang?: LYKeyofLang): string {\r\n // todo: 需要优化,加上OEM的配置\r\n const baseUrl = this.provider.provideI18nResourcePath(this, lang) || '';\r\n // 使用URL构造函数来正确处理路径拼接\r\n try {\r\n const url = new URL(relativeUrl, baseUrl);\r\n return url.toString();\r\n } catch (error) {\r\n // 如果URL构造函数失败,回退到简单的字符串拼接\r\n return `${baseUrl}/${relativeUrl}`;\r\n }\r\n }\r\n\r\n async getComponent<T>(componentName: string): Promise<T> {\r\n if (this._remoteComponents) {\r\n return this._remoteComponents[componentName] as T;\r\n }\r\n await this.loadRemoteComponents();\r\n return this._remoteComponents[componentName] as T;\r\n }\r\n\r\n private async loadRemoteComponents() {\r\n const isLoaded = this._isLoadingComponent;\r\n while (this._isLoadingComponent) {\r\n await wait();\r\n }\r\n if (isLoaded) {\r\n return this._remoteComponents;\r\n }\r\n this._isLoadingComponent = true;\r\n try {\r\n registerRemotes([\r\n {\r\n name: this.name,\r\n entry: `${this.env.baseUrl}/mf-manifest.json`,\r\n },\r\n ]);\r\n\r\n const remoteModule = await loadRemote<LYAppRemoteModule<LYBaseApp, LYComponents>>(`${this.name}/Index`);\r\n this._remoteComponents = await remoteModule.default(this);\r\n } catch (error) {\r\n this._remoteComponents = {};\r\n this.logger.error(`loadRemoteComponents error:`, error);\r\n } finally {\r\n this._isLoadingComponent = false;\r\n }\r\n return this._remoteComponents;\r\n }\r\n}\r\n\r\n\r\n@register('LYBaseTenantApp')\r\nexport class LYBaseTenantApp extends LYBaseApp {\r\n protected override _createHttpClient(): LYTenantHttpClient {\r\n const lang = this._i18n.lang;\r\n return new LYTenantHttpClient(this.name, {\r\n get headers(): Record<string, string> | undefined {\r\n const session = LYSession.get();\r\n if (!session) {\r\n return undefined;\r\n }\r\n return {\r\n Authorization: `Bearer ${session.token}`,\r\n 'Accept-Language': lang,\r\n };\r\n },\r\n });\r\n }\r\n}\r\n","import type { LYBasicResultCode } from '../../../http/error';\r\nimport type { LYAppHttpClient, LYBaseResponse, LYCountResponse, LYResultResponse } from '../../../http';\r\n\r\nexport type LYSessionAddResultCode = LYBasicResultCode | 'user_locked';\r\n\r\nexport interface LYSessionResponse extends LYBaseResponse {\r\n id: string;\r\n access_token: string;\r\n token_type: string;\r\n user_id: string;\r\n user_name: string;\r\n expires_in: number;\r\n claims: Record<string, any>;\r\n permission_codes: Record<string, any>;\r\n is_first_login?: boolean;\r\n display_name: string;\r\n email: string;\r\n phone: string;\r\n country_code: string;\r\n}\r\n\r\nexport interface LYSessionPostRequest {\r\n name?: string;\r\n password?: string;\r\n email?: string;\r\n phone?: string;\r\n country_code?: string;\r\n account_type?: \"email\" | \"phone\";\r\n verification_code?: string;\r\n verification_code_id?: string;\r\n}\r\n\r\nexport type SSOConfig = {\r\n id: string;\r\n name: string;\r\n description: string;\r\n authentication_type: string;\r\n icon: string;\r\n auth_url: string;\r\n enabled: boolean;\r\n};\r\n\r\nexport interface LYLoginWays { \r\n allow_phone_login: boolean;\r\n allow_email_login: boolean;\r\n allow_username_login: boolean;\r\n sso_list: SSOConfig[];\r\n}\r\n\r\nexport class LYSessionApi {\r\n private _httpClient: LYAppHttpClient;\r\n\r\n constructor(httpClient: LYAppHttpClient) {\r\n this._httpClient = httpClient;\r\n }\r\n\r\n async create(request: LYSessionPostRequest): Promise<LYSessionResponse> {\r\n // 目前只有手机号和邮箱的登录,但是考虑到可能会有私有化部署,因此后端保留了这个name字段为必传。不然接口所有参数都是可选参数\r\n if (!request.name) {\r\n request = {\r\n ...request,\r\n name: \"\"\r\n } \r\n }\r\n const result = await this._httpClient.post<LYResultResponse<LYSessionResponse>, LYSessionPostRequest>(\r\n `/session`,\r\n request\r\n );\r\n return result.data;\r\n }\r\n\r\n async update(id: string): Promise<LYSessionResponse> {\r\n const response = await this._httpClient.post<LYResultResponse<LYSessionResponse>>(`/session/patch/${id}`);\r\n return response.data;\r\n }\r\n\r\n async delete(id: string): Promise<number> {\r\n const response = await this._httpClient.post<LYResultResponse<LYCountResponse>>(`/session/delete/${id}`);\r\n return response.data.count;\r\n }\r\n\r\n async getLoginWays(): Promise<LYLoginWays> {\r\n const response = await this._httpClient.get<LYResultResponse<LYLoginWays>>(`/loginways`);\r\n return response.data;\r\n }\r\n}\r\n","import type {\r\n LYRangeQueryParams,\r\n LYAppHttpClient,\r\n LYBaseResponse,\r\n LYListResponse,\r\n LYIdentifierResponse,\r\n LYCountResponse,\r\n LYResultResponse,\r\n} from '../../../http';\r\n\r\ntype LYSourceType = 'builtin' | 'web' | 'sso' | string;\r\n\r\ninterface LYUserQueryParams extends LYRangeQueryParams {\r\n name?: string;\r\n role_id?: string;\r\n email?: string;\r\n phone?: string;\r\n department_id?: string;\r\n manager_only?: boolean;\r\n}\r\n\r\ninterface LYAccountCheckRequest {\r\n email?: string;\r\n phone?: string;\r\n account_type?: \"email\" | \"phone\";\r\n country_code?: string;\r\n}\r\n\r\ninterface LYUserRegisterResonse extends LYBaseResponse {\r\n user_id: string;\r\n message: string;\r\n email_verified: boolean;\r\n phone_verified: boolean;\r\n}\r\n\r\ninterface LYUserResponse extends LYBaseResponse {\r\n id: string;\r\n name: string;\r\n role_id: string;\r\n source: LYSourceType;\r\n email: string;\r\n phone: string;\r\n is_super_admin: boolean;\r\n description: string;\r\n is_locked: boolean;\r\n locked_at: string;\r\n locked_by: string;\r\n login_failures: number;\r\n last_login_at: string;\r\n last_login_ip: string;\r\n last_login_location: string;\r\n last_login_device: string;\r\n last_login_browser: string;\r\n last_login_os: string;\r\n}\r\n\r\ninterface LYUserExist extends LYBaseResponse {\r\n exists: boolean;\r\n}\r\n\r\ninterface LYUserListResponse extends LYListResponse<LYUserResponse> {}\r\n\r\ninterface LYUserPostRequest {\r\n name: string;\r\n password: string;\r\n description?: string;\r\n role_id?: string;\r\n email?: string;\r\n phone?: string;\r\n}\r\n\r\ninterface LYUserPatchRequest {\r\n password?: string;\r\n description?: string;\r\n is_locked?: boolean;\r\n role_id?: string;\r\n email?: string;\r\n phone?: string;\r\n}\r\n\r\ninterface LYRegisterRequest {\r\n email?:string;\r\n phone?:string;\r\n country_code?: string;\r\n account_type: string;\r\n password: string;\r\n display_name?: string;\r\n}\r\n\r\ninterface LYResetPasswordRequest {\r\n account_type: \"email\" | \"phone\";\r\n verification_code_id: string;\r\n new_password: string;\r\n email?: string;\r\n country_code?: string;\r\n phone?: string;\r\n}\r\n\r\nexport class LYUserApi {\r\n private _httpClient: LYAppHttpClient;\r\n\r\n constructor(httpClient: LYAppHttpClient) {\r\n this._httpClient = httpClient;\r\n }\r\n\r\n async query(params: LYUserQueryParams): Promise<LYUserListResponse> {\r\n const response = await this._httpClient.get<LYResultResponse<LYUserListResponse>, LYUserQueryParams>(\r\n '/user',\r\n params\r\n );\r\n return response.data;\r\n }\r\n\r\n async get(name: string): Promise<LYUserResponse | undefined> {\r\n const response = await this._httpClient.get<LYResultResponse<LYUserResponse>>(`/user/${name}`);\r\n return response.data;\r\n }\r\n\r\n async add(user: LYUserPostRequest): Promise<string> {\r\n const response = await this._httpClient.post<LYResultResponse<LYIdentifierResponse>, LYUserPostRequest>(\r\n `/user`,\r\n {\r\n ...user,\r\n password: user.password\r\n }\r\n );\r\n return response.data.id;\r\n }\r\n\r\n async update(name: string, user: LYUserPatchRequest): Promise<number> {\r\n const response = await this._httpClient.post<LYResultResponse<LYCountResponse>, LYUserPatchRequest>(\r\n `/user/patch/${name}`,\r\n {\r\n ...user,\r\n password: user.password\r\n }\r\n );\r\n return response.data.count;\r\n }\r\n\r\n async remove(name: string): Promise<number> {\r\n const response = await this._httpClient.post<LYResultResponse<LYCountResponse>>(`/user/delete/${name}`);\r\n return response.data.count;\r\n }\r\n\r\n async accountCheck(request: LYAccountCheckRequest): Promise<boolean> {\r\n const response = await this._httpClient.post<LYResultResponse<LYUserExist>>(`/user/account-check`, {\r\n ...request\r\n });\r\n return response.data.exists;\r\n }\r\n\r\n async register(request: LYRegisterRequest) {\r\n const response = await this._httpClient.post<LYResultResponse<LYUserRegisterResonse>>(`/user/registration`, {\r\n ...request\r\n });\r\n return response.data;\r\n }\r\n\r\n async userNameCheck(name: string): Promise<boolean> {\r\n const response = await this._httpClient.get<LYResultResponse<{available:boolean}>>(`/user/username-check/${name}`);\r\n return response.data.available;\r\n }\r\n\r\n // 只用作私有部署环境需要修改密码\r\n async changePassword(currentPassword:string, newPassword:string) {\r\n const response = await this._httpClient.post<LYResultResponse<{message:string}>>(`/user/password/change`, {\r\n current_password: currentPassword,\r\n new_password: newPassword\r\n });\r\n return response.data;\r\n }\r\n\r\n async resetPassword(request:LYResetPasswordRequest) {\r\n const response = await this._httpClient.post<LYResultResponse<{message:string}>>(`/user/password`, {\r\n ...request\r\n });\r\n return response.data;\r\n }\r\n}\r\n","import { LYObject, type LYEvents } from '../../../object';\r\nimport { LYBaseApp } from '../../base';\r\nimport { SSOConfig } from '../api/session';\r\n\r\nexport const ORGANIZATION_APP_NAME = 'organization';\r\n\r\nexport type LYAuthorizerStatus = 'signed-in' | 'signed-out';\r\n\r\ntype LYAuthorizerEvents = {\r\n 'status-change': (status: LYAuthorizerStatus) => void;\r\n};\r\n\r\nexport interface LYSigninArgs {\r\n redirect_uri: string;\r\n sso_config?: SSOConfig; // 可选的 SSO 配置\r\n}\r\n\r\nexport interface LYSignoutArgs {\r\n redirect_uri?: string;\r\n}\r\n\r\nexport interface ILYAuthorizer<TSigninArgs extends LYSigninArgs = LYSigninArgs, TSignoutArgs extends LYSignoutArgs = LYSignoutArgs> {\r\n on: LYEvents<LYAuthorizerEvents>['on'];\r\n off: LYEvents<LYAuthorizerEvents>['on'];\r\n once: LYEvents<LYAuthorizerEvents>['on'];\r\n emit: LYEvents<LYAuthorizerEvents>['emit'];\r\n signin: (args: TSigninArgs) => Promise<void>;\r\n signout: (args: TSignoutArgs) => Promise<void>;\r\n}\r\n\r\nexport abstract class LYBaseAuthorizer<TSigninArgs extends LYSigninArgs = LYSigninArgs, TSignoutArgs extends LYSignoutArgs = LYSignoutArgs>\r\n extends LYObject\r\n implements ILYAuthorizer<TSigninArgs, TSignoutArgs>\r\n{\r\n private _app: LYBaseApp;\r\n private _name: string;\r\n\r\n constructor(app: LYBaseApp, name: string) {\r\n super();\r\n this._app = app;\r\n this._name = name;\r\n }\r\n\r\n get app(): LYBaseApp {\r\n return this._app;\r\n }\r\n\r\n get name(): string {\r\n return this._name;\r\n }\r\n\r\n async signin(args: TSigninArgs): Promise<void> {\r\n await this._signin(args);\r\n this.emit('status-change', 'signed-in');\r\n if (args.redirect_uri) {\r\n setTimeout(() => {\r\n window.location.href = args.redirect_uri;\r\n }, 0);\r\n }\r\n }\r\n\r\n async signout(args: TSignoutArgs): Promise<void> {\r\n await this._signout(args);\r\n this.emit('status-change', 'signed-out');\r\n setTimeout(() => {\r\n const baseUrl = new URL(this.app.env.baseUrl);\r\n baseUrl.searchParams.set('returnUrl', encodeURIComponent(args.redirect_uri || window.location.href));\r\n window.location.href = baseUrl.toString();\r\n }, 0);\r\n }\r\n\r\n protected abstract _signin(args: TSigninArgs): Promise<void>;\r\n\r\n protected abstract _signout(args: TSignoutArgs): Promise<void>;\r\n}\r\n","import { register } from '../../../object';\r\nimport { LYSession } from '../../../session';\r\nimport type { LYBaseApp } from '../../base';\r\nimport { LYBaseAuthorizer, type LYSigninArgs, type LYSignoutArgs } from './base';\r\nimport type { LYSessionApi } from '../api/session';\r\n\r\nexport interface LYWebSigninArgs extends LYSigninArgs {\r\n name?: string;\r\n password?: string;\r\n email?: string;\r\n phone?: string;\r\n country_code?: string;\r\n account_type?: \"email\" | \"phone\";\r\n verification_code?: string;\r\n verification_code_id?: string;\r\n}\r\n\r\nexport interface LYWebSignoutArgs extends LYSignoutArgs {}\r\n\r\n@register('LYWebAuthorizer')\r\nexport class LYWebAuthorizer extends LYBaseAuthorizer<LYWebSigninArgs, LYWebSignoutArgs> {\r\n private _sessionApi: LYSessionApi;\r\n\r\n constructor(app: LYBaseApp, name: string, sessionApi: LYSessionApi) {\r\n super(app, name);\r\n this._sessionApi = sessionApi;\r\n \r\n // 设置session刷新回调\r\n LYSession.setRefreshCallback(this._refreshSession.bind(this));\r\n }\r\n\r\n override async _signin(args: LYWebSigninArgs): Promise<void> {\r\n const response = await this._sessionApi.create({\r\n name: args.name,\r\n password: args.password,\r\n email: args.email,\r\n phone: args.phone,\r\n country_code: args.country_code,\r\n account_type: args.account_type,\r\n verification_code: args.verification_code,\r\n verification_code_id: args.verification_code_id\r\n });\r\n LYSession.create(\r\n 'web',\r\n '',\r\n response.id,\r\n response.access_token,\r\n response.user_id,\r\n response.user_name,\r\n response.expires_in,\r\n response.permission_codes,\r\n response.is_first_login,\r\n response.display_name,\r\n response.email,\r\n response.phone,\r\n response.country_code\r\n );\r\n }\r\n\r\n override async _signout(args: LYWebSignoutArgs): Promise<void> {\r\n const session = LYSession.get();\r\n if (!session) {\r\n throw new Error('Session not found');\r\n }\r\n const count = await this._sessionApi.delete(session.id);\r\n if (count === 0) {\r\n throw new Error('Session not found');\r\n }\r\n LYSession.clear();\r\n }\r\n\r\n /**\r\n * 刷新session\r\n */\r\n private async _refreshSession(session: LYSession): Promise<void> {\r\n const response = await this._sessionApi.update(session.id);\r\n LYSession.update(\r\n response.id,\r\n response.access_token,\r\n response.user_id,\r\n response.user_name,\r\n response.expires_in,\r\n response.permission_codes\r\n );\r\n }\r\n}\r\n","import { register } from '../../../object';\r\nimport {\r\n ORGANIZATION_APP_NAME,\r\n LYBaseAuthorizer,\r\n type LYSigninArgs,\r\n type LYSignoutArgs,\r\n} from './base';\r\nimport { LYBaseApp } from '../../base';\r\nimport { LYSession } from '../../../session';\r\nimport type { LYCountResponse } from '../../../http';\r\nimport type { LYSessionResponse } from '../api/session';\r\n\r\n@register('LYGatewayAuthorizer')\r\nexport class LYGatewayAuthorizer extends LYBaseAuthorizer {\r\n override async _signin(args: LYSigninArgs): Promise<void> {\r\n const app = LYBaseApp.get(ORGANIZATION_APP_NAME);\r\n const response = await app.httpClient.post<LYSessionResponse>('sso/gateway/session');\r\n LYSession.create(\r\n 'gateway',\r\n '',\r\n response.id,\r\n response.access_token,\r\n response.user_id,\r\n response.user_name,\r\n response.expires_in,\r\n response.permission_codes\r\n );\r\n }\r\n\r\n override async _signout(args: LYSignoutArgs): Promise<void> {\r\n const session = LYSession.get();\r\n if (!session) {\r\n throw new Error('Session not found');\r\n }\r\n const app = LYBaseApp.get(ORGANIZATION_APP_NAME);\r\n const response = await app.httpClient.post<LYCountResponse>(\r\n `sso/gateway/session/delete/${session.id}`\r\n );\r\n if (response.count === 0) {\r\n throw new Error('Session not found');\r\n }\r\n LYSession.clear();\r\n }\r\n}\r\n","import { register } from '../../../object';\r\nimport {\r\n ORGANIZATION_APP_NAME,\r\n LYBaseAuthorizer,\r\n type LYSigninArgs,\r\n type LYSignoutArgs,\r\n} from './base';\r\nimport { LYBaseApp } from '../../base';\r\nimport { LYSession } from '../../../session';\r\nimport type { LYCountResponse } from '../../../http';\r\nimport type { LYSessionResponse } from '../api/session';\r\n\r\ninterface LYDirectSigninArgs extends LYSigninArgs {\r\n authentication_name: string;\r\n user_name: string;\r\n password: string;\r\n}\r\n\r\ninterface LYDirectSessionPostRequest {\r\n authentication_name: string;\r\n user_name: string;\r\n password: string;\r\n}\r\n\r\ninterface LYDirectSessionDeleteRequest {\r\n authentication_name: string;\r\n}\r\n\r\n@register('LYDirectAuthorizer')\r\nexport class LYDirectAuthorizer extends LYBaseAuthorizer {\r\n override async _signin(args: LYDirectSigninArgs): Promise<void> {\r\n const app = LYBaseApp.get(ORGANIZATION_APP_NAME);\r\n const response = await app.httpClient.post<LYSessionResponse, LYDirectSessionPostRequest>(\r\n 'sso/direct/session',\r\n {\r\n authentication_name: args.authentication_name,\r\n user_name: args.user_name,\r\n password: args.password,\r\n }\r\n );\r\n LYSession.create(\r\n 'direct',\r\n args.authentication_name,\r\n response.id,\r\n response.access_token,\r\n response.user_id,\r\n response.user_name,\r\n response.expires_in,\r\n response.permission_codes\r\n );\r\n }\r\n\r\n override async _signout(args: LYSignoutArgs): Promise<void> {\r\n const session = LYSession.get();\r\n if (!session) {\r\n throw new Error('Session not found');\r\n }\r\n const app = LYBaseApp.get(ORGANIZATION_APP_NAME);\r\n const response = await app.httpClient.post<LYCountResponse, LYDirectSessionDeleteRequest>(\r\n `sso/direct/session/delete/${session.id}`,\r\n {\r\n authentication_name: session.authentication_name,\r\n }\r\n );\r\n if (response.count === 0) {\r\n throw new Error('Session not found');\r\n }\r\n LYSession.clear();\r\n }\r\n}\r\n","import { register } from '../../../object';\r\nimport {\r\n ORGANIZATION_APP_NAME,\r\n LYBaseAuthorizer,\r\n type LYSigninArgs,LYSignoutArgs,\r\n} from './base';\r\nimport { LYBaseApp } from '../../base';\r\nimport { LYSession } from '../../../session';\r\nimport { sharedLocalStorage } from '../../../storage';\r\nimport type { LYSessionResponse, SSOConfig } from '../api/session';\r\nimport sha256 from \"js-sha256\";\r\n\r\n// SSO 重定向信息类型\r\ninterface LYRedirectInfo {\r\n authentication_name: string;\r\n redirect_uri: string;\r\n expires_at: Date;\r\n code_verifier: string;\r\n state: string;\r\n sso_config: SSOConfig;\r\n}\r\n\r\n// 存储键名和过期时间常量\r\nconst REDIRECT_STORAGE_KEY = 'sso_redirect_info';\r\nconst REDIRECT_STORAGE_EXPIRES_IN = 10 * 60 * 1000; // 10分钟\r\n\r\n// PKCE 工具类\r\nclass PKCEUtils {\r\n static generateCodeVerifier(): string {\r\n const array = new Uint8Array(32);\r\n crypto.getRandomValues(array);\r\n return btoa(String.fromCharCode.apply(null, Array.from(array)))\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n }\r\n\r\n static async generateCodeChallenge(codeVerifier: string): Promise<string> {\r\n const encoder = new TextEncoder();\r\n const data = encoder.encode(codeVerifier);\r\n let digest:ArrayBuffer;\r\n if (crypto.subtle) {\r\n digest = await crypto.subtle.digest('SHA-256', data);\r\n } else {\r\n digest = sha256.sha256.arrayBuffer(data);\r\n }\r\n return btoa(String.fromCharCode.apply(null, Array.from(new Uint8Array(digest))))\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n }\r\n\r\n static generateState(): string {\r\n const array = new Uint8Array(16);\r\n crypto.getRandomValues(array);\r\n return btoa(String.fromCharCode.apply(null, Array.from(array)))\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n }\r\n}\r\n\r\nexport interface LYRedirectSessionPostRequest {\r\n authentication_name: string;\r\n query_params: {\r\n code: string;\r\n code_verifier: string;\r\n redirect_uri: string;\r\n state: string;\r\n };\r\n}\r\n\r\n@register('LYRedirectAuthorizer')\r\nexport class LYRedirectAuthorizer extends LYBaseAuthorizer {\r\n async _signin(args: LYSigninArgs): Promise<void> {\r\n // 先检查是否是 SSO 回调\r\n const redirectInfo = sharedLocalStorage.getSync<LYRedirectInfo>(REDIRECT_STORAGE_KEY);\r\n if (redirectInfo) {\r\n if (redirectInfo.expires_at < new Date()) {\r\n sharedLocalStorage.removeSync(REDIRECT_STORAGE_KEY);\r\n } else {\r\n const queryParams = this._getQueryParams();\r\n const code = queryParams.code;\r\n const state = queryParams.state;\r\n // 跟随登录页面的设置语言进行切换\r\n const locale = queryParams.ui_locales as (\"zh-CN\" | \"en-US\");\r\n\r\n if (code && state) {\r\n // 验证 state 参数\r\n if (state !== redirectInfo.state) {\r\n throw new Error('Invalid state parameter');\r\n }\r\n\r\n const app = LYBaseApp.get(ORGANIZATION_APP_NAME);\r\n if (locale) {\r\n await app.i18n.changeLanguage(locale);\r\n }\r\n try {\r\n const response = await app.httpClient.post<{data:LYSessionResponse}, LYRedirectSessionPostRequest>(\r\n 'sso/redirect/session',\r\n {\r\n authentication_name: redirectInfo.authentication_name,\r\n query_params: {\r\n code: code,\r\n code_verifier: redirectInfo.code_verifier,\r\n redirect_uri: redirectInfo.redirect_uri,\r\n state: redirectInfo.state\r\n }\r\n }\r\n );\r\n\r\n // 检查响应是否有效\r\n if (!response || !response.data.access_token) {\r\n throw new Error('Invalid SSO response: missing access token');\r\n }\r\n\r\n LYSession.create(\r\n 'redirect',\r\n redirectInfo.authentication_name,\r\n response.data.id,\r\n response.data.access_token,\r\n response.data.user_id,\r\n response.data.user_name,\r\n response.data.expires_in,\r\n response.data.permission_codes,\r\n response.data.is_first_login,\r\n response.data.display_name,\r\n response.data.email,\r\n response.data.phone,\r\n response.data.country_code\r\n );\r\n\r\n this.emit('status-change', 'signed-in');\r\n sharedLocalStorage.removeSync(REDIRECT_STORAGE_KEY);\r\n // 跳转到目标页面\r\n setTimeout(() => {\r\n window.location.href = redirectInfo.redirect_uri;\r\n }, 0);\r\n return;\r\n } catch (error) {\r\n // SSO 登录失败,记录错误并重新跳转到 SSO 登录页面\r\n console.error('SSO login failed:', error);\r\n\r\n // 清除过期的重定向信息\r\n sharedLocalStorage.removeSync(REDIRECT_STORAGE_KEY);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 如果不是 SSO 回调,则启动 SSO 登录流程\r\n if (args.sso_config) {\r\n // 使用传入的 SSO 配置\r\n await this._jumpToSSO(args.sso_config, args.redirect_uri);\r\n } else {\r\n throw new Error('SSO configuration not provided');\r\n }\r\n }\r\n\r\n override signin(args: LYSigninArgs): Promise<void> {\r\n return this._signin(args);\r\n }\r\n\r\n private async _jumpToSSO(ssoConfig: any, redirectUri: string) {\r\n // 生成 PKCE 参数\r\n const codeVerifier = PKCEUtils.generateCodeVerifier()\r\n const codeChallenge = await PKCEUtils.generateCodeChallenge(codeVerifier);\r\n const state = PKCEUtils.generateState();\r\n\r\n // 使用标准的 URL 方式处理\r\n const ssoUrl = new URL(ssoConfig.auth_url);\r\n ssoUrl.searchParams.set('code_challenge', codeChallenge);\r\n ssoUrl.searchParams.set('code_challenge_method', 'S256');\r\n ssoUrl.searchParams.set('state', state);\r\n\r\n // 存储跳转信息\r\n sharedLocalStorage.setSync(REDIRECT_STORAGE_KEY, {\r\n authentication_name: ssoConfig.name,\r\n redirect_uri: redirectUri,\r\n expires_at: new Date(Date.now() + REDIRECT_STORAGE_EXPIRES_IN),\r\n code_verifier: codeVerifier,\r\n state: state,\r\n sso_config: ssoConfig\r\n });\r\n\r\n // 跳转到 SSO 登录页面\r\n setTimeout(() => {\r\n window.location.href = ssoUrl.toString();\r\n }, 0);\r\n }\r\n\r\n private _getQueryParams(): Record<string, string> {\r\n const params: Record<string, string> = {};\r\n const urlParams = new URLSearchParams(window.location.search);\r\n urlParams.forEach((value, key) => {\r\n params[key] = value;\r\n });\r\n return params;\r\n }\r\n\r\n override async signout(args?: LYSignoutArgs): Promise<void> {\r\n await this._signout();\r\n }\r\n\r\n async _signout(): Promise<void> {\r\n const session = LYSession.get();\r\n if (!session) {\r\n throw new Error('Session not found');\r\n }\r\n const app = LYBaseApp.get(ORGANIZATION_APP_NAME);\r\n const response = await app.httpClient.post<{data:{count: number, logout_url?:string}}, any>(\r\n `sso/redirect/session/delete/${session.id}`,\r\n {\r\n authentication_name: session.authentication_name,\r\n }\r\n );\r\n if (response.data.count === 0) {\r\n throw new Error('Session not found');\r\n }\r\n LYSession.clear();\r\n if (response.data.logout_url) {\r\n this.emit('status-change', 'signed-out');\r\n window.location.href = response.data.logout_url;\r\n }\r\n }\r\n}","import type { LYBasicResultCode } from '../../../http/error';\r\nimport type {\r\n LYAppHttpClient,\r\n LYBaseResponse,\r\n LYListResponse,\r\n LYIdentifierResponse,\r\n LYCountResponse,\r\n LYResultResponse,\r\n} from '../../../http';\r\n\r\nexport type LYLicenseResultCode = LYBasicResultCode | 'not_match';\r\n\r\ninterface LYLicenseFileResponse extends LYBaseResponse {\r\n id: string;\r\n file_name: string;\r\n}\r\n\r\ninterface LYLicenseContentResponse extends LYBaseResponse {\r\n signature: string;\r\n id: string;\r\n app_name: string;\r\n app_version: string;\r\n name: string;\r\n activation_at: string;\r\n expiration_at: string;\r\n usage_period: number;\r\n quantity: number;\r\n counter: number;\r\n}\r\n\r\ninterface LYLicenseFileContentResponse extends LYBaseResponse {\r\n id: string;\r\n file_name: string;\r\n customer: string;\r\n env_code: string;\r\n items: LYLicenseContentResponse[];\r\n}\r\n\r\ninterface LYLicensePostRequest {\r\n content: string;\r\n}\r\n\r\ninterface LYLicenseTokenResponse extends LYBaseResponse {\r\n id: string;\r\n license_id: string;\r\n ordinal: number;\r\n acquire_id: string;\r\n expire_at: string;\r\n message: string;\r\n}\r\n\r\ninterface LYLicenseLogResponse extends LYBaseResponse {\r\n id: string;\r\n action: string;\r\n failed: boolean;\r\n message: string;\r\n inner_message: string;\r\n license_id: string;\r\n license_token_id: string;\r\n}\r\n\r\nexport class LYLicenseApi {\r\n private _httpClient: LYAppHttpClient;\r\n\r\n constructor(httpClient: LYAppHttpClient) {\r\n this._httpClient = httpClient;\r\n }\r\n\r\n async queryFiles(): Promise<LYListResponse<LYLicenseFileResponse>> {\r\n const response = await this._httpClient.get<LYResultResponse<LYListResponse<LYLicenseFileResponse>>>(`/license/file`);\r\n return response.data;\r\n }\r\n\r\n async getFileContent(id: string): Promise<LYLicenseFileContentResponse | undefined> {\r\n const response = await this._httpClient.get<LYResultResponse<LYLicenseFileContentResponse>>(\r\n `/license/file/content/${id}`\r\n );\r\n return response.data;\r\n }\r\n\r\n async add(license: LYLicensePostRequest): Promise<string> {\r\n const response = await this._httpClient.post<LYResultResponse<LYIdentifierResponse>, LYLicensePostRequest>(\r\n `/license`,\r\n license\r\n );\r\n return response.data.id;\r\n }\r\n\r\n async getAll(): Promise<LYListResponse<LYLicenseContentResponse>> {\r\n const response = await this._httpClient.get<LYResultResponse<LYListResponse<LYLicenseContentResponse>>>(`/license`);\r\n return response.data;\r\n }\r\n\r\n async get(id: string): Promise<LYLicenseContentResponse | undefined> {\r\n const response = await this._httpClient.get<LYResultResponse<LYLicenseContentResponse>>(`/license/${id}`);\r\n return response.data;\r\n }\r\n\r\n async remove(id: string): Promise<number> {\r\n const response = await this._httpClient.post<LYResultResponse<LYCountResponse>>(`/license/delete/${id}`);\r\n return response.data.count;\r\n }\r\n\r\n async getTokens(): Promise<LYListResponse<LYLicenseTokenResponse>> {\r\n const response = await this._httpClient.get<LYResultResponse<LYListResponse<LYLicenseTokenResponse>>>(`/license/token`);\r\n return response.data;\r\n }\r\n\r\n async getToken(id: string): Promise<LYLicenseTokenResponse | undefined> {\r\n const response = await this._httpClient.get<LYResultResponse<LYLicenseTokenResponse>>(`/license/token/${id}`);\r\n return response.data;\r\n }\r\n\r\n async getLogs(\r\n licenseId: string,\r\n tokenId?: string\r\n ): Promise<LYListResponse<LYLicenseLogResponse>> {\r\n const response = await this._httpClient.get<LYResultResponse<LYListResponse<LYLicenseLogResponse>>>(`/license/log`, {\r\n license_id: licenseId,\r\n token_id: tokenId,\r\n });\r\n return response.data;\r\n }\r\n}\r\n","import { LYCryptoType } from \"src/config/crypto\";\r\n\r\nexport abstract class LYBaseCrypto {\r\n abstract getSymmetricBlockSize(iv: Uint8Array, key: Uint8Array): number;\r\n abstract getAsymmetricBlockSize(publicKey: Uint8Array): number;\r\n abstract encryptSymmetric(data: Uint8Array, iv: Uint8Array, key: Uint8Array): Uint8Array;\r\n abstract decryptSymmetric(data: Uint8Array, iv: Uint8Array, key: Uint8Array): Uint8Array;\r\n abstract signature(data: Uint8Array, privateKey: Uint8Array): string;\r\n abstract verify(data: Uint8Array, publicKey: Uint8Array, signature: string): boolean;\r\n abstract encryptAsymmetric(data: Uint8Array, publicKey: Uint8Array): Uint8Array;\r\n abstract decryptAsymmetric(data: Uint8Array, privateKey: Uint8Array): Uint8Array;\r\n abstract hash(data: Uint8Array, key?: Uint8Array): Uint8Array;\r\n}\r\n\r\nexport function registerCryptoImpl(name: LYCryptoType) {\r\n return function decorator<T extends new () => LYBaseCrypto>(impl: T): T {\r\n if (cryptoImpl[name]) {\r\n throw new Error(`Crypto implementation for ${name} already registered`);\r\n }\r\n cryptoImpl[name] = impl;\r\n return impl;\r\n }\r\n}\r\n\r\nexport const cryptoImpl: Record<LYCryptoType, new () => LYBaseCrypto | undefined> = {\r\n default: undefined,\r\n sm: undefined,\r\n gm: undefined\r\n};\r\n","import { LYBaseCrypto, registerCryptoImpl } from \"./base\";\nimport { sm2, sm3, sm4 } from 'sm-crypto';\nimport { LYCryptoError } from \"../error\";\n\n@registerCryptoImpl(\"sm\")\nexport class LYSMCrypto extends LYBaseCrypto {\n private _paddingIv(iv: Uint8Array): Uint8Array {\n if (iv.length < 16) {\n const padded = new Uint8Array(16);\n padded.set(iv);\n return padded;\n }\n return iv.slice(0, 16);\n }\n\n private _uint8ArrayToHex(array: Uint8Array): string {\n return Array.from(array).map(b => b.toString(16).padStart(2, '0')).join('');\n }\n\n private _hexToUint8Array(hex: string): Uint8Array {\n if (hex.length % 2 !== 0) {\n throw new LYCryptoError('Invalid hex string length');\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n result[i / 2] = parseInt(hex.substring(i, i + 2), 16);\n }\n return result;\n }\n\n private _validateKey(key: Uint8Array, expectedLength: number, keyType: string): void {\n if (key.length !== expectedLength) {\n throw new LYCryptoError(`Invalid ${keyType} key length: expected ${expectedLength}, got ${key.length}`);\n }\n }\n \n private _validatePublicKey(key: Uint8Array): void {\n if (key.length !== 64 && key.length !== 65) {\n throw new LYCryptoError(`Invalid SM2 public key length: expected 64 or 65, got ${key.length}`);\n }\n }\n\n getSymmetricBlockSize(iv: Uint8Array, key: Uint8Array): number {\n return 16;\n }\n\n getAsymmetricBlockSize(publicKey: Uint8Array): number {\n return 16;\n }\n\n encryptSymmetric(data: Uint8Array, iv: Uint8Array, key: Uint8Array): Uint8Array {\n try {\n // 验证密钥长度\n this._validateKey(key, 16, 'SM4');\n \n const paddedIv = this._paddingIv(iv);\n const keyHex = this._uint8ArrayToHex(key);\n const ivHex = this._uint8ArrayToHex(paddedIv);\n const dataHex = this._uint8ArrayToHex(data);\n \n const encrypted = sm4.encrypt(dataHex, keyHex, { iv: ivHex, mode: 'cbc', padding: 'pkcs#7' });\n if (!encrypted) {\n throw new LYCryptoError('SM4 encryption failed');\n }\n \n return this._hexToUint8Array(encrypted);\n } catch (error) {\n if (error instanceof LYCryptoError) {\n throw error;\n }\n throw new LYCryptoError(`SM4 encryption error: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n decryptSymmetric(data: Uint8Array, iv: Uint8Array, key: Uint8Array): Uint8Array {\n try {\n // 验证密钥长度\n this._validateKey(key, 16, 'SM4');\n \n const paddedIv = this._paddingIv(iv);\n const keyHex = this._uint8ArrayToHex(key);\n const ivHex = this._uint8ArrayToHex(paddedIv);\n const dataHex = this._uint8ArrayToHex(data);\n \n const decrypted = sm4.decrypt(dataHex, keyHex, { iv: ivHex, mode: 'cbc', padding: 'pkcs#7' });\n if (!decrypted) {\n throw new LYCryptoError('SM4 decryption failed');\n }\n \n return this._hexToUint8Array(decrypted);\n } catch (error) {\n if (error instanceof LYCryptoError) {\n throw error;\n }\n throw new LYCryptoError(`SM4 decryption error: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n signature(data: Uint8Array, privateKey: Uint8Array): string {\n try {\n // 验证私钥长度(SM2私钥通常是32字节)\n this._validateKey(privateKey, 32, 'SM2 private');\n \n const dataHex = this._uint8ArrayToHex(data);\n const privateKeyHex = this._uint8ArrayToHex(privateKey);\n \n const signature = sm2.doSignature(dataHex, privateKeyHex);\n if (!signature) {\n throw new LYCryptoError('SM2 signature failed');\n }\n \n return signature;\n } catch (error) {\n if (error instanceof LYCryptoError) {\n throw error;\n }\n throw new LYCryptoError(`SM2 signature error: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n verify(data: Uint8Array, publicKey: Uint8Array, signature: string): boolean {\n try {\n this._validatePublicKey(publicKey);\n \n const dataHex = this._uint8ArrayToHex(data);\n const publicKeyHex = this._uint8ArrayToHex(publicKey);\n \n return sm2.doVerifySignature(dataHex, signature, publicKeyHex);\n } catch (error) {\n if (error instanceof LYCryptoError) {\n throw error;\n }\n throw new LYCryptoError(`SM2 verify error: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n encryptAsymmetric(data: Uint8Array, publicKey: Uint8Array): Uint8Array {\n try {\n this._validatePublicKey(publicKey);\n \n const dataHex = this._uint8ArrayToHex(data);\n const publicKeyHex = this._uint8ArrayToHex(publicKey);\n \n const encrypted = sm2.doEncrypt(dataHex, publicKeyHex);\n if (!encrypted) {\n throw new LYCryptoError('SM2 encryption failed');\n }\n \n return this._hexToUint8Array(encrypted);\n } catch (error) {\n if (error instanceof LYCryptoError) {\n throw error;\n }\n throw new LYCryptoError(`SM2 encryption error: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n decryptAsymmetric(data: Uint8Array, privateKey: Uint8Array): Uint8Array {\n try {\n // 验证私钥长度\n this._validateKey(privateKey, 32, 'SM2 private');\n \n const dataHex = this._uint8ArrayToHex(data);\n const privateKeyHex = this._uint8ArrayToHex(privateKey);\n \n const decrypted = sm2.doDecrypt(dataHex, privateKeyHex);\n if (!decrypted) {\n throw new LYCryptoError('SM2 decryption failed');\n }\n \n return this._hexToUint8Array(decrypted);\n } catch (error) {\n if (error instanceof LYCryptoError) {\n throw error;\n }\n throw new LYCryptoError(`SM2 decryption error: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n hash(data: Uint8Array, key?: Uint8Array): Uint8Array {\n try {\n if (key) {\n // HMAC with SM3\n const hmacResult = sm3(data, { key, mode: 'hmac' });\n if (!hmacResult) {\n throw new LYCryptoError('SM3 HMAC failed');\n }\n return this._hexToUint8Array(hmacResult);\n } else {\n // Simple SM3 hash\n const hashResult = sm3(data);\n if (!hashResult) {\n throw new LYCryptoError('SM3 hash failed');\n }\n return this._hexToUint8Array(hashResult);\n }\n } catch (error) {\n if (error instanceof LYCryptoError) {\n throw error;\n }\n throw new LYCryptoError(`SM3 hash error: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n}\n","import { registerCryptoImpl } from \"./base\";\nimport { LYSMCrypto } from \"./sm\";\n\n@registerCryptoImpl(\"gm\")\nexport class LYGMCrypto extends LYSMCrypto {\n // GM algorithm implementation - for now use SM as base implementation\n // TODO: Implement proper GM crypto algorithm with gm-crypto library\n}\n","import { LYObject, register } from \"../object\";\r\nimport { LYBaseCrypto, cryptoImpl } from \"./base\";\r\nimport { LYCryptoConfig } from \"../config/crypto\";\r\nimport \"./sm\";\r\nimport \"./gm\";\r\nimport { LYCryptoError } from \"../error\";\r\n\r\nconst LENGTH_SIZE = 2;\r\n\r\n@register('LYCrypto')\r\nexport class LYCrypto extends LYObject {\r\n private _impl?: LYBaseCrypto;\r\n private _encryptPublicKey?: Uint8Array;\r\n private _decryptPrivateKey?: Uint8Array;\r\n private _signaturePrivateKey?: Uint8Array;\r\n private _verifyPublicKey?: Uint8Array;\r\n private _ivGetter: () => Uint8Array;\r\n private _keyGetter: () => Uint8Array;\r\n\r\n constructor() {\r\n super();\r\n // 设置默认的IV和Key获取函数\r\n this._ivGetter = () => new Uint8Array(16); // 默认16字节零向量\r\n this._keyGetter = () => new Uint8Array(16); // 默认16字节零密钥\r\n }\r\n\r\n get impl(): LYBaseCrypto {\r\n if (!this._impl) {\r\n this._createImpl();\r\n }\r\n if (!this._impl) {\r\n throw new LYCryptoError('Crypto implementation not available');\r\n }\r\n return this._impl;\r\n }\r\n\r\n private _createImpl(): void {\r\n try {\r\n const config = this._getCryptoConfig();\r\n const implClass = cryptoImpl[config.type];\r\n \r\n if (!implClass) {\r\n throw new LYCryptoError(`Crypto implementation ${config.type} not found`);\r\n }\r\n \r\n this._impl = new implClass();\r\n } catch (error) {\r\n throw new LYCryptoError(`Failed to create crypto implementation: ${error instanceof Error ? error.message : String(error)}`);\r\n }\r\n }\r\n\r\n private _getCryptoConfig(): LYCryptoConfig {\r\n // 简化的配置获取,实际应该从配置系统获取\r\n const config = new LYCryptoConfig();\r\n config.type = 'sm'; // 默认使用SM算法\r\n return config;\r\n }\r\n\r\n private _uint8ArrayToHex(array: Uint8Array): string {\r\n return Array.from(array).map(b => b.toString(16).padStart(2, '0')).join('');\r\n }\r\n\r\n private _hexToUint8Array(hex: string): Uint8Array {\r\n if (hex.length % 2 !== 0) {\r\n throw new LYCryptoError('Invalid hex string length');\r\n }\r\n const result = new Uint8Array(hex.length / 2);\r\n for (let i = 0; i < hex.length; i += 2) {\r\n result[i / 2] = parseInt(hex.substring(i, i + 2), 16);\r\n }\r\n return result;\r\n }\r\n\r\n private _stringToUint8Array(str: string): Uint8Array {\r\n return new TextEncoder().encode(str);\r\n }\r\n\r\n private _uint8ArrayToString(array: Uint8Array): string {\r\n return new TextDecoder().decode(array);\r\n }\r\n\r\n private _base64ToUint8Array(base64: string): Uint8Array {\r\n const binaryString = atob(base64);\r\n const bytes = new Uint8Array(binaryString.length);\r\n for (let i = 0; i < binaryString.length; i++) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n return bytes;\r\n }\r\n\r\n private _uint8ArrayToBase64(array: Uint8Array): string {\r\n let binaryString = '';\r\n array.forEach(byte => {\r\n binaryString += String.fromCharCode(byte);\r\n });\r\n return btoa(binaryString);\r\n }\r\n\r\n private _getIvAndKey(iv?: Uint8Array | string, key?: Uint8Array | string): [Uint8Array, Uint8Array] {\r\n const actualIv = iv ? (typeof iv === 'string' ? this._hexToUint8Array(iv) : iv) : this._ivGetter();\r\n const actualKey = key ? (typeof key === 'string' ? this._hexToUint8Array(key) : key) : this._keyGetter();\r\n return [actualIv, actualKey];\r\n }\r\n\r\n private _getKey(key?: Uint8Array | string, defaultKey?: Uint8Array): Uint8Array {\r\n if (key) {\r\n return typeof key === 'string' ? this._hexToUint8Array(key) : key;\r\n }\r\n if (defaultKey) {\r\n return defaultKey;\r\n }\r\n throw new LYCryptoError('Key not provided and no default key available');\r\n }\r\n\r\n private _getEncryptPublicKey(publicKey?: Uint8Array | string): Uint8Array {\r\n const key = this._getKey(publicKey, this._encryptPublicKey);\r\n return key;\r\n }\r\n\r\n private _getDecryptPrivateKey(privateKey?: Uint8Array | string): Uint8Array {\r\n const key = this._getKey(privateKey, this._decryptPrivateKey);\r\n return key;\r\n }\r\n\r\n private _getSignaturePrivateKey(privateKey?: Uint8Array | string): Uint8Array {\r\n const key = this._getKey(privateKey, this._signaturePrivateKey);\r\n return key;\r\n }\r\n\r\n private _getVerifyPublicKey(publicKey?: Uint8Array | string): Uint8Array {\r\n const key = this._getKey(publicKey, this._verifyPublicKey);\r\n return key;\r\n }\r\n\r\n /**\r\n * 将数据流分成指定大小的块\r\n */\r\n private async *_makeSize(data: AsyncIterable<Uint8Array>, size: number): AsyncIterable<Uint8Array> {\r\n let buffer = new Uint8Array(0);\r\n \r\n for await (const chunk of data) {\r\n // 合并buffer和新的chunk\r\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\r\n newBuffer.set(buffer);\r\n newBuffer.set(chunk, buffer.length);\r\n buffer = newBuffer;\r\n\r\n // 输出完整的块\r\n while (buffer.length >= size) {\r\n yield buffer.slice(0, size);\r\n buffer = buffer.slice(size);\r\n }\r\n }\r\n \r\n // 输出剩余的数据\r\n if (buffer.length > 0) {\r\n yield buffer;\r\n }\r\n }\r\n\r\n /**\r\n * 设置对称加密的IV和密钥获取函数\r\n */\r\n setSymmetricKeyGetter(ivGetter: () => Uint8Array, keyGetter: () => Uint8Array): void {\r\n this._ivGetter = ivGetter;\r\n this._keyGetter = keyGetter;\r\n }\r\n\r\n /**\r\n * 设置非对称加密公钥\r\n */\r\n setEncryptPublicKey(publicKey: Uint8Array | string): void {\r\n this._encryptPublicKey = typeof publicKey === 'string' ? this._hexToUint8Array(publicKey) : publicKey;\r\n }\r\n\r\n /**\r\n * 设置非对称解密私钥\r\n */\r\n setDecryptPrivateKey(privateKey: Uint8Array | string): void {\r\n this._decryptPrivateKey = typeof privateKey === 'string' ? this._hexToUint8Array(privateKey) : privateKey;\r\n }\r\n\r\n /**\r\n * 设置签名私钥\r\n */\r\n setSignaturePrivateKey(privateKey: Uint8Array | string): void {\r\n this._signaturePrivateKey = typeof privateKey === 'string' ? this._hexToUint8Array(privateKey) : privateKey;\r\n }\r\n\r\n /**\r\n * 设置验证公钥\r\n */\r\n setVerifyPublicKey(publicKey: Uint8Array | string): void {\r\n this._verifyPublicKey = typeof publicKey === 'string' ? this._hexToUint8Array(publicKey) : publicKey;\r\n }\r\n\r\n /* ============ 对称加密方法重载 ============ */\r\n\r\n /**\r\n * 对称加密 - 字节数组\r\n */\r\n encryptSymmetric(data: Uint8Array, iv?: Uint8Array | string, key?: Uint8Array | string): Uint8Array;\r\n /**\r\n * 对称加密 - 字符串\r\n */\r\n encryptSymmetric(data: string, iv?: Uint8Array | string, key?: Uint8Array | string): string;\r\n /**\r\n * 对称加密 - 流式数据\r\n */\r\n encryptSymmetric(data: AsyncIterable<Uint8Array>, iv?: Uint8Array | string, key?: Uint8Array | string): AsyncIterable<Uint8Array>;\r\n encryptSymmetric(data: Uint8Array | string | AsyncIterable<Uint8Array>, iv?: Uint8Array | string, key?: Uint8Array | string): Uint8Array | string | AsyncIterable<Uint8Array> {\r\n if (typeof data === 'string') {\r\n return this._encryptSymmetricStr(data, iv, key);\r\n } else if (ArrayBuffer.isView(data)) {\r\n return this._encryptSymmetricBytes(data as Uint8Array, iv, key);\r\n } else {\r\n return this._encryptSymmetricStream(data as AsyncIterable<Uint8Array>, iv, key);\r\n }\r\n }\r\n\r\n private _encryptSymmetricBytes(data: Uint8Array, iv?: Uint8Array | string, key?: Uint8Array | string): Uint8Array {\r\n if (!data || data.length === 0) return new Uint8Array(data);\r\n const [actualIv, actualKey] = this._getIvAndKey(iv, key);\r\n return this.impl.encryptSymmetric(data, actualIv, actualKey);\r\n }\r\n\r\n private _encryptSymmetricStr(data: string, iv?: Uint8Array | string, key?: Uint8Array | string): string {\r\n const dataBytes = this._stringToUint8Array(data);\r\n const result = this._encryptSymmetricBytes(dataBytes, iv, key);\r\n return this._uint8ArrayToBase64(result);\r\n }\r\n\r\n private async *_encryptSymmetricStream(\r\n data: AsyncIterable<Uint8Array>, \r\n iv?: Uint8Array | string, \r\n key?: Uint8Array | string\r\n ): AsyncIterable<Uint8Array> {\r\n const [actualIv, actualKey] = this._getIvAndKey(iv, key);\r\n const blockSize = this.impl.getSymmetricBlockSize(actualIv, actualKey);\r\n \r\n for await (const chunk of this._makeSize(data, blockSize)) {\r\n if (!chunk || chunk.length === 0) {\r\n yield chunk;\r\n continue;\r\n }\r\n \r\n const buffer = this.impl.encryptSymmetric(chunk, actualIv, actualKey);\r\n // 块首加入加密块的长度信息(2字节大端序)\r\n const lengthBytes = new Uint8Array(LENGTH_SIZE);\r\n const view = new DataView(lengthBytes.buffer);\r\n view.setUint16(0, buffer.length, false); // false = big endian\r\n \r\n yield lengthBytes;\r\n yield buffer;\r\n }\r\n }\r\n\r\n /* ============ 对称解密方法重载 ============ */\r\n\r\n /**\r\n * 对称解密 - 字节数组\r\n */\r\n decryptSymmetric(data: Uint8Array, iv?: Uint8Array | string, key?: Uint8Array | string): Uint8Array;\r\n /**\r\n * 对称解密 - 字符串\r\n */\r\n decryptSymmetric(data: string, iv?: Uint8Array | string, key?: Uint8Array | string): string;\r\n /**\r\n * 对称解密 - 流式数据\r\n */\r\n decryptSymmetric(data: AsyncIterable<Uint8Array>, iv?: Uint8Array | string, key?: Uint8Array | string): AsyncIterable<Uint8Array>;\r\n decryptSymmetric(data: Uint8Array | string | AsyncIterable<Uint8Array>, iv?: Uint8Array | string, key?: Uint8Array | string): Uint8Array | string | AsyncIterable<Uint8Array> {\r\n if (typeof data === 'string') {\r\n return this._decryptSymmetricStr(data, iv, key);\r\n } else if (ArrayBuffer.isView(data)) {\r\n return this._decryptSymmetricBytes(data as Uint8Array, iv, key);\r\n } else {\r\n return this._decryptSymmetricStream(data as AsyncIterable<Uint8Array>, iv, key);\r\n }\r\n }\r\n\r\n private _decryptSymmetricBytes(data: Uint8Array, iv?: Uint8Array | string, key?: Uint8Array | string): Uint8Array {\r\n if (!data || data.length === 0) return new Uint8Array(data);\r\n const [actualIv, actualKey] = this._getIvAndKey(iv, key);\r\n return this.impl.decryptSymmetric(data, actualIv, actualKey);\r\n }\r\n\r\n private _decryptSymmetricStr(data: string, iv?: Uint8Array | string, key?: Uint8Array | string): string {\r\n const dataBytes = this._base64ToUint8Array(data);\r\n const result = this._decryptSymmetricBytes(dataBytes, iv, key);\r\n return this._uint8ArrayToString(result);\r\n }\r\n\r\n private async *_decryptSymmetricStream(\r\n data: AsyncIterable<Uint8Array>, \r\n iv?: Uint8Array | string, \r\n key?: Uint8Array | string\r\n ): AsyncIterable<Uint8Array> {\r\n const [actualIv, actualKey] = this._getIvAndKey(iv, key);\r\n let buffer = new Uint8Array(0);\r\n let size = -1;\r\n\r\n for await (const chunk of data) {\r\n // 合并buffer和新的chunk\r\n const newBuffer = new Uint8Array(buffer.length + chunk.length);\r\n newBuffer.set(buffer);\r\n newBuffer.set(chunk, buffer.length);\r\n buffer = newBuffer;\r\n\r\n while (true) {\r\n if (size <= 0 && buffer.length < LENGTH_SIZE) {\r\n break;\r\n }\r\n if (size <= 0) {\r\n // 获取块首的加密块长度信息(2字节大端序)\r\n const view = new DataView(buffer.buffer, buffer.byteOffset);\r\n size = view.getUint16(0, false); // false = big endian\r\n buffer = buffer.slice(LENGTH_SIZE);\r\n }\r\n if (buffer.length < size) {\r\n break;\r\n }\r\n \r\n const encryptedChunk = buffer.slice(0, size);\r\n yield this.impl.decryptSymmetric(encryptedChunk, actualIv, actualKey);\r\n buffer = buffer.slice(size);\r\n size = -1;\r\n }\r\n }\r\n \r\n // 处理剩余数据\r\n if (buffer.length > 0) {\r\n yield this.impl.decryptSymmetric(buffer, actualIv, actualKey);\r\n }\r\n }\r\n\r\n /* ============ 非对称加密方法重载 ============ */\r\n\r\n /**\r\n * 非对称加密 - 字节数组\r\n */\r\n encryptAsymmetric(data: Uint8Array, publicKey?: Uint8Array | string): Uint8Array;\r\n /**\r\n * 非对称加密 - 字符串\r\n */\r\n encryptAsymmetric(data: string, publicKey?: Uint8Array | string): string;\r\n /**\r\n * 非对称加密 - 流式数据\r\n */\r\n encryptAsymmetric(data: AsyncIterable<Uint8Array>, publicKey?: Uint8Array | string): AsyncIterable<Uint8Array>;\r\n encryptAsymmetric(data: Uint8Array | string | AsyncIterable<Uint8Array>, publicKey?: Uint8Array | string): Uint8Array | string | AsyncIterable<Uint8Array> {\r\n if (typeof data === 'string') {\r\n return this._encryptAsymmetricStr(data, publicKey);\r\n } else if (data instanceof Uint8Array) {\r\n return this._encryptAsymmetricBytes(data, publicKey);\r\n } else {\r\n return this._encryptAsymmetricStream(data, publicKey);\r\n }\r\n }\r\n\r\n private _encryptAsymmetricBytes(data: Uint8Array, publicKey?: Uint8Array | string): Uint8Array {\r\n if (!data || data.length === 0) return new Uint8Array(0);\r\n \r\n const key = this._getEncryptPublicKey(publicKey);\r\n return this.impl.encryptAsymmetric(data, key);\r\n }\r\n\r\n private _encryptAsymmetricStr(data: string, publicKey?: Uint8Array | string): string {\r\n if (!data) return '';\r\n \r\n const dataBytes = this._stringToUint8Array(data);\r\n const result = this._encryptAsymmetricBytes(dataBytes, publicKey);\r\n return this._uint8ArrayToBase64(result);\r\n }\r\n\r\n private async *_encryptAsymmetricStream(\r\n data: AsyncIterable<Uint8Array>, \r\n publicKey?: Uint8Array | string\r\n ): AsyncIterable<Uint8Array> {\r\n try {\r\n const key = this._getEncryptPublicKey(publicKey);\r\n \r\n for await (const chunk of data) {\r\n if (!chunk || chunk.length === 0) {\r\n yield new Uint8Array(0);\r\n continue;\r\n }\r\n yield this.impl.encryptAsymmetric(chunk, key);\r\n }\r\n } catch (error) {\r\n throw new LYCryptoError(`Stream asymmetric encryption failed: ${error instanceof Error ? error.message : String(error)}`);\r\n }\r\n }\r\n\r\n /* ============ 非对称解密方法重载 ============ */\r\n\r\n /**\r\n * 非对称解密 - 字节数组\r\n */\r\n decryptAsymmetric(data: Uint8Array, privateKey?: Uint8Array | string): Uint8Array;\r\n /**\r\n * 非对称解密 - 字符串\r\n */\r\n decryptAsymmetric(data: string, privateKey?: Uint8Array | string): string;\r\n /**\r\n * 非对称解密 - 流式数据\r\n */\r\n decryptAsymmetric(data: AsyncIterable<Uint8Array>, privateKey?: Uint8Array | string): AsyncIterable<Uint8Array>;\r\n decryptAsymmetric(data: Uint8Array | string | AsyncIterable<Uint8Array>, privateKey?: Uint8Array | string): Uint8Array | string | AsyncIterable<Uint8Array> {\r\n if (typeof data === 'string') {\r\n return this._decryptAsymmetricStr(data, privateKey);\r\n } else if (data instanceof Uint8Array) {\r\n return this._decryptAsymmetricBytes(data, privateKey);\r\n } else {\r\n return this._decryptAsymmetricStream(data, privateKey);\r\n }\r\n }\r\n\r\n private _decryptAsymmetricBytes(data: Uint8Array, privateKey?: Uint8Array | string): Uint8Array {\r\n if (!data || data.length === 0) return new Uint8Array(0);\r\n \r\n const key = this._getDecryptPrivateKey(privateKey);\r\n return this.impl.decryptAsymmetric(data, key);\r\n }\r\n\r\n private _decryptAsymmetricStr(data: string, privateKey?: Uint8Array | string): string {\r\n if (!data) return '';\r\n \r\n const dataBytes = this._base64ToUint8Array(data);\r\n const result = this._decryptAsymmetricBytes(dataBytes, privateKey);\r\n return this._uint8ArrayToString(result);\r\n }\r\n\r\n private async *_decryptAsymmetricStream(\r\n data: AsyncIterable<Uint8Array>, \r\n privateKey?: Uint8Array | string\r\n ): AsyncIterable<Uint8Array> {\r\n try {\r\n const key = this._getDecryptPrivateKey(privateKey);\r\n \r\n for await (const chunk of data) {\r\n if (!chunk || chunk.length === 0) {\r\n yield new Uint8Array(0);\r\n continue;\r\n }\r\n yield this.impl.decryptAsymmetric(chunk, key);\r\n }\r\n } catch (error) {\r\n throw new LYCryptoError(`Stream asymmetric decryption failed: ${error instanceof Error ? error.message : String(error)}`);\r\n }\r\n }\r\n\r\n /* ============ 签名和验证方法 ============ */\r\n\r\n /**\r\n * 签名 - 字节数组\r\n */\r\n signature(data: Uint8Array, privateKey?: Uint8Array | string): string;\r\n /**\r\n * 签名 - 字符串\r\n */\r\n signature(data: string, privateKey?: Uint8Array | string): string;\r\n signature(data: Uint8Array | string, privateKey?: Uint8Array | string): string {\r\n if (typeof data === 'string') {\r\n return this._signatureStr(data, privateKey);\r\n } else {\r\n return this._signatureBytes(data, privateKey);\r\n }\r\n }\r\n\r\n private _signatureBytes(data: Uint8Array, privateKey?: Uint8Array | string): string {\r\n if (!data || data.length === 0) return '';\r\n \r\n const key = this._getSignaturePrivateKey(privateKey);\r\n return this.impl.signature(data, key);\r\n }\r\n\r\n private _signatureStr(data: string, privateKey?: Uint8Array | string): string {\r\n if (!data) return '';\r\n \r\n const dataBytes = this._stringToUint8Array(data);\r\n return this._signatureBytes(dataBytes, privateKey);\r\n }\r\n\r\n /**\r\n * 验证签名 - 字节数组\r\n */\r\n verify(data: Uint8Array, signature: string, publicKey?: Uint8Array | string): boolean;\r\n /**\r\n * 验证签名 - 字符串\r\n */\r\n verify(data: string, signature: string, publicKey?: Uint8Array | string): boolean;\r\n verify(data: Uint8Array | string, signature: string, publicKey?: Uint8Array | string): boolean {\r\n if (typeof data === 'string') {\r\n return this._verifyStr(data, signature, publicKey);\r\n } else {\r\n return this._verifyBytes(data, signature, publicKey);\r\n }\r\n }\r\n\r\n private _verifyBytes(data: Uint8Array, signature: string, publicKey?: Uint8Array | string): boolean {\r\n if (!data || data.length === 0 || !signature) return false;\r\n \r\n const key = this._getVerifyPublicKey(publicKey);\r\n return this.impl.verify(data, key, signature);\r\n }\r\n\r\n private _verifyStr(data: string, signature: string, publicKey?: Uint8Array | string): boolean {\r\n if (!data || !signature) return false;\r\n \r\n const dataBytes = this._stringToUint8Array(data);\r\n return this._verifyBytes(dataBytes, signature, publicKey);\r\n }\r\n\r\n /* ============ 哈希方法 ============ */\r\n\r\n /**\r\n * 哈希 - 字节数组\r\n */\r\n hash(data: Uint8Array, key?: Uint8Array | string, iterations?: number): Uint8Array;\r\n /**\r\n * 哈希 - 字符串\r\n */\r\n hash(data: string, key?: Uint8Array | string, iterations?: number): string;\r\n hash(data: Uint8Array | string, key?: Uint8Array | string, iterations?: number): Uint8Array | string {\r\n if (typeof data === 'string') {\r\n return this._hashStr(data, key, iterations);\r\n } else {\r\n return this._hashBytes(data, key, iterations);\r\n }\r\n }\r\n\r\n private _hashBytes(data: Uint8Array, key?: Uint8Array | string, iterations: number = 1): Uint8Array {\r\n if (!data || data.length === 0) return new Uint8Array(0);\r\n \r\n // 处理key参数\r\n const actualKey = key ? (typeof key === 'string' ? this._hexToUint8Array(key) : key) : undefined;\r\n \r\n let result = new Uint8Array(data); // 确保是标准 Uint8Array\r\n for (let i = 0; i < iterations; i++) {\r\n // 确保返回的缓冲区为 ArrayBuffer,避免 Uint8Array<ArrayBufferLike> 带来的类型不兼容\r\n result = new Uint8Array(this.impl.hash(result, actualKey));\r\n }\r\n return result;\r\n }\r\n\r\n private _hashStr(data: string, key?: Uint8Array | string, iterations: number = 1): string {\r\n if (!data) return '';\r\n \r\n const dataBytes = this._stringToUint8Array(data);\r\n const result = this._hashBytes(dataBytes, key, iterations);\r\n return this._uint8ArrayToBase64(result);\r\n }\r\n}\r\n\r\nexport const crypto = new LYCrypto();\r\n","import { LYAppHttpClient, LYBaseResponse, LYResultResponse } from \"src/http\";\r\n\r\ninterface LYTerm {\r\n language: string;\r\n name: string;\r\n}\r\n\r\ninterface LYGetTermRequest {\r\n name?: string;\r\n}\r\n\r\ninterface LYGetTermResponse extends LYTerm, LYBaseResponse {\r\n content: string;\r\n}\r\n\r\ninterface LYCreateTermRequest extends LYTerm {\r\n content: string;\r\n}\r\n\r\ninterface LYCreateTermResponse extends LYTerm, LYBaseResponse {\r\n content: string;\r\n}\r\n\r\ninterface LYBaseResource extends LYTerm {\r\n content_type:string;\r\n url: string;\r\n}\r\n\r\n\r\nexport class LYOEMApi {\r\n private _httpClient: LYAppHttpClient;\r\n constructor(httpClient: LYAppHttpClient) {\r\n this._httpClient = httpClient;\r\n }\r\n\r\n async getTerm(request?: LYGetTermRequest) {\r\n const result = await this._httpClient.get<LYResultResponse<LYGetTermResponse>, LYGetTermRequest>(\r\n `/oem/term`,\r\n request\r\n );\r\n return result.data;\r\n }\r\n\r\n async createTerm(request: LYCreateTermRequest) {\r\n const result = await this._httpClient.post<LYResultResponse<LYCreateTermResponse>, LYCreateTermRequest>(\r\n `/oem/create`,\r\n request\r\n );\r\n return result.data;\r\n }\r\n\r\n async batchUpdate(request: Record<string, string>) {\r\n const result = await this._httpClient.post<LYResultResponse<LYCreateTermResponse>, Record<string, string>>(\r\n `/oem/patch/batch`,\r\n request\r\n );\r\n return result.data;\r\n }\r\n\r\n async update(request: LYCreateTermRequest) {\r\n const stream = this._httpClient.stream<any>(\"oem/patch\", {data:{...request}});\r\n for await (const chunk of stream) {\r\n // 处理每个数据块\r\n }\r\n const result = await this._httpClient.post<LYResultResponse<LYCreateTermResponse>, LYCreateTermRequest>(\r\n `/oem/patch`,\r\n request\r\n );\r\n return result.data;\r\n }\r\n\r\n async delete(request: LYTerm) {\r\n const result = await this._httpClient.post<LYResultResponse<{count:number}>, LYTerm>(\r\n `/oem/delete`,\r\n request\r\n );\r\n return result.data;\r\n }\r\n\r\n async getResource(request?: LYGetTermRequest) {\r\n const result = await this._httpClient.get<LYResultResponse<LYBaseResource>, LYGetTermRequest>(\r\n `/oem/resource`,\r\n request\r\n );\r\n return result.data;\r\n }\r\n\r\n async createResource(request: LYBaseResource) {\r\n const result = await this._httpClient.post<LYResultResponse<LYBaseResource>, LYBaseResource>(\r\n `/oem/resource/create`,\r\n request\r\n );\r\n return result.data;\r\n }\r\n\r\n async updateResource(request: LYBaseResource) {\r\n const result = await this._httpClient.post<LYResultResponse<LYBaseResource>, LYBaseResource>(\r\n `/oem/resource/patch`,\r\n request\r\n );\r\n return result.data;\r\n }\r\n\r\n async deleteResource(request: LYTerm) {\r\n const result = await this._httpClient.post<LYResultResponse<{count:number}>, LYTerm>(\r\n `/oem/resource/delete`,\r\n request\r\n );\r\n return result.data;\r\n }\r\n}","import type {\r\n LYAppHttpClient,\r\n LYBaseResponse,\r\n LYResultResponse,\r\n} from '../../../http';\r\n\r\ninterface LYVerificationCodeRequest {\r\n email?: string;\r\n phone?: string;\r\n country_code?: string;\r\n account_type: \"email\" | \"phone\";\r\n purpose: 'register' | 'login' | 'reset_password';\r\n verification_code_id?: string;\r\n verification_code?: string;\r\n}\r\n\r\ninterface LYVerificationCodesResponse extends LYBaseResponse {\r\n message: string;\r\n cooldown_seconds: number;\r\n expires_in: number;\r\n verification_code_id: string;\r\n}\r\n\r\nexport class LYVerificationCodesApi {\r\n private _httpClient: LYAppHttpClient;\r\n\r\n constructor(httpClient: LYAppHttpClient) {\r\n this._httpClient = httpClient;\r\n }\r\n\r\n async send(request: LYVerificationCodeRequest) {\r\n const response = await this._httpClient.post<LYResultResponse<LYVerificationCodesResponse>, LYVerificationCodeRequest>('/verification-codes', {\r\n ...request\r\n });\r\n return response.data;\r\n }\r\n\r\n async check(request: LYVerificationCodeRequest) {\r\n const response = await this._httpClient.post<LYResultResponse<{verified:boolean,verification_code_id:string,expires_at:string}>, LYVerificationCodeRequest>(`/verification-codes/${request.verification_code_id}/usage`, {\r\n ...request\r\n });\r\n return response.data;\r\n }\r\n}\r\n","import { LYSession } from '../../../session';\r\nimport { register } from '../../../object';\r\nimport { ILanguageResources, LYBaseTenantApp } from '../../base';\r\nimport { LYSessionApi } from '../api/session';\r\nimport type { SSOConfig } from '../api/session';\r\nimport { LYUserApi } from '../api/user';\r\nimport type { LYBaseAuthorizer } from '../authorizer/base';\r\nimport { LYWebAuthorizer } from '../authorizer/web';\r\nimport { LYGatewayAuthorizer } from '../authorizer/gateway';\r\nimport { LYDirectAuthorizer } from '../authorizer/direct';\r\nimport { LYRedirectAuthorizer } from '../authorizer/redirect';\r\nimport { LYLicenseApi } from '../api/license';\r\nimport { crypto, LYCrypto } from '../../../crypto';\r\nimport { LYOEMApi } from '../api/oem';\r\nimport { LYVerificationCodesApi } from '../api/verificationCodes';\r\n\r\n@register('LYOrganizationApp')\r\nclass LYOrganizationApp extends LYBaseTenantApp {\r\n static _instance?: LYOrganizationApp;\r\n\r\n private _sessionApi: LYSessionApi;\r\n private _userApi: LYUserApi;\r\n private _licenseApi: LYLicenseApi;\r\n private _authorizers: Record<string, LYBaseAuthorizer>;\r\n private _oemApi: LYOEMApi;\r\n private _verificationCodesApi: LYVerificationCodesApi;\r\n\r\n constructor(name: string, version: string, description: string) {\r\n super(name, version, description);\r\n LYOrganizationApp._instance = this;\r\n this._sessionApi = new LYSessionApi(this.httpClient);\r\n this._userApi = new LYUserApi(this.httpClient);\r\n this._licenseApi = new LYLicenseApi(this.httpClient);\r\n this._oemApi = new LYOEMApi(this.httpClient);\r\n this._verificationCodesApi = new LYVerificationCodesApi(this.httpClient);\r\n this._authorizers = {\r\n web: new LYWebAuthorizer(this, 'web', this._sessionApi),\r\n direct: new LYDirectAuthorizer(this, 'direct'),\r\n redirect: new LYRedirectAuthorizer(this, 'redirect'),\r\n gateway: new LYGatewayAuthorizer(this, 'gateway'),\r\n };\r\n }\r\n\r\n static get instance(): LYOrganizationApp {\r\n if (!LYOrganizationApp._instance) {\r\n throw new Error('LYOrganizationApp not initialized');\r\n }\r\n return LYOrganizationApp._instance;\r\n }\r\n\r\n get sessionApi(): LYSessionApi {\r\n return this._sessionApi;\r\n }\r\n\r\n get userApi(): LYUserApi {\r\n return this._userApi;\r\n }\r\n\r\n get oemApi(): LYOEMApi {\r\n return this._oemApi;\r\n }\r\n\r\n get licenseApi(): LYLicenseApi {\r\n return this._licenseApi;\r\n }\r\n\r\n get crypto(): LYCrypto {\r\n return crypto\r\n }\r\n\r\n get verificationCodesApi(): LYVerificationCodesApi {\r\n return this._verificationCodesApi;\r\n }\r\n\r\n protected async doLoad(): Promise<void> {\r\n await super.doLoad();\r\n // await this.mergeOEM();\r\n }\r\n\r\n private async mergeOEM(originResources: ILanguageResources) {\r\n try {\r\n const terms = await this.oemApi.getTerm();\r\n const resources = await this.oemApi.getResource();\r\n console.log(\"术语\", terms)\r\n console.log(\"资源\", resources)\r\n } catch (error) {\r\n this.logger.error('oemResource load fail!');\r\n this.logger.error(error);\r\n }\r\n }\r\n\r\n getAuthorizer<T extends LYBaseAuthorizer = LYBaseAuthorizer>(name?: string): T {\r\n const type = name ?? LYSession.get()?.type;\r\n if (!this._authorizers[type]) {\r\n throw new Error(`Authorizer ${type} not found`);\r\n }\r\n return this._authorizers[type] as T;\r\n }\r\n}\r\n\r\nexport { LYOrganizationApp, SSOConfig };\r\n","\r\nimport type {\r\n LYRangeQueryParams,\r\n LYAppHttpClient,\r\n LYBaseResponse,\r\n LYListResponse,\r\n LYIdentifierResponse,\r\n LYCountResponse,\r\n LYResultResponse,\r\n} from '../../../http';\r\n\r\ninterface LYTenantResponse extends LYBaseResponse {\r\n id: string;\r\n name: string;\r\n description: string;\r\n}\r\n\r\ninterface LYTenantListResponse extends LYListResponse<LYTenantResponse> {}\r\n\r\ninterface LYTenantPostRequest {\r\n name: string;\r\n description?: string;\r\n admin_name: string;\r\n admin_password: string;\r\n}\r\n\r\ninterface LYTenantPatchRequest {\r\n description?: string;\r\n}\r\n\r\nexport class LYTenantApi {\r\n private _httpClient: LYAppHttpClient;\r\n\r\n constructor(httpClient: LYAppHttpClient) {\r\n this._httpClient = httpClient;\r\n }\r\n\r\n async query(): Promise<LYTenantResponse[]> {\r\n const response = await this._httpClient.get<LYResultResponse<LYTenantListResponse>, LYRangeQueryParams>(\r\n '/tenant',\r\n {\r\n offset: 0,\r\n size: 100,\r\n sort: ['created_at'],\r\n }\r\n );\r\n return response.data.list;\r\n }\r\n\r\n async get(name: string): Promise<LYTenantResponse> {\r\n const response = await this._httpClient.get<LYResultResponse<LYTenantResponse>>(`/tenant/${name}`);\r\n return response.data;\r\n }\r\n\r\n async create(tenant: LYTenantPostRequest): Promise<string> {\r\n const response = await this._httpClient.post<LYResultResponse<LYIdentifierResponse>, LYTenantPostRequest>(\r\n `/tenant`,\r\n {\r\n ...tenant,\r\n admin_password: tenant.admin_password\r\n }\r\n );\r\n return response.data.id;\r\n }\r\n\r\n async update(name: string, tenant: LYTenantPatchRequest): Promise<number> {\r\n const response = await this._httpClient.post<LYResultResponse<LYCountResponse>, LYTenantPatchRequest>(\r\n `/tenant/patch/${name}`,\r\n tenant\r\n );\r\n return response.data.count;\r\n }\r\n\r\n async delete(name: string): Promise<number> {\r\n const response = await this._httpClient.post<LYResultResponse<LYCountResponse>>(`/tenant/delete/${name}`);\r\n return response.data.count;\r\n }\r\n}\r\n","\r\nimport type {\r\n LYRangeQueryParams,\r\n LYAppHttpClient,\r\n LYBaseResponse,\r\n LYListResponse,\r\n LYIdentifierResponse,\r\n LYCountResponse,\r\n LYResultResponse,\r\n} from '../../../http';\r\n\r\ninterface LYUserResponse extends LYBaseResponse {\r\n id: string;\r\n name: string;\r\n description: string;\r\n}\r\n\r\ninterface LYUserListResponse extends LYListResponse<LYUserResponse> {}\r\n\r\ninterface LYUserPostRequest {\r\n name: string;\r\n password: string;\r\n description?: string;\r\n}\r\n\r\ninterface LYUserPatchRequest {\r\n password?: string;\r\n description?: string;\r\n}\r\n\r\nexport class LYUserApi {\r\n private _httpClient: LYAppHttpClient;\r\n\r\n constructor(httpClient: LYAppHttpClient) {\r\n this._httpClient = httpClient;\r\n }\r\n\r\n async query(): Promise<LYUserListResponse> {\r\n const response = await this._httpClient.get<LYResultResponse<LYUserListResponse>, LYRangeQueryParams>(\r\n '/user',\r\n {\r\n offset: 0,\r\n size: 100,\r\n sort: ['created_at'],\r\n }\r\n );\r\n return response.data;\r\n }\r\n\r\n async get(name: string): Promise<LYUserResponse> {\r\n const response = await this._httpClient.get<LYResultResponse<LYUserResponse>>(`/user/${name}`);\r\n return response.data;\r\n }\r\n\r\n async create(user: LYUserPostRequest): Promise<string> {\r\n const response = await this._httpClient.post<LYResultResponse<LYIdentifierResponse>, LYUserPostRequest>(\r\n `/user`,\r\n {\r\n ...user,\r\n password: user.password\r\n }\r\n );\r\n return response.data.id;\r\n }\r\n\r\n async update(name: string, user: LYUserPatchRequest): Promise<number> {\r\n const response = await this._httpClient.post<LYResultResponse<LYCountResponse>, LYUserPatchRequest>(\r\n `/user/patch/${name}`,\r\n user\r\n );\r\n return response.data.count;\r\n }\r\n\r\n async delete(name: string): Promise<number> {\r\n const response = await this._httpClient.post<LYResultResponse<LYCountResponse>>(`/user/delete/${name}`);\r\n return response.data.count;\r\n }\r\n}\r\n","import type { LYAppHttpClient, LYCountResponse, LYResultResponse } from '../../../http';\r\n\r\nexport class LYConfigurationApi {\r\n private _httpClient: LYAppHttpClient;\r\n\r\n constructor(httpClient: LYAppHttpClient) {\r\n this._httpClient = httpClient;\r\n }\r\n\r\n async get_meta(): Promise<Record<string, any>> {\r\n const response = await this._httpClient.get<LYResultResponse<Record<string, any>>>('/configuration/meta');\r\n return response.data;\r\n }\r\n\r\n async get(): Promise<Record<string, any>> {\r\n const response = await this._httpClient.get<LYResultResponse<Record<string, any>>>('/configuration');\r\n return response.data;\r\n }\r\n\r\n async set(value: Record<string, any>): Promise<number> {\r\n const response = await this._httpClient.post<LYResultResponse<LYCountResponse>, Record<string, any>>(\r\n `/configuration`,\r\n value\r\n );\r\n return response.data.count;\r\n }\r\n}\r\n","import { LYObject, register } from '../../../object';\r\nimport { sharedLocalStorage } from '../../../storage';\r\n\r\nconst SESSION_KEY = 'tenant_session';\r\n\r\ninterface TenantSessionStorageData {\r\n id: string;\r\n token: string;\r\n user_id: string;\r\n user_name: string;\r\n expires_in: number;\r\n claims: Record<string, any>;\r\n created_at: number; // 添加创建时间戳\r\n}\r\n\r\n@register('LYTenantSession')\r\nexport class LYTenantSession extends LYObject {\r\n private static _session?: LYTenantSession;\r\n private _id: string;\r\n private _token: string;\r\n private _user_id: string;\r\n private _user_name: string;\r\n private _expires_in: number;\r\n private _claims: Record<string, any>;\r\n private _created_at: number;\r\n private static _refreshCallback?: (session: LYTenantSession) => Promise<void>;\r\n private static _refreshTimer?: NodeJS.Timeout;\r\n private static readonly _CHECK_INTERVAL = 10 * 1000; // 每10秒检查一次\r\n\r\n static get(): LYTenantSession | undefined {\r\n if (!LYTenantSession._session) {\r\n const session = sharedLocalStorage.getSync<TenantSessionStorageData>(SESSION_KEY);\r\n if (session) {\r\n const { \r\n id, \r\n token, \r\n user_id, \r\n user_name, \r\n expires_in, \r\n claims,\r\n created_at = Date.now() // 兼容旧版本,如果没有created_at则使用当前时间\r\n } = session;\r\n LYTenantSession._session = new LYTenantSession(\r\n id,\r\n token,\r\n user_id,\r\n user_name,\r\n expires_in,\r\n claims,\r\n created_at\r\n );\r\n \r\n // 启动定时器监控\r\n LYTenantSession._startRefreshTimer();\r\n }\r\n }\r\n return LYTenantSession._session;\r\n }\r\n\r\n static create(\r\n id: string,\r\n token: string,\r\n user_id: string,\r\n user_name: string,\r\n expires_in: number,\r\n claims: Record<string, any>\r\n ): LYTenantSession {\r\n const created_at = Date.now();\r\n LYTenantSession._session = new LYTenantSession(\r\n id,\r\n token,\r\n user_id,\r\n user_name,\r\n expires_in,\r\n claims,\r\n created_at\r\n );\r\n sharedLocalStorage.setSync(SESSION_KEY, {\r\n id,\r\n token,\r\n user_id,\r\n user_name,\r\n expires_in,\r\n claims,\r\n created_at,\r\n });\r\n \r\n // 启动定时器监控\r\n LYTenantSession._startRefreshTimer();\r\n \r\n return LYTenantSession._session;\r\n }\r\n \r\n\r\n static clear(): void {\r\n LYTenantSession._session = undefined;\r\n sharedLocalStorage.removeSync(SESSION_KEY);\r\n \r\n // 停止定时器\r\n LYTenantSession._stopRefreshTimer();\r\n }\r\n\r\n constructor(\r\n id: string,\r\n token: string,\r\n user_id: string,\r\n user_name: string,\r\n expires_in: number,\r\n claims: Record<string, any>,\r\n created_at: number\r\n ) {\r\n super();\r\n this._id = id;\r\n this._token = token;\r\n this._user_id = user_id;\r\n this._user_name = user_name;\r\n this._expires_in = expires_in;\r\n this._claims = claims;\r\n this._created_at = created_at;\r\n }\r\n\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n get token(): string {\r\n return this._token;\r\n }\r\n\r\n get user_id(): string {\r\n return this._user_id;\r\n }\r\n\r\n get user_name(): string {\r\n return this._user_name;\r\n }\r\n\r\n get expires_in(): number {\r\n return this._expires_in;\r\n }\r\n\r\n get claims(): Record<string, any> {\r\n return this._claims;\r\n }\r\n\r\n get created_at(): number {\r\n return this._created_at;\r\n }\r\n\r\n /**\r\n * 检查session是否已过期\r\n */\r\n isExpired(): boolean {\r\n const now = Date.now();\r\n const expirationTime = this._created_at + (this._expires_in * 1000);\r\n return now >= expirationTime;\r\n }\r\n\r\n /**\r\n * 检查session是否即将过期(在过期前15秒)\r\n */\r\n isNearExpiration(): boolean {\r\n const now = Date.now();\r\n const expirationTime = this._created_at + (this._expires_in * 1000);\r\n const fifteenSecondsInMs = 15 * 1000;\r\n return (expirationTime - now) <= fifteenSecondsInMs;\r\n }\r\n\r\n /**\r\n * 设置刷新回调函数\r\n */\r\n static setRefreshCallback(callback: (session: LYTenantSession) => Promise<void>): void {\r\n LYTenantSession._refreshCallback = callback;\r\n }\r\n\r\n /**\r\n * 获取有效的session,如果过期则尝试刷新\r\n */\r\n static async getValid(): Promise<LYTenantSession | undefined> {\r\n const session = LYTenantSession.get();\r\n if (!session) {\r\n return undefined;\r\n }\r\n\r\n if (session.isExpired()) {\r\n // 如果已过期,尝试刷新\r\n if (LYTenantSession._refreshCallback) {\r\n try {\r\n await LYTenantSession._refreshCallback(session);\r\n return LYTenantSession.get(); // 返回刷新后的session\r\n } catch (error) {\r\n // 刷新失败,清除session\r\n LYTenantSession.clear();\r\n return undefined;\r\n }\r\n } else {\r\n // 没有刷新回调,清除过期session\r\n LYTenantSession.clear();\r\n return undefined;\r\n }\r\n } else if (session.isNearExpiration()) {\r\n // 如果即将过期,尝试提前刷新\r\n if (LYTenantSession._refreshCallback) {\r\n try {\r\n await LYTenantSession._refreshCallback(session);\r\n } catch (error) {\r\n // 刷新失败,但session还没过期,继续使用\r\n console.warn('Tenant session refresh failed but session is still valid:', error);\r\n }\r\n }\r\n }\r\n\r\n return session;\r\n }\r\n\r\n /**\r\n * 更新session信息\r\n */\r\n static update(\r\n id: string,\r\n token: string,\r\n user_id: string,\r\n user_name: string,\r\n expires_in: number,\r\n claims: Record<string, any>\r\n ): void {\r\n if (LYTenantSession._session) {\r\n const created_at = Date.now();\r\n LYTenantSession._session._id = id;\r\n LYTenantSession._session._token = token;\r\n LYTenantSession._session._user_id = user_id;\r\n LYTenantSession._session._user_name = user_name;\r\n LYTenantSession._session._expires_in = expires_in;\r\n LYTenantSession._session._claims = claims;\r\n LYTenantSession._session._created_at = created_at;\r\n\r\n // 更新存储\r\n sharedLocalStorage.setSync(SESSION_KEY, {\r\n id,\r\n token,\r\n user_id,\r\n user_name,\r\n expires_in,\r\n claims,\r\n created_at,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * 启动定时器监控session过期\r\n */\r\n private static _startRefreshTimer(): void {\r\n // 如果已经有定时器在运行,先清除\r\n LYTenantSession._stopRefreshTimer();\r\n \r\n LYTenantSession._refreshTimer = setInterval(async () => {\r\n try {\r\n await LYTenantSession._checkAndRefreshSession();\r\n } catch (error) {\r\n console.error('Tenant session refresh timer error:', error);\r\n }\r\n }, LYTenantSession._CHECK_INTERVAL);\r\n }\r\n\r\n /**\r\n * 停止定时器\r\n */\r\n private static _stopRefreshTimer(): void {\r\n if (LYTenantSession._refreshTimer) {\r\n clearInterval(LYTenantSession._refreshTimer);\r\n LYTenantSession._refreshTimer = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * 检查并刷新session\r\n */\r\n private static async _checkAndRefreshSession(): Promise<void> {\r\n const session = LYTenantSession._session;\r\n if (!session) {\r\n LYTenantSession._stopRefreshTimer();\r\n return;\r\n }\r\n\r\n if (session.isExpired()) {\r\n // 如果已过期,尝试刷新\r\n if (LYTenantSession._refreshCallback) {\r\n try {\r\n await LYTenantSession._refreshCallback(session);\r\n } catch (error) {\r\n // 刷新失败,清除session并停止定时器\r\n console.warn('Tenant session expired and refresh failed, clearing session:', error);\r\n LYTenantSession.clear();\r\n }\r\n } else {\r\n // 没有刷新回调,清除过期session\r\n console.warn('Tenant session expired and no refresh callback available, clearing session');\r\n LYTenantSession.clear();\r\n }\r\n } else if (session.isNearExpiration()) {\r\n // 如果即将过期,尝试提前刷新\r\n if (LYTenantSession._refreshCallback) {\r\n try {\r\n await LYTenantSession._refreshCallback(session);\r\n } catch (error) {\r\n // 刷新失败,但session还没过期,继续监控\r\n console.warn('Tenant session refresh failed but session is still valid:', error);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import type { LYAppHttpClient, LYBaseResponse, LYCountResponse, LYResultResponse } from '../../../http';\r\n\r\ninterface LYSessionResponse extends LYBaseResponse {\r\n id: string;\r\n access_token: string;\r\n token_type: string;\r\n user_id: string;\r\n user_name: string;\r\n expires_in: number;\r\n claims: Record<string, any>;\r\n}\r\n\r\ninterface LYSessionPostRequest {\r\n name: string;\r\n password: string;\r\n}\r\n\r\nexport class LYSessionApi {\r\n private _httpClient: LYAppHttpClient;\r\n\r\n constructor(httpClient: LYAppHttpClient) {\r\n this._httpClient = httpClient;\r\n }\r\n\r\n async get(id: string): Promise<LYSessionResponse> {\r\n const response = await this._httpClient.get<LYResultResponse<LYSessionResponse>>(`/session/${id}`);\r\n return response.data;\r\n }\r\n\r\n async create(session: LYSessionPostRequest): Promise<LYSessionResponse> {\r\n const response = await this._httpClient.post<LYResultResponse<LYSessionResponse>, LYSessionPostRequest>(\r\n `/session`,\r\n session\r\n );\r\n return response.data;\r\n }\r\n\r\n async update(id: string): Promise<LYSessionResponse> {\r\n const response = await this._httpClient.post<LYResultResponse<LYSessionResponse>>(`/session/patch/${id}`);\r\n return response.data;\r\n }\r\n\r\n async delete(id: string): Promise<number> {\r\n const response = await this._httpClient.post<LYResultResponse<LYCountResponse>>(`/session/delete/${id}`);\r\n return response.data.count;\r\n }\r\n}\r\n","import { LYObject, register } from '../../../object';\r\nimport type { LYAppHttpClient } from '../../../http';\r\nimport { LYTenantSession } from '../session';\r\nimport { LYSessionApi } from '../api/session';\r\n@register('LYTenantAuthorizer')\r\nexport class LYTenantAuthorizer extends LYObject {\r\n private _sessionApi: LYSessionApi;\r\n\r\n constructor(httpClient: LYAppHttpClient) {\r\n super();\r\n this._sessionApi = new LYSessionApi(httpClient);\r\n \r\n // 设置session刷新回调\r\n LYTenantSession.setRefreshCallback(this._refreshSession.bind(this));\r\n }\r\n\r\n async signin(userName: string, password: string): Promise<void> {\r\n const response = await this._sessionApi.create({ name: userName, password: password });\r\n LYTenantSession.create(\r\n response.id,\r\n response.access_token,\r\n response.user_id,\r\n response.user_name,\r\n response.expires_in,\r\n response.claims\r\n );\r\n }\r\n\r\n async signout(): Promise<void> {\r\n const session = LYTenantSession.get();\r\n if (!session) {\r\n throw new Error('Session not found');\r\n }\r\n LYTenantSession.clear();\r\n const count = await this._sessionApi.delete(session.id);\r\n if (count === 0) {\r\n throw new Error('Session not found');\r\n }\r\n }\r\n\r\n async update(): Promise<void> {\r\n const session = LYTenantSession.get();\r\n if (!session) {\r\n throw new Error('Session not found');\r\n }\r\n await this._refreshSession(session);\r\n }\r\n\r\n /**\r\n * 刷新session\r\n */\r\n private async _refreshSession(session: LYTenantSession): Promise<void> {\r\n const response = await this._sessionApi.update(session.id);\r\n LYTenantSession.update(\r\n response.id,\r\n response.access_token,\r\n response.user_id,\r\n response.user_name,\r\n response.expires_in,\r\n response.claims\r\n );\r\n }\r\n}\r\n","import { register } from '../../../object';\r\nimport { LYBaseApp } from '../../base';\r\nimport { LYTenantApi } from '../api/tenant';\r\nimport { LYUserApi } from '../api/user';\r\nimport { LYConfigurationApi } from '../api/configuration';\r\nimport { LYTenantAuthorizer } from '../authorizer';\r\nimport { LYTenantSession } from '../session';\r\n\r\n@register('LYTenantApp')\r\nclass LYTenantApp extends LYBaseApp {\r\n static _instance?: LYTenantApp;\r\n\r\n private _tenantApi: LYTenantApi;\r\n private _userApi: LYUserApi;\r\n private _configuration: LYConfigurationApi;\r\n private _authorizer: LYTenantAuthorizer;\r\n\r\n constructor(name: string, version: string, description: string) {\r\n super(name, version, description);\r\n this._tenantApi = new LYTenantApi(this.httpClient);\r\n this._userApi = new LYUserApi(this.httpClient);\r\n this._configuration = new LYConfigurationApi(this.httpClient);\r\n this._authorizer = new LYTenantAuthorizer(this.httpClient);\r\n LYTenantApp._instance = this;\r\n }\r\n\r\n static get instance(): LYTenantApp {\r\n if (!LYTenantApp._instance) {\r\n throw new Error('LYTenantApp not initialized');\r\n }\r\n return LYTenantApp._instance;\r\n }\r\n\r\n get tenantApi(): LYTenantApi {\r\n return this._tenantApi;\r\n }\r\n\r\n get userApi(): LYUserApi {\r\n return this._userApi;\r\n }\r\n\r\n get configuration(): LYConfigurationApi {\r\n return this._configuration;\r\n }\r\n\r\n get authorizer(): LYTenantAuthorizer {\r\n return this._authorizer;\r\n }\r\n\r\n protected async doLoad(): Promise<void> {\r\n await super.doLoad();\r\n }\r\n}\r\n\r\nLYBaseApp.setHeaderProvider({\r\n get headers(): Record<string, string> | undefined {\r\n const lang = LYTenantApp.instance.i18n.lang;\r\n const session = LYTenantSession.get();\r\n if (!session) {\r\n return undefined;\r\n }\r\n return {\r\n Authorization: `Bearer ${session.token}`,\r\n 'Accept-Language': lang,\r\n };\r\n },\r\n});\r\n\r\nexport { LYTenantApp };\r\n","import { LYEnv } from '../env';\r\nimport { register } from '../object';\r\nimport { LYBaseApp, LYBaseTenantApp, ORGANIZATION_APP_NAME, TENANT_APP_NAME } from './base';\r\nimport { LYOrganizationApp, SSOConfig } from './organization';\r\nimport { LYTenantApp } from './tenant';\r\nimport { LYTenantSession } from './tenant/session';\r\nimport { LYWebAuthorizer } from './organization/authorizer/web';\r\nimport { LYGatewayAuthorizer } from './organization/authorizer/gateway';\r\nimport { LYDirectAuthorizer } from './organization/authorizer/direct';\r\nimport { LYRedirectAuthorizer } from './organization/authorizer/redirect';\r\nimport { LYTenantAuthorizer } from './tenant/authorizer'\r\n\r\n\r\n@register('LYApp')\r\nclass LYApp extends LYBaseTenantApp {}\r\n\r\nexport type { SSOConfig }\r\n\r\nexport {\r\n LYApp,\r\n LYBaseApp,\r\n LYTenantApp,\r\n LYOrganizationApp,\r\n LYTenantSession,\r\n TENANT_APP_NAME,\r\n ORGANIZATION_APP_NAME,\r\n LYEnv,\r\n LYWebAuthorizer,\r\n LYGatewayAuthorizer,\r\n LYDirectAuthorizer,\r\n LYRedirectAuthorizer,\r\n LYTenantAuthorizer\r\n};","import axios, { type AxiosInstance } from 'axios';\r\nimport { LYObject, register } from '../object';\r\nimport { type LYHttpRetryConfig } from '../config/http';\r\nimport { LYConfig } from '../config';\r\nimport { LYConfigError, LYHttpStatusError, LYNetworkError } from './error';\r\nimport { LYBaseApp, LYOrganizationApp, ORGANIZATION_APP_NAME } from '../app';\r\nimport qs from 'qs';\r\n\r\nexport type LYHttpRequestConfig = {\r\n method?: LYHttpRequestMethod;\r\n url?: string;\r\n baseURL?: string;\r\n headers?: Record<string, string>;\r\n params?: Record<string, any>;\r\n data?: Record<string, any>;\r\n timeout?: number;\r\n withCredentials?: boolean;\r\n onUploadProgress?: (progress: number) => void;\r\n onDownloadProgress?: (progress: number) => void;\r\n signal?: AbortSignal;\r\n responseType?: 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' | 'formdata';\r\n};\r\n\r\nexport interface ILYHttpClient {\r\n get<T>(url: string, query?: Record<string, any>): Promise<T>;\r\n post<T>(url: string, data?: Record<string, any>): Promise<T>;\r\n put<T>(url: string, data?: Record<string, any>): Promise<T>;\r\n delete<T>(url: string, query?: Record<string, any>): Promise<T>;\r\n patch<T>(url: string, data?: Record<string, any>): Promise<T>;\r\n}\r\n\r\nexport type LYHttpRequestMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\r\n\r\nexport interface LYKeyConverter {\r\n convert_request(key: string): string;\r\n convert_response(key: string): string;\r\n}\r\n\r\nexport class LYSnakeCaseDataConverter implements LYKeyConverter {\r\n convert_request(key: string): string {\r\n key = key.replace(/([A-Z]+)(?=[A-Z][a-z])/g, match => '_' + match); // 处理连续大写字母(如API、HTTP等)\r\n key = key.replace(/([a-z])([A-Z])/g, '$1_$2'); // 处理驼峰命名(小写+大写)\r\n key = key.replace(/([A-Z])(?=[a-z])/g, '_$1'); // 处理单个大写字母(如ID、URL等)\r\n key = key.replace(/^_/, ''); // 去掉开头的下划线\r\n return key.toLowerCase();\r\n }\r\n convert_response(key: string): string {\r\n return key.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\r\n }\r\n}\r\n\r\n@register('LYHttpClient')\r\nexport class LYHttpClient extends LYObject implements ILYHttpClient {\r\n private _baseUrl: string;\r\n private _key_converter?: LYKeyConverter;\r\n protected _client: AxiosInstance;\r\n\r\n constructor(baseUrl?: string) {\r\n super();\r\n this._client = axios.create({\r\n baseURL: baseUrl,\r\n });\r\n this._baseUrl = baseUrl || '';\r\n }\r\n\r\n get baseUrl(): string {\r\n return this._baseUrl;\r\n }\r\n\r\n get key_converter(): LYKeyConverter | undefined {\r\n return this._key_converter;\r\n }\r\n\r\n set key_converter(converter: LYKeyConverter | undefined) {\r\n this._key_converter = converter;\r\n }\r\n\r\n private _convert_request(data: Record<string, any>): Record<string, any> {\r\n if (!this._key_converter) {\r\n return data;\r\n }\r\n const result: Record<string, any> = {};\r\n for (const key in data) {\r\n result[this._key_converter.convert_request(key)] = data[key];\r\n }\r\n return result;\r\n }\r\n\r\n private _convert_response(data: Record<string, any>): Record<string, any> {\r\n if (!this._key_converter) {\r\n return data;\r\n }\r\n\r\n const result: Record<string, any> = {};\r\n for (const key in data) {\r\n result[this._key_converter.convert_response(key)] = data[key];\r\n }\r\n return result;\r\n }\r\n\r\n protected _get_headers(): Record<string, string> | undefined {\r\n return undefined;\r\n }\r\n\r\n protected async _request(config: LYHttpRequestConfig): Promise<any> {\r\n const { method, data, params, ...rest } = config;\r\n let { data: requestData, params: requestParams } = config;\r\n if (requestData) {\r\n requestData = this._convert_request(requestData);\r\n }\r\n if (requestParams) {\r\n requestParams = this._convert_request(requestParams);\r\n }\r\n try {\r\n const response = await this._client.request({\r\n method,\r\n url: config.url,\r\n data: requestData,\r\n params: requestParams,\r\n ...rest,\r\n paramsSerializer: params => {\r\n return qs.stringify(params, { arrayFormat: 'repeat' });\r\n },\r\n headers: {\r\n ...this._get_headers(),\r\n ...config?.headers,\r\n },\r\n onUploadProgress: progressEvent => {\r\n if (config?.onUploadProgress) {\r\n config.onUploadProgress(progressEvent.loaded / progressEvent.total);\r\n }\r\n },\r\n onDownloadProgress: progressEvent => {\r\n if (config?.onDownloadProgress) {\r\n config.onDownloadProgress(progressEvent.loaded / progressEvent.total);\r\n }\r\n },\r\n });\r\n if (!response.headers['content-type'].includes('json')) {\r\n return response;\r\n }\r\n\r\n return this._convert_response(response.data);\r\n } catch (error) {\r\n if (axios.isAxiosError(error)) {\r\n const url = error.config?.url || config.url;\r\n if (error.status === 401) {\r\n try {\r\n const app = LYBaseApp.get<LYOrganizationApp>(ORGANIZATION_APP_NAME);\r\n app.getAuthorizer().signout({\r\n redirect_uri: window.location.href,\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n window.location.reload();\r\n }\r\n }\r\n if (error.response) {\r\n throw new LYHttpStatusError(error.response?.data?.detail || error.message, url, method, error, error.response.status);\r\n } else if (error.request) {\r\n throw new LYNetworkError(error.message, url, method, error);\r\n } else {\r\n throw new LYConfigError(error.message, url, method, error);\r\n }\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n async withRetry(fn: (config: LYHttpRetryConfig) => LYHttpRetryConfig): Promise<this> {\r\n let config = LYConfig.get().http.retry;\r\n config = fn(config.clone());\r\n const startTime = Date.now();\r\n // 当前retry的配置直接匹配后端的指数级退避策略\r\n // retryCondition: error => {\r\n // if (Date.now() - startTime > config.stopAfterDelay * 1000) {\r\n // return false;\r\n // }\r\n // return (\r\n // axiosRetry.isNetworkError(error) ||\r\n // (error.response && error.response.status >= 500)\r\n // );\r\n // }\r\n return this;\r\n }\r\n\r\n async get<TResponse = Record<string, any>, TQuery = Record<string, any>>(url: string, query?: TQuery, config?: LYHttpRequestConfig): Promise<TResponse> {\r\n return this._request({ method: 'GET', url, params: query as Record<string, any>, ...config });\r\n }\r\n\r\n async post<TResponse = Record<string, any>, TData = Record<string, any>>(url: string, data?: TData, config?: LYHttpRequestConfig): Promise<TResponse> {\r\n return this._request({ method: 'POST', url, data: data as Record<string, any>, ...config });\r\n }\r\n\r\n async put<TResponse = Record<string, any>, TData = Record<string, any>>(url: string, data?: TData, config?: LYHttpRequestConfig): Promise<TResponse> {\r\n return this._request({ method: 'PUT', url, data: data as Record<string, any>, ...config });\r\n }\r\n\r\n async delete<TResponse = Record<string, any>, TQuery = Record<string, any>>(url: string, query?: TQuery, config?: LYHttpRequestConfig): Promise<TResponse> {\r\n return this._request({ method: 'DELETE', url, params: query as Record<string, any>, ...config });\r\n }\r\n\r\n async patch<TResponse = Record<string, any>, TData = Record<string, any>>(url: string, data?: TData, config?: LYHttpRequestConfig): Promise<TResponse> {\r\n return this._request({ method: 'PATCH', url, data: data as Record<string, any>, ...config });\r\n }\r\n}\r\n","import { LYError } from '../error';\r\nimport { LYEvents, register } from '../object';\r\nimport { LYAppHttpError, type LYBasicResultCode } from './error';\r\nimport { LYHttpClient, LYHttpRequestConfig } from './base';\r\nimport download from 'downloadjs';\r\nimport { AxiosResponse } from 'axios';\r\n\r\nconst ROUTE_PREFIX_WEB_API = 'web';\r\n\r\n\r\n// SSE 相关类型定义\r\nexport interface LYSSEConfig {\r\n data?: Record<string, any>;\r\n delimiter?: string;\r\n signal?: AbortSignal;\r\n headers?: Record<string, string>;\r\n}\r\n\r\nexport type LYSortQueryParams = {\r\n sort: string[];\r\n};\r\n\r\nexport type LYRangeQueryParams = {\r\n offset: number;\r\n size: number;\r\n sort: string[];\r\n};\r\n\r\nexport interface LYBaseResponse { }\r\n\r\nexport interface LYBaseDataResponse extends LYBaseResponse {\r\n id: string;\r\n created_at: string;\r\n updated_at: string;\r\n updated_by?: string;\r\n}\r\n\r\ninterface LYRangeResponse extends LYBaseResponse {\r\n offset: number;\r\n size: number;\r\n total?: number;\r\n}\r\n\r\ninterface LYBaseResultResponse extends LYBaseResponse {\r\n message: string;\r\n tips?: string;\r\n}\r\n\r\nexport interface LYIdentifierResponse extends LYBaseResponse {\r\n id: string;\r\n}\r\n\r\nexport interface LYCountResponse extends LYBaseResponse {\r\n count: number;\r\n}\r\n\r\nexport interface LYResultResponse<T extends LYBaseResponse, C = LYBasicResultCode> extends LYBaseResultResponse {\r\n code: C;\r\n data?: T;\r\n}\r\n\r\nexport interface LYListResponse<T extends LYBaseResponse> extends LYBaseResponse {\r\n range?: LYRangeResponse;\r\n list: T[];\r\n}\r\n\r\nexport interface IHeaderProvider {\r\n headers?: Record<string, string>;\r\n}\r\n\r\n// 上传相关类型定义\r\nexport interface LYUploadResponse {\r\n id: string;\r\n state: LYUploadState;\r\n}\r\n\r\nexport interface LYUploadParams {\r\n id?: string;\r\n ref_id?: string;\r\n ref_type?: string;\r\n expire?: number | string;\r\n ignore_session?: boolean;\r\n extra?: Record<string, any>;\r\n encryption?: boolean;\r\n state?: LYUploadState;\r\n level?: 'default' | 'low';\r\n chunk?: File;\r\n total_size?: number;\r\n}\r\n\r\ntype LYUploadState = {\r\n bucket: string;\r\n key: string;\r\n completed_size: number;\r\n upload_id: string;\r\n part_number: number;\r\n parts: {\r\n PartNumber: number;\r\n ETag: string;\r\n }[];\r\n};\r\n\r\nexport interface LYDeleteResponse {\r\n count: number;\r\n}\r\n\r\ntype LYUploadFailedEvent = {\r\n file: File;\r\n error: Error;\r\n fileId: string;\r\n state: LYUploadState;\r\n params: LYUploadParams;\r\n failedChunkIndex: number;\r\n uploadedChunks: number;\r\n};\r\n\r\ntype LYDownloadFailedEvent = {\r\n error: Error;\r\n fileId: string;\r\n fileName?: string;\r\n blob?: Blob;\r\n};\r\n\r\ntype LYUploadEvents = {\r\n // 上传分块失败,支持外部断点续传\r\n upload_failed(event: LYUploadFailedEvent): void;\r\n // 下载失败\r\n download_failed(event: LYDownloadFailedEvent): void;\r\n};\r\n\r\n// 下载结果接口\r\nexport interface LYDownloadResult {\r\n blob: Blob;\r\n fileName: string;\r\n contentType: string;\r\n totalSize: number;\r\n}\r\n\r\n@register('LYAppHttpClient')\r\nexport class LYAppHttpClient extends LYHttpClient {\r\n on: LYEvents<LYUploadEvents>['on'];\r\n off: LYEvents<LYUploadEvents>['on'];\r\n once: LYEvents<LYUploadEvents>['on'];\r\n addListener: LYEvents<LYUploadEvents>['on'];\r\n removeListener: LYEvents<LYUploadEvents>['on'];\r\n emit: LYEvents<LYUploadEvents>['emit'];\r\n\r\n private _headerProvider: IHeaderProvider;\r\n\r\n constructor(app_name: string, headerProvider: IHeaderProvider) {\r\n super(`/${ROUTE_PREFIX_WEB_API}/${app_name}`);\r\n this._headerProvider = headerProvider;\r\n }\r\n\r\n protected _getUrl(url: string): string {\r\n return url;\r\n }\r\n\r\n protected override _get_headers(): Record<string, string> | undefined {\r\n return this._headerProvider.headers;\r\n }\r\n\r\n override async _request<T extends LYBaseResponse>(\r\n config?: LYHttpRequestConfig\r\n ): Promise<LYResultResponse<T> | AxiosResponse<any> | undefined> {\r\n const { method, data, ...rest } = config;\r\n let url = this._getUrl(config.url);\r\n if (method !== 'GET' && method !== 'POST') {\r\n throw new LYError(`Method ${method} not allowed`);\r\n }\r\n const response: LYResultResponse<T> | AxiosResponse<any> = await super._request({ method, data, ...rest, url });\r\n if ((response as AxiosResponse).status !== undefined) {\r\n return response;\r\n }\r\n const result = response as LYResultResponse<T>;\r\n if (result.code === 'not_exists') {\r\n return result;\r\n }\r\n if (result.code !== 'success') {\r\n url = `${this.baseUrl}/${url}`;\r\n throw new LYAppHttpError(result.message, url, method, new Error(), result.code);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * 上传文件\r\n */\r\n async uploadFile(params: LYUploadParams, config?: LYHttpRequestConfig): Promise<LYResultResponse<LYUploadResponse>> {\r\n const formData = new FormData();\r\n\r\n // 添加所有参数到 FormData\r\n if (params.id) formData.append('id', params.id);\r\n if (params.ref_id) formData.append('ref_id', params.ref_id);\r\n if (params.ref_type) formData.append('ref_type', params.ref_type);\r\n if (params.expire !== undefined) formData.append('expire', String(params.expire));\r\n if (params.ignore_session !== undefined) formData.append('ignore_session', String(params.ignore_session));\r\n if (params.extra) formData.append('extra', JSON.stringify(params.extra));\r\n formData.append('total_size', String(params.total_size || params.chunk?.size));\r\n if (params.encryption !== undefined) formData.append('encryption', String(params.encryption));\r\n if (params.state) formData.append('state', JSON.stringify(params.state));\r\n if (params.level) formData.append('level', params.level);\r\n\r\n // 添加文件\r\n formData.append('chunk', params.chunk);\r\n\r\n const response = await this.post<LYResultResponse<LYUploadResponse, LYBasicResultCode>>(`/file`, formData, {\r\n ...config,\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n ...config?.headers,\r\n },\r\n });\r\n\r\n return response;\r\n }\r\n\r\n /**\r\n * 分块上传文件\r\n */\r\n async uploadFileInChunks(\r\n params: LYUploadParams,\r\n config?: LYHttpRequestConfig & {\r\n chunkSize?: number;\r\n onProgress?: (progress: number) => void; // 分块上传进度\r\n startChunkIndex?: number; // 支持从指定分块开始\r\n }\r\n ): Promise<LYUploadResponse> {\r\n const file = params.chunk;\r\n const chunkSize = config?.chunkSize || 1024 * 1024 * 20; // 20MB\r\n const startChunkIndex = config?.startChunkIndex || 0; // 从指定分块开始\r\n const totalChunks = Math.ceil(file.size / chunkSize);\r\n let uploadedChunks = 0;\r\n let currentState = params.state;\r\n let fileId = params.id;\r\n\r\n for (let chunkIndex = startChunkIndex; chunkIndex < totalChunks; chunkIndex++) {\r\n const start = chunkIndex * chunkSize;\r\n const end = Math.min(start + chunkSize, file.size);\r\n const chunk = file.slice(start, end);\r\n\r\n try {\r\n const uploadParams: LYUploadParams = {\r\n ...params,\r\n chunk: new File([chunk], file.name, { type: file.type }),\r\n state: currentState,\r\n id: fileId,\r\n total_size: file.size,\r\n };\r\n\r\n const response = await this.uploadFile(uploadParams, config);\r\n\r\n // 更新 fileId 和状态\r\n fileId = response.data?.id || fileId;\r\n currentState = response.data?.state || currentState;\r\n uploadedChunks++;\r\n\r\n // 计算进度(从起始分块开始计算)\r\n const progress = (uploadedChunks / (totalChunks - startChunkIndex)) * 100;\r\n config?.onProgress?.(progress);\r\n } catch (error) {\r\n this.emit('upload_failed', {\r\n error,\r\n file,\r\n fileId,\r\n state: currentState,\r\n params,\r\n failedChunkIndex: chunkIndex, // 记录失败的分块索引\r\n uploadedChunks, // 记录已上传的分块数\r\n });\r\n throw error;\r\n }\r\n }\r\n\r\n return { id: fileId, state: currentState };\r\n }\r\n\r\n async download(\r\n fileId: string,\r\n fileName?: string,\r\n config?: LYHttpRequestConfig & {\r\n chunkSize?: number;\r\n onProgress?: (progress: number) => void;\r\n resumeFromByte?: number;\r\n }\r\n ): Promise<LYDownloadResult> {\r\n const chunkSize = config?.chunkSize || 1024 * 1024 * 20; // 20MB\r\n const resumeFromByte = config?.resumeFromByte || 0;\r\n\r\n // 构建请求URL\r\n const url = `${this.baseUrl}/${this._getUrl(`/file/${fileId}`)}`;\r\n\r\n // 构建请求头\r\n const headers: Record<string, string> = {\r\n Accept: '*/*',\r\n ...this._get_headers(),\r\n ...config?.headers,\r\n };\r\n\r\n const blob = new Blob();\r\n let reader: ReadableStreamDefaultReader<Uint8Array> | undefined;\r\n try {\r\n // 使用流式下载\r\n const downloadResponse = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n ...headers,\r\n // 如果有断点续传,添加Range头\r\n ...(resumeFromByte > 0 && {\r\n Range: `bytes=${resumeFromByte}-`,\r\n }),\r\n },\r\n credentials: 'include',\r\n });\r\n\r\n if (!downloadResponse.ok) {\r\n throw new Error(`Download request failed: ${downloadResponse.status} ${downloadResponse.statusText}`);\r\n }\r\n\r\n // 获取响应流读取器\r\n reader = downloadResponse.body?.getReader();\r\n if (!reader) {\r\n throw new Error('Response body is not readable');\r\n }\r\n\r\n // 从响应头获取文件信息\r\n const contentLength = parseInt(downloadResponse.headers.get('content-length') || '0');\r\n const contentType = downloadResponse.headers.get('content-type') || 'application/octet-stream';\r\n const contentRange = downloadResponse.headers.get('content-range');\r\n const contentDisposition = downloadResponse.headers.get('content-disposition');\r\n\r\n // 如果有Content-Range,从中解析文件大小\r\n let totalSize = contentLength;\r\n if (contentRange) {\r\n const match = contentRange.match(/bytes \\d+-\\d+\\/(\\d+)/);\r\n if (match) {\r\n totalSize = parseInt(match[1]);\r\n }\r\n }\r\n\r\n // 从Content-Disposition解析文件名\r\n let finalFileName = fileName;\r\n if (!finalFileName && contentDisposition) {\r\n const utf8Match = contentDisposition.match(/filename\\*=UTF-8''([^;]+)/);\r\n if (utf8Match) {\r\n finalFileName = decodeURIComponent(utf8Match[1]);\r\n } else {\r\n const filenameMatch = contentDisposition.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\r\n if (filenameMatch && filenameMatch[1]) {\r\n finalFileName = filenameMatch[1].replace(/['\"]/g, '');\r\n }\r\n }\r\n }\r\n\r\n const chunks: Uint8Array[] = [];\r\n let totalLoaded = 0;\r\n let progress = 0;\r\n let blob: Blob | undefined;\r\n\r\n // 流式读取数据\r\n while (true) {\r\n const { done, value } = await reader.read();\r\n\r\n if (done) {\r\n break;\r\n }\r\n\r\n chunks.push(value);\r\n totalLoaded += value.length;\r\n\r\n // 计算进度\r\n const newProgress = totalSize > 0 ? (totalLoaded / totalSize) * 100 : 0;\r\n if (newProgress !== progress) {\r\n progress = newProgress;\r\n config?.onProgress?.(progress);\r\n }\r\n }\r\n\r\n // 合并所有块\r\n blob = new Blob(chunks as BlobPart[], { type: contentType });\r\n return {\r\n blob,\r\n fileName: finalFileName,\r\n contentType,\r\n totalSize: totalSize || blob.size, // 如果没有获取到文件大小,使用blob的实际大小\r\n };\r\n } catch (error) {\r\n if (reader) {\r\n reader.cancel();\r\n }\r\n this.emit('download_failed', {\r\n error,\r\n fileId,\r\n fileName,\r\n blob,\r\n });\r\n throw error;\r\n }\r\n }\r\n\r\n async downloadFile(fileId: string, fileName?: string, config?: LYHttpRequestConfig): Promise<void> {\r\n const result = await this.download(fileId, fileName, config);\r\n download(result.blob, result.fileName, result.contentType);\r\n }\r\n\r\n /**\r\n * SSE流式请求 - 字符串格式\r\n * @param url 请求URL\r\n * @param config SSE配置选项\r\n * @returns AsyncGenerator<string>,生成原始字符串数据\r\n */\r\n stream(\r\n url: string,\r\n config?: LYSSEConfig\r\n ): AsyncGenerator<string>;\r\n\r\n /**\r\n * SSE流式请求 - Uint8Array格式\r\n * @param url 请求URL\r\n * @param config SSE配置选项\r\n * @returns AsyncGenerator<Uint8Array>,生成字节数组数据\r\n */\r\n stream(\r\n url: string,\r\n config?: LYSSEConfig\r\n ): AsyncGenerator<Uint8Array>;\r\n\r\n /**\r\n * SSE流式请求 - JSON格式\r\n * @param url 请求URL\r\n * @param config SSE配置选项\r\n * @returns AsyncGenerator<T>,生成JSON解析后的数据\r\n */\r\n stream<T>(\r\n url: string,\r\n config?: LYSSEConfig\r\n ): AsyncGenerator<T>;\r\n\r\n /**\r\n * SSE流式请求 - 实现方法\r\n * 根据调用上下文自动选择解析模式\r\n * @param url 请求URL\r\n * @param config SSE配置选项\r\n * @returns AsyncGenerator,根据使用方式自动选择解析模式\r\n */\r\n async *stream<T = any>(\r\n url: string,\r\n config?: LYSSEConfig\r\n ): AsyncGenerator<T> {\r\n const { data, delimiter = '\\n', headers: customHeaders } = config || {};\r\n\r\n // 简化URL拼接\r\n const fullUrl = `${this.baseUrl}/${this._getUrl(url)}`;\r\n\r\n // 构建请求头\r\n const headers: Record<string, string> = {\r\n ...this._get_headers(),\r\n ...customHeaders,\r\n 'Accept': 'text/event-stream',\r\n 'Content-Type': 'application/json',\r\n };\r\n\r\n const abortController = new AbortController();\r\n\r\n // 处理外部传入的中断信号\r\n if (config?.signal) {\r\n config.signal.addEventListener('abort', () => {\r\n abortController.abort();\r\n });\r\n }\r\n\r\n // 准备请求选项 - 固定使用POST请求\r\n const requestOptions: RequestInit = {\r\n method: 'POST',\r\n headers,\r\n signal: abortController.signal,\r\n body: JSON.stringify(data),\r\n };\r\n\r\n try {\r\n const response = await fetch(fullUrl, requestOptions);\r\n\r\n if (!response.ok || !response.body) {\r\n throw new Error(`SSE connection failed: ${response.status}`);\r\n }\r\n\r\n const reader = response.body.getReader();\r\n const decoder = new TextDecoder();\r\n let buffer = '';\r\n\r\n try {\r\n while (true) {\r\n const { value, done } = await reader.read();\r\n if (done) break;\r\n\r\n const chunk = decoder.decode(value, { stream: true });\r\n buffer += chunk;\r\n\r\n const parts = buffer.split(delimiter);\r\n buffer = parts.pop() ?? ''; // 不完整部分留待下次\r\n\r\n for (const part of parts) {\r\n const trimmed = part.trim();\r\n if (trimmed.length === 0) continue;\r\n\r\n // 根据调用上下文的类型解析数据\r\n yield this.parseChunk<T>(trimmed);\r\n }\r\n }\r\n\r\n if (buffer.trim()) {\r\n yield this.parseChunk<T>(buffer);\r\n }\r\n } finally {\r\n reader.releaseLock();\r\n }\r\n\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : String(error);\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n\r\n /**\r\n * 智能解析数据块\r\n * 根据调用上下文的泛型类型自动选择解析方式\r\n */\r\n private parseChunk<T>(text: string): T {\r\n // TypeScript 会在编译时根据调用上下文选择正确的分支\r\n\r\n // 如果 T 是 string 类型,直接返回字符串\r\n if ((null as unknown as T) === '') {\r\n return text as unknown as T;\r\n }\r\n\r\n // 如果 T 是 Uint8Array 类型,转换为字节数组\r\n if ((null as unknown as T) instanceof Uint8Array) {\r\n return new TextEncoder().encode(text) as unknown as T;\r\n }\r\n\r\n // 其他类型尝试 JSON 解析\r\n try {\r\n return JSON.parse(text) as T;\r\n } catch {\r\n // JSON 解析失败时,返回原始字符串\r\n return text as unknown as T;\r\n }\r\n }\r\n}\r\n\r\n@register('LYTenantHttpClient')\r\nexport class LYTenantHttpClient extends LYAppHttpClient {\r\n static getTenantName(): string {\r\n // 标准url为 /web/{app_name}/{tenant_name}/{path}\r\n const url = window.location.pathname;\r\n const parts = url.split('/');\r\n // 按web关键词查找\r\n const index = parts.findIndex(part => part === 'view');\r\n if (index === -1 || index + 1 >= parts.length) {\r\n return '';\r\n }\r\n return parts[index + 2];\r\n }\r\n\r\n protected override _getUrl(url: string): string {\r\n url = super._getUrl(url);\r\n const tenantName = LYTenantHttpClient.getTenantName() || 'laiye';\r\n if (tenantName) {\r\n if (url.startsWith('/')) {\r\n url = `${tenantName}${url}`;\r\n } else {\r\n url = `${tenantName}/${url}`;\r\n }\r\n }\r\n return url;\r\n }\r\n}\r\n\r\n"],"names":["RUNTIME_001","RUNTIME_002","RUNTIME_003","RUNTIME_004","RUNTIME_005","RUNTIME_006","RUNTIME_007","RUNTIME_008","TYPE_001","BUILD_001","getDocsUrl","errorCode","type","getShortErrorMsg","errorDescMap","args","originalErrorMsg","msg","JSON","_extends","Object","target","i","arguments","source","key","runtimeDescMap","typeDescMap","buildDescMap","exports","polyfills","sdk","errorCodes","LOG_CATEGORY","logger","assert","condition","error","Error","warn","addUniqueItem","arr","item","getFMId","remoteInfo","isRemoteInfoWithEntry","remote","isPureRemoteEntry","safeWrapper","callback","disableWarn","res","e","isObject","val","objectToString","isPlainObject","isStaticResourcesEqual","url1","url2","REG_EXP","relativeUrl1","relativeUrl2","arrayOptions","options","Array","getRemoteEntryInfoFromSnapshot","snapshot","defaultRemoteEntryInfo","processModuleAlias","subPath","moduleName","CurrentGlobal","globalThis","window","nativeGlobal","document","Global","definePropertyGlobalVal","includeOwnProperty","globalLoading","setGlobalDefaultVal","_target___FEDERATION__","_target___FEDERATION__1","_target___FEDERATION__2","_target___FEDERATION__3","_target___FEDERATION__4","_target___FEDERATION__5","Map","___GLOBAL_PLUGIN__","___INSTANCES__","_moduleInfo","___SHARE__","___MANIFEST_LOADING__","___PRELOADED_MAP__","resetFederationGlobalInfo","setGlobalFederationInstance","FederationInstance","getGlobalFederationConstructor","setGlobalFederationConstructor","FederationConstructor","isDebug","getInfoWithoutType","keyRes","targetKeys","targetKey","targetTypeOrName","_","nKey","typeWithKeyRes","getGlobalSnapshot","getTargetSnapshotInfoByModuleInfo","moduleInfo","moduleKey","getModuleInfo","version","resModuleInfo","moduleKeyWithoutVersion","getModuleInfoWithoutVersion","getGlobalSnapshotInfoByModuleInfo","setGlobalSnapshotInfoByModuleInfo","moduleDetailInfo","addGlobalSnapshot","moduleInfos","keys","getRemoteEntryExports","globalName","remoteEntryKey","entryExports","registerGlobalPlugins","plugins","__GLOBAL_PLUGIN__","plugin","p","getGlobalHostPlugins","getPreloaded","id","setPreloaded","DEFAULT_SCOPE","DEFAULT_REMOTE_TYPE","buildIdentifier","build","numericIdentifier","numericIdentifierLoose","nonNumericIdentifier","preReleaseIdentifierLoose","preReleaseLoose","preReleaseIdentifier","preRelease","xRangeIdentifier","xRangePlain","hyphenRange","mainVersionLoose","loosePlain","gtlt","comparatorTrim","loneTilde","tildeTrim","loneCaret","caretTrim","star","caret","mainVersion","fullPlain","tilde","xRange","comparator","gte0","parseRegex","RegExp","isXVersion","pipe","fns","x","v","f","extractComparator","comparatorString","combineVersion","major","minor","patch","parseHyphen","range","_range","from","fromMajor","fromMinor","fromPatch","_fromPreRelease","_fromBuild","to","toMajor","toMinor","toPatch","toPreRelease","Number","parseComparatorTrim","parseTildeTrim","parseCaretTrim","parseCarets","rangeVersion","parseTildes","parseXRanges","ret","isXMajor","isXMinor","isXPatch","parseStar","parseGTE0","compareAtom","rangeAtom","versionAtom","comparePreRelease","rangePreRelease","versionPreRelease","Boolean","n","rangeElement","versionElement","compareVersion","eq","compare","parseComparatorString","parseRange","satisfy","parsedRange","parsedComparator","comparators","extractedVersion","versionOperator","versionMajor","versionMinor","versionPatch","extractedComparator","rangeOperator","rangeMajor","rangeMinor","rangePatch","formatShare","shareArgs","shareStrategy","get","Promise","_shareArgs_version","_shareArgs_scope","_shareArgs_strategy","formatShareConfigs","globalOptions","userOptions","shareInfos","pkgName","arrayShareArgs","shareConfig","shared","shareKey","newUserSharedOptions","isSameVersion","sharedVal","versionLt","a","b","transformInvalidVersion","isNumberVersion","splitArr","validVersion","findVersion","shareVersionMap","cb","prev","cur","isLoaded","isLoading","findSingletonVersionOrderByVersion","shareScopeMap","scope","versions","findSingletonVersionOrderByLoaded","isLoadingOrLoaded","getFindShareFunction","strategy","getRegisteredShare","localShareScopeMap","shareInfo","resolveShare","scopes","sc","requiredVersion","findShareFunction","maxOrSingletonVersion","defaultResolver","versionKey","versionValue","params","resolveShared","getGlobalShareScope","getTargetSharedOptions","extraOptions","sharedOptions","maxVersion","_extraOptions_resolver","resolver","ShareUtils","GlobalUtils","helpers","getBuilderId","FEDERATION_BUILD_IDENTIFIER","matchRemoteWithNameAndExpose","remotes","isNameMatched","expose","pkgNameOrAlias","isAliasMatched","exposeWithAlias","matchRemote","nameOrAlias","registerPlugins","hookInstances","globalPlugins","hookInstance","loadEsmEntry","entry","remoteEntryExports","resolve","reject","FEDERATION_ALLOW_NEW_FUNCTION","Function","loadSystemJsEntry","loadEntryScript","loaderHook","url","attrs","HTMLScriptElement","loadEntryDom","loadEntryNode","getRemoteEntryUniqueKey","getRemoteEntry","origin","uniqueKey","loadEntryHook","getRemoteInfo","Module","err","remoteSnapshot","loadFactory","remoteShareScope","shareScope","initScope","remoteEntryInitOptions","initContainerOptions","name","moduleFactory","symbolName","wrapModuleFactory","exposeContent","defineModuleId","Symbol","host","SyncHook","fn","wrapper","data","result","Set","AsyncHook","ls","call","checkReturnData","originalData","returnedData","SyncWaterfallHook","tempData","AsyncWaterfallHook","processError","prevData","PluginSystem","pluginName","pluginLife","lifecycle","hookName","defaultPreloadArgs","preloadConfig","formatPreloadArgs","preloadArgs","normalizePreloadExposes","exposes","preloadAssets","assets","useLinkPreload","cssAssets","jsAssetsWithoutEntry","entryAssets","asset","module","defaultAttrs","cssUrl","cssEl","needAttach","HTMLLinkElement","jsUrl","linkEl","scriptEl","assignRemoteInfo","remoteEntryInfo","entryUrl","snapshotPlugin","globalSnapshot","preloadOptions","splitId","splitInfo","traverseModuleInfo","traverse","isRoot","memo","snapshotValue","effectiveRemoteSnapshot","remoteKeys","subRemoteInfo","remoteValue","generatePreloadAssets","jsAssets","loadedSharedJsAssets","loadedSharedCssAssets","rootPreloadConfig","depsRemote","moduleInfoSnapshot","findPreloadConfig","remoteConfig","remoteEntryUrl","moduleAssetsInfo","normalizedPreloadExposes","_moduleInfoSnapshot_modules","moduleAssetInfo","handleAssets","assetsRes","assetsLength","index","assetsInfo","exposeFullPath","preloaded","collectSharedAssets","snapshotShared","registeredShared","_options_shared","s","arrayShareInfo","needPreloadJsAssets","needPreloadCssAssets","generatePreloadAssetsPlugin","getGlobalRemoteInfo","hostGlobalSnapshot","globalRemoteInfo","SnapshotHandler","globalRemoteSnapshot","globalSnapshotRes","hostSnapshot","mSnapshot","gSnapshot","remoteEntry","moduleSnapshot","remoteSnapshotRes","manifestUrl","getManifest","manifestJson","Response","fetch","asyncLoadProcess","HostInstance","SharedHandler","sharedKeys","sharedKey","sharedVals","loadShareRes","shareInfoRes","addUseIn","factory","gShared","loading","shareScopeName","promises","initTokens","initToken","hostName","register","_activeVersion_shareConfig","eager","activeVersion","activeVersionEager","initFn","mod","initRemoteModule","shareName","sharedArr","scopeName","lib","loaded","hostOptions","globalShareScopeMap","identifier","RemoteHandler","userRemotes","remoteMatchInfo","alias","idWithAlias","idWithName","moduleOptions","idRes","moduleOrFactory","moduleWrapper","failOver","preloadOps","ops","loadRemoteArgs","remoteSplitInfo","rawRemote","matchInfo","targetRemotes","normalizeRemote","findEqual","_item_alias","URL","registeredRemote","messages","remoteIndex","loadedModule","_Object_getOwnPropertyDescriptor","remoteEntryUniqueKey","remoteInsId","remoteInsIndex","ins","remoteIns","isAllSharedNotUsed","needDeleteKeys","instId","shareScopeVal","sharedPkgs","shareVersion","usedHostName","insId","_globalShareScopeMap_insId_shareScope_shareName","_globalShareScopeMap_insId_shareScope","_globalShareScopeMap_insId","remoteKey","FederationHost","container","userOptionsRes","globalOptionsRes","handledShared","optionsRes","pluginRes","defaultOptions","_object_without_properties_loose","excluded","sourceKeys","runtime","k","runtimeCore","utils","init","instance","loadRemote","loadRemote1","loadShare","loadShare1","loadShareSync","loadShareSync1","preloadRemote","registerRemotes","getInstance","getGlobalFederationInstance","buildId","GMInstance","isomorphicRslog","FederationModuleManifest","MANIFEST_EXT","BROWSER_LOG_KEY","BROWSER_LOG_VALUE","NameTransformSymbol","NameTransformMap","EncodedNameTransformMap","SEPARATOR","ManifestFileName","StatsFileName","MFModuleType","MODULE_DEVTOOL_IDENTIFIER","ENCODE_NAME_PREFIX","TEMP_DIR","MFPrefetchCommon","ContainerPlugin","ContainerReferencePlugin","ModuleFederationPlugin","SharePlugin","isBrowserEnv","isBrowserDebug","localStorage","isDebugMode","process","FEDERATION_DEBUG","getProcessEnv","PREFIX","setDebug","loggerInstance","setPrefix","prefix","createLogger","parseEntry","str","devVerOrUrl","separator","strSplit","devVersionOrUrl","defaultVersion","isEntry","versionOrEntryArr","versionOrEntry","composeKeyWithSeparator","sum","encodeName","withExt","ext","decodeName","decodedName","generateExposeFilename","exposeName","generateShareFilename","getResourceUrl","sourceUrl","publicPath","console","safeToString","info","VERSION_PATTERN_REGEXP","isRequiredVersion","simpleJoinRemoteEntry","rPath","rName","transformPath","strWithoutSlash","transformedPath","inferAutoPublicPath","generateSnapshotFromManifest","manifest","_manifest_metaData","_manifest_metaData1","overrides","getPublicPath","overridesKeys","remotesInfo","_manifest_remotes","next","matchedVersion","remoteEntryPath","remoteEntryName","remoteEntryType","remoteTypes","buildVersion","ssrRemoteEntry","basicRemoteSnapshot","prefetchInterface","path","fullSSRRemoteEntry","isManifestProvider","createScript","script","timeout","timeoutId","scripts","scriptSrc","createScriptRes","onScriptComplete","event","clearTimeout","onScriptCompleteCallback","needDeleteScript","setTimeout","createLink","link","links","l","linkHref","linkRef","createLinkRes","onLinkComplete","onLinkCompleteCallback","needDeleteLink","loadScript","createScriptHook","importNodeModule","importModule","loadNodeFetch","fetchModule","lazyLoaderHookFetch","input","hook","fetchFunction","createScriptNode","hookResult","urlObj","getFetch","handleScriptFetch","_vm_constants","vm","scriptContext","urlDirname","filename","_vm_constants_USE_MAIN_CONTEXT_DEFAULT_LOADER","eval","exportedInterface","loadModule","loadScriptNode","_info_attrs","_info_attrs1","fetch1","response","code","specifier","resolvedUrl","normalizeOptions","enableDefault","t","r","u","o","c","h","d","$","y","M","m","String","Math","g","D","S","w","O","Date","NaN","__createBinding","k2","desc","__exportStar","__defProp","__getOwnPropDesc","__getOwnPropNames","__hasOwnProp","__export","all","__copyProps","except","__toCommonJS","browser_exports","createLogger2","supportsSubstitutions","supportColor","originalConsoleLog","testString","css","ansiToCss","formatter","label","style","bold","red","green","orange","dodgerblue","magenta","getLabel","logType","labels","labelText","colorResult","finalLog","text","message","LOG_LEVEL","errorStackRegExp","anonymousErrorStackRegExp","isErrorStackMessage","validateOptions","validatedOptions","getLabel2","handleError","finalLog2","greet","LOG_TYPES2","maxLevel","customLabels","log","rest","lines","line","logger2","customLogger","startColor","endColor","isWord","char","gradient","chars","words","steps","output","styles","progress","LOG_TYPES","__webpack_require__","getter","definition","obj","prop","LYLogLevel","levelToString","LYDefaultLogFormatter","level","namespace","arg","value","LYIndexedDBLogStorage","openDB","db","store","setInterval","timestamp","random","now","performance","meta","method","consoleMethod","logEntry","logsToFlush","tx","count","cursor","deleteCount","logs","content","time","dayjs","blob","Blob","formatterImpl","storageImpl","setFormatter","setStorage","storage","setPrintToConsole","enabled","LYLogger","levelStr","classes","events","LYObject","Construct","className","ctor","def","previousValue","currentValue","wait","interval","LYError","details","LYCryptoError","REMOTE_ENTRY","REMOTE_MODULE","envInstances","LYEnv","product","isIframe","isElectron","CONFIG_ELEMENT_ID","METADATA_KEY","model","modelType","array","load","config","metadata","acc","LYBaseConfigModel","LYBaseConfig","config_url","axios","configElement","configMode","atob","success","LYRetryWaitExponential","LYHttpRetryConfig","LYHttpConfig","LYCryptoConfig","LYAppConfig","LYAddressConfig","LYConfig","niceErrors","annotationType","length","other","dataStructure","thing","property","derivation","errors","die","_len","_key","mockGlobal","getGlobal","self","getDescriptor","objectPrototype","EMPTY_ARRAY","EMPTY_OBJECT","hasProxy","Proxy","plainObjectString","assertProxies","warnAboutProxyRequirement","globalState","getNextId","once","func","invoked","isFunction","isStringish","proto","protoConstructor","isGenerator","constructor","addHiddenProp","object","propName","addHiddenFinalProp","createInstanceofPredicate","theClass","isES6Map","isPlainES6Map","mapProto","objectProto","nullProto","isES6Set","hasGetOwnPropertySymbols","getPlainObjectKeys","symbols","Reflect","stringifyKey","toPrimitive","hasProp","getFlag","flags","mask","setFlag","newValue","_arrayLikeToArray","_defineProperties","_toPropertyKey","_createClass","_createForOfIteratorHelperLoose","_unsupportedIterableToArray","TypeError","_inheritsLoose","_setPrototypeOf","_toPrimitive","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","decorator","is20223Decorator","storeAnnotation","prototype","isOverride","fieldName","assertNotDecorated","currentAnnotationType","requestedAnnotationType","collectStoredAnnotations","context","assert20223DecoratorType","types","$mobx","Atom","name_","_proto","listener","reportObserved","startBatch","propagateChanged","endBatch","isAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","atom","onBecomeObserved","identityComparer","structuralComparer","deepEqual","shallowComparer","defaultComparer","comparer","deepEnhancer","isObservable","isFlow","shallowEnhancer","isObservableObject","isObservableMap","isObservableSet","referenceEnhancer","refStructEnhancer","oldValue","OVERRIDE","createActionAnnotation","make_$1","extend_$1","decorate_20223_$1","adm","descriptor","_this$options_","actionDescriptor","createActionDescriptor","proxyTrap","mthd","kind","addInitializer","ann","_createAction","_ann$options_$name","_ann$options_","_ann$options_$autoAct","_ann$options_2","createAction","initMthd","_ann$options_3","_this$options_2","bound","assertActionDescriptor","_ref","_ref2","annotationType_","safeDescriptors","_annotation$options_","_annotation$options_$","_annotation$options_2","_annotation$options_$2","_annotation$options_3","_annotation$options_4","_adm$proxy_2","_adm$proxy_","createFlowAnnotation","make_$2","extend_$2","decorate_20223_$2","flowDescriptor","createFlowDescriptor","_this$options_3","assertFlowDescriptor","createComputedAnnotation","make_$3","extend_$3","decorate_20223_$3","assertComputedDescriptor","asObservableObject","createObservableAnnotation","make_$4","extend_$4","decorate_20223_$4","_this$options_$enhanc","assertObservableDescriptor","initializedObjects","WeakSet","initializeObservable","_ann$options_$enhance","observable","AUTO","autoAnnotation","createAutoAnnotation","make_$5","extend_$5","decorate_20223_$5","_this$options_4","set","flowAnnotation","actionAnnotation","observableAnnotation","_this$options_5","_this$options_6","OBSERVABLE","OBSERVABLE_REF","OBSERVABLE_SHALLOW","OBSERVABLE_STRUCT","defaultCreateObservableOptions","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","observableStructAnnotation","observableDecoratorAnnotation","getEnhancerFromOptions","getEnhancerFromAnnotation","getAnnotationFromOptions","_options$defaultDecor","createObservable","arg2","arg3","observableFactories","initialValues","createLegacyArray","createObservableArray","props","decorators","initObservable","extendObservable","asDynamicObservableObject","COMPUTED","COMPUTED_STRUCT","computedAnnotation","computedStructAnnotation","arg1","opts","_getDescriptor$config","currentActionId","nextActionId","isFunctionNameConfigurable","tmpNameDescriptor","actionName","autoAction","ref","executeAction","canRunAsDerivation","runInfo","_startAction","_endAction","notifySpy_","isSpyEnabled","startTime_","flattenedArgs","spyReportStart","ACTION","prevDerivation_","runAsAction","prevAllowStateChanges_","untrackedStart","allowStateChangesStart","prevAllowStateReads_","allowStateReadsStart","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","spyReportEnd","allowStateChanges","CREATE","_Atom","ObservableValue","enhancer","notifySpy","equals","_this","_this$value_","spyReport","UPDATE","checkIfStateModificationsAreAllowed","hasInterceptors","change","interceptChange","hasListeners","notifyListeners","handler","registerInterceptor","fireImmediately","registerListener","ComputedValue","propagateMaybeChanged","shouldCompute","prevTrackingContext","propagateChangeConfirmed","isCaughtException","wasSuspended","changed","track","trackDerivedFunction","clearObserving","firstTime","prevValue","prevU","isComputedValue","IDerivationState_","TraceMode","cause","prevAllowStateReads","prevUntracked","obs","changeDependenciesStateTo0","hasObservers","checkIfStateReadsAreAllowed","prevTracking","bindDependencies","warnAboutDerivationWithoutDependencies","prevObserving","observing","lowestNewObservingDerivationState","i0","dep","_dep","removeObserver","_dep2","addObserver","untracked","action","allowStateReads","canMergeGlobalState","isolateCalled","global","isolateGlobalState","node","queueForUnobservation","runReactions","list","logTraceInfo","printDepTree","getDependencyTree","tree","depth","child","Reaction","onInvalidate_","errorHandler_","requiresObservable_","notify","startTime","prevReaction","abortSignal","_this2","dispose","enterBreakPoint","trace","MAX_REACTION_ITERATIONS","runReactionsHelper","allReactions","iterations","remainingReactions","isReaction","setReactionScheduler","baseScheduler","listeners","END_EVENT","spy","ACTION_BOUND","AUTOACTION","AUTOACTION_BOUND","DEFAULT_ACTION_NAME","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","view","_opts$name","_opts","_opts2","_opts3","runSync","reaction","reactionRunner","scheduler","createSchedulerFromOptions","isScheduled","expression","effect","_opts$name2","_opts4","_opts5","effectAction","wrapErrorHandler","nextValue","errorHandler","baseFn","ON_BECOME_OBSERVED","ON_BECOME_UNOBSERVED","interceptHook","listenersKey","hookListeners","NEVER","ALWAYS","OBSERVED","configure","useProxies","enforceActions","ea","properties","annotations","descriptors","nodeToDependencyTree","unique","generatorId","FlowCancellationError","flowBoundAnnotation","generator","ctx","runId","gen","rejector","pendingPromise","promise","stepId","onFulfilled","onRejected","cancelPromise","_res","yieldedPromise","_isComputed","isComputed","isComputedProp","_isObservable","propOrCb","cbOrFire","observeObservableProperty","observeObservable","getAdministration","getAtomFromArgs","transaction","thisArg","getAdm","objectProxyTraps","_getAdm$set_","_getAdm$delete_","_getAdm$definePropert","_target$$mobx","_target$$mobx$proxy_","interceptable","interceptors","idx","listenable","makeObservable","SPLICE","MAX_SPLICE_SIZE","arrayTraps","isNaN","parseInt","arrayExtensions","ObservableArrayAdministration","owned_","legacyMode_","newV","oldV","values","newLength","currentLength","newItems","oldLength","delta","reserveArrayBuffer","lengthDelta","_this$values_","oldItems","_i","added","removed","owned","proxy","_len2","items","_key2","_len3","_key3","copy","addArrayExtension","simpleFunc","mapLikeFunc","reduceLikeFunc","funcName","funcFactory","dehancedValues","element","_this3","accumulator","isObservableArrayAdministration","ObservableMapMarker","ADD","DELETE","ObservableMap","initialData","enhancer_","newEntry","hasKey","_change","_this3$hasMap_$get","_this4","_this4$hasMap_$get","makeIterableForMap","_keys$next","done","_keys$next2","_iterator","_step","_step$value","_this5","_this6","_iterator2","_step2","_this7","replacementMap","convertToMap","orderedData","keysReportChangedCalled","_iterator3","_step3","deleted","_iterator4","_step4","_step4$value","_value","keyExisted","_value2","iter1","iter2","next1","next2","iterator","makeIterable","map","ObservableSetMarker","ObservableSet","callbackFn","_change2","makeIterableForSet","_values$next","_values$next2","otherSet","dehancedSet","descriptorCache","REMOVE","ObservableObjectAdministration","target_","values_","defaultAnnotation_","isAnnotation","assertAnnotable","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_getDescriptor","_this$pendingKeys_2","_options$name","getDebugName","isObservableObjectAdministration","_adm$target_$storedAn","ENTRY_0","createArrayEntryDescriptor","safariPrototypeSetterInheritanceBug","OBSERVABLE_ARRAY_BUFFER_SIZE","inherit","_StubArray","LegacyObservableArray","arrays","nextIndex","createArrayBufferItem","max","_observable","named","aStack","bStack","unwrap","areArrays","aCtor","bCtor","_length","_getGlobal$Iterator","maybeIteratorPrototype","getSelf","__MOBX_DEVTOOLS_GLOBAL_HOOK__","fail","invariant","cond","deepFields","distinctDeepFields","deepFieldsIndistinct","deepFieldsDistinct","getAllMethodsAndProperties","PENDING","FULFILLED","REJECTED","caseImpl","handlers","origPromise","oldPromise","reason","oldData","fromPromise","resolveBase","__decorate","StreamListener","initialValue","__assign","__decorate$1","RESERVED_NAMES","ViewModel","ownMethodsAndProperties","_a","computedBox","additionalDescriptor","destination","__assign$1","buildPath","isRecursivelyObservable","deepObserve","entrySet","WeakMap","genericListener","processChange","parent","observeRecursively","unobserveRecursively","entry_1","__extends","extendStatics","__","_super","ObservableGroupMap","base","groupBy","_b","_c","_d","keyToName","grouperItemInfo","itemIndex","groupByValue","groupArr","newGroupByValue","_r","newGroupArr","newGroupArrIndex","DeepMapEntry","versionChecker","current","maps","DeepMap","__assign$2","UNIQUE_ID","CONSTRUCT_KEY","SERIALIZE_CACHE","FREEZED_DATA","BACKUP_DATA","OBSERVABLE_DISPOSER","SERIALIZING","DESERIALIZING","SERIALIZE_DATA","SERIALIZE_CREATE","SERIALIZE_GET_CONSTRUCT_ARGS","uniqueId","reentryCount","deserializeObjects","addReentry","releaseReentry","LYSerializeableObserve","EventEmitter","observe","LYSerializeable","owner","create","serialize","OBSERVABLE_STATIC_DATA","LYObservable","LYOwnerObservable","propertyOrContext","targetAny","stringify","undefined","parse","LYBaseLocalStorage","stringifyValue","updateValue","cloneDeep","delKeys","parsedValue","LYLocalStorage","LYSessionStorage","sessionStorage","impl","setCloudStorageImpl","LYCloudStorage","sharedLocalStorage","sharedCloudStorage","LYBaseHttpError","inner_error","LYConfigError","LYNetworkError","LYHttpStatus","LYHttpStatusError","status","LYAppHttpError","LYAppPermission","app_name","codes","SESSION_KEY","LYSession","session","authentication_name","token","user_id","user_name","expires_in","permissions","is_first_login","created_at","display_name","email","phone","country_code","expirationTime","fifteenSecondsInMs","clearInterval","LYLangEnum","langKeys","languages","LANG_KEY","LYi18n","i18next","lang","defaultVariables","env","searchParams","URLSearchParams","location","navigator","urlOrJson","resourceUrl","ns","resource","CONFIG_URL","TENANT_APP_NAME","ORGANIZATION_APP_NAME","LYDefaultAppProvider","app","i18n","LYBaseApp","appName","camelCase","letter","Constructor","specificAppClassName","headerProvider","description","LYAppHttpClient","baseUrl","pattern","parts","part","tenantName","filterhost","reg","matched","resources","relativeUrl","componentName","remoteModule","LYBaseTenantApp","LYTenantHttpClient","LYSessionApi","httpClient","request","LYUserApi","user","currentPassword","newPassword","LYBaseAuthorizer","encodeURIComponent","LYWebAuthorizer","sessionApi","LYGatewayAuthorizer","LYDirectAuthorizer","REDIRECT_STORAGE_KEY","REDIRECT_STORAGE_EXPIRES_IN","PKCEUtils","Uint8Array","crypto","btoa","codeVerifier","encoder","TextEncoder","digest","sha256","LYRedirectAuthorizer","redirectInfo","queryParams","state","locale","ssoConfig","redirectUri","codeChallenge","ssoUrl","urlParams","LYLicenseApi","license","licenseId","tokenId","LYBaseCrypto","registerCryptoImpl","cryptoImpl","LYSMCrypto","iv","padded","hex","expectedLength","keyType","publicKey","paddedIv","keyHex","ivHex","dataHex","encrypted","sm4","decrypted","privateKey","privateKeyHex","signature","sm2","publicKeyHex","hmacResult","sm3","hashResult","LYGMCrypto","LENGTH_SIZE","LYCrypto","implClass","TextDecoder","base64","binaryString","bytes","byte","actualIv","actualKey","defaultKey","size","buffer","chunk","newBuffer","ivGetter","keyGetter","ArrayBuffer","dataBytes","blockSize","lengthBytes","DataView","encryptedChunk","LYOEMApi","stream","LYVerificationCodesApi","LYOrganizationApp","originResources","terms","LYTenantApi","tenant","LYConfigurationApi","LYTenantSession","claims","LYTenantAuthorizer","userName","password","LYTenantApp","LYApp","LYHttpClient","converter","requestData","requestParams","qs","progressEvent","query","ROUTE_PREFIX_WEB_API","formData","FormData","file","chunkSize","startChunkIndex","totalChunks","uploadedChunks","currentState","fileId","chunkIndex","start","end","uploadParams","File","fileName","resumeFromByte","headers","reader","downloadResponse","contentLength","contentType","contentRange","contentDisposition","totalSize","match","finalFileName","utf8Match","decodeURIComponent","filenameMatch","chunks","totalLoaded","newProgress","download","delimiter","customHeaders","fullUrl","abortController","AbortController","requestOptions","decoder","trimmed","errorMessage"],"mappings":"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"}
|