tinybase 5.0.0-beta.9 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1884) hide show
  1. package/@types/_internal/queries/index.d.cts +0 -0
  2. package/@types/_internal/queries/index.d.ts +0 -0
  3. package/@types/_internal/queries/with-schemas/index.d.cts +22 -0
  4. package/@types/_internal/queries/with-schemas/index.d.ts +22 -0
  5. package/@types/_internal/store/index.d.cts +3 -0
  6. package/@types/_internal/store/index.d.ts +3 -0
  7. package/@types/_internal/store/with-schemas/index.d.cts +106 -0
  8. package/@types/_internal/store/with-schemas/index.d.ts +106 -0
  9. package/@types/_internal/ui-react/index.d.cts +0 -0
  10. package/@types/_internal/ui-react/index.d.ts +0 -0
  11. package/@types/_internal/ui-react/with-schemas/index.d.cts +1087 -0
  12. package/@types/_internal/ui-react/with-schemas/index.d.ts +1087 -0
  13. package/@types/checkpoints/index.d.cts +1060 -0
  14. package/@types/checkpoints/index.d.ts +1060 -0
  15. package/@types/checkpoints/with-schemas/index.d.cts +1152 -0
  16. package/@types/checkpoints/with-schemas/index.d.ts +1152 -0
  17. package/@types/common/index.d.cts +126 -0
  18. package/@types/common/index.d.ts +126 -0
  19. package/@types/common/with-schemas/index.d.cts +126 -0
  20. package/@types/common/with-schemas/index.d.ts +126 -0
  21. package/@types/index.d.cts +19 -0
  22. package/@types/index.d.ts +19 -0
  23. package/@types/indexes/index.d.cts +1065 -0
  24. package/@types/indexes/index.d.ts +1065 -0
  25. package/@types/indexes/with-schemas/index.d.cts +1211 -0
  26. package/@types/indexes/with-schemas/index.d.ts +1211 -0
  27. package/@types/mergeable-store/index.d.cts +1031 -0
  28. package/@types/mergeable-store/index.d.ts +1031 -0
  29. package/@types/mergeable-store/with-schemas/index.d.cts +1435 -0
  30. package/@types/mergeable-store/with-schemas/index.d.ts +1435 -0
  31. package/@types/metrics/index.d.cts +918 -0
  32. package/@types/metrics/index.d.ts +918 -0
  33. package/@types/metrics/with-schemas/index.d.cts +1005 -0
  34. package/@types/metrics/with-schemas/index.d.ts +1005 -0
  35. package/@types/persisters/index.d.cts +1519 -0
  36. package/@types/persisters/index.d.ts +1519 -0
  37. package/@types/persisters/persister-automerge/index.d.cts +166 -0
  38. package/@types/persisters/persister-automerge/index.d.ts +166 -0
  39. package/@types/persisters/persister-automerge/with-schemas/index.d.cts +181 -0
  40. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +181 -0
  41. package/@types/persisters/persister-browser/index.d.cts +186 -0
  42. package/@types/persisters/persister-browser/index.d.ts +186 -0
  43. package/@types/persisters/persister-browser/with-schemas/index.d.cts +209 -0
  44. package/@types/persisters/persister-browser/with-schemas/index.d.ts +209 -0
  45. package/@types/persisters/persister-cr-sqlite-wasm/index.d.cts +160 -0
  46. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +160 -0
  47. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.cts +179 -0
  48. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +179 -0
  49. package/@types/persisters/persister-electric-sql/index.d.cts +186 -0
  50. package/@types/persisters/persister-electric-sql/index.d.ts +186 -0
  51. package/@types/persisters/persister-electric-sql/with-schemas/index.d.cts +205 -0
  52. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +205 -0
  53. package/@types/persisters/persister-expo-sqlite/index.d.cts +187 -0
  54. package/@types/persisters/persister-expo-sqlite/index.d.ts +187 -0
  55. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.cts +206 -0
  56. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +206 -0
  57. package/@types/persisters/persister-file/index.d.cts +95 -0
  58. package/@types/persisters/persister-file/index.d.ts +95 -0
  59. package/@types/persisters/persister-file/with-schemas/index.d.cts +108 -0
  60. package/@types/persisters/persister-file/with-schemas/index.d.ts +108 -0
  61. package/@types/persisters/persister-indexed-db/index.d.cts +121 -0
  62. package/@types/persisters/persister-indexed-db/index.d.ts +121 -0
  63. package/@types/persisters/persister-indexed-db/with-schemas/index.d.cts +136 -0
  64. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +136 -0
  65. package/@types/persisters/persister-libsql/index.d.cts +159 -0
  66. package/@types/persisters/persister-libsql/index.d.ts +159 -0
  67. package/@types/persisters/persister-libsql/with-schemas/index.d.cts +178 -0
  68. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +178 -0
  69. package/@types/persisters/persister-partykit-client/index.d.cts +196 -0
  70. package/@types/persisters/persister-partykit-client/index.d.ts +196 -0
  71. package/@types/persisters/persister-partykit-client/with-schemas/index.d.cts +211 -0
  72. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +211 -0
  73. package/@types/persisters/persister-partykit-server/index.d.cts +639 -0
  74. package/@types/persisters/persister-partykit-server/index.d.ts +639 -0
  75. package/@types/persisters/persister-partykit-server/with-schemas/index.d.cts +681 -0
  76. package/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +681 -0
  77. package/@types/persisters/persister-powersync/index.d.cts +175 -0
  78. package/@types/persisters/persister-powersync/index.d.ts +175 -0
  79. package/@types/persisters/persister-powersync/with-schemas/index.d.cts +194 -0
  80. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +194 -0
  81. package/@types/persisters/persister-remote/index.d.cts +118 -0
  82. package/@types/persisters/persister-remote/index.d.ts +118 -0
  83. package/@types/persisters/persister-remote/with-schemas/index.d.cts +134 -0
  84. package/@types/persisters/persister-remote/with-schemas/index.d.ts +134 -0
  85. package/@types/persisters/persister-sqlite-wasm/index.d.cts +176 -0
  86. package/@types/persisters/persister-sqlite-wasm/index.d.ts +176 -0
  87. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.cts +196 -0
  88. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +196 -0
  89. package/@types/persisters/persister-sqlite3/index.d.cts +177 -0
  90. package/@types/persisters/persister-sqlite3/index.d.ts +177 -0
  91. package/@types/persisters/persister-sqlite3/with-schemas/index.d.cts +196 -0
  92. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +196 -0
  93. package/@types/persisters/persister-yjs/index.d.cts +162 -0
  94. package/@types/persisters/persister-yjs/index.d.ts +162 -0
  95. package/@types/persisters/persister-yjs/with-schemas/index.d.cts +177 -0
  96. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +177 -0
  97. package/@types/persisters/with-schemas/index.d.cts +1626 -0
  98. package/@types/persisters/with-schemas/index.d.ts +1626 -0
  99. package/@types/queries/index.d.cts +3696 -0
  100. package/@types/queries/index.d.ts +3696 -0
  101. package/@types/queries/with-schemas/index.d.cts +4017 -0
  102. package/@types/queries/with-schemas/index.d.ts +4017 -0
  103. package/@types/relationships/index.d.cts +1297 -0
  104. package/@types/relationships/index.d.ts +1297 -0
  105. package/@types/relationships/with-schemas/index.d.cts +1451 -0
  106. package/@types/relationships/with-schemas/index.d.ts +1451 -0
  107. package/@types/store/index.d.cts +7579 -0
  108. package/@types/store/index.d.ts +7579 -0
  109. package/@types/store/with-schemas/index.d.cts +9257 -0
  110. package/@types/store/with-schemas/index.d.ts +9257 -0
  111. package/@types/synchronizers/index.d.cts +473 -0
  112. package/@types/synchronizers/index.d.ts +473 -0
  113. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.cts +111 -0
  114. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +111 -0
  115. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.cts +125 -0
  116. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +125 -0
  117. package/@types/synchronizers/synchronizer-local/index.d.cts +86 -0
  118. package/@types/synchronizers/synchronizer-local/index.d.ts +86 -0
  119. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.cts +103 -0
  120. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +103 -0
  121. package/@types/synchronizers/synchronizer-ws-client/index.d.cts +143 -0
  122. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +143 -0
  123. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.cts +160 -0
  124. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +160 -0
  125. package/@types/synchronizers/synchronizer-ws-server/index.d.cts +537 -0
  126. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +537 -0
  127. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.cts +537 -0
  128. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +537 -0
  129. package/@types/synchronizers/with-schemas/index.d.cts +489 -0
  130. package/@types/synchronizers/with-schemas/index.d.ts +489 -0
  131. package/@types/tools/index.d.cts +588 -0
  132. package/@types/tools/index.d.ts +588 -0
  133. package/@types/tools/with-schemas/index.d.cts +599 -0
  134. package/@types/tools/with-schemas/index.d.ts +599 -0
  135. package/@types/ui-react/index.d.cts +15692 -0
  136. package/@types/ui-react/index.d.ts +15692 -0
  137. package/@types/ui-react/with-schemas/index.d.cts +16334 -0
  138. package/@types/ui-react/with-schemas/index.d.ts +16334 -0
  139. package/@types/ui-react-dom/index.d.cts +1863 -0
  140. package/@types/ui-react-dom/index.d.ts +1863 -0
  141. package/@types/ui-react-dom/with-schemas/index.d.cts +1995 -0
  142. package/@types/ui-react-dom/with-schemas/index.d.ts +1995 -0
  143. package/@types/ui-react-inspector/index.d.cts +80 -0
  144. package/@types/ui-react-inspector/index.d.ts +80 -0
  145. package/@types/ui-react-inspector/with-schemas/index.d.cts +1986 -0
  146. package/@types/ui-react-inspector/with-schemas/index.d.ts +1986 -0
  147. package/@types/with-schemas/index.d.cts +19 -0
  148. package/@types/with-schemas/index.d.ts +19 -0
  149. package/checkpoints/with-schemas/index.js +431 -0
  150. package/cjs/checkpoints/index.cjs +433 -0
  151. package/cjs/checkpoints/with-schemas/index.cjs +433 -0
  152. package/cjs/common/index.cjs +36 -0
  153. package/cjs/common/with-schemas/index.cjs +36 -0
  154. package/cjs/es6/checkpoints/index.cjs +473 -0
  155. package/cjs/es6/checkpoints/with-schemas/index.cjs +473 -0
  156. package/cjs/es6/common/index.cjs +38 -0
  157. package/cjs/es6/common/with-schemas/index.cjs +38 -0
  158. package/cjs/es6/index.cjs +4365 -0
  159. package/cjs/es6/indexes/index.cjs +602 -0
  160. package/cjs/es6/indexes/with-schemas/index.cjs +602 -0
  161. package/cjs/es6/mergeable-store/index.cjs +2356 -0
  162. package/cjs/es6/mergeable-store/with-schemas/index.cjs +2356 -0
  163. package/cjs/es6/metrics/index.cjs +577 -0
  164. package/cjs/es6/metrics/with-schemas/index.cjs +577 -0
  165. package/cjs/es6/min/checkpoints/index.cjs +1 -0
  166. package/cjs/es6/min/checkpoints/index.cjs.gz +0 -0
  167. package/cjs/es6/min/checkpoints/with-schemas/index.cjs +1 -0
  168. package/cjs/es6/min/checkpoints/with-schemas/index.cjs.gz +0 -0
  169. package/cjs/es6/min/common/index.cjs +1 -0
  170. package/cjs/es6/min/common/index.cjs.gz +0 -0
  171. package/cjs/es6/min/common/with-schemas/index.cjs +1 -0
  172. package/cjs/es6/min/common/with-schemas/index.cjs.gz +0 -0
  173. package/cjs/es6/min/index.cjs +1 -0
  174. package/cjs/es6/min/index.cjs.gz +0 -0
  175. package/cjs/es6/min/indexes/index.cjs +1 -0
  176. package/cjs/es6/min/indexes/index.cjs.gz +0 -0
  177. package/cjs/es6/min/indexes/with-schemas/index.cjs +1 -0
  178. package/cjs/es6/min/indexes/with-schemas/index.cjs.gz +0 -0
  179. package/cjs/es6/min/mergeable-store/index.cjs +1 -0
  180. package/cjs/es6/min/mergeable-store/index.cjs.gz +0 -0
  181. package/cjs/es6/min/mergeable-store/with-schemas/index.cjs +1 -0
  182. package/cjs/es6/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
  183. package/cjs/es6/min/metrics/index.cjs +1 -0
  184. package/cjs/es6/min/metrics/index.cjs.gz +0 -0
  185. package/cjs/es6/min/metrics/with-schemas/index.cjs +1 -0
  186. package/cjs/es6/min/metrics/with-schemas/index.cjs.gz +0 -0
  187. package/cjs/es6/min/persisters/index.cjs +1 -0
  188. package/cjs/es6/min/persisters/index.cjs.gz +0 -0
  189. package/cjs/es6/min/persisters/persister-automerge/index.cjs +1 -0
  190. package/cjs/es6/min/persisters/persister-automerge/index.cjs.gz +0 -0
  191. package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs +1 -0
  192. package/cjs/es6/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
  193. package/cjs/es6/min/persisters/persister-browser/index.cjs +1 -0
  194. package/cjs/es6/min/persisters/persister-browser/index.cjs.gz +0 -0
  195. package/cjs/es6/min/persisters/persister-browser/with-schemas/index.cjs +1 -0
  196. package/cjs/es6/min/persisters/persister-browser/with-schemas/index.cjs.gz +0 -0
  197. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -0
  198. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  199. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -0
  200. package/cjs/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  201. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs +1 -0
  202. package/cjs/es6/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  203. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -0
  204. package/cjs/es6/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  205. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs +1 -0
  206. package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  207. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -0
  208. package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  209. package/cjs/es6/min/persisters/persister-file/index.cjs +1 -0
  210. package/cjs/es6/min/persisters/persister-file/index.cjs.gz +0 -0
  211. package/cjs/es6/min/persisters/persister-file/with-schemas/index.cjs +1 -0
  212. package/cjs/es6/min/persisters/persister-file/with-schemas/index.cjs.gz +0 -0
  213. package/cjs/es6/min/persisters/persister-indexed-db/index.cjs +1 -0
  214. package/cjs/es6/min/persisters/persister-indexed-db/index.cjs.gz +0 -0
  215. package/cjs/es6/min/persisters/persister-indexed-db/with-schemas/index.cjs +1 -0
  216. package/cjs/es6/min/persisters/persister-indexed-db/with-schemas/index.cjs.gz +0 -0
  217. package/cjs/es6/min/persisters/persister-libsql/index.cjs +1 -0
  218. package/cjs/es6/min/persisters/persister-libsql/index.cjs.gz +0 -0
  219. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs +1 -0
  220. package/cjs/es6/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  221. package/cjs/es6/min/persisters/persister-partykit-client/index.cjs +1 -0
  222. package/cjs/es6/min/persisters/persister-partykit-client/index.cjs.gz +0 -0
  223. package/cjs/es6/min/persisters/persister-partykit-client/with-schemas/index.cjs +1 -0
  224. package/cjs/es6/min/persisters/persister-partykit-client/with-schemas/index.cjs.gz +0 -0
  225. package/cjs/es6/min/persisters/persister-partykit-server/index.cjs +1 -0
  226. package/cjs/es6/min/persisters/persister-partykit-server/index.cjs.gz +0 -0
  227. package/cjs/es6/min/persisters/persister-partykit-server/with-schemas/index.cjs +1 -0
  228. package/cjs/es6/min/persisters/persister-partykit-server/with-schemas/index.cjs.gz +0 -0
  229. package/cjs/es6/min/persisters/persister-powersync/index.cjs +1 -0
  230. package/cjs/es6/min/persisters/persister-powersync/index.cjs.gz +0 -0
  231. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs +1 -0
  232. package/cjs/es6/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  233. package/cjs/es6/min/persisters/persister-remote/index.cjs +1 -0
  234. package/cjs/es6/min/persisters/persister-remote/index.cjs.gz +0 -0
  235. package/cjs/es6/min/persisters/persister-remote/with-schemas/index.cjs +1 -0
  236. package/cjs/es6/min/persisters/persister-remote/with-schemas/index.cjs.gz +0 -0
  237. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs +1 -0
  238. package/cjs/es6/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  239. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -0
  240. package/cjs/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  241. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs +1 -0
  242. package/cjs/es6/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  243. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -0
  244. package/cjs/es6/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  245. package/cjs/es6/min/persisters/persister-yjs/index.cjs +1 -0
  246. package/cjs/es6/min/persisters/persister-yjs/index.cjs.gz +0 -0
  247. package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs +1 -0
  248. package/cjs/es6/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
  249. package/cjs/es6/min/persisters/with-schemas/index.cjs +1 -0
  250. package/cjs/es6/min/persisters/with-schemas/index.cjs.gz +0 -0
  251. package/cjs/es6/min/queries/index.cjs +1 -0
  252. package/cjs/es6/min/queries/index.cjs.gz +0 -0
  253. package/cjs/es6/min/queries/with-schemas/index.cjs +1 -0
  254. package/cjs/es6/min/queries/with-schemas/index.cjs.gz +0 -0
  255. package/cjs/es6/min/relationships/index.cjs +1 -0
  256. package/cjs/es6/min/relationships/index.cjs.gz +0 -0
  257. package/cjs/es6/min/relationships/with-schemas/index.cjs +1 -0
  258. package/cjs/es6/min/relationships/with-schemas/index.cjs.gz +0 -0
  259. package/cjs/es6/min/store/index.cjs +1 -0
  260. package/cjs/es6/min/store/index.cjs.gz +0 -0
  261. package/cjs/es6/min/store/with-schemas/index.cjs +1 -0
  262. package/cjs/es6/min/store/with-schemas/index.cjs.gz +0 -0
  263. package/cjs/es6/min/synchronizers/index.cjs +1 -0
  264. package/cjs/es6/min/synchronizers/index.cjs.gz +0 -0
  265. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -0
  266. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  267. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -0
  268. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  269. package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs +1 -0
  270. package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
  271. package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -0
  272. package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
  273. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs +1 -0
  274. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  275. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -0
  276. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  277. package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs +1 -0
  278. package/cjs/es6/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
  279. package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -0
  280. package/cjs/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
  281. package/cjs/es6/min/synchronizers/with-schemas/index.cjs +1 -0
  282. package/cjs/es6/min/synchronizers/with-schemas/index.cjs.gz +0 -0
  283. package/cjs/es6/min/tools/index.cjs +1 -0
  284. package/cjs/es6/min/tools/index.cjs.gz +0 -0
  285. package/cjs/es6/min/tools/with-schemas/index.cjs +1 -0
  286. package/cjs/es6/min/tools/with-schemas/index.cjs.gz +0 -0
  287. package/cjs/es6/min/ui-react/index.cjs +1 -0
  288. package/cjs/es6/min/ui-react/index.cjs.gz +0 -0
  289. package/cjs/es6/min/ui-react/with-schemas/index.cjs +1 -0
  290. package/cjs/es6/min/ui-react/with-schemas/index.cjs.gz +0 -0
  291. package/cjs/es6/min/ui-react-dom/index.cjs +1 -0
  292. package/cjs/es6/min/ui-react-dom/index.cjs.gz +0 -0
  293. package/cjs/es6/min/ui-react-dom/with-schemas/index.cjs +1 -0
  294. package/cjs/es6/min/ui-react-dom/with-schemas/index.cjs.gz +0 -0
  295. package/cjs/es6/min/ui-react-inspector/index.cjs +1 -0
  296. package/cjs/es6/min/ui-react-inspector/index.cjs.gz +0 -0
  297. package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs +1 -0
  298. package/cjs/es6/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
  299. package/cjs/es6/min/with-schemas/index.cjs +1 -0
  300. package/cjs/es6/min/with-schemas/index.cjs.gz +0 -0
  301. package/cjs/es6/persisters/index.cjs +302 -0
  302. package/cjs/es6/persisters/persister-automerge/index.cjs +475 -0
  303. package/cjs/es6/persisters/persister-automerge/with-schemas/index.cjs +475 -0
  304. package/cjs/es6/persisters/persister-browser/index.cjs +384 -0
  305. package/cjs/es6/persisters/persister-browser/with-schemas/index.cjs +384 -0
  306. package/cjs/es6/persisters/persister-cr-sqlite-wasm/index.cjs +1255 -0
  307. package/cjs/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1255 -0
  308. package/cjs/es6/persisters/persister-electric-sql/index.cjs +1263 -0
  309. package/cjs/es6/persisters/persister-electric-sql/with-schemas/index.cjs +1263 -0
  310. package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +1260 -0
  311. package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +1260 -0
  312. package/cjs/es6/persisters/persister-file/index.cjs +364 -0
  313. package/cjs/es6/persisters/persister-file/with-schemas/index.cjs +364 -0
  314. package/cjs/es6/persisters/persister-indexed-db/index.cjs +481 -0
  315. package/cjs/es6/persisters/persister-indexed-db/with-schemas/index.cjs +481 -0
  316. package/cjs/es6/persisters/persister-libsql/index.cjs +1256 -0
  317. package/cjs/es6/persisters/persister-libsql/with-schemas/index.cjs +1256 -0
  318. package/cjs/es6/persisters/persister-partykit-client/index.cjs +458 -0
  319. package/cjs/es6/persisters/persister-partykit-client/with-schemas/index.cjs +458 -0
  320. package/cjs/es6/persisters/persister-partykit-server/index.cjs +411 -0
  321. package/cjs/es6/persisters/persister-partykit-server/with-schemas/index.cjs +411 -0
  322. package/cjs/es6/persisters/persister-powersync/index.cjs +1311 -0
  323. package/cjs/es6/persisters/persister-powersync/with-schemas/index.cjs +1311 -0
  324. package/cjs/es6/persisters/persister-remote/index.cjs +388 -0
  325. package/cjs/es6/persisters/persister-remote/with-schemas/index.cjs +388 -0
  326. package/cjs/es6/persisters/persister-sqlite-wasm/index.cjs +1285 -0
  327. package/cjs/es6/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1285 -0
  328. package/cjs/es6/persisters/persister-sqlite3/index.cjs +1265 -0
  329. package/cjs/es6/persisters/persister-sqlite3/with-schemas/index.cjs +1265 -0
  330. package/cjs/es6/persisters/persister-yjs/index.cjs +535 -0
  331. package/cjs/es6/persisters/persister-yjs/with-schemas/index.cjs +535 -0
  332. package/cjs/es6/persisters/with-schemas/index.cjs +302 -0
  333. package/cjs/es6/queries/index.cjs +860 -0
  334. package/cjs/es6/queries/with-schemas/index.cjs +860 -0
  335. package/cjs/es6/relationships/index.cjs +591 -0
  336. package/cjs/es6/relationships/with-schemas/index.cjs +591 -0
  337. package/cjs/es6/store/index.cjs +1716 -0
  338. package/cjs/es6/store/with-schemas/index.cjs +1716 -0
  339. package/cjs/es6/synchronizers/index.cjs +598 -0
  340. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/index.cjs +628 -0
  341. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +628 -0
  342. package/cjs/es6/synchronizers/synchronizer-local/index.cjs +633 -0
  343. package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +633 -0
  344. package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +678 -0
  345. package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +678 -0
  346. package/cjs/es6/synchronizers/synchronizer-ws-server/index.cjs +292 -0
  347. package/cjs/es6/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +292 -0
  348. package/cjs/es6/synchronizers/with-schemas/index.cjs +598 -0
  349. package/cjs/es6/tools/index.cjs +3423 -0
  350. package/cjs/es6/tools/with-schemas/index.cjs +3423 -0
  351. package/cjs/es6/ui-react/index.cjs +2251 -0
  352. package/cjs/es6/ui-react/with-schemas/index.cjs +2251 -0
  353. package/cjs/es6/ui-react-dom/index.cjs +908 -0
  354. package/cjs/es6/ui-react-dom/with-schemas/index.cjs +908 -0
  355. package/cjs/es6/ui-react-inspector/index.cjs +3656 -0
  356. package/cjs/es6/ui-react-inspector/with-schemas/index.cjs +3656 -0
  357. package/cjs/es6/with-schemas/index.cjs +4365 -0
  358. package/cjs/index.cjs +4109 -0
  359. package/cjs/indexes/index.cjs +555 -0
  360. package/cjs/indexes/with-schemas/index.cjs +555 -0
  361. package/cjs/mergeable-store/index.cjs +2256 -0
  362. package/cjs/mergeable-store/with-schemas/index.cjs +2256 -0
  363. package/cjs/metrics/index.cjs +524 -0
  364. package/cjs/metrics/with-schemas/index.cjs +524 -0
  365. package/cjs/min/checkpoints/index.cjs +1 -0
  366. package/cjs/min/checkpoints/index.cjs.gz +0 -0
  367. package/cjs/min/checkpoints/with-schemas/index.cjs +1 -0
  368. package/cjs/min/checkpoints/with-schemas/index.cjs.gz +0 -0
  369. package/cjs/min/common/index.cjs +1 -0
  370. package/cjs/min/common/index.cjs.gz +0 -0
  371. package/cjs/min/common/with-schemas/index.cjs +1 -0
  372. package/cjs/min/common/with-schemas/index.cjs.gz +0 -0
  373. package/cjs/min/index.cjs +1 -0
  374. package/cjs/min/index.cjs.gz +0 -0
  375. package/cjs/min/indexes/index.cjs +1 -0
  376. package/cjs/min/indexes/index.cjs.gz +0 -0
  377. package/cjs/min/indexes/with-schemas/index.cjs +1 -0
  378. package/cjs/min/indexes/with-schemas/index.cjs.gz +0 -0
  379. package/cjs/min/mergeable-store/index.cjs +1 -0
  380. package/cjs/min/mergeable-store/index.cjs.gz +0 -0
  381. package/cjs/min/mergeable-store/with-schemas/index.cjs +1 -0
  382. package/cjs/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
  383. package/cjs/min/metrics/index.cjs +1 -0
  384. package/cjs/min/metrics/index.cjs.gz +0 -0
  385. package/cjs/min/metrics/with-schemas/index.cjs +1 -0
  386. package/cjs/min/metrics/with-schemas/index.cjs.gz +0 -0
  387. package/cjs/min/persisters/index.cjs +1 -0
  388. package/cjs/min/persisters/index.cjs.gz +0 -0
  389. package/cjs/min/persisters/persister-automerge/index.cjs +1 -0
  390. package/cjs/min/persisters/persister-automerge/index.cjs.gz +0 -0
  391. package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs +1 -0
  392. package/cjs/min/persisters/persister-automerge/with-schemas/index.cjs.gz +0 -0
  393. package/cjs/min/persisters/persister-browser/index.cjs +1 -0
  394. package/cjs/min/persisters/persister-browser/index.cjs.gz +0 -0
  395. package/cjs/min/persisters/persister-browser/with-schemas/index.cjs +1 -0
  396. package/cjs/min/persisters/persister-browser/with-schemas/index.cjs.gz +0 -0
  397. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs +1 -0
  398. package/cjs/min/persisters/persister-cr-sqlite-wasm/index.cjs.gz +0 -0
  399. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +1 -0
  400. package/cjs/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  401. package/cjs/min/persisters/persister-electric-sql/index.cjs +1 -0
  402. package/cjs/min/persisters/persister-electric-sql/index.cjs.gz +0 -0
  403. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs +1 -0
  404. package/cjs/min/persisters/persister-electric-sql/with-schemas/index.cjs.gz +0 -0
  405. package/cjs/min/persisters/persister-expo-sqlite/index.cjs +1 -0
  406. package/cjs/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
  407. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -0
  408. package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
  409. package/cjs/min/persisters/persister-file/index.cjs +1 -0
  410. package/cjs/min/persisters/persister-file/index.cjs.gz +0 -0
  411. package/cjs/min/persisters/persister-file/with-schemas/index.cjs +1 -0
  412. package/cjs/min/persisters/persister-file/with-schemas/index.cjs.gz +0 -0
  413. package/cjs/min/persisters/persister-indexed-db/index.cjs +1 -0
  414. package/cjs/min/persisters/persister-indexed-db/index.cjs.gz +0 -0
  415. package/cjs/min/persisters/persister-indexed-db/with-schemas/index.cjs +1 -0
  416. package/cjs/min/persisters/persister-indexed-db/with-schemas/index.cjs.gz +0 -0
  417. package/cjs/min/persisters/persister-libsql/index.cjs +1 -0
  418. package/cjs/min/persisters/persister-libsql/index.cjs.gz +0 -0
  419. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs +1 -0
  420. package/cjs/min/persisters/persister-libsql/with-schemas/index.cjs.gz +0 -0
  421. package/cjs/min/persisters/persister-partykit-client/index.cjs +1 -0
  422. package/cjs/min/persisters/persister-partykit-client/index.cjs.gz +0 -0
  423. package/cjs/min/persisters/persister-partykit-client/with-schemas/index.cjs +1 -0
  424. package/cjs/min/persisters/persister-partykit-client/with-schemas/index.cjs.gz +0 -0
  425. package/cjs/min/persisters/persister-partykit-server/index.cjs +1 -0
  426. package/cjs/min/persisters/persister-partykit-server/index.cjs.gz +0 -0
  427. package/cjs/min/persisters/persister-partykit-server/with-schemas/index.cjs +1 -0
  428. package/cjs/min/persisters/persister-partykit-server/with-schemas/index.cjs.gz +0 -0
  429. package/cjs/min/persisters/persister-powersync/index.cjs +1 -0
  430. package/cjs/min/persisters/persister-powersync/index.cjs.gz +0 -0
  431. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs +1 -0
  432. package/cjs/min/persisters/persister-powersync/with-schemas/index.cjs.gz +0 -0
  433. package/cjs/min/persisters/persister-remote/index.cjs +1 -0
  434. package/cjs/min/persisters/persister-remote/index.cjs.gz +0 -0
  435. package/cjs/min/persisters/persister-remote/with-schemas/index.cjs +1 -0
  436. package/cjs/min/persisters/persister-remote/with-schemas/index.cjs.gz +0 -0
  437. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs +1 -0
  438. package/cjs/min/persisters/persister-sqlite-wasm/index.cjs.gz +0 -0
  439. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs +1 -0
  440. package/cjs/min/persisters/persister-sqlite-wasm/with-schemas/index.cjs.gz +0 -0
  441. package/cjs/min/persisters/persister-sqlite3/index.cjs +1 -0
  442. package/cjs/min/persisters/persister-sqlite3/index.cjs.gz +0 -0
  443. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs +1 -0
  444. package/cjs/min/persisters/persister-sqlite3/with-schemas/index.cjs.gz +0 -0
  445. package/cjs/min/persisters/persister-yjs/index.cjs +1 -0
  446. package/cjs/min/persisters/persister-yjs/index.cjs.gz +0 -0
  447. package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs +1 -0
  448. package/cjs/min/persisters/persister-yjs/with-schemas/index.cjs.gz +0 -0
  449. package/cjs/min/persisters/with-schemas/index.cjs +1 -0
  450. package/cjs/min/persisters/with-schemas/index.cjs.gz +0 -0
  451. package/cjs/min/queries/index.cjs +1 -0
  452. package/cjs/min/queries/index.cjs.gz +0 -0
  453. package/cjs/min/queries/with-schemas/index.cjs +1 -0
  454. package/cjs/min/queries/with-schemas/index.cjs.gz +0 -0
  455. package/cjs/min/relationships/index.cjs +1 -0
  456. package/cjs/min/relationships/index.cjs.gz +0 -0
  457. package/cjs/min/relationships/with-schemas/index.cjs +1 -0
  458. package/cjs/min/relationships/with-schemas/index.cjs.gz +0 -0
  459. package/cjs/min/store/index.cjs +1 -0
  460. package/cjs/min/store/index.cjs.gz +0 -0
  461. package/cjs/min/store/with-schemas/index.cjs +1 -0
  462. package/cjs/min/store/with-schemas/index.cjs.gz +0 -0
  463. package/cjs/min/synchronizers/index.cjs +1 -0
  464. package/cjs/min/synchronizers/index.cjs.gz +0 -0
  465. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -0
  466. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  467. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -0
  468. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  469. package/cjs/min/synchronizers/synchronizer-local/index.cjs +1 -0
  470. package/cjs/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
  471. package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -0
  472. package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
  473. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs +1 -0
  474. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  475. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -0
  476. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  477. package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs +1 -0
  478. package/cjs/min/synchronizers/synchronizer-ws-server/index.cjs.gz +0 -0
  479. package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +1 -0
  480. package/cjs/min/synchronizers/synchronizer-ws-server/with-schemas/index.cjs.gz +0 -0
  481. package/cjs/min/synchronizers/with-schemas/index.cjs +1 -0
  482. package/cjs/min/synchronizers/with-schemas/index.cjs.gz +0 -0
  483. package/cjs/min/tools/index.cjs +1 -0
  484. package/cjs/min/tools/index.cjs.gz +0 -0
  485. package/cjs/min/tools/with-schemas/index.cjs +1 -0
  486. package/cjs/min/tools/with-schemas/index.cjs.gz +0 -0
  487. package/cjs/min/ui-react/index.cjs +1 -0
  488. package/cjs/min/ui-react/index.cjs.gz +0 -0
  489. package/cjs/min/ui-react/with-schemas/index.cjs +1 -0
  490. package/cjs/min/ui-react/with-schemas/index.cjs.gz +0 -0
  491. package/cjs/min/ui-react-dom/index.cjs +1 -0
  492. package/cjs/min/ui-react-dom/index.cjs.gz +0 -0
  493. package/cjs/min/ui-react-dom/with-schemas/index.cjs +1 -0
  494. package/cjs/min/ui-react-dom/with-schemas/index.cjs.gz +0 -0
  495. package/cjs/min/ui-react-inspector/index.cjs +1 -0
  496. package/cjs/min/ui-react-inspector/index.cjs.gz +0 -0
  497. package/cjs/min/ui-react-inspector/with-schemas/index.cjs +1 -0
  498. package/cjs/min/ui-react-inspector/with-schemas/index.cjs.gz +0 -0
  499. package/cjs/min/with-schemas/index.cjs +1 -0
  500. package/cjs/min/with-schemas/index.cjs.gz +0 -0
  501. package/cjs/persisters/index.cjs +230 -0
  502. package/cjs/persisters/persister-automerge/index.cjs +377 -0
  503. package/cjs/persisters/persister-automerge/with-schemas/index.cjs +377 -0
  504. package/cjs/persisters/persister-browser/index.cjs +282 -0
  505. package/cjs/persisters/persister-browser/with-schemas/index.cjs +282 -0
  506. package/cjs/persisters/persister-cr-sqlite-wasm/index.cjs +928 -0
  507. package/cjs/persisters/persister-cr-sqlite-wasm/with-schemas/index.cjs +928 -0
  508. package/cjs/persisters/persister-electric-sql/index.cjs +936 -0
  509. package/cjs/persisters/persister-electric-sql/with-schemas/index.cjs +936 -0
  510. package/cjs/persisters/persister-expo-sqlite/index.cjs +933 -0
  511. package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +933 -0
  512. package/cjs/persisters/persister-file/index.cjs +264 -0
  513. package/cjs/persisters/persister-file/with-schemas/index.cjs +264 -0
  514. package/cjs/persisters/persister-indexed-db/index.cjs +342 -0
  515. package/cjs/persisters/persister-indexed-db/with-schemas/index.cjs +342 -0
  516. package/cjs/persisters/persister-libsql/index.cjs +929 -0
  517. package/cjs/persisters/persister-libsql/with-schemas/index.cjs +929 -0
  518. package/cjs/persisters/persister-partykit-client/index.cjs +328 -0
  519. package/cjs/persisters/persister-partykit-client/with-schemas/index.cjs +328 -0
  520. package/cjs/persisters/persister-partykit-server/index.cjs +284 -0
  521. package/cjs/persisters/persister-partykit-server/with-schemas/index.cjs +284 -0
  522. package/cjs/persisters/persister-powersync/index.cjs +944 -0
  523. package/cjs/persisters/persister-powersync/with-schemas/index.cjs +944 -0
  524. package/cjs/persisters/persister-remote/index.cjs +286 -0
  525. package/cjs/persisters/persister-remote/with-schemas/index.cjs +286 -0
  526. package/cjs/persisters/persister-sqlite-wasm/index.cjs +937 -0
  527. package/cjs/persisters/persister-sqlite-wasm/with-schemas/index.cjs +937 -0
  528. package/cjs/persisters/persister-sqlite3/index.cjs +939 -0
  529. package/cjs/persisters/persister-sqlite3/with-schemas/index.cjs +939 -0
  530. package/cjs/persisters/persister-yjs/index.cjs +426 -0
  531. package/cjs/persisters/persister-yjs/with-schemas/index.cjs +426 -0
  532. package/cjs/persisters/with-schemas/index.cjs +230 -0
  533. package/cjs/queries/index.cjs +815 -0
  534. package/cjs/queries/with-schemas/index.cjs +815 -0
  535. package/cjs/relationships/index.cjs +531 -0
  536. package/cjs/relationships/with-schemas/index.cjs +531 -0
  537. package/cjs/store/index.cjs +1636 -0
  538. package/cjs/store/with-schemas/index.cjs +1636 -0
  539. package/cjs/synchronizers/index.cjs +470 -0
  540. package/cjs/synchronizers/synchronizer-broadcast-channel/index.cjs +500 -0
  541. package/cjs/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +500 -0
  542. package/cjs/synchronizers/synchronizer-local/index.cjs +504 -0
  543. package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +504 -0
  544. package/cjs/synchronizers/synchronizer-ws-client/index.cjs +526 -0
  545. package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +526 -0
  546. package/cjs/synchronizers/synchronizer-ws-server/index.cjs +243 -0
  547. package/cjs/synchronizers/synchronizer-ws-server/with-schemas/index.cjs +243 -0
  548. package/cjs/synchronizers/with-schemas/index.cjs +470 -0
  549. package/cjs/tools/index.cjs +3300 -0
  550. package/cjs/tools/with-schemas/index.cjs +3300 -0
  551. package/cjs/ui-react/index.cjs +2050 -0
  552. package/cjs/ui-react/with-schemas/index.cjs +2050 -0
  553. package/cjs/ui-react-dom/index.cjs +781 -0
  554. package/cjs/ui-react-dom/with-schemas/index.cjs +781 -0
  555. package/cjs/ui-react-inspector/index.cjs +3265 -0
  556. package/cjs/ui-react-inspector/with-schemas/index.cjs +3265 -0
  557. package/cjs/with-schemas/index.cjs +4109 -0
  558. package/cli/index.js +90 -0
  559. package/common/index.js +33 -0
  560. package/common/with-schemas/index.js +33 -0
  561. package/es6/checkpoints/index.js +471 -0
  562. package/es6/checkpoints/with-schemas/index.js +471 -0
  563. package/es6/common/index.js +35 -0
  564. package/es6/common/with-schemas/index.js +35 -0
  565. package/es6/index.js +4365 -0
  566. package/es6/indexes/index.js +600 -0
  567. package/es6/indexes/with-schemas/index.js +600 -0
  568. package/es6/mergeable-store/index.js +2354 -0
  569. package/es6/mergeable-store/with-schemas/index.js +2354 -0
  570. package/es6/metrics/index.js +575 -0
  571. package/es6/metrics/with-schemas/index.js +575 -0
  572. package/es6/min/checkpoints/index.js +1 -0
  573. package/es6/min/checkpoints/index.js.gz +0 -0
  574. package/es6/min/checkpoints/with-schemas/index.js +1 -0
  575. package/es6/min/checkpoints/with-schemas/index.js.gz +0 -0
  576. package/es6/min/common/index.js +1 -0
  577. package/es6/min/common/index.js.gz +0 -0
  578. package/es6/min/common/with-schemas/index.js +1 -0
  579. package/es6/min/common/with-schemas/index.js.gz +0 -0
  580. package/es6/min/index.js +1 -0
  581. package/es6/min/index.js.gz +0 -0
  582. package/es6/min/indexes/index.js +1 -0
  583. package/es6/min/indexes/index.js.gz +0 -0
  584. package/es6/min/indexes/with-schemas/index.js +1 -0
  585. package/es6/min/indexes/with-schemas/index.js.gz +0 -0
  586. package/es6/min/mergeable-store/index.js +1 -0
  587. package/es6/min/mergeable-store/index.js.gz +0 -0
  588. package/es6/min/mergeable-store/with-schemas/index.js +1 -0
  589. package/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
  590. package/es6/min/metrics/index.js +1 -0
  591. package/es6/min/metrics/index.js.gz +0 -0
  592. package/es6/min/metrics/with-schemas/index.js +1 -0
  593. package/es6/min/metrics/with-schemas/index.js.gz +0 -0
  594. package/es6/min/persisters/index.js +1 -0
  595. package/es6/min/persisters/index.js.gz +0 -0
  596. package/es6/min/persisters/persister-automerge/index.js +1 -0
  597. package/es6/min/persisters/persister-automerge/index.js.gz +0 -0
  598. package/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -0
  599. package/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  600. package/es6/min/persisters/persister-browser/index.js +1 -0
  601. package/es6/min/persisters/persister-browser/index.js.gz +0 -0
  602. package/es6/min/persisters/persister-browser/with-schemas/index.js +1 -0
  603. package/es6/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  604. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -0
  605. package/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  606. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -0
  607. package/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  608. package/es6/min/persisters/persister-electric-sql/index.js +1 -0
  609. package/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  610. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -0
  611. package/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  612. package/es6/min/persisters/persister-expo-sqlite/index.js +1 -0
  613. package/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  614. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -0
  615. package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  616. package/es6/min/persisters/persister-file/index.js +1 -0
  617. package/es6/min/persisters/persister-file/index.js.gz +0 -0
  618. package/es6/min/persisters/persister-file/with-schemas/index.js +1 -0
  619. package/es6/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  620. package/es6/min/persisters/persister-indexed-db/index.js +1 -0
  621. package/es6/min/persisters/persister-indexed-db/index.js.gz +0 -0
  622. package/es6/min/persisters/persister-indexed-db/with-schemas/index.js +1 -0
  623. package/es6/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  624. package/es6/min/persisters/persister-libsql/index.js +1 -0
  625. package/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  626. package/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -0
  627. package/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  628. package/es6/min/persisters/persister-partykit-client/index.js +1 -0
  629. package/es6/min/persisters/persister-partykit-client/index.js.gz +0 -0
  630. package/es6/min/persisters/persister-partykit-client/with-schemas/index.js +1 -0
  631. package/es6/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  632. package/es6/min/persisters/persister-partykit-server/index.js +1 -0
  633. package/es6/min/persisters/persister-partykit-server/index.js.gz +0 -0
  634. package/es6/min/persisters/persister-partykit-server/with-schemas/index.js +1 -0
  635. package/es6/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
  636. package/es6/min/persisters/persister-powersync/index.js +1 -0
  637. package/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  638. package/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -0
  639. package/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  640. package/es6/min/persisters/persister-remote/index.js +1 -0
  641. package/es6/min/persisters/persister-remote/index.js.gz +0 -0
  642. package/es6/min/persisters/persister-remote/with-schemas/index.js +1 -0
  643. package/es6/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  644. package/es6/min/persisters/persister-sqlite-wasm/index.js +1 -0
  645. package/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  646. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -0
  647. package/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  648. package/es6/min/persisters/persister-sqlite3/index.js +1 -0
  649. package/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  650. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -0
  651. package/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  652. package/es6/min/persisters/persister-yjs/index.js +1 -0
  653. package/es6/min/persisters/persister-yjs/index.js.gz +0 -0
  654. package/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -0
  655. package/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  656. package/es6/min/persisters/with-schemas/index.js +1 -0
  657. package/es6/min/persisters/with-schemas/index.js.gz +0 -0
  658. package/es6/min/queries/index.js +1 -0
  659. package/es6/min/queries/index.js.gz +0 -0
  660. package/es6/min/queries/with-schemas/index.js +1 -0
  661. package/es6/min/queries/with-schemas/index.js.gz +0 -0
  662. package/es6/min/relationships/index.js +1 -0
  663. package/es6/min/relationships/index.js.gz +0 -0
  664. package/es6/min/relationships/with-schemas/index.js +1 -0
  665. package/es6/min/relationships/with-schemas/index.js.gz +0 -0
  666. package/es6/min/store/index.js +1 -0
  667. package/es6/min/store/index.js.gz +0 -0
  668. package/es6/min/store/with-schemas/index.js +1 -0
  669. package/es6/min/store/with-schemas/index.js.gz +0 -0
  670. package/es6/min/synchronizers/index.js +1 -0
  671. package/es6/min/synchronizers/index.js.gz +0 -0
  672. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  673. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  674. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  675. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  676. package/es6/min/synchronizers/synchronizer-local/index.js +1 -0
  677. package/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  678. package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -0
  679. package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  680. package/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -0
  681. package/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  682. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -0
  683. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  684. package/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -0
  685. package/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  686. package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -0
  687. package/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  688. package/es6/min/synchronizers/with-schemas/index.js +1 -0
  689. package/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
  690. package/es6/min/tools/index.js +1 -0
  691. package/es6/min/tools/index.js.gz +0 -0
  692. package/es6/min/tools/with-schemas/index.js +1 -0
  693. package/es6/min/tools/with-schemas/index.js.gz +0 -0
  694. package/es6/min/ui-react/index.js +1 -0
  695. package/es6/min/ui-react/index.js.gz +0 -0
  696. package/es6/min/ui-react/with-schemas/index.js +1 -0
  697. package/es6/min/ui-react/with-schemas/index.js.gz +0 -0
  698. package/es6/min/ui-react-dom/index.js +1 -0
  699. package/es6/min/ui-react-dom/index.js.gz +0 -0
  700. package/es6/min/ui-react-dom/with-schemas/index.js +1 -0
  701. package/es6/min/ui-react-dom/with-schemas/index.js.gz +0 -0
  702. package/es6/min/ui-react-inspector/index.js +1 -0
  703. package/es6/min/ui-react-inspector/index.js.gz +0 -0
  704. package/es6/min/ui-react-inspector/with-schemas/index.js +1 -0
  705. package/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  706. package/es6/min/with-schemas/index.js +1 -0
  707. package/es6/min/with-schemas/index.js.gz +0 -0
  708. package/es6/persisters/index.js +299 -0
  709. package/es6/persisters/persister-automerge/index.js +473 -0
  710. package/es6/persisters/persister-automerge/with-schemas/index.js +473 -0
  711. package/es6/persisters/persister-browser/index.js +381 -0
  712. package/es6/persisters/persister-browser/with-schemas/index.js +381 -0
  713. package/es6/persisters/persister-cr-sqlite-wasm/index.js +1253 -0
  714. package/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1253 -0
  715. package/es6/persisters/persister-electric-sql/index.js +1261 -0
  716. package/es6/persisters/persister-electric-sql/with-schemas/index.js +1261 -0
  717. package/es6/persisters/persister-expo-sqlite/index.js +1256 -0
  718. package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +1256 -0
  719. package/es6/persisters/persister-file/index.js +361 -0
  720. package/es6/persisters/persister-file/with-schemas/index.js +361 -0
  721. package/es6/persisters/persister-indexed-db/index.js +478 -0
  722. package/es6/persisters/persister-indexed-db/with-schemas/index.js +478 -0
  723. package/es6/persisters/persister-libsql/index.js +1254 -0
  724. package/es6/persisters/persister-libsql/with-schemas/index.js +1254 -0
  725. package/es6/persisters/persister-partykit-client/index.js +456 -0
  726. package/es6/persisters/persister-partykit-client/with-schemas/index.js +456 -0
  727. package/es6/persisters/persister-partykit-server/index.js +411 -0
  728. package/es6/persisters/persister-partykit-server/with-schemas/index.js +411 -0
  729. package/es6/persisters/persister-powersync/index.js +1309 -0
  730. package/es6/persisters/persister-powersync/with-schemas/index.js +1309 -0
  731. package/es6/persisters/persister-remote/index.js +386 -0
  732. package/es6/persisters/persister-remote/with-schemas/index.js +386 -0
  733. package/es6/persisters/persister-sqlite-wasm/index.js +1283 -0
  734. package/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +1283 -0
  735. package/es6/persisters/persister-sqlite3/index.js +1263 -0
  736. package/es6/persisters/persister-sqlite3/with-schemas/index.js +1263 -0
  737. package/es6/persisters/persister-yjs/index.js +533 -0
  738. package/es6/persisters/persister-yjs/with-schemas/index.js +533 -0
  739. package/es6/persisters/with-schemas/index.js +299 -0
  740. package/es6/queries/index.js +858 -0
  741. package/es6/queries/with-schemas/index.js +858 -0
  742. package/es6/relationships/index.js +589 -0
  743. package/es6/relationships/with-schemas/index.js +589 -0
  744. package/es6/store/index.js +1714 -0
  745. package/es6/store/with-schemas/index.js +1714 -0
  746. package/es6/synchronizers/index.js +595 -0
  747. package/es6/synchronizers/synchronizer-broadcast-channel/index.js +626 -0
  748. package/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +626 -0
  749. package/es6/synchronizers/synchronizer-local/index.js +631 -0
  750. package/es6/synchronizers/synchronizer-local/with-schemas/index.js +631 -0
  751. package/es6/synchronizers/synchronizer-ws-client/index.js +676 -0
  752. package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +676 -0
  753. package/es6/synchronizers/synchronizer-ws-server/index.js +290 -0
  754. package/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +290 -0
  755. package/es6/synchronizers/with-schemas/index.js +595 -0
  756. package/es6/tools/index.js +3421 -0
  757. package/es6/tools/with-schemas/index.js +3421 -0
  758. package/es6/ui-react/index.js +2250 -0
  759. package/es6/ui-react/with-schemas/index.js +2250 -0
  760. package/es6/ui-react-dom/index.js +909 -0
  761. package/es6/ui-react-dom/with-schemas/index.js +909 -0
  762. package/es6/ui-react-inspector/index.js +3661 -0
  763. package/es6/ui-react-inspector/with-schemas/index.js +3661 -0
  764. package/es6/with-schemas/index.js +4365 -0
  765. package/index.js +4109 -0
  766. package/indexes/index.js +553 -0
  767. package/indexes/with-schemas/index.js +553 -0
  768. package/mergeable-store/index.js +2254 -0
  769. package/mergeable-store/with-schemas/index.js +2254 -0
  770. package/metrics/index.js +522 -0
  771. package/metrics/with-schemas/index.js +522 -0
  772. package/min/checkpoints/index.js +1 -0
  773. package/min/checkpoints/index.js.gz +0 -0
  774. package/min/checkpoints/with-schemas/index.js +1 -0
  775. package/min/checkpoints/with-schemas/index.js.gz +0 -0
  776. package/min/common/index.js +1 -0
  777. package/min/common/index.js.gz +0 -0
  778. package/min/common/with-schemas/index.js +1 -0
  779. package/min/common/with-schemas/index.js.gz +0 -0
  780. package/min/index.js +1 -0
  781. package/min/index.js.gz +0 -0
  782. package/min/indexes/index.js +1 -0
  783. package/min/indexes/index.js.gz +0 -0
  784. package/min/indexes/with-schemas/index.js +1 -0
  785. package/min/indexes/with-schemas/index.js.gz +0 -0
  786. package/min/mergeable-store/index.js +1 -0
  787. package/min/mergeable-store/index.js.gz +0 -0
  788. package/min/mergeable-store/with-schemas/index.js +1 -0
  789. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  790. package/min/metrics/index.js +1 -0
  791. package/min/metrics/index.js.gz +0 -0
  792. package/min/metrics/with-schemas/index.js +1 -0
  793. package/min/metrics/with-schemas/index.js.gz +0 -0
  794. package/min/persisters/index.js +1 -0
  795. package/min/persisters/index.js.gz +0 -0
  796. package/min/persisters/persister-automerge/index.js +1 -0
  797. package/min/persisters/persister-automerge/index.js.gz +0 -0
  798. package/min/persisters/persister-automerge/with-schemas/index.js +1 -0
  799. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  800. package/min/persisters/persister-browser/index.js +1 -0
  801. package/min/persisters/persister-browser/index.js.gz +0 -0
  802. package/min/persisters/persister-browser/with-schemas/index.js +1 -0
  803. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  804. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -0
  805. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  806. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -0
  807. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  808. package/min/persisters/persister-electric-sql/index.js +1 -0
  809. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  810. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -0
  811. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  812. package/min/persisters/persister-expo-sqlite/index.js +1 -0
  813. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  814. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -0
  815. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  816. package/min/persisters/persister-file/index.js +1 -0
  817. package/min/persisters/persister-file/index.js.gz +0 -0
  818. package/min/persisters/persister-file/with-schemas/index.js +1 -0
  819. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  820. package/min/persisters/persister-indexed-db/index.js +1 -0
  821. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  822. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -0
  823. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  824. package/min/persisters/persister-libsql/index.js +1 -0
  825. package/min/persisters/persister-libsql/index.js.gz +0 -0
  826. package/min/persisters/persister-libsql/with-schemas/index.js +1 -0
  827. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  828. package/min/persisters/persister-partykit-client/index.js +1 -0
  829. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  830. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -0
  831. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  832. package/min/persisters/persister-partykit-server/index.js +1 -0
  833. package/min/persisters/persister-partykit-server/index.js.gz +0 -0
  834. package/min/persisters/persister-partykit-server/with-schemas/index.js +1 -0
  835. package/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
  836. package/min/persisters/persister-powersync/index.js +1 -0
  837. package/min/persisters/persister-powersync/index.js.gz +0 -0
  838. package/min/persisters/persister-powersync/with-schemas/index.js +1 -0
  839. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  840. package/min/persisters/persister-remote/index.js +1 -0
  841. package/min/persisters/persister-remote/index.js.gz +0 -0
  842. package/min/persisters/persister-remote/with-schemas/index.js +1 -0
  843. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  844. package/min/persisters/persister-sqlite-wasm/index.js +1 -0
  845. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  846. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -0
  847. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  848. package/min/persisters/persister-sqlite3/index.js +1 -0
  849. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  850. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -0
  851. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  852. package/min/persisters/persister-yjs/index.js +1 -0
  853. package/min/persisters/persister-yjs/index.js.gz +0 -0
  854. package/min/persisters/persister-yjs/with-schemas/index.js +1 -0
  855. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  856. package/min/persisters/with-schemas/index.js +1 -0
  857. package/min/persisters/with-schemas/index.js.gz +0 -0
  858. package/min/queries/index.js +1 -0
  859. package/min/queries/index.js.gz +0 -0
  860. package/min/queries/with-schemas/index.js +1 -0
  861. package/min/queries/with-schemas/index.js.gz +0 -0
  862. package/min/relationships/index.js +1 -0
  863. package/min/relationships/index.js.gz +0 -0
  864. package/min/relationships/with-schemas/index.js +1 -0
  865. package/min/relationships/with-schemas/index.js.gz +0 -0
  866. package/min/store/index.js +1 -0
  867. package/min/store/index.js.gz +0 -0
  868. package/min/store/with-schemas/index.js +1 -0
  869. package/min/store/with-schemas/index.js.gz +0 -0
  870. package/min/synchronizers/index.js +1 -0
  871. package/min/synchronizers/index.js.gz +0 -0
  872. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  873. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  874. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  875. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  876. package/min/synchronizers/synchronizer-local/index.js +1 -0
  877. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  878. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -0
  879. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  880. package/min/synchronizers/synchronizer-ws-client/index.js +1 -0
  881. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  882. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -0
  883. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  884. package/min/synchronizers/synchronizer-ws-server/index.js +1 -0
  885. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  886. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -0
  887. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  888. package/min/synchronizers/with-schemas/index.js +1 -0
  889. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  890. package/min/tools/index.js +1 -0
  891. package/min/tools/index.js.gz +0 -0
  892. package/min/tools/with-schemas/index.js +1 -0
  893. package/min/tools/with-schemas/index.js.gz +0 -0
  894. package/min/ui-react/index.js +1 -0
  895. package/min/ui-react/index.js.gz +0 -0
  896. package/min/ui-react/with-schemas/index.js +1 -0
  897. package/min/ui-react/with-schemas/index.js.gz +0 -0
  898. package/min/ui-react-dom/index.js +1 -0
  899. package/min/ui-react-dom/index.js.gz +0 -0
  900. package/min/ui-react-dom/with-schemas/index.js +1 -0
  901. package/min/ui-react-dom/with-schemas/index.js.gz +0 -0
  902. package/min/ui-react-inspector/index.js +1 -0
  903. package/min/ui-react-inspector/index.js.gz +0 -0
  904. package/min/ui-react-inspector/with-schemas/index.js +1 -0
  905. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  906. package/min/with-schemas/index.js +1 -0
  907. package/min/with-schemas/index.js.gz +0 -0
  908. package/package.json +3561 -288
  909. package/persisters/index.js +227 -0
  910. package/persisters/persister-automerge/index.js +375 -0
  911. package/persisters/persister-automerge/with-schemas/index.js +375 -0
  912. package/persisters/persister-browser/index.js +279 -0
  913. package/persisters/persister-browser/with-schemas/index.js +279 -0
  914. package/persisters/persister-cr-sqlite-wasm/index.js +926 -0
  915. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +926 -0
  916. package/persisters/persister-electric-sql/index.js +934 -0
  917. package/persisters/persister-electric-sql/with-schemas/index.js +934 -0
  918. package/persisters/persister-expo-sqlite/index.js +929 -0
  919. package/persisters/persister-expo-sqlite/with-schemas/index.js +929 -0
  920. package/persisters/persister-file/index.js +257 -0
  921. package/persisters/persister-file/with-schemas/index.js +257 -0
  922. package/persisters/persister-indexed-db/index.js +339 -0
  923. package/persisters/persister-indexed-db/with-schemas/index.js +339 -0
  924. package/persisters/persister-libsql/index.js +927 -0
  925. package/persisters/persister-libsql/with-schemas/index.js +927 -0
  926. package/persisters/persister-partykit-client/index.js +326 -0
  927. package/persisters/persister-partykit-client/with-schemas/index.js +326 -0
  928. package/persisters/persister-partykit-server/index.js +284 -0
  929. package/persisters/persister-partykit-server/with-schemas/index.js +284 -0
  930. package/persisters/persister-powersync/index.js +942 -0
  931. package/persisters/persister-powersync/with-schemas/index.js +942 -0
  932. package/persisters/persister-remote/index.js +284 -0
  933. package/persisters/persister-remote/with-schemas/index.js +284 -0
  934. package/persisters/persister-sqlite-wasm/index.js +935 -0
  935. package/persisters/persister-sqlite-wasm/with-schemas/index.js +935 -0
  936. package/persisters/persister-sqlite3/index.js +937 -0
  937. package/persisters/persister-sqlite3/with-schemas/index.js +937 -0
  938. package/persisters/persister-yjs/index.js +423 -0
  939. package/persisters/persister-yjs/with-schemas/index.js +423 -0
  940. package/persisters/with-schemas/index.js +227 -0
  941. package/queries/index.js +813 -0
  942. package/queries/with-schemas/index.js +813 -0
  943. package/readme.md +32 -14
  944. package/relationships/index.js +529 -0
  945. package/relationships/with-schemas/index.js +529 -0
  946. package/releases.md +449 -0
  947. package/store/index.js +1634 -0
  948. package/store/with-schemas/index.js +1634 -0
  949. package/synchronizers/index.js +467 -0
  950. package/synchronizers/synchronizer-broadcast-channel/index.js +498 -0
  951. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +498 -0
  952. package/synchronizers/synchronizer-local/index.js +502 -0
  953. package/synchronizers/synchronizer-local/with-schemas/index.js +502 -0
  954. package/synchronizers/synchronizer-ws-client/index.js +524 -0
  955. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +524 -0
  956. package/synchronizers/synchronizer-ws-server/index.js +241 -0
  957. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +241 -0
  958. package/synchronizers/with-schemas/index.js +467 -0
  959. package/tools/index.js +3298 -0
  960. package/tools/with-schemas/index.js +3298 -0
  961. package/ui-react/index.js +2049 -0
  962. package/ui-react/with-schemas/index.js +2049 -0
  963. package/ui-react-dom/index.js +791 -0
  964. package/ui-react-dom/with-schemas/index.js +791 -0
  965. package/ui-react-inspector/index.js +3283 -0
  966. package/ui-react-inspector/with-schemas/index.js +3283 -0
  967. package/umd/checkpoints/index.js +450 -0
  968. package/umd/checkpoints/with-schemas/index.js +450 -0
  969. package/umd/common/index.js +46 -0
  970. package/umd/common/with-schemas/index.js +46 -0
  971. package/umd/es6/checkpoints/index.js +492 -0
  972. package/umd/es6/checkpoints/with-schemas/index.js +492 -0
  973. package/umd/es6/common/index.js +48 -0
  974. package/umd/es6/common/with-schemas/index.js +48 -0
  975. package/umd/es6/index.js +4467 -0
  976. package/umd/es6/indexes/index.js +627 -0
  977. package/umd/es6/indexes/with-schemas/index.js +627 -0
  978. package/umd/es6/mergeable-store/index.js +2426 -0
  979. package/umd/es6/mergeable-store/with-schemas/index.js +2426 -0
  980. package/umd/es6/metrics/index.js +602 -0
  981. package/umd/es6/metrics/with-schemas/index.js +602 -0
  982. package/umd/es6/min/checkpoints/index.js +1 -0
  983. package/umd/es6/min/checkpoints/index.js.gz +0 -0
  984. package/umd/es6/min/checkpoints/with-schemas/index.js +1 -0
  985. package/umd/es6/min/checkpoints/with-schemas/index.js.gz +0 -0
  986. package/umd/es6/min/common/index.js +1 -0
  987. package/umd/es6/min/common/index.js.gz +0 -0
  988. package/umd/es6/min/common/with-schemas/index.js +1 -0
  989. package/umd/es6/min/common/with-schemas/index.js.gz +0 -0
  990. package/umd/es6/min/index.js +1 -0
  991. package/umd/es6/min/index.js.gz +0 -0
  992. package/umd/es6/min/indexes/index.js +1 -0
  993. package/umd/es6/min/indexes/index.js.gz +0 -0
  994. package/umd/es6/min/indexes/with-schemas/index.js +1 -0
  995. package/umd/es6/min/indexes/with-schemas/index.js.gz +0 -0
  996. package/umd/es6/min/mergeable-store/index.js +1 -0
  997. package/umd/es6/min/mergeable-store/index.js.gz +0 -0
  998. package/umd/es6/min/mergeable-store/with-schemas/index.js +1 -0
  999. package/umd/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
  1000. package/umd/es6/min/metrics/index.js +1 -0
  1001. package/umd/es6/min/metrics/index.js.gz +0 -0
  1002. package/umd/es6/min/metrics/with-schemas/index.js +1 -0
  1003. package/umd/es6/min/metrics/with-schemas/index.js.gz +0 -0
  1004. package/umd/es6/min/persisters/index.js +1 -0
  1005. package/umd/es6/min/persisters/index.js.gz +0 -0
  1006. package/umd/es6/min/persisters/persister-automerge/index.js +1 -0
  1007. package/umd/es6/min/persisters/persister-automerge/index.js.gz +0 -0
  1008. package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js +1 -0
  1009. package/umd/es6/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  1010. package/umd/es6/min/persisters/persister-browser/index.js +1 -0
  1011. package/umd/es6/min/persisters/persister-browser/index.js.gz +0 -0
  1012. package/umd/es6/min/persisters/persister-browser/with-schemas/index.js +1 -0
  1013. package/umd/es6/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  1014. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js +1 -0
  1015. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  1016. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -0
  1017. package/umd/es6/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  1018. package/umd/es6/min/persisters/persister-electric-sql/index.js +1 -0
  1019. package/umd/es6/min/persisters/persister-electric-sql/index.js.gz +0 -0
  1020. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js +1 -0
  1021. package/umd/es6/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  1022. package/umd/es6/min/persisters/persister-expo-sqlite/index.js +1 -0
  1023. package/umd/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  1024. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -0
  1025. package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  1026. package/umd/es6/min/persisters/persister-file/index.js +1 -0
  1027. package/umd/es6/min/persisters/persister-file/index.js.gz +0 -0
  1028. package/umd/es6/min/persisters/persister-file/with-schemas/index.js +1 -0
  1029. package/umd/es6/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  1030. package/umd/es6/min/persisters/persister-indexed-db/index.js +1 -0
  1031. package/umd/es6/min/persisters/persister-indexed-db/index.js.gz +0 -0
  1032. package/umd/es6/min/persisters/persister-indexed-db/with-schemas/index.js +1 -0
  1033. package/umd/es6/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  1034. package/umd/es6/min/persisters/persister-libsql/index.js +1 -0
  1035. package/umd/es6/min/persisters/persister-libsql/index.js.gz +0 -0
  1036. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js +1 -0
  1037. package/umd/es6/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  1038. package/umd/es6/min/persisters/persister-partykit-client/index.js +1 -0
  1039. package/umd/es6/min/persisters/persister-partykit-client/index.js.gz +0 -0
  1040. package/umd/es6/min/persisters/persister-partykit-client/with-schemas/index.js +1 -0
  1041. package/umd/es6/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  1042. package/umd/es6/min/persisters/persister-partykit-server/index.js +1 -0
  1043. package/umd/es6/min/persisters/persister-partykit-server/index.js.gz +0 -0
  1044. package/umd/es6/min/persisters/persister-partykit-server/with-schemas/index.js +1 -0
  1045. package/umd/es6/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
  1046. package/umd/es6/min/persisters/persister-powersync/index.js +1 -0
  1047. package/umd/es6/min/persisters/persister-powersync/index.js.gz +0 -0
  1048. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js +1 -0
  1049. package/umd/es6/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  1050. package/umd/es6/min/persisters/persister-remote/index.js +1 -0
  1051. package/umd/es6/min/persisters/persister-remote/index.js.gz +0 -0
  1052. package/umd/es6/min/persisters/persister-remote/with-schemas/index.js +1 -0
  1053. package/umd/es6/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  1054. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js +1 -0
  1055. package/umd/es6/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  1056. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -0
  1057. package/umd/es6/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  1058. package/umd/es6/min/persisters/persister-sqlite3/index.js +1 -0
  1059. package/umd/es6/min/persisters/persister-sqlite3/index.js.gz +0 -0
  1060. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js +1 -0
  1061. package/umd/es6/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  1062. package/umd/es6/min/persisters/persister-yjs/index.js +1 -0
  1063. package/umd/es6/min/persisters/persister-yjs/index.js.gz +0 -0
  1064. package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js +1 -0
  1065. package/umd/es6/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  1066. package/umd/es6/min/persisters/with-schemas/index.js +1 -0
  1067. package/umd/es6/min/persisters/with-schemas/index.js.gz +0 -0
  1068. package/umd/es6/min/queries/index.js +1 -0
  1069. package/umd/es6/min/queries/index.js.gz +0 -0
  1070. package/umd/es6/min/queries/with-schemas/index.js +1 -0
  1071. package/umd/es6/min/queries/with-schemas/index.js.gz +0 -0
  1072. package/umd/es6/min/relationships/index.js +1 -0
  1073. package/umd/es6/min/relationships/index.js.gz +0 -0
  1074. package/umd/es6/min/relationships/with-schemas/index.js +1 -0
  1075. package/umd/es6/min/relationships/with-schemas/index.js.gz +0 -0
  1076. package/umd/es6/min/store/index.js +1 -0
  1077. package/umd/es6/min/store/index.js.gz +0 -0
  1078. package/umd/es6/min/store/with-schemas/index.js +1 -0
  1079. package/umd/es6/min/store/with-schemas/index.js.gz +0 -0
  1080. package/umd/es6/min/synchronizers/index.js +1 -0
  1081. package/umd/es6/min/synchronizers/index.js.gz +0 -0
  1082. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  1083. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  1084. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  1085. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  1086. package/umd/es6/min/synchronizers/synchronizer-local/index.js +1 -0
  1087. package/umd/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  1088. package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -0
  1089. package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  1090. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -0
  1091. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  1092. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -0
  1093. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  1094. package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js +1 -0
  1095. package/umd/es6/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  1096. package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -0
  1097. package/umd/es6/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  1098. package/umd/es6/min/synchronizers/with-schemas/index.js +1 -0
  1099. package/umd/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
  1100. package/umd/es6/min/tools/index.js +1 -0
  1101. package/umd/es6/min/tools/index.js.gz +0 -0
  1102. package/umd/es6/min/tools/with-schemas/index.js +1 -0
  1103. package/umd/es6/min/tools/with-schemas/index.js.gz +0 -0
  1104. package/umd/es6/min/ui-react/index.js +1 -0
  1105. package/umd/es6/min/ui-react/index.js.gz +0 -0
  1106. package/umd/es6/min/ui-react/with-schemas/index.js +1 -0
  1107. package/umd/es6/min/ui-react/with-schemas/index.js.gz +0 -0
  1108. package/umd/es6/min/ui-react-dom/index.js +1 -0
  1109. package/umd/es6/min/ui-react-dom/index.js.gz +0 -0
  1110. package/umd/es6/min/ui-react-dom/with-schemas/index.js +1 -0
  1111. package/umd/es6/min/ui-react-dom/with-schemas/index.js.gz +0 -0
  1112. package/umd/es6/min/ui-react-inspector/index.js +1 -0
  1113. package/umd/es6/min/ui-react-inspector/index.js.gz +0 -0
  1114. package/umd/es6/min/ui-react-inspector/with-schemas/index.js +1 -0
  1115. package/umd/es6/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  1116. package/umd/es6/min/with-schemas/index.js +1 -0
  1117. package/umd/es6/min/with-schemas/index.js.gz +0 -0
  1118. package/umd/es6/persisters/index.js +316 -0
  1119. package/umd/es6/persisters/persister-automerge/index.js +489 -0
  1120. package/umd/es6/persisters/persister-automerge/with-schemas/index.js +489 -0
  1121. package/umd/es6/persisters/persister-browser/index.js +400 -0
  1122. package/umd/es6/persisters/persister-browser/with-schemas/index.js +400 -0
  1123. package/umd/es6/persisters/persister-cr-sqlite-wasm/index.js +1294 -0
  1124. package/umd/es6/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1294 -0
  1125. package/umd/es6/persisters/persister-electric-sql/index.js +1302 -0
  1126. package/umd/es6/persisters/persister-electric-sql/with-schemas/index.js +1302 -0
  1127. package/umd/es6/persisters/persister-expo-sqlite/index.js +1300 -0
  1128. package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +1300 -0
  1129. package/umd/es6/persisters/persister-file/index.js +381 -0
  1130. package/umd/es6/persisters/persister-file/with-schemas/index.js +381 -0
  1131. package/umd/es6/persisters/persister-indexed-db/index.js +495 -0
  1132. package/umd/es6/persisters/persister-indexed-db/with-schemas/index.js +495 -0
  1133. package/umd/es6/persisters/persister-libsql/index.js +1295 -0
  1134. package/umd/es6/persisters/persister-libsql/with-schemas/index.js +1295 -0
  1135. package/umd/es6/persisters/persister-partykit-client/index.js +472 -0
  1136. package/umd/es6/persisters/persister-partykit-client/with-schemas/index.js +472 -0
  1137. package/umd/es6/persisters/persister-partykit-server/index.js +432 -0
  1138. package/umd/es6/persisters/persister-partykit-server/with-schemas/index.js +432 -0
  1139. package/umd/es6/persisters/persister-powersync/index.js +1354 -0
  1140. package/umd/es6/persisters/persister-powersync/with-schemas/index.js +1354 -0
  1141. package/umd/es6/persisters/persister-remote/index.js +402 -0
  1142. package/umd/es6/persisters/persister-remote/with-schemas/index.js +402 -0
  1143. package/umd/es6/persisters/persister-sqlite-wasm/index.js +1328 -0
  1144. package/umd/es6/persisters/persister-sqlite-wasm/with-schemas/index.js +1328 -0
  1145. package/umd/es6/persisters/persister-sqlite3/index.js +1304 -0
  1146. package/umd/es6/persisters/persister-sqlite3/with-schemas/index.js +1304 -0
  1147. package/umd/es6/persisters/persister-yjs/index.js +549 -0
  1148. package/umd/es6/persisters/persister-yjs/with-schemas/index.js +549 -0
  1149. package/umd/es6/persisters/with-schemas/index.js +316 -0
  1150. package/umd/es6/queries/index.js +876 -0
  1151. package/umd/es6/queries/with-schemas/index.js +876 -0
  1152. package/umd/es6/relationships/index.js +613 -0
  1153. package/umd/es6/relationships/with-schemas/index.js +613 -0
  1154. package/umd/es6/store/index.js +1770 -0
  1155. package/umd/es6/store/with-schemas/index.js +1770 -0
  1156. package/umd/es6/synchronizers/index.js +623 -0
  1157. package/umd/es6/synchronizers/synchronizer-broadcast-channel/index.js +654 -0
  1158. package/umd/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +654 -0
  1159. package/umd/es6/synchronizers/synchronizer-local/index.js +658 -0
  1160. package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +658 -0
  1161. package/umd/es6/synchronizers/synchronizer-ws-client/index.js +705 -0
  1162. package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +705 -0
  1163. package/umd/es6/synchronizers/synchronizer-ws-server/index.js +314 -0
  1164. package/umd/es6/synchronizers/synchronizer-ws-server/with-schemas/index.js +314 -0
  1165. package/umd/es6/synchronizers/with-schemas/index.js +623 -0
  1166. package/umd/es6/tools/index.js +3481 -0
  1167. package/umd/es6/tools/with-schemas/index.js +3481 -0
  1168. package/umd/es6/ui-react/index.js +2311 -0
  1169. package/umd/es6/ui-react/with-schemas/index.js +2311 -0
  1170. package/umd/es6/ui-react-dom/index.js +923 -0
  1171. package/umd/es6/ui-react-dom/with-schemas/index.js +923 -0
  1172. package/umd/es6/ui-react-inspector/index.js +3737 -0
  1173. package/umd/es6/ui-react-inspector/with-schemas/index.js +3737 -0
  1174. package/umd/es6/with-schemas/index.js +4467 -0
  1175. package/umd/index.js +4198 -0
  1176. package/umd/indexes/index.js +578 -0
  1177. package/umd/indexes/with-schemas/index.js +578 -0
  1178. package/umd/mergeable-store/index.js +2319 -0
  1179. package/umd/mergeable-store/with-schemas/index.js +2319 -0
  1180. package/umd/metrics/index.js +547 -0
  1181. package/umd/metrics/with-schemas/index.js +547 -0
  1182. package/umd/min/checkpoints/index.js +1 -0
  1183. package/umd/min/checkpoints/index.js.gz +0 -0
  1184. package/umd/min/checkpoints/with-schemas/index.js +1 -0
  1185. package/umd/min/checkpoints/with-schemas/index.js.gz +0 -0
  1186. package/umd/min/common/index.js +1 -0
  1187. package/umd/min/common/index.js.gz +0 -0
  1188. package/umd/min/common/with-schemas/index.js +1 -0
  1189. package/umd/min/common/with-schemas/index.js.gz +0 -0
  1190. package/umd/min/index.js +1 -0
  1191. package/umd/min/index.js.gz +0 -0
  1192. package/umd/min/indexes/index.js +1 -0
  1193. package/umd/min/indexes/index.js.gz +0 -0
  1194. package/umd/min/indexes/with-schemas/index.js +1 -0
  1195. package/umd/min/indexes/with-schemas/index.js.gz +0 -0
  1196. package/umd/min/mergeable-store/index.js +1 -0
  1197. package/umd/min/mergeable-store/index.js.gz +0 -0
  1198. package/umd/min/mergeable-store/with-schemas/index.js +1 -0
  1199. package/umd/min/mergeable-store/with-schemas/index.js.gz +0 -0
  1200. package/umd/min/metrics/index.js +1 -0
  1201. package/umd/min/metrics/index.js.gz +0 -0
  1202. package/umd/min/metrics/with-schemas/index.js +1 -0
  1203. package/umd/min/metrics/with-schemas/index.js.gz +0 -0
  1204. package/umd/min/persisters/index.js +1 -0
  1205. package/umd/min/persisters/index.js.gz +0 -0
  1206. package/umd/min/persisters/persister-automerge/index.js +1 -0
  1207. package/umd/min/persisters/persister-automerge/index.js.gz +0 -0
  1208. package/umd/min/persisters/persister-automerge/with-schemas/index.js +1 -0
  1209. package/umd/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  1210. package/umd/min/persisters/persister-browser/index.js +1 -0
  1211. package/umd/min/persisters/persister-browser/index.js.gz +0 -0
  1212. package/umd/min/persisters/persister-browser/with-schemas/index.js +1 -0
  1213. package/umd/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  1214. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js +1 -0
  1215. package/umd/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  1216. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -0
  1217. package/umd/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  1218. package/umd/min/persisters/persister-electric-sql/index.js +1 -0
  1219. package/umd/min/persisters/persister-electric-sql/index.js.gz +0 -0
  1220. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js +1 -0
  1221. package/umd/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  1222. package/umd/min/persisters/persister-expo-sqlite/index.js +1 -0
  1223. package/umd/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  1224. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -0
  1225. package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  1226. package/umd/min/persisters/persister-file/index.js +1 -0
  1227. package/umd/min/persisters/persister-file/index.js.gz +0 -0
  1228. package/umd/min/persisters/persister-file/with-schemas/index.js +1 -0
  1229. package/umd/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  1230. package/umd/min/persisters/persister-indexed-db/index.js +1 -0
  1231. package/umd/min/persisters/persister-indexed-db/index.js.gz +0 -0
  1232. package/umd/min/persisters/persister-indexed-db/with-schemas/index.js +1 -0
  1233. package/umd/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  1234. package/umd/min/persisters/persister-libsql/index.js +1 -0
  1235. package/umd/min/persisters/persister-libsql/index.js.gz +0 -0
  1236. package/umd/min/persisters/persister-libsql/with-schemas/index.js +1 -0
  1237. package/umd/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  1238. package/umd/min/persisters/persister-partykit-client/index.js +1 -0
  1239. package/umd/min/persisters/persister-partykit-client/index.js.gz +0 -0
  1240. package/umd/min/persisters/persister-partykit-client/with-schemas/index.js +1 -0
  1241. package/umd/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  1242. package/umd/min/persisters/persister-partykit-server/index.js +1 -0
  1243. package/umd/min/persisters/persister-partykit-server/index.js.gz +0 -0
  1244. package/umd/min/persisters/persister-partykit-server/with-schemas/index.js +1 -0
  1245. package/umd/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
  1246. package/umd/min/persisters/persister-powersync/index.js +1 -0
  1247. package/umd/min/persisters/persister-powersync/index.js.gz +0 -0
  1248. package/umd/min/persisters/persister-powersync/with-schemas/index.js +1 -0
  1249. package/umd/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  1250. package/umd/min/persisters/persister-remote/index.js +1 -0
  1251. package/umd/min/persisters/persister-remote/index.js.gz +0 -0
  1252. package/umd/min/persisters/persister-remote/with-schemas/index.js +1 -0
  1253. package/umd/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  1254. package/umd/min/persisters/persister-sqlite-wasm/index.js +1 -0
  1255. package/umd/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  1256. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -0
  1257. package/umd/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  1258. package/umd/min/persisters/persister-sqlite3/index.js +1 -0
  1259. package/umd/min/persisters/persister-sqlite3/index.js.gz +0 -0
  1260. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js +1 -0
  1261. package/umd/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  1262. package/umd/min/persisters/persister-yjs/index.js +1 -0
  1263. package/umd/min/persisters/persister-yjs/index.js.gz +0 -0
  1264. package/umd/min/persisters/persister-yjs/with-schemas/index.js +1 -0
  1265. package/umd/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  1266. package/umd/min/persisters/with-schemas/index.js +1 -0
  1267. package/umd/min/persisters/with-schemas/index.js.gz +0 -0
  1268. package/umd/min/queries/index.js +1 -0
  1269. package/umd/min/queries/index.js.gz +0 -0
  1270. package/umd/min/queries/with-schemas/index.js +1 -0
  1271. package/umd/min/queries/with-schemas/index.js.gz +0 -0
  1272. package/umd/min/relationships/index.js +1 -0
  1273. package/umd/min/relationships/index.js.gz +0 -0
  1274. package/umd/min/relationships/with-schemas/index.js +1 -0
  1275. package/umd/min/relationships/with-schemas/index.js.gz +0 -0
  1276. package/umd/min/store/index.js +1 -0
  1277. package/umd/min/store/index.js.gz +0 -0
  1278. package/umd/min/store/with-schemas/index.js +1 -0
  1279. package/umd/min/store/with-schemas/index.js.gz +0 -0
  1280. package/umd/min/synchronizers/index.js +1 -0
  1281. package/umd/min/synchronizers/index.js.gz +0 -0
  1282. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  1283. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  1284. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  1285. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  1286. package/umd/min/synchronizers/synchronizer-local/index.js +1 -0
  1287. package/umd/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  1288. package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -0
  1289. package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  1290. package/umd/min/synchronizers/synchronizer-ws-client/index.js +1 -0
  1291. package/umd/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  1292. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -0
  1293. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  1294. package/umd/min/synchronizers/synchronizer-ws-server/index.js +1 -0
  1295. package/umd/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  1296. package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -0
  1297. package/umd/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  1298. package/umd/min/synchronizers/with-schemas/index.js +1 -0
  1299. package/umd/min/synchronizers/with-schemas/index.js.gz +0 -0
  1300. package/umd/min/tools/index.js +1 -0
  1301. package/umd/min/tools/index.js.gz +0 -0
  1302. package/umd/min/tools/with-schemas/index.js +1 -0
  1303. package/umd/min/tools/with-schemas/index.js.gz +0 -0
  1304. package/umd/min/ui-react/index.js +1 -0
  1305. package/umd/min/ui-react/index.js.gz +0 -0
  1306. package/umd/min/ui-react/with-schemas/index.js +1 -0
  1307. package/umd/min/ui-react/with-schemas/index.js.gz +0 -0
  1308. package/umd/min/ui-react-dom/index.js +1 -0
  1309. package/umd/min/ui-react-dom/index.js.gz +0 -0
  1310. package/umd/min/ui-react-dom/with-schemas/index.js +1 -0
  1311. package/umd/min/ui-react-dom/with-schemas/index.js.gz +0 -0
  1312. package/umd/min/ui-react-inspector/index.js +1 -0
  1313. package/umd/min/ui-react-inspector/index.js.gz +0 -0
  1314. package/umd/min/ui-react-inspector/with-schemas/index.js +1 -0
  1315. package/umd/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  1316. package/umd/min/with-schemas/index.js +1 -0
  1317. package/umd/min/with-schemas/index.js.gz +0 -0
  1318. package/umd/persisters/index.js +242 -0
  1319. package/umd/persisters/persister-automerge/index.js +389 -0
  1320. package/umd/persisters/persister-automerge/with-schemas/index.js +389 -0
  1321. package/umd/persisters/persister-browser/index.js +296 -0
  1322. package/umd/persisters/persister-browser/with-schemas/index.js +296 -0
  1323. package/umd/persisters/persister-cr-sqlite-wasm/index.js +958 -0
  1324. package/umd/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +958 -0
  1325. package/umd/persisters/persister-electric-sql/index.js +966 -0
  1326. package/umd/persisters/persister-electric-sql/with-schemas/index.js +966 -0
  1327. package/umd/persisters/persister-expo-sqlite/index.js +964 -0
  1328. package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +964 -0
  1329. package/umd/persisters/persister-file/index.js +279 -0
  1330. package/umd/persisters/persister-file/with-schemas/index.js +279 -0
  1331. package/umd/persisters/persister-indexed-db/index.js +354 -0
  1332. package/umd/persisters/persister-indexed-db/with-schemas/index.js +354 -0
  1333. package/umd/persisters/persister-libsql/index.js +959 -0
  1334. package/umd/persisters/persister-libsql/with-schemas/index.js +959 -0
  1335. package/umd/persisters/persister-partykit-client/index.js +340 -0
  1336. package/umd/persisters/persister-partykit-client/with-schemas/index.js +340 -0
  1337. package/umd/persisters/persister-partykit-server/index.js +312 -0
  1338. package/umd/persisters/persister-partykit-server/with-schemas/index.js +312 -0
  1339. package/umd/persisters/persister-powersync/index.js +976 -0
  1340. package/umd/persisters/persister-powersync/with-schemas/index.js +976 -0
  1341. package/umd/persisters/persister-remote/index.js +298 -0
  1342. package/umd/persisters/persister-remote/with-schemas/index.js +298 -0
  1343. package/umd/persisters/persister-sqlite-wasm/index.js +967 -0
  1344. package/umd/persisters/persister-sqlite-wasm/with-schemas/index.js +967 -0
  1345. package/umd/persisters/persister-sqlite3/index.js +969 -0
  1346. package/umd/persisters/persister-sqlite3/with-schemas/index.js +969 -0
  1347. package/umd/persisters/persister-yjs/index.js +438 -0
  1348. package/umd/persisters/persister-yjs/with-schemas/index.js +438 -0
  1349. package/umd/persisters/with-schemas/index.js +242 -0
  1350. package/umd/queries/index.js +829 -0
  1351. package/umd/queries/with-schemas/index.js +829 -0
  1352. package/umd/relationships/index.js +551 -0
  1353. package/umd/relationships/with-schemas/index.js +551 -0
  1354. package/umd/store/index.js +1686 -0
  1355. package/umd/store/with-schemas/index.js +1686 -0
  1356. package/umd/synchronizers/index.js +485 -0
  1357. package/umd/synchronizers/synchronizer-broadcast-channel/index.js +516 -0
  1358. package/umd/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +516 -0
  1359. package/umd/synchronizers/synchronizer-local/index.js +519 -0
  1360. package/umd/synchronizers/synchronizer-local/with-schemas/index.js +519 -0
  1361. package/umd/synchronizers/synchronizer-ws-client/index.js +543 -0
  1362. package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +543 -0
  1363. package/umd/synchronizers/synchronizer-ws-server/index.js +261 -0
  1364. package/umd/synchronizers/synchronizer-ws-server/with-schemas/index.js +261 -0
  1365. package/umd/synchronizers/with-schemas/index.js +485 -0
  1366. package/umd/tools/index.js +3351 -0
  1367. package/umd/tools/with-schemas/index.js +3351 -0
  1368. package/umd/ui-react/index.js +2105 -0
  1369. package/umd/ui-react/with-schemas/index.js +2105 -0
  1370. package/umd/ui-react-dom/index.js +804 -0
  1371. package/umd/ui-react-dom/with-schemas/index.js +804 -0
  1372. package/umd/ui-react-inspector/index.js +3344 -0
  1373. package/umd/ui-react-inspector/with-schemas/index.js +3344 -0
  1374. package/umd/with-schemas/index.js +4198 -0
  1375. package/with-schemas/index.js +4109 -0
  1376. package/bin/cli.js +0 -2
  1377. package/lib/checkpoints.js +0 -1
  1378. package/lib/checkpoints.js.gz +0 -0
  1379. package/lib/cjs/checkpoints.cjs +0 -1
  1380. package/lib/cjs/checkpoints.cjs.gz +0 -0
  1381. package/lib/cjs/common.cjs +0 -1
  1382. package/lib/cjs/common.cjs.gz +0 -0
  1383. package/lib/cjs/indexes.cjs +0 -1
  1384. package/lib/cjs/indexes.cjs.gz +0 -0
  1385. package/lib/cjs/mergeable-store.cjs +0 -1
  1386. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  1387. package/lib/cjs/metrics.cjs +0 -1
  1388. package/lib/cjs/metrics.cjs.gz +0 -0
  1389. package/lib/cjs/persisters/persister-automerge.cjs +0 -1
  1390. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  1391. package/lib/cjs/persisters/persister-browser.cjs +0 -1
  1392. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  1393. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +0 -1
  1394. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  1395. package/lib/cjs/persisters/persister-electric-sql.cjs +0 -1
  1396. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  1397. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +0 -1
  1398. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  1399. package/lib/cjs/persisters/persister-expo-sqlite.cjs +0 -1
  1400. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  1401. package/lib/cjs/persisters/persister-file.cjs +0 -1
  1402. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  1403. package/lib/cjs/persisters/persister-indexed-db.cjs +0 -1
  1404. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  1405. package/lib/cjs/persisters/persister-libsql.cjs +0 -1
  1406. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  1407. package/lib/cjs/persisters/persister-partykit-client.cjs +0 -1
  1408. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  1409. package/lib/cjs/persisters/persister-partykit-server.cjs +0 -1
  1410. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  1411. package/lib/cjs/persisters/persister-powersync.cjs +0 -1
  1412. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  1413. package/lib/cjs/persisters/persister-remote.cjs +0 -1
  1414. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  1415. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +0 -1
  1416. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  1417. package/lib/cjs/persisters/persister-sqlite3.cjs +0 -1
  1418. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  1419. package/lib/cjs/persisters/persister-yjs.cjs +0 -1
  1420. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  1421. package/lib/cjs/persisters.cjs +0 -1
  1422. package/lib/cjs/persisters.cjs.gz +0 -0
  1423. package/lib/cjs/queries.cjs +0 -1
  1424. package/lib/cjs/queries.cjs.gz +0 -0
  1425. package/lib/cjs/relationships.cjs +0 -1
  1426. package/lib/cjs/relationships.cjs.gz +0 -0
  1427. package/lib/cjs/store.cjs +0 -1
  1428. package/lib/cjs/store.cjs.gz +0 -0
  1429. package/lib/cjs/synchronizers/synchronizer-local.cjs +0 -1
  1430. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  1431. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +0 -1
  1432. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  1433. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +0 -1
  1434. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  1435. package/lib/cjs/synchronizers.cjs +0 -1
  1436. package/lib/cjs/synchronizers.cjs.gz +0 -0
  1437. package/lib/cjs/tinybase.cjs +0 -1
  1438. package/lib/cjs/tinybase.cjs.gz +0 -0
  1439. package/lib/cjs/tools.cjs +0 -1
  1440. package/lib/cjs/tools.cjs.gz +0 -0
  1441. package/lib/cjs/ui-react-dom-debug.cjs +0 -1
  1442. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  1443. package/lib/cjs/ui-react-dom.cjs +0 -1
  1444. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  1445. package/lib/cjs/ui-react.cjs +0 -1
  1446. package/lib/cjs/ui-react.cjs.gz +0 -0
  1447. package/lib/cjs-es6/checkpoints.cjs +0 -1
  1448. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  1449. package/lib/cjs-es6/common.cjs +0 -1
  1450. package/lib/cjs-es6/common.cjs.gz +0 -0
  1451. package/lib/cjs-es6/indexes.cjs +0 -1
  1452. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  1453. package/lib/cjs-es6/mergeable-store.cjs +0 -1
  1454. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  1455. package/lib/cjs-es6/metrics.cjs +0 -1
  1456. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  1457. package/lib/cjs-es6/persisters/persister-automerge.cjs +0 -1
  1458. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  1459. package/lib/cjs-es6/persisters/persister-browser.cjs +0 -1
  1460. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  1461. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +0 -1
  1462. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  1463. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +0 -1
  1464. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  1465. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +0 -1
  1466. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  1467. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +0 -1
  1468. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  1469. package/lib/cjs-es6/persisters/persister-file.cjs +0 -1
  1470. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  1471. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +0 -1
  1472. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  1473. package/lib/cjs-es6/persisters/persister-libsql.cjs +0 -1
  1474. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  1475. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +0 -1
  1476. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  1477. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +0 -1
  1478. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  1479. package/lib/cjs-es6/persisters/persister-powersync.cjs +0 -1
  1480. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  1481. package/lib/cjs-es6/persisters/persister-remote.cjs +0 -1
  1482. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  1483. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +0 -1
  1484. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  1485. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +0 -1
  1486. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  1487. package/lib/cjs-es6/persisters/persister-yjs.cjs +0 -1
  1488. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  1489. package/lib/cjs-es6/persisters.cjs +0 -1
  1490. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  1491. package/lib/cjs-es6/queries.cjs +0 -1
  1492. package/lib/cjs-es6/queries.cjs.gz +0 -0
  1493. package/lib/cjs-es6/relationships.cjs +0 -1
  1494. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  1495. package/lib/cjs-es6/store.cjs +0 -1
  1496. package/lib/cjs-es6/store.cjs.gz +0 -0
  1497. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +0 -1
  1498. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  1499. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +0 -1
  1500. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  1501. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +0 -1
  1502. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  1503. package/lib/cjs-es6/synchronizers.cjs +0 -1
  1504. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  1505. package/lib/cjs-es6/tinybase.cjs +0 -1
  1506. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  1507. package/lib/cjs-es6/tools.cjs +0 -1
  1508. package/lib/cjs-es6/tools.cjs.gz +0 -0
  1509. package/lib/cjs-es6/ui-react-dom-debug.cjs +0 -1
  1510. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  1511. package/lib/cjs-es6/ui-react-dom.cjs +0 -1
  1512. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  1513. package/lib/cjs-es6/ui-react.cjs +0 -1
  1514. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  1515. package/lib/common.js +0 -1
  1516. package/lib/common.js.gz +0 -0
  1517. package/lib/debug/common.js +0 -4
  1518. package/lib/debug/indexes.js +0 -548
  1519. package/lib/debug/mergeable-store.js +0 -2134
  1520. package/lib/debug/metrics.js +0 -520
  1521. package/lib/debug/persisters/persister-automerge.js +0 -366
  1522. package/lib/debug/persisters/persister-browser.js +0 -264
  1523. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +0 -910
  1524. package/lib/debug/persisters/persister-electric-sql.js +0 -918
  1525. package/lib/debug/persisters/persister-expo-sqlite-next.js +0 -913
  1526. package/lib/debug/persisters/persister-expo-sqlite.js +0 -911
  1527. package/lib/debug/persisters/persister-file.js +0 -248
  1528. package/lib/debug/persisters/persister-indexed-db.js +0 -330
  1529. package/lib/debug/persisters/persister-libsql.js +0 -911
  1530. package/lib/debug/persisters/persister-partykit-client.js +0 -313
  1531. package/lib/debug/persisters/persister-partykit-server.js +0 -282
  1532. package/lib/debug/persisters/persister-powersync.js +0 -926
  1533. package/lib/debug/persisters/persister-remote.js +0 -277
  1534. package/lib/debug/persisters/persister-sqlite-wasm.js +0 -919
  1535. package/lib/debug/persisters/persister-sqlite3.js +0 -921
  1536. package/lib/debug/persisters/persister-yjs.js +0 -414
  1537. package/lib/debug/persisters.js +0 -219
  1538. package/lib/debug/queries.js +0 -813
  1539. package/lib/debug/relationships.js +0 -530
  1540. package/lib/debug/store.js +0 -1607
  1541. package/lib/debug/synchronizers/synchronizer-local.js +0 -511
  1542. package/lib/debug/synchronizers/synchronizer-ws-client.js +0 -537
  1543. package/lib/debug/synchronizers/synchronizer-ws-server.js +0 -96
  1544. package/lib/debug/synchronizers.js +0 -475
  1545. package/lib/debug/tinybase.js +0 -3945
  1546. package/lib/debug/tools.js +0 -3300
  1547. package/lib/debug/ui-react-dom.js +0 -3276
  1548. package/lib/debug/ui-react.js +0 -1993
  1549. package/lib/es6/checkpoints.js +0 -1
  1550. package/lib/es6/checkpoints.js.gz +0 -0
  1551. package/lib/es6/common.js +0 -1
  1552. package/lib/es6/common.js.gz +0 -0
  1553. package/lib/es6/indexes.js +0 -1
  1554. package/lib/es6/indexes.js.gz +0 -0
  1555. package/lib/es6/mergeable-store.js +0 -1
  1556. package/lib/es6/mergeable-store.js.gz +0 -0
  1557. package/lib/es6/metrics.js +0 -1
  1558. package/lib/es6/metrics.js.gz +0 -0
  1559. package/lib/es6/persisters/persister-automerge.js +0 -1
  1560. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  1561. package/lib/es6/persisters/persister-browser.js +0 -1
  1562. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  1563. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +0 -1
  1564. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  1565. package/lib/es6/persisters/persister-electric-sql.js +0 -1
  1566. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  1567. package/lib/es6/persisters/persister-expo-sqlite-next.js +0 -1
  1568. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  1569. package/lib/es6/persisters/persister-expo-sqlite.js +0 -1
  1570. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  1571. package/lib/es6/persisters/persister-file.js +0 -1
  1572. package/lib/es6/persisters/persister-file.js.gz +0 -0
  1573. package/lib/es6/persisters/persister-indexed-db.js +0 -1
  1574. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  1575. package/lib/es6/persisters/persister-libsql.js +0 -1
  1576. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  1577. package/lib/es6/persisters/persister-partykit-client.js +0 -1
  1578. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  1579. package/lib/es6/persisters/persister-partykit-server.js +0 -1
  1580. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  1581. package/lib/es6/persisters/persister-powersync.js +0 -1
  1582. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  1583. package/lib/es6/persisters/persister-remote.js +0 -1
  1584. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  1585. package/lib/es6/persisters/persister-sqlite-wasm.js +0 -1
  1586. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  1587. package/lib/es6/persisters/persister-sqlite3.js +0 -1
  1588. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  1589. package/lib/es6/persisters/persister-yjs.js +0 -1
  1590. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  1591. package/lib/es6/persisters.js +0 -1
  1592. package/lib/es6/persisters.js.gz +0 -0
  1593. package/lib/es6/queries.js +0 -1
  1594. package/lib/es6/queries.js.gz +0 -0
  1595. package/lib/es6/relationships.js +0 -1
  1596. package/lib/es6/relationships.js.gz +0 -0
  1597. package/lib/es6/store.js +0 -1
  1598. package/lib/es6/store.js.gz +0 -0
  1599. package/lib/es6/synchronizers/synchronizer-local.js +0 -1
  1600. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  1601. package/lib/es6/synchronizers/synchronizer-ws-client.js +0 -1
  1602. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  1603. package/lib/es6/synchronizers/synchronizer-ws-server.js +0 -1
  1604. package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  1605. package/lib/es6/synchronizers.js +0 -1
  1606. package/lib/es6/synchronizers.js.gz +0 -0
  1607. package/lib/es6/tinybase.js +0 -1
  1608. package/lib/es6/tinybase.js.gz +0 -0
  1609. package/lib/es6/tools.js +0 -1
  1610. package/lib/es6/tools.js.gz +0 -0
  1611. package/lib/es6/ui-react-dom-debug.js +0 -1
  1612. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  1613. package/lib/es6/ui-react-dom.js +0 -1
  1614. package/lib/es6/ui-react-dom.js.gz +0 -0
  1615. package/lib/es6/ui-react.js +0 -1
  1616. package/lib/es6/ui-react.js.gz +0 -0
  1617. package/lib/indexes.js +0 -1
  1618. package/lib/indexes.js.gz +0 -0
  1619. package/lib/mergeable-store.js +0 -1
  1620. package/lib/mergeable-store.js.gz +0 -0
  1621. package/lib/metrics.js +0 -1
  1622. package/lib/metrics.js.gz +0 -0
  1623. package/lib/persisters/persister-automerge.js +0 -1
  1624. package/lib/persisters/persister-automerge.js.gz +0 -0
  1625. package/lib/persisters/persister-browser.js +0 -1
  1626. package/lib/persisters/persister-browser.js.gz +0 -0
  1627. package/lib/persisters/persister-cr-sqlite-wasm.js +0 -1
  1628. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  1629. package/lib/persisters/persister-electric-sql.js +0 -1
  1630. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  1631. package/lib/persisters/persister-expo-sqlite-next.js +0 -1
  1632. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  1633. package/lib/persisters/persister-expo-sqlite.js +0 -1
  1634. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  1635. package/lib/persisters/persister-file.js +0 -1
  1636. package/lib/persisters/persister-file.js.gz +0 -0
  1637. package/lib/persisters/persister-indexed-db.js +0 -1
  1638. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  1639. package/lib/persisters/persister-libsql.js +0 -1
  1640. package/lib/persisters/persister-libsql.js.gz +0 -0
  1641. package/lib/persisters/persister-partykit-client.js +0 -1
  1642. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  1643. package/lib/persisters/persister-partykit-server.js +0 -1
  1644. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  1645. package/lib/persisters/persister-powersync.js +0 -1
  1646. package/lib/persisters/persister-powersync.js.gz +0 -0
  1647. package/lib/persisters/persister-remote.js +0 -1
  1648. package/lib/persisters/persister-remote.js.gz +0 -0
  1649. package/lib/persisters/persister-sqlite-wasm.js +0 -1
  1650. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  1651. package/lib/persisters/persister-sqlite3.js +0 -1
  1652. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  1653. package/lib/persisters/persister-yjs.js +0 -1
  1654. package/lib/persisters/persister-yjs.js.gz +0 -0
  1655. package/lib/persisters.js +0 -1
  1656. package/lib/persisters.js.gz +0 -0
  1657. package/lib/queries.js +0 -1
  1658. package/lib/queries.js.gz +0 -0
  1659. package/lib/relationships.js +0 -1
  1660. package/lib/relationships.js.gz +0 -0
  1661. package/lib/store.js +0 -1
  1662. package/lib/store.js.gz +0 -0
  1663. package/lib/synchronizers/synchronizer-local.js +0 -1
  1664. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  1665. package/lib/synchronizers/synchronizer-ws-client.js +0 -1
  1666. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  1667. package/lib/synchronizers/synchronizer-ws-server.js +0 -1
  1668. package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
  1669. package/lib/synchronizers.js +0 -1
  1670. package/lib/synchronizers.js.gz +0 -0
  1671. package/lib/tinybase.js +0 -1
  1672. package/lib/tinybase.js.gz +0 -0
  1673. package/lib/tools.js +0 -1
  1674. package/lib/tools.js.gz +0 -0
  1675. package/lib/types/checkpoints.d.ts +0 -986
  1676. package/lib/types/common.d.ts +0 -106
  1677. package/lib/types/indexes.d.ts +0 -993
  1678. package/lib/types/mergeable-store.d.ts +0 -214
  1679. package/lib/types/metrics.d.ts +0 -856
  1680. package/lib/types/persisters/persister-automerge.d.ts +0 -149
  1681. package/lib/types/persisters/persister-browser.d.ts +0 -162
  1682. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +0 -145
  1683. package/lib/types/persisters/persister-electric-sql.d.ts +0 -168
  1684. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +0 -172
  1685. package/lib/types/persisters/persister-expo-sqlite.d.ts +0 -173
  1686. package/lib/types/persisters/persister-file.d.ts +0 -82
  1687. package/lib/types/persisters/persister-indexed-db.d.ts +0 -110
  1688. package/lib/types/persisters/persister-libsql.d.ts +0 -142
  1689. package/lib/types/persisters/persister-partykit-client.d.ts +0 -178
  1690. package/lib/types/persisters/persister-partykit-server.d.ts +0 -603
  1691. package/lib/types/persisters/persister-powersync.d.ts +0 -157
  1692. package/lib/types/persisters/persister-remote.d.ts +0 -107
  1693. package/lib/types/persisters/persister-sqlite-wasm.d.ts +0 -157
  1694. package/lib/types/persisters/persister-sqlite3.d.ts +0 -158
  1695. package/lib/types/persisters/persister-yjs.d.ts +0 -145
  1696. package/lib/types/persisters.d.ts +0 -1214
  1697. package/lib/types/queries.d.ts +0 -3506
  1698. package/lib/types/relationships.d.ts +0 -1242
  1699. package/lib/types/store.d.ts +0 -7042
  1700. package/lib/types/synchronizers/synchronizer-local.d.ts +0 -27
  1701. package/lib/types/synchronizers/synchronizer-ws-client.d.ts +0 -35
  1702. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +0 -36
  1703. package/lib/types/synchronizers.d.ts +0 -132
  1704. package/lib/types/tinybase.d.ts +0 -15
  1705. package/lib/types/tools.d.ts +0 -521
  1706. package/lib/types/ui-react-dom.d.ts +0 -1705
  1707. package/lib/types/ui-react.d.ts +0 -13845
  1708. package/lib/types/with-schemas/checkpoints.d.ts +0 -1078
  1709. package/lib/types/with-schemas/common.d.ts +0 -106
  1710. package/lib/types/with-schemas/indexes.d.ts +0 -1131
  1711. package/lib/types/with-schemas/internal/queries.d.ts +0 -16
  1712. package/lib/types/with-schemas/internal/store.d.ts +0 -106
  1713. package/lib/types/with-schemas/internal/ui-react.d.ts +0 -806
  1714. package/lib/types/with-schemas/mergeable-store.d.ts +0 -500
  1715. package/lib/types/with-schemas/metrics.d.ts +0 -936
  1716. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +0 -161
  1717. package/lib/types/with-schemas/persisters/persister-browser.d.ts +0 -184
  1718. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +0 -158
  1719. package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +0 -181
  1720. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +0 -185
  1721. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +0 -186
  1722. package/lib/types/with-schemas/persisters/persister-file.d.ts +0 -93
  1723. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +0 -122
  1724. package/lib/types/with-schemas/persisters/persister-libsql.d.ts +0 -155
  1725. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +0 -190
  1726. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +0 -651
  1727. package/lib/types/with-schemas/persisters/persister-powersync.d.ts +0 -170
  1728. package/lib/types/with-schemas/persisters/persister-remote.d.ts +0 -120
  1729. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +0 -171
  1730. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +0 -171
  1731. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +0 -157
  1732. package/lib/types/with-schemas/persisters.d.ts +0 -1302
  1733. package/lib/types/with-schemas/queries.d.ts +0 -3827
  1734. package/lib/types/with-schemas/relationships.d.ts +0 -1393
  1735. package/lib/types/with-schemas/store.d.ts +0 -8715
  1736. package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +0 -29
  1737. package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +0 -41
  1738. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +0 -36
  1739. package/lib/types/with-schemas/synchronizers.d.ts +0 -146
  1740. package/lib/types/with-schemas/tinybase.d.ts +0 -14
  1741. package/lib/types/with-schemas/tools.d.ts +0 -532
  1742. package/lib/types/with-schemas/ui-react-dom.d.ts +0 -1834
  1743. package/lib/types/with-schemas/ui-react.d.ts +0 -14763
  1744. package/lib/ui-react-dom.js +0 -1
  1745. package/lib/ui-react-dom.js.gz +0 -0
  1746. package/lib/ui-react.js +0 -1
  1747. package/lib/ui-react.js.gz +0 -0
  1748. package/lib/umd/checkpoints.js +0 -1
  1749. package/lib/umd/checkpoints.js.gz +0 -0
  1750. package/lib/umd/common.js +0 -1
  1751. package/lib/umd/common.js.gz +0 -0
  1752. package/lib/umd/indexes.js +0 -1
  1753. package/lib/umd/indexes.js.gz +0 -0
  1754. package/lib/umd/mergeable-store.js +0 -1
  1755. package/lib/umd/mergeable-store.js.gz +0 -0
  1756. package/lib/umd/metrics.js +0 -1
  1757. package/lib/umd/metrics.js.gz +0 -0
  1758. package/lib/umd/persisters/persister-automerge.js +0 -1
  1759. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  1760. package/lib/umd/persisters/persister-browser.js +0 -1
  1761. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  1762. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +0 -1
  1763. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  1764. package/lib/umd/persisters/persister-electric-sql.js +0 -1
  1765. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  1766. package/lib/umd/persisters/persister-expo-sqlite-next.js +0 -1
  1767. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  1768. package/lib/umd/persisters/persister-expo-sqlite.js +0 -1
  1769. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  1770. package/lib/umd/persisters/persister-file.js +0 -1
  1771. package/lib/umd/persisters/persister-file.js.gz +0 -0
  1772. package/lib/umd/persisters/persister-indexed-db.js +0 -1
  1773. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  1774. package/lib/umd/persisters/persister-libsql.js +0 -1
  1775. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  1776. package/lib/umd/persisters/persister-partykit-client.js +0 -1
  1777. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  1778. package/lib/umd/persisters/persister-partykit-server.js +0 -1
  1779. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  1780. package/lib/umd/persisters/persister-powersync.js +0 -1
  1781. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  1782. package/lib/umd/persisters/persister-remote.js +0 -1
  1783. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  1784. package/lib/umd/persisters/persister-sqlite-wasm.js +0 -1
  1785. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  1786. package/lib/umd/persisters/persister-sqlite3.js +0 -1
  1787. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  1788. package/lib/umd/persisters/persister-yjs.js +0 -1
  1789. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  1790. package/lib/umd/persisters.js +0 -1
  1791. package/lib/umd/persisters.js.gz +0 -0
  1792. package/lib/umd/queries.js +0 -1
  1793. package/lib/umd/queries.js.gz +0 -0
  1794. package/lib/umd/relationships.js +0 -1
  1795. package/lib/umd/relationships.js.gz +0 -0
  1796. package/lib/umd/store.js +0 -1
  1797. package/lib/umd/store.js.gz +0 -0
  1798. package/lib/umd/synchronizers/synchronizer-local.js +0 -1
  1799. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  1800. package/lib/umd/synchronizers/synchronizer-ws-client.js +0 -1
  1801. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  1802. package/lib/umd/synchronizers/synchronizer-ws-server.js +0 -1
  1803. package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
  1804. package/lib/umd/synchronizers.js +0 -1
  1805. package/lib/umd/synchronizers.js.gz +0 -0
  1806. package/lib/umd/tinybase.js +0 -1
  1807. package/lib/umd/tinybase.js.gz +0 -0
  1808. package/lib/umd/tools.js +0 -1
  1809. package/lib/umd/tools.js.gz +0 -0
  1810. package/lib/umd/ui-react-dom-debug.js +0 -1
  1811. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  1812. package/lib/umd/ui-react-dom.js +0 -1
  1813. package/lib/umd/ui-react-dom.js.gz +0 -0
  1814. package/lib/umd/ui-react.js +0 -1
  1815. package/lib/umd/ui-react.js.gz +0 -0
  1816. package/lib/umd-es6/checkpoints.js +0 -1
  1817. package/lib/umd-es6/checkpoints.js.gz +0 -0
  1818. package/lib/umd-es6/common.js +0 -1
  1819. package/lib/umd-es6/common.js.gz +0 -0
  1820. package/lib/umd-es6/indexes.js +0 -1
  1821. package/lib/umd-es6/indexes.js.gz +0 -0
  1822. package/lib/umd-es6/mergeable-store.js +0 -1
  1823. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  1824. package/lib/umd-es6/metrics.js +0 -1
  1825. package/lib/umd-es6/metrics.js.gz +0 -0
  1826. package/lib/umd-es6/persisters/persister-automerge.js +0 -1
  1827. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  1828. package/lib/umd-es6/persisters/persister-browser.js +0 -1
  1829. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  1830. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +0 -1
  1831. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  1832. package/lib/umd-es6/persisters/persister-electric-sql.js +0 -1
  1833. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  1834. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +0 -1
  1835. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  1836. package/lib/umd-es6/persisters/persister-expo-sqlite.js +0 -1
  1837. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  1838. package/lib/umd-es6/persisters/persister-file.js +0 -1
  1839. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  1840. package/lib/umd-es6/persisters/persister-indexed-db.js +0 -1
  1841. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  1842. package/lib/umd-es6/persisters/persister-libsql.js +0 -1
  1843. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  1844. package/lib/umd-es6/persisters/persister-partykit-client.js +0 -1
  1845. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  1846. package/lib/umd-es6/persisters/persister-partykit-server.js +0 -1
  1847. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  1848. package/lib/umd-es6/persisters/persister-powersync.js +0 -1
  1849. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  1850. package/lib/umd-es6/persisters/persister-remote.js +0 -1
  1851. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  1852. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +0 -1
  1853. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  1854. package/lib/umd-es6/persisters/persister-sqlite3.js +0 -1
  1855. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  1856. package/lib/umd-es6/persisters/persister-yjs.js +0 -1
  1857. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  1858. package/lib/umd-es6/persisters.js +0 -1
  1859. package/lib/umd-es6/persisters.js.gz +0 -0
  1860. package/lib/umd-es6/queries.js +0 -1
  1861. package/lib/umd-es6/queries.js.gz +0 -0
  1862. package/lib/umd-es6/relationships.js +0 -1
  1863. package/lib/umd-es6/relationships.js.gz +0 -0
  1864. package/lib/umd-es6/store.js +0 -1
  1865. package/lib/umd-es6/store.js.gz +0 -0
  1866. package/lib/umd-es6/synchronizers/synchronizer-local.js +0 -1
  1867. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  1868. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +0 -1
  1869. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  1870. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +0 -1
  1871. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  1872. package/lib/umd-es6/synchronizers.js +0 -1
  1873. package/lib/umd-es6/synchronizers.js.gz +0 -0
  1874. package/lib/umd-es6/tinybase.js +0 -1
  1875. package/lib/umd-es6/tinybase.js.gz +0 -0
  1876. package/lib/umd-es6/tools.js +0 -1
  1877. package/lib/umd-es6/tools.js.gz +0 -0
  1878. package/lib/umd-es6/ui-react-dom-debug.js +0 -1
  1879. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  1880. package/lib/umd-es6/ui-react-dom.js +0 -1
  1881. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  1882. package/lib/umd-es6/ui-react.js +0 -1
  1883. package/lib/umd-es6/ui-react.js.gz +0 -0
  1884. /package/{lib/debug/checkpoints.js → checkpoints/index.js} +0 -0
