@next-core/runtime 1.44.2 → 1.44.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/CustomProcessors.js.map +1 -1
- package/dist/cjs/CustomTemplates.js +7 -11
- package/dist/cjs/CustomTemplates.js.map +1 -1
- package/dist/cjs/createRoot.js +4 -4
- package/dist/cjs/createRoot.js.map +1 -1
- package/dist/cjs/getPageInfo.js.map +1 -1
- package/dist/cjs/handleHttpError.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js +4 -5
- package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +4 -7
- package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +21 -24
- package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js +4 -7
- package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
- package/dist/cjs/internal/CustomTemplates/utils.js +3 -3
- package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +3 -3
- package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/cjs/internal/FormRenderer/utils.js +2 -2
- package/dist/cjs/internal/FormRenderer/utils.js.map +1 -1
- package/dist/cjs/internal/Renderer.js +8 -14
- package/dist/cjs/internal/Renderer.js.map +1 -1
- package/dist/cjs/internal/RendererContext.js +8 -10
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/Runtime.js +14 -14
- package/dist/cjs/internal/Runtime.js.map +1 -1
- package/dist/cjs/internal/bindListeners.js +2 -3
- package/dist/cjs/internal/bindListeners.js.map +1 -1
- package/dist/cjs/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/cjs/internal/compute/evaluate.js +4 -4
- package/dist/cjs/internal/compute/evaluate.js.map +1 -1
- package/dist/cjs/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/cjs/internal/compute/getStorageItem.js +1 -2
- package/dist/cjs/internal/compute/getStorageItem.js.map +1 -1
- package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/cjs/internal/compute/setRealProperties.js.map +1 -1
- package/dist/cjs/internal/data/DataStore.js.map +1 -1
- package/dist/cjs/internal/data/getProviderBrick.js.map +1 -1
- package/dist/cjs/internal/data/realTimeDataInspect.js.map +1 -1
- package/dist/cjs/internal/data/resolveData.js.map +1 -1
- package/dist/cjs/internal/data/resolveDataStore.js +2 -4
- package/dist/cjs/internal/data/resolveDataStore.js.map +1 -1
- package/dist/cjs/internal/hasInstalledApp.js.map +1 -1
- package/dist/cjs/internal/historyExtended.js.map +1 -1
- package/dist/cjs/internal/matchPath.js.map +1 -1
- package/dist/cjs/internal/matchRoutes.js.map +1 -1
- package/dist/cjs/internal/matchStoryboard.js +2 -2
- package/dist/cjs/internal/matchStoryboard.js.map +1 -1
- package/dist/cjs/internal/mediaQuery.js.map +1 -1
- package/dist/cjs/internal/mount.js.map +1 -1
- package/dist/cjs/internal/poll.js +3 -3
- package/dist/cjs/internal/poll.js.map +1 -1
- package/dist/cjs/internal/registerAppI18n.js.map +1 -1
- package/dist/cjs/internal/registerCustomTemplates.js.map +1 -1
- package/dist/cjs/internal/secret_internals.js +4 -4
- package/dist/cjs/internal/secret_internals.js.map +1 -1
- package/dist/cjs/internal/setupRootRuntimeContext.js +2 -3
- package/dist/cjs/internal/setupRootRuntimeContext.js.map +1 -1
- package/dist/cjs/isStrictMode.js.map +1 -1
- package/dist/cjs/setLoginStateCookie.js.map +1 -1
- package/dist/cjs/setWatermark.js +4 -4
- package/dist/cjs/setWatermark.js.map +1 -1
- package/dist/cjs/themeAndMode.js +1 -2
- package/dist/cjs/themeAndMode.js.map +1 -1
- package/dist/esm/CustomProcessors.js +5 -5
- package/dist/esm/CustomProcessors.js.map +1 -1
- package/dist/esm/CustomTemplates.js +48 -58
- package/dist/esm/CustomTemplates.js.map +1 -1
- package/dist/esm/Dialog.js +3 -3
- package/dist/esm/Dialog.js.map +1 -1
- package/dist/esm/Notification.js +2 -2
- package/dist/esm/Notification.js.map +1 -1
- package/dist/esm/StoryboardFunctionRegistry.js +18 -18
- package/dist/esm/StoryboardFunctionRegistry.js.map +1 -1
- package/dist/esm/createRoot.js +125 -129
- package/dist/esm/createRoot.js.map +1 -1
- package/dist/esm/fetchByProvider.js +3 -10
- package/dist/esm/fetchByProvider.js.map +1 -1
- package/dist/esm/getBasePath.js +2 -2
- package/dist/esm/getBasePath.js.map +1 -1
- package/dist/esm/getPageInfo.js +5 -5
- package/dist/esm/getPageInfo.js.map +1 -1
- package/dist/esm/getRealValue.js +7 -6
- package/dist/esm/getRealValue.js.map +1 -1
- package/dist/esm/getV2RuntimeFromDll.js +1 -1
- package/dist/esm/getV2RuntimeFromDll.js.map +1 -1
- package/dist/esm/handleHttpError.js +11 -11
- package/dist/esm/handleHttpError.js.map +1 -1
- package/dist/esm/history.js +4 -4
- package/dist/esm/history.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js +13 -17
- package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/constants.js +5 -5
- package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +41 -42
- package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +43 -46
- package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js +16 -18
- package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
- package/dist/esm/internal/CustomTemplates/utils.js +8 -8
- package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
- package/dist/esm/internal/FormRenderer/constants.js +2 -2
- package/dist/esm/internal/FormRenderer/constants.js.map +1 -1
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js +28 -23
- package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
- package/dist/esm/internal/FormRenderer/getDefaultProperties.js +45 -22
- package/dist/esm/internal/FormRenderer/getDefaultProperties.js.map +1 -1
- package/dist/esm/internal/FormRenderer/utils.js +4 -4
- package/dist/esm/internal/FormRenderer/utils.js.map +1 -1
- package/dist/esm/internal/Renderer.js +517 -580
- package/dist/esm/internal/Renderer.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +132 -148
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +325 -346
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/Runtime.js +53 -51
- package/dist/esm/internal/Runtime.js.map +1 -1
- package/dist/esm/internal/abortController.js +7 -6
- package/dist/esm/internal/abortController.js.map +1 -1
- package/dist/esm/internal/bindListeners.js +136 -156
- package/dist/esm/internal/bindListeners.js.map +1 -1
- package/dist/esm/internal/compute/StoryboardFunctions.js +1 -1
- package/dist/esm/internal/compute/StoryboardFunctions.js.map +1 -1
- package/dist/esm/internal/compute/WidgetFunctions.js +6 -6
- package/dist/esm/internal/compute/WidgetFunctions.js.map +1 -1
- package/dist/esm/internal/compute/WidgetI18n.js +4 -4
- package/dist/esm/internal/compute/WidgetI18n.js.map +1 -1
- package/dist/esm/internal/compute/checkIf.js +10 -23
- package/dist/esm/internal/compute/checkIf.js.map +1 -1
- package/dist/esm/internal/compute/computeRealProperties.js +22 -35
- package/dist/esm/internal/compute/computeRealProperties.js.map +1 -1
- package/dist/esm/internal/compute/computeRealValue.js +42 -49
- package/dist/esm/internal/compute/computeRealValue.js.map +1 -1
- package/dist/esm/internal/compute/evaluate.js +71 -75
- package/dist/esm/internal/compute/evaluate.js.map +1 -1
- package/dist/esm/internal/compute/getGeneralGlobals.js +5 -5
- package/dist/esm/internal/compute/getGeneralGlobals.js.map +1 -1
- package/dist/esm/internal/compute/getNextStateOfUseBrick.js +1 -1
- package/dist/esm/internal/compute/getStorageItem.js +2 -3
- package/dist/esm/internal/compute/getStorageItem.js.map +1 -1
- package/dist/esm/internal/compute/getTracks.js +5 -5
- package/dist/esm/internal/compute/getTracks.js.map +1 -1
- package/dist/esm/internal/compute/listenOnTrackingContext.js +8 -11
- package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
- package/dist/esm/internal/compute/markAsComputed.js +2 -2
- package/dist/esm/internal/compute/markAsComputed.js.map +1 -1
- package/dist/esm/internal/compute/setProperties.js +1 -1
- package/dist/esm/internal/compute/setProperties.js.map +1 -1
- package/dist/esm/internal/compute/setRealProperties.js +3 -3
- package/dist/esm/internal/compute/setRealProperties.js.map +1 -1
- package/dist/esm/internal/customizeColorTheme.js +15 -13
- package/dist/esm/internal/customizeColorTheme.js.map +1 -1
- package/dist/esm/internal/data/DataStore.js +161 -177
- package/dist/esm/internal/data/DataStore.js.map +1 -1
- package/dist/esm/internal/data/getProviderBrick.js +21 -28
- package/dist/esm/internal/data/getProviderBrick.js.map +1 -1
- package/dist/esm/internal/data/realTimeDataInspect.js +5 -5
- package/dist/esm/internal/data/realTimeDataInspect.js.map +1 -1
- package/dist/esm/internal/data/resolveData.js +89 -103
- package/dist/esm/internal/data/resolveData.js.map +1 -1
- package/dist/esm/internal/data/resolveDataStore.js +53 -67
- package/dist/esm/internal/data/resolveDataStore.js.map +1 -1
- package/dist/esm/internal/devtools.js +9 -9
- package/dist/esm/internal/devtools.js.map +1 -1
- package/dist/esm/internal/enums.js +1 -1
- package/dist/esm/internal/fulfilStoryboard.js +15 -28
- package/dist/esm/internal/fulfilStoryboard.js.map +1 -1
- package/dist/esm/internal/hasInstalledApp.js +3 -3
- package/dist/esm/internal/hasInstalledApp.js.map +1 -1
- package/dist/esm/internal/historyExtended.js +40 -37
- package/dist/esm/internal/historyExtended.js.map +1 -1
- package/dist/esm/internal/i18n.js +5 -5
- package/dist/esm/internal/i18n.js.map +1 -1
- package/dist/esm/internal/injected.js +1 -1
- package/dist/esm/internal/injected.js.map +1 -1
- package/dist/esm/internal/insertPreviewRoutes.js +3 -3
- package/dist/esm/internal/insertPreviewRoutes.js.map +1 -1
- package/dist/esm/internal/matchPath.js +17 -17
- package/dist/esm/internal/matchPath.js.map +1 -1
- package/dist/esm/internal/matchRoutes.js +18 -25
- package/dist/esm/internal/matchRoutes.js.map +1 -1
- package/dist/esm/internal/matchStoryboard.js +6 -6
- package/dist/esm/internal/matchStoryboard.js.map +1 -1
- package/dist/esm/internal/mediaQuery.js +11 -11
- package/dist/esm/internal/mediaQuery.js.map +1 -1
- package/dist/esm/internal/mount.js +7 -7
- package/dist/esm/internal/mount.js.map +1 -1
- package/dist/esm/internal/poll.js +53 -60
- package/dist/esm/internal/poll.js.map +1 -1
- package/dist/esm/internal/proxyFactories.js +4 -4
- package/dist/esm/internal/proxyFactories.js.map +1 -1
- package/dist/esm/internal/registerAppI18n.js +6 -6
- package/dist/esm/internal/registerAppI18n.js.map +1 -1
- package/dist/esm/internal/registerCustomTemplates.js +3 -3
- package/dist/esm/internal/registerCustomTemplates.js.map +1 -1
- package/dist/esm/internal/secret_internals.js +140 -146
- package/dist/esm/internal/secret_internals.js.map +1 -1
- package/dist/esm/internal/setupRootRuntimeContext.js +6 -7
- package/dist/esm/internal/setupRootRuntimeContext.js.map +1 -1
- package/dist/esm/internal/sse.js +24 -53
- package/dist/esm/internal/sse.js.map +1 -1
- package/dist/esm/internal/test_only.js +1 -1
- package/dist/esm/isStrictMode.js +3 -3
- package/dist/esm/isStrictMode.js.map +1 -1
- package/dist/esm/setAppVariable.js +1 -1
- package/dist/esm/setAppVariable.js.map +1 -1
- package/dist/esm/setLoginStateCookie.js +5 -5
- package/dist/esm/setLoginStateCookie.js.map +1 -1
- package/dist/esm/setUIVersion.js +1 -1
- package/dist/esm/setWatermark.js +13 -13
- package/dist/esm/setWatermark.js.map +1 -1
- package/dist/esm/themeAndMode.js +14 -13
- package/dist/esm/themeAndMode.js.map +1 -1
- package/dist/types/tsdoc-metadata.json +1 -1
- package/package.json +12 -12
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
3
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
2
|
import { hasOwnProperty, isObject } from "@next-core/utils/general";
|
|
5
3
|
import { strictCollectMemberUsage } from "@next-core/utils/storyboard";
|
|
@@ -14,7 +12,7 @@ import { computePropertyValue } from "../compute/computeRealProperties.js";
|
|
|
14
12
|
import { _internalApiGetRenderId } from "../Runtime.js";
|
|
15
13
|
import { callRealTimeDataInspectHooks, realTimeDataInspectRoot } from "./realTimeDataInspect.js";
|
|
16
14
|
import { isStrictMode } from "../../isStrictMode.js";
|
|
17
|
-
|
|
15
|
+
const supportContextResolveTriggerBrickLifeCycle = ["onBeforePageLoad", "onPageLoad", "onBeforePageLeave", "onPageLeave", "onAnchorLoad", "onAnchorUnload"];
|
|
18
16
|
export class DataStore {
|
|
19
17
|
// 把 `rendererContext` 放在参数列表的最后,并作为可选,以减少测试文件的调整
|
|
20
18
|
constructor(type, hostBrick, rendererContext, stateStoreId) {
|
|
@@ -36,7 +34,7 @@ export class DataStore {
|
|
|
36
34
|
}
|
|
37
35
|
getAllValues() {
|
|
38
36
|
return Object.fromEntries([...this.data.entries()].map(_ref => {
|
|
39
|
-
|
|
37
|
+
let [name, {
|
|
40
38
|
value
|
|
41
39
|
}] = _ref;
|
|
42
40
|
return [name, value];
|
|
@@ -48,7 +46,7 @@ export class DataStore {
|
|
|
48
46
|
}
|
|
49
47
|
notifyRealTimeDataChange(name, value) {
|
|
50
48
|
if (realTimeDataInspectRoot) {
|
|
51
|
-
|
|
49
|
+
const {
|
|
52
50
|
tplStateStoreId
|
|
53
51
|
} = realTimeDataInspectRoot;
|
|
54
52
|
if (tplStateStoreId ? this.type === "STATE" && this.stateStoreId === tplStateStoreId : this.type === "CTX") {
|
|
@@ -64,10 +62,10 @@ export class DataStore {
|
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
64
|
getAffectListByContext(name) {
|
|
67
|
-
|
|
65
|
+
const affectNames = [name];
|
|
68
66
|
this.data.forEach((value, key) => {
|
|
69
67
|
if (value.deps) {
|
|
70
|
-
|
|
68
|
+
const isInDeps = value.deps.some(item => affectNames.includes(item));
|
|
71
69
|
isInDeps && affectNames.push(key) && affectNames.push(...this.getAffectListByContext(key));
|
|
72
70
|
}
|
|
73
71
|
});
|
|
@@ -78,29 +76,29 @@ export class DataStore {
|
|
|
78
76
|
this.batchUpdate = true;
|
|
79
77
|
this.batchUpdateContextsNames = values.map(item => item.name);
|
|
80
78
|
if ([...new Set(this.batchUpdateContextsNames)].length !== this.batchUpdateContextsNames.length) {
|
|
81
|
-
throw new Error(
|
|
79
|
+
throw new Error(`Batch update not allow to update same item`);
|
|
82
80
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
const updateContexts = {};
|
|
82
|
+
const affectContexts = {};
|
|
83
|
+
const affectDepsContextNames = [];
|
|
86
84
|
values.forEach(arg => {
|
|
87
|
-
|
|
85
|
+
const {
|
|
88
86
|
name,
|
|
89
87
|
value
|
|
90
88
|
} = argsFactory([arg]);
|
|
91
|
-
|
|
89
|
+
const updateContextItem = this.data.get(name);
|
|
92
90
|
affectDepsContextNames.push(...this.getAffectListByContext(name));
|
|
93
91
|
updateContextItem && (updateContexts[name] = updateContextItem);
|
|
94
92
|
this.updateValue(name, value, method);
|
|
95
93
|
});
|
|
96
94
|
affectDepsContextNames.filter(item => !updateContexts[item]).forEach(name => {
|
|
97
|
-
|
|
95
|
+
const affectContextItem = this.data.get(name);
|
|
98
96
|
affectContextItem && (affectContexts[name] = affectContextItem);
|
|
99
97
|
});
|
|
100
|
-
|
|
101
|
-
for (
|
|
98
|
+
const triggerEvent = contexts => {
|
|
99
|
+
for (const key in contexts) {
|
|
102
100
|
var _context$eventTarget;
|
|
103
|
-
|
|
101
|
+
const context = contexts[key];
|
|
104
102
|
(_context$eventTarget = context.eventTarget) === null || _context$eventTarget === void 0 || _context$eventTarget.dispatchEvent(new CustomEvent(this.changeEventType, {
|
|
105
103
|
detail: context.value
|
|
106
104
|
}));
|
|
@@ -112,15 +110,15 @@ export class DataStore {
|
|
|
112
110
|
return;
|
|
113
111
|
}
|
|
114
112
|
updateValue(name, value, method, callback, callbackRuntimeContext) {
|
|
115
|
-
|
|
113
|
+
const item = this.data.get(name);
|
|
116
114
|
if (!item) {
|
|
117
|
-
throw new Error(
|
|
115
|
+
throw new Error(`${this.type} '${name}' is not defined`);
|
|
118
116
|
}
|
|
119
117
|
if (method === "refresh" || method === "load") {
|
|
120
118
|
if (!item.useResolve) {
|
|
121
|
-
throw new Error(
|
|
119
|
+
throw new Error(`You can not ${method} "${this.type}.${name}" which is not using resolve`);
|
|
122
120
|
}
|
|
123
|
-
|
|
121
|
+
let promise;
|
|
124
122
|
if (method === "load") {
|
|
125
123
|
// Try to reuse previous request when calling `load`.
|
|
126
124
|
if (item.loaded) {
|
|
@@ -129,19 +127,20 @@ export class DataStore {
|
|
|
129
127
|
promise = item.loading;
|
|
130
128
|
}
|
|
131
129
|
}
|
|
132
|
-
|
|
130
|
+
const shouldDismiss = error => {
|
|
133
131
|
var _this$rendererContext;
|
|
134
132
|
// If render twice immediately, flow API contracts maybe cleared before
|
|
135
133
|
// the second rendering, while the page load handlers of the first
|
|
136
134
|
// rendering can't be cancelled, which throws `FlowApiNotFoundError`.
|
|
137
135
|
// So we ignore error reporting for this case.
|
|
138
|
-
|
|
136
|
+
let renderId;
|
|
139
137
|
return (error === null || error === void 0 ? void 0 : error.name) === "FlowApiNotFoundError" && !!(renderId = (_this$rendererContext = this.rendererContext) === null || _this$rendererContext === void 0 ? void 0 : _this$rendererContext.renderId) && renderId !== _internalApiGetRenderId();
|
|
140
138
|
};
|
|
141
139
|
if (!promise) {
|
|
142
|
-
promise = item.loading = item.load(
|
|
143
|
-
cache: method === "load" ? "default" : "reload"
|
|
144
|
-
|
|
140
|
+
promise = item.loading = item.load({
|
|
141
|
+
cache: method === "load" ? "default" : "reload",
|
|
142
|
+
...value
|
|
143
|
+
});
|
|
145
144
|
// Do not use the chained promise, since the callbacks need the original promise.
|
|
146
145
|
promise.then(val => {
|
|
147
146
|
this.finishLoad(item, val);
|
|
@@ -153,7 +152,7 @@ export class DataStore {
|
|
|
153
152
|
});
|
|
154
153
|
}
|
|
155
154
|
if (callback) {
|
|
156
|
-
|
|
155
|
+
const callbackFactory = eventCallbackFactory(callback, callbackRuntimeContext);
|
|
157
156
|
promise.then(val => {
|
|
158
157
|
callbackFactory("success")({
|
|
159
158
|
value: val
|
|
@@ -175,7 +174,7 @@ export class DataStore {
|
|
|
175
174
|
Object.assign(item.value, value);
|
|
176
175
|
} else {
|
|
177
176
|
// eslint-disable-next-line no-console
|
|
178
|
-
console.warn(
|
|
177
|
+
console.warn(`Non-object current value of "${this.type}.${name}" for "context.assign", try "context.replace" instead.`);
|
|
179
178
|
item.value = value;
|
|
180
179
|
}
|
|
181
180
|
}
|
|
@@ -199,7 +198,7 @@ export class DataStore {
|
|
|
199
198
|
}
|
|
200
199
|
define(dataConfs, runtimeContext, asyncHostPropertyEntries, routePath) {
|
|
201
200
|
if (Array.isArray(dataConfs) && dataConfs.length > 0) {
|
|
202
|
-
|
|
201
|
+
const pending = resolveDataStore(dataConfs, dataConf => this.resolve(dataConf, runtimeContext, asyncHostPropertyEntries, routePath), this.type, isStrictMode(runtimeContext));
|
|
203
202
|
this.pendingStack.push(pending);
|
|
204
203
|
}
|
|
205
204
|
}
|
|
@@ -207,41 +206,32 @@ export class DataStore {
|
|
|
207
206
|
var _this$data$get2;
|
|
208
207
|
(_this$data$get2 = this.data.get(dataName)) === null || _this$data$get2 === void 0 || _this$data$get2.eventTarget.addEventListener(this.changeEventType, listener);
|
|
209
208
|
}
|
|
210
|
-
waitFor(dataNames) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
for (var {
|
|
220
|
-
pendingContexts
|
|
221
|
-
} of _this.pendingStack) {
|
|
222
|
-
yield* _loop(pendingContexts);
|
|
223
|
-
}
|
|
224
|
-
})();
|
|
209
|
+
async waitFor(dataNames) {
|
|
210
|
+
for (const {
|
|
211
|
+
pendingContexts
|
|
212
|
+
} of this.pendingStack) {
|
|
213
|
+
await Promise.all([...dataNames].map(ctx => {
|
|
214
|
+
const p = pendingContexts.get(ctx);
|
|
215
|
+
return p;
|
|
216
|
+
}));
|
|
217
|
+
}
|
|
225
218
|
}
|
|
226
|
-
waitForAll() {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
/* No-op */
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
for (var {
|
|
240
|
-
pendingResult
|
|
241
|
-
} of _this2.pendingStack) {
|
|
242
|
-
yield pendingResult;
|
|
219
|
+
async waitForAll() {
|
|
220
|
+
// Silent each pending contexts, since the error is handled by batched `pendingResult`
|
|
221
|
+
for (const {
|
|
222
|
+
pendingContexts
|
|
223
|
+
} of this.pendingStack) {
|
|
224
|
+
for (const p of pendingContexts.values()) {
|
|
225
|
+
p.catch(() => {
|
|
226
|
+
/* No-op */
|
|
227
|
+
});
|
|
243
228
|
}
|
|
244
|
-
}
|
|
229
|
+
}
|
|
230
|
+
for (const {
|
|
231
|
+
pendingResult
|
|
232
|
+
} of this.pendingStack) {
|
|
233
|
+
await pendingResult;
|
|
234
|
+
}
|
|
245
235
|
}
|
|
246
236
|
|
|
247
237
|
/**
|
|
@@ -256,7 +246,7 @@ export class DataStore {
|
|
|
256
246
|
// istanbul ignore next
|
|
257
247
|
if (item.asyncMounted) {
|
|
258
248
|
// eslint-disable-next-line no-console
|
|
259
|
-
console.error(
|
|
249
|
+
console.error(`Async data "${item.name}" already mounted. This is a bug of Brick Next, please report it.`);
|
|
260
250
|
return;
|
|
261
251
|
}
|
|
262
252
|
item.asyncMounted = true;
|
|
@@ -268,132 +258,126 @@ export class DataStore {
|
|
|
268
258
|
}
|
|
269
259
|
});
|
|
270
260
|
}
|
|
271
|
-
resolve(dataConf, runtimeContext, asyncHostPropertyEntries, routePath) {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
});
|
|
306
|
-
return function load(_x) {
|
|
307
|
-
return _ref2.apply(this, arguments);
|
|
308
|
-
};
|
|
309
|
-
}();
|
|
310
|
-
}
|
|
311
|
-
if (useResolve) {
|
|
312
|
-
// `async` take precedence over `lazy`
|
|
313
|
-
resolvePolicy = dataConf.resolve.async ? "async" : dataConf.resolve.lazy ? "lazy" : "eager";
|
|
314
|
-
if (resolvePolicy === "eager") {
|
|
315
|
-
value = yield load();
|
|
316
|
-
} else if (resolvePolicy === "async") {
|
|
317
|
-
loading = load();
|
|
318
|
-
}
|
|
319
|
-
} else if (!hasFallbackValue) {
|
|
320
|
-
return false;
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
if ((!useResolve || resolvePolicy !== "eager") && dataConf.value !== undefined) {
|
|
324
|
-
// If the context has no resolve, just use its `value`.
|
|
325
|
-
// Or if the resolve is ignored or lazy, use its `value` as a fallback.
|
|
326
|
-
value = yield asyncComputeRealValue(dataConf.value, runtimeContext);
|
|
261
|
+
async resolve(dataConf, runtimeContext, asyncHostPropertyEntries, routePath) {
|
|
262
|
+
if (!(await asyncCheckIf(dataConf, runtimeContext))) {
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
let value;
|
|
266
|
+
if (asyncHostPropertyEntries && (this.type === "STATE" ? dataConf.expose : this.type === "FORM_STATE")) {
|
|
267
|
+
value = await computePropertyValue(asyncHostPropertyEntries, dataConf.name);
|
|
268
|
+
}
|
|
269
|
+
let load;
|
|
270
|
+
let loading;
|
|
271
|
+
let useResolve;
|
|
272
|
+
let trackConditionalResolve;
|
|
273
|
+
let resolvePolicy;
|
|
274
|
+
if (value === undefined) {
|
|
275
|
+
if (dataConf.resolve) {
|
|
276
|
+
const hasFallbackValue = hasOwnProperty(dataConf, "value");
|
|
277
|
+
// Track conditional resolve only if all matches:
|
|
278
|
+
// - Track enabled
|
|
279
|
+
// - Has fallback value
|
|
280
|
+
// - Referencing other data in `resolve.if`
|
|
281
|
+
trackConditionalResolve = dataConf.track && hasFallbackValue && hasOwnProperty(dataConf.resolve, "if") && strictCollectMemberUsage(dataConf.resolve.if, this.type).size > 0;
|
|
282
|
+
const resolveConf = {
|
|
283
|
+
transform: "value",
|
|
284
|
+
...dataConf.resolve
|
|
285
|
+
};
|
|
286
|
+
useResolve = await asyncCheckIf(dataConf.resolve, runtimeContext);
|
|
287
|
+
if (useResolve || trackConditionalResolve) {
|
|
288
|
+
load = async options => {
|
|
289
|
+
var _this$rendererContext2;
|
|
290
|
+
return (await resolveData(resolveConf, runtimeContext, {
|
|
291
|
+
...options,
|
|
292
|
+
renderId: (_this$rendererContext2 = this.rendererContext) === null || _this$rendererContext2 === void 0 ? void 0 : _this$rendererContext2.renderId
|
|
293
|
+
})).value;
|
|
294
|
+
};
|
|
327
295
|
}
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
load,
|
|
339
|
-
loaded: resolvePolicy === "eager",
|
|
340
|
-
loading,
|
|
341
|
-
async: resolvePolicy === "async",
|
|
342
|
-
deps: []
|
|
343
|
-
};
|
|
344
|
-
if (resolvePolicy === "lazy") {
|
|
345
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
346
|
-
var {
|
|
347
|
-
trigger
|
|
348
|
-
} = dataConf.resolve;
|
|
349
|
-
if (trigger && supportContextResolveTriggerBrickLifeCycle.includes(trigger)) {
|
|
350
|
-
var _this3$rendererContex2;
|
|
351
|
-
(_this3$rendererContex2 = _this3.rendererContext) === null || _this3$rendererContex2 === void 0 || _this3$rendererContex2.registerArbitraryLifeCycle(trigger, () => {
|
|
352
|
-
_this3.updateValue(dataConf.name, undefined, "load");
|
|
353
|
-
});
|
|
296
|
+
if (useResolve) {
|
|
297
|
+
// `async` take precedence over `lazy`
|
|
298
|
+
resolvePolicy = dataConf.resolve.async ? "async" : dataConf.resolve.lazy ? "lazy" : "eager";
|
|
299
|
+
if (resolvePolicy === "eager") {
|
|
300
|
+
value = await load();
|
|
301
|
+
} else if (resolvePolicy === "async") {
|
|
302
|
+
loading = load();
|
|
303
|
+
}
|
|
304
|
+
} else if (!hasFallbackValue) {
|
|
305
|
+
return false;
|
|
354
306
|
}
|
|
355
307
|
}
|
|
356
|
-
if (dataConf.
|
|
357
|
-
|
|
308
|
+
if ((!useResolve || resolvePolicy !== "eager") && dataConf.value !== undefined) {
|
|
309
|
+
// If the context has no resolve, just use its `value`.
|
|
310
|
+
// Or if the resolve is ignored or lazy, use its `value` as a fallback.
|
|
311
|
+
value = await asyncComputeRealValue(dataConf.value, runtimeContext);
|
|
358
312
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
313
|
+
}
|
|
314
|
+
if (this.data.has(dataConf.name)) {
|
|
315
|
+
throw new Error(`${this.type} '${dataConf.name}' has already been declared`);
|
|
316
|
+
}
|
|
317
|
+
const newData = {
|
|
318
|
+
name: dataConf.name,
|
|
319
|
+
value,
|
|
320
|
+
// This is required for tracking context, even if no `onChange` is specified.
|
|
321
|
+
eventTarget: new EventTarget(),
|
|
322
|
+
useResolve,
|
|
323
|
+
load,
|
|
324
|
+
loaded: resolvePolicy === "eager",
|
|
325
|
+
loading,
|
|
326
|
+
async: resolvePolicy === "async",
|
|
327
|
+
deps: []
|
|
328
|
+
};
|
|
329
|
+
if (resolvePolicy === "lazy") {
|
|
330
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
331
|
+
const {
|
|
332
|
+
trigger
|
|
333
|
+
} = dataConf.resolve;
|
|
334
|
+
if (trigger && supportContextResolveTriggerBrickLifeCycle.includes(trigger)) {
|
|
335
|
+
var _this$rendererContext3;
|
|
336
|
+
(_this$rendererContext3 = this.rendererContext) === null || _this$rendererContext3 === void 0 || _this$rendererContext3.registerArbitraryLifeCycle(trigger, () => {
|
|
337
|
+
this.updateValue(dataConf.name, undefined, "load");
|
|
338
|
+
});
|
|
374
339
|
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
340
|
+
}
|
|
341
|
+
if (dataConf.onChange) {
|
|
342
|
+
newData.eventTarget.addEventListener(this.changeEventType, listenerFactory(dataConf.onChange, runtimeContext));
|
|
343
|
+
}
|
|
344
|
+
if (dataConf.track) {
|
|
345
|
+
const deps = strictCollectMemberUsage(trackConditionalResolve ? [dataConf.resolve, dataConf.value] : load ? dataConf.resolve : dataConf.value, this.type);
|
|
346
|
+
!load && (newData.deps = [...deps]);
|
|
347
|
+
for (const dep of deps) {
|
|
348
|
+
this.onChange(dep, this.batchAddListener(() => {
|
|
349
|
+
newData.useResolve = trackConditionalResolve ? checkIf(dataConf.resolve, runtimeContext) : !!load;
|
|
350
|
+
if (newData.useResolve) {
|
|
351
|
+
this.updateValue(dataConf.name, {
|
|
352
|
+
cache: "default"
|
|
353
|
+
}, "refresh");
|
|
384
354
|
} else {
|
|
385
|
-
|
|
355
|
+
this.updateValue(dataConf.name, computeRealValue(dataConf.value, runtimeContext), "replace");
|
|
386
356
|
}
|
|
357
|
+
}, dataConf));
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
newData.eventTarget.addEventListener(this.changeEventType, e => {
|
|
361
|
+
this.notifyRealTimeDataChange(dataConf.name, e.detail);
|
|
362
|
+
});
|
|
363
|
+
this.data.set(dataConf.name, newData);
|
|
364
|
+
if (Array.isArray(routePath)) {
|
|
365
|
+
for (const route of routePath) {
|
|
366
|
+
const names = this.routeMap.get(route);
|
|
367
|
+
if (names) {
|
|
368
|
+
names.add(dataConf.name);
|
|
369
|
+
} else {
|
|
370
|
+
this.routeMap.set(route, new Set([dataConf.name]));
|
|
387
371
|
}
|
|
388
372
|
}
|
|
389
|
-
|
|
390
|
-
|
|
373
|
+
}
|
|
374
|
+
return true;
|
|
391
375
|
}
|
|
392
376
|
disposeDataInRoutes(routes) {
|
|
393
|
-
for (
|
|
394
|
-
|
|
377
|
+
for (const route of routes) {
|
|
378
|
+
const names = this.routeMap.get(route);
|
|
395
379
|
if (names !== undefined) {
|
|
396
|
-
for (
|
|
380
|
+
for (const name of names) {
|
|
397
381
|
this.data.delete(name);
|
|
398
382
|
}
|
|
399
383
|
}
|