tinybase 5.0.0-beta.2 → 5.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/lib/cjs/mergeable-store.cjs +1 -1
  2. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  4. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  6. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  8. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  10. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  12. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  14. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-file.cjs +1 -1
  16. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  18. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  20. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
  22. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  24. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  26. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  28. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  30. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  31. package/lib/cjs/persisters.cjs +1 -1
  32. package/lib/cjs/persisters.cjs.gz +0 -0
  33. package/lib/cjs/store.cjs +1 -1
  34. package/lib/cjs/store.cjs.gz +0 -0
  35. package/lib/cjs/tinybase.cjs +1 -1
  36. package/lib/cjs/tinybase.cjs.gz +0 -0
  37. package/lib/cjs/tools.cjs +1 -1
  38. package/lib/cjs/tools.cjs.gz +0 -0
  39. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  40. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  41. package/lib/cjs-es6/mergeable-store.cjs +1 -1
  42. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  43. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  44. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  45. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  46. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  47. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  48. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  49. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  50. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  51. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  52. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  53. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  54. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  55. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  56. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  57. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  58. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  59. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  60. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  61. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
  62. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  63. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  64. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  65. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  66. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  67. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  68. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  69. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  70. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  71. package/lib/cjs-es6/persisters.cjs +1 -1
  72. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  73. package/lib/cjs-es6/store.cjs +1 -1
  74. package/lib/cjs-es6/store.cjs.gz +0 -0
  75. package/lib/cjs-es6/tinybase.cjs +1 -1
  76. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  77. package/lib/cjs-es6/tools.cjs +1 -1
  78. package/lib/cjs-es6/tools.cjs.gz +0 -0
  79. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  80. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  81. package/lib/debug/mergeable-store.js +158 -187
  82. package/lib/debug/persisters/persister-automerge.js +42 -43
  83. package/lib/debug/persisters/persister-browser.js +28 -18
  84. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +77 -54
  85. package/lib/debug/persisters/persister-electric-sql.js +77 -54
  86. package/lib/debug/persisters/persister-expo-sqlite-next.js +77 -54
  87. package/lib/debug/persisters/persister-expo-sqlite.js +77 -54
  88. package/lib/debug/persisters/persister-file.js +27 -18
  89. package/lib/debug/persisters/persister-indexed-db.js +28 -20
  90. package/lib/debug/persisters/persister-partykit-client.js +26 -23
  91. package/lib/debug/persisters/persister-partykit-server.js +8 -18
  92. package/lib/debug/persisters/persister-remote.js +28 -18
  93. package/lib/debug/persisters/persister-sqlite-wasm.js +77 -54
  94. package/lib/debug/persisters/persister-sqlite3.js +77 -54
  95. package/lib/debug/persisters/persister-yjs.js +44 -42
  96. package/lib/debug/persisters.js +27 -18
  97. package/lib/debug/store.js +50 -68
  98. package/lib/debug/tinybase.js +180 -205
  99. package/lib/debug/tools.js +9 -11
  100. package/lib/debug/ui-react-dom.js +73 -86
  101. package/lib/es6/mergeable-store.js +1 -1
  102. package/lib/es6/mergeable-store.js.gz +0 -0
  103. package/lib/es6/persisters/persister-automerge.js +1 -1
  104. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  105. package/lib/es6/persisters/persister-browser.js +1 -1
  106. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  107. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  108. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  109. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  110. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  111. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  112. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  113. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  114. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  115. package/lib/es6/persisters/persister-file.js +1 -1
  116. package/lib/es6/persisters/persister-file.js.gz +0 -0
  117. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  118. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  119. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  120. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  121. package/lib/es6/persisters/persister-partykit-server.js +1 -1
  122. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  123. package/lib/es6/persisters/persister-remote.js +1 -1
  124. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  125. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  126. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  127. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  128. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  129. package/lib/es6/persisters/persister-yjs.js +1 -1
  130. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  131. package/lib/es6/persisters.js +1 -1
  132. package/lib/es6/persisters.js.gz +0 -0
  133. package/lib/es6/store.js +1 -1
  134. package/lib/es6/store.js.gz +0 -0
  135. package/lib/es6/tinybase.js +1 -1
  136. package/lib/es6/tinybase.js.gz +0 -0
  137. package/lib/es6/tools.js +1 -1
  138. package/lib/es6/tools.js.gz +0 -0
  139. package/lib/es6/ui-react-dom-debug.js +1 -1
  140. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  141. package/lib/mergeable-store.js +1 -1
  142. package/lib/mergeable-store.js.gz +0 -0
  143. package/lib/persisters/persister-automerge.js +1 -1
  144. package/lib/persisters/persister-automerge.js.gz +0 -0
  145. package/lib/persisters/persister-browser.js +1 -1
  146. package/lib/persisters/persister-browser.js.gz +0 -0
  147. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  148. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  149. package/lib/persisters/persister-electric-sql.js +1 -1
  150. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  151. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  152. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  153. package/lib/persisters/persister-expo-sqlite.js +1 -1
  154. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  155. package/lib/persisters/persister-file.js +1 -1
  156. package/lib/persisters/persister-file.js.gz +0 -0
  157. package/lib/persisters/persister-indexed-db.js +1 -1
  158. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  159. package/lib/persisters/persister-partykit-client.js +1 -1
  160. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  161. package/lib/persisters/persister-partykit-server.js +1 -1
  162. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  163. package/lib/persisters/persister-remote.js +1 -1
  164. package/lib/persisters/persister-remote.js.gz +0 -0
  165. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  166. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  167. package/lib/persisters/persister-sqlite3.js +1 -1
  168. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  169. package/lib/persisters/persister-yjs.js +1 -1
  170. package/lib/persisters/persister-yjs.js.gz +0 -0
  171. package/lib/persisters.js +1 -1
  172. package/lib/persisters.js.gz +0 -0
  173. package/lib/store.js +1 -1
  174. package/lib/store.js.gz +0 -0
  175. package/lib/tinybase.js +1 -1
  176. package/lib/tinybase.js.gz +0 -0
  177. package/lib/tools.js +1 -1
  178. package/lib/tools.js.gz +0 -0
  179. package/lib/types/mergeable-store.d.ts +37 -13
  180. package/lib/types/persisters/persister-partykit-server.d.ts +7 -8
  181. package/lib/types/persisters.d.ts +47 -27
  182. package/lib/types/store.d.ts +153 -111
  183. package/lib/types/tools.d.ts +2 -2
  184. package/lib/types/with-schemas/mergeable-store.d.ts +40 -13
  185. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +10 -11
  186. package/lib/types/with-schemas/persisters.d.ts +78 -42
  187. package/lib/types/with-schemas/store.d.ts +165 -136
  188. package/lib/types/with-schemas/tools.d.ts +2 -2
  189. package/lib/umd/mergeable-store.js +1 -1
  190. package/lib/umd/mergeable-store.js.gz +0 -0
  191. package/lib/umd/persisters/persister-automerge.js +1 -1
  192. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  193. package/lib/umd/persisters/persister-browser.js +1 -1
  194. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  195. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  196. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  197. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  198. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  199. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  200. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  201. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  202. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  203. package/lib/umd/persisters/persister-file.js +1 -1
  204. package/lib/umd/persisters/persister-file.js.gz +0 -0
  205. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  206. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  207. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  208. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  209. package/lib/umd/persisters/persister-partykit-server.js +1 -1
  210. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  211. package/lib/umd/persisters/persister-remote.js +1 -1
  212. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  213. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  214. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  215. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  216. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  217. package/lib/umd/persisters/persister-yjs.js +1 -1
  218. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  219. package/lib/umd/persisters.js +1 -1
  220. package/lib/umd/persisters.js.gz +0 -0
  221. package/lib/umd/store.js +1 -1
  222. package/lib/umd/store.js.gz +0 -0
  223. package/lib/umd/tinybase.js +1 -1
  224. package/lib/umd/tinybase.js.gz +0 -0
  225. package/lib/umd/tools.js +1 -1
  226. package/lib/umd/tools.js.gz +0 -0
  227. package/lib/umd/ui-react-dom-debug.js +1 -1
  228. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  229. package/lib/umd-es6/mergeable-store.js +1 -1
  230. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  231. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  232. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  233. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  234. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  235. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  236. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  237. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  238. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  239. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  240. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  241. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  242. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  243. package/lib/umd-es6/persisters/persister-file.js +1 -1
  244. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  245. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  246. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  247. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  248. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  249. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
  250. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  251. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  252. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  253. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  254. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  255. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  256. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  257. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  258. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  259. package/lib/umd-es6/persisters.js +1 -1
  260. package/lib/umd-es6/persisters.js.gz +0 -0
  261. package/lib/umd-es6/store.js +1 -1
  262. package/lib/umd-es6/store.js.gz +0 -0
  263. package/lib/umd-es6/tinybase.js +1 -1
  264. package/lib/umd-es6/tinybase.js.gz +0 -0
  265. package/lib/umd-es6/tools.js +1 -1
  266. package/lib/umd-es6/tools.js.gz +0 -0
  267. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  268. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  269. package/package.json +26 -22
  270. package/readme.md +2 -2
@@ -167,6 +167,12 @@ export type OptionalSchemas = [OptionalTablesSchema, OptionalValuesSchema];
167
167
  */
168
168
  export type NoSchemas = [NoTablesSchema, NoValuesSchema];
169
169
 
170
+ // Content
171
+ export type Content<
172
+ Schemas extends OptionalSchemas,
173
+ WhenSet extends boolean = false,
174
+ > = [Tables<Schemas[0], WhenSet>, Values<Schemas[1], WhenSet>];
175
+
170
176
  /**
171
177
  * The Tables type is the data structure representing all of the data in a
172
178
  * Store.
@@ -788,28 +794,20 @@ export type ChangedValueIds<Schema extends OptionalValuesSchema> = {
788
794
  * This has schema-based typing. The following is a simplified representation:
789
795
  *
790
796
  * ```ts override
791
- * (
792
- * getTransactionChanges: GetTransactionChanges,
793
- * getTransactionLog: GetTransactionLog,
794
- * ) => boolean;
797
+ * (store: Store) => boolean;
795
798
  * ```
796
799
  *
797
800
  * A DoRollback can be provided when calling the transaction method or the
798
801
  * finishTransaction method. See those methods for specific examples.
799
802
  *
800
- * Since v4.0, this function is provided only with two functions that you can
801
- * call to get information about the changes made within the transaction (in
802
- * order to decide whether to do the rollback). See the GetTransactionChanges
803
- * and GetTransactionLog function types for more details.
804
- * @param getTransactionChanges A function to be called to get the changes made
805
- * to the Store during the transaction, since v4.0.
806
- * @param getTransactionChanges A function to be called to get a more detailed
807
- * log of the changes made or attempted during the transaction, since v4.0.
803
+ * Since v5.0, this function is called with the Store as a single argument. You
804
+ * can use the getTransactionChanges method and getTransactionLog method of the
805
+ * Store directly to decide whether to do the rollback.
806
+ * @param store A reference to the Store that is completing a transaction.
808
807
  * @category Callback
809
808
  */
810
809
  export type DoRollback<Schemas extends OptionalSchemas> = (
811
- getTransactionChanges: GetTransactionChanges<Schemas>,
812
- getTransactionLog: GetTransactionLog<Schemas>,
810
+ store: Store<Schemas>,
813
811
  ) => boolean;
814
812
 
815
813
  /**
@@ -821,8 +819,6 @@ export type DoRollback<Schemas extends OptionalSchemas> = (
821
819
  * ```ts override
822
820
  * export type TransactionListener<Store extends StoreAlias = StoreAlias> = (
823
821
  * store: Store,
824
- * getTransactionChanges: GetTransactionChanges,
825
- * getTransactionLog: GetTransactionLog,
826
822
  * ) => void;
827
823
  * ```
828
824
  *
@@ -830,25 +826,17 @@ export type DoRollback<Schemas extends OptionalSchemas> = (
830
826
  * addWillFinishTransactionListener and addDidFinishTransactionListener methods.
831
827
  * See those methods for specific examples.
832
828
  *
833
- * When called, a TransactionListener is simply given a reference to the Store
834
- * and, since v4.0, two functions that you can call to get information about the
835
- * changes made within the transaction. See the GetTransactionChanges and
836
- * GetTransactionLog function types for more details.
829
+ * Since v5.0, this listener is called with no arguments other than the Store.
830
+ * You can use the getTransactionChanges method and getTransactionLog method of
831
+ * the Store directly to get information about the changes made within the
832
+ * transaction.
837
833
  * @param store A reference to the Store that is completing a transaction.
838
- * @param getTransactionChanges A function to be called to get the changes made
839
- * to the Store during the transaction, since v4.0.
840
- * @param getTransactionChanges A function to be called to get a more detailed
841
- * log of the changes made or attempted during the transaction, since v4.0.
842
834
  * @category Listener
843
835
  */
