tinybase 4.6.2 → 5.0.0-beta.1

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 (280) hide show
  1. package/bin/cli.js +1 -1
  2. package/lib/checkpoints.js +1 -1
  3. package/lib/checkpoints.js.gz +0 -0
  4. package/lib/cjs/checkpoints.cjs +1 -1
  5. package/lib/cjs/checkpoints.cjs.gz +0 -0
  6. package/lib/cjs/indexes.cjs +1 -1
  7. package/lib/cjs/indexes.cjs.gz +0 -0
  8. package/lib/cjs/metrics.cjs +1 -1
  9. package/lib/cjs/metrics.cjs.gz +0 -0
  10. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  11. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  12. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  13. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  14. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  15. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  16. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  17. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  18. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  19. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  20. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  21. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  22. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
  23. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  24. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  25. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  26. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  27. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  28. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  29. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  30. package/lib/cjs/queries.cjs +1 -1
  31. package/lib/cjs/queries.cjs.gz +0 -0
  32. package/lib/cjs/relationships.cjs +1 -1
  33. package/lib/cjs/relationships.cjs.gz +0 -0
  34. package/lib/cjs/store.cjs +1 -1
  35. package/lib/cjs/store.cjs.gz +0 -0
  36. package/lib/cjs/tinybase.cjs +1 -1
  37. package/lib/cjs/tinybase.cjs.gz +0 -0
  38. package/lib/cjs/tools.cjs +1 -1
  39. package/lib/cjs/tools.cjs.gz +0 -0
  40. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  41. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  42. package/lib/cjs/ui-react-dom.cjs +1 -1
  43. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  44. package/lib/cjs/ui-react.cjs +1 -1
  45. package/lib/cjs/ui-react.cjs.gz +0 -0
  46. package/lib/cjs-es6/checkpoints.cjs +1 -1
  47. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  48. package/lib/cjs-es6/indexes.cjs +1 -1
  49. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  50. package/lib/cjs-es6/metrics.cjs +1 -1
  51. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  52. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  53. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  54. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  55. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  56. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  57. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  58. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  59. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  60. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  61. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  62. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  63. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  64. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
  65. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  66. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  67. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  68. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  69. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  70. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  71. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  72. package/lib/cjs-es6/queries.cjs +1 -1
  73. package/lib/cjs-es6/queries.cjs.gz +0 -0
  74. package/lib/cjs-es6/relationships.cjs +1 -1
  75. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  76. package/lib/cjs-es6/store.cjs +1 -1
  77. package/lib/cjs-es6/store.cjs.gz +0 -0
  78. package/lib/cjs-es6/tinybase.cjs +1 -1
  79. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  80. package/lib/cjs-es6/tools.cjs +1 -1
  81. package/lib/cjs-es6/tools.cjs.gz +0 -0
  82. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  83. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  84. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  85. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  86. package/lib/cjs-es6/ui-react.cjs +1 -1
  87. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  88. package/lib/debug/checkpoints.js +251 -234
  89. package/lib/debug/indexes.js +7 -5
  90. package/lib/debug/metrics.js +7 -5
  91. package/lib/debug/persisters/persister-automerge.js +3 -1
  92. package/lib/debug/persisters/persister-browser.js +1 -0
  93. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +3 -1
  94. package/lib/debug/persisters/persister-electric-sql.js +3 -1
  95. package/lib/debug/persisters/persister-expo-sqlite-next.js +3 -1
  96. package/lib/debug/persisters/persister-expo-sqlite.js +3 -1
  97. package/lib/debug/persisters/persister-file.js +1 -0
  98. package/lib/debug/persisters/persister-indexed-db.js +3 -1
  99. package/lib/debug/persisters/persister-partykit-client.js +1 -0
  100. package/lib/debug/persisters/persister-partykit-server.js +2 -1
  101. package/lib/debug/persisters/persister-remote.js +1 -0
  102. package/lib/debug/persisters/persister-sqlite-wasm.js +3 -1
  103. package/lib/debug/persisters/persister-sqlite3.js +3 -1
  104. package/lib/debug/persisters/persister-yjs.js +3 -1
  105. package/lib/debug/persisters.js +1 -0
  106. package/lib/debug/queries.js +9 -6
  107. package/lib/debug/relationships.js +7 -5
  108. package/lib/debug/store.js +3 -1
  109. package/lib/debug/tinybase.js +254 -235
  110. package/lib/debug/tools.js +10 -6
  111. package/lib/debug/ui-react-dom.js +3 -1
  112. package/lib/debug/ui-react.js +166 -200
  113. package/lib/es6/checkpoints.js +1 -1
  114. package/lib/es6/checkpoints.js.gz +0 -0
  115. package/lib/es6/indexes.js +1 -1
  116. package/lib/es6/indexes.js.gz +0 -0
  117. package/lib/es6/metrics.js +1 -1
  118. package/lib/es6/metrics.js.gz +0 -0
  119. package/lib/es6/persisters/persister-automerge.js +1 -1
  120. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  121. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  122. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  123. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  124. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  125. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  126. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  127. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  128. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  129. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  130. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  131. package/lib/es6/persisters/persister-partykit-server.js +1 -1
  132. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  133. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  134. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  135. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  136. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  137. package/lib/es6/persisters/persister-yjs.js +1 -1
  138. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  139. package/lib/es6/queries.js +1 -1
  140. package/lib/es6/queries.js.gz +0 -0
  141. package/lib/es6/relationships.js +1 -1
  142. package/lib/es6/relationships.js.gz +0 -0
  143. package/lib/es6/store.js +1 -1
  144. package/lib/es6/store.js.gz +0 -0
  145. package/lib/es6/tinybase.js +1 -1
  146. package/lib/es6/tinybase.js.gz +0 -0
  147. package/lib/es6/tools.js +1 -1
  148. package/lib/es6/tools.js.gz +0 -0
  149. package/lib/es6/ui-react-dom-debug.js +1 -1
  150. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  151. package/lib/es6/ui-react-dom.js +1 -1
  152. package/lib/es6/ui-react-dom.js.gz +0 -0
  153. package/lib/es6/ui-react.js +1 -1
  154. package/lib/es6/ui-react.js.gz +0 -0
  155. package/lib/indexes.js +1 -1
  156. package/lib/indexes.js.gz +0 -0
  157. package/lib/metrics.js +1 -1
  158. package/lib/metrics.js.gz +0 -0
  159. package/lib/persisters/persister-automerge.js +1 -1
  160. package/lib/persisters/persister-automerge.js.gz +0 -0
  161. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  162. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  163. package/lib/persisters/persister-electric-sql.js +1 -1
  164. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  165. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  166. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  167. package/lib/persisters/persister-expo-sqlite.js +1 -1
  168. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  169. package/lib/persisters/persister-indexed-db.js +1 -1
  170. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  171. package/lib/persisters/persister-partykit-server.js +1 -1
  172. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  173. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  174. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  175. package/lib/persisters/persister-sqlite3.js +1 -1
  176. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  177. package/lib/persisters/persister-yjs.js +1 -1
  178. package/lib/persisters/persister-yjs.js.gz +0 -0
  179. package/lib/queries.js +1 -1
  180. package/lib/queries.js.gz +0 -0
  181. package/lib/relationships.js +1 -1
  182. package/lib/relationships.js.gz +0 -0
  183. package/lib/store.js +1 -1
  184. package/lib/store.js.gz +0 -0
  185. package/lib/tinybase.js +1 -1
  186. package/lib/tinybase.js.gz +0 -0
  187. package/lib/tools.js +1 -1
  188. package/lib/tools.js.gz +0 -0
  189. package/lib/types/ui-react.d.ts +77 -88
  190. package/lib/types/with-schemas/ui-react.d.ts +84 -95
  191. package/lib/ui-react-dom.js +1 -1
  192. package/lib/ui-react-dom.js.gz +0 -0
  193. package/lib/ui-react.js +1 -1
  194. package/lib/ui-react.js.gz +0 -0
  195. package/lib/umd/checkpoints.js +1 -1
  196. package/lib/umd/checkpoints.js.gz +0 -0
  197. package/lib/umd/indexes.js +1 -1
  198. package/lib/umd/indexes.js.gz +0 -0
  199. package/lib/umd/metrics.js +1 -1
  200. package/lib/umd/metrics.js.gz +0 -0
  201. package/lib/umd/persisters/persister-automerge.js +1 -1
  202. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  203. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  204. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  205. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  206. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  207. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  208. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  209. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  210. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  211. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  212. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  213. package/lib/umd/persisters/persister-partykit-server.js +1 -1
  214. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  215. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  216. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  217. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  218. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  219. package/lib/umd/persisters/persister-yjs.js +1 -1
  220. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  221. package/lib/umd/queries.js +1 -1
  222. package/lib/umd/queries.js.gz +0 -0
  223. package/lib/umd/relationships.js +1 -1
  224. package/lib/umd/relationships.js.gz +0 -0
  225. package/lib/umd/store.js +1 -1
  226. package/lib/umd/store.js.gz +0 -0
  227. package/lib/umd/tinybase.js +1 -1
  228. package/lib/umd/tinybase.js.gz +0 -0
  229. package/lib/umd/tools.js +1 -1
  230. package/lib/umd/tools.js.gz +0 -0
  231. package/lib/umd/ui-react-dom-debug.js +1 -1
  232. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  233. package/lib/umd/ui-react-dom.js +1 -1
  234. package/lib/umd/ui-react-dom.js.gz +0 -0
  235. package/lib/umd/ui-react.js +1 -1
  236. package/lib/umd/ui-react.js.gz +0 -0
  237. package/lib/umd-es6/checkpoints.js +1 -1
  238. package/lib/umd-es6/checkpoints.js.gz +0 -0
  239. package/lib/umd-es6/indexes.js +1 -1
  240. package/lib/umd-es6/indexes.js.gz +0 -0
  241. package/lib/umd-es6/metrics.js +1 -1
  242. package/lib/umd-es6/metrics.js.gz +0 -0
  243. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  244. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  245. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  246. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  247. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  248. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  249. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  250. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  251. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  252. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  253. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  254. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  255. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
  256. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  257. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  258. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  259. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  260. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  261. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  262. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  263. package/lib/umd-es6/queries.js +1 -1
  264. package/lib/umd-es6/queries.js.gz +0 -0
  265. package/lib/umd-es6/relationships.js +1 -1
  266. package/lib/umd-es6/relationships.js.gz +0 -0
  267. package/lib/umd-es6/store.js +1 -1
  268. package/lib/umd-es6/store.js.gz +0 -0
  269. package/lib/umd-es6/tinybase.js +1 -1
  270. package/lib/umd-es6/tinybase.js.gz +0 -0
  271. package/lib/umd-es6/tools.js +1 -1
  272. package/lib/umd-es6/tools.js.gz +0 -0
  273. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  274. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  275. package/lib/umd-es6/ui-react-dom.js +1 -1
  276. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  277. package/lib/umd-es6/ui-react.js +1 -1
  278. package/lib/umd-es6/ui-react.js.gz +0 -0
  279. package/package.json +4 -4
  280. package/readme.md +13 -13