@@ -0,0 +1,4017 @@
1
+ /**
2
+ * The queries module of the TinyBase project provides the ability to create and
3
+ * track queries of the data in Store objects.
4
+ *
5
+ * The main entry point to using the queries module is the createQueries
6
+ * function, which returns a new Queries object. That object in turn has methods
7
+ * that let you create new query definitions, access their results directly, and
8
+ * register listeners for when those results change.
9
+ * @packageDocumentation
10
+ * @module queries
11
+ * @since v2.0.0
12
+ */
13
+
14
+ import type {
15
+ Cell,
16
+ CellOrUndefined,
17
+ GetCell,
18
+ NoTablesSchema,
19
+ OptionalSchemas,
20
+ OptionalTablesSchema,
21
+ Store,
22
+ } from '../../store/with-schemas/index.d.ts';
23
+ import type {
24
+ CellIdFromSchema,
25
+ TableIdFromSchema,
26
+ } from '../../_internal/store/with-schemas/index.d.ts';
27
+ import type {
28
+ GetResultCell,
29
+ JoinedCellIdOrId,
30
+ } from '../../_internal/queries/with-schemas/index.d.ts';
31
+ import type {Id, IdOrNull, Ids} from '../../common/with-schemas/index.d.ts';
32
+ import type {GetIdChanges} from '../../store/index.d.ts';
33
+
34
+ /**
35
+ * The ResultTable type is the data structure representing the results of a
36
+ * query.
37
+ *
38
+ * A ResultTable is typically accessed with the getResultTable method or
39
+ * addResultTableListener method. It is similar to the Table type in the store
40
+ * module, but without schema-specific typing, and is a regular JavaScript
41
+ * object containing individual ResultRow objects, keyed by their Id.
42
+ * @example
43
+ * ```js
44
+ * import type {ResultTable} from 'tinybase';
45
+ *
46
+ * export const resultTable: ResultTable = {
47
+ * fido: {species: 'dog', color: 'brown'},
48
+ * felix: {species: 'cat'},
49
+ * };
50
+ * ```
51
+ * @category Result
52
+ * @since v2.0.0
53
+ */
54
+ export type ResultTable = {[rowId: Id]: ResultRow};
55
+
56
+ /**
57
+ * The ResultRow type is the data structure representing a single row in the
58
+ * results of a query.
59
+ *
60
+ * A ResultRow is typically accessed with the getResultRow method or
61
+ * addResultRowListener method. It is similar to the Row type in the store
62
+ * module, but without schema-specific typing, and is a regular JavaScript
63
+ * object containing individual ResultCell objects, keyed by their Id.
64
+ * @example
65
+ * ```js
66
+ * import type {ResultRow} from 'tinybase';
67
+ *
68
+ * export const resultRow: ResultRow = {species: 'dog', color: 'brown'};
69
+ * ```
70
+ * @category Result
71
+ * @since v2.0.0
72
+ */
73
+ export type ResultRow = {[cellId: Id]: ResultCell};
74
+
75
+ /**
76
+ * The ResultCell type is the data structure representing a single cell in the
77
+ * results of a query.
78
+ *
79
+ * A ResultCell is typically accessed with the getResultCell method or
80
+ * addResultCellListener method. It is similar to the Cell type in the store
81
+ * module, but without schema-specific typing, and is a JavaScript string,
82
+ * number, or boolean.
83
+ * @example
84
+ * ```js
85
+ * import type {ResultCell} from 'tinybase';
86
+ *
87
+ * export const resultCell: ResultCell = 'dog';
88
+ * ```
89
+ * @category Result
90
+ * @since v2.0.0
91
+ */
92
+ export type ResultCell = string | number | boolean;
93
+
94
+ /**
95
+ * The ResultCellOrUndefined type is the data structure representing a single
96
+ * cell in the results of a query, or the value `undefined`.
97
+ * @category Result
98
+ * @since v2.0.0
99
+ */
100
+ export type ResultCellOrUndefined = ResultCell | undefined;
101
+
102
+ /**
103
+ * The Aggregate type describes a custom function that takes an array of Cell
104
+ * values and returns an aggregate of them.
105
+ *
106
+ * There are a number of common predefined aggregators, such as for counting,
107
+ * summing, and averaging values. This type is instead used for when you wish to
108
+ * use a more complex aggregation of your own devising.
109
+ * @param cells The array of Cell values to be aggregated.
110
+ * @param length The length of the array of Cell values to be aggregated.
111
+ * @returns The value of the aggregation.
112
+ * @category Aggregators
113
+ * @since v2.0.0
114
+ */
115
+ export type Aggregate = (cells: ResultCell[], length: number) => ResultCell;
116
+
117
+ /**
118
+ * The AggregateAdd type describes a function that can be used to optimize a
119
+ * custom Aggregate by providing a shortcut for when a single value is added to
120
+ * the input values.
121
+ *
122
+ * Some aggregation functions do not need to recalculate the aggregation of the
123
+ * whole set when one value changes. For example, when adding a new number to a
124
+ * series, the new sum of the series is the new value added to the previous sum.
125
+ *
126
+ * If it is not possible to shortcut the aggregation based on just one value
127
+ * being added, return `undefined` and the aggregation will be completely
128
+ * recalculated.
129
+ *
130
+ * When possible, if you are providing a custom Aggregate, seek an
131
+ * implementation of an AggregateAdd function that can reduce the complexity
132
+ * cost of growing the input data set.
133
+ * @param current The current value of the aggregation.
134
+ * @param add The Cell value being added to the aggregation.
135
+ * @param length The length of the array of Cell values in the aggregation.
136
+ * @returns The new value of the aggregation.
137
+ * @category Aggregators
138
+ * @since v2.0.0
139
+ */
140
+ export type AggregateAdd = (
141
+ current: ResultCell,
142
+ add: ResultCell,
143
+ length: number,
144
+ ) => ResultCellOrUndefined;
145
+
146
+ /**
147
+ * The AggregateRemove type describes a function that can be used to optimize a
148
+ * custom Aggregate by providing a shortcut for when a single value is removed
149
+ * from the input values.
150
+ *
151
+ * Some aggregation functions do not need to recalculate the aggregation of the
152
+ * whole set when one value changes. For example, when removing a number from a
153
+ * series, the new sum of the series is the new value subtracted from the
154
+ * previous sum.
155
+ *
156
+ * If it is not possible to shortcut the aggregation based on just one value
157
+ * being removed, return `undefined` and the aggregation will be completely
158
+ * recalculated. One example might be if you were taking the minimum of the
159
+ * values, and the previous minimum is being removed. The whole of the rest of
160
+ * the list will need to be re-scanned to find a new minimum.
161
+ *
162
+ * When possible, if you are providing a custom Aggregate, seek an
163
+ * implementation of an AggregateRemove function that can reduce the complexity
164
+ * cost of shrinking the input data set.
165
+ * @param current The current value of the aggregation.
166
+ * @param remove The Cell value being removed from the aggregation.
167
+ * @param length The length of the array of Cell values in the aggregation.
168
+ * @returns The new value of the aggregation.
169
+ * @category Aggregators
170
+ * @since v2.0.0
171
+ */
172
+ export type AggregateRemove = (
173
+ current: ResultCell,
174
+ remove: ResultCell,
175
+ length: number,
176
+ ) => ResultCellOrUndefined;
177
+
178
+ /**
179
+ * The AggregateReplace type describes a function that can be used to optimize a
180
+ * custom Aggregate by providing a shortcut for when a single value in the input
181
+ * values is replaced with another.
182
+ *
183
+ * Some aggregation functions do not need to recalculate the aggregation of the
184
+ * whole set when one value changes. For example, when replacing a number in a
185
+ * series, the new sum of the series is the previous sum, plus the new value,
186
+ * minus the old value.
187
+ *
188
+ * If it is not possible to shortcut the aggregation based on just one value
189
+ * changing, return `undefined` and the aggregation will be completely
190
+ * recalculated.
191
+ *
192
+ * When possible, if you are providing a custom Aggregate, seek an
193
+ * implementation of an AggregateReplace function that can reduce the complexity
194
+ * cost of changing the input data set in place.
195
+ * @param current The current value of the aggregation.
196
+ * @param add The Cell value being added to the aggregation.
197
+ * @param remove The Cell value being removed from the aggregation.
198
+ * @param length The length of the array of Cell values in the aggregation.
199
+ * @returns The new value of the aggregation.
200
+ * @category Aggregators
201
+ * @since v2.0.0
202
+ */
203
+ export type AggregateReplace = (
204
+ current: ResultCell,
205
+ add: ResultCell,
206
+ remove: ResultCell,
207
+ length: number,
208
+ ) => ResultCellOrUndefined;
209
+
210
+ /**
211
+ * The QueryCallback type describes a function that takes a query's Id.
212
+ *
213
+ * A QueryCallback is provided when using the forEachQuery method, so that you
214
+ * can do something based on every query in the Queries object. See that method
215
+ * for specific examples.
216
+ * @param queryId The Id of the query that the callback can operate on.
217
+ * @category Callback
218
+ * @since v2.0.0
219
+ */
220
+ export type QueryCallback = (queryId: Id) => void;
221
+
222
+ /**
223
+ * The ResultTableCallback type describes a function that takes a ResultTable's
224
+ * Id and a callback to loop over each ResultRow within it.
225
+ *
226
+ * A ResultTableCallback is provided when using the forEachResultTable method,
227
+ * so that you can do something based on every ResultTable in the Queries
228
+ * object. See that method for specific examples.
229
+ * @param tableId The Id of the ResultTable that the callback can operate on.
230
+ * @param forEachRow A function that will let you iterate over the ResultRow
231
+ * objects in this ResultTable.
232
+ * @category Callback
233
+ * @since v2.0.0
234
+ */
235
+ export type ResultTableCallback = (
236
+ tableId: Id,
237
+ forEachRow: (rowCallback: ResultRowCallback) => void,
238
+ ) => void;
239
+
240
+ /**
241
+ * The ResultRowCallback type describes a function that takes a ResultRow's Id
242
+ * and a callback to loop over each ResultCell within it.
243
+ *
244
+ * A ResultRowCallback is provided when using the forEachResultRow method, so
245
+ * that you can do something based on every ResultRow in a ResultTable. See that
246
+ * method for specific examples.
247
+ * @param rowId The Id of the ResultRow that the callback can operate on.
248
+ * @param forEachRow A function that will let you iterate over the ResultCell
249
+ * values in this ResultRow.
250
+ * @category Callback
251
+ * @since v2.0.0
252
+ */
253
+ export type ResultRowCallback = (
254
+ rowId: Id,
255
+ forEachCell: (cellCallback: ResultCellCallback) => void,
256
+ ) => void;
257
+
258
+ /**
259
+ * The ResultCellCallback type describes a function that takes a ResultCell's Id
260
+ * and its value.
261
+ *
262
+ * A ResultCellCallback is provided when using the forEachResultCell method, so
263
+ * that you can do something based on every ResultCell in a ResultRow. See that
264
+ * method for specific examples.
265
+ * @param cellId The Id of the ResultCell that the callback can operate on.
266
+ * @param cell The value of the ResultCell.
267
+ * @category Callback
268
+ * @since v2.0.0
269
+ */
270
+ export type ResultCellCallback = (cellId: Id, cell: ResultCell) => void;
271
+
272
+ /**
273
+ * The QueryIdsListener type describes a function that is used to listen
274
+ * to Query definitions being added or removed.
275
+ *
276
+ * This has schema-based typing. The following is a simplified representation:
277
+ *
278
+ * ```ts override
279
+ * (queries: Queries) => void;
280
+ * ```
281
+ *
282
+ * A QueryIdsListener is provided when using the
283
+ * addQueryIdsListener method. See that method for specific examples.
284
+ *
285
+ * When called, a QueryIdsListener is given a reference to the
286
+ * Queries object.
287
+ * @param queries A reference to the Queries object that changed.
288
+ * @category Listener
289
+ * @since v2.0.0
290
+ */
291
+ export type QueryIdsListener<Schemas extends OptionalSchemas> = (
292
+ queries: Queries<Schemas>,
293
+ ) => void;
294
+
295
+ /**
296
+ * The ResultTableListener type describes a function that is used to listen to
297
+ * changes to a query's ResultTable.
298
+ *
299
+ * This has schema-based typing. The following is a simplified representation:
300
+ *
301
+ * ```ts override
302
+ * (
303
+ * queries: Queries,
304
+ * tableId: Id,
305
+ * getCellChange: GetResultCellChange,
306
+ * ) => void;
307
+ * ```
308
+ *
309
+ * A ResultTableListener is provided when using the addResultTableListener
310
+ * method. See that method for specific examples.
311
+ *
312
+ * When called, a ResultTableListener is given a reference to the Queries
313
+ * object, the Id of the ResultTable that changed (which is the same as the
314
+ * query Id), and a GetResultCellChange function that can be used to query
315
+ * ResultCell values before and after the change.
316
+ *
317
+ * You can create new query definitions within the body of this listener, though
318
+ * obviously be aware of the possible cascading effects of doing so.
319
+ * @param queries A reference to the Queries object that changed.
320
+ * @param tableId The Id of the ResultTable that changed, which is also the
321
+ * query Id.
322
+ * @param getCellChange A function that returns information about any
323
+ * ResultCell's changes.
324
+ * @category Listener
325
+ * @since v2.0.0
326
+ */
327
+ export type ResultTableListener<Schemas extends OptionalSchemas> = (
328
+ queries: Queries<Schemas>,
329
+ tableId: Id,
330
+ getCellChange: GetResultCellChange,
331
+ ) => void;
332
+
333
+ /**
334
+ * The ResultTableCellIdsListener type describes a function that is used to
335
+ * listen to changes to the Cell Ids that appear anywhere in a query's
336
+ * ResultTable.
337
+ *
338
+ * This has schema-based typing. The following is a simplified representation:
339
+ *
340
+ * ```ts override
341
+ * (
342
+ * queries: Queries,
343
+ * tableId: Id,
344
+ * getIdChanges: GetIdChanges | undefined,
345
+ * ) => void;
346
+ * ```
347
+ *
348
+ * A ResultTableCellIdsListener is provided when using the
349
+ * addResultTableCellIdsListener method. See that method for specific examples.
350
+ *
351
+ * When called, a ResultTableCellIdsListener is given a reference to the Queries
352
+ * object, and the Id of the ResultTable whose Cell Ids changed (which is the
353
+ * same as the query Id).
354
+ *
355
+ * You can create new query definitions within the body of this listener, though
356
+ * obviously be aware of the possible cascading effects of doing so.
357
+ * @param queries A reference to the Queries object that changed.
358
+ * @param tableId The Id of the ResultTable that changed, which is also the
359
+ * query Id.
360
+ * @category Listener
361
+ * @since v4.1.0
362
+ */
363
+ export type ResultTableCellIdsListener<Schemas extends OptionalSchemas> = (
364
+ queries: Queries<Schemas>,
365
+ tableId: Id,
366
+ getIdChanges: GetIdChanges | undefined,
367
+ ) => void;
368
+
369
+ /**
370
+ * The ResultRowCountListener type describes a function that is used to listen
371
+ * to changes to the number of ResultRow objects in a query's ResultTable.
372
+ *
373
+ * This has schema-based typing. The following is a simplified representation:
374
+ *
375
+ * ```ts override
376
+ * (
377
+ * queries: Queries,
378
+ * tableId: Id,
379
+ * count: number,
380
+ * ) => void;
381
+ * ```
382
+ *
383
+ * A ResultRowCountListener is provided when using the addResultRowCountListener
384
+ * method. See that method for specific examples.
385
+ *
386
+ * When called, a ResultRowCountListener is given a reference to the Queries
387
+ * object, the Id of the ResultTable whose ResultRow Ids changed (which is the
388
+ * same as the query Id), and the count of ResultRow objects in the ResultTable.
389
+ *
390
+ * You can create new query definitions within the body of this listener, though
391
+ * obviously be aware of the possible cascading effects of doing so.
392
+ * @param queries A reference to the Queries object that changed.
393
+ * @param tableId The Id of the ResultTable that changed, which is also the
394
+ * query Id.
395
+ * @param count The number of ResultRow objects in the ResultTable.
396
+ * @category Listener
397
+ * @since v4.1.0
398
+ */
399
+ export type ResultRowCountListener<Schemas extends OptionalSchemas> = (
400
+ queries: Queries<Schemas>,
401
+ tableId: Id,
402
+ count: number,
403
+ ) => void;
404
+
405
+ /**
406
+ * The ResultRowIdsListener type describes a function that is used to listen to
407
+ * changes to the ResultRow Ids in a query's ResultTable.
408
+ *
409
+ * This has schema-based typing. The following is a simplified representation:
410
+ *
411
+ * ```ts override
412
+ * (
413
+ * queries: Queries,
414
+ * tableId: Id,
415
+ * getIdChanges: GetIdChanges | undefined,
416
+ * ) => void;
417
+ * ```
418
+ *
419
+ * A ResultRowIdsListener is provided when using the addResultRowIdsListener
420
+ * method. See that method for specific examples.
421
+ *
422
+ * When called, a ResultRowIdsListener is given a reference to the Queries
423
+ * object, and the Id of the ResultTable whose ResultRow Ids changed (which is
424
+ * the same as the query Id).
425
+ *
426
+ * You can create new query definitions within the body of this listener, though
427
+ * obviously be aware of the possible cascading effects of doing so.
428
+ * @param queries A reference to the Queries object that changed.
429
+ * @param tableId The Id of the ResultTable that changed, which is also the
430
+ * query Id.
431
+ * @category Listener
432
+ * @since v2.0.0
433
+ */
434
+ export type ResultRowIdsListener<Schemas extends OptionalSchemas> = (
435
+ queries: Queries<Schemas>,
436
+ tableId: Id,
437
+ getIdChanges: GetIdChanges | undefined,
438
+ ) => void;
439
+
440
+ /**
441
+ * The ResultSortedRowIdsListener type describes a function that is used to
442
+ * listen to changes to the sorted ResultRow Ids in a query's ResultTable.
443
+ *
444
+ * This has schema-based typing. The following is a simplified representation:
445
+ *
446
+ * ```ts override
447
+ * (
448
+ * queries: Queries,
449
+ * tableId: Id,
450
+ * cellId: Id | undefined,
451
+ * descending: boolean,
452
+ * offset: number,
453
+ * limit: number | undefined,
454
+ * sortedRowIds: Ids,
455
+ * ) => void;
456
+ * ```
457
+ *
458
+ * A ResultSortedRowIdsListener is provided when using the
459
+ * addResultSortedRowIdsListener method. See that method for specific examples.
460
+ *
461
+ * When called, a ResultSortedRowIdsListener is given a reference to the Queries
462
+ * object, the Id of the ResultTable whose ResultRow Ids changed (which is the
463
+ * same as the query Id), the ResultCell Id being used to sort them, whether
464
+ * descending or not, and the offset and limit of the number of Ids returned,
465
+ * for pagination purposes. It also receives the sorted array of Ids itself, so
466
+ * that you can use them in the listener without the additional cost of an
467
+ * explicit call to getResultSortedRowIds.
468
+ *
469
+ * You can create new query definitions within the body of this listener, though
470
+ * obviously be aware of the possible cascading effects of doing so.
471
+ * @param queries A reference to the Queries object that changed.
472
+ * @param tableId The Id of the ResultTable that changed, which is also the
473
+ * query Id.
474
+ * @param cellId The Id of the ResultCell whose values were used for the
475
+ * sorting.
476
+ * @param descending Whether the sorting was in descending order.
477
+ * @param offset The number of ResultRow Ids skipped.
478
+ * @param limit The maximum number of ResultRow Ids returned.
479
+ * @param sortedRowIds The sorted ResultRow Ids themselves.
480
+ * @category Listener
481
+ * @since v2.0.0
482
+ */
483
+ export type ResultSortedRowIdsListener<Schemas extends OptionalSchemas> = (
484
+ queries: Queries<Schemas>,
485
+ tableId: Id,
486
+ cellId: Id | undefined,
487
+ descending: boolean,
488
+ offset: number,
489
+ limit: number | undefined,
490
+ sortedRowIds: Ids,
491
+ ) => void;
492
+
493
+ /**
494
+ * The ResultRowListener type describes a function that is used to listen to
495
+ * changes to a ResultRow in a query's ResultTable.
496
+ *
497
+ * This has schema-based typing. The following is a simplified representation:
498
+ *
499
+ * ```ts override
500
+ * (
501
+ * queries: Queries,
502
+ * tableId: Id,
503
+ * rowId: Id,
504
+ * getCellChange: GetResultCellChange,
505
+ * ) => void;
506
+ * ```
507
+ *
508
+ * A ResultRowListener is provided when using the addResultRowListener method.
509
+ * See that method for specific examples.
510
+ *
511
+ * When called, a ResultRowListener is given a reference to the Queries object,
512
+ * the Id of the ResultTable that changed (which is the same as the query Id),
513
+ * the Id of the ResultRow that changed, and a GetResultCellChange function that
514
+ * can be used to query ResultCell values before and after the change.
515
+ *
516
+ * You can create new query definitions within the body of this listener, though
517
+ * obviously be aware of the possible cascading effects of doing so.
518
+ * @param queries A reference to the Queries object that changed.
519
+ * @param tableId The Id of the ResultTable that changed, which is also the
520
+ * query Id.
521
+ * @param rowId The Id of the ResultRow that changed.
522
+ * @param getCellChange A function that returns information about any
523
+ * ResultCell's changes.
524
+ * @category Listener
525
+ * @since v2.0.0
526
+ */
527
+ export type ResultRowListener<Schemas extends OptionalSchemas> = (
528
+ queries: Queries<Schemas>,
529
+ tableId: Id,
530
+ rowId: Id,
531
+ getCellChange: GetResultCellChange,
532
+ ) => void;
533
+
534
+ /**
535
+ * The ResultCellIdsListener type describes a function that is used to listen to
536
+ * changes to the ResultCell Ids in a ResultRow in a query's ResultTable.
537
+ *
538
+ * This has schema-based typing. The following is a simplified representation:
539
+ *
540
+ * ```ts override
541
+ * (
542
+ * queries: Queries,
543
+ * tableId: Id,
544
+ * rowId: Id,
545
+ * getIdChanges: GetIdChanges | undefined,
546
+ * ) => void;
547
+ * ```
548
+ *
549
+ * A ResultCellIdsListener is provided when using the addResultCellIdsListener
550
+ * method. See that method for specific examples.
551
+ *
552
+ * When called, a ResultCellIdsListener is given a reference to the Queries
553
+ * object, the Id of the ResultTable that changed (which is the same as the
554
+ * query Id), and the Id of the ResultRow whose ResultCell Ids changed.
555
+ *
556
+ * You can create new query definitions within the body of this listener, though
557
+ * obviously be aware of the possible cascading effects of doing so.
558
+ * @param queries A reference to the Queries object that changed.
559
+ * @param tableId The Id of the ResultTable that changed, which is also the
560
+ * query Id.
561
+ * @param rowId The Id of the ResultRow that changed.
562
+ * @category Listener
563
+ * @since v2.0.0
564
+ */
565
+ export type ResultCellIdsListener<Schemas extends OptionalSchemas> = (
566
+ queries: Queries<Schemas>,
567
+ tableId: Id,
568
+ rowId: Id,
569
+ getIdChanges: GetIdChanges | undefined,
570
+ ) => void;
571
+
572
+ /**
573
+ * The ResultCellListener type describes a function that is used to listen to
574
+ * changes to a ResultCell in a query's ResultTable.
575
+ *
576
+ * This has schema-based typing. The following is a simplified representation:
577
+ *
578
+ * ```ts override
579
+ * (
580
+ * queries: Queries,
581
+ * tableId: Id,
582
+ * rowId: Id,
583
+ * cellId: Id,
584
+ * newCell: ResultCell,
585
+ * oldCell: ResultCell,
586
+ * getCellChange: GetResultCellChange,
587
+ * ) => void;
588
+ * ```
589
+ *
590
+ * A ResultCellListener is provided when using the addResultCellListener method.
591
+ * See that method for specific examples.
592
+ *
593
+ * When called, a ResultCellListener is given a reference to the Queries object,
594
+ * the Id of the ResultTable that changed (which is the same as the query Id),
595
+ * the Id of the ResultRow that changed, and the Id of ResultCell that changed.
596
+ * It is also given the new value of the ResultCell, the old value of the
597
+ * ResultCell, and a GetResultCellChange function that can be used to query
598
+ * ResultCell values before and after the change.
599
+ *
600
+ * You can create new query definitions within the body of this listener, though
601
+ * obviously be aware of the possible cascading effects of doing so.
602
+ * @param queries A reference to the Queries object that changed.
603
+ * @param tableId The Id of the ResultTable that changed, which is also the
604
+ * query Id.
605
+ * @param rowId The Id of the ResultRow that changed.
606
+ * @param cellId The Id of the ResultCell that changed.
607
+ * @param newCell The new value of the ResultCell that changed.
608
+ * @param oldCell The old value of the ResultCell that changed.
609
+ * @param getCellChange A function that returns information about any
610
+ * ResultCell's changes.
611
+ * @category Listener
612
+ * @since v2.0.0
613
+ */
614
+ export type ResultCellListener<Schemas extends OptionalSchemas> = (
615
+ queries: Queries<Schemas>,
616
+ tableId: Id,
617
+ rowId: Id,
618
+ cellId: Id,
619
+ newCell: ResultCell,
620
+ oldCell: ResultCell,
621
+ getCellChange: GetResultCellChange,
622
+ ) => void;
623
+
624
+ /**
625
+ * The GetResultCellChange type describes a function that returns information
626
+ * about any ResultCell's changes during a transaction.
627
+ *
628
+ * A GetResultCellChange function is provided to every listener when called due
629
+ * the Store changing. The listener can then fetch the previous value of a
630
+ * ResultCell before the current transaction, the new value after it, and a
631
+ * convenience flag that indicates that the value has changed.
632
+ * @param tableId The Id of the ResultTable to inspect.
633
+ * @param rowId The Id of the ResultRow to inspect.
634
+ * @param cellId The Id of the ResultCell to inspect.
635
+ * @returns A ResultCellChange array containing information about the
636
+ * ResultCell's changes.
637
+ * @category Listener
638
+ * @since v2.0.0
639
+ */
640
+ export type GetResultCellChange = (
641
+ tableId: Id,
642
+ rowId: Id,
643
+ cellId: Id,
644
+ ) => ResultCellChange;
645
+
646
+ /**
647
+ * The ResultCellChange type describes a ResultCell's changes during a
648
+ * transaction.
649
+ *
650
+ * This is returned by the GetResultCellChange function that is provided to
651
+ * every listener when called. This array contains the previous value of a
652
+ * ResultCell before the current transaction, the new value after it, and a
653
+ * convenience flag that indicates that the value has changed.
654
+ * @category Listener
655
+ * @since v2.0.0
656
+ */
657
+ export type ResultCellChange = [
658
+ changed: boolean,
659
+ oldCell: ResultCellOrUndefined,
660
+ newCell: ResultCellOrUndefined,
661
+ ];
662
+
663
+ /**
664
+ * The QueriesListenerStats type describes the number of listeners registered
665
+ * with the Queries object, and can be used for debugging purposes.
666
+ *
667
+ * A QueriesListenerStats object is returned from the getListenerStats method.
668
+ * @category Development
669
+ * @since v2.0.0
670
+ */
671
+ export type QueriesListenerStats = {
672
+ /**
673
+ * The number of ResultTableListener functions registered with the Queries
674
+ * object.
675
+ * @category Stat
676
+ * @since v2.0.0
677
+ */
678
+ table: number;
679
+ /**
680
+ * The number of ResultTableCellIdsListener functions registered with the
681
+ * Queries object, since v3.3.
682
+ * @category Stat
683
+ * @since v2.0.0
684
+ */
685
+ tableCellIds: number;
686
+ /**
687
+ * The number of ResultRowCountListener functions registered with the Queries
688
+ * object, since v4.1.
689
+ * @category Stat
690
+ * @since v2.0.0
691
+ */
692
+ rowCount: number;
693
+ /**
694
+ * The number of ResultRowIdsListener functions registered with the Queries
695
+ * object.
696
+ * @category Stat
697
+ * @since v2.0.0
698
+ */
699
+ rowIds: number;
700
+ /**
701
+ * The number of SortedRowIdsListener functions registered with the Queries
702
+ * object.
703
+ * @category Stat
704
+ * @since v2.0.0
705
+ */
706
+ sortedRowIds: number;
707
+ /**
708
+ * The number of ResultRowListener functions registered with the Queries
709
+ * object.
710
+ * @category Stat
711
+ * @since v2.0.0
712
+ */
713
+ row: number;
714
+ /**
715
+ * The number of ResultCellIdsListener functions registered with the Queries
716
+ * object.
717
+ * @category Stat
718
+ * @since v2.0.0
719
+ */
720
+ cellIds: number;
721
+ /**
722
+ * The number of ResultCellListener functions registered with the Queries
723
+ * object.
724
+ * @category Stat
725
+ * @since v2.0.0
726
+ */
727
+ cell: number;
728
+ };
729
+
730
+ /**
731
+ * The GetTableCell type describes a function that takes a Id and returns the
732
+ * Cell value for a particular Row, optionally in a joined Table.
733
+ *
734
+ * A GetTableCell can be provided when setting query definitions, specifically
735
+ * in the Select and Where clauses when you want to create or filter on
736
+ * calculated values. See those methods for specific examples.
737
+ * @category Callback
738
+ * @since v2.0.0
739
+ */
740
+ export type GetTableCell<
741
+ Schema extends OptionalTablesSchema,
742
+ RootTableId extends TableIdFromSchema<Schema>,
743
+ > = {
744
+ /**
745
+ * When called with one parameter, this function will return the value of
746
+ * the specified Cell from the query's root Table for the Row being selected
747
+ * or filtered.
748
+ * @param cellId The Id of the Cell to fetch the value for.
749
+ * @returns A Cell value or `undefined`.
750
+ * @category Callback
751
+ * @since v2.0.0
752
+ */
753
+ <RootCellId extends CellIdFromSchema<Schema, RootTableId>>(
754
+ cellId: RootCellId,
755
+ ): CellOrUndefined<Schema, RootTableId, RootCellId>;
756
+ /**
757
+ * When called with two parameters, this function will return the value of
758
+ * the specified Cell from a Table that has been joined in the query, for
759
+ * the Row being selected or filtered.
760
+ * @param joinedTableId The Id of the Table to fetch the value from. If the
761
+ * underlying Table was joined 'as' a different Id, that should instead be
762
+ * used.
763
+ * @param joinedCellId The Id of the Cell to fetch the value for.
764
+ * @returns A Cell value or `undefined`.
765
+ * @category Callback
766
+ * @since v2.0.0
767
+ */
768
+ <
769
+ JoinedTableId extends TableIdFromSchema<Schema> | Id,
770
+ JoinedCellId extends JoinedCellIdOrId<
771
+ Schema,
772
+ JoinedTableId
773
+ > = JoinedCellIdOrId<Schema, JoinedTableId>,
774
+ >(
775
+ joinedTableId: JoinedTableId,
776
+ joinedCellId: JoinedCellId,
777
+ ):
778
+ | (JoinedTableId extends TableIdFromSchema<Schema>
779
+ ? Cell<Schema, JoinedTableId, JoinedCellId>
780
+ : Cell<any, any, any>)
781
+ | undefined;
782
+ };
783
+
784
+ /**
785
+ * The Select type describes a function that lets you specify a Cell or
786
+ * calculated value for including into the query's result.
787
+ *
788
+ * The Select function is provided to the third `query` parameter of the
789
+ * setQueryDefinition method. A query definition must call the Select function
790
+ * at least once, otherwise it will be meaningless and return no data.
791
+ * @example
792
+ * This example shows a query that selects two Cells from the main query Table.
793
+ *
794
+ * ```js
795
+ * import {createQueries, createStore} from 'tinybase';
796
+ *
797
+ * const store = createStore().setTable('pets', {
798
+ * fido: {species: 'dog', color: 'brown', legs: 4},
799
+ * felix: {species: 'cat', color: 'black', legs: 4},
800
+ * cujo: {species: 'dog', color: 'black', legs: 4},
801
+ * });
802
+ *
803
+ * const queries = createQueries(store);
804
+ * queries.setQueryDefinition('query', 'pets', ({select}) => {
805
+ * select('species');
806
+ * select('color');
807
+ * });
808
+ *
809
+ * queries.forEachResultRow('query', (rowId) => {
810
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
811
+ * });
812
+ * // -> {fido: {species: 'dog', color: 'brown'}}
813
+ * // -> {felix: {species: 'cat', color: 'black'}}
814
+ * // -> {cujo: {species: 'dog', color: 'black'}}
815
+ * ```
816
+ * @example
817
+ * This example shows a query that selects two Cells, one from a joined Table.
818
+ *
819
+ * ```js
820
+ * import {createQueries, createStore} from 'tinybase';
821
+ *
822
+ * const store = createStore()
823
+ * .setTable('pets', {
824
+ * fido: {species: 'dog', ownerId: '1'},
825
+ * felix: {species: 'cat', ownerId: '2'},
826
+ * cujo: {species: 'dog', ownerId: '3'},
827
+ * })
828
+ * .setTable('owners', {
829
+ * '1': {name: 'Alice'},
830
+ * '2': {name: 'Bob'},
831
+ * '3': {name: 'Carol'},
832
+ * });
833
+ *
834
+ * const queries = createQueries(store);
835
+ * queries.setQueryDefinition('query', 'pets', ({select, join}) => {
836
+ * select('species');
837
+ * select('owners', 'name');
838
+ * // from pets
839
+ * join('owners', 'ownerId');
840
+ * });
841
+ *
842
+ * queries.forEachResultRow('query', (rowId) => {
843
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
844
+ * });
845
+ * // -> {fido: {species: 'dog', name: 'Alice'}}
846
+ * // -> {felix: {species: 'cat', name: 'Bob'}}
847
+ * // -> {cujo: {species: 'dog', name: 'Carol'}}
848
+ * ```
849
+ * @example
850
+ * This example shows a query that calculates a value from two underlying Cells.
851
+ *
852
+ * ```js
853
+ * import {createQueries, createStore} from 'tinybase';
854
+ *
855
+ * const store = createStore()
856
+ * .setTable('pets', {
857
+ * fido: {species: 'dog', ownerId: '1'},
858
+ * felix: {species: 'cat', ownerId: '2'},
859
+ * cujo: {species: 'dog', ownerId: '3'},
860
+ * })
861
+ * .setTable('owners', {
862
+ * '1': {name: 'Alice'},
863
+ * '2': {name: 'Bob'},
864
+ * '3': {name: 'Carol'},
865
+ * });
866
+ *
867
+ * const queries = createQueries(store);
868
+ * queries.setQueryDefinition('query', 'pets', ({select, join}) => {
869
+ * select(
870
+ * (getTableCell) =>
871
+ * `${getTableCell('species')} for ${getTableCell('owners', 'name')}`,
872
+ * ).as('description');
873
+ * join('owners', 'ownerId');
874
+ * });
875
+ *
876
+ * queries.forEachResultRow('query', (rowId) => {
877
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
878
+ * });
879
+ * // -> {fido: {description: 'dog for Alice'}}
880
+ * // -> {felix: {description: 'cat for Bob'}}
881
+ * // -> {cujo: {description: 'dog for Carol'}}
882
+ * ```
883
+ * @category Definition
884
+ * @since v2.0.0
885
+ */
886
+ export type Select<
887
+ Schema extends OptionalTablesSchema,
888
+ RootTableId extends TableIdFromSchema<Schema>,
889
+ > = {
890
+ /**
891
+ * Calling this function with one Id parameter will indicate that the query
892
+ * should select the value of the specified Cell from the query's root Table.
893
+ * @param cellId The Id of the Cell to fetch the value for.
894
+ * @returns A SelectedAs object so that the selected Cell Id can be optionally
895
+ * aliased.
896
+ * @category Definition
897
+ * @since v2.0.0
898
+ */
899
+ <RootCellId extends CellIdFromSchema<Schema, RootTableId>>(
900
+ cellId: RootCellId,
901
+ ): SelectedAs;
902
+ /**
903
+ * Calling this function with two parameters will indicate that the query
904
+ * should select the value of the specified Cell from a Table that has been
905
+ * joined in the query.
906
+ * @param joinedTableId The Id of the Table to fetch the value from. If the
907
+ * underlying Table was joined 'as' a different Id, that should instead be
908
+ * used.
909
+ * @param joinedCellId The Id of the Cell to fetch the value for.
910
+ * @returns A SelectedAs object so that the selected Cell Id can be optionally
911
+ * aliased.
912
+ * @category Definition
913
+ * @since v2.0.0
914
+ */
915
+ <JoinedTableId extends TableIdFromSchema<Schema> | Id>(
916
+ joinedTableId: JoinedTableId,
917
+ joinedCellId: JoinedCellIdOrId<Schema, JoinedTableId>,
918
+ ): SelectedAs;
919
+ /**
920
+ * Calling this function with one callback parameter will indicate that the
921
+ * query should select a calculated value, based on one or more Cell values in
922
+ * the root Table or a joined Table, or on the root Table's Row Id.
923
+ * @param getCell A callback that takes a GetTableCell function and the main
924
+ * Table's Row Id. These can be used to programmatically create a calculated
925
+ * value from multiple Cell values and the Row Id.
926
+ * @returns A SelectedAs object so that the selected Cell Id can be optionally
927
+ * aliased.
928
+ * @category Definition
929
+ * @since v2.0.0
930
+ */
931
+ (
932
+ getCell: (
933
+ getTableCell: GetTableCell<Schema, RootTableId>,
934
+ rowId: Id,
935
+ ) => ResultCellOrUndefined,
936
+ ): SelectedAs;
937
+ };
938
+
939
+ /**
940
+ * The SelectedAs type describes an object returned from calling a Select
941
+ * function so that the selected Cell Id can be optionally aliased.
942
+ *
943
+ * If you are using a callback in the Select cause, it is highly recommended to
944
+ * use the 'as' function, since otherwise a machine-generated column name will
945
+ * be used.
946
+ *
947
+ * Note that if two Select clauses are both aliased to the same name (or if two
948
+ * columns with the same underlying name are selected, both _without_ aliases),
949
+ * only the latter of two will be used in the query.
950
+ * @example
951
+ * This example shows a query that selects two Cells, one from a joined Table.
952
+ * Both are aliased with the 'as' function:
953
+ *
954
+ * ```js
955
+ * import {createQueries, createStore} from 'tinybase';
956
+ *
957
+ * const store = createStore()
958
+ * .setTable('pets', {
959
+ * fido: {species: 'dog', ownerId: '1'},
960
+ * felix: {species: 'cat', ownerId: '2'},
961
+ * cujo: {species: 'dog', ownerId: '3'},
962
+ * })
963
+ * .setTable('owners', {
964
+ * '1': {name: 'Alice'},
965
+ * '2': {name: 'Bob'},
966
+ * '3': {name: 'Carol'},
967
+ * });
968
+ *
969
+ * const queries = createQueries(store);
970
+ * queries.setQueryDefinition('query', 'pets', ({select, join}) => {
971
+ * select('species').as('petSpecies');
972
+ * select('owners', 'name').as('ownerName');
973
+ * // from pets
974
+ * join('owners', 'ownerId');
975
+ * });
976
+ *
977
+ * queries.forEachResultRow('query', (rowId) => {
978
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
979
+ * });
980
+ * // -> {fido: {petSpecies: 'dog', ownerName: 'Alice'}}
981
+ * // -> {felix: {petSpecies: 'cat', ownerName: 'Bob'}}
982
+ * // -> {cujo: {petSpecies: 'dog', ownerName: 'Carol'}}
983
+ * ```
984
+ * @category Definition
985
+ * @since v2.0.0
986
+ */
987
+ export type SelectedAs = {
988
+ /**
989
+ * A function that lets you specify an alias for the Cell Id.
990
+ * @category Definition
991
+ * @since v2.0.0
992
+ */
993
+ as: (selectedCellId: Id) => void;
994
+ };
995
+
996
+ /**
997
+ * The Join type describes a function that lets you specify a Cell or calculated
998
+ * value to join the main query Table to other Tables, by their Row Id.
999
+ *
1000
+ * The Join function is provided to the third `query` parameter of the
1001
+ * setQueryDefinition method.
1002
+ *
1003
+ * You can join zero, one, or many Tables. You can join the same underlying
1004
+ * Table multiple times, but in that case you will need to use the 'as' function
1005
+ * to distinguish them from each other.
1006
+ *
1007
+ * By default, each join is made from the main query Table to the joined table,
1008
+ * but it is also possible to connect via an intermediate join Table to a more
1009
+ * distant join Table.
1010
+ *
1011
+ * Because a Join clause is used to identify which unique Row Id of the joined
1012
+ * Table will be joined to each Row of the root Table, queries follow the 'left
1013
+ * join' semantics you may be familiar with from SQL. This means that an
1014
+ * unfiltered query will only ever return the same number of Rows as the main
1015
+ * Table being queried, and indeed the resulting table (assuming it has not been
1016
+ * aggregated) will even preserve the root Table's original Row Ids.
1017
+ * @example
1018
+ * This example shows a query that joins a single Table by using an Id present
1019
+ * in the main query Table.
1020
+ *
1021
+ * ```js
1022
+ * import {createQueries, createStore} from 'tinybase';
1023
+ *
1024
+ * const store = createStore()
1025
+ * .setTable('pets', {
1026
+ * fido: {species: 'dog', ownerId: '1'},
1027
+ * felix: {species: 'cat', ownerId: '2'},
1028
+ * cujo: {species: 'dog', ownerId: '3'},
1029
+ * })
1030
+ * .setTable('owners', {
1031
+ * '1': {name: 'Alice'},
1032
+ * '2': {name: 'Bob'},
1033
+ * '3': {name: 'Carol'},
1034
+ * });
1035
+ *
1036
+ * const queries = createQueries(store);
1037
+ * queries.setQueryDefinition('query', 'pets', ({select, join}) => {
1038
+ * select('species');
1039
+ * select('owners', 'name');
1040
+ * // from pets
1041
+ * join('owners', 'ownerId');
1042
+ * });
1043
+ *
1044
+ * queries.forEachResultRow('query', (rowId) => {
1045
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1046
+ * });
1047
+ * // -> {fido: {species: 'dog', name: 'Alice'}}
1048
+ * // -> {felix: {species: 'cat', name: 'Bob'}}
1049
+ * // -> {cujo: {species: 'dog', name: 'Carol'}}
1050
+ * ```
1051
+ * @example
1052
+ * This example shows a query that joins the same underlying Table twice, and
1053
+ * aliases them (and the selected Cell Ids). Note the left-join semantics: Felix
1054
+ * the cat was bought, but the seller was unknown. The record still exists in
1055
+ * the ResultTable.
1056
+ *
1057
+ * ```js
1058
+ * import {createQueries, createStore} from 'tinybase';
1059
+ *
1060
+ * const store = createStore()
1061
+ * .setTable('pets', {
1062
+ * fido: {species: 'dog', buyerId: '1', sellerId: '2'},
1063
+ * felix: {species: 'cat', buyerId: '2'},
1064
+ * cujo: {species: 'dog', buyerId: '3', sellerId: '1'},
1065
+ * })
1066
+ * .setTable('humans', {
1067
+ * '1': {name: 'Alice'},
1068
+ * '2': {name: 'Bob'},
1069
+ * '3': {name: 'Carol'},
1070
+ * });
1071
+ *
1072
+ * const queries = createQueries(store);
1073
+ * queries.setQueryDefinition('query', 'pets', ({select, join}) => {
1074
+ * select('buyers', 'name').as('buyer');
1075
+ * select('sellers', 'name').as('seller');
1076
+ * // from pets
1077
+ * join('humans', 'buyerId').as('buyers');
1078
+ * join('humans', 'sellerId').as('sellers');
1079
+ * });
1080
+ *
1081
+ * queries.forEachResultRow('query', (rowId) => {
1082
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1083
+ * });
1084
+ * // -> {fido: {buyer: 'Alice', seller: 'Bob'}}
1085
+ * // -> {felix: {buyer: 'Bob'}}
1086
+ * // -> {cujo: {buyer: 'Carol', seller: 'Alice'}}
1087
+ * ```
1088
+ * @example
1089
+ * This example shows a query that calculates the Id of the joined Table based
1090
+ * from multiple values in the root Table rather than a single Cell.
1091
+ *
1092
+ * ```js
1093
+ * import {createQueries, createStore} from 'tinybase';
1094
+ *
1095
+ * const store = createStore()
1096
+ * .setTable('pets', {
1097
+ * fido: {species: 'dog', color: 'brown'},
1098
+ * felix: {species: 'cat', color: 'black'},
1099
+ * cujo: {species: 'dog', color: 'black'},
1100
+ * })
1101
+ * .setTable('colorSpecies', {
1102
+ * 'brown-dog': {price: 6},
1103
+ * 'black-dog': {price: 5},
1104
+ * 'brown-cat': {price: 4},
1105
+ * 'black-cat': {price: 3},
1106
+ * });
1107
+ *
1108
+ * const queries = createQueries(store);
1109
+ * queries.setQueryDefinition('query', 'pets', ({select, join}) => {
1110
+ * select('colorSpecies', 'price');
1111
+ * // from pets
1112
+ * join(
1113
+ * 'colorSpecies',
1114
+ * (getCell) => `${getCell('color')}-${getCell('species')}`,
1115
+ * );
1116
+ * });
1117
+ *
1118
+ * queries.forEachResultRow('query', (rowId) => {
1119
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1120
+ * });
1121
+ * // -> {fido: {price: 6}}
1122
+ * // -> {felix: {price: 3}}
1123
+ * // -> {cujo: {price: 5}}
1124
+ * ```
1125
+ * @example
1126
+ * This example shows a query that joins two Tables, one through the
1127
+ * intermediate other.
1128
+ *
1129
+ * ```js
1130
+ * import {createQueries, createStore} from 'tinybase';
1131
+ *
1132
+ * const store = createStore()
1133
+ * .setTable('pets', {
1134
+ * fido: {species: 'dog', ownerId: '1'},
1135
+ * felix: {species: 'cat', ownerId: '2'},
1136
+ * cujo: {species: 'dog', ownerId: '3'},
1137
+ * })
1138
+ * .setTable('owners', {
1139
+ * '1': {name: 'Alice', state: 'CA'},
1140
+ * '2': {name: 'Bob', state: 'CA'},
1141
+ * '3': {name: 'Carol', state: 'WA'},
1142
+ * })
1143
+ * .setTable('states', {
1144
+ * CA: {name: 'California'},
1145
+ * WA: {name: 'Washington'},
1146
+ * });
1147
+ *
1148
+ * const queries = createQueries(store);
1149
+ * queries.setQueryDefinition('query', 'pets', ({select, join}) => {
1150
+ * select(
1151
+ * (getTableCell) =>
1152
+ * `${getTableCell('species')} in ${getTableCell('states', 'name')}`,
1153
+ * ).as('description');
1154
+ * // from pets
1155
+ * join('owners', 'ownerId');
1156
+ * join('states', 'owners', 'state');
1157
+ * });
1158
+ *
1159
+ * queries.forEachResultRow('query', (rowId) => {
1160
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1161
+ * });
1162
+ * // -> {fido: {description: 'dog in California'}}
1163
+ * // -> {felix: {description: 'cat in California'}}
1164
+ * // -> {cujo: {description: 'dog in Washington'}}
1165
+ * ```
1166
+ * @category Definition
1167
+ * @since v2.0.0
1168
+ */
1169
+ export type Join<
1170
+ Schema extends OptionalTablesSchema,
1171
+ RootTableId extends TableIdFromSchema<Schema>,
1172
+ > = {
1173
+ /**
1174
+ * Calling this function with two Id parameters will indicate that the join to
1175
+ * a Row in an adjacent Table is made by finding its Id in a Cell of the
1176
+ * query's root Table.
1177
+ * @param joinedTableId The Id of the Table to join to.
1178
+ * @param on The Id of the Cell in the root Table that contains the joined
1179
+ * Table's Row Id.
1180
+ * @returns A JoinedAs object so that the joined Table Id can be optionally
1181
+ * aliased.
1182
+ * @category Definition
1183
+ * @since v2.0.0
1184
+ */
1185
+ (
1186
+ joinedTableId: TableIdFromSchema<Schema>,
1187
+ on: CellIdFromSchema<Schema, RootTableId>,
1188
+ ): JoinedAs;
1189
+ /**
1190
+ * Calling this function with two parameters (where the second is a function)
1191
+ * will indicate that the join to a Row in an adjacent Table is made by
1192
+ * calculating its Id from the Cells and the Row Id of the query's root Table.
1193
+ * @param joinedTableId The Id of the Table to join to.
1194
+ * @param on A callback that takes a GetCell function and the root Table's Row
1195
+ * Id. These can be used to programmatically calculate the joined Table's Row
1196
+ * Id.
1197
+ * @returns A JoinedAs object so that the joined Table Id can be optionally
1198
+ * aliased.
1199
+ * @category Definition
1200
+ * @since v2.0.0
1201
+ */
1202
+ (
1203
+ joinedTableId: TableIdFromSchema<Schema>,
1204
+ on: (getCell: GetCell<Schema, RootTableId>, rowId: Id) => Id | undefined,
1205
+ ): JoinedAs;
1206
+ /**
1207
+ * Calling this function with three Id parameters will indicate that the join
1208
+ * to a Row in distant Table is made by finding its Id in a Cell of an
1209
+ * intermediately joined Table.
1210
+ * @param joinedTableId The Id of the distant Table to join to.
1211
+ * @param fromIntermediateJoinedTableId The Id of an intermediate Table (which
1212
+ * should have been in turn joined to the main query table via other Join
1213
+ * clauses).
1214
+ * @param on The Id of the Cell in the intermediate Table that contains the
1215
+ * joined Table's Row Id.
1216
+ * @returns A JoinedAs object so that the joined Table Id can be optionally
1217
+ * aliased.
1218
+ * @category Definition
1219
+ * @since v2.0.0
1220
+ */
1221
+ <
1222
+ IntermediateJoinedTableId extends TableIdFromSchema<Schema> | Id =
1223
+ | TableIdFromSchema<Schema>
1224
+ | Id,
1225
+ IntermediateJoinedCellId extends JoinedCellIdOrId<
1226
+ Schema,
1227
+ IntermediateJoinedTableId
1228
+ > = JoinedCellIdOrId<Schema, IntermediateJoinedTableId>,
1229
+ >(
1230
+ joinedTableId: TableIdFromSchema<Schema>,
1231
+ fromIntermediateJoinedTableId: IntermediateJoinedTableId,
1232
+ on: IntermediateJoinedCellId,
1233
+ ): JoinedAs;
1234
+ /**
1235
+ * Calling this function with three parameters (where the third is a function)
1236
+ * will indicate that the join to a Row in distant Table is made by
1237
+ * calculating its Id from the Cells and the Row Id of an intermediately
1238
+ * joined Table.
1239
+ * @param joinedTableId The Id of the Table to join to.
1240
+ * @param fromIntermediateJoinedTableId The Id of an intermediate Table (which
1241
+ * should have been in turn joined to the main query table via other Join
1242
+ * clauses).
1243
+ * @param on A callback that takes a GetCell function and the intermediate
1244
+ * Table's Row Id. These can be used to programmatically calculate the joined
1245
+ * Table's Row Id.
1246
+ * @returns A JoinedAs object so that the joined Table Id can be optionally
1247
+ * aliased.
1248
+ * @category Definition
1249
+ * @since v2.0.0
1250
+ */
1251
+ <
1252
+ IntermediateJoinedTableId extends TableIdFromSchema<Schema> | Id =
1253
+ | TableIdFromSchema<Schema>
1254
+ | Id,
1255
+ >(
1256
+ joinedTableId: TableIdFromSchema<Schema>,
1257
+ fromIntermediateJoinedTableId: IntermediateJoinedTableId,
1258
+ on: (
1259
+ // prettier-ignore
1260
+ getIntermediateJoinedCell:
1261
+ IntermediateJoinedTableId extends TableIdFromSchema<Schema>
1262
+ ? GetCell<Schema, IntermediateJoinedTableId>
1263
+ : GetCell<NoTablesSchema, Id>,
1264
+ intermediateJoinedRowId: Id,
1265
+ ) => Id | undefined,
1266
+ ): JoinedAs;
1267
+ };
1268
+
1269
+ /**
1270
+ * The JoinedAs type describes an object returned from calling a Join function
1271
+ * so that the joined Table Id can be optionally aliased.
1272
+ *
1273
+ * Note that if two Join clauses are both aliased to the same name (or if you
1274
+ * create two joins to the same underlying Table, both _without_ aliases), only
1275
+ * the latter of two will be used in the query.
1276
+ *
1277
+ * For the purposes of clarity, it's recommended to use an alias that does not
1278
+ * collide with a real underlying Table (whether included in the query or not).
1279
+ * @example
1280
+ * This example shows a query that joins the same underlying Table twice, for
1281
+ * different purposes. Both joins are aliased with the 'as' function to
1282
+ * disambiguate them. Note that the selected Cells are also aliased.
1283
+ *
1284
+ * ```js
1285
+ * import {createQueries, createStore} from 'tinybase';
1286
+ *
1287
+ * const store = createStore()
1288
+ * .setTable('pets', {
1289
+ * fido: {species: 'dog', buyerId: '1', sellerId: '2'},
1290
+ * felix: {species: 'cat', buyerId: '2'},
1291
+ * cujo: {species: 'dog', buyerId: '3', sellerId: '1'},
1292
+ * })
1293
+ * .setTable('humans', {
1294
+ * '1': {name: 'Alice'},
1295
+ * '2': {name: 'Bob'},
1296
+ * '3': {name: 'Carol'},
1297
+ * });
1298
+ *
1299
+ * const queries = createQueries(store);
1300
+ * queries.setQueryDefinition('query', 'pets', ({select, join}) => {
1301
+ * select('buyers', 'name').as('buyer');
1302
+ * select('sellers', 'name').as('seller');
1303
+ * // from pets
1304
+ * join('humans', 'buyerId').as('buyers');
1305
+ * join('humans', 'sellerId').as('sellers');
1306
+ * });
1307
+ *
1308
+ * queries.forEachResultRow('query', (rowId) => {
1309
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1310
+ * });
1311
+ * // -> {fido: {buyer: 'Alice', seller: 'Bob'}}
1312
+ * // -> {felix: {buyer: 'Bob'}}
1313
+ * // -> {cujo: {buyer: 'Carol', seller: 'Alice'}}
1314
+ * ```
1315
+ * @category Definition
1316
+ * @since v2.0.0
1317
+ */
1318
+ export type JoinedAs = {
1319
+ /**
1320
+ * A function that lets you specify an alias for the joined Table Id.
1321
+ * @category Definition
1322
+ * @since v2.0.0
1323
+ */
1324
+ as: (joinedTableId: Id) => void;
1325
+ };
1326
+
1327
+ /**
1328
+ * The Where type describes a function that lets you specify conditions to
1329
+ * filter results, based on the underlying Cells of the root or joined Tables.
1330
+ *
1331
+ * The Where function is provided to the third `query` parameter of the
1332
+ * setQueryDefinition method.
1333
+ *
1334
+ * If you do not specify a Where clause, you should expect every non-empty Row
1335
+ * of the root Table to appear in the query's results.
1336
+ *
1337
+ * A Where condition has to be true for a Row to be included in the results.
1338
+ * Each Where class is additive, as though combined with a logical 'and'. If you
1339
+ * wish to create an 'or' expression, use the single parameter version of the
1340
+ * type that allows arbitrary programmatic conditions.
1341
+ *
1342
+ * The Where keyword differs from the Having keyword in that the former
1343
+ * describes conditions that should be met by underlying Cell values (whether
1344
+ * selected or not), and the latter describes conditions based on calculated and
1345
+ * aggregated values - after Group clauses have been applied.
1346
+ * @example
1347
+ * This example shows a query that filters the results from a single Table by
1348
+ * comparing an underlying Cell from it with a value.
1349
+ *
1350
+ * ```js
1351
+ * import {createQueries, createStore} from 'tinybase';
1352
+ *
1353
+ * const store = createStore().setTable('pets', {
1354
+ * fido: {species: 'dog'},
1355
+ * felix: {species: 'cat'},
1356
+ * cujo: {species: 'dog'},
1357
+ * });
1358
+ *
1359
+ * const queries = createQueries(store);
1360
+ * queries.setQueryDefinition('query', 'pets', ({select, where}) => {
1361
+ * select('species');
1362
+ * where('species', 'dog');
1363
+ * });
1364
+ *
1365
+ * queries.forEachResultRow('query', (rowId) => {
1366
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1367
+ * });
1368
+ * // -> {fido: {species: 'dog'}}
1369
+ * // -> {cujo: {species: 'dog'}}
1370
+ * ```
1371
+ * @example
1372
+ * This example shows a query that filters the results of a query by comparing
1373
+ * an underlying Cell from a joined Table with a value. Note that the joined
1374
+ * table has also been aliased, and so its alias is used in the Where clause.
1375
+ *
1376
+ * ```js
1377
+ * import {createQueries, createStore} from 'tinybase';
1378
+ *
1379
+ * const store = createStore()
1380
+ * .setTable('pets', {
1381
+ * fido: {species: 'dog', ownerId: '1'},
1382
+ * felix: {species: 'cat', ownerId: '2'},
1383
+ * cujo: {species: 'dog', ownerId: '3'},
1384
+ * })
1385
+ * .setTable('owners', {
1386
+ * '1': {name: 'Alice', state: 'CA'},
1387
+ * '2': {name: 'Bob', state: 'CA'},
1388
+ * '3': {name: 'Carol', state: 'WA'},
1389
+ * });
1390
+ *
1391
+ * const queries = createQueries(store);
1392
+ * queries.setQueryDefinition('query', 'pets', ({select, join, where}) => {
1393
+ * select('species');
1394
+ * // from pets
1395
+ * join('owners', 'ownerId').as('petOwners');
1396
+ * where('petOwners', 'state', 'CA');
1397
+ * });
1398
+ *
1399
+ * queries.forEachResultRow('query', (rowId) => {
1400
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1401
+ * });
1402
+ * // -> {fido: {species: 'dog'}}
1403
+ * // -> {felix: {species: 'cat'}}
1404
+ * ```
1405
+ * @example
1406
+ * This example shows a query that filters the results of a query with a
1407
+ * condition that is calculated from underlying Cell values from the main and
1408
+ * joined Table. Note that the joined table has also been aliased, and so its
1409
+ * alias is used in the Where clause.
1410
+ *
1411
+ * ```js
1412
+ * import {createQueries, createStore} from 'tinybase';
1413
+ *
1414
+ * const store = createStore()
1415
+ * .setTable('pets', {
1416
+ * fido: {species: 'dog', ownerId: '1'},
1417
+ * felix: {species: 'cat', ownerId: '2'},
1418
+ * cujo: {species: 'dog', ownerId: '3'},
1419
+ * })
1420
+ * .setTable('owners', {
1421
+ * '1': {name: 'Alice', state: 'CA'},
1422
+ * '2': {name: 'Bob', state: 'CA'},
1423
+ * '3': {name: 'Carol', state: 'WA'},
1424
+ * });
1425
+ *
1426
+ * const queries = createQueries(store);
1427
+ * queries.setQueryDefinition('query', 'pets', ({select, join, where}) => {
1428
+ * select('species');
1429
+ * select('petOwners', 'state');
1430
+ * // from pets
1431
+ * join('owners', 'ownerId').as('petOwners');
1432
+ * where(
1433
+ * (getTableCell) =>
1434
+ * getTableCell('pets', 'species') === 'cat' ||
1435
+ * getTableCell('petOwners', 'state') === 'WA',
1436
+ * );
1437
+ * });
1438
+ *
1439
+ * queries.forEachResultRow('query', (rowId) => {
1440
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1441
+ * });
1442
+ * // -> {felix: {species: 'cat', state: 'CA'}}
1443
+ * // -> {cujo: {species: 'dog', state: 'WA'}}
1444
+ * ```
1445
+ * @category Definition
1446
+ * @since v2.0.0
1447
+ */
1448
+ export type Where<
1449
+ Schema extends OptionalTablesSchema,
1450
+ RootTableId extends TableIdFromSchema<Schema>,
1451
+ > = {
1452
+ /**
1453
+ * Calling this function with two parameters is used to include only those
1454
+ * Rows for which a specified Cell in the query's root Table has a specified
1455
+ * value.
1456
+ * @param cellId The Id of the Cell in the query's root Table to test.
1457
+ * @param equals The value that the Cell has to have for the Row to be
1458
+ * included in the result.
1459
+ * @category Definition
1460
+ * @since v2.0.0
1461
+ */
1462
+ <RootCellId extends CellIdFromSchema<Schema, RootTableId>>(
1463
+ cellId: RootCellId,
1464
+ equals: Cell<Schema, RootTableId, RootCellId>,
1465
+ ): void;
1466
+ /**
1467
+ * Calling this function with three parameters is used to include only those
1468
+ * Rows for which a specified Cell in a joined Table has a specified value.
1469
+ * @param joinedTableId The Id of the joined Table to test a value in. If the
1470
+ * underlying Table was joined 'as' a different Id, that should instead be
1471
+ * used.
1472
+ * @param joinedCellId The Id of the Cell in the joined Table to test.
1473
+ * @param equals The value that the Cell has to have for the Row to be
1474
+ * included in the result.
1475
+ * @category Definition
1476
+ * @since v2.0.0
1477
+ */
1478
+ <
1479
+ JoinedTableId extends TableIdFromSchema<Schema> | Id,
1480
+ JoinedCellId extends JoinedCellIdOrId<
1481
+ Schema,
1482
+ JoinedTableId
1483
+ > = JoinedCellIdOrId<Schema, JoinedTableId>,
1484
+ JoinedCell extends Cell<Schema, JoinedTableId, JoinedCellId> = Cell<
1485
+ Schema,
1486
+ JoinedTableId,
1487
+ JoinedCellId
1488
+ >,
1489
+ >(
1490
+ joinedTableId: JoinedTableId,
1491
+ joinedCellId: JoinedCellId,
1492
+ equals: JoinedCell,
1493
+ ): void;
1494
+ /**
1495
+ * Calling this function with one callback parameter is used to include only
1496
+ * those Rows which meet a calculated boolean condition, based on values in
1497
+ * the main and (optionally) joined Tables.
1498
+ * @param condition A callback that takes a GetTableCell function and that
1499
+ * should return `true` for the Row to be included in the result.
1500
+ * @category Definition
1501
+ * @since v2.0.0
1502
+ */
1503
+ (
1504
+ condition: (getTableCell: GetTableCell<Schema, RootTableId>) => boolean,
1505
+ ): void;
1506
+ };
1507
+
1508
+ /**
1509
+ * The Group type describes a function that lets you specify that the values of
1510
+ * a Cell in multiple ResultRows should be aggregated together.
1511
+ *
1512
+ * The Group function is provided to the third `query` parameter of the
1513
+ * setQueryDefinition method. When called, it should refer to a Cell Id (or
1514
+ * aliased Id) specified in one of the Select functions, and indicate how the
1515
+ * values should be aggregated.
1516
+ *
1517
+ * This is applied after any joins or where-based filtering.
1518
+ *
1519
+ * If you provide a Group for every Select, the result will be a single Row with
1520
+ * every Cell having been aggregated. If you provide a Group for only one, or
1521
+ * some, of the Select clauses, the _others_ will be automatically used as
1522
+ * dimensional values (analogous to the 'group by` semantics in SQL), within
1523
+ * which the aggregations of Group Cells will be performed.
1524
+ *
1525
+ * You can join the same underlying Cell multiple times, but in that case you
1526
+ * will need to use the 'as' function to distinguish them from each other.
1527
+ *
1528
+ * The second parameter can be one of five predefined aggregates - 'count',
1529
+ * 'sum', 'avg', 'min', and 'max' - or a custom function that produces your own
1530
+ * aggregation of an array of Cell values.
1531
+ *
1532
+ * The final three parameters, `aggregateAdd`, `aggregateRemove`,
1533
+ * `aggregateReplace` need only be provided when you are using your own custom
1534
+ * `aggregate` function. These give you the opportunity to reduce your custom
1535
+ * function's algorithmic complexity by providing shortcuts that can nudge an
1536
+ * aggregation result when a single value is added, removed, or replaced in the
1537
+ * input values.
1538
+ * @param selectedCellId The Id of the Cell to aggregate. If the underlying Cell
1539
+ * was selected 'as' a different Id, that should instead be used.
1540
+ * @param aggregate Either a string representing one of a set of common
1541
+ * aggregation techniques ('count', 'sum', 'avg', 'min', or 'max'), or a
1542
+ * function that aggregates Cell values from each Row to create the aggregate's
1543
+ * overall.
1544
+ * @param aggregateAdd A function that can be used to optimize a custom
1545
+ * Aggregate by providing a shortcut for when a single value is added to the
1546
+ * input values - for example, when a Row is added to the Table.
1547
+ * @param aggregateRemove A function that can be used to optimize a custom
1548
+ * Aggregate by providing a shortcut for when a single value is removed from the
1549
+ * input values - for example, when a Row is removed from the Table.
1550
+ * @param aggregateReplace A function that can be used to optimize a custom
1551
+ * Aggregate by providing a shortcut for when a single value in the input values
1552
+ * is replaced with another - for example, when a Row is updated.
1553
+ * @returns A GroupedAs object so that the grouped Cell Id can be optionally
1554
+ * aliased.
1555
+ * @example
1556
+ * This example shows a query that calculates the average of all the values in a
1557
+ * single selected Cell from a joined Table.
1558
+ *
1559
+ * ```js
1560
+ * import {createQueries, createStore} from 'tinybase';
1561
+ *
1562
+ * const store = createStore()
1563
+ * .setTable('pets', {
1564
+ * fido: {species: 'dog'},
1565
+ * felix: {species: 'cat'},
1566
+ * cujo: {species: 'dog'},
1567
+ * lowly: {species: 'worm'},
1568
+ * })
1569
+ * .setTable('species', {
1570
+ * dog: {price: 5},
1571
+ * cat: {price: 4},
1572
+ * worm: {price: 1},
1573
+ * });
1574
+ *
1575
+ * const queries = createQueries(store);
1576
+ * queries.setQueryDefinition('query', 'pets', ({select, join, group}) => {
1577
+ * select('species', 'price');
1578
+ * // from pets
1579
+ * join('species', 'species');
1580
+ * group('price', 'avg').as('avgPrice');
1581
+ * });
1582
+ *
1583
+ * console.log(queries.getResultTable('query'));
1584
+ * // -> {0: {avgPrice: 3.75}}
1585
+ * // 2 dogs at 5, 1 cat at 4, 1 worm at 1: a total of 15 for 4 pets
1586
+ * ```
1587
+ * @example
1588
+ * This example shows a query that calculates the average of a two Cell values,
1589
+ * aggregated by the two other dimensional 'group by' Cells.
1590
+ *
1591
+ * ```js
1592
+ * import {createQueries, createStore} from 'tinybase';
1593
+ *
1594
+ * const store = createStore()
1595
+ * .setTable('pets', {
1596
+ * fido: {species: 'dog', owner: 'alice'},
1597
+ * felix: {species: 'cat', owner: 'bob'},
1598
+ * cujo: {species: 'dog', owner: 'bob'},
1599
+ * lowly: {species: 'worm', owner: 'alice'},
1600
+ * carnaby: {species: 'parrot', owner: 'bob'},
1601
+ * polly: {species: 'parrot', owner: 'alice'},
1602
+ * })
1603
+ * .setTable('species', {
1604
+ * dog: {price: 5, legs: 4},
1605
+ * cat: {price: 4, legs: 4},
1606
+ * parrot: {price: 3, legs: 2},
1607
+ * worm: {price: 1, legs: 0},
1608
+ * });
1609
+ *
1610
+ * const queries = createQueries(store);
1611
+ * queries.setQueryDefinition('query', 'pets', ({select, join, group}) => {
1612
+ * select('pets', 'owner'); // group by
1613
+ * select('species', 'price'); // grouped
1614
+ * // from pets
1615
+ * join('species', 'species');
1616
+ * group(
1617
+ * 'price',
1618
+ * (cells) => Math.min(...cells.filter((cell) => cell > 2)),
1619
+ * (current, add) => (add > 2 ? Math.min(current, add) : current),
1620
+ * (current, remove) => (remove == current ? undefined : current),
1621
+ * (current, add, remove) =>
1622
+ * remove == current
1623
+ * ? undefined
1624
+ * : add > 2
1625
+ * ? Math.min(current, add)
1626
+ * : current,
1627
+ * ).as('lowestPriceOver2');
1628
+ * });
1629
+ *
1630
+ * queries.forEachResultRow('query', (rowId) => {
1631
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1632
+ * });
1633
+ * // -> {0: {owner: 'alice', lowestPriceOver2: 3}}
1634
+ * // -> {1: {owner: 'bob', lowestPriceOver2: 3}}
1635
+ * // Both have a parrot at 3. Alice's worm at 1 is excluded from aggregation.
1636
+ * ```
1637
+ * @category Definition
1638
+ * @since v2.0.0
1639
+ */
1640
+ export type Group = (
1641
+ selectedCellId: Id,
1642
+ aggregate: 'count' | 'sum' | 'avg' | 'min' | 'max' | Aggregate,
1643
+ aggregateAdd?: AggregateAdd,
1644
+ aggregateRemove?: AggregateRemove,
1645
+ aggregateReplace?: AggregateReplace,
1646
+ ) => GroupedAs;
1647
+
1648
+ /**
1649
+ * The GroupedAs type describes an object returned from calling a Group function
1650
+ * so that the grouped Cell Id can be optionally aliased.
1651
+ *
1652
+ * Note that if two Group clauses are both aliased to the same name (or if you
1653
+ * create two groups of the same underlying Cell, both _without_ aliases), only
1654
+ * the latter of two will be used in the query.
1655
+ * @example
1656
+ * This example shows a query that groups the same underlying Cell twice, for
1657
+ * different purposes. Both groups are aliased with the 'as' function to
1658
+ * disambiguate them.
1659
+ *
1660
+ * ```js
1661
+ * import {createQueries, createStore} from 'tinybase';
1662
+ *
1663
+ * const store = createStore().setTable('pets', {
1664
+ * fido: {species: 'dog', price: 5},
1665
+ * felix: {species: 'cat', price: 4},
1666
+ * cujo: {species: 'dog', price: 4},
1667
+ * tom: {species: 'cat', price: 3},
1668
+ * });
1669
+ *
1670
+ * const queries = createQueries(store);
1671
+ * queries.setQueryDefinition('query', 'pets', ({select, group}) => {
1672
+ * select('pets', 'species');
1673
+ * select('pets', 'price');
1674
+ * group('price', 'min').as('minPrice');
1675
+ * group('price', 'max').as('maxPrice');
1676
+ * });
1677
+ *
1678
+ * queries.forEachResultRow('query', (rowId) => {
1679
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1680
+ * });
1681
+ * // -> {0: {species: 'dog', minPrice: 4, maxPrice: 5}}
1682
+ * // -> {1: {species: 'cat', minPrice: 3, maxPrice: 4}}
1683
+ * ```
1684
+ * @category Definition
1685
+ * @since v2.0.0
1686
+ */
1687
+ export type GroupedAs = {
1688
+ /**
1689
+ * A function that lets you specify an alias for the grouped Cell Id.
1690
+ * @category Definition
1691
+ * @since v2.0.0
1692
+ */
1693
+ as: (groupedCellId: Id) => void;
1694
+ };
1695
+
1696
+ /**
1697
+ * The Having type describes a function that lets you specify conditions to
1698
+ * filter results, based on the grouped Cells resulting from a Group clause.
1699
+ *
1700
+ * The Having function is provided to the third `query` parameter of the
1701
+ * setQueryDefinition method.
1702
+ *
1703
+ * A Having condition has to be true for a Row to be included in the results.
1704
+ * Each Having class is additive, as though combined with a logical 'and'. If
1705
+ * you wish to create an 'or' expression, use the single parameter version of
1706
+ * the type that allows arbitrary programmatic conditions.
1707
+ *
1708
+ * The Where keyword differs from the Having keyword in that the former
1709
+ * describes conditions that should be met by underlying Cell values (whether
1710
+ * selected or not), and the latter describes conditions based on calculated and
1711
+ * aggregated values - after Group clauses have been applied.
1712
+ *
1713
+ * Whilst it is technically possible to use a Having clause even if the results
1714
+ * have not been grouped with a Group clause, you should expect it to be less
1715
+ * performant than using a Where clause, due to that being applied earlier in
1716
+ * the query process.
1717
+ * @example
1718
+ * This example shows a query that filters the results from a grouped Table by
1719
+ * comparing a Cell from it with a value.
1720
+ *
1721
+ * ```js
1722
+ * import {createQueries, createStore} from 'tinybase';
1723
+ *
1724
+ * const store = createStore().setTable('pets', {
1725
+ * fido: {species: 'dog', price: 5},
1726
+ * felix: {species: 'cat', price: 4},
1727
+ * cujo: {species: 'dog', price: 4},
1728
+ * tom: {species: 'cat', price: 3},
1729
+ * carnaby: {species: 'parrot', price: 3},
1730
+ * polly: {species: 'parrot', price: 3},
1731
+ * });
1732
+ *
1733
+ * const queries = createQueries(store);
1734
+ * queries.setQueryDefinition('query', 'pets', ({select, group, having}) => {
1735
+ * select('pets', 'species');
1736
+ * select('pets', 'price');
1737
+ * group('price', 'min').as('minPrice');
1738
+ * group('price', 'max').as('maxPrice');
1739
+ * having('minPrice', 3);
1740
+ * });
1741
+ *
1742
+ * queries.forEachResultRow('query', (rowId) => {
1743
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1744
+ * });
1745
+ * // -> {0: {species: 'cat', minPrice: 3, maxPrice: 4}}
1746
+ * // -> {1: {species: 'parrot', minPrice: 3, maxPrice: 3}}
1747
+ * ```
1748
+ * @example
1749
+ * This example shows a query that filters the results from a grouped Table with
1750
+ * a condition that is calculated from Cell values.
1751
+ *
1752
+ * ```js
1753
+ * import {createQueries, createStore} from 'tinybase';
1754
+ *
1755
+ * const store = createStore().setTable('pets', {
1756
+ * fido: {species: 'dog', price: 5},
1757
+ * felix: {species: 'cat', price: 4},
1758
+ * cujo: {species: 'dog', price: 4},
1759
+ * tom: {species: 'cat', price: 3},
1760
+ * carnaby: {species: 'parrot', price: 3},
1761
+ * polly: {species: 'parrot', price: 3},
1762
+ * });
1763
+ *
1764
+ * const queries = createQueries(store);
1765
+ * queries.setQueryDefinition('query', 'pets', ({select, group, having}) => {
1766
+ * select('pets', 'species');
1767
+ * select('pets', 'price');
1768
+ * group('price', 'min').as('minPrice');
1769
+ * group('price', 'max').as('maxPrice');
1770
+ * having(
1771
+ * (getSelectedOrGroupedCell) =>
1772
+ * getSelectedOrGroupedCell('minPrice') !=
1773
+ * getSelectedOrGroupedCell('maxPrice'),
1774
+ * );
1775
+ * });
1776
+ *
1777
+ * queries.forEachResultRow('query', (rowId) => {
1778
+ * console.log({[rowId]: queries.getResultRow('query', rowId)});
1779
+ * });
1780
+ * // -> {0: {species: 'dog', minPrice: 4, maxPrice: 5}}
1781
+ * // -> {1: {species: 'cat', minPrice: 3, maxPrice: 4}}
1782
+ * // Parrots are filtered out because they have zero range in price.
1783
+ * ```
1784
+ * @category Definition
1785
+ * @since v2.0.0
1786
+ */
1787
+ export type Having = {
1788
+ /**
1789
+ * Calling this function with two parameters is used to include only those
1790
+ * Rows for which a specified Cell in the query's root Table has a specified
1791
+ * value.
1792
+ * @param selectedOrGroupedCellId The Id of the Cell in the query to test.
1793
+ * @param equals The value that the Cell has to have for the Row to be
1794
+ * included in the result.
1795
+ * @category Definition
1796
+ * @since v2.0.0
1797
+ */
1798
+ (selectedOrGroupedCellId: Id, equals: ResultCell): void;
1799
+ /**
1800
+ * Calling this function with one callback parameter is used to include only
1801
+ * those Rows which meet a calculated boolean condition.
1802
+ * @param condition A callback that takes a GetCell function and that should
1803
+ * return `true` for the Row to be included in the result.
1804
+ * @category Definition
1805
+ * @since v2.0.0
1806
+ */
1807
+ (condition: (getSelectedOrGroupedCell: GetResultCell) => boolean): void;
1808
+ };
1809
+
1810
+ /**
1811
+ * A Queries object lets you create and track queries of the data in Store
1812
+ * objects.
1813
+ *
1814
+ * This is useful for creating a reactive view of data that is stored in
1815
+ * physical tables: selecting columns, joining tables together, filtering rows,
1816
+ * aggregating data, sorting it, and so on.
1817
+ *
1818
+ * This provides a generalized query concept for Store data. If you just want to
1819
+ * create and track metrics, indexes, or relationships between rows, you may
1820
+ * prefer to use the dedicated Metrics, Indexes, and Relationships objects,
1821
+ * which have simpler APIs.
1822
+ *
1823
+ * Create a Queries object easily with the createQueries function. From there,
1824
+ * you can add new query definitions (with the setQueryDefinition method), query
1825
+ * the results (with the getResultTable method, the getResultRow method, the
1826
+ * getResultCell method, and so on), and add listeners for when they change
1827
+ * (with the addResultTableListener method, the addResultRowListener method, the
1828
+ * addResultCellListener method, and so on).
1829
+ * @example
1830
+ * This example shows a very simple lifecycle of a Queries object: from
1831
+ * creation, to adding definitions, getting their contents, and then registering
1832
+ * and removing listeners for them.
1833
+ *
1834
+ * ```js
1835
+ * import {createQueries, createStore} from 'tinybase';
1836
+ *
1837
+ * const store = createStore()
1838
+ * .setTable('pets', {
1839
+ * fido: {species: 'dog', color: 'brown', ownerId: '1'},
1840
+ * felix: {species: 'cat', color: 'black', ownerId: '2'},
1841
+ * cujo: {species: 'dog', color: 'black', ownerId: '3'},
1842
+ * })
1843
+ * .setTable('species', {
1844
+ * dog: {price: 5},
1845
+ * cat: {price: 4},
1846
+ * worm: {price: 1},
1847
+ * })
1848
+ * .setTable('owners', {
1849
+ * '1': {name: 'Alice'},
1850
+ * '2': {name: 'Bob'},
1851
+ * '3': {name: 'Carol'},
1852
+ * });
1853
+ *
1854
+ * const queries = createQueries(store);
1855
+ *
1856
+ * // A filtered table query:
1857
+ * queries.setQueryDefinition('blackPets', 'pets', ({select, where}) => {
1858
+ * select('species');
1859
+ * where('color', 'black');
1860
+ * });
1861
+ * console.log(queries.getResultTable('blackPets'));
1862
+ * // -> {felix: {species: 'cat'}, cujo: {species: 'dog'}}
1863
+ *
1864
+ * // A joined table query:
1865
+ * queries.setQueryDefinition('petOwners', 'pets', ({select, join}) => {
1866
+ * select('owners', 'name').as('owner');
1867
+ * join('owners', 'ownerId');
1868
+ * });
1869
+ * console.log(queries.getResultTable('petOwners'));
1870
+ * // -> {fido: {owner: 'Alice'}, felix: {owner: 'Bob'}, cujo: {owner: 'Carol'}}
1871
+ *
1872
+ * // A grouped query:
1873
+ * queries.setQueryDefinition(
1874
+ * 'colorPrice',
1875
+ * 'pets',
1876
+ * ({select, join, group}) => {
1877
+ * select('color');
1878
+ * select('species', 'price');
1879
+ * join('species', 'species');
1880
+ * group('price', 'avg');
1881
+ * },
1882
+ * );
1883
+ * console.log(queries.getResultTable('colorPrice'));
1884
+ * // -> {"1": {color: 'black', price: 4.5}, "0": {color: 'brown', price: 5}}
1885
+ * console.log(queries.getResultSortedRowIds('colorPrice', 'price', true));
1886
+ * // -> ["0", "1"]
1887
+ *
1888
+ * const listenerId = queries.addResultTableListener('colorPrice', () => {
1889
+ * console.log('Average prices per color changed');
1890
+ * console.log(queries.getResultTable('colorPrice'));
1891
+ * console.log(queries.getResultSortedRowIds('colorPrice', 'price', true));
1892
+ * });
1893
+ *
1894
+ * store.setRow('pets', 'lowly', {species: 'worm', color: 'brown'});
1895
+ * // -> 'Average prices per color changed'
1896
+ * // -> {"0": {color: 'brown', price: 3}, "1": {color: 'black', price: 4.5}}
1897
+ * // -> ["1", "0"]
1898
+ *
1899
+ * queries.delListener(listenerId);
1900
+ * queries.destroy();
1901
+ * ```
1902
+ * @see Using Queries guides
1903
+ * @see Car Analysis demo
1904
+ * @see Movie Database demo
1905
+ * @category Queries
1906
+ * @since v2.0.0
1907
+ */
1908
+ export interface Queries<in out Schemas extends OptionalSchemas> {
1909
+ /**
1910
+ * The setQueryDefinition method lets you set the definition of a query.
1911
+ *
1912
+ * This has schema-based typing. The following is a simplified representation:
1913
+ *
1914
+ * ```ts override
1915
+ * setQueryDefinition(
1916
+ * queryId: Id,
1917
+ * tableId: Id,
1918
+ * query: (keywords: {
1919
+ * select: Select;
1920
+ * join: Join;
1921
+ * where: Where;
1922
+ * group: Group;
1923
+ * having: Having;
1924
+ * }) => void,
1925
+ * ): Queries;
1926
+ * ```
1927
+ *
1928
+ * Every query definition is identified by a unique Id, and if you re-use an
1929
+ * existing Id with this method, the previous definition is overwritten.
1930
+ *
1931
+ * A query provides a tabular result formed from each Row within a root Table.
1932
+ * The definition must specify this Table (by its Id) to be aggregated. Other
1933
+ * Tables can be joined to that using Join clauses.
1934
+ *
1935
+ * The third `query` parameter is a callback that you provide to define the
1936
+ * query. That callback is provided with a `keywords` object that contains the
1937
+ * functions you use to define the query, like `select`, `join`, and so on.
1938
+ * You can see how that is used in the simple example below. The following
1939
+ * five clause types are supported:
1940
+ *
1941
+ * - The Select type describes a function that lets you specify a Cell or
1942
+ * calculated value for including into the query's result.
1943
+ * - The Join type describes a function that lets you specify a Cell or
1944
+ * calculated value to join the main query Table to others, by Row Id.
1945
+ * - The Where type describes a function that lets you specify conditions to
1946
+ * filter results, based on the underlying Cells of the main or joined
1947
+ * Tables.
1948
+ * - The Group type describes a function that lets you specify that the values
1949
+ * of a Cell in multiple ResultRows should be aggregated together.
1950
+ * - The Having type describes a function that lets you specify conditions to
1951
+ * filter results, based on the grouped Cells resulting from a Group clause.
1952
+ *
1953
+ * Full documentation and examples are provided in the sections for each of
1954
+ * those clause types.
1955
+ *
1956
+ * Additionally, you can use the getResultSortedRowIds method and
1957
+ * addResultSortedRowIdsListener method to sort and paginate the results.
1958
+ * @param queryId The Id of the query to define.
1959
+ * @param tableId The Id of the root Table the query will be based on.
1960
+ * @param query A callback which can take a `keywords` object and which uses
1961
+ the functions it contains to define the query.
1962
+ * @returns A reference to the Queries object.
1963
+ * @example
1964
+ * This example creates a Store, creates a Queries object, and defines a
1965
+ * simple query to select just one column from the Table, for each Row where
1966
+ * the `species` Cell matches as certain value.
1967
+ *
1968
+ * ```js
1969
+ * import {createQueries, createStore} from 'tinybase';
1970
+ *
1971
+ * const store = createStore().setTable('pets', {
1972
+ * fido: {species: 'dog', color: 'brown'},
1973
+ * felix: {species: 'cat', color: 'black'},
1974
+ * cujo: {species: 'dog', color: 'black'},
1975
+ * });
1976
+ *
1977
+ * const queries = createQueries(store);
1978
+ * queries.setQueryDefinition('dogColors', 'pets', ({select, where}) => {
1979
+ * select('color');
1980
+ * where('species', 'dog');
1981
+ * });
1982
+ *
1983
+ * console.log(queries.getResultTable('dogColors'));
1984
+ * // -> {fido: {color: 'brown'}, cujo: {color: 'black'}}
1985
+ * ```
1986
+ * @category Configuration
1987
+ * @since v2.0.0
1988
+ */
1989
+ setQueryDefinition<RootTableId extends TableIdFromSchema<Schemas[0]>>(
1990
+ queryId: Id,
1991
+ tableId: RootTableId,
1992
+ query: (keywords: {
1993
+ select: Select<Schemas[0], RootTableId>;
1994
+ join: Join<Schemas[0], RootTableId>;
1995
+ where: Where<Schemas[0], RootTableId>;
1996
+ group: Group;
1997
+ having: Having;
1998
+ }) => void,
1999
+ ): Queries<Schemas>;
2000
+
2001
+ /**
2002
+ * The delQueryDefinition method removes an existing query definition.
2003
+ * @param queryId The Id of the query to remove.
2004
+ * @returns A reference to the Queries object.
2005
+ * @example
2006
+ * This example creates a Store, creates a Queries object, defines a simple
2007
+ * query, and then removes it.
2008
+ *
2009
+ * This has schema-based typing. The following is a simplified representation:
2010
+ *
2011
+ * ```ts override
2012
+ * delQueryDefinition(queryId: Id): Queries;
2013
+ * ```
2014
+ *
2015
+ * ```js
2016
+ * import {createQueries, createStore} from 'tinybase';
2017
+ *
2018
+ * const store = createStore().setTable('pets', {
2019
+ * fido: {species: 'dog', color: 'brown'},
2020
+ * felix: {species: 'cat', color: 'black'},
2021
+ * cujo: {species: 'dog', color: 'black'},
2022
+ * });
2023
+ *
2024
+ * const queries = createQueries(store);
2025
+ * queries.setQueryDefinition('dogColors', 'pets', ({select, where}) => {
2026
+ * select('color');
2027
+ * where('species', 'dog');
2028
+ * });
2029
+ * console.log(queries.getQueryIds());
2030
+ * // -> ['dogColors']
2031
+ *
2032
+ * queries.delQueryDefinition('dogColors');
2033
+ * console.log(queries.getQueryIds());
2034
+ * // -> []
2035
+ * ```
2036
+ * @category Configuration
2037
+ * @since v2.0.0
2038
+ */
2039
+ delQueryDefinition(queryId: Id): Queries<Schemas>;
2040
+
2041
+ /**
2042
+ * The getStore method returns a reference to the underlying Store that is
2043
+ * backing this Queries object.
2044
+ * @returns A reference to the Store.
2045
+ * @example
2046
+ * This example creates a Queries object against a newly-created Store and
2047
+ * then gets its reference in order to update its data.
2048
+ *
2049
+ * This has schema-based typing. The following is a simplified representation:
2050
+ *
2051
+ * ```ts override
2052
+ * getStore(): Store;
2053
+ * ```
2054
+ *
2055
+ * ```js
2056
+ * import {createQueries, createStore} from 'tinybase';
2057
+ *
2058
+ * const queries = createQueries(createStore());
2059
+ * queries.setQueryDefinition('dogColors', 'pets', ({select, where}) => {
2060
+ * select('color');
2061
+ * where('species', 'dog');
2062
+ * });
2063
+ * queries
2064
+ * .getStore()
2065
+ * .setRow('pets', 'fido', {species: 'dog', color: 'brown'});
2066
+ * console.log(queries.getResultTable('dogColors'));
2067
+ * // -> {fido: {color: 'brown'}}
2068
+ * ```
2069
+ * @category Getter
2070
+ * @since v2.0.0
2071
+ */
2072
+ getStore(): Store<Schemas>;
2073
+
2074
+ /**
2075
+ * The getQueryIds method returns an array of the query Ids registered with
2076
+ * this Queries object.
2077
+ * @returns An array of Ids.
2078
+ * @example
2079
+ * This example creates a Queries object with two definitions, and then gets
2080
+ * the Ids of the definitions.
2081
+ *
2082
+ * ```js
2083
+ * import {createQueries, createStore} from 'tinybase';
2084
+ *
2085
+ * const queries = createQueries(createStore())
2086
+ * .setQueryDefinition('dogColors', 'pets', ({select, where}) => {
2087
+ * select('color');
2088
+ * where('species', 'dog');
2089
+ * })
2090
+ * .setQueryDefinition('catColors', 'pets', ({select, where}) => {
2091
+ * select('color');
2092
+ * where('species', 'cat');
2093
+ * });
2094
+ *
2095
+ * console.log(queries.getQueryIds());
2096
+ * // -> ['dogColors', 'catColors']
2097
+ * ```
2098
+ * @category Getter
2099
+ * @since v2.0.0
2100
+ */
2101
+ getQueryIds(): Ids;
2102
+
2103
+ /**
2104
+ * The forEachQuery method takes a function that it will then call for each
2105
+ * Query in the Queries object.
2106
+ *
2107
+ * This method is useful for iterating over all the queries in a functional
2108
+ * style. The `queryCallback` parameter is a QueryCallback function that will
2109
+ * be called with the Id of each query.
2110
+ * @param queryCallback The function that should be called for every query.
2111
+ * @example
2112
+ * This example iterates over each query in a Queries object.
2113
+ *
2114
+ * ```js
2115
+ * import {createQueries, createStore} from 'tinybase';
2116
+ *
2117
+ * const queries = createQueries(createStore())
2118
+ * .setQueryDefinition('dogColors', 'pets', ({select, where}) => {
2119
+ * select('color');
2120
+ * where('species', 'dog');
2121
+ * })
2122
+ * .setQueryDefinition('catColors', 'pets', ({select, where}) => {
2123
+ * select('color');
2124
+ * where('species', 'cat');
2125
+ * });
2126
+ *
2127
+ * queries.forEachQuery((queryId) => {
2128
+ * console.log(queryId);
2129
+ * });
2130
+ * // -> 'dogColors'
2131
+ * // -> 'catColors'
2132
+ * ```
2133
+ * @category Iterator
2134
+ * @since v2.0.0
2135
+ */
2136
+ forEachQuery(queryCallback: QueryCallback): void;
2137
+
2138
+ /**
2139
+ * The hasQuery method returns a boolean indicating whether a given query
2140
+ * exists in the Queries object.
2141
+ * @param queryId The Id of a possible query in the Queries object.
2142
+ * @returns Whether a query with that Id exists.
2143
+ * @example
2144
+ * This example shows two simple query existence checks.
2145
+ *
2146
+ * ```js
2147
+ * import {createQueries, createStore} from 'tinybase';
2148
+ *
2149
+ * const queries = createQueries(createStore()).setQueryDefinition(
2150
+ * 'dogColors',
2151
+ * 'pets',
2152
+ * ({select, where}) => {
2153
+ * select('color');
2154
+ * where('species', 'dog');
2155
+ * },
2156
+ * );
2157
+ *
2158
+ * console.log(queries.hasQuery('dogColors'));
2159
+ * // -> true
2160
+ * console.log(queries.hasQuery('catColors'));
2161
+ * // -> false
2162
+ * ```
2163
+ * @category Getter
2164
+ * @since v2.0.0
2165
+ */
2166
+ hasQuery(queryId: Id): boolean;
2167
+
2168
+ /**
2169
+ * The getTableId method returns the Id of the underlying Table that is
2170
+ * backing a query.
2171
+ *
2172
+ * This has schema-based typing. The following is a simplified representation:
2173
+ *
2174
+ * ```ts override
2175
+ * getTableId(queryId: Id): Id | undefined;
2176
+ * ```
2177
+ *
2178
+ * If the query Id is invalid, the method returns `undefined`.
2179
+ * @param queryId The Id of a query.
2180
+ * @returns The Id of the Table backing the query, or `undefined`.
2181
+ * @example
2182
+ * This example creates a Queries object, a single query definition, and then
2183
+ * calls this method on it (as well as a non-existent definition) to get the
2184
+ * underlying Table Id.
2185
+ *
2186
+ * ```js
2187
+ * import {createQueries, createStore} from 'tinybase';
2188
+ *
2189
+ * const queries = createQueries(createStore()).setQueryDefinition(
2190
+ * 'dogColors',
2191
+ * 'pets',
2192
+ * ({select, where}) => {
2193
+ * select('color');
2194
+ * where('species', 'dog');
2195
+ * },
2196
+ * );
2197
+ *
2198
+ * console.log(queries.getTableId('dogColors'));
2199
+ * // -> 'pets'
2200
+ * console.log(queries.getTableId('catColors'));
2201
+ * // -> undefined
2202
+ * ```
2203
+ * @category Getter
2204
+ * @since v2.0.0
2205
+ */
2206
+ getTableId<TableId extends TableIdFromSchema<Schemas[0]>>(
2207
+ queryId: Id,
2208
+ ): TableId | undefined;
2209
+
2210
+ /**
2211
+ * The getResultTable method returns an object containing the entire data of
2212
+ * the ResultTable of the given query.
2213
+ *
2214
+ * This has the same behavior as a Store's getTable method. For example, if
2215
+ * the query Id is invalid, the method returns an empty object. Similarly, it
2216
+ * returns a copy of, rather than a reference to the underlying data, so
2217
+ * changes made to the returned object are not made to the query results
2218
+ * themselves.
2219
+ * @param queryId The Id of a query.
2220
+ * @returns An object containing the entire data of the ResultTable of the
2221
+ * query.
2222
+ * @example
2223
+ * This example creates a Queries object, a single query definition, and then
2224
+ * calls this method on it (as well as a non-existent definition) to get the
2225
+ * ResultTable.
2226
+ *
2227
+ * ```js
2228
+ * import {createQueries, createStore} from 'tinybase';
2229
+ *
2230
+ * const store = createStore().setTable('pets', {
2231
+ * fido: {species: 'dog', color: 'brown'},
2232
+ * felix: {species: 'cat', color: 'black'},
2233
+ * cujo: {species: 'dog', color: 'black'},
2234
+ * });
2235
+ *
2236
+ * const queries = createQueries(store).setQueryDefinition(
2237
+ * 'dogColors',
2238
+ * 'pets',
2239
+ * ({select, where}) => {
2240
+ * select('color');
2241
+ * where('species', 'dog');
2242
+ * },
2243
+ * );
2244
+ *
2245
+ * console.log(queries.getResultTable('dogColors'));
2246
+ * // -> {fido: {color: 'brown'}, cujo: {color: 'black'}}
2247
+ *
2248
+ * console.log(queries.getResultTable('catColors'));
2249
+ * // -> {}
2250
+ * ```
2251
+ * @category Result
2252
+ * @since v2.0.0
2253
+ */
2254
+ getResultTable(queryId: Id): ResultTable;
2255
+
2256
+ /**
2257
+ * The getResultTableCellIds method returns the Ids of every ResultCell used
2258
+ * across the ResultTable of the given query.
2259
+ *
2260
+ * This has the same behavior as a Store's getTableCellIds method. For
2261
+ * example, if the query Id is invalid, the method returns an empty array.
2262
+ * Similarly, it returns a copy of, rather than a reference to the list of
2263
+ * Ids, so changes made to the list object are not made to the query results
2264
+ * themselves.
2265
+ * @param queryId The Id of a query.
2266
+ * @returns An array of the Ids of every ResultCell used across the
2267
+ * ResultTable of the query.
2268
+ * @example
2269
+ * This example creates a Queries object, a single query definition, and then
2270
+ * calls this method on it (as well as a non-existent definition) to get the
2271
+ * ResultCell Ids.
2272
+ *
2273
+ * ```js
2274
+ * import {createQueries, createStore} from 'tinybase';
2275
+ *
2276
+ * const store = createStore().setTable('pets', {
2277
+ * fido: {species: 'dog', color: 'brown'},
2278
+ * felix: {species: 'cat', color: 'black'},
2279
+ * cujo: {species: 'dog', color: 'black', legs: 4},
2280
+ * });
2281
+ *
2282
+ * const queries = createQueries(store).setQueryDefinition(
2283
+ * 'dogColors',
2284
+ * 'pets',
2285
+ * ({select, where}) => {
2286
+ * select('color');
2287
+ * select('legs');
2288
+ * where('species', 'dog');
2289
+ * },
2290
+ * );
2291
+ *
2292
+ * console.log(queries.getResultTableCellIds('dogColors'));
2293
+ * // -> ['color', 'legs']
2294
+ *
2295
+ * console.log(queries.getResultTableCellIds('catColors'));
2296
+ * // -> []
2297
+ * ```
2298
+ * @category Result
2299
+ * @since v4.1.0
2300
+ */
2301
+ getResultTableCellIds(queryId: Id): Ids;
2302
+
2303
+ /**
2304
+ * The getResultRowCount method returns the count of the ResultRow objects in
2305
+ * the ResultTable of the given query.
2306
+ *
2307
+ * This has the same behavior as a Store's getRowCount method. For example, if
2308
+ * the query Id is invalid, the method returns zero.
2309
+ * @param queryId The Id of a query.
2310
+ * @returns The number of ResultRow objects in the result of the query.
2311
+ * @example
2312
+ * This example creates a Queries object, a single query definition, and then
2313
+ * calls this method on it (as well as a non-existent definition) to get the
2314
+ * ResultRow count.
2315
+ *
2316
+ * ```js
2317
+ * import {createQueries, createStore} from 'tinybase';
2318
+ *
2319
+ * const store = createStore().setTable('pets', {
2320
+ * fido: {species: 'dog', color: 'brown'},
2321
+ * felix: {species: 'cat', color: 'black'},
2322
+ * cujo: {species: 'dog', color: 'black'},
2323
+ * });
2324
+ *
2325
+ * const queries = createQueries(store).setQueryDefinition(
2326
+ * 'dogColors',
2327
+ * 'pets',
2328
+ * ({select, where}) => {
2329
+ * select('color');
2330
+ * where('species', 'dog');
2331
+ * },
2332
+ * );
2333
+ *
2334
+ * console.log(queries.getResultRowCount('dogColors'));
2335
+ * // -> 2
2336
+ *
2337
+ * console.log(queries.getResultRowCount('catColors'));
2338
+ * // -> 0
2339
+ * ```
2340
+ * @category Result
2341
+ * @since v4.1.0
2342
+ */
2343
+ getResultRowCount(queryId: Id): number;
2344
+
2345
+ /**
2346
+ * The getResultRowIds method returns the Ids of every ResultRow in the
2347
+ * ResultTable of the given query.
2348
+ *
2349
+ * This has the same behavior as a Store's getRowIds method. For example, if
2350
+ * the query Id is invalid, the method returns an empty array. Similarly, it
2351
+ * returns a copy of, rather than a reference to the list of Ids, so changes
2352
+ * made to the list object are not made to the query results themselves.
2353
+ * @param queryId The Id of a query.
2354
+ * @returns An array of the Ids of every ResultRow in the result of the query.
2355
+ * @example
2356
+ * This example creates a Queries object, a single query definition, and then
2357
+ * calls this method on it (as well as a non-existent definition) to get the
2358
+ * ResultRow Ids.
2359
+ *
2360
+ * ```js
2361
+ * import {createQueries, createStore} from 'tinybase';
2362
+ *
2363
+ * const store = createStore().setTable('pets', {
2364
+ * fido: {species: 'dog', color: 'brown'},
2365
+ * felix: {species: 'cat', color: 'black'},
2366
+ * cujo: {species: 'dog', color: 'black'},
2367
+ * });
2368
+ *
2369
+ * const queries = createQueries(store).setQueryDefinition(
2370
+ * 'dogColors',
2371
+ * 'pets',
2372
+ * ({select, where}) => {
2373
+ * select('color');
2374
+ * where('species', 'dog');
2375
+ * },
2376
+ * );
2377
+ *
2378
+ * console.log(queries.getResultRowIds('dogColors'));
2379
+ * // -> ['fido', 'cujo']
2380
+ *
2381
+ * console.log(queries.getResultRowIds('catColors'));
2382
+ * // -> []
2383
+ * ```
2384
+ * @category Result
2385
+ * @since v2.0.0
2386
+ */
2387
+ getResultRowIds(queryId: Id): Ids;
2388
+
2389
+ /**
2390
+ * The getResultSortedRowIds method returns the Ids of every ResultRow in the
2391
+ * ResultTable of the given query, sorted according to the values in a
2392
+ * specified ResultCell.
2393
+ *
2394
+ * This has the same behavior as a Store's getSortedRowIds method. For
2395
+ * example, if the query Id is invalid, the method returns an empty array.
2396
+ * Similarly, the sorting of the rows is alphanumeric, and you can indicate
2397
+ * whether it should be in descending order. The `offset` and `limit`
2398
+ * parameters are used to paginate results, but default to `0` and `undefined`
2399
+ * to return all available ResultRow Ids if not specified.
2400
+ *
2401
+ * Note that every call to this method will perform the sorting afresh - there
2402
+ * is no caching of the results - and so you are advised to memoize the
2403
+ * results yourself, especially when the ResultTable is large. For a
2404
+ * performant approach to tracking the sorted ResultRow Ids when they change,
2405
+ * use the addResultSortedRowIdsListener method.
2406
+ * @param queryId The Id of a query.
2407
+ * @param cellId The Id of the ResultCell whose values are used for the
2408
+ * sorting, or `undefined` to by sort the ResultRow Id itself.
2409
+ * @param descending Whether the sorting should be in descending order.
2410
+ * @param offset The number of ResultRow Ids to skip for pagination purposes,
2411
+ * if any.
2412
+ * @param limit The maximum number of ResultRow Ids to return, or `undefined`
2413
+ * for all.
2414
+ * @returns An array of the sorted Ids of every ResultRow in the result of the
2415
+ * query.
2416
+ * @example
2417
+ * This example creates a Queries object, a single query definition, and then
2418
+ * calls this method on it (as well as a non-existent definition) to get the
2419
+ * ResultRow Ids.
2420
+ *
2421
+ * ```js
2422
+ * import {createQueries, createStore} from 'tinybase';
2423
+ *
2424
+ * const store = createStore().setTable('pets', {
2425
+ * fido: {species: 'dog', color: 'brown'},
2426
+ * felix: {species: 'cat', color: 'black'},
2427
+ * cujo: {species: 'dog', color: 'black'},
2428
+ * });
2429
+ *
2430
+ * const queries = createQueries(store).setQueryDefinition(
2431
+ * 'dogColors',
2432
+ * 'pets',
2433
+ * ({select, where}) => {
2434
+ * select('color');
2435
+ * where('species', 'dog');
2436
+ * },
2437
+ * );
2438
+ *
2439
+ * console.log(queries.getResultSortedRowIds('dogColors', 'color'));
2440
+ * // -> ['cujo', 'fido']
2441
+ *
2442
+ * console.log(queries.getResultSortedRowIds('catColors', 'color'));
2443
+ * // -> []
2444
+ * ```
2445
+ * @category Result
2446
+ * @since v2.0.0
2447
+ */
2448
+ getResultSortedRowIds(
2449
+ queryId: Id,
2450
+ cellId?: Id,
2451
+ descending?: boolean,
2452
+ offset?: number,
2453
+ limit?: number,
2454
+ ): Ids;
2455
+
2456
+ /**
2457
+ * The getResultRow method returns an object containing the entire data of a
2458
+ * single ResultRow in the ResultTable of the given query.
2459
+ *
2460
+ * This has the same behavior as a Store's getRow method. For example, if the
2461
+ * query or ResultRow Id is invalid, the method returns an empty object.
2462
+ * Similarly, it returns a copy of, rather than a reference to the underlying
2463
+ * data, so changes made to the returned object are not made to the query
2464
+ * results themselves.
2465
+ * @param queryId The Id of a query.
2466
+ * @param rowId The Id of the ResultRow in the ResultTable.
2467
+ * @returns An object containing the entire data of the ResultRow in the
2468
+ * ResultTable of the query.
2469
+ * @example
2470
+ * This example creates a Queries object, a single query definition, and then
2471
+ * calls this method on it (as well as a non-existent ResultRow Id) to get
2472
+ * the ResultRow.
2473
+ *
2474
+ * ```js
2475
+ * import {createQueries, createStore} from 'tinybase';
2476
+ *
2477
+ * const store = createStore().setTable('pets', {
2478
+ * fido: {species: 'dog', color: 'brown'},
2479
+ * felix: {species: 'cat', color: 'black'},
2480
+ * cujo: {species: 'dog', color: 'black'},
2481
+ * });
2482
+ *
2483
+ * const queries = createQueries(store).setQueryDefinition(
2484
+ * 'dogColors',
2485
+ * 'pets',
2486
+ * ({select, where}) => {
2487
+ * select('color');
2488
+ * where('species', 'dog');
2489
+ * },
2490
+ * );
2491
+ *
2492
+ * console.log(queries.getResultRow('dogColors', 'fido'));
2493
+ * // -> {color: 'brown'}
2494
+ *
2495
+ * console.log(queries.getResultRow('dogColors', 'felix'));
2496
+ * // -> {}
2497
+ * ```
2498
+ * @category Result
2499
+ * @since v2.0.0
2500
+ */
2501
+ getResultRow(queryId: Id, rowId: Id): ResultRow;
2502
+
2503
+ /**
2504
+ * The getResultCellIds method returns the Ids of every ResultCell in a given
2505
+ * ResultRow, in the ResultTable of the given query.
2506
+ *
2507
+ * This has the same behavior as a Store's getCellIds method. For example, if
2508
+ * the query Id or ResultRow Id is invalid, the method returns an empty array.
2509
+ * Similarly, it returns a copy of, rather than a reference to the list of
2510
+ * Ids, so changes made to the list object are not made to the query results
2511
+ * themselves.
2512
+ * @param queryId The Id of a query.
2513
+ * @param rowId The Id of the ResultRow in the ResultTable.
2514
+ * @returns An array of the Ids of every ResultCell in the ResultRow in the
2515
+ * result of the query.
2516
+ * @example
2517
+ * This example creates a Queries object, a single query definition, and then
2518
+ * calls this method on it (as well as a non-existent ResultRow Id) to get the
2519
+ * ResultCell Ids.
2520
+ *
2521
+ * ```js
2522
+ * import {createQueries, createStore} from 'tinybase';
2523
+ *
2524
+ * const store = createStore().setTable('pets', {
2525
+ * fido: {species: 'dog', color: 'brown'},
2526
+ * felix: {species: 'cat', color: 'black'},
2527
+ * cujo: {species: 'dog', color: 'black'},
2528
+ * });
2529
+ *
2530
+ * const queries = createQueries(store).setQueryDefinition(
2531
+ * 'dogColors',
2532
+ * 'pets',
2533
+ * ({select, where}) => {
2534
+ * select('color');
2535
+ * where('species', 'dog');
2536
+ * },
2537
+ * );
2538
+ *
2539
+ * console.log(queries.getResultCellIds('dogColors', 'fido'));
2540
+ * // -> ['color']
2541
+ *
2542
+ * console.log(queries.getResultCellIds('dogColors', 'felix'));
2543
+ * // -> []
2544
+ * ```
2545
+ * @category Result
2546
+ * @since v2.0.0
2547
+ */
2548
+ getResultCellIds(queryId: Id, rowId: Id): Ids;
2549
+
2550
+ /**
2551
+ * The getResultCell method returns the value of a single ResultCell in a
2552
+ * given ResultRow, in the ResultTable of the given query.
2553
+ *
2554
+ * This has the same behavior as a Store's getCell method. For example, if the
2555
+ * query, or ResultRow, or ResultCell Id is invalid, the method returns
2556
+ * `undefined`.
2557
+ * @param queryId The Id of a query.
2558
+ * @param rowId The Id of the ResultRow in the ResultTable.
2559
+ * @param cellId The Id of the ResultCell in the ResultRow.
2560
+ * @returns The value of the ResultCell, or `undefined`.
2561
+ * @example
2562
+ * This example creates a Queries object, a single query definition, and then
2563
+ * calls this method on it (as well as a non-existent ResultCell Id) to get
2564
+ * the ResultCell.
2565
+ *
2566
+ * ```js
2567
+ * import {createQueries, createStore} from 'tinybase';
2568
+ *
2569
+ * const store = createStore().setTable('pets', {
2570
+ * fido: {species: 'dog', color: 'brown'},
2571
+ * felix: {species: 'cat', color: 'black'},
2572
+ * cujo: {species: 'dog', color: 'black'},
2573
+ * });
2574
+ *
2575
+ * const queries = createQueries(store).setQueryDefinition(
2576
+ * 'dogColors',
2577
+ * 'pets',
2578
+ * ({select, where}) => {
2579
+ * select('color');
2580
+ * where('species', 'dog');
2581
+ * },
2582
+ * );
2583
+ *
2584
+ * console.log(queries.getResultCell('dogColors', 'fido', 'color'));
2585
+ * // -> 'brown'
2586
+ *
2587
+ * console.log(queries.getResultCell('dogColors', 'fido', 'species'));
2588
+ * // -> undefined
2589
+ * ```
2590
+ * @category Result
2591
+ * @since v2.0.0
2592
+ */
2593
+ getResultCell(queryId: Id, rowId: Id, cellId: Id): ResultCellOrUndefined;
2594
+
2595
+ /**
2596
+ * The hasResultTable method returns a boolean indicating whether a given
2597
+ * ResultTable exists.
2598
+ * @param queryId The Id of a possible query.
2599
+ * @returns Whether a ResultTable for that query Id exists.
2600
+ * @example
2601
+ * This example shows two simple ResultTable existence checks.
2602
+ *
2603
+ * ```js
2604
+ * import {createQueries, createStore} from 'tinybase';
2605
+ *
2606
+ * const store = createStore().setTable('pets', {
2607
+ * fido: {species: 'dog', color: 'brown'},
2608
+ * felix: {species: 'cat', color: 'black'},
2609
+ * cujo: {species: 'dog', color: 'black'},
2610
+ * });
2611
+ *
2612
+ * const queries = createQueries(store).setQueryDefinition(
2613
+ * 'dogColors',
2614
+ * 'pets',
2615
+ * ({select, where}) => {
2616
+ * select('color');
2617
+ * where('species', 'dog');
2618
+ * },
2619
+ * );
2620
+ *
2621
+ * console.log(queries.hasResultTable('dogColors'));
2622
+ * // -> true
2623
+ * console.log(queries.hasResultTable('catColors'));
2624
+ * // -> false
2625
+ * ```
2626
+ * @category Result
2627
+ * @since v2.0.0
2628
+ */
2629
+ hasResultTable(queryId: Id): boolean;
2630
+
2631
+ /**
2632
+ * The hasResultRow method returns a boolean indicating whether a given
2633
+ * ResultRow exists.
2634
+ * @param queryId The Id of a possible query.
2635
+ * @param rowId The Id of a possible ResultRow.
2636
+ * @returns Whether a ResultRow for that Id exists.
2637
+ * @example
2638
+ * This example shows two simple ResultRow existence checks.
2639
+ *
2640
+ * ```js
2641
+ * import {createQueries, createStore} from 'tinybase';
2642
+ *
2643
+ * const store = createStore().setTable('pets', {
2644
+ * fido: {species: 'dog', color: 'brown'},
2645
+ * felix: {species: 'cat', color: 'black'},
2646
+ * cujo: {species: 'dog', color: 'black'},
2647
+ * });
2648
+ *
2649
+ * const queries = createQueries(store).setQueryDefinition(
2650
+ * 'dogColors',
2651
+ * 'pets',
2652
+ * ({select, where}) => {
2653
+ * select('color');
2654
+ * where('species', 'dog');
2655
+ * },
2656
+ * );
2657
+ *
2658
+ * console.log(queries.hasResultRow('dogColors', 'fido'));
2659
+ * // -> true
2660
+ * console.log(queries.hasResultRow('dogColors', 'felix'));
2661
+ * // -> false
2662
+ * ```
2663
+ * @category Result
2664
+ * @since v2.0.0
2665
+ */
2666
+ hasResultRow(queryId: Id, rowId: Id): boolean;
2667
+
2668
+ /**
2669
+ * The hasResultCell method returns a boolean indicating whether a given
2670
+ * ResultCell exists.
2671
+ * @param queryId The Id of a possible query.
2672
+ * @param rowId The Id of a possible ResultRow.
2673
+ * @param cellId The Id of a possible ResultCell.
2674
+ * @returns Whether a ResultCell for that Id exists.
2675
+ * @example
2676
+ * This example shows two simple ResultRow existence checks.
2677
+ *
2678
+ * ```js
2679
+ * import {createQueries, createStore} from 'tinybase';
2680
+ *
2681
+ * const store = createStore().setTable('pets', {
2682
+ * fido: {species: 'dog', color: 'brown'},
2683
+ * felix: {species: 'cat', color: 'black'},
2684
+ * cujo: {species: 'dog', color: 'black'},
2685
+ * });
2686
+ *
2687
+ * const queries = createQueries(store).setQueryDefinition(
2688
+ * 'dogColors',
2689
+ * 'pets',
2690
+ * ({select, where}) => {
2691
+ * select('color');
2692
+ * where('species', 'dog');
2693
+ * },
2694
+ * );
2695
+ *
2696
+ * console.log(queries.hasResultCell('dogColors', 'fido', 'color'));
2697
+ * // -> true
2698
+ * console.log(queries.hasResultCell('dogColors', 'fido', 'species'));
2699
+ * // -> false
2700
+ * ```
2701
+ * @category Result
2702
+ * @since v2.0.0
2703
+ */
2704
+ hasResultCell(queryId: Id, rowId: Id, cellId: Id): boolean;
2705
+
2706
+ /**
2707
+ * The forEachResultTable method takes a function that it will then call for
2708
+ * each ResultTable in the Queries object.
2709
+ *
2710
+ * This method is useful for iterating over all the ResultTables of the
2711
+ * queries in a functional style. The `tableCallback` parameter is a
2712
+ * ResultTableCallback function that will be called with the Id of each
2713
+ * ResultTable, and with a function that can then be used to iterate over each
2714
+ * ResultRow of the ResultTable, should you wish.
2715
+ * @param tableCallback The function that should be called for every query's
2716
+ * ResultTable.
2717
+ * @example
2718
+ * This example iterates over each query's ResultTable in a Queries object.
2719
+ *
2720
+ * ```js
2721
+ * import {createQueries, createStore} from 'tinybase';
2722
+ *
2723
+ * const store = createStore().setTable('pets', {
2724
+ * fido: {species: 'dog', color: 'brown'},
2725
+ * felix: {species: 'cat', color: 'black'},
2726
+ * cujo: {species: 'dog', color: 'black'},
2727
+ * });
2728
+ *
2729
+ * const queries = createQueries(store)
2730
+ * .setQueryDefinition('dogColors', 'pets', ({select, where}) => {
2731
+ * select('color');
2732
+ * where('species', 'dog');
2733
+ * })
2734
+ * .setQueryDefinition('catColors', 'pets', ({select, where}) => {
2735
+ * select('color');
2736
+ * where('species', 'cat');
2737
+ * });
2738
+ *
2739
+ * queries.forEachResultTable((queryId, forEachRow) => {
2740
+ * console.log(queryId);
2741
+ * forEachRow((rowId) => console.log(`- ${rowId}`));
2742
+ * });
2743
+ * // -> 'dogColors'
2744
+ * // -> '- fido'
2745
+ * // -> '- cujo'
2746
+ * // -> 'catColors'
2747
+ * // -> '- felix'
2748
+ * ```
2749
+ * @category Iterator
2750
+ * @since v2.0.0
2751
+ */
2752
+ forEachResultTable(tableCallback: ResultTableCallback): void;
2753
+
2754
+ /**
2755
+ * The forEachResultRow method takes a function that it will then call for
2756
+ * each ResultRow in the ResultTable of a query.
2757
+ *
2758
+ * This method is useful for iterating over each ResultRow of the ResultTable
2759
+ * of the query in a functional style. The `rowCallback` parameter is a
2760
+ * ResultRowCallback function that will be called with the Id of each
2761
+ * ResultRow, and with a function that can then be used to iterate over each
2762
+ * ResultCell of the ResultRow, should you wish.
2763
+ * @param queryId The Id of a query.
2764
+ * @param rowCallback The function that should be called for every ResultRow
2765
+ * of the query's ResultTable.
2766
+ * @example
2767
+ * This example iterates over each ResultRow in a query's ResultTable.
2768
+ *
2769
+ * ```js
2770
+ * import {createQueries, createStore} from 'tinybase';
2771
+ *
2772
+ * const store = createStore().setTable('pets', {
2773
+ * fido: {species: 'dog', color: 'brown'},
2774
+ * felix: {species: 'cat', color: 'black'},
2775
+ * cujo: {species: 'dog', color: 'black'},
2776
+ * });
2777
+ *
2778
+ * const queries = createQueries(store).setQueryDefinition(
2779
+ * 'dogColors',
2780
+ * 'pets',
2781
+ * ({select, where}) => {
2782
+ * select('color');
2783
+ * where('species', 'dog');
2784
+ * },
2785
+ * );
2786
+ *
2787
+ * queries.forEachResultRow('dogColors', (rowId, forEachCell) => {
2788
+ * console.log(rowId);
2789
+ * forEachCell((cellId) => console.log(`- ${cellId}`));
2790
+ * });
2791
+ * // -> 'fido'
2792
+ * // -> '- color'
2793
+ * // -> 'cujo'
2794
+ * // -> '- color'
2795
+ * ```
2796
+ * @category Iterator
2797
+ * @since v2.0.0
2798
+ */
2799
+ forEachResultRow(queryId: Id, rowCallback: ResultRowCallback): void;
2800
+
2801
+ /**
2802
+ * The forEachResultCell method takes a function that it will then call for
2803
+ * each ResultCell in the ResultRow of a query.
2804
+ *
2805
+ * This method is useful for iterating over each ResultCell of the ResultRow
2806
+ * of the query in a functional style. The `cellCallback` parameter is a
2807
+ * ResultCellCallback function that will be called with the Id and value of
2808
+ * each ResultCell.
2809
+ * @param queryId The Id of a query.
2810
+ * @param rowId The Id of a ResultRow in the query's ResultTable.
2811
+ * @param cellCallback The function that should be called for every ResultCell
2812
+ * of the query's ResultRow.
2813
+ * @example
2814
+ * This example iterates over each ResultCell in a query's ResultRow.
2815
+ *
2816
+ * ```js
2817
+ * import {createQueries, createStore} from 'tinybase';
2818
+ *
2819
+ * const store = createStore().setTable('pets', {
2820
+ * fido: {species: 'dog', color: 'brown'},
2821
+ * felix: {species: 'cat', color: 'black'},
2822
+ * cujo: {species: 'dog', color: 'black'},
2823
+ * });
2824
+ *
2825
+ * const queries = createQueries(store).setQueryDefinition(
2826
+ * 'dogColors',
2827
+ * 'pets',
2828
+ * ({select, where}) => {
2829
+ * select('species');
2830
+ * select('color');
2831
+ * where('species', 'dog');
2832
+ * },
2833
+ * );
2834
+ *
2835
+ * queries.forEachResultCell('dogColors', 'fido', (cellId, cell) => {
2836
+ * console.log(`${cellId}: ${cell}`);
2837
+ * });
2838
+ * // -> 'species: dog'
2839
+ * // -> 'color: brown'
2840
+ * ```
2841
+ * @category Iterator
2842
+ * @since v2.0.0
2843
+ */
2844
+ forEachResultCell(
2845
+ queryId: Id,
2846
+ rowId: Id,
2847
+ cellCallback: ResultCellCallback,
2848
+ ): void;
2849
+
2850
+ /**
2851
+ * The addQueryIdsListener method registers a listener function with the
2852
+ * Queries object that will be called whenever an Query definition is added or
2853
+ * removed.
2854
+ *
2855
+ * This has schema-based typing. The following is a simplified representation:
2856
+ *
2857
+ * ```ts override
2858
+ * addQueryIdsListener(listener: QueryIdsListener): Id;
2859
+ * ```
2860
+ *
2861
+ * The provided listener is a QueryIdsListener function, and will be called
2862
+ * with a reference to the Queries object.
2863
+ * @param listener The function that will be called whenever a Query
2864
+ * definition is added or removed.
2865
+ * @example
2866
+ * This example creates a Store, a Queries object, and then registers a
2867
+ * listener that responds to the addition and the removal of a Query
2868
+ * definition.
2869
+ *
2870
+ * ```js
2871
+ * import {createQueries, createStore} from 'tinybase';
2872
+ *
2873
+ * const store = createStore().setTable('pets', {
2874
+ * fido: {species: 'dog', color: 'brown'},
2875
+ * felix: {species: 'cat', color: 'black'},
2876
+ * cujo: {species: 'dog', color: 'black'},
2877
+ * });
2878
+ *
2879
+ * const queries = createQueries(store);
2880
+ * const listenerId = queries.addQueryIdsListener((queries) => {
2881
+ * console.log(queries.getQueryIds());
2882
+ * });
2883
+ *
2884
+ * queries.setQueryDefinition('dogColors', 'pets', ({select, where}) => {
2885
+ * select('color');
2886
+ * where('species', 'dog');
2887
+ * });
2888
+ * // -> ['dogColors']
2889
+ * queries.delQueryDefinition('dogColors');
2890
+ * // -> []
2891
+ *
2892
+ * queries.delListener(listenerId);
2893
+ * ```
2894
+ * @category Listener
2895
+ * @since v4.1.0
2896
+ */
2897
+ addQueryIdsListener(listener: QueryIdsListener<Schemas>): Id;
2898
+
2899
+ /**
2900
+ * The addResultTableListener method registers a listener function with the
2901
+ * Queries object that will be called whenever data in a ResultTable changes.
2902
+ *
2903
+ * This has schema-based typing. The following is a simplified representation:
2904
+ *
2905
+ * ```ts override
2906
+ * addResultTableListener(queryId: IdOrNull, listener: ResultTableListener): Id;
2907
+ * ```
2908
+ *
2909
+ * The provided listener is a ResultTableListener function, and will be called
2910
+ * with a reference to the Queries object, the Id of the ResultTable that
2911
+ * changed (which is also the query Id), and a GetResultCellChange function in
2912
+ * case you need to inspect any changes that occurred.
2913
+ *
2914
+ * You can either listen to a single ResultTable (by specifying a query Id as
2915
+ * the method's first parameter) or changes to any ResultTable (by providing a
2916
+ * `null` wildcard).
2917
+ * @param queryId The Id of the query to listen to, or `null` as a wildcard.
2918
+ * @param listener The function that will be called whenever data in the
2919
+ * matching ResultTable changes.
2920
+ * @returns A unique Id for the listener that can later be used to remove it.
2921
+ * @example
2922
+ * This example registers a listener that responds to any changes to a
2923
+ * specific ResultTable.
2924
+ *
2925
+ * ```js
2926
+ * import {createQueries, createStore} from 'tinybase';
2927
+ *
2928
+ * const store = createStore().setTable('pets', {
2929
+ * fido: {species: 'dog', color: 'brown'},
2930
+ * felix: {species: 'cat', color: 'black'},
2931
+ * cujo: {species: 'dog', color: 'black'},
2932
+ * });
2933
+ *
2934
+ * const queries = createQueries(store).setQueryDefinition(
2935
+ * 'dogColors',
2936
+ * 'pets',
2937
+ * ({select, where}) => {
2938
+ * select('color');
2939
+ * where('species', 'dog');
2940
+ * },
2941
+ * );
2942
+ *
2943
+ * const listenerId = queries.addResultTableListener(
2944
+ * 'dogColors',
2945
+ * (queries, tableId, getCellChange) => {
2946
+ * console.log('dogColors result table changed');
2947
+ * console.log(getCellChange('dogColors', 'fido', 'color'));
2948
+ * },
2949
+ * );
2950
+ *
2951
+ * store.setCell('pets', 'fido', 'color', 'walnut');
2952
+ * // -> 'dogColors result table changed'
2953
+ * // -> [true, 'brown', 'walnut']
2954
+ *
2955
+ * store.delListener(listenerId);
2956
+ * ```
2957
+ * @example
2958
+ * This example registers a listener that responds to any changes to any
2959
+ * ResultTable.
2960
+ *
2961
+ * ```js
2962
+ * import {createQueries, createStore} from 'tinybase';
2963
+ *
2964
+ * const store = createStore().setTable('pets', {
2965
+ * fido: {species: 'dog', color: 'brown'},
2966
+ * felix: {species: 'cat', color: 'black'},
2967
+ * cujo: {species: 'dog', color: 'black'},
2968
+ * });
2969
+ *
2970
+ * const queries = createQueries(store)
2971
+ * .setQueryDefinition('dogColors', 'pets', ({select, where}) => {
2972
+ * select('color');
2973
+ * where('species', 'dog');
2974
+ * })
2975
+ * .setQueryDefinition('catColors', 'pets', ({select, where}) => {
2976
+ * select('color');
2977
+ * where('species', 'cat');
2978
+ * });
2979
+ *
2980
+ * const listenerId = queries.addResultTableListener(
2981
+ * null,
2982
+ * (queries, tableId) => {
2983
+ * console.log(`${tableId} result table changed`);
2984
+ * },
2985
+ * );
2986
+ *
2987
+ * store.setCell('pets', 'fido', 'color', 'walnut');
2988
+ * // -> 'dogColors result table changed'
2989
+ * store.setCell('pets', 'felix', 'color', 'tortoiseshell');
2990
+ * // -> 'catColors result table changed'
2991
+ *
2992
+ * store.delListener(listenerId);
2993
+ * ```
2994
+ * @category Listener
2995
+ * @since v2.0.0
2996
+ */
2997
+ addResultTableListener(
2998
+ queryId: IdOrNull,
2999
+ listener: ResultTableListener<Schemas>,
3000
+ ): Id;
3001
+
3002
+ /**
3003
+ * The addResultTableCellIdsListener method registers a listener function with
3004
+ * the Queries object that will be called whenever the Cell Ids that
3005
+ * appear anywhere in a ResultTable change.
3006
+ *
3007
+ * This has schema-based typing. The following is a simplified representation:
3008
+ *
3009
+ * ```ts override
3010
+ * addResultTableCellIdsListener(
3011
+ * queryId: IdOrNull,
3012
+ * listener: ResultTableCellIdsListener,
3013
+ * ): Id;
3014
+ * ```
3015
+ *
3016
+ * The provided listener is a ResultTableCellIdsListener function, and will be
3017
+ * called with a reference to the Queries object and the Id of the ResultTable
3018
+ * that changed (which is also the query Id).
3019
+ *
3020
+ * By default, such a listener is only called when a Cell Id is added
3021
+ * to, or removed from, the ResultTable. To listen to all changes in the
3022
+ * ResultTable, use the addResultTableListener method.
3023
+ *
3024
+ * You can either listen to a single ResultTable (by specifying a query Id as
3025
+ * the method's first parameter) or changes to any ResultTable (by providing a
3026
+ * `null` wildcard).
3027
+ * @param queryId The Id of the query to listen to, or `null` as a wildcard.
3028
+ * @param listener The function that will be called whenever the Cell
3029
+ * Ids that appear anywhere in the ResultTable change.
3030
+ * @returns A unique Id for the listener that can later be used to remove it.
3031
+ * @example
3032
+ * This example registers a listener that responds to any change to the
3033
+ * Cell Ids of a specific ResultTable.
3034
+ *
3035
+ * ```js
3036
+ * import {createQueries, createStore} from 'tinybase';
3037
+ *
3038
+ * const store = createStore().setTable('pets', {
3039
+ * fido: {species: 'dog', color: 'brown'},
3040
+ * felix: {species: 'cat', color: 'black'},
3041
+ * cujo: {species: 'dog', color: 'black'},
3042
+ * });
3043
+ *
3044
+ * const queries = createQueries(store).setQueryDefinition(
3045
+ * 'dogColorsAndLegs',
3046
+ * 'pets',
3047
+ * ({select, where}) => {
3048
+ * select('color');
3049
+ * select('legs');
3050
+ * where('species', 'dog');
3051
+ * },
3052
+ * );
3053
+ *
3054
+ * const listenerId = queries.addResultTableCellIdsListener(
3055
+ * 'dogColorsAndLegs',
3056
+ * (queries) => {
3057
+ * console.log(`Cell Ids for dogColorsAndLegs result table changed`);
3058
+ * console.log(queries.getResultTableCellIds('dogColorsAndLegs'));
3059
+ * },
3060
+ * );
3061
+ *
3062
+ * store.setCell('pets', 'cujo', 'legs', 4);
3063
+ * // -> 'Cell Ids for dogColorsAndLegs result table changed'
3064
+ * // -> ['color', 'legs']
3065
+ *
3066
+ * store.delListener(listenerId);
3067
+ * ```
3068
+ * @example
3069
+ * This example registers a listener that responds to any change to the
3070
+ * ResultCell Ids of any ResultTable.
3071
+ *
3072
+ * ```js
3073
+ * import {createQueries, createStore} from 'tinybase';
3074
+ *
3075
+ * const store = createStore().setTable('pets', {
3076
+ * fido: {species: 'dog', color: 'brown'},
3077
+ * felix: {species: 'cat', color: 'black', legs: 4},
3078
+ * cujo: {species: 'dog', color: 'black'},
3079
+ * });
3080
+ *
3081
+ * const queries = createQueries(store)
3082
+ * .setQueryDefinition('dogColorsAndLegs', 'pets', ({select, where}) => {
3083
+ * select('color');
3084
+ * select('legs');
3085
+ * where('species', 'dog');
3086
+ * })
3087
+ * .setQueryDefinition('catColorsAndLegs', 'pets', ({select, where}) => {
3088
+ * select('color');
3089
+ * select('legs');
3090
+ * where('species', 'cat');
3091
+ * });
3092
+ *
3093
+ * const listenerId = queries.addResultTableCellIdsListener(
3094
+ * null,
3095
+ * (queries, tableId) => {
3096
+ * console.log(`Cell Ids for ${tableId} result table changed`);
3097
+ * },
3098
+ * );
3099
+ *
3100
+ * store.setCell('pets', 'cujo', 'legs', 4);
3101
+ * // -> 'Cell Ids for dogColorsAndLegs result table changed'
3102
+ * store.delCell('pets', 'felix', 'legs');
3103
+ * // -> 'Cell Ids for catColorsAndLegs result table changed'
3104
+ *
3105
+ * store.delListener(listenerId);
3106
+ * ```
3107
+ * @category Listener
3108
+ * @since v2.0.0
3109
+ */
3110
+ addResultTableCellIdsListener(
3111
+ queryId: IdOrNull,
3112
+ listener: ResultTableCellIdsListener<Schemas>,
3113
+ ): Id;
3114
+
3115
+ /**
3116
+ * The addResultRowCountListener method registers a listener function with the
3117
+ * Queries object that will be called whenever the count of ResultRow objects
3118
+ * in a ResultTable changes.
3119
+ *
3120
+ * This has schema-based typing. The following is a simplified representation:
3121
+ *
3122
+ * ```ts override
3123
+ * addResultRowCountListener(
3124
+ * queryId: IdOrNull,
3125
+ * listener: ResultRowCountListener,
3126
+ * ): Id;
3127
+ * ```
3128
+ *
3129
+ * The provided listener is a ResultRowCountListener function, and will be
3130
+ * called with a reference to the Queries object, the Id of the ResultTable
3131
+ * that changed (which is also the query Id), and the number of ResultRow
3132
+ * objects in th ResultTable.
3133
+ *
3134
+ * You can either listen to a single ResultTable (by specifying a query Id as
3135
+ * the method's first parameter) or changes to any ResultTable (by providing a
3136
+ * `null` wildcard).
3137
+ * @param queryId The Id of the query to listen to, or `null` as a wildcard.
3138
+ * @param listener The function that will be called whenever the number of
3139
+ * ResultRow objects in the ResultTable change.
3140
+ * @returns A unique Id for the listener that can later be used to remove it.
3141
+ * @example
3142
+ * This example registers a listener that responds to a change in the number
3143
+ * of ResultRow objects in a specific ResultTable.
3144
+ *
3145
+ * ```js
3146
+ * import {createQueries, createStore} from 'tinybase';
3147
+ *
3148
+ * const store = createStore().setTable('pets', {
3149
+ * fido: {species: 'dog', color: 'brown'},
3150
+ * felix: {species: 'cat', color: 'black'},
3151
+ * cujo: {species: 'dog', color: 'black'},
3152
+ * });
3153
+ *
3154
+ * const queries = createQueries(store).setQueryDefinition(
3155
+ * 'dogColors',
3156
+ * 'pets',
3157
+ * ({select, where}) => {
3158
+ * select('color');
3159
+ * where('species', 'dog');
3160
+ * },
3161
+ * );
3162
+ *
3163
+ * const listenerId = queries.addResultRowCountListener(
3164
+ * 'dogColors',
3165
+ * (queries, tableId, count) => {
3166
+ * console.log(
3167
+ * 'Row count for dogColors result table changed to ' + count,
3168
+ * );
3169
+ * },
3170
+ * );
3171
+ *
3172
+ * store.setRow('pets', 'rex', {species: 'dog', color: 'tan'});
3173
+ * // -> 'Row count for dogColors result table changed to 3'
3174
+ *
3175
+ * store.delListener(listenerId);
3176
+ * ```
3177
+ * @example
3178
+ * This example registers a listener that responds to a change in the number
3179
+ * of ResultRow objects any ResultTable.
3180
+ *
3181
+ * ```js
3182
+ * import {createQueries, createStore} from 'tinybase';
3183
+ *
3184
+ * const store = createStore().setTable('pets', {
3185
+ * fido: {species: 'dog', color: 'brown'},
3186
+ * felix: {species: 'cat', color: 'black'},
3187
+ * cujo: {species: 'dog', color: 'black'},
3188
+ * });
3189
+ *
3190
+ * const queries = createQueries(store)
3191
+ * .setQueryDefinition('dogColors', 'pets', ({select, where}) => {
3192
+ * select('color');
3193
+ * where('species', 'dog');
3194
+ * })
3195
+ * .setQueryDefinition('catColors', 'pets', ({select, where}) => {
3196
+ * select('color');
3197
+ * where('species', 'cat');
3198
+ * });
3199
+ *
3200
+ * const listenerId = queries.addResultRowCountListener(
3201
+ * null,
3202
+ * (queries, tableId, count) => {
3203
+ * console.log(
3204
+ * `Row count for ${tableId} result table changed to ${count}`,
3205
+ * );
3206
+ * },
3207
+ * );
3208
+ *
3209
+ * store.setRow('pets', 'rex', {species: 'dog', color: 'tan'});
3210
+ * // -> 'Row count for dogColors result table changed to 3'
3211
+ * store.setRow('pets', 'tom', {species: 'cat', color: 'gray'});
3212
+ * // -> 'Row count for catColors result table changed to 2'
3213
+ *
3214
+ * store.delListener(listenerId);
3215
+ * ```
3216
+ * @category Listener
3217
+ * @since v4.1.0
3218
+ */
3219
+ addResultRowCountListener(
3220
+ queryId: IdOrNull,
3221
+ listener: ResultRowCountListener<Schemas>,
3222
+ ): Id;
3223
+
3224
+ /**
3225
+ * The addResultRowIdsListener method registers a listener function with the
3226
+ * Queries object that will be called whenever the ResultRow Ids in a
3227
+ * ResultTable change.
3228
+ *
3229
+ * This has schema-based typing. The following is a simplified representation:
3230
+ *
3231
+ * ```ts override
3232
+ * addResultRowIdsListener(
3233
+ * queryId: IdOrNull,
3234
+ * listener: ResultRowIdsListener,
3235
+ * ): Id;
3236
+ * ```
3237
+ *
3238
+ * The provided listener is a ResultRowIdsListener function, and will be
3239
+ * called with a reference to the Queries object and the Id of the ResultTable
3240
+ * that changed (which is also the query Id).
3241
+ *
3242
+ * By default, such a listener is only called when a ResultRow is added to, or
3243
+ * removed from, the ResultTable. To listen to all changes in the ResultTable,
3244
+ * use the addResultTableListener method.
3245
+ *
3246
+ * You can either listen to a single ResultTable (by specifying a query Id as
3247
+ * the method's first parameter) or changes to any ResultTable (by providing a
3248
+ * `null` wildcard).
3249
+ * @param queryId The Id of the query to listen to, or `null` as a wildcard.
3250
+ * @param listener The function that will be called whenever the ResultRow Ids
3251
+ * in the ResultTable change.
3252
+ * @returns A unique Id for the listener that can later be used to remove it.
3253
+ * @example
3254
+ * This example registers a listener that responds to any change to the
3255
+ * ResultRow Ids of a specific ResultTable.
3256
+ *
3257
+ * ```js
3258
+ * import {createQueries, createStore} from 'tinybase';
3259
+ *
3260
+ * const store = createStore().setTable('pets', {
3261
+ * fido: {species: 'dog', color: 'brown'},
3262
+ * felix: {species: 'cat', color: 'black'},
3263
+ * cujo: {species: 'dog', color: 'black'},
3264
+ * });
3265
+ *
3266
+ * const queries = createQueries(store).setQueryDefinition(
3267
+ * 'dogColors',
3268
+ * 'pets',
3269
+ * ({select, where}) => {
3270
+ * select('color');
3271
+ * where('species', 'dog');
3272
+ * },
3273
+ * );
3274
+ *
3275
+ * const listenerId = queries.addResultRowIdsListener(
3276
+ * 'dogColors',
3277
+ * (queries) => {
3278
+ * console.log(`Row Ids for dogColors result table changed`);
3279
+ * console.log(queries.getResultRowIds('dogColors'));
3280
+ * },
3281
+ * );
3282
+ *
3283
+ * store.setRow('pets', 'rex', {species: 'dog', color: 'tan'});
3284
+ * // -> 'Row Ids for dogColors result table changed'
3285
+ * // -> ['fido', 'cujo', 'rex']
3286
+ *
3287
+ * store.delListener(listenerId);
3288
+ * ```
3289
+ * @example
3290
+ * This example registers a listener that responds to any change to the
3291
+ * ResultRow Ids of any ResultTable.
3292
+ *
3293
+ * ```js
3294
+ * import {createQueries, createStore} from 'tinybase';
3295
+ *
3296
+ * const store = createStore().setTable('pets', {
3297
+ * fido: {species: 'dog', color: 'brown'},
3298
+ * felix: {species: 'cat', color: 'black'},
3299
+ * cujo: {species: 'dog', color: 'black'},
3300
+ * });
3301
+ *
3302
+ * const queries = createQueries(store)
3303
+ * .setQueryDefinition('dogColors', 'pets', ({select, where}) => {
3304
+ * select('color');
3305
+ * where('species', 'dog');
3306
+ * })
3307
+ * .setQueryDefinition('catColors', 'pets', ({select, where}) => {
3308
+ * select('color');
3309
+ * where('species', 'cat');
3310
+ * });
3311
+ *
3312
+ * const listenerId = queries.addResultRowIdsListener(
3313
+ * null,
3314
+ * (queries, tableId) => {
3315
+ * console.log(`Row Ids for ${tableId} result table changed`);
3316
+ * },
3317
+ * );
3318
+ *
3319
+ * store.setRow('pets', 'rex', {species: 'dog', color: 'tan'});
3320
+ * // -> 'Row Ids for dogColors result table changed'
3321
+ * store.setRow('pets', 'tom', {species: 'cat', color: 'gray'});
3322
+ * // -> 'Row Ids for catColors result table changed'
3323
+ *
3324
+ * store.delListener(listenerId);
3325
+ * ```
3326
+ * @category Listener
3327
+ * @since v2.0.0
3328
+ */
3329
+ addResultRowIdsListener(
3330
+ queryId: IdOrNull,
3331
+ listener: ResultRowIdsListener<Schemas>,
3332
+ ): Id;
3333
+
3334
+ /**
3335
+ * The addResultSortedRowIdsListener method registers a listener function with
3336
+ * the Queries object that will be called whenever sorted (and optionally,
3337
+ * paginated) ResultRow Ids in a ResultTable change.
3338
+ *
3339
+ * This has schema-based typing. The following is a simplified representation:
3340
+ *
3341
+ * ```ts override
3342
+ * addResultSortedRowIdsListener(
3343
+ * queryId: Id,
3344
+ * cellId: Id | undefined,
3345
+ * descending: boolean,
3346
+ * offset: number,
3347
+ * limit: number | undefined,
3348
+ * listener: ResultSortedRowIdsListener,
3349
+ * ): Id;
3350
+ * ```
3351
+ *
3352
+ * The provided listener is a ResultSortedRowIdsListener function, and will be
3353
+ * called with a reference to the Queries object, the Id of the ResultTable
3354
+ * whose ResultRow Ids sorting changed (which is also the query Id), the
3355
+ * ResultCell Id being used to sort them, whether descending or not, and the
3356
+ * offset and limit of the number of Ids returned, for pagination purposes. It
3357
+ * also receives the sorted array of Ids itself, so that you can use them in
3358
+ * the listener without the additional cost of an explicit call to the
3359
+ * getResultSortedRowIds method.
3360
+ *
3361
+ * Such a listener is called when a ResultRow is added or removed, but also
3362
+ * when a value in the specified ResultCell (somewhere in the ResultTable) has
3363
+ * changed enough to change the sorting of the ResultRow Ids.
3364
+ *
3365
+ * Unlike most other listeners, you cannot provide wildcards (due to the cost
3366
+ * of detecting changes to the sorting). You can only listen to a single
3367
+ * specified ResultTable, sorted by a single specified ResultCell.
3368
+ *
3369
+ * The sorting of the rows is alphanumeric, and you can indicate whether it
3370
+ * should be in descending order. The `offset` and `limit` parameters are used
3371
+ * to paginate results, but default to `0` and `undefined` to return all
3372
+ * available ResultRow Ids if not specified.
3373
+ * @param queryId The Id of the query to listen to.
3374
+ * @param cellId The Id of the ResultCell whose values are used for the
3375
+ * sorting, or `undefined` to by sort the ResultRow Id itself.
3376
+ * @param descending Whether the sorting should be in descending order.
3377
+ * @param offset The number of ResultRow Ids to skip for pagination purposes,
3378
+ * if any.
3379
+ * @param limit The maximum number of ResultRow Ids to return, or `undefined`
3380
+ * for all.
3381
+ * @param listener The function that will be called whenever the sorted
3382
+ * ResultRow Ids in the ResultTable change.
3383
+ * @returns A unique Id for the listener that can later be used to remove it.
3384
+ * @example
3385
+ * This example registers a listener that responds to any change to the sorted
3386
+ * ResultRow Ids of a specific ResultTable.
3387
+ *
3388
+ * ```js
3389
+ * import {createQueries, createStore} from 'tinybase';
3390
+ *
3391
+ * const store = createStore().setTable('pets', {
3392
+ * fido: {species: 'dog', color: 'brown'},
3393
+ * felix: {species: 'cat', color: 'black'},
3394
+ * cujo: {species: 'dog', color: 'black'},
3395
+ * });
3396
+ *
3397
+ * const queries = createQueries(store).setQueryDefinition(
3398
+ * 'dogColors',
3399
+ * 'pets',
3400
+ * ({select, where}) => {
3401
+ * select('color');
3402
+ * where('species', 'dog');
3403
+ * },
3404
+ * );
3405
+ *
3406
+ * const listenerId = queries.addResultSortedRowIdsListener(
3407
+ * 'dogColors',
3408
+ * 'color',
3409
+ * false,
3410
+ * 0,
3411
+ * undefined,
3412
+ * (queries, tableId, cellId, descending, offset, limit, sortedRowIds) => {
3413
+ * console.log(`Sorted row Ids for dogColors result table changed`);
3414
+ * console.log(sortedRowIds);
3415
+ * // ^ cheaper than calling getResultSortedRowIds again
3416
+ * },
3417
+ * );
3418
+ *
3419
+ * store.setRow('pets', 'rex', {species: 'dog', color: 'tan'});
3420
+ * // -> 'Sorted row Ids for dogColors result table changed'
3421
+ * // -> ['cujo', 'fido', 'rex']
3422
+ *
3423
+ * store.delListener(listenerId);
3424
+ * ```
3425
+ * @example
3426
+ * This example registers a listener that responds to any change to the sorted
3427
+ * ResultRow Ids of a specific ResultTable. The ResultRow Ids are sorted by
3428
+ * their own value, since the `cellId` parameter is explicitly undefined.
3429
+ *
3430
+ * ```js
3431
+ * import {createQueries, createStore} from 'tinybase';
3432
+ *
3433
+ * const store = createStore().setTable('pets', {
3434
+ * fido: {species: 'dog', color: 'brown'},
3435
+ * felix: {species: 'cat', color: 'black'},
3436
+ * cujo: {species: 'dog', color: 'black'},
3437
+ * });
3438
+ *
3439
+ * const queries = createQueries(store).setQueryDefinition(
3440
+ * 'dogColors',
3441
+ * 'pets',
3442
+ * ({select, where}) => {
3443
+ * select('color');
3444
+ * where('species', 'dog');
3445
+ * },
3446
+ * );
3447
+ * console.log(queries.getResultSortedRowIds('dogColors', undefined));
3448
+ * // -> ['cujo', 'fido']
3449
+ *
3450
+ * const listenerId = queries.addResultSortedRowIdsListener(
3451
+ * 'dogColors',
3452
+ * undefined,
3453
+ * false,
3454
+ * 0,
3455
+ * undefined,
3456
+ * (queries, tableId, cellId, descending, offset, limit, sortedRowIds) => {
3457
+ * console.log(`Sorted row Ids for dogColors result table changed`);
3458
+ * console.log(sortedRowIds);
3459
+ * // ^ cheaper than calling getSortedRowIds again
3460
+ * },
3461
+ * );
3462
+ *
3463
+ * store.setRow('pets', 'rex', {species: 'dog', color: 'tan'});
3464
+ * // -> 'Sorted row Ids for dogColors result table changed'
3465
+ * // -> ['cujo', 'fido', 'rex']
3466
+ *
3467
+ * store.delListener(listenerId);
3468
+ * ```
3469
+ * @category Listener
3470
+ * @since v2.0.0
3471
+ */
3472
+ addResultSortedRowIdsListener(
3473
+ queryId: Id,
3474
+ cellId: Id | undefined,
3475
+ descending: boolean,
3476
+ offset: number,
3477
+ limit: number | undefined,
3478
+ listener: ResultSortedRowIdsListener<Schemas>,
3479
+ ): Id;
3480
+
3481
+ /**
3482
+ * The addResultRowListener method registers a listener function with the
3483
+ * Queries object that will be called whenever data in a ResultRow changes.
3484
+ *
3485
+ * This has schema-based typing. The following is a simplified representation:
3486
+ *
3487
+ * ```ts override
3488
+ * addResultRowListener(
3489
+ * queryId: IdOrNull,
3490
+ * rowId: IdOrNull,
3491
+ * listener: ResultRowListener,
3492
+ * ): Id;
3493
+ * ```
3494
+ *
3495
+ * The provided listener is a ResultRowListener function, and will be called
3496
+ * with a reference to the Queries object, the Id of the ResultTable that
3497
+ * changed (which is also the query Id), and a GetResultCellChange function in
3498
+ * case you need to inspect any changes that occurred.
3499
+ *
3500
+ * You can either listen to a single ResultRow (by specifying a query Id and
3501
+ * ResultRow Id as the method's first two parameters) or changes to any
3502
+ * ResultRow (by providing `null` wildcards).
3503
+ *
3504
+ * Both, either, or neither of the `queryId` and `rowId` parameters can be
3505
+ * wildcarded with `null`. You can listen to a specific ResultRow in a
3506
+ * specific query, any ResultRow in a specific query, a specific ResultRow in
3507
+ * any query, or any ResultRow in any query.
3508
+ * @param queryId The Id of the query to listen to, or `null` as a wildcard.
3509
+ * @param rowId The Id of the ResultRow to listen to, or `null` as a wildcard.
3510
+ * @param listener The function that will be called whenever data in the
3511
+ * matching ResultRow changes.
3512
+ * @returns A unique Id for the listener that can later be used to remove it.
3513
+ * @example
3514
+ * This example registers a listener that responds to any changes to a
3515
+ * specific ResultRow.
3516
+ *
3517
+ * ```js
3518
+ * import {createQueries, createStore} from 'tinybase';
3519
+ *
3520
+ * const store = createStore().setTable('pets', {
3521
+ * fido: {species: 'dog', color: 'brown'},
3522
+ * felix: {species: 'cat', color: 'black'},
3523
+ * cujo: {species: 'dog', color: 'black'},
3524
+ * });
3525
+ *
3526
+ * const queries = createQueries(store).setQueryDefinition(
3527
+ * 'dogColors',
3528
+ * 'pets',
3529
+ * ({select, where}) => {
3530
+ * select('color');
3531
+ * where('species', 'dog');
3532
+ * },
3533
+ * );
3534
+ *
3535
+ * const listenerId = queries.addResultRowListener(
3536
+ * 'dogColors',
3537
+ * 'fido',
3538
+ * (queries, tableId, rowId, getCellChange) => {
3539
+ * console.log('fido row in dogColors result table changed');
3540
+ * console.log(getCellChange('dogColors', 'fido', 'color'));
3541
+ * },
3542
+ * );
3543
+ *
3544
+ * store.setCell('pets', 'fido', 'color', 'walnut');
3545
+ * // -> 'fido row in dogColors result table changed'
3546
+ * // -> [true, 'brown', 'walnut']
3547
+ *
3548
+ * store.delListener(listenerId);
3549
+ * ```
3550
+ * @example
3551
+ * This example registers a listener that responds to any changes to any
3552
+ * ResultRow.
3553
+ *
3554
+ * ```js
3555
+ * import {createQueries, createStore} from 'tinybase';
3556
+ *
3557
+ * const store = createStore().setTable('pets', {
3558
+ * fido: {species: 'dog', color: 'brown'},
3559
+ * felix: {species: 'cat', color: 'black'},
3560
+ * cujo: {species: 'dog', color: 'black'},
3561
+ * });
3562
+ *
3563
+ * const queries = createQueries(store)
3564
+ * .setQueryDefinition('dogColors', 'pets', ({select, where}) => {
3565
+ * select('color');
3566
+ * where('species', 'dog');
3567
+ * })
3568
+ * .setQueryDefinition('catColors', 'pets', ({select, where}) => {
3569
+ * select('color');
3570
+ * where('species', 'cat');
3571
+ * });
3572
+ *
3573
+ * const listenerId = queries.addResultRowListener(
3574
+ * null,
3575
+ * null,
3576
+ * (queries, tableId, rowId) => {
3577
+ * console.log(`${rowId} row in ${tableId} result table changed`);
3578
+ * },
3579
+ * );
3580
+ *
3581
+ * store.setCell('pets', 'fido', 'color', 'walnut');
3582
+ * // -> 'fido row in dogColors result table changed'
3583
+ * store.setCell('pets', 'felix', 'color', 'tortoiseshell');
3584
+ * // -> 'felix row in catColors result table changed'
3585
+ *
3586
+ * store.delListener(listenerId);
3587
+ * ```
3588
+ * @category Listener
3589
+ * @since v2.0.0
3590
+ */
3591
+ addResultRowListener(
3592
+ queryId: IdOrNull,
3593
+ rowId: IdOrNull,
3594
+ listener: ResultRowListener<Schemas>,
3595
+ ): Id;
3596
+
3597
+ /**
3598
+ * The addResultCellIdsListener method registers a listener function with the
3599
+ * Queries object that will be called whenever the ResultCell Ids in a
3600
+ * ResultRow change.
3601
+ *
3602
+ * This has schema-based typing. The following is a simplified representation:
3603
+ *
3604
+ * ```ts override
3605
+ * addResultCellIdsListener(
3606
+ * queryId: IdOrNull,
3607
+ * rowId: IdOrNull,
3608
+ * listener: ResultCellIdsListener,
3609
+ * ): Id;
3610
+ * ```
3611
+ *
3612
+ * The provided listener is a ResultCellIdsListener function, and will be
3613
+ * called with a reference to the Queries object, the Id of the ResultTable
3614
+ * (which is also the query Id), and the Id of the ResultRow that changed.
3615
+ *
3616
+ * Such a listener is only called when a ResultCell is added to, or removed
3617
+ * from, the ResultRow. To listen to all changes in the ResultRow, use the
3618
+ * addResultRowListener method.
3619
+ *
3620
+ * You can either listen to a single ResultRow (by specifying the query Id and
3621
+ * ResultRow Id as the method's first two parameters) or changes to any
3622
+ * ResultRow (by providing `null` wildcards).
3623
+ *
3624
+ * Both, either, or neither of the `queryId` and `rowId` parameters can be
3625
+ * wildcarded with `null`. You can listen to a specific ResultRow in a
3626
+ * specific query, any ResultRow in a specific query, a specific ResultRow in
3627
+ * any query, or any ResultRow in any query.
3628
+ * @param queryId The Id of the query to listen to, or `null` as a wildcard.
3629
+ * @param rowId The Id of the ResultRow to listen to, or `null` as a wildcard.
3630
+ * @param listener The function that will be called whenever the ResultCell
3631
+ * Ids in the ResultRow change.
3632
+ * @returns A unique Id for the listener that can later be used to remove it.
3633
+ * @example
3634
+ * This example registers a listener that responds to any change to the
3635
+ * ResultCell Ids of a specific ResultRow.
3636
+ *
3637
+ * ```js
3638
+ * import {createQueries, createStore} from 'tinybase';
3639
+ *
3640
+ * const store = createStore().setTable('pets', {
3641
+ * fido: {species: 'dog', color: 'brown'},
3642
+ * felix: {species: 'cat', color: 'black'},
3643
+ * cujo: {species: 'dog', color: 'black'},
3644
+ * });
3645
+ *
3646
+ * const queries = createQueries(store).setQueryDefinition(
3647
+ * 'dogColors',
3648
+ * 'pets',
3649
+ * ({select, where}) => {
3650
+ * select('color');
3651
+ * select('price');
3652
+ * where('species', 'dog');
3653
+ * },
3654
+ * );
3655
+ *
3656
+ * const listenerId = queries.addResultCellIdsListener(
3657
+ * 'dogColors',
3658
+ * 'fido',
3659
+ * (queries) => {
3660
+ * console.log(`Cell Ids for fido row in dogColors result table changed`);
3661
+ * console.log(queries.getResultCellIds('dogColors', 'fido'));
3662
+ * },
3663
+ * );
3664
+ *
3665
+ * store.setCell('pets', 'fido', 'price', 5);
3666
+ * // -> 'Cell Ids for fido row in dogColors result table changed'
3667
+ * // -> ['color', 'price']
3668
+ *
3669
+ * store.delListener(listenerId);
3670
+ * ```
3671
+ * @example
3672
+ * This example registers a listener that responds to any change to the
3673
+ * ResultCell Ids of any ResultRow.
3674
+ *
3675
+ * ```js
3676
+ * import {createQueries, createStore} from 'tinybase';
3677
+ *
3678
+ * const store = createStore().setTable('pets', {
3679
+ * fido: {species: 'dog', color: 'brown'},
3680
+ * felix: {species: 'cat', color: 'black'},
3681
+ * cujo: {species: 'dog', color: 'black'},
3682
+ * });
3683
+ *
3684
+ * const queries = createQueries(store)
3685
+ * .setQueryDefinition('dogColors', 'pets', ({select, where}) => {
3686
+ * select('color');
3687
+ * select('price');
3688
+ * where('species', 'dog');
3689
+ * })
3690
+ * .setQueryDefinition('catColors', 'pets', ({select, where}) => {
3691
+ * select('color');
3692
+ * select('purrs');
3693
+ * where('species', 'cat');
3694
+ * });
3695
+ *
3696
+ * const listenerId = queries.addResultCellIdsListener(
3697
+ * null,
3698
+ * null,
3699
+ * (queries, tableId, rowId) => {
3700
+ * console.log(
3701
+ * `Cell Ids for ${rowId} row in ${tableId} result table changed`,
3702
+ * );
3703
+ * },
3704
+ * );
3705
+ *
3706
+ * store.setCell('pets', 'fido', 'price', 5);
3707
+ * // -> 'Cell Ids for fido row in dogColors result table changed'
3708
+ * store.setCell('pets', 'felix', 'purrs', true);
3709
+ * // -> 'Cell Ids for felix row in catColors result table changed'
3710
+ *
3711
+ * store.delListener(listenerId);
3712
+ * ```
3713
+ * @category Listener
3714
+ * @since v2.0.0
3715
+ */
3716
+ addResultCellIdsListener(
3717
+ queryId: IdOrNull,
3718
+ rowId: IdOrNull,
3719
+ listener: ResultCellIdsListener<Schemas>,
3720
+ ): Id;
3721
+
3722
+ /**
3723
+ * The addResultCellListener method registers a listener function with the
3724
+ * Queries object that will be called whenever data in a ResultCell changes.
3725
+ *
3726
+ * This has schema-based typing. The following is a simplified representation:
3727
+ *
3728
+ * ```ts override
3729
+ * addResultCellListener(
3730
+ * queryId: IdOrNull,
3731
+ * rowId: IdOrNull,
3732
+ * cellId: IdOrNull,
3733
+ * listener: ResultCellListener,
3734
+ * ): Id;
3735
+ * ```
3736
+ *
3737
+ * The provided listener is a ResultCellListener function, and will be called
3738
+ * with a reference to the Queries object, the Id of the ResultTable that
3739
+ * changed (which is also the query Id), the Id of the ResultRow that changed,
3740
+ * the Id of the ResultCell that changed, the new ResultCell value, the old
3741
+ * ResultCell value, and a GetResultCellChange function in case you need to
3742
+ * inspect any changes that occurred.
3743
+ *
3744
+ * You can either listen to a single ResultRow (by specifying a query Id,
3745
+ * ResultRow Id, and ResultCell Id as the method's first three parameters) or
3746
+ * changes to any ResultCell (by providing `null` wildcards).
3747
+ *
3748
+ * All, some, or none of the `queryId`, `rowId`, and `cellId` parameters can
3749
+ * be wildcarded with `null`. You can listen to a specific ResultCell in a
3750
+ * specific ResultRow in a specific query, any ResultCell in any ResultRow in
3751
+ * any query, for example - or every other combination of wildcards.
3752
+ * @param queryId The Id of the query to listen to, or `null` as a wildcard.
3753
+ * @param rowId The Id of the ResultRow to listen to, or `null` as a wildcard.
3754
+ * @param cellId The Id of the ResultCell to listen to, or `null` as a
3755
+ * wildcard.
3756
+ * @param listener The function that will be called whenever data in the
3757
+ * matching ResultCell changes.
3758
+ * @returns A unique Id for the listener that can later be used to remove it.
3759
+ * @example
3760
+ * This example registers a listener that responds to any changes to a
3761
+ * specific ResultCell.
3762
+ *
3763
+ * ```js
3764
+ * import {createQueries, createStore} from 'tinybase';
3765
+ *
3766
+ * const store = createStore().setTable('pets', {
3767
+ * fido: {species: 'dog', color: 'brown'},
3768
+ * felix: {species: 'cat', color: 'black'},
3769
+ * cujo: {species: 'dog', color: 'black'},
3770
+ * });
3771
+ *
3772
+ * const queries = createQueries(store).setQueryDefinition(
3773
+ * 'dogColors',
3774
+ * 'pets',
3775
+ * ({select, where}) => {
3776
+ * select('color');
3777
+ * where('species', 'dog');
3778
+ * },
3779
+ * );
3780
+ *
3781
+ * const listenerId = queries.addResultCellListener(
3782
+ * 'dogColors',
3783
+ * 'fido',
3784
+ * 'color',
3785
+ * (queries, tableId, rowId, cellId, newCell, oldCell, getCellChange) => {
3786
+ * console.log(
3787
+ * 'color cell in fido row in dogColors result table changed',
3788
+ * );
3789
+ * console.log([oldCell, newCell]);
3790
+ * console.log(getCellChange('dogColors', 'fido', 'color'));
3791
+ * },
3792
+ * );
3793
+ *
3794
+ * store.setCell('pets', 'fido', 'color', 'walnut');
3795
+ * // -> 'color cell in fido row in dogColors result table changed'
3796
+ * // -> ['brown', 'walnut']
3797
+ * // -> [true, 'brown', 'walnut']
3798
+ *
3799
+ * store.delListener(listenerId);
3800
+ * ```
3801
+ * @example
3802
+ * This example registers a listener that responds to any changes to any
3803
+ * ResultCell.
3804
+ *
3805
+ * ```js
3806
+ * import {createQueries, createStore} from 'tinybase';
3807
+ *
3808
+ * const store = createStore().setTable('pets', {
3809
+ * fido: {species: 'dog', color: 'brown', price: 5},
3810
+ * felix: {species: 'cat', color: 'black', price: 4},
3811
+ * cujo: {species: 'dog', color: 'black', price: 5},
3812
+ * });
3813
+ *
3814
+ * const queries = createQueries(store)
3815
+ * .setQueryDefinition('dogColors', 'pets', ({select, where}) => {
3816
+ * select('color');
3817
+ * where('species', 'dog');
3818
+ * })
3819
+ * .setQueryDefinition('catColors', 'pets', ({select, where}) => {
3820
+ * select('color');
3821
+ * select('price');
3822
+ * where('species', 'cat');
3823
+ * });
3824
+ *
3825
+ * const listenerId = queries.addResultCellListener(
3826
+ * null,
3827
+ * null,
3828
+ * null,
3829
+ * (queries, tableId, rowId, cellId) => {
3830
+ * console.log(
3831
+ * `${cellId} cell in ${rowId} row in ${tableId} result table changed`,
3832
+ * );
3833
+ * },
3834
+ * );
3835
+ *
3836
+ * store.setCell('pets', 'fido', 'color', 'walnut');
3837
+ * // -> 'color cell in fido row in dogColors result table changed'
3838
+ * store.setCell('pets', 'felix', 'price', 3);
3839
+ * // -> 'price cell in felix row in catColors result table changed'
3840
+ *
3841
+ * store.delListener(listenerId);
3842
+ * ```
3843
+ * @category Listener
3844
+ * @since v2.0.0
3845
+ */
3846
+ addResultCellListener(
3847
+ queryId: IdOrNull,
3848
+ rowId: IdOrNull,
3849
+ cellId: IdOrNull,
3850
+ listener: ResultCellListener<Schemas>,
3851
+ ): Id;
3852
+
3853
+ /**
3854
+ * The delListener method removes a listener that was previously added to the
3855
+ * Queries object.
3856
+ *
3857
+ * This has schema-based typing. The following is a simplified representation:
3858
+ *
3859
+ * ```ts override
3860
+ * delListener(listenerId: Id): Queries;
3861
+ * ```
3862
+ *
3863
+ * Use the Id returned by the addMetricListener method. Note that the Queries
3864
+ * object may re-use this Id for future listeners added to it.
3865
+ * @param listenerId The Id of the listener to remove.
3866
+ * @returns A reference to the Queries object.
3867
+ * @example
3868
+ * This example creates a Store, a Queries object, registers a listener, and
3869
+ * then removes it.
3870
+ *
3871
+ * ```js
3872
+ * import {createQueries, createStore} from 'tinybase';
3873
+ *
3874
+ * const store = createStore().setTable('pets', {
3875
+ * fido: {species: 'dog'},
3876
+ * felix: {species: 'cat'},
3877
+ * cujo: {species: 'dog'},
3878
+ * });
3879
+ *
3880
+ * const queries = createQueries(store).setQueryDefinition(
3881
+ * 'species',
3882
+ * 'pets',
3883
+ * ({select}) => {
3884
+ * select('species');
3885
+ * },
3886
+ * );
3887
+ *
3888
+ * const listenerId = queries.addResultTableListener('species', () =>
3889
+ * console.log('species result changed'),
3890
+ * );
3891
+ *
3892
+ * store.setCell('pets', 'ed', 'species', 'horse');
3893
+ * // -> 'species result changed'
3894
+ *
3895
+ * queries.delListener(listenerId);
3896
+ *
3897
+ * store.setCell('pets', 'molly', 'species', 'cow');
3898
+ * // -> undefined
3899
+ * // The listener is not called.
3900
+ * ```
3901
+ * @category Listener
3902
+ * @since v2.0.0
3903
+ */
3904
+ delListener(listenerId: Id): Queries<Schemas>;
3905
+
3906
+ /**
3907
+ * The destroy method should be called when this Queries object is no longer
3908
+ * used.
3909
+ *
3910
+ * This guarantees that all of the listeners that the object registered with
3911
+ * the underlying Store are removed and it can be correctly garbage collected.
3912
+ * @example
3913
+ * This example creates a Store, adds a Queries object with a definition (that
3914
+ * registers a RowListener with the underlying Store), and then destroys it
3915
+ * again, removing the listener.
3916
+ *
3917
+ * ```js
3918
+ * import {createQueries, createStore} from 'tinybase';
3919
+ *
3920
+ * const store = createStore().setTable('pets', {
3921
+ * fido: {species: 'dog'},
3922
+ * felix: {species: 'cat'},
3923
+ * cujo: {species: 'dog'},
3924
+ * });
3925
+ *
3926
+ * const queries = createQueries(store);
3927
+ * queries.setQueryDefinition('species', 'species', ({select}) => {
3928
+ * select('species');
3929
+ * });
3930
+ * console.log(store.getListenerStats().row);
3931
+ * // -> 1
3932
+ *
3933
+ * queries.destroy();
3934
+ *
3935
+ * console.log(store.getListenerStats().row);
3936
+ * // -> 0
3937
+ * ```
3938
+ * @category Lifecycle
3939
+ * @since v2.0.0
3940
+ */
3941
+ destroy(): void;
3942
+
3943
+ /**
3944
+ * The getListenerStats method provides a set of statistics about the
3945
+ * listeners registered with the Queries object, and is used for debugging
3946
+ * purposes.
3947
+ *
3948
+ * The method is intended to be used during development to ensure your
3949
+ * application is not leaking listener registrations, for example.
3950
+ * @returns A QueriesListenerStats object containing Queries listener
3951
+ * statistics.
3952
+ * @example
3953
+ * This example gets the listener statistics of a Queries object.
3954
+ *
3955
+ * ```js
3956
+ * import {createQueries, createStore} from 'tinybase';
3957
+ *
3958
+ * const store = createStore();
3959
+ * const queries = createQueries(store);
3960
+ * queries.addResultTableListener(null, () => console.log('Result changed'));
3961
+ *
3962
+ * console.log(queries.getListenerStats().table);
3963
+ * // -> 1
3964
+ * console.log(queries.getListenerStats().row);
3965
+ * // -> 0
3966
+ * ```
3967
+ * @category Development
3968
+ * @since v2.0.0
3969
+ */
3970
+ getListenerStats(): QueriesListenerStats;
3971
+ }
3972
+
3973
+ /**
3974
+ * The createQueries function creates a Queries object, and is the main entry
3975
+ * point into the queries module.
3976
+ *
3977
+ * This has schema-based typing. The following is a simplified representation:
3978
+ *
3979
+ * ```ts override
3980
+ * createQueries(store: Store): Queries;
3981
+ * ```
3982
+ *
3983
+ * A given Store can only have one Queries object associated with it. If you
3984
+ * call this function twice on the same Store, your second call will return a
3985
+ * reference to the Queries object created by the first.
3986
+ * @param store The Store for which to register query definitions.
3987
+ * @returns A reference to the new Queries object.
3988
+ * @example
3989
+ * This example creates a Queries object.
3990
+ *
3991
+ * ```js
3992
+ * import {createQueries, createStore} from 'tinybase';
3993
+ *
3994
+ * const store = createStore();
3995
+ * const queries = createQueries(store);
3996
+ * console.log(queries.getQueryIds());
3997
+ * // -> []
3998
+ * ```
3999
+ * @example
4000
+ * This example creates a Queries object, and calls the method a second time
4001
+ * for the same Store to return the same object.
4002
+ *
4003
+ * ```js
4004
+ * import {createQueries, createStore} from 'tinybase';
4005
+ *
4006
+ * const store = createStore();
4007
+ * const queries1 = createQueries(store);
4008
+ * const queries2 = createQueries(store);
4009
+ * console.log(queries1 === queries2);
4010
+ * // -> true
4011
+ * ```
4012
+ * @category Creation
4013
+ * @since v2.0.0
4014
+ */
4015
+ export function createQueries<Schemas extends OptionalSchemas>(
4016
+ store: Store<Schemas>,
4017
+ ): Queries<Schemas>;