@next-core/runtime 1.44.2 → 1.44.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/dist/cjs/CustomProcessors.js.map +1 -1
  2. package/dist/cjs/CustomTemplates.js +7 -11
  3. package/dist/cjs/CustomTemplates.js.map +1 -1
  4. package/dist/cjs/createRoot.js +4 -4
  5. package/dist/cjs/createRoot.js.map +1 -1
  6. package/dist/cjs/getPageInfo.js.map +1 -1
  7. package/dist/cjs/handleHttpError.js.map +1 -1
  8. package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js +4 -5
  9. package/dist/cjs/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
  10. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js +4 -7
  11. package/dist/cjs/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  12. package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js +21 -24
  13. package/dist/cjs/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  14. package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js +4 -7
  15. package/dist/cjs/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
  16. package/dist/cjs/internal/CustomTemplates/utils.js +3 -3
  17. package/dist/cjs/internal/CustomTemplates/utils.js.map +1 -1
  18. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js +3 -3
  19. package/dist/cjs/internal/FormRenderer/expandFormRenderer.js.map +1 -1
  20. package/dist/cjs/internal/FormRenderer/utils.js +2 -2
  21. package/dist/cjs/internal/FormRenderer/utils.js.map +1 -1
  22. package/dist/cjs/internal/Renderer.js +8 -14
  23. package/dist/cjs/internal/Renderer.js.map +1 -1
  24. package/dist/cjs/internal/RendererContext.js +8 -10
  25. package/dist/cjs/internal/RendererContext.js.map +1 -1
  26. package/dist/cjs/internal/Router.js.map +1 -1
  27. package/dist/cjs/internal/Runtime.js +19 -16
  28. package/dist/cjs/internal/Runtime.js.map +1 -1
  29. package/dist/cjs/internal/bindListeners.js +2 -3
  30. package/dist/cjs/internal/bindListeners.js.map +1 -1
  31. package/dist/cjs/internal/compute/WidgetFunctions.js.map +1 -1
  32. package/dist/cjs/internal/compute/evaluate.js +4 -4
  33. package/dist/cjs/internal/compute/evaluate.js.map +1 -1
  34. package/dist/cjs/internal/compute/getGeneralGlobals.js.map +1 -1
  35. package/dist/cjs/internal/compute/getStorageItem.js +1 -2
  36. package/dist/cjs/internal/compute/getStorageItem.js.map +1 -1
  37. package/dist/cjs/internal/compute/listenOnTrackingContext.js.map +1 -1
  38. package/dist/cjs/internal/compute/setRealProperties.js.map +1 -1
  39. package/dist/cjs/internal/data/DataStore.js.map +1 -1
  40. package/dist/cjs/internal/data/getProviderBrick.js.map +1 -1
  41. package/dist/cjs/internal/data/realTimeDataInspect.js.map +1 -1
  42. package/dist/cjs/internal/data/resolveData.js.map +1 -1
  43. package/dist/cjs/internal/data/resolveDataStore.js +2 -4
  44. package/dist/cjs/internal/data/resolveDataStore.js.map +1 -1
  45. package/dist/cjs/internal/hasInstalledApp.js.map +1 -1
  46. package/dist/cjs/internal/historyExtended.js.map +1 -1
  47. package/dist/cjs/internal/matchPath.js.map +1 -1
  48. package/dist/cjs/internal/matchRoutes.js.map +1 -1
  49. package/dist/cjs/internal/matchStoryboard.js +2 -2
  50. package/dist/cjs/internal/matchStoryboard.js.map +1 -1
  51. package/dist/cjs/internal/mediaQuery.js.map +1 -1
  52. package/dist/cjs/internal/mount.js.map +1 -1
  53. package/dist/cjs/internal/poll.js +3 -3
  54. package/dist/cjs/internal/poll.js.map +1 -1
  55. package/dist/cjs/internal/registerAppI18n.js.map +1 -1
  56. package/dist/cjs/internal/registerCustomTemplates.js.map +1 -1
  57. package/dist/cjs/internal/secret_internals.js +4 -4
  58. package/dist/cjs/internal/secret_internals.js.map +1 -1
  59. package/dist/cjs/internal/setupRootRuntimeContext.js +2 -3
  60. package/dist/cjs/internal/setupRootRuntimeContext.js.map +1 -1
  61. package/dist/cjs/isStrictMode.js.map +1 -1
  62. package/dist/cjs/setLoginStateCookie.js.map +1 -1
  63. package/dist/cjs/setWatermark.js +4 -4
  64. package/dist/cjs/setWatermark.js.map +1 -1
  65. package/dist/cjs/themeAndMode.js +1 -2
  66. package/dist/cjs/themeAndMode.js.map +1 -1
  67. package/dist/esm/CustomProcessors.js +5 -5
  68. package/dist/esm/CustomProcessors.js.map +1 -1
  69. package/dist/esm/CustomTemplates.js +48 -58
  70. package/dist/esm/CustomTemplates.js.map +1 -1
  71. package/dist/esm/Dialog.js +3 -3
  72. package/dist/esm/Dialog.js.map +1 -1
  73. package/dist/esm/Notification.js +2 -2
  74. package/dist/esm/Notification.js.map +1 -1
  75. package/dist/esm/StoryboardFunctionRegistry.js +18 -18
  76. package/dist/esm/StoryboardFunctionRegistry.js.map +1 -1
  77. package/dist/esm/createRoot.js +125 -129
  78. package/dist/esm/createRoot.js.map +1 -1
  79. package/dist/esm/fetchByProvider.js +3 -10
  80. package/dist/esm/fetchByProvider.js.map +1 -1
  81. package/dist/esm/getBasePath.js +2 -2
  82. package/dist/esm/getBasePath.js.map +1 -1
  83. package/dist/esm/getPageInfo.js +5 -5
  84. package/dist/esm/getPageInfo.js.map +1 -1
  85. package/dist/esm/getRealValue.js +7 -6
  86. package/dist/esm/getRealValue.js.map +1 -1
  87. package/dist/esm/getV2RuntimeFromDll.js +1 -1
  88. package/dist/esm/getV2RuntimeFromDll.js.map +1 -1
  89. package/dist/esm/handleHttpError.js +11 -11
  90. package/dist/esm/handleHttpError.js.map +1 -1
  91. package/dist/esm/history.js +4 -4
  92. package/dist/esm/history.js.map +1 -1
  93. package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js +13 -17
  94. package/dist/esm/internal/CustomTemplates/bindTemplateProxy.js.map +1 -1
  95. package/dist/esm/internal/CustomTemplates/constants.js +5 -5
  96. package/dist/esm/internal/CustomTemplates/constants.js.map +1 -1
  97. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js +41 -42
  98. package/dist/esm/internal/CustomTemplates/expandCustomTemplate.js.map +1 -1
  99. package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js +43 -46
  100. package/dist/esm/internal/CustomTemplates/setupTemplateProxy.js.map +1 -1
  101. package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js +16 -18
  102. package/dist/esm/internal/CustomTemplates/setupUseBrickInTemplate.js.map +1 -1
  103. package/dist/esm/internal/CustomTemplates/utils.js +8 -8
  104. package/dist/esm/internal/CustomTemplates/utils.js.map +1 -1
  105. package/dist/esm/internal/FormRenderer/constants.js +2 -2
  106. package/dist/esm/internal/FormRenderer/constants.js.map +1 -1
  107. package/dist/esm/internal/FormRenderer/expandFormRenderer.js +28 -23
  108. package/dist/esm/internal/FormRenderer/expandFormRenderer.js.map +1 -1
  109. package/dist/esm/internal/FormRenderer/getDefaultProperties.js +45 -22
  110. package/dist/esm/internal/FormRenderer/getDefaultProperties.js.map +1 -1
  111. package/dist/esm/internal/FormRenderer/utils.js +4 -4
  112. package/dist/esm/internal/FormRenderer/utils.js.map +1 -1
  113. package/dist/esm/internal/Renderer.js +517 -580
  114. package/dist/esm/internal/Renderer.js.map +1 -1
  115. package/dist/esm/internal/RendererContext.js +132 -148
  116. package/dist/esm/internal/RendererContext.js.map +1 -1
  117. package/dist/esm/internal/Router.js +325 -346
  118. package/dist/esm/internal/Router.js.map +1 -1
  119. package/dist/esm/internal/Runtime.js +58 -53
  120. package/dist/esm/internal/Runtime.js.map +1 -1
  121. package/dist/esm/internal/abortController.js +7 -6
  122. package/dist/esm/internal/abortController.js.map +1 -1
  123. package/dist/esm/internal/bindListeners.js +136 -156
  124. package/dist/esm/internal/bindListeners.js.map +1 -1
  125. package/dist/esm/internal/compute/StoryboardFunctions.js +1 -1
  126. package/dist/esm/internal/compute/StoryboardFunctions.js.map +1 -1
  127. package/dist/esm/internal/compute/WidgetFunctions.js +6 -6
  128. package/dist/esm/internal/compute/WidgetFunctions.js.map +1 -1
  129. package/dist/esm/internal/compute/WidgetI18n.js +4 -4
  130. package/dist/esm/internal/compute/WidgetI18n.js.map +1 -1
  131. package/dist/esm/internal/compute/checkIf.js +10 -23
  132. package/dist/esm/internal/compute/checkIf.js.map +1 -1
  133. package/dist/esm/internal/compute/computeRealProperties.js +22 -35
  134. package/dist/esm/internal/compute/computeRealProperties.js.map +1 -1
  135. package/dist/esm/internal/compute/computeRealValue.js +42 -49
  136. package/dist/esm/internal/compute/computeRealValue.js.map +1 -1
  137. package/dist/esm/internal/compute/evaluate.js +71 -75
  138. package/dist/esm/internal/compute/evaluate.js.map +1 -1
  139. package/dist/esm/internal/compute/getGeneralGlobals.js +5 -5
  140. package/dist/esm/internal/compute/getGeneralGlobals.js.map +1 -1
  141. package/dist/esm/internal/compute/getNextStateOfUseBrick.js +1 -1
  142. package/dist/esm/internal/compute/getStorageItem.js +2 -3
  143. package/dist/esm/internal/compute/getStorageItem.js.map +1 -1
  144. package/dist/esm/internal/compute/getTracks.js +5 -5
  145. package/dist/esm/internal/compute/getTracks.js.map +1 -1
  146. package/dist/esm/internal/compute/listenOnTrackingContext.js +8 -11
  147. package/dist/esm/internal/compute/listenOnTrackingContext.js.map +1 -1
  148. package/dist/esm/internal/compute/markAsComputed.js +2 -2
  149. package/dist/esm/internal/compute/markAsComputed.js.map +1 -1
  150. package/dist/esm/internal/compute/setProperties.js +1 -1
  151. package/dist/esm/internal/compute/setProperties.js.map +1 -1
  152. package/dist/esm/internal/compute/setRealProperties.js +3 -3
  153. package/dist/esm/internal/compute/setRealProperties.js.map +1 -1
  154. package/dist/esm/internal/customizeColorTheme.js +15 -13
  155. package/dist/esm/internal/customizeColorTheme.js.map +1 -1
  156. package/dist/esm/internal/data/DataStore.js +161 -177
  157. package/dist/esm/internal/data/DataStore.js.map +1 -1
  158. package/dist/esm/internal/data/getProviderBrick.js +21 -28
  159. package/dist/esm/internal/data/getProviderBrick.js.map +1 -1
  160. package/dist/esm/internal/data/realTimeDataInspect.js +5 -5
  161. package/dist/esm/internal/data/realTimeDataInspect.js.map +1 -1
  162. package/dist/esm/internal/data/resolveData.js +89 -103
  163. package/dist/esm/internal/data/resolveData.js.map +1 -1
  164. package/dist/esm/internal/data/resolveDataStore.js +53 -67
  165. package/dist/esm/internal/data/resolveDataStore.js.map +1 -1
  166. package/dist/esm/internal/devtools.js +9 -9
  167. package/dist/esm/internal/devtools.js.map +1 -1
  168. package/dist/esm/internal/enums.js +1 -1
  169. package/dist/esm/internal/fulfilStoryboard.js +15 -28
  170. package/dist/esm/internal/fulfilStoryboard.js.map +1 -1
  171. package/dist/esm/internal/hasInstalledApp.js +3 -3
  172. package/dist/esm/internal/hasInstalledApp.js.map +1 -1
  173. package/dist/esm/internal/historyExtended.js +40 -37
  174. package/dist/esm/internal/historyExtended.js.map +1 -1
  175. package/dist/esm/internal/i18n.js +5 -5
  176. package/dist/esm/internal/i18n.js.map +1 -1
  177. package/dist/esm/internal/injected.js +1 -1
  178. package/dist/esm/internal/injected.js.map +1 -1
  179. package/dist/esm/internal/insertPreviewRoutes.js +3 -3
  180. package/dist/esm/internal/insertPreviewRoutes.js.map +1 -1
  181. package/dist/esm/internal/matchPath.js +17 -17
  182. package/dist/esm/internal/matchPath.js.map +1 -1
  183. package/dist/esm/internal/matchRoutes.js +18 -25
  184. package/dist/esm/internal/matchRoutes.js.map +1 -1
  185. package/dist/esm/internal/matchStoryboard.js +6 -6
  186. package/dist/esm/internal/matchStoryboard.js.map +1 -1
  187. package/dist/esm/internal/mediaQuery.js +11 -11
  188. package/dist/esm/internal/mediaQuery.js.map +1 -1
  189. package/dist/esm/internal/mount.js +7 -7
  190. package/dist/esm/internal/mount.js.map +1 -1
  191. package/dist/esm/internal/poll.js +53 -60
  192. package/dist/esm/internal/poll.js.map +1 -1
  193. package/dist/esm/internal/proxyFactories.js +4 -4
  194. package/dist/esm/internal/proxyFactories.js.map +1 -1
  195. package/dist/esm/internal/registerAppI18n.js +6 -6
  196. package/dist/esm/internal/registerAppI18n.js.map +1 -1
  197. package/dist/esm/internal/registerCustomTemplates.js +3 -3
  198. package/dist/esm/internal/registerCustomTemplates.js.map +1 -1
  199. package/dist/esm/internal/secret_internals.js +140 -146
  200. package/dist/esm/internal/secret_internals.js.map +1 -1
  201. package/dist/esm/internal/setupRootRuntimeContext.js +6 -7
  202. package/dist/esm/internal/setupRootRuntimeContext.js.map +1 -1
  203. package/dist/esm/internal/sse.js +24 -53
  204. package/dist/esm/internal/sse.js.map +1 -1
  205. package/dist/esm/internal/test_only.js +1 -1
  206. package/dist/esm/isStrictMode.js +3 -3
  207. package/dist/esm/isStrictMode.js.map +1 -1
  208. package/dist/esm/setAppVariable.js +1 -1
  209. package/dist/esm/setAppVariable.js.map +1 -1
  210. package/dist/esm/setLoginStateCookie.js +5 -5
  211. package/dist/esm/setLoginStateCookie.js.map +1 -1
  212. package/dist/esm/setUIVersion.js +1 -1
  213. package/dist/esm/setWatermark.js +13 -13
  214. package/dist/esm/setWatermark.js.map +1 -1
  215. package/dist/esm/themeAndMode.js +14 -13
  216. package/dist/esm/themeAndMode.js.map +1 -1
  217. package/dist/types/tsdoc-metadata.json +1 -1
  218. package/package.json +12 -12
