@next-core/runtime 1.70.0 → 1.71.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"DataStore.js","names":["_general","require","_storyboard","_eventTarget","_interopRequireDefault","_lodash","_bindListeners","_checkIf","_computeRealValue","_resolveData","_resolveDataStore","_handleHttpError","_computeRealProperties","_Runtime","_realTimeDataInspect","_isStrictMode","supportContextResolveTriggerBrickLifeCycle","DataStore","type","data","Map","changeEventType","pendingStack","hostBrick","stateStoreId","batchUpdate","batchUpdateContextsNames","rendererContext","routeMap","WeakMap","routeStackMap","constructor","has","name","getAllValues","Object","fromEntries","entries","map","value","getValue","_this$data$get","get","notifyRealTimeDataChange","realTimeDataInspectRoot","tplStateStoreId","callRealTimeDataInspectHooks","changeType","detail","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","callback","callbackRuntimeContext","useResolve","promise","loaded","Promise","resolve","loading","shouldDismiss","error","_this$rendererContext","renderId","_internalApiGetRenderId","load","cache","then","val","finishLoad","err","handleHttpError","callbackFactory","eventCallbackFactory","isObject","assign","console","warn","define","dataConfs","runtimeContext","asyncHostPropertyEntries","routePath","Array","isArray","pending","resolveDataStore","dataConf","isStrictMode","route","stack","add","set","onChange","dataName","listener","_this$data$get2","addEventListener","removeEventListener","waitFor","dataNames","pendingContexts","all","ctx","p","waitForAll","pendingResult","mountAsyncData","_this$routeMap$get","async","asyncMounted","asyncCheckIf","expose","computePropertyValue","trackConditionalResolve","resolvePolicy","undefined","hasFallbackValue","hasOwnProperty","track","strictCollectMemberUsage","if","size","resolveConf","transform","options","_this$rendererContext2","resolveData","lazy","asyncComputeRealValue","newData","EventTarget","trigger","_this$rendererContext3","registerArbitraryLifeCycle","listenerFactory","dep","batchAddListener","checkIf","computeRealValue","e","names","disposeDataInRoutes","routes","delete","pull","contextConf","event","exports"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n RouteConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport EventTarget from \"@ungap/event-target\";\nimport { pull } from \"lodash\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf, checkIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\nimport { computePropertyValue } from \"../compute/computeRealProperties.js\";\nimport { _internalApiGetRenderId } from \"../Runtime.js\";\nimport {\n callRealTimeDataInspectHooks,\n realTimeDataInspectRoot,\n} from \"./realTimeDataInspect.js\";\nimport { isStrictMode } from \"../../isStrictMode.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n name: string;\n value: unknown;\n eventTarget: EventTarget;\n useResolve?: boolean;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n asyncMounted?: boolean;\n deps: string[];\n}\n\ntype PendingStackItem = ReturnType<typeof resolveDataStore>;\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<PendingStackItem> = [];\n public readonly hostBrick?: RuntimeBrick;\n private readonly stateStoreId?: string;\n private batchUpdate = false;\n private batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n private routeMap = new WeakMap<RouteConf, Set<string>>();\n private routeStackMap = new WeakMap<RouteConf, Set<PendingStackItem>>();\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext,\n stateStoreId?: string\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n this.stateStoreId = stateStoreId;\n }\n\n has(name: string) {\n return this.data.has(name);\n }\n\n getAllValues(): Record<string, unknown> {\n return Object.fromEntries(\n [...this.data.entries()].map(([name, { value }]) => [name, value])\n );\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private notifyRealTimeDataChange(name: string, value: unknown) {\n if (realTimeDataInspectRoot) {\n const { tplStateStoreId } = realTimeDataInspectRoot;\n if (\n tplStateStoreId\n ? this.type === \"STATE\" && this.stateStoreId === tplStateStoreId\n : this.type === \"CTX\"\n ) {\n callRealTimeDataInspectHooks({\n changeType: \"update\",\n tplStateStoreId,\n detail: {\n name,\n value,\n },\n });\n }\n }\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.useResolve) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which is not using resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n const shouldDismiss = (error: unknown) => {\n // If render twice immediately, flow API contracts maybe cleared before\n // the second rendering, while the page load handlers of the first\n // rendering can't be cancelled, which throws `FlowApiNotFoundError`.\n // So we ignore error reporting for this case.\n let renderId: string | undefined;\n return (\n (error as Error)?.name === \"FlowApiNotFoundError\" &&\n !!(renderId = this.rendererContext?.renderId) &&\n renderId !== _internalApiGetRenderId()\n );\n };\n\n if (!promise) {\n promise = item.loading = item.load!({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n this.finishLoad(item, val);\n },\n (err) => {\n // Let users override error handling.\n if (item.useResolve && !shouldDismiss(err) && !callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n if (!shouldDismiss(err) && callback.error) {\n callbackFactory(\"error\")(err);\n }\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n private finishLoad(item: DataStoreItem, value: unknown) {\n if (!item.useResolve) {\n // This happens when a tracked conditional resolve switches from\n // resolve to fallback after an dep update triggered refresh but\n // before it's been resolved.\n return;\n }\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(\n dataConf,\n runtimeContext,\n asyncHostPropertyEntries,\n routePath\n ),\n this.type,\n isStrictMode(runtimeContext)\n );\n if (Array.isArray(routePath)) {\n for (const route of routePath) {\n const stack = this.routeStackMap.get(route);\n if (stack) {\n stack.add(pending);\n } else {\n this.routeStackMap.set(route, new Set([pending]));\n }\n }\n }\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): () => void {\n const eventTarget = this.data.get(dataName)?.eventTarget;\n eventTarget?.addEventListener(this.changeEventType, listener);\n return () => {\n eventTarget?.removeEventListener(this.changeEventType, listener);\n };\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /**\n * After mount, dispatch the change event when an async data is loaded.\n *\n * If param `route` is present, handle data defined in that route (or its descendants) only.\n */\n mountAsyncData(route?: RouteConf) {\n this.data.forEach((item) => {\n if (item.async && (!route || this.routeMap.get(route)?.has(item.name))) {\n // istanbul ignore next\n if (item.asyncMounted) {\n // eslint-disable-next-line no-console\n console.error(\n `Async data \"${item.name}\" already mounted. This is a bug of Brick Next, please report it.`\n );\n return;\n }\n item.asyncMounted = true;\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n this.finishLoad(item, value);\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostPropertyEntries &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n value = await computePropertyValue(\n asyncHostPropertyEntries,\n dataConf.name\n );\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let useResolve: boolean | undefined;\n let trackConditionalResolve: boolean | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" | undefined;\n if (value === undefined) {\n if (dataConf.resolve) {\n const hasFallbackValue = hasOwnProperty(dataConf, \"value\");\n // Track conditional resolve only if all matches:\n // - Track enabled\n // - Has fallback value\n // - Referencing other data in `resolve.if`\n trackConditionalResolve =\n dataConf.track &&\n hasFallbackValue &&\n hasOwnProperty(dataConf.resolve, \"if\") &&\n strictCollectMemberUsage(dataConf.resolve.if, this.type).size > 0;\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n useResolve = await asyncCheckIf(dataConf.resolve, runtimeContext);\n if (useResolve || trackConditionalResolve) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, {\n ...options,\n renderId: this.rendererContext?.renderId,\n })) as {\n value: unknown;\n }\n ).value;\n }\n if (useResolve) {\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load!();\n } else if (resolvePolicy === \"async\") {\n loading = load!();\n }\n } else if (!hasFallbackValue) {\n return false;\n }\n }\n if (\n (!useResolve || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n\n const newData: DataStoreItem = {\n name: dataConf.name,\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n useResolve,\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n trackConditionalResolve\n ? [dataConf.resolve, dataConf.value]\n : load\n ? dataConf.resolve\n : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n newData.useResolve = trackConditionalResolve\n ? checkIf(dataConf.resolve!, runtimeContext)\n : !!load;\n if (newData.useResolve) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n newData.eventTarget.addEventListener(this.changeEventType, (e) => {\n this.notifyRealTimeDataChange(dataConf.name, (e as CustomEvent).detail);\n });\n\n this.data.set(dataConf.name, newData);\n\n if (Array.isArray(routePath)) {\n for (const route of routePath) {\n const names = this.routeMap.get(route);\n if (names) {\n names.add(dataConf.name);\n } else {\n this.routeMap.set(route, new Set([dataConf.name]));\n }\n }\n }\n\n return true;\n }\n\n /**\n * For sub-routes to be incrementally rendered,\n * dispose their data and pending tasks.\n */\n disposeDataInRoutes(routes: RouteConf[]) {\n for (const route of routes) {\n const names = this.routeMap.get(route);\n if (names !== undefined) {\n for (const name of names) {\n this.data.delete(name);\n }\n this.routeMap.delete(route);\n }\n const stack = this.routeStackMap.get(route);\n if (stack !== undefined) {\n pull(this.pendingStack, ...stack);\n this.routeStackMap.delete(route);\n }\n }\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DataStore.js","names":["_general","require","_storyboard","_eventTarget","_interopRequireDefault","_lodash","_bindListeners","_checkIf","_computeRealValue","_resolveData","_resolveDataStore","_handleHttpError","_computeRealProperties","_Runtime","_realTimeDataInspect","_isStrictMode","supportContextResolveTriggerBrickLifeCycle","DataStore","type","data","Map","changeEventType","pendingStack","hostBrick","stateStoreId","batchUpdate","batchUpdateContextsNames","rendererContext","routeMap","WeakMap","routeStackMap","constructor","has","name","getAllValues","Object","fromEntries","entries","map","value","getValue","_this$data$get","get","notifyRealTimeDataChange","realTimeDataInspectRoot","tplStateStoreId","callRealTimeDataInspectHooks","changeType","detail","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","callback","callbackRuntimeContext","useResolve","promise","loaded","Promise","resolve","loading","shouldDismiss","error","_this$rendererContext","renderId","_internalApiGetRenderId","load","cache","then","val","finishLoad","err","handleHttpError","callbackFactory","eventCallbackFactory","isObject","assign","console","warn","nextValue","is","define","dataConfs","runtimeContext","asyncHostPropertyEntries","routePath","Array","isArray","pending","resolveDataStore","dataConf","isStrictMode","route","stack","add","set","onChange","dataName","listener","_this$data$get2","addEventListener","removeEventListener","waitFor","dataNames","pendingContexts","all","ctx","p","waitForAll","pendingResult","mountAsyncData","_this$routeMap$get","async","asyncMounted","asyncCheckIf","expose","computePropertyValue","trackConditionalResolve","resolvePolicy","undefined","hasFallbackValue","hasOwnProperty","track","strictCollectMemberUsage","if","size","resolveConf","transform","options","_this$rendererContext2","resolveData","lazy","asyncComputeRealValue","newData","EventTarget","trigger","_this$rendererContext3","registerArbitraryLifeCycle","listenerFactory","dep","batchAddListener","checkIf","computeRealValue","e","names","disposeDataInRoutes","routes","delete","pull","contextConf","event","exports"],"sources":["../../../../src/internal/data/DataStore.ts"],"sourcesContent":["import type {\n BatchUpdateContextItem,\n BrickEventHandlerCallback,\n ContextConf,\n ContextResolveTriggerBrickLifeCycle,\n RouteConf,\n} from \"@next-core/types\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { strictCollectMemberUsage } from \"@next-core/utils/storyboard\";\nimport EventTarget from \"@ungap/event-target\";\nimport { pull } from \"lodash\";\nimport { eventCallbackFactory, listenerFactory } from \"../bindListeners.js\";\nimport { asyncCheckIf, checkIf } from \"../compute/checkIf.js\";\nimport {\n asyncComputeRealValue,\n computeRealValue,\n} from \"../compute/computeRealValue.js\";\nimport { ResolveOptions, resolveData } from \"./resolveData.js\";\nimport { resolveDataStore } from \"./resolveDataStore.js\";\nimport type {\n AsyncPropertyEntry,\n RuntimeBrick,\n RuntimeContext,\n} from \"../interfaces.js\";\nimport { handleHttpError } from \"../../handleHttpError.js\";\nimport type { RendererContext } from \"../RendererContext.js\";\nimport { computePropertyValue } from \"../compute/computeRealProperties.js\";\nimport { _internalApiGetRenderId } from \"../Runtime.js\";\nimport {\n callRealTimeDataInspectHooks,\n realTimeDataInspectRoot,\n} from \"./realTimeDataInspect.js\";\nimport { isStrictMode } from \"../../isStrictMode.js\";\n\nconst supportContextResolveTriggerBrickLifeCycle = [\n \"onBeforePageLoad\",\n \"onPageLoad\",\n \"onBeforePageLeave\",\n \"onPageLeave\",\n \"onAnchorLoad\",\n \"onAnchorUnload\",\n] as ContextResolveTriggerBrickLifeCycle[];\n\nexport type DataStoreType = \"CTX\" | \"STATE\" | \"FORM_STATE\";\n\nexport interface DataStoreItem {\n name: string;\n value: unknown;\n eventTarget: EventTarget;\n useResolve?: boolean;\n loaded?: boolean;\n loading?: Promise<unknown>;\n load?: (options?: ResolveOptions) => Promise<unknown>;\n async?: boolean;\n asyncMounted?: boolean;\n deps: string[];\n}\n\ntype PendingStackItem = ReturnType<typeof resolveDataStore>;\n\nexport class DataStore<T extends DataStoreType = \"CTX\"> {\n private readonly type: T;\n private readonly data = new Map<string, DataStoreItem>();\n private readonly changeEventType: string;\n private readonly pendingStack: Array<PendingStackItem> = [];\n public readonly hostBrick?: RuntimeBrick;\n private readonly stateStoreId?: string;\n private batchUpdate = false;\n private batchUpdateContextsNames: string[] = [];\n private readonly rendererContext?: RendererContext;\n private routeMap = new WeakMap<RouteConf, Set<string>>();\n private routeStackMap = new WeakMap<RouteConf, Set<PendingStackItem>>();\n\n // 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整\n constructor(\n type: T,\n hostBrick?: RuntimeBrick,\n rendererContext?: RendererContext,\n stateStoreId?: string\n ) {\n this.type = type;\n this.changeEventType =\n this.type === \"FORM_STATE\"\n ? \"formstate.change\"\n : this.type === \"STATE\"\n ? \"state.change\"\n : \"context.change\";\n this.hostBrick = hostBrick;\n this.rendererContext = rendererContext;\n this.stateStoreId = stateStoreId;\n }\n\n has(name: string) {\n return this.data.has(name);\n }\n\n getAllValues(): Record<string, unknown> {\n return Object.fromEntries(\n [...this.data.entries()].map(([name, { value }]) => [name, value])\n );\n }\n\n getValue(name: string): unknown {\n return this.data.get(name)?.value;\n }\n\n private notifyRealTimeDataChange(name: string, value: unknown) {\n if (realTimeDataInspectRoot) {\n const { tplStateStoreId } = realTimeDataInspectRoot;\n if (\n tplStateStoreId\n ? this.type === \"STATE\" && this.stateStoreId === tplStateStoreId\n : this.type === \"CTX\"\n ) {\n callRealTimeDataInspectHooks({\n changeType: \"update\",\n tplStateStoreId,\n detail: {\n name,\n value,\n },\n });\n }\n }\n }\n\n private getAffectListByContext(name: string): string[] {\n const affectNames = [name];\n this.data.forEach((value, key) => {\n if (value.deps) {\n const isInDeps = value.deps.some((item) => affectNames.includes(item));\n isInDeps &&\n affectNames.push(key) &&\n affectNames.push(...this.getAffectListByContext(key));\n }\n });\n affectNames.shift();\n return [...new Set(affectNames)];\n }\n\n updateValues(\n values: BatchUpdateContextItem[],\n method: \"assign\" | \"replace\",\n argsFactory: (arg: unknown[]) => BatchUpdateContextItem\n ): void {\n this.batchUpdate = true;\n this.batchUpdateContextsNames = values.map((item) => item.name);\n if (\n [...new Set(this.batchUpdateContextsNames)].length !==\n this.batchUpdateContextsNames.length\n ) {\n throw new Error(`Batch update not allow to update same item`);\n }\n\n const updateContexts: Record<string, DataStoreItem> = {};\n const affectContexts: Record<string, DataStoreItem> = {};\n const affectDepsContextNames: string[] = [];\n\n values.forEach((arg) => {\n const { name, value } = argsFactory([arg]);\n const updateContextItem = this.data.get(name);\n affectDepsContextNames.push(...this.getAffectListByContext(name));\n updateContextItem && (updateContexts[name] = updateContextItem);\n this.updateValue(name as string, value, method);\n });\n\n affectDepsContextNames\n .filter((item) => !updateContexts[item])\n .forEach((name) => {\n const affectContextItem = this.data.get(name);\n affectContextItem && (affectContexts[name] = affectContextItem);\n });\n\n const triggerEvent = (contexts: Record<string, DataStoreItem>): void => {\n for (const key in contexts) {\n const context = contexts[key];\n context.eventTarget?.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: context.value,\n })\n );\n }\n };\n\n triggerEvent(updateContexts);\n triggerEvent(affectContexts);\n\n this.batchUpdate = false;\n\n return;\n }\n\n updateValue(\n name: string,\n value: unknown,\n method: \"assign\" | \"replace\" | \"refresh\" | \"load\" | \"set\",\n callback?: BrickEventHandlerCallback,\n callbackRuntimeContext?: RuntimeContext\n ): void {\n const item = this.data.get(name);\n if (!item) {\n throw new Error(`${this.type} '${name}' is not defined`);\n }\n\n if (method === \"refresh\" || method === \"load\") {\n if (!item.useResolve) {\n throw new Error(\n `You can not ${method} \"${this.type}.${name}\" which is not using resolve`\n );\n }\n\n let promise: Promise<unknown> | undefined;\n if (method === \"load\") {\n // Try to reuse previous request when calling `load`.\n if (item.loaded) {\n promise = Promise.resolve(item.value);\n } else if (item.loading) {\n promise = item.loading;\n }\n }\n\n const shouldDismiss = (error: unknown) => {\n // If render twice immediately, flow API contracts maybe cleared before\n // the second rendering, while the page load handlers of the first\n // rendering can't be cancelled, which throws `FlowApiNotFoundError`.\n // So we ignore error reporting for this case.\n let renderId: string | undefined;\n return (\n (error as Error)?.name === \"FlowApiNotFoundError\" &&\n !!(renderId = this.rendererContext?.renderId) &&\n renderId !== _internalApiGetRenderId()\n );\n };\n\n if (!promise) {\n promise = item.loading = item.load!({\n cache: method === \"load\" ? \"default\" : \"reload\",\n ...(value as ResolveOptions),\n });\n // Do not use the chained promise, since the callbacks need the original promise.\n promise.then(\n (val) => {\n this.finishLoad(item, val);\n },\n (err) => {\n // Let users override error handling.\n if (item.useResolve && !shouldDismiss(err) && !callback?.error) {\n handleHttpError(err);\n }\n }\n );\n }\n\n if (callback) {\n const callbackFactory = eventCallbackFactory(\n callback,\n callbackRuntimeContext!\n );\n\n promise.then(\n (val) => {\n callbackFactory(\"success\")({ value: val });\n callbackFactory(\"finally\")();\n },\n (err) => {\n if (!shouldDismiss(err) && callback.error) {\n callbackFactory(\"error\")(err);\n }\n callbackFactory(\"finally\")();\n }\n );\n }\n\n return;\n }\n\n if (method === \"replace\") {\n item.value = value;\n } else if (method === \"assign\") {\n if (isObject(item.value)) {\n Object.assign(item.value, value);\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `Non-object current value of \"${this.type}.${name}\" for \"context.assign\", try \"context.replace\" instead.`\n );\n item.value = value;\n }\n } else {\n // method === \"set\"\n // `context.set` and `state.set` is similar to React's setState,\n // which accepts either a value or an updater function.\n // And if the new value is the same as the current one, do nothing.\n let nextValue = value;\n if (typeof value === \"function\") {\n nextValue = (value as (prevState: unknown) => unknown)(item.value);\n }\n if (Object.is(item.value, nextValue)) {\n return;\n }\n item.value = nextValue;\n }\n\n if (this.batchUpdate) return;\n\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: item.value,\n })\n );\n }\n\n private finishLoad(item: DataStoreItem, value: unknown) {\n if (!item.useResolve) {\n // This happens when a tracked conditional resolve switches from\n // resolve to fallback after an dep update triggered refresh but\n // before it's been resolved.\n return;\n }\n item.loaded = true;\n item.value = value;\n item.eventTarget.dispatchEvent(\n new CustomEvent(this.changeEventType, {\n detail: value,\n })\n );\n }\n\n define(\n dataConfs: ContextConf[] | undefined,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): void {\n if (Array.isArray(dataConfs) && dataConfs.length > 0) {\n const pending = resolveDataStore(\n dataConfs,\n (dataConf: ContextConf) =>\n this.resolve(\n dataConf,\n runtimeContext,\n asyncHostPropertyEntries,\n routePath\n ),\n this.type,\n isStrictMode(runtimeContext)\n );\n if (Array.isArray(routePath)) {\n for (const route of routePath) {\n const stack = this.routeStackMap.get(route);\n if (stack) {\n stack.add(pending);\n } else {\n this.routeStackMap.set(route, new Set([pending]));\n }\n }\n }\n this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): () => void {\n const eventTarget = this.data.get(dataName)?.eventTarget;\n eventTarget?.addEventListener(this.changeEventType, listener);\n return () => {\n eventTarget?.removeEventListener(this.changeEventType, listener);\n };\n }\n\n async waitFor(dataNames: string[] | Set<string>): Promise<void> {\n for (const { pendingContexts } of this.pendingStack) {\n await Promise.all(\n [...dataNames].map((ctx) => {\n const p = pendingContexts.get(ctx);\n return p;\n })\n );\n }\n }\n\n async waitForAll(): Promise<void> {\n for (const { pendingResult } of this.pendingStack) {\n await pendingResult;\n }\n }\n\n /**\n * After mount, dispatch the change event when an async data is loaded.\n *\n * If param `route` is present, handle data defined in that route (or its descendants) only.\n */\n mountAsyncData(route?: RouteConf) {\n this.data.forEach((item) => {\n if (item.async && (!route || this.routeMap.get(route)?.has(item.name))) {\n // istanbul ignore next\n if (item.asyncMounted) {\n // eslint-disable-next-line no-console\n console.error(\n `Async data \"${item.name}\" already mounted. This is a bug of Brick Next, please report it.`\n );\n return;\n }\n item.asyncMounted = true;\n // An async data always has `loading`\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n item.loading!.then((value) => {\n this.finishLoad(item, value);\n });\n }\n });\n }\n\n private async resolve(\n dataConf: ContextConf,\n runtimeContext: RuntimeContext,\n asyncHostPropertyEntries?: AsyncPropertyEntry[],\n routePath?: RouteConf[]\n ): Promise<boolean> {\n if (!(await asyncCheckIf(dataConf, runtimeContext))) {\n return false;\n }\n let value: unknown;\n if (\n asyncHostPropertyEntries &&\n (this.type === \"STATE\" ? dataConf.expose : this.type === \"FORM_STATE\")\n ) {\n value = await computePropertyValue(\n asyncHostPropertyEntries,\n dataConf.name\n );\n }\n let load: DataStoreItem[\"load\"];\n let loading: Promise<unknown> | undefined;\n let useResolve: boolean | undefined;\n let trackConditionalResolve: boolean | undefined;\n let resolvePolicy: \"eager\" | \"lazy\" | \"async\" | undefined;\n if (value === undefined) {\n if (dataConf.resolve) {\n const hasFallbackValue = hasOwnProperty(dataConf, \"value\");\n // Track conditional resolve only if all matches:\n // - Track enabled\n // - Has fallback value\n // - Referencing other data in `resolve.if`\n trackConditionalResolve =\n dataConf.track &&\n hasFallbackValue &&\n hasOwnProperty(dataConf.resolve, \"if\") &&\n strictCollectMemberUsage(dataConf.resolve.if, this.type).size > 0;\n const resolveConf = {\n transform: \"value\",\n ...dataConf.resolve,\n };\n useResolve = await asyncCheckIf(dataConf.resolve, runtimeContext);\n if (useResolve || trackConditionalResolve) {\n load = async (options) =>\n (\n (await resolveData(resolveConf, runtimeContext, {\n ...options,\n renderId: this.rendererContext?.renderId,\n })) as {\n value: unknown;\n }\n ).value;\n }\n if (useResolve) {\n // `async` take precedence over `lazy`\n resolvePolicy = dataConf.resolve.async\n ? \"async\"\n : dataConf.resolve.lazy\n ? \"lazy\"\n : \"eager\";\n if (resolvePolicy === \"eager\") {\n value = await load!();\n } else if (resolvePolicy === \"async\") {\n loading = load!();\n }\n } else if (!hasFallbackValue) {\n return false;\n }\n }\n if (\n (!useResolve || resolvePolicy !== \"eager\") &&\n dataConf.value !== undefined\n ) {\n // If the context has no resolve, just use its `value`.\n // Or if the resolve is ignored or lazy, use its `value` as a fallback.\n value = await asyncComputeRealValue(dataConf.value, runtimeContext);\n }\n }\n\n if (this.data.has(dataConf.name)) {\n throw new Error(\n `${this.type} '${dataConf.name}' has already been declared`\n );\n }\n\n const newData: DataStoreItem = {\n name: dataConf.name,\n value,\n // This is required for tracking context, even if no `onChange` is specified.\n eventTarget: new EventTarget(),\n useResolve,\n load,\n loaded: resolvePolicy === \"eager\",\n loading,\n async: resolvePolicy === \"async\",\n deps: [],\n };\n\n if (resolvePolicy === \"lazy\") {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { trigger } = dataConf.resolve!;\n if (\n trigger &&\n supportContextResolveTriggerBrickLifeCycle.includes(trigger)\n ) {\n this.rendererContext?.registerArbitraryLifeCycle(trigger, () => {\n this.updateValue(dataConf.name, undefined, \"load\");\n });\n }\n }\n\n if (dataConf.onChange) {\n newData.eventTarget.addEventListener(\n this.changeEventType,\n listenerFactory(dataConf.onChange, runtimeContext)\n );\n }\n\n if (dataConf.track) {\n const deps = strictCollectMemberUsage(\n trackConditionalResolve\n ? [dataConf.resolve, dataConf.value]\n : load\n ? dataConf.resolve\n : dataConf.value,\n this.type\n );\n !load && (newData.deps = [...deps]);\n for (const dep of deps) {\n this.onChange(\n dep,\n this.batchAddListener(() => {\n newData.useResolve = trackConditionalResolve\n ? checkIf(dataConf.resolve!, runtimeContext)\n : !!load;\n if (newData.useResolve) {\n this.updateValue(dataConf.name, { cache: \"default\" }, \"refresh\");\n } else {\n this.updateValue(\n dataConf.name,\n computeRealValue(dataConf.value, runtimeContext),\n \"replace\"\n );\n }\n }, dataConf)\n );\n }\n }\n\n newData.eventTarget.addEventListener(this.changeEventType, (e) => {\n this.notifyRealTimeDataChange(dataConf.name, (e as CustomEvent).detail);\n });\n\n this.data.set(dataConf.name, newData);\n\n if (Array.isArray(routePath)) {\n for (const route of routePath) {\n const names = this.routeMap.get(route);\n if (names) {\n names.add(dataConf.name);\n } else {\n this.routeMap.set(route, new Set([dataConf.name]));\n }\n }\n }\n\n return true;\n }\n\n /**\n * For sub-routes to be incrementally rendered,\n * dispose their data and pending tasks.\n */\n disposeDataInRoutes(routes: RouteConf[]) {\n for (const route of routes) {\n const names = this.routeMap.get(route);\n if (names !== undefined) {\n for (const name of names) {\n this.data.delete(name);\n }\n this.routeMap.delete(route);\n }\n const stack = this.routeStackMap.get(route);\n if (stack !== undefined) {\n pull(this.pendingStack, ...stack);\n this.routeStackMap.delete(route);\n }\n }\n }\n\n private batchAddListener(\n listener: EventListener,\n contextConf: ContextConf\n ): EventListener {\n return (event: Event | CustomEvent): void => {\n if (\n this.batchUpdate &&\n this.batchUpdateContextsNames.includes(contextConf.name)\n ) {\n return;\n }\n listener(event);\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -272,7 +272,7 @@ async function _render(location, isBootstrap) {
272
272
  } else {
273
273
  path = path.replace(/^\/next\//, "/");
274
274
  }
275
- path && (hooks === null || hooks === void 0 || (_hooks$auth2 = hooks.auth) === null || _hooks$auth2 === void 0 || (_hooks$auth2$addPathT = _hooks$auth2.addPathToBlackList) === null || _hooks$auth2$addPathT === void 0 ? void 0 : _hooks$auth2$addPathT.call(_hooks$auth2, path));
275
+ path && path.startsWith("/") && (hooks === null || hooks === void 0 || (_hooks$auth2 = hooks.auth) === null || _hooks$auth2 === void 0 || (_hooks$auth2$addPathT = _hooks$auth2.addPathToBlackList) === null || _hooks$auth2$addPathT === void 0 ? void 0 : _hooks$auth2$addPathT.call(_hooks$auth2, path));
276
276
  });
277
277
  blocked = hooks === null || hooks === void 0 || (_hooks$auth3 = hooks.auth) === null || _hooks$auth3 === void 0 || (_hooks$auth3$isBlocke = _hooks$auth3.isBlockedPath) === null || _hooks$auth3$isBlocke === void 0 ? void 0 : _hooks$auth3$isBlocke.call(_hooks$auth3, location.pathname);
278
278
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Router.js","names":["locationsAreEqual","HttpAbortError","clearExpressionASTCache","clearFunctionASTCache","uniqueId","getHistory","getDataStores","postAsyncRender","renderRoutes","DataStore","clearResolveCache","mountTree","unmountTree","isOutsideApp","matchStoryboard","registerStoryboardFunctions","RendererContext","applyMode","applyTheme","getLocalAppsTheme","setMode","setTheme","setThemeVariant","_internalApiGetAppInBootstrapData","getRuntime","hooks","getPageInfo","resetAllComputedMarks","handleHttpError","isUnauthenticatedError","abortPendingRequest","initAbortController","setLoginStateCookie","registerCustomTemplates","fulfilStoryboard","RenderTag","insertPreviewRoutes","devtoolsHookEmit","setUIVersion","setAppVariable","setWatermark","clearMatchedRoutes","ErrorNode","PageError","resetReloadForError","shouldReloadForError","computeRealValue","_storyboards","WeakMap","_rendering","_nextRender","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_bootstrapFailed","_Router_brand","WeakSet","Router","constructor","storyboards","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","Set","_classPrivateFieldSet","history","window","addEventListener","event","message","_assertClassBrand","_getBlockMessageBeforePageLave","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","nextPrevLocation","listen","prevLocation","_queuedRender","catch","detail","_classPrivateFieldGet2","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect","to","state","from","_this$redirectCount","_this$redirectCount2","pathname","search","hash","process","env","NODE_ENV","console","error","Error","replace","next","_preRender","nextRender","undefined","_ref","_prevLocation$state","_location$state","_location$state2","_classPrivateFieldGet4","ignoreRendering","omittedLocationProps","key","notify","noIncremental","_classPrivateFieldGet3","didPerformIncrementalRender","dispatchPageLeave","storyboard","reload","_render","isBootstrap","_hooks$auth","_hooks$auth$isBlocked","_hooks$flowApi","_hooks$pageView","_classPrivateFieldGet5","_storyboard$app","renderId","blocked","auth","isBlockedPath","flowApi","clearCollectWidgetContract","finishPageView","pageView","create","app","currentAppId","id","BOOTSTRAP_UNION_FILE","appId","version","currentVersion","_storyboard$meta","_storyboard$meta$forE","_hooks$auth3","_hooks$auth3$isBlocke","meta","blackList","forEach","item","_hooks$auth2","_hooks$auth2$addPathT","path","url","split","e","addPathToBlackList","appChanged","flags","getFeatureFlags","prevRendererContext","redirectTo","status","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","theme","getMiscSettings","globalThemeVariant","_hooks$checkInstalled","_hooks$auth4","_hooks$checkPermissio","_storyboard$meta2","_hooks$flowApi2","_storyboard$meta3","checkInstalledApps","preCheckInstalledApps","routeHelper","bailout","output","unauthenticated","redirect","mergeMenus","menuRequests","menuConfs","Promise","all","mergeMenuConfs","returnNode","isCurrentBootstrap","isReCatch","NO_AUTH_GUARD","noAuthGuardLoginPath","failed","node","blockingList","rendererContext","runtimeContext","query","URLSearchParams","sys","getAuth","settings","brand","getBrandSettings","ctxStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","functions","collectContract","contracts","stores","rootMenuRequestNode","routes","child","menuRequestNode","setInitialMenuRequestNode","getMenuRequests","result","route","type","dispatchBeforePageLoad","uiVersion","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","pageTitle","title","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport {\n clearExpressionASTCache,\n clearFunctionASTCache,\n} from \"@next-core/cook\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderRoutes,\n} from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext, RouteHelper } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n setThemeVariant,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type {\n MenuRequestNode,\n RenderRoot,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport { handleHttpError, isUnauthenticatedError } from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { setLoginStateCookie } from \"../setLoginStateCookie.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\nimport { devtoolsHookEmit } from \"./devtools.js\";\nimport { setUIVersion } from \"../setUIVersion.js\";\nimport { setAppVariable } from \"../setAppVariable.js\";\nimport { setWatermark } from \"../setWatermark.js\";\nimport { clearMatchedRoutes } from \"./routeMatchedMap.js\";\nimport { ErrorNode, PageError } from \"./ErrorNode.js\";\nimport {\n resetReloadForError,\n shouldReloadForError,\n} from \"../shouldReloadForError.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\n\ntype RenderTask = InitialRenderTask | SubsequentRenderTask;\n\ninterface InitialRenderTask {\n location: NextLocation;\n prevLocation?: undefined;\n action?: undefined;\n}\n\ninterface SubsequentRenderTask {\n location: NextLocation;\n prevLocation: NextLocation;\n action: Action;\n}\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #nextRender?: RenderTask;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: { breadcrumb?: BreadcrumbItemConf[] };\n #bootstrapFailed = false;\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n // istanbul ignore next\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return { currentApp: this.#currentApp, previousApp: this.#previousApp };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n let nextPrevLocation = history.location;\n history.listen((location, action) => {\n const prevLocation = nextPrevLocation;\n nextPrevLocation = location;\n if (this.#rendering) {\n this.#nextRender = { location, prevLocation, action };\n } else {\n this.#queuedRender({ location, prevLocation, action }).catch(\n handleHttpError\n );\n }\n });\n return this.#queuedRender({ location: history.location });\n }\n\n async #queuedRender(next: RenderTask) {\n this.#rendering = true;\n try {\n await this.#preRender(next);\n } finally {\n this.#rendering = false;\n if (this.#nextRender) {\n const nextRender = this.#nextRender;\n this.#nextRender = undefined;\n await this.#queuedRender(nextRender);\n }\n }\n }\n\n async #preRender({ location, prevLocation, action }: RenderTask) {\n if (prevLocation) {\n let ignoreRendering: boolean | undefined;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (prevLocation.key === undefined ||\n // or the previous location specified notify false.\n prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n\n // Note: dot not perform incremental render when bootstrap failed.\n if (\n !ignoreRendering &&\n !location.state?.noIncremental &&\n !this.#bootstrapFailed\n ) {\n ignoreRendering =\n await this.#rendererContext?.didPerformIncrementalRender(\n location,\n prevLocation\n );\n }\n\n if (ignoreRendering) {\n return;\n }\n\n abortPendingRequest();\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n devtoolsHookEmit(\"locationChange\");\n }\n\n return this.#render(location, !prevLocation);\n }\n\n async #render(location: NextLocation, isBootstrap: boolean): Promise<void> {\n const renderId = (this.#renderId = uniqueId(\"render-id-\"));\n let blocked = hooks?.auth?.isBlockedPath?.(location.pathname);\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n // const renderStartTime = performance.now();\n const finishPageView = hooks?.pageView?.create();\n\n const storyboard = blocked\n ? undefined\n : matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n const currentAppId = storyboard?.app?.id;\n // dynamically change the value of the APP variable, if it's union app\n if (\n window.BOOTSTRAP_UNION_FILE &&\n currentAppId &&\n currentAppId !== previousApp?.id\n ) {\n setAppVariable({\n appId: currentAppId,\n version: storyboard.app.currentVersion!,\n });\n }\n\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n\n const currentApp = (this.#currentApp = storyboard?.app);\n\n if (currentApp) {\n storyboard?.meta?.blackList?.forEach?.((item) => {\n let path = item && (item.to || item.url);\n\n if (!path || typeof path !== \"string\") return;\n\n path = path\n .split(\"?\")[0]\n .replace(/\\${\\s*(?:(?:PATH|CTX)\\.)?(\\w+)\\s*}/g, \":$1\");\n\n if (item.to) {\n try {\n path = computeRealValue(path, {\n app: currentApp,\n } as RuntimeContext) as string;\n } catch (e) /* istanbul ignore next */ {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n } else {\n path = path.replace(/^\\/next\\//, \"/\");\n }\n\n path && hooks?.auth?.addPathToBlackList?.(path);\n });\n blocked = hooks?.auth?.isBlockedPath?.(location.pathname);\n }\n\n setWatermark();\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n clearExpressionASTCache();\n if (appChanged) {\n clearFunctionASTCache();\n }\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n finishPageView?.({ status: \"redirected\" });\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n setLoginStateCookie(location);\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", { detail: { previousApp, currentApp } })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n setThemeVariant(getRuntime().getMiscSettings().globalThemeVariant);\n\n if (currentApp && !blocked) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const routeHelper: RouteHelper = {\n bailout: (output) => {\n if (output.unauthenticated) {\n redirectToLogin();\n return true;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return true;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n },\n mergeMenus: async (menuRequests) => {\n const menuConfs = await Promise.all(menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n window.dispatchEvent(\n new CustomEvent(\"navConfig.change\", { detail: this.#navConfig })\n );\n },\n catch: async (error, returnNode, isCurrentBootstrap, isReCatch) => {\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n const noAuthGuardLoginPath =\n getRuntime().getMiscSettings().noAuthGuardLoginPath;\n if (isUnauthenticatedError(error) && noAuthGuardLoginPath) {\n redirectTo(noAuthGuardLoginPath as string, { from: location });\n return;\n }\n if (isCurrentBootstrap) {\n throw error;\n }\n if (!isReCatch && shouldReloadForError(error)) {\n window.location.reload();\n return;\n }\n return {\n failed: true,\n output: {\n node: await ErrorNode(error, returnNode, !isReCatch),\n blockingList: [],\n },\n };\n }\n },\n };\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\",\n { routeHelper, renderId }\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: { brand: getRuntime().getBrandSettings() },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n clearMatchedRoutes();\n const rootMenuRequestNode: MenuRequestNode = {};\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext,\n [],\n rootMenuRequestNode\n );\n if (routeHelper.bailout(output)) {\n return;\n }\n\n stores = getDataStores(runtimeContext);\n\n await postAsyncRender(output, runtimeContext, stores);\n\n rootMenuRequestNode.child = output.menuRequestNode;\n rendererContext.setInitialMenuRequestNode(rootMenuRequestNode);\n await routeHelper.mergeMenus(rendererContext.getMenuRequests());\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n if (isBootstrap) {\n this.#bootstrapFailed = true;\n }\n const result = await routeHelper.catch(error, renderRoot, isBootstrap);\n if (!result) {\n return;\n }\n ({ failed, output } = result);\n }\n resetReloadForError();\n renderRoot.child = output.node;\n this.#bootstrapFailed = false;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n setUIVersion(currentApp?.uiVersion);\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n finishPageView?.({\n status: \"ok\",\n path: output.path,\n pageTitle: document.title,\n });\n } else {\n finishPageView?.({ status: \"failed\" });\n }\n devtoolsHookEmit(\"rendered\");\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node = await ErrorNode(\n new PageError(\n blocked\n ? \"page blocked\"\n : currentApp\n ? \"page not found\"\n : \"app not found\"\n ),\n renderRoot,\n true\n );\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n finishPageView?.({ status: blocked ? \"blocked\" : \"not-found\" });\n devtoolsHookEmit(\"rendered\");\n }\n}\n\nfunction mergeMenuConfs(menuConfs: StaticMenuConf[]) {\n const navConfig = { breadcrumb: [] as BreadcrumbItemConf[] };\n for (const menuConf of menuConfs) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n return navConfig;\n}\n"],"mappings":";;;;;AAAA,SAAiBA,iBAAiB,QAAQ,SAAS;AAOnD,SAASC,cAAc,QAAQ,iBAAiB;AAChD,SACEC,uBAAuB,EACvBC,qBAAqB,QAChB,iBAAiB;AACxB,SAASC,QAAQ,QAAQ,QAAQ;AACjC,SAAyCC,UAAU,QAAQ,eAAe;AAC1E,SAEEC,aAAa,EACbC,eAAe,EACfC,YAAY,QACP,eAAe;AACtB,SAASC,SAAS,QAAQ,qBAAqB;AAC/C,SAASC,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,SAAS,EAAEC,WAAW,QAAQ,YAAY;AACnD,SAASC,YAAY,EAAEC,eAAe,QAAQ,sBAAsB;AACpE,SAASC,2BAA2B,QAAQ,kCAAkC;AAC9E,SAASC,eAAe,QAAqB,sBAAsB;AACnE,SACEC,SAAS,EACTC,UAAU,EACVC,iBAAiB,EACjBC,OAAO,EACPC,QAAQ,EACRC,eAAe,QACV,oBAAoB;AAC3B,SACEC,iCAAiC,EACjCC,UAAU,EACVC,KAAK,QACA,cAAc;AACrB,SAASC,WAAW,QAAQ,mBAAmB;AAM/C,SAASC,qBAAqB,QAAQ,6BAA6B;AACnE,SAASC,eAAe,EAAEC,sBAAsB,QAAQ,uBAAuB;AAC/E,SAASC,mBAAmB,EAAEC,mBAAmB,QAAQ,sBAAsB;AAC/E,SAASC,mBAAmB,QAAQ,2BAA2B;AAC/D,SAASC,uBAAuB,QAAQ,8BAA8B;AACtE,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,mBAAmB,QAAQ,0BAA0B;AAC9D,SAASC,gBAAgB,QAAQ,eAAe;AAChD,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,SAAS,EAAEC,SAAS,QAAQ,gBAAgB;AACrD,SACEC,mBAAmB,EACnBC,oBAAoB,QACf,4BAA4B;AACnC,SAASC,gBAAgB,QAAQ,+BAA+B;AAAC,IAAAC,YAAA,oBAAAC,OAAA;AAAA,IAAAC,UAAA,oBAAAD,OAAA;AAAA,IAAAE,WAAA,oBAAAF,OAAA;AAAA,IAAAG,eAAA,oBAAAH,OAAA;AAAA,IAAAI,gBAAA,oBAAAJ,OAAA;AAAA,IAAAK,wBAAA,oBAAAL,OAAA;AAAA,IAAAM,cAAA,oBAAAN,OAAA;AAAA,IAAAO,SAAA,oBAAAP,OAAA;AAAA,IAAAQ,WAAA,oBAAAR,OAAA;AAAA,IAAAS,YAAA,oBAAAT,OAAA;AAAA,IAAAU,UAAA,oBAAAV,OAAA;AAAA,IAAAW,gBAAA,oBAAAX,OAAA;AAAA,IAAAY,aAAA,oBAAAC,OAAA;AAgBjE,OAAO,MAAMC,MAAM,CAAC;EAclBC,WAAWA,CAACC,WAAyB,EAAE;IAAAC,2BAAA,OAAAL,aAAA;IAbvCM,0BAAA,OAASnB,YAAY;IACrBmB,0BAAA,OAAAjB,UAAU,EAAG,KAAK;IAClBiB,0BAAA,OAAAhB,WAAW;IACXgB,0BAAA,OAAAf,eAAe;IACfe,0BAAA,OAAAd,gBAAgB;IAChBc,0BAAA,OAAAb,wBAAwB,EAAG,IAAIc,GAAG,CAA8B,CAAC;IACjED,0BAAA,OAAAZ,cAAc,EAAG,CAAC;IAClBY,0BAAA,OAAAX,SAAS;IACTW,0BAAA,OAAAV,WAAW;IACXU,0BAAA,OAAAT,YAAY;IACZS,0BAAA,OAAAR,UAAU;IACVQ,0BAAA,OAAAP,gBAAgB,EAAG,KAAK;IAGtBS,qBAAA,CAAKrB,YAAY,EAAjB,IAAI,EAAgBiB,WAAJ,CAAC;IAEjB,MAAMK,QAAO,GAAGhE,UAAU,CAAC,CAAC;IAC5BiE,MAAM,CAACC,gBAAgB,CAAC,cAAc,EAAGC,KAAK,IAAK;MACjD,MAAMC,OAAO,GAAGC,iBAAA,CAAAd,aAAA,MAAI,EAACe,8BAA6B,CAAC,CAAAC,IAAA,CAAnC,IAAI,EAAgC,CAAC,CAAC,CAAC;MACvD;MACA,IAAIH,OAAO,EAAE;QACX;QACA;QACAD,KAAK,CAACK,cAAc,CAAC,CAAC;QACtB;QACAL,KAAK,CAACM,WAAW,GAAG,EAAE;MACxB,CAAC,MAAM;QACL;QACA,OAAON,KAAK,CAACM,WAAW;MAC1B;IACF,CAAC,CAAC;IAEFT,QAAO,CAACU,KAAK,CAAC,CAACC,QAAQ,EAAEC,MAAM,KAC7BP,iBAAA,CAAAd,aAAA,MAAI,EAACe,8BAA6B,CAAC,CAAAC,IAAA,CAAnC,IAAI,EAAgC;MAAEI,QAAQ;MAAEC;IAAO,CAAC,CAC1D,CAAC;EACH;EAEAC,WAAWA,CAAA,EAAG;IACZ,OAAOC,qBAAA,CAAK5B,SAAS,EAAd,IAAa,CAAC;EACvB;;EAEA;EACA6B,iBAAiBA,CAAA,EAAG;IAClB,OAAOD,qBAAA,CAAKhC,eAAe,EAApB,IAAmB,CAAC;EAC7B;EAEAkC,aAAaA,CAAA,EAAG;IACd,OAAO;MAAEC,UAAU,EAAEH,qBAAA,CAAK3B,WAAW,EAAhB,IAAe,CAAC;MAAE+B,WAAW,EAAEJ,qBAAA,CAAK1B,YAAY,EAAjB,IAAgB;IAAE,CAAC;EACzE;EAEA+B,YAAYA,CAAA,EAAG;IACb,OAAOL,qBAAA,CAAKzB,UAAU,EAAf,IAAc,CAAC;EACxB;EAoCA+B,SAASA,CAAA,EAAG;IACV1D,mBAAmB,CAAC,CAAC;IACrB,MAAMsC,OAAO,GAAGhE,UAAU,CAAC,CAAC;IAC5B,IAAIqF,gBAAgB,GAAGrB,OAAO,CAACW,QAAQ;IACvCX,OAAO,CAACsB,MAAM,CAAC,CAACX,QAAQ,EAAEC,MAAM,KAAK;MACnC,MAAMW,YAAY,GAAGF,gBAAgB;MACrCA,gBAAgB,GAAGV,QAAQ;MAC3B,IAAIG,qBAAA,CAAKlC,UAAU,EAAf,IAAc,CAAC,EAAE;QACnBmB,qBAAA,CAAKlB,WAAW,EAAhB,IAAI,EAAe;UAAE8B,QAAQ;UAAEY,YAAY;UAAEX;QAAO,CAArC,CAAC;MAClB,CAAC,MAAM;QACLP,iBAAA,CAAAd,aAAA,MAAI,EAACiC,aAAY,CAAC,CAAAjB,IAAA,CAAlB,IAAI,EAAe;UAAEI,QAAQ;UAAEY,YAAY;UAAEX;QAAO,CAAC,EAAEa,KAAK,CAC1DlE,eACF,CAAC;MACH;IACF,CAAC,CAAC;IACF,OAAO8C,iBAAA,CAAAd,aAAA,MAAI,EAACiC,aAAY,CAAC,CAAAjB,IAAA,CAAlB,IAAI,EAAe;MAAEI,QAAQ,EAAEX,OAAO,CAACW;IAAS,CAAC;EAC1D;AA+aF;AAAC,SAAAL,+BAjegCoB,MAG9B,EAAsB;EAAA,IAAAC,sBAAA;EACrB,MAAM3B,OAAO,GAAGhE,UAAU,CAAC,CAAC;EAC5B,MAAM4F,eAAe,GAAG5B,OAAO,CAAC6B,eAAe,CAAC,CAAC;EACjD,CAAAF,sBAAA,GAAAb,qBAAA,CAAK/B,gBAAgB,EAArB,IAAoB,CAAC,cAAA4C,sBAAA,eAArBA,sBAAA,CAAuBG,uBAAuB,CAACJ,MAAM,CAAC;EACtD,MAAMtB,OAAO,GAAGJ,OAAO,CAAC6B,eAAe,CAAC,CAAC;EACzC,IAAI,CAACD,eAAe,IAAIxB,OAAO,EAAE;IAC/B;IACAJ,OAAO,CAAC+B,OAAO,CAAC,CAAC;EACnB;EACA,OAAO3B,OAAO;AAChB;AAAC,SAAA4B,cAGCC,EAAU,EACVC,KAAmC,EACnCC,IAAkB,EACZ;EAAA,IAAAC,mBAAA,EAAAC,oBAAA;EACN,IAAI,CAAAtC,qBAAA,CAAKd,cAAc,EAAnB,IAAI,GAAAmD,mBAAA,GAAJtB,qBAAA,CAAK7B,cAAc,EAAnB,IAAkB,CAAC,EAAAoD,oBAAA,GAAAD,mBAAA,IAAAA,mBAAA,CAAD,CAAC,EAAAC,oBAAA,IAAK,EAAE,EAAE;IAC9B,MAAMjC,OAAO,GAAG,qCAAqC+B,IAAI,CAACG,QAAQ,GAAGH,IAAI,CAACI,MAAM,GAAGJ,IAAI,CAACK,IAAI,SAASP,EAAE,GAAG;IAC1G;IACA,IAAIQ,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,EAAE;MACnC;MACAC,OAAO,CAACC,KAAK,CAACzC,OAAO,CAAC;MACtB;IACF,CAAC,MAAM;MACL,MAAM,IAAI0C,KAAK,CAAC1C,OAAO,CAAC;IAC1B;EACF;EACApE,UAAU,CAAC,CAAC,CAAC+G,OAAO,CAACd,EAAE,EAAEC,KAAK,CAAC;AACjC;AAAC,eAAAV,cAoBmBwB,IAAgB,EAAE;EACpCjD,qBAAA,CAAKnB,UAAU,EAAf,IAAI,EAAc,IAAJ,CAAC;EACf,IAAI;IACF,MAAMyB,iBAAA,CAAAd,aAAA,MAAI,EAAC0D,UAAS,CAAC,CAAA1C,IAAA,CAAf,IAAI,EAAYyC,IAAI,CAAC;EAC7B,CAAC,SAAS;IACRjD,qBAAA,CAAKnB,UAAU,EAAf,IAAI,EAAc,KAAJ,CAAC;IACf,IAAIkC,qBAAA,CAAKjC,WAAW,EAAhB,IAAe,CAAC,EAAE;MACpB,MAAMqE,UAAU,GAAGpC,qBAAA,CAAKjC,WAAW,EAAhB,IAAe,CAAC;MACnCkB,qBAAA,CAAKlB,WAAW,EAAhB,IAAI,EAAesE,SAAJ,CAAC;MAChB,MAAM9C,iBAAA,CAAAd,aAAA,MAAI,EAACiC,aAAY,CAAC,CAAAjB,IAAA,CAAlB,IAAI,EAAe2C,UAAU,CAAC;IACtC;EACF;AACF;AAAC,eAAAD,WAAAG,IAAA,EAEgE;EAAA,IAAhD;IAAEzC,QAAQ;IAAEY,YAAY;IAAEX;EAAmB,CAAC,GAAAwC,IAAA;EAC7D,IAAI7B,YAAY,EAAE;IAAA,IAAA8B,mBAAA,EAAAC,eAAA,EAAAC,gBAAA,EAAAC,sBAAA;IAChB,IAAIC,eAAoC;IACxC,MAAMC,oBAA2C,GAAG;MAClDlB,IAAI,EAAEW,SAAS;MACfjB,KAAK,EAAEiB;IACT,CAAC;IACD;IACA;IACE;IACAxC,QAAQ,CAACgD,GAAG,KAAKR,SAAS;IAC1B;IACA;IACCvC,MAAM,KAAK,KAAK;IACf;IACCW,YAAY,CAACoC,GAAG,KAAKR,SAAS;IAC7B;IACA,EAAAE,mBAAA,GAAA9B,YAAY,CAACW,KAAK,cAAAmB,mBAAA,uBAAlBA,mBAAA,CAAoBO,MAAM,MAAK,KAAK,CAAE,EAC1C;MACAF,oBAAoB,CAACC,GAAG,GAAGR,SAAS;IACtC;IACA,IACExH,iBAAiB,CACf;MAAE,GAAG4F,YAAY;MAAE,GAAGmC;IAAqB,CAAC,EAC5C;MAAE,GAAG/C,QAAQ;MAAE,GAAG+C;IAAqB,CACzC,CAAC,IACA9C,MAAM,KAAK,KAAK,IAAI,EAAA0C,eAAA,GAAA3C,QAAQ,CAACuB,KAAK,cAAAoB,eAAA,uBAAdA,eAAA,CAAgBM,MAAM,MAAK,KAAM,EACtD;MACA;MACA;MACAH,eAAe,GAAG,IAAI;IACxB;;IAEA;IACA,IACE,CAACA,eAAe,IAChB,GAAAF,gBAAA,GAAC5C,QAAQ,CAACuB,KAAK,cAAAqB,gBAAA,eAAdA,gBAAA,CAAgBM,aAAa,KAC9B,CAAC/C,qBAAA,CAAKxB,gBAAgB,EAArB,IAAoB,CAAC,EACtB;MAAA,IAAAwE,sBAAA;MACAL,eAAe,GACb,QAAAK,sBAAA,GAAMhD,qBAAA,CAAK/B,gBAAgB,EAArB,IAAoB,CAAC,cAAA+E,sBAAA,uBAArBA,sBAAA,CAAuBC,2BAA2B,CACtDpD,QAAQ,EACRY,YACF,CAAC;IACL;IAEA,IAAIkC,eAAe,EAAE;MACnB;IACF;IAEAhG,mBAAmB,CAAC,CAAC;IACrB,CAAA+F,sBAAA,GAAA1C,qBAAA,CAAK/B,gBAAgB,EAArB,IAAoB,CAAC,cAAAyE,sBAAA,eAArBA,sBAAA,CAAuBQ,iBAAiB,CAAC,CAAC;IAE1C,IAAIpD,MAAM,KAAK,KAAK,EAAE;MACpB,MAAMqD,UAAU,GAAGxH,eAAe,CAChCqE,qBAAA,CAAKpC,YAAY,EAAjB,IAAgB,CAAC,EACjBiC,QAAQ,CAAC2B,QACX,CAAC;MACD;MACA;MACA,IAAI9F,YAAY,CAACyH,UAAU,CAAC,EAAE;QAC5BhE,MAAM,CAACU,QAAQ,CAACuD,MAAM,CAAC,CAAC;QACxB;MACF;IACF;IAEAlG,gBAAgB,CAAC,gBAAgB,CAAC;EACpC;EAEA,OAAOqC,iBAAA,CAAAd,aAAA,MAAI,EAAC4E,OAAM,CAAC,CAAA5D,IAAA,CAAZ,IAAI,EAASI,QAAQ,EAAE,CAACY,YAAY;AAC7C;AAAC,eAAA4C,QAEaxD,QAAsB,EAAEyD,WAAoB,EAAiB;EAAA,IAAAC,WAAA,EAAAC,qBAAA,EAAAC,cAAA,EAAAC,eAAA,EAAAC,sBAAA,EAAAC,eAAA;EACzE,MAAMC,QAAQ,GAAI5E,qBAAA,CAAKb,SAAS,EAAd,IAAI,EAAanD,QAAQ,CAAC,YAAY,CAAzB,CAA2B;EAC1D,IAAI6I,OAAO,GAAGxH,KAAK,aAALA,KAAK,gBAAAiH,WAAA,GAALjH,KAAK,CAAEyH,IAAI,cAAAR,WAAA,gBAAAC,qBAAA,GAAXD,WAAA,CAAaS,aAAa,cAAAR,qBAAA,uBAA1BA,qBAAA,CAAA/D,IAAA,CAAA8D,WAAA,EAA6B1D,QAAQ,CAAC2B,QAAQ,CAAC;EAE7DhF,qBAAqB,CAAC,CAAC;EACvBjB,iBAAiB,CAAC,CAAC;EACnBe,KAAK,aAALA,KAAK,gBAAAmH,cAAA,GAALnH,KAAK,CAAE2H,OAAO,cAAAR,cAAA,eAAdA,cAAA,CAAgBS,0BAA0B,CAAC,CAAC;EAE5C,MAAMhF,OAAO,GAAGhE,UAAU,CAAC,CAAC;EAC5BgE,OAAO,CAAC+B,OAAO,CAAC,CAAC;;EAEjB;EACA,MAAMkD,cAAc,GAAG7H,KAAK,aAALA,KAAK,gBAAAoH,eAAA,GAALpH,KAAK,CAAE8H,QAAQ,cAAAV,eAAA,uBAAfA,eAAA,CAAiBW,MAAM,CAAC,CAAC;EAEhD,MAAMlB,UAAU,GAAGW,OAAO,GACtBzB,SAAS,GACT1G,eAAe,CAACqE,qBAAA,CAAKpC,YAAY,EAAjB,IAAgB,CAAC,EAAEiC,QAAQ,CAAC2B,QAAQ,CAAC;EAEzD,MAAMpB,WAAW,IAAAuD,sBAAA,GAAG3D,qBAAA,CAAKhC,eAAe,EAApB,IAAmB,CAAC,cAAA2F,sBAAA,uBAApBA,sBAAA,CAAsBW,GAAG;EAC7C,MAAMC,YAAY,GAAGpB,UAAU,aAAVA,UAAU,gBAAAS,eAAA,GAAVT,UAAU,CAAEmB,GAAG,cAAAV,eAAA,uBAAfA,eAAA,CAAiBY,EAAE;EACxC;EACA,IACErF,MAAM,CAACsF,oBAAoB,IAC3BF,YAAY,IACZA,YAAY,MAAKnE,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEoE,EAAE,GAChC;IACApH,cAAc,CAAC;MACbsH,KAAK,EAAEH,YAAY;MACnBI,OAAO,EAAExB,UAAU,CAACmB,GAAG,CAACM;IAC1B,CAAC,CAAC;EACJ;EAEA,IAAIzB,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEmB,GAAG,EAAE;IACnB,MAAMvH,gBAAgB,CAACoG,UAAU,CAAC;EACpC;EAEA,MAAMhD,UAAU,GAAIlB,qBAAA,CAAKZ,WAAW,EAAhB,IAAI,EAAe8E,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEmB,GAAhB,CAAoB;EAEvD,IAAInE,UAAU,EAAE;IAAA,IAAA0E,gBAAA,EAAAC,qBAAA,EAAAC,YAAA,EAAAC,qBAAA;IACd7B,UAAU,aAAVA,UAAU,gBAAA0B,gBAAA,GAAV1B,UAAU,CAAE8B,IAAI,cAAAJ,gBAAA,gBAAAA,gBAAA,GAAhBA,gBAAA,CAAkBK,SAAS,cAAAL,gBAAA,gBAAAC,qBAAA,GAA3BD,gBAAA,CAA6BM,OAAO,cAAAL,qBAAA,eAApCA,qBAAA,CAAArF,IAAA,CAAAoF,gBAAA,EAAwCO,IAAI,IAAK;MAAA,IAAAC,YAAA,EAAAC,qBAAA;MAC/C,IAAIC,IAAI,GAAGH,IAAI,KAAKA,IAAI,CAACjE,EAAE,IAAIiE,IAAI,CAACI,GAAG,CAAC;MAExC,IAAI,CAACD,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;MAEvCA,IAAI,GAAGA,IAAI,CACRE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACbxD,OAAO,CAAC,qCAAqC,EAAE,KAAK,CAAC;MAExD,IAAImD,IAAI,CAACjE,EAAE,EAAE;QACX,IAAI;UACFoE,IAAI,GAAG5H,gBAAgB,CAAC4H,IAAI,EAAE;YAC5BjB,GAAG,EAAEnE;UACP,CAAmB,CAAW;QAChC,CAAC,CAAC,OAAOuF,CAAC,EAAE,0BAA2B;UACrC;UACA5D,OAAO,CAACC,KAAK,CAAC2D,CAAC,CAAC;QAClB;MACF,CAAC,MAAM;QACLH,IAAI,GAAGA,IAAI,CAACtD,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;MACvC;MAEAsD,IAAI,KAAIjJ,KAAK,aAALA,KAAK,gBAAA+I,YAAA,GAAL/I,KAAK,CAAEyH,IAAI,cAAAsB,YAAA,gBAAAC,qBAAA,GAAXD,YAAA,CAAaM,kBAAkB,cAAAL,qBAAA,uBAA/BA,qBAAA,CAAA7F,IAAA,CAAA4F,YAAA,EAAkCE,IAAI,CAAC;IACjD,CAAC,CAAC;IACFzB,OAAO,GAAGxH,KAAK,aAALA,KAAK,gBAAAyI,YAAA,GAALzI,KAAK,CAAEyH,IAAI,cAAAgB,YAAA,gBAAAC,qBAAA,GAAXD,YAAA,CAAaf,aAAa,cAAAgB,qBAAA,uBAA1BA,qBAAA,CAAAvF,IAAA,CAAAsF,YAAA,EAA6BlF,QAAQ,CAAC2B,QAAQ,CAAC;EAC3D;EAEAnE,YAAY,CAAC,CAAC;;EAEd;EACA,MAAMuI,UAAU,GACdxF,WAAW,IAAID,UAAU,GACrBC,WAAW,CAACoE,EAAE,KAAKrE,UAAU,CAACqE,EAAE,GAChCpE,WAAW,KAAKD,UAAU;EAEhCpF,uBAAuB,CAAC,CAAC;EACzB,IAAI6K,UAAU,EAAE;IACd5K,qBAAqB,CAAC,CAAC;EACzB;;EAEA;;EAEA;EACA,MAAM6K,KAAK,GAAGxJ,UAAU,CAAC,CAAC,CAACyJ,eAAe,CAAC,CAAC;EAC5C,MAAMC,mBAAmB,GAAG/F,qBAAA,CAAK/B,gBAAgB,EAArB,IAAoB,CAAC;EAEjD,MAAM+H,UAAU,GAAGA,CAAC7E,EAAU,EAAEC,KAAwB,KAAW;IACjE+C,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAG;MAAE8B,MAAM,EAAE;IAAa,CAAC,CAAC;IAC1CjG,qBAAA,CAAK9B,wBAAwB,EAA7B,IAA4B,CAAC,CAACgI,GAAG,CAACH,mBAAmB,CAAC;IACtDxG,iBAAA,CAAAd,aAAA,MAAI,EAACyC,aAAY,CAAC,CAAAzB,IAAA,CAAlB,IAAI,EAAe0B,EAAE,EAAEC,KAAK,EAAEvB,QAAQ;EACxC,CAAC;EAED,MAAMsG,eAAe,GAAGA,CAAA,KAAY;IAClC,MAAMhF,EAAE,GAAG0E,KAAK,CAAC,aAAa,CAAC,GAAG,iBAAiB,GAAG,aAAa;IACnEhJ,mBAAmB,CAACgD,QAAQ,CAAC;IAC7BmG,UAAU,CAAC7E,EAAE,EAAE;MAAEE,IAAI,EAAExB;IAAS,CAAC,CAAC;EACpC,CAAC;EAED,MAAMuG,IAAI,GAAGC,QAAQ,CAACC,aAAa,CAAC,mBAAmB,CAAgB;EACvE,MAAMC,MAAM,GAAGF,QAAQ,CAACC,aAAa,CAAC,qBAAqB,CAAgB;EAE3E,MAAME,UAAsB,GAAG;IAC7BC,GAAG,EAAEzJ,SAAS,CAAC0J,IAAI;IACnBC,SAAS,EAAEP,IAAI;IACfQ,YAAY,EAAEL;EAChB,CAAC;EAED,MAAMM,qBAAqB,GAAGA,CAAA,KAAY;IAAA,IAAAC,qBAAA;IACxCrL,WAAW,CAAC2K,IAAI,CAAC;IACjB3K,WAAW,CAAC8K,MAAM,CAAC;;IAEnB;IACAvG,qBAAA,CAAK9B,wBAAwB,EAA7B,IAA4B,CAAC,CAACgI,GAAG,CAACH,mBAAmB,CAAC;IACtD,KAAK,MAAMX,IAAI,IAAIpF,qBAAA,CAAK9B,wBAAwB,EAA7B,IAA4B,CAAC,EAAE;MAChD,IAAIkH,IAAI,EAAE;QACRA,IAAI,CAAC2B,iBAAiB,CAAC,CAAC;QACxB3B,IAAI,CAAC4B,OAAO,CAAC,CAAC;MAChB;IACF;IACAhH,qBAAA,CAAK9B,wBAAwB,EAA7B,IAA4B,CAAC,CAAC+I,KAAK,CAAC,CAAC;IACrC3K,KAAK,aAALA,KAAK,gBAAAwK,qBAAA,GAALxK,KAAK,CAAE4K,iBAAiB,cAAAJ,qBAAA,eAAxBA,qBAAA,CAA0BK,KAAK,CAAC,CAAC;IAEjC,IAAIvB,UAAU,EAAE;MACd3G,qBAAA,CAAKX,YAAY,EAAjB,IAAI,EAAgB8B,WAAJ,CAAC;MACjBjB,MAAM,CAACiI,aAAa,CAClB,IAAIC,WAAW,CAAC,YAAY,EAAE;QAAEzG,MAAM,EAAE;UAAER,WAAW;UAAED;QAAW;MAAE,CAAC,CACvE,CAAC;IACH;EACF,CAAC;EAEDjE,QAAQ,CACLiE,UAAU,KACRnE,iBAAiB,CAAC,CAAC,CAACmE,UAAU,CAACqE,EAAE,CAAC,IAAIrE,UAAU,CAACmH,KAAK,CAAC,IACxD,OACJ,CAAC;EACDrL,OAAO,CAAC,SAAS,CAAC;EAClBE,eAAe,CAACE,UAAU,CAAC,CAAC,CAACkL,eAAe,CAAC,CAAC,CAACC,kBAAkB,CAAC;EAElE,IAAIrH,UAAU,IAAI,CAAC2D,OAAO,EAAE;IAAA,IAAA2D,qBAAA,EAAAC,YAAA,EAAAC,qBAAA,EAAAC,iBAAA,EAAAC,eAAA,EAAAC,iBAAA;IAC1BxL,KAAK,aAALA,KAAK,gBAAAmL,qBAAA,GAALnL,KAAK,CAAEyL,kBAAkB,cAAAN,qBAAA,eAAzBA,qBAAA,CAA2BO,qBAAqB,CAC9C7E,UAAU,EACTuB,KAAK,IAAK,CAAC,CAACtI,iCAAiC,CAACsI,KAAK,CACtD,CAAC;IAED,MAAMuD,WAAwB,GAAG;MAC/BC,OAAO,EAAGC,MAAM,IAAK;QACnB,IAAIA,MAAM,CAACC,eAAe,EAAE;UAC1BjC,eAAe,CAAC,CAAC;UACjB,OAAO,IAAI;QACb;QACA,IAAIgC,MAAM,CAACE,QAAQ,EAAE;UACnBrC,UAAU,CAACmC,MAAM,CAACE,QAAQ,CAAC9C,IAAI,EAAE4C,MAAM,CAACE,QAAQ,CAACjH,KAAK,CAAC;UACvD,OAAO,IAAI;QACb;QACA;QACAnC,qBAAA,CAAKd,cAAc,EAAnB,IAAI,EAAkB,CAAJ,CAAC;MACrB,CAAC;MACDmK,UAAU,EAAE,MAAOC,YAAY,IAAK;QAClC,MAAMC,SAAS,GAAG,MAAMC,OAAO,CAACC,GAAG,CAACH,YAAY,CAAC;QACjDtJ,qBAAA,CAAKV,UAAU,EAAf,IAAI,EAAcoK,cAAc,CAACH,SAAS,CAA5B,CAAC;QACfrJ,MAAM,CAACiI,aAAa,CAClB,IAAIC,WAAW,CAAC,kBAAkB,EAAE;UAAEzG,MAAM,EAAEZ,qBAAA,CAAKzB,UAAU,EAAf,IAAc;QAAE,CAAC,CACjE,CAAC;MACH,CAAC;MACDoC,KAAK,EAAE,MAAAA,CAAOoB,KAAK,EAAE6G,UAAU,EAAEC,kBAAkB,EAAEC,SAAS,KAAK;QACjE,IAAIpM,sBAAsB,CAACqF,KAAK,CAAC,IAAI,CAAC5C,MAAM,CAAC4J,aAAa,EAAE;UAC1D5C,eAAe,CAAC,CAAC;UACjB;QACF,CAAC,MAAM,IAAIpE,KAAK,YAAYjH,cAAc,EAAE;UAC1CkF,qBAAA,CAAK9B,wBAAwB,EAA7B,IAA4B,CAAC,CAACgI,GAAG,CAACH,mBAAmB,CAAC;UACtD;QACF,CAAC,MAAM;UACL,MAAMiD,oBAAoB,GACxB3M,UAAU,CAAC,CAAC,CAACkL,eAAe,CAAC,CAAC,CAACyB,oBAAoB;UACrD,IAAItM,sBAAsB,CAACqF,KAAK,CAAC,IAAIiH,oBAAoB,EAAE;YACzDhD,UAAU,CAACgD,oBAAoB,EAAY;cAAE3H,IAAI,EAAExB;YAAS,CAAC,CAAC;YAC9D;UACF;UACA,IAAIgJ,kBAAkB,EAAE;YACtB,MAAM9G,KAAK;UACb;UACA,IAAI,CAAC+G,SAAS,IAAIpL,oBAAoB,CAACqE,KAAK,CAAC,EAAE;YAC7C5C,MAAM,CAACU,QAAQ,CAACuD,MAAM,CAAC,CAAC;YACxB;UACF;UACA,OAAO;YACL6F,MAAM,EAAE,IAAI;YACZd,MAAM,EAAE;cACNe,IAAI,EAAE,MAAM3L,SAAS,CAACwE,KAAK,EAAE6G,UAAU,EAAE,CAACE,SAAS,CAAC;cACpDK,YAAY,EAAE;YAChB;UACF,CAAC;QACH;MACF;IACF,CAAC;IAED,MAAMC,eAAe,GAAInK,qBAAA,CAAKhB,gBAAgB,EAArB,IAAI,EAAoB,IAAIpC,eAAe,CAClE,MAAM,EACN;MAAEoM,WAAW;MAAEpE;IAAS,CAC1B,CAH6C,CAG3C;IAEF,MAAMwF,cAA8B,GAAIpK,qBAAA,CAAKjB,eAAe,EAApB,IAAI,EAAmB;MAC7DsG,GAAG,EAAEnE,UAAU;MACfN,QAAQ;MACRyJ,KAAK,EAAE,IAAIC,eAAe,CAAC1J,QAAQ,CAAC4B,MAAM,CAAC;MAC3CoE,KAAK;MACL2D,GAAG,EAAE;QACH,IAAGlN,KAAK,aAALA,KAAK,gBAAAoL,YAAA,GAALpL,KAAK,CAAEyH,IAAI,cAAA2D,YAAA,uBAAXA,YAAA,CAAa+B,OAAO,CAAC,CAAC;QACzB,GAAGlN,WAAW,CAAC,CAAC;QAChBmN,QAAQ,EAAE;UAAEC,KAAK,EAAEtN,UAAU,CAAC,CAAC,CAACuN,gBAAgB,CAAC;QAAE;MACrD,CAAC;MACDC,QAAQ,EAAE,IAAIvO,SAAS,CAAC,KAAK,EAAE+G,SAAS,EAAE+G,eAAe,CAAC;MAC1DU,0BAA0B,EAAE,CAC1BxN,KAAK,aAALA,KAAK,gBAAAqL,qBAAA,GAALrL,KAAK,CAAEyN,gBAAgB,cAAApC,qBAAA,uBAAvBA,qBAAA,CAAyBqC,mBAAmB,CAAC7G,UAAU,CAAC,CACzD;MACD8G,gBAAgB,EAAE,IAAIC,GAAG,CAA6B,CAAC;MACvDC,iBAAiB,EAAE,IAAID,GAAG,CAAkC;IAC9D,CAhB2D,CAgBzD;IAEFjL,qBAAA,CAAKV,UAAU,EAAf,IAAI,EAAc8D,SAAJ,CAAC;IAEfvF,uBAAuB,CAACqG,UAAU,CAAC;IACnCvH,2BAA2B,EAAAgM,iBAAA,GAACzE,UAAU,CAAC8B,IAAI,cAAA2C,iBAAA,uBAAfA,iBAAA,CAAiBwC,SAAS,EAAEjK,UAAU,CAAC;IACnE7D,KAAK,aAALA,KAAK,gBAAAuL,eAAA,GAALvL,KAAK,CAAE2H,OAAO,cAAA4D,eAAA,eAAdA,eAAA,CAAgBwC,eAAe,EAAAvC,iBAAA,GAAC3E,UAAU,CAAC8B,IAAI,cAAA6C,iBAAA,uBAAfA,iBAAA,CAAiBwC,SAAS,CAAC;IAE3D,IAAIrB,MAAM,GAAG,KAAK;IAClB,IAAId,MAAoB;IACxB,IAAIoC,MAAmD,GAAG,EAAE;IAE5D,IAAI;MACFjN,kBAAkB,CAAC,CAAC;MACpB,MAAMkN,mBAAoC,GAAG,CAAC,CAAC;MAC/CrC,MAAM,GAAG,MAAM9M,YAAY,CACzBmL,UAAU,EACVvJ,mBAAmB,CAACkG,UAAU,CAACsH,MAAM,CAAC,EACtCpB,cAAc,EACdD,eAAe,EACf,EAAE,EACFoB,mBACF,CAAC;MACD,IAAIvC,WAAW,CAACC,OAAO,CAACC,MAAM,CAAC,EAAE;QAC/B;MACF;MAEAoC,MAAM,GAAGpP,aAAa,CAACkO,cAAc,CAAC;MAEtC,MAAMjO,eAAe,CAAC+M,MAAM,EAAEkB,cAAc,EAAEkB,MAAM,CAAC;MAErDC,mBAAmB,CAACE,KAAK,GAAGvC,MAAM,CAACwC,eAAe;MAClDvB,eAAe,CAACwB,yBAAyB,CAACJ,mBAAmB,CAAC;MAC9D,MAAMvC,WAAW,CAACK,UAAU,CAACc,eAAe,CAACyB,eAAe,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,OAAO9I,KAAK,EAAE;MACd;MACAD,OAAO,CAACC,KAAK,CAAC,gBAAgB,EAAEA,KAAK,CAAC;MACtC,IAAIuB,WAAW,EAAE;QACfrE,qBAAA,CAAKT,gBAAgB,EAArB,IAAI,EAAoB,IAAJ,CAAC;MACvB;MACA,MAAMsM,MAAM,GAAG,MAAM7C,WAAW,CAACtH,KAAK,CAACoB,KAAK,EAAEyE,UAAU,EAAElD,WAAW,CAAC;MACtE,IAAI,CAACwH,MAAM,EAAE;QACX;MACF;MACA,CAAC;QAAE7B,MAAM;QAAEd;MAAO,CAAC,GAAG2C,MAAM;IAC9B;IACArN,mBAAmB,CAAC,CAAC;IACrB+I,UAAU,CAACkE,KAAK,GAAGvC,MAAM,CAACe,IAAI;IAC9BjK,qBAAA,CAAKT,gBAAgB,EAArB,IAAI,EAAoB,KAAJ,CAAC;IAErBqI,qBAAqB,CAAC,CAAC;IAEvB,IAAKsB,MAAM,CAAC4C,KAAK,IAAI5C,MAAM,CAAC4C,KAAK,CAACC,IAAI,KAAK,QAAQ,IAAK/B,MAAM,EAAE;MAC9D,IAAI,CAACA,MAAM,EAAE;QACX;QACAG,eAAe,CAAC6B,sBAAsB,CAAC,CAAC;MAC1C;MACAlP,UAAU,CAAC,CAAC;MACZD,SAAS,CAAC,CAAC;MAEXqB,YAAY,CAACgD,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE+K,SAAS,CAAC;MACnC1P,SAAS,CAACgL,UAAU,CAAC;;MAErB;MACA;MACArH,MAAM,CAACgM,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;MAErB,IAAI,CAAClC,MAAM,EAAE;QACXG,eAAe,CAACgC,gBAAgB,CAAC,CAAC;QAClChC,eAAe,CAACiC,kBAAkB,CAAC,CAAC;QACpCjC,eAAe,CAACkC,eAAe,CAAC,CAAC;QACjClC,eAAe,CAACmC,wBAAwB,CAAC,CAAC;QAC1CnC,eAAe,CAACoC,qBAAqB,CAAC,CAAC;QACvCpC,eAAe,CAACqC,2BAA2B,CAAC,CAAC;QAE7C,KAAK,MAAMC,KAAK,IAAInB,MAAM,EAAE;UAC1BmB,KAAK,CAACC,cAAc,CAAC,CAAC;QACxB;QAEAxH,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAG;UACf8B,MAAM,EAAE,IAAI;UACZV,IAAI,EAAE4C,MAAM,CAAC5C,IAAI;UACjBqG,SAAS,EAAEvF,QAAQ,CAACwF;QACtB,CAAC,CAAC;MACJ,CAAC,MAAM;QACL1H,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAG;UAAE8B,MAAM,EAAE;QAAS,CAAC,CAAC;MACxC;MACA/I,gBAAgB,CAAC,UAAU,CAAC;MAE5B;IACF;EACF,CAAC,MAAM,IACL,CAACiC,MAAM,CAAC4J,aAAa,IACrBzM,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEyH,IAAI,IACX,CAACzH,KAAK,CAACyH,IAAI,CAAC+H,UAAU,CAAC,CAAC,EACxB;IACA;IACA;IACA3F,eAAe,CAAC,CAAC;IACjB;EACF,CAAC,MAAM;IACLU,qBAAqB,CAAC,CAAC;EACzB;EAEA9K,UAAU,CAAC,CAAC;EACZD,SAAS,CAAC,CAAC;EAEX,MAAMoN,IAAI,GAAG,MAAM3L,SAAS,CAC1B,IAAIC,SAAS,CACXsG,OAAO,GACH,cAAc,GACd3D,UAAU,GACR,gBAAgB,GAChB,eACR,CAAC,EACDqG,UAAU,EACV,IACF,CAAC;EACDA,UAAU,CAACkE,KAAK,GAAGxB,IAAI;EAEvB1N,SAAS,CAACgL,UAAU,CAAC;;EAErB;EACArH,MAAM,CAACgM,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;EACrBhH,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAG;IAAE8B,MAAM,EAAEnC,OAAO,GAAG,SAAS,GAAG;EAAY,CAAC,CAAC;EAC/D5G,gBAAgB,CAAC,UAAU,CAAC;AAC9B;AAGF,SAASyL,cAAcA,CAACH,SAA2B,EAAE;EACnD,MAAMuD,SAAS,GAAG;IAAEC,UAAU,EAAE;EAA2B,CAAC;EAC5D,KAAK,MAAMC,QAAQ,IAAIzD,SAAS,EAAE;IAChC,MAAM;MAAEwD;IAAW,CAAC,GAAGC,QAAQ;IAC/B,IAAID,UAAU,EAAE;MACd,IAAIA,UAAU,CAACE,SAAS,EAAE;QACxBH,SAAS,CAACC,UAAU,GAAGA,UAAU,CAACG,KAAK;MACzC,CAAC,MAAM;QACLJ,SAAS,CAACC,UAAU,CAACI,IAAI,CAAC,GAAGJ,UAAU,CAACG,KAAK,CAAC;MAChD;IACF;EACF;EACA,OAAOJ,SAAS;AAClB","ignoreList":[]}
1
+ {"version":3,"file":"Router.js","names":["locationsAreEqual","HttpAbortError","clearExpressionASTCache","clearFunctionASTCache","uniqueId","getHistory","getDataStores","postAsyncRender","renderRoutes","DataStore","clearResolveCache","mountTree","unmountTree","isOutsideApp","matchStoryboard","registerStoryboardFunctions","RendererContext","applyMode","applyTheme","getLocalAppsTheme","setMode","setTheme","setThemeVariant","_internalApiGetAppInBootstrapData","getRuntime","hooks","getPageInfo","resetAllComputedMarks","handleHttpError","isUnauthenticatedError","abortPendingRequest","initAbortController","setLoginStateCookie","registerCustomTemplates","fulfilStoryboard","RenderTag","insertPreviewRoutes","devtoolsHookEmit","setUIVersion","setAppVariable","setWatermark","clearMatchedRoutes","ErrorNode","PageError","resetReloadForError","shouldReloadForError","computeRealValue","_storyboards","WeakMap","_rendering","_nextRender","_runtimeContext","_rendererContext","_rendererContextTrashCan","_redirectCount","_renderId","_currentApp","_previousApp","_navConfig","_bootstrapFailed","_Router_brand","WeakSet","Router","constructor","storyboards","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","Set","_classPrivateFieldSet","history","window","addEventListener","event","message","_assertClassBrand","_getBlockMessageBeforePageLave","call","preventDefault","returnValue","block","location","action","getRenderId","_classPrivateFieldGet","getRuntimeContext","getRecentApps","currentApp","previousApp","getNavConfig","bootstrap","nextPrevLocation","listen","prevLocation","_queuedRender","catch","detail","_classPrivateFieldGet2","previousMessage","getBlockMessage","dispatchBeforePageLeave","unblock","_safeRedirect","to","state","from","_this$redirectCount","_this$redirectCount2","pathname","search","hash","process","env","NODE_ENV","console","error","Error","replace","next","_preRender","nextRender","undefined","_ref","_prevLocation$state","_location$state","_location$state2","_classPrivateFieldGet4","ignoreRendering","omittedLocationProps","key","notify","noIncremental","_classPrivateFieldGet3","didPerformIncrementalRender","dispatchPageLeave","storyboard","reload","_render","isBootstrap","_hooks$auth","_hooks$auth$isBlocked","_hooks$flowApi","_hooks$pageView","_classPrivateFieldGet5","_storyboard$app","renderId","blocked","auth","isBlockedPath","flowApi","clearCollectWidgetContract","finishPageView","pageView","create","app","currentAppId","id","BOOTSTRAP_UNION_FILE","appId","version","currentVersion","_storyboard$meta","_storyboard$meta$forE","_hooks$auth3","_hooks$auth3$isBlocke","meta","blackList","forEach","item","_hooks$auth2","_hooks$auth2$addPathT","path","url","split","e","startsWith","addPathToBlackList","appChanged","flags","getFeatureFlags","prevRendererContext","redirectTo","status","add","redirectToLogin","main","document","querySelector","portal","renderRoot","tag","ROOT","container","createPortal","cleanUpPreviousRender","_hooks$messageDispatc","dispatchOnUnmount","dispose","clear","messageDispatcher","reset","dispatchEvent","CustomEvent","theme","getMiscSettings","globalThemeVariant","_hooks$checkInstalled","_hooks$auth4","_hooks$checkPermissio","_storyboard$meta2","_hooks$flowApi2","_storyboard$meta3","checkInstalledApps","preCheckInstalledApps","routeHelper","bailout","output","unauthenticated","redirect","mergeMenus","menuRequests","menuConfs","Promise","all","mergeMenuConfs","returnNode","isCurrentBootstrap","isReCatch","NO_AUTH_GUARD","noAuthGuardLoginPath","failed","node","blockingList","rendererContext","runtimeContext","query","URLSearchParams","sys","getAuth","settings","brand","getBrandSettings","ctxStore","pendingPermissionsPreCheck","checkPermissions","preCheckPermissions","tplStateStoreMap","Map","formStateStoreMap","functions","collectContract","contracts","stores","rootMenuRequestNode","routes","child","menuRequestNode","setInitialMenuRequestNode","getMenuRequests","result","route","type","dispatchBeforePageLoad","uiVersion","scrollTo","dispatchPageLoad","dispatchAnchorLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","store","mountAsyncData","pageTitle","title","isLoggedIn","navConfig","breadcrumb","menuConf","overwrite","items","push"],"sources":["../../../src/internal/Router.ts"],"sourcesContent":["import { Action, locationsAreEqual } from \"history\";\nimport type {\n BreadcrumbItemConf,\n MicroApp,\n StaticMenuConf,\n Storyboard,\n} from \"@next-core/types\";\nimport { HttpAbortError } from \"@next-core/http\";\nimport {\n clearExpressionASTCache,\n clearFunctionASTCache,\n} from \"@next-core/cook\";\nimport { uniqueId } from \"lodash\";\nimport { NextHistoryState, NextLocation, getHistory } from \"../history.js\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderRoutes,\n} from \"./Renderer.js\";\nimport { DataStore } from \"./data/DataStore.js\";\nimport { clearResolveCache } from \"./data/resolveData.js\";\nimport { mountTree, unmountTree } from \"./mount.js\";\nimport { isOutsideApp, matchStoryboard } from \"./matchStoryboard.js\";\nimport { registerStoryboardFunctions } from \"./compute/StoryboardFunctions.js\";\nimport { RendererContext, RouteHelper } from \"./RendererContext.js\";\nimport {\n applyMode,\n applyTheme,\n getLocalAppsTheme,\n setMode,\n setTheme,\n setThemeVariant,\n} from \"../themeAndMode.js\";\nimport {\n _internalApiGetAppInBootstrapData,\n getRuntime,\n hooks,\n} from \"./Runtime.js\";\nimport { getPageInfo } from \"../getPageInfo.js\";\nimport type {\n MenuRequestNode,\n RenderRoot,\n RuntimeContext,\n} from \"./interfaces.js\";\nimport { resetAllComputedMarks } from \"./compute/markAsComputed.js\";\nimport { handleHttpError, isUnauthenticatedError } from \"../handleHttpError.js\";\nimport { abortPendingRequest, initAbortController } from \"./abortController.js\";\nimport { setLoginStateCookie } from \"../setLoginStateCookie.js\";\nimport { registerCustomTemplates } from \"./registerCustomTemplates.js\";\nimport { fulfilStoryboard } from \"./fulfilStoryboard.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { insertPreviewRoutes } from \"./insertPreviewRoutes.js\";\nimport { devtoolsHookEmit } from \"./devtools.js\";\nimport { setUIVersion } from \"../setUIVersion.js\";\nimport { setAppVariable } from \"../setAppVariable.js\";\nimport { setWatermark } from \"../setWatermark.js\";\nimport { clearMatchedRoutes } from \"./routeMatchedMap.js\";\nimport { ErrorNode, PageError } from \"./ErrorNode.js\";\nimport {\n resetReloadForError,\n shouldReloadForError,\n} from \"../shouldReloadForError.js\";\nimport { computeRealValue } from \"./compute/computeRealValue.js\";\n\ntype RenderTask = InitialRenderTask | SubsequentRenderTask;\n\ninterface InitialRenderTask {\n location: NextLocation;\n prevLocation?: undefined;\n action?: undefined;\n}\n\ninterface SubsequentRenderTask {\n location: NextLocation;\n prevLocation: NextLocation;\n action: Action;\n}\n\nexport class Router {\n readonly #storyboards: Storyboard[];\n #rendering = false;\n #nextRender?: RenderTask;\n #runtimeContext?: RuntimeContext;\n #rendererContext?: RendererContext;\n #rendererContextTrashCan = new Set<RendererContext | undefined>();\n #redirectCount = 0;\n #renderId?: string;\n #currentApp?: MicroApp;\n #previousApp?: MicroApp;\n #navConfig?: { breadcrumb?: BreadcrumbItemConf[] };\n #bootstrapFailed = false;\n\n constructor(storyboards: Storyboard[]) {\n this.#storyboards = storyboards;\n\n const history = getHistory();\n window.addEventListener(\"beforeunload\", (event) => {\n const message = this.#getBlockMessageBeforePageLave({});\n // See examples in https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload\n if (message) {\n // Cancel the event\n // If you prevent default behavior in Mozilla Firefox prompt will always be shown\n event.preventDefault();\n // Chrome requires returnValue to be set\n event.returnValue = \"\";\n } else {\n // the absence of a returnValue property on the event will guarantee the browser unload happens\n delete event.returnValue;\n }\n });\n\n history.block((location, action) =>\n this.#getBlockMessageBeforePageLave({ location, action })\n );\n }\n\n getRenderId() {\n return this.#renderId;\n }\n\n // istanbul ignore next\n getRuntimeContext() {\n return this.#runtimeContext;\n }\n\n getRecentApps() {\n return { currentApp: this.#currentApp, previousApp: this.#previousApp };\n }\n\n getNavConfig() {\n return this.#navConfig;\n }\n\n #getBlockMessageBeforePageLave(detail: {\n location?: NextLocation;\n action?: Action;\n }): string | undefined {\n const history = getHistory();\n const previousMessage = history.getBlockMessage();\n this.#rendererContext?.dispatchBeforePageLeave(detail);\n const message = history.getBlockMessage();\n if (!previousMessage && message) {\n // Auto unblock only if new block was introduced by `onBeforePageLeave`.\n history.unblock();\n }\n return message;\n }\n\n #safeRedirect(\n to: string,\n state: NextHistoryState | undefined,\n from: NextLocation\n ): void {\n if (this.#redirectCount++ > 10) {\n const message = `Infinite redirect detected: from \"${from.pathname}${from.search}${from.hash}\" to \"${to}\"`;\n // istanbul ignore else: error cannot be caught in test\n if (process.env.NODE_ENV === \"test\") {\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n } else {\n throw new Error(message);\n }\n }\n getHistory().replace(to, state);\n }\n\n bootstrap() {\n initAbortController();\n const history = getHistory();\n let nextPrevLocation = history.location;\n history.listen((location, action) => {\n const prevLocation = nextPrevLocation;\n nextPrevLocation = location;\n if (this.#rendering) {\n this.#nextRender = { location, prevLocation, action };\n } else {\n this.#queuedRender({ location, prevLocation, action }).catch(\n handleHttpError\n );\n }\n });\n return this.#queuedRender({ location: history.location });\n }\n\n async #queuedRender(next: RenderTask) {\n this.#rendering = true;\n try {\n await this.#preRender(next);\n } finally {\n this.#rendering = false;\n if (this.#nextRender) {\n const nextRender = this.#nextRender;\n this.#nextRender = undefined;\n await this.#queuedRender(nextRender);\n }\n }\n }\n\n async #preRender({ location, prevLocation, action }: RenderTask) {\n if (prevLocation) {\n let ignoreRendering: boolean | undefined;\n const omittedLocationProps: Partial<NextLocation> = {\n hash: undefined,\n state: undefined,\n };\n // Omit the \"key\" when checking whether locations are equal in certain situations.\n if (\n // When current location is triggered by browser action of hash link.\n location.key === undefined ||\n // When current location is triggered by browser action of non-push-or-replace,\n // such as goBack or goForward,\n (action === \"POP\" &&\n // and the previous location was triggered by hash link,\n (prevLocation.key === undefined ||\n // or the previous location specified notify false.\n prevLocation.state?.notify === false))\n ) {\n omittedLocationProps.key = undefined;\n }\n if (\n locationsAreEqual(\n { ...prevLocation, ...omittedLocationProps },\n { ...location, ...omittedLocationProps }\n ) ||\n (action !== \"POP\" && location.state?.notify === false)\n ) {\n // Ignore rendering if location not changed except hash, state and optional key.\n // Ignore rendering if notify is `false`.\n ignoreRendering = true;\n }\n\n // Note: dot not perform incremental render when bootstrap failed.\n if (\n !ignoreRendering &&\n !location.state?.noIncremental &&\n !this.#bootstrapFailed\n ) {\n ignoreRendering =\n await this.#rendererContext?.didPerformIncrementalRender(\n location,\n prevLocation\n );\n }\n\n if (ignoreRendering) {\n return;\n }\n\n abortPendingRequest();\n this.#rendererContext?.dispatchPageLeave();\n\n if (action === \"POP\") {\n const storyboard = matchStoryboard(\n this.#storyboards,\n location.pathname\n );\n // When a browser action of goBack or goForward is performing,\n // force reload when the target page is a page of an outside app.\n if (isOutsideApp(storyboard)) {\n window.location.reload();\n return;\n }\n }\n\n devtoolsHookEmit(\"locationChange\");\n }\n\n return this.#render(location, !prevLocation);\n }\n\n async #render(location: NextLocation, isBootstrap: boolean): Promise<void> {\n const renderId = (this.#renderId = uniqueId(\"render-id-\"));\n let blocked = hooks?.auth?.isBlockedPath?.(location.pathname);\n\n resetAllComputedMarks();\n clearResolveCache();\n hooks?.flowApi?.clearCollectWidgetContract();\n\n const history = getHistory();\n history.unblock();\n\n // const renderStartTime = performance.now();\n const finishPageView = hooks?.pageView?.create();\n\n const storyboard = blocked\n ? undefined\n : matchStoryboard(this.#storyboards, location.pathname);\n\n const previousApp = this.#runtimeContext?.app;\n const currentAppId = storyboard?.app?.id;\n // dynamically change the value of the APP variable, if it's union app\n if (\n window.BOOTSTRAP_UNION_FILE &&\n currentAppId &&\n currentAppId !== previousApp?.id\n ) {\n setAppVariable({\n appId: currentAppId,\n version: storyboard.app.currentVersion!,\n });\n }\n\n if (storyboard?.app) {\n await fulfilStoryboard(storyboard);\n }\n\n const currentApp = (this.#currentApp = storyboard?.app);\n\n if (currentApp) {\n storyboard?.meta?.blackList?.forEach?.((item) => {\n let path = item && (item.to || item.url);\n\n if (!path || typeof path !== \"string\") return;\n\n path = path\n .split(\"?\")[0]\n .replace(/\\${\\s*(?:(?:PATH|CTX)\\.)?(\\w+)\\s*}/g, \":$1\");\n\n if (item.to) {\n try {\n path = computeRealValue(path, {\n app: currentApp,\n } as RuntimeContext) as string;\n } catch (e) /* istanbul ignore next */ {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n } else {\n path = path.replace(/^\\/next\\//, \"/\");\n }\n\n path && path.startsWith(\"/\") && hooks?.auth?.addPathToBlackList?.(path);\n });\n blocked = hooks?.auth?.isBlockedPath?.(location.pathname);\n }\n\n setWatermark();\n\n // Storyboard maybe re-assigned, e.g. when open launchpad.\n const appChanged =\n previousApp && currentApp\n ? previousApp.id !== currentApp.id\n : previousApp !== currentApp;\n\n clearExpressionASTCache();\n if (appChanged) {\n clearFunctionASTCache();\n }\n\n // TODO: handle favicon\n\n // Set `Router::#currentApp` before calling `getFeatureFlags()`\n const flags = getRuntime().getFeatureFlags();\n const prevRendererContext = this.#rendererContext;\n\n const redirectTo = (to: string, state?: NextHistoryState): void => {\n finishPageView?.({ status: \"redirected\" });\n this.#rendererContextTrashCan.add(prevRendererContext);\n this.#safeRedirect(to, state, location);\n };\n\n const redirectToLogin = (): void => {\n const to = flags[\"sso-enabled\"] ? \"/sso-auth/login\" : \"/auth/login\";\n setLoginStateCookie(location);\n redirectTo(to, { from: location });\n };\n\n const main = document.querySelector(\"#main-mount-point\") as HTMLElement;\n const portal = document.querySelector(\"#portal-mount-point\") as HTMLElement;\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container: main,\n createPortal: portal,\n };\n\n const cleanUpPreviousRender = (): void => {\n unmountTree(main);\n unmountTree(portal);\n\n // Note: redirects can lead to multiple trash renderer contexts.\n this.#rendererContextTrashCan.add(prevRendererContext);\n for (const item of this.#rendererContextTrashCan) {\n if (item) {\n item.dispatchOnUnmount();\n item.dispose();\n }\n }\n this.#rendererContextTrashCan.clear();\n hooks?.messageDispatcher?.reset();\n\n if (appChanged) {\n this.#previousApp = previousApp;\n window.dispatchEvent(\n new CustomEvent(\"app.change\", { detail: { previousApp, currentApp } })\n );\n }\n };\n\n setTheme(\n (currentApp &&\n (getLocalAppsTheme()[currentApp.id] || currentApp.theme)) ||\n \"light\"\n );\n setMode(\"default\");\n setThemeVariant(getRuntime().getMiscSettings().globalThemeVariant);\n\n if (currentApp && !blocked) {\n hooks?.checkInstalledApps?.preCheckInstalledApps(\n storyboard,\n (appId) => !!_internalApiGetAppInBootstrapData(appId)\n );\n\n const routeHelper: RouteHelper = {\n bailout: (output) => {\n if (output.unauthenticated) {\n redirectToLogin();\n return true;\n }\n if (output.redirect) {\n redirectTo(output.redirect.path, output.redirect.state);\n return true;\n }\n // Reset redirect count if no redirect is set.\n this.#redirectCount = 0;\n },\n mergeMenus: async (menuRequests) => {\n const menuConfs = await Promise.all(menuRequests);\n this.#navConfig = mergeMenuConfs(menuConfs);\n window.dispatchEvent(\n new CustomEvent(\"navConfig.change\", { detail: this.#navConfig })\n );\n },\n catch: async (error, returnNode, isCurrentBootstrap, isReCatch) => {\n if (isUnauthenticatedError(error) && !window.NO_AUTH_GUARD) {\n redirectToLogin();\n return;\n } else if (error instanceof HttpAbortError) {\n this.#rendererContextTrashCan.add(prevRendererContext);\n return;\n } else {\n const noAuthGuardLoginPath =\n getRuntime().getMiscSettings().noAuthGuardLoginPath;\n if (isUnauthenticatedError(error) && noAuthGuardLoginPath) {\n redirectTo(noAuthGuardLoginPath as string, { from: location });\n return;\n }\n if (isCurrentBootstrap) {\n throw error;\n }\n if (!isReCatch && shouldReloadForError(error)) {\n window.location.reload();\n return;\n }\n return {\n failed: true,\n output: {\n node: await ErrorNode(error, returnNode, !isReCatch),\n blockingList: [],\n },\n };\n }\n },\n };\n\n const rendererContext = (this.#rendererContext = new RendererContext(\n \"page\",\n { routeHelper, renderId }\n ));\n\n const runtimeContext: RuntimeContext = (this.#runtimeContext = {\n app: currentApp,\n location,\n query: new URLSearchParams(location.search),\n flags,\n sys: {\n ...hooks?.auth?.getAuth(),\n ...getPageInfo(),\n settings: { brand: getRuntime().getBrandSettings() },\n },\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [\n hooks?.checkPermissions?.preCheckPermissions(storyboard),\n ],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n });\n\n this.#navConfig = undefined;\n\n registerCustomTemplates(storyboard);\n registerStoryboardFunctions(storyboard.meta?.functions, currentApp);\n hooks?.flowApi?.collectContract(storyboard.meta?.contracts);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n clearMatchedRoutes();\n const rootMenuRequestNode: MenuRequestNode = {};\n output = await renderRoutes(\n renderRoot,\n insertPreviewRoutes(storyboard.routes),\n runtimeContext,\n rendererContext,\n [],\n rootMenuRequestNode\n );\n if (routeHelper.bailout(output)) {\n return;\n }\n\n stores = getDataStores(runtimeContext);\n\n await postAsyncRender(output, runtimeContext, stores);\n\n rootMenuRequestNode.child = output.menuRequestNode;\n rendererContext.setInitialMenuRequestNode(rootMenuRequestNode);\n await routeHelper.mergeMenus(rendererContext.getMenuRequests());\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Router failed:\", error);\n if (isBootstrap) {\n this.#bootstrapFailed = true;\n }\n const result = await routeHelper.catch(error, renderRoot, isBootstrap);\n if (!result) {\n return;\n }\n ({ failed, output } = result);\n }\n resetReloadForError();\n renderRoot.child = output.node;\n this.#bootstrapFailed = false;\n\n cleanUpPreviousRender();\n\n if ((output.route && output.route.type !== \"routes\") || failed) {\n if (!failed) {\n // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.\n rendererContext.dispatchBeforePageLoad();\n }\n applyTheme();\n applyMode();\n\n setUIVersion(currentApp?.uiVersion);\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n // See https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n window.scrollTo(0, 0);\n\n if (!failed) {\n rendererContext.dispatchPageLoad();\n rendererContext.dispatchAnchorLoad();\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n finishPageView?.({\n status: \"ok\",\n path: output.path,\n pageTitle: document.title,\n });\n } else {\n finishPageView?.({ status: \"failed\" });\n }\n devtoolsHookEmit(\"rendered\");\n\n return;\n }\n } else if (\n !window.NO_AUTH_GUARD &&\n hooks?.auth &&\n !hooks.auth.isLoggedIn()\n ) {\n // Todo(steve): refine after api-gateway supports fetching storyboards before logged in.\n // Redirect to login if no storyboard is matched.\n redirectToLogin();\n return;\n } else {\n cleanUpPreviousRender();\n }\n\n applyTheme();\n applyMode();\n\n const node = await ErrorNode(\n new PageError(\n blocked\n ? \"page blocked\"\n : currentApp\n ? \"page not found\"\n : \"app not found\"\n ),\n renderRoot,\n true\n );\n renderRoot.child = node;\n\n mountTree(renderRoot);\n\n // Scroll to top after each rendering.\n window.scrollTo(0, 0);\n finishPageView?.({ status: blocked ? \"blocked\" : \"not-found\" });\n devtoolsHookEmit(\"rendered\");\n }\n}\n\nfunction mergeMenuConfs(menuConfs: StaticMenuConf[]) {\n const navConfig = { breadcrumb: [] as BreadcrumbItemConf[] };\n for (const menuConf of menuConfs) {\n const { breadcrumb } = menuConf;\n if (breadcrumb) {\n if (breadcrumb.overwrite) {\n navConfig.breadcrumb = breadcrumb.items;\n } else {\n navConfig.breadcrumb.push(...breadcrumb.items);\n }\n }\n }\n return navConfig;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -148,11 +148,13 @@ export function listenerFactory(handlers, runtimeContext, runtimeBrick) {
148
148
  case "context.replace":
149
149
  case "context.refresh":
150
150
  case "context.load":
151
+ case "context.set":
151
152
  handleContextAction(event, method, handler.args, (_handler$batch = handler.batch) !== null && _handler$batch !== void 0 ? _handler$batch : true, handler.callback, runtimeContext);
152
153
  break;
153
154
  case "state.update":
154
155
  case "state.refresh":
155
156
  case "state.load":
157
+ case "state.set":
156
158
  handleTplStateAction(event, method, handler.args, (_handler$batch2 = handler.batch) !== null && _handler$batch2 !== void 0 ? _handler$batch2 : true, handler.callback, runtimeContext);
157
159
  break;
158
160
  case "tpl.dispatchEvent":