@@ -33,16 +33,46 @@ const isArray = (thing) => Array.isArray(thing);
33
33
  const size = (arrayOrString) => arrayOrString.length;
34
34
  const getUndefined = () => void 0;
35
35
 
36
+ const arrayEvery = (array, cb) => array.every(cb);
37
+ const arrayIsEqual = (array1, array2) =>
38
+ size(array1) === size(array2) &&
39
+ arrayEvery(array1, (value1, index) => array2[index] === value1);
36
40
  const arrayMap = (array, cb) => array.map(cb);
37
41
  const arrayIsEmpty = (array) => size(array) == 0;
38
42
 
39
43
  const object = Object;
44
+ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
45
+ const objEntries = object.entries;
40
46
  const objIds = object.keys;
47
+ const isObject = (obj) =>
48
+ !isUndefined(obj) &&
49
+ ifNotUndefined(
50
+ getPrototypeOf(obj),
51
+ (objPrototype) =>
52
+ objPrototype == object.prototype ||
53
+ isUndefined(getPrototypeOf(objPrototype)),
54
+ /* istanbul ignore next */
55
+ () => true,
56
+ );
41
57
  const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
42
58
  const objDel = (obj, id) => {
43
59
  delete obj[id];
44
60
  return obj;
45
61
  };
62
+ const objSize = (obj) => size(objIds(obj));
63
+ const objIsEqual = (obj1, obj2) => {
64
+ const entries1 = objEntries(obj1);
65
+ return (
66
+ size(entries1) === objSize(obj2) &&
67
+ arrayEvery(entries1, ([index, value1]) =>
68
+ isObject(value1)
69
+ ? isObject(obj2[index])
70
+ ? objIsEqual(obj2[index], value1)
71
+ : false
72
+ : obj2[index] === value1,
73
+ )
74
+ );
75
+ };
46
76
 
47
77
  const {createContext, useContext: useContext$1, useEffect: useEffect$1} = React;
48
78
  const Context = createContext([]);
@@ -99,49 +129,67 @@ const {
99
129
  useLayoutEffect: useLayoutEffect$1,
100
130
  useRef: useRef$1,
101
131
  useState: useState$2,
132
+ useSyncExternalStore,
102
133
  } = React;
103
134
  const EMPTY_ARRAY = [];
