tinybase 5.0.0-beta.22 → 5.0.0-beta.24

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 (271) hide show
  1. package/@types/mergeable-store/index.d.cts +77 -11
  2. package/@types/mergeable-store/index.d.ts +77 -11
  3. package/@types/mergeable-store/with-schemas/index.d.cts +96 -11
  4. package/@types/mergeable-store/with-schemas/index.d.ts +96 -11
  5. package/@types/persisters/index.d.cts +0 -1
  6. package/@types/persisters/index.d.ts +0 -1
  7. package/@types/persisters/persister-expo-sqlite/index.d.cts +36 -40
  8. package/@types/persisters/persister-expo-sqlite/index.d.ts +36 -40
  9. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.cts +36 -40
  10. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +36 -40
  11. package/@types/persisters/with-schemas/index.d.cts +0 -1
  12. package/@types/persisters/with-schemas/index.d.ts +0 -1
  13. package/cjs/es6/index.cjs +3 -3
  14. package/cjs/es6/mergeable-store/index.cjs +2 -2
  15. package/cjs/es6/mergeable-store/with-schemas/index.cjs +2 -2
  16. package/cjs/es6/min/index.cjs +1 -1
  17. package/cjs/es6/min/index.cjs.gz +0 -0
  18. package/cjs/es6/min/mergeable-store/index.cjs +1 -1
  19. package/cjs/es6/min/mergeable-store/index.cjs.gz +0 -0
  20. package/cjs/es6/min/mergeable-store/with-schemas/index.cjs +1 -1
  21. package/cjs/es6/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
  22. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  23. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  24. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  25. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  26. package/cjs/es6/min/synchronizers/index.cjs +1 -1
  27. package/cjs/es6/min/synchronizers/index.cjs.gz +0 -0
  28. package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs +1 -1
  29. package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
  30. package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
  31. package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
  32. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  33. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  34. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  35. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  36. package/cjs/es6/min/synchronizers/with-schemas/index.cjs +1 -1
  37. package/cjs/es6/min/synchronizers/with-schemas/index.cjs.gz +0 -0
  38. package/cjs/es6/min/with-schemas/index.cjs +1 -1
  39. package/cjs/es6/min/with-schemas/index.cjs.gz +0 -0
  40. package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +7 -2
  41. package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +7 -2
  42. package/cjs/es6/synchronizers/index.cjs +1 -1
  43. package/cjs/es6/synchronizers/synchronizer-local/index.cjs +1 -1
  44. package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
  45. package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  46. package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  47. package/cjs/es6/synchronizers/with-schemas/index.cjs +1 -1
  48. package/cjs/es6/with-schemas/index.cjs +3 -3
  49. package/cjs/index.cjs +3 -3
  50. package/cjs/mergeable-store/index.cjs +2 -2
  51. package/cjs/mergeable-store/with-schemas/index.cjs +2 -2
  52. package/cjs/min/index.cjs +1 -1
  53. package/cjs/min/index.cjs.gz +0 -0
  54. package/cjs/min/mergeable-store/index.cjs +1 -1
  55. package/cjs/min/mergeable-store/index.cjs.gz +0 -0
  56. package/cjs/min/mergeable-store/with-schemas/index.cjs +1 -1
  57. package/cjs/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
  58. package/cjs/min/persisters/persister-expo-sqlite/index.cjs +1 -1
  59. package/cjs/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  60. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
  61. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  62. package/cjs/min/synchronizers/index.cjs +1 -1
  63. package/cjs/min/synchronizers/index.cjs.gz +0 -0
  64. package/cjs/min/synchronizers/synchronizer-local/index.cjs +1 -1
  65. package/cjs/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
  66. package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
  67. package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
  68. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  69. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  70. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  71. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  72. package/cjs/min/synchronizers/with-schemas/index.cjs +1 -1
  73. package/cjs/min/synchronizers/with-schemas/index.cjs.gz +0 -0
  74. package/cjs/min/with-schemas/index.cjs +1 -1
  75. package/cjs/min/with-schemas/index.cjs.gz +0 -0
  76. package/cjs/persisters/persister-expo-sqlite/index.cjs +7 -3
  77. package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +7 -3
  78. package/cjs/synchronizers/index.cjs +1 -1
  79. package/cjs/synchronizers/synchronizer-local/index.cjs +1 -1
  80. package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
  81. package/cjs/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  82. package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  83. package/cjs/synchronizers/with-schemas/index.cjs +1 -1
  84. package/cjs/with-schemas/index.cjs +3 -3
  85. package/es6/index.js +3 -3
  86. package/es6/mergeable-store/index.js +2 -2
  87. package/es6/mergeable-store/with-schemas/index.js +2 -2
  88. package/es6/min/index.js +1 -1
  89. package/es6/min/index.js.gz +0 -0
  90. package/es6/min/mergeable-store/index.js +1 -1
  91. package/es6/min/mergeable-store/index.js.gz +0 -0
  92. package/es6/min/mergeable-store/with-schemas/index.js +1 -1
  93. package/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
  94. package/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  95. package/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  96. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  97. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  98. package/es6/min/synchronizers/index.js +1 -1
  99. package/es6/min/synchronizers/index.js.gz +0 -0
  100. package/es6/min/synchronizers/synchronizer-local/index.js +1 -1
  101. package/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  102. package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  103. package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  104. package/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  105. package/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  106. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  107. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  108. package/es6/min/synchronizers/with-schemas/index.js +1 -1
  109. package/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
  110. package/es6/min/with-schemas/index.js +1 -1
  111. package/es6/min/with-schemas/index.js.gz +0 -0
  112. package/es6/persisters/persister-expo-sqlite/index.js +5 -2
  113. package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +5 -2
  114. package/es6/synchronizers/index.js +1 -1
  115. package/es6/synchronizers/synchronizer-local/index.js +1 -1
  116. package/es6/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  117. package/es6/synchronizers/synchronizer-ws-client/index.js +1 -1
  118. package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  119. package/es6/synchronizers/with-schemas/index.js +1 -1
  120. package/es6/with-schemas/index.js +3 -3
  121. package/index.js +3 -3
  122. package/mergeable-store/index.js +2 -2
  123. package/mergeable-store/with-schemas/index.js +2 -2
  124. package/min/index.js +1 -1
  125. package/min/index.js.gz +0 -0
  126. package/min/mergeable-store/index.js +1 -1
  127. package/min/mergeable-store/index.js.gz +0 -0
  128. package/min/mergeable-store/with-schemas/index.js +1 -1
  129. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  130. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  131. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  132. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  133. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  134. package/min/synchronizers/index.js +1 -1
  135. package/min/synchronizers/index.js.gz +0 -0
  136. package/min/synchronizers/synchronizer-local/index.js +1 -1
  137. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  138. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  139. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  140. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  141. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  142. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  143. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  144. package/min/synchronizers/with-schemas/index.js +1 -1
  145. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  146. package/min/with-schemas/index.js +1 -1
  147. package/min/with-schemas/index.js.gz +0 -0
  148. package/package.json +9 -112
  149. package/persisters/persister-expo-sqlite/index.js +5 -3
  150. package/persisters/persister-expo-sqlite/with-schemas/index.js +5 -3
  151. package/readme.md +2 -2
  152. package/releases.md +2 -2
  153. package/synchronizers/index.js +1 -1
  154. package/synchronizers/synchronizer-local/index.js +1 -1
  155. package/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  156. package/synchronizers/synchronizer-ws-client/index.js +1 -1
  157. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  158. package/synchronizers/with-schemas/index.js +1 -1
  159. package/umd/es6/index.js +3 -3
  160. package/umd/es6/mergeable-store/index.js +2 -2
  161. package/umd/es6/mergeable-store/with-schemas/index.js +2 -2
  162. package/umd/es6/min/index.js +1 -1
  163. package/umd/es6/min/index.js.gz +0 -0
  164. package/umd/es6/min/mergeable-store/index.js +1 -1
  165. package/umd/es6/min/mergeable-store/index.js.gz +0 -0
  166. package/umd/es6/min/mergeable-store/with-schemas/index.js +1 -1
  167. package/umd/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
  168. package/umd/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
  169. package/umd/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  170. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  171. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  172. package/umd/es6/min/synchronizers/index.js +1 -1
  173. package/umd/es6/min/synchronizers/index.js.gz +0 -0
  174. package/umd/es6/min/synchronizers/synchronizer-local/index.js +1 -1
  175. package/umd/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  176. package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  177. package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  178. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  179. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  180. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  181. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  182. package/umd/es6/min/synchronizers/with-schemas/index.js +1 -1
  183. package/umd/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
  184. package/umd/es6/min/with-schemas/index.js +1 -1
  185. package/umd/es6/min/with-schemas/index.js.gz +0 -0
  186. package/umd/es6/persisters/persister-expo-sqlite/index.js +12 -6
  187. package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +12 -6
  188. package/umd/es6/synchronizers/index.js +1 -1
  189. package/umd/es6/synchronizers/synchronizer-local/index.js +1 -1
  190. package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  191. package/umd/es6/synchronizers/synchronizer-ws-client/index.js +1 -1
  192. package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  193. package/umd/es6/synchronizers/with-schemas/index.js +1 -1
  194. package/umd/es6/with-schemas/index.js +3 -3
  195. package/umd/index.js +3 -3
  196. package/umd/mergeable-store/index.js +2 -2
  197. package/umd/mergeable-store/with-schemas/index.js +2 -2
  198. package/umd/min/index.js +1 -1
  199. package/umd/min/index.js.gz +0 -0
  200. package/umd/min/mergeable-store/index.js +1 -1
  201. package/umd/min/mergeable-store/index.js.gz +0 -0
  202. package/umd/min/mergeable-store/with-schemas/index.js +1 -1
  203. package/umd/min/mergeable-store/with-schemas/index.js.gz +0 -0
  204. package/umd/min/persisters/persister-expo-sqlite/index.js +1 -1
  205. package/umd/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  206. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  207. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  208. package/umd/min/synchronizers/index.js +1 -1
  209. package/umd/min/synchronizers/index.js.gz +0 -0
  210. package/umd/min/synchronizers/synchronizer-local/index.js +1 -1
  211. package/umd/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  212. package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  213. package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  214. package/umd/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  215. package/umd/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  216. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  217. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  218. package/umd/min/synchronizers/with-schemas/index.js +1 -1
  219. package/umd/min/synchronizers/with-schemas/index.js.gz +0 -0
  220. package/umd/min/with-schemas/index.js +1 -1
  221. package/umd/min/with-schemas/index.js.gz +0 -0
  222. package/umd/persisters/persister-expo-sqlite/index.js +12 -7
  223. package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +12 -7
  224. package/umd/synchronizers/index.js +1 -1
  225. package/umd/synchronizers/synchronizer-local/index.js +1 -1
  226. package/umd/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  227. package/umd/synchronizers/synchronizer-ws-client/index.js +1 -1
  228. package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  229. package/umd/synchronizers/with-schemas/index.js +1 -1
  230. package/umd/with-schemas/index.js +3 -3
  231. package/with-schemas/index.js +3 -3
  232. package/@types/persisters/persister-expo-sqlite-next/index.d.cts +0 -187
  233. package/@types/persisters/persister-expo-sqlite-next/index.d.ts +0 -187
  234. package/@types/persisters/persister-expo-sqlite-next/with-schemas/index.d.cts +0 -206
  235. package/@types/persisters/persister-expo-sqlite-next/with-schemas/index.d.ts +0 -206
  236. package/cjs/es6/min/persisters/persister-expo-sqlite-next/index.cjs +0 -1
  237. package/cjs/es6/min/persisters/persister-expo-sqlite-next/index.cjs.gz +0 -0
  238. package/cjs/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.cjs +0 -1
  239. package/cjs/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.cjs.gz +0 -0
  240. package/cjs/es6/persisters/persister-expo-sqlite-next/index.cjs +0 -1253
  241. package/cjs/es6/persisters/persister-expo-sqlite-next/with-schemas/index.cjs +0 -1253
  242. package/cjs/min/persisters/persister-expo-sqlite-next/index.cjs +0 -1
  243. package/cjs/min/persisters/persister-expo-sqlite-next/index.cjs.gz +0 -0
  244. package/cjs/min/persisters/persister-expo-sqlite-next/with-schemas/index.cjs +0 -1
  245. package/cjs/min/persisters/persister-expo-sqlite-next/with-schemas/index.cjs.gz +0 -0
  246. package/cjs/persisters/persister-expo-sqlite-next/index.cjs +0 -926
  247. package/cjs/persisters/persister-expo-sqlite-next/with-schemas/index.cjs +0 -926
  248. package/es6/min/persisters/persister-expo-sqlite-next/index.js +0 -1
  249. package/es6/min/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
  250. package/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1
  251. package/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.js.gz +0 -0
  252. package/es6/persisters/persister-expo-sqlite-next/index.js +0 -1251
  253. package/es6/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1251
  254. package/min/persisters/persister-expo-sqlite-next/index.js +0 -1
  255. package/min/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
  256. package/min/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1
  257. package/min/persisters/persister-expo-sqlite-next/with-schemas/index.js.gz +0 -0
  258. package/persisters/persister-expo-sqlite-next/index.js +0 -924
  259. package/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -924
  260. package/umd/es6/min/persisters/persister-expo-sqlite-next/index.js +0 -1
  261. package/umd/es6/min/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
  262. package/umd/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1
  263. package/umd/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.js.gz +0 -0
  264. package/umd/es6/persisters/persister-expo-sqlite-next/index.js +0 -1293
  265. package/umd/es6/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1293
  266. package/umd/min/persisters/persister-expo-sqlite-next/index.js +0 -1
  267. package/umd/min/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
  268. package/umd/min/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1
  269. package/umd/min/persisters/persister-expo-sqlite-next/with-schemas/index.js.gz +0 -0
  270. package/umd/persisters/persister-expo-sqlite-next/index.js +0 -957
  271. package/umd/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -957