844
836
  export type TransactionListener<
845
837
  Schemas extends OptionalSchemas,
846
838
  Store extends StoreAlias<Schemas> = StoreAlias<Schemas>,
847
- > = (
848
- store: Store,
849
- getTransactionChanges: GetTransactionChanges<Schemas>,
850
- getTransactionLog: GetTransactionLog<Schemas>,
851
- ) => void;
839
+ > = (store: Store) => void;
852
840
 
853
841
  /**
854
842
  * The HasTablesListener type describes a function that is used to listen to
@@ -2085,7 +2073,7 @@ export type ChangedCells<Schema extends OptionalTablesSchema> = {
2085
2073
  * This has schema-based typing. The following is a simplified representation:
2086
2074
  *
2087
2075
  * ```ts override
2088
- * [CellOrUndefined, CellOrUndefined];
2076
+ * [oldCell: CellOrUndefined, newCell: CellOrUndefined];
2089
2077
  * ```
2090
2078
  *
2091
2079
  * It provides both the old and new Cell values in a two-part array. These are
@@ -2174,7 +2162,10 @@ export type ChangedValues<Schema extends OptionalValuesSchema> = {
2174
2162
  * This has schema-based typing. The following is a simplified representation:
2175
2163
  *
2176
2164
  * ```ts override
2177
- * [ValueOrUndefined, ValueOrUndefined];
2165
+ * [
2166
+ * oldValue: ValueOrUndefined,
2167
+ * newValue: ValueOrUndefined,
2168
+ * ];
2178
2169
  * ```
2179
2170
  *
2180
2171
  * It provides both the the old and new Values in a two-part array. These
@@ -2216,8 +2207,8 @@ export type ChangedValue<
2216
2207
  */
2217
2208
  export type InvalidValues = {[valueId: Id]: any[]};
2218
2209
 
