@next-core/runtime 1.71.2 → 1.71.4

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":"computeRealValue.js","names":["_lodash","require","_cook","_general","_inject","_evaluate","_getNextStateOfUseBrick","_markAsComputed","_Runtime","penetrableCtxNames","asyncComputeRealValue","value","runtimeContext","internalOptions","preEvaluated","isPreEvaluated","lazy","$$lazyForUseBrick","isLazyContentInUseBrick","$$stateOfUseBrick","result","dismissMarkingComputed","isEvaluable","asyncEvaluate","shouldDismissMarkingComputed","penetrableCtx","unsafe_penetrate","pick","_internalApiGetRuntimeContext","omit","hasOwnProperty","noInject","transform","transformAndInject","identity","inject","markAsComputed","isObject","hasBeenComputed","Array","isArray","nextOptions","getNextComputeOptions","Promise","all","map","v","Object","fromEntries","entries","k","concat","ignoreSymbols","getOwnPropertySymbols","computeRealValue","evaluate","key","getNextStateOfUseBrick"],"sources":["../../../../src/internal/compute/computeRealValue.ts"],"sourcesContent":["import { omit, pick } from \"lodash\";\nimport { isEvaluable } from \"@next-core/cook\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { transformAndInject, transform, inject } from \"@next-core/inject\";\nimport {\n asyncEvaluate,\n isPreEvaluated,\n evaluate,\n shouldDismissMarkingComputed,\n} from \"./evaluate.js\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport {\n StateOfUseBrick,\n getNextStateOfUseBrick,\n isLazyContentInUseBrick,\n} from \"./getNextStateOfUseBrick.js\";\nimport { hasBeenComputed, markAsComputed } from \"./markAsComputed.js\";\nimport { _internalApiGetRuntimeContext } from \"../Runtime.js\";\n\nconst penetrableCtxNames = [\n \"app\",\n \"location\",\n \"query\",\n \"match\",\n \"flags\",\n \"sys\",\n] as const;\n\nexport interface ComputeOptions {\n $$lazyForUseBrick?: boolean;\n $$stateOfUseBrick?: StateOfUseBrick;\n ignoreSymbols?: boolean;\n noInject?: boolean;\n}\n\nexport async function asyncComputeRealValue(\n value: unknown,\n runtimeContext: RuntimeContext,\n internalOptions: ComputeOptions = {}\n): Promise<unknown> {\n const preEvaluated = isPreEvaluated(value);\n\n if (preEvaluated || typeof value === \"string\") {\n // For `useBrick`, some fields such as `properties`/`transform`/`events`/`if`,\n // are kept and to be evaluated later.\n const lazy =\n internalOptions.$$lazyForUseBrick &&\n isLazyContentInUseBrick(internalOptions.$$stateOfUseBrick);\n\n let result: unknown;\n let dismissMarkingComputed = lazy;\n\n if (preEvaluated || isEvaluable(value as string)) {\n result = await asyncEvaluate(value, runtimeContext, { lazy });\n dismissMarkingComputed = shouldDismissMarkingComputed(value);\n } else if (lazy) {\n result = value;\n } else {\n const penetrableCtx = runtimeContext.unsafe_penetrate\n ? ({\n ...pick(_internalApiGetRuntimeContext(), penetrableCtxNames),\n ...omit(runtimeContext, penetrableCtxNames),\n } as RuntimeContext)\n : runtimeContext;\n\n result = (\n hasOwnProperty(penetrableCtx, \"data\")\n ? internalOptions.noInject\n ? transform\n : transformAndInject\n : internalOptions.noInject\n ? identity\n : inject\n )(value, penetrableCtx);\n }\n\n if (!dismissMarkingComputed) {\n markAsComputed(result);\n }\n\n return result;\n }\n\n if (\n !isObject(value) ||\n hasBeenComputed(value) ||\n typeof value === \"function\"\n ) {\n return value;\n }\n\n if (Array.isArray(value)) {\n const nextOptions = getNextComputeOptions(internalOptions, true);\n return Promise.all(\n value.map((v) => asyncComputeRealValue(v, runtimeContext, nextOptions))\n );\n }\n\n return Object.fromEntries(\n (\n await Promise.all(\n Object.entries(value).map(([k, v]) =>\n Promise.all([\n asyncComputeRealValue(k, runtimeContext),\n asyncComputeRealValue(\n v,\n runtimeContext,\n getNextComputeOptions(internalOptions, false, k)\n ),\n ])\n )\n )\n ).concat(\n internalOptions.ignoreSymbols\n ? []\n : Object.getOwnPropertySymbols(value).map((k) => [\n k,\n (value as Record<string | symbol, unknown>)[k],\n ])\n )\n );\n}\n\nexport function computeRealValue(\n value: unknown,\n runtimeContext: RuntimeContext,\n internalOptions: ComputeOptions = {}\n): unknown {\n const preEvaluated = isPreEvaluated(value);\n\n if (preEvaluated || typeof value === \"string\") {\n // For `useBrick`, some fields such as `properties`/`transform`/`events`/`if`,\n // are kept and to be evaluated later.\n const lazy =\n internalOptions.$$lazyForUseBrick &&\n isLazyContentInUseBrick(internalOptions.$$stateOfUseBrick);\n\n let result: unknown;\n let dismissMarkingComputed = lazy;\n\n if (preEvaluated || isEvaluable(value as string)) {\n result = evaluate(value, runtimeContext);\n dismissMarkingComputed = shouldDismissMarkingComputed(value);\n } else if (lazy) {\n result = value;\n } else {\n const penetrableCtx = runtimeContext.unsafe_penetrate\n ? ({\n ...pick(_internalApiGetRuntimeContext(), penetrableCtxNames),\n ...omit(runtimeContext, penetrableCtxNames),\n } as RuntimeContext)\n : runtimeContext;\n\n result = (\n hasOwnProperty(penetrableCtx, \"data\")\n ? internalOptions.noInject\n ? transform\n : transformAndInject\n : internalOptions.noInject\n ? identity\n : inject\n )(value, penetrableCtx);\n }\n\n if (!dismissMarkingComputed) {\n markAsComputed(result);\n }\n\n return result;\n }\n\n if (\n !isObject(value) ||\n hasBeenComputed(value) ||\n typeof value === \"function\"\n ) {\n return value;\n }\n\n if (Array.isArray(value)) {\n const nextOptions = getNextComputeOptions(internalOptions, true);\n return value.map((v) => computeRealValue(v, runtimeContext, nextOptions));\n }\n\n return Object.fromEntries(\n Object.entries(value)\n .map(([k, v]) => [\n computeRealValue(k, runtimeContext),\n computeRealValue(\n v,\n runtimeContext,\n getNextComputeOptions(internalOptions, false, k)\n ),\n ])\n .concat(\n internalOptions.ignoreSymbols\n ? []\n : Object.getOwnPropertySymbols(value).map((k) => [\n k,\n (value as Record<string | symbol, unknown>)[k],\n ])\n )\n );\n}\n\nfunction getNextComputeOptions(\n internalOptions: ComputeOptions,\n isArray: boolean,\n key?: string\n): ComputeOptions {\n return internalOptions.$$lazyForUseBrick\n ? {\n ...internalOptions,\n $$stateOfUseBrick: getNextStateOfUseBrick(\n internalOptions.$$stateOfUseBrick,\n isArray,\n key\n ),\n }\n : internalOptions;\n}\n\nfunction identity<T>(value: T): T {\n return value;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"computeRealValue.js","names":["_lodash","require","_cook","_general","_inject","_evaluate","_getNextStateOfUseBrick","_markAsComputed","_Runtime","penetrableCtxNames","asyncComputeRealValue","value","runtimeContext","internalOptions","preEvaluated","isPreEvaluated","_runtimeContext$app","lazy","$$lazyForUseBrick","isLazyContentInUseBrick","$$stateOfUseBrick","result","dismissMarkingComputed","isEvaluable","asyncEvaluate","shouldDismissMarkingComputed","app","noPlaceholders","penetrableCtx","unsafe_penetrate","pick","_internalApiGetRuntimeContext","omit","hasOwnProperty","noInject","transform","transformAndInject","identity","inject","markAsComputed","isObject","hasBeenComputed","Array","isArray","nextOptions","getNextComputeOptions","Promise","all","map","v","Object","fromEntries","entries","k","concat","ignoreSymbols","getOwnPropertySymbols","computeRealValue","_runtimeContext$app2","evaluate","key","getNextStateOfUseBrick"],"sources":["../../../../src/internal/compute/computeRealValue.ts"],"sourcesContent":["import { omit, pick } from \"lodash\";\nimport { isEvaluable } from \"@next-core/cook\";\nimport { hasOwnProperty, isObject } from \"@next-core/utils/general\";\nimport { transformAndInject, transform, inject } from \"@next-core/inject\";\nimport {\n asyncEvaluate,\n isPreEvaluated,\n evaluate,\n shouldDismissMarkingComputed,\n} from \"./evaluate.js\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport {\n StateOfUseBrick,\n getNextStateOfUseBrick,\n isLazyContentInUseBrick,\n} from \"./getNextStateOfUseBrick.js\";\nimport { hasBeenComputed, markAsComputed } from \"./markAsComputed.js\";\nimport { _internalApiGetRuntimeContext } from \"../Runtime.js\";\n\nconst penetrableCtxNames = [\n \"app\",\n \"location\",\n \"query\",\n \"match\",\n \"flags\",\n \"sys\",\n] as const;\n\nexport interface ComputeOptions {\n $$lazyForUseBrick?: boolean;\n $$stateOfUseBrick?: StateOfUseBrick;\n ignoreSymbols?: boolean;\n noInject?: boolean;\n}\n\nexport async function asyncComputeRealValue(\n value: unknown,\n runtimeContext: RuntimeContext,\n internalOptions: ComputeOptions = {}\n): Promise<unknown> {\n const preEvaluated = isPreEvaluated(value);\n\n if (preEvaluated || typeof value === \"string\") {\n // For `useBrick`, some fields such as `properties`/`transform`/`events`/`if`,\n // are kept and to be evaluated later.\n const lazy =\n internalOptions.$$lazyForUseBrick &&\n isLazyContentInUseBrick(internalOptions.$$stateOfUseBrick);\n\n let result: unknown;\n let dismissMarkingComputed = false;\n\n if (preEvaluated || isEvaluable(value as string)) {\n result = await asyncEvaluate(value, runtimeContext, { lazy });\n dismissMarkingComputed = shouldDismissMarkingComputed(value);\n } else if (lazy || runtimeContext.app?.noPlaceholders) {\n result = value;\n dismissMarkingComputed = true;\n } else {\n const penetrableCtx = runtimeContext.unsafe_penetrate\n ? ({\n ...pick(_internalApiGetRuntimeContext(), penetrableCtxNames),\n ...omit(runtimeContext, penetrableCtxNames),\n } as RuntimeContext)\n : runtimeContext;\n\n result = (\n hasOwnProperty(penetrableCtx, \"data\")\n ? internalOptions.noInject\n ? transform\n : transformAndInject\n : internalOptions.noInject\n ? identity\n : inject\n )(value, penetrableCtx);\n }\n\n if (!dismissMarkingComputed) {\n markAsComputed(result);\n }\n\n return result;\n }\n\n if (\n !isObject(value) ||\n hasBeenComputed(value) ||\n typeof value === \"function\"\n ) {\n return value;\n }\n\n if (Array.isArray(value)) {\n const nextOptions = getNextComputeOptions(internalOptions, true);\n return Promise.all(\n value.map((v) => asyncComputeRealValue(v, runtimeContext, nextOptions))\n );\n }\n\n return Object.fromEntries(\n (\n await Promise.all(\n Object.entries(value).map(([k, v]) =>\n Promise.all([\n asyncComputeRealValue(k, runtimeContext),\n asyncComputeRealValue(\n v,\n runtimeContext,\n getNextComputeOptions(internalOptions, false, k)\n ),\n ])\n )\n )\n ).concat(\n internalOptions.ignoreSymbols\n ? []\n : Object.getOwnPropertySymbols(value).map((k) => [\n k,\n (value as Record<string | symbol, unknown>)[k],\n ])\n )\n );\n}\n\nexport function computeRealValue(\n value: unknown,\n runtimeContext: RuntimeContext,\n internalOptions: ComputeOptions = {}\n): unknown {\n const preEvaluated = isPreEvaluated(value);\n\n if (preEvaluated || typeof value === \"string\") {\n // For `useBrick`, some fields such as `properties`/`transform`/`events`/`if`,\n // are kept and to be evaluated later.\n const lazy =\n internalOptions.$$lazyForUseBrick &&\n isLazyContentInUseBrick(internalOptions.$$stateOfUseBrick);\n\n let result: unknown;\n let dismissMarkingComputed = false;\n\n if (preEvaluated || isEvaluable(value as string)) {\n result = evaluate(value, runtimeContext);\n dismissMarkingComputed = shouldDismissMarkingComputed(value);\n } else if (lazy || runtimeContext.app?.noPlaceholders) {\n result = value;\n dismissMarkingComputed = true;\n } else {\n const penetrableCtx = runtimeContext.unsafe_penetrate\n ? ({\n ...pick(_internalApiGetRuntimeContext(), penetrableCtxNames),\n ...omit(runtimeContext, penetrableCtxNames),\n } as RuntimeContext)\n : runtimeContext;\n\n result = (\n hasOwnProperty(penetrableCtx, \"data\")\n ? internalOptions.noInject\n ? transform\n : transformAndInject\n : internalOptions.noInject\n ? identity\n : inject\n )(value, penetrableCtx);\n }\n\n if (!dismissMarkingComputed) {\n markAsComputed(result);\n }\n\n return result;\n }\n\n if (\n !isObject(value) ||\n hasBeenComputed(value) ||\n typeof value === \"function\"\n ) {\n return value;\n }\n\n if (Array.isArray(value)) {\n const nextOptions = getNextComputeOptions(internalOptions, true);\n return value.map((v) => computeRealValue(v, runtimeContext, nextOptions));\n }\n\n return Object.fromEntries(\n Object.entries(value)\n .map(([k, v]) => [\n computeRealValue(k, runtimeContext),\n computeRealValue(\n v,\n runtimeContext,\n getNextComputeOptions(internalOptions, false, k)\n ),\n ])\n .concat(\n internalOptions.ignoreSymbols\n ? []\n : Object.getOwnPropertySymbols(value).map((k) => [\n k,\n (value as Record<string | symbol, unknown>)[k],\n ])\n )\n );\n}\n\nfunction getNextComputeOptions(\n internalOptions: ComputeOptions,\n isArray: boolean,\n key?: string\n): ComputeOptions {\n return internalOptions.$$lazyForUseBrick\n ? {\n ...internalOptions,\n $$stateOfUseBrick: getNextStateOfUseBrick(\n internalOptions.$$stateOfUseBrick,\n isArray,\n key\n ),\n }\n : internalOptions;\n}\n\nfunction identity<T>(value: T): T {\n return value;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -380,6 +380,20 @@ runtimeContext, options = {}, isAsync) {
380
380
  case "SYS":