@@ -1,5 +1,11 @@
1
1
  /**
2
- * The mergeable-store module
2
+ * The mergeable-store module contains the types, interfaces, and functions to
3
+ * work with MergeableStore objects, which provide merge and synchronization
4
+ * functionality.
5
+ *
6
+ * The main entry point to this module is the createMergeableStore function,
7
+ * which returns a new MergeableStore, a subtype of Store that can be merged
8
+ * with another with deterministic results.
3
9
  * @packageDocumentation
4
10
  * @module mergeable-store
5
11
  * @since v5.0.0
@@ -14,20 +20,45 @@ import type {
14
20
  import type {Id} from '../common/index.d.cts';
15
21
 
16
22
  /**
17
- * The Hash type
23
+ * The Hash type is used within the mergeable-store module to quickly compare
24
+ * the content of two objects.
25
+ *
26
+ * This is simply an alias for a JavaScript `number`.
27
+ *
28
+ * This type is mostly utilized internally within TinyBase itself and is
29
+ * generally assumed to be opaque to applications that use it.
18
30
  * @category Stamps
31
+ * @since v5.0.0
19
32
  */
20
33
  export type Hash = number;
21
34
 
22
35
  /**
23
- * The Time type
36
+ * The Time type is used within the mergeable-store module to store the value of
37
+ * a hybrid logical clock (HLC).
38
+ *
39
+ * It is simply an alias for a JavaScript `string`, but it comprises three HLC
40
+ * parts: a logical timestamp, a sequence counter, and a client Id. It is
41
+ * designed to be string-sortable and unique across all of the systems involved
42
+ * in synchronizing a MergeableStore.
43
+ *
44
+ * This type is mostly utilized internally within TinyBase itself and is
45
+ * generally assumed to be opaque to applications that use it.
24
46
  * @category Stamps
47
+ * @since v5.0.0
25
48
  */