2219
- // TransactionChanges
2220
- export type TransactionChanges<Schemas extends OptionalSchemas> = [
2210
+ // Changes
2211
+ export type Changes<Schemas extends OptionalSchemas> = [
2221
2212
  {
2222
2213
  [TableId in TableIdFromSchema<Schemas[0]>]?: {
2223
2214
  [rowId: Id]:
@@ -2239,25 +2230,6 @@ export type TransactionChanges<Schemas extends OptionalSchemas> = [
2239
2230
  },
2240
2231
  ];
2241
2232
 
2242
- /**
2243
- * The GetTransactionChanges type describes a function that returns the net
2244
- * meaningful changes that were made to a Store during a transaction.
2245
- *
2246
- * This has schema-based typing. The following is a simplified representation:
2247
- *
2248
- * ```ts override
2249
- * () => TransactionChanges;
2250
- * ```
2251
- *
2252
- * It is provided to the DoRollback callback and to a TransactionListener
2253
- * listener when a transaction completes. See the TransactionChanges type for
2254
- * more information and an example of the returned data structure.
2255
- * @category Transaction
2256
- * @since v4.0.0
2257
- */
2258
- export type GetTransactionChanges<Schemas extends OptionalSchemas> =
2259
- () => TransactionChanges<Schemas>;
2260
-
2261
2233
  /**
2262
2234
  * The TransactionLog type describes the changes that were made to a Store
2263
2235
  * during a transaction in detail.
@@ -2265,21 +2237,21 @@ export type GetTransactionChanges<Schemas extends OptionalSchemas> =
2265
2237
  * This has schema-based typing. The following is a simplified representation:
2266
2238
  *
2267
2239
  * ```ts override
2268
- * {
2269
- * cellsTouched: boolean;
2270
- * valuesTouched: boolean;
2271
- * changedCells: ChangedCells;
2272
- * invalidCells: InvalidCells;
2273
- * changedValues: ChangedValues;
2274
- * invalidValues: InvalidValues;
2275
- * changedTableIds: ChangedTableIds;
2276
- * changedRowIds: ChangedRowIds;
2277
- * changedCellIds: ChangedCellIds;
2278
- * changedValueIds: ChangedValueIds;
2279
- * };
2240
+ * [
2241
+ * cellsTouched: boolean,
2242
+ * valuesTouched: boolean,
2243
+ * changedCells: ChangedCells,
2244
+ * invalidCells: InvalidCells,
2245
+ * changedValues: ChangedValues,
2246
+ * invalidValues: InvalidValues,
2247
+ * changedTableIds: ChangedTableIds,
2248
+ * changedRowIds: ChangedRowIds,
2249
+ * changedCellIds: ChangedCellIds,
2250
+ * changedValueIds: ChangedValueIds,
2251
+ * ];
2280
2252
  * ```
2281
2253
  *
2282
- * This contains equivalent information to a TransactionChanges object, but also
2254
+ * This contains equivalent information to a Changes object, but also
2283
2255
  * information about what the previous state of the Store was. The changedCells
2284
2256
  * and changedValues entries contain information about all changes to those
2285
2257
  * parts of the Store, with their before and after values, for example.
@@ -2295,6 +2267,9 @@ export type GetTransactionChanges<Schemas extends OptionalSchemas> =
2295
2267
  * of `cellsTouched` and `valuesTouched` in the listener will be `false` because
2296
2268
  * all changes have been reverted.
2297
2269
  *
2270
+ * In v5.0, this type changed from an object to an array, but still contains the
2271
+ * same values.
2272
+ *
2298
2273
  * See the documentation for the types of the inner objects for other details.
2299
2274
  * @category Transaction
2300
2275
  * @since v4.0.0
@@ -2312,25 +2287,6 @@ export type TransactionLog<Schemas extends OptionalSchemas> = {
2312
2287
  changedValueIds: ChangedValueIds<Schemas[1]>;
2313
2288
  };
2314
2289
 
2315
- /**
2316
- * The GetTransactionLog type describes a function that returns the changes that
2317
- * were made to a Store during a transaction in detail.
2318
- *
2319
- * This has schema-based typing. The following is a simplified representation:
2320
- *
2321
- * ```ts override
2322
- * () => TransactionLog;
2323
- * ```
2324
- *
2325
- * It is provided to the DoRollback callback and to a TransactionListener
2326
- * listener when a transaction completes. See the TransactionLog type for more
2327
- * information.
2328
- * @category Transaction
2329
- * @since v4.0.0
2330
- */
2331
- export type GetTransactionLog<Schemas extends OptionalSchemas> =
2332
- () => TransactionLog<Schemas>;
2333
-
2334
2290
  /**
2335
2291
  * The StoreListenerStats type describes the number of listeners registered with
2336
2292
  * the Store, and can be used for debugging purposes.
@@ -2640,7 +2596,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
2640
2596
  * This has schema-based typing. The following is a simplified representation:
2641
2597
  *
2642
2598
  * ```ts override
2643
- * getContent(): [Tables, Values];
2599
+ * getContent(): Content;
2644
2600
  * ```
2645
2601
  *
2646
2602
  * Note that this returns a copy of, rather than a reference to the underlying
@@ -2669,7 +2625,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
2669
2625
  * @category Getter
2670
2626
  * @since v4.0.0
2671
2627
  */
2672
- getContent(): [Tables<Schemas[0]>, Values<Schemas[1]>];
2628
+ getContent(): Content<Schemas>;
2673
2629
 
2674
2630
  /**
2675
2631
  * The getTables method returns a Tables object containing the entire tabular
@@ -3681,7 +3637,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
3681
3637
  * This has schema-based typing. The following is a simplified representation:
3682
3638
  *
3683
3639
  * ```ts override
3684
- * setContent([tables, values]: [Tables, Values]): this;
3640
+ * setContent(content: Content): this;
3685
3641
  * ```
3686
3642
  *
3687
3643
  * This method will cause listeners to be called for any Table, Row, Cell,
@@ -3736,10 +3692,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
3736
3692
  * @category Setter
3737
3693
  * @since v4.0.0
3738
3694
  */
3739
- setContent([tables, values]: [
3740
- Tables<Schemas[0], true>,
3741
- Values<Schemas[1], true>,
3742
- ]): Store<Schemas>;
3695
+ setContent(content: Content<Schemas, true>): Store<Schemas>;
3743
3696
 
3744
3697
  /**
3745
3698
  * The setTables method takes an object and sets the entire tabular data of
@@ -4289,31 +4242,32 @@ export interface Store<in out Schemas extends OptionalSchemas> {
4289
4242
  ): Store<Schemas>;
4290
4243
 
4291
4244
  /**
4292
- * The setTransactionChanges method applies a set of TransactionChanges to the
4293
- * Store.
4245
+ * The applyChanges method applies a set of Changes to the Store.
4294
4246
  *
4295
4247
  * This has schema-based typing. The following is a simplified representation:
4296
4248
  *
4297
4249
  * ```ts override
4298
- * setTransactionChanges(transactionChanges: TransactionChanges): this;
4250
+ * applyChanges(changes: Changes): this;
4299
4251
  * ```
4300
4252
  *
4301
- * This method will take a TransactionChanges object (which is available at
4302
- * the end of a transaction) and apply it to a Store. The most likely need to
4303
- * do this is to take the changes made during the transaction of one Store,
4304
- * and apply it to the content of _another_ Store - such as when persisting
4305
- * and synchronizing data.
4253
+ * This method will take a Changes object (which is available at the end of a
4254
+ * transaction) and apply it to a Store. The most likely need to do this is to
4255
+ * take the changes made during the transaction of one Store, and apply it to
4256
+ * the content of _another_ Store - such as when persisting and synchronizing
4257
+ * data.
4306
4258
  *
4307
- * Any part of the provided TransactionChanges object are invalid (either
4308
- * because of its type, or because it does not match the schemas associated
4309
- * with the Store) will be ignored silently.
4259
+ * Any part of the provided Changes object are invalid (either because of its
4260
+ * type, or because it does not match the schemas associated with the Store)
4261
+ * will be ignored silently.
4310
4262
  *
4311
4263
  * The method returns a reference to the Store so that subsequent operations
4312
4264
  * can be chained in a fluent style.
4313
- * @param transactionChanges The TransactionChanges to apply to the Store.
4265
+ *
4266
+ * Prior to v5.0, this method was named `setTransactionChanges`.
4267
+ * @param changes The Changes to apply to the Store.
4314
4268
  * @returns A reference to the Store.
4315
4269
  * @example
4316
- * This example applies a TransactionChanges object that sets a Cell and
4270
+ * This example applies a Changes object that sets a Cell and
4317
4271
  * removes a Value.
4318
4272
  *
4319
4273
  * ```js
@@ -4321,21 +4275,16 @@ export interface Store<in out Schemas extends OptionalSchemas> {
4321
4275
  * .setTables({pets: {fido: {species: 'dog', color: 'brown'}}})
4322
4276
  * .setValues({open: true});
4323
4277
  *
4324
- * store.setTransactionChanges([
4325
- * {pets: {fido: {color: 'black'}}},
4326
- * {open: null},
4327
- * ]);
4278
+ * store.applyChanges([{pets: {fido: {color: 'black'}}}, {open: null}]);
4328
4279
  * console.log(store.getTables());
4329
4280
  * // -> {pets: {fido: {species: 'dog', color: 'black'}}}
4330
4281
  * console.log(store.getValues());
4331
4282
  * // -> {}
4332
4283
  * ```
4333
4284
  * @category Setter
4334
- * @since v4.0.0
4285
+ * @since v5.0.0
4335
4286
  */
4336
- setTransactionChanges(
4337
- transactionChanges: TransactionChanges<Schemas>,
4338
- ): Store<Schemas>;
4287
+ applyChanges(changes: Changes<Schemas>): Store<Schemas>;
4339
4288
 
4340
4289
  /**
4341
4290
  * The setTablesJson method takes a string serialization of all of the Tables
@@ -5009,10 +4958,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
5009
4958
  *
5010
4959
  * The second, optional parameter, `doRollback` is a DoRollback callback that
5011
4960
  * you can use to rollback the transaction if it did not complete to your
5012
- * satisfaction. It is called with `getTransactionChanges` and
5013
- * `getTransactionLog` parameters, which inform you of the net changes that
5014
- * have been made during the transaction, at different levels of detail. See
5015
- * the DoRollback documentation for more details.
4961
+ * satisfaction. See the DoRollback documentation for more details.
5016
4962
  * @param actions The function to be executed as a transaction.
5017
4963
  * @param doRollback An optional callback that should return `true` if you
5018
4964
  * want to rollback the transaction at the end. Since v1.2.
@@ -5088,9 +5034,9 @@ export interface Store<in out Schemas extends OptionalSchemas> {
5088
5034
  * .setCell('pets', 'fido', 'info', {sold: null})
5089
5035
  * .setValue('open', false)
5090
5036
  * .setValue('employees', ['alice', 'bob']),
5091
- * (_, getTransactionLog) => {
5092
- * const {changedCells, invalidCells, changedValues, invalidValues} =
5093
- * getTransactionLog();
5037
+ * () => {
5038
+ * const [, , changedCells, invalidCells, changedValues, invalidValues] =
5039
+ * store.getTransactionLog();
5094
5040
  * console.log(store.getTables());
5095
5041
  * console.log(changedCells);
5096
5042
  * console.log(invalidCells);
@@ -5173,6 +5119,93 @@ export interface Store<in out Schemas extends OptionalSchemas> {
5173
5119
  */
5174
5120
  startTransaction(): Store<Schemas>;
5175
5121
 
5122
+ /**
5123
+ * The getTransactionChanges method returns the net meaningful changes that
5124
+ * have been made to a Store during a transaction.
5125
+ *
5126
+ * This has schema-based typing. The following is a simplified representation:
5127
+ *
5128
+ * ```ts override
5129
+ * getTransactionChanges(): Changes;
5130
+ * ```
5131
+ *
5132
+ * This is useful for deciding whether to rollback a transaction, for example.
5133
+ * The returned object is only meaningful if the method is called when the
5134
+ * Store is in a transaction - such as in a TransactionListener.
5135
+ * @example
5136
+ * This example makes changes to the Store. At the end of the transaction,
5137
+ * detail about what changed is enumerated.
5138
+ *
5139
+ * ```js
5140
+ * const store = createStore()
5141
+ * .setTables({pets: {fido: {species: 'dog', color: 'brown'}}})
5142
+ * .setValues({open: true});
5143
+ *
5144
+ * store
5145
+ * .startTransaction()
5146
+ * .setCell('pets', 'fido', 'color', 'black')
5147
+ * .setValue('open', false)
5148
+ * .finishTransaction(() => {
5149
+ * const [changedCells, changedValues] = store.getTransactionChanges();
5150
+ * console.log(changedCells);
5151
+ * console.log(changedValues);
5152
+ * });
5153
+ * // -> {pets: {fido: {color: 'black'}}}
5154
+ * // -> {open: false}
5155
+ * ```
5156
+ * @category Transaction
5157
+ * @since v5.0.0
5158
+ */
5159
+ getTransactionChanges(): Changes<Schemas>;
5160
+
5161
+ /**
5162
+ * The getTransactionLog method returns the changes that were made to a Store
5163
+ * during a transaction in more detail, including invalid changes, and what
5164
+ * previous values were.
5165
+ *
5166
+ * This has schema-based typing. The following is a simplified representation:
5167
+ *
5168
+ * ```ts override
5169
+ * getTransactionLog(): TransactionLog;
5170
+ * ```
5171
+ *
5172
+ * This is useful for deciding whether to rollback a transaction, for example.
5173
+ * The returned object is only meaningful if the method is called when the
5174
+ * Store is in a transaction - such as in a TransactionListener.
5175
+ * @example
5176
+ * This example makes changes to the Store. At the end of the transaction,
5177
+ * detail about what changed is enumerated.
5178
+ *
5179
+ * ```js
5180
+ * const store = createStore()
5181
+ * .setTables({pets: {fido: {species: 'dog', color: 'brown'}}})
5182
+ * .setValues({open: true});
5183
+ *
5184
+ * store
5185
+ * .startTransaction()
5186
+ * .setCell('pets', 'fido', 'color', 'black')
5187
+ * .setCell('pets', 'fido', 'eyes', ['left', 'right'])
5188
+ * .setCell('pets', 'fido', 'info', {sold: null})
5189
+ * .setValue('open', false)
5190
+ * .setValue('employees', ['alice', 'bob'])
5191
+ * .finishTransaction(() => {
5192
+ * const [, , changedCells, invalidCells, changedValues, invalidValues] =
5193
+ * store.getTransactionLog();
5194
+ * console.log(changedCells);
5195
+ * console.log(invalidCells);
5196
+ * console.log(changedValues);
5197
+ * console.log(invalidValues);
5198
+ * });
5199
+ * // -> {pets: {fido: {color: ['brown', 'black']}}}
5200
+ * // -> {pets: {fido: {eyes: [['left', 'right']], info: [{sold: null}]}}}
5201
+ * // -> {open: [true, false]}
5202
+ * // -> {employees: [['alice', 'bob']]}
5203
+ * ```
5204
+ * @category Transaction
5205
+ * @since v5.0.0
5206
+ */
5207
+ getTransactionLog(): TransactionLog<Schemas>;
5208
+
5176
5209
  /**
5177
5210
  * The finishTransaction method allows you to explicitly finish a transaction
5178
5211
  * that has made multiple mutations to the Store, triggering all calls to the
@@ -5250,9 +5283,9 @@ export interface Store<in out Schemas extends OptionalSchemas> {
5250
5283
  * .setCell('pets', 'fido', 'info', {sold: null})
5251
5284
  * .setValue('open', false)
5252
5285
  * .setValue('employees', ['alice', 'bob'])
5253
- * .finishTransaction((_, getTransactionLog) => {
5254
- * const {changedCells, invalidCells, changedValues, invalidValues} =
5255
- * getTransactionLog();
5286
+ * .finishTransaction(() => {
5287
+ * const [, , changedCells, invalidCells, changedValues, invalidValues] =
5288
+ * store.getTransactionLog();
5256
5289
  * console.log(store.getTables());
5257
5290
  * console.log(changedCells);
5258
5291
  * console.log(invalidCells);
@@ -8230,12 +8263,10 @@ export interface Store<in out Schemas extends OptionalSchemas> {
8230
8263
  * pets: {fido: {species: 'dog', color: 'brown'}},
8231
8264
  * })
8232
8265
  * .setValues({open: true, employees: 3});
8233
- * const listenerId = store.addWillFinishTransactionListener(
8234
- * (store, _, getTransactionLog) => {
8235
- * const {cellsTouched, valuesTouched} = getTransactionLog?.() ?? {};
8236
- * console.log(`Cells/Values touched: ${cellsTouched}/${valuesTouched}`);
8237
- * },
8238
- * );
8266
+ * const listenerId = store.addWillFinishTransactionListener((store) => {
8267
+ * const [cellsTouched, valuesTouched] = store.getTransactionLog() ?? {};
8268
+ * console.log(`Cells/Values touched: ${cellsTouched}/${valuesTouched}`);
8269
+ * });
8239
8270
  * const listenerId2 = store.addTablesListener(() =>
8240
8271
  * console.log('Tables changed'),
8241
8272
  * );
@@ -8277,7 +8308,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
8277
8308
  * // Transaction was rolled back.
8278
8309
  *
8279
8310
  * store.callListener(listenerId);
8280
- * // -> 'Cells/Values touched: undefined/undefined'
8311
+ * // -> 'Cells/Values touched: false/false'
8281
8312
  * // It is meaningless to call this listener directly.
8282
8313
  *
8283
8314
  * store
@@ -8336,12 +8367,10 @@ export interface Store<in out Schemas extends OptionalSchemas> {
8336
8367
  * pets: {fido: {species: 'dog', color: 'brown'}},
8337
8368
  * })
8338
8369
  * .setValues({open: true, employees: 3});
8339
- * const listenerId = store.addDidFinishTransactionListener(
8340
- * (store, _, getTransactionLog) => {
8341
- * const {cellsTouched, valuesTouched} = getTransactionLog?.() ?? {};
8342
- * console.log(`Cells/Values touched: ${cellsTouched}/${valuesTouched}`);
8343
- * },
8344
- * );
8370
+ * const listenerId = store.addDidFinishTransactionListener((store) => {
8371
+ * const [cellsTouched, valuesTouched] = store.getTransactionLog() ?? {};
8372
+ * console.log(`Cells/Values touched: ${cellsTouched}/${valuesTouched}`);
8373
+ * });
8345
8374
  * const listenerId2 = store.addTablesListener(() =>
8346
8375
  * console.log('Tables changed'),
8347
8376
  * );
@@ -8383,7 +8412,7 @@ export interface Store<in out Schemas extends OptionalSchemas> {
8383
8412
  * // Transaction was rolled back.
8384
8413
  *
8385
8414
  * store.callListener(listenerId);
8386
- * // -> 'Cells/Values touched: undefined/undefined'
8415
+ * // -> 'Cells/Values touched: false/false'
8387
8416
  * // It is meaningless to call this listener directly.
8388
8417
  *
8389
8418
  * store
@@ -416,7 +416,7 @@ export interface Tools<in out Schemas extends OptionalSchemas> {
416
416
  * await createTools(store).getPrettyStoreApi('shop');
417
417
  *
418
418
  * const dTsLines = dTs.split('\n');
419
- * console.log(dTsLines[17]);
419
+ * console.log(dTsLines[15]);
420
420
  * // -> `export type Tables = {pets?: {[rowId: Id]: {price?: number}}};`
421
421
  *
422
422
  * const tsLines = ts.split('\n');
@@ -436,7 +436,7 @@ export interface Tools<in out Schemas extends OptionalSchemas> {
436
436
  * await createTools(store).getPrettyStoreApi('shop');
437
437
  *
438
438
  * const dTsLines = dTs.split('\n');
439
- * console.log(dTsLines[17]);
439
+ * console.log(dTsLines[15]);
440
440
  * // -> 'export type Tables = {pets?: {[rowId: Id]: {price: number}}};'
441
441
  *
442
442
  * const tsLines = ts.split('\n');
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s="",n=t(s),l=t(!0),a=t(0),o=t(t),r="type",c="default",i="Has",d="Ids",u="Table",h=u+"s",f=u+d,g="Row",T=g+"Count",C=g+d,b="Cell",V=b+d,v="Value",S=v+"s",p=v+d,w=e=>s+e,y=(e,t)=>e.startsWith(t),I=(e,t)=>e.endsWith(t),m=(e,t=0)=>e.charCodeAt(t),R=isFinite,L=e=>null==e,J=(e,t,s)=>L(e)?s?.():t(e),M=e=>e==n||e==l,E=e=>t(e)==o,H=(e,t,s)=>e.slice(t,s),x=e=>e.length,P=(e,t)=>e.forEach(t),F=(e,t)=>e.map(t),O=(e,...t)=>e.push(...t),z=Object,A=e=>z.getPrototypeOf(e),W=z.entries,j=z.keys,k=z.isFrozen,D=z.freeze,N=e=>!L(e)&&J(A(e),(e=>e==z.prototype||L(A(e))),(()=>!0)),B=(e,t)=>!L(((e,t)=>J(e,(e=>e[t])))(e,t)),$=(e,t)=>(delete e[t],e),q=(e,t)=>F(W(e),(([e,s])=>t(s,e))),G=e=>N(e)&&0==(e=>x(j(e)))(e),K=e=>e?.size??0,Q=(e,t)=>e?.has(t)??!1,U=e=>L(e)||0==K(e),X=e=>e.clear(),Y=(e,t)=>e?.forEach(t),Z=(e,t)=>e?.delete(t),_=e=>new Map(e),ee=e=>[...e?.keys()??[]],te=(e,t)=>e?.get(t),se=(e,t)=>Y(e,((e,s)=>t(s,e))),ne=(e,t,s)=>L(s)?(Z(e,t),e):e?.set(t,s),le=(e,t,s)=>(Q(e,t)||ne(e,t,s()),te(e,t)),ae=(e,t,s,n=ne)=>(q(t,((t,n)=>s(e,n,t))),se(e,(s=>B(t,s)?0:n(e,s))),e),oe=(e,t,s)=>{const n={};return Y(e,((e,l)=>{const a=t?t(e,l):e;!s?.(a,e)&&(n[l]=a)})),n},re=(e,t,s)=>oe(e,(e=>oe(e,t,s)),G),ce=(e,t,s)=>oe(e,(e=>re(e,t,s)),G),ie=(e,t)=>{const s=_();return Y(e,((e,n)=>s.set(n,t?.(e)??e))),s},de=e=>ie(e,ie),ue=e=>ie(e,de),he=(e,t,s,n,l=0)=>J((s?le:te)(e,t[l],l>x(t)-2?s:_),(a=>{if(l>x(t)-2)return n?.(a)&&ne(e,t[l]),a;const o=he(a,t,s,n,l+1);return U(a)&&ne(e,t[l]),o})),fe=()=>[s,null],ge=()=>[s,_()],Te=(e,t)=>Ce(e,((e,s)=>[s,L(e)?null:oe(e,t)])),Ce=([e,t],s)=>s(t,e),be=([e,t],s,n,l=0)=>{const a=e>s[0];return(!l&&null!==s[1]||a)&&(s[1]=n(t,s[1])),a&&(s[0]=e),s},Ve=(e,t,s,n)=>{var l;return l=(e,l)=>be(e,le(t,l,fe),((e,t)=>!n||L(e)?s[l]=e??null:(t??=_(),s[l]={},n(e,t,l),t)),n?0:1),P(W(e),(([e,t])=>l(t,e))),t},ve=e=>new Set(Array.isArray(e)||L(e)?e:[e]),Se=(e,t)=>e?.add(t),pe=/^\d+$/,we=()=>{const e=[];let t=0;return[n=>(n?e.shift():null)??s+t++,t=>{pe.test(t)&&x(e)<1e3&&O(e,t)}]},ye=e=>[e,e],Ie=()=>[_(),_()],me=e=>[...e],Re=([e,t])=>e===t,Le=e=>{const s=t(e);return M(s)||s==a&&R(e)?s:void 0},Je=(e,t,s,n,l)=>L(l)?e.delCell(t,s,n,!0):e.setCell(t,s,n,l),Me=(e,t,s)=>L(s)?e.delValue(t):e.setValue(t,s),Ee=e=>JSON.stringify(e,((e,t)=>t instanceof Map?z.fromEntries([...t]):t)),He=JSON.parse,xe=(e,t,s)=>L(e)||!N(e)||G(e)||k(e)?(s?.(),!1):(q(e,((s,n)=>{t(s,n)||$(e,n)})),!G(e)),Pe=(e,t,s)=>ne(e,t,te(e,t)==-s?void 0:s),Fe=()=>{let e,t,n,l=!1,o=!1,d=!1,y=!1,I=0;const m=_(),R=_(),z=_(),A=_(),W=_(),j=_(),k=_(),N=_(),fe=_(),ge=_(),Te=_(),Ce=_(),be=_(),Ve=_(),pe=ve(),Oe=_(),ze=_(),Ae=_(),We=_(),je=Ie(),ke=Ie(),De=Ie(),Ne=Ie(),Be=Ie(),$e=Ie(),qe=Ie(),Ge=Ie(),Ke=Ie(),Qe=Ie(),Ue=Ie(),Xe=Ie(),Ye=Ie(),Ze=Ie(),_e=Ie(),et=Ie(),tt=Ie(),st=Ie(),nt=Ie(),lt=Ie(),at=Ie(),ot=Ie(),rt=_(),ct=Ie(),[it,dt,ut,ht]=(e=>{let t;const[n,l]=we(),a=_();return[(e,l,o,r=[],c=(()=>[]))=>{t??=Fs;const i=n(1);return ne(a,i,[e,l,o,r,c]),Se(he(l,o??[s],ve),i),i},(e,n,...l)=>P(((e,t=[s])=>{const n=[],l=(e,s)=>s==x(t)?O(n,e):null===t[s]?Y(e,(e=>l(e,s+1))):P([t[s],null],(t=>l(te(e,t),s+1)));return l(e,0),n})(e,n),(e=>Y(e,(e=>te(a,e)[0](t,...n??[],...l))))),e=>J(te(a,e),(([,t,n])=>(he(t,n??[s],void 0,(t=>(Z(t,e),U(t)?1:0))),ne(a,e),l(e),n))),e=>J(te(a,e),(([e,,s=[],n,l])=>{const a=(...o)=>{const r=x(o);r==x(s)?e(t,...o,...l(o)):L(s[r])?P(n[r]?.(...o)??[],(e=>a(...o,e))):a(...o,s[r])};a()}))]})(),ft=e=>{if(!xe(e,((e,t)=>[r,c].includes(t))))return!1;const t=e[r];return!(!M(t)&&t!=a||(Le(e[c])!=t&&$(e,c),0))},gt=(t,s)=>(!e||Q(Te,s)||$t(s))&&xe(t,((e,t)=>Tt(s,t,e)),(()=>$t(s))),Tt=(e,t,s,n)=>xe(n?s:vt(s,e,t),((n,l)=>J(Ct(e,t,l,n),(e=>(s[l]=e,!0)),(()=>!1))),(()=>$t(e,t))),Ct=(t,s,n,l)=>e?J(te(te(Te,t),n),(e=>Le(l)!=e[r]?$t(t,s,n,l,e[c]):l),(()=>$t(t,s,n,l))):L(Le(l))?$t(t,s,n,l):l,bt=(e,t)=>xe(t?e:St(e),((t,s)=>J(Vt(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>qt())),Vt=(e,s)=>t?J(te(be,e),(t=>Le(s)!=t[r]?qt(e,s,t[c]):s),(()=>qt(e,s))):L(Le(s))?qt(e,s):s,vt=(e,t,s)=>(J(te(Ce,t),(([n,l])=>{Y(n,((t,s)=>{B(e,s)||(e[s]=t)})),Y(l,(n=>{B(e,n)||$t(t,s,n)}))})),e),St=e=>(t&&(Y(Ve,((t,s)=>{B(e,s)||(e[s]=t)})),Y(pe,(t=>{B(e,t)||qt(t)}))),e),pt=e=>ae(Te,e,((e,t,s)=>{const n=_(),l=ve();ae(le(Te,t,_),s,((e,t,s)=>{ne(e,t,s),J(s[c],(e=>ne(n,t,e)),(()=>Se(l,t)))})),ne(Ce,t,[n,l])}),((e,t)=>{ne(Te,t),ne(Ce,t)})),wt=e=>ae(be,e,((e,t,s)=>{ne(be,t,s),J(s[c],(e=>ne(Ve,t,e)),(()=>Se(pe,t)))}),((e,t)=>{ne(be,t),ne(Ve,t),Z(pe,t)})),yt=e=>G(e)?ms():Ss(e),It=e=>ae(Ae,e,((e,t,s)=>mt(t,s)),((e,t)=>Ft(t))),mt=(e,t)=>ae(le(Ae,e,(()=>(Wt(e,1),ne(Oe,e,we()),ne(ze,e,_()),_()))),t,((t,s,n)=>Rt(e,t,s,n)),((t,s)=>Ot(e,t,s))),Rt=(e,t,s,n,l)=>ae(le(t,s,(()=>(jt(e,s,1),_()))),n,((t,n,l)=>Lt(e,s,t,n,l)),((n,a)=>zt(e,t,s,n,a,l))),Lt=(e,t,s,n,l)=>{Q(s,n)||kt(e,t,n,1);const a=te(s,n);l!==a&&(Dt(e,t,n,a,l),ne(s,n,l))},Jt=(e,t,s,n,l)=>J(te(t,s),(t=>Lt(e,s,t,n,l)),(()=>Rt(e,t,s,vt({[n]:l},e,s)))),Mt=e=>G(e)?Js():ps(e),Et=e=>ae(We,e,((e,t,s)=>Ht(t,s)),((e,t)=>At(t))),Ht=(e,t)=>{Q(We,e)||Nt(e,1);const s=te(We,e);t!==s&&(Bt(e,s,t),ne(We,e,t))},xt=(e,t)=>{const[s]=te(Oe,e),n=s(t);return Q(te(Ae,e),n)?xt(e,t):n},Pt=e=>te(Ae,e)??mt(e,{}),Ft=e=>mt(e,{}),Ot=(e,t,s)=>{const[,n]=te(Oe,e);n(s),Rt(e,t,s,{},!0)},zt=(e,t,s,n,l,a)=>{const o=te(te(Ce,e)?.[0],l);if(!L(o)&&!a)return Lt(e,s,n,l,o);const r=t=>{Dt(e,s,t,te(n,t)),kt(e,s,t,-1),ne(n,t)};L(o)?r(l):se(n,r),U(n)&&(jt(e,s,-1),U(ne(t,s))&&(Wt(e,-1),ne(Ae,e),ne(Oe,e),ne(ze,e)))},At=e=>{const t=te(Ve,e);if(!L(t))return Ht(e,t);Bt(e,te(We,e)),Nt(e,-1),ne(We,e)},Wt=(e,t)=>Pe(m,e,t),jt=(e,t,s)=>Pe(le(A,e,_),t,s)&&ne(z,e,le(z,e,(()=>0))+s),kt=(e,t,s,n)=>{const l=te(ze,e),a=te(l,s)??0;(0==a&&1==n||1==a&&-1==n)&&Pe(le(R,e,_),s,n),ne(l,s,a!=-n?a+n:null),Pe(le(le(W,e,_),t,_),s,n)},Dt=(e,t,s,n,l)=>le(le(le(j,e,_),t,_),s,(()=>[n,0]))[1]=l,Nt=(e,t)=>Pe(k,e,t),Bt=(e,t,s)=>le(N,e,(()=>[t,0]))[1]=s,$t=(e,t,s,n,l)=>(O(le(le(le(fe,e,_),t,_),s,(()=>[])),n),l),qt=(e,t,s)=>(O(le(ge,e,(()=>[])),t),s),Gt=(e,t,s)=>J(te(te(te(j,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...ye(is(e,t,s))])),Kt=e=>J(te(N,e),(([e,t])=>[!0,e,t]),(()=>[!1,...ye(hs(e))])),Qt=e=>U(fe)||U(et[e])?0:Y(e?ue(fe):fe,((t,s)=>Y(t,((t,n)=>Y(t,((t,l)=>dt(et[e],[s,n,l],t))))))),Ut=e=>U(ge)||U(tt[e])?0:Y(e?ie(ge):ge,((t,s)=>dt(tt[e],[s],t))),Xt=(e,t,s,n)=>{if(!U(e))return dt(t,n,(()=>oe(e))),se(e,((e,t)=>dt(s,[...n??[],e],1==t))),1},Yt=e=>{const t=fs();t!=d&&dt(je[e],void 0,t);const s=U(Qe[e]),n=U(Ye[e])&&U(Ze[e])&&U(Ke[e])&&U(Ue[e])&&U($e[e])&&U(qe[e])&&U(Ge[e])&&s&&U(De[e])&&U(Ne[e]),l=U(_e[e])&&U(Xe[e])&&U(Be[e])&&U(ke[e]);if(!n||!l){const t=e?[ie(m),de(R),ie(z),de(A),ue(W),ue(j)]:[m,R,z,A,W,j];if(!n){Xt(t[0],De[e],Ne[e]),Y(t[1],((t,s)=>Xt(t,$e[e],qe[e],[s]))),Y(t[2],((t,s)=>{0!=t&&dt(Ge[e],[s],as(s))}));const n=ve();Y(t[3],((t,l)=>{Xt(t,Ke[e],Ue[e],[l])&&!s&&(dt(Qe[e],[l,null]),Se(n,l))})),s||Y(t[5],((t,s)=>{if(!Q(n,s)){const n=ve();Y(t,(e=>Y(e,(([t,s],l)=>s!==t?Se(n,l):Z(e,l))))),Y(n,(t=>dt(Qe[e],[s,t])))}})),Y(t[4],((t,s)=>Y(t,((t,n)=>Xt(t,Ye[e],Ze[e],[s,n])))))}if(!l){let s;Y(t[5],((t,n)=>{let l;Y(t,((t,a)=>{let o;Y(t,(([t,r],c)=>{r!==t&&(dt(_e[e],[n,a,c],r,t,Gt),s=l=o=1)})),o&&dt(Xe[e],[n,a],Gt)})),l&&dt(Be[e],[n],Gt)})),s&&dt(ke[e],void 0,Gt)}}},Zt=e=>{const t=Vs();t!=y&&dt(st[e],void 0,t);const s=U(lt[e])&&U(at[e]),n=U(ot[e])&&U(nt[e]);if(!s||!n){const t=e?[ie(k),ie(N)]:[k,N];if(s||Xt(t[0],lt[e],at[e]),!n){let s;Y(t[1],(([t,n],l)=>{n!==t&&(dt(ot[e],[l],n,t,Kt),s=1)})),s&&dt(nt[e],void 0,Kt)}}},_t=(e,...t)=>(Hs((()=>e(...F(t,w)))),Fs),es=()=>[oe(j,((e,t)=>-1===te(m,t)?null:oe(e,((e,s)=>-1===te(te(A,t),s)?null:oe(e,(([,e])=>e??null),((e,t)=>Re(t)))),G)),G),oe(N,(([,e])=>e??null),((e,t)=>Re(t)))],ts=()=>({cellsTouched:l,valuesTouched:o,changedCells:ce(j,me,Re),invalidCells:ce(fe),changedValues:oe(N,me,Re),invalidValues:oe(ge),changedTableIds:oe(m),changedRowIds:re(A),changedCellIds:ce(W),changedValueIds:oe(k)}),ss=()=>ce(Ae),ns=()=>ee(Ae),ls=e=>ee(te(ze,w(e))),as=e=>K(te(Ae,w(e))),os=e=>ee(te(Ae,w(e))),rs=(e,t,s,n=0,l)=>{return F(H((o=te(Ae,w(e)),r=(e,s)=>[L(t)?s:te(e,w(t)),s],a=([e],[t])=>((e??0)<(t??0)?-1:1)*(s?-1:1),F([...o?.entries()??[]],(([e,t])=>r(t,e))).sort(a)),n,L(l)?l:n+l),(([,e])=>e));var a,o,r},cs=(e,t)=>ee(te(te(Ae,w(e)),w(t))),is=(e,t,s)=>te(te(te(Ae,w(e)),w(t)),w(s)),ds=()=>oe(We),us=()=>ee(We),hs=e=>te(We,w(e)),fs=()=>!U(Ae),gs=e=>Q(Ae,w(e)),Ts=(e,t)=>Q(te(ze,w(e)),w(t)),Cs=(e,t)=>Q(te(Ae,w(e)),w(t)),bs=(e,t,s)=>Q(te(te(Ae,w(e)),w(t)),w(s)),Vs=()=>!U(We),vs=e=>Q(We,w(e)),Ss=e=>_t((()=>(e=>xe(e,gt,$t))(e)?It(e):0)),ps=e=>_t((()=>bt(e)?Et(e):0)),ws=e=>{try{yt(He(e))}catch{}return Fs},ys=t=>_t((()=>{if((e=xe(t,(e=>xe(e,ft))))&&(pt(t),!U(Ae))){const e=ss();ms(),Ss(e)}})),Is=e=>_t((()=>{if(t=(e=>xe(e,ft))(e)){const s=ds();Es(),Js(),t=!0,wt(e),ps(s)}})),ms=()=>_t((()=>It({}))),Rs=e=>_t((e=>Q(Ae,e)?Ft(e):0),e),Ls=(e,t)=>_t(((e,t)=>J(te(Ae,e),(s=>Q(s,t)?Ot(e,s,t):0))),e,t),Js=()=>_t((()=>Et({}))),Ms=()=>_t((()=>{pt({}),e=!1})),Es=()=>_t((()=>{wt({}),t=!1})),Hs=(e,t)=>{if(-1!=I){xs();const s=e();return Ps(t),s}},xs=()=>(-1!=I&&I++,1==I&&dt(rt,void 0,es,ts),Fs),Ps=e=>(I>0&&(I--,0==I&&(l=!U(j),o=!U(N),I=1,Qt(1),l&&Yt(1),Ut(1),o&&Zt(1),e?.(es,ts)&&(Y(j,((e,t)=>Y(e,((e,s)=>Y(e,(([e],n)=>Je(Fs,t,s,n,e))))))),Y(N,(([e],t)=>Me(Fs,t,e))),l=o=!1),dt(ct[0],void 0,es,ts),I=-1,Qt(0),l&&Yt(0),Ut(0),o&&Zt(0),dt(ct[1],void 0,es,ts),n?.(Fs,es,ts),I=0,l=o=!1,d=fs(),y=Vs(),P([m,R,z,A,W,j,fe,k,N,ge],X))),Fs),Fs={getContent:()=>[ss(),ds()],getTables:ss,getTableIds:ns,getTable:e=>re(te(Ae,w(e))),getTableCellIds:ls,getRowCount:as,getRowIds:os,getSortedRowIds:rs,getRow:(e,t)=>oe(te(te(Ae,w(e)),w(t))),getCellIds:cs,getCell:is,getValues:ds,getValueIds:us,getValue:hs,hasTables:fs,hasTable:gs,hasTableCell:Ts,hasRow:Cs,hasCell:bs,hasValues:Vs,hasValue:vs,getTablesJson:()=>Ee(Ae),getValuesJson:()=>Ee(We),getJson:()=>Ee([Ae,We]),getTablesSchemaJson:()=>Ee(Te),getValuesSchemaJson:()=>Ee(be),getSchemaJson:()=>Ee([Te,be]),hasTablesSchema:()=>e,hasValuesSchema:()=>t,setContent:([e,t])=>_t((()=>{(G(e)?ms:Ss)(e),(G(t)?Js:ps)(t)})),setTables:Ss,setTable:(e,t)=>_t((e=>gt(t,e)?mt(e,t):0),e),setRow:(e,t,s)=>_t(((e,t)=>Tt(e,t,s)?Rt(e,Pt(e),t,s):0),e,t),addRow:(e,t,s=!0)=>Hs((()=>{let n;return Tt(e,n,t)&&(e=w(e),Rt(e,Pt(e),n=xt(e,s?1:0),t)),n})),setPartialRow:(e,t,s)=>_t(((e,t)=>{if(Tt(e,t,s,1)){const n=Pt(e);q(s,((s,l)=>Jt(e,n,t,l,s)))}}),e,t),setCell:(e,t,s,n)=>_t(((e,t,s)=>J(Ct(e,t,s,E(n)?n(is(e,t,s)):n),(n=>Jt(e,Pt(e),t,s,n)))),e,t,s),setValues:ps,setPartialValues:e=>_t((()=>bt(e,1)?q(e,((e,t)=>Ht(t,e))):0)),setValue:(e,t)=>_t((e=>J(Vt(e,E(t)?t(hs(e)):t),(t=>Ht(e,t)))),e),setTransactionChanges:e=>_t((()=>{q(e[0],((e,t)=>L(e)?Rs(t):q(e,((e,s)=>L(e)?Ls(t,s):q(e,((e,n)=>Je(Fs,t,s,n,e))))))),q(e[1],((e,t)=>Me(Fs,t,e)))})),setTablesJson:ws,setValuesJson:e=>{try{Mt(He(e))}catch{}return Fs},setJson:e=>_t((()=>{try{const[t,s]=He(e);yt(t),Mt(s)}catch{ws(e)}})),setTablesSchema:ys,setValuesSchema:Is,setSchema:(e,t)=>_t((()=>{ys(e),Is(t)})),delTables:ms,delTable:Rs,delRow:Ls,delCell:(e,t,s,n)=>_t(((e,t,s)=>J(te(Ae,e),(l=>J(te(l,t),(a=>Q(a,s)?zt(e,l,t,a,s,n):0))))),e,t,s),delValues:Js,delValue:e=>_t((e=>Q(We,e)?At(e):0),e),delTablesSchema:Ms,delValuesSchema:Es,delSchema:()=>_t((()=>{Ms(),Es()})),transaction:Hs,startTransaction:xs,finishTransaction:Ps,forEachTable:e=>Y(Ae,((t,s)=>e(s,(e=>Y(t,((t,s)=>e(s,(e=>se(t,e))))))))),forEachTableCell:(e,t)=>se(te(ze,w(e)),t),forEachRow:(e,t)=>Y(te(Ae,w(e)),((e,s)=>t(s,(t=>se(e,t))))),forEachCell:(e,t,s)=>se(te(te(Ae,w(e)),w(t)),s),forEachValue:e=>se(We,e),addSortedRowIdsListener:(e,t,s,n,l,a,o)=>{let r=rs(e,t,s,n,l);return it((()=>{const o=rs(e,t,s,n,l);var c,i,d;i=r,x(c=o)===x(i)&&(d=(e,t)=>i[t]===e,c.every(d))||(r=o,a(Fs,e,t,s,n,l,r))}),Qe[o?1:0],[e,t],[ns])},addStartTransactionListener:e=>it(e,rt),addWillFinishTransactionListener:e=>it(e,ct[0]),addDidFinishTransactionListener:e=>it(e,ct[1]),callListener:e=>(ht(e),Fs),delListener:e=>(ut(e),Fs),getListenerStats:()=>({}),createStore:Fe,addListener:it,callListeners:dt,addPostTransactionListener:e=>{n=e}};return q({[i+h]:[0,je,[],()=>[fs()]],[h]:[0,ke],[f]:[0,De],[i+u]:[1,Ne,[ns],e=>[gs(...e)]],[u]:[1,Be,[ns]],[u+V]:[1,$e,[ns]],[i+u+b]:[2,qe,[ns,ls],e=>[Ts(...e)]],[T]:[1,Ge,[ns]],[C]:[1,Ke,[ns]],[i+g]:[2,Ue,[ns,os],e=>[Cs(...e)]],[g]:[2,Xe,[ns,os]],[V]:[2,Ye,[ns,os]],[i+b]:[3,Ze,[ns,os,cs],e=>[bs(...e)]],[b]:[3,_e,[ns,os,cs],e=>ye(is(...e))],InvalidCell:[3,et],[i+S]:[0,st,[],()=>[Vs()]],[S]:[0,nt],[p]:[0,lt],[i+v]:[1,at,[us],e=>[vs(...e)]],[v]:[1,ot,[us],e=>ye(hs(e[0]))],InvalidValue:[1,tt]},(([e,t,s,n],l)=>{Fs["add"+l+"Listener"]=(...l)=>it(l[e],t[l[e+1]?1:0],e>0?H(l,0,e):void 0,s,n)})),D(Fs)},Oe=2**36,ze=2**30,Ae=2**24,We=2**18,je=4096,ke=64,De=e=>String.fromCharCode(48+(63&e)),Ne=(e,t)=>m(e,t)-48,Be={HasTable:1,Table:1,TableCellIds:1,HasTableCell:2,RowCount:1,RowIds:1,SortedRowIds:5,HasRow:2,Row:2,CellIds:2,HasCell:3,Cell:3,HasValue:1,Value:1,InvalidCell:3,InvalidValue:1};e.createMergeableStore=e=>{let t=1;const[n,l]=(e=>{let t=0,s=0;const n=(l=(e,t)=>(e<<5)+e^m(t),((e,t="",s)=>e.split(t,s))(e).reduce(l,5381)>>>0);var l;const a=e=>{const n=t,[l,a]=L(e)?[0,0]:[Ne(o=e,0)*Oe+Ne(o,1)*ze+Ne(o,2)*Ae+Ne(o,3)*We+Ne(o,4)*je+Ne(o,5)*ke+Ne(o,6),Ne(o,7)*We+Ne(o,8)*je+Ne(o,9)*ke+Ne(o,10),Ne(o,11)*Ae+Ne(o,12)*We+Ne(o,13)*je+Ne(o,14)*ke+Ne(o,15)];var o;t=Math.max(n,l,Date.now()),s=t==n?t==l?Math.max(s,a):s:t==l?a:-1};return[()=>{return a(),l=++s,o=n,De((e=t)/Oe)+De(e/ze)+De(e/Ae)+De(e/We)+De(e/je)+De(e/ke)+De(e)+De(l/We)+De(l/je)+De(l/ke)+De(l)+De(o/Ae)+De(o/We)+De(o/je)+De(o/ke)+De(o);var e,l,o},a]})(e),a=Fe(),o=[s,[ge(),ge()]],r=e=>{const s=[{},{}];return l(e[0]),be(e,o,(([e,t],[n,l])=>[be(e,n,((e,t)=>Ve(e,t,s[0],((e,t,n)=>Ve(e,t,s[0][n],((e,t,l)=>Ve(e,t,s[0][n][l]))))))),be(t,l,((e,t)=>Ve(e,t,s[1])))])),t=0,a.setTransactionChanges(s),t=1,c},c={getMergeableContent:()=>Ce(o,(([e,t],s)=>[s,[Te(e,(e=>Te(e,(e=>Te(e,me))))),Te(t,me)]])),applyMergeableContent:r,merge:e=>{const t=c.getMergeableContent(),s=e.getMergeableContent();return e.applyMergeableContent(t),r(s)}};return a.addPostTransactionListener(((e,s)=>{if(t){const e=n(),[t,l]=s(),[a,r]=o[1];o[0]=e,G(t)||(a[0]=e,q(t,((t,s)=>{const n=le(a[1],s,fe);if(n[0]=e,L(t))n[1]=null;else{const s=n[1]??=_();q(t,((t,n)=>{const l=le(s,n,fe);if(l[0]=e,L(t))l[1]=null;else{const s=l[1]??=_();q(t,((t,n)=>ne(s,n,[e,t])))}}))}}))),G(l)||(r[0]=e,q(l,((t,s)=>{ne(r[1],s,[e,t])})))}})),q(a,((e,t)=>c[t]=y(t,"set")||y(t,"del")||I(t,"Transaction")||"callListener"==t?(...t)=>(e(...t),c):y(t,"add")&&I(t,"Listener")?(...s)=>{const n=Be[H(t,3,-8)]??0,l=s[n];return s[n]=(e,...t)=>l(c,...t),e(...s)}:e)),D(c)}},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseMergeableStore={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s="",n=t(s),a=t(!0),l=t(0),o=t(t),r="type",i="default",c="Has",d="Ids",u="Table",h=u+"s",g=u+d,f="Row",T=f+"Count",b=f+d,C="Cell",p=C+d,v="Value",V=v+"s",y=v+d,S=e=>s+e,m=(e,t)=>e.startsWith(t),w=(e,t)=>e.endsWith(t),R=(e,t=0)=>e.charCodeAt(t),I=isFinite,L=e=>null==e,M=(e,t,s)=>L(e)?s?.():t(e),J=e=>e==n||e==a,E=e=>t(e)==o,H=(e,t,s)=>e.slice(t,s),x=e=>e.length,P=(e,t)=>e.forEach(t),F=(e,t)=>e.map(t),O=(e,...t)=>e.push(...t),z=Object,A=e=>z.getPrototypeOf(e),W=z.entries,j=z.keys,k=z.isFrozen,D=z.freeze,N=e=>!L(e)&&M(A(e),(e=>e==z.prototype||L(A(e))),(()=>!0)),B=(e,t)=>t in e,$=(e,t)=>(delete e[t],e),q=(e,t)=>P(W(e),(([e,s])=>t(s,e))),G=(e,t)=>F(W(e),(([e,s])=>t(s,e))),K=e=>N(e)&&0==(e=>x(j(e)))(e),Q=e=>e?.size??0,U=(e,t)=>e?.has(t)??!1,X=e=>L(e)||0==Q(e),Y=e=>e.clear(),Z=(e,t)=>e?.forEach(t),_=(e,t)=>e?.delete(t),ee=e=>new Map(e),te=e=>[...e?.keys()??[]],se=(e,t)=>e?.get(t),ne=(e,t)=>Z(e,((e,s)=>t(s,e))),ae=(e,t,s)=>L(s)?(_(e,t),e):e?.set(t,s),le=(e,t,s)=>(U(e,t)||ae(e,t,s()),se(e,t)),oe=(e,t,s,n=ae)=>(G(t,((t,n)=>s(e,n,t))),ne(e,(s=>B(t,s)?0:n(e,s))),e),re=(e,t,s)=>{const n={};return Z(e,((e,a)=>{const l=t?t(e,a):e;!s?.(l,e)&&(n[a]=l)})),n},ie=(e,t,s)=>re(e,(e=>re(e,t,s)),K),ce=(e,t,s)=>re(e,(e=>ie(e,t,s)),K),de=(e,t)=>{const s=ee();return Z(e,((e,n)=>s.set(n,t?.(e)??e))),s},ue=e=>de(e,de),he=e=>de(e,ue),ge=(e,t,s,n,a=0)=>M((s?le:se)(e,t[a],a>x(t)-2?s:ee),(l=>{if(a>x(t)-2)return n?.(l)&&ae(e,t[a]),l;const o=ge(l,t,s,n,a+1);return X(l)&&ae(e,t[a]),o})),fe=()=>[s,void 0],Te=()=>[s,ee()],be=([e,t],s)=>[e,s(t,e)],Ce=(e,t)=>be(e,(e=>re(e,t))),pe=(e,t,s,n)=>q(e,((e,a)=>ve(e,le(t,a,Te),s[a]=((e=[])=>z.fromEntries(e))(),n))),ve=([e,t],s,n,a)=>{e>s[0]&&(s[0]=e),a(t,s[1],n)},Ve=(e,t,s)=>q(e,(([e,n],a)=>{const l=le(t,a,fe);e>l[0]&&(l[0]=e,l[1]=s[a]=n)})),ye=e=>new Set(Array.isArray(e)||L(e)?e:[e]),Se=(e,t)=>e?.add(t),me=/^\d+$/,we=()=>{const e=[];let t=0;return[n=>(n?e.shift():null)??s+t++,t=>{me.test(t)&&x(e)<1e3&&O(e,t)}]},Re=e=>[e,e],Ie=()=>[ee(),ee()],Le=e=>[...e],Me=([e,t])=>e===t,Je=e=>{const s=t(e);return J(s)||s==l&&I(e)?s:void 0},Ee=(e,t,s,n,a)=>L(a)?e.delCell(t,s,n,!0):e.setCell(t,s,n,a),He=(e,t,s)=>L(s)?e.delValue(t):e.setValue(t,s),xe=e=>JSON.stringify(e,((e,t)=>t instanceof Map?z.fromEntries([...t]):t)),Pe=JSON.parse,Fe=(e,t,s)=>L(e)||!N(e)||K(e)||k(e)?(s?.(),!1):(G(e,((s,n)=>{t(s,n)||$(e,n)})),!K(e)),Oe=(e,t,s)=>ae(e,t,se(e,t)==-s?void 0:s),ze=()=>{let e,t,n,a=!1,o=!1,d=!1,m=!1,w=0;const R=ee(),I=ee(),z=ee(),A=ee(),W=ee(),j=ee(),k=ee(),N=ee(),q=ee(),fe=ee(),Te=ee(),be=ee(),Ce=ee(),pe=ee(),ve=ye(),Ve=ee(),me=ee(),Ae=ee(),We=ee(),je=Ie(),ke=Ie(),De=Ie(),Ne=Ie(),Be=Ie(),$e=Ie(),qe=Ie(),Ge=Ie(),Ke=Ie(),Qe=Ie(),Ue=Ie(),Xe=Ie(),Ye=Ie(),Ze=Ie(),_e=Ie(),et=Ie(),tt=Ie(),st=Ie(),nt=Ie(),at=Ie(),lt=Ie(),ot=Ie(),rt=ee(),it=Ie(),[ct,dt,ut,ht]=(e=>{let t;const[n,a]=we(),l=ee();return[(e,a,o,r=[],i=(()=>[]))=>{t??=xs;const c=n(1);return ae(l,c,[e,a,o,r,i]),Se(ge(a,o??[s],ye),c),c},(e,n,...a)=>P(((e,t=[s])=>{const n=[],a=(e,s)=>s==x(t)?O(n,e):null===t[s]?Z(e,(e=>a(e,s+1))):P([t[s],null],(t=>a(se(e,t),s+1)));return a(e,0),n})(e,n),(e=>Z(e,(e=>se(l,e)[0](t,...n??[],...a))))),e=>M(se(l,e),(([,t,n])=>(ge(t,n??[s],void 0,(t=>(_(t,e),X(t)?1:0))),ae(l,e),a(e),n))),e=>M(se(l,e),(([e,,s=[],n,a])=>{const l=(...o)=>{const r=x(o);r==x(s)?e(t,...o,...a(o)):L(s[r])?P(n[r]?.(...o)??[],(e=>l(...o,e))):l(...o,s[r])};l()}))]})(),gt=e=>{if(!Fe(e,((e,t)=>[r,i].includes(t))))return!1;const t=e[r];return!(!J(t)&&t!=l||(Je(e[i])!=t&&$(e,i),0))},ft=(t,s)=>(!e||U(Te,s)||$t(s))&&Fe(t,((e,t)=>Tt(s,t,e)),(()=>$t(s))),Tt=(e,t,s,n)=>Fe(n?s:vt(s,e,t),((n,a)=>M(bt(e,t,a,n),(e=>(s[a]=e,!0)),(()=>!1))),(()=>$t(e,t))),bt=(t,s,n,a)=>e?M(se(se(Te,t),n),(e=>Je(a)!=e[r]?$t(t,s,n,a,e[i]):a),(()=>$t(t,s,n,a))):L(Je(a))?$t(t,s,n,a):a,Ct=(e,t)=>Fe(t?e:Vt(e),((t,s)=>M(pt(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>qt())),pt=(e,s)=>t?M(se(Ce,e),(t=>Je(s)!=t[r]?qt(e,s,t[i]):s),(()=>qt(e,s))):L(Je(s))?qt(e,s):s,vt=(e,t,s)=>(M(se(be,t),(([n,a])=>{Z(n,((t,s)=>{B(e,s)||(e[s]=t)})),Z(a,(n=>{B(e,n)||$t(t,s,n)}))})),e),Vt=e=>(t&&(Z(pe,((t,s)=>{B(e,s)||(e[s]=t)})),Z(ve,(t=>{B(e,t)||qt(t)}))),e),yt=e=>oe(Te,e,((e,t,s)=>{const n=ee(),a=ye();oe(le(Te,t,ee),s,((e,t,s)=>{ae(e,t,s),M(s[i],(e=>ae(n,t,e)),(()=>Se(a,t)))})),ae(be,t,[n,a])}),((e,t)=>{ae(Te,t),ae(be,t)})),St=e=>oe(Ce,e,((e,t,s)=>{ae(Ce,t,s),M(s[i],(e=>ae(pe,t,e)),(()=>Se(ve,t)))}),((e,t)=>{ae(Ce,t),ae(pe,t),_(ve,t)})),mt=e=>K(e)?ms():ps(e),wt=e=>oe(Ae,e,((e,t,s)=>Rt(t,s)),((e,t)=>Ft(t))),Rt=(e,t)=>oe(le(Ae,e,(()=>(Wt(e,1),ae(Ve,e,we()),ae(me,e,ee()),ee()))),t,((t,s,n)=>It(e,t,s,n)),((t,s)=>Ot(e,t,s))),It=(e,t,s,n,a)=>oe(le(t,s,(()=>(jt(e,s,1),ee()))),n,((t,n,a)=>Lt(e,s,t,n,a)),((n,l)=>zt(e,t,s,n,l,a))),Lt=(e,t,s,n,a)=>{U(s,n)||kt(e,t,n,1);const l=se(s,n);a!==l&&(Dt(e,t,n,l,a),ae(s,n,a))},Mt=(e,t,s,n,a)=>M(se(t,s),(t=>Lt(e,s,t,n,a)),(()=>It(e,t,s,vt({[n]:a},e,s)))),Jt=e=>K(e)?Is():vs(e),Et=e=>oe(We,e,((e,t,s)=>Ht(t,s)),((e,t)=>At(t))),Ht=(e,t)=>{U(We,e)||Nt(e,1);const s=se(We,e);t!==s&&(Bt(e,s,t),ae(We,e,t))},xt=(e,t)=>{const[s]=se(Ve,e),n=s(t);return U(se(Ae,e),n)?xt(e,t):n},Pt=e=>se(Ae,e)??Rt(e,{}),Ft=e=>Rt(e,{}),Ot=(e,t,s)=>{const[,n]=se(Ve,e);n(s),It(e,t,s,{},!0)},zt=(e,t,s,n,a,l)=>{const o=se(se(be,e)?.[0],a);if(!L(o)&&!l)return Lt(e,s,n,a,o);const r=t=>{Dt(e,s,t,se(n,t)),kt(e,s,t,-1),ae(n,t)};L(o)?r(a):ne(n,r),X(n)&&(jt(e,s,-1),X(ae(t,s))&&(Wt(e,-1),ae(Ae,e),ae(Ve,e),ae(me,e)))},At=e=>{const t=se(pe,e);if(!L(t))return Ht(e,t);Bt(e,se(We,e)),Nt(e,-1),ae(We,e)},Wt=(e,t)=>Oe(R,e,t),jt=(e,t,s)=>Oe(le(A,e,ee),t,s)&&ae(z,e,le(z,e,(()=>0))+s),kt=(e,t,s,n)=>{const a=se(me,e),l=se(a,s)??0;(0==l&&1==n||1==l&&-1==n)&&Oe(le(I,e,ee),s,n),ae(a,s,l!=-n?l+n:null),Oe(le(le(W,e,ee),t,ee),s,n)},Dt=(e,t,s,n,a)=>le(le(le(j,e,ee),t,ee),s,(()=>[n,0]))[1]=a,Nt=(e,t)=>Oe(k,e,t),Bt=(e,t,s)=>le(N,e,(()=>[t,0]))[1]=s,$t=(e,t,s,n,a)=>(O(le(le(le(q,e,ee),t,ee),s,(()=>[])),n),a),qt=(e,t,s)=>(O(le(fe,e,(()=>[])),t),s),Gt=(e,t,s)=>M(se(se(se(j,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...Re(rs(e,t,s))])),Kt=e=>M(se(N,e),(([e,t])=>[!0,e,t]),(()=>[!1,...Re(ds(e))])),Qt=e=>X(q)||X(et[e])?0:Z(e?he(q):q,((t,s)=>Z(t,((t,n)=>Z(t,((t,a)=>dt(et[e],[s,n,a],t))))))),Ut=e=>X(fe)||X(tt[e])?0:Z(e?de(fe):fe,((t,s)=>dt(tt[e],[s],t))),Xt=(e,t,s,n)=>{if(!X(e))return dt(t,n,(()=>re(e))),ne(e,((e,t)=>dt(s,[...n??[],e],1==t))),1},Yt=e=>{const t=us();t!=d&&dt(je[e],void 0,t);const s=X(Qe[e]),n=X(Ye[e])&&X(Ze[e])&&X(Ke[e])&&X(Ue[e])&&X($e[e])&&X(qe[e])&&X(Ge[e])&&s&&X(De[e])&&X(Ne[e]),a=X(_e[e])&&X(Xe[e])&&X(Be[e])&&X(ke[e]);if(!n||!a){const t=e?[de(R),ue(I),de(z),ue(A),he(W),he(j)]:[R,I,z,A,W,j];if(!n){Xt(t[0],De[e],Ne[e]),Z(t[1],((t,s)=>Xt(t,$e[e],qe[e],[s]))),Z(t[2],((t,s)=>{0!=t&&dt(Ge[e],[s],ns(s))}));const n=ye();Z(t[3],((t,a)=>{Xt(t,Ke[e],Ue[e],[a])&&!s&&(dt(Qe[e],[a,null]),Se(n,a))})),s||Z(t[5],((t,s)=>{if(!U(n,s)){const n=ye();Z(t,(e=>Z(e,(([t,s],a)=>s!==t?Se(n,a):_(e,a))))),Z(n,(t=>dt(Qe[e],[s,t])))}})),Z(t[4],((t,s)=>Z(t,((t,n)=>Xt(t,Ye[e],Ze[e],[s,n])))))}if(!a){let s;Z(t[5],((t,n)=>{let a;Z(t,((t,l)=>{let o;Z(t,(([t,r],i)=>{r!==t&&(dt(_e[e],[n,l,i],r,t,Gt),s=a=o=1)})),o&&dt(Xe[e],[n,l],Gt)})),a&&dt(Be[e],[n],Gt)})),s&&dt(ke[e],void 0,Gt)}}},Zt=e=>{const t=bs();t!=m&&dt(st[e],void 0,t);const s=X(at[e])&&X(lt[e]),n=X(ot[e])&&X(nt[e]);if(!s||!n){const t=e?[de(k),de(N)]:[k,N];if(s||Xt(t[0],at[e],lt[e]),!n){let s;Z(t[1],(([t,n],a)=>{n!==t&&(dt(ot[e],[a],n,t,Kt),s=1)})),s&&dt(nt[e],void 0,Kt)}}},_t=(e,...t)=>(Js((()=>e(...F(t,S)))),xs),es=()=>ce(Ae),ts=()=>te(Ae),ss=e=>te(se(me,S(e))),ns=e=>Q(se(Ae,S(e))),as=e=>te(se(Ae,S(e))),ls=(e,t,s,n=0,a)=>{return F(H((o=se(Ae,S(e)),r=(e,s)=>[L(t)?s:se(e,S(t)),s],l=([e],[t])=>((e??0)<(t??0)?-1:1)*(s?-1:1),F([...o?.entries()??[]],(([e,t])=>r(t,e))).sort(l)),n,L(a)?a:n+a),(([,e])=>e));var l,o,r},os=(e,t)=>te(se(se(Ae,S(e)),S(t))),rs=(e,t,s)=>se(se(se(Ae,S(e)),S(t)),S(s)),is=()=>re(We),cs=()=>te(We),ds=e=>se(We,S(e)),us=()=>!X(Ae),hs=e=>U(Ae,S(e)),gs=(e,t)=>U(se(me,S(e)),S(t)),fs=(e,t)=>U(se(Ae,S(e)),S(t)),Ts=(e,t,s)=>U(se(se(Ae,S(e)),S(t)),S(s)),bs=()=>!X(We),Cs=e=>U(We,S(e)),ps=e=>_t((()=>(e=>Fe(e,ft,$t))(e)?wt(e):0)),vs=e=>_t((()=>Ct(e)?Et(e):0)),Vs=e=>{try{mt(Pe(e))}catch{}return xs},ys=t=>_t((()=>{if((e=Fe(t,(e=>Fe(e,gt))))&&(yt(t),!X(Ae))){const e=es();ms(),ps(e)}})),Ss=e=>_t((()=>{if(t=(e=>Fe(e,gt))(e)){const s=is();Ms(),Is(),t=!0,St(e),vs(s)}})),ms=()=>_t((()=>wt({}))),ws=e=>_t((e=>U(Ae,e)?Ft(e):0),e),Rs=(e,t)=>_t(((e,t)=>M(se(Ae,e),(s=>U(s,t)?Ot(e,s,t):0))),e,t),Is=()=>_t((()=>Et({}))),Ls=()=>_t((()=>{yt({}),e=!1})),Ms=()=>_t((()=>{St({}),t=!1})),Js=(e,t)=>{if(-1!=w){Es();const s=e();return Hs(t),s}},Es=()=>(-1!=w&&w++,1==w&&dt(rt,void 0),xs),Hs=e=>(w>0&&(w--,0==w&&(a=!X(j),o=!X(N),w=1,Qt(1),a&&Yt(1),Ut(1),o&&Zt(1),e?.(xs)&&(Z(j,((e,t)=>Z(e,((e,s)=>Z(e,(([e],n)=>Ee(xs,t,s,n,e))))))),Z(N,(([e],t)=>He(xs,t,e))),a=o=!1),dt(it[0],void 0),w=-1,Qt(0),a&&Yt(0),Ut(0),o&&Zt(0),n?.(xs),dt(it[1],void 0),w=0,a=o=!1,d=us(),m=bs(),P([R,I,z,A,W,j,q,k,N,fe],Y))),xs),xs={getContent:()=>[es(),is()],getTables:es,getTableIds:ts,getTable:e=>ie(se(Ae,S(e))),getTableCellIds:ss,getRowCount:ns,getRowIds:as,getSortedRowIds:ls,getRow:(e,t)=>re(se(se(Ae,S(e)),S(t))),getCellIds:os,getCell:rs,getValues:is,getValueIds:cs,getValue:ds,hasTables:us,hasTable:hs,hasTableCell:gs,hasRow:fs,hasCell:Ts,hasValues:bs,hasValue:Cs,getTablesJson:()=>xe(Ae),getValuesJson:()=>xe(We),getJson:()=>xe([Ae,We]),getTablesSchemaJson:()=>xe(Te),getValuesSchemaJson:()=>xe(Ce),getSchemaJson:()=>xe([Te,Ce]),hasTablesSchema:()=>e,hasValuesSchema:()=>t,setContent:([e,t])=>_t((()=>{(K(e)?ms:ps)(e),(K(t)?Is:vs)(t)})),setTables:ps,setTable:(e,t)=>_t((e=>ft(t,e)?Rt(e,t):0),e),setRow:(e,t,s)=>_t(((e,t)=>Tt(e,t,s)?It(e,Pt(e),t,s):0),e,t),addRow:(e,t,s=!0)=>Js((()=>{let n;return Tt(e,n,t)&&(e=S(e),It(e,Pt(e),n=xt(e,s?1:0),t)),n})),setPartialRow:(e,t,s)=>_t(((e,t)=>{if(Tt(e,t,s,1)){const n=Pt(e);G(s,((s,a)=>Mt(e,n,t,a,s)))}}),e,t),setCell:(e,t,s,n)=>_t(((e,t,s)=>M(bt(e,t,s,E(n)?n(rs(e,t,s)):n),(n=>Mt(e,Pt(e),t,s,n)))),e,t,s),setValues:vs,setPartialValues:e=>_t((()=>Ct(e,1)?G(e,((e,t)=>Ht(t,e))):0)),setValue:(e,t)=>_t((e=>M(pt(e,E(t)?t(ds(e)):t),(t=>Ht(e,t)))),e),applyChanges:e=>_t((()=>{G(e[0],((e,t)=>L(e)?ws(t):G(e,((e,s)=>L(e)?Rs(t,s):G(e,((e,n)=>Ee(xs,t,s,n,e))))))),G(e[1],((e,t)=>He(xs,t,e)))})),setTablesJson:Vs,setValuesJson:e=>{try{Jt(Pe(e))}catch{}return xs},setJson:e=>_t((()=>{try{const[t,s]=Pe(e);mt(t),Jt(s)}catch{Vs(e)}})),setTablesSchema:ys,setValuesSchema:Ss,setSchema:(e,t)=>_t((()=>{ys(e),Ss(t)})),delTables:ms,delTable:ws,delRow:Rs,delCell:(e,t,s,n)=>_t(((e,t,s)=>M(se(Ae,e),(a=>M(se(a,t),(l=>U(l,s)?zt(e,a,t,l,s,n):0))))),e,t,s),delValues:Is,delValue:e=>_t((e=>U(We,e)?At(e):0),e),delTablesSchema:Ls,delValuesSchema:Ms,delSchema:()=>_t((()=>{Ls(),Ms()})),transaction:Js,startTransaction:Es,getTransactionChanges:()=>[re(j,((e,t)=>-1===se(R,t)?void 0:re(e,((e,s)=>-1===se(se(A,t),s)?void 0:re(e,(([,e])=>e),((e,t)=>Me(t)))),K)),K),re(N,(([,e])=>e),((e,t)=>Me(t)))],getTransactionLog:()=>[a,o,ce(j,Le,Me),ce(q),re(N,Le,Me),re(fe),re(R),ie(A),ce(W),re(k)],finishTransaction:Hs,forEachTable:e=>Z(Ae,((t,s)=>e(s,(e=>Z(t,((t,s)=>e(s,(e=>ne(t,e))))))))),forEachTableCell:(e,t)=>ne(se(me,S(e)),t),forEachRow:(e,t)=>Z(se(Ae,S(e)),((e,s)=>t(s,(t=>ne(e,t))))),forEachCell:(e,t,s)=>ne(se(se(Ae,S(e)),S(t)),s),forEachValue:e=>ne(We,e),addSortedRowIdsListener:(e,t,s,n,a,l,o)=>{let r=ls(e,t,s,n,a);return ct((()=>{const o=ls(e,t,s,n,a);var i,c,d;c=r,x(i=o)===x(c)&&(d=(e,t)=>c[t]===e,i.every(d))||(r=o,l(xs,e,t,s,n,a,r))}),Qe[o?1:0],[e,t],[ts])},addStartTransactionListener:e=>ct(e,rt),addWillFinishTransactionListener:e=>ct(e,it[0]),addDidFinishTransactionListener:e=>ct(e,it[1]),callListener:e=>(ht(e),xs),delListener:e=>(ut(e),xs),getListenerStats:()=>({}),createStore:ze,addListener:ct,callListeners:dt,addPostTransactionListener:e=>{n=e}};return G({[c+h]:[0,je,[],()=>[us()]],[h]:[0,ke],[g]:[0,De],[c+u]:[1,Ne,[ts],e=>[hs(...e)]],[u]:[1,Be,[ts]],[u+p]:[1,$e,[ts]],[c+u+C]:[2,qe,[ts,ss],e=>[gs(...e)]],[T]:[1,Ge,[ts]],[b]:[1,Ke,[ts]],[c+f]:[2,Ue,[ts,as],e=>[fs(...e)]],[f]:[2,Xe,[ts,as]],[p]:[2,Ye,[ts,as]],[c+C]:[3,Ze,[ts,as,os],e=>[Ts(...e)]],[C]:[3,_e,[ts,as,os],e=>Re(rs(...e))],InvalidCell:[3,et],[c+V]:[0,st,[],()=>[bs()]],[V]:[0,nt],[y]:[0,at],[c+v]:[1,lt,[cs],e=>[Cs(...e)]],[v]:[1,ot,[cs],e=>Re(ds(e[0]))],InvalidValue:[1,tt]},(([e,t,s,n],a)=>{xs["add"+a+"Listener"]=(...a)=>ct(a[e],t[a[e+1]?1:0],e>0?H(a,0,e):void 0,s,n)})),D(xs)},Ae=2**36,We=2**30,je=2**24,ke=2**18,De=4096,Ne=64,Be=e=>String.fromCharCode(48+(63&e)),$e=(e,t)=>R(e,t)-48,qe={HasTable:1,Table:1,TableCellIds:1,HasTableCell:2,RowCount:1,RowIds:1,SortedRowIds:5,HasRow:2,Row:2,CellIds:2,HasCell:3,Cell:3,HasValue:1,Value:1,InvalidCell:3,InvalidValue:1},Ge=()=>[s,[Te(),Te()]];e.createMergeableStore=e=>{let t=1,s=Ge();const[n,a]=(e=>{let t=0,s=0;const n=(a=(e,t)=>(e<<5)+e^R(t),((e,t="",s)=>e.split(t,s))(e).reduce(a,5381)>>>0);var a;const l=e=>{const n=t,[a,l]=L(e)?[0,0]:[$e(o=e,0)*Ae+$e(o,1)*We+$e(o,2)*je+$e(o,3)*ke+$e(o,4)*De+$e(o,5)*Ne+$e(o,6),$e(o,7)*ke+$e(o,8)*De+$e(o,9)*Ne+$e(o,10),$e(o,11)*je+$e(o,12)*ke+$e(o,13)*De+$e(o,14)*Ne+$e(o,15)];var o;t=Math.max(n,a,Date.now()),s=t==n?t==a?Math.max(s,l):s:t==a?l:-1};return[()=>{return l(),a=++s,o=n,Be((e=t)/Ae)+Be(e/We)+Be(e/je)+Be(e/ke)+Be(e/De)+Be(e/Ne)+Be(e)+Be(a/ke)+Be(a/De)+Be(a/Ne)+Be(a)+Be(o/je)+Be(o/ke)+Be(o/De)+Be(o/Ne)+Be(o);var e,a,o},l]})(e),l=ze(),o=e=>{const s=t;t=0,e(),t=s},r=e=>{const t=[{},{}];return a(e[0]),ve(e,s,t,(([e,t],[s,n],[a,l])=>{ve(e,s,a,((e,t,s)=>pe(e,t,s,((e,t,s)=>pe(e,t,s,Ve))))),ve(t,n,l,Ve)})),o((()=>l.applyChanges(t))),i},i={getMergeableContent:()=>be(s,(([e,t])=>[Ce(e,(e=>Ce(e,(e=>Ce(e,Le))))),Ce(t,Le)])),setMergeableContent:e=>(o((()=>l.transaction((()=>{l.delTables().delValues(),s=Ge()})))),r(e),i),applyMergeableChanges:r,merge:e=>{const t=i.getMergeableContent(),s=e.getMergeableContent();return e.applyMergeableChanges(t),r(s)}};return l.addPostTransactionListener((()=>{if(t){const e=n(),[t,a,o,,r]=l.getTransactionLog(),[i,c]=s[1];s[0]=e,t&&(i[0]=e,G(o,((t,s)=>{const n=le(i[1],s,fe),a=n[1]??=ee();n[0]=e,G(t,((t,s)=>{const n=le(a,s,fe),l=n[1]??=ee();n[0]=e,G(t,(([,t],s)=>ae(l,s,[e,t])))}))}))),a&&(c[0]=e,G(r,(([,t],s)=>{ae(c[1],s,[e,t])})))}})),G(l,((e,t)=>i[t]=m(t,"set")||m(t,"del")||m(t,"apply")||w(t,"Transaction")||"callListener"==t?(...t)=>(e(...t),i):m(t,"add")&&w(t,"Listener")?(...s)=>{const n=qe[H(t,3,-8)]??0,a=s[n];return s[n]=(e,...t)=>a(i,...t),e(...s)}:e)),D(i)}},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseMergeableStore={});
Binary file
@@ -1 +1 @@
1
- var t,e;t=this,e=function(t){"use strict";const e=t=>null==t,a=(t,a,s)=>e(t)?s?.():a(t),s=Object,n=t=>s.getPrototypeOf(t),o=s.entries,c=s.keys,i=s.freeze,r=(t,e)=>a(t,(t=>t[e])),d=(t,a)=>!e(r(t,a)),y=(t,e)=>(delete t[e],t),u=(t,e)=>((t,e)=>t.map(e))(o(t),(([t,a])=>e(a,t))),l=t=>c(t).length,f=t=>(t=>!e(t)&&a(n(t),(t=>t==s.prototype||e(n(t))),(()=>!0)))(t)&&0==l(t),h=t=>new Map(t),p=(t,e)=>t?.get(e),v=(t,a,s)=>{return e(s)?(n=t,o=a,n?.delete(o),t):t?.set(a,s);var n,o},g=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||v(t,e,a()),p(t,e)},w=h(),A=h(),L=(t,e)=>[t[e].t,t[e].v],m=(t,a,s,n)=>{const o=e(a)?t:((t,e,a)=>(d(t,e)||(t[e]={}),t[e]))(t,a);let c;return u(s,((t,e)=>{n(o,e,t)&&(c=1)})),u(o,((t,e)=>{d(s,e)||(y(o,e),c=1)})),!e(a)&&f(o)&&y(t,a),c};t.createAutomergePersister=(t,s,n="tinybase",o)=>(s.change((t=>t[n]={})),((t,s,n,o,c,r,[d,y]=[],u=[])=>{let l,h,L,m=0,S=0;g(w,u,(()=>0)),g(A,u,(()=>[]));const b=async t=>(2!=m&&(m=1,await C.schedule((async()=>{await t(),m=0}))),C),C={load:async(e,a)=>await b((async()=>{try{t.setContent(await s())}catch{t.setContent([e,a])}})),startAutoLoad:async(e={},a={})=>(C.stopAutoLoad(),await C.load(e,a),S=1,L=o((async(e,a)=>{if(a){const e=a();await b((async()=>t.setTransactionChanges(e)))}else await b((async()=>{try{t.setContent(e?.()??await s())}catch(t){r?.(t)}}))})),C),stopAutoLoad:()=>(S&&(c(L),L=void 0,S=0),C),save:async e=>(1!=m&&(m=2,await C.schedule((async()=>{try{await n(t.getContent,e)}catch(t){r?.(t)}m=0}))),C),startAutoSave:async()=>(await C.stopAutoSave().save(),l=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();f(a)&&f(s)||C.save((()=>[a,s]))})),C),stopAutoSave:()=>(a(l,t.delListener),l=void 0,C),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(p(A,u),...t),await(async()=>{if(!p(w,u)){for(v(w,u,1);!e((t=p(A,u),h=t.shift()));)try{await h()}catch(t){r?.(t)}v(w,u,0)}var t})(),C),getStore:()=>t,destroy:()=>C.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return d&&(C[d]=()=>y),i(C)})(t,(async()=>{const t=await s.doc();return 2==l(t[n])?L(t,n):void 0}),(async(t,o)=>s.change((s=>((t,s,n,o)=>{((t,e)=>{f(t[e])&&(t[e]={t:{},v:{}})})(t,s);const[c,i]=L(t,s),d=()=>{l=1};let l=1;if(a(o?.(),(([t,s])=>{l=0,u(t,((t,s)=>l?0:e(t)?y(c,s):a(c[s],(s=>u(t,((t,n)=>l?0:e(t)?y(s,n):a(r(s,n),(a=>u(t,((t,s)=>e(t)?y(a,s):a[s]=t))),d)))),d))),u(s,((t,a)=>l?0:e(t)?y(i,a):i[a]=t))})),l){const[t,e]=n();m(c,void 0,t,((t,e,a)=>m(c,e,a,((t,e,a)=>m(t,e,a,((t,e,a)=>{if(r(t,e)!==a)return t[e]=a,1})))))),m(i,void 0,e,((t,e,a)=>{r(i,e)!==a&&(i[e]=a)}))}})(s,n,t,o)))),(t=>{const e=({doc:e})=>t((()=>L(e,n)));return s.on("change",e),e}),(t=>{s.removeListener("change",t)}),o,["getDocHandle",s]))},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterAutomerge={});
1
+ var t,e;t=this,e=function(t){"use strict";const e=t=>typeof t,a=e(""),n=t=>null==t,s=(t,e,a)=>n(t)?a?.():e(t),o=Object,c=t=>o.getPrototypeOf(t),r=o.entries,i=o.keys,d=o.freeze,y=(t,e)=>s(t,(t=>t[e])),u=(t,e)=>e in t,l=(t,e)=>(delete t[e],t),p=(t,e)=>((t,e)=>t.map(e))(r(t),(([t,a])=>e(a,t))),g=t=>i(t).length,h=t=>(t=>!n(t)&&s(c(t),(t=>t==o.prototype||n(c(t))),(()=>!0)))(t)&&0==g(t),f=t=>new Map(t),v=(t,e)=>t?.get(e),w=(t,e,a)=>{return n(a)?(s=t,o=e,s?.delete(o),t):t?.set(e,a);var s,o},A=(t,e,a)=>{var n,s;return n=t,s=e,n?.has(s)||w(t,e,a()),v(t,e)},C=f(),b=f(),L=(t,e)=>[t[e].t,t[e].v],m=(t,e,a,s)=>{const o=n(e)?t:((t,e,a)=>(u(t,e)||(t[e]={}),t[e]))(t,e);let c;return p(a,((t,e)=>{s(o,e,t)&&(c=1)})),p(o,((t,e)=>{u(a,e)||(l(o,e),c=1)})),!n(e)&&h(o)&&l(t,e),c};t.createAutomergePersister=(t,o,c="tinybase",r)=>(o.change((t=>t[c]={})),((t,o,c,r,i,y,u,[l,p]=[],g=[])=>{let f,L,m,S=0,T=0;A(C,g,(()=>0)),A(b,g,(()=>[]));const x=(u?t.getMergeableContent:null)??t.getContent,M=t.getTransactionChanges,P=async t=>(2!=S&&(S=1,await j.schedule((async()=>{await t(),S=0}))),j),j={load:async(n,s)=>await P((async()=>{try{const n=await o();(u&&(t=>e(t)==a)(n[0])?t.applyMergeableChanges:t.setContent)(n)}catch{t.setContent([n,s])}})),startAutoLoad:async(e={},a={})=>(j.stopAutoLoad(),await j.load(e,a),T=1,m=r((async(e,a)=>{if(a){const e=a();await P((async()=>t.applyChanges(e)))}else await P((async()=>{try{t.setContent(e?.()??await o())}catch(t){y?.(t)}}))})),j),stopAutoLoad:()=>(T&&(i(m),m=void 0,T=0),j),save:async t=>(1!=S&&(S=2,await j.schedule((async()=>{try{await c(x,t)}catch(t){y?.(t)}S=0}))),j),startAutoSave:async()=>(await j.stopAutoSave().save(),f=t.addDidFinishTransactionListener((()=>{const[t,e]=M();h(t)&&h(e)||j.save((()=>[t,e]))})),j),stopAutoSave:()=>(s(f,t.delListener),f=void 0,j),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(v(b,g),...t),await(async()=>{if(!v(C,g)){for(w(C,g,1);!n((t=v(b,g),L=t.shift()));)try{await L()}catch(t){y?.(t)}w(C,g,0)}var t})(),j),getStore:()=>t,destroy:()=>j.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return l&&(j[l]=()=>p),d(j)})(t,(async()=>{const t=await o.doc();return 2==g(t[c])?L(t,c):void 0}),(async(t,e)=>o.change((a=>((t,e,a,o)=>{((t,e)=>{h(t[e])&&(t[e]={t:{},v:{}})})(t,e);const[c,r]=L(t,e),i=()=>{d=1};let d=1;if(s(o?.(),(([t,e])=>{d=0,p(t,((t,e)=>d?0:n(t)?l(c,e):s(c[e],(e=>p(t,((t,a)=>d?0:n(t)?l(e,a):s(y(e,a),(e=>p(t,((t,a)=>n(t)?l(e,a):e[a]=t))),i)))),i))),p(e,((t,e)=>d?0:n(t)?l(r,e):r[e]=t))})),d){const[t,e]=a();m(c,void 0,t,((t,e,a)=>m(c,e,a,((t,e,a)=>m(t,e,a,((t,e,a)=>{if(y(t,e)!==a)return t[e]=a,1})))))),m(r,void 0,e,((t,e,a)=>{y(r,e)!==a&&(r[e]=a)}))}})(a,c,t,e)))),(t=>{const e=({doc:e})=>t((()=>L(e,c)));return o.on("change",e),e}),(t=>{o.removeListener("change",t)}),r,!1,["getDocHandle",o]))},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterAutomerge={});