amis-core 6.7.0 → 6.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/esm/Root.js +1 -1
  2. package/esm/RootRenderer.js +1 -1
  3. package/esm/SchemaRenderer.d.ts +0 -1
  4. package/esm/SchemaRenderer.js +15 -6
  5. package/esm/Scoped.js +2 -1
  6. package/esm/StatusScoped.js +1 -1
  7. package/esm/WithRootStore.js +1 -1
  8. package/esm/WithStore.js +8 -8
  9. package/esm/actions/Action.js +2 -1
  10. package/esm/actions/AjaxAction.js +1 -1
  11. package/esm/actions/BreakAction.js +1 -1
  12. package/esm/actions/BroadcastAction.js +1 -1
  13. package/esm/actions/CmptAction.js +1 -1
  14. package/esm/actions/ContinueAction.js +1 -1
  15. package/esm/actions/CopyAction.js +1 -1
  16. package/esm/actions/CustomAction.js +2 -1
  17. package/esm/actions/DialogAction.js +3 -1
  18. package/esm/actions/DrawerAction.js +2 -1
  19. package/esm/actions/EmailAction.js +1 -1
  20. package/esm/actions/EventAction.js +2 -1
  21. package/esm/actions/LinkAction.js +1 -1
  22. package/esm/actions/LoopAction.js +2 -1
  23. package/esm/actions/PageAction.js +1 -1
  24. package/esm/actions/ParallelAction.js +1 -1
  25. package/esm/actions/PrintAction.js +1 -1
  26. package/esm/actions/StatusAction.js +1 -1
  27. package/esm/actions/SwitchAction.js +1 -1
  28. package/esm/actions/ToastAction.js +1 -1
  29. package/esm/actions/WaitAction.js +1 -1
  30. package/esm/components/CustomStyle.js +1 -1
  31. package/esm/components/ErrorBoundary.js +1 -1
  32. package/esm/components/LazyComponent.js +1 -1
  33. package/esm/components/Overlay.js +2 -1
  34. package/esm/components/PopOver.js +2 -1
  35. package/esm/env.js +1 -1
  36. package/esm/envOverwrite.js +1 -1
  37. package/esm/factory.js +1 -1
  38. package/esm/index.js +2 -2
  39. package/esm/locale.js +2 -1
  40. package/esm/polyfills.js +1 -1
  41. package/esm/renderers/Form.js +42 -16
  42. package/esm/renderers/Item.d.ts +97 -12
  43. package/esm/renderers/Item.js +159 -120
  44. package/esm/renderers/Options.js +2 -1
  45. package/esm/renderers/Placeholder.js +1 -1
  46. package/esm/renderers/builtin.js +1 -1
  47. package/esm/renderers/register.js +1 -1
  48. package/esm/renderers/wrapControl.js +2 -1
  49. package/esm/store/app.js +2 -1
  50. package/esm/store/combo.d.ts +408 -0
  51. package/esm/store/combo.js +1 -1
  52. package/esm/store/crud.js +2 -1
  53. package/esm/store/form.d.ts +170 -0
  54. package/esm/store/form.js +2 -1
  55. package/esm/store/formItem.d.ts +5 -0
  56. package/esm/store/formItem.js +30 -8
  57. package/esm/store/iRenderer.js +2 -1
  58. package/esm/store/index.js +1 -1
  59. package/esm/store/list.js +1 -1
  60. package/esm/store/manager.js +1 -1
  61. package/esm/store/modal.js +1 -1
  62. package/esm/store/node.js +1 -1
  63. package/esm/store/pagination.js +2 -1
  64. package/esm/store/root.js +2 -1
  65. package/esm/store/service.js +2 -1
  66. package/esm/store/status.js +1 -1
  67. package/esm/store/table.d.ts +379 -21
  68. package/esm/store/table.js +84 -54
  69. package/esm/store/table2.js +1 -1
  70. package/esm/theme.js +1 -1
  71. package/esm/utils/Animation.js +1 -1
  72. package/esm/utils/ColorScale.js +1 -1
  73. package/esm/utils/DataSchema.js +1 -1
  74. package/esm/utils/DataScope.js +1 -1
  75. package/esm/utils/RootClose.js +1 -1
  76. package/esm/utils/SimpleMap.js +1 -1
  77. package/esm/utils/api.js +1 -1
  78. package/esm/utils/arraySlice.js +1 -1
  79. package/esm/utils/attachmentAdpator.js +1 -1
  80. package/esm/utils/autobind.js +1 -1
  81. package/esm/utils/browser.js +1 -1
  82. package/esm/utils/columnsSplit.js +1 -1
  83. package/esm/utils/concatData.js +1 -1
  84. package/esm/utils/dataMapping.js +1 -1
  85. package/esm/utils/date.js +1 -1
  86. package/esm/utils/debug.js +17 -3
  87. package/esm/utils/decodeEntity.js +1 -1
  88. package/esm/utils/dom.js +1 -1
  89. package/esm/utils/errors.js +1 -1
  90. package/esm/utils/escapeHtml.js +1 -1
  91. package/esm/utils/filter-schema.js +1 -1
  92. package/esm/utils/filter.js +1 -1
  93. package/esm/utils/formatDuration.js +1 -1
  94. package/esm/utils/formula.js +2 -1
  95. package/esm/utils/getVariable.js +1 -1
  96. package/esm/utils/grammar.js +1 -1
  97. package/esm/utils/handleAction.js +1 -1
  98. package/esm/utils/helper.d.ts +4 -1
  99. package/esm/utils/helper.js +20 -4
  100. package/esm/utils/highlight.js +1 -1
  101. package/esm/utils/icon.js +1 -1
  102. package/esm/utils/image.js +1 -1
  103. package/esm/utils/isPureVariable.js +2 -2
  104. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  105. package/esm/utils/keyToPath.js +1 -1
  106. package/esm/utils/labelToString.js +1 -1
  107. package/esm/utils/makeSorter.js +1 -1
  108. package/esm/utils/math.js +1 -1
  109. package/esm/utils/memoryParse.d.ts +2 -1
  110. package/esm/utils/memoryParse.js +10 -6
  111. package/esm/utils/normalizeLink.js +1 -1
  112. package/esm/utils/normalizeOptions.js +1 -1
  113. package/esm/utils/object.d.ts +2 -4
  114. package/esm/utils/object.js +1 -1
  115. package/esm/utils/offset.js +1 -1
  116. package/esm/utils/offsetParent.js +1 -1
  117. package/esm/utils/optionValueCompare.js +1 -1
  118. package/esm/utils/position.js +1 -1
  119. package/esm/utils/prettyBytes.js +1 -1
  120. package/esm/utils/printElement.js +1 -1
  121. package/esm/utils/renderer-event.js +1 -1
  122. package/esm/utils/replaceText.js +1 -1
  123. package/esm/utils/resize-sensor.js +30 -1
  124. package/esm/utils/resolveCondition.js +2 -1
  125. package/esm/utils/resolveVariable.js +1 -1
  126. package/esm/utils/resolveVariableAndFilter.js +1 -1
  127. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  128. package/esm/utils/scrollPosition.js +1 -1
  129. package/esm/utils/string2regExp.js +1 -1
  130. package/esm/utils/stripNumber.js +1 -1
  131. package/esm/utils/style-helper.js +1 -1
  132. package/esm/utils/style.js +2 -1
  133. package/esm/utils/toNumber.js +1 -1
  134. package/esm/utils/tokenize.js +1 -1
  135. package/esm/utils/tpl-builtin.js +2 -1
  136. package/esm/utils/tpl-lodash.js +2 -1
  137. package/esm/utils/tpl.js +1 -1
  138. package/esm/utils/uncontrollable.js +1 -1
  139. package/esm/utils/validateId.js +1 -1
  140. package/esm/utils/validations.js +2 -1
  141. package/esm/utils/visitedCache.d.ts +46 -0
  142. package/esm/utils/visitedCache.js +124 -0
  143. package/lib/Root.js +1 -1
  144. package/lib/RootRenderer.js +1 -1
  145. package/lib/SchemaRenderer.d.ts +0 -1
  146. package/lib/SchemaRenderer.js +15 -6
  147. package/lib/Scoped.js +2 -1
  148. package/lib/StatusScoped.js +1 -1
  149. package/lib/WithRootStore.js +1 -1
  150. package/lib/WithStore.js +8 -8
  151. package/lib/actions/Action.js +2 -1
  152. package/lib/actions/AjaxAction.js +1 -1
  153. package/lib/actions/BreakAction.js +1 -1
  154. package/lib/actions/BroadcastAction.js +1 -1
  155. package/lib/actions/CmptAction.js +1 -1
  156. package/lib/actions/ContinueAction.js +1 -1
  157. package/lib/actions/CopyAction.js +1 -1
  158. package/lib/actions/CustomAction.js +2 -1
  159. package/lib/actions/DialogAction.js +3 -1
  160. package/lib/actions/DrawerAction.js +2 -1
  161. package/lib/actions/EmailAction.js +1 -1
  162. package/lib/actions/EventAction.js +2 -1
  163. package/lib/actions/LinkAction.js +1 -1
  164. package/lib/actions/LoopAction.js +2 -1
  165. package/lib/actions/PageAction.js +1 -1
  166. package/lib/actions/ParallelAction.js +1 -1
  167. package/lib/actions/PrintAction.js +1 -1
  168. package/lib/actions/StatusAction.js +1 -1
  169. package/lib/actions/SwitchAction.js +1 -1
  170. package/lib/actions/ToastAction.js +1 -1
  171. package/lib/actions/WaitAction.js +1 -1
  172. package/lib/components/CustomStyle.js +1 -1
  173. package/lib/components/ErrorBoundary.js +1 -1
  174. package/lib/components/LazyComponent.js +1 -1
  175. package/lib/components/Overlay.js +2 -1
  176. package/lib/components/PopOver.js +2 -1
  177. package/lib/env.js +1 -1
  178. package/lib/envOverwrite.js +1 -1
  179. package/lib/factory.js +1 -1
  180. package/lib/index.js +2 -2
  181. package/lib/locale.js +2 -1
  182. package/lib/polyfills.js +1 -1
  183. package/lib/renderers/Form.js +41 -15
  184. package/lib/renderers/Item.d.ts +98 -13
  185. package/lib/renderers/Item.js +158 -119
  186. package/lib/renderers/Options.js +2 -1
  187. package/lib/renderers/Placeholder.js +1 -1
  188. package/lib/renderers/builtin.js +1 -1
  189. package/lib/renderers/register.js +1 -1
  190. package/lib/renderers/wrapControl.js +2 -1
  191. package/lib/store/app.js +2 -1
  192. package/lib/store/combo.d.ts +408 -0
  193. package/lib/store/combo.js +1 -1
  194. package/lib/store/crud.js +2 -1
  195. package/lib/store/form.d.ts +170 -0
  196. package/lib/store/form.js +2 -1
  197. package/lib/store/formItem.d.ts +5 -0
  198. package/lib/store/formItem.js +30 -8
  199. package/lib/store/iRenderer.js +2 -1
  200. package/lib/store/index.js +1 -1
  201. package/lib/store/list.js +1 -1
  202. package/lib/store/manager.js +1 -1
  203. package/lib/store/modal.js +1 -1
  204. package/lib/store/node.js +1 -1
  205. package/lib/store/pagination.js +2 -1
  206. package/lib/store/root.js +2 -1
  207. package/lib/store/service.js +2 -1
  208. package/lib/store/status.js +1 -1
  209. package/lib/store/table.d.ts +379 -21
  210. package/lib/store/table.js +84 -54
  211. package/lib/store/table2.js +1 -1
  212. package/lib/theme.js +1 -1
  213. package/lib/utils/Animation.js +1 -1
  214. package/lib/utils/ColorScale.js +1 -1
  215. package/lib/utils/DataSchema.js +1 -1
  216. package/lib/utils/DataScope.js +1 -1
  217. package/lib/utils/RootClose.js +1 -1
  218. package/lib/utils/SimpleMap.js +1 -1
  219. package/lib/utils/api.js +1 -1
  220. package/lib/utils/arraySlice.js +1 -1
  221. package/lib/utils/attachmentAdpator.js +1 -1
  222. package/lib/utils/autobind.js +1 -1
  223. package/lib/utils/browser.js +1 -1
  224. package/lib/utils/columnsSplit.js +1 -1
  225. package/lib/utils/concatData.js +1 -1
  226. package/lib/utils/dataMapping.js +1 -1
  227. package/lib/utils/date.js +1 -1
  228. package/lib/utils/debug.js +17 -3
  229. package/lib/utils/decodeEntity.js +1 -1
  230. package/lib/utils/dom.js +1 -1
  231. package/lib/utils/errors.js +1 -1
  232. package/lib/utils/escapeHtml.js +1 -1
  233. package/lib/utils/filter-schema.js +1 -1
  234. package/lib/utils/filter.js +1 -1
  235. package/lib/utils/formatDuration.js +1 -1
  236. package/lib/utils/formula.js +2 -1
  237. package/lib/utils/getVariable.js +1 -1
  238. package/lib/utils/grammar.js +1 -1
  239. package/lib/utils/handleAction.js +1 -1
  240. package/lib/utils/helper.d.ts +4 -1
  241. package/lib/utils/helper.js +19 -3
  242. package/lib/utils/highlight.js +1 -1
  243. package/lib/utils/icon.js +1 -1
  244. package/lib/utils/image.js +1 -1
  245. package/lib/utils/isPureVariable.js +2 -2
  246. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  247. package/lib/utils/keyToPath.js +1 -1
  248. package/lib/utils/labelToString.js +1 -1
  249. package/lib/utils/makeSorter.js +1 -1
  250. package/lib/utils/math.js +1 -1
  251. package/lib/utils/memoryParse.d.ts +2 -1
  252. package/lib/utils/memoryParse.js +10 -6
  253. package/lib/utils/normalizeLink.js +1 -1
  254. package/lib/utils/normalizeOptions.js +1 -1
  255. package/lib/utils/object.d.ts +2 -4
  256. package/lib/utils/object.js +1 -1
  257. package/lib/utils/offset.js +1 -1
  258. package/lib/utils/offsetParent.js +1 -1
  259. package/lib/utils/optionValueCompare.js +1 -1
  260. package/lib/utils/position.js +1 -1
  261. package/lib/utils/prettyBytes.js +1 -1
  262. package/lib/utils/printElement.js +1 -1
  263. package/lib/utils/renderer-event.js +1 -1
  264. package/lib/utils/replaceText.js +1 -1
  265. package/lib/utils/resize-sensor.js +30 -1
  266. package/lib/utils/resolveCondition.js +2 -1
  267. package/lib/utils/resolveVariable.js +1 -1
  268. package/lib/utils/resolveVariableAndFilter.js +1 -1
  269. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  270. package/lib/utils/scrollPosition.js +1 -1
  271. package/lib/utils/string2regExp.js +1 -1
  272. package/lib/utils/stripNumber.js +1 -1
  273. package/lib/utils/style-helper.js +1 -1
  274. package/lib/utils/style.js +2 -1
  275. package/lib/utils/toNumber.js +1 -1
  276. package/lib/utils/tokenize.js +1 -1
  277. package/lib/utils/tpl-builtin.js +2 -1
  278. package/lib/utils/tpl-lodash.js +2 -1
  279. package/lib/utils/tpl.js +1 -1
  280. package/lib/utils/uncontrollable.js +1 -1
  281. package/lib/utils/validateId.js +1 -1
  282. package/lib/utils/validations.js +2 -1
  283. package/lib/utils/visitedCache.d.ts +46 -0
  284. package/lib/utils/visitedCache.js +128 -0
  285. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -14,7 +14,7 @@ function isPureVariable(path) {
14
14
  try {
15
15
  var ast = memoryParse.memoryParse(path);
16
16
  // 只有一个成员说明是纯表达式模式
17
- return ast.body.length === 1 && ast.body[0].type === 'script';
17
+ return (ast === null || ast === void 0 ? void 0 : ast.body.length) === 1 && ast.body[0].type === 'script';
18
18
  }
19
19
  catch (err) {
20
20
  return false;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
package/lib/utils/math.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,3 +1,4 @@
1
+ import type { ASTNode } from 'amis-formula';
1
2
  export declare function memoryParse(input: string, options?: {
2
3
  /**
3
4
  * 直接是运算表达式?还是从模板开始 ${} 里面才算运算表达式
@@ -14,4 +15,4 @@ export declare function memoryParse(input: string, options?: {
14
15
  */
15
16
  allowFilter?: boolean;
16
17
  variableNamespaces?: Array<string>;
17
- }): any;
18
+ }): ASTNode | undefined;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -8,22 +8,26 @@
8
8
  Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
