@next-core/runtime 1.65.7 → 1.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/StoryboardFunctionRegistry.js +2 -0
- package/dist/cjs/StoryboardFunctionRegistry.js.map +1 -1
- package/dist/cjs/createRoot.js +8 -0
- package/dist/cjs/createRoot.js.map +1 -1
- package/dist/cjs/internal/compute/IsolatedFunctions.js +20 -0
- package/dist/cjs/internal/compute/IsolatedFunctions.js.map +1 -0
- package/dist/cjs/internal/compute/evaluate.js +2 -1
- package/dist/cjs/internal/compute/evaluate.js.map +1 -1
- package/dist/cjs/internal/compute/getGeneralGlobals.js +3 -1
- package/dist/cjs/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/cjs/internal/interfaces.js.map +1 -1
- package/dist/esm/StoryboardFunctionRegistry.js +2 -0
- package/dist/esm/StoryboardFunctionRegistry.js.map +1 -1
- package/dist/esm/createRoot.js +8 -0
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/internal/compute/IsolatedFunctions.js +13 -0
- package/dist/esm/internal/compute/IsolatedFunctions.js.map +1 -0
- package/dist/esm/internal/compute/evaluate.js +2 -1
- package/dist/esm/internal/compute/evaluate.js.map +1 -1
- package/dist/esm/internal/compute/getGeneralGlobals.js +3 -1
- package/dist/esm/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/esm/internal/interfaces.js.map +1 -1
- package/dist/types/StoryboardFunctionRegistry.d.ts +2 -1
- package/dist/types/internal/compute/IsolatedFunctions.d.ts +3 -0
- package/dist/types/internal/compute/getGeneralGlobals.d.ts +1 -0
- package/dist/types/internal/interfaces.d.ts +1 -0
- package/package.json +2 -2
|
@@ -27,6 +27,7 @@ var _getGeneralGlobals = require("./internal/compute/getGeneralGlobals.js");
|
|
|
27
27
|
function StoryboardFunctionRegistryFactory({
|
|
28
28
|
widgetId,
|
|
29
29
|
widgetVersion,
|
|
30
|
+
isolatedRoot,
|
|
30
31
|
collectCoverage,
|
|
31
32
|
debuggerOverrides
|
|
32
33
|
} = {}) {
|
|
@@ -72,6 +73,7 @@ function StoryboardFunctionRegistryFactory({
|
|
|
72
73
|
collectCoverage,
|
|
73
74
|
widgetId,
|
|
74
75
|
widgetVersion,
|
|
76
|
+
isolatedRoot,
|
|
75
77
|
app: currentApp,
|
|
76
78
|
storyboardFunctions,
|
|
77
79
|
isStoryboardFunction: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoryboardFunctionRegistry.js","names":["_cook","require","_supply","_storyboard","_general","_getGeneralGlobals","StoryboardFunctionRegistryFactory","widgetId","widgetVersion","collectCoverage","debuggerOverrides","registeredFunctions","Map","overrides","precookFunction","cook","supply","storyboardFunctions","Proxy","Object","freeze","get","_target","key","getStoryboardFunction","currentApp","registerStoryboardFunctions","functions","app","clear","Array","isArray","fn","deps","collectMemberUsageInFunction","delete","name","hasPermissionsCheck","perm","has","set","source","typescript","transformed","getGlobalVariables","globals","getGeneralGlobals","isStoryboardFunction","undefined","processed","cooked","collector","createCollector","globalVariables","Function","map","hasOwnProperty","precooked","hooks","beforeVisit","cacheKey","attemptToVisitGlobals","function","rules","noVar","LodashWithStaticFields","_","ArrayConstructor","ObjectWithStaticFields","beforeEvaluate","beforeCall","beforeBranch","debug","updateStoryboardFunction","data","newFn","checkPermissionsUsage","functionNames","checkedFunctions","Set","add","some","clearGlobalExecutionContextStack","__dev_only_clearGlobalExecutionContextStack","getGlobalExecutionContextStack","__dev_only_getGlobalExecutionContextStack"],"sources":["../../src/StoryboardFunctionRegistry.ts"],"sourcesContent":["import type {\n MicroApp,\n StoryboardFunction,\n TransformedFunction,\n} from \"@next-core/types\";\nimport {\n cook,\n precookFunction,\n EstreeNode,\n __dev_only_clearGlobalExecutionContextStack,\n __dev_only_getGlobalExecutionContextStack,\n} from \"@next-core/cook\";\nimport { supply } from \"@next-core/supply\";\nimport { collectMemberUsageInFunction } from \"@next-core/utils/storyboard\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport type _ from \"lodash\";\nimport { getGeneralGlobals } from \"./internal/compute/getGeneralGlobals.js\";\n\n/** @internal */\nexport type ReadonlyStoryboardFunctions = Readonly<Record<string, Function>>;\n\n/** @internal */\nexport type StoryboardFunctionPatch = Pick<\n StoryboardFunction,\n \"source\" | \"typescript\" | \"transformed\"\n>;\n\n/** @internal */\nexport interface StoryboardFunctionRegistry {\n /** A readonly proxy for accessing cooked storyboard functions. */\n storyboardFunctions: ReadonlyStoryboardFunctions;\n\n /** Register storyboard functions. */\n registerStoryboardFunctions(\n functions: StoryboardFunction[] | undefined,\n app?: PartialMicroApp\n ): void;\n\n /** Update a storyboard function during debugging. */\n updateStoryboardFunction(name: string, data: StoryboardFunctionPatch): void;\n\n checkPermissionsUsage(functionNames: string[]): boolean;\n\n clearGlobalExecutionContextStack(): void;\n getGlobalExecutionContextStack(): ReturnType<\n typeof __dev_only_getGlobalExecutionContextStack\n >;\n}\n\n/** @internal */\nexport interface RuntimeStoryboardFunction {\n source: string;\n typescript?: boolean;\n processed?: boolean;\n cooked?: Function;\n deps: Set<string> | string[];\n hasPermissionsCheck: boolean;\n transformed?: TransformedFunction;\n}\n\n/** @internal */\nexport interface FunctionCoverageCollector {\n beforeVisit(node: EstreeNode): void;\n beforeEvaluate(node: EstreeNode): void;\n beforeCall(node: EstreeNode): void;\n beforeBranch(node: EstreeNode, branch: string): void;\n}\n\n/** @internal */\nexport interface FunctionCoverageSettings {\n createCollector(name: string): FunctionCoverageCollector;\n}\n\n/** @internal */\nexport type PartialMicroApp = Pick<MicroApp, \"id\" | \"isBuildPush\" | \"config\">;\n\n/** @internal */\nexport function StoryboardFunctionRegistryFactory({\n widgetId,\n widgetVersion,\n collectCoverage,\n debuggerOverrides,\n}: {\n widgetId?: string;\n widgetVersion?: string;\n collectCoverage?: FunctionCoverageSettings;\n debuggerOverrides?: (ctx: {\n precookFunction: typeof precookFunction;\n cook: typeof cook;\n supply: typeof supply;\n }) => {\n LodashWithStaticFields?: Partial<typeof _>;\n ArrayConstructor?: typeof Array;\n ObjectWithStaticFields?: Partial<typeof Object>;\n };\n} = {}): StoryboardFunctionRegistry {\n const registeredFunctions = new Map<string, RuntimeStoryboardFunction>();\n\n const overrides = debuggerOverrides?.({\n precookFunction,\n cook,\n supply,\n });\n\n // Use `Proxy` with a frozen target, to make a readonly function registry.\n const storyboardFunctions = new Proxy(Object.freeze({}), {\n get(_target, key) {\n return getStoryboardFunction(key as string);\n },\n }) as ReadonlyStoryboardFunctions;\n\n let currentApp: PartialMicroApp | undefined;\n\n function registerStoryboardFunctions(\n functions: StoryboardFunction[],\n app?: PartialMicroApp\n ): void {\n if (app) {\n currentApp = app;\n }\n registeredFunctions.clear();\n if (Array.isArray(functions)) {\n for (const fn of functions) {\n let deps: Set<string> | string[] | undefined = fn.deps;\n if (deps == null) {\n deps = collectMemberUsageInFunction(fn, \"FN\", !!collectCoverage);\n (deps as Set<string>).delete(fn.name);\n }\n const hasPermissionsCheck =\n fn.perm ??\n collectMemberUsageInFunction(\n fn,\n \"PERMISSIONS\",\n !!collectCoverage\n ).has(\"check\");\n registeredFunctions.set(fn.name, {\n source: fn.source,\n typescript: fn.typescript,\n transformed: fn.transformed,\n deps,\n hasPermissionsCheck,\n });\n }\n }\n }\n\n function getGlobalVariables(globals: Set<string> | string[]) {\n return supply(\n globals,\n getGeneralGlobals(globals, {\n collectCoverage,\n widgetId,\n widgetVersion,\n app: currentApp,\n storyboardFunctions,\n isStoryboardFunction: true,\n }),\n !!collectCoverage\n );\n }\n\n function getStoryboardFunction(name: string): Function | undefined {\n const fn = registeredFunctions.get(name);\n if (!fn) {\n return undefined;\n }\n if (fn.processed) {\n return fn.cooked;\n }\n let collector: FunctionCoverageCollector | undefined;\n if (collectCoverage) {\n collector = collectCoverage.createCollector(name);\n }\n\n // Do not use transformed functions when debugging.\n const transformed = !overrides && !collector && fn.transformed;\n if (transformed) {\n const globalVariables = getGlobalVariables(transformed.globals);\n // Spread globals as params to prevent accessing forbidden globals.\n // NOTE: in native mode, forbidden globals are declared as `undefined`,\n // thus accessing them will not throw a ReferenceError.\n fn.cooked = new Function(\n ...transformed.globals,\n `\"use strict\";return (${transformed.source})`\n )(\n ...transformed.globals.map((key) =>\n hasOwnProperty(globalVariables, key)\n ? globalVariables[key]\n : undefined\n )\n );\n } else {\n const precooked = precookFunction(fn.source, {\n typescript: fn.typescript,\n hooks: collector && {\n beforeVisit: collector.beforeVisit,\n },\n cacheKey: fn,\n });\n const globalVariables = getGlobalVariables(\n precooked.attemptToVisitGlobals\n );\n fn.cooked = cook(precooked.function, fn.source, {\n rules: {\n noVar: true,\n },\n globalVariables: overrides\n ? {\n ...globalVariables,\n ...(overrides?.LodashWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"_\")\n ? {\n _: {\n ...(globalVariables._ as typeof _),\n ...overrides.LodashWithStaticFields,\n },\n }\n : null),\n ...(overrides?.ArrayConstructor &&\n precooked.attemptToVisitGlobals.has(\"Array\")\n ? {\n Array: overrides.ArrayConstructor,\n }\n : null),\n ...(overrides?.ObjectWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"Object\")\n ? {\n Object: {\n ...(globalVariables.Object as typeof Object),\n ...overrides.ObjectWithStaticFields,\n },\n }\n : null),\n }\n : globalVariables,\n ArrayConstructor: overrides?.ArrayConstructor,\n hooks: collector && {\n beforeEvaluate: collector.beforeEvaluate,\n beforeCall: collector.beforeCall,\n beforeBranch: collector.beforeBranch,\n },\n debug: !!debuggerOverrides,\n }) as Function;\n }\n fn.processed = true;\n return fn.cooked;\n }\n\n return {\n storyboardFunctions,\n registerStoryboardFunctions,\n updateStoryboardFunction(\n name: string,\n data: StoryboardFunctionPatch\n ): void {\n const newFn = {\n ...data,\n name,\n };\n const deps = collectMemberUsageInFunction(newFn, \"FN\", true);\n const hasPermissionsCheck = collectMemberUsageInFunction(\n newFn,\n \"PERMISSIONS\",\n true\n ).has(\"check\");\n registeredFunctions.set(name, {\n source: data.source,\n typescript: data.typescript,\n transformed: data.transformed,\n deps,\n hasPermissionsCheck,\n });\n },\n /**\n * Check whether listed functions attempt to call `PERMISSIONS.check()`,\n * includes in nested `FN.*()` calls.\n */\n checkPermissionsUsage(functionNames) {\n const checkedFunctions = new Set<string>();\n const hasPermissionsCheck = (name: string): boolean => {\n if (!checkedFunctions.has(name)) {\n checkedFunctions.add(name);\n const fn = registeredFunctions.get(name);\n return (\n !!fn &&\n (fn.hasPermissionsCheck || [...fn.deps].some(hasPermissionsCheck))\n );\n }\n return false;\n };\n return functionNames.some(hasPermissionsCheck);\n },\n clearGlobalExecutionContextStack() {\n __dev_only_clearGlobalExecutionContextStack();\n },\n getGlobalExecutionContextStack() {\n return __dev_only_getGlobalExecutionContextStack();\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"StoryboardFunctionRegistry.js","names":["_cook","require","_supply","_storyboard","_general","_getGeneralGlobals","StoryboardFunctionRegistryFactory","widgetId","widgetVersion","isolatedRoot","collectCoverage","debuggerOverrides","registeredFunctions","Map","overrides","precookFunction","cook","supply","storyboardFunctions","Proxy","Object","freeze","get","_target","key","getStoryboardFunction","currentApp","registerStoryboardFunctions","functions","app","clear","Array","isArray","fn","deps","collectMemberUsageInFunction","delete","name","hasPermissionsCheck","perm","has","set","source","typescript","transformed","getGlobalVariables","globals","getGeneralGlobals","isStoryboardFunction","undefined","processed","cooked","collector","createCollector","globalVariables","Function","map","hasOwnProperty","precooked","hooks","beforeVisit","cacheKey","attemptToVisitGlobals","function","rules","noVar","LodashWithStaticFields","_","ArrayConstructor","ObjectWithStaticFields","beforeEvaluate","beforeCall","beforeBranch","debug","updateStoryboardFunction","data","newFn","checkPermissionsUsage","functionNames","checkedFunctions","Set","add","some","clearGlobalExecutionContextStack","__dev_only_clearGlobalExecutionContextStack","getGlobalExecutionContextStack","__dev_only_getGlobalExecutionContextStack"],"sources":["../../src/StoryboardFunctionRegistry.ts"],"sourcesContent":["import type {\n MicroApp,\n StoryboardFunction,\n TransformedFunction,\n} from \"@next-core/types\";\nimport {\n cook,\n precookFunction,\n EstreeNode,\n __dev_only_clearGlobalExecutionContextStack,\n __dev_only_getGlobalExecutionContextStack,\n} from \"@next-core/cook\";\nimport { supply } from \"@next-core/supply\";\nimport { collectMemberUsageInFunction } from \"@next-core/utils/storyboard\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport type _ from \"lodash\";\nimport { getGeneralGlobals } from \"./internal/compute/getGeneralGlobals.js\";\n\n/** @internal */\nexport type ReadonlyStoryboardFunctions = Readonly<Record<string, Function>>;\n\n/** @internal */\nexport type StoryboardFunctionPatch = Pick<\n StoryboardFunction,\n \"source\" | \"typescript\" | \"transformed\"\n>;\n\n/** @internal */\nexport interface StoryboardFunctionRegistry {\n /** A readonly proxy for accessing cooked storyboard functions. */\n storyboardFunctions: ReadonlyStoryboardFunctions;\n\n /** Register storyboard functions. */\n registerStoryboardFunctions(\n functions: StoryboardFunction[] | undefined,\n app?: PartialMicroApp\n ): void;\n\n /** Update a storyboard function during debugging. */\n updateStoryboardFunction(name: string, data: StoryboardFunctionPatch): void;\n\n checkPermissionsUsage(functionNames: string[]): boolean;\n\n clearGlobalExecutionContextStack(): void;\n getGlobalExecutionContextStack(): ReturnType<\n typeof __dev_only_getGlobalExecutionContextStack\n >;\n}\n\n/** @internal */\nexport interface RuntimeStoryboardFunction {\n source: string;\n typescript?: boolean;\n processed?: boolean;\n cooked?: Function;\n deps: Set<string> | string[];\n hasPermissionsCheck: boolean;\n transformed?: TransformedFunction;\n}\n\n/** @internal */\nexport interface FunctionCoverageCollector {\n beforeVisit(node: EstreeNode): void;\n beforeEvaluate(node: EstreeNode): void;\n beforeCall(node: EstreeNode): void;\n beforeBranch(node: EstreeNode, branch: string): void;\n}\n\n/** @internal */\nexport interface FunctionCoverageSettings {\n createCollector(name: string): FunctionCoverageCollector;\n}\n\n/** @internal */\nexport type PartialMicroApp = Pick<MicroApp, \"id\" | \"isBuildPush\" | \"config\">;\n\n/** @internal */\nexport function StoryboardFunctionRegistryFactory({\n widgetId,\n widgetVersion,\n isolatedRoot,\n collectCoverage,\n debuggerOverrides,\n}: {\n widgetId?: string;\n widgetVersion?: string;\n isolatedRoot?: symbol;\n collectCoverage?: FunctionCoverageSettings;\n debuggerOverrides?: (ctx: {\n precookFunction: typeof precookFunction;\n cook: typeof cook;\n supply: typeof supply;\n }) => {\n LodashWithStaticFields?: Partial<typeof _>;\n ArrayConstructor?: typeof Array;\n ObjectWithStaticFields?: Partial<typeof Object>;\n };\n} = {}): StoryboardFunctionRegistry {\n const registeredFunctions = new Map<string, RuntimeStoryboardFunction>();\n\n const overrides = debuggerOverrides?.({\n precookFunction,\n cook,\n supply,\n });\n\n // Use `Proxy` with a frozen target, to make a readonly function registry.\n const storyboardFunctions = new Proxy(Object.freeze({}), {\n get(_target, key) {\n return getStoryboardFunction(key as string);\n },\n }) as ReadonlyStoryboardFunctions;\n\n let currentApp: PartialMicroApp | undefined;\n\n function registerStoryboardFunctions(\n functions: StoryboardFunction[],\n app?: PartialMicroApp\n ): void {\n if (app) {\n currentApp = app;\n }\n registeredFunctions.clear();\n if (Array.isArray(functions)) {\n for (const fn of functions) {\n let deps: Set<string> | string[] | undefined = fn.deps;\n if (deps == null) {\n deps = collectMemberUsageInFunction(fn, \"FN\", !!collectCoverage);\n (deps as Set<string>).delete(fn.name);\n }\n const hasPermissionsCheck =\n fn.perm ??\n collectMemberUsageInFunction(\n fn,\n \"PERMISSIONS\",\n !!collectCoverage\n ).has(\"check\");\n registeredFunctions.set(fn.name, {\n source: fn.source,\n typescript: fn.typescript,\n transformed: fn.transformed,\n deps,\n hasPermissionsCheck,\n });\n }\n }\n }\n\n function getGlobalVariables(globals: Set<string> | string[]) {\n return supply(\n globals,\n getGeneralGlobals(globals, {\n collectCoverage,\n widgetId,\n widgetVersion,\n isolatedRoot,\n app: currentApp,\n storyboardFunctions,\n isStoryboardFunction: true,\n }),\n !!collectCoverage\n );\n }\n\n function getStoryboardFunction(name: string): Function | undefined {\n const fn = registeredFunctions.get(name);\n if (!fn) {\n return undefined;\n }\n if (fn.processed) {\n return fn.cooked;\n }\n let collector: FunctionCoverageCollector | undefined;\n if (collectCoverage) {\n collector = collectCoverage.createCollector(name);\n }\n\n // Do not use transformed functions when debugging.\n const transformed = !overrides && !collector && fn.transformed;\n if (transformed) {\n const globalVariables = getGlobalVariables(transformed.globals);\n // Spread globals as params to prevent accessing forbidden globals.\n // NOTE: in native mode, forbidden globals are declared as `undefined`,\n // thus accessing them will not throw a ReferenceError.\n fn.cooked = new Function(\n ...transformed.globals,\n `\"use strict\";return (${transformed.source})`\n )(\n ...transformed.globals.map((key) =>\n hasOwnProperty(globalVariables, key)\n ? globalVariables[key]\n : undefined\n )\n );\n } else {\n const precooked = precookFunction(fn.source, {\n typescript: fn.typescript,\n hooks: collector && {\n beforeVisit: collector.beforeVisit,\n },\n cacheKey: fn,\n });\n const globalVariables = getGlobalVariables(\n precooked.attemptToVisitGlobals\n );\n fn.cooked = cook(precooked.function, fn.source, {\n rules: {\n noVar: true,\n },\n globalVariables: overrides\n ? {\n ...globalVariables,\n ...(overrides?.LodashWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"_\")\n ? {\n _: {\n ...(globalVariables._ as typeof _),\n ...overrides.LodashWithStaticFields,\n },\n }\n : null),\n ...(overrides?.ArrayConstructor &&\n precooked.attemptToVisitGlobals.has(\"Array\")\n ? {\n Array: overrides.ArrayConstructor,\n }\n : null),\n ...(overrides?.ObjectWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"Object\")\n ? {\n Object: {\n ...(globalVariables.Object as typeof Object),\n ...overrides.ObjectWithStaticFields,\n },\n }\n : null),\n }\n : globalVariables,\n ArrayConstructor: overrides?.ArrayConstructor,\n hooks: collector && {\n beforeEvaluate: collector.beforeEvaluate,\n beforeCall: collector.beforeCall,\n beforeBranch: collector.beforeBranch,\n },\n debug: !!debuggerOverrides,\n }) as Function;\n }\n fn.processed = true;\n return fn.cooked;\n }\n\n return {\n storyboardFunctions,\n registerStoryboardFunctions,\n updateStoryboardFunction(\n name: string,\n data: StoryboardFunctionPatch\n ): void {\n const newFn = {\n ...data,\n name,\n };\n const deps = collectMemberUsageInFunction(newFn, \"FN\", true);\n const hasPermissionsCheck = collectMemberUsageInFunction(\n newFn,\n \"PERMISSIONS\",\n true\n ).has(\"check\");\n registeredFunctions.set(name, {\n source: data.source,\n typescript: data.typescript,\n transformed: data.transformed,\n deps,\n hasPermissionsCheck,\n });\n },\n /**\n * Check whether listed functions attempt to call `PERMISSIONS.check()`,\n * includes in nested `FN.*()` calls.\n */\n checkPermissionsUsage(functionNames) {\n const checkedFunctions = new Set<string>();\n const hasPermissionsCheck = (name: string): boolean => {\n if (!checkedFunctions.has(name)) {\n checkedFunctions.add(name);\n const fn = registeredFunctions.get(name);\n return (\n !!fn &&\n (fn.hasPermissionsCheck || [...fn.deps].some(hasPermissionsCheck))\n );\n }\n return false;\n };\n return functionNames.some(hasPermissionsCheck);\n },\n clearGlobalExecutionContextStack() {\n __dev_only_clearGlobalExecutionContextStack();\n },\n getGlobalExecutionContextStack() {\n return __dev_only_getGlobalExecutionContextStack();\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/createRoot.js
CHANGED
|
@@ -18,6 +18,7 @@ var _registerAppI18n = require("./internal/registerAppI18n.js");
|
|
|
18
18
|
var _registerCustomTemplates = require("./internal/registerCustomTemplates.js");
|
|
19
19
|
var _setUIVersion = require("./setUIVersion.js");
|
|
20
20
|
var _ErrorNode = require("./internal/ErrorNode.js");
|
|
21
|
+
var _IsolatedFunctions = require("./internal/compute/IsolatedFunctions.js");
|
|
21
22
|
function unstable_createRoot(container, {
|
|
22
23
|
portal: _portal,
|
|
23
24
|
scope = "fragment",
|
|
@@ -42,6 +43,7 @@ function unstable_createRoot(container, {
|
|
|
42
43
|
let unmounted = false;
|
|
43
44
|
let rendererContext;
|
|
44
45
|
let clearI18nBundles;
|
|
46
|
+
const isolatedRoot = scope === "page" ? undefined : Symbol("IsolatedRoot");
|
|
45
47
|
return {
|
|
46
48
|
async render(brick, {
|
|
47
49
|
theme,
|
|
@@ -77,6 +79,7 @@ function unstable_createRoot(container, {
|
|
|
77
79
|
pendingPermissionsPreCheck: [],
|
|
78
80
|
tplStateStoreMap: new Map(),
|
|
79
81
|
formStateStoreMap: new Map(),
|
|
82
|
+
isolatedRoot,
|
|
80
83
|
unsafe_penetrate
|
|
81
84
|
};
|
|
82
85
|
if (url) {
|
|
@@ -124,6 +127,8 @@ function unstable_createRoot(container, {
|
|
|
124
127
|
|
|
125
128
|
// Register functions.
|
|
126
129
|
(0, _StoryboardFunctions.registerStoryboardFunctions)(functions, app);
|
|
130
|
+
} else {
|
|
131
|
+
(0, _IsolatedFunctions.registerIsolatedFunctions)(isolatedRoot, functions ?? []);
|
|
127
132
|
}
|
|
128
133
|
runtimeContext.ctxStore.define(context, runtimeContext);
|
|
129
134
|
let failed = false;
|
|
@@ -177,6 +182,9 @@ function unstable_createRoot(container, {
|
|
|
177
182
|
return;
|
|
178
183
|
}
|
|
179
184
|
unmounted = true;
|
|
185
|
+
if (isolatedRoot) {
|
|
186
|
+
_IsolatedFunctions.isolatedFunctionRegistry.delete(isolatedRoot);
|
|
187
|
+
}
|
|
180
188
|
(0, _mount.unmountTree)(container);
|
|
181
189
|
if (portal) {
|
|
182
190
|
(0, _mount.unmountTree)(portal);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRoot.js","names":["_i18n","require","_storyboard","_lodash","_Renderer","_RendererContext","_DataStore","_mount","_themeAndMode","_enums","_StoryboardFunctions","_registerAppI18n","_registerCustomTemplates","_setUIVersion","_ErrorNode","unstable_createRoot","container","portal","_portal","scope","unknownBricks","supportsUseChildren","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","replaceUseChildren","template","Array","isArray","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 { replaceUseChildren } from \"@next-core/utils/storyboard\";\nimport { uniqueId } from \"lodash\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderBricks,\n} from \"./internal/Renderer.js\";\nimport { RendererContext } from \"./internal/RendererContext.js\";\nimport { DataStore } from \"./internal/data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./internal/interfaces.js\";\nimport { mountTree, unmountTree } from \"./internal/mount.js\";\nimport { applyMode, applyTheme, setMode, setTheme } from \"./themeAndMode.js\";\nimport { RenderTag } from \"./internal/enums.js\";\nimport { registerStoryboardFunctions } from \"./internal/compute/StoryboardFunctions.js\";\nimport { registerAppI18n } from \"./internal/registerAppI18n.js\";\nimport { registerCustomTemplates } from \"./internal/registerCustomTemplates.js\";\nimport { setUIVersion } from \"./setUIVersion.js\";\nimport { ErrorNode } from \"./internal/ErrorNode.js\";\n\nexport interface CreateRootOptions {\n portal?: HTMLElement;\n /**\n * Defaults to \"fragment\", only set it to \"page\" when the root is in a standalone iframe.\n * - page: render as whole page, triggering page life cycles, and enable register of functions/templates/i18n.\n * - fragment: render as fragment, not triggering page life cycles, and disable register of functions/templates/i18n.\n */\n scope?: \"page\" | \"fragment\";\n\n /**\n * Whether to throw error when encountering unknown bricks.\n *\n * Defaults to \"throw\".\n */\n unknownBricks?: \"silent\" | \"throw\";\n\n /**\n * Whether the root supports `useChildren`.\n */\n supportsUseChildren?: boolean;\n\n /**\n * Set unsafe_penetrate to true to allow accessing global variables\n * from an isolated root.\n *\n * It is unsafe, use it at your own risk.\n */\n unsafe_penetrate?: boolean;\n}\n\nexport interface RenderOptions {\n theme?: SiteTheme;\n uiVersion?: string;\n language?: string;\n context?: ContextConf[];\n functions?: StoryboardFunction[];\n templates?: CustomTemplate[];\n i18n?: MetaI18n;\n url?: string;\n app?: MicroApp;\n}\n\nexport function unstable_createRoot(\n container: HTMLElement | DocumentFragment,\n {\n portal: _portal,\n scope = \"fragment\",\n unknownBricks,\n supportsUseChildren,\n unsafe_penetrate,\n }: CreateRootOptions = {}\n) {\n let portal = _portal;\n let createPortal: RenderRoot[\"createPortal\"];\n if (_portal) {\n createPortal = _portal;\n } else {\n // Create portal container when necessary.\n createPortal = () => {\n portal = document.createElement(\"div\");\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n };\n }\n let unmounted = false;\n let rendererContext: RendererContext | undefined;\n let clearI18nBundles: Function | undefined;\n\n return {\n async render(\n brick: BrickConf | BrickConf[],\n {\n theme,\n uiVersion,\n language,\n context,\n functions,\n templates,\n i18n: i18nData,\n url,\n app,\n }: RenderOptions = {}\n ) {\n if (unmounted) {\n throw new Error(\n \"The root is unmounted and cannot be rendered any more\"\n );\n }\n const bricks = ([] as BrickConf[]).concat(brick);\n\n if (supportsUseChildren) {\n replaceUseChildren(bricks);\n\n for (const template of templates ?? []) {\n if (Array.isArray(template.bricks)) {\n replaceUseChildren(template.bricks);\n }\n }\n }\n\n const previousRendererContext = rendererContext;\n const renderId = uniqueId(\"render-id-\");\n rendererContext = new RendererContext(scope, { unknownBricks, renderId });\n\n const runtimeContext = {\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n 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
|
+
{"version":3,"file":"createRoot.js","names":["_i18n","require","_storyboard","_lodash","_Renderer","_RendererContext","_DataStore","_mount","_themeAndMode","_enums","_StoryboardFunctions","_registerAppI18n","_registerCustomTemplates","_setUIVersion","_ErrorNode","_IsolatedFunctions","unstable_createRoot","container","portal","_portal","scope","unknownBricks","supportsUseChildren","unsafe_penetrate","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","isolatedRoot","undefined","Symbol","render","brick","theme","uiVersion","language","context","functions","templates","i18n","i18nData","url","app","Error","bricks","concat","replaceUseChildren","template","Array","isArray","previousRendererContext","renderId","uniqueId","RendererContext","runtimeContext","ctxStore","DataStore","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","registerIsolatedFunctions","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","isolatedFunctionRegistry","delete","remove"],"sources":["../../src/createRoot.ts"],"sourcesContent":["import type {\n BrickConf,\n ContextConf,\n CustomTemplate,\n MetaI18n,\n MicroApp,\n SiteTheme,\n Storyboard,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { replaceUseChildren } from \"@next-core/utils/storyboard\";\nimport { uniqueId } from \"lodash\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderBricks,\n} from \"./internal/Renderer.js\";\nimport { RendererContext } from \"./internal/RendererContext.js\";\nimport { DataStore } from \"./internal/data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./internal/interfaces.js\";\nimport { mountTree, unmountTree } from \"./internal/mount.js\";\nimport { applyMode, applyTheme, setMode, setTheme } from \"./themeAndMode.js\";\nimport { RenderTag } from \"./internal/enums.js\";\nimport { registerStoryboardFunctions } from \"./internal/compute/StoryboardFunctions.js\";\nimport { registerAppI18n } from \"./internal/registerAppI18n.js\";\nimport { registerCustomTemplates } from \"./internal/registerCustomTemplates.js\";\nimport { setUIVersion } from \"./setUIVersion.js\";\nimport { ErrorNode } from \"./internal/ErrorNode.js\";\nimport {\n isolatedFunctionRegistry,\n registerIsolatedFunctions,\n} from \"./internal/compute/IsolatedFunctions.js\";\n\nexport interface CreateRootOptions {\n portal?: HTMLElement;\n /**\n * Defaults to \"fragment\", only set it to \"page\" when the root is in a standalone iframe.\n * - page: render as whole page, triggering page life cycles, and enable register of functions/templates/i18n.\n * - fragment: render as fragment, not triggering page life cycles, and disable register of functions/templates/i18n.\n */\n scope?: \"page\" | \"fragment\";\n\n /**\n * Whether to throw error when encountering unknown bricks.\n *\n * Defaults to \"throw\".\n */\n unknownBricks?: \"silent\" | \"throw\";\n\n /**\n * Whether the root supports `useChildren`.\n */\n supportsUseChildren?: boolean;\n\n /**\n * Set unsafe_penetrate to true to allow accessing global variables\n * from an isolated root.\n *\n * It is unsafe, use it at your own risk.\n */\n unsafe_penetrate?: boolean;\n}\n\nexport interface RenderOptions {\n theme?: SiteTheme;\n uiVersion?: string;\n language?: string;\n context?: ContextConf[];\n functions?: StoryboardFunction[];\n templates?: CustomTemplate[];\n i18n?: MetaI18n;\n url?: string;\n app?: MicroApp;\n}\n\nexport function unstable_createRoot(\n container: HTMLElement | DocumentFragment,\n {\n portal: _portal,\n scope = \"fragment\",\n unknownBricks,\n supportsUseChildren,\n unsafe_penetrate,\n }: CreateRootOptions = {}\n) {\n let portal = _portal;\n let createPortal: RenderRoot[\"createPortal\"];\n if (_portal) {\n createPortal = _portal;\n } else {\n // Create portal container when necessary.\n createPortal = () => {\n portal = document.createElement(\"div\");\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n };\n }\n let unmounted = false;\n let rendererContext: RendererContext | undefined;\n let clearI18nBundles: Function | undefined;\n const isolatedRoot = scope === \"page\" ? undefined : Symbol(\"IsolatedRoot\");\n\n return {\n async render(\n brick: BrickConf | BrickConf[],\n {\n theme,\n uiVersion,\n language,\n context,\n functions,\n templates,\n i18n: i18nData,\n url,\n app,\n }: RenderOptions = {}\n ) {\n if (unmounted) {\n throw new Error(\n \"The root is unmounted and cannot be rendered any more\"\n );\n }\n const bricks = ([] as BrickConf[]).concat(brick);\n\n if (supportsUseChildren) {\n replaceUseChildren(bricks);\n\n for (const template of templates ?? []) {\n if (Array.isArray(template.bricks)) {\n replaceUseChildren(template.bricks);\n }\n }\n }\n\n const previousRendererContext = rendererContext;\n const renderId = uniqueId(\"render-id-\");\n rendererContext = new RendererContext(scope, { unknownBricks, renderId });\n\n const runtimeContext = {\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n isolatedRoot,\n unsafe_penetrate,\n } as Partial<RuntimeContext> as RuntimeContext;\n\n if (url) {\n const urlObj = new URL(url);\n runtimeContext.query = urlObj.searchParams;\n runtimeContext.location = {\n pathname: urlObj.pathname,\n search: urlObj.search,\n hash: urlObj.hash,\n state: undefined,\n };\n }\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container,\n createPortal,\n };\n\n if (scope === \"page\") {\n setTheme(theme ?? \"light\");\n setMode(\"default\");\n setUIVersion(uiVersion);\n if (language) {\n await i18n.changeLanguage(language);\n }\n\n app ??= {\n id: \"demo\",\n homepage: \"/demo\",\n } as MicroApp;\n runtimeContext.app = app;\n const demoStoryboard = {\n app,\n meta: {\n i18n: i18nData,\n customTemplates: templates,\n },\n } as Storyboard;\n\n // Register i18n.\n clearI18nBundles?.();\n clearI18nBundles = registerAppI18n(demoStoryboard);\n\n // Register custom templates.\n registerCustomTemplates(demoStoryboard);\n\n // Register functions.\n registerStoryboardFunctions(functions, app);\n } else {\n registerIsolatedFunctions(isolatedRoot!, functions ?? []);\n }\n\n runtimeContext.ctxStore.define(context, runtimeContext);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderBricks(\n renderRoot,\n bricks,\n runtimeContext,\n rendererContext,\n [],\n {}\n );\n\n stores = getDataStores(runtimeContext);\n await postAsyncRender(output, runtimeContext, stores);\n } catch (error) {\n failed = true;\n output = {\n node: await ErrorNode(error, renderRoot, scope === \"page\"),\n blockingList: [],\n };\n }\n\n renderRoot.child = output.node;\n\n previousRendererContext?.dispatchOnUnmount();\n previousRendererContext?.dispose();\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n }\n\n if (scope === \"page\") {\n if (!failed) {\n rendererContext.dispatchBeforePageLoad();\n }\n\n applyTheme();\n applyMode();\n }\n\n mountTree(renderRoot);\n\n if (scope === \"page\") {\n window.scrollTo(0, 0);\n }\n\n if (!failed) {\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n if (scope === \"page\") {\n rendererContext.dispatchPageLoad();\n // rendererContext.dispatchAnchorLoad();\n }\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n }\n },\n unmount() {\n if (unmounted) {\n return;\n }\n unmounted = true;\n if (isolatedRoot) {\n isolatedFunctionRegistry.delete(isolatedRoot);\n }\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":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isolatedFunctionRegistry = void 0;
|
|
7
|
+
exports.registerIsolatedFunctions = registerIsolatedFunctions;
|
|
8
|
+
var _StoryboardFunctionRegistry = require("../../StoryboardFunctionRegistry.js");
|
|
9
|
+
const isolatedFunctionRegistry = exports.isolatedFunctionRegistry = new Map();
|
|
10
|
+
function registerIsolatedFunctions(isolatedRoot, functions) {
|
|
11
|
+
const {
|
|
12
|
+
storyboardFunctions,
|
|
13
|
+
registerStoryboardFunctions
|
|
14
|
+
} = (0, _StoryboardFunctionRegistry.StoryboardFunctionRegistryFactory)({
|
|
15
|
+
isolatedRoot
|
|
16
|
+
});
|
|
17
|
+
isolatedFunctionRegistry.set(isolatedRoot, storyboardFunctions);
|
|
18
|
+
registerStoryboardFunctions(functions);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=IsolatedFunctions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsolatedFunctions.js","names":["_StoryboardFunctionRegistry","require","isolatedFunctionRegistry","exports","Map","registerIsolatedFunctions","isolatedRoot","functions","storyboardFunctions","registerStoryboardFunctions","StoryboardFunctionRegistryFactory","set"],"sources":["../../../../src/internal/compute/IsolatedFunctions.ts"],"sourcesContent":["import { StoryboardFunction } from \"@next-core/types\";\nimport {\n ReadonlyStoryboardFunctions,\n StoryboardFunctionRegistryFactory,\n} from \"../../StoryboardFunctionRegistry.js\";\n\nexport const isolatedFunctionRegistry = new Map<\n symbol,\n ReadonlyStoryboardFunctions\n>();\n\nexport function registerIsolatedFunctions(\n isolatedRoot: symbol,\n functions: StoryboardFunction[]\n): void {\n const { storyboardFunctions, registerStoryboardFunctions } =\n StoryboardFunctionRegistryFactory({ isolatedRoot });\n isolatedFunctionRegistry.set(isolatedRoot, storyboardFunctions);\n registerStoryboardFunctions(functions);\n}\n"],"mappings":";;;;;;;AACA,IAAAA,2BAAA,GAAAC,OAAA;AAKO,MAAMC,wBAAwB,GAAAC,OAAA,CAAAD,wBAAA,GAAG,IAAIE,GAAG,CAG7C,CAAC;AAEI,SAASC,yBAAyBA,CACvCC,YAAoB,EACpBC,SAA+B,EACzB;EACN,MAAM;IAAEC,mBAAmB;IAAEC;EAA4B,CAAC,GACxD,IAAAC,6DAAiC,EAAC;IAAEJ;EAAa,CAAC,CAAC;EACrDJ,wBAAwB,CAACS,GAAG,CAACL,YAAY,EAAEE,mBAAmB,CAAC;EAC/DC,2BAA2B,CAACF,SAAS,CAAC;AACxC","ignoreList":[]}
|
|
@@ -394,7 +394,8 @@ runtimeContext, options = {}, isAsync) {
|
|
|
394
394
|
Object.assign(globalVariables, (0, _getGeneralGlobals.getGeneralGlobals)(precooked.attemptToVisitGlobals, {
|
|
395
395
|
storyboardFunctions: _StoryboardFunctions.storyboardFunctions,
|
|
396
396
|
app: app,
|
|
397
|
-
appendI18nNamespace: runtimeContext.appendI18nNamespace
|
|
397
|
+
appendI18nNamespace: runtimeContext.appendI18nNamespace,
|
|
398
|
+
isolatedRoot: runtimeContext.isolatedRoot
|
|
398
399
|
}));
|
|
399
400
|
try {
|
|
400
401
|
const result = (0, _cook.cook)(precooked.expression, precooked.source, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.js","names":["_cook","require","_loader","_supply","_general","_storyboard","_lodash","_CustomProcessors","_StoryboardFunctions","_getGeneralGlobals","_proxyFactories","_devtools","_mediaQuery","_getStorageItem","_Runtime","_utils","_WidgetFunctions","_WidgetI18n","_hasInstalledApp","_isStrictMode","_utils2","_resolveData","_computeRealValue","symbolForRaw","Symbol","for","symbolForContext","isPreEvaluated","raw","getPreEvaluatedRaw","pre","shouldDismissMarkingComputed","shouldAllowRecursiveEvaluations","possibleErrorConstructs","WeakSet","SyntaxError","TypeError","ReferenceError","getCookErrorConstructor","error","has","constructor","asyncEvaluate","runtimeContext","options","blockingList","run","lowLevelEvaluate","Promise","all","evaluate","isAsync","passByRuntimeContext","omit","menuUsage","usedArgs","Set","hasAppUsage","precooked","preevaluate","cache","withParent","hooks","beforeVisitGlobal","node","parent","collectAppGetMenuUsage","collectInstalledAppsHasUsage","message","errorConstructor","hasNonStaticUsage","Error","globalVariables","attemptToVisitGlobals","lazy","hasOwnProperty","Object","keys","length","usedCtx","usedProcessors","usedStates","tplStateStore","strict","isStrictMode","getTplStateStore","usedFormStates","formStateStore","getFormStateStore","devHook","getDevHook","strictCollectMemberUsage","push","ctxStore","waitFor","usedTpls","tpl","add","loadProcessorsImperatively","getBrickPackages","attemptToCheckPermissions","usedFunctions","checkPermissionsUsage","pendingPermissionsPreCheck","size","menu","usedMenuIds","map","menuId","fetchMenuById","getStoryboardByAppId","_internalApiGetStoryboardInBootstrapData","resolveData","asyncComputeRealValue","_hooks$checkInstalled","checkInstalledApps","waitForCheckingApps","_hooks$menu","_hooks$images","data","event","unsafe_penetrate","penetrableCtx","_internalApiGetRuntimeContext","app","currentApp","location","query","match","flags","sys","overrideApp","variableName","hash","substring","cloneDeep","getMenu","getMenuById","getDynamicReadOnlyProxy","get","_target","key","_internalApiGetRuntim","internalCtxStore","getValue","ownKeys","Array","from","getReadOnlyProxy","hasInstalledApp","property","console","getItem","getStorageItem","getMedia","getRuntime","getMiscSettings","URLSearchParams","params","pathname","pkg","customProcessors","_t","k","processor","namespace","split","fromEntries","getAll","warnAboutStrictMode","widgetFunctions","images","widgetImagesFactory","widgetI18nFactory","assign","getGeneralGlobals","storyboardFunctions","appendI18nNamespace","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
|
+
{"version":3,"file":"evaluate.js","names":["_cook","require","_loader","_supply","_general","_storyboard","_lodash","_CustomProcessors","_StoryboardFunctions","_getGeneralGlobals","_proxyFactories","_devtools","_mediaQuery","_getStorageItem","_Runtime","_utils","_WidgetFunctions","_WidgetI18n","_hasInstalledApp","_isStrictMode","_utils2","_resolveData","_computeRealValue","symbolForRaw","Symbol","for","symbolForContext","isPreEvaluated","raw","getPreEvaluatedRaw","pre","shouldDismissMarkingComputed","shouldAllowRecursiveEvaluations","possibleErrorConstructs","WeakSet","SyntaxError","TypeError","ReferenceError","getCookErrorConstructor","error","has","constructor","asyncEvaluate","runtimeContext","options","blockingList","run","lowLevelEvaluate","Promise","all","evaluate","isAsync","passByRuntimeContext","omit","menuUsage","usedArgs","Set","hasAppUsage","precooked","preevaluate","cache","withParent","hooks","beforeVisitGlobal","node","parent","collectAppGetMenuUsage","collectInstalledAppsHasUsage","message","errorConstructor","hasNonStaticUsage","Error","globalVariables","attemptToVisitGlobals","lazy","hasOwnProperty","Object","keys","length","usedCtx","usedProcessors","usedStates","tplStateStore","strict","isStrictMode","getTplStateStore","usedFormStates","formStateStore","getFormStateStore","devHook","getDevHook","strictCollectMemberUsage","push","ctxStore","waitFor","usedTpls","tpl","add","loadProcessorsImperatively","getBrickPackages","attemptToCheckPermissions","usedFunctions","checkPermissionsUsage","pendingPermissionsPreCheck","size","menu","usedMenuIds","map","menuId","fetchMenuById","getStoryboardByAppId","_internalApiGetStoryboardInBootstrapData","resolveData","asyncComputeRealValue","_hooks$checkInstalled","checkInstalledApps","waitForCheckingApps","_hooks$menu","_hooks$images","data","event","unsafe_penetrate","penetrableCtx","_internalApiGetRuntimeContext","app","currentApp","location","query","match","flags","sys","overrideApp","variableName","hash","substring","cloneDeep","getMenu","getMenuById","getDynamicReadOnlyProxy","get","_target","key","_internalApiGetRuntim","internalCtxStore","getValue","ownKeys","Array","from","getReadOnlyProxy","hasInstalledApp","property","console","getItem","getStorageItem","getMedia","getRuntime","getMiscSettings","URLSearchParams","params","pathname","pkg","customProcessors","_t","k","processor","namespace","split","fromEntries","getAll","warnAboutStrictMode","widgetFunctions","images","widgetImagesFactory","widgetI18nFactory","assign","getGeneralGlobals","storyboardFunctions","appendI18nNamespace","isolatedRoot","result","cook","expression","source","supply","detail","context","devtoolsHookEmit"],"sources":["../../../../src/internal/compute/evaluate.ts"],"sourcesContent":["import {\n cook,\n preevaluate,\n PreevaluateResult,\n shouldAllowRecursiveEvaluations,\n} from \"@next-core/cook\";\nimport { loadProcessorsImperatively } from \"@next-core/loader\";\nimport { supply } from \"@next-core/supply\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport {\n strictCollectMemberUsage,\n collectAppGetMenuUsage,\n collectInstalledAppsHasUsage,\n MemberCallUsage,\n} from \"@next-core/utils/storyboard\";\nimport { cloneDeep, omit } from \"lodash\";\nimport type { RuntimeContext } from \"../interfaces.js\";\nimport { customProcessors } from \"../../CustomProcessors.js\";\nimport {\n checkPermissionsUsage,\n storyboardFunctions,\n} from \"./StoryboardFunctions.js\";\nimport { getGeneralGlobals } from \"./getGeneralGlobals.js\";\nimport {\n getDynamicReadOnlyProxy,\n getReadOnlyProxy,\n} from \"../proxyFactories.js\";\nimport { devtoolsHookEmit, getDevHook } from \"../devtools.js\";\nimport { getMedia } from \"../mediaQuery.js\";\nimport { getStorageItem } from \"./getStorageItem.js\";\nimport {\n _internalApiGetRuntimeContext,\n _internalApiGetStoryboardInBootstrapData,\n getBrickPackages,\n getRuntime,\n hooks,\n} from \"../Runtime.js\";\nimport type { DataStore } from \"../data/DataStore.js\";\nimport { getTplStateStore } from \"../CustomTemplates/utils.js\";\nimport { widgetFunctions } from \"./WidgetFunctions.js\";\nimport { widgetI18nFactory } from \"./WidgetI18n.js\";\nimport { hasInstalledApp } from \"../hasInstalledApp.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"../../isStrictMode.js\";\nimport { getFormStateStore } from \"../FormRenderer/utils.js\";\nimport { resolveData } from \"../data/resolveData.js\";\nimport { asyncComputeRealValue } from \"./computeRealValue.js\";\n\nconst symbolForRaw = Symbol.for(\"pre.evaluated.raw\");\nconst symbolForContext = Symbol.for(\"pre.evaluated.context\");\n\nexport interface PreEvaluated {\n [symbolForRaw]: string;\n [symbolForContext]: RuntimeContext;\n}\n\nexport interface EvaluateOptions {\n lazy?: boolean;\n evaluationId?: number;\n}\n\nexport function isPreEvaluated(raw: unknown): raw is PreEvaluated {\n return !!(raw as PreEvaluated)?.[symbolForRaw];\n}\n\nexport function getPreEvaluatedRaw(pre: PreEvaluated): string {\n return pre[symbolForRaw];\n}\n\nexport function shouldDismissMarkingComputed(\n raw: string | PreEvaluated\n): boolean {\n if (typeof raw === \"string\") {\n return shouldAllowRecursiveEvaluations(raw);\n }\n return shouldAllowRecursiveEvaluations(raw[symbolForRaw]);\n}\n\nconst possibleErrorConstructs = new WeakSet<ErrorConstructor>([\n SyntaxError,\n TypeError,\n ReferenceError,\n]);\n\nexport function getCookErrorConstructor(error: any): ErrorConstructor {\n return possibleErrorConstructs.has(error.constructor)\n ? error.constructor\n : TypeError;\n}\n\nexport async function asyncEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { blockingList, run } = lowLevelEvaluate(\n raw,\n runtimeContext,\n options,\n true\n );\n await Promise.all(blockingList);\n return run();\n}\n\nexport function evaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options?: EvaluateOptions\n): Promise<unknown> {\n const { run } = lowLevelEvaluate(raw, runtimeContext, options, false);\n return run();\n}\n\nfunction lowLevelEvaluate(\n raw: string | PreEvaluated, // string or pre-evaluated object.\n runtimeContext: RuntimeContext,\n options: EvaluateOptions = {},\n isAsync?: boolean\n): {\n blockingList: (Promise<unknown> | undefined)[];\n run: Function;\n} {\n const blockingList: (Promise<unknown> | undefined)[] = [];\n if (typeof raw !== \"string\") {\n // If the `raw` is not a string, it must be a pre-evaluated object.\n // Then fulfil the context, and restore the original `raw`.\n\n const passByRuntimeContext = omit(runtimeContext, [\n \"pendingPermissionsPreCheck\",\n \"tplStateStoreMap\",\n \"tplStateStoreScope\",\n \"formStateStoreMap\",\n \"formStateStoreScope\",\n ]);\n\n runtimeContext = {\n ...raw[symbolForContext],\n ...passByRuntimeContext,\n };\n raw = raw[symbolForRaw];\n }\n\n // Collect `APP.getMenu(...)` usage before evaluating.\n const menuUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n const hasAppUsage: MemberCallUsage = {\n usedArgs: new Set(),\n };\n\n // A `SyntaxError` maybe thrown.\n let precooked: PreevaluateResult;\n try {\n precooked = preevaluate(raw, {\n cache: true,\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n collectAppGetMenuUsage(menuUsage, node, parent!);\n collectInstalledAppsHasUsage(hasAppUsage, node, parent!);\n },\n },\n });\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n }\n\n if (menuUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"APP.getMenu\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n if (hasAppUsage.hasNonStaticUsage) {\n throw new Error(\n `Non-static usage of \"INSTALLED_APPS.has\" is prohibited in v3, check your expression: \"${raw}\"`\n );\n }\n\n const globalVariables: Record<string, unknown> = {};\n const { attemptToVisitGlobals } = precooked;\n\n // Ignore evaluating if required `event/DATA` is missing in\n // context. Since they are are provided in different context, whenever\n // missing one of them, memorize the current context for later consuming.\n if (\n options.lazy ||\n (attemptToVisitGlobals.has(\"EVENT\") &&\n !hasOwnProperty(runtimeContext, \"event\")) ||\n (attemptToVisitGlobals.has(\"DATA\") &&\n !hasOwnProperty(runtimeContext, \"data\"))\n ) {\n return {\n blockingList,\n run() {\n return Object.keys(runtimeContext).length > 0\n ? ({\n [symbolForRaw]: raw,\n [symbolForContext]: runtimeContext,\n } as PreEvaluated)\n : raw;\n },\n };\n }\n\n let usedCtx: Set<string> | undefined;\n let usedProcessors: Set<string>;\n let usedStates: Set<string>;\n let tplStateStore: DataStore<\"STATE\"> | undefined;\n const strict = isStrictMode(runtimeContext);\n\n // For existed TPL usage, treat it as a STATE.\n if (\n attemptToVisitGlobals.has(\"STATE\") ||\n (!strict && attemptToVisitGlobals.has(\"TPL\"))\n ) {\n tplStateStore = getTplStateStore(runtimeContext, \"STATE\", `: \"${raw}\"`);\n }\n\n let usedFormStates: Set<string>;\n let formStateStore: DataStore<\"FORM_STATE\"> | undefined;\n if (attemptToVisitGlobals.has(\"FORM_STATE\")) {\n formStateStore = getFormStateStore(\n runtimeContext,\n \"FORM_STATE\",\n `: \"${raw}\"`\n );\n }\n\n const devHook = getDevHook();\n if (isAsync || devHook) {\n if (attemptToVisitGlobals.has(\"CTX\")) {\n usedCtx = strictCollectMemberUsage(raw, \"CTX\");\n isAsync && blockingList.push(runtimeContext.ctxStore.waitFor(usedCtx));\n }\n\n if (tplStateStore) {\n usedStates = strictCollectMemberUsage(raw, \"STATE\");\n // istanbul ignore if\n if (!strict) {\n const usedTpls = strictCollectMemberUsage(raw, \"TPL\");\n for (const tpl of usedTpls) {\n usedStates.add(tpl);\n }\n }\n isAsync && blockingList.push(tplStateStore.waitFor(usedStates));\n }\n\n if (formStateStore) {\n usedFormStates = strictCollectMemberUsage(raw, \"FORM_STATE\");\n isAsync && blockingList.push(formStateStore.waitFor(usedFormStates));\n }\n\n if (attemptToVisitGlobals.has(\"PROCESSORS\")) {\n usedProcessors = strictCollectMemberUsage(raw, \"PROCESSORS\", 2);\n isAsync &&\n blockingList.push(\n loadProcessorsImperatively(usedProcessors, getBrickPackages())\n );\n }\n }\n\n if (isAsync) {\n let attemptToCheckPermissions = attemptToVisitGlobals.has(\"PERMISSIONS\");\n // There maybe `PERMISSIONS.check()` usage in functions\n if (!attemptToCheckPermissions && attemptToVisitGlobals.has(\"FN\")) {\n const usedFunctions = [...strictCollectMemberUsage(raw, \"FN\")];\n attemptToCheckPermissions = checkPermissionsUsage(usedFunctions);\n }\n\n if (attemptToCheckPermissions) {\n blockingList.push(...runtimeContext.pendingPermissionsPreCheck);\n }\n\n if (menuUsage.usedArgs.size > 0 && hooks?.menu) {\n // Block evaluating if has `APP.getMenu(...)` usage.\n const usedMenuIds = [...menuUsage.usedArgs];\n blockingList.push(\n Promise.all(\n usedMenuIds.map((menuId) =>\n hooks!.menu!.fetchMenuById(menuId, runtimeContext, {\n getStoryboardByAppId: _internalApiGetStoryboardInBootstrapData,\n resolveData,\n asyncComputeRealValue,\n })\n )\n )\n );\n }\n\n if (hasAppUsage.usedArgs.size > 0) {\n // Only wait for specific apps\n blockingList.push(\n hooks?.checkInstalledApps?.waitForCheckingApps([\n ...hasAppUsage.usedArgs,\n ])\n );\n }\n }\n\n return {\n blockingList,\n run() {\n const { ctxStore, data, event, unsafe_penetrate } = runtimeContext;\n\n const penetrableCtx = unsafe_penetrate\n ? _internalApiGetRuntimeContext()!\n : runtimeContext;\n\n const {\n app: currentApp,\n location,\n query,\n match,\n flags,\n sys,\n } = penetrableCtx;\n const app = penetrableCtx.overrideApp ?? currentApp;\n\n for (const variableName of attemptToVisitGlobals) {\n switch (variableName) {\n // case \"ALIAS\":\n case \"ANCHOR\":\n globalVariables[variableName] = location.hash\n ? location.hash.substring(1)\n : null;\n break;\n case \"APP\":\n if (app == null) {\n throw new ReferenceError(`APP is not defined, in \"${raw}\"`);\n }\n globalVariables[variableName] = {\n ...cloneDeep(app),\n getMenu: hooks?.menu?.getMenuById,\n };\n break;\n case \"CTX\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n // Allow accessing global `CTX.DS` from an isolated root such as dashboard.\n if (key === \"DS\" && !ctxStore.has(key)) {\n const internalCtxStore =\n _internalApiGetRuntimeContext()?.ctxStore;\n if (internalCtxStore?.has(key)) {\n return internalCtxStore.getValue(key);\n }\n }\n return ctxStore.getValue(key as string);\n },\n ownKeys() {\n return usedCtx ? Array.from(usedCtx) : [];\n },\n });\n break;\n case \"DATA\":\n globalVariables[variableName] = data;\n break;\n case \"EVENT\":\n globalVariables[variableName] = event;\n break;\n case \"FLAGS\":\n globalVariables[variableName] = getReadOnlyProxy(flags);\n break;\n case \"FORM_STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n return formStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedFormStates);\n },\n });\n break;\n case \"HASH\":\n globalVariables[variableName] = location.hash;\n break;\n case \"INSTALLED_APPS\":\n globalVariables[variableName] = getReadOnlyProxy({\n has: hasInstalledApp,\n });\n break;\n case \"ITEM\":\n case \"INDEX\":\n case \"SIZE\": {\n const property =\n variableName === \"ITEM\"\n ? \"forEachItem\"\n : variableName === \"INDEX\"\n ? \"forEachIndex\"\n : \"forEachSize\";\n if (!hasOwnProperty(runtimeContext, property)) {\n // eslint-disable-next-line no-console\n console.error(\n `Using \\`${variableName}\\` but no \\`:forEach\\` is found, check your expression: \"${raw}\"`\n );\n } else {\n globalVariables[variableName] = runtimeContext[property];\n }\n break;\n }\n case \"LOCAL_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"local\"),\n });\n break;\n case \"MEDIA\":\n globalVariables[variableName] = getReadOnlyProxy(getMedia());\n break;\n case \"MISC\":\n globalVariables[variableName] = getRuntime().getMiscSettings();\n break;\n case \"PARAMS\":\n if (query == null) {\n throw new ReferenceError(`PARAMS is not defined, in \"${raw}\"`);\n }\n globalVariables[variableName] = new URLSearchParams(query);\n break;\n case \"PATH\":\n globalVariables[variableName] = getReadOnlyProxy(\n match?.params ?? {}\n );\n break;\n case \"PATH_NAME\":\n globalVariables[variableName] = location.pathname;\n break;\n case \"PROCESSORS\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n const pkg = customProcessors.get(key as string);\n if (!pkg) {\n throw new Error(\n `'PROCESSORS.${\n key as string\n }' is not registered! Have you installed the relevant brick package?`\n );\n }\n return getDynamicReadOnlyProxy({\n get(_t, k) {\n return pkg.get(k as string);\n },\n ownKeys() {\n return Array.from(pkg.keys());\n },\n });\n },\n ownKeys() {\n const keys = new Set<string>();\n for (const processor of usedProcessors) {\n const namespace = processor.split(\".\")[0];\n keys.add(namespace);\n }\n return Array.from(keys);\n },\n });\n break;\n case \"QUERY\":\n if (query == null) {\n throw new ReferenceError(`QUERY is not defined, in \"${raw}\"`);\n }\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.get(key)])\n );\n break;\n case \"QUERY_ARRAY\":\n if (query == null) {\n throw new ReferenceError(\n `QUERY_ARRAY is not defined, in \"${raw}\"`\n );\n }\n globalVariables[variableName] = Object.fromEntries(\n Array.from(query.keys()).map((key) => [key, query.getAll(key)])\n );\n // case \"SEGUE\":\n break;\n case \"SESSION_STORAGE\":\n globalVariables[variableName] = getReadOnlyProxy({\n getItem: getStorageItem(\"session\"),\n });\n break;\n // istanbul ignore next\n case \"TPL\":\n warnAboutStrictMode(\n strict,\n 'Using \"TPL\" in expression',\n `check your expression: \"${raw}\"`\n );\n if (strict) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n case \"STATE\":\n globalVariables[variableName] = getDynamicReadOnlyProxy({\n get(_target, key) {\n return tplStateStore!.getValue(key as string);\n },\n ownKeys() {\n return Array.from(usedStates);\n },\n });\n break;\n case \"SYS\":\n globalVariables[variableName] = getReadOnlyProxy(sys ?? {});\n break;\n case \"__WIDGET_FN__\":\n globalVariables[variableName] = widgetFunctions;\n break;\n case \"__WIDGET_IMG__\":\n globalVariables[variableName] = hooks?.images?.widgetImagesFactory;\n break;\n case \"__WIDGET_I18N__\":\n globalVariables[variableName] = widgetI18nFactory;\n break;\n }\n }\n\n Object.assign(\n globalVariables,\n getGeneralGlobals(precooked.attemptToVisitGlobals, {\n storyboardFunctions,\n app: app,\n appendI18nNamespace: runtimeContext.appendI18nNamespace,\n isolatedRoot: runtimeContext.isolatedRoot,\n })\n );\n\n try {\n const result = cook(precooked.expression, precooked.source, {\n globalVariables: supply(\n precooked.attemptToVisitGlobals,\n globalVariables\n ),\n });\n const detail = { raw, context: globalVariables, result };\n devtoolsHookEmit(\"evaluation\", detail);\n return result;\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n }\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ var _themeAndMode = require("../../themeAndMode.js");
|
|
|
12
12
|
var _getBasePath = require("../../getBasePath.js");
|
|
13
13
|
var _registerAppI18n = require("../registerAppI18n.js");
|
|
14
14
|
var _Runtime = require("../Runtime.js");
|
|
15
|
+
var _IsolatedFunctions = require("./IsolatedFunctions.js");
|
|
15
16
|
// `GeneralGlobals` are globals which are page-state-agnostic,
|
|
16
17
|
// thus they can be used both in storyboard expressions and functions.
|
|
17
18
|
function getGeneralGlobals(attemptToVisitGlobals, options) {
|
|
@@ -28,6 +29,7 @@ function getIndividualGlobal(variableName, {
|
|
|
28
29
|
collectCoverage,
|
|
29
30
|
widgetId,
|
|
30
31
|
widgetVersion,
|
|
32
|
+
isolatedRoot,
|
|
31
33
|
app,
|
|
32
34
|
appendI18nNamespace,
|
|
33
35
|
storyboardFunctions,
|
|
@@ -38,7 +40,7 @@ function getIndividualGlobal(variableName, {
|
|
|
38
40
|
case "BASE_URL":
|
|
39
41
|
return collectCoverage ? "/next" : (0, _getBasePath.getBasePath)().replace(/\/$/, "");
|
|
40
42
|
case "FN":
|
|
41
|
-
return storyboardFunctions;
|
|
43
|
+
return isolatedRoot ? _IsolatedFunctions.isolatedFunctionRegistry.get(isolatedRoot) : storyboardFunctions;
|
|
42
44
|
case "IMG":
|
|
43
45
|
return collectCoverage ? fakeImageFactory() : widgetId ? _Runtime.hooks === null || _Runtime.hooks === void 0 || (_hooks$images = _Runtime.hooks.images) === null || _hooks$images === void 0 ? void 0 : _hooks$images.widgetImagesFactory(widgetId, widgetVersion) : _Runtime.hooks === null || _Runtime.hooks === void 0 || (_hooks$images2 = _Runtime.hooks.images) === null || _hooks$images2 === void 0 ? void 0 : _hooks$images2.imagesFactory(app.id, app.isBuildPush, app.currentVersion);
|
|
44
46
|
case "I18N":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGeneralGlobals.js","names":["_lodash","require","_i18n","_WidgetI18n","_proxyFactories","_themeAndMode","_getBasePath","_registerAppI18n","_Runtime","getGeneralGlobals","attemptToVisitGlobals","options","globalVariables","variableName","variable","getIndividualGlobal","undefined","collectCoverage","widgetId","widgetVersion","app","appendI18nNamespace","storyboardFunctions","isStoryboardFunction","_hooks$images","_hooks$images2","_hooks$checkPermissio","getBasePath","replace","fakeImageFactory","hooks","images","widgetImagesFactory","imagesFactory","id","isBuildPush","currentVersion","identity","widgetI18nFactory","i18n","getFixedT","getI18nNamespace","filter","Boolean","fakeI18nText","i18nText","getReadOnlyProxy","check","fakeCheckPermissions","checkPermissions","getTheme","getCssPropertyValue","console","href","origin","host","hostname","location","data","en","
|
|
1
|
+
{"version":3,"file":"getGeneralGlobals.js","names":["_lodash","require","_i18n","_WidgetI18n","_proxyFactories","_themeAndMode","_getBasePath","_registerAppI18n","_Runtime","_IsolatedFunctions","getGeneralGlobals","attemptToVisitGlobals","options","globalVariables","variableName","variable","getIndividualGlobal","undefined","collectCoverage","widgetId","widgetVersion","isolatedRoot","app","appendI18nNamespace","storyboardFunctions","isStoryboardFunction","_hooks$images","_hooks$images2","_hooks$checkPermissio","getBasePath","replace","isolatedFunctionRegistry","get","fakeImageFactory","hooks","images","widgetImagesFactory","imagesFactory","id","isBuildPush","currentVersion","identity","widgetI18nFactory","i18n","getFixedT","getI18nNamespace","filter","Boolean","fakeI18nText","i18nText","getReadOnlyProxy","check","fakeCheckPermissions","checkPermissions","getTheme","getCssPropertyValue","console","href","origin","host","hostname","location","data","en","name"],"sources":["../../../../src/internal/compute/getGeneralGlobals.ts"],"sourcesContent":["import { identity } from \"lodash\";\nimport type { MicroApp } from \"@next-core/types\";\nimport { i18n, i18nText } from \"@next-core/i18n\";\nimport { widgetI18nFactory } from \"./WidgetI18n.js\";\nimport { getReadOnlyProxy } from \"../proxyFactories.js\";\nimport { getCssPropertyValue, getTheme } from \"../../themeAndMode.js\";\nimport { getBasePath } from \"../../getBasePath.js\";\nimport { getI18nNamespace } from \"../registerAppI18n.js\";\nimport { ImagesFactory, hooks } from \"../Runtime.js\";\nimport { isolatedFunctionRegistry } from \"./IsolatedFunctions.js\";\n\nexport interface GeneralGlobalsOptions {\n collectCoverage?: unknown;\n widgetId?: string;\n widgetVersion?: string;\n isolatedRoot?: symbol;\n app?: PartialMicroApp;\n appendI18nNamespace?: string;\n storyboardFunctions?: unknown;\n isStoryboardFunction?: boolean;\n}\n\nexport type PartialMicroApp = Pick<MicroApp, \"id\" | \"isBuildPush\">;\n\n// `GeneralGlobals` are globals which are page-state-agnostic,\n// thus they can be used both in storyboard expressions and functions.\nexport function getGeneralGlobals(\n attemptToVisitGlobals: Set<string> | string[],\n options: GeneralGlobalsOptions\n): Record<string, unknown> {\n const globalVariables: Record<string, unknown> = {};\n for (const variableName of attemptToVisitGlobals) {\n const variable = getIndividualGlobal(variableName, options);\n if (variable !== undefined) {\n globalVariables[variableName] = variable;\n }\n }\n return globalVariables;\n}\n\nfunction getIndividualGlobal(\n variableName: string,\n {\n collectCoverage,\n widgetId,\n widgetVersion,\n isolatedRoot,\n app,\n appendI18nNamespace,\n storyboardFunctions,\n isStoryboardFunction,\n }: GeneralGlobalsOptions\n): unknown {\n switch (variableName) {\n case \"BASE_URL\":\n return collectCoverage ? \"/next\" : getBasePath().replace(/\\/$/, \"\");\n case \"FN\":\n return isolatedRoot\n ? isolatedFunctionRegistry.get(isolatedRoot)\n : storyboardFunctions;\n case \"IMG\":\n return collectCoverage\n ? fakeImageFactory()\n : widgetId\n ? hooks?.images?.widgetImagesFactory(widgetId, widgetVersion)\n : hooks?.images?.imagesFactory(\n app!.id,\n app!.isBuildPush,\n (app as { currentVersion?: string }).currentVersion\n );\n case \"I18N\":\n return collectCoverage\n ? identity\n : widgetId\n ? widgetI18nFactory(widgetId)\n : i18n.getFixedT(\n null,\n [appendI18nNamespace, getI18nNamespace(\"app\", app!.id)].filter(\n Boolean\n ) as string[]\n );\n case \"I18N_TEXT\":\n return collectCoverage ? fakeI18nText : i18nText;\n case \"PERMISSIONS\":\n return getReadOnlyProxy({\n check: collectCoverage\n ? fakeCheckPermissions\n : hooks?.checkPermissions?.checkPermissions,\n });\n case \"THEME\":\n return getReadOnlyProxy({\n getTheme: collectCoverage ? () => \"light\" : getTheme,\n getCssPropertyValue: collectCoverage ? () => \"\" : getCssPropertyValue,\n });\n case \"console\":\n return isStoryboardFunction ? getReadOnlyProxy(console) : undefined;\n case \"location\":\n return collectCoverage\n ? {\n href: \"http://localhost:3000/functions/test\",\n origin: \"http://localhost:3000\",\n host: \"localhost:3000\",\n hostname: \"localhost\",\n }\n : {\n href: location.href,\n origin: location.origin,\n host: location.host,\n hostname: location.hostname,\n };\n }\n}\n\nfunction fakeI18nText(data: Record<string, string>): string {\n return data?.en;\n}\n\nfunction fakeImageFactory(): ImagesFactory {\n return {\n get(name: string) {\n return `mock/images/${name}`;\n },\n };\n}\n\nfunction fakeCheckPermissions(): boolean {\n return true;\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 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}\n\nexport interface RenderAbstract extends BaseRenderNode {\n tag: RenderTag.ABSTRACT;\n return: RenderReturnNode;\n iid?: string;\n disposes?: (() => void)[];\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n disposed?: boolean;\n mounted?: boolean;\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderAbstract;\nexport type RenderChildNode = RenderBrick | RenderAbstract;\nexport type RenderReturnNode = RenderNode;\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 disposed?: boolean;\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 isolatedRoot?: symbol;\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}\n\nexport interface RenderAbstract extends BaseRenderNode {\n tag: RenderTag.ABSTRACT;\n return: RenderReturnNode;\n iid?: string;\n disposes?: (() => void)[];\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n disposed?: boolean;\n mounted?: boolean;\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderAbstract;\nexport type RenderChildNode = RenderBrick | RenderAbstract;\nexport type RenderReturnNode = RenderNode;\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 disposed?: boolean;\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":[]}
|
|
@@ -23,6 +23,7 @@ export function StoryboardFunctionRegistryFactory() {
|
|
|
23
23
|
let {
|
|
24
24
|
widgetId,
|
|
25
25
|
widgetVersion,
|
|
26
|
+
isolatedRoot,
|
|
26
27
|
collectCoverage,
|
|
27
28
|
debuggerOverrides
|
|
28
29
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
@@ -69,6 +70,7 @@ export function StoryboardFunctionRegistryFactory() {
|
|
|
69
70
|
collectCoverage,
|
|
70
71
|
widgetId,
|
|
71
72
|
widgetVersion,
|
|
73
|
+
isolatedRoot,
|
|
72
74
|
app: currentApp,
|
|
73
75
|
storyboardFunctions,
|
|
74
76
|
isStoryboardFunction: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoryboardFunctionRegistry.js","names":["cook","precookFunction","__dev_only_clearGlobalExecutionContextStack","__dev_only_getGlobalExecutionContextStack","supply","collectMemberUsageInFunction","hasOwnProperty","getGeneralGlobals","StoryboardFunctionRegistryFactory","widgetId","widgetVersion","collectCoverage","debuggerOverrides","arguments","length","undefined","registeredFunctions","Map","overrides","storyboardFunctions","Proxy","Object","freeze","get","_target","key","getStoryboardFunction","currentApp","registerStoryboardFunctions","functions","app","clear","Array","isArray","fn","_fn$perm","deps","delete","name","hasPermissionsCheck","perm","has","set","source","typescript","transformed","getGlobalVariables","globals","isStoryboardFunction","processed","cooked","collector","createCollector","globalVariables","Function","map","precooked","hooks","beforeVisit","cacheKey","attemptToVisitGlobals","function","rules","noVar","LodashWithStaticFields","_","ArrayConstructor","ObjectWithStaticFields","beforeEvaluate","beforeCall","beforeBranch","debug","updateStoryboardFunction","data","newFn","checkPermissionsUsage","functionNames","checkedFunctions","Set","add","some","clearGlobalExecutionContextStack","getGlobalExecutionContextStack"],"sources":["../../src/StoryboardFunctionRegistry.ts"],"sourcesContent":["import type {\n MicroApp,\n StoryboardFunction,\n TransformedFunction,\n} from \"@next-core/types\";\nimport {\n cook,\n precookFunction,\n EstreeNode,\n __dev_only_clearGlobalExecutionContextStack,\n __dev_only_getGlobalExecutionContextStack,\n} from \"@next-core/cook\";\nimport { supply } from \"@next-core/supply\";\nimport { collectMemberUsageInFunction } from \"@next-core/utils/storyboard\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport type _ from \"lodash\";\nimport { getGeneralGlobals } from \"./internal/compute/getGeneralGlobals.js\";\n\n/** @internal */\nexport type ReadonlyStoryboardFunctions = Readonly<Record<string, Function>>;\n\n/** @internal */\nexport type StoryboardFunctionPatch = Pick<\n StoryboardFunction,\n \"source\" | \"typescript\" | \"transformed\"\n>;\n\n/** @internal */\nexport interface StoryboardFunctionRegistry {\n /** A readonly proxy for accessing cooked storyboard functions. */\n storyboardFunctions: ReadonlyStoryboardFunctions;\n\n /** Register storyboard functions. */\n registerStoryboardFunctions(\n functions: StoryboardFunction[] | undefined,\n app?: PartialMicroApp\n ): void;\n\n /** Update a storyboard function during debugging. */\n updateStoryboardFunction(name: string, data: StoryboardFunctionPatch): void;\n\n checkPermissionsUsage(functionNames: string[]): boolean;\n\n clearGlobalExecutionContextStack(): void;\n getGlobalExecutionContextStack(): ReturnType<\n typeof __dev_only_getGlobalExecutionContextStack\n >;\n}\n\n/** @internal */\nexport interface RuntimeStoryboardFunction {\n source: string;\n typescript?: boolean;\n processed?: boolean;\n cooked?: Function;\n deps: Set<string> | string[];\n hasPermissionsCheck: boolean;\n transformed?: TransformedFunction;\n}\n\n/** @internal */\nexport interface FunctionCoverageCollector {\n beforeVisit(node: EstreeNode): void;\n beforeEvaluate(node: EstreeNode): void;\n beforeCall(node: EstreeNode): void;\n beforeBranch(node: EstreeNode, branch: string): void;\n}\n\n/** @internal */\nexport interface FunctionCoverageSettings {\n createCollector(name: string): FunctionCoverageCollector;\n}\n\n/** @internal */\nexport type PartialMicroApp = Pick<MicroApp, \"id\" | \"isBuildPush\" | \"config\">;\n\n/** @internal */\nexport function StoryboardFunctionRegistryFactory({\n widgetId,\n widgetVersion,\n collectCoverage,\n debuggerOverrides,\n}: {\n widgetId?: string;\n widgetVersion?: string;\n collectCoverage?: FunctionCoverageSettings;\n debuggerOverrides?: (ctx: {\n precookFunction: typeof precookFunction;\n cook: typeof cook;\n supply: typeof supply;\n }) => {\n LodashWithStaticFields?: Partial<typeof _>;\n ArrayConstructor?: typeof Array;\n ObjectWithStaticFields?: Partial<typeof Object>;\n };\n} = {}): StoryboardFunctionRegistry {\n const registeredFunctions = new Map<string, RuntimeStoryboardFunction>();\n\n const overrides = debuggerOverrides?.({\n precookFunction,\n cook,\n supply,\n });\n\n // Use `Proxy` with a frozen target, to make a readonly function registry.\n const storyboardFunctions = new Proxy(Object.freeze({}), {\n get(_target, key) {\n return getStoryboardFunction(key as string);\n },\n }) as ReadonlyStoryboardFunctions;\n\n let currentApp: PartialMicroApp | undefined;\n\n function registerStoryboardFunctions(\n functions: StoryboardFunction[],\n app?: PartialMicroApp\n ): void {\n if (app) {\n currentApp = app;\n }\n registeredFunctions.clear();\n if (Array.isArray(functions)) {\n for (const fn of functions) {\n let deps: Set<string> | string[] | undefined = fn.deps;\n if (deps == null) {\n deps = collectMemberUsageInFunction(fn, \"FN\", !!collectCoverage);\n (deps as Set<string>).delete(fn.name);\n }\n const hasPermissionsCheck =\n fn.perm ??\n collectMemberUsageInFunction(\n fn,\n \"PERMISSIONS\",\n !!collectCoverage\n ).has(\"check\");\n registeredFunctions.set(fn.name, {\n source: fn.source,\n typescript: fn.typescript,\n transformed: fn.transformed,\n deps,\n hasPermissionsCheck,\n });\n }\n }\n }\n\n function getGlobalVariables(globals: Set<string> | string[]) {\n return supply(\n globals,\n getGeneralGlobals(globals, {\n collectCoverage,\n widgetId,\n widgetVersion,\n app: currentApp,\n storyboardFunctions,\n isStoryboardFunction: true,\n }),\n !!collectCoverage\n );\n }\n\n function getStoryboardFunction(name: string): Function | undefined {\n const fn = registeredFunctions.get(name);\n if (!fn) {\n return undefined;\n }\n if (fn.processed) {\n return fn.cooked;\n }\n let collector: FunctionCoverageCollector | undefined;\n if (collectCoverage) {\n collector = collectCoverage.createCollector(name);\n }\n\n // Do not use transformed functions when debugging.\n const transformed = !overrides && !collector && fn.transformed;\n if (transformed) {\n const globalVariables = getGlobalVariables(transformed.globals);\n // Spread globals as params to prevent accessing forbidden globals.\n // NOTE: in native mode, forbidden globals are declared as `undefined`,\n // thus accessing them will not throw a ReferenceError.\n fn.cooked = new Function(\n ...transformed.globals,\n `\"use strict\";return (${transformed.source})`\n )(\n ...transformed.globals.map((key) =>\n hasOwnProperty(globalVariables, key)\n ? globalVariables[key]\n : undefined\n )\n );\n } else {\n const precooked = precookFunction(fn.source, {\n typescript: fn.typescript,\n hooks: collector && {\n beforeVisit: collector.beforeVisit,\n },\n cacheKey: fn,\n });\n const globalVariables = getGlobalVariables(\n precooked.attemptToVisitGlobals\n );\n fn.cooked = cook(precooked.function, fn.source, {\n rules: {\n noVar: true,\n },\n globalVariables: overrides\n ? {\n ...globalVariables,\n ...(overrides?.LodashWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"_\")\n ? {\n _: {\n ...(globalVariables._ as typeof _),\n ...overrides.LodashWithStaticFields,\n },\n }\n : null),\n ...(overrides?.ArrayConstructor &&\n precooked.attemptToVisitGlobals.has(\"Array\")\n ? {\n Array: overrides.ArrayConstructor,\n }\n : null),\n ...(overrides?.ObjectWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"Object\")\n ? {\n Object: {\n ...(globalVariables.Object as typeof Object),\n ...overrides.ObjectWithStaticFields,\n },\n }\n : null),\n }\n : globalVariables,\n ArrayConstructor: overrides?.ArrayConstructor,\n hooks: collector && {\n beforeEvaluate: collector.beforeEvaluate,\n beforeCall: collector.beforeCall,\n beforeBranch: collector.beforeBranch,\n },\n debug: !!debuggerOverrides,\n }) as Function;\n }\n fn.processed = true;\n return fn.cooked;\n }\n\n return {\n storyboardFunctions,\n registerStoryboardFunctions,\n updateStoryboardFunction(\n name: string,\n data: StoryboardFunctionPatch\n ): void {\n const newFn = {\n ...data,\n name,\n };\n const deps = collectMemberUsageInFunction(newFn, \"FN\", true);\n const hasPermissionsCheck = collectMemberUsageInFunction(\n newFn,\n \"PERMISSIONS\",\n true\n ).has(\"check\");\n registeredFunctions.set(name, {\n source: data.source,\n typescript: data.typescript,\n transformed: data.transformed,\n deps,\n hasPermissionsCheck,\n });\n },\n /**\n * Check whether listed functions attempt to call `PERMISSIONS.check()`,\n * includes in nested `FN.*()` calls.\n */\n checkPermissionsUsage(functionNames) {\n const checkedFunctions = new Set<string>();\n const hasPermissionsCheck = (name: string): boolean => {\n if (!checkedFunctions.has(name)) {\n checkedFunctions.add(name);\n const fn = registeredFunctions.get(name);\n return (\n !!fn &&\n (fn.hasPermissionsCheck || [...fn.deps].some(hasPermissionsCheck))\n );\n }\n return false;\n };\n return functionNames.some(hasPermissionsCheck);\n },\n clearGlobalExecutionContextStack() {\n __dev_only_clearGlobalExecutionContextStack();\n },\n getGlobalExecutionContextStack() {\n return __dev_only_getGlobalExecutionContextStack();\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"StoryboardFunctionRegistry.js","names":["cook","precookFunction","__dev_only_clearGlobalExecutionContextStack","__dev_only_getGlobalExecutionContextStack","supply","collectMemberUsageInFunction","hasOwnProperty","getGeneralGlobals","StoryboardFunctionRegistryFactory","widgetId","widgetVersion","isolatedRoot","collectCoverage","debuggerOverrides","arguments","length","undefined","registeredFunctions","Map","overrides","storyboardFunctions","Proxy","Object","freeze","get","_target","key","getStoryboardFunction","currentApp","registerStoryboardFunctions","functions","app","clear","Array","isArray","fn","_fn$perm","deps","delete","name","hasPermissionsCheck","perm","has","set","source","typescript","transformed","getGlobalVariables","globals","isStoryboardFunction","processed","cooked","collector","createCollector","globalVariables","Function","map","precooked","hooks","beforeVisit","cacheKey","attemptToVisitGlobals","function","rules","noVar","LodashWithStaticFields","_","ArrayConstructor","ObjectWithStaticFields","beforeEvaluate","beforeCall","beforeBranch","debug","updateStoryboardFunction","data","newFn","checkPermissionsUsage","functionNames","checkedFunctions","Set","add","some","clearGlobalExecutionContextStack","getGlobalExecutionContextStack"],"sources":["../../src/StoryboardFunctionRegistry.ts"],"sourcesContent":["import type {\n MicroApp,\n StoryboardFunction,\n TransformedFunction,\n} from \"@next-core/types\";\nimport {\n cook,\n precookFunction,\n EstreeNode,\n __dev_only_clearGlobalExecutionContextStack,\n __dev_only_getGlobalExecutionContextStack,\n} from \"@next-core/cook\";\nimport { supply } from \"@next-core/supply\";\nimport { collectMemberUsageInFunction } from \"@next-core/utils/storyboard\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nimport type _ from \"lodash\";\nimport { getGeneralGlobals } from \"./internal/compute/getGeneralGlobals.js\";\n\n/** @internal */\nexport type ReadonlyStoryboardFunctions = Readonly<Record<string, Function>>;\n\n/** @internal */\nexport type StoryboardFunctionPatch = Pick<\n StoryboardFunction,\n \"source\" | \"typescript\" | \"transformed\"\n>;\n\n/** @internal */\nexport interface StoryboardFunctionRegistry {\n /** A readonly proxy for accessing cooked storyboard functions. */\n storyboardFunctions: ReadonlyStoryboardFunctions;\n\n /** Register storyboard functions. */\n registerStoryboardFunctions(\n functions: StoryboardFunction[] | undefined,\n app?: PartialMicroApp\n ): void;\n\n /** Update a storyboard function during debugging. */\n updateStoryboardFunction(name: string, data: StoryboardFunctionPatch): void;\n\n checkPermissionsUsage(functionNames: string[]): boolean;\n\n clearGlobalExecutionContextStack(): void;\n getGlobalExecutionContextStack(): ReturnType<\n typeof __dev_only_getGlobalExecutionContextStack\n >;\n}\n\n/** @internal */\nexport interface RuntimeStoryboardFunction {\n source: string;\n typescript?: boolean;\n processed?: boolean;\n cooked?: Function;\n deps: Set<string> | string[];\n hasPermissionsCheck: boolean;\n transformed?: TransformedFunction;\n}\n\n/** @internal */\nexport interface FunctionCoverageCollector {\n beforeVisit(node: EstreeNode): void;\n beforeEvaluate(node: EstreeNode): void;\n beforeCall(node: EstreeNode): void;\n beforeBranch(node: EstreeNode, branch: string): void;\n}\n\n/** @internal */\nexport interface FunctionCoverageSettings {\n createCollector(name: string): FunctionCoverageCollector;\n}\n\n/** @internal */\nexport type PartialMicroApp = Pick<MicroApp, \"id\" | \"isBuildPush\" | \"config\">;\n\n/** @internal */\nexport function StoryboardFunctionRegistryFactory({\n widgetId,\n widgetVersion,\n isolatedRoot,\n collectCoverage,\n debuggerOverrides,\n}: {\n widgetId?: string;\n widgetVersion?: string;\n isolatedRoot?: symbol;\n collectCoverage?: FunctionCoverageSettings;\n debuggerOverrides?: (ctx: {\n precookFunction: typeof precookFunction;\n cook: typeof cook;\n supply: typeof supply;\n }) => {\n LodashWithStaticFields?: Partial<typeof _>;\n ArrayConstructor?: typeof Array;\n ObjectWithStaticFields?: Partial<typeof Object>;\n };\n} = {}): StoryboardFunctionRegistry {\n const registeredFunctions = new Map<string, RuntimeStoryboardFunction>();\n\n const overrides = debuggerOverrides?.({\n precookFunction,\n cook,\n supply,\n });\n\n // Use `Proxy` with a frozen target, to make a readonly function registry.\n const storyboardFunctions = new Proxy(Object.freeze({}), {\n get(_target, key) {\n return getStoryboardFunction(key as string);\n },\n }) as ReadonlyStoryboardFunctions;\n\n let currentApp: PartialMicroApp | undefined;\n\n function registerStoryboardFunctions(\n functions: StoryboardFunction[],\n app?: PartialMicroApp\n ): void {\n if (app) {\n currentApp = app;\n }\n registeredFunctions.clear();\n if (Array.isArray(functions)) {\n for (const fn of functions) {\n let deps: Set<string> | string[] | undefined = fn.deps;\n if (deps == null) {\n deps = collectMemberUsageInFunction(fn, \"FN\", !!collectCoverage);\n (deps as Set<string>).delete(fn.name);\n }\n const hasPermissionsCheck =\n fn.perm ??\n collectMemberUsageInFunction(\n fn,\n \"PERMISSIONS\",\n !!collectCoverage\n ).has(\"check\");\n registeredFunctions.set(fn.name, {\n source: fn.source,\n typescript: fn.typescript,\n transformed: fn.transformed,\n deps,\n hasPermissionsCheck,\n });\n }\n }\n }\n\n function getGlobalVariables(globals: Set<string> | string[]) {\n return supply(\n globals,\n getGeneralGlobals(globals, {\n collectCoverage,\n widgetId,\n widgetVersion,\n isolatedRoot,\n app: currentApp,\n storyboardFunctions,\n isStoryboardFunction: true,\n }),\n !!collectCoverage\n );\n }\n\n function getStoryboardFunction(name: string): Function | undefined {\n const fn = registeredFunctions.get(name);\n if (!fn) {\n return undefined;\n }\n if (fn.processed) {\n return fn.cooked;\n }\n let collector: FunctionCoverageCollector | undefined;\n if (collectCoverage) {\n collector = collectCoverage.createCollector(name);\n }\n\n // Do not use transformed functions when debugging.\n const transformed = !overrides && !collector && fn.transformed;\n if (transformed) {\n const globalVariables = getGlobalVariables(transformed.globals);\n // Spread globals as params to prevent accessing forbidden globals.\n // NOTE: in native mode, forbidden globals are declared as `undefined`,\n // thus accessing them will not throw a ReferenceError.\n fn.cooked = new Function(\n ...transformed.globals,\n `\"use strict\";return (${transformed.source})`\n )(\n ...transformed.globals.map((key) =>\n hasOwnProperty(globalVariables, key)\n ? globalVariables[key]\n : undefined\n )\n );\n } else {\n const precooked = precookFunction(fn.source, {\n typescript: fn.typescript,\n hooks: collector && {\n beforeVisit: collector.beforeVisit,\n },\n cacheKey: fn,\n });\n const globalVariables = getGlobalVariables(\n precooked.attemptToVisitGlobals\n );\n fn.cooked = cook(precooked.function, fn.source, {\n rules: {\n noVar: true,\n },\n globalVariables: overrides\n ? {\n ...globalVariables,\n ...(overrides?.LodashWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"_\")\n ? {\n _: {\n ...(globalVariables._ as typeof _),\n ...overrides.LodashWithStaticFields,\n },\n }\n : null),\n ...(overrides?.ArrayConstructor &&\n precooked.attemptToVisitGlobals.has(\"Array\")\n ? {\n Array: overrides.ArrayConstructor,\n }\n : null),\n ...(overrides?.ObjectWithStaticFields &&\n precooked.attemptToVisitGlobals.has(\"Object\")\n ? {\n Object: {\n ...(globalVariables.Object as typeof Object),\n ...overrides.ObjectWithStaticFields,\n },\n }\n : null),\n }\n : globalVariables,\n ArrayConstructor: overrides?.ArrayConstructor,\n hooks: collector && {\n beforeEvaluate: collector.beforeEvaluate,\n beforeCall: collector.beforeCall,\n beforeBranch: collector.beforeBranch,\n },\n debug: !!debuggerOverrides,\n }) as Function;\n }\n fn.processed = true;\n return fn.cooked;\n }\n\n return {\n storyboardFunctions,\n registerStoryboardFunctions,\n updateStoryboardFunction(\n name: string,\n data: StoryboardFunctionPatch\n ): void {\n const newFn = {\n ...data,\n name,\n };\n const deps = collectMemberUsageInFunction(newFn, \"FN\", true);\n const hasPermissionsCheck = collectMemberUsageInFunction(\n newFn,\n \"PERMISSIONS\",\n true\n ).has(\"check\");\n registeredFunctions.set(name, {\n source: data.source,\n typescript: data.typescript,\n transformed: data.transformed,\n deps,\n hasPermissionsCheck,\n });\n },\n /**\n * Check whether listed functions attempt to call `PERMISSIONS.check()`,\n * includes in nested `FN.*()` calls.\n */\n checkPermissionsUsage(functionNames) {\n const checkedFunctions = new Set<string>();\n const hasPermissionsCheck = (name: string): boolean => {\n if (!checkedFunctions.has(name)) {\n checkedFunctions.add(name);\n const fn = registeredFunctions.get(name);\n return (\n !!fn &&\n (fn.hasPermissionsCheck || [...fn.deps].some(hasPermissionsCheck))\n );\n }\n return false;\n };\n return functionNames.some(hasPermissionsCheck);\n },\n clearGlobalExecutionContextStack() {\n __dev_only_clearGlobalExecutionContextStack();\n },\n getGlobalExecutionContextStack() {\n return __dev_only_getGlobalExecutionContextStack();\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/esm/createRoot.js
CHANGED
|
@@ -12,6 +12,7 @@ import { registerAppI18n } from "./internal/registerAppI18n.js";
|
|
|
12
12
|
import { registerCustomTemplates } from "./internal/registerCustomTemplates.js";
|
|
13
13
|
import { setUIVersion } from "./setUIVersion.js";
|
|
14
14
|
import { ErrorNode } from "./internal/ErrorNode.js";
|
|
15
|
+
import { isolatedFunctionRegistry, registerIsolatedFunctions } from "./internal/compute/IsolatedFunctions.js";
|
|
15
16
|
export function unstable_createRoot(container) {
|
|
16
17
|
let {
|
|
17
18
|
portal: _portal,
|
|
@@ -37,6 +38,7 @@ export function unstable_createRoot(container) {
|
|
|
37
38
|
let unmounted = false;
|
|
38
39
|
let rendererContext;
|
|
39
40
|
let clearI18nBundles;
|
|
41
|
+
const isolatedRoot = scope === "page" ? undefined : Symbol("IsolatedRoot");
|
|
40
42
|
return {
|
|
41
43
|
async render(brick) {
|
|
42
44
|
let {
|
|
@@ -73,6 +75,7 @@ export function unstable_createRoot(container) {
|
|
|
73
75
|
pendingPermissionsPreCheck: [],
|
|
74
76
|
tplStateStoreMap: new Map(),
|
|
75
77
|
formStateStoreMap: new Map(),
|
|
78
|
+
isolatedRoot,
|
|
76
79
|
unsafe_penetrate
|
|
77
80
|
};
|
|
78
81
|
if (url) {
|
|
@@ -120,6 +123,8 @@ export function unstable_createRoot(container) {
|
|
|
120
123
|
|
|
121
124
|
// Register functions.
|
|
122
125
|
registerStoryboardFunctions(functions, app);
|
|
126
|
+
} else {
|
|
127
|
+
registerIsolatedFunctions(isolatedRoot, functions !== null && functions !== void 0 ? functions : []);
|
|
123
128
|
}
|
|
124
129
|
runtimeContext.ctxStore.define(context, runtimeContext);
|
|
125
130
|
let failed = false;
|
|
@@ -173,6 +178,9 @@ export function unstable_createRoot(container) {
|
|
|
173
178
|
return;
|
|
174
179
|
}
|
|
175
180
|
unmounted = true;
|
|
181
|
+
if (isolatedRoot) {
|
|
182
|
+
isolatedFunctionRegistry.delete(isolatedRoot);
|
|
183
|
+
}
|
|
176
184
|
unmountTree(container);
|
|
177
185
|
if (portal) {
|
|
178
186
|
unmountTree(portal);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRoot.js","names":["i18n","replaceUseChildren","uniqueId","getDataStores","postAsyncRender","renderBricks","RendererContext","DataStore","mountTree","unmountTree","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","setUIVersion","ErrorNode","unstable_createRoot","container","portal","_portal","scope","unknownBricks","supportsUseChildren","unsafe_penetrate","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","render","brick","theme","uiVersion","language","context","functions","templates","i18nData","url","app","Error","bricks","concat","template","Array","isArray","previousRendererContext","renderId","runtimeContext","ctxStore","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","urlObj","URL","query","searchParams","location","pathname","search","hash","state","renderRoot","tag","ROOT","_clearI18nBundles","changeLanguage","id","homepage","demoStoryboard","meta","customTemplates","define","failed","output","stores","error","node","blockingList","child","dispatchOnUnmount","dispose","dispatchBeforePageLoad","window","scrollTo","store","mountAsyncData","dispatchPageLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmount","remove"],"sources":["../../src/createRoot.ts"],"sourcesContent":["import type {\n BrickConf,\n ContextConf,\n CustomTemplate,\n MetaI18n,\n MicroApp,\n SiteTheme,\n Storyboard,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { replaceUseChildren } from \"@next-core/utils/storyboard\";\nimport { uniqueId } from \"lodash\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderBricks,\n} from \"./internal/Renderer.js\";\nimport { RendererContext } from \"./internal/RendererContext.js\";\nimport { DataStore } from \"./internal/data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./internal/interfaces.js\";\nimport { mountTree, unmountTree } from \"./internal/mount.js\";\nimport { applyMode, applyTheme, setMode, setTheme } from \"./themeAndMode.js\";\nimport { RenderTag } from \"./internal/enums.js\";\nimport { registerStoryboardFunctions } from \"./internal/compute/StoryboardFunctions.js\";\nimport { registerAppI18n } from \"./internal/registerAppI18n.js\";\nimport { registerCustomTemplates } from \"./internal/registerCustomTemplates.js\";\nimport { setUIVersion } from \"./setUIVersion.js\";\nimport { ErrorNode } from \"./internal/ErrorNode.js\";\n\nexport interface CreateRootOptions {\n portal?: HTMLElement;\n /**\n * Defaults to \"fragment\", only set it to \"page\" when the root is in a standalone iframe.\n * - page: render as whole page, triggering page life cycles, and enable register of functions/templates/i18n.\n * - fragment: render as fragment, not triggering page life cycles, and disable register of functions/templates/i18n.\n */\n scope?: \"page\" | \"fragment\";\n\n /**\n * Whether to throw error when encountering unknown bricks.\n *\n * Defaults to \"throw\".\n */\n unknownBricks?: \"silent\" | \"throw\";\n\n /**\n * Whether the root supports `useChildren`.\n */\n supportsUseChildren?: boolean;\n\n /**\n * Set unsafe_penetrate to true to allow accessing global variables\n * from an isolated root.\n *\n * It is unsafe, use it at your own risk.\n */\n unsafe_penetrate?: boolean;\n}\n\nexport interface RenderOptions {\n theme?: SiteTheme;\n uiVersion?: string;\n language?: string;\n context?: ContextConf[];\n functions?: StoryboardFunction[];\n templates?: CustomTemplate[];\n i18n?: MetaI18n;\n url?: string;\n app?: MicroApp;\n}\n\nexport function unstable_createRoot(\n container: HTMLElement | DocumentFragment,\n {\n portal: _portal,\n scope = \"fragment\",\n unknownBricks,\n supportsUseChildren,\n unsafe_penetrate,\n }: CreateRootOptions = {}\n) {\n let portal = _portal;\n let createPortal: RenderRoot[\"createPortal\"];\n if (_portal) {\n createPortal = _portal;\n } else {\n // Create portal container when necessary.\n createPortal = () => {\n portal = document.createElement(\"div\");\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n };\n }\n let unmounted = false;\n let rendererContext: RendererContext | undefined;\n let clearI18nBundles: Function | undefined;\n\n return {\n async render(\n brick: BrickConf | BrickConf[],\n {\n theme,\n uiVersion,\n language,\n context,\n functions,\n templates,\n i18n: i18nData,\n url,\n app,\n }: RenderOptions = {}\n ) {\n if (unmounted) {\n throw new Error(\n \"The root is unmounted and cannot be rendered any more\"\n );\n }\n const bricks = ([] as BrickConf[]).concat(brick);\n\n if (supportsUseChildren) {\n replaceUseChildren(bricks);\n\n for (const template of templates ?? []) {\n if (Array.isArray(template.bricks)) {\n replaceUseChildren(template.bricks);\n }\n }\n }\n\n const previousRendererContext = rendererContext;\n const renderId = uniqueId(\"render-id-\");\n rendererContext = new RendererContext(scope, { unknownBricks, renderId });\n\n const runtimeContext = {\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n 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
|
+
{"version":3,"file":"createRoot.js","names":["i18n","replaceUseChildren","uniqueId","getDataStores","postAsyncRender","renderBricks","RendererContext","DataStore","mountTree","unmountTree","applyMode","applyTheme","setMode","setTheme","RenderTag","registerStoryboardFunctions","registerAppI18n","registerCustomTemplates","setUIVersion","ErrorNode","isolatedFunctionRegistry","registerIsolatedFunctions","unstable_createRoot","container","portal","_portal","scope","unknownBricks","supportsUseChildren","unsafe_penetrate","arguments","length","undefined","createPortal","document","createElement","style","position","width","height","body","append","unmounted","rendererContext","clearI18nBundles","isolatedRoot","Symbol","render","brick","theme","uiVersion","language","context","functions","templates","i18nData","url","app","Error","bricks","concat","template","Array","isArray","previousRendererContext","renderId","runtimeContext","ctxStore","pendingPermissionsPreCheck","tplStateStoreMap","Map","formStateStoreMap","urlObj","URL","query","searchParams","location","pathname","search","hash","state","renderRoot","tag","ROOT","_clearI18nBundles","changeLanguage","id","homepage","demoStoryboard","meta","customTemplates","define","failed","output","stores","error","node","blockingList","child","dispatchOnUnmount","dispose","dispatchBeforePageLoad","window","scrollTo","store","mountAsyncData","dispatchPageLoad","dispatchOnMount","initializeScrollIntoView","initializeMediaChange","initializeMessageDispatcher","unmount","delete","remove"],"sources":["../../src/createRoot.ts"],"sourcesContent":["import type {\n BrickConf,\n ContextConf,\n CustomTemplate,\n MetaI18n,\n MicroApp,\n SiteTheme,\n Storyboard,\n StoryboardFunction,\n} from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { replaceUseChildren } from \"@next-core/utils/storyboard\";\nimport { uniqueId } from \"lodash\";\nimport {\n RenderOutput,\n getDataStores,\n postAsyncRender,\n renderBricks,\n} from \"./internal/Renderer.js\";\nimport { RendererContext } from \"./internal/RendererContext.js\";\nimport { DataStore } from \"./internal/data/DataStore.js\";\nimport type { RenderRoot, RuntimeContext } from \"./internal/interfaces.js\";\nimport { mountTree, unmountTree } from \"./internal/mount.js\";\nimport { applyMode, applyTheme, setMode, setTheme } from \"./themeAndMode.js\";\nimport { RenderTag } from \"./internal/enums.js\";\nimport { registerStoryboardFunctions } from \"./internal/compute/StoryboardFunctions.js\";\nimport { registerAppI18n } from \"./internal/registerAppI18n.js\";\nimport { registerCustomTemplates } from \"./internal/registerCustomTemplates.js\";\nimport { setUIVersion } from \"./setUIVersion.js\";\nimport { ErrorNode } from \"./internal/ErrorNode.js\";\nimport {\n isolatedFunctionRegistry,\n registerIsolatedFunctions,\n} from \"./internal/compute/IsolatedFunctions.js\";\n\nexport interface CreateRootOptions {\n portal?: HTMLElement;\n /**\n * Defaults to \"fragment\", only set it to \"page\" when the root is in a standalone iframe.\n * - page: render as whole page, triggering page life cycles, and enable register of functions/templates/i18n.\n * - fragment: render as fragment, not triggering page life cycles, and disable register of functions/templates/i18n.\n */\n scope?: \"page\" | \"fragment\";\n\n /**\n * Whether to throw error when encountering unknown bricks.\n *\n * Defaults to \"throw\".\n */\n unknownBricks?: \"silent\" | \"throw\";\n\n /**\n * Whether the root supports `useChildren`.\n */\n supportsUseChildren?: boolean;\n\n /**\n * Set unsafe_penetrate to true to allow accessing global variables\n * from an isolated root.\n *\n * It is unsafe, use it at your own risk.\n */\n unsafe_penetrate?: boolean;\n}\n\nexport interface RenderOptions {\n theme?: SiteTheme;\n uiVersion?: string;\n language?: string;\n context?: ContextConf[];\n functions?: StoryboardFunction[];\n templates?: CustomTemplate[];\n i18n?: MetaI18n;\n url?: string;\n app?: MicroApp;\n}\n\nexport function unstable_createRoot(\n container: HTMLElement | DocumentFragment,\n {\n portal: _portal,\n scope = \"fragment\",\n unknownBricks,\n supportsUseChildren,\n unsafe_penetrate,\n }: CreateRootOptions = {}\n) {\n let portal = _portal;\n let createPortal: RenderRoot[\"createPortal\"];\n if (_portal) {\n createPortal = _portal;\n } else {\n // Create portal container when necessary.\n createPortal = () => {\n portal = document.createElement(\"div\");\n portal.style.position = \"absolute\";\n portal.style.width = portal.style.height = \"0\";\n document.body.append(portal);\n return portal;\n };\n }\n let unmounted = false;\n let rendererContext: RendererContext | undefined;\n let clearI18nBundles: Function | undefined;\n const isolatedRoot = scope === \"page\" ? undefined : Symbol(\"IsolatedRoot\");\n\n return {\n async render(\n brick: BrickConf | BrickConf[],\n {\n theme,\n uiVersion,\n language,\n context,\n functions,\n templates,\n i18n: i18nData,\n url,\n app,\n }: RenderOptions = {}\n ) {\n if (unmounted) {\n throw new Error(\n \"The root is unmounted and cannot be rendered any more\"\n );\n }\n const bricks = ([] as BrickConf[]).concat(brick);\n\n if (supportsUseChildren) {\n replaceUseChildren(bricks);\n\n for (const template of templates ?? []) {\n if (Array.isArray(template.bricks)) {\n replaceUseChildren(template.bricks);\n }\n }\n }\n\n const previousRendererContext = rendererContext;\n const renderId = uniqueId(\"render-id-\");\n rendererContext = new RendererContext(scope, { unknownBricks, renderId });\n\n const runtimeContext = {\n ctxStore: new DataStore(\"CTX\", undefined, rendererContext),\n pendingPermissionsPreCheck: [],\n tplStateStoreMap: new Map<string, DataStore<\"STATE\">>(),\n formStateStoreMap: new Map<string, DataStore<\"FORM_STATE\">>(),\n isolatedRoot,\n unsafe_penetrate,\n } as Partial<RuntimeContext> as RuntimeContext;\n\n if (url) {\n const urlObj = new URL(url);\n runtimeContext.query = urlObj.searchParams;\n runtimeContext.location = {\n pathname: urlObj.pathname,\n search: urlObj.search,\n hash: urlObj.hash,\n state: undefined,\n };\n }\n\n const renderRoot: RenderRoot = {\n tag: RenderTag.ROOT,\n container,\n createPortal,\n };\n\n if (scope === \"page\") {\n setTheme(theme ?? \"light\");\n setMode(\"default\");\n setUIVersion(uiVersion);\n if (language) {\n await i18n.changeLanguage(language);\n }\n\n app ??= {\n id: \"demo\",\n homepage: \"/demo\",\n } as MicroApp;\n runtimeContext.app = app;\n const demoStoryboard = {\n app,\n meta: {\n i18n: i18nData,\n customTemplates: templates,\n },\n } as Storyboard;\n\n // Register i18n.\n clearI18nBundles?.();\n clearI18nBundles = registerAppI18n(demoStoryboard);\n\n // Register custom templates.\n registerCustomTemplates(demoStoryboard);\n\n // Register functions.\n registerStoryboardFunctions(functions, app);\n } else {\n registerIsolatedFunctions(isolatedRoot!, functions ?? []);\n }\n\n runtimeContext.ctxStore.define(context, runtimeContext);\n\n let failed = false;\n let output: RenderOutput;\n let stores: DataStore<\"CTX\" | \"STATE\" | \"FORM_STATE\">[] = [];\n\n try {\n output = await renderBricks(\n renderRoot,\n bricks,\n runtimeContext,\n rendererContext,\n [],\n {}\n );\n\n stores = getDataStores(runtimeContext);\n await postAsyncRender(output, runtimeContext, stores);\n } catch (error) {\n failed = true;\n output = {\n node: await ErrorNode(error, renderRoot, scope === \"page\"),\n blockingList: [],\n };\n }\n\n renderRoot.child = output.node;\n\n previousRendererContext?.dispatchOnUnmount();\n previousRendererContext?.dispose();\n unmountTree(container);\n if (portal) {\n unmountTree(portal);\n }\n\n if (scope === \"page\") {\n if (!failed) {\n rendererContext.dispatchBeforePageLoad();\n }\n\n applyTheme();\n applyMode();\n }\n\n mountTree(renderRoot);\n\n if (scope === \"page\") {\n window.scrollTo(0, 0);\n }\n\n if (!failed) {\n for (const store of stores) {\n store.mountAsyncData();\n }\n\n if (scope === \"page\") {\n rendererContext.dispatchPageLoad();\n // rendererContext.dispatchAnchorLoad();\n }\n rendererContext.dispatchOnMount();\n rendererContext.initializeScrollIntoView();\n rendererContext.initializeMediaChange();\n rendererContext.initializeMessageDispatcher();\n }\n },\n unmount() {\n if (unmounted) {\n return;\n }\n unmounted = true;\n if (isolatedRoot) {\n isolatedFunctionRegistry.delete(isolatedRoot);\n }\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":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StoryboardFunctionRegistryFactory } from "../../StoryboardFunctionRegistry.js";
|
|
2
|
+
export const isolatedFunctionRegistry = new Map();
|
|
3
|
+
export function registerIsolatedFunctions(isolatedRoot, functions) {
|
|
4
|
+
const {
|
|
5
|
+
storyboardFunctions,
|
|
6
|
+
registerStoryboardFunctions
|
|
7
|
+
} = StoryboardFunctionRegistryFactory({
|
|
8
|
+
isolatedRoot
|
|
9
|
+
});
|
|
10
|
+
isolatedFunctionRegistry.set(isolatedRoot, storyboardFunctions);
|
|
11
|
+
registerStoryboardFunctions(functions);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=IsolatedFunctions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsolatedFunctions.js","names":["StoryboardFunctionRegistryFactory","isolatedFunctionRegistry","Map","registerIsolatedFunctions","isolatedRoot","functions","storyboardFunctions","registerStoryboardFunctions","set"],"sources":["../../../../src/internal/compute/IsolatedFunctions.ts"],"sourcesContent":["import { StoryboardFunction } from \"@next-core/types\";\nimport {\n ReadonlyStoryboardFunctions,\n StoryboardFunctionRegistryFactory,\n} from \"../../StoryboardFunctionRegistry.js\";\n\nexport const isolatedFunctionRegistry = new Map<\n symbol,\n ReadonlyStoryboardFunctions\n>();\n\nexport function registerIsolatedFunctions(\n isolatedRoot: symbol,\n functions: StoryboardFunction[]\n): void {\n const { storyboardFunctions, registerStoryboardFunctions } =\n StoryboardFunctionRegistryFactory({ isolatedRoot });\n isolatedFunctionRegistry.set(isolatedRoot, storyboardFunctions);\n registerStoryboardFunctions(functions);\n}\n"],"mappings":"AACA,SAEEA,iCAAiC,QAC5B,qCAAqC;AAE5C,OAAO,MAAMC,wBAAwB,GAAG,IAAIC,GAAG,CAG7C,CAAC;AAEH,OAAO,SAASC,yBAAyBA,CACvCC,YAAoB,EACpBC,SAA+B,EACzB;EACN,MAAM;IAAEC,mBAAmB;IAAEC;EAA4B,CAAC,GACxDP,iCAAiC,CAAC;IAAEI;EAAa,CAAC,CAAC;EACrDH,wBAAwB,CAACO,GAAG,CAACJ,YAAY,EAAEE,mBAAmB,CAAC;EAC/DC,2BAA2B,CAACF,SAAS,CAAC;AACxC","ignoreList":[]}
|
|
@@ -385,7 +385,8 @@ runtimeContext) {
|
|
|
385
385
|
Object.assign(globalVariables, getGeneralGlobals(precooked.attemptToVisitGlobals, {
|
|
386
386
|
storyboardFunctions,
|
|
387
387
|
app: app,
|
|
388
|
-
appendI18nNamespace: runtimeContext.appendI18nNamespace
|
|
388
|
+
appendI18nNamespace: runtimeContext.appendI18nNamespace,
|
|
389
|
+
isolatedRoot: runtimeContext.isolatedRoot
|
|
389
390
|
}));
|
|
390
391
|
try {
|
|
391
392
|
const result = cook(precooked.expression, precooked.source, {
|
|
@@ -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","_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
|
+
{"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","isolatedRoot","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 isolatedRoot: runtimeContext.isolatedRoot,\n })\n );\n\n try {\n const result = cook(precooked.expression, precooked.source, {\n globalVariables: supply(\n precooked.attemptToVisitGlobals,\n globalVariables\n ),\n });\n const detail = { raw, context: globalVariables, result };\n devtoolsHookEmit(\"evaluation\", detail);\n return result;\n } catch (error: any) {\n const message = `${error.message}, in \"${raw}\"`;\n const errorConstructor = getCookErrorConstructor(error);\n throw new errorConstructor(message);\n }\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ import { getCssPropertyValue, getTheme } from "../../themeAndMode.js";
|
|
|
6
6
|
import { getBasePath } from "../../getBasePath.js";
|
|
7
7
|
import { getI18nNamespace } from "../registerAppI18n.js";
|
|
8
8
|
import { hooks } from "../Runtime.js";
|
|
9
|
+
import { isolatedFunctionRegistry } from "./IsolatedFunctions.js";
|
|
9
10
|
// `GeneralGlobals` are globals which are page-state-agnostic,
|
|
10
11
|
// thus they can be used both in storyboard expressions and functions.
|
|
11
12
|
export function getGeneralGlobals(attemptToVisitGlobals, options) {
|
|
@@ -24,6 +25,7 @@ function getIndividualGlobal(variableName, _ref) {
|
|
|
24
25
|
collectCoverage,
|
|
25
26
|
widgetId,
|
|
26
27
|
widgetVersion,
|
|
28
|
+
isolatedRoot,
|
|
27
29
|
app,
|
|
28
30
|
appendI18nNamespace,
|
|
29
31
|
storyboardFunctions,
|
|
@@ -33,7 +35,7 @@ function getIndividualGlobal(variableName, _ref) {
|
|
|
33
35
|
case "BASE_URL":
|
|
34
36
|
return collectCoverage ? "/next" : getBasePath().replace(/\/$/, "");
|
|
35
37
|
case "FN":
|
|
36
|
-
return storyboardFunctions;
|
|
38
|
+
return isolatedRoot ? isolatedFunctionRegistry.get(isolatedRoot) : storyboardFunctions;
|
|
37
39
|
case "IMG":
|
|
38
40
|
return collectCoverage ? fakeImageFactory() : widgetId ? hooks === null || hooks === void 0 || (_hooks$images = hooks.images) === null || _hooks$images === void 0 ? void 0 : _hooks$images.widgetImagesFactory(widgetId, widgetVersion) : hooks === null || hooks === void 0 || (_hooks$images2 = hooks.images) === null || _hooks$images2 === void 0 ? void 0 : _hooks$images2.imagesFactory(app.id, app.isBuildPush, app.currentVersion);
|
|
39
41
|
case "I18N":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGeneralGlobals.js","names":["identity","i18n","i18nText","widgetI18nFactory","getReadOnlyProxy","getCssPropertyValue","getTheme","getBasePath","getI18nNamespace","hooks","getGeneralGlobals","attemptToVisitGlobals","options","globalVariables","variableName","variable","getIndividualGlobal","undefined","_ref","_hooks$images","_hooks$images2","_hooks$checkPermissio","collectCoverage","widgetId","widgetVersion","app","appendI18nNamespace","storyboardFunctions","isStoryboardFunction","replace","fakeImageFactory","images","widgetImagesFactory","imagesFactory","id","isBuildPush","currentVersion","getFixedT","filter","Boolean","fakeI18nText","check","fakeCheckPermissions","checkPermissions","console","href","origin","host","hostname","location","data","en","
|
|
1
|
+
{"version":3,"file":"getGeneralGlobals.js","names":["identity","i18n","i18nText","widgetI18nFactory","getReadOnlyProxy","getCssPropertyValue","getTheme","getBasePath","getI18nNamespace","hooks","isolatedFunctionRegistry","getGeneralGlobals","attemptToVisitGlobals","options","globalVariables","variableName","variable","getIndividualGlobal","undefined","_ref","_hooks$images","_hooks$images2","_hooks$checkPermissio","collectCoverage","widgetId","widgetVersion","isolatedRoot","app","appendI18nNamespace","storyboardFunctions","isStoryboardFunction","replace","get","fakeImageFactory","images","widgetImagesFactory","imagesFactory","id","isBuildPush","currentVersion","getFixedT","filter","Boolean","fakeI18nText","check","fakeCheckPermissions","checkPermissions","console","href","origin","host","hostname","location","data","en","name"],"sources":["../../../../src/internal/compute/getGeneralGlobals.ts"],"sourcesContent":["import { identity } from \"lodash\";\nimport type { MicroApp } from \"@next-core/types\";\nimport { i18n, i18nText } from \"@next-core/i18n\";\nimport { widgetI18nFactory } from \"./WidgetI18n.js\";\nimport { getReadOnlyProxy } from \"../proxyFactories.js\";\nimport { getCssPropertyValue, getTheme } from \"../../themeAndMode.js\";\nimport { getBasePath } from \"../../getBasePath.js\";\nimport { getI18nNamespace } from \"../registerAppI18n.js\";\nimport { ImagesFactory, hooks } from \"../Runtime.js\";\nimport { isolatedFunctionRegistry } from \"./IsolatedFunctions.js\";\n\nexport interface GeneralGlobalsOptions {\n collectCoverage?: unknown;\n widgetId?: string;\n widgetVersion?: string;\n isolatedRoot?: symbol;\n app?: PartialMicroApp;\n appendI18nNamespace?: string;\n storyboardFunctions?: unknown;\n isStoryboardFunction?: boolean;\n}\n\nexport type PartialMicroApp = Pick<MicroApp, \"id\" | \"isBuildPush\">;\n\n// `GeneralGlobals` are globals which are page-state-agnostic,\n// thus they can be used both in storyboard expressions and functions.\nexport function getGeneralGlobals(\n attemptToVisitGlobals: Set<string> | string[],\n options: GeneralGlobalsOptions\n): Record<string, unknown> {\n const globalVariables: Record<string, unknown> = {};\n for (const variableName of attemptToVisitGlobals) {\n const variable = getIndividualGlobal(variableName, options);\n if (variable !== undefined) {\n globalVariables[variableName] = variable;\n }\n }\n return globalVariables;\n}\n\nfunction getIndividualGlobal(\n variableName: string,\n {\n collectCoverage,\n widgetId,\n widgetVersion,\n isolatedRoot,\n app,\n appendI18nNamespace,\n storyboardFunctions,\n isStoryboardFunction,\n }: GeneralGlobalsOptions\n): unknown {\n switch (variableName) {\n case \"BASE_URL\":\n return collectCoverage ? \"/next\" : getBasePath().replace(/\\/$/, \"\");\n case \"FN\":\n return isolatedRoot\n ? isolatedFunctionRegistry.get(isolatedRoot)\n : storyboardFunctions;\n case \"IMG\":\n return collectCoverage\n ? fakeImageFactory()\n : widgetId\n ? hooks?.images?.widgetImagesFactory(widgetId, widgetVersion)\n : hooks?.images?.imagesFactory(\n app!.id,\n app!.isBuildPush,\n (app as { currentVersion?: string }).currentVersion\n );\n case \"I18N\":\n return collectCoverage\n ? identity\n : widgetId\n ? widgetI18nFactory(widgetId)\n : i18n.getFixedT(\n null,\n [appendI18nNamespace, getI18nNamespace(\"app\", app!.id)].filter(\n Boolean\n ) as string[]\n );\n case \"I18N_TEXT\":\n return collectCoverage ? fakeI18nText : i18nText;\n case \"PERMISSIONS\":\n return getReadOnlyProxy({\n check: collectCoverage\n ? fakeCheckPermissions\n : hooks?.checkPermissions?.checkPermissions,\n });\n case \"THEME\":\n return getReadOnlyProxy({\n getTheme: collectCoverage ? () => \"light\" : getTheme,\n getCssPropertyValue: collectCoverage ? () => \"\" : getCssPropertyValue,\n });\n case \"console\":\n return isStoryboardFunction ? getReadOnlyProxy(console) : undefined;\n case \"location\":\n return collectCoverage\n ? {\n href: \"http://localhost:3000/functions/test\",\n origin: \"http://localhost:3000\",\n host: \"localhost:3000\",\n hostname: \"localhost\",\n }\n : {\n href: location.href,\n origin: location.origin,\n host: location.host,\n hostname: location.hostname,\n };\n }\n}\n\nfunction fakeI18nText(data: Record<string, string>): string {\n return data?.en;\n}\n\nfunction fakeImageFactory(): ImagesFactory {\n return {\n get(name: string) {\n return `mock/images/${name}`;\n },\n };\n}\n\nfunction fakeCheckPermissions(): boolean {\n return true;\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 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}\n\nexport interface RenderAbstract extends BaseRenderNode {\n tag: RenderTag.ABSTRACT;\n return: RenderReturnNode;\n iid?: string;\n disposes?: (() => void)[];\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n disposed?: boolean;\n mounted?: boolean;\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderAbstract;\nexport type RenderChildNode = RenderBrick | RenderAbstract;\nexport type RenderReturnNode = RenderNode;\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 disposed?: boolean;\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 isolatedRoot?: symbol;\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}\n\nexport interface RenderAbstract extends BaseRenderNode {\n tag: RenderTag.ABSTRACT;\n return: RenderReturnNode;\n iid?: string;\n disposes?: (() => void)[];\n}\n\nexport interface BaseRenderNode {\n tag: RenderTag;\n child?: RenderChildNode;\n sibling?: RenderChildNode;\n return?: RenderReturnNode | null;\n childElements?: HTMLElement[];\n disposed?: boolean;\n mounted?: boolean;\n}\n\nexport type RenderNode = RenderRoot | RenderBrick | RenderAbstract;\nexport type RenderChildNode = RenderBrick | RenderAbstract;\nexport type RenderReturnNode = RenderNode;\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 disposed?: boolean;\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":[]}
|
|
@@ -42,9 +42,10 @@ export interface FunctionCoverageSettings {
|
|
|
42
42
|
/** @internal */
|
|
43
43
|
export type PartialMicroApp = Pick<MicroApp, "id" | "isBuildPush" | "config">;
|
|
44
44
|
/** @internal */
|
|
45
|
-
export declare function StoryboardFunctionRegistryFactory({ widgetId, widgetVersion, collectCoverage, debuggerOverrides, }?: {
|
|
45
|
+
export declare function StoryboardFunctionRegistryFactory({ widgetId, widgetVersion, isolatedRoot, collectCoverage, debuggerOverrides, }?: {
|
|
46
46
|
widgetId?: string;
|
|
47
47
|
widgetVersion?: string;
|
|
48
|
+
isolatedRoot?: symbol;
|
|
48
49
|
collectCoverage?: FunctionCoverageSettings;
|
|
49
50
|
debuggerOverrides?: (ctx: {
|
|
50
51
|
precookFunction: typeof precookFunction;
|
|
@@ -14,6 +14,7 @@ export interface RuntimeContext extends LegacyCompatibleRuntimeContext {
|
|
|
14
14
|
forEachIndex?: number;
|
|
15
15
|
forEachSize?: number;
|
|
16
16
|
appendI18nNamespace?: string;
|
|
17
|
+
isolatedRoot?: symbol;
|
|
17
18
|
formStateStoreMap: Map<string, DataStore<"FORM_STATE">>;
|
|
18
19
|
formStateStoreId?: string;
|
|
19
20
|
formStateStoreScope?: DataStore<"FORM_STATE">[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/runtime",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.66.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.25",
|
|
68
68
|
"@next-core/test-next": "^2.0.0"
|
|
69
69
|
},
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "fc95fd9315605585d3047650df907056dc8fb06e"
|
|
71
71
|
}
|