104
- const EMPTY_OBJECT = {};
105
- const DEFAULT_CHECKPOINT_IDS = [[], void 0, []];
135
+ const DEFAULTS = [{}, [], [EMPTY_ARRAY, void 0, EMPTY_ARRAY], void 0, false, 0];
136
+ const IS_EQUAL = (thing1, thing2) => thing1 === thing2;
137
+ const IS_EQUALS = [
138
+ objIsEqual,
139
+ arrayIsEqual,
140
+ (
141
+ [backwardIds1, currentId1, forwardIds1],
142
+ [backwardIds2, currentId2, forwardIds2],
143
+ ) =>
144
+ currentId1 === currentId2 &&
145
+ arrayIsEqual(backwardIds1, backwardIds2) &&
146
+ arrayIsEqual(forwardIds1, forwardIds2),
147
+ ];
106
148
  const useCreate = (store, create, createDeps = EMPTY_ARRAY) => {
107
- const thing = useMemo$1(
108
- () => create(store),
149
+ const [, rerender] = useState$2();
150
+ const [thing, setThing] = useState$2();
151
+ useEffect(
152
+ () => {
153
+ const newThing = create(store);
154
+ setThing(newThing);
155
+ rerender([]);
156
+ return newThing.destroy;
157
+ },
109
158
  // eslint-disable-next-line react-hooks/exhaustive-deps
110
159
  [store, ...createDeps],
111
160
  );
112
- useEffect(() => () => thing.destroy(), [thing]);
113
161
  return thing;
114
162
  };
115
- const useListenable = (
116
- listenable,
117
- thing,
118
- defaulted,
119
- args = EMPTY_ARRAY,
120
- getFromListenerArg,
121
- getterPrefix = GET,
122
- listenerPrefix = EMPTY_STRING,
123
- ) => {
124
- const [, rerender] = useState$2();
163
+ const addAndDelListener = (thing, listenable, ...args) => {
164
+ const listenerId = thing?.[ADD + listenable + LISTENER]?.(...args);
165
+ return () => thing?.delListener(listenerId);
166
+ };
167
+ const useListenable = (listenable, thing, type, args = EMPTY_ARRAY) => {
168
+ const lastResult = useRef$1(DEFAULTS[type]);
125
169
  const getResult = useCallback$2(
126
- () => thing?.[getterPrefix + listenable]?.(...args) ?? defaulted,
127
- /* eslint-disable-next-line react-hooks/exhaustive-deps */
128
- [thing, getterPrefix, listenable, ...args, defaulted],
129
- );
130
- const result = useRef$1();
131
- useMemo$1(() => (result.current = getResult()), [getResult]);
132
- useListener(
133
- listenerPrefix + listenable,
134
- thing,
135
- (...listenerArgs) => {
136
- result.current = isUndefined(getFromListenerArg)
137
- ? getResult()
138
- : listenerArgs[getFromListenerArg];
139
- rerender([]);
170
+ () => {
171
+ const nextResult =
172
+ thing?.[(type == 4 ? _HAS : GET) + listenable]?.(...args) ??
173
+ DEFAULTS[type];
174
+ return !(IS_EQUALS[type] ?? IS_EQUAL)(nextResult, lastResult.current)
175
+ ? (lastResult.current = nextResult)
176
+ : lastResult.current;
140
177
  },
141
- [getResult, getFromListenerArg],
142
- args,
178
+ /* eslint-disable-next-line react-hooks/exhaustive-deps */
179
+ [thing, type, listenable, ...args],
180
+ );
181
+ const subscribe = useCallback$2(
182
+ (listener) =>
183
+ addAndDelListener(
184
+ thing,
185
+ (type == 4 ? HAS : EMPTY_STRING) + listenable,
186
+ ...args,
187
+ listener,
188
+ ),
189
+ /* eslint-disable-next-line react-hooks/exhaustive-deps */
190
+ [thing, type, listenable, ...args],
143
191
  );
144
- return result.current;
192
+ return useSyncExternalStore(subscribe, getResult);
145
193
  };
146
194
  const useListener = (
147
195
  listenable,
@@ -151,14 +199,12 @@ const useListener = (
151
199
  preArgs = EMPTY_ARRAY,
152
200
  ...postArgs
153
201
  ) =>
154
- useLayoutEffect$1(() => {
155
- const listenerId = thing?.[ADD + listenable + LISTENER]?.(
156
- ...preArgs,
157
- listener,
158
- ...postArgs,
159
- );
160
- return () => thing?.delListener(listenerId);
161
- }, [thing, listenable, ...preArgs, ...listenerDeps, ...postArgs]);
202
+ useLayoutEffect$1(
203
+ () =>
204
+ addAndDelListener(thing, listenable, ...preArgs, listener, ...postArgs),
205
+ // eslint-disable-next-line react-hooks/exhaustive-deps
206
+ [thing, listenable, ...preArgs, ...listenerDeps, ...postArgs],
207
+ );
162
208
  const useSetCallback = (
163
209
  storeOrStoreId,
164
210
  settable,
@@ -216,56 +262,28 @@ const useCreateStore = (create, createDeps = EMPTY_ARRAY) =>
216
262
  useMemo$1(create, createDeps);
217
263
  const useStoreIds = () => useThingIds(1);
218
264
  const useHasTables = (storeOrStoreId) =>
219
- useListenable(
220
- TABLES,
221
- useStoreOrStoreById(storeOrStoreId),
222
- false,
223
- [],
224
- 1,
225
- _HAS,
226
- HAS,
227
- );
265
+ useListenable(TABLES, useStoreOrStoreById(storeOrStoreId), 4, []);
228
266
  const useTables = (storeOrStoreId) =>
229
- useListenable(TABLES, useStoreOrStoreById(storeOrStoreId), EMPTY_OBJECT);
267
+ useListenable(TABLES, useStoreOrStoreById(storeOrStoreId), 0);
230
268
  const useTableIds = (storeOrStoreId) =>
231
- useListenable(TABLE_IDS, useStoreOrStoreById(storeOrStoreId), EMPTY_ARRAY);
269
+ useListenable(TABLE_IDS, useStoreOrStoreById(storeOrStoreId), 1);
232
270
  const useHasTable = (tableId, storeOrStoreId) =>
233
- useListenable(
234
- TABLE,
235
- useStoreOrStoreById(storeOrStoreId),
236
- false,
237
- [tableId],
238
- 2,
239
- _HAS,
240
- HAS,
241
- );
271
+ useListenable(TABLE, useStoreOrStoreById(storeOrStoreId), 4, [tableId]);
242
272
  const useTable = (tableId, storeOrStoreId) =>
243
- useListenable(TABLE, useStoreOrStoreById(storeOrStoreId), EMPTY_OBJECT, [
273
+ useListenable(TABLE, useStoreOrStoreById(storeOrStoreId), 0, [tableId]);
274
+ const useTableCellIds = (tableId, storeOrStoreId) =>
275
+ useListenable(TABLE + CELL_IDS, useStoreOrStoreById(storeOrStoreId), 1, [
244
276
  tableId,
245
277
  ]);
246
- const useTableCellIds = (tableId, storeOrStoreId) =>
247
- useListenable(
248
- TABLE + CELL_IDS,
249
- useStoreOrStoreById(storeOrStoreId),
250
- EMPTY_ARRAY,
251
- [tableId],
252
- );
253
278
  const useHasTableCell = (tableId, cellId, storeOrStoreId) =>
254
- useListenable(
255
- TABLE + CELL,
256
- useStoreOrStoreById(storeOrStoreId),
257
- false,
258
- [tableId, cellId],
259
- 3,
260
- _HAS,
261
- HAS,
262
- );
263
- const useRowCount = (tableId, storeOrStoreId) =>
264
- useListenable(ROW_COUNT, useStoreOrStoreById(storeOrStoreId), 0, [tableId]);
265
- const useRowIds = (tableId, storeOrStoreId) =>
266
- useListenable(ROW_IDS, useStoreOrStoreById(storeOrStoreId), EMPTY_ARRAY, [
279
+ useListenable(TABLE + CELL, useStoreOrStoreById(storeOrStoreId), 4, [
267
280
  tableId,
281
+ cellId,
268
282
  ]);
283
+ const useRowCount = (tableId, storeOrStoreId) =>
284
+ useListenable(ROW_COUNT, useStoreOrStoreById(storeOrStoreId), 5, [tableId]);
285
+ const useRowIds = (tableId, storeOrStoreId) =>
286
+ useListenable(ROW_IDS, useStoreOrStoreById(storeOrStoreId), 1, [tableId]);
269
287
  const useSortedRowIds = (
270
288
  tableId,
271
289
  cellId,
@@ -274,77 +292,44 @@ const useSortedRowIds = (
274
292
  limit,
275
293
  storeOrStoreId,
276
294
  ) =>
277
- useListenable(
278
- SORTED_ROW_IDS,
279
- useStoreOrStoreById(storeOrStoreId),
280
- EMPTY_ARRAY,
281
- [tableId, cellId, descending, offset, limit],
282
- 6,
283
- );
295
+ useListenable(SORTED_ROW_IDS, useStoreOrStoreById(storeOrStoreId), 1, [
296
+ tableId,
297
+ cellId,
298
+ descending,
299
+ offset,
300
+ limit,
301
+ ]);
284
302
  const useHasRow = (tableId, rowId, storeOrStoreId) =>
285
- useListenable(
286
- ROW,
287
- useStoreOrStoreById(storeOrStoreId),
288
- false,
289
- [tableId, rowId],
290
- 3,
291
- _HAS,
292
- HAS,
293
- );
303
+ useListenable(ROW, useStoreOrStoreById(storeOrStoreId), 4, [tableId, rowId]);
294
304
  const useRow = (tableId, rowId, storeOrStoreId) =>
295
- useListenable(ROW, useStoreOrStoreById(storeOrStoreId), EMPTY_OBJECT, [
305
+ useListenable(ROW, useStoreOrStoreById(storeOrStoreId), 0, [tableId, rowId]);
306
+ const useCellIds = (tableId, rowId, storeOrStoreId) =>
307
+ useListenable(CELL_IDS, useStoreOrStoreById(storeOrStoreId), 1, [
296
308
  tableId,
297
309
  rowId,
298
310
  ]);
299
- const useCellIds = (tableId, rowId, storeOrStoreId) =>
300
- useListenable(CELL_IDS, useStoreOrStoreById(storeOrStoreId), EMPTY_ARRAY, [
311
+ const useHasCell = (tableId, rowId, cellId, storeOrStoreId) =>
312
+ useListenable(CELL, useStoreOrStoreById(storeOrStoreId), 4, [
301
313
  tableId,
302
314
  rowId,
315
+ cellId,
303
316
  ]);
304
- const useHasCell = (tableId, rowId, cellId, storeOrStoreId) =>
305
- useListenable(
306
- CELL,
307
- useStoreOrStoreById(storeOrStoreId),
308
- false,
309
- [tableId, rowId, cellId],
310
- 4,
311
- _HAS,
312
- HAS,
313
- );
314
317
  const useCell = (tableId, rowId, cellId, storeOrStoreId) =>
315
- useListenable(
316
- CELL,
317
- useStoreOrStoreById(storeOrStoreId),
318
- void 0,
319
- [tableId, rowId, cellId],
320
- 4,
321
- );
318
+ useListenable(CELL, useStoreOrStoreById(storeOrStoreId), 3, [
319
+ tableId,
320
+ rowId,
321
+ cellId,
322
+ ]);
322
323
  const useHasValues = (storeOrStoreId) =>
323
- useListenable(
324
- VALUES,
325
- useStoreOrStoreById(storeOrStoreId),
326
- false,
327
- [],
328
- 1,
329
- _HAS,
330
- HAS,
331
- );
324
+ useListenable(VALUES, useStoreOrStoreById(storeOrStoreId), 4, []);
332
325
  const useValues = (storeOrStoreId) =>
333
- useListenable(VALUES, useStoreOrStoreById(storeOrStoreId), EMPTY_OBJECT);
326
+ useListenable(VALUES, useStoreOrStoreById(storeOrStoreId), 0);
334
327
  const useValueIds = (storeOrStoreId) =>
335
- useListenable(VALUE_IDS, useStoreOrStoreById(storeOrStoreId), EMPTY_ARRAY);
328
+ useListenable(VALUE_IDS, useStoreOrStoreById(storeOrStoreId), 1);
336
329
  const useHasValue = (valueId, storeOrStoreId) =>
337
- useListenable(
338
- VALUE,
339
- useStoreOrStoreById(storeOrStoreId),
340
- false,
341
- [valueId],
342
- 2,
343
- _HAS,
344
- HAS,
345
- );
330
+ useListenable(VALUE, useStoreOrStoreById(storeOrStoreId), 4, [valueId]);
346
331
  const useValue = (valueId, storeOrStoreId) =>
347
- useListenable(VALUE, useStoreOrStoreById(storeOrStoreId), void 0, [valueId]);
332
+ useListenable(VALUE, useStoreOrStoreById(storeOrStoreId), 3, [valueId]);
348
333
  const useSetTablesCallback = (
349
334
  getTables,
350
335
  getTablesDeps,
@@ -860,13 +845,9 @@ const useCreateMetrics = (store, create, createDeps) =>
860
845
  useCreate(store, create, createDeps);
861
846
  const useMetricsIds = () => useThingIds(3);
862
847
  const useMetricIds = (metricsOrMetricsId) =>
863
- useListenable(
864
- 'MetricIds',
865
- useMetricsOrMetricsById(metricsOrMetricsId),
866
- EMPTY_ARRAY,
867
- );
848
+ useListenable('MetricIds', useMetricsOrMetricsById(metricsOrMetricsId), 1);
868
849
  const useMetric = (metricId, metricsOrMetricsId) =>
869
- useListenable('Metric', useMetricsOrMetricsById(metricsOrMetricsId), void 0, [
850
+ useListenable('Metric', useMetricsOrMetricsById(metricsOrMetricsId), 3, [
870
851
  metricId,
871
852
  ]);
872
853
  const useMetricListener = (
@@ -886,23 +867,16 @@ const useCreateIndexes = (store, create, createDeps) =>
886
867
  useCreate(store, create, createDeps);
887
868
  const useIndexesIds = () => useThingIds(5);
888
869
  const useSliceIds = (indexId, indexesOrIndexesId) =>
889
- useListenable(
890
- 'SliceIds',
891
- useIndexesOrIndexesById(indexesOrIndexesId),
892
- EMPTY_ARRAY,
893
- [indexId],
894
- );
870
+ useListenable('SliceIds', useIndexesOrIndexesById(indexesOrIndexesId), 1, [
871
+ indexId,
872
+ ]);
895
873
  const useIndexIds = (indexesOrIndexesId) =>
896
- useListenable(
897
- 'IndexIds',
898
- useIndexesOrIndexesById(indexesOrIndexesId),
899
- EMPTY_ARRAY,
900
- );
874
+ useListenable('IndexIds', useIndexesOrIndexesById(indexesOrIndexesId), 1);
901
875
  const useSliceRowIds = (indexId, sliceId, indexesOrIndexesId) =>
902
876
  useListenable(
903
877
  'Slice' + ROW_IDS,
904
878
  useIndexesOrIndexesById(indexesOrIndexesId),
905
- EMPTY_ARRAY,
879
+ 1,
906
880
  [indexId, sliceId],
907
881
  );
908
882
  const useSliceIdsListener = (
@@ -939,7 +913,7 @@ const useRelationshipIds = (relationshipsOrRelationshipsId) =>
939
913
  useListenable(
940
914
  'RelationshipIds',
941
915
  useRelationshipsOrRelationshipsById(relationshipsOrRelationshipsId),
942
- EMPTY_ARRAY,
916
+ 1,
943
917
  );
944
918
  const useRemoteRowId = (
945
919
  relationshipId,
@@ -949,7 +923,7 @@ const useRemoteRowId = (
949
923
  useListenable(
950
924
  'RemoteRowId',
951
925
  useRelationshipsOrRelationshipsById(relationshipsOrRelationshipsId),
952
- void 0,
926
+ 3,
953
927
  [relationshipId, localRowId],
954
928
  );
955
929
  const useLocalRowIds = (
@@ -960,7 +934,7 @@ const useLocalRowIds = (
960
934
  useListenable(
961
935
  'Local' + ROW_IDS,
962
936
  useRelationshipsOrRelationshipsById(relationshipsOrRelationshipsId),
963
- EMPTY_ARRAY,
937
+ 1,
964
938
  [relationshipId, remoteRowId],
965
939
  );
966
940
  const useLinkedRowIds = (
@@ -971,7 +945,7 @@ const useLinkedRowIds = (
971
945
  useListenable(
972
946
  'Linked' + ROW_IDS,
973
947
  useRelationshipsOrRelationshipsById(relationshipsOrRelationshipsId),
974
- EMPTY_ARRAY,
948
+ 1,
975
949
  [relationshipId, firstRowId],
976
950
  );
977
951
  const useRemoteRowIdListener = (
@@ -1020,37 +994,33 @@ const useCreateQueries = (store, create, createDeps) =>
1020
994
  useCreate(store, create, createDeps);
1021
995
  const useQueriesIds = () => useThingIds(9);
1022
996
  const useQueryIds = (queriesOrQueriesId) =>
1023
- useListenable(
1024
- 'QueryIds',
1025
- useQueriesOrQueriesById(queriesOrQueriesId),
1026
- EMPTY_ARRAY,
1027
- );
997
+ useListenable('QueryIds', useQueriesOrQueriesById(queriesOrQueriesId), 1);
1028
998
  const useResultTable = (queryId, queriesOrQueriesId) =>
1029
999
  useListenable(
1030
1000
  RESULT + TABLE,
1031
1001
  useQueriesOrQueriesById(queriesOrQueriesId),
1032
- EMPTY_OBJECT,
1002
+ 0,
1033
1003
  [queryId],
1034
1004
  );
1035
1005
  const useResultTableCellIds = (queryId, queriesOrQueriesId) =>
1036
1006
  useListenable(
1037
1007
  RESULT + TABLE + CELL_IDS,
1038
1008
  useQueriesOrQueriesById(queriesOrQueriesId),
1039
- EMPTY_ARRAY,
1009
+ 1,
1040
1010
  [queryId],
1041
1011
  );
1042
1012
  const useResultRowCount = (queryId, queriesOrQueriesId) =>
1043
1013
  useListenable(
1044
1014
  RESULT + ROW_COUNT,
1045
1015
  useQueriesOrQueriesById(queriesOrQueriesId),
1046
- 0,
1016
+ 5,
1047
1017
  [queryId],
1048
1018
  );
1049
1019
  const useResultRowIds = (queryId, queriesOrQueriesId) =>
1050
1020
  useListenable(
1051
1021
  RESULT + ROW_IDS,
1052
1022
  useQueriesOrQueriesById(queriesOrQueriesId),
1053
- EMPTY_ARRAY,
1023
+ 1,
1054
1024
  [queryId],
1055
1025
  );
1056
1026
  const useResultSortedRowIds = (
@@ -1064,31 +1034,27 @@ const useResultSortedRowIds = (
1064
1034
  useListenable(
1065
1035
  RESULT + SORTED_ROW_IDS,
1066
1036
  useQueriesOrQueriesById(queriesOrQueriesId),
1067
- EMPTY_ARRAY,
1037
+ 1,
1068
1038
  [queryId, cellId, descending, offset, limit],
1069
- 6,
1070
1039
  );
1071
1040
  const useResultRow = (queryId, rowId, queriesOrQueriesId) =>
1072
- useListenable(
1073
- RESULT + ROW,
1074
- useQueriesOrQueriesById(queriesOrQueriesId),
1075
- EMPTY_OBJECT,
1076
- [queryId, rowId],
1077
- );
1041
+ useListenable(RESULT + ROW, useQueriesOrQueriesById(queriesOrQueriesId), 0, [
1042
+ queryId,
1043
+ rowId,
1044
+ ]);
1078
1045
  const useResultCellIds = (queryId, rowId, queriesOrQueriesId) =>
1079
1046
  useListenable(
1080
1047
  RESULT + CELL_IDS,
1081
1048
  useQueriesOrQueriesById(queriesOrQueriesId),
1082
- EMPTY_ARRAY,
1049
+ 1,
1083
1050
  [queryId, rowId],
1084
1051
  );
1085
1052
  const useResultCell = (queryId, rowId, cellId, queriesOrQueriesId) =>
1086
- useListenable(
1087
- RESULT + CELL,
1088
- useQueriesOrQueriesById(queriesOrQueriesId),
1089
- void 0,
1090
- [queryId, rowId, cellId],
1091
- );
1053
+ useListenable(RESULT + CELL, useQueriesOrQueriesById(queriesOrQueriesId), 3, [
1054
+ queryId,
1055
+ rowId,
1056
+ cellId,
1057
+ ]);
1092
1058
  const useResultTableListener = (
1093
1059
  queryId,
1094
1060
  listener,
@@ -1208,13 +1174,13 @@ const useCheckpointIds = (checkpointsOrCheckpointsId) =>
1208
1174
  useListenable(
1209
1175
  'CheckpointIds',
1210
1176
  useCheckpointsOrCheckpointsById(checkpointsOrCheckpointsId),
1211
- DEFAULT_CHECKPOINT_IDS,
1177
+ 2,
1212
1178
  );
1213
1179
  const useCheckpoint = (checkpointId, checkpointsOrCheckpointsId) =>
1214
1180
  useListenable(
1215
1181
  'Checkpoint',
1216
1182
  useCheckpointsOrCheckpointsById(checkpointsOrCheckpointsId),
1217
- void 0,
1183
+ 3,
1218
1184
  [checkpointId],
1219
1185
  );
1220
1186
  const useSetCheckpointCallback = (
@@ -1322,26 +1288,26 @@ const useCreatePersister = (
1322
1288
  destroyDeps = EMPTY_ARRAY,
1323
1289
  ) => {
1324
1290
  const [, rerender] = useState$2();
1325
- const persister = useMemo$1(
1326
- () => create(store),
1327
- // eslint-disable-next-line react-hooks/exhaustive-deps
1328
- [store, ...createDeps],
1329
- );
1291
+ const [persister, setPersister] = useState$2();
1330
1292
  useEffect(
1331
1293
  () => {
1332
- (async () => {
1294
+ const newPersister = create(store);
1295
+ setPersister(newPersister);
1296
+ if (newPersister) {
1333
1297
  if (then) {
1334
- await then(persister);
1335
- rerender([]);
1298
+ (async () => {
1299
+ await then(newPersister);
1300
+ rerender([]);
1301
+ })();
1336
1302
  }
1337
- })();
1338
- return () => {
1339
- persister?.destroy();
1340
- destroy?.(persister);
1341
- };
1303
+ return () => {
1304
+ newPersister.destroy();
1305
+ destroy?.(newPersister);
1306
+ };
1307
+ }
1342
1308
  },
1343
1309
  // eslint-disable-next-line react-hooks/exhaustive-deps
1344
- [persister, ...thenDeps, ...destroyDeps],
1310
+ [store, ...createDeps, ...thenDeps, ...destroyDeps],
1345
1311
  );
1346
1312
  return persister;
1347
1313
  };
@@ -1 +1 @@
1
- const e=e=>null==e,l=(l,n,t)=>e(l)?null==t?void 0:t():n(l),n=e=>e.length,t=(e,l)=>e.includes(l),r=(e,l)=>e.forEach(l),o=e=>0==n(e),u=(e,...l)=>e.push(...l),s=e=>e.pop(),i=e=>e.shift(),d=Object.freeze,a=(e,l)=>{var n;return null!=(n=null==e?void 0:e.has(l))&&n},c=l=>e(l)||0==(e=>{var l;return null!=(l=null==e?void 0:e.size)?l:0})(l),v=(e,l)=>null==e?void 0:e.forEach(l),h=(e,l)=>null==e?void 0:e.delete(l),p=e=>new Map(e),C=(e,l)=>null==e?void 0:e.get(l),f=(l,n,t)=>e(t)?(h(l,n),l):null==l?void 0:l.set(n,t),g=(e,l,n)=>(a(e,l)||f(e,l,n()),C(e,l)),k=(e,t,r,o,u=0)=>l((r?g:C)(e,t[u],u>n(t)-2?r:p),(l=>{if(u>n(t)-2)return(null==o?void 0:o(l))&&f(e,t[u]),l;const s=k(l,t,r,o,u+1);return c(l)&&f(e,t[u]),s})),L=l=>new Set(Array.isArray(l)||e(l)?l:[l]),w=/^\d+$/,S=(S=>{const y=new WeakMap;return S=>(y.has(S)||y.set(S,(S=>{let y,z,E,V=100,A=p(),F=p(),I=1;const M=p(),b=p(),[j,x,B]=(t=>{let o;const[s,d]=(()=>{const e=[];let l=0;return[n=>{var t;return null!=(t=n?i(e):null)?t:""+l++},l=>{w.test(l)&&n(e)<1e3&&u(e,l)}]})(),a=p();return[(e,l,n,t=[],r=(()=>[]))=>{null!=o||(o=_);const u=s(1);var i,d;return f(a,u,[e,l,n,t,r]),d=u,null==(i=k(l,null!=n?n:[""],L))||i.add(d),u},(e,l,...t)=>r(((e,l=[""])=>{const t=[],o=(e,s)=>s==n(l)?u(t,e):null===l[s]?v(e,(e=>o(e,s+1))):r([l[s],null],(l=>o(C(e,l),s+1)));return o(e,0),t})(e,l),(e=>v(e,(e=>C(a,e)[0](o,...null!=l?l:[],...t))))),e=>l(C(a,e),(([,l,n])=>(k(l,null!=n?n:[""],void 0,(l=>(h(l,e),c(l)?1:0))),f(a,e),d(e),n))),t=>l(C(a,t),(([l,,t=[],u,s])=>{const i=(...d)=>{var a,c;const v=n(d);v==n(t)?l(o,...d,...s(d)):e(t[v])?r(null!=(c=null==(a=u[v])?void 0:a.call(u,...d))?c:[],(e=>i(...d,e))):i(...d,t[v])};i()}))]})(),O=p(),T=p(),W=[],$=[],m=(l,n)=>{I=0,S.transaction((()=>{const[t,r]=C(O,n);v(t,((n,t)=>v(n,((n,r)=>v(n,((n,o)=>((l,n,t,r,o)=>e(o)?l.delCell(n,t,r,!0):l.setCell(n,t,r,o))(S,t,r,o,n[l]))))))),v(r,((n,t)=>((l,n,t)=>e(t)?l.delValue(n):l.setValue(n,t))(S,t,n[l])))})),I=1},q=e=>{f(O,e),f(T,e),x(b,[e])},D=(e,l)=>r(((e,l)=>e.splice(0,l))(e,null!=l?l:n(e)),q),G=()=>D(W,n(W)-V),H=()=>l(y,(()=>{u(W,y),G(),D($),y=void 0,E=1})),J=()=>{y=s(W),E=1},K=S.addCellListener(null,null,null,((e,l,n,t,r,o)=>{if(I){H();const e=g(A,l,p),u=g(e,n,p),s=g(u,t,(()=>[o,void 0]));s[1]=r,s[0]===r&&c(f(u,t))&&c(f(e,n))&&c(f(A,l))&&J(),U()}})),N=S.addValueListener(null,((e,l,n,t)=>{if(I){H();const e=g(F,l,(()=>[t,void 0]));e[1]=n,e[0]===n&&c(f(F,l))&&J(),U()}})),P=(l="")=>(e(y)&&(y=""+z++,f(O,y,[A,F]),Y(y,l),A=p(),F=p(),E=1),y),Q=()=>{o(W)||(((e,...l)=>{e.unshift(...l)})($,P()),m(0,y),y=s(W),E=1)},R=()=>{o($)||(u(W,y),y=i($),m(1,y),E=1)},U=()=>{E&&(x(M),E=0)},X=e=>{const l=P(e);return U(),l},Y=(e,l)=>(Z(e)&&C(T,e)!==l&&(f(T,e,l),x(b,[e])),_),Z=e=>a(O,e),_={setSize:e=>(V=e,G(),_),addCheckpoint:X,setCheckpoint:Y,getStore:()=>S,getCheckpointIds:()=>[[...W],y,[...$]],forEachCheckpoint:e=>{return l=e,v(T,((e,n)=>l(n,e)));var l},hasCheckpoint:Z,getCheckpoint:e=>C(T,e),goBackward:()=>(Q(),U(),_),goForward:()=>(R(),U(),_),goTo:l=>{const n=t(W,l)?Q:t($,l)?R:null;for(;!e(n)&&l!=y;)n();return U(),_},addCheckpointIdsListener:e=>j(e,M),addCheckpointListener:(e,l)=>j(l,b,[e]),delListener:e=>(B(e),_),clear:()=>(D(W),D($),e(y)||q(y),y=void 0,z=0,X(),_),clearForward:()=>(o($)||(D($),x(M)),_),destroy:()=>{S.delListener(K),S.delListener(N)},getListenerStats:()=>({})};return d(_.clear())})(S)),y.get(S))})();export{S as createCheckpoints};
1
+ const e=e=>null==e,n=(n,l,t)=>e(n)?null==t?void 0:t():l(n),l=e=>e.length,t=(e,n)=>e.includes(n),r=(e,n)=>e.forEach(n),o=e=>0==l(e),s=(e,...n)=>e.push(...n),u=e=>e.pop(),i=e=>e.shift(),d=Object.freeze,a=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},c=n=>e(n)||0==(e=>{var n;return null!=(n=null==e?void 0:e.size)?n:0})(n),v=(e,n)=>null==e?void 0:e.forEach(n),h=(e,n)=>null==e?void 0:e.delete(n),p=e=>new Map(e),g=(e,n)=>null==e?void 0:e.get(n),C=(n,l,t)=>e(t)?(h(n,l),n):null==n?void 0:n.set(l,t),f=(e,n,l)=>(a(e,n)||C(e,n,l()),g(e,n)),k=(e,t,r,o,s=0)=>n((r?f:g)(e,t[s],s>l(t)-2?r:p),(n=>{if(s>l(t)-2)return(null==o?void 0:o(n))&&C(e,t[s]),n;const u=k(n,t,r,o,s+1);return c(n)&&C(e,t[s]),u})),L=n=>new Set(Array.isArray(n)||e(n)?n:[n]),w=/^\d+$/,S=((S,y)=>{const z=new WeakMap;return S=>{z.has(S)||z.set(S,(S=>{let y,z,E,V=100,A=p(),F=p(),I=1;const M=p(),_=p(),[b,j,x]=(t=>{let o;const[u,d]=(()=>{const e=[];let n=0;return[l=>{var t;return null!=(t=l?i(e):null)?t:""+n++},n=>{w.test(n)&&l(e)<1e3&&s(e,n)}]})(),a=p();return[(e,n,l,t=[],r=(()=>[]))=>{null!=o||(o=Z);const s=u(1);var i,d;return C(a,s,[e,n,l,t,r]),d=s,null==(i=k(n,null!=l?l:[""],L))||i.add(d),s},(e,n,...t)=>r(((e,n=[""])=>{const t=[],o=(e,u)=>u==l(n)?s(t,e):null===n[u]?v(e,(e=>o(e,u+1))):r([n[u],null],(n=>o(g(e,n),u+1)));return o(e,0),t})(e,n),(e=>v(e,(e=>g(a,e)[0](o,...null!=n?n:[],...t))))),e=>n(g(a,e),(([,n,l])=>(k(n,null!=l?l:[""],void 0,(n=>(h(n,e),c(n)?1:0))),C(a,e),d(e),l))),t=>n(g(a,t),(([n,,t=[],s,u])=>{const i=(...d)=>{var a,c;const v=l(d);v==l(t)?n(o,...d,...u(d)):e(t[v])?r(null!=(c=null==(a=s[v])?void 0:a.call(s,...d))?c:[],(e=>i(...d,e))):i(...d,t[v])};i()}))]})(),B=p(),O=p(),T=[],W=[],$=(n,l)=>{I=0,S.transaction((()=>{const[t,r]=g(B,l);v(t,((l,t)=>v(l,((l,r)=>v(l,((l,o)=>((n,l,t,r,o)=>e(o)?n.delCell(l,t,r,!0):n.setCell(l,t,r,o))(S,t,r,o,l[n]))))))),v(r,((l,t)=>((n,l,t)=>e(t)?n.delValue(l):n.setValue(l,t))(S,t,l[n])))})),I=1},m=e=>{C(B,e),C(O,e),j(_,[e])},q=(e,n)=>r(((e,n)=>e.splice(0,n))(e,null!=n?n:l(e)),m),D=()=>q(T,l(T)-V),G=()=>n(y,(()=>{s(T,y),D(),q(W),y=void 0,E=1})),H=()=>{y=u(T),E=1};let J,K;const N=(n="")=>(e(y)&&(y=""+z++,C(B,y,[A,F]),X(y,n),A=p(),F=p(),E=1),y),P=()=>{o(T)||(((e,...n)=>{e.unshift(...n)})(W,N()),$(0,y),y=u(T),E=1)},Q=()=>{o(W)||(s(T,y),y=i(W),$(1,y),E=1)},R=()=>{E&&(j(M),E=0)},U=e=>{const n=N(e);return R(),n},X=(e,n)=>(Y(e)&&g(O,e)!==n&&(C(O,e,n),j(_,[e])),Z),Y=e=>a(B,e),Z={setSize:e=>(V=e,D(),Z),addCheckpoint:U,setCheckpoint:X,getStore:()=>S,getCheckpointIds:()=>[[...T],y,[...W]],forEachCheckpoint:e=>{return n=e,v(O,((e,l)=>n(l,e)));var n},hasCheckpoint:Y,getCheckpoint:e=>g(O,e),goBackward:()=>(P(),R(),Z),goForward:()=>(Q(),R(),Z),goTo:n=>{const l=t(T,n)?P:t(W,n)?Q:null;for(;!e(l)&&n!=y;)l();return R(),Z},addCheckpointIdsListener:e=>b(e,M),addCheckpointListener:(e,n)=>b(n,_,[e]),delListener:e=>(x(e),Z),clear:()=>(q(T),q(W),e(y)||m(y),y=void 0,z=0,U(),Z),clearForward:()=>(o(W)||(q(W),j(M)),Z),destroy:()=>{S.delListener(J),S.delListener(K)},getListenerStats:()=>({}),_registerListeners:()=>{J=S.addCellListener(null,null,null,((e,n,l,t,r,o)=>{if(I){G();const e=f(A,n,p),s=f(e,l,p),u=f(s,t,(()=>[o,void 0]));u[1]=r,u[0]===r&&c(C(s,t))&&c(C(e,l))&&c(C(A,n))&&H(),R()}})),K=S.addValueListener(null,((e,n,l,t)=>{if(I){G();const e=f(F,n,(()=>[t,void 0]));e[1]=l,e[0]===l&&c(C(F,n))&&H(),R()}}))}};return d(Z.clear())})(S));const E=z.get(S);return null==y||y(E),E}})(0,(e=>e._registerListeners()));export{S as createCheckpoints};
Binary file
@@ -1 +1 @@
1
- const e=e=>typeof e,n="",l=e(n),t=e=>n+e,r=e=>null==e,s=(e,n,l)=>r(e)?null==l?void 0:l():n(e),o=e=>Array.isArray(e),u=e=>e.length,d=(e,n)=>e.every(n),i=(e,n)=>d(e,((l,t)=>0==t||n(e[t-1],l)<=0)),a=(e,n)=>e.sort(n),c=(e,n)=>e.forEach(n),v=(e,...n)=>e.push(...n),h=Object.freeze,I=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},f=e=>r(e)||0==(e=>{var n;return null!=(n=null==e?void 0:e.size)?n:0})(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},L=e=>e.clear(),S=(e,n)=>null==e?void 0:e.forEach(n),w=(e,n)=>null==e?void 0:e.delete(n),x=e=>new Map(e),p=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},y=(e,n)=>null==e?void 0:e.get(n),E=(e,n)=>S(e,((e,l)=>n(l,e))),R=(e,n,l)=>r(l)?(w(e,n),e):null==e?void 0:e.set(n,l),b=(e,n,l)=>(I(e,n)||R(e,n,l()),y(e,n)),T=(e,n,l,t,r=0)=>s((l?b:y)(e,n[r],r>u(n)-2?l:x),(s=>{if(r>u(n)-2)return(null==t?void 0:t(s))&&R(e,n[r]),s;const o=T(s,n,l,t,r+1);return f(s)&&R(e,n[r]),o})),k=e=>new Set(o(e)||r(e)?e:[e]),z=(e,n)=>null==e?void 0:e.add(n),A=(t,r)=>e(t)==l?e=>e(t):null!=t?t:()=>null!=r?r:n,C=(e,n)=>(null!=e?e:0)<(null!=n?n:0)?-1:1,D=/^\d+$/,M=(e=>{const l=new WeakMap;return e=>(l.has(e)||l.set(e,(e=>{const l=x(),M=x(),[j,m,O]=(e=>{let l;const[t,o]=(()=>{const e=[];let l=0;return[t=>{var r;return null!=(r=t?e.shift():null)?r:n+l++},n=>{D.test(n)&&u(e)<1e3&&v(e,n)}]})(),d=x();return[(e,r,s,o=[],u=(()=>[]))=>{null!=l||(l=U);const i=t(1);return R(d,i,[e,r,s,o,u]),z(T(r,null!=s?s:[n],k),i),i},(e,t,...r)=>c(((e,l=[n])=>{const t=[],r=(e,n)=>n==u(l)?v(t,e):null===l[n]?S(e,(e=>r(e,n+1))):c([l[n],null],(l=>r(y(e,l),n+1)));return r(e,0),t})(e,t),(e=>S(e,(e=>y(d,e)[0](l,...null!=t?t:[],...r))))),e=>s(y(d,e),(([,l,t])=>(T(l,null!=t?t:[n],void 0,(n=>(w(n,e),f(n)?1:0))),R(d,e),o(e),t))),e=>s(y(d,e),(([e,,n=[],t,s])=>{const o=(...d)=>{var i,a;const v=u(d);v==u(n)?e(l,...d,...s(d)):r(n[v])?c(null!=(a=null==(i=t[v])?void 0:i.call(t,...d))?a:[],(e=>o(...d,e))):o(...d,n[v])};o()}))]})(),[W,$,q,B,F,G,H,,J,K,N,P]=((e,n,l,t,i)=>{const a=e.hasRow,v=x(),h=x(),T=x(),A=x(),C=x(),D=x(),M=(n,l,...t)=>{const r=b(D,n,k);return c(t,(n=>z(r,n)&&l&&e.callListener(n))),t},j=(n,...l)=>s(y(D,n),(t=>{c(0==u(l)?g(t):l,(n=>{e.delListener(n),w(t,n)})),f(t)&&R(D,n)})),m=(e,l)=>{R(v,e,l),I(h,e)||(R(h,e,n()),R(A,e,x()),R(C,e,x()),i(T))},O=e=>{R(v,e),R(h,e),R(A,e),R(C,e),j(e),i(T)};return[()=>e,()=>p(v),e=>E(h,e),e=>I(h,e),e=>y(v,e),e=>y(h,e),(e,n)=>R(h,e,n),m,(n,t,s,i,v)=>{m(n,t);const h=x(),f=x(),g=y(A,n),w=y(C,n),p=n=>{const s=l=>e.getCell(t,n,l),c=y(g,n),I=a(t,n)?l(i(s,n)):void 0;var L,S;if(c===I||o(c)&&o(I)&&(S=I,u(L=c)===u(S)&&d(L,((e,n)=>S[n]===e)))||R(h,n,[c,I]),!r(v)){const e=y(w,n),l=a(t,n)?v(s,n):void 0;e!=l&&R(f,n,l)}},b=e=>{s((()=>{S(h,(([,e],n)=>R(g,n,e))),S(f,((e,n)=>R(w,n,e)))}),h,f,g,w,e),L(h),L(f)};E(g,p),e.hasTable(t)&&c(e.getRowIds(t),(e=>{I(g,e)||p(e)})),b(!0),j(n),M(n,0,e.addRowListener(t,null,((e,n,l)=>p(l))),e.addTableListener(t,(()=>b())))},O,e=>t(e,T),()=>E(D,O),M,j]})(e,x,(e=>{return r(e)?n:o(e)?(l=t,e.map(l)):t(e);var l}),j,m),Q=(n,l,t)=>{const r=F(n);S(t,((n,t)=>l(t,(l=>S(n,(n=>l(n,(l=>e.forEachCell(r,n,l)))))))))},U={setIndexDefinition:(e,n,t,o,u,d=C)=>{const c=r(u)?void 0:([e],[n])=>u(e,n);return J(e,n,((n,t,u,v,h,g)=>{let L=0;const p=k(),b=k(),T=G(e);if(S(t,(([e,n],l)=>{const t=k(e),u=k(n);S(t,(e=>w(u,e)?w(t,e):0)),S(t,(e=>{z(p,e),s(y(T,e),(n=>{w(n,l),f(n)&&(R(T,e),L=1)}))})),S(u,(e=>{z(p,e),I(T,e)||(R(T,e,k()),L=1),z(y(T,e),l),r(o)||z(b,e)}))})),n(),f(h)||(g?E(T,(e=>z(b,e))):E(u,(e=>s(y(v,e),(e=>z(b,e))))),S(b,(e=>{const n=(n,l)=>d(y(h,n),y(h,l),e),l=[...y(T,e)];i(l,n)||(R(T,e,k(a(l,n))),z(p,e))}))),(L||g)&&!r(c)){const n=[...T];i(n,c)||(H(e,x(a(n,c))),L=1)}L&&m(l,[e]),S(p,(n=>m(M,[e,n])))}),A(t),s(o,A)),U},delIndexDefinition:e=>(K(e),U),getStore:W,getIndexIds:$,forEachIndex:e=>q(((n,l)=>e(n,(e=>Q(n,e,l))))),forEachSlice:(e,n)=>Q(e,n,G(e)),hasIndex:B,hasSlice:(e,n)=>I(G(e),n),getTableId:F,getSliceIds:e=>p(G(e)),getSliceRowIds:(e,n)=>g(y(G(e),n)),addIndexIdsListener:N,addSliceIdsListener:(e,n)=>j(n,l,[e]),addSliceRowIdsListener:(e,n,l)=>j(l,M,[e,n]),delListener:e=>(O(e),U),destroy:P,getListenerStats:()=>({})};return h(U)})(e)),l.get(e))})();export{M as createIndexes};
1
+ const e=e=>typeof e,n="",l=e(n),t=e=>n+e,r=e=>null==e,s=(e,n,l)=>r(e)?null==l?void 0:l():n(e),o=e=>Array.isArray(e),u=e=>e.length,d=(e,n)=>e.every(n),i=(e,n)=>d(e,((l,t)=>0==t||n(e[t-1],l)<=0)),a=(e,n)=>e.sort(n),c=(e,n)=>e.forEach(n),v=(e,...n)=>e.push(...n),h=Object.freeze,I=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},f=e=>r(e)||0==(e=>{var n;return null!=(n=null==e?void 0:e.size)?n:0})(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},L=e=>e.clear(),S=(e,n)=>null==e?void 0:e.forEach(n),w=(e,n)=>null==e?void 0:e.delete(n),x=e=>new Map(e),p=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},y=(e,n)=>null==e?void 0:e.get(n),E=(e,n)=>S(e,((e,l)=>n(l,e))),R=(e,n,l)=>r(l)?(w(e,n),e):null==e?void 0:e.set(n,l),b=(e,n,l)=>(I(e,n)||R(e,n,l()),y(e,n)),T=(e,n,l,t,r=0)=>s((l?b:y)(e,n[r],r>u(n)-2?l:x),(s=>{if(r>u(n)-2)return(null==t?void 0:t(s))&&R(e,n[r]),s;const o=T(s,n,l,t,r+1);return f(s)&&R(e,n[r]),o})),k=e=>new Set(o(e)||r(e)?e:[e]),z=(e,n)=>null==e?void 0:e.add(n),A=(t,r)=>e(t)==l?e=>e(t):null!=t?t:()=>null!=r?r:n,C=(e,n)=>(null!=e?e:0)<(null!=n?n:0)?-1:1,D=/^\d+$/,M=((e,l)=>{const M=new WeakMap;return e=>{M.has(e)||M.set(e,(e=>{const l=x(),M=x(),[j,m,O]=(e=>{let l;const[t,o]=(()=>{const e=[];let l=0;return[t=>{var r;return null!=(r=t?e.shift():null)?r:n+l++},n=>{D.test(n)&&u(e)<1e3&&v(e,n)}]})(),d=x();return[(e,r,s,o=[],u=(()=>[]))=>{null!=l||(l=U);const i=t(1);return R(d,i,[e,r,s,o,u]),z(T(r,null!=s?s:[n],k),i),i},(e,t,...r)=>c(((e,l=[n])=>{const t=[],r=(e,n)=>n==u(l)?v(t,e):null===l[n]?S(e,(e=>r(e,n+1))):c([l[n],null],(l=>r(y(e,l),n+1)));return r(e,0),t})(e,t),(e=>S(e,(e=>y(d,e)[0](l,...null!=t?t:[],...r))))),e=>s(y(d,e),(([,l,t])=>(T(l,null!=t?t:[n],void 0,(n=>(w(n,e),f(n)?1:0))),R(d,e),o(e),t))),e=>s(y(d,e),(([e,,n=[],t,s])=>{const o=(...d)=>{var i,a;const v=u(d);v==u(n)?e(l,...d,...s(d)):r(n[v])?c(null!=(a=null==(i=t[v])?void 0:i.call(t,...d))?a:[],(e=>o(...d,e))):o(...d,n[v])};o()}))]})(),[W,$,q,B,F,G,H,,J,K,N,P]=((e,n,l,t,i)=>{const a=e.hasRow,v=x(),h=x(),T=x(),A=x(),C=x(),D=x(),M=(n,l,...t)=>{const r=b(D,n,k);return c(t,(n=>z(r,n)&&l&&e.callListener(n))),t},j=(n,...l)=>s(y(D,n),(t=>{c(0==u(l)?g(t):l,(n=>{e.delListener(n),w(t,n)})),f(t)&&R(D,n)})),m=(e,l)=>{R(v,e,l),I(h,e)||(R(h,e,n()),R(A,e,x()),R(C,e,x()),i(T))},O=e=>{R(v,e),R(h,e),R(A,e),R(C,e),j(e),i(T)};return[()=>e,()=>p(v),e=>E(h,e),e=>I(h,e),e=>y(v,e),e=>y(h,e),(e,n)=>R(h,e,n),m,(n,t,s,i,v)=>{m(n,t);const h=x(),f=x(),g=y(A,n),w=y(C,n),p=n=>{const s=l=>e.getCell(t,n,l),c=y(g,n),I=a(t,n)?l(i(s,n)):void 0;var L,S;if(c===I||o(c)&&o(I)&&(S=I,u(L=c)===u(S)&&d(L,((e,n)=>S[n]===e)))||R(h,n,[c,I]),!r(v)){const e=y(w,n),l=a(t,n)?v(s,n):void 0;e!=l&&R(f,n,l)}},b=e=>{s((()=>{S(h,(([,e],n)=>R(g,n,e))),S(f,((e,n)=>R(w,n,e)))}),h,f,g,w,e),L(h),L(f)};E(g,p),e.hasTable(t)&&c(e.getRowIds(t),(e=>{I(g,e)||p(e)})),b(!0),j(n),M(n,0,e.addRowListener(t,null,((e,n,l)=>p(l))),e.addTableListener(t,(()=>b())))},O,e=>t(e,T),()=>E(D,O),M,j]})(e,x,(e=>{return r(e)?n:o(e)?(l=t,e.map(l)):t(e);var l}),j,m),Q=(n,l,t)=>{const r=F(n);S(t,((n,t)=>l(t,(l=>S(n,(n=>l(n,(l=>e.forEachCell(r,n,l)))))))))},U={setIndexDefinition:(e,n,t,o,u,d=C)=>{const c=r(u)?void 0:([e],[n])=>u(e,n);return J(e,n,((n,t,u,v,h,g)=>{let L=0;const p=k(),b=k(),T=G(e);if(S(t,(([e,n],l)=>{const t=k(e),u=k(n);S(t,(e=>w(u,e)?w(t,e):0)),S(t,(e=>{z(p,e),s(y(T,e),(n=>{w(n,l),f(n)&&(R(T,e),L=1)}))})),S(u,(e=>{z(p,e),I(T,e)||(R(T,e,k()),L=1),z(y(T,e),l),r(o)||z(b,e)}))})),n(),f(h)||(g?E(T,(e=>z(b,e))):E(u,(e=>s(y(v,e),(e=>z(b,e))))),S(b,(e=>{const n=(n,l)=>d(y(h,n),y(h,l),e),l=[...y(T,e)];i(l,n)||(R(T,e,k(a(l,n))),z(p,e))}))),(L||g)&&!r(c)){const n=[...T];i(n,c)||(H(e,x(a(n,c))),L=1)}L&&m(l,[e]),S(p,(n=>m(M,[e,n])))}),A(t),s(o,A)),U},delIndexDefinition:e=>(K(e),U),getStore:W,getIndexIds:$,forEachIndex:e=>q(((n,l)=>e(n,(e=>Q(n,e,l))))),forEachSlice:(e,n)=>Q(e,n,G(e)),hasIndex:B,hasSlice:(e,n)=>I(G(e),n),getTableId:F,getSliceIds:e=>p(G(e)),getSliceRowIds:(e,n)=>g(y(G(e),n)),addIndexIdsListener:N,addSliceIdsListener:(e,n)=>j(n,l,[e]),addSliceRowIdsListener:(e,n,l)=>j(l,M,[e,n]),delListener:e=>(O(e),U),destroy:P,getListenerStats:()=>({})};return h(U)})(e));return M.get(e)}})();export{M as createIndexes};
Binary file
@@ -1 +1 @@
1
- const e=e=>typeof e,n="",t=e(n),l=e(e),r=Math.max,i=Math.min,u=isFinite,o=e=>null==e,s=(e,n,t)=>o(e)?null==t?void 0:t():n(e),d=e=>Array.isArray(e),a=e=>e.length,v=()=>{},c=(e,n)=>e.forEach(n),h=e=>M(e,((e,n)=>e+n),0),M=(e,n,t)=>e.reduce(n,t),f=(e,...n)=>e.push(...n),g=Object.freeze,L=e=>{var n;return null!=(n=null==e?void 0:e.size)?n:0},m=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},w=e=>o(e)||0==L(e),y=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},p=e=>e.clear(),b=(e,n)=>null==e?void 0:e.forEach(n),I=(e,n)=>null==e?void 0:e.delete(n),x=e=>new Map(e),E=(e,n)=>null==e?void 0:e.get(n),R=(e,n)=>b(e,((e,t)=>n(t,e))),S=(e,n,t)=>o(t)?(I(e,n),e):null==e?void 0:e.set(n,t),T=(e,n,t)=>(m(e,n)||S(e,n,t()),E(e,n)),k=(e,n,t,l,r=0)=>s((t?T:E)(e,n[r],r>a(n)-2?t:x),(i=>{if(r>a(n)-2)return(null==l?void 0:l(i))&&S(e,n[r]),i;const u=k(i,n,t,l,r+1);return w(i)&&S(e,n[r]),u})),z=x([["avg",[(e,n)=>h(e)/n,(e,n,t)=>e+(n-e)/(t+1),(e,n,t)=>e+(e-n)/(t-1),(e,n,t,l)=>e+(n-t)/l]],["max",[e=>r(...e),(e,n)=>r(n,e),(e,n)=>n==e?void 0:e,(e,n,t)=>t==e?void 0:r(n,e)]],["min",[e=>i(...e),(e,n)=>i(n,e),(e,n)=>n==e?void 0:e,(e,n,t)=>t==e?void 0:i(n,e)]],["sum",[e=>h(e),(e,n)=>e+n,(e,n)=>e-n,(e,n,t)=>e-t+n]]]),A=e=>new Set(d(e)||o(e)?e:[e]),D=(e,n)=>null==e?void 0:e.add(n),N=/^\d+$/,j=(r=>{const i=new WeakMap;return r=>(i.has(r)||i.set(r,(r=>{const i=x(),[h,M,j]=(e=>{let t;const[l,r]=(()=>{const e=[];let t=0;return[l=>{var r;return null!=(r=l?e.shift():null)?r:n+t++},n=>{N.test(n)&&a(e)<1e3&&f(e,n)}]})(),i=x();return[(e,r,u,o=[],s=(()=>[]))=>{null!=t||(t=P);const d=l(1);return S(i,d,[e,r,u,o,s]),D(k(r,null!=u?u:[n],A),d),d},(e,l,...r)=>c(((e,t=[n])=>{const l=[],r=(e,n)=>n==a(t)?f(l,e):null===t[n]?b(e,(e=>r(e,n+1))):c([t[n],null],(t=>r(E(e,t),n+1)));return r(e,0),l})(e,l),(e=>b(e,(e=>E(i,e)[0](t,...null!=l?l:[],...r))))),e=>s(E(i,e),(([,t,l])=>(k(t,null!=l?l:[n],void 0,(n=>(I(n,e),w(n)?1:0))),S(i,e),r(e),l))),e=>s(E(i,e),(([e,,n=[],l,r])=>{const i=(...u)=>{var s,d;const v=a(u);v==a(n)?e(t,...u,...r(u)):o(n[v])?c(null!=(d=null==(s=l[v])?void 0:s.call(l,...u))?d:[],(e=>i(...u,e))):i(...u,n[v])};i()}))]})(),[C,F,O,W,$,q,B,,G,H,J,K]=((e,t,l,r,i)=>{const u=e.hasRow,v=x(),h=x(),M=x(),f=x(),g=x(),L=x(),k=(n,t,...l)=>{const r=T(L,n,A);return c(l,(n=>D(r,n)&&t&&e.callListener(n))),l},z=(n,...t)=>s(E(L,n),(l=>{c(0==a(t)?y(l):t,(n=>{e.delListener(n),I(l,n)})),w(l)&&S(L,n)})),N=(e,n)=>{S(v,e,n),m(h,e)||(S(h,e,t()),S(f,e,x()),S(g,e,x()),i(M))},j=e=>{S(v,e),S(h,e),S(f,e),S(g,e),z(e),i(M)};return[()=>e,()=>{return[...null!=(n=null==(e=v)?void 0:e.keys())?n:[]];var e,n},e=>R(h,e),e=>m(h,e),e=>E(v,e),e=>E(h,e),(e,n)=>S(h,e,n),N,(t,l,r,i,s)=>{N(t,l);const v=x(),h=x(),M=E(f,t),L=E(g,t),w=t=>{const r=n=>e.getCell(l,t,n),c=E(M,t),f=u(l,t)?(g=i(r,t),isNaN(g)||o(g)||!0===g||!1===g||g===n?void 0:1*g):void 0;var g,m,w,y;if(c===f||d(c)&&d(f)&&(w=f,a(m=c)===a(w)&&(y=(e,n)=>w[n]===e,m.every(y)))||S(v,t,[c,f]),!o(s)){const e=E(L,t),n=u(l,t)?s(r,t):void 0;e!=n&&S(h,t,n)}},y=e=>{r((()=>{b(v,(([,e],n)=>S(M,n,e))),b(h,((e,n)=>S(L,n,e)))}),v,h,M,L,e),p(v),p(h)};R(M,w),e.hasTable(l)&&c(e.getRowIds(l),(e=>{m(M,e)||w(e)})),y(!0),z(t),k(t,0,e.addRowListener(l,null,((e,n,t)=>w(t))),e.addTableListener(l,(()=>y())))},j,e=>r(e,M),()=>R(L,j),k,z]})(r,v,0,h,M),P={setMetricDefinition:(n,r,s,d,a,v,c)=>{var h;const f=e(s)==l?[s,a,v,c]:null!=(h=E(z,s))?h:E(z,"sum");return G(n,r,((e,t,l,r,s,d)=>{const a=q(n),v=L(r);d||(d=o(a)),e();let c=((e,n,t,l,r,i=!1)=>{if(w(t))return;const[u,s,d,a]=r;return i||(i=o(e)),b(l,(([t,l])=>{i||(e=o(t)?null==s?void 0:s(e,l,n++):o(l)?null==d?void 0:d(e,t,n--):null==a?void 0:a(e,l,t,n),i||(i=o(e)))})),i?u(y(t),L(t)):e})(a,v,r,t,f,d);u(c)||(c=void 0),c!=a&&(B(n,c),M(i,[n],c,a))}),(1,e(g=d)==t?e=>e(g):null!=g?g:()=>1)),P;var g},delMetricDefinition:e=>(H(e),P),getStore:C,getMetricIds:F,forEachMetric:O,hasMetric:W,getTableId:$,getMetric:q,addMetricIdsListener:J,addMetricListener:(e,n)=>h(n,i,[e]),delListener:e=>(j(e),P),destroy:K,getListenerStats:()=>({})};return g(P)})(r)),i.get(r))})();export{j as createMetrics};
1
+ const e=e=>typeof e,n="",t=e(n),l=e(e),r=Math.max,i=Math.min,u=isFinite,o=e=>null==e,s=(e,n,t)=>o(e)?null==t?void 0:t():n(e),d=e=>Array.isArray(e),a=e=>e.length,v=()=>{},c=(e,n)=>e.forEach(n),h=e=>M(e,((e,n)=>e+n),0),M=(e,n,t)=>e.reduce(n,t),f=(e,...n)=>e.push(...n),g=Object.freeze,L=e=>{var n;return null!=(n=null==e?void 0:e.size)?n:0},m=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},w=e=>o(e)||0==L(e),y=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},p=e=>e.clear(),b=(e,n)=>null==e?void 0:e.forEach(n),I=(e,n)=>null==e?void 0:e.delete(n),x=e=>new Map(e),E=(e,n)=>null==e?void 0:e.get(n),R=(e,n)=>b(e,((e,t)=>n(t,e))),S=(e,n,t)=>o(t)?(I(e,n),e):null==e?void 0:e.set(n,t),T=(e,n,t)=>(m(e,n)||S(e,n,t()),E(e,n)),k=(e,n,t,l,r=0)=>s((t?T:E)(e,n[r],r>a(n)-2?t:x),(i=>{if(r>a(n)-2)return(null==l?void 0:l(i))&&S(e,n[r]),i;const u=k(i,n,t,l,r+1);return w(i)&&S(e,n[r]),u})),z=x([["avg",[(e,n)=>h(e)/n,(e,n,t)=>e+(n-e)/(t+1),(e,n,t)=>e+(e-n)/(t-1),(e,n,t,l)=>e+(n-t)/l]],["max",[e=>r(...e),(e,n)=>r(n,e),(e,n)=>n==e?void 0:e,(e,n,t)=>t==e?void 0:r(n,e)]],["min",[e=>i(...e),(e,n)=>i(n,e),(e,n)=>n==e?void 0:e,(e,n,t)=>t==e?void 0:i(n,e)]],["sum",[e=>h(e),(e,n)=>e+n,(e,n)=>e-n,(e,n,t)=>e-t+n]]]),A=e=>new Set(d(e)||o(e)?e:[e]),D=(e,n)=>null==e?void 0:e.add(n),N=/^\d+$/,j=((r,i)=>{const h=new WeakMap;return r=>{h.has(r)||h.set(r,(r=>{const i=x(),[h,M,j]=(e=>{let t;const[l,r]=(()=>{const e=[];let t=0;return[l=>{var r;return null!=(r=l?e.shift():null)?r:n+t++},n=>{N.test(n)&&a(e)<1e3&&f(e,n)}]})(),i=x();return[(e,r,u,o=[],s=(()=>[]))=>{null!=t||(t=P);const d=l(1);return S(i,d,[e,r,u,o,s]),D(k(r,null!=u?u:[n],A),d),d},(e,l,...r)=>c(((e,t=[n])=>{const l=[],r=(e,n)=>n==a(t)?f(l,e):null===t[n]?b(e,(e=>r(e,n+1))):c([t[n],null],(t=>r(E(e,t),n+1)));return r(e,0),l})(e,l),(e=>b(e,(e=>E(i,e)[0](t,...null!=l?l:[],...r))))),e=>s(E(i,e),(([,t,l])=>(k(t,null!=l?l:[n],void 0,(n=>(I(n,e),w(n)?1:0))),S(i,e),r(e),l))),e=>s(E(i,e),(([e,,n=[],l,r])=>{const i=(...u)=>{var s,d;const v=a(u);v==a(n)?e(t,...u,...r(u)):o(n[v])?c(null!=(d=null==(s=l[v])?void 0:s.call(l,...u))?d:[],(e=>i(...u,e))):i(...u,n[v])};i()}))]})(),[C,F,O,W,$,q,B,,G,H,J,K]=((e,t,l,r,i)=>{const u=e.hasRow,v=x(),h=x(),M=x(),f=x(),g=x(),L=x(),k=(n,t,...l)=>{const r=T(L,n,A);return c(l,(n=>D(r,n)&&t&&e.callListener(n))),l},z=(n,...t)=>s(E(L,n),(l=>{c(0==a(t)?y(l):t,(n=>{e.delListener(n),I(l,n)})),w(l)&&S(L,n)})),N=(e,n)=>{S(v,e,n),m(h,e)||(S(h,e,t()),S(f,e,x()),S(g,e,x()),i(M))},j=e=>{S(v,e),S(h,e),S(f,e),S(g,e),z(e),i(M)};return[()=>e,()=>{return[...null!=(n=null==(e=v)?void 0:e.keys())?n:[]];var e,n},e=>R(h,e),e=>m(h,e),e=>E(v,e),e=>E(h,e),(e,n)=>S(h,e,n),N,(t,l,r,i,s)=>{N(t,l);const v=x(),h=x(),M=E(f,t),L=E(g,t),w=t=>{const r=n=>e.getCell(l,t,n),c=E(M,t),f=u(l,t)?(g=i(r,t),isNaN(g)||o(g)||!0===g||!1===g||g===n?void 0:1*g):void 0;var g,m,w,y;if(c===f||d(c)&&d(f)&&(w=f,a(m=c)===a(w)&&(y=(e,n)=>w[n]===e,m.every(y)))||S(v,t,[c,f]),!o(s)){const e=E(L,t),n=u(l,t)?s(r,t):void 0;e!=n&&S(h,t,n)}},y=e=>{r((()=>{b(v,(([,e],n)=>S(M,n,e))),b(h,((e,n)=>S(L,n,e)))}),v,h,M,L,e),p(v),p(h)};R(M,w),e.hasTable(l)&&c(e.getRowIds(l),(e=>{m(M,e)||w(e)})),y(!0),z(t),k(t,0,e.addRowListener(l,null,((e,n,t)=>w(t))),e.addTableListener(l,(()=>y())))},j,e=>r(e,M),()=>R(L,j),k,z]})(r,v,0,h,M),P={setMetricDefinition:(n,r,s,d,a,v,c)=>{var h;const f=e(s)==l?[s,a,v,c]:null!=(h=E(z,s))?h:E(z,"sum");return G(n,r,((e,t,l,r,s,d)=>{const a=q(n),v=L(r);d||(d=o(a)),e();let c=((e,n,t,l,r,i=!1)=>{if(w(t))return;const[u,s,d,a]=r;return i||(i=o(e)),b(l,(([t,l])=>{i||(e=o(t)?null==s?void 0:s(e,l,n++):o(l)?null==d?void 0:d(e,t,n--):null==a?void 0:a(e,l,t,n),i||(i=o(e)))})),i?u(y(t),L(t)):e})(a,v,r,t,f,d);u(c)||(c=void 0),c!=a&&(B(n,c),M(i,[n],c,a))}),(1,e(g=d)==t?e=>e(g):null!=g?g:()=>1)),P;var g},delMetricDefinition:e=>(H(e),P),getStore:C,getMetricIds:F,forEachMetric:O,hasMetric:W,getTableId:$,getMetric:q,addMetricIdsListener:J,addMetricListener:(e,n)=>h(n,i,[e]),delListener:e=>(j(e),P),destroy:K,getListenerStats:()=>({})};return g(P)})(r));return h.get(r)}})();export{j as createMetrics};
Binary file