26
49
  export type Time = string;
27
50
 
28
51
  /**
29
- * The Stamp type
52
+ * The Stamp type is used as metadata to decide how to merge two different
53
+ * MergeableStore objects together.
54
+ *
55
+ * It describes a combination of a value (or object), a Time, and optionally a
56
+ * Hash, all in an array.
57
+ *
58
+ * This type is mostly utilized internally within TinyBase itself and is
59
+ * generally assumed to be opaque to applications that use it.
30
60
  * @category Stamps
61
+ * @since v5.0.0
31
62
  */
32
63
  export type Stamp<Thing, Hashed extends boolean = false> = Hashed extends true
33
64
  ? [thing: Thing, time: Time, hash: Hash]
@@ -75,8 +106,8 @@ export type ValuesStamp<Hashed extends boolean = false> = Stamp<
75
106
  Hashed
76
107
  >;
77
108
 
78
- // ValuesHashes
79
- export type ValuesHashes = {[valueId: Id]: Hash};
109
+ // ValueHashes
110
+ export type ValueHashes = {[valueId: Id]: Hash};
80
111
 
81
112
  // ValueStamp
82
113
  export type ValueStamp<Hashed extends boolean = false> = Stamp<
@@ -85,8 +116,16 @@ export type ValueStamp<Hashed extends boolean = false> = Stamp<
85
116
  >;