@@ -1,69 +1,55 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
1
  import { collectMemberUsage } from "@next-core/utils/storyboard";
3
2
  export function resolveDataStore(contextConfs, resolveContext) {
4
- var keyword = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "CTX";
5
- var strict = arguments.length > 3 ? arguments[3] : undefined;
6
- var dependencyMap = getDependencyMapOfContext(contextConfs, keyword, strict);
3
+ let keyword = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "CTX";
4
+ let strict = arguments.length > 3 ? arguments[3] : undefined;
5
+ const dependencyMap = getDependencyMapOfContext(contextConfs, keyword, strict);
7
6
  // There maybe multiple context confs for a specific name, since there are conditional contexts.
8
7
  // This is a map of how many pending context confs for each context name.
9
- var pendingDeps = new Map();
10
- for (var contextName of Array.from(dependencyMap.keys()).map(contextConf => contextConf.name)) {
11
- var _pendingDeps$get;
12
- pendingDeps.set(contextName, ((_pendingDeps$get = pendingDeps.get(contextName)) !== null && _pendingDeps$get !== void 0 ? _pendingDeps$get : 0) + 1);
8
+ const pendingDeps = new Map();
9
+ for (const contextName of Array.from(dependencyMap.keys()).map(contextConf => contextConf.name)) {
10
+ pendingDeps.set(contextName, (pendingDeps.get(contextName) ?? 0) + 1);
13
11
  }
14
- var hasNonStaticUsage = Array.from(dependencyMap.values()).some(stats => stats.hasNonStaticUsage);
15
- var processed = new WeakSet();
16
- var deferredContexts = new Map();
17
- var pendingContexts = new Map([...new Set(contextConfs.map(contextConf => contextConf.name))].map(contextName => [contextName, new Promise((resolve, reject) => {
12
+ const hasNonStaticUsage = Array.from(dependencyMap.values()).some(stats => stats.hasNonStaticUsage);
13
+ const processed = new WeakSet();
14
+ const deferredContexts = new Map();
15
+ const pendingContexts = new Map([...new Set(contextConfs.map(contextConf => contextConf.name))].map(contextName => [contextName, new Promise((resolve, reject) => {
18
16
  deferredContexts.set(contextName, {
19
17
  resolve,
20
18
  reject
21
19
  });
22
20
  })]));
23
- var wrapResolve = /*#__PURE__*/function () {
24
- var _ref = _asyncToGenerator(function* (contextConf) {
25
- var _pendingDeps$get2;
26
- processed.add(contextConf);
27
- var resolved = yield resolveContext(contextConf);
28
- dependencyMap.delete(contextConf);
29
- var left = (_pendingDeps$get2 = pendingDeps.get(contextConf.name)) !== null && _pendingDeps$get2 !== void 0 ? _pendingDeps$get2 : 0;
30
- if (resolved) {
21
+ const wrapResolve = async contextConf => {
22
+ processed.add(contextConf);
23
+ const resolved = await resolveContext(contextConf);
24
+ dependencyMap.delete(contextConf);
25
+ const left = pendingDeps.get(contextConf.name) ?? 0;
26
+ if (resolved) {
27
+ // Assert: contextConf.name exists in deferredContexts
28
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
29
+ deferredContexts.get(contextConf.name).resolve();
30
+ pendingDeps.delete(contextConf.name);
31
+ if (left === 0) {
32
+ throw new Error(`Duplicated context defined: ${contextConf.name}`);
33
+ }
34
+ } else {
35
+ // Assert: left >= 1
36
+ if (left === 1) {
31
37
  // Assert: contextConf.name exists in deferredContexts
32
38
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
33
39
  deferredContexts.get(contextConf.name).resolve();
34
40
  pendingDeps.delete(contextConf.name);
35
- if (left === 0) {
36
- throw new Error("Duplicated context defined: ".concat(contextConf.name));
37
- }
38
41
  } else {
39
- // Assert: left >= 1
40
- if (left === 1) {
41
- // Assert: contextConf.name exists in deferredContexts
42
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
43
- deferredContexts.get(contextConf.name).resolve();
44
- pendingDeps.delete(contextConf.name);
45
- } else {
46
- pendingDeps.set(contextConf.name, left - 1);
47
- }
42
+ pendingDeps.set(contextConf.name, left - 1);
48
43
  }
49
- yield scheduleNext();
50
- });
51
- return function wrapResolve(_x) {
52
- return _ref.apply(this, arguments);
53
- };
54
- }();
55
- var scheduleAsSerial = hasNonStaticUsage;
56
- function scheduleNext() {
57
- return _scheduleNext.apply(this, arguments);
58
- }
59
- function _scheduleNext() {
60
- _scheduleNext = _asyncToGenerator(function* () {
61
- var readyContexts = Array.from(dependencyMap.entries()).filter(predicateNextResolveFactory(pendingDeps, scheduleAsSerial)).map(entry => entry[0]).filter(contextConf => !processed.has(contextConf));
62
- yield Promise.all(readyContexts.map(wrapResolve));
63
- });
64
- return _scheduleNext.apply(this, arguments);
44
+ }
45
+ await scheduleNext();
46
+ };
47
+ let scheduleAsSerial = hasNonStaticUsage;
48
+ async function scheduleNext() {
49
+ const readyContexts = Array.from(dependencyMap.entries()).filter(predicateNextResolveFactory(pendingDeps, scheduleAsSerial)).map(entry => entry[0]).filter(contextConf => !processed.has(contextConf));
50
+ await Promise.all(readyContexts.map(wrapResolve));
65
51
  }
66
- var pendingResult = scheduleNext().then( /*#__PURE__*/_asyncToGenerator(function* () {
52
+ const pendingResult = scheduleNext().then(async () => {
67
53
  // If there are still contexts left, it implies one of these situations:
68
54
  // - Circular contexts.
69
55
  // Such as: a depends on b, while b depends on a.
@@ -74,17 +60,17 @@ export function resolveDataStore(contextConfs, resolveContext) {
74
60
  // This will throw if circular contexts detected.
75
61
  detectCircularContexts(dependencyMap, keyword);
76
62
  scheduleAsSerial = true;
77
- yield scheduleNext();
63
+ await scheduleNext();
78
64
  }
79
65
  // There maybe ignored contexts which are still not fulfilled.
80
66
  // We treat them as RESOLVED.
81
- for (var deferred of deferredContexts.values()) {
67
+ for (const deferred of deferredContexts.values()) {
82
68
  deferred.resolve();
83
69
  }
84
- })).catch(error => {
70
+ }).catch(error => {
85
71
  // There maybe contexts left not fulfilled, when an error occurred.
86
72
  // We treat them as REJECTED.
87
- for (var deferred of deferredContexts.values()) {
73
+ for (const deferred of deferredContexts.values()) {
88
74
  deferred.reject(error);
89
75
  }
90
76
  throw error;
@@ -103,16 +89,16 @@ function predicateNextResolveFactory(pendingDeps, scheduleAsSerial) {
103
89
  ![...entry[1].usedProperties].some(dep => pendingDeps.has(dep));
104
90
  }
105
91
  export function getDependencyMapOfContext(contextConfs) {
106
- var keyword = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "CTX";
107
- var strict = arguments.length > 2 ? arguments[2] : undefined;
108
- var depsMap = new Map();
109
- for (var contextConf of contextConfs) {
110
- var data = [contextConf.if, contextConf.value, contextConf.resolve];
111
- var stats = collectMemberUsage(data, keyword);
92
+ let keyword = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "CTX";
93
+ let strict = arguments.length > 2 ? arguments[2] : undefined;
94
+ const depsMap = new Map();
95
+ for (const contextConf of contextConfs) {
96
+ const data = [contextConf.if, contextConf.value, contextConf.resolve];
97
+ const stats = collectMemberUsage(data, keyword);
112
98
  if (!strict && keyword === "STATE") {
113
- var legacyTplStats = collectMemberUsage(data, "TPL");
99
+ const legacyTplStats = collectMemberUsage(data, "TPL");
114
100
  // Merge stats with legacyTplStats
115
- for (var prop of legacyTplStats.usedProperties) {
101
+ for (const prop of legacyTplStats.usedProperties) {
116
102
  stats.usedProperties.add(prop);
117
103
  }
118
104
  if (legacyTplStats.hasNonStaticUsage) {
@@ -124,11 +110,11 @@ export function getDependencyMapOfContext(contextConfs) {
124
110
  return depsMap;
125
111
  }
126
112
  function detectCircularContexts(dependencyMap, keyword) {
127
- var duplicatedMap = new Map(dependencyMap);
128
- var pendingDeps = new Set(Array.from(duplicatedMap.keys()).map(contextConf => contextConf.name));
129
- var next = () => {
130
- var processedAtLeastOne = false;
131
- for (var [contextConf, stats] of duplicatedMap.entries()) {
113
+ const duplicatedMap = new Map(dependencyMap);
114
+ const pendingDeps = new Set(Array.from(duplicatedMap.keys()).map(contextConf => contextConf.name));
115
+ const next = () => {
116
+ let processedAtLeastOne = false;
117
+ for (const [contextConf, stats] of duplicatedMap.entries()) {
132
118
  if (![...stats.usedProperties].some(dep => pendingDeps.has(dep))) {
133
119
  duplicatedMap.delete(contextConf);
134
120
  pendingDeps.delete(contextConf.name);
@@ -141,7 +127,7 @@ function detectCircularContexts(dependencyMap, keyword) {
141
127
  };
142
128
  next();
143
129
  if (duplicatedMap.size > 0) {
144
- throw new ReferenceError("Circular ".concat(keyword, " detected: ").concat(Array.from(duplicatedMap.keys()).map(contextConf => contextConf.name).join(", ")));
130
+ throw new ReferenceError(`Circular ${keyword} detected: ${Array.from(duplicatedMap.keys()).map(contextConf => contextConf.name).join(", ")}`);
145
131
  }
146
132
  }
147
133
  //# sourceMappingURL=resolveDataStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveDataStore.js","names":["collectMemberUsage","resolveDataStore","contextConfs","resolveContext","keyword","arguments","length","undefined","strict","dependencyMap","getDependencyMapOfContext","pendingDeps","Map","contextName","Array","from","keys","map","contextConf","name","_pendingDeps$get","set","get","hasNonStaticUsage","values","some","stats","processed","WeakSet","deferredContexts","pendingContexts","Set","Promise","resolve","reject","wrapResolve","_ref","_asyncToGenerator","_pendingDeps$get2","add","resolved","delete","left","Error","concat","scheduleNext","_x","apply","scheduleAsSerial","_scheduleNext","readyContexts","entries","filter","predicateNextResolveFactory","entry","has","all","pendingResult","then","size","detectCircularContexts","deferred","catch","error","index","usedProperties","dep","depsMap","data","if","value","legacyTplStats","prop","duplicatedMap","next","processedAtLeastOne","ReferenceError","join"],"sources":["../../../../src/internal/data/resolveDataStore.ts"],"sourcesContent":["import { ContextConf } from \"@next-core/types\";\nimport { collectMemberUsage, MemberUsage } from \"@next-core/utils/storyboard\";\n\nexport interface DeferredContext {\n resolve(): void;\n reject(e: unknown): void;\n}\n\nexport function resolveDataStore(\n contextConfs: ContextConf[],\n resolveContext: (contextConf: ContextConf) => Promise<boolean>,\n keyword = \"CTX\",\n strict?: boolean\n): {\n pendingResult: Promise<void>;\n pendingContexts: Map<string, Promise<void>>;\n} {\n const dependencyMap = getDependencyMapOfContext(\n contextConfs,\n keyword,\n strict\n );\n // There maybe multiple context confs for a specific name, since there are conditional contexts.\n // This is a map of how many pending context confs for each context name.\n const pendingDeps = new Map<string, number>();\n for (const contextName of Array.from(dependencyMap.keys()).map(\n (contextConf) => contextConf.name\n )) {\n pendingDeps.set(contextName, (pendingDeps.get(contextName) ?? 0) + 1);\n }\n const hasNonStaticUsage = Array.from(dependencyMap.values()).some(\n (stats) => stats.hasNonStaticUsage\n );\n const processed = new WeakSet<ContextConf>();\n\n const deferredContexts = new Map<string, DeferredContext>();\n const pendingContexts = new Map(\n [...new Set(contextConfs.map((contextConf) => contextConf.name))].map(\n (contextName) => [\n contextName,\n new Promise<void>((resolve, reject) => {\n deferredContexts.set(contextName, { resolve, reject });\n }),\n ]\n )\n );\n\n const wrapResolve = async (contextConf: ContextConf): Promise<void> => {\n processed.add(contextConf);\n const resolved = await resolveContext(contextConf);\n dependencyMap.delete(contextConf);\n const left = pendingDeps.get(contextConf.name) ?? 0;\n if (resolved) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n if (left === 0) {\n throw new Error(`Duplicated context defined: ${contextConf.name}`);\n }\n } else {\n // Assert: left >= 1\n if (left === 1) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n } else {\n pendingDeps.set(contextConf.name, left - 1);\n }\n }\n await scheduleNext();\n };\n\n let scheduleAsSerial = hasNonStaticUsage;\n\n async function scheduleNext(): Promise<void> {\n const readyContexts = Array.from(dependencyMap.entries())\n .filter(predicateNextResolveFactory(pendingDeps, scheduleAsSerial))\n .map((entry) => entry[0])\n .filter((contextConf) => !processed.has(contextConf));\n await Promise.all(readyContexts.map(wrapResolve));\n }\n\n const pendingResult = scheduleNext()\n .then(async () => {\n // If there are still contexts left, it implies one of these situations:\n // - Circular contexts.\n // Such as: a depends on b, while b depends on a.\n // - Related contexts are all ignored.\n // Such as: a depends on b,\n // while both them are ignore by a falsy result of `if`.\n if (dependencyMap.size > 0) {\n // This will throw if circular contexts detected.\n detectCircularContexts(dependencyMap, keyword);\n scheduleAsSerial = true;\n await scheduleNext();\n }\n // There maybe ignored contexts which are still not fulfilled.\n // We treat them as RESOLVED.\n for (const deferred of deferredContexts.values()) {\n deferred.resolve();\n }\n })\n .catch((error) => {\n // There maybe contexts left not fulfilled, when an error occurred.\n // We treat them as REJECTED.\n for (const deferred of deferredContexts.values()) {\n deferred.reject(error);\n }\n throw error;\n });\n return { pendingResult, pendingContexts };\n}\n\nfunction predicateNextResolveFactory(\n pendingDeps: Map<string, number>,\n scheduleAsSerial: boolean\n): (entry: [ContextConf, MemberUsage], index: number) => boolean {\n return (entry, index) =>\n // When contexts contain computed CTX accesses, it implies a dynamic dependency map.\n // So make them process sequentially, keep the same behavior as before.\n scheduleAsSerial\n ? index === 0\n : // A context is ready when it has no pending dependencies.\n ![...entry[1].usedProperties].some((dep) => pendingDeps.has(dep));\n}\n\nexport function getDependencyMapOfContext(\n contextConfs: ContextConf[],\n keyword = \"CTX\",\n strict?: boolean\n): Map<ContextConf, MemberUsage> {\n const depsMap = new Map<ContextConf, MemberUsage>();\n for (const contextConf of contextConfs) {\n const data = [contextConf.if, contextConf.value, contextConf.resolve];\n const stats = collectMemberUsage(data, keyword);\n if (!strict && keyword === \"STATE\") {\n const legacyTplStats = collectMemberUsage(data, \"TPL\");\n // Merge stats with legacyTplStats\n for (const prop of legacyTplStats.usedProperties) {\n stats.usedProperties.add(prop);\n }\n if (legacyTplStats.hasNonStaticUsage) {\n stats.hasNonStaticUsage = true;\n }\n }\n depsMap.set(contextConf, stats);\n }\n return depsMap;\n}\n\nfunction detectCircularContexts(\n dependencyMap: Map<ContextConf, MemberUsage>,\n keyword: string\n): void {\n const duplicatedMap = new Map(dependencyMap);\n const pendingDeps = new Set<string>(\n Array.from(duplicatedMap.keys()).map((contextConf) => contextConf.name)\n );\n const next = (): void => {\n let processedAtLeastOne = false;\n for (const [contextConf, stats] of duplicatedMap.entries()) {\n if (![...stats.usedProperties].some((dep) => pendingDeps.has(dep))) {\n duplicatedMap.delete(contextConf);\n pendingDeps.delete(contextConf.name);\n processedAtLeastOne = true;\n }\n }\n if (processedAtLeastOne) {\n next();\n }\n };\n next();\n\n if (duplicatedMap.size > 0) {\n throw new ReferenceError(\n `Circular ${keyword} detected: ${Array.from(duplicatedMap.keys())\n .map((contextConf) => contextConf.name)\n .join(\", \")}`\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"resolveDataStore.js","names":["collectMemberUsage","resolveDataStore","contextConfs","resolveContext","keyword","arguments","length","undefined","strict","dependencyMap","getDependencyMapOfContext","pendingDeps","Map","contextName","Array","from","keys","map","contextConf","name","set","get","hasNonStaticUsage","values","some","stats","processed","WeakSet","deferredContexts","pendingContexts","Set","Promise","resolve","reject","wrapResolve","add","resolved","delete","left","Error","scheduleNext","scheduleAsSerial","readyContexts","entries","filter","predicateNextResolveFactory","entry","has","all","pendingResult","then","size","detectCircularContexts","deferred","catch","error","index","usedProperties","dep","depsMap","data","if","value","legacyTplStats","prop","duplicatedMap","next","processedAtLeastOne","ReferenceError","join"],"sources":["../../../../src/internal/data/resolveDataStore.ts"],"sourcesContent":["import { ContextConf } from \"@next-core/types\";\nimport { collectMemberUsage, MemberUsage } from \"@next-core/utils/storyboard\";\n\nexport interface DeferredContext {\n resolve(): void;\n reject(e: unknown): void;\n}\n\nexport function resolveDataStore(\n contextConfs: ContextConf[],\n resolveContext: (contextConf: ContextConf) => Promise<boolean>,\n keyword = \"CTX\",\n strict?: boolean\n): {\n pendingResult: Promise<void>;\n pendingContexts: Map<string, Promise<void>>;\n} {\n const dependencyMap = getDependencyMapOfContext(\n contextConfs,\n keyword,\n strict\n );\n // There maybe multiple context confs for a specific name, since there are conditional contexts.\n // This is a map of how many pending context confs for each context name.\n const pendingDeps = new Map<string, number>();\n for (const contextName of Array.from(dependencyMap.keys()).map(\n (contextConf) => contextConf.name\n )) {\n pendingDeps.set(contextName, (pendingDeps.get(contextName) ?? 0) + 1);\n }\n const hasNonStaticUsage = Array.from(dependencyMap.values()).some(\n (stats) => stats.hasNonStaticUsage\n );\n const processed = new WeakSet<ContextConf>();\n\n const deferredContexts = new Map<string, DeferredContext>();\n const pendingContexts = new Map(\n [...new Set(contextConfs.map((contextConf) => contextConf.name))].map(\n (contextName) => [\n contextName,\n new Promise<void>((resolve, reject) => {\n deferredContexts.set(contextName, { resolve, reject });\n }),\n ]\n )\n );\n\n const wrapResolve = async (contextConf: ContextConf): Promise<void> => {\n processed.add(contextConf);\n const resolved = await resolveContext(contextConf);\n dependencyMap.delete(contextConf);\n const left = pendingDeps.get(contextConf.name) ?? 0;\n if (resolved) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n if (left === 0) {\n throw new Error(`Duplicated context defined: ${contextConf.name}`);\n }\n } else {\n // Assert: left >= 1\n if (left === 1) {\n // Assert: contextConf.name exists in deferredContexts\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n deferredContexts.get(contextConf.name)!.resolve();\n pendingDeps.delete(contextConf.name);\n } else {\n pendingDeps.set(contextConf.name, left - 1);\n }\n }\n await scheduleNext();\n };\n\n let scheduleAsSerial = hasNonStaticUsage;\n\n async function scheduleNext(): Promise<void> {\n const readyContexts = Array.from(dependencyMap.entries())\n .filter(predicateNextResolveFactory(pendingDeps, scheduleAsSerial))\n .map((entry) => entry[0])\n .filter((contextConf) => !processed.has(contextConf));\n await Promise.all(readyContexts.map(wrapResolve));\n }\n\n const pendingResult = scheduleNext()\n .then(async () => {\n // If there are still contexts left, it implies one of these situations:\n // - Circular contexts.\n // Such as: a depends on b, while b depends on a.\n // - Related contexts are all ignored.\n // Such as: a depends on b,\n // while both them are ignore by a falsy result of `if`.\n if (dependencyMap.size > 0) {\n // This will throw if circular contexts detected.\n detectCircularContexts(dependencyMap, keyword);\n scheduleAsSerial = true;\n await scheduleNext();\n }\n // There maybe ignored contexts which are still not fulfilled.\n // We treat them as RESOLVED.\n for (const deferred of deferredContexts.values()) {\n deferred.resolve();\n }\n })\n .catch((error) => {\n // There maybe contexts left not fulfilled, when an error occurred.\n // We treat them as REJECTED.\n for (const deferred of deferredContexts.values()) {\n deferred.reject(error);\n }\n throw error;\n });\n return { pendingResult, pendingContexts };\n}\n\nfunction predicateNextResolveFactory(\n pendingDeps: Map<string, number>,\n scheduleAsSerial: boolean\n): (entry: [ContextConf, MemberUsage], index: number) => boolean {\n return (entry, index) =>\n // When contexts contain computed CTX accesses, it implies a dynamic dependency map.\n // So make them process sequentially, keep the same behavior as before.\n scheduleAsSerial\n ? index === 0\n : // A context is ready when it has no pending dependencies.\n ![...entry[1].usedProperties].some((dep) => pendingDeps.has(dep));\n}\n\nexport function getDependencyMapOfContext(\n contextConfs: ContextConf[],\n keyword = \"CTX\",\n strict?: boolean\n): Map<ContextConf, MemberUsage> {\n const depsMap = new Map<ContextConf, MemberUsage>();\n for (const contextConf of contextConfs) {\n const data = [contextConf.if, contextConf.value, contextConf.resolve];\n const stats = collectMemberUsage(data, keyword);\n if (!strict && keyword === \"STATE\") {\n const legacyTplStats = collectMemberUsage(data, \"TPL\");\n // Merge stats with legacyTplStats\n for (const prop of legacyTplStats.usedProperties) {\n stats.usedProperties.add(prop);\n }\n if (legacyTplStats.hasNonStaticUsage) {\n stats.hasNonStaticUsage = true;\n }\n }\n depsMap.set(contextConf, stats);\n }\n return depsMap;\n}\n\nfunction detectCircularContexts(\n dependencyMap: Map<ContextConf, MemberUsage>,\n keyword: string\n): void {\n const duplicatedMap = new Map(dependencyMap);\n const pendingDeps = new Set<string>(\n Array.from(duplicatedMap.keys()).map((contextConf) => contextConf.name)\n );\n const next = (): void => {\n let processedAtLeastOne = false;\n for (const [contextConf, stats] of duplicatedMap.entries()) {\n if (![...stats.usedProperties].some((dep) => pendingDeps.has(dep))) {\n duplicatedMap.delete(contextConf);\n pendingDeps.delete(contextConf.name);\n processedAtLeastOne = true;\n }\n }\n if (processedAtLeastOne) {\n next();\n }\n };\n next();\n\n if (duplicatedMap.size > 0) {\n throw new ReferenceError(\n `Circular ${keyword} detected: ${Array.from(duplicatedMap.keys())\n .map((contextConf) => contextConf.name)\n .join(\", \")}`\n );\n }\n}\n"],"mappings":"AACA,SAASA,kBAAkB,QAAqB,6BAA6B;AAO7E,OAAO,SAASC,gBAAgBA,CAC9BC,YAA2B,EAC3BC,cAA8D,EAM9D;EAAA,IALAC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IACfG,MAAgB,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAKhB,MAAME,aAAa,GAAGC,yBAAyB,CAC7CR,YAAY,EACZE,OAAO,EACPI,MACF,CAAC;EACD;EACA;EACA,MAAMG,WAAW,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAC7C,KAAK,MAAMC,WAAW,IAAIC,KAAK,CAACC,IAAI,CAACN,aAAa,CAACO,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG,CAC3DC,WAAW,IAAKA,WAAW,CAACC,IAC/B,CAAC,EAAE;IACDR,WAAW,CAACS,GAAG,CAACP,WAAW,EAAE,CAACF,WAAW,CAACU,GAAG,CAACR,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvE;EACA,MAAMS,iBAAiB,GAAGR,KAAK,CAACC,IAAI,CAACN,aAAa,CAACc,MAAM,CAAC,CAAC,CAAC,CAACC,IAAI,CAC9DC,KAAK,IAAKA,KAAK,CAACH,iBACnB,CAAC;EACD,MAAMI,SAAS,GAAG,IAAIC,OAAO,CAAc,CAAC;EAE5C,MAAMC,gBAAgB,GAAG,IAAIhB,GAAG,CAA0B,CAAC;EAC3D,MAAMiB,eAAe,GAAG,IAAIjB,GAAG,CAC7B,CAAC,GAAG,IAAIkB,GAAG,CAAC5B,YAAY,CAACe,GAAG,CAAEC,WAAW,IAAKA,WAAW,CAACC,IAAI,CAAC,CAAC,CAAC,CAACF,GAAG,CAClEJ,WAAW,IAAK,CACfA,WAAW,EACX,IAAIkB,OAAO,CAAO,CAACC,OAAO,EAAEC,MAAM,KAAK;IACrCL,gBAAgB,CAACR,GAAG,CAACP,WAAW,EAAE;MAAEmB,OAAO;MAAEC;IAAO,CAAC,CAAC;EACxD,CAAC,CAAC,CAEN,CACF,CAAC;EAED,MAAMC,WAAW,GAAG,MAAOhB,WAAwB,IAAoB;IACrEQ,SAAS,CAACS,GAAG,CAACjB,WAAW,CAAC;IAC1B,MAAMkB,QAAQ,GAAG,MAAMjC,cAAc,CAACe,WAAW,CAAC;IAClDT,aAAa,CAAC4B,MAAM,CAACnB,WAAW,CAAC;IACjC,MAAMoB,IAAI,GAAG3B,WAAW,CAACU,GAAG,CAACH,WAAW,CAACC,IAAI,CAAC,IAAI,CAAC;IACnD,IAAIiB,QAAQ,EAAE;MACZ;MACA;MACAR,gBAAgB,CAACP,GAAG,CAACH,WAAW,CAACC,IAAI,CAAC,CAAEa,OAAO,CAAC,CAAC;MACjDrB,WAAW,CAAC0B,MAAM,CAACnB,WAAW,CAACC,IAAI,CAAC;MACpC,IAAImB,IAAI,KAAK,CAAC,EAAE;QACd,MAAM,IAAIC,KAAK,CAAC,+BAA+BrB,WAAW,CAACC,IAAI,EAAE,CAAC;MACpE;IACF,CAAC,MAAM;MACL;MACA,IAAImB,IAAI,KAAK,CAAC,EAAE;QACd;QACA;QACAV,gBAAgB,CAACP,GAAG,CAACH,WAAW,CAACC,IAAI,CAAC,CAAEa,OAAO,CAAC,CAAC;QACjDrB,WAAW,CAAC0B,MAAM,CAACnB,WAAW,CAACC,IAAI,CAAC;MACtC,CAAC,MAAM;QACLR,WAAW,CAACS,GAAG,CAACF,WAAW,CAACC,IAAI,EAAEmB,IAAI,GAAG,CAAC,CAAC;MAC7C;IACF;IACA,MAAME,YAAY,CAAC,CAAC;EACtB,CAAC;EAED,IAAIC,gBAAgB,GAAGnB,iBAAiB;EAExC,eAAekB,YAAYA,CAAA,EAAkB;IAC3C,MAAME,aAAa,GAAG5B,KAAK,CAACC,IAAI,CAACN,aAAa,CAACkC,OAAO,CAAC,CAAC,CAAC,CACtDC,MAAM,CAACC,2BAA2B,CAAClC,WAAW,EAAE8B,gBAAgB,CAAC,CAAC,CAClExB,GAAG,CAAE6B,KAAK,IAAKA,KAAK,CAAC,CAAC,CAAC,CAAC,CACxBF,MAAM,CAAE1B,WAAW,IAAK,CAACQ,SAAS,CAACqB,GAAG,CAAC7B,WAAW,CAAC,CAAC;IACvD,MAAMa,OAAO,CAACiB,GAAG,CAACN,aAAa,CAACzB,GAAG,CAACiB,WAAW,CAAC,CAAC;EACnD;EAEA,MAAMe,aAAa,GAAGT,YAAY,CAAC,CAAC,CACjCU,IAAI,CAAC,YAAY;IAChB;IACA;IACA;IACA;IACA;IACA;IACA,IAAIzC,aAAa,CAAC0C,IAAI,GAAG,CAAC,EAAE;MAC1B;MACAC,sBAAsB,CAAC3C,aAAa,EAAEL,OAAO,CAAC;MAC9CqC,gBAAgB,GAAG,IAAI;MACvB,MAAMD,YAAY,CAAC,CAAC;IACtB;IACA;IACA;IACA,KAAK,MAAMa,QAAQ,IAAIzB,gBAAgB,CAACL,MAAM,CAAC,CAAC,EAAE;MAChD8B,QAAQ,CAACrB,OAAO,CAAC,CAAC;IACpB;EACF,CAAC,CAAC,CACDsB,KAAK,CAAEC,KAAK,IAAK;IAChB;IACA;IACA,KAAK,MAAMF,QAAQ,IAAIzB,gBAAgB,CAACL,MAAM,CAAC,CAAC,EAAE;MAChD8B,QAAQ,CAACpB,MAAM,CAACsB,KAAK,CAAC;IACxB;IACA,MAAMA,KAAK;EACb,CAAC,CAAC;EACJ,OAAO;IAAEN,aAAa;IAAEpB;EAAgB,CAAC;AAC3C;AAEA,SAASgB,2BAA2BA,CAClClC,WAAgC,EAChC8B,gBAAyB,EACsC;EAC/D,OAAO,CAACK,KAAK,EAAEU,KAAK;EAClB;EACA;EACAf,gBAAgB,GACZe,KAAK,KAAK,CAAC;EACX;EACA,CAAC,CAAC,GAAGV,KAAK,CAAC,CAAC,CAAC,CAACW,cAAc,CAAC,CAACjC,IAAI,CAAEkC,GAAG,IAAK/C,WAAW,CAACoC,GAAG,CAACW,GAAG,CAAC,CAAC;AACzE;AAEA,OAAO,SAAShD,yBAAyBA,CACvCR,YAA2B,EAGI;EAAA,IAF/BE,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAAA,IACfG,MAAgB,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAEhB,MAAMoD,OAAO,GAAG,IAAI/C,GAAG,CAA2B,CAAC;EACnD,KAAK,MAAMM,WAAW,IAAIhB,YAAY,EAAE;IACtC,MAAM0D,IAAI,GAAG,CAAC1C,WAAW,CAAC2C,EAAE,EAAE3C,WAAW,CAAC4C,KAAK,EAAE5C,WAAW,CAACc,OAAO,CAAC;IACrE,MAAMP,KAAK,GAAGzB,kBAAkB,CAAC4D,IAAI,EAAExD,OAAO,CAAC;IAC/C,IAAI,CAACI,MAAM,IAAIJ,OAAO,KAAK,OAAO,EAAE;MAClC,MAAM2D,cAAc,GAAG/D,kBAAkB,CAAC4D,IAAI,EAAE,KAAK,CAAC;MACtD;MACA,KAAK,MAAMI,IAAI,IAAID,cAAc,CAACN,cAAc,EAAE;QAChDhC,KAAK,CAACgC,cAAc,CAACtB,GAAG,CAAC6B,IAAI,CAAC;MAChC;MACA,IAAID,cAAc,CAACzC,iBAAiB,EAAE;QACpCG,KAAK,CAACH,iBAAiB,GAAG,IAAI;MAChC;IACF;IACAqC,OAAO,CAACvC,GAAG,CAACF,WAAW,EAAEO,KAAK,CAAC;EACjC;EACA,OAAOkC,OAAO;AAChB;AAEA,SAASP,sBAAsBA,CAC7B3C,aAA4C,EAC5CL,OAAe,EACT;EACN,MAAM6D,aAAa,GAAG,IAAIrD,GAAG,CAACH,aAAa,CAAC;EAC5C,MAAME,WAAW,GAAG,IAAImB,GAAG,CACzBhB,KAAK,CAACC,IAAI,CAACkD,aAAa,CAACjD,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG,CAAEC,WAAW,IAAKA,WAAW,CAACC,IAAI,CACxE,CAAC;EACD,MAAM+C,IAAI,GAAGA,CAAA,KAAY;IACvB,IAAIC,mBAAmB,GAAG,KAAK;IAC/B,KAAK,MAAM,CAACjD,WAAW,EAAEO,KAAK,CAAC,IAAIwC,aAAa,CAACtB,OAAO,CAAC,CAAC,EAAE;MAC1D,IAAI,CAAC,CAAC,GAAGlB,KAAK,CAACgC,cAAc,CAAC,CAACjC,IAAI,CAAEkC,GAAG,IAAK/C,WAAW,CAACoC,GAAG,CAACW,GAAG,CAAC,CAAC,EAAE;QAClEO,aAAa,CAAC5B,MAAM,CAACnB,WAAW,CAAC;QACjCP,WAAW,CAAC0B,MAAM,CAACnB,WAAW,CAACC,IAAI,CAAC;QACpCgD,mBAAmB,GAAG,IAAI;MAC5B;IACF;IACA,IAAIA,mBAAmB,EAAE;MACvBD,IAAI,CAAC,CAAC;IACR;EACF,CAAC;EACDA,IAAI,CAAC,CAAC;EAEN,IAAID,aAAa,CAACd,IAAI,GAAG,CAAC,EAAE;IAC1B,MAAM,IAAIiB,cAAc,CACtB,YAAYhE,OAAO,cAAcU,KAAK,CAACC,IAAI,CAACkD,aAAa,CAACjD,IAAI,CAAC,CAAC,CAAC,CAC9DC,GAAG,CAAEC,WAAW,IAAKA,WAAW,CAACC,IAAI,CAAC,CACtCkD,IAAI,CAAC,IAAI,CAAC,EACf,CAAC;EACH;AACF","ignoreList":[]}
@@ -1,15 +1,15 @@
1
- export var MESSAGE_SOURCE_PANEL = "brick-next-devtools-panel";
2
- export var FRAME_ACTIVE_CHANGE = "devtools-frame-active-change";
3
- export var PANEL_CHANGE = "devtools-panel-change";
4
- var frameIsActive = true;
5
- var selectedPanel;
1
+ export const MESSAGE_SOURCE_PANEL = "brick-next-devtools-panel";
2
+ export const FRAME_ACTIVE_CHANGE = "devtools-frame-active-change";
3
+ export const PANEL_CHANGE = "devtools-panel-change";
4
+ let frameIsActive = true;
5
+ let selectedPanel;
6
6
  export function devtoolsHookEmit(type, payload) {
7
- var devtools = getDevHook();
7
+ const devtools = getDevHook();
8
8
  if (!devtools || type === "evaluation" && !(frameIsActive && (!selectedPanel || selectedPanel === "Evaluations"))) {
9
9
  // Ignore messages if current devtools panel is not relevant.
10
10
  return;
11
11
  }
12
- var emit = () => {
12
+ const emit = () => {
13
13
  var _devtools$emit;
14
14
  (_devtools$emit = devtools.emit) === null || _devtools$emit === void 0 || _devtools$emit.call(devtools, {
15
15
  type,
@@ -27,13 +27,13 @@ export function devtoolsHookEmit(type, payload) {
27
27
  }
28
28
  export function listenDevtoolsEagerly() {
29
29
  window.addEventListener("message", _ref => {
30
- var {
30
+ let {
31
31
  data
32
32
  } = _ref;
33
33
  if ((data === null || data === void 0 ? void 0 : data.source) !== MESSAGE_SOURCE_PANEL) {
34
34
  return;
35
35
  }
36
- var payload = data.payload;
36
+ const payload = data.payload;
37
37
  switch (payload === null || payload === void 0 ? void 0 : payload.type) {
38
38
  case FRAME_ACTIVE_CHANGE:
39
39
  {
@@ -1 +1 @@
1
- {"version":3,"file":"devtools.js","names":["MESSAGE_SOURCE_PANEL","FRAME_ACTIVE_CHANGE","PANEL_CHANGE","frameIsActive","selectedPanel","devtoolsHookEmit","type","payload","devtools","getDevHook","emit","_devtools$emit","call","window","requestIdleCallback","setTimeout","listenDevtoolsEagerly","addEventListener","_ref","data","source","active","panel","__BRICK_NEXT_DEVTOOLS_HOOK__"],"sources":["../../../src/internal/devtools.ts"],"sourcesContent":["export const MESSAGE_SOURCE_PANEL = \"brick-next-devtools-panel\";\nexport const FRAME_ACTIVE_CHANGE = \"devtools-frame-active-change\";\nexport const PANEL_CHANGE = \"devtools-panel-change\";\n\ninterface DevtoolsHookContainer {\n __BRICK_NEXT_DEVTOOLS_HOOK__?: DevtoolsHook;\n}\n\ninterface DevtoolsHook {\n emit: (message: unknown) => void;\n}\n\ntype DevtoolsMessagePayload = FrameActiveChangePayload | PanelChangePayload;\n\ninterface FrameActiveChangePayload {\n type: typeof FRAME_ACTIVE_CHANGE;\n active: boolean;\n panel: PanelType;\n}\n\ntype PanelType = \"Bricks\" | \"Evaluations\" | \"Transformations\";\n\ninterface PanelChangePayload {\n type: typeof PANEL_CHANGE;\n panel: PanelType;\n}\n\nlet frameIsActive = true;\nlet selectedPanel: PanelType;\n\nexport function devtoolsHookEmit(type: string, payload?: unknown): void {\n const devtools = getDevHook();\n if (\n !devtools ||\n (type === \"evaluation\" &&\n !(frameIsActive && (!selectedPanel || selectedPanel === \"Evaluations\")))\n ) {\n // Ignore messages if current devtools panel is not relevant.\n return;\n }\n\n const emit = (): void => {\n devtools.emit?.({\n type,\n payload,\n });\n };\n\n // Try to emit only in idle time.\n // istanbul ignore next\n if (typeof window.requestIdleCallback === \"function\") {\n window.requestIdleCallback(emit);\n } else {\n setTimeout(emit, 0);\n }\n}\n\nexport function listenDevtoolsEagerly(): void {\n window.addEventListener(\"message\", ({ data }: MessageEvent): void => {\n if (data?.source !== MESSAGE_SOURCE_PANEL) {\n return;\n }\n const payload: DevtoolsMessagePayload = data.payload;\n switch (payload?.type) {\n case FRAME_ACTIVE_CHANGE: {\n frameIsActive = payload.active;\n break;\n }\n case PANEL_CHANGE: {\n selectedPanel = payload.panel;\n break;\n }\n }\n });\n}\n\nexport function getDevHook(): DevtoolsHook | undefined {\n return (window as DevtoolsHookContainer).__BRICK_NEXT_DEVTOOLS_HOOK__;\n}\n"],"mappings":"AAAA,OAAO,IAAMA,oBAAoB,GAAG,2BAA2B;AAC/D,OAAO,IAAMC,mBAAmB,GAAG,8BAA8B;AACjE,OAAO,IAAMC,YAAY,GAAG,uBAAuB;AAyBnD,IAAIC,aAAa,GAAG,IAAI;AACxB,IAAIC,aAAwB;AAE5B,OAAO,SAASC,gBAAgBA,CAACC,IAAY,EAAEC,OAAiB,EAAQ;EACtE,IAAMC,QAAQ,GAAGC,UAAU,CAAC,CAAC;EAC7B,IACE,CAACD,QAAQ,IACRF,IAAI,KAAK,YAAY,IACpB,EAAEH,aAAa,KAAK,CAACC,aAAa,IAAIA,aAAa,KAAK,aAAa,CAAC,CAAE,EAC1E;IACA;IACA;EACF;EAEA,IAAMM,IAAI,GAAGA,CAAA,KAAY;IAAA,IAAAC,cAAA;IACvB,CAAAA,cAAA,GAAAH,QAAQ,CAACE,IAAI,cAAAC,cAAA,eAAbA,cAAA,CAAAC,IAAA,CAAAJ,QAAQ,EAAQ;MACdF,IAAI;MACJC;IACF,CAAC,CAAC;EACJ,CAAC;;EAED;EACA;EACA,IAAI,OAAOM,MAAM,CAACC,mBAAmB,KAAK,UAAU,EAAE;IACpDD,MAAM,CAACC,mBAAmB,CAACJ,IAAI,CAAC;EAClC,CAAC,MAAM;IACLK,UAAU,CAACL,IAAI,EAAE,CAAC,CAAC;EACrB;AACF;AAEA,OAAO,SAASM,qBAAqBA,CAAA,EAAS;EAC5CH,MAAM,CAACI,gBAAgB,CAAC,SAAS,EAAEC,IAAA,IAAkC;IAAA,IAAjC;MAAEC;IAAmB,CAAC,GAAAD,IAAA;IACxD,IAAI,CAAAC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,MAAM,MAAKpB,oBAAoB,EAAE;MACzC;IACF;IACA,IAAMO,OAA+B,GAAGY,IAAI,CAACZ,OAAO;IACpD,QAAQA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAED,IAAI;MACnB,KAAKL,mBAAmB;QAAE;UACxBE,aAAa,GAAGI,OAAO,CAACc,MAAM;UAC9B;QACF;MACA,KAAKnB,YAAY;QAAE;UACjBE,aAAa,GAAGG,OAAO,CAACe,KAAK;UAC7B;QACF;IACF;EACF,CAAC,CAAC;AACJ;AAEA,OAAO,SAASb,UAAUA,CAAA,EAA6B;EACrD,OAAQI,MAAM,CAA2BU,4BAA4B;AACvE","ignoreList":[]}
1
+ {"version":3,"file":"devtools.js","names":["MESSAGE_SOURCE_PANEL","FRAME_ACTIVE_CHANGE","PANEL_CHANGE","frameIsActive","selectedPanel","devtoolsHookEmit","type","payload","devtools","getDevHook","emit","_devtools$emit","call","window","requestIdleCallback","setTimeout","listenDevtoolsEagerly","addEventListener","_ref","data","source","active","panel","__BRICK_NEXT_DEVTOOLS_HOOK__"],"sources":["../../../src/internal/devtools.ts"],"sourcesContent":["export const MESSAGE_SOURCE_PANEL = \"brick-next-devtools-panel\";\nexport const FRAME_ACTIVE_CHANGE = \"devtools-frame-active-change\";\nexport const PANEL_CHANGE = \"devtools-panel-change\";\n\ninterface DevtoolsHookContainer {\n __BRICK_NEXT_DEVTOOLS_HOOK__?: DevtoolsHook;\n}\n\ninterface DevtoolsHook {\n emit: (message: unknown) => void;\n}\n\ntype DevtoolsMessagePayload = FrameActiveChangePayload | PanelChangePayload;\n\ninterface FrameActiveChangePayload {\n type: typeof FRAME_ACTIVE_CHANGE;\n active: boolean;\n panel: PanelType;\n}\n\ntype PanelType = \"Bricks\" | \"Evaluations\" | \"Transformations\";\n\ninterface PanelChangePayload {\n type: typeof PANEL_CHANGE;\n panel: PanelType;\n}\n\nlet frameIsActive = true;\nlet selectedPanel: PanelType;\n\nexport function devtoolsHookEmit(type: string, payload?: unknown): void {\n const devtools = getDevHook();\n if (\n !devtools ||\n (type === \"evaluation\" &&\n !(frameIsActive && (!selectedPanel || selectedPanel === \"Evaluations\")))\n ) {\n // Ignore messages if current devtools panel is not relevant.\n return;\n }\n\n const emit = (): void => {\n devtools.emit?.({\n type,\n payload,\n });\n };\n\n // Try to emit only in idle time.\n // istanbul ignore next\n if (typeof window.requestIdleCallback === \"function\") {\n window.requestIdleCallback(emit);\n } else {\n setTimeout(emit, 0);\n }\n}\n\nexport function listenDevtoolsEagerly(): void {\n window.addEventListener(\"message\", ({ data }: MessageEvent): void => {\n if (data?.source !== MESSAGE_SOURCE_PANEL) {\n return;\n }\n const payload: DevtoolsMessagePayload = data.payload;\n switch (payload?.type) {\n case FRAME_ACTIVE_CHANGE: {\n frameIsActive = payload.active;\n break;\n }\n case PANEL_CHANGE: {\n selectedPanel = payload.panel;\n break;\n }\n }\n });\n}\n\nexport function getDevHook(): DevtoolsHook | undefined {\n return (window as DevtoolsHookContainer).__BRICK_NEXT_DEVTOOLS_HOOK__;\n}\n"],"mappings":"AAAA,OAAO,MAAMA,oBAAoB,GAAG,2BAA2B;AAC/D,OAAO,MAAMC,mBAAmB,GAAG,8BAA8B;AACjE,OAAO,MAAMC,YAAY,GAAG,uBAAuB;AAyBnD,IAAIC,aAAa,GAAG,IAAI;AACxB,IAAIC,aAAwB;AAE5B,OAAO,SAASC,gBAAgBA,CAACC,IAAY,EAAEC,OAAiB,EAAQ;EACtE,MAAMC,QAAQ,GAAGC,UAAU,CAAC,CAAC;EAC7B,IACE,CAACD,QAAQ,IACRF,IAAI,KAAK,YAAY,IACpB,EAAEH,aAAa,KAAK,CAACC,aAAa,IAAIA,aAAa,KAAK,aAAa,CAAC,CAAE,EAC1E;IACA;IACA;EACF;EAEA,MAAMM,IAAI,GAAGA,CAAA,KAAY;IAAA,IAAAC,cAAA;IACvB,CAAAA,cAAA,GAAAH,QAAQ,CAACE,IAAI,cAAAC,cAAA,eAAbA,cAAA,CAAAC,IAAA,CAAAJ,QAAQ,EAAQ;MACdF,IAAI;MACJC;IACF,CAAC,CAAC;EACJ,CAAC;;EAED;EACA;EACA,IAAI,OAAOM,MAAM,CAACC,mBAAmB,KAAK,UAAU,EAAE;IACpDD,MAAM,CAACC,mBAAmB,CAACJ,IAAI,CAAC;EAClC,CAAC,MAAM;IACLK,UAAU,CAACL,IAAI,EAAE,CAAC,CAAC;EACrB;AACF;AAEA,OAAO,SAASM,qBAAqBA,CAAA,EAAS;EAC5CH,MAAM,CAACI,gBAAgB,CAAC,SAAS,EAAEC,IAAA,IAAkC;IAAA,IAAjC;MAAEC;IAAmB,CAAC,GAAAD,IAAA;IACxD,IAAI,CAAAC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,MAAM,MAAKpB,oBAAoB,EAAE;MACzC;IACF;IACA,MAAMO,OAA+B,GAAGY,IAAI,CAACZ,OAAO;IACpD,QAAQA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAED,IAAI;MACnB,KAAKL,mBAAmB;QAAE;UACxBE,aAAa,GAAGI,OAAO,CAACc,MAAM;UAC9B;QACF;MACA,KAAKnB,YAAY;QAAE;UACjBE,aAAa,GAAGG,OAAO,CAACe,KAAK;UAC7B;QACF;IACF;EACF,CAAC,CAAC;AACJ;AAEA,OAAO,SAASb,UAAUA,CAAA,EAA6B;EACrD,OAAQI,MAAM,CAA2BU,4BAA4B;AACvE","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- export var RenderTag = /*#__PURE__*/function (RenderTag) {
1
+ export let RenderTag = /*#__PURE__*/function (RenderTag) {
2
2
  RenderTag[RenderTag["ROOT"] = 1] = "ROOT";
3
3
  RenderTag[RenderTag["BRICK"] = 2] = "BRICK";
4
4
  RenderTag[RenderTag["PLACEHOLDER"] = 3] = "PLACEHOLDER";
@@ -1,34 +1,21 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
1
  import { hooks } from "./Runtime.js";
3
2
  import { registerAppI18n } from "./registerAppI18n.js";
4
- export function fulfilStoryboard(_x) {
5
- return _fulfilStoryboard.apply(this, arguments);
3
+ export async function fulfilStoryboard(storyboard) {
4
+ if (storyboard.$$fulfilled) {
5
+ return;
6
+ }
7
+ if (!storyboard.$$fulfilling) {
8
+ storyboard.$$fulfilling = doFulfilStoryboard(storyboard);
9
+ }
10
+ return storyboard.$$fulfilling;
6
11
  }
7
- function _fulfilStoryboard() {
8
- _fulfilStoryboard = _asyncToGenerator(function* (storyboard) {
9
- if (storyboard.$$fulfilled) {
10
- return;
11
- }
12
- if (!storyboard.$$fulfilling) {
13
- storyboard.$$fulfilling = doFulfilStoryboard(storyboard);
14
- }
15
- return storyboard.$$fulfilling;
12
+ async function doFulfilStoryboard(storyboard) {
13
+ var _hooks$fulfilStoryboa;
14
+ await (hooks === null || hooks === void 0 || (_hooks$fulfilStoryboa = hooks.fulfilStoryboard) === null || _hooks$fulfilStoryboa === void 0 ? void 0 : _hooks$fulfilStoryboa.call(hooks, storyboard));
15
+ registerAppI18n(storyboard);
16
+ Object.assign(storyboard, {
17
+ $$fulfilled: true,
18
+ $$fulfilling: null
16
19
  });
17
- return _fulfilStoryboard.apply(this, arguments);
18
- }
19
- function doFulfilStoryboard(_x2) {
20
- return _doFulfilStoryboard.apply(this, arguments);
21
- }
22
- function _doFulfilStoryboard() {
23
- _doFulfilStoryboard = _asyncToGenerator(function* (storyboard) {
24
- var _hooks$fulfilStoryboa;
25
- yield hooks === null || hooks === void 0 || (_hooks$fulfilStoryboa = hooks.fulfilStoryboard) === null || _hooks$fulfilStoryboa === void 0 ? void 0 : _hooks$fulfilStoryboa.call(hooks, storyboard);
26
- registerAppI18n(storyboard);
27
- Object.assign(storyboard, {
28
- $$fulfilled: true,
29
- $$fulfilling: null
30
- });
31
- });
32
- return _doFulfilStoryboard.apply(this, arguments);
33
20
  }
34
21
  //# sourceMappingURL=fulfilStoryboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fulfilStoryboard.js","names":["hooks","registerAppI18n","fulfilStoryboard","_x","_fulfilStoryboard","apply","arguments","_asyncToGenerator","storyboard","$$fulfilled","$$fulfilling","doFulfilStoryboard","_x2","_doFulfilStoryboard","_hooks$fulfilStoryboa","call","Object","assign"],"sources":["../../../src/internal/fulfilStoryboard.ts"],"sourcesContent":["import type { RuntimeStoryboard } from \"@next-core/types\";\nimport { hooks } from \"./Runtime.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\n\nexport async function fulfilStoryboard(storyboard: RuntimeStoryboard) {\n if (storyboard.$$fulfilled) {\n return;\n }\n if (!storyboard.$$fulfilling) {\n storyboard.$$fulfilling = doFulfilStoryboard(storyboard);\n }\n return storyboard.$$fulfilling;\n}\n\nasync function doFulfilStoryboard(storyboard: RuntimeStoryboard) {\n await hooks?.fulfilStoryboard?.(storyboard);\n registerAppI18n(storyboard);\n Object.assign(storyboard, {\n $$fulfilled: true,\n $$fulfilling: null,\n });\n}\n"],"mappings":";AACA,SAASA,KAAK,QAAQ,cAAc;AACpC,SAASC,eAAe,QAAQ,sBAAsB;AAEtD,gBAAsBC,gBAAgBA,CAAAC,EAAA;EAAA,OAAAC,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAQrC,SAAAF,kBAAA;EAAAA,iBAAA,GAAAG,iBAAA,CARM,WAAgCC,UAA6B,EAAE;IACpE,IAAIA,UAAU,CAACC,WAAW,EAAE;MAC1B;IACF;IACA,IAAI,CAACD,UAAU,CAACE,YAAY,EAAE;MAC5BF,UAAU,CAACE,YAAY,GAAGC,kBAAkB,CAACH,UAAU,CAAC;IAC1D;IACA,OAAOA,UAAU,CAACE,YAAY;EAChC,CAAC;EAAA,OAAAN,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEcK,kBAAkBA,CAAAC,GAAA;EAAA,OAAAC,mBAAA,CAAAR,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAO,oBAAA;EAAAA,mBAAA,GAAAN,iBAAA,CAAjC,WAAkCC,UAA6B,EAAE;IAAA,IAAAM,qBAAA;IAC/D,MAAMd,KAAK,aAALA,KAAK,gBAAAc,qBAAA,GAALd,KAAK,CAAEE,gBAAgB,cAAAY,qBAAA,uBAAvBA,qBAAA,CAAAC,IAAA,CAAAf,KAAK,EAAqBQ,UAAU,CAAC;IAC3CP,eAAe,CAACO,UAAU,CAAC;IAC3BQ,MAAM,CAACC,MAAM,CAACT,UAAU,EAAE;MACxBC,WAAW,EAAE,IAAI;MACjBC,YAAY,EAAE;IAChB,CAAC,CAAC;EACJ,CAAC;EAAA,OAAAG,mBAAA,CAAAR,KAAA,OAAAC,SAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"fulfilStoryboard.js","names":["hooks","registerAppI18n","fulfilStoryboard","storyboard","$$fulfilled","$$fulfilling","doFulfilStoryboard","_hooks$fulfilStoryboa","call","Object","assign"],"sources":["../../../src/internal/fulfilStoryboard.ts"],"sourcesContent":["import type { RuntimeStoryboard } from \"@next-core/types\";\nimport { hooks } from \"./Runtime.js\";\nimport { registerAppI18n } from \"./registerAppI18n.js\";\n\nexport async function fulfilStoryboard(storyboard: RuntimeStoryboard) {\n if (storyboard.$$fulfilled) {\n return;\n }\n if (!storyboard.$$fulfilling) {\n storyboard.$$fulfilling = doFulfilStoryboard(storyboard);\n }\n return storyboard.$$fulfilling;\n}\n\nasync function doFulfilStoryboard(storyboard: RuntimeStoryboard) {\n await hooks?.fulfilStoryboard?.(storyboard);\n registerAppI18n(storyboard);\n Object.assign(storyboard, {\n $$fulfilled: true,\n $$fulfilling: null,\n });\n}\n"],"mappings":"AACA,SAASA,KAAK,QAAQ,cAAc;AACpC,SAASC,eAAe,QAAQ,sBAAsB;AAEtD,OAAO,eAAeC,gBAAgBA,CAACC,UAA6B,EAAE;EACpE,IAAIA,UAAU,CAACC,WAAW,EAAE;IAC1B;EACF;EACA,IAAI,CAACD,UAAU,CAACE,YAAY,EAAE;IAC5BF,UAAU,CAACE,YAAY,GAAGC,kBAAkB,CAACH,UAAU,CAAC;EAC1D;EACA,OAAOA,UAAU,CAACE,YAAY;AAChC;AAEA,eAAeC,kBAAkBA,CAACH,UAA6B,EAAE;EAAA,IAAAI,qBAAA;EAC/D,OAAMP,KAAK,aAALA,KAAK,gBAAAO,qBAAA,GAALP,KAAK,CAAEE,gBAAgB,cAAAK,qBAAA,uBAAvBA,qBAAA,CAAAC,IAAA,CAAAR,KAAK,EAAqBG,UAAU,CAAC;EAC3CF,eAAe,CAACE,UAAU,CAAC;EAC3BM,MAAM,CAACC,MAAM,CAACP,UAAU,EAAE;IACxBC,WAAW,EAAE,IAAI;IACjBC,YAAY,EAAE;EAChB,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -2,7 +2,7 @@ import { compare } from "compare-versions";
2
2
  import { _internalApiGetAppInBootstrapData, hooks } from "./Runtime.js";
3
3
  export function hasInstalledApp(appId, matchVersion) {
4
4
  // First, check whether the app is in bootstrap already.
5
- var app = _internalApiGetAppInBootstrapData(appId);
5
+ let app = _internalApiGetAppInBootstrapData(appId);
6
6
  if (!app && hooks !== null && hooks !== void 0 && hooks.checkInstalledApps) {
7
7
  app = hooks.checkInstalledApps.getCheckedApp(appId);
8
8
  }
@@ -19,10 +19,10 @@ export function hasInstalledApp(appId, matchVersion) {
19
19
  // =1.2.3
20
20
  // <=1.2.3
21
21
  // <1.2.3
22
- var matches = matchVersion.match(/^([><]=?|=)(.*)$/);
22
+ const matches = matchVersion.match(/^([><]=?|=)(.*)$/);
23
23
  try {
24
24
  if (!matches) {
25
- throw new TypeError("Invalid match version: ".concat(matchVersion));
25
+ throw new TypeError(`Invalid match version: ${matchVersion}`);
26
26
  }
27
27
  return compare(app.currentVersion, matches[2], matches[1]);
28
28
  } catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"hasInstalledApp.js","names":["compare","_internalApiGetAppInBootstrapData","hooks","hasInstalledApp","appId","matchVersion","app","checkInstalledApps","getCheckedApp","installStatus","currentVersion","matches","match","TypeError","concat","error","console"],"sources":["../../../src/internal/hasInstalledApp.ts"],"sourcesContent":["import type { MicroApp } from \"@next-core/types\";\nimport { type CompareOperator, compare } from \"compare-versions\";\nimport { _internalApiGetAppInBootstrapData, hooks } from \"./Runtime.js\";\n\nexport type AppForCheck = Pick<\n MicroApp,\n \"id\" | \"currentVersion\" | \"installStatus\"\n>;\n\nexport function hasInstalledApp(appId: string, matchVersion?: string): boolean {\n // First, check whether the app is in bootstrap already.\n let app = _internalApiGetAppInBootstrapData(appId) as AppForCheck | undefined;\n if (!app && hooks?.checkInstalledApps) {\n app = hooks.checkInstalledApps.getCheckedApp(appId);\n }\n if (!app || app.installStatus === \"running\") {\n return false;\n }\n // Todo: `currentVersion` maybe `\"\"`\n if (!matchVersion || !app.currentVersion) {\n return true;\n }\n // Valid `matchVersion`:\n // >=1.2.3\n // >1.2.3\n // =1.2.3\n // <=1.2.3\n // <1.2.3\n const matches = matchVersion.match(/^([><]=?|=)(.*)$/);\n try {\n if (!matches) {\n throw new TypeError(`Invalid match version: ${matchVersion}`);\n }\n return compare(\n app.currentVersion,\n matches[2],\n matches[1] as CompareOperator\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n return false;\n}\n"],"mappings":"AACA,SAA+BA,OAAO,QAAQ,kBAAkB;AAChE,SAASC,iCAAiC,EAAEC,KAAK,QAAQ,cAAc;AAOvE,OAAO,SAASC,eAAeA,CAACC,KAAa,EAAEC,YAAqB,EAAW;EAC7E;EACA,IAAIC,GAAG,GAAGL,iCAAiC,CAACG,KAAK,CAA4B;EAC7E,IAAI,CAACE,GAAG,IAAIJ,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEK,kBAAkB,EAAE;IACrCD,GAAG,GAAGJ,KAAK,CAACK,kBAAkB,CAACC,aAAa,CAACJ,KAAK,CAAC;EACrD;EACA,IAAI,CAACE,GAAG,IAAIA,GAAG,CAACG,aAAa,KAAK,SAAS,EAAE;IAC3C,OAAO,KAAK;EACd;EACA;EACA,IAAI,CAACJ,YAAY,IAAI,CAACC,GAAG,CAACI,cAAc,EAAE;IACxC,OAAO,IAAI;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMC,OAAO,GAAGN,YAAY,CAACO,KAAK,CAAC,kBAAkB,CAAC;EACtD,IAAI;IACF,IAAI,CAACD,OAAO,EAAE;MACZ,MAAM,IAAIE,SAAS,2BAAAC,MAAA,CAA2BT,YAAY,CAAE,CAAC;IAC/D;IACA,OAAOL,OAAO,CACZM,GAAG,CAACI,cAAc,EAClBC,OAAO,CAAC,CAAC,CAAC,EACVA,OAAO,CAAC,CAAC,CACX,CAAC;EACH,CAAC,CAAC,OAAOI,KAAK,EAAE;IACd;IACAC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;EACtB;EACA,OAAO,KAAK;AACd","ignoreList":[]}
1
+ {"version":3,"file":"hasInstalledApp.js","names":["compare","_internalApiGetAppInBootstrapData","hooks","hasInstalledApp","appId","matchVersion","app","checkInstalledApps","getCheckedApp","installStatus","currentVersion","matches","match","TypeError","error","console"],"sources":["../../../src/internal/hasInstalledApp.ts"],"sourcesContent":["import type { MicroApp } from \"@next-core/types\";\nimport { type CompareOperator, compare } from \"compare-versions\";\nimport { _internalApiGetAppInBootstrapData, hooks } from \"./Runtime.js\";\n\nexport type AppForCheck = Pick<\n MicroApp,\n \"id\" | \"currentVersion\" | \"installStatus\"\n>;\n\nexport function hasInstalledApp(appId: string, matchVersion?: string): boolean {\n // First, check whether the app is in bootstrap already.\n let app = _internalApiGetAppInBootstrapData(appId) as AppForCheck | undefined;\n if (!app && hooks?.checkInstalledApps) {\n app = hooks.checkInstalledApps.getCheckedApp(appId);\n }\n if (!app || app.installStatus === \"running\") {\n return false;\n }\n // Todo: `currentVersion` maybe `\"\"`\n if (!matchVersion || !app.currentVersion) {\n return true;\n }\n // Valid `matchVersion`:\n // >=1.2.3\n // >1.2.3\n // =1.2.3\n // <=1.2.3\n // <1.2.3\n const matches = matchVersion.match(/^([><]=?|=)(.*)$/);\n try {\n if (!matches) {\n throw new TypeError(`Invalid match version: ${matchVersion}`);\n }\n return compare(\n app.currentVersion,\n matches[2],\n matches[1] as CompareOperator\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n return false;\n}\n"],"mappings":"AACA,SAA+BA,OAAO,QAAQ,kBAAkB;AAChE,SAASC,iCAAiC,EAAEC,KAAK,QAAQ,cAAc;AAOvE,OAAO,SAASC,eAAeA,CAACC,KAAa,EAAEC,YAAqB,EAAW;EAC7E;EACA,IAAIC,GAAG,GAAGL,iCAAiC,CAACG,KAAK,CAA4B;EAC7E,IAAI,CAACE,GAAG,IAAIJ,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEK,kBAAkB,EAAE;IACrCD,GAAG,GAAGJ,KAAK,CAACK,kBAAkB,CAACC,aAAa,CAACJ,KAAK,CAAC;EACrD;EACA,IAAI,CAACE,GAAG,IAAIA,GAAG,CAACG,aAAa,KAAK,SAAS,EAAE;IAC3C,OAAO,KAAK;EACd;EACA;EACA,IAAI,CAACJ,YAAY,IAAI,CAACC,GAAG,CAACI,cAAc,EAAE;IACxC,OAAO,IAAI;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,OAAO,GAAGN,YAAY,CAACO,KAAK,CAAC,kBAAkB,CAAC;EACtD,IAAI;IACF,IAAI,CAACD,OAAO,EAAE;MACZ,MAAM,IAAIE,SAAS,CAAC,0BAA0BR,YAAY,EAAE,CAAC;IAC/D;IACA,OAAOL,OAAO,CACZM,GAAG,CAACI,cAAc,EAClBC,OAAO,CAAC,CAAC,CAAC,EACVA,OAAO,CAAC,CAAC,CACX,CAAC;EACH,CAAC,CAAC,OAAOG,KAAK,EAAE;IACd;IACAC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;EACtB;EACA,OAAO,KAAK;AACd","ignoreList":[]}
@@ -1,17 +1,14 @@
1
- import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["extraQuery", "clear", "keepHash"];
4
1
  import { parsePath } from "history";
5
2
  import { getBasePath } from "../getBasePath.js";
6
3
  import { _internalApiMatchStoryboard } from "./Runtime.js";
7
4
  import { isOutsideApp } from "./matchStoryboard.js";
8
- var blocked = false;
5
+ let blocked = false;
9
6
  export function getUserConfirmation(message, callback) {
10
7
  blocked = !confirm(message);
11
8
  callback(!blocked);
12
9
  }
13
10
  export function historyExtended(browserHistory) {
14
- var {
11
+ const {
15
12
  push: originalPush,
16
13
  replace: originalReplace
17
14
  } = browserHistory;
@@ -27,21 +24,21 @@ export function historyExtended(browserHistory) {
27
24
  }
28
25
  function updateQueryFactory(method) {
29
26
  return function updateQuery(query) {
30
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
31
- var callback = arguments.length > 2 ? arguments[2] : undefined;
32
- var {
33
- extraQuery,
34
- clear,
35
- keepHash
36
- } = options,
37
- state = _objectWithoutProperties(options, _excluded);
38
- var urlSearchParams = new URLSearchParams(clear ? "" : browserHistory.location.search);
39
- var params = {};
27
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
28
+ let callback = arguments.length > 2 ? arguments[2] : undefined;
29
+ const {
30
+ extraQuery,
31
+ clear,
32
+ keepHash,
33
+ ...state
34
+ } = options;
35
+ const urlSearchParams = new URLSearchParams(clear ? "" : browserHistory.location.search);
36
+ const params = {};
40
37
  Object.assign(params, query, extraQuery);
41
- for (var [key, value] of Object.entries(params)) {
38
+ for (const [key, value] of Object.entries(params)) {
42
39
  if (Array.isArray(value)) {
43
40
  urlSearchParams.delete(key);
44
- for (var item of value) {
41
+ for (const item of value) {
45
42
  urlSearchParams.append(key, item);
46
43
  }
47
44
  } else if (value === undefined || value === null || value === "") {
@@ -50,30 +47,34 @@ export function historyExtended(browserHistory) {
50
47
  urlSearchParams.set(key, value);
51
48
  }
52
49
  }
53
- (method === "push" ? push : replace)("?".concat(urlSearchParams.toString()).concat(keepHash ? browserHistory.location.hash : ""), state, callback);
50
+ (method === "push" ? push : replace)(`?${urlSearchParams.toString()}${keepHash ? browserHistory.location.hash : ""}`, state, callback);
54
51
  };
55
52
  }
56
53
  function pushAnchor(hash, state, callback) {
57
- push(_objectSpread(_objectSpread({}, browserHistory.location), {}, {
54
+ push({
55
+ ...browserHistory.location,
58
56
  key: undefined,
59
57
  hash,
60
- state: _objectSpread({
58
+ state: {
61
59
  // The default notify is false
62
- notify: false
63
- }, state)
64
- }), undefined, callback);
60
+ notify: false,
61
+ ...state
62
+ }
63
+ }, undefined, callback);
65
64
  }
66
65
  function reload(callback) {
67
- replace(_objectSpread(_objectSpread({}, browserHistory.location), {}, {
68
- state: _objectSpread(_objectSpread({}, browserHistory.location.state), {}, {
66
+ replace({
67
+ ...browserHistory.location,
68
+ state: {
69
+ ...browserHistory.location.state,
69
70
  // Always notify
70
71
  notify: true,
71
72
  // Do not use incremental sub routes
72
73
  noIncremental: true
73
- })
74
- }), undefined, callback);
74
+ }
75
+ }, undefined, callback);
75
76
  }
76
- var blockMessage;
77
+ let blockMessage;
77
78
  function setBlockMessage(message) {
78
79
  blockMessage = message;
79
80
  }
@@ -83,18 +84,20 @@ export function historyExtended(browserHistory) {
83
84
  function unblock() {
84
85
  blockMessage = undefined;
85
86
  }
86
- return _objectSpread({
87
+ return {
87
88
  pushQuery: updateQueryFactory("push"),
88
89
  replaceQuery: updateQueryFactory("replace"),
89
90
  pushAnchor: pushAnchor,
90
91
  reload,
91
92
  setBlockMessage,
92
93
  getBlockMessage,
93
- unblock
94
- }, historyOverridden(_objectSpread(_objectSpread({}, browserHistory), {}, {
95
- push,
96
- replace
97
- })));
94
+ unblock,
95
+ ...historyOverridden({
96
+ ...browserHistory,
97
+ push,
98
+ replace
99
+ })
100
+ };
98
101
  }
99
102
 
100
103
  /**
@@ -103,14 +106,14 @@ export function historyExtended(browserHistory) {
103
106
  * when `push` or `replace` to other apps, force page refresh.
104
107
  */
105
108
  function historyOverridden(browserHistory) {
106
- var {
109
+ const {
107
110
  push: originalPush,
108
111
  replace: originalReplace
109
112
  } = browserHistory;
110
113
  function updateFactory(method) {
111
114
  return function update(path, state, callback) {
112
- var pathname;
113
- var pathIsString = typeof path === "string";
115
+ let pathname;
116
+ const pathIsString = typeof path === "string";
114
117
  if (pathIsString) {
115
118
  pathname = parsePath(path).pathname;
116
119
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"historyExtended.js","names":["parsePath","getBasePath","_internalApiMatchStoryboard","isOutsideApp","blocked","getUserConfirmation","message","callback","confirm","historyExtended","browserHistory","push","originalPush","replace","originalReplace","location","state","updateQueryFactory","method","updateQuery","query","options","arguments","length","undefined","extraQuery","clear","keepHash","_objectWithoutProperties","_excluded","urlSearchParams","URLSearchParams","search","params","Object","assign","key","value","entries","Array","isArray","delete","item","append","set","concat","toString","hash","pushAnchor","_objectSpread","notify","reload","noIncremental","blockMessage","setBlockMessage","getBlockMessage","unblock","pushQuery","replaceQuery","historyOverridden","updateFactory","update","path","pathname","pathIsString","startsWith","substring","createHref"],"sources":["../../../src/internal/historyExtended.ts"],"sourcesContent":["import {\n History,\n LocationDescriptor,\n LocationDescriptorObject,\n parsePath,\n} from \"history\";\nimport { getBasePath } from \"../getBasePath.js\";\nimport { _internalApiMatchStoryboard } from \"./Runtime.js\";\nimport { isOutsideApp } from \"./matchStoryboard.js\";\n\nlet blocked = false;\nexport function getUserConfirmation(\n message: string,\n callback: (result: boolean) => void\n): void {\n blocked = !confirm(message);\n callback(!blocked);\n}\n\nexport function historyExtended(\n browserHistory: History<NextHistoryState>\n): ExtendedHistory {\n const { push: originalPush, replace: originalReplace } = browserHistory;\n\n function push(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalPush(location, state);\n callback?.(blocked);\n }\n\n function replace(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalReplace(location, state);\n callback?.(blocked);\n }\n\n function updateQueryFactory(method: \"push\" | \"replace\"): UpdateQueryFunction {\n return function updateQuery(query, options = {}, callback?): void {\n const { extraQuery, clear, keepHash, ...state } = options;\n const urlSearchParams = new URLSearchParams(\n clear ? \"\" : browserHistory.location.search\n );\n const params: Record<string, string | string[]> = {};\n Object.assign(params, query, extraQuery);\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n urlSearchParams.delete(key);\n for (const item of value) {\n urlSearchParams.append(key, item);\n }\n } else if (value === undefined || value === null || value === \"\") {\n urlSearchParams.delete(key);\n } else {\n urlSearchParams.set(key, value);\n }\n }\n (method === \"push\" ? push : replace)(\n `?${urlSearchParams.toString()}${\n keepHash ? browserHistory.location.hash : \"\"\n }`,\n state,\n callback\n );\n };\n }\n\n function pushAnchor(\n hash: string,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n push(\n {\n ...browserHistory.location,\n key: undefined,\n hash,\n state: {\n // The default notify is false\n notify: false,\n ...state,\n },\n },\n undefined,\n callback\n );\n }\n\n function reload(callback?: (blocked: boolean) => void): void {\n replace(\n {\n ...browserHistory.location,\n state: {\n ...browserHistory.location.state,\n // Always notify\n notify: true,\n // Do not use incremental sub routes\n noIncremental: true,\n },\n },\n undefined,\n callback\n );\n }\n\n let blockMessage: string | undefined;\n\n function setBlockMessage(message: string | undefined): void {\n blockMessage = message;\n }\n\n function getBlockMessage(): string | undefined {\n return blockMessage;\n }\n\n function unblock(): void {\n blockMessage = undefined;\n }\n\n return {\n pushQuery: updateQueryFactory(\"push\"),\n replaceQuery: updateQueryFactory(\"replace\"),\n pushAnchor: pushAnchor,\n reload,\n setBlockMessage,\n getBlockMessage,\n unblock,\n ...historyOverridden({ ...browserHistory, push, replace }),\n };\n}\n\n/**\n * Override history for standalone micro apps.\n *\n * when `push` or `replace` to other apps, force page refresh.\n */\nfunction historyOverridden(\n browserHistory: History<NextHistoryState> &\n Pick<ExtendedHistory, \"push\" | \"replace\">\n): Pick<ExtendedHistory, \"push\" | \"replace\"> {\n const { push: originalPush, replace: originalReplace } = browserHistory;\n function updateFactory(method: \"push\" | \"replace\"): ExtendedHistory[\"push\"] {\n return function update(path, state?, callback?) {\n let pathname: string | undefined;\n const pathIsString = typeof path === \"string\";\n if (pathIsString) {\n pathname = parsePath(path).pathname;\n } else {\n pathname = path.pathname;\n }\n\n // When history.push or history.replace is performing with an absolute pathname,\n // force load the target page when it is a page of an outside app.\n if (\n typeof pathname === \"string\" &&\n pathname.startsWith(\"/\") &&\n isOutsideApp(_internalApiMatchStoryboard(pathname))\n ) {\n // Going to outside apps.\n return location[method === \"push\" ? \"assign\" : \"replace\"](\n pathIsString\n ? getBasePath() + path.substring(1)\n : browserHistory.createHref(\n path as LocationDescriptorObject<NextHistoryState>\n )\n );\n }\n\n return (method === \"push\" ? originalPush : originalReplace)(\n path as string,\n state,\n callback\n );\n };\n }\n return {\n push: updateFactory(\"push\"),\n replace: updateFactory(\"replace\"),\n };\n}\n\nexport interface NextHistoryState {\n notify?: boolean;\n from?: LocationDescriptor<NextHistoryState>;\n noIncremental?: boolean;\n}\n\n/**\n * 扩展的系统会话对象。\n */\nexport interface ExtendedHistory {\n /**\n * 更新指定的 query 参数,会保留当前其它 query 参数,往浏览器会话历史栈中推入一条新记录。\n */\n pushQuery: UpdateQueryFunction;\n\n /**\n * 更新指定的 query 参数,会保留当前其它 query 参数,替换浏览器会话历史栈中最新的一条记录。\n */\n replaceQuery: UpdateQueryFunction;\n\n /** {@inheritDoc UpdateAnchorFunction} */\n pushAnchor: UpdateAnchorFunction;\n\n /** 重载当前会话,即触发页面重新渲染。与 location.reload() 不同,它不会触发浏览器页面的重载。 */\n reload: (callback?: (blocked: boolean) => void) => void;\n\n /** @internal */\n setBlockMessage: (message: string | undefined) => void;\n\n /** @internal */\n getBlockMessage: () => string | undefined;\n\n /** 取消之前设置的阻止页面离开信息的设置。 */\n unblock: () => void;\n\n /** 推入一条记录。*/\n push: (\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ) => void;\n\n /** 替换一条记录。*/\n replace: (\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ) => void;\n}\n\n/**\n * 更新指定的 query 参数。\n *\n * @param query - 要更新的 query 参数。\n * @param options - 选项。\n */\nexport type UpdateQueryFunction = (\n query: Record<string, unknown>,\n options?: UpdateQueryOptions,\n callback?: (blocked: boolean) => void\n) => void;\n\n/** 更新 query 参数时的选项 */\nexport interface UpdateQueryOptions extends NextHistoryState {\n /** 额外要更新的 query 参数。 */\n extraQuery?: Record<string, unknown>;\n /** 是否同时清除当前的所有其它 query 参数。 */\n clear?: boolean;\n /** 是否保留当前 hash 参数。 */\n keepHash?: boolean;\n}\n\n/**\n * 设置指定的 anchor (URL hash)地址,此方法默认不会触发页面重新渲染。\n * 往浏览器会话历史栈中推入一条新记录。\n *\n * @param hash - Hash 地址。\n * @param state - 会话状态设置。\n */\nexport type UpdateAnchorFunction = (\n hash: string,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n) => void;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"historyExtended.js","names":["parsePath","getBasePath","_internalApiMatchStoryboard","isOutsideApp","blocked","getUserConfirmation","message","callback","confirm","historyExtended","browserHistory","push","originalPush","replace","originalReplace","location","state","updateQueryFactory","method","updateQuery","query","options","arguments","length","undefined","extraQuery","clear","keepHash","urlSearchParams","URLSearchParams","search","params","Object","assign","key","value","entries","Array","isArray","delete","item","append","set","toString","hash","pushAnchor","notify","reload","noIncremental","blockMessage","setBlockMessage","getBlockMessage","unblock","pushQuery","replaceQuery","historyOverridden","updateFactory","update","path","pathname","pathIsString","startsWith","substring","createHref"],"sources":["../../../src/internal/historyExtended.ts"],"sourcesContent":["import {\n History,\n LocationDescriptor,\n LocationDescriptorObject,\n parsePath,\n} from \"history\";\nimport { getBasePath } from \"../getBasePath.js\";\nimport { _internalApiMatchStoryboard } from \"./Runtime.js\";\nimport { isOutsideApp } from \"./matchStoryboard.js\";\n\nlet blocked = false;\nexport function getUserConfirmation(\n message: string,\n callback: (result: boolean) => void\n): void {\n blocked = !confirm(message);\n callback(!blocked);\n}\n\nexport function historyExtended(\n browserHistory: History<NextHistoryState>\n): ExtendedHistory {\n const { push: originalPush, replace: originalReplace } = browserHistory;\n\n function push(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalPush(location, state);\n callback?.(blocked);\n }\n\n function replace(\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n blocked = false;\n originalReplace(location, state);\n callback?.(blocked);\n }\n\n function updateQueryFactory(method: \"push\" | \"replace\"): UpdateQueryFunction {\n return function updateQuery(query, options = {}, callback?): void {\n const { extraQuery, clear, keepHash, ...state } = options;\n const urlSearchParams = new URLSearchParams(\n clear ? \"\" : browserHistory.location.search\n );\n const params: Record<string, string | string[]> = {};\n Object.assign(params, query, extraQuery);\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n urlSearchParams.delete(key);\n for (const item of value) {\n urlSearchParams.append(key, item);\n }\n } else if (value === undefined || value === null || value === \"\") {\n urlSearchParams.delete(key);\n } else {\n urlSearchParams.set(key, value);\n }\n }\n (method === \"push\" ? push : replace)(\n `?${urlSearchParams.toString()}${\n keepHash ? browserHistory.location.hash : \"\"\n }`,\n state,\n callback\n );\n };\n }\n\n function pushAnchor(\n hash: string,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ): void {\n push(\n {\n ...browserHistory.location,\n key: undefined,\n hash,\n state: {\n // The default notify is false\n notify: false,\n ...state,\n },\n },\n undefined,\n callback\n );\n }\n\n function reload(callback?: (blocked: boolean) => void): void {\n replace(\n {\n ...browserHistory.location,\n state: {\n ...browserHistory.location.state,\n // Always notify\n notify: true,\n // Do not use incremental sub routes\n noIncremental: true,\n },\n },\n undefined,\n callback\n );\n }\n\n let blockMessage: string | undefined;\n\n function setBlockMessage(message: string | undefined): void {\n blockMessage = message;\n }\n\n function getBlockMessage(): string | undefined {\n return blockMessage;\n }\n\n function unblock(): void {\n blockMessage = undefined;\n }\n\n return {\n pushQuery: updateQueryFactory(\"push\"),\n replaceQuery: updateQueryFactory(\"replace\"),\n pushAnchor: pushAnchor,\n reload,\n setBlockMessage,\n getBlockMessage,\n unblock,\n ...historyOverridden({ ...browserHistory, push, replace }),\n };\n}\n\n/**\n * Override history for standalone micro apps.\n *\n * when `push` or `replace` to other apps, force page refresh.\n */\nfunction historyOverridden(\n browserHistory: History<NextHistoryState> &\n Pick<ExtendedHistory, \"push\" | \"replace\">\n): Pick<ExtendedHistory, \"push\" | \"replace\"> {\n const { push: originalPush, replace: originalReplace } = browserHistory;\n function updateFactory(method: \"push\" | \"replace\"): ExtendedHistory[\"push\"] {\n return function update(path, state?, callback?) {\n let pathname: string | undefined;\n const pathIsString = typeof path === \"string\";\n if (pathIsString) {\n pathname = parsePath(path).pathname;\n } else {\n pathname = path.pathname;\n }\n\n // When history.push or history.replace is performing with an absolute pathname,\n // force load the target page when it is a page of an outside app.\n if (\n typeof pathname === \"string\" &&\n pathname.startsWith(\"/\") &&\n isOutsideApp(_internalApiMatchStoryboard(pathname))\n ) {\n // Going to outside apps.\n return location[method === \"push\" ? \"assign\" : \"replace\"](\n pathIsString\n ? getBasePath() + path.substring(1)\n : browserHistory.createHref(\n path as LocationDescriptorObject<NextHistoryState>\n )\n );\n }\n\n return (method === \"push\" ? originalPush : originalReplace)(\n path as string,\n state,\n callback\n );\n };\n }\n return {\n push: updateFactory(\"push\"),\n replace: updateFactory(\"replace\"),\n };\n}\n\nexport interface NextHistoryState {\n notify?: boolean;\n from?: LocationDescriptor<NextHistoryState>;\n noIncremental?: boolean;\n}\n\n/**\n * 扩展的系统会话对象。\n */\nexport interface ExtendedHistory {\n /**\n * 更新指定的 query 参数,会保留当前其它 query 参数,往浏览器会话历史栈中推入一条新记录。\n */\n pushQuery: UpdateQueryFunction;\n\n /**\n * 更新指定的 query 参数,会保留当前其它 query 参数,替换浏览器会话历史栈中最新的一条记录。\n */\n replaceQuery: UpdateQueryFunction;\n\n /** {@inheritDoc UpdateAnchorFunction} */\n pushAnchor: UpdateAnchorFunction;\n\n /** 重载当前会话,即触发页面重新渲染。与 location.reload() 不同,它不会触发浏览器页面的重载。 */\n reload: (callback?: (blocked: boolean) => void) => void;\n\n /** @internal */\n setBlockMessage: (message: string | undefined) => void;\n\n /** @internal */\n getBlockMessage: () => string | undefined;\n\n /** 取消之前设置的阻止页面离开信息的设置。 */\n unblock: () => void;\n\n /** 推入一条记录。*/\n push: (\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ) => void;\n\n /** 替换一条记录。*/\n replace: (\n location: LocationDescriptor<NextHistoryState>,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n ) => void;\n}\n\n/**\n * 更新指定的 query 参数。\n *\n * @param query - 要更新的 query 参数。\n * @param options - 选项。\n */\nexport type UpdateQueryFunction = (\n query: Record<string, unknown>,\n options?: UpdateQueryOptions,\n callback?: (blocked: boolean) => void\n) => void;\n\n/** 更新 query 参数时的选项 */\nexport interface UpdateQueryOptions extends NextHistoryState {\n /** 额外要更新的 query 参数。 */\n extraQuery?: Record<string, unknown>;\n /** 是否同时清除当前的所有其它 query 参数。 */\n clear?: boolean;\n /** 是否保留当前 hash 参数。 */\n keepHash?: boolean;\n}\n\n/**\n * 设置指定的 anchor (URL hash)地址,此方法默认不会触发页面重新渲染。\n * 往浏览器会话历史栈中推入一条新记录。\n *\n * @param hash - Hash 地址。\n * @param state - 会话状态设置。\n */\nexport type UpdateAnchorFunction = (\n hash: string,\n state?: NextHistoryState,\n callback?: (blocked: boolean) => void\n) => void;\n"],"mappings":"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","ignoreList":[]}