381
381
  globalVariables[variableName] = (0, _proxyFactories.getReadOnlyProxy)(sys ?? {});
382
382
  break;
383
+ case "CONSTANTS":
384
+ // globalVariables[variableName] = getReadOnlyProxy(app?.constants ?? {});
385
+ globalVariables[variableName] = (0, _proxyFactories.getDynamicReadOnlyProxy)({
386
+ get(_target, key) {
387
+ if (!(app !== null && app !== void 0 && app.constants) || !(0, _general.hasOwnProperty)(app.constants, key)) {
388
+ throw new ReferenceError(`CONSTANTS.${key} is not defined`);
389
+ }
390
+ return app.constants[key];
391
+ },
392
+ ownKeys() {
393
+ return app !== null && app !== void 0 && app.constants ? Object.keys(app.constants) : [];
394
+ }
395
+ });
396
+ break;
383
397
  case "__WIDGET_FN__":
384
398
  globalVariables[variableName] = _WidgetFunctions.widgetFunctions;
385
399
  break;
@@ -393,7 +407,7 @@ runtimeContext, options = {}, isAsync) {
393
407
  }
394
408
  Object.assign(globalVariables, (0, _getGeneralGlobals.getGeneralGlobals)(precooked.attemptToVisitGlobals, {
395
409
  storyboardFunctions: _StoryboardFunctions.storyboardFunctions,
396
- app: app,
410
+ app,
397
411
  appendI18nNamespace: runtimeContext.appendI18nNamespace,
398
412
  isolatedRoot: runtimeContext.isolatedRoot
399
413
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.js","names":["_cook","require","_loader","_supply","_general","_storyboard","_lodash","_CustomProcessors","_StoryboardFunctions","_getGeneralGlobals","_proxyFactories","_devtools","_mediaQuery","_getStorageItem","_Runtime","_utils","_WidgetFunctions","_WidgetI18n","_hasInstalledApp","_isStrictMode","_utils2","_resolveData","_computeRealValue","symbolForRaw","Symbol","for","symbolForContext","isPreEvaluated","raw","getPreEvaluatedRaw","pre","shouldDismissMarkingComputed","shouldAllowRecursiveEvaluations","possibleErrorConstructs","WeakSet","SyntaxError","TypeError","ReferenceError","getCookErrorConstructor","error","has","constructor","asyncEvaluate","runtimeContext","options","blockingList","run","lowLevelEvaluate","Promise","all","evaluate","isAsync","passByRuntimeContext","omit","menuUsage","usedArgs","Set","hasAppUsage","precooked","preevaluate","cache","withParent","hooks","beforeVisitGlobal","node","parent","collectAppGetMenuUsage","collectInstalledAppsHasUsage","message","errorConstructor","hasNonStaticUsage","Error","globalVariables","attemptToVisitGlobals","lazy","hasOwnProperty","Object","keys","length","usedCtx","usedProcessors","usedStates","tplStateStore","strict","isStrictMode","getTplStateStore","usedFormStates","formStateStore","getFormStateStore","devHook","getDevHook","strictCollectMemberUsage","push","ctxStore","waitFor","usedTpls","tpl","add","loadProcessorsImperatively","getBrickPackages","attemptToCheckPermissions","usedFunctions","checkPermissionsUsage","pendingPermissionsPreCheck","size","menu","usedMenuIds","map","menuId","fetchMenuById","getStoryboardByAppId","_internalApiGetStoryboardInBootstrapData","resolveData","asyncComputeRealValue","_hooks$checkInstalled","checkInstalledApps","waitForCheckingApps","_hooks$menu","_hooks$images","data","event","unsafe_penetrate","penetrableCtx","_internalApiGetRuntimeContext","app","currentApp","location","query","match","flags","sys","overrideApp","variableName","hash","substring","cloneDeep","getMenu","getMenuById","getDynamicReadOnlyProxy","get","_target","key","_internalApiGetRuntim","internalCtxStore","getValue","ownKeys","Array","from","getReadOnlyProxy","hasInstalledApp","property","console","getItem","getStorageItem","getMedia","getRuntime","getMiscSettings","URLSearchParams","params","pathname","pkg","customProcessors","_t","k","processor","namespace","split","fromEntries","getAll","warnAboutStrictMode","widgetFunctions","images","widgetImagesFactory","widgetI18nFactory","assign","getGeneralGlobals","storyboardFunctions","appendI18nNamespace","isolatedRoot","result","cook","expression","source","supply","detail","context","devtoolsHookEmit"],"sources":["../../../../src/internal/compute/evaluate.ts"],"sourcesContent":["import {\n cook,\n preevaluate,\n PreevaluateResult,\n shouldAllowRecursiveEvaluations,\n} from \"@next-core/cook\";\nimport { loadProcessorsImperatively } from \"@next-core/loader\";\nimport { supply } from \"@next-core/supply\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport {\n strictCollectMemberUsage,\n collectAppGetMenuUsage,\n collectInstalledAppsHasUsage,\n MemberCallUsage,\n} from \"@next-core/utils/storyboard\";\nimport { cloneDeep, omit } from \"lodash\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { customProcessors } from \"../../CustomProcessors.js\";\nimport {\n checkPermissionsUsage,\n storyboardFunctions,\n} from \"./StoryboardFunctions.js\";\nimport { getGeneralGlobals } from \"./getGeneralGlobals.js\";\nimport {\n getDynamicReadOnlyProxy,\n getReadOnlyProxy,\n} from \"../proxyFactories.js\";\nimport { devtoolsHookEmit, getDevHook } from \"../devtools.js\";\nimport { getMedia } from \"../mediaQuery.js\";\nimport { getStorageItem } from \"./getStorageItem.js\";\nimport {\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n getBrickPackages,\n getRuntime,\n hooks,\n} from \"../Runtime.js\";\nimport type { DataStore } from \"../data/DataStore.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { widgetFunctions } from \"./WidgetFunctions.js\";\nimport { widgetI18nFactory } from \"./WidgetI18n.js\";\nimport { hasInstalledApp } from \"../hasInstalledApp.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../../isStrictMode.js\";\nimport { getFormStateStore } from \"../FormRenderer/utils.js\";\nimport { resolveData } from \"../data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./computeRealValue.js\";\n\nconst symbolForRaw = Symbol.for(\"pre.evaluated.raw\");\nconst symbolForContext = Symbol.for(\"pre.evaluated.context\");\n\nexport interface PreEvaluated {\n [symbolForRaw]: string;\n [symbolForContext]: RuntimeContext;\n}\n\nexport interface EvaluateOptions {\n lazy?: boolean;\n evaluationId?: number;\n}\n\nexport function isPreEvaluated(raw: unknown): raw is PreEvaluated {\n return !!(raw as PreEvaluated)?.[symbolForRaw];\n}\n\nexport function getPreEvaluatedRaw(pre: PreEvaluated): string {\n return pre[symbolForRaw];\n}\n\nexport function shouldDismissMarkingComputed(\n raw: string | PreEvaluated\n): boolean {\n if (typeof raw === \"string\") {\n return shouldAllowRecursiveEvaluations(raw);\n }\n return shouldAllowRecursiveEvaluations(raw[symbolForRaw]);\n}\n\nconst possibleErrorConstructs = new WeakSet<ErrorConstructor>([\n SyntaxError,\n TypeError,\n ReferenceError,\n]);\n\nexport function getCookErrorConstructor(error: any): ErrorConstructor {\n return possibleErrorConstructs.has(error.constructor)\n ? error.constructor\n : TypeError;\n}\n\nexport async function asyncEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { blockingList, run } = lowLevelEvaluate(\n raw,\n runtimeContext,\n options,\n true\n );\n await Promise.all(blockingList);\n return run();\n}\n\nexport function evaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { run } = lowLevelEvaluate(raw, runtimeContext, options, false);\n return run();\n}\n\nfunction lowLevelEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options: EvaluateOptions = {},\n isAsync?: boolean\n): {\n blockingList: (Promise<unknown> | undefined)[];\n run: Function;\n} {\n const blockingList: (Promise<unknown> | undefined)[] = [];\n if (typeof raw !== \"string\") {\n // If the `raw` is not a string, it must be a pre-evaluated object.\n // Then fulfil the context, and restore the original `raw`.\n\n const passByRuntimeContext = omit(runtimeContext, [\n \"pendingPermissionsPreCheck\",\n \"tplStateStoreMap\",\n \"tplStateStoreScope\",\n \"formStateStoreMap\",\n \"formStateStoreScope\",\n ]);\n\n runtimeContext = {\n ...raw[symbolForContext],\n ...passByRuntimeContext,\n };\n raw = raw[symbolForRaw];\n }\n\n // Collect `APP.getMenu(...)` usage before evaluating.\n const menuUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n const hasAppUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n\n // A `SyntaxError` maybe thrown.\n let precooked: PreevaluateResult;\n try {\n precooked = preevaluate(raw, {\n cache: true,\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n collectAppGetMenuUsage(menuUsage, node, parent!);\n collectInstalledAppsHasUsage(hasAppUsage, node, parent!);\n },\n },\n });\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n }\n\n if (menuUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"APP.getMenu\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n if (hasAppUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"INSTALLED_APPS.has\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n const globalVariables: Record<string, unknown> = {};\n const { attemptToVisitGlobals } = precooked;\n\n // Ignore evaluating if required `event/DATA` is missing in\n // context. Since they are are provided in different context, whenever\n // missing one of them, memorize the current context for later consuming.\n if (\n options.lazy ||\n (attemptToVisitGlobals.has(\"EVENT\") &&\n !hasOwnProperty(runtimeContext, \"event\")) ||\n (attemptToVisitGlobals.has(\"DATA\") &&\n !hasOwnProperty(runtimeContext, \"data\"))\n ) {\n return {\n blockingList,\n run() {\n return Object.keys(runtimeContext).length > 0\n ? ({\n [symbolForRaw]: raw,\n [symbolForContext]: runtimeContext,\n } as PreEvaluated)\n : raw;\n },\n };\n }\n\n let usedCtx: Set<string> | undefined;\n let usedProcessors: Set<string>;\n let usedStates: Set<string>;\n let tplStateStore: DataStore<\"STATE\"> | undefined;\n const strict = isStrictMode(runtimeContext);\n\n // For existed TPL usage, treat it as a STATE.\n if (\n attemptToVisitGlobals.has(\"STATE\") ||\n (!strict && attemptToVisitGlobals.has(\"TPL\"))\n ) {\n tplStateStore = getTplStateStore(runtimeContext, \"STATE\", `: \"${raw}\"`);\n }\n\n let usedFormStates: Set<string>;\n let formStateStore: DataStore<\"FORM_STATE\"> | undefined;\n if (attemptToVisitGlobals.has(\"FORM_STATE\")) {\n formStateStore = getFormStateStore(\n runtimeContext,\n \"FORM_STATE\",\n `: \"${raw}\"`\n );\n }\n\n const devHook = getDevHook();\n if (isAsync || devHook) {\n if (attemptToVisitGlobals.has(\"CTX\")) {\n usedCtx = strictCollectMemberUsage(raw, \"CTX\");\n isAsync && blockingList.push(runtimeContext.ctxStore.waitFor(usedCtx));\n }\n\n if (tplStateStore) {\n usedStates = strictCollectMemberUsage(raw, \"STATE\");\n // istanbul ignore if\n if (!strict) {\n const usedTpls = strictCollectMemberUsage(raw, \"TPL\");\n for (const tpl of usedTpls) {\n usedStates.add(tpl);\n }\n }\n isAsync && blockingList.push(tplStateStore.waitFor(usedStates));\n }\n\n if (formStateStore) {\n usedFormStates = strictCollectMemberUsage(raw, \"FORM_STATE\");\n isAsync && blockingList.push(formStateStore.waitFor(usedFormStates));\n }\n\n if (attemptToVisitGlobals.has(\"PROCESSORS\")) {\n usedProcessors = strictCollectMemberUsage(raw, \"PROCESSORS\", 2);\n isAsync &&\n blockingList.push(\n loadProcessorsImperatively(usedProcessors, getBrickPackages())\n );\n }\n }\n\n if (isAsync) {\n let attemptToCheckPermissions = attemptToVisitGlobals.has(\"PERMISSIONS\");\n // There maybe `PERMISSIONS.check()` usage in functions\n if (!attemptToCheckPermissions && attemptToVisitGlobals.has(\"FN\")) {\n const usedFunctions = [...strictCollectMemberUsage(raw, \"FN\")];\n attemptToCheckPermissions = checkPermissionsUsage(usedFunctions);\n }\n\n if (attemptToCheckPermissions) {\n blockingList.push(...runtimeContext.pendingPermissionsPreCheck);\n }\n\n if (menuUsage.usedArgs.size > 0 && hooks?.menu) {\n // Block evaluating if has `APP.getMenu(...)` usage.\n const usedMenuIds = [...menuUsage.usedArgs];\n blockingList.push(\n Promise.all(\n usedMenuIds.map((menuId) =>\n hooks!.menu!.fetchMenuById(menuId, runtimeContext, {\n getStoryboardByAppId: _internalApiGetStoryboardInBootstrapData,\n resolveData,\n asyncComputeRealValue,\n })\n )\n )\n );\n }\n\n if (hasAppUsage.usedArgs.size > 0) {\n // Only wait for specific apps\n blockingList.push(\n hooks?.checkInstalledApps?.waitForCheckingApps([\n ...hasAppUsage.usedArgs,\n ])\n );\n }\n }\n\n return {\n blockingList,\n run() {\n const { ctxStore, data, event, unsafe_penetrate } = runtimeContext;\n\n const penetrableCtx = unsafe_penetrate\n ? _internalApiGetRuntimeContext()!\n : runtimeContext;\n\n const {\n app: currentApp,\n location,\n query,\n match,\n flags,\n sys,\n } = penetrableCtx;\n const app = penetrableCtx.overrideApp ?? currentApp;\n\n for (const variableName of attemptToVisitGlobals) {\n switch (variableName) {\n // case \"ALIAS\":\n case \"ANCHOR\":\n globalVariables[variableName] = location.hash\n ? location.hash.substring(1)\n : null;\n break;\n case \"APP\":\n if (app == null) {\n throw new ReferenceError(`APP is not defined, in \"${raw}\"`);\n }\n globalVariables[variableName] = {\n ...cloneDeep(app),\n getMenu: hooks?.menu?.getMenuById,\n };\n break;\n case \"CTX\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n // Allow accessing global `CTX.DS` from an isolated root such as dashboard.\n if (key === \"DS\" && !ctxStore.has(key)) {\n const internalCtxStore =\n _internalApiGetRuntimeContext()?.ctxStore;\n if (internalCtxStore?.has(key)) {\n return internalCtxStore.getValue(key);\n }\n }\n return ctxStore.getValue(key as string);\n },\n ownKeys() {\n return usedCtx ? Array.from(usedCtx) : [];\n },\n });\n break;\n case \"DATA\":\n globalVariables[variableName] = data;\n break;\n case \"EVENT\":\n globalVariables[variableName] = event;\n break;\n case \"FLAGS\":\n globalVariables[variableName] = getReadOnlyProxy(flags);\n break;\n case \"FORM_STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n return formStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedFormStates);\n },\n });\n break;\n case \"HASH\":\n globalVariables[variableName] = location.hash;\n break;\n case \"INSTALLED_APPS\":\n globalVariables[variableName] = getReadOnlyProxy({\n has: hasInstalledApp,\n });\n break;\n case \"ITEM\":\n case \"INDEX\":\n case \"SIZE\": {\n const property =\n variableName === \"ITEM\"\n ? \"forEachItem\"\n : variableName === \"INDEX\"\n ? \"forEachIndex\"\n : \"forEachSize\";\n if (!hasOwnProperty(runtimeContext, property)) {\n // eslint-disable-next-line no-console\n console.error(\n `Using \\`${variableName}\\` but no \\`:forEach\\` is found, check your expression: \"${raw}\"`\n );\n } else {\n globalVariables[variableName] = runtimeContext[property];\n }\n break;\n }\n case \"LOCAL_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"local\"),\n });\n break;\n case \"MEDIA\":\n globalVariables[variableName] = getReadOnlyProxy(getMedia());\n break;\n case \"MISC\":\n globalVariables[variableName] = getRuntime().getMiscSettings();\n break;\n case \"PARAMS\":\n if (query == null) {\n throw new ReferenceError(`PARAMS is not defined, in \"${raw}\"`);\n }\n globalVariables[variableName] = new URLSearchParams(query);\n break;\n case \"PATH\":\n globalVariables[variableName] = getReadOnlyProxy(\n match?.params ?? {}\n );\n break;\n case \"PATH_NAME\":\n globalVariables[variableName] = location.pathname;\n break;\n case \"PROCESSORS\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n const pkg = customProcessors.get(key as string);\n if (!pkg) {\n throw new Error(\n `'PROCESSORS.${\n key as string\n }' is not registered! Have you installed the relevant brick package?`\n );\n }\n return getDynamicReadOnlyProxy({\n get(_t, k) {\n return pkg.get(k as string);\n },\n ownKeys() {\n return Array.from(pkg.keys());\n },\n });\n },\n ownKeys() {\n const keys = new Set<string>();\n for (const processor of usedProcessors) {\n const namespace = processor.split(\".\")[0];\n keys.add(namespace);\n }\n return Array.from(keys);\n },\n });\n break;\n case \"QUERY\":\n if (query == null) {\n throw new ReferenceError(`QUERY is not defined, in \"${raw}\"`);\n }\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.get(key)])\n );\n break;\n case \"QUERY_ARRAY\":\n if (query == null) {\n throw new ReferenceError(\n `QUERY_ARRAY is not defined, in \"${raw}\"`\n );\n }\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.getAll(key)])\n );\n // case \"SEGUE\":\n break;\n case \"SESSION_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"session\"),\n });\n break;\n // istanbul ignore next\n case \"TPL\":\n warnAboutStrictMode(\n strict,\n 'Using \"TPL\" in expression',\n `check your expression: \"${raw}\"`\n );\n if (strict) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n case \"STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n return tplStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedStates);\n },\n });\n break;\n case \"SYS\":\n globalVariables[variableName] = getReadOnlyProxy(sys ?? {});\n break;\n case \"__WIDGET_FN__\":\n globalVariables[variableName] = widgetFunctions;\n break;\n case \"__WIDGET_IMG__\":\n globalVariables[variableName] = hooks?.images?.widgetImagesFactory;\n break;\n case \"__WIDGET_I18N__\":\n globalVariables[variableName] = widgetI18nFactory;\n break;\n }\n }\n\n Object.assign(\n globalVariables,\n getGeneralGlobals(precooked.attemptToVisitGlobals, {\n storyboardFunctions,\n app: app,\n appendI18nNamespace: runtimeContext.appendI18nNamespace,\n isolatedRoot: runtimeContext.isolatedRoot,\n })\n );\n\n try {\n const result = cook(precooked.expression, precooked.source, {\n globalVariables: supply(\n precooked.attemptToVisitGlobals,\n globalVariables\n ),\n });\n const detail = { raw, context: globalVariables, result };\n devtoolsHookEmit(\"evaluation\", detail);\n return result;\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n }\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"evaluate.js","names":["_cook","require","_loader","_supply","_general","_storyboard","_lodash","_CustomProcessors","_StoryboardFunctions","_getGeneralGlobals","_proxyFactories","_devtools","_mediaQuery","_getStorageItem","_Runtime","_utils","_WidgetFunctions","_WidgetI18n","_hasInstalledApp","_isStrictMode","_utils2","_resolveData","_computeRealValue","symbolForRaw","Symbol","for","symbolForContext","isPreEvaluated","raw","getPreEvaluatedRaw","pre","shouldDismissMarkingComputed","shouldAllowRecursiveEvaluations","possibleErrorConstructs","WeakSet","SyntaxError","TypeError","ReferenceError","getCookErrorConstructor","error","has","constructor","asyncEvaluate","runtimeContext","options","blockingList","run","lowLevelEvaluate","Promise","all","evaluate","isAsync","passByRuntimeContext","omit","menuUsage","usedArgs","Set","hasAppUsage","precooked","preevaluate","cache","withParent","hooks","beforeVisitGlobal","node","parent","collectAppGetMenuUsage","collectInstalledAppsHasUsage","message","errorConstructor","hasNonStaticUsage","Error","globalVariables","attemptToVisitGlobals","lazy","hasOwnProperty","Object","keys","length","usedCtx","usedProcessors","usedStates","tplStateStore","strict","isStrictMode","getTplStateStore","usedFormStates","formStateStore","getFormStateStore","devHook","getDevHook","strictCollectMemberUsage","push","ctxStore","waitFor","usedTpls","tpl","add","loadProcessorsImperatively","getBrickPackages","attemptToCheckPermissions","usedFunctions","checkPermissionsUsage","pendingPermissionsPreCheck","size","menu","usedMenuIds","map","menuId","fetchMenuById","getStoryboardByAppId","_internalApiGetStoryboardInBootstrapData","resolveData","asyncComputeRealValue","_hooks$checkInstalled","checkInstalledApps","waitForCheckingApps","_hooks$menu","_hooks$images","data","event","unsafe_penetrate","penetrableCtx","_internalApiGetRuntimeContext","app","currentApp","location","query","match","flags","sys","overrideApp","variableName","hash","substring","cloneDeep","getMenu","getMenuById","getDynamicReadOnlyProxy","get","_target","key","_internalApiGetRuntim","internalCtxStore","getValue","ownKeys","Array","from","getReadOnlyProxy","hasInstalledApp","property","console","getItem","getStorageItem","getMedia","getRuntime","getMiscSettings","URLSearchParams","params","pathname","pkg","customProcessors","_t","k","processor","namespace","split","fromEntries","getAll","warnAboutStrictMode","constants","widgetFunctions","images","widgetImagesFactory","widgetI18nFactory","assign","getGeneralGlobals","storyboardFunctions","appendI18nNamespace","isolatedRoot","result","cook","expression","source","supply","detail","context","devtoolsHookEmit"],"sources":["../../../../src/internal/compute/evaluate.ts"],"sourcesContent":["import {\n cook,\n preevaluate,\n PreevaluateResult,\n shouldAllowRecursiveEvaluations,\n} from \"@next-core/cook\";\nimport { loadProcessorsImperatively } from \"@next-core/loader\";\nimport { supply } from \"@next-core/supply\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport {\n strictCollectMemberUsage,\n collectAppGetMenuUsage,\n collectInstalledAppsHasUsage,\n MemberCallUsage,\n} from \"@next-core/utils/storyboard\";\nimport { cloneDeep, omit } from \"lodash\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { customProcessors } from \"../../CustomProcessors.js\";\nimport {\n checkPermissionsUsage,\n storyboardFunctions,\n} from \"./StoryboardFunctions.js\";\nimport { getGeneralGlobals } from \"./getGeneralGlobals.js\";\nimport {\n getDynamicReadOnlyProxy,\n getReadOnlyProxy,\n} from \"../proxyFactories.js\";\nimport { devtoolsHookEmit, getDevHook } from \"../devtools.js\";\nimport { getMedia } from \"../mediaQuery.js\";\nimport { getStorageItem } from \"./getStorageItem.js\";\nimport {\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n getBrickPackages,\n getRuntime,\n hooks,\n} from \"../Runtime.js\";\nimport type { DataStore } from \"../data/DataStore.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { widgetFunctions } from \"./WidgetFunctions.js\";\nimport { widgetI18nFactory } from \"./WidgetI18n.js\";\nimport { hasInstalledApp } from \"../hasInstalledApp.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../../isStrictMode.js\";\nimport { getFormStateStore } from \"../FormRenderer/utils.js\";\nimport { resolveData } from \"../data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./computeRealValue.js\";\n\nconst symbolForRaw = Symbol.for(\"pre.evaluated.raw\");\nconst symbolForContext = Symbol.for(\"pre.evaluated.context\");\n\nexport interface PreEvaluated {\n [symbolForRaw]: string;\n [symbolForContext]: RuntimeContext;\n}\n\nexport interface EvaluateOptions {\n lazy?: boolean;\n evaluationId?: number;\n}\n\nexport function isPreEvaluated(raw: unknown): raw is PreEvaluated {\n return !!(raw as PreEvaluated)?.[symbolForRaw];\n}\n\nexport function getPreEvaluatedRaw(pre: PreEvaluated): string {\n return pre[symbolForRaw];\n}\n\nexport function shouldDismissMarkingComputed(\n raw: string | PreEvaluated\n): boolean {\n if (typeof raw === \"string\") {\n return shouldAllowRecursiveEvaluations(raw);\n }\n return shouldAllowRecursiveEvaluations(raw[symbolForRaw]);\n}\n\nconst possibleErrorConstructs = new WeakSet<ErrorConstructor>([\n SyntaxError,\n TypeError,\n ReferenceError,\n]);\n\nexport function getCookErrorConstructor(error: any): ErrorConstructor {\n return possibleErrorConstructs.has(error.constructor)\n ? error.constructor\n : TypeError;\n}\n\nexport async function asyncEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { blockingList, run } = lowLevelEvaluate(\n raw,\n runtimeContext,\n options,\n true\n );\n await Promise.all(blockingList);\n return run();\n}\n\nexport function evaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { run } = lowLevelEvaluate(raw, runtimeContext, options, false);\n return run();\n}\n\nfunction lowLevelEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options: EvaluateOptions = {},\n isAsync?: boolean\n): {\n blockingList: (Promise<unknown> | undefined)[];\n run: Function;\n} {\n const blockingList: (Promise<unknown> | undefined)[] = [];\n if (typeof raw !== \"string\") {\n // If the `raw` is not a string, it must be a pre-evaluated object.\n // Then fulfil the context, and restore the original `raw`.\n\n const passByRuntimeContext = omit(runtimeContext, [\n \"pendingPermissionsPreCheck\",\n \"tplStateStoreMap\",\n \"tplStateStoreScope\",\n \"formStateStoreMap\",\n \"formStateStoreScope\",\n ]);\n\n runtimeContext = {\n ...raw[symbolForContext],\n ...passByRuntimeContext,\n };\n raw = raw[symbolForRaw];\n }\n\n // Collect `APP.getMenu(...)` usage before evaluating.\n const menuUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n const hasAppUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n\n // A `SyntaxError` maybe thrown.\n let precooked: PreevaluateResult;\n try {\n precooked = preevaluate(raw, {\n cache: true,\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n collectAppGetMenuUsage(menuUsage, node, parent!);\n collectInstalledAppsHasUsage(hasAppUsage, node, parent!);\n },\n },\n });\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n }\n\n if (menuUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"APP.getMenu\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n if (hasAppUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"INSTALLED_APPS.has\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n const globalVariables: Record<string, unknown> = {};\n const { attemptToVisitGlobals } = precooked;\n\n // Ignore evaluating if required `event/DATA` is missing in\n // context. Since they are are provided in different context, whenever\n // missing one of them, memorize the current context for later consuming.\n if (\n options.lazy ||\n (attemptToVisitGlobals.has(\"EVENT\") &&\n !hasOwnProperty(runtimeContext, \"event\")) ||\n (attemptToVisitGlobals.has(\"DATA\") &&\n !hasOwnProperty(runtimeContext, \"data\"))\n ) {\n return {\n blockingList,\n run() {\n return Object.keys(runtimeContext).length > 0\n ? ({\n [symbolForRaw]: raw,\n [symbolForContext]: runtimeContext,\n } as PreEvaluated)\n : raw;\n },\n };\n }\n\n let usedCtx: Set<string> | undefined;\n let usedProcessors: Set<string>;\n let usedStates: Set<string>;\n let tplStateStore: DataStore<\"STATE\"> | undefined;\n const strict = isStrictMode(runtimeContext);\n\n // For existed TPL usage, treat it as a STATE.\n if (\n attemptToVisitGlobals.has(\"STATE\") ||\n (!strict && attemptToVisitGlobals.has(\"TPL\"))\n ) {\n tplStateStore = getTplStateStore(runtimeContext, \"STATE\", `: \"${raw}\"`);\n }\n\n let usedFormStates: Set<string>;\n let formStateStore: DataStore<\"FORM_STATE\"> | undefined;\n if (attemptToVisitGlobals.has(\"FORM_STATE\")) {\n formStateStore = getFormStateStore(\n runtimeContext,\n \"FORM_STATE\",\n `: \"${raw}\"`\n );\n }\n\n const devHook = getDevHook();\n if (isAsync || devHook) {\n if (attemptToVisitGlobals.has(\"CTX\")) {\n usedCtx = strictCollectMemberUsage(raw, \"CTX\");\n isAsync && blockingList.push(runtimeContext.ctxStore.waitFor(usedCtx));\n }\n\n if (tplStateStore) {\n usedStates = strictCollectMemberUsage(raw, \"STATE\");\n // istanbul ignore if\n if (!strict) {\n const usedTpls = strictCollectMemberUsage(raw, \"TPL\");\n for (const tpl of usedTpls) {\n usedStates.add(tpl);\n }\n }\n isAsync && blockingList.push(tplStateStore.waitFor(usedStates));\n }\n\n if (formStateStore) {\n usedFormStates = strictCollectMemberUsage(raw, \"FORM_STATE\");\n isAsync && blockingList.push(formStateStore.waitFor(usedFormStates));\n }\n\n if (attemptToVisitGlobals.has(\"PROCESSORS\")) {\n usedProcessors = strictCollectMemberUsage(raw, \"PROCESSORS\", 2);\n isAsync &&\n blockingList.push(\n loadProcessorsImperatively(usedProcessors, getBrickPackages())\n );\n }\n }\n\n if (isAsync) {\n let attemptToCheckPermissions = attemptToVisitGlobals.has(\"PERMISSIONS\");\n // There maybe `PERMISSIONS.check()` usage in functions\n if (!attemptToCheckPermissions && attemptToVisitGlobals.has(\"FN\")) {\n const usedFunctions = [...strictCollectMemberUsage(raw, \"FN\")];\n attemptToCheckPermissions = checkPermissionsUsage(usedFunctions);\n }\n\n if (attemptToCheckPermissions) {\n blockingList.push(...runtimeContext.pendingPermissionsPreCheck);\n }\n\n if (menuUsage.usedArgs.size > 0 && hooks?.menu) {\n // Block evaluating if has `APP.getMenu(...)` usage.\n const usedMenuIds = [...menuUsage.usedArgs];\n blockingList.push(\n Promise.all(\n usedMenuIds.map((menuId) =>\n hooks!.menu!.fetchMenuById(menuId, runtimeContext, {\n getStoryboardByAppId: _internalApiGetStoryboardInBootstrapData,\n resolveData,\n asyncComputeRealValue,\n })\n )\n )\n );\n }\n\n if (hasAppUsage.usedArgs.size > 0) {\n // Only wait for specific apps\n blockingList.push(\n hooks?.checkInstalledApps?.waitForCheckingApps([\n ...hasAppUsage.usedArgs,\n ])\n );\n }\n }\n\n return {\n blockingList,\n run() {\n const { ctxStore, data, event, unsafe_penetrate } = runtimeContext;\n\n const penetrableCtx = unsafe_penetrate\n ? _internalApiGetRuntimeContext()!\n : runtimeContext;\n\n const {\n app: currentApp,\n location,\n query,\n match,\n flags,\n sys,\n } = penetrableCtx;\n const app = penetrableCtx.overrideApp ?? currentApp;\n\n for (const variableName of attemptToVisitGlobals) {\n switch (variableName) {\n // case \"ALIAS\":\n case \"ANCHOR\":\n globalVariables[variableName] = location.hash\n ? location.hash.substring(1)\n : null;\n break;\n case \"APP\":\n if (app == null) {\n throw new ReferenceError(`APP is not defined, in \"${raw}\"`);\n }\n globalVariables[variableName] = {\n ...cloneDeep(app),\n getMenu: hooks?.menu?.getMenuById,\n };\n break;\n case \"CTX\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n // Allow accessing global `CTX.DS` from an isolated root such as dashboard.\n if (key === \"DS\" && !ctxStore.has(key)) {\n const internalCtxStore =\n _internalApiGetRuntimeContext()?.ctxStore;\n if (internalCtxStore?.has(key)) {\n return internalCtxStore.getValue(key);\n }\n }\n return ctxStore.getValue(key as string);\n },\n ownKeys() {\n return usedCtx ? Array.from(usedCtx) : [];\n },\n });\n break;\n case \"DATA\":\n globalVariables[variableName] = data;\n break;\n case \"EVENT\":\n globalVariables[variableName] = event;\n break;\n case \"FLAGS\":\n globalVariables[variableName] = getReadOnlyProxy(flags);\n break;\n case \"FORM_STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n return formStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedFormStates);\n },\n });\n break;\n case \"HASH\":\n globalVariables[variableName] = location.hash;\n break;\n case \"INSTALLED_APPS\":\n globalVariables[variableName] = getReadOnlyProxy({\n has: hasInstalledApp,\n });\n break;\n case \"ITEM\":\n case \"INDEX\":\n case \"SIZE\": {\n const property =\n variableName === \"ITEM\"\n ? \"forEachItem\"\n : variableName === \"INDEX\"\n ? \"forEachIndex\"\n : \"forEachSize\";\n if (!hasOwnProperty(runtimeContext, property)) {\n // eslint-disable-next-line no-console\n console.error(\n `Using \\`${variableName}\\` but no \\`:forEach\\` is found, check your expression: \"${raw}\"`\n );\n } else {\n globalVariables[variableName] = runtimeContext[property];\n }\n break;\n }\n case \"LOCAL_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"local\"),\n });\n break;\n case \"MEDIA\":\n globalVariables[variableName] = getReadOnlyProxy(getMedia());\n break;\n case \"MISC\":\n globalVariables[variableName] = getRuntime().getMiscSettings();\n break;\n case \"PARAMS\":\n if (query == null) {\n throw new ReferenceError(`PARAMS is not defined, in \"${raw}\"`);\n }\n globalVariables[variableName] = new URLSearchParams(query);\n break;\n case \"PATH\":\n globalVariables[variableName] = getReadOnlyProxy(\n match?.params ?? {}\n );\n break;\n case \"PATH_NAME\":\n globalVariables[variableName] = location.pathname;\n break;\n case \"PROCESSORS\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n const pkg = customProcessors.get(key as string);\n if (!pkg) {\n throw new Error(\n `'PROCESSORS.${\n key as string\n }' is not registered! Have you installed the relevant brick package?`\n );\n }\n return getDynamicReadOnlyProxy({\n get(_t, k) {\n return pkg.get(k as string);\n },\n ownKeys() {\n return Array.from(pkg.keys());\n },\n });\n },\n ownKeys() {\n const keys = new Set<string>();\n for (const processor of usedProcessors) {\n const namespace = processor.split(\".\")[0];\n keys.add(namespace);\n }\n return Array.from(keys);\n },\n });\n break;\n case \"QUERY\":\n if (query == null) {\n throw new ReferenceError(`QUERY is not defined, in \"${raw}\"`);\n }\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.get(key)])\n );\n break;\n case \"QUERY_ARRAY\":\n if (query == null) {\n throw new ReferenceError(\n `QUERY_ARRAY is not defined, in \"${raw}\"`\n );\n }\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.getAll(key)])\n );\n // case \"SEGUE\":\n break;\n case \"SESSION_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"session\"),\n });\n break;\n // istanbul ignore next\n case \"TPL\":\n warnAboutStrictMode(\n strict,\n 'Using \"TPL\" in expression',\n `check your expression: \"${raw}\"`\n );\n if (strict) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n case \"STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n return tplStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedStates);\n },\n });\n break;\n case \"SYS\":\n globalVariables[variableName] = getReadOnlyProxy(sys ?? {});\n break;\n case \"CONSTANTS\":\n // globalVariables[variableName] = getReadOnlyProxy(app?.constants ?? {});\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n if (!app?.constants || !hasOwnProperty(app.constants, key)) {\n throw new ReferenceError(\n `CONSTANTS.${key as string} is not defined`\n );\n }\n return app.constants[key as string];\n },\n ownKeys() {\n return app?.constants ? Object.keys(app.constants) : [];\n },\n });\n break;\n case \"__WIDGET_FN__\":\n globalVariables[variableName] = widgetFunctions;\n break;\n case \"__WIDGET_IMG__\":\n globalVariables[variableName] = hooks?.images?.widgetImagesFactory;\n break;\n case \"__WIDGET_I18N__\":\n globalVariables[variableName] = widgetI18nFactory;\n break;\n }\n }\n\n Object.assign(\n globalVariables,\n getGeneralGlobals(precooked.attemptToVisitGlobals, {\n storyboardFunctions,\n app,\n appendI18nNamespace: runtimeContext.appendI18nNamespace,\n isolatedRoot: runtimeContext.isolatedRoot,\n })\n );\n\n try {\n const result = cook(precooked.expression, precooked.source, {\n globalVariables: supply(\n precooked.attemptToVisitGlobals,\n globalVariables\n ),\n });\n const detail = { raw, context: globalVariables, result };\n devtoolsHookEmit(\"evaluation\", detail);\n return result;\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n }\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -47,11 +47,11 @@ async function resolveData(resolveConf, runtimeContext, resolveOptions) {
47
47
  } : null;
48
48
  const [providerBrick, actualArgs, actualContractConf] = await Promise.all([(0, _getProviderBrick.getProviderBrick)(useProvider), (0, _computeRealValue.asyncComputeRealValue)(args, runtimeContext), (0, _computeRealValue.asyncComputeRealValue)(contractConf, runtimeContext)]);
49
49
 
50
- // `clearResolveCache` maybe cleared during the above promise being
50
+ // `clearResolveCache` maybe called during the above promise being
51
51
  // fulfilled, so we manually mark it as stale for this case.
52
52
  const renderId = resolveOptions === null || resolveOptions === void 0 ? void 0 : resolveOptions.renderId;
53
- const stale = !!renderId && renderId !== (0, _Runtime._internalApiGetRenderId)();
54
- const promise = resolveByProvider(providerBrick, useProvider, method, actualContractConf !== null && actualContractConf !== void 0 && actualContractConf.params ? actualContractConf : actualArgs ?? [], resolveOptions, args, stale);
53
+ const isStale = () => !!renderId && renderId !== (0, _Runtime._internalApiGetRenderId)();
54
+ const promise = resolveByProvider(providerBrick, useProvider, method, actualContractConf !== null && actualContractConf !== void 0 && actualContractConf.params ? actualContractConf : actualArgs ?? [], resolveOptions, args, isStale);
55
55
  let {
56
56
  transform
57
57
  } = resolveConf;
@@ -87,7 +87,7 @@ async function resolveData(resolveConf, runtimeContext, resolveOptions) {
87
87
  function clearResolveCache() {
88
88
  cache.clear();
89
89
  }
90
- async function resolveByProvider(brick, useProvider, method, args, options, originalArgs, stale) {
90
+ async function resolveByProvider(brick, useProvider, method, args, options, originalArgs, isStale) {
91
91
  let cacheKey;
92
92
  try {
93
93
  // `args` may contain circular references, which makes
@@ -116,7 +116,7 @@ async function resolveByProvider(brick, useProvider, method, args, options, orig
116
116
  const finalArgs = _Runtime.hooks !== null && _Runtime.hooks !== void 0 && (_hooks$flowApi2 = _Runtime.hooks.flowApi) !== null && _hooks$flowApi2 !== void 0 && _hooks$flowApi2.isFlowApiProvider(useProvider) ? await _Runtime.hooks.flowApi.getArgsOfFlowApi(useProvider, args, method) : args;
117
117
  return brick[method](...finalArgs);
118
118
  })();
119
- if (!stale) {
119
+ if (!(isStale !== null && isStale !== void 0 && isStale())) {
120
120
  cache.set(cacheKey, promise);
121
121
  }
122
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolveData.js","names":["_computeRealValue","require","_getProviderBrick","_Runtime","_markAsComputed","_lodash","_isStrictMode","cache","Map","resolveData","resolveConf","runtimeContext","resolveOptions","_hooks$flowApi","useProvider","method","args","params","options","filename","onReject","provider","legacyProvider","field","legacyField","Error","hasLegacyField","undefined","strict","isStrictMode","warnAboutStrictMode","contractConf","Array","isArray","hooks","flowApi","isFlowApiProvider","providerBrick","actualArgs","actualContractConf","Promise","all","getProviderBrick","asyncComputeRealValue","renderId","stale","_internalApiGetRenderId","promise","resolveByProvider","transform","data","value","get","markAsComputed","error","isHandleRejectByTransform","clearResolveCache","clear","brick","originalArgs","cacheKey","JSON","stringify","e","_hooks$flowApi2","finalArgs","getArgsOfFlowApi","set"],"sources":["../../../../src/internal/data/resolveData.ts"],"sourcesContent":["import type {\n HandleReject,\n HandleRejectByTransform,\n ResolveConf,\n UseProviderContractConf,\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 resolveOptions?: ResolveOptions\n) {\n const {\n useProvider,\n method = \"resolve\",\n args,\n params,\n options,\n filename,\n onReject,\n } = 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 contractConf =\n !Array.isArray(args) &&\n params &&\n hooks?.flowApi?.isFlowApiProvider(useProvider)\n ? ({ params, options, filename } as UseProviderContractConf)\n : null;\n\n const [providerBrick, actualArgs, actualContractConf] = await Promise.all([\n getProviderBrick(useProvider) as unknown as Promise<\n Record<string, Function>\n >,\n asyncComputeRealValue(args, runtimeContext) as Promise<\n unknown[] | undefined\n >,\n asyncComputeRealValue(\n contractConf,\n runtimeContext\n ) as Promise<UseProviderContractConf | null>,\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 = resolveOptions?.renderId;\n const stale = !!renderId && renderId !== _internalApiGetRenderId();\n\n const promise = resolveByProvider(\n providerBrick,\n useProvider,\n method,\n actualContractConf?.params ? actualContractConf : (actualArgs ?? []),\n resolveOptions,\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[] | UseProviderContractConf,\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 as unknown[]);\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":";;;;;;;;AAMA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AAEA,MAAMM,KAAK,GAAG,IAAIC,GAAG,CAA2B,CAAC;AAe1C,eAAeC,WAAWA,CAC/BC,WAAwB,EACxBC,cAA8B,EAC9BC,cAA+B,EAC/B;EAAA,IAAAC,cAAA;EACA,MAAM;IACJC,WAAW;IACXC,MAAM,GAAG,SAAS;IAClBC,IAAI;IACJC,MAAM;IACNC,OAAO;IACPC,QAAQ;IACRC;EACF,CAAC,GAAGV,WAAW;EAEf,MAAM;IAAEW,QAAQ,EAAEC,cAAc;IAAEC,KAAK,EAAEC;EAAY,CAAC,GAAGd,WAGxD;EACD,IAAIY,cAAc,IAAI,CAACR,WAAW,EAAE;IAClC,MAAM,IAAIW,KAAK,CACb,2BAA2BH,cAAc,4DAC3C,CAAC;EACH;EAEA,MAAMI,cAAc,GAAGF,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAKG,SAAS;EACxE,IAAID,cAAc,EAAE;IAClB,MAAME,MAAM,GAAG,IAAAC,0BAAY,EAAC,CAAC;IAC7B,IAAAC,iCAAmB,EAACF,MAAM,EAAE,iBAAiB,CAAC;IAC9C;IACA,IAAIA,MAAM,EAAE;MACV,MAAM,IAAIH,KAAK,CAAC,kCAAkC,CAAC;IACrD;EACF;EAEA,MAAMM,YAAY,GAChB,CAACC,KAAK,CAACC,OAAO,CAACjB,IAAI,CAAC,IACpBC,MAAM,IACNiB,cAAK,aAALA,cAAK,gBAAArB,cAAA,GAALqB,cAAK,CAAEC,OAAO,cAAAtB,cAAA,eAAdA,cAAA,CAAgBuB,iBAAiB,CAACtB,WAAW,CAAC,GACzC;IAAEG,MAAM;IAAEC,OAAO;IAAEC;EAAS,CAAC,GAC9B,IAAI;EAEV,MAAM,CAACkB,aAAa,EAAEC,UAAU,EAAEC,kBAAkB,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CACxE,IAAAC,kCAAgB,EAAC5B,WAAW,CAAC,EAG7B,IAAA6B,uCAAqB,EAAC3B,IAAI,EAAEL,cAAc,CAAC,EAG3C,IAAAgC,uCAAqB,EACnBZ,YAAY,EACZpB,cACF,CAAC,CACF,CAAC;;EAEF;EACA;EACA,MAAMiC,QAAQ,GAAGhC,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEgC,QAAQ;EACzC,MAAMC,KAAK,GAAG,CAAC,CAACD,QAAQ,IAAIA,QAAQ,KAAK,IAAAE,gCAAuB,EAAC,CAAC;EAElE,MAAMC,OAAO,GAAGC,iBAAiB,CAC/BX,aAAa,EACbvB,WAAW,EACXC,MAAM,EACNwB,kBAAkB,aAAlBA,kBAAkB,eAAlBA,kBAAkB,CAAEtB,MAAM,GAAGsB,kBAAkB,GAAID,UAAU,IAAI,EAAG,EACpE1B,cAAc,EACdI,IAAI,EACJ6B,KACF,CAAC;EAED,IAAI;IAAEI;EAAU,CAAC,GAAGvC,WAAW;EAC/B,IAAIwC,IAAa;EAEjB,IAAI;IACF,MAAMC,KAAK,GAAG,MAAMJ,OAAO;IAC3BG,IAAI,GAAGxB,cAAc,GAAG,IAAA0B,WAAG,EAACD,KAAK,EAAE3B,WAAW,CAAC,GAAG2B,KAAK;IACvD;IACA,IAAAE,8BAAc,EAACH,IAAI,CAAC;EACtB,CAAC,CAAC,OAAOI,KAAK,EAAE;IACd,IAAIC,yBAAyB,CAACnC,QAAQ,CAAC,EAAE;MACvC6B,SAAS,GAAG7B,QAAQ,CAAC6B,SAAS;MAC9BC,IAAI,GAAGI,KAAK;IACd,CAAC,MAAM;MACL,MAAMA,KAAK;IACb;EACF;EAEA,IAAI,CAACL,SAAS,EAAE;IACd,OAAOC,IAAI;EACb;;EAEA;EACA,IAAI,OAAOD,SAAS,KAAK,QAAQ,EAAE;IACjC,OAAO;MAAE,CAACA,SAAS,GAAGC;IAAK,CAAC;EAC9B;EAEA,OAAO,IAAAP,uCAAqB,EAACM,SAAS,EAAE;IAAE,GAAGtC,cAAc;IAAEuC;EAAK,CAAC,CAAC;AACtE;AAEO,SAASM,iBAAiBA,CAAA,EAAG;EAClCjD,KAAK,CAACkD,KAAK,CAAC,CAAC;AACf;AAEO,eAAeT,iBAAiBA,CACrCU,KAA+B,EAC/B5C,WAAmB,EACnBC,MAAc,EACdC,IAAyC,EACzCE,OAAwB,EACxByC,YAAwB,EACxBd,KAAe,EACf;EACA,IAAIe,QAAgB;EACpB,IAAI;IACF;IACA;IACAA,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAAC;MACxBhD,WAAW;MACXC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,OAAO+C,CAAC,EAAE;IACV,IAAI,CAACJ,YAAY,EAAE;MACjB,MAAMI,CAAC;IACT;IACAH,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAAC;MACxBhD,WAAW;MACXC,MAAM;MACN4C;IACF,CAAC,CAAC;EACJ;EAEA,IAAIZ,OAAqC;EACzC,IAAI,CAAA7B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEX,KAAK,MAAK,QAAQ,EAAE;IAC/BwC,OAAO,GAAGxC,KAAK,CAAC6C,GAAG,CAACQ,QAAQ,CAAC;EAC/B;EACA,IAAI,CAACb,OAAO,EAAE;IACZA,OAAO,GAAG,CAAC,MAAAiB,eAAA,IAAY;MACrB,MAAMC,SAAS,GAAG/B,cAAK,aAALA,cAAK,gBAAA8B,eAAA,GAAL9B,cAAK,CAAEC,OAAO,cAAA6B,eAAA,eAAdA,eAAA,CAAgB5B,iBAAiB,CAACtB,WAAW,CAAC,GAC5D,MAAMoB,cAAK,CAACC,OAAO,CAAC+B,gBAAgB,CAACpD,WAAW,EAAEE,IAAI,EAAED,MAAM,CAAC,GAC9DC,IAAkB;MACvB,OAAO0C,KAAK,CAAC3C,MAAM,CAAC,CAAC,GAAGkD,SAAS,CAAC;IACpC,CAAC,EAAE,CAAC;IAEJ,IAAI,CAACpB,KAAK,EAAE;MACVtC,KAAK,CAAC4D,GAAG,CAACP,QAAQ,EAAEb,OAAO,CAAC;IAC9B;EACF;EAEA,OAAOA,OAAO;AAChB;AAEA,SAASQ,yBAAyBA,CAChCnC,QAAkC,EACG;EACrC,OAAO,CAAC,EAAEA,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAA8B6B,SAAS;AAC3D","ignoreList":[]}
1
+ {"version":3,"file":"resolveData.js","names":["_computeRealValue","require","_getProviderBrick","_Runtime","_markAsComputed","_lodash","_isStrictMode","cache","Map","resolveData","resolveConf","runtimeContext","resolveOptions","_hooks$flowApi","useProvider","method","args","params","options","filename","onReject","provider","legacyProvider","field","legacyField","Error","hasLegacyField","undefined","strict","isStrictMode","warnAboutStrictMode","contractConf","Array","isArray","hooks","flowApi","isFlowApiProvider","providerBrick","actualArgs","actualContractConf","Promise","all","getProviderBrick","asyncComputeRealValue","renderId","isStale","_internalApiGetRenderId","promise","resolveByProvider","transform","data","value","get","markAsComputed","error","isHandleRejectByTransform","clearResolveCache","clear","brick","originalArgs","cacheKey","JSON","stringify","e","_hooks$flowApi2","finalArgs","getArgsOfFlowApi","set"],"sources":["../../../../src/internal/data/resolveData.ts"],"sourcesContent":["import type {\n HandleReject,\n HandleRejectByTransform,\n ResolveConf,\n UseProviderContractConf,\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 resolveOptions?: ResolveOptions\n) {\n const {\n useProvider,\n method = \"resolve\",\n args,\n params,\n options,\n filename,\n onReject,\n } = 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 contractConf =\n !Array.isArray(args) &&\n params &&\n hooks?.flowApi?.isFlowApiProvider(useProvider)\n ? ({ params, options, filename } as UseProviderContractConf)\n : null;\n\n const [providerBrick, actualArgs, actualContractConf] = await Promise.all([\n getProviderBrick(useProvider) as unknown as Promise<\n Record<string, Function>\n >,\n asyncComputeRealValue(args, runtimeContext) as Promise<\n unknown[] | undefined\n >,\n asyncComputeRealValue(\n contractConf,\n runtimeContext\n ) as Promise<UseProviderContractConf | null>,\n ]);\n\n // `clearResolveCache` maybe called during the above promise being\n // fulfilled, so we manually mark it as stale for this case.\n const renderId = resolveOptions?.renderId;\n const isStale = () => !!renderId && renderId !== _internalApiGetRenderId();\n\n const promise = resolveByProvider(\n providerBrick,\n useProvider,\n method,\n actualContractConf?.params ? actualContractConf : (actualArgs ?? []),\n resolveOptions,\n args,\n isStale\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[] | UseProviderContractConf,\n options?: ResolveOptions,\n originalArgs?: unknown[],\n isStale?: () => 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 as unknown[]);\n return brick[method](...finalArgs);\n })();\n\n if (!isStale?.()) {\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":";;;;;;;;AAMA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AAEA,MAAMM,KAAK,GAAG,IAAIC,GAAG,CAA2B,CAAC;AAe1C,eAAeC,WAAWA,CAC/BC,WAAwB,EACxBC,cAA8B,EAC9BC,cAA+B,EAC/B;EAAA,IAAAC,cAAA;EACA,MAAM;IACJC,WAAW;IACXC,MAAM,GAAG,SAAS;IAClBC,IAAI;IACJC,MAAM;IACNC,OAAO;IACPC,QAAQ;IACRC;EACF,CAAC,GAAGV,WAAW;EAEf,MAAM;IAAEW,QAAQ,EAAEC,cAAc;IAAEC,KAAK,EAAEC;EAAY,CAAC,GAAGd,WAGxD;EACD,IAAIY,cAAc,IAAI,CAACR,WAAW,EAAE;IAClC,MAAM,IAAIW,KAAK,CACb,2BAA2BH,cAAc,4DAC3C,CAAC;EACH;EAEA,MAAMI,cAAc,GAAGF,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAKG,SAAS;EACxE,IAAID,cAAc,EAAE;IAClB,MAAME,MAAM,GAAG,IAAAC,0BAAY,EAAC,CAAC;IAC7B,IAAAC,iCAAmB,EAACF,MAAM,EAAE,iBAAiB,CAAC;IAC9C;IACA,IAAIA,MAAM,EAAE;MACV,MAAM,IAAIH,KAAK,CAAC,kCAAkC,CAAC;IACrD;EACF;EAEA,MAAMM,YAAY,GAChB,CAACC,KAAK,CAACC,OAAO,CAACjB,IAAI,CAAC,IACpBC,MAAM,IACNiB,cAAK,aAALA,cAAK,gBAAArB,cAAA,GAALqB,cAAK,CAAEC,OAAO,cAAAtB,cAAA,eAAdA,cAAA,CAAgBuB,iBAAiB,CAACtB,WAAW,CAAC,GACzC;IAAEG,MAAM;IAAEC,OAAO;IAAEC;EAAS,CAAC,GAC9B,IAAI;EAEV,MAAM,CAACkB,aAAa,EAAEC,UAAU,EAAEC,kBAAkB,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CACxE,IAAAC,kCAAgB,EAAC5B,WAAW,CAAC,EAG7B,IAAA6B,uCAAqB,EAAC3B,IAAI,EAAEL,cAAc,CAAC,EAG3C,IAAAgC,uCAAqB,EACnBZ,YAAY,EACZpB,cACF,CAAC,CACF,CAAC;;EAEF;EACA;EACA,MAAMiC,QAAQ,GAAGhC,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEgC,QAAQ;EACzC,MAAMC,OAAO,GAAGA,CAAA,KAAM,CAAC,CAACD,QAAQ,IAAIA,QAAQ,KAAK,IAAAE,gCAAuB,EAAC,CAAC;EAE1E,MAAMC,OAAO,GAAGC,iBAAiB,CAC/BX,aAAa,EACbvB,WAAW,EACXC,MAAM,EACNwB,kBAAkB,aAAlBA,kBAAkB,eAAlBA,kBAAkB,CAAEtB,MAAM,GAAGsB,kBAAkB,GAAID,UAAU,IAAI,EAAG,EACpE1B,cAAc,EACdI,IAAI,EACJ6B,OACF,CAAC;EAED,IAAI;IAAEI;EAAU,CAAC,GAAGvC,WAAW;EAC/B,IAAIwC,IAAa;EAEjB,IAAI;IACF,MAAMC,KAAK,GAAG,MAAMJ,OAAO;IAC3BG,IAAI,GAAGxB,cAAc,GAAG,IAAA0B,WAAG,EAACD,KAAK,EAAE3B,WAAW,CAAC,GAAG2B,KAAK;IACvD;IACA,IAAAE,8BAAc,EAACH,IAAI,CAAC;EACtB,CAAC,CAAC,OAAOI,KAAK,EAAE;IACd,IAAIC,yBAAyB,CAACnC,QAAQ,CAAC,EAAE;MACvC6B,SAAS,GAAG7B,QAAQ,CAAC6B,SAAS;MAC9BC,IAAI,GAAGI,KAAK;IACd,CAAC,MAAM;MACL,MAAMA,KAAK;IACb;EACF;EAEA,IAAI,CAACL,SAAS,EAAE;IACd,OAAOC,IAAI;EACb;;EAEA;EACA,IAAI,OAAOD,SAAS,KAAK,QAAQ,EAAE;IACjC,OAAO;MAAE,CAACA,SAAS,GAAGC;IAAK,CAAC;EAC9B;EAEA,OAAO,IAAAP,uCAAqB,EAACM,SAAS,EAAE;IAAE,GAAGtC,cAAc;IAAEuC;EAAK,CAAC,CAAC;AACtE;AAEO,SAASM,iBAAiBA,CAAA,EAAG;EAClCjD,KAAK,CAACkD,KAAK,CAAC,CAAC;AACf;AAEO,eAAeT,iBAAiBA,CACrCU,KAA+B,EAC/B5C,WAAmB,EACnBC,MAAc,EACdC,IAAyC,EACzCE,OAAwB,EACxByC,YAAwB,EACxBd,OAAuB,EACvB;EACA,IAAIe,QAAgB;EACpB,IAAI;IACF;IACA;IACAA,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAAC;MACxBhD,WAAW;MACXC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,OAAO+C,CAAC,EAAE;IACV,IAAI,CAACJ,YAAY,EAAE;MACjB,MAAMI,CAAC;IACT;IACAH,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAAC;MACxBhD,WAAW;MACXC,MAAM;MACN4C;IACF,CAAC,CAAC;EACJ;EAEA,IAAIZ,OAAqC;EACzC,IAAI,CAAA7B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEX,KAAK,MAAK,QAAQ,EAAE;IAC/BwC,OAAO,GAAGxC,KAAK,CAAC6C,GAAG,CAACQ,QAAQ,CAAC;EAC/B;EACA,IAAI,CAACb,OAAO,EAAE;IACZA,OAAO,GAAG,CAAC,MAAAiB,eAAA,IAAY;MACrB,MAAMC,SAAS,GAAG/B,cAAK,aAALA,cAAK,gBAAA8B,eAAA,GAAL9B,cAAK,CAAEC,OAAO,cAAA6B,eAAA,eAAdA,eAAA,CAAgB5B,iBAAiB,CAACtB,WAAW,CAAC,GAC5D,MAAMoB,cAAK,CAACC,OAAO,CAAC+B,gBAAgB,CAACpD,WAAW,EAAEE,IAAI,EAAED,MAAM,CAAC,GAC9DC,IAAkB;MACvB,OAAO0C,KAAK,CAAC3C,MAAM,CAAC,CAAC,GAAGkD,SAAS,CAAC;IACpC,CAAC,EAAE,CAAC;IAEJ,IAAI,EAACpB,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAG,CAAC,GAAE;MAChBtC,KAAK,CAAC4D,GAAG,CAACP,QAAQ,EAAEb,OAAO,CAAC;IAC9B;EACF;EAEA,OAAOA,OAAO;AAChB;AAEA,SAASQ,yBAAyBA,CAChCnC,QAAkC,EACG;EACrC,OAAO,CAAC,EAAEA,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAA8B6B,SAAS;AAC3D","ignoreList":[]}
@@ -14,6 +14,7 @@ import { setUIVersion } from "./setUIVersion.js";
14
14
  import { ErrorNode } from "./internal/ErrorNode.js";
15
15
  import { isolatedFunctionRegistry, registerIsolatedFunctions } from "./internal/compute/IsolatedFunctions.js";
16
16
  import { isolatedTemplateRegistryMap, registerIsolatedTemplates } from "./internal/IsolatedTemplates.js";
17
+ import { hooks } from "./internal/Runtime.js";
17
18
  export function unstable_createRoot(container) {
18
19
  let {
19
20
  portal: _portal,
@@ -42,6 +43,7 @@ export function unstable_createRoot(container) {
42
43
  const isolatedRoot = scope === "page" ? undefined : Symbol("IsolatedRoot");
43
44
  return {
44
45
  async render(brick) {
46
+ var _hooks$auth;
45
47
  let {
46
48
  theme,
47
49
  uiVersion,
@@ -77,7 +79,10 @@ export function unstable_createRoot(container) {
77
79
  tplStateStoreMap: new Map(),
78
80
  formStateStoreMap: new Map(),
79
81
  isolatedRoot,
80
- unsafe_penetrate
82
+ unsafe_penetrate,
83
+ sys: {
84
+ ...(hooks === null || hooks === void 0 || (_hooks$auth = hooks.auth) === null || _hooks$auth === void 0 ? void 0 : _hooks$auth.getAuth())
85
+ }
81
86
  };
82
87
  if (url) {
83
88
  const urlObj = new URL(url);
@@ -1 +1 @@
1
- {"version":3,"file":"createRoot.js","names":["i18n","replaceUseChildren","uniqueId","getDataStores","postAsyncRender","renderBricks","RendererContext","DataStore","mountTree","unmountTree","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","setUIVersion","ErrorNode","isolatedFunctionRegistry","registerIsolatedFunctions","isolatedTemplateRegistryMap","registerIsolatedTemplates","unstable_createRoot","container","portal","_portal","scope","unknownBricks","supportsUseChildren","unsafe_penetrate","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","isolatedRoot","Symbol","render","brick","theme","uiVersion","language","context","functions","templates","i18nData","url","app","Error","bricks","concat","template","Array","isArray","previousRendererContext","renderId","runtimeContext","ctxStore","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","urlObj","URL","query","searchParams","location","pathname","search","hash","state","renderRoot","tag","ROOT","_clearI18nBundles","changeLanguage","id","homepage","demoStoryboard","meta","customTemplates","define","failed","output","stores","error","node","blockingList","child","dispatchOnUnmount","dispose","dispatchBeforePageLoad","window","scrollTo","store","mountAsyncData","dispatchPageLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmount","delete","remove"],"sources":["../../src/createRoot.ts"],"sourcesContent":["import type {\n BrickConf,\n ContextConf,\n CustomTemplate,\n MetaI18n,\n MicroApp,\n SiteTheme,\n Storyboard,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { replaceUseChildren } from \"@next-core/utils/storyboard\";\nimport { uniqueId } from \"lodash\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderBricks,\n} from \"./internal/Renderer.js\";\nimport { RendererContext } from \"./internal/RendererContext.js\";\nimport { DataStore } from \"./internal/data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./internal/interfaces.js\";\nimport { mountTree, unmountTree } from \"./internal/mount.js\";\nimport { applyMode, applyTheme, setMode, setTheme } from \"./themeAndMode.js\";\nimport { RenderTag } from \"./internal/enums.js\";\nimport { registerStoryboardFunctions } from \"./internal/compute/StoryboardFunctions.js\";\nimport { registerAppI18n } from \"./internal/registerAppI18n.js\";\nimport { registerCustomTemplates } from \"./internal/registerCustomTemplates.js\";\nimport { setUIVersion } from \"./setUIVersion.js\";\nimport { ErrorNode } from \"./internal/ErrorNode.js\";\nimport {\n isolatedFunctionRegistry,\n registerIsolatedFunctions,\n} from \"./internal/compute/IsolatedFunctions.js\";\nimport {\n isolatedTemplateRegistryMap,\n registerIsolatedTemplates,\n} from \"./internal/IsolatedTemplates.js\";\n\nexport interface CreateRootOptions {\n portal?: HTMLElement;\n /**\n * Defaults to \"fragment\", only set it to \"page\" when the root is in a standalone iframe.\n * - page: render as whole page, triggering page life cycles, and enable register of functions/templates/i18n.\n * - fragment: render as fragment, not triggering page life cycles, and disable register of functions/templates/i18n.\n */\n scope?: \"page\" | \"fragment\";\n\n /**\n * Whether to throw error when encountering unknown bricks.\n *\n * Defaults to \"throw\".\n */\n unknownBricks?: \"silent\" | \"throw\";\n\n /**\n * Whether the root supports `useChildren`.\n */\n supportsUseChildren?: boolean;\n\n /**\n * Set unsafe_penetrate to true to allow accessing global variables\n * from an isolated root.\n *\n * It is unsafe, use it at your own risk.\n */\n unsafe_penetrate?: boolean;\n}\n\nexport interface RenderOptions {\n theme?: SiteTheme;\n uiVersion?: string;\n language?: string;\n context?: ContextConf[];\n functions?: StoryboardFunction[];\n templates?: CustomTemplate[];\n i18n?: MetaI18n;\n url?: string;\n app?: MicroApp;\n}\n\nexport function unstable_createRoot(\n container: HTMLElement | DocumentFragment,\n {\n portal: _portal,\n scope = \"fragment\",\n unknownBricks,\n supportsUseChildren,\n unsafe_penetrate,\n }: CreateRootOptions = {}\n) {\n let portal = _portal;\n let createPortal: RenderRoot[\"createPortal\"];\n if (_portal) {\n createPortal = _portal;\n } else {\n // Create portal container when necessary.\n createPortal = () => {\n portal = document.createElement(\"div\");\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n };\n }\n let unmounted = false;\n let rendererContext: RendererContext | undefined;\n let clearI18nBundles: Function | undefined;\n const isolatedRoot = scope === \"page\" ? undefined : Symbol(\"IsolatedRoot\");\n\n return {\n async render(\n brick: BrickConf | BrickConf[],\n {\n theme,\n uiVersion,\n language,\n context,\n functions,\n templates,\n i18n: i18nData,\n url,\n app,\n }: RenderOptions = {}\n ) {\n if (unmounted) {\n throw new Error(\n \"The root is unmounted and cannot be rendered any more\"\n );\n }\n const bricks = ([] as BrickConf[]).concat(brick);\n\n if (supportsUseChildren) {\n replaceUseChildren(bricks);\n\n for (const template of templates ?? []) {\n if (Array.isArray(template.bricks)) {\n replaceUseChildren(template.bricks);\n }\n }\n }\n\n const previousRendererContext = rendererContext;\n const renderId = uniqueId(\"render-id-\");\n rendererContext = new RendererContext(scope, { unknownBricks, renderId });\n\n const runtimeContext = {\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n isolatedRoot,\n unsafe_penetrate,\n } as Partial<RuntimeContext> as RuntimeContext;\n\n if (url) {\n const urlObj = new URL(url);\n runtimeContext.query = urlObj.searchParams;\n runtimeContext.location = {\n pathname: urlObj.pathname,\n search: urlObj.search,\n hash: urlObj.hash,\n state: undefined,\n };\n }\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container,\n createPortal,\n };\n\n if (scope === \"page\") {\n setTheme(theme ?? \"light\");\n setMode(\"default\");\n setUIVersion(uiVersion);\n if (language) {\n await i18n.changeLanguage(language);\n }\n\n app ??= {\n id: \"demo\",\n homepage: \"/demo\",\n } as MicroApp;\n runtimeContext.app = app;\n const demoStoryboard = {\n app,\n meta: {\n i18n: i18nData,\n customTemplates: templates,\n },\n } as Storyboard;\n\n // Register i18n.\n clearI18nBundles?.();\n clearI18nBundles = registerAppI18n(demoStoryboard);\n\n // Register custom templates.\n registerCustomTemplates(demoStoryboard);\n\n // Register functions.\n registerStoryboardFunctions(functions, app);\n } else {\n registerIsolatedTemplates(isolatedRoot!, templates);\n registerIsolatedFunctions(isolatedRoot!, functions);\n }\n\n runtimeContext.ctxStore.define(context, runtimeContext);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderBricks(\n renderRoot,\n bricks,\n runtimeContext,\n rendererContext,\n [],\n {}\n );\n\n stores = getDataStores(runtimeContext);\n await postAsyncRender(output, runtimeContext, stores);\n } catch (error) {\n failed = true;\n output = {\n node: await ErrorNode(error, renderRoot, scope === \"page\"),\n blockingList: [],\n };\n }\n\n renderRoot.child = output.node;\n\n previousRendererContext?.dispatchOnUnmount();\n previousRendererContext?.dispose();\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n }\n\n if (scope === \"page\") {\n if (!failed) {\n rendererContext.dispatchBeforePageLoad();\n }\n\n applyTheme();\n applyMode();\n }\n\n mountTree(renderRoot);\n\n if (scope === \"page\") {\n window.scrollTo(0, 0);\n }\n\n if (!failed) {\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n if (scope === \"page\") {\n rendererContext.dispatchPageLoad();\n // rendererContext.dispatchAnchorLoad();\n }\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n }\n },\n unmount() {\n if (unmounted) {\n return;\n }\n unmounted = true;\n if (isolatedRoot) {\n isolatedFunctionRegistry.delete(isolatedRoot);\n isolatedTemplateRegistryMap.delete(isolatedRoot);\n }\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n // Only remove the portal from its parent when it's dynamic created.\n if (!_portal) {\n portal.remove();\n }\n }\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"createRoot.js","names":["i18n","replaceUseChildren","uniqueId","getDataStores","postAsyncRender","renderBricks","RendererContext","DataStore","mountTree","unmountTree","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","setUIVersion","ErrorNode","isolatedFunctionRegistry","registerIsolatedFunctions","isolatedTemplateRegistryMap","registerIsolatedTemplates","hooks","unstable_createRoot","container","portal","_portal","scope","unknownBricks","supportsUseChildren","unsafe_penetrate","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","isolatedRoot","Symbol","render","brick","_hooks$auth","theme","uiVersion","language","context","functions","templates","i18nData","url","app","Error","bricks","concat","template","Array","isArray","previousRendererContext","renderId","runtimeContext","ctxStore","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","sys","auth","getAuth","urlObj","URL","query","searchParams","location","pathname","search","hash","state","renderRoot","tag","ROOT","_clearI18nBundles","changeLanguage","id","homepage","demoStoryboard","meta","customTemplates","define","failed","output","stores","error","node","blockingList","child","dispatchOnUnmount","dispose","dispatchBeforePageLoad","window","scrollTo","store","mountAsyncData","dispatchPageLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmount","delete","remove"],"sources":["../../src/createRoot.ts"],"sourcesContent":["import type {\n BrickConf,\n ContextConf,\n CustomTemplate,\n MetaI18n,\n MicroApp,\n SiteTheme,\n Storyboard,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { replaceUseChildren } from \"@next-core/utils/storyboard\";\nimport { uniqueId } from \"lodash\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderBricks,\n} from \"./internal/Renderer.js\";\nimport { RendererContext } from \"./internal/RendererContext.js\";\nimport { DataStore } from \"./internal/data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./internal/interfaces.js\";\nimport { mountTree, unmountTree } from \"./internal/mount.js\";\nimport { applyMode, applyTheme, setMode, setTheme } from \"./themeAndMode.js\";\nimport { RenderTag } from \"./internal/enums.js\";\nimport { registerStoryboardFunctions } from \"./internal/compute/StoryboardFunctions.js\";\nimport { registerAppI18n } from \"./internal/registerAppI18n.js\";\nimport { registerCustomTemplates } from \"./internal/registerCustomTemplates.js\";\nimport { setUIVersion } from \"./setUIVersion.js\";\nimport { ErrorNode } from \"./internal/ErrorNode.js\";\nimport {\n isolatedFunctionRegistry,\n registerIsolatedFunctions,\n} from \"./internal/compute/IsolatedFunctions.js\";\nimport {\n isolatedTemplateRegistryMap,\n registerIsolatedTemplates,\n} from \"./internal/IsolatedTemplates.js\";\nimport { hooks } from \"./internal/Runtime.js\";\n\nexport interface CreateRootOptions {\n portal?: HTMLElement;\n /**\n * Defaults to \"fragment\", only set it to \"page\" when the root is in a standalone iframe.\n * - page: render as whole page, triggering page life cycles, and enable register of functions/templates/i18n.\n * - fragment: render as fragment, not triggering page life cycles, and disable register of functions/templates/i18n.\n */\n scope?: \"page\" | \"fragment\";\n\n /**\n * Whether to throw error when encountering unknown bricks.\n *\n * Defaults to \"throw\".\n */\n unknownBricks?: \"silent\" | \"throw\";\n\n /**\n * Whether the root supports `useChildren`.\n */\n supportsUseChildren?: boolean;\n\n /**\n * Set unsafe_penetrate to true to allow accessing global variables\n * from an isolated root.\n *\n * It is unsafe, use it at your own risk.\n */\n unsafe_penetrate?: boolean;\n}\n\nexport interface RenderOptions {\n theme?: SiteTheme;\n uiVersion?: string;\n language?: string;\n context?: ContextConf[];\n functions?: StoryboardFunction[];\n templates?: CustomTemplate[];\n i18n?: MetaI18n;\n url?: string;\n app?: MicroApp;\n}\n\nexport function unstable_createRoot(\n container: HTMLElement | DocumentFragment,\n {\n portal: _portal,\n scope = \"fragment\",\n unknownBricks,\n supportsUseChildren,\n unsafe_penetrate,\n }: CreateRootOptions = {}\n) {\n let portal = _portal;\n let createPortal: RenderRoot[\"createPortal\"];\n if (_portal) {\n createPortal = _portal;\n } else {\n // Create portal container when necessary.\n createPortal = () => {\n portal = document.createElement(\"div\");\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n };\n }\n let unmounted = false;\n let rendererContext: RendererContext | undefined;\n let clearI18nBundles: Function | undefined;\n const isolatedRoot = scope === \"page\" ? undefined : Symbol(\"IsolatedRoot\");\n\n return {\n async render(\n brick: BrickConf | BrickConf[],\n {\n theme,\n uiVersion,\n language,\n context,\n functions,\n templates,\n i18n: i18nData,\n url,\n app,\n }: RenderOptions = {}\n ) {\n if (unmounted) {\n throw new Error(\n \"The root is unmounted and cannot be rendered any more\"\n );\n }\n const bricks = ([] as BrickConf[]).concat(brick);\n\n if (supportsUseChildren) {\n replaceUseChildren(bricks);\n\n for (const template of templates ?? []) {\n if (Array.isArray(template.bricks)) {\n replaceUseChildren(template.bricks);\n }\n }\n }\n\n const previousRendererContext = rendererContext;\n const renderId = uniqueId(\"render-id-\");\n rendererContext = new RendererContext(scope, { unknownBricks, renderId });\n\n const runtimeContext = {\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n isolatedRoot,\n unsafe_penetrate,\n sys: {\n ...hooks?.auth?.getAuth(),\n },\n } as Partial<RuntimeContext> as RuntimeContext;\n\n if (url) {\n const urlObj = new URL(url);\n runtimeContext.query = urlObj.searchParams;\n runtimeContext.location = {\n pathname: urlObj.pathname,\n search: urlObj.search,\n hash: urlObj.hash,\n state: undefined,\n };\n }\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container,\n createPortal,\n };\n\n if (scope === \"page\") {\n setTheme(theme ?? \"light\");\n setMode(\"default\");\n setUIVersion(uiVersion);\n if (language) {\n await i18n.changeLanguage(language);\n }\n\n app ??= {\n id: \"demo\",\n homepage: \"/demo\",\n } as MicroApp;\n runtimeContext.app = app;\n const demoStoryboard = {\n app,\n meta: {\n i18n: i18nData,\n customTemplates: templates,\n },\n } as Storyboard;\n\n // Register i18n.\n clearI18nBundles?.();\n clearI18nBundles = registerAppI18n(demoStoryboard);\n\n // Register custom templates.\n registerCustomTemplates(demoStoryboard);\n\n // Register functions.\n registerStoryboardFunctions(functions, app);\n } else {\n registerIsolatedTemplates(isolatedRoot!, templates);\n registerIsolatedFunctions(isolatedRoot!, functions);\n }\n\n runtimeContext.ctxStore.define(context, runtimeContext);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderBricks(\n renderRoot,\n bricks,\n runtimeContext,\n rendererContext,\n [],\n {}\n );\n\n stores = getDataStores(runtimeContext);\n await postAsyncRender(output, runtimeContext, stores);\n } catch (error) {\n failed = true;\n output = {\n node: await ErrorNode(error, renderRoot, scope === \"page\"),\n blockingList: [],\n };\n }\n\n renderRoot.child = output.node;\n\n previousRendererContext?.dispatchOnUnmount();\n previousRendererContext?.dispose();\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n }\n\n if (scope === \"page\") {\n if (!failed) {\n rendererContext.dispatchBeforePageLoad();\n }\n\n applyTheme();\n applyMode();\n }\n\n mountTree(renderRoot);\n\n if (scope === \"page\") {\n window.scrollTo(0, 0);\n }\n\n if (!failed) {\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n if (scope === \"page\") {\n rendererContext.dispatchPageLoad();\n // rendererContext.dispatchAnchorLoad();\n }\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n }\n },\n unmount() {\n if (unmounted) {\n return;\n }\n unmounted = true;\n if (isolatedRoot) {\n isolatedFunctionRegistry.delete(isolatedRoot);\n isolatedTemplateRegistryMap.delete(isolatedRoot);\n }\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n // Only remove the portal from its parent when it's dynamic created.\n if (!_portal) {\n portal.remove();\n }\n }\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,7 @@ import { strictCollectMemberUsage } from "@next-core/utils/storyboard";
5
5
  import { debounce, isEqual, omitBy } from "lodash";
6
6
  import { asyncCheckBrickIf } from "./compute/checkIf.js";
7
7
  import { asyncComputeRealPropertyEntries, constructAsyncProperties } from "./compute/computeRealProperties.js";
8
- import { resolveData } from "./data/resolveData.js";
8
+ import { clearResolveCache, resolveData } from "./data/resolveData.js";
9
9
  import { asyncComputeRealValue } from "./compute/computeRealValue.js";
10
10
  import { listenOnTrackingContext, trackAfterInitial } from "./compute/listenOnTrackingContext.js";
11
11
  import { matchRoute, matchRoutes } from "./matchRoutes.js";
@@ -566,6 +566,7 @@ async function legacyRenderBrick(returnNode, brickConf, _runtimeContext, rendere
566
566
  })) {
567
567
  return false;
568
568
  }
569
+ clearResolveCache();
569
570
  const [scopedRuntimeContext, tplStateStoreScope, formStateStoreScope] = createScopedRuntimeContext({
570
571
  ...childRuntimeContext,
571
572
  location,
@@ -793,13 +794,19 @@ export function childrenToSlots(children, originalSlots) {
793
794
  ...child
794
795
  } of children) {
795
796
  const slot = sl !== null && sl !== void 0 ? sl : "";
796
- if (!hasOwnProperty(newSlots, slot)) {
797
+ const type = isRouteConf(child) ? "routes" : "bricks";
798
+ if (hasOwnProperty(newSlots, slot)) {
799
+ const slotConf = newSlots[slot];
800
+ if (slotConf.type !== type) {
801
+ throw new Error(`Slot "${slot}" conflict between bricks and routes.`);
802
+ }
803
+ slotConf[type].push(child);
804
+ } else {
797
805
  newSlots[slot] = {
798
- type: "bricks",
799
- bricks: []
806
+ type: type,
807
+ [type]: [child]
800
808
  };
801
809
  }
802
- newSlots[slot].bricks.push(child);
803
810
  }
804
811
  }
805
812
  return newSlots;
@@ -821,4 +828,7 @@ function isRouteParamsEqual(a, b) {
821
828
  const d = omitBy(b, omitNumericKeys);
822
829
  return isEqual(c, d);
823
830
  }
831
+ function isRouteConf(child) {
832
+ return !!child.path && !child.brick;
833
+ }
824
834
  //# sourceMappingURL=Renderer.js.map