10
  var amisFormula = require('amis-formula');
11
+ var visitedCache = require('./visitedCache.js');
11
12
 
12
- var cache = {};
13
+ // NOTE 缓存前40条表达式
14
+ var cache = new visitedCache["default"](40);
13
15
  function memoryParse(input, options) {
14
16
  if (options === void 0) { options = {
15
17
  evalMode: false
16
18
  }; }
17
- // @todo 优化内存缓存释放,比如只缓存最高频的模版
19
+ // 优化内存缓存释放,比如只缓存最高频的模版
18
20
  if (typeof input !== 'string') {
19
21
  return;
20
22
  }
21
23
  var key = input + JSON.stringify(options);
22
- if (cache[key]) {
23
- return cache[key];
24
+ // get cache result
25
+ if (cache.has(key)) {
26
+ return cache.get(key);
24
27
  }
28
+ // run parse function and cache
25
29
  var ast = amisFormula.parse(input, options);
26
- cache[key] = ast;
30
+ cache.set(key, ast);
27
31
  return ast;
28
32
  }
29
33
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,8 +1,6 @@
1
- export declare function createObject(superProps?: {
1
+ export declare function createObject<P extends {
2
2
  [propName: string]: any;
3
- }, props?: {
4
- [propName: string]: any;
5
- }, properties?: any): object;
3
+ } | null>(superProps?: P, props?: P, properties?: any): object;
6
4
  export declare function extractObjectChain(value: any): object[];
7
5
  export declare function createObjectFromChain(chain: Array<object>): object;
8
6
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -167,6 +167,35 @@ function resizeSensor(element, callback, once, type) {
167
167
  if (!element) {
168
168
  return function () { };
169
169
  }
170
+ // 优先用 ResizeObserver
171
+ if (typeof ResizeObserver !== 'undefined') {
172
+ var rect = element.getBoundingClientRect();
173
+ var originWidth_1 = rect.width;
174
+ var originHeight_1 = rect.height;
175
+ var observer_1 = new ResizeObserver(function (entries) {
176
+ if (once) {
177
+ observer_1.disconnect();
178
+ }
179
+ if (type === 'both') {
180
+ callback();
181
+ }
182
+ else {
183
+ var entry = entries[0];
184
+ var cr = entry.contentRect;
185
+ if ((type === 'width' && cr.width !== originWidth_1) ||
186
+ (type === 'height' && cr.height !== originHeight_1)) {
187
+ callback();
188
+ originWidth_1 = cr.width;
189
+ originHeight_1 = cr.height;
190
+ }
191
+ }
192
+ });
193
+ observer_1.observe(element);
194
+ return function () {
195
+ observer_1.disconnect();
196
+ };
197
+ }
198
+ // 不支持 ResizeObserver 的话,用 polyfill
170
199
  var disposeEvent = undefined;
171
200
  if (once) {
172
201
  disposeEvent = attachResizeEvent(element, function () {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -18,6 +18,7 @@ var moment = require('moment');
18
18
  var capitalize = require('lodash/capitalize');
19
19
  require('amis-formula');
20
20
  require('lodash/isPlainObject');
21
+ require('./memoryParse.js');
21
22
  var isPureVariable = require('./isPureVariable.js');
22
23
  require('@rc-component/mini-decimal');
23
24
  var resolveVariableAndFilter = require('./resolveVariableAndFilter.js');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -11,6 +11,7 @@ require('tslib');
11
11
  require('amis-formula');
12
12
  require('moment');
13
13
  require('lodash/isPlainObject');
14
+ require('./memoryParse.js');
14
15
  require('@rc-component/mini-decimal');
15
16
  var resolveVariableAndFilter = require('./resolveVariableAndFilter.js');
16
17
  require('./filter.js');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -11,6 +11,7 @@ var tslib = require('tslib');
11
11
  var amisFormula = require('amis-formula');
12
12
  require('moment');
13
13
  require('lodash/isPlainObject');
14
+ require('./memoryParse.js');
14
15
  var tokenize = require('./tokenize.js');
15
16
  require('@rc-component/mini-decimal');
16
17
  var resolveVariableAndFilterForAsync = require('./resolveVariableAndFilterForAsync.js');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -12,6 +12,7 @@ var template = require('lodash/template');
12
12
  var amisFormula = require('amis-formula');
13
13
  var moment = require('moment');
14
14
  require('lodash/isPlainObject');
15
+ require('./memoryParse.js');
15
16
  require('@rc-component/mini-decimal');
16
17
  require('./filter.js');
17
18
 
package/lib/utils/tpl.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -12,6 +12,7 @@ var moment = require('moment');
12
12
  var tpl = require('./tpl.js');
13
13
  require('amis-formula');
14
14
  var isPlainObject = require('lodash/isPlainObject');
15
+ require('./memoryParse.js');
15
16
  var isPureVariable = require('./isPureVariable.js');
16
17
  require('@rc-component/mini-decimal');
17
18
  var resolveVariableAndFilter = require('./resolveVariableAndFilter.js');
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @description 缓存值的单元
3
+ */
4
+ export type CacheEntry<V> = {
5
+ value: V;
6
+ visitCount: number;
7
+ };
8
+ /**
9
+ * 自动清理访问次数最少key的Map,次数相同时优先淘汰旧项
10
+ * 每次触发清理的计数基于容量的百分比
11
+ * @class VisitedCache
12
+ * @template K - 缓存key的类型
13
+ * @template V - 缓存value的类型
14
+ */
15
+ export default class VisitedCache<K, V> {
16
+ private capacity;
17
+ private cache;
18
+ private visitCountOrder;
19
+ private keyOrderMatrixForByCount;
20
+ private releaseCount;
21
+ /**
22
+ *
23
+ * @param capacity 容量
24
+ * @param releasePercent 清理数量占容量百分比
25
+ */
26
+ constructor(capacity: number, releasePercent?: number);
27
+ /**
28
+ * 更新现存项目的缓存顺序
29
+ * @param key
30
+ * @param entry
31
+ */
32
+ private updateCacheEntryOrder;
33
+ /**
34
+ *
35
+ * @param {K} key
36
+ * @returns {(V | undefined)}
37
+ */
38
+ get(key: K): V | undefined;
39
+ /**
40
+ *
41
+ * @param {K} key
42
+ * @param {V} value
43
+ */
44
+ set(key: K, value: V): void;
45
+ has(key: K): boolean;
46
+ }
@@ -0,0 +1,128 @@
1
+ /**
2
+ * amis-core v6.8.0
3
+ * Copyright 2018-2024 fex
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ Object.defineProperty(exports, '__esModule', { value: true });
9
+
10
+ var tslib = require('tslib');
11
+
12
+ /**
13
+ * 自动清理访问次数最少key的Map,次数相同时优先淘汰旧项
14
+ * 每次触发清理的计数基于容量的百分比
15
+ * @class VisitedCache
16
+ * @template K - 缓存key的类型
17
+ * @template V - 缓存value的类型
18
+ */
19
+ var VisitedCache = /** @class */ (function () {
20
+ /**
21
+ *
22
+ * @param capacity 容量
23
+ * @param releasePercent 清理数量占容量百分比
24
+ */
25
+ function VisitedCache(capacity, releasePercent) {
26
+ this.visitCountOrder = [];
27
+ this.keyOrderMatrixForByCount = {};
28
+ this.capacity = capacity;
29
+ this.cache = new Map();
30
+ this.releaseCount = (this.capacity * (releasePercent || 1 / 8)) >> 0 || 1;
31
+ }
32
+ /**
33
+ * 更新现存项目的缓存顺序
34
+ * @param key
35
+ * @param entry
36
+ */
37
+ VisitedCache.prototype.updateCacheEntryOrder = function (key, entry, nextVisitCount) {
38
+ var oldVisitCount = entry.visitCount;
39
+ var oldKeyOrder = this.keyOrderMatrixForByCount[oldVisitCount];
40
+ if (Array.isArray(oldKeyOrder)) {
41
+ // 从key为旧访问次数的顺序数组中删除
42
+ var oldKeyIndex = oldKeyOrder.indexOf(key);
43
+ if (oldKeyIndex !== -1) {
44
+ oldKeyOrder.splice(oldKeyIndex, 1);
45
+ }
46
+ }
47
+ // 相同访问量,更新访问顺序
48
+ this.keyOrderMatrixForByCount[nextVisitCount] = Array.isArray(this.keyOrderMatrixForByCount[nextVisitCount])
49
+ ? tslib.__spreadArray(tslib.__spreadArray([], tslib.__read(this.keyOrderMatrixForByCount[nextVisitCount]), false), [key], false) : [key];
50
+ entry.visitCount = nextVisitCount;
51
+ // 重新按照访问量排序
52
+ this.visitCountOrder = tslib.__spreadArray([], tslib.__read(new Set(tslib.__spreadArray(tslib.__spreadArray([], tslib.__read(this.visitCountOrder), false), [nextVisitCount], false))), false).sort(function (a, b) { return a - b; });
53
+ };
54
+ /**
55
+ *
56
+ * @param {K} key
57
+ * @returns {(V | undefined)}
58
+ */
59
+ VisitedCache.prototype.get = function (key) {
60
+ if (this.cache.has(key)) {
61
+ var entry = this.cache.get(key);
62
+ if (entry !== undefined) {
63
+ var visitCount = entry.visitCount;
64
+ // 更新访问顺序
65
+ this.updateCacheEntryOrder(key, entry, visitCount + 1);
66
+ return entry.value;
67
+ }
68
+ }
69
+ return undefined;
70
+ };
71
+ /**
72
+ *
73
+ * @param {K} key
74
+ * @param {V} value
75
+ */
76
+ VisitedCache.prototype.set = function (key, value) {
77
+ // 更新现存项的值和访问次数及新鲜度
78
+ if (this.cache.has(key)) {
79
+ var entry = this.cache.get(key);
80
+ if (entry !== undefined) {
81
+ var visitCount = entry.visitCount;
82
+ this.updateCacheEntryOrder(key, entry, visitCount + 1);
83
+ entry.value = value;
84
+ }
85
+ }
86
+ else {
87
+ // 先进行清理
88
+ if (this.cache.size === this.capacity) {
89
+ // TODO 依据最大容量的1/10进行释放,试试效果
90
+ var dynamicReleaseCount = this.releaseCount;
91
+ // const dynamicReleaseCount =
92
+ // (this.keyOrderMatrixForByCount[this.visitCountOrder[this.visitCountOrder.length - 1]].length / (this.capacity)) >>
93
+ // 0 || 1
94
+ var findIndex = 0;
95
+ var released = 0;
96
+ while (released < dynamicReleaseCount &&
97
+ findIndex <= this.visitCountOrder.length - 1) {
98
+ // 最少访问的次数
99
+ var targetCount = this.visitCountOrder[findIndex];
100
+ // 查看其中有没有项
101
+ var targetKeyOrder = this.keyOrderMatrixForByCount[targetCount];
102
+ if (!targetKeyOrder.length) {
103
+ findIndex++;
104
+ }
105
+ else {
106
+ while (targetKeyOrder.length > 0 &&
107
+ released < dynamicReleaseCount) {
108
+ this.cache.delete(targetKeyOrder.shift());
109
+ released++;
110
+ }
111
+ }
112
+ }
113
+ }
114
+ var newEntry = {
115
+ visitCount: 1,
116
+ value: value
117
+ };
118
+ this.cache.set(key, newEntry);
119
+ this.updateCacheEntryOrder(key, newEntry, 1);
120
+ }
121
+ };
122
+ VisitedCache.prototype.has = function (key) {
123
+ return this.cache.has(key);
124
+ };
125
+ return VisitedCache;
126
+ }());
127
+
128
+ exports["default"] = VisitedCache;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amis-core",
3
- "version": "6.7.0",
3
+ "version": "6.8.0",
4
4
  "description": "amis-core",
5
5
  "main": "lib/index.js",
6
6
  "module": "esm/index.js",
@@ -49,7 +49,7 @@
49
49
  ],
50
50
  "dependencies": {
51
51
  "@rc-component/mini-decimal": "^1.0.1",
52
- "amis-formula": "^6.7.0",
52
+ "amis-formula": "^6.8.0",
53
53
  "classnames": "2.3.2",
54
54
  "file-saver": "^2.0.2",
55
55
  "hoist-non-react-statics": "^3.3.2",