86
117
 
87
118
  /**
88
- * The MergeableContent type
119
+ * The MergeableContent type represents the content of a MergeableStore and the
120
+ * metadata about that content) required to merge it with another.
121
+ *
122
+ * It is simply an array of two Stamp types, one for the MergeableStore's Tables
123
+ * and one for its Values.
124
+ *
125
+ * This type is mostly utilized internally within TinyBase itself and is
126
+ * generally assumed to be opaque to applications that use it.
89
127
  * @category Mergeable
128
+ * @since v5.0.0
90
129
  */
91
130
  export type MergeableContent = [
92
131
  mergeableTables: TablesStamp<true>,
@@ -94,8 +133,18 @@ export type MergeableContent = [
94
133
  ];
95
134
 
96
135
  /**
97
- * The MergeableChanges type
136
+ * The MergeableChanges type represents changes to the content of a
137
+ * MergeableStore and the metadata about that content) required to merge it with
138
+ * another.
139
+ *
140
+ * It is simply an array of two Stamp types, one for changes to the
141
+ * MergeableStore's Tables and one for changes to its Values. A final `1` is
142
+ * used to distinguish it from a full MergeableContent object.
143
+ *
144
+ * This type is mostly utilized internally within TinyBase itself and is
145
+ * generally assumed to be opaque to applications that use it.
98
146
  * @category Mergeable
147
+ * @since v5.0.0
99
148
  */
100
149
  export type MergeableChanges = [
101
150
  mergeableTables: TablesStamp,
@@ -106,30 +155,35 @@ export type MergeableChanges = [
106
155
  /**
107
156
  * The MergeableStore type
108
157
  * @category Mergeable
158
+ * @since v5.0.0
109
159
  */
110
160
  export interface MergeableStore extends Store {
111
161
  //
112
162
  /**
113
163
  * The getMergeableContent method
114
164
  * @category Getter
165
+ * @since v5.0.0
115
166
  */
116
167
  getMergeableContent(): MergeableContent;
117
168
 
118
169
  /**
119
170
  * The getMergeableContentHashes method
120
171
  * @category Syncing
172
+ * @since v5.0.0
121
173
  */
122
174
  getMergeableContentHashes(): ContentHashes;
123
175
 
124
176
  /**
125
177
  * The getMergeableTableHashes method
126
178
  * @category Syncing
179
+ * @since v5.0.0
127
180
  */
128
181
  getMergeableTableHashes(): TableHashes;
129
182
 
130
183
  /**
131
184
  * The getMergeableTableDiff method
132
185
  * @category Syncing
186
+ * @since v5.0.0
133
187
  */
134
188
  getMergeableTableDiff(
135
189
  relativeTo: TableHashes,
@@ -138,12 +192,14 @@ export interface MergeableStore extends Store {
138
192
  /**
139
193
  * The getMergeableRowHashes method
140
194
  * @category Syncing
195
+ * @since v5.0.0
141
196
  */
142
197
  getMergeableRowHashes(otherTableHashes: TableHashes): RowHashes;
143
198
 
144
199
  /**
145
200
  * The getMergeableRowDiff method
146
201
  * @category Syncing
202
+ * @since v5.0.0
147
203
  */
148
204
  getMergeableRowDiff(
149
205
  otherTableRowHashes: RowHashes,
@@ -152,48 +208,56 @@ export interface MergeableStore extends Store {
152
208
  /**
153
209
  * The getMergeableCellHashes method
154
210
  * @category Syncing
211
+ * @since v5.0.0
155
212
  */
156
213
  getMergeableCellHashes(otherTableRowHashes: RowHashes): CellHashes;
157
214
 
158
215
  /**
159
216
  * The getMergeableCellDiff method
160
217
  * @category Syncing
218
+ * @since v5.0.0
161
219
  */
162
220
  getMergeableCellDiff(otherTableRowCellHashes: CellHashes): TablesStamp;
163
221
 
164
222
  /**
165
- * The getMergeableValuesHashes method
223
+ * The getMergeableValueHashes method
166
224
  * @category Syncing
225
+ * @since v5.0.0
167
226
  */
168
- getMergeableValuesHashes(): ValuesHashes;
227
+ getMergeableValueHashes(): ValueHashes;
169
228
 
170
229
  /**
171
230
  * The getMergeableValueDiff method
172
231
  * @category Syncing
232
+ * @since v5.0.0
173
233
  */
174
- getMergeableValueDiff(relativeTo: ValuesHashes): ValuesStamp;
234
+ getMergeableValueDiff(relativeTo: ValueHashes): ValuesStamp;
175
235
 
176
236
  /**
177
237
  * The setMergeableContent method
178
238
  * @category Setter
239
+ * @since v5.0.0
179
240
  */
180
241
  setMergeableContent(mergeableContent: MergeableContent): MergeableStore;
181
242
 
182
243
  /**
183
244
  * The setDefaultContent method
184
245
  * @category Setter
246
+ * @since v5.0.0
185
247
  */
186
248
  setDefaultContent(content: Content): MergeableStore;
187
249
 
188
250
  /**
189
251
  * The getTransactionMergeableChanges method
190
252
  * @category Getter
253
+ * @since v5.0.0
191
254
  */
192
255
  getTransactionMergeableChanges(): MergeableChanges;
193
256
 
194
257
  /**
195
258
  * The applyMergeableChanges method
196
259
  * @category Setter
260
+ * @since v5.0.0
197
261
  */
198
262
  applyMergeableChanges(
199
263
  mergeableChanges: MergeableChanges | MergeableContent,
@@ -202,6 +266,7 @@ export interface MergeableStore extends Store {
202
266
  /**
203
267
  * The merge method
204
268
  * @category Setter
269
+ * @since v5.0.0
205
270
  */
206
271
  merge(mergeableStore: MergeableStore): MergeableStore;
207
272
 
@@ -218,5 +283,6 @@ export interface MergeableStore extends Store {
218
283
  /**
219
284
  * The createMergeableStore function
220
285
  * @category Creation
286
+ * @since v5.0.0
221
287
  */
222
288
  export function createMergeableStore(uniqueId?: Id): MergeableStore;
@@ -1,5 +1,11 @@
1
1
  /**
2
- * The mergeable-store module
2
+ * The mergeable-store module contains the types, interfaces, and functions to
3
+ * work with MergeableStore objects, which provide merge and synchronization
4
+ * functionality.
5
+ *
6
+ * The main entry point to this module is the createMergeableStore function,
7
+ * which returns a new MergeableStore, a subtype of Store that can be merged
8
+ * with another with deterministic results.
3
9
  * @packageDocumentation
4
10
  * @module mergeable-store
5
11
  * @since v5.0.0
@@ -14,20 +20,45 @@ import type {
14
20
  import type {Id} from '../common/index.d.ts';
15
21
 
16
22
  /**
17
- * The Hash type
23
+ * The Hash type is used within the mergeable-store module to quickly compare
24
+ * the content of two objects.
25
+ *
26
+ * This is simply an alias for a JavaScript `number`.
27
+ *
28
+ * This type is mostly utilized internally within TinyBase itself and is
29
+ * generally assumed to be opaque to applications that use it.
18
30
  * @category Stamps
31
+ * @since v5.0.0
19
32
  */
20
33
  export type Hash = number;
21
34
 
22
35
  /**
23
- * The Time type
36
+ * The Time type is used within the mergeable-store module to store the value of
37
+ * a hybrid logical clock (HLC).
38
+ *
39
+ * It is simply an alias for a JavaScript `string`, but it comprises three HLC
40
+ * parts: a logical timestamp, a sequence counter, and a client Id. It is
41
+ * designed to be string-sortable and unique across all of the systems involved
42
+ * in synchronizing a MergeableStore.
43
+ *
44
+ * This type is mostly utilized internally within TinyBase itself and is
45
+ * generally assumed to be opaque to applications that use it.
24
46
  * @category Stamps
47
+ * @since v5.0.0
25
48
  */
26
49
  export type Time = string;
27
50
 
28
51
  /**
29
- * The Stamp type
52
+ * The Stamp type is used as metadata to decide how to merge two different
53
+ * MergeableStore objects together.
54
+ *
55
+ * It describes a combination of a value (or object), a Time, and optionally a
56
+ * Hash, all in an array.
57
+ *
58
+ * This type is mostly utilized internally within TinyBase itself and is
59
+ * generally assumed to be opaque to applications that use it.
30
60
  * @category Stamps
61
+ * @since v5.0.0
31
62
  */
32
63
  export type Stamp<Thing, Hashed extends boolean = false> = Hashed extends true
33
64
  ? [thing: Thing, time: Time, hash: Hash]
@@ -75,8 +106,8 @@ export type ValuesStamp<Hashed extends boolean = false> = Stamp<
75
106
  Hashed
76
107
  >;
77
108
 
78
- // ValuesHashes
79
- export type ValuesHashes = {[valueId: Id]: Hash};
109
+ // ValueHashes
110
+ export type ValueHashes = {[valueId: Id]: Hash};
80
111
 
81
112
  // ValueStamp
82
113
  export type ValueStamp<Hashed extends boolean = false> = Stamp<
@@ -85,8 +116,16 @@ export type ValueStamp<Hashed extends boolean = false> = Stamp<
85
116
  >;
86
117
 
87
118
  /**
88
- * The MergeableContent type
119
+ * The MergeableContent type represents the content of a MergeableStore and the
120
+ * metadata about that content) required to merge it with another.
121
+ *
122
+ * It is simply an array of two Stamp types, one for the MergeableStore's Tables
123
+ * and one for its Values.
124
+ *
125
+ * This type is mostly utilized internally within TinyBase itself and is
126
+ * generally assumed to be opaque to applications that use it.
89
127
  * @category Mergeable
128
+ * @since v5.0.0
90
129
  */
91
130
  export type MergeableContent = [
92
131
  mergeableTables: TablesStamp<true>,
@@ -94,8 +133,18 @@ export type MergeableContent = [
94
133
  ];
95
134
 
96
135
  /**
97
- * The MergeableChanges type
136
+ * The MergeableChanges type represents changes to the content of a
137
+ * MergeableStore and the metadata about that content) required to merge it with
138
+ * another.
139
+ *
140
+ * It is simply an array of two Stamp types, one for changes to the
141
+ * MergeableStore's Tables and one for changes to its Values. A final `1` is
142
+ * used to distinguish it from a full MergeableContent object.
143
+ *
144
+ * This type is mostly utilized internally within TinyBase itself and is
145
+ * generally assumed to be opaque to applications that use it.
98
146
  * @category Mergeable
147
+ * @since v5.0.0
99
148
  */
100
149
  export type MergeableChanges = [
101
150
  mergeableTables: TablesStamp,
@@ -106,30 +155,35 @@ export type MergeableChanges = [
106
155
  /**
107
156
  * The MergeableStore type
108
157
  * @category Mergeable
158
+ * @since v5.0.0
109
159
  */
110
160
  export interface MergeableStore extends Store {
111
161
  //
112
162
  /**
113
163
  * The getMergeableContent method
114
164
  * @category Getter
165
+ * @since v5.0.0
115
166
  */
116
167
  getMergeableContent(): MergeableContent;
117
168
 
118
169
  /**
119
170
  * The getMergeableContentHashes method
120
171
  * @category Syncing
172
+ * @since v5.0.0
121
173
  */
122
174
  getMergeableContentHashes(): ContentHashes;
123
175
 
124
176
  /**
125
177
  * The getMergeableTableHashes method
126
178
  * @category Syncing
179
+ * @since v5.0.0
127
180
  */
128
181
  getMergeableTableHashes(): TableHashes;
129
182
 
130
183
  /**
131
184
  * The getMergeableTableDiff method
132
185
  * @category Syncing
186
+ * @since v5.0.0
133
187
  */
134
188
  getMergeableTableDiff(
135
189
  relativeTo: TableHashes,
@@ -138,12 +192,14 @@ export interface MergeableStore extends Store {
138
192
  /**
139
193
  * The getMergeableRowHashes method
140
194
  * @category Syncing
195
+ * @since v5.0.0
141
196
  */
142
197
  getMergeableRowHashes(otherTableHashes: TableHashes): RowHashes;
143
198
 
144
199
  /**
145
200
  * The getMergeableRowDiff method
146
201
  * @category Syncing
202
+ * @since v5.0.0
147
203
  */
148
204
  getMergeableRowDiff(
149
205
  otherTableRowHashes: RowHashes,
@@ -152,48 +208,56 @@ export interface MergeableStore extends Store {
152
208
  /**
153
209
  * The getMergeableCellHashes method
154
210
  * @category Syncing
211
+ * @since v5.0.0
155
212
  */
156
213
  getMergeableCellHashes(otherTableRowHashes: RowHashes): CellHashes;
157
214
 
158
215
  /**
159
216
  * The getMergeableCellDiff method
160
217
  * @category Syncing
218
+ * @since v5.0.0
161
219
  */
162
220
  getMergeableCellDiff(otherTableRowCellHashes: CellHashes): TablesStamp;
163
221
 
164
222
  /**
165
- * The getMergeableValuesHashes method
223
+ * The getMergeableValueHashes method
166
224
  * @category Syncing
225
+ * @since v5.0.0
167
226
  */
168
- getMergeableValuesHashes(): ValuesHashes;
227
+ getMergeableValueHashes(): ValueHashes;
169
228
 
170
229
  /**
171
230
  * The getMergeableValueDiff method
172
231
  * @category Syncing
232
+ * @since v5.0.0
173
233
  */
174
- getMergeableValueDiff(relativeTo: ValuesHashes): ValuesStamp;
234
+ getMergeableValueDiff(relativeTo: ValueHashes): ValuesStamp;
175
235
 
176
236
  /**
177
237
  * The setMergeableContent method
178
238
  * @category Setter
239
+ * @since v5.0.0
179
240
  */
180
241
  setMergeableContent(mergeableContent: MergeableContent): MergeableStore;
181
242
 
182
243
  /**
183
244
  * The setDefaultContent method
184
245
  * @category Setter
246
+ * @since v5.0.0
185
247
  */
186
248
  setDefaultContent(content: Content): MergeableStore;
187
249
 
188
250
  /**
189
251
  * The getTransactionMergeableChanges method
190
252
  * @category Getter
253
+ * @since v5.0.0
191
254
  */
192
255
  getTransactionMergeableChanges(): MergeableChanges;
193
256
 
194
257
  /**
195
258
  * The applyMergeableChanges method
196
259
  * @category Setter
260
+ * @since v5.0.0
197
261
  */
198
262
  applyMergeableChanges(
199
263
  mergeableChanges: MergeableChanges | MergeableContent,
@@ -202,6 +266,7 @@ export interface MergeableStore extends Store {
202
266
  /**
203
267
  * The merge method
204
268
  * @category Setter
269
+ * @since v5.0.0
205
270
  */
206
271
  merge(mergeableStore: MergeableStore): MergeableStore;
207
272
 
@@ -218,5 +283,6 @@ export interface MergeableStore extends Store {
218
283
  /**
219
284
  * The createMergeableStore function
220
285
  * @category Creation
286
+ * @since v5.0.0
221
287
  */
222
288
  export function createMergeableStore(uniqueId?: Id): MergeableStore;