@next-core/runtime 1.44.1 → 1.44.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/CustomProcessors.js.map +1 -1
- package/dist/cjs/CustomTemplates.js +7 -11
- package/dist/cjs/CustomTemplates.js.map +1 -1
- package/dist/cjs/createRoot.js +11 -5
- package/dist/cjs/createRoot.js.map +1 -1
- package/dist/cjs/getPageInfo.js.map +1 -1
- package/dist/cjs/handleHttpError.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js +4 -5
- package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +4 -7
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +21 -24
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js +4 -7
- package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/utils.js +3 -3
- package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +3 -3
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/utils.js +2 -2
- package/dist/cjs/internal/FormRenderer/utils.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +11 -14
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js +8 -10
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js +3 -0
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/Runtime.js +14 -14
- package/dist/cjs/internal/Runtime.js.map +1 -1
- package/dist/cjs/internal/bindListeners.js +2 -3
- package/dist/cjs/internal/bindListeners.js.map +1 -1
- package/dist/cjs/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/cjs/internal/compute/evaluate.js +4 -4
- package/dist/cjs/internal/compute/evaluate.js.map +1 -1
- package/dist/cjs/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/cjs/internal/compute/getStorageItem.js +1 -2
- package/dist/cjs/internal/compute/getStorageItem.js.map +1 -1
- package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/cjs/internal/compute/setRealProperties.js.map +1 -1
- package/dist/cjs/internal/data/DataStore.js.map +1 -1
- package/dist/cjs/internal/data/getProviderBrick.js.map +1 -1
- package/dist/cjs/internal/data/realTimeDataInspect.js.map +1 -1
- package/dist/cjs/internal/data/resolveData.js.map +1 -1
- package/dist/cjs/internal/data/resolveDataStore.js +2 -4
- package/dist/cjs/internal/data/resolveDataStore.js.map +1 -1
- package/dist/cjs/internal/hasInstalledApp.js.map +1 -1
- package/dist/cjs/internal/historyExtended.js.map +1 -1
- package/dist/cjs/internal/matchPath.js.map +1 -1
- package/dist/cjs/internal/matchRoutes.js.map +1 -1
- package/dist/cjs/internal/matchStoryboard.js +2 -2
- package/dist/cjs/internal/matchStoryboard.js.map +1 -1
- package/dist/cjs/internal/mediaQuery.js.map +1 -1
- package/dist/cjs/internal/mount.js.map +1 -1
- package/dist/cjs/internal/poll.js +3 -3
- package/dist/cjs/internal/poll.js.map +1 -1
- package/dist/cjs/internal/registerAppI18n.js.map +1 -1
- package/dist/cjs/internal/registerCustomTemplates.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +4 -4
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/cjs/internal/setupRootRuntimeContext.js +2 -3
- package/dist/cjs/internal/setupRootRuntimeContext.js.map +1 -1
- package/dist/cjs/isStrictMode.js.map +1 -1
- package/dist/cjs/setLoginStateCookie.js.map +1 -1
- package/dist/cjs/setWatermark.js +4 -4
- package/dist/cjs/setWatermark.js.map +1 -1
- package/dist/cjs/themeAndMode.js +1 -2
- package/dist/cjs/themeAndMode.js.map +1 -1
- package/dist/esm/CustomProcessors.js +5 -5
- package/dist/esm/CustomProcessors.js.map +1 -1
- package/dist/esm/CustomTemplates.js +48 -58
- package/dist/esm/CustomTemplates.js.map +1 -1
- package/dist/esm/Dialog.js +3 -3
- package/dist/esm/Dialog.js.map +1 -1
- package/dist/esm/Notification.js +2 -2
- package/dist/esm/Notification.js.map +1 -1
- package/dist/esm/StoryboardFunctionRegistry.js +18 -18
- package/dist/esm/StoryboardFunctionRegistry.js.map +1 -1
- package/dist/esm/createRoot.js +125 -123
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/fetchByProvider.js +3 -10
- package/dist/esm/fetchByProvider.js.map +1 -1
- package/dist/esm/getBasePath.js +2 -2
- package/dist/esm/getBasePath.js.map +1 -1
- package/dist/esm/getPageInfo.js +5 -5
- package/dist/esm/getPageInfo.js.map +1 -1
- package/dist/esm/getRealValue.js +7 -6
- package/dist/esm/getRealValue.js.map +1 -1
- package/dist/esm/getV2RuntimeFromDll.js +1 -1
- package/dist/esm/getV2RuntimeFromDll.js.map +1 -1
- package/dist/esm/handleHttpError.js +11 -11
- package/dist/esm/handleHttpError.js.map +1 -1
- package/dist/esm/history.js +4 -4
- package/dist/esm/history.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js +13 -17
- package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/constants.js +5 -5
- package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +41 -42
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +43 -46
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js +16 -18
- package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/utils.js +8 -8
- package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/esm/internal/FormRenderer/constants.js +2 -2
- package/dist/esm/internal/FormRenderer/constants.js.map +1 -1
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js +28 -23
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/esm/internal/FormRenderer/getDefaultProperties.js +45 -22
- package/dist/esm/internal/FormRenderer/getDefaultProperties.js.map +1 -1
- package/dist/esm/internal/FormRenderer/utils.js +4 -4
- package/dist/esm/internal/FormRenderer/utils.js.map +1 -1
- package/dist/esm/internal/Renderer.js +517 -577
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +132 -148
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +325 -343
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/Runtime.js +53 -51
- package/dist/esm/internal/Runtime.js.map +1 -1
- package/dist/esm/internal/abortController.js +7 -6
- package/dist/esm/internal/abortController.js.map +1 -1
- package/dist/esm/internal/bindListeners.js +136 -156
- package/dist/esm/internal/bindListeners.js.map +1 -1
- package/dist/esm/internal/compute/StoryboardFunctions.js +1 -1
- package/dist/esm/internal/compute/StoryboardFunctions.js.map +1 -1
- package/dist/esm/internal/compute/WidgetFunctions.js +6 -6
- package/dist/esm/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/esm/internal/compute/WidgetI18n.js +4 -4
- package/dist/esm/internal/compute/WidgetI18n.js.map +1 -1
- package/dist/esm/internal/compute/checkIf.js +10 -23
- package/dist/esm/internal/compute/checkIf.js.map +1 -1
- package/dist/esm/internal/compute/computeRealProperties.js +22 -35
- package/dist/esm/internal/compute/computeRealProperties.js.map +1 -1
- package/dist/esm/internal/compute/computeRealValue.js +42 -49
- package/dist/esm/internal/compute/computeRealValue.js.map +1 -1
- package/dist/esm/internal/compute/evaluate.js +71 -75
- package/dist/esm/internal/compute/evaluate.js.map +1 -1
- package/dist/esm/internal/compute/getGeneralGlobals.js +5 -5
- package/dist/esm/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/esm/internal/compute/getNextStateOfUseBrick.js +1 -1
- package/dist/esm/internal/compute/getStorageItem.js +2 -3
- package/dist/esm/internal/compute/getStorageItem.js.map +1 -1
- package/dist/esm/internal/compute/getTracks.js +5 -5
- package/dist/esm/internal/compute/getTracks.js.map +1 -1
- package/dist/esm/internal/compute/listenOnTrackingContext.js +8 -11
- package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/esm/internal/compute/markAsComputed.js +2 -2
- package/dist/esm/internal/compute/markAsComputed.js.map +1 -1
- package/dist/esm/internal/compute/setProperties.js +1 -1
- package/dist/esm/internal/compute/setProperties.js.map +1 -1
- package/dist/esm/internal/compute/setRealProperties.js +3 -3
- package/dist/esm/internal/compute/setRealProperties.js.map +1 -1
- package/dist/esm/internal/customizeColorTheme.js +15 -13
- package/dist/esm/internal/customizeColorTheme.js.map +1 -1
- package/dist/esm/internal/data/DataStore.js +161 -177
- package/dist/esm/internal/data/DataStore.js.map +1 -1
- package/dist/esm/internal/data/getProviderBrick.js +21 -28
- package/dist/esm/internal/data/getProviderBrick.js.map +1 -1
- package/dist/esm/internal/data/realTimeDataInspect.js +5 -5
- package/dist/esm/internal/data/realTimeDataInspect.js.map +1 -1
- package/dist/esm/internal/data/resolveData.js +89 -103
- package/dist/esm/internal/data/resolveData.js.map +1 -1
- package/dist/esm/internal/data/resolveDataStore.js +53 -67
- package/dist/esm/internal/data/resolveDataStore.js.map +1 -1
- package/dist/esm/internal/devtools.js +9 -9
- package/dist/esm/internal/devtools.js.map +1 -1
- package/dist/esm/internal/enums.js +1 -1
- package/dist/esm/internal/fulfilStoryboard.js +15 -28
- package/dist/esm/internal/fulfilStoryboard.js.map +1 -1
- package/dist/esm/internal/hasInstalledApp.js +3 -3
- package/dist/esm/internal/hasInstalledApp.js.map +1 -1
- package/dist/esm/internal/historyExtended.js +40 -37
- package/dist/esm/internal/historyExtended.js.map +1 -1
- package/dist/esm/internal/i18n.js +5 -5
- package/dist/esm/internal/i18n.js.map +1 -1
- package/dist/esm/internal/injected.js +1 -1
- package/dist/esm/internal/injected.js.map +1 -1
- package/dist/esm/internal/insertPreviewRoutes.js +3 -3
- package/dist/esm/internal/insertPreviewRoutes.js.map +1 -1
- package/dist/esm/internal/matchPath.js +17 -17
- package/dist/esm/internal/matchPath.js.map +1 -1
- package/dist/esm/internal/matchRoutes.js +18 -25
- package/dist/esm/internal/matchRoutes.js.map +1 -1
- package/dist/esm/internal/matchStoryboard.js +6 -6
- package/dist/esm/internal/matchStoryboard.js.map +1 -1
- package/dist/esm/internal/mediaQuery.js +11 -11
- package/dist/esm/internal/mediaQuery.js.map +1 -1
- package/dist/esm/internal/mount.js +7 -7
- package/dist/esm/internal/mount.js.map +1 -1
- package/dist/esm/internal/poll.js +53 -60
- package/dist/esm/internal/poll.js.map +1 -1
- package/dist/esm/internal/proxyFactories.js +4 -4
- package/dist/esm/internal/proxyFactories.js.map +1 -1
- package/dist/esm/internal/registerAppI18n.js +6 -6
- package/dist/esm/internal/registerAppI18n.js.map +1 -1
- package/dist/esm/internal/registerCustomTemplates.js +3 -3
- package/dist/esm/internal/registerCustomTemplates.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +140 -146
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/esm/internal/setupRootRuntimeContext.js +6 -7
- package/dist/esm/internal/setupRootRuntimeContext.js.map +1 -1
- package/dist/esm/internal/sse.js +24 -53
- package/dist/esm/internal/sse.js.map +1 -1
- package/dist/esm/internal/test_only.js +1 -1
- package/dist/esm/isStrictMode.js +3 -3
- package/dist/esm/isStrictMode.js.map +1 -1
- package/dist/esm/setAppVariable.js +1 -1
- package/dist/esm/setAppVariable.js.map +1 -1
- package/dist/esm/setLoginStateCookie.js +5 -5
- package/dist/esm/setLoginStateCookie.js.map +1 -1
- package/dist/esm/setUIVersion.js +1 -1
- package/dist/esm/setWatermark.js +13 -13
- package/dist/esm/setWatermark.js.map +1 -1
- package/dist/esm/themeAndMode.js +14 -13
- package/dist/esm/themeAndMode.js.map +1 -1
- package/dist/types/tsdoc-metadata.json +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataStore.js","names":["hasOwnProperty","isObject","strictCollectMemberUsage","EventTarget","eventCallbackFactory","listenerFactory","asyncCheckIf","checkIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","computePropertyValue","_internalApiGetRenderId","callRealTimeDataInspectHooks","realTimeDataInspectRoot","isStrictMode","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","stateStoreId","_defineProperty","Map","WeakMap","changeEventType","getAllValues","Object","fromEntries","data","entries","map","_ref","name","value","getValue","_this$data$get","get","notifyRealTimeDataChange","tplStateStoreId","changeType","detail","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","length","Error","updateContexts","affectContexts","affectDepsContextNames","arg","updateContextItem","updateValue","filter","affectContextItem","triggerEvent","contexts","_context$eventTarget","context","eventTarget","dispatchEvent","CustomEvent","callback","callbackRuntimeContext","concat","useResolve","promise","loaded","Promise","resolve","loading","shouldDismiss","error","_this$rendererContext","renderId","load","_objectSpread","cache","then","val","finishLoad","err","callbackFactory","assign","console","warn","define","dataConfs","runtimeContext","asyncHostPropertyEntries","routePath","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","_this","_asyncToGenerator","_loop","pendingContexts","all","ctx","p","waitForAll","_this2","catch","pendingResult","mountAsyncData","route","_this$routeMap$get","async","routeMap","has","asyncMounted","_this3","expose","trackConditionalResolve","resolvePolicy","undefined","hasFallbackValue","track","if","size","resolveConf","transform","_ref2","options","_this3$rendererContex","_x","apply","arguments","lazy","newData","trigger","_this3$rendererContex2","registerArbitraryLifeCycle","dep","batchAddListener","e","set","names","add","disposeDataInRoutes","routes","delete","contextConf","event"],"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 { 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\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<ReturnType<typeof resolveDataStore>> =\n [];\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\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 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 this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\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 // Silent each pending contexts, since the error is handled by batched `pendingResult`\n for (const { pendingContexts } of this.pendingStack) {\n for (const p of pendingContexts.values()) {\n p.catch(() => {\n /* No-op */\n });\n }\n }\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 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 }\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":["hasOwnProperty","isObject","strictCollectMemberUsage","EventTarget","eventCallbackFactory","listenerFactory","asyncCheckIf","checkIf","asyncComputeRealValue","computeRealValue","resolveData","resolveDataStore","handleHttpError","computePropertyValue","_internalApiGetRenderId","callRealTimeDataInspectHooks","realTimeDataInspectRoot","isStrictMode","supportContextResolveTriggerBrickLifeCycle","DataStore","constructor","type","hostBrick","rendererContext","stateStoreId","_defineProperty","Map","WeakMap","changeEventType","getAllValues","Object","fromEntries","data","entries","map","_ref","name","value","getValue","_this$data$get","get","notifyRealTimeDataChange","tplStateStoreId","changeType","detail","getAffectListByContext","affectNames","forEach","key","deps","isInDeps","some","item","includes","push","shift","Set","updateValues","values","method","argsFactory","batchUpdate","batchUpdateContextsNames","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","load","cache","then","val","finishLoad","err","callbackFactory","assign","console","warn","define","dataConfs","runtimeContext","asyncHostPropertyEntries","routePath","Array","isArray","pending","dataConf","pendingStack","onChange","dataName","listener","_this$data$get2","addEventListener","waitFor","dataNames","pendingContexts","all","ctx","p","waitForAll","catch","pendingResult","mountAsyncData","route","_this$routeMap$get","async","routeMap","has","asyncMounted","expose","trackConditionalResolve","resolvePolicy","undefined","hasFallbackValue","track","if","size","resolveConf","transform","options","_this$rendererContext2","lazy","newData","trigger","_this$rendererContext3","registerArbitraryLifeCycle","dep","batchAddListener","e","set","names","add","disposeDataInRoutes","routes","delete","contextConf","event"],"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 { 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\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<ReturnType<typeof resolveDataStore>> =\n [];\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\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 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 this.pendingStack.push(pending);\n }\n }\n\n onChange(dataName: string, listener: EventListener): void {\n this.data\n .get(dataName)\n ?.eventTarget.addEventListener(this.changeEventType, listener);\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 // Silent each pending contexts, since the error is handled by batched `pendingResult`\n for (const { pendingContexts } of this.pendingStack) {\n for (const p of pendingContexts.values()) {\n p.catch(() => {\n /* No-op */\n });\n }\n }\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 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 }\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,35 +1,28 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
1
|
import { loadBricksImperatively } from "@next-core/loader";
|
|
3
2
|
import { getBrickPackages, hooks } from "../Runtime.js";
|
|
4
|
-
|
|
5
|
-
export function getProviderBrick(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
const pool = new Map();
|
|
4
|
+
export async function getProviderBrick(provider) {
|
|
5
|
+
var _hooks$flowApi;
|
|
6
|
+
const isFlowApi = hooks === null || hooks === void 0 || (_hooks$flowApi = hooks.flowApi) === null || _hooks$flowApi === void 0 ? void 0 : _hooks$flowApi.isFlowApiProvider(provider);
|
|
7
|
+
if (isFlowApi) {
|
|
8
|
+
provider = hooks.flowApi.FLOW_API_PROVIDER;
|
|
9
|
+
}
|
|
10
|
+
let brick = pool.get(provider);
|
|
11
|
+
if (brick) {
|
|
12
|
+
return brick;
|
|
13
|
+
}
|
|
14
|
+
if (provider.includes("-") && !customElements.get(provider)) {
|
|
12
15
|
if (isFlowApi) {
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
if (provider.includes("-") && !customElements.get(provider)) {
|
|
20
|
-
if (isFlowApi) {
|
|
21
|
-
hooks.flowApi.registerFlowApiProvider();
|
|
22
|
-
} else {
|
|
23
|
-
yield loadBricksImperatively([provider], getBrickPackages());
|
|
24
|
-
if (!customElements.get(provider)) {
|
|
25
|
-
throw new Error("Provider not defined: \"".concat(provider, "\"."));
|
|
26
|
-
}
|
|
16
|
+
hooks.flowApi.registerFlowApiProvider();
|
|
17
|
+
} else {
|
|
18
|
+
await loadBricksImperatively([provider], getBrickPackages());
|
|
19
|
+
if (!customElements.get(provider)) {
|
|
20
|
+
throw new Error(`Provider not defined: "${provider}".`);
|
|
27
21
|
}
|
|
28
22
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return _getProviderBrick.apply(this, arguments);
|
|
23
|
+
}
|
|
24
|
+
brick = document.createElement(provider);
|
|
25
|
+
pool.set(provider, brick);
|
|
26
|
+
return brick;
|
|
34
27
|
}
|
|
35
28
|
//# sourceMappingURL=getProviderBrick.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getProviderBrick.js","names":["loadBricksImperatively","getBrickPackages","hooks","pool","Map","getProviderBrick","
|
|
1
|
+
{"version":3,"file":"getProviderBrick.js","names":["loadBricksImperatively","getBrickPackages","hooks","pool","Map","getProviderBrick","provider","_hooks$flowApi","isFlowApi","flowApi","isFlowApiProvider","FLOW_API_PROVIDER","brick","get","includes","customElements","registerFlowApiProvider","Error","document","createElement","set"],"sources":["../../../../src/internal/data/getProviderBrick.ts"],"sourcesContent":["import { loadBricksImperatively } from \"@next-core/loader\";\nimport { getBrickPackages, hooks } from \"../Runtime.js\";\n\nconst pool = new Map<string, HTMLElement>();\nexport async function getProviderBrick(provider: string): Promise<HTMLElement> {\n const isFlowApi = hooks?.flowApi?.isFlowApiProvider(provider);\n if (isFlowApi) {\n provider = hooks!.flowApi!.FLOW_API_PROVIDER;\n }\n\n let brick = pool.get(provider);\n if (brick) {\n return brick;\n }\n\n if (provider.includes(\"-\") && !customElements.get(provider)) {\n if (isFlowApi) {\n hooks!.flowApi!.registerFlowApiProvider();\n } else {\n await loadBricksImperatively([provider], getBrickPackages());\n\n if (!customElements.get(provider)) {\n throw new Error(`Provider not defined: \"${provider}\".`);\n }\n }\n }\n\n brick = document.createElement(provider);\n pool.set(provider, brick);\n return brick;\n}\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,mBAAmB;AAC1D,SAASC,gBAAgB,EAAEC,KAAK,QAAQ,eAAe;AAEvD,MAAMC,IAAI,GAAG,IAAIC,GAAG,CAAsB,CAAC;AAC3C,OAAO,eAAeC,gBAAgBA,CAACC,QAAgB,EAAwB;EAAA,IAAAC,cAAA;EAC7E,MAAMC,SAAS,GAAGN,KAAK,aAALA,KAAK,gBAAAK,cAAA,GAALL,KAAK,CAAEO,OAAO,cAAAF,cAAA,uBAAdA,cAAA,CAAgBG,iBAAiB,CAACJ,QAAQ,CAAC;EAC7D,IAAIE,SAAS,EAAE;IACbF,QAAQ,GAAGJ,KAAK,CAAEO,OAAO,CAAEE,iBAAiB;EAC9C;EAEA,IAAIC,KAAK,GAAGT,IAAI,CAACU,GAAG,CAACP,QAAQ,CAAC;EAC9B,IAAIM,KAAK,EAAE;IACT,OAAOA,KAAK;EACd;EAEA,IAAIN,QAAQ,CAACQ,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACC,cAAc,CAACF,GAAG,CAACP,QAAQ,CAAC,EAAE;IAC3D,IAAIE,SAAS,EAAE;MACbN,KAAK,CAAEO,OAAO,CAAEO,uBAAuB,CAAC,CAAC;IAC3C,CAAC,MAAM;MACL,MAAMhB,sBAAsB,CAAC,CAACM,QAAQ,CAAC,EAAEL,gBAAgB,CAAC,CAAC,CAAC;MAE5D,IAAI,CAACc,cAAc,CAACF,GAAG,CAACP,QAAQ,CAAC,EAAE;QACjC,MAAM,IAAIW,KAAK,CAAC,0BAA0BX,QAAQ,IAAI,CAAC;MACzD;IACF;EACF;EAEAM,KAAK,GAAGM,QAAQ,CAACC,aAAa,CAACb,QAAQ,CAAC;EACxCH,IAAI,CAACiB,GAAG,CAACd,QAAQ,EAAEM,KAAK,CAAC;EACzB,OAAOA,KAAK;AACd","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { getAllContextValues } from "../secret_internals.js";
|
|
2
|
-
export
|
|
3
|
-
export
|
|
2
|
+
export let realTimeDataInspectRoot;
|
|
3
|
+
export const RealTimeDataInspectHooks = [];
|
|
4
4
|
export function setRealTimeDataInspectRoot(root) {
|
|
5
5
|
realTimeDataInspectRoot = root;
|
|
6
|
-
|
|
6
|
+
const data = getAllContextValues({
|
|
7
7
|
tplStateStoreId: root.tplStateStoreId
|
|
8
8
|
});
|
|
9
9
|
callRealTimeDataInspectHooks({
|
|
@@ -19,12 +19,12 @@ export function addRealTimeDataInspectHook(hook) {
|
|
|
19
19
|
}
|
|
20
20
|
export function callRealTimeDataInspectHooks(detail) {
|
|
21
21
|
setTimeout(() => {
|
|
22
|
-
for (
|
|
22
|
+
for (const hook of RealTimeDataInspectHooks) {
|
|
23
23
|
try {
|
|
24
24
|
hook(detail);
|
|
25
25
|
} catch (error) {
|
|
26
26
|
// eslint-disable-next-line no-console
|
|
27
|
-
console.error(
|
|
27
|
+
console.error(`RealTimeDataInspectHook failed (${detail.changeType}):`, error);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realTimeDataInspect.js","names":["getAllContextValues","realTimeDataInspectRoot","RealTimeDataInspectHooks","setRealTimeDataInspectRoot","root","data","tplStateStoreId","callRealTimeDataInspectHooks","changeType","detail","addRealTimeDataInspectHook","hook","push","setTimeout","error","console"
|
|
1
|
+
{"version":3,"file":"realTimeDataInspect.js","names":["getAllContextValues","realTimeDataInspectRoot","RealTimeDataInspectHooks","setRealTimeDataInspectRoot","root","data","tplStateStoreId","callRealTimeDataInspectHooks","changeType","detail","addRealTimeDataInspectHook","hook","push","setTimeout","error","console"],"sources":["../../../../src/internal/data/realTimeDataInspect.ts"],"sourcesContent":["import { getAllContextValues } from \"../secret_internals.js\";\n\nexport interface RealTimeDataInspectRoot {\n tplStateStoreId?: string;\n}\n\nexport type RealTimeDataInspectHook = (\n detail: RealTimeDataInspectDetail\n) => void;\n\nexport type RealTimeDataInspectDetail =\n | RealTimeDataInspectUpdateDetail\n | RealTimeDataInspectInitializeDetail;\n\nexport interface RealTimeDataInspectUpdateDetail {\n changeType: \"update\";\n tplStateStoreId?: string;\n detail: {\n name: string;\n value: unknown;\n };\n}\n\nexport interface RealTimeDataInspectInitializeDetail {\n changeType: \"initialize\";\n tplStateStoreId?: string;\n detail: {\n data: Record<string, unknown>;\n };\n}\n\nexport let realTimeDataInspectRoot: RealTimeDataInspectRoot | undefined;\n\nexport const RealTimeDataInspectHooks: RealTimeDataInspectHook[] = [];\n\nexport function setRealTimeDataInspectRoot(root: RealTimeDataInspectRoot) {\n realTimeDataInspectRoot = root;\n\n const data = getAllContextValues({ tplStateStoreId: root.tplStateStoreId });\n callRealTimeDataInspectHooks({\n changeType: \"initialize\",\n tplStateStoreId: root.tplStateStoreId,\n detail: { data },\n });\n}\n\nexport function addRealTimeDataInspectHook(hook: RealTimeDataInspectHook) {\n RealTimeDataInspectHooks.push(hook);\n}\n\nexport function callRealTimeDataInspectHooks(\n detail: RealTimeDataInspectDetail\n) {\n setTimeout(() => {\n for (const hook of RealTimeDataInspectHooks) {\n try {\n hook(detail);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n `RealTimeDataInspectHook failed (${detail.changeType}):`,\n error\n );\n }\n }\n });\n}\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,wBAAwB;AA+B5D,OAAO,IAAIC,uBAA4D;AAEvE,OAAO,MAAMC,wBAAmD,GAAG,EAAE;AAErE,OAAO,SAASC,0BAA0BA,CAACC,IAA6B,EAAE;EACxEH,uBAAuB,GAAGG,IAAI;EAE9B,MAAMC,IAAI,GAAGL,mBAAmB,CAAC;IAAEM,eAAe,EAAEF,IAAI,CAACE;EAAgB,CAAC,CAAC;EAC3EC,4BAA4B,CAAC;IAC3BC,UAAU,EAAE,YAAY;IACxBF,eAAe,EAAEF,IAAI,CAACE,eAAe;IACrCG,MAAM,EAAE;MAAEJ;IAAK;EACjB,CAAC,CAAC;AACJ;AAEA,OAAO,SAASK,0BAA0BA,CAACC,IAA6B,EAAE;EACxET,wBAAwB,CAACU,IAAI,CAACD,IAAI,CAAC;AACrC;AAEA,OAAO,SAASJ,4BAA4BA,CAC1CE,MAAiC,EACjC;EACAI,UAAU,CAAC,MAAM;IACf,KAAK,MAAMF,IAAI,IAAIT,wBAAwB,EAAE;MAC3C,IAAI;QACFS,IAAI,CAACF,MAAM,CAAC;MACd,CAAC,CAAC,OAAOK,KAAK,EAAE;QACd;QACAC,OAAO,CAACD,KAAK,CACX,mCAAmCL,MAAM,CAACD,UAAU,IAAI,EACxDM,KACF,CAAC;MACH;IACF;EACF,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -1,123 +1,109 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
1
|
import { asyncComputeRealValue } from "../compute/computeRealValue.js";
|
|
4
2
|
import { getProviderBrick } from "./getProviderBrick.js";
|
|
5
3
|
import { _internalApiGetRenderId, hooks } from "../Runtime.js";
|
|
6
4
|
import { markAsComputed } from "../compute/markAsComputed.js";
|
|
7
5
|
import { get } from "lodash";
|
|
8
6
|
import { isStrictMode, warnAboutStrictMode } from "../../isStrictMode.js";
|
|
9
|
-
|
|
10
|
-
export function resolveData(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (
|
|
30
|
-
|
|
31
|
-
warnAboutStrictMode(strict, "`resolve.field`");
|
|
32
|
-
// istanbul ignore next
|
|
33
|
-
if (strict) {
|
|
34
|
-
throw new Error("Using deprecated `resolve.field`");
|
|
35
|
-
}
|
|
7
|
+
const cache = new Map();
|
|
8
|
+
export async function resolveData(resolveConf, runtimeContext, options) {
|
|
9
|
+
const {
|
|
10
|
+
useProvider,
|
|
11
|
+
method = "resolve",
|
|
12
|
+
args = [],
|
|
13
|
+
onReject
|
|
14
|
+
} = resolveConf;
|
|
15
|
+
const {
|
|
16
|
+
provider: legacyProvider,
|
|
17
|
+
field: legacyField
|
|
18
|
+
} = resolveConf;
|
|
19
|
+
if (legacyProvider && !useProvider) {
|
|
20
|
+
throw new Error(`You're using "provider: ${legacyProvider}" which is dropped in v3, please use "useProvider" instead`);
|
|
21
|
+
}
|
|
22
|
+
const hasLegacyField = legacyField !== null && legacyField !== undefined;
|
|
23
|
+
if (hasLegacyField) {
|
|
24
|
+
const strict = isStrictMode();
|
|
25
|
+
warnAboutStrictMode(strict, "`resolve.field`");
|
|
26
|
+
// istanbul ignore next
|
|
27
|
+
if (strict) {
|
|
28
|
+
throw new Error("Using deprecated `resolve.field`");
|
|
36
29
|
}
|
|
37
|
-
|
|
30
|
+
}
|
|
31
|
+
const [providerBrick, actualArgs] = await Promise.all([getProviderBrick(useProvider), asyncComputeRealValue(args, runtimeContext)]);
|
|
38
32
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (!transform) {
|
|
62
|
-
return data;
|
|
33
|
+
// `clearResolveCache` maybe cleared during the above promise being
|
|
34
|
+
// fulfilled, so we manually mark it as stale for this case.
|
|
35
|
+
const renderId = options === null || options === void 0 ? void 0 : options.renderId;
|
|
36
|
+
const stale = !!renderId && renderId !== _internalApiGetRenderId();
|
|
37
|
+
const promise = resolveByProvider(providerBrick, useProvider, method, actualArgs, options, args, stale);
|
|
38
|
+
let {
|
|
39
|
+
transform
|
|
40
|
+
} = resolveConf;
|
|
41
|
+
let data;
|
|
42
|
+
try {
|
|
43
|
+
const value = await promise;
|
|
44
|
+
data = hasLegacyField ? get(value, legacyField) : value;
|
|
45
|
+
// The fetched data and its inner objects should never be *injected* again.
|
|
46
|
+
markAsComputed(data);
|
|
47
|
+
} catch (error) {
|
|
48
|
+
if (isHandleRejectByTransform(onReject)) {
|
|
49
|
+
transform = onReject.transform;
|
|
50
|
+
data = error;
|
|
51
|
+
} else {
|
|
52
|
+
throw error;
|
|
63
53
|
}
|
|
54
|
+
}
|
|
55
|
+
if (!transform) {
|
|
56
|
+
return data;
|
|
57
|
+
}
|
|
64
58
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
59
|
+
// Keep backward compatibility of string transform.
|
|
60
|
+
if (typeof transform === "string") {
|
|
61
|
+
return {
|
|
62
|
+
[transform]: data
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return asyncComputeRealValue(transform, {
|
|
66
|
+
...runtimeContext,
|
|
67
|
+
data
|
|
74
68
|
});
|
|
75
|
-
return _resolveData.apply(this, arguments);
|
|
76
69
|
}
|
|
77
70
|
export function clearResolveCache() {
|
|
78
71
|
cache.clear();
|
|
79
72
|
}
|
|
80
|
-
export function resolveByProvider(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
});
|
|
94
|
-
} catch (e) {
|
|
95
|
-
if (!originalArgs) {
|
|
96
|
-
throw e;
|
|
97
|
-
}
|
|
98
|
-
cacheKey = JSON.stringify({
|
|
99
|
-
useProvider,
|
|
100
|
-
method,
|
|
101
|
-
originalArgs
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
var promise;
|
|
105
|
-
if ((options === null || options === void 0 ? void 0 : options.cache) !== "reload") {
|
|
106
|
-
promise = cache.get(cacheKey);
|
|
73
|
+
export async function resolveByProvider(brick, useProvider, method, args, options, originalArgs, stale) {
|
|
74
|
+
let cacheKey;
|
|
75
|
+
try {
|
|
76
|
+
// `args` may contain circular references, which makes
|
|
77
|
+
// JSON stringify failed, thus we fallback to original args.
|
|
78
|
+
cacheKey = JSON.stringify({
|
|
79
|
+
useProvider,
|
|
80
|
+
method,
|
|
81
|
+
args
|
|
82
|
+
});
|
|
83
|
+
} catch (e) {
|
|
84
|
+
if (!originalArgs) {
|
|
85
|
+
throw e;
|
|
107
86
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
87
|
+
cacheKey = JSON.stringify({
|
|
88
|
+
useProvider,
|
|
89
|
+
method,
|
|
90
|
+
originalArgs
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
let promise;
|
|
94
|
+
if ((options === null || options === void 0 ? void 0 : options.cache) !== "reload") {
|
|
95
|
+
promise = cache.get(cacheKey);
|
|
96
|
+
}
|
|
97
|
+
if (!promise) {
|
|
98
|
+
promise = (async _hooks$flowApi => {
|
|
99
|
+
const finalArgs = hooks !== null && hooks !== void 0 && (_hooks$flowApi = hooks.flowApi) !== null && _hooks$flowApi !== void 0 && _hooks$flowApi.isFlowApiProvider(useProvider) ? await hooks.flowApi.getArgsOfFlowApi(useProvider, args, method) : args;
|
|
100
|
+
return brick[method](...finalArgs);
|
|
101
|
+
})();
|
|
102
|
+
if (!stale) {
|
|
103
|
+
cache.set(cacheKey, promise);
|
|
117
104
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
return _resolveByProvider.apply(this, arguments);
|
|
105
|
+
}
|
|
106
|
+
return promise;
|
|
121
107
|
}
|
|
122
108
|
function isHandleRejectByTransform(onReject) {
|
|
123
109
|
return !!(onReject !== null && onReject !== void 0 && onReject.transform);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveData.js","names":["asyncComputeRealValue","getProviderBrick","_internalApiGetRenderId","hooks","markAsComputed","get","isStrictMode","warnAboutStrictMode","cache","Map","resolveData","
|
|
1
|
+
{"version":3,"file":"resolveData.js","names":["asyncComputeRealValue","getProviderBrick","_internalApiGetRenderId","hooks","markAsComputed","get","isStrictMode","warnAboutStrictMode","cache","Map","resolveData","resolveConf","runtimeContext","options","useProvider","method","args","onReject","provider","legacyProvider","field","legacyField","Error","hasLegacyField","undefined","strict","providerBrick","actualArgs","Promise","all","renderId","stale","promise","resolveByProvider","transform","data","value","error","isHandleRejectByTransform","clearResolveCache","clear","brick","originalArgs","cacheKey","JSON","stringify","e","_hooks$flowApi","finalArgs","flowApi","isFlowApiProvider","getArgsOfFlowApi","set"],"sources":["../../../../src/internal/data/resolveData.ts"],"sourcesContent":["import type {\n HandleReject,\n HandleRejectByTransform,\n ResolveConf,\n} from \"@next-core/types\";\nimport { asyncComputeRealValue } from \"../compute/computeRealValue.js\";\nimport { getProviderBrick } from \"./getProviderBrick.js\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { _internalApiGetRenderId, hooks } from \"../Runtime.js\";\nimport { markAsComputed } from \"../compute/markAsComputed.js\";\nimport { get } from \"lodash\";\nimport { isStrictMode, warnAboutStrictMode } from \"../../isStrictMode.js\";\n\nconst cache = new Map<string, Promise<unknown>>();\n\nexport interface ResolveOptions {\n /**\n * Cache mode of resolve.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Request/cache\n *\n * - `default`: Looks for a matching cache.\n * - `reload`: Without looking for a matching cache.\n */\n cache?: \"default\" | \"reload\";\n renderId?: string;\n}\n\nexport async function resolveData(\n resolveConf: ResolveConf,\n runtimeContext: RuntimeContext,\n options?: ResolveOptions\n) {\n const { useProvider, method = \"resolve\", args = [], onReject } = resolveConf;\n\n const { provider: legacyProvider, field: legacyField } = resolveConf as {\n provider?: string;\n field?: string | string[];\n };\n if (legacyProvider && !useProvider) {\n throw new Error(\n `You're using \"provider: ${legacyProvider}\" which is dropped in v3, please use \"useProvider\" instead`\n );\n }\n\n const hasLegacyField = legacyField !== null && legacyField !== undefined;\n if (hasLegacyField) {\n const strict = isStrictMode();\n warnAboutStrictMode(strict, \"`resolve.field`\");\n // istanbul ignore next\n if (strict) {\n throw new Error(\"Using deprecated `resolve.field`\");\n }\n }\n\n const [providerBrick, actualArgs] = await Promise.all([\n getProviderBrick(useProvider) as unknown as Promise<\n Record<string, Function>\n >,\n asyncComputeRealValue(args, runtimeContext) as Promise<unknown[]>,\n ]);\n\n // `clearResolveCache` maybe cleared during the above promise being\n // fulfilled, so we manually mark it as stale for this case.\n const renderId = options?.renderId;\n const stale = !!renderId && renderId !== _internalApiGetRenderId();\n\n const promise = resolveByProvider(\n providerBrick,\n useProvider,\n method,\n actualArgs,\n options,\n args,\n stale\n );\n\n let { transform } = resolveConf;\n let data: unknown;\n\n try {\n const value = await promise;\n data = hasLegacyField ? get(value, legacyField) : value;\n // The fetched data and its inner objects should never be *injected* again.\n markAsComputed(data);\n } catch (error) {\n if (isHandleRejectByTransform(onReject)) {\n transform = onReject.transform;\n data = error;\n } else {\n throw error;\n }\n }\n\n if (!transform) {\n return data;\n }\n\n // Keep backward compatibility of string transform.\n if (typeof transform === \"string\") {\n return { [transform]: data };\n }\n\n return asyncComputeRealValue(transform, { ...runtimeContext, data });\n}\n\nexport function clearResolveCache() {\n cache.clear();\n}\n\nexport async function resolveByProvider(\n brick: Record<string, Function>,\n useProvider: string,\n method: string,\n args: unknown[],\n options?: ResolveOptions,\n originalArgs?: unknown[],\n stale?: boolean\n) {\n let cacheKey: string;\n try {\n // `args` may contain circular references, which makes\n // JSON stringify failed, thus we fallback to original args.\n cacheKey = JSON.stringify({\n useProvider,\n method,\n args,\n });\n } catch (e) {\n if (!originalArgs) {\n throw e;\n }\n cacheKey = JSON.stringify({\n useProvider,\n method,\n originalArgs,\n });\n }\n\n let promise: Promise<unknown> | undefined;\n if (options?.cache !== \"reload\") {\n promise = cache.get(cacheKey);\n }\n if (!promise) {\n promise = (async () => {\n const finalArgs = hooks?.flowApi?.isFlowApiProvider(useProvider)\n ? await hooks.flowApi.getArgsOfFlowApi(useProvider, args, method)\n : args;\n return brick[method](...finalArgs);\n })();\n\n if (!stale) {\n cache.set(cacheKey, promise);\n }\n }\n\n return promise;\n}\n\nfunction isHandleRejectByTransform(\n onReject: HandleReject | undefined\n): onReject is HandleRejectByTransform {\n return !!(onReject as HandleRejectByTransform)?.transform;\n}\n"],"mappings":"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","ignoreList":[]}
|