@next-core/runtime 1.60.0 → 1.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,7 +20,8 @@ var _ErrorNode = require("./internal/ErrorNode.js");
20
20
  function unstable_createRoot(container, {
21
21
  portal: _portal,
22
22
  scope = "fragment",
23
- unknownBricks
23
+ unknownBricks,
24
+ unsafe_penetrate
24
25
  } = {}) {
25
26
  let portal = _portal;
26
27
  let createPortal;
@@ -65,7 +66,8 @@ function unstable_createRoot(container, {
65
66
  ctxStore: new _DataStore.DataStore("CTX", undefined, rendererContext),
66
67
  pendingPermissionsPreCheck: [],
67
68
  tplStateStoreMap: new Map(),
68
- formStateStoreMap: new Map()
69
+ formStateStoreMap: new Map(),
70
+ unsafe_penetrate
69
71
  };
70
72
  if (url) {
71
73
  const urlObj = new URL(url);
@@ -1 +1 @@
1
- {"version":3,"file":"createRoot.js","names":["_i18n","require","_lodash","_Renderer","_RendererContext","_DataStore","_mount","_themeAndMode","_enums","_StoryboardFunctions","_registerAppI18n","_registerCustomTemplates","_setUIVersion","_ErrorNode","unstable_createRoot","container","portal","_portal","scope","unknownBricks","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","render","brick","theme","uiVersion","language","context","functions","templates","i18n","i18nData","url","app","Error","bricks","concat","previousRendererContext","renderId","uniqueId","RendererContext","runtimeContext","ctxStore","DataStore","undefined","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","urlObj","URL","query","searchParams","location","pathname","search","hash","state","renderRoot","tag","RenderTag","ROOT","_clearI18nBundles","setTheme","setMode","setUIVersion","changeLanguage","id","homepage","demoStoryboard","meta","customTemplates","registerAppI18n","registerCustomTemplates","registerStoryboardFunctions","define","failed","output","stores","renderBricks","getDataStores","postAsyncRender","error","node","ErrorNode","blockingList","child","dispatchOnUnmount","dispose","unmountTree","dispatchBeforePageLoad","applyTheme","applyMode","mountTree","window","scrollTo","store","mountAsyncData","dispatchPageLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmount","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 { 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\";\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\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 { portal: _portal, scope = \"fragment\", unknownBricks }: 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\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 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 } 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 }\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 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","require","_lodash","_Renderer","_RendererContext","_DataStore","_mount","_themeAndMode","_enums","_StoryboardFunctions","_registerAppI18n","_registerCustomTemplates","_setUIVersion","_ErrorNode","unstable_createRoot","container","portal","_portal","scope","unknownBricks","unsafe_penetrate","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","render","brick","theme","uiVersion","language","context","functions","templates","i18n","i18nData","url","app","Error","bricks","concat","previousRendererContext","renderId","uniqueId","RendererContext","runtimeContext","ctxStore","DataStore","undefined","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","urlObj","URL","query","searchParams","location","pathname","search","hash","state","renderRoot","tag","RenderTag","ROOT","_clearI18nBundles","setTheme","setMode","setUIVersion","changeLanguage","id","homepage","demoStoryboard","meta","customTemplates","registerAppI18n","registerCustomTemplates","registerStoryboardFunctions","define","failed","output","stores","renderBricks","getDataStores","postAsyncRender","error","node","ErrorNode","blockingList","child","dispatchOnUnmount","dispose","unmountTree","dispatchBeforePageLoad","applyTheme","applyMode","mountTree","window","scrollTo","store","mountAsyncData","dispatchPageLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmount","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 { 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\";\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 * 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 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\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 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 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 }\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 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,12 +5,15 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.asyncComputeRealValue = asyncComputeRealValue;
7
7
  exports.computeRealValue = computeRealValue;
8
+ var _lodash = require("lodash");
8
9
  var _cook = require("@next-core/cook");
9
10
  var _general = require("@next-core/utils/general");
10
11
  var _inject = require("@next-core/inject");
11
12
  var _evaluate = require("./evaluate.js");
12
13
  var _getNextStateOfUseBrick = require("./getNextStateOfUseBrick.js");
13
14
  var _markAsComputed = require("./markAsComputed.js");
15
+ var _Runtime = require("../Runtime.js");
16
+ const penetrableCtxNames = ["app", "location", "query", "match", "flags", "sys"];
14
17
  async function asyncComputeRealValue(value, runtimeContext, internalOptions = {}) {
15
18
  const preEvaluated = (0, _evaluate.isPreEvaluated)(value);
16
19
  if (preEvaluated || typeof value === "string") {
@@ -24,8 +27,14 @@ async function asyncComputeRealValue(value, runtimeContext, internalOptions = {}
24
27
  lazy
25
28
  });
26
29
  dismissMarkingComputed = (0, _evaluate.shouldDismissMarkingComputed)(value);
30
+ } else if (lazy) {
31
+ result = value;
27
32
  } else {
28
- result = lazy ? value : ((0, _general.hasOwnProperty)(runtimeContext, "data") ? internalOptions.noInject ? _inject.transform : _inject.transformAndInject : internalOptions.noInject ? identity : _inject.inject)(value, runtimeContext);
33
+ const penetrableCtx = runtimeContext.unsafe_penetrate ? {
34
+ ...(0, _lodash.pick)((0, _Runtime._internalApiGetRuntimeContext)(), penetrableCtxNames),
35
+ ...(0, _lodash.omit)(runtimeContext, penetrableCtxNames)
36
+ } : runtimeContext;
37
+ result = ((0, _general.hasOwnProperty)(penetrableCtx, "data") ? internalOptions.noInject ? _inject.transform : _inject.transformAndInject : internalOptions.noInject ? identity : _inject.inject)(value, penetrableCtx);
29
38
  }
30
39
  if (!dismissMarkingComputed) {
31
40
  (0, _markAsComputed.markAsComputed)(result);
@@ -52,8 +61,14 @@ function computeRealValue(value, runtimeContext, internalOptions = {}) {
52
61
  if (preEvaluated || (0, _cook.isEvaluable)(value)) {
53
62
  result = (0, _evaluate.evaluate)(value, runtimeContext);
54
63
  dismissMarkingComputed = (0, _evaluate.shouldDismissMarkingComputed)(value);
64
+ } else if (lazy) {
65
+ result = value;
55
66
  } else {
56
- result = lazy ? value : ((0, _general.hasOwnProperty)(runtimeContext, "data") ? internalOptions.noInject ? _inject.transform : _inject.transformAndInject : internalOptions.noInject ? identity : _inject.inject)(value, runtimeContext);
67
+ const penetrableCtx = runtimeContext.unsafe_penetrate ? {
68
+ ...(0, _lodash.pick)((0, _Runtime._internalApiGetRuntimeContext)(), penetrableCtxNames),
69
+ ...(0, _lodash.omit)(runtimeContext, penetrableCtxNames)
70
+ } : runtimeContext;
71
+ result = ((0, _general.hasOwnProperty)(penetrableCtx, "data") ? internalOptions.noInject ? _inject.transform : _inject.transformAndInject : internalOptions.noInject ? identity : _inject.inject)(value, penetrableCtx);
57
72
  }
58
73
  if (!dismissMarkingComputed) {
59
74
  (0, _markAsComputed.markAsComputed)(result);
@@ -1 +1 @@
1
- {"version":3,"file":"computeRealValue.js","names":["_cook","require","_general","_inject","_evaluate","_getNextStateOfUseBrick","_markAsComputed","asyncComputeRealValue","value","runtimeContext","internalOptions","preEvaluated","isPreEvaluated","lazy","$$lazyForUseBrick","isLazyContentInUseBrick","$$stateOfUseBrick","result","dismissMarkingComputed","isEvaluable","asyncEvaluate","shouldDismissMarkingComputed","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 { 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\";\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 {\n result = lazy\n ? value\n : (hasOwnProperty(runtimeContext, \"data\")\n ? internalOptions.noInject\n ? transform\n : transformAndInject\n : internalOptions.noInject\n ? identity\n : inject)(value, runtimeContext);\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 {\n result = lazy\n ? value\n : (hasOwnProperty(runtimeContext, \"data\")\n ? internalOptions.noInject\n ? transform\n : transformAndInject\n : internalOptions.noInject\n ? identity\n : inject)(value, runtimeContext);\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","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":[]}
@@ -204,18 +204,22 @@ runtimeContext, options = {}, isAsync) {
204
204
  blockingList,
205
205
  run() {
206
206
  var _hooks$menu, _hooks$images;
207
+ const {
208
+ ctxStore,
209
+ data,
210
+ event,
211
+ unsafe_penetrate
212
+ } = runtimeContext;
213
+ const penetrableCtx = unsafe_penetrate ? (0, _Runtime._internalApiGetRuntimeContext)() : runtimeContext;
207
214
  const {
208
215
  app: currentApp,
209
216
  location,
210
217
  query,
211
218
  match,
212
219
  flags,
213
- sys,
214
- ctxStore,
215
- data,
216
- event
217
- } = runtimeContext;
218
- const app = runtimeContext.overrideApp ?? currentApp;
220
+ sys
221
+ } = penetrableCtx;
222
+ const app = penetrableCtx.overrideApp ?? currentApp;
219
223
  for (const variableName of attemptToVisitGlobals) {
220
224
  switch (variableName) {
221
225
  // case "ALIAS":
@@ -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","app","currentApp","location","query","match","flags","sys","data","event","overrideApp","variableName","hash","substring","cloneDeep","getMenu","getMenuById","getDynamicReadOnlyProxy","get","_target","key","_internalApiGetRuntim","internalCtxStore","_internalApiGetRuntimeContext","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","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 {\n app: currentApp,\n location,\n query,\n match,\n flags,\n sys,\n ctxStore,\n data,\n event,\n } = runtimeContext;\n const app = runtimeContext.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 })\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","widgetFunctions","images","widgetImagesFactory","widgetI18nFactory","assign","getGeneralGlobals","storyboardFunctions","appendI18nNamespace","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 })\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 +1 @@
1
- {"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n Storyboard,\n StaticMenuConf,\n UseProviderResolveConf,\n MicroApp,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n forEachSize?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n inUseBrick?: boolean;\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderReturnNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface RenderPlaceholder extends BaseRenderNode {\n tag: RenderTag.PLACEHOLDER;\n return: RenderReturnNode;\n tracking?: boolean;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderPlaceholder;\n\nexport type RenderChildNode = RenderBrick | RenderPlaceholder;\nexport type RenderReturnNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n disposes?: (() => void)[];\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n usedSlots: Set<string>;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n routeId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n collectUsedContracts?(storyboard: Storyboard): string[] | Promise<string[]>;\n}\n\nexport interface MenuRequestNode {\n child?: MenuRequestNode;\n sibling?: MenuRequestNode;\n return?: MenuRequestNode;\n request?: Promise<StaticMenuConf>;\n}\n\nexport interface DebugDataValue {\n resolve?: UseProviderResolveConf;\n value?: unknown;\n}\n\nexport interface RuntimeDataVale\n extends Pick<LegacyCompatibleRuntimeContext, \"match\" | \"sys\" | \"query\"> {\n location: {\n href: string;\n origin: string;\n hostname: string;\n host: string;\n };\n app?: MicroApp;\n}\n\nexport interface RuntimeDataValueOption {\n routeId?: string;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n Storyboard,\n StaticMenuConf,\n UseProviderResolveConf,\n MicroApp,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n forEachSize?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n inUseBrick?: boolean;\n\n unsafe_penetrate?: boolean;\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderReturnNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface RenderPlaceholder extends BaseRenderNode {\n tag: RenderTag.PLACEHOLDER;\n return: RenderReturnNode;\n tracking?: boolean;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderPlaceholder;\n\nexport type RenderChildNode = RenderBrick | RenderPlaceholder;\nexport type RenderReturnNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n disposes?: (() => void)[];\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n usedSlots: Set<string>;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n routeId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n collectUsedContracts?(storyboard: Storyboard): string[] | Promise<string[]>;\n}\n\nexport interface MenuRequestNode {\n child?: MenuRequestNode;\n sibling?: MenuRequestNode;\n return?: MenuRequestNode;\n request?: Promise<StaticMenuConf>;\n}\n\nexport interface DebugDataValue {\n resolve?: UseProviderResolveConf;\n value?: unknown;\n}\n\nexport interface RuntimeDataVale\n extends Pick<LegacyCompatibleRuntimeContext, \"match\" | \"sys\" | \"query\"> {\n location: {\n href: string;\n origin: string;\n hostname: string;\n host: string;\n };\n app?: MicroApp;\n}\n\nexport interface RuntimeDataValueOption {\n routeId?: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -15,7 +15,8 @@ export function unstable_createRoot(container) {
15
15
  let {
16
16
  portal: _portal,
17
17
  scope = "fragment",
18
- unknownBricks
18
+ unknownBricks,
19
+ unsafe_penetrate
19
20
  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
20
21
  let portal = _portal;
21
22
  let createPortal;
@@ -61,7 +62,8 @@ export function unstable_createRoot(container) {
61
62
  ctxStore: new DataStore("CTX", undefined, rendererContext),
62
63
  pendingPermissionsPreCheck: [],
63
64
  tplStateStoreMap: new Map(),
64
- formStateStoreMap: new Map()
65
+ formStateStoreMap: new Map(),
66
+ unsafe_penetrate
65
67
  };
66
68
  if (url) {
67
69
  const urlObj = new URL(url);
@@ -1 +1 @@
1
- {"version":3,"file":"createRoot.js","names":["i18n","uniqueId","getDataStores","postAsyncRender","renderBricks","RendererContext","DataStore","mountTree","unmountTree","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","setUIVersion","ErrorNode","unstable_createRoot","container","portal","_portal","scope","unknownBricks","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","render","brick","theme","uiVersion","language","context","functions","templates","i18nData","url","app","Error","bricks","concat","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","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 { 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\";\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\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 { portal: _portal, scope = \"fragment\", unknownBricks }: 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\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 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 } 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 }\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 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","uniqueId","getDataStores","postAsyncRender","renderBricks","RendererContext","DataStore","mountTree","unmountTree","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","setUIVersion","ErrorNode","unstable_createRoot","container","portal","_portal","scope","unknownBricks","unsafe_penetrate","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","render","brick","theme","uiVersion","language","context","functions","templates","i18nData","url","app","Error","bricks","concat","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","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 { 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\";\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 * 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 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\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 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 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 }\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 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,9 +1,12 @@
1
+ import { omit, pick } from "lodash";
1
2
  import { isEvaluable } from "@next-core/cook";
2
3
  import { hasOwnProperty, isObject } from "@next-core/utils/general";
3
4
  import { transformAndInject, transform, inject } from "@next-core/inject";
4
5
  import { asyncEvaluate, isPreEvaluated, evaluate, shouldDismissMarkingComputed } from "./evaluate.js";
5
6
  import { getNextStateOfUseBrick, isLazyContentInUseBrick } from "./getNextStateOfUseBrick.js";
6
7
  import { hasBeenComputed, markAsComputed } from "./markAsComputed.js";
8
+ import { _internalApiGetRuntimeContext } from "../Runtime.js";
9
+ const penetrableCtxNames = ["app", "location", "query", "match", "flags", "sys"];
7
10
  export async function asyncComputeRealValue(value, runtimeContext) {
8
11
  let internalOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
9
12
  const preEvaluated = isPreEvaluated(value);
@@ -18,8 +21,14 @@ export async function asyncComputeRealValue(value, runtimeContext) {
18
21
  lazy
19
22
  });
20
23
  dismissMarkingComputed = shouldDismissMarkingComputed(value);
24
+ } else if (lazy) {
25
+ result = value;
21
26
  } else {
22
- result = lazy ? value : (hasOwnProperty(runtimeContext, "data") ? internalOptions.noInject ? transform : transformAndInject : internalOptions.noInject ? identity : inject)(value, runtimeContext);
27
+ const penetrableCtx = runtimeContext.unsafe_penetrate ? {
28
+ ...pick(_internalApiGetRuntimeContext(), penetrableCtxNames),
29
+ ...omit(runtimeContext, penetrableCtxNames)
30
+ } : runtimeContext;
31
+ result = (hasOwnProperty(penetrableCtx, "data") ? internalOptions.noInject ? transform : transformAndInject : internalOptions.noInject ? identity : inject)(value, penetrableCtx);
23
32
  }
24
33
  if (!dismissMarkingComputed) {
25
34
  markAsComputed(result);
@@ -50,8 +59,14 @@ export function computeRealValue(value, runtimeContext) {
50
59
  if (preEvaluated || isEvaluable(value)) {
51
60
  result = evaluate(value, runtimeContext);
52
61
  dismissMarkingComputed = shouldDismissMarkingComputed(value);
62
+ } else if (lazy) {
63
+ result = value;
53
64
  } else {
54
- result = lazy ? value : (hasOwnProperty(runtimeContext, "data") ? internalOptions.noInject ? transform : transformAndInject : internalOptions.noInject ? identity : inject)(value, runtimeContext);
65
+ const penetrableCtx = runtimeContext.unsafe_penetrate ? {
66
+ ...pick(_internalApiGetRuntimeContext(), penetrableCtxNames),
67
+ ...omit(runtimeContext, penetrableCtxNames)
68
+ } : runtimeContext;
69
+ result = (hasOwnProperty(penetrableCtx, "data") ? internalOptions.noInject ? transform : transformAndInject : internalOptions.noInject ? identity : inject)(value, penetrableCtx);
55
70
  }
56
71
  if (!dismissMarkingComputed) {
57
72
  markAsComputed(result);
@@ -1 +1 @@
1
- {"version":3,"file":"computeRealValue.js","names":["isEvaluable","hasOwnProperty","isObject","transformAndInject","transform","inject","asyncEvaluate","isPreEvaluated","evaluate","shouldDismissMarkingComputed","getNextStateOfUseBrick","isLazyContentInUseBrick","hasBeenComputed","markAsComputed","asyncComputeRealValue","value","runtimeContext","internalOptions","arguments","length","undefined","preEvaluated","lazy","$$lazyForUseBrick","$$stateOfUseBrick","result","dismissMarkingComputed","noInject","identity","Array","isArray","nextOptions","getNextComputeOptions","Promise","all","map","v","Object","fromEntries","entries","_ref","k","concat","ignoreSymbols","getOwnPropertySymbols","computeRealValue","_ref2","key"],"sources":["../../../../src/internal/compute/computeRealValue.ts"],"sourcesContent":["import { 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\";\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 {\n result = lazy\n ? value\n : (hasOwnProperty(runtimeContext, \"data\")\n ? internalOptions.noInject\n ? transform\n : transformAndInject\n : internalOptions.noInject\n ? identity\n : inject)(value, runtimeContext);\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 {\n result = lazy\n ? value\n : (hasOwnProperty(runtimeContext, \"data\")\n ? internalOptions.noInject\n ? transform\n : transformAndInject\n : internalOptions.noInject\n ? identity\n : inject)(value, runtimeContext);\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":["omit","pick","isEvaluable","hasOwnProperty","isObject","transformAndInject","transform","inject","asyncEvaluate","isPreEvaluated","evaluate","shouldDismissMarkingComputed","getNextStateOfUseBrick","isLazyContentInUseBrick","hasBeenComputed","markAsComputed","_internalApiGetRuntimeContext","penetrableCtxNames","asyncComputeRealValue","value","runtimeContext","internalOptions","arguments","length","undefined","preEvaluated","lazy","$$lazyForUseBrick","$$stateOfUseBrick","result","dismissMarkingComputed","penetrableCtx","unsafe_penetrate","noInject","identity","Array","isArray","nextOptions","getNextComputeOptions","Promise","all","map","v","Object","fromEntries","entries","_ref","k","concat","ignoreSymbols","getOwnPropertySymbols","computeRealValue","_ref2","key"],"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":[]}
@@ -194,19 +194,23 @@ runtimeContext) {
194
194
  return {
195
195
  blockingList,
196
196
  run() {
197
- var _runtimeContext$overr, _hooks$menu, _match$params, _hooks$images;
197
+ var _penetrableCtx$overri, _hooks$menu, _match$params, _hooks$images;
198
+ const {
199
+ ctxStore,
200
+ data,
201
+ event,
202
+ unsafe_penetrate
203
+ } = runtimeContext;
204
+ const penetrableCtx = unsafe_penetrate ? _internalApiGetRuntimeContext() : runtimeContext;
198
205
  const {
199
206
  app: currentApp,
200
207
  location,
201
208
  query,
202
209
  match,
203
210
  flags,
204
- sys,
205
- ctxStore,
206
- data,
207
- event
208
- } = runtimeContext;
209
- const app = (_runtimeContext$overr = runtimeContext.overrideApp) !== null && _runtimeContext$overr !== void 0 ? _runtimeContext$overr : currentApp;
211
+ sys
212
+ } = penetrableCtx;
213
+ const app = (_penetrableCtx$overri = penetrableCtx.overrideApp) !== null && _penetrableCtx$overri !== void 0 ? _penetrableCtx$overri : currentApp;
210
214
  for (const variableName of attemptToVisitGlobals) {
211
215
  switch (variableName) {
212
216
  // case "ALIAS":
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.js","names":["cook","preevaluate","shouldAllowRecursiveEvaluations","loadProcessorsImperatively","supply","hasOwnProperty","strictCollectMemberUsage","collectAppGetMenuUsage","collectInstalledAppsHasUsage","cloneDeep","omit","customProcessors","checkPermissionsUsage","storyboardFunctions","getGeneralGlobals","getDynamicReadOnlyProxy","getReadOnlyProxy","devtoolsHookEmit","getDevHook","getMedia","getStorageItem","_internalApiGetRuntimeContext","_internalApiGetStoryboardInBootstrapData","getBrickPackages","getRuntime","hooks","getTplStateStore","widgetFunctions","widgetI18nFactory","hasInstalledApp","isStrictMode","warnAboutStrictMode","getFormStateStore","resolveData","asyncComputeRealValue","symbolForRaw","Symbol","for","symbolForContext","isPreEvaluated","raw","getPreEvaluatedRaw","pre","shouldDismissMarkingComputed","possibleErrorConstructs","WeakSet","SyntaxError","TypeError","ReferenceError","getCookErrorConstructor","error","has","constructor","asyncEvaluate","runtimeContext","options","blockingList","run","lowLevelEvaluate","Promise","all","evaluate","arguments","length","undefined","isAsync","passByRuntimeContext","menuUsage","usedArgs","Set","hasAppUsage","precooked","cache","withParent","beforeVisitGlobal","node","parent","message","errorConstructor","hasNonStaticUsage","Error","globalVariables","attemptToVisitGlobals","lazy","Object","keys","usedCtx","usedProcessors","usedStates","tplStateStore","strict","usedFormStates","formStateStore","devHook","push","ctxStore","waitFor","usedTpls","tpl","add","attemptToCheckPermissions","usedFunctions","pendingPermissionsPreCheck","size","menu","usedMenuIds","map","menuId","fetchMenuById","getStoryboardByAppId","_hooks$checkInstalled","checkInstalledApps","waitForCheckingApps","_runtimeContext$overr","_hooks$menu","_match$params","_hooks$images","app","currentApp","location","query","match","flags","sys","data","event","overrideApp","variableName","hash","substring","getMenu","getMenuById","get","_target","key","_internalApiGetRuntim","internalCtxStore","getValue","ownKeys","Array","from","property","console","getItem","getMiscSettings","URLSearchParams","params","pathname","pkg","_t","k","processor","namespace","split","fromEntries","getAll","images","widgetImagesFactory","assign","appendI18nNamespace","result","expression","source","detail","context"],"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 {\n app: currentApp,\n location,\n query,\n match,\n flags,\n sys,\n ctxStore,\n data,\n event,\n } = runtimeContext;\n const app = runtimeContext.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 })\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","preevaluate","shouldAllowRecursiveEvaluations","loadProcessorsImperatively","supply","hasOwnProperty","strictCollectMemberUsage","collectAppGetMenuUsage","collectInstalledAppsHasUsage","cloneDeep","omit","customProcessors","checkPermissionsUsage","storyboardFunctions","getGeneralGlobals","getDynamicReadOnlyProxy","getReadOnlyProxy","devtoolsHookEmit","getDevHook","getMedia","getStorageItem","_internalApiGetRuntimeContext","_internalApiGetStoryboardInBootstrapData","getBrickPackages","getRuntime","hooks","getTplStateStore","widgetFunctions","widgetI18nFactory","hasInstalledApp","isStrictMode","warnAboutStrictMode","getFormStateStore","resolveData","asyncComputeRealValue","symbolForRaw","Symbol","for","symbolForContext","isPreEvaluated","raw","getPreEvaluatedRaw","pre","shouldDismissMarkingComputed","possibleErrorConstructs","WeakSet","SyntaxError","TypeError","ReferenceError","getCookErrorConstructor","error","has","constructor","asyncEvaluate","runtimeContext","options","blockingList","run","lowLevelEvaluate","Promise","all","evaluate","arguments","length","undefined","isAsync","passByRuntimeContext","menuUsage","usedArgs","Set","hasAppUsage","precooked","cache","withParent","beforeVisitGlobal","node","parent","message","errorConstructor","hasNonStaticUsage","Error","globalVariables","attemptToVisitGlobals","lazy","Object","keys","usedCtx","usedProcessors","usedStates","tplStateStore","strict","usedFormStates","formStateStore","devHook","push","ctxStore","waitFor","usedTpls","tpl","add","attemptToCheckPermissions","usedFunctions","pendingPermissionsPreCheck","size","menu","usedMenuIds","map","menuId","fetchMenuById","getStoryboardByAppId","_hooks$checkInstalled","checkInstalledApps","waitForCheckingApps","_penetrableCtx$overri","_hooks$menu","_match$params","_hooks$images","data","event","unsafe_penetrate","penetrableCtx","app","currentApp","location","query","match","flags","sys","overrideApp","variableName","hash","substring","getMenu","getMenuById","get","_target","key","_internalApiGetRuntim","internalCtxStore","getValue","ownKeys","Array","from","property","console","getItem","getMiscSettings","URLSearchParams","params","pathname","pkg","_t","k","processor","namespace","split","fromEntries","getAll","images","widgetImagesFactory","assign","appendI18nNamespace","result","expression","source","detail","context"],"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 })\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 +1 @@
1
- {"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n Storyboard,\n StaticMenuConf,\n UseProviderResolveConf,\n MicroApp,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n forEachSize?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n inUseBrick?: boolean;\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderReturnNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface RenderPlaceholder extends BaseRenderNode {\n tag: RenderTag.PLACEHOLDER;\n return: RenderReturnNode;\n tracking?: boolean;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderPlaceholder;\n\nexport type RenderChildNode = RenderBrick | RenderPlaceholder;\nexport type RenderReturnNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n disposes?: (() => void)[];\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n usedSlots: Set<string>;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n routeId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n collectUsedContracts?(storyboard: Storyboard): string[] | Promise<string[]>;\n}\n\nexport interface MenuRequestNode {\n child?: MenuRequestNode;\n sibling?: MenuRequestNode;\n return?: MenuRequestNode;\n request?: Promise<StaticMenuConf>;\n}\n\nexport interface DebugDataValue {\n resolve?: UseProviderResolveConf;\n value?: unknown;\n}\n\nexport interface RuntimeDataVale\n extends Pick<LegacyCompatibleRuntimeContext, \"match\" | \"sys\" | \"query\"> {\n location: {\n href: string;\n origin: string;\n hostname: string;\n host: string;\n };\n app?: MicroApp;\n}\n\nexport interface RuntimeDataValueOption {\n routeId?: string;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"interfaces.js","names":[],"sources":["../../../src/internal/interfaces.ts"],"sourcesContent":["import type { LegacyCompatibleRuntimeContext } from \"@next-core/inject\";\nimport type {\n BrickEventHandler,\n BrickEventsMap,\n CustomTemplate,\n RouteConf,\n RuntimeSnippet,\n CustomTemplateProxy,\n CustomTemplateProxyBasicProperty,\n CustomTemplateProxySlot,\n SlotsConfOfBricks,\n Storyboard,\n StaticMenuConf,\n UseProviderResolveConf,\n MicroApp,\n} from \"@next-core/types\";\nimport type { DataStore } from \"./data/DataStore.js\";\nimport { RenderTag } from \"./enums.js\";\nimport { RuntimeBrickConfWithTplSymbols } from \"./CustomTemplates/constants.js\";\nimport { RuntimeBrickConfOfFormSymbols } from \"./FormRenderer/constants.js\";\n\nexport interface RuntimeContext extends LegacyCompatibleRuntimeContext {\n ctxStore: DataStore<\"CTX\">;\n tplStateStoreMap: Map<string, DataStore<\"STATE\">>;\n pendingPermissionsPreCheck: (Promise<unknown> | undefined)[];\n tplStateStoreId?: string;\n // `useBrick` has a local tpl state store scope\n tplStateStoreScope?: DataStore<\"STATE\">[];\n forEachItem?: unknown;\n forEachIndex?: number;\n forEachSize?: number;\n appendI18nNamespace?: string;\n\n formStateStoreMap: Map<string, DataStore<\"FORM_STATE\">>;\n formStateStoreId?: string;\n formStateStoreScope?: DataStore<\"FORM_STATE\">[];\n inUseBrick?: boolean;\n\n unsafe_penetrate?: boolean;\n}\n\nexport type AsyncPropertyEntry = [\n name: string,\n value: Promise<unknown>,\n ignoreUndefined?: boolean,\n];\n\nexport interface ElementHolder {\n element?: HTMLElement | null;\n}\n\nexport interface RenderRoot extends BaseRenderNode {\n tag: RenderTag.ROOT;\n container?: HTMLElement | DocumentFragment;\n createPortal:\n | HTMLElement\n | DocumentFragment\n | (() => HTMLElement | DocumentFragment);\n}\n\nexport interface RenderBrick extends BaseRenderNode, RuntimeBrick {\n tag: RenderTag.BRICK;\n return: RenderReturnNode;\n hasTrackingControls?: boolean;\n}\n\nexport interface RenderPlaceholder extends BaseRenderNode {\n tag: RenderTag.PLACEHOLDER;\n return: RenderReturnNode;\n tracking?: boolean;\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderPlaceholder;\n\nexport type RenderChildNode = RenderBrick | RenderPlaceholder;\nexport type RenderReturnNode = RenderRoot | RenderBrick;\n\nexport interface RuntimeBrick {\n type: string;\n properties?: Record<string, unknown>;\n events?: BrickEventsMap;\n slotId?: string;\n element?: RuntimeBrickElement | null;\n iid?: string;\n runtimeContext: RuntimeContext;\n tplHostMetadata?: TemplateHostMetadata;\n portal?: boolean;\n ref?: string;\n disposes?: (() => void)[];\n}\n\nexport type MetaInfoOfEventListener = [\n string,\n // For compatibility of devtools, leave the second argument there.\n null | undefined,\n BrickEventHandler,\n];\n\nexport type RememberedEventListener = [string, EventListener];\n\nexport interface RuntimeBrickElement extends HTMLElement {\n $$typeof?: \"brick\" | \"provider\" | \"custom-template\" | \"native\" | \"invalid\";\n /** Meta info of listeners, for devtools only */\n $$eventListeners?: MetaInfoOfEventListener[];\n /** Remembered listeners for unbinding */\n $$listeners?: RememberedEventListener[];\n /** Remembered proxy listeners for unbinding */\n $$proxyListeners?: RememberedEventListener[];\n /** Find element by ref in a custom template */\n $$getElementByRef?: (ref: string) => HTMLElement | null | undefined;\n $$tplStateStore?: DataStore<\"STATE\">;\n}\n\nexport interface TemplateHostMetadata {\n internalBricksByRef: Map<string, RuntimeBrick>;\n tplStateStoreId: string;\n proxy?: CustomTemplateProxy;\n}\n\nexport type TemplateHostBrick = RuntimeBrick & {\n tplHostMetadata: TemplateHostMetadata;\n};\n\nexport interface TemplateHostContext {\n reversedProxies: ReversedProxies;\n asyncHostPropertyEntries: AsyncPropertyEntry[];\n externalSlots?: SlotsConfOfBricks;\n tplStateStoreId: string;\n hostBrick: TemplateHostBrick;\n usedSlots: Set<string>;\n}\n\ninterface ReversedProxies {\n properties: Map<string, ReversedPropertyProxy[]>;\n slots: Map<string, ReversedSlotProxy[]>;\n}\n\ninterface ReversedPropertyProxy {\n from: string;\n to: CustomTemplateProxyBasicProperty;\n}\n\ninterface ReversedSlotProxy {\n from: string;\n to: CustomTemplateProxySlot;\n}\n\nexport type RuntimeBrickConfWithSymbols = RuntimeBrickConfWithTplSymbols &\n RuntimeBrickConfOfFormSymbols;\n\nexport interface DataValueOption {\n tplStateStoreId?: string;\n routeId?: string;\n}\n\nexport type PreviewStoryboardPatch =\n | CustomTemplate\n | RouteConf\n | RuntimeSnippet;\n\nexport interface PreviewOption {\n appId: string;\n formId?: string;\n updateStoryboardType?: \"route\" | \"template\" | \"snippet\";\n collectUsedContracts?(storyboard: Storyboard): string[] | Promise<string[]>;\n}\n\nexport interface MenuRequestNode {\n child?: MenuRequestNode;\n sibling?: MenuRequestNode;\n return?: MenuRequestNode;\n request?: Promise<StaticMenuConf>;\n}\n\nexport interface DebugDataValue {\n resolve?: UseProviderResolveConf;\n value?: unknown;\n}\n\nexport interface RuntimeDataVale\n extends Pick<LegacyCompatibleRuntimeContext, \"match\" | \"sys\" | \"query\"> {\n location: {\n href: string;\n origin: string;\n hostname: string;\n host: string;\n };\n app?: MicroApp;\n}\n\nexport interface RuntimeDataValueOption {\n routeId?: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -13,6 +13,13 @@ export interface CreateRootOptions {
13
13
  * Defaults to "throw".
14
14
  */
15
15
  unknownBricks?: "silent" | "throw";
16
+ /**
17
+ * Set unsafe_penetrate to true to allow accessing global variables
18
+ * from an isolated root.
19
+ *
20
+ * It is unsafe, use it at your own risk.
21
+ */
22
+ unsafe_penetrate?: boolean;
16
23
  }
17
24
  export interface RenderOptions {
18
25
  theme?: SiteTheme;
@@ -25,7 +32,7 @@ export interface RenderOptions {
25
32
  url?: string;
26
33
  app?: MicroApp;
27
34
  }
28
- export declare function unstable_createRoot(container: HTMLElement | DocumentFragment, { portal: _portal, scope, unknownBricks }?: CreateRootOptions): {
35
+ export declare function unstable_createRoot(container: HTMLElement | DocumentFragment, { portal: _portal, scope, unknownBricks, unsafe_penetrate, }?: CreateRootOptions): {
29
36
  render(brick: BrickConf | BrickConf[], { theme, uiVersion, language, context, functions, templates, i18n: i18nData, url, app, }?: RenderOptions): Promise<void>;
30
37
  unmount(): void;
31
38
  };
@@ -18,6 +18,7 @@ export interface RuntimeContext extends LegacyCompatibleRuntimeContext {
18
18
  formStateStoreId?: string;
19
19
  formStateStoreScope?: DataStore<"FORM_STATE">[];
20
20
  inUseBrick?: boolean;
21
+ unsafe_penetrate?: boolean;
21
22
  }
22
23
  export type AsyncPropertyEntry = [
23
24
  name: string,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-core/runtime",
3
- "version": "1.60.0",
3
+ "version": "1.61.0",
4
4
  "homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/runtime",
5
5
  "license": "GPL-3.0",
6
6
  "repository": {
@@ -67,5 +67,5 @@
67
67
  "@next-core/build-next-libs": "^1.0.24",
68
68
  "@next-core/test-next": "^1.1.9"
69
69
  },
70
- "gitHead": "90ddc3c042b10fff8deb37c1ba21f5a5b0e58f45"
70
+ "gitHead": "7f9c3e61a18cf01cee61959e345e15152eb8c734"
71
71
  }