tinybase 5.0.0-beta.1 → 5.0.0-beta.11

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 (491) hide show
  1. package/lib/checkpoints.js +1 -1
  2. package/lib/checkpoints.js.gz +0 -0
  3. package/lib/cjs/checkpoints.cjs +1 -1
  4. package/lib/cjs/checkpoints.cjs.gz +0 -0
  5. package/lib/cjs/indexes.cjs +1 -1
  6. package/lib/cjs/indexes.cjs.gz +0 -0
  7. package/lib/cjs/mergeable-store.cjs +1 -0
  8. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  9. package/lib/cjs/metrics.cjs +1 -1
  10. package/lib/cjs/metrics.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  12. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  14. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  16. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  18. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  20. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  22. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-file.cjs +1 -1
  24. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  26. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-libsql.cjs +1 -0
  28. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  30. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  31. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
  32. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  33. package/lib/cjs/persisters/persister-powersync.cjs +1 -0
  34. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  35. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  36. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  37. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  38. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  39. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  40. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  41. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  42. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  43. package/lib/cjs/persisters.cjs +1 -1
  44. package/lib/cjs/persisters.cjs.gz +0 -0
  45. package/lib/cjs/queries.cjs +1 -1
  46. package/lib/cjs/queries.cjs.gz +0 -0
  47. package/lib/cjs/relationships.cjs +1 -1
  48. package/lib/cjs/relationships.cjs.gz +0 -0
  49. package/lib/cjs/store.cjs +1 -1
  50. package/lib/cjs/store.cjs.gz +0 -0
  51. package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -0
  52. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  53. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -0
  54. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  55. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -0
  56. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  57. package/lib/cjs/synchronizers.cjs +1 -0
  58. package/lib/cjs/synchronizers.cjs.gz +0 -0
  59. package/lib/cjs/tinybase.cjs +1 -1
  60. package/lib/cjs/tinybase.cjs.gz +0 -0
  61. package/lib/cjs/tools.cjs +1 -1
  62. package/lib/cjs/tools.cjs.gz +0 -0
  63. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  64. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  65. package/lib/cjs/ui-react-dom.cjs +1 -1
  66. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  67. package/lib/cjs/ui-react.cjs +1 -1
  68. package/lib/cjs/ui-react.cjs.gz +0 -0
  69. package/lib/cjs-es6/checkpoints.cjs +1 -1
  70. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  71. package/lib/cjs-es6/indexes.cjs +1 -1
  72. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  73. package/lib/cjs-es6/mergeable-store.cjs +1 -0
  74. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  75. package/lib/cjs-es6/metrics.cjs +1 -1
  76. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  77. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  78. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  79. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  80. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  81. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  82. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  83. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  84. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  85. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  86. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  87. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  88. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  89. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  90. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  91. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  92. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  93. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -0
  94. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  95. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  96. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  97. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
  98. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  99. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -0
  100. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  101. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  102. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  103. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  104. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  105. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  106. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  107. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  108. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  109. package/lib/cjs-es6/persisters.cjs +1 -1
  110. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  111. package/lib/cjs-es6/queries.cjs +1 -1
  112. package/lib/cjs-es6/queries.cjs.gz +0 -0
  113. package/lib/cjs-es6/relationships.cjs +1 -1
  114. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  115. package/lib/cjs-es6/store.cjs +1 -1
  116. package/lib/cjs-es6/store.cjs.gz +0 -0
  117. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -0
  118. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  119. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -0
  120. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  121. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -0
  122. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  123. package/lib/cjs-es6/synchronizers.cjs +1 -0
  124. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  125. package/lib/cjs-es6/tinybase.cjs +1 -1
  126. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  127. package/lib/cjs-es6/tools.cjs +1 -1
  128. package/lib/cjs-es6/tools.cjs.gz +0 -0
  129. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  130. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  131. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  132. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  133. package/lib/cjs-es6/ui-react.cjs +1 -1
  134. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  135. package/lib/debug/checkpoints.js +3 -1
  136. package/lib/debug/indexes.js +3 -1
  137. package/lib/debug/mergeable-store.js +2230 -0
  138. package/lib/debug/metrics.js +3 -1
  139. package/lib/debug/persisters/persister-automerge.js +167 -131
  140. package/lib/debug/persisters/persister-browser.js +155 -102
  141. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +225 -152
  142. package/lib/debug/persisters/persister-electric-sql.js +225 -152
  143. package/lib/debug/persisters/persister-expo-sqlite-next.js +225 -152
  144. package/lib/debug/persisters/persister-expo-sqlite.js +225 -152
  145. package/lib/debug/persisters/persister-file.js +149 -101
  146. package/lib/debug/persisters/persister-indexed-db.js +146 -100
  147. package/lib/debug/persisters/persister-libsql.js +924 -0
  148. package/lib/debug/persisters/persister-partykit-client.js +146 -104
  149. package/lib/debug/persisters/persister-partykit-server.js +17 -25
  150. package/lib/debug/persisters/persister-powersync.js +939 -0
  151. package/lib/debug/persisters/persister-remote.js +141 -97
  152. package/lib/debug/persisters/persister-sqlite-wasm.js +225 -152
  153. package/lib/debug/persisters/persister-sqlite3.js +225 -152
  154. package/lib/debug/persisters/persister-yjs.js +164 -127
  155. package/lib/debug/persisters.js +137 -94
  156. package/lib/debug/queries.js +9 -6
  157. package/lib/debug/relationships.js +3 -1
  158. package/lib/debug/store.js +147 -126
  159. package/lib/debug/synchronizers/synchronizer-local.js +571 -0
  160. package/lib/debug/synchronizers/synchronizer-ws-client.js +598 -0
  161. package/lib/debug/synchronizers/synchronizer-ws-server.js +241 -0
  162. package/lib/debug/synchronizers.js +531 -0
  163. package/lib/debug/tinybase.js +1080 -215
  164. package/lib/debug/tools.js +22 -21
  165. package/lib/debug/ui-react-dom.js +336 -258
  166. package/lib/debug/ui-react.js +55 -6
  167. package/lib/es6/checkpoints.js +1 -1
  168. package/lib/es6/checkpoints.js.gz +0 -0
  169. package/lib/es6/indexes.js +1 -1
  170. package/lib/es6/indexes.js.gz +0 -0
  171. package/lib/es6/mergeable-store.js +1 -0
  172. package/lib/es6/mergeable-store.js.gz +0 -0
  173. package/lib/es6/metrics.js +1 -1
  174. package/lib/es6/metrics.js.gz +0 -0
  175. package/lib/es6/persisters/persister-automerge.js +1 -1
  176. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  177. package/lib/es6/persisters/persister-browser.js +1 -1
  178. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  179. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  180. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  181. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  182. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  183. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  184. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  185. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  186. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  187. package/lib/es6/persisters/persister-file.js +1 -1
  188. package/lib/es6/persisters/persister-file.js.gz +0 -0
  189. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  190. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  191. package/lib/es6/persisters/persister-libsql.js +1 -0
  192. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  193. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  194. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  195. package/lib/es6/persisters/persister-partykit-server.js +1 -1
  196. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  197. package/lib/es6/persisters/persister-powersync.js +1 -0
  198. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  199. package/lib/es6/persisters/persister-remote.js +1 -1
  200. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  201. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  202. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  203. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  204. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  205. package/lib/es6/persisters/persister-yjs.js +1 -1
  206. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  207. package/lib/es6/persisters.js +1 -1
  208. package/lib/es6/persisters.js.gz +0 -0
  209. package/lib/es6/queries.js +1 -1
  210. package/lib/es6/queries.js.gz +0 -0
  211. package/lib/es6/relationships.js +1 -1
  212. package/lib/es6/relationships.js.gz +0 -0
  213. package/lib/es6/store.js +1 -1
  214. package/lib/es6/store.js.gz +0 -0
  215. package/lib/es6/synchronizers/synchronizer-local.js +1 -0
  216. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  217. package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -0
  218. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  219. package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -0
  220. package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  221. package/lib/es6/synchronizers.js +1 -0
  222. package/lib/es6/synchronizers.js.gz +0 -0
  223. package/lib/es6/tinybase.js +1 -1
  224. package/lib/es6/tinybase.js.gz +0 -0
  225. package/lib/es6/tools.js +1 -1
  226. package/lib/es6/tools.js.gz +0 -0
  227. package/lib/es6/ui-react-dom-debug.js +1 -1
  228. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  229. package/lib/es6/ui-react-dom.js +1 -1
  230. package/lib/es6/ui-react-dom.js.gz +0 -0
  231. package/lib/es6/ui-react.js +1 -1
  232. package/lib/es6/ui-react.js.gz +0 -0
  233. package/lib/indexes.js +1 -1
  234. package/lib/indexes.js.gz +0 -0
  235. package/lib/mergeable-store.js +1 -0
  236. package/lib/mergeable-store.js.gz +0 -0
  237. package/lib/metrics.js +1 -1
  238. package/lib/metrics.js.gz +0 -0
  239. package/lib/persisters/persister-automerge.js +1 -1
  240. package/lib/persisters/persister-automerge.js.gz +0 -0
  241. package/lib/persisters/persister-browser.js +1 -1
  242. package/lib/persisters/persister-browser.js.gz +0 -0
  243. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  244. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  245. package/lib/persisters/persister-electric-sql.js +1 -1
  246. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  247. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  248. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  249. package/lib/persisters/persister-expo-sqlite.js +1 -1
  250. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  251. package/lib/persisters/persister-file.js +1 -1
  252. package/lib/persisters/persister-file.js.gz +0 -0
  253. package/lib/persisters/persister-indexed-db.js +1 -1
  254. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  255. package/lib/persisters/persister-libsql.js +1 -0
  256. package/lib/persisters/persister-libsql.js.gz +0 -0
  257. package/lib/persisters/persister-partykit-client.js +1 -1
  258. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  259. package/lib/persisters/persister-partykit-server.js +1 -1
  260. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  261. package/lib/persisters/persister-powersync.js +1 -0
  262. package/lib/persisters/persister-powersync.js.gz +0 -0
  263. package/lib/persisters/persister-remote.js +1 -1
  264. package/lib/persisters/persister-remote.js.gz +0 -0
  265. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  266. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  267. package/lib/persisters/persister-sqlite3.js +1 -1
  268. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  269. package/lib/persisters/persister-yjs.js +1 -1
  270. package/lib/persisters/persister-yjs.js.gz +0 -0
  271. package/lib/persisters.js +1 -1
  272. package/lib/persisters.js.gz +0 -0
  273. package/lib/queries.js +1 -1
  274. package/lib/queries.js.gz +0 -0
  275. package/lib/relationships.js +1 -1
  276. package/lib/relationships.js.gz +0 -0
  277. package/lib/store.js +1 -1
  278. package/lib/store.js.gz +0 -0
  279. package/lib/synchronizers/synchronizer-local.js +1 -0
  280. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  281. package/lib/synchronizers/synchronizer-ws-client.js +1 -0
  282. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  283. package/lib/synchronizers/synchronizer-ws-server.js +1 -0
  284. package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
  285. package/lib/synchronizers.js +1 -0
  286. package/lib/synchronizers.js.gz +0 -0
  287. package/lib/tinybase.js +1 -1
  288. package/lib/tinybase.js.gz +0 -0
  289. package/lib/tools.js +1 -1
  290. package/lib/tools.js.gz +0 -0
  291. package/lib/types/checkpoints.d.ts +2 -2
  292. package/lib/types/indexes.d.ts +2 -2
  293. package/lib/types/mergeable-store.d.ts +214 -0
  294. package/lib/types/metrics.d.ts +2 -2
  295. package/lib/types/persisters/persister-automerge.d.ts +11 -7
  296. package/lib/types/persisters/persister-browser.d.ts +13 -4
  297. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +4 -0
  298. package/lib/types/persisters/persister-electric-sql.d.ts +4 -0
  299. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +4 -0
  300. package/lib/types/persisters/persister-expo-sqlite.d.ts +4 -0
  301. package/lib/types/persisters/persister-file.d.ts +7 -2
  302. package/lib/types/persisters/persister-indexed-db.d.ts +4 -0
  303. package/lib/types/persisters/persister-libsql.d.ts +142 -0
  304. package/lib/types/persisters/persister-partykit-client.d.ts +4 -0
  305. package/lib/types/persisters/persister-partykit-server.d.ts +12 -8
  306. package/lib/types/persisters/persister-powersync.d.ts +157 -0
  307. package/lib/types/persisters/persister-remote.d.ts +4 -0
  308. package/lib/types/persisters/persister-sqlite-wasm.d.ts +4 -0
  309. package/lib/types/persisters/persister-sqlite3.d.ts +4 -0
  310. package/lib/types/persisters/persister-yjs.d.ts +6 -2
  311. package/lib/types/persisters.d.ts +162 -59
  312. package/lib/types/queries.d.ts +2 -2
  313. package/lib/types/relationships.d.ts +2 -2
  314. package/lib/types/store.d.ts +275 -187
  315. package/lib/types/synchronizers/synchronizer-local.d.ts +27 -0
  316. package/lib/types/synchronizers/synchronizer-ws-client.d.ts +35 -0
  317. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +57 -0
  318. package/lib/types/synchronizers.d.ts +132 -0
  319. package/lib/types/tinybase.d.ts +10 -8
  320. package/lib/types/tools.d.ts +4 -4
  321. package/lib/types/ui-react.d.ts +160 -9
  322. package/lib/types/with-schemas/checkpoints.d.ts +2 -2
  323. package/lib/types/with-schemas/indexes.d.ts +2 -2
  324. package/lib/types/with-schemas/internal/store.d.ts +4 -0
  325. package/lib/types/with-schemas/mergeable-store.d.ts +492 -0
  326. package/lib/types/with-schemas/metrics.d.ts +2 -2
  327. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +12 -8
  328. package/lib/types/with-schemas/persisters/persister-browser.d.ts +17 -8
  329. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +5 -1
  330. package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +5 -1
  331. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +5 -1
  332. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +5 -1
  333. package/lib/types/with-schemas/persisters/persister-file.d.ts +9 -4
  334. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +5 -1
  335. package/lib/types/with-schemas/persisters/persister-libsql.d.ts +155 -0
  336. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +5 -1
  337. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +15 -11
  338. package/lib/types/with-schemas/persisters/persister-powersync.d.ts +170 -0
  339. package/lib/types/with-schemas/persisters/persister-remote.d.ts +5 -1
  340. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +5 -1
  341. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +5 -1
  342. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +7 -3
  343. package/lib/types/with-schemas/persisters.d.ts +193 -121
  344. package/lib/types/with-schemas/queries.d.ts +3 -3
  345. package/lib/types/with-schemas/relationships.d.ts +2 -2
  346. package/lib/types/with-schemas/store.d.ts +483 -345
  347. package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +29 -0
  348. package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +41 -0
  349. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +57 -0
  350. package/lib/types/with-schemas/synchronizers.d.ts +146 -0
  351. package/lib/types/with-schemas/tinybase.d.ts +9 -8
  352. package/lib/types/with-schemas/tools.d.ts +4 -4
  353. package/lib/types/with-schemas/ui-react.d.ts +177 -9
  354. package/lib/ui-react-dom.js +1 -1
  355. package/lib/ui-react-dom.js.gz +0 -0
  356. package/lib/ui-react.js +1 -1
  357. package/lib/ui-react.js.gz +0 -0
  358. package/lib/umd/checkpoints.js +1 -1
  359. package/lib/umd/checkpoints.js.gz +0 -0
  360. package/lib/umd/indexes.js +1 -1
  361. package/lib/umd/indexes.js.gz +0 -0
  362. package/lib/umd/mergeable-store.js +1 -0
  363. package/lib/umd/mergeable-store.js.gz +0 -0
  364. package/lib/umd/metrics.js +1 -1
  365. package/lib/umd/metrics.js.gz +0 -0
  366. package/lib/umd/persisters/persister-automerge.js +1 -1
  367. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  368. package/lib/umd/persisters/persister-browser.js +1 -1
  369. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  370. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  371. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  372. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  373. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  374. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  375. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  376. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  377. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  378. package/lib/umd/persisters/persister-file.js +1 -1
  379. package/lib/umd/persisters/persister-file.js.gz +0 -0
  380. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  381. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  382. package/lib/umd/persisters/persister-libsql.js +1 -0
  383. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  384. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  385. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  386. package/lib/umd/persisters/persister-partykit-server.js +1 -1
  387. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  388. package/lib/umd/persisters/persister-powersync.js +1 -0
  389. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  390. package/lib/umd/persisters/persister-remote.js +1 -1
  391. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  392. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  393. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  394. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  395. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  396. package/lib/umd/persisters/persister-yjs.js +1 -1
  397. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  398. package/lib/umd/persisters.js +1 -1
  399. package/lib/umd/persisters.js.gz +0 -0
  400. package/lib/umd/queries.js +1 -1
  401. package/lib/umd/queries.js.gz +0 -0
  402. package/lib/umd/relationships.js +1 -1
  403. package/lib/umd/relationships.js.gz +0 -0
  404. package/lib/umd/store.js +1 -1
  405. package/lib/umd/store.js.gz +0 -0
  406. package/lib/umd/synchronizers/synchronizer-local.js +1 -0
  407. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  408. package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -0
  409. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  410. package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -0
  411. package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
  412. package/lib/umd/synchronizers.js +1 -0
  413. package/lib/umd/synchronizers.js.gz +0 -0
  414. package/lib/umd/tinybase.js +1 -1
  415. package/lib/umd/tinybase.js.gz +0 -0
  416. package/lib/umd/tools.js +1 -1
  417. package/lib/umd/tools.js.gz +0 -0
  418. package/lib/umd/ui-react-dom-debug.js +1 -1
  419. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  420. package/lib/umd/ui-react-dom.js +1 -1
  421. package/lib/umd/ui-react-dom.js.gz +0 -0
  422. package/lib/umd/ui-react.js +1 -1
  423. package/lib/umd/ui-react.js.gz +0 -0
  424. package/lib/umd-es6/checkpoints.js +1 -1
  425. package/lib/umd-es6/checkpoints.js.gz +0 -0
  426. package/lib/umd-es6/indexes.js +1 -1
  427. package/lib/umd-es6/indexes.js.gz +0 -0
  428. package/lib/umd-es6/mergeable-store.js +1 -0
  429. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  430. package/lib/umd-es6/metrics.js +1 -1
  431. package/lib/umd-es6/metrics.js.gz +0 -0
  432. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  433. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  434. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  435. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  436. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  437. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  438. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  439. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  440. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  441. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  442. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  443. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  444. package/lib/umd-es6/persisters/persister-file.js +1 -1
  445. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  446. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  447. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  448. package/lib/umd-es6/persisters/persister-libsql.js +1 -0
  449. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  450. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  451. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  452. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
  453. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  454. package/lib/umd-es6/persisters/persister-powersync.js +1 -0
  455. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  456. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  457. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  458. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  459. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  460. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  461. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  462. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  463. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  464. package/lib/umd-es6/persisters.js +1 -1
  465. package/lib/umd-es6/persisters.js.gz +0 -0
  466. package/lib/umd-es6/queries.js +1 -1
  467. package/lib/umd-es6/queries.js.gz +0 -0
  468. package/lib/umd-es6/relationships.js +1 -1
  469. package/lib/umd-es6/relationships.js.gz +0 -0
  470. package/lib/umd-es6/store.js +1 -1
  471. package/lib/umd-es6/store.js.gz +0 -0
  472. package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -0
  473. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  474. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -0
  475. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  476. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -0
  477. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  478. package/lib/umd-es6/synchronizers.js +1 -0
  479. package/lib/umd-es6/synchronizers.js.gz +0 -0
  480. package/lib/umd-es6/tinybase.js +1 -1
  481. package/lib/umd-es6/tinybase.js.gz +0 -0
  482. package/lib/umd-es6/tools.js +1 -1
  483. package/lib/umd-es6/tools.js.gz +0 -0
  484. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  485. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  486. package/lib/umd-es6/ui-react-dom.js +1 -1
  487. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  488. package/lib/umd-es6/ui-react.js +1 -1
  489. package/lib/umd-es6/ui-react.js.gz +0 -0
  490. package/package.json +65 -45
  491. package/readme.md +2 -2
@@ -1 +1 @@
1
- var e,l;e=this,l=function(e,l,t){"use strict";const a=e=>typeof e,n=a(""),o=a(!0),r=a(0),i="Value",s="currentTarget",d="value",u=isFinite,c=e=>null==e,{PureComponent:m,Fragment:h,createElement:b,useCallback:p,useLayoutEffect:g,useRef:f,useState:w}=l,y=(e,...l)=>c(e)?{}:e(...l),v=(e,l)=>e.map(l),I=Object,C=I.entries,k=(e=[])=>I.fromEntries(e),x=(e,l)=>v(C(e),(([e,t])=>l(t,e))),T="tinybaseStoreInspector",R="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",O='content:url("',S=O+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",N='</svg>")',V=O+"data:image/svg+xml,%3csvg viewBox='0 0 680 680' xmlns='http://www.w3.org/2000/svg' style='width:680px%3bheight:680px'%3e %3cpath stroke='white' stroke-width='80' fill='none' d='M340 617a84 241 90 11.01 0zM131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124zm-12-127a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e %3cpath fill='%23d81b60' d='M131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124z' /%3e %3cpath d='M249 619a94 240 90 00308-128 114 289 70 01-308 128zM119 208a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e%3c/svg%3e\")",j=v([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,l,t,a])=>S+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${l}' width='${t}' height='${a}' fill='white'/>`+N)),z=S+"<path d='M20 20l60 60M20 80l60-60' />"+N,P=S+`<path d='${R}' />`+N,$=S+`<path d='${R}M20 20l60 60' />`+N;var q=Object.defineProperty,M=Object.defineProperties,B=Object.getOwnPropertyDescriptors,E=Object.getOwnPropertySymbols,H=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable,D=(e,l,t)=>l in e?q(e,l,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[l]=t,A=(e,l)=>{for(var t in l||(l={}))H.call(l,t)&&D(e,t,l[t]);if(E)for(var t of E(l))F.call(l,t)&&D(e,t,l[t]);return e},L=(e,l)=>M(e,B(l));const U="*::-webkit-scrollbar";((e,l="")=>{e.join(l)})(x(L(A(L(A(L(A({"":"all:initial;font-family:sans-serif;font-size:0.75rem;position:fixed;z-index:999999","*":"all:revert","*::before":"all:revert","*::after":"all:revert",[U]:"width:0.5rem;height:0.5rem;",[U+"-track"]:"background:#111",[U+"-thumb"]:"background:#999;border:1px solid #111",[U+"-thumb:hover"]:"background:#fff",[U+"-corner"]:"background:#111",img:"width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom",">img":"padding:0.25rem;bottom:0;right:0;position:fixed;"+V},k(v(["bottom:0;left:0","top:0;right:0"],((e,l)=>[`>img[data-position='${l}']`,e])))),{main:"display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;"}),k(v(["bottom:0;left:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:30vh","bottom:0;left:0;width:100vw;height:30vh","top:0;right:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:100vh"],((e,l)=>[`main[data-position='${l}']`,e])))),{header:"display:flex;padding:0.25rem;background:#000;align-items:center","header>img:nth-of-type(1)":V,"header>img:nth-of-type(6)":z}),k(v(j,((e,l)=>[`header>img[data-id='${l}']`,e])))),{"header>span":"flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem",article:"padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1",details:"margin-left:0.75rem;width:fit-content;","details img":"display:none","details[open]>summary img":"display:unset;background:none;margin-left:0.25rem","details[open]>summary img.edit":P,"details[open]>summary img.done":$,summary:"margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content",table:"border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem","table input":"background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0",'table input[type="number"]':"width:4rem","table tbody button":"font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111","table button:first-letter":"font-size:0.75rem",thead:"background:#222","th:nth-of-type(1)":"min-width:2rem;","th.sorted":"background:#000","table caption":"text-align:left;white-space:nowrap;line-height:1.25rem",button:"width:1.5rem;border:none;background:none;color:#fff;padding:0","button[disabled]":"color:#777","button.next":"margin-right:0.5rem",[`th,#${T} td`]:"overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left","span.warn":"margin:0.25rem;color:#d81b60"}),((e,l)=>e?`#${T} ${l}{${e}}`:"")));const G=(e,l,t,a)=>e==n?l:e==r?t:a;var J=Object.defineProperty,K=Object.defineProperties,Q=Object.getOwnPropertyDescriptors,W=Object.getOwnPropertySymbols,X=Object.prototype.hasOwnProperty,Y=Object.prototype.propertyIsEnumerable,Z=(e,l,t)=>l in e?J(e,l,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[l]=t,_=(e,l)=>{for(var t in l||(l={}))X.call(l,t)&&Z(e,t,l[t]);if(W)for(var t of W(l))Y.call(l,t)&&Z(e,t,l[t]);return e},ee=(e,l)=>K(e,Q(l)),le=(e,l)=>{var t={};for(var a in e)X.call(e,a)&&l.indexOf(a)<0&&(t[a]=e[a]);if(null!=e&&W)for(var a of W(e))l.indexOf(a)<0&&Y.call(e,a)&&(t[a]=e[a]);return t};const{useCallback:te,useMemo:ae,useState:ne}=l,oe="editable",re=(e,l)=>v(t.useTableCellIds(e,l),(l=>e+"."+l)),ie=(e,l,t)=>{const a=te(e,l);return t?a:void 0},se=(...e)=>ae((()=>e),e),de=(e,l)=>ae((()=>({store:e,tableId:l})),[e,l]),ue=(e,l)=>ae((()=>({queries:e,queryId:l})),[e,l]),ce=(e,l=!1,t,a=0,n,o,r,i)=>{const[[s,d,u],c]=ne([e,l,a]),m=te((e=>{c(e),null==i||i(e)}),[i]),h=ie((e=>m([e,e==s&&!d,u])),[m,s,d,u],t),p=te((e=>m([s,d,e])),[m,s,d]),g=!0===r?ye:r;return[[s,d,u],h,ae((()=>!1===r?null:b(g,{offset:u,limit:n,total:o,onChange:p})),[r,g,u,n,o,p])]},me=(e,l,t)=>ae((()=>{const o=null!=l?l:e;return k(x(Array.isArray(o)?k(v(o,(e=>[e,e]))):o,((e,l)=>{return[l,_(_({},{label:l,component:t}),(o=e,a(o)==n?{label:e}:e))];var o})))}),[l,t,e]),he=({className:e,headerRow:l,idColumn:t,params:[a,n,o,r,i,s]})=>b("table",{className:e},s?b("caption",null,s):null,!1===l?null:b("thead",null,b("tr",null,!1===t?null:b(be,{sort:null!=r?r:[],label:"Id",onClick:i}),x(a,(({label:e},l)=>b(be,{key:l,cellId:l,label:e,sort:null!=r?r:[],onClick:i}))))),b("tbody",null,v(o,(e=>b("tr",{key:e},!1===t?null:b("th",null,e),x(a,(({component:l,getComponentProps:t},a)=>b("td",{key:a},b(l,ee(_(_({},y(t,e,a)),n),{rowId:e,cellId:a})))))))))),be=({cellId:e,sort:[l,t],label:a=(null!=e?e:""),onClick:n})=>b("th",{onClick:ie((()=>null==n?void 0:n(e)),[n,e],n),className:c(t)||l!=e?void 0:`sorted ${t?"de":"a"}scending`},c(t)||l!=e?null:(t?"↓":"↑")+" ",a),pe=({localRowId:e,params:[a,n,o,r,i,s,d]})=>{const u=t.useRemoteRowId(i,e,s);return b("tr",null,!1===a?null:b(l.Fragment,null,b("th",null,e),b("th",null,u)),x(n,(({component:l,getComponentProps:t},a)=>{const[n,i]=a.split(".",2),s=n===o?e:n===r?u:null;return c(s)?null:b("td",{key:a},b(l,ee(_({},y(t,s,i)),{store:d,tableId:n,rowId:s,cellId:i})))})))},ge=({thing:e,onThingChange:l,className:t,hasSchema:i,showType:c=!0})=>{const[m,h]=ne(),[p,g]=ne(),[f,w]=ne(),[y,v]=ne(),[I,C]=ne();p!==e&&(h((e=>{const l=a(e);return(e=>e==n||e==o)(l)||l==r&&u(e)?l:void 0})(e)),g(e),w(e+""),v(Number(e)||0),C(!!e));const k=te(((e,t)=>{t(e),g(e),l(e)}),[l]),x=te((()=>{if(!(null==i?void 0:i())){const e=G(m,r,o,n),t=G(e,f,y,I);h(e),g(t),l(t)}}),[i,l,f,y,I,m]);return b("div",{className:t},c?b("button",{className:m,onClick:x},m):null,G(m,b("input",{key:m,value:f,onChange:te((e=>k(e[s][d]+"",w)),[k])}),b("input",{key:m,type:"number",value:y,onChange:te((e=>k(Number(e[s][d]||0),v)),[k])}),b("input",{key:m,type:"checkbox",checked:I,onChange:te((e=>k(!!e[s].checked,C)),[k])})))},fe=({tableId:e,rowId:l,cellId:a,store:n,className:o,showType:r})=>{var i;return b(ge,{thing:t.useCell(e,l,a,n),onThingChange:t.useSetCellCallback(e,l,a,(e=>e),[],n),className:null!=o?o:oe+"Cell",showType:r,hasSchema:null==(i=t.useStoreOrStoreById(n))?void 0:i.hasTablesSchema})},we=({valueId:e,store:l,className:a,showType:n})=>{var o;return b(ge,{thing:t.useValue(e,l),onThingChange:t.useSetValueCallback(e,(e=>e),[],l),className:null!=a?a:oe+i,showType:n,hasSchema:null==(o=t.useStoreOrStoreById(l))?void 0:o.hasValuesSchema})},ye=({onChange:e,total:t,offset:a=0,limit:n=t,singular:o="row",plural:r=o+"s"})=>{(a>t||a<0)&&(a=0,e(0));const i=ie((()=>e(a-n)),[e,a,n],a>0),s=ie((()=>e(a+n)),[e,a,n],a+n<t);return b(l.Fragment,null,t>n&&b(l.Fragment,null,b("button",{className:"previous",disabled:0==a,onClick:i},"←"),b("button",{className:"next",disabled:a+n>=t,onClick:s},"→"),a+1," to ",Math.min(t,a+n)," of "),t," ",1!=t?r:o)},ve=e=>new Map(e);ve(),ve(),e.EditableCellView=fe,e.EditableValueView=we,e.RelationshipInHtmlTable=({relationshipId:e,relationships:a,editable:n,customCells:o,className:r,headerRow:i,idColumn:s=!0})=>{const[d,u,c,m]=((e,l)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(l),null==e?void 0:e.getRemoteTableId(l)])(t.useRelationshipsOrRelationshipsById(a),e),h=me([...re(c,u),...re(m,u)],o,n?fe:t.CellView),p=se(s,h,c,m,e,d,u);return b("table",{className:r},!1===i?null:b("thead",null,b("tr",null,!1===s?null:b(l.Fragment,null,b("th",null,c,".Id"),b("th",null,m,".Id")),x(h,(({label:e},l)=>b("th",{key:l},e))))),b("tbody",null,v(t.useRowIds(c,u),(e=>b(pe,{key:e,localRowId:e,params:p})))))},e.ResultSortedTableInHtmlTable=e=>{var l=e,{queryId:a,cellId:n,descending:o,offset:r,limit:i,queries:s,sortOnClick:d,paginator:u=!1,customCells:c,onChange:m}=l,h=le(l,["queryId","cellId","descending","offset","limit","queries","sortOnClick","paginator","customCells","onChange"]);const[p,g,f]=ce(n,o,d,r,i,t.useResultRowCount(a,s),u,m);return b(he,ee(_({},h),{params:se(me(t.useResultTableCellIds(a,s),c,t.ResultCellView),ue(s,a),t.useResultSortedRowIds(a,...p,i,s),p,g,f)}))},e.ResultTableInHtmlTable=e=>{var l=e,{queryId:a,queries:n,customCells:o}=l,r=le(l,["queryId","queries","customCells"]);return b(he,ee(_({},r),{params:se(me(t.useResultTableCellIds(a,n),o,t.ResultCellView),ue(n,a),t.useResultRowIds(a,n))}))},e.SliceInHtmlTable=e=>{var l=e,{indexId:a,sliceId:n,indexes:o,editable:r,customCells:i}=l,s=le(l,["indexId","sliceId","indexes","editable","customCells"]);const[d,u,c]=((e,l)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(l)])(t.useIndexesOrIndexesById(o),a);return b(he,ee(_({},s),{params:se(me(t.useTableCellIds(c,u),i,r?fe:t.CellView),de(u,c),t.useSliceRowIds(a,n,d))}))},e.SortedTableInHtmlTable=e=>{var l=e,{tableId:a,cellId:n,descending:o,offset:r,limit:i,store:s,editable:d,sortOnClick:u,paginator:c=!1,onChange:m,customCells:h}=l,p=le(l,["tableId","cellId","descending","offset","limit","store","editable","sortOnClick","paginator","onChange","customCells"]);const[g,f,w]=ce(n,o,u,r,i,t.useRowCount(a,s),c,m);return b(he,ee(_({},p),{params:se(me(t.useTableCellIds(a,s),h,d?fe:t.CellView),de(s,a),t.useSortedRowIds(a,...g,i,s),g,f,w)}))},e.SortedTablePaginator=ye,e.StoreInspector=e=>null,e.TableInHtmlTable=e=>{var l=e,{tableId:a,store:n,editable:o,customCells:r}=l,i=le(l,["tableId","store","editable","customCells"]);return b(he,ee(_({},i),{params:se(me(t.useTableCellIds(a,n),r,o?fe:t.CellView),de(n,a),t.useRowIds(a,n))}))},e.ValuesInHtmlTable=({store:e,editable:l=!1,valueComponent:a=(l?we:t.ValueView),getValueComponentProps:n,className:o,headerRow:r,idColumn:s})=>b("table",{className:o},!1===r?null:b("thead",null,b("tr",null,!1===s?null:b("th",null,"Id"),b("th",null,i))),b("tbody",null,v(t.useValueIds(e),(l=>b("tr",{key:l},!1===s?null:b("th",null,l),b("td",null,b(a,ee(_({},y(n,l)),{valueId:l,store:e}))))))))},"object"==typeof exports&&"undefined"!=typeof module?l(exports,require("react"),require("./ui-react")):"function"==typeof define&&define.amd?define(["exports","react","./ui-react"],l):l((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseUiReactDom={},e.React,e.TinyBaseUiReact);
1
+ var e,l;e=this,l=function(e,l,t){"use strict";const a=e=>typeof e,n=a(""),o=a(!0),r=a(0),i="Value",s="currentTarget",d="value",u=isFinite,c=e=>null==e,{PureComponent:m,Fragment:h,createElement:b,useCallback:p,useLayoutEffect:g,useRef:f,useState:w}=l,y=(e,...l)=>c(e)?{}:e(...l),v=(e,l)=>e.map(l),I=Object,C=I.entries,k=(e=[])=>I.fromEntries(e),x=(e,l)=>v(C(e),(([e,t])=>l(t,e))),T="tinybaseStoreInspector",R="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",O='content:url("',S=O+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",N='</svg>")',V=O+"data:image/svg+xml,%3csvg viewBox='0 0 680 680' xmlns='http://www.w3.org/2000/svg' style='width:680px%3bheight:680px'%3e %3cpath stroke='white' stroke-width='80' fill='none' d='M340 617a84 241 90 11.01 0zM131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124zm-12-127a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e %3cpath fill='%23d81b60' d='M131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124z' /%3e %3cpath d='M249 619a94 240 90 00308-128 114 289 70 01-308 128zM119 208a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e%3c/svg%3e\")",j=v([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,l,t,a])=>S+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${l}' width='${t}' height='${a}' fill='white'/>`+N)),z=S+"<path d='M20 20l60 60M20 80l60-60' />"+N,P=S+`<path d='${R}' />`+N,$=S+`<path d='${R}M20 20l60 60' />`+N;var q=Object.defineProperty,M=Object.defineProperties,B=Object.getOwnPropertyDescriptors,E=Object.getOwnPropertySymbols,H=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable,D=(e,l,t)=>l in e?q(e,l,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[l]=t,A=(e,l)=>{for(var t in l||(l={}))H.call(l,t)&&D(e,t,l[t]);if(E)for(var t of E(l))F.call(l,t)&&D(e,t,l[t]);return e},L=(e,l)=>M(e,B(l));const U="*::-webkit-scrollbar";((e,l="")=>{e.join(l)})(x(L(A(L(A(L(A({"":"all:initial;font-family:sans-serif;font-size:0.75rem;position:fixed;z-index:999999","*":"all:revert","*::before":"all:revert","*::after":"all:revert",[U]:"width:0.5rem;height:0.5rem;",[U+"-track"]:"background:#111",[U+"-thumb"]:"background:#999;border:1px solid #111",[U+"-thumb:hover"]:"background:#fff",[U+"-corner"]:"background:#111",img:"width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom",">img":"padding:0.25rem;bottom:0;right:0;position:fixed;"+V},k(v(["bottom:0;left:0","top:0;right:0"],((e,l)=>[`>img[data-position='${l}']`,e])))),{main:"display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;"}),k(v(["bottom:0;left:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:30vh","bottom:0;left:0;width:100vw;height:30vh","top:0;right:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:100vh"],((e,l)=>[`main[data-position='${l}']`,e])))),{header:"display:flex;padding:0.25rem;background:#000;align-items:center","header>img:nth-of-type(1)":V,"header>img:nth-of-type(6)":z}),k(v(j,((e,l)=>[`header>img[data-id='${l}']`,e])))),{"header>span":"flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem",article:"padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1",details:"margin-left:0.75rem;width:fit-content;","details img":"display:none","details[open]>summary img":"display:unset;background:none;margin-left:0.25rem","details[open]>summary img.edit":P,"details[open]>summary img.done":$,summary:"margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content",table:"border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem","table input":"background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0",'table input[type="number"]':"width:4rem","table tbody button":"font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111","table button:first-letter":"font-size:0.75rem",thead:"background:#222","th:nth-of-type(1)":"min-width:2rem;","th.sorted":"background:#000","table caption":"text-align:left;white-space:nowrap;line-height:1.25rem",button:"width:1.5rem;border:none;background:none;color:#fff;padding:0","button[disabled]":"color:#777","button.next":"margin-right:0.5rem",[`th,#${T} td`]:"overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left","span.warn":"margin:0.25rem;color:#d81b60"}),((e,l)=>e?`#${T} ${l}{${e}}`:"")));const G=(e,l,t,a)=>e==n?l:e==r?t:a;var J=Object.defineProperty,K=Object.defineProperties,Q=Object.getOwnPropertyDescriptors,W=Object.getOwnPropertySymbols,X=Object.prototype.hasOwnProperty,Y=Object.prototype.propertyIsEnumerable,Z=(e,l,t)=>l in e?J(e,l,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[l]=t,_=(e,l)=>{for(var t in l||(l={}))X.call(l,t)&&Z(e,t,l[t]);if(W)for(var t of W(l))Y.call(l,t)&&Z(e,t,l[t]);return e},ee=(e,l)=>K(e,Q(l)),le=(e,l)=>{var t={};for(var a in e)X.call(e,a)&&l.indexOf(a)<0&&(t[a]=e[a]);if(null!=e&&W)for(var a of W(e))l.indexOf(a)<0&&Y.call(e,a)&&(t[a]=e[a]);return t};const{useCallback:te,useMemo:ae,useState:ne}=l,oe="editable",re=(e,l)=>v(t.useTableCellIds(e,l),(l=>e+"."+l)),ie=(e,l,t)=>{const a=te(e,l);return t?a:void 0},se=(...e)=>ae((()=>e),e),de=(e,l)=>ae((()=>({store:e,tableId:l})),[e,l]),ue=(e,l)=>ae((()=>({queries:e,queryId:l})),[e,l]),ce=(e,l=!1,t,a=0,n,o,r,i)=>{const[[s,d,u],c]=ne([e,l,a]),m=te((e=>{c(e),null==i||i(e)}),[i]),h=ie((e=>m([e,e==s&&!d,u])),[m,s,d,u],t),p=te((e=>m([s,d,e])),[m,s,d]),g=!0===r?ye:r;return[[s,d,u],h,ae((()=>!1===r?null:b(g,{offset:u,limit:n,total:o,onChange:p})),[r,g,u,n,o,p])]},me=(e,l,t)=>ae((()=>{const o=null!=l?l:e;return r=Array.isArray(o)?k(v(o,(e=>[e,e]))):o,i=(e,l)=>_(_({},{label:l,component:t}),a(e)==n?{label:e}:e),k(x(r,((e,l)=>[l,i(e,l)])));var r,i}),[l,t,e]),he=({className:e,headerRow:l,idColumn:t,params:[a,n,o,r,i,s]})=>b("table",{className:e},s?b("caption",null,s):null,!1===l?null:b("thead",null,b("tr",null,!1===t?null:b(be,{sort:null!=r?r:[],label:"Id",onClick:i}),x(a,(({label:e},l)=>b(be,{key:l,cellId:l,label:e,sort:null!=r?r:[],onClick:i}))))),b("tbody",null,v(o,(e=>b("tr",{key:e},!1===t?null:b("th",null,e),x(a,(({component:l,getComponentProps:t},a)=>b("td",{key:a},b(l,ee(_(_({},y(t,e,a)),n),{rowId:e,cellId:a})))))))))),be=({cellId:e,sort:[l,t],label:a=(null!=e?e:""),onClick:n})=>b("th",{onClick:ie((()=>null==n?void 0:n(e)),[n,e],n),className:c(t)||l!=e?void 0:`sorted ${t?"de":"a"}scending`},c(t)||l!=e?null:(t?"↓":"↑")+" ",a),pe=({localRowId:e,params:[a,n,o,r,i,s,d]})=>{const u=t.useRemoteRowId(i,e,s);return b("tr",null,!1===a?null:b(l.Fragment,null,b("th",null,e),b("th",null,u)),x(n,(({component:l,getComponentProps:t},a)=>{const[n,i]=a.split(".",2),s=n===o?e:n===r?u:null;return c(s)?null:b("td",{key:a},b(l,ee(_({},y(t,s,i)),{store:d,tableId:n,rowId:s,cellId:i})))})))},ge=({thing:e,onThingChange:l,className:t,hasSchema:i,showType:c=!0})=>{const[m,h]=ne(),[p,g]=ne(),[f,w]=ne(),[y,v]=ne(),[I,C]=ne();p!==e&&(h((e=>{const l=a(e);return(e=>e==n||e==o)(l)||l==r&&u(e)?l:void 0})(e)),g(e),w(e+""),v(Number(e)||0),C(!!e));const k=te(((e,t)=>{t(e),g(e),l(e)}),[l]),x=te((()=>{if(!(null==i?void 0:i())){const e=G(m,r,o,n),t=G(e,f,y,I);h(e),g(t),l(t)}}),[i,l,f,y,I,m]);return b("div",{className:t},c?b("button",{className:m,onClick:x},m):null,G(m,b("input",{key:m,value:f,onChange:te((e=>k(e[s][d]+"",w)),[k])}),b("input",{key:m,type:"number",value:y,onChange:te((e=>k(Number(e[s][d]||0),v)),[k])}),b("input",{key:m,type:"checkbox",checked:I,onChange:te((e=>k(!!e[s].checked,C)),[k])})))},fe=({tableId:e,rowId:l,cellId:a,store:n,className:o,showType:r})=>{var i;return b(ge,{thing:t.useCell(e,l,a,n),onThingChange:t.useSetCellCallback(e,l,a,(e=>e),[],n),className:null!=o?o:oe+"Cell",showType:r,hasSchema:null==(i=t.useStoreOrStoreById(n))?void 0:i.hasTablesSchema})},we=({valueId:e,store:l,className:a,showType:n})=>{var o;return b(ge,{thing:t.useValue(e,l),onThingChange:t.useSetValueCallback(e,(e=>e),[],l),className:null!=a?a:oe+i,showType:n,hasSchema:null==(o=t.useStoreOrStoreById(l))?void 0:o.hasValuesSchema})},ye=({onChange:e,total:t,offset:a=0,limit:n=t,singular:o="row",plural:r=o+"s"})=>{(a>t||a<0)&&(a=0,e(0));const i=ie((()=>e(a-n)),[e,a,n],a>0),s=ie((()=>e(a+n)),[e,a,n],a+n<t);return b(l.Fragment,null,t>n&&b(l.Fragment,null,b("button",{className:"previous",disabled:0==a,onClick:i},"←"),b("button",{className:"next",disabled:a+n>=t,onClick:s},"→"),a+1," to ",Math.min(t,a+n)," of "),t," ",1!=t?r:o)},ve=e=>new Map(e);ve(),ve(),e.EditableCellView=fe,e.EditableValueView=we,e.RelationshipInHtmlTable=({relationshipId:e,relationships:a,editable:n,customCells:o,className:r,headerRow:i,idColumn:s=!0})=>{const[d,u,c,m]=((e,l)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(l),null==e?void 0:e.getRemoteTableId(l)])(t.useRelationshipsOrRelationshipsById(a),e),h=me([...re(c,u),...re(m,u)],o,n?fe:t.CellView),p=se(s,h,c,m,e,d,u);return b("table",{className:r},!1===i?null:b("thead",null,b("tr",null,!1===s?null:b(l.Fragment,null,b("th",null,c,".Id"),b("th",null,m,".Id")),x(h,(({label:e},l)=>b("th",{key:l},e))))),b("tbody",null,v(t.useRowIds(c,u),(e=>b(pe,{key:e,localRowId:e,params:p})))))},e.ResultSortedTableInHtmlTable=e=>{var l=e,{queryId:a,cellId:n,descending:o,offset:r,limit:i,queries:s,sortOnClick:d,paginator:u=!1,customCells:c,onChange:m}=l,h=le(l,["queryId","cellId","descending","offset","limit","queries","sortOnClick","paginator","customCells","onChange"]);const[p,g,f]=ce(n,o,d,r,i,t.useResultRowCount(a,s),u,m);return b(he,ee(_({},h),{params:se(me(t.useResultTableCellIds(a,s),c,t.ResultCellView),ue(s,a),t.useResultSortedRowIds(a,...p,i,s),p,g,f)}))},e.ResultTableInHtmlTable=e=>{var l=e,{queryId:a,queries:n,customCells:o}=l,r=le(l,["queryId","queries","customCells"]);return b(he,ee(_({},r),{params:se(me(t.useResultTableCellIds(a,n),o,t.ResultCellView),ue(n,a),t.useResultRowIds(a,n))}))},e.SliceInHtmlTable=e=>{var l=e,{indexId:a,sliceId:n,indexes:o,editable:r,customCells:i}=l,s=le(l,["indexId","sliceId","indexes","editable","customCells"]);const[d,u,c]=((e,l)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(l)])(t.useIndexesOrIndexesById(o),a);return b(he,ee(_({},s),{params:se(me(t.useTableCellIds(c,u),i,r?fe:t.CellView),de(u,c),t.useSliceRowIds(a,n,d))}))},e.SortedTableInHtmlTable=e=>{var l=e,{tableId:a,cellId:n,descending:o,offset:r,limit:i,store:s,editable:d,sortOnClick:u,paginator:c=!1,onChange:m,customCells:h}=l,p=le(l,["tableId","cellId","descending","offset","limit","store","editable","sortOnClick","paginator","onChange","customCells"]);const[g,f,w]=ce(n,o,u,r,i,t.useRowCount(a,s),c,m);return b(he,ee(_({},p),{params:se(me(t.useTableCellIds(a,s),h,d?fe:t.CellView),de(s,a),t.useSortedRowIds(a,...g,i,s),g,f,w)}))},e.SortedTablePaginator=ye,e.StoreInspector=e=>null,e.TableInHtmlTable=e=>{var l=e,{tableId:a,store:n,editable:o,customCells:r}=l,i=le(l,["tableId","store","editable","customCells"]);return b(he,ee(_({},i),{params:se(me(t.useTableCellIds(a,n),r,o?fe:t.CellView),de(n,a),t.useRowIds(a,n))}))},e.ValuesInHtmlTable=({store:e,editable:l=!1,valueComponent:a=(l?we:t.ValueView),getValueComponentProps:n,className:o,headerRow:r,idColumn:s})=>b("table",{className:o},!1===r?null:b("thead",null,b("tr",null,!1===s?null:b("th",null,"Id"),b("th",null,i))),b("tbody",null,v(t.useValueIds(e),(l=>b("tr",{key:l},!1===s?null:b("th",null,l),b("td",null,b(a,ee(_({},y(n,l)),{valueId:l,store:e}))))))))},"object"==typeof exports&&"undefined"!=typeof module?l(exports,require("react"),require("./ui-react")):"function"==typeof define&&define.amd?define(["exports","react","./ui-react"],l):l((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseUiReactDom={},e.React,e.TinyBaseUiReact);
Binary file
@@ -1 +1 @@
1
- var e,s;e=this,s=function(e,s){"use strict";const t=e=>typeof e,l="",o=t(l),r=t(t),u="Listener",n="Result",d="Has",i="Ids",a="Table",c=a+"s",I=a+i,p="Row",C=p+"Count",b=p+i,w="Sorted"+p+i,R="Cell",k=R+i,g="Value",y=g+"s",v=g+i,h=e=>null==e,m=(e,s,t)=>h(e)?null==t?void 0:t():s(e),L=e=>t(e)==o,f=e=>t(e)==r,S=e=>e.length,T=()=>{},V=(e,s)=>e.every(s),P=(e,s)=>S(e)===S(s)&&V(e,((e,t)=>s[t]===e)),x=(e,s)=>e.map(s),O=Object,q=e=>O.getPrototypeOf(e),B=O.entries,H=O.keys,M=e=>!h(e)&&m(q(e),(e=>e==O.prototype||h(q(e))),(()=>!0)),D=(e,s)=>m(e,(e=>e[s])),j=(e,s)=>{const t=B(e);return S(t)===S(H(s))&&V(t,(([e,t])=>M(t)?!!M(s[e])&&j(s[e],t):s[e]===t))},{createContext:F,useContext:E,useEffect:Q}=s,A=F([]),G=(e,s)=>{var t;const l=E(A);return h(e)?l[s]:L(e)?D(null!=(t=l[s+1])?t:{},e):e},U=(e,s)=>{const t=G(e,s);return h(e)||L(e)?t:e},W=e=>{var s;return H(null!=(s=E(A)[e])?s:{})},z=e=>U(e,0),J=e=>U(e,2),K=e=>U(e,4),N=e=>U(e,6),X=e=>U(e,8),Y=e=>U(e,10),Z=e=>e.toLowerCase();Z(u);const $="Transaction";Z($);const{useCallback:_,useEffect:ee,useMemo:se,useLayoutEffect:te,useRef:le,useState:oe,useSyncExternalStore:re}=s,ue=[],ne=[{},[],[ue,void 0,ue],void 0,!1,0],de=(e,s)=>e===s,ie=[j,P,([e,s,t],[l,o,r])=>s===o&&P(e,l)&&P(t,r)],ae=(e,s,t=ue)=>{const[,l]=oe(),[o,r]=oe();return ee((()=>{const t=s(e);return r(t),l([]),t.destroy}),[e,...t]),o},ce=(e,s,...t)=>{var l;const o=null==(l=null==e?void 0:e["add"+s+u])?void 0:l.call(e,...t);return()=>null==e?void 0:e.delListener(o)},Ie=(e,s,t,o=ue)=>{const r=le(ne[t]),u=_((()=>{var l,u,n;const d=null!=(u=null==(l=null==s?void 0:s[(4==t?"has":"get")+e])?void 0:l.call(s,...o))?u:ne[t];return(null!=(n=ie[t])?n:de)(d,r.current)?r.current:r.current=d}),[s,t,e,...o]),n=_((r=>ce(s,(4==t?d:l)+e,...o,r)),[s,t,e,...o]);return re(n,u)},pe=(e,s,t,l=ue,o=ue,...r)=>te((()=>ce(s,e,...o,t,...r)),[s,e,...o,...l,...r]),Ce=(e,s,t,l=ue,o=T,r=ue,...u)=>{const n=z(e);return _((e=>m(n,(l=>m(t(e,l),(t=>o(l["set"+s](...x(u,(s=>f(s)?s(e,l):s)),t),t)))))),[n,s,...l,...r,...u])},be=(e,s,t=T,l=ue,...o)=>{const r=z(e);return _((()=>t(null==r?void 0:r["del"+s](...o))),[r,s,...l,...o])},we=(e,s,t)=>{const l=Y(e);return _((()=>null==l?void 0:l[s](t)),[l,s,t])},Re=e=>Ie(I,z(e),1),ke=(e,s)=>Ie(b,z(s),1,[e]),ge=(e,s,t,l=0,o,r)=>Ie(w,z(r),1,[e,s,t,l,o]),ye=(e,s,t)=>Ie(k,z(t),1,[e,s]),ve=(e,s,t,l)=>Ie(R,z(l),3,[e,s,t]),he=e=>Ie(v,z(e),1),me=(e,s)=>Ie(g,z(s),3,[e]),Le=(e,s)=>Ie("Metric",J(s),3,[e]),fe=(e,s)=>Ie("SliceIds",K(s),1,[e]),Se=(e,s,t)=>Ie("Slice"+b,K(t),1,[e,s]),Te=(e,s,t)=>Ie("RemoteRowId",N(t),3,[e,s]),Ve=(e,s,t)=>Ie("Local"+b,N(t),1,[e,s]),Pe=(e,s,t)=>Ie("Linked"+b,N(t),1,[e,s]),xe=(e,s)=>Ie(n+b,X(s),1,[e]),Oe=(e,s,t,l=0,o,r)=>Ie(n+w,X(r),1,[e,s,t,l,o]),qe=(e,s,t)=>Ie(n+k,X(t),1,[e,s]),Be=(e,s,t,l)=>Ie(n+R,X(l),3,[e,s,t]),He=e=>Ie("CheckpointIds",Y(e),2),Me=(e,s)=>Ie("Checkpoint",Y(s),3,[e]),De=e=>we(e,"goBackward"),je=e=>we(e,"goForward"),{PureComponent:Fe,Fragment:Ee,createElement:Qe,useCallback:Ae,useLayoutEffect:Ge,useRef:Ue,useState:We}=s,ze=(e,...s)=>h(e)?{}:e(...s),Je=(e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(s),null==e?void 0:e.getRemoteTableId(s)];var Ke=Object.defineProperty,Ne=Object.defineProperties,Xe=Object.getOwnPropertyDescriptors,Ye=Object.getOwnPropertySymbols,Ze=Object.prototype.hasOwnProperty,$e=Object.prototype.propertyIsEnumerable,_e=(e,s,t)=>s in e?Ke(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,es=(e,s)=>{for(var t in s||(s={}))Ze.call(s,t)&&_e(e,t,s[t]);if(Ye)for(var t of Ye(s))$e.call(s,t)&&_e(e,t,s[t]);return e},ss=(e,s)=>Ne(e,Xe(s)),ts=(e,s)=>{var t={};for(var l in e)Ze.call(e,l)&&s.indexOf(l)<0&&(t[l]=e[l]);if(null!=e&&Ye)for(var l of Ye(e))s.indexOf(l)<0&&$e.call(e,l)&&(t[l]=e[l]);return t};const{useCallback:ls,useContext:os,useMemo:rs,useState:us}=s,ns=({tableId:e,store:s,rowComponent:t=ps,getRowComponentProps:l,customCellIds:o,separator:r,debugIds:u},n)=>cs(x(n,(r=>Qe(t,ss(es({},ze(l,r)),{key:r,tableId:e,rowId:r,customCellIds:o,store:s,debugIds:u})))),r,u,e),ds=({queryId:e,queries:s,resultRowComponent:t=ks,getResultRowComponentProps:l,separator:o,debugIds:r},u)=>cs(x(u,(o=>Qe(t,ss(es({},ze(l,o)),{key:o,queryId:e,rowId:o,queries:s,debugIds:r})))),o,r,e),is=({relationshipId:e,relationships:s,rowComponent:t=ps,getRowComponentProps:l,separator:o,debugIds:r},u,n)=>{const[d,i,a]=Je(N(s),e),c=u(e,n,d);return cs(x(c,(e=>Qe(t,ss(es({},ze(l,e)),{key:e,tableId:a,rowId:e,store:i,debugIds:r})))),o,r,n)},as=e=>({checkpoints:s,checkpointComponent:t=gs,getCheckpointComponentProps:l,separator:o,debugIds:r})=>{const u=Y(s);return cs(x(e(He(u)),(e=>Qe(t,ss(es({},ze(l,e)),{key:e,checkpoints:u,checkpointId:e,debugIds:r})))),o)},cs=(e,s,t,l)=>{const o=h(s)||!Array.isArray(e)?e:x(e,((e,t)=>t>0?[s,e]:e));return t?[l,":{",o,"}"]:o},Is=({tableId:e,rowId:s,cellId:t,store:o,debugIds:r})=>{var u;return cs(l+(null!=(u=ve(e,s,t,o))?u:l),void 0,r,t)},ps=({tableId:e,rowId:s,store:t,cellComponent:l=Is,getCellComponentProps:o,customCellIds:r,separator:u,debugIds:n})=>cs(x(((e,s,t,l)=>{const o=ye(s,t,l);return null!=e?e:o})(r,e,s,t),(r=>Qe(l,ss(es({},ze(o,r)),{key:r,tableId:e,rowId:s,cellId:r,store:t,debugIds:n})))),u,n,s),Cs=e=>ns(e,ke(e.tableId,e.store)),bs=({valueId:e,store:s,debugIds:t})=>{var o;return cs(l+(null!=(o=me(e,s))?o:l),void 0,t,e)},ws=({indexId:e,sliceId:s,indexes:t,rowComponent:l=ps,getRowComponentProps:o,separator:r,debugIds:u})=>{const[n,d,i]=((e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(s)])(K(t),e),a=Se(e,s,n);return cs(x(a,(e=>Qe(l,ss(es({},ze(o,e)),{key:e,tableId:i,rowId:e,store:d,debugIds:u})))),r,u,s)},Rs=({queryId:e,rowId:s,cellId:t,queries:o,debugIds:r})=>{var u;return cs(l+(null!=(u=Be(e,s,t,o))?u:l),void 0,r,t)},ks=({queryId:e,rowId:s,queries:t,resultCellComponent:l=Rs,getResultCellComponentProps:o,separator:r,debugIds:u})=>cs(x(qe(e,s,t),(r=>Qe(l,ss(es({},ze(o,r)),{key:r,queryId:e,rowId:s,cellId:r,queries:t,debugIds:u})))),r,u,s),gs=({checkpoints:e,checkpointId:s,debugIds:t})=>{var o;return cs(null!=(o=Me(s,e))?o:l,void 0,t,s)},ys=as((e=>e[0])),vs=as((e=>h(e[1])?[]:[e[1]])),hs=as((e=>e[2]));e.BackwardCheckpointsView=ys,e.CellView=Is,e.CheckpointView=gs,e.CurrentCheckpointView=vs,e.ForwardCheckpointsView=hs,e.IndexView=({indexId:e,indexes:s,sliceComponent:t=ws,getSliceComponentProps:l,separator:o,debugIds:r})=>cs(x(fe(e,s),(o=>Qe(t,ss(es({},ze(l,o)),{key:o,indexId:e,sliceId:o,indexes:s,debugIds:r})))),o,r,e),e.LinkedRowsView=e=>is(e,Pe,e.firstRowId),e.LocalRowsView=e=>is(e,Ve,e.remoteRowId),e.MetricView=({metricId:e,metrics:s,debugIds:t})=>{var o;return cs(null!=(o=Le(e,s))?o:l,void 0,t,e)},e.Provider=({store:e,storesById:s,metrics:t,metricsById:l,indexes:o,indexesById:r,relationships:u,relationshipsById:n,queries:d,queriesById:i,checkpoints:a,checkpointsById:c,children:I})=>{const p=os(A),[C,b]=us({}),w=ls(((e,s)=>b((t=>D(t,e)==s?t:ss(es({},t),{[e]:s})))),[]),R=ls((e=>b((s=>es({},((e,s)=>(delete e[s],e))(s,e))))),[]);return Qe(A.Provider,{value:rs((()=>[null!=e?e:p[0],es(es(es({},p[1]),s),C),null!=t?t:p[2],es(es({},p[3]),l),null!=o?o:p[4],es(es({},p[5]),r),null!=u?u:p[6],es(es({},p[7]),n),null!=d?d:p[8],es(es({},p[9]),i),null!=a?a:p[10],es(es({},p[11]),c),w,R]),[e,s,C,t,l,o,r,u,n,d,i,a,c,p,w,R])},I)},e.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:l=ps,getRowComponentProps:o,debugIds:r})=>{const[u,n,,d]=Je(N(t),e),i=Te(e,s,u);return cs(h(d)||h(i)?null:Qe(l,ss(es({},ze(o,i)),{key:i,tableId:d,rowId:i,store:n,debugIds:r})),void 0,r,s)},e.ResultCellView=Rs,e.ResultRowView=ks,e.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:l,offset:o,limit:r}=s,u=ts(s,["cellId","descending","offset","limit"]);return ds(u,Oe(u.queryId,t,l,o,r,u.queries))},e.ResultTableView=e=>ds(e,xe(e.queryId,e.queries)),e.RowView=ps,e.SliceView=ws,e.SortedTableView=e=>{var s=e,{cellId:t,descending:l,offset:o,limit:r}=s,u=ts(s,["cellId","descending","offset","limit"]);return ns(u,ge(u.tableId,t,l,o,r,u.store))},e.TableView=Cs,e.TablesView=({store:e,tableComponent:s=Cs,getTableComponentProps:t,separator:l,debugIds:o})=>cs(x(Re(e),(l=>Qe(s,ss(es({},ze(t,l)),{key:l,tableId:l,store:e,debugIds:o})))),l),e.ValueView=bs,e.ValuesView=({store:e,valueComponent:s=bs,getValueComponentProps:t,separator:l,debugIds:o})=>cs(x(he(e),(l=>Qe(s,ss(es({},ze(t,l)),{key:l,valueId:l,store:e,debugIds:o})))),l),e.useAddRowCallback=(e,s,t=ue,l,o=T,r=ue,u=!0)=>{const n=z(l);return _((t=>m(n,(l=>m(s(t,l),(s=>o(l.addRow(f(e)?e(t,l):e,s,u),l,s)))))),[n,e,...t,...r,u])},e.useCell=ve,e.useCellIds=ye,e.useCellIdsListener=(e,s,t,l,o,r)=>pe(k,z(r),t,l,[e,s],o),e.useCellListener=(e,s,t,l,o,r,u)=>pe(R,z(u),l,o,[e,s,t],r),e.useCheckpoint=Me,e.useCheckpointIds=He,e.useCheckpointIdsListener=(e,s,t)=>pe("CheckpointIds",Y(t),e,s),e.useCheckpointListener=(e,s,t,l)=>pe("Checkpoint",Y(l),s,t,[e]),e.useCheckpoints=e=>G(e,10),e.useCheckpointsIds=()=>W(11),e.useCheckpointsOrCheckpointsById=Y,e.useCreateCheckpoints=(e,s,t)=>ae(e,s,t),e.useCreateIndexes=(e,s,t)=>ae(e,s,t),e.useCreateMetrics=(e,s,t)=>ae(e,s,t),e.useCreatePersister=(e,s,t=ue,l,o=ue,r,u=ue)=>{const[,n]=oe(),[d,i]=oe();return ee((()=>{const t=s(e);if(i(t),t)return l&&(o=function*(){yield l(t),n([])},new Promise(((e,s)=>{var t=e=>{try{r(o.next(e))}catch(e){s(e)}},l=e=>{try{r(o.throw(e))}catch(e){s(e)}},r=s=>s.done?e(s.value):Promise.resolve(s.value).then(t,l);r((o=o.apply(void 0,null)).next())}))),()=>{t.destroy(),null==r||r(t)};var o}),[e,...t,...o,...u]),d},e.useCreateQueries=(e,s,t)=>ae(e,s,t),e.useCreateRelationships=(e,s,t)=>ae(e,s,t),e.useCreateStore=(e,s=ue)=>se(e,s),e.useDelCellCallback=(e,s,t,l,o,r,u)=>be(o,R,r,u,e,s,t,l),e.useDelRowCallback=(e,s,t,l,o)=>be(t,p,l,o,e,s),e.useDelTableCallback=(e,s,t,l)=>be(s,a,t,l,e),e.useDelTablesCallback=(e,s,t)=>be(e,c,s,t),e.useDelValueCallback=(e,s,t,l)=>be(s,g,t,l,e),e.useDelValuesCallback=(e,s,t)=>be(e,y,s,t),e.useDidFinishTransactionListener=(e,s,t)=>pe("DidFinish"+$,z(t),e,s),e.useGoBackwardCallback=De,e.useGoForwardCallback=je,e.useGoToCallback=(e,s=ue,t,l=T,o=ue)=>{const r=Y(t);return _((s=>m(r,(t=>m(e(s),(e=>l(t.goTo(e),e)))))),[r,...s,...o])},e.useHasCell=(e,s,t,l)=>Ie(R,z(l),4,[e,s,t]),e.useHasCellListener=(e,s,t,l,o,r,u)=>pe(d+R,z(u),l,o,[e,s,t],r),e.useHasRow=(e,s,t)=>Ie(p,z(t),4,[e,s]),e.useHasRowListener=(e,s,t,l,o,r)=>pe(d+p,z(r),t,l,[e,s],o),e.useHasTable=(e,s)=>Ie(a,z(s),4,[e]),e.useHasTableCell=(e,s,t)=>Ie(a+R,z(t),4,[e,s]),e.useHasTableCellListener=(e,s,t,l,o,r)=>pe(d+a+R,z(r),t,l,[e,s],o),e.useHasTableListener=(e,s,t,l,o)=>pe(d+a,z(o),s,t,[e],l),e.useHasTables=e=>Ie(c,z(e),4,[]),e.useHasTablesListener=(e,s,t,l)=>pe(d+c,z(l),e,s,[],t),e.useHasValue=(e,s)=>Ie(g,z(s),4,[e]),e.useHasValueListener=(e,s,t,l,o)=>pe(d+g,z(o),s,t,[e],l),e.useHasValues=e=>Ie(y,z(e),4,[]),e.useHasValuesListener=(e,s,t,l)=>pe(d+y,z(l),e,s,[],t),e.useIndexIds=e=>Ie("IndexIds",K(e),1),e.useIndexes=e=>G(e,4),e.useIndexesIds=()=>W(5),e.useIndexesOrIndexesById=K,e.useLinkedRowIds=Pe,e.useLinkedRowIdsListener=(e,s,t,l,o)=>pe("Linked"+b,N(o),t,l,[e,s]),e.useLocalRowIds=Ve,e.useLocalRowIdsListener=(e,s,t,l,o)=>pe("Local"+b,N(o),t,l,[e,s]),e.useMetric=Le,e.useMetricIds=e=>Ie("MetricIds",J(e),1),e.useMetricListener=(e,s,t,l)=>pe("Metric",J(l),s,t,[e]),e.useMetrics=e=>G(e,2),e.useMetricsIds=()=>W(3),e.useMetricsOrMetricsById=J,e.useProvideStore=(e,s)=>{const{12:t,13:l}=E(A);Q((()=>(null==t||t(e,s),()=>null==l?void 0:l(e))),[t,e,s,l])},e.useQueries=e=>G(e,8),e.useQueriesIds=()=>W(9),e.useQueriesOrQueriesById=X,e.useQueryIds=e=>Ie("QueryIds",X(e),1),e.useRedoInformation=e=>{var s;const t=Y(e),[,,[o]]=He(t);return[!h(o),je(t),o,null!=(s=m(o,(e=>null==t?void 0:t.getCheckpoint(e))))?s:l]},e.useRelationshipIds=e=>Ie("RelationshipIds",N(e),1),e.useRelationships=e=>G(e,6),e.useRelationshipsIds=()=>W(7),e.useRelationshipsOrRelationshipsById=N,e.useRemoteRowId=Te,e.useRemoteRowIdListener=(e,s,t,l,o)=>pe("RemoteRowId",N(o),t,l,[e,s]),e.useResultCell=Be,e.useResultCellIds=qe,e.useResultCellIdsListener=(e,s,t,l,o)=>pe(n+k,X(o),t,l,[e,s]),e.useResultCellListener=(e,s,t,l,o,r)=>pe(n+R,X(r),l,o,[e,s,t]),e.useResultRow=(e,s,t)=>Ie(n+p,X(t),0,[e,s]),e.useResultRowCount=(e,s)=>Ie(n+C,X(s),5,[e]),e.useResultRowCountListener=(e,s,t,l)=>pe(n+C,X(l),s,t,[e]),e.useResultRowIds=xe,e.useResultRowIdsListener=(e,s,t,l)=>pe(n+b,X(l),s,t,[e]),e.useResultRowListener=(e,s,t,l,o)=>pe(n+p,X(o),t,l,[e,s]),e.useResultSortedRowIds=Oe,e.useResultSortedRowIdsListener=(e,s,t,l,o,r,u,d)=>pe(n+w,X(d),r,u,[e,s,t,l,o]),e.useResultTable=(e,s)=>Ie(n+a,X(s),0,[e]),e.useResultTableCellIds=(e,s)=>Ie(n+a+k,X(s),1,[e]),e.useResultTableCellIdsListener=(e,s,t,l)=>pe(n+a+k,X(l),s,t,[e]),e.useResultTableListener=(e,s,t,l)=>pe(n+a,X(l),s,t,[e]),e.useRow=(e,s,t)=>Ie(p,z(t),0,[e,s]),e.useRowCount=(e,s)=>Ie(C,z(s),5,[e]),e.useRowCountListener=(e,s,t,l,o)=>pe(C,z(o),s,t,[e],l),e.useRowIds=ke,e.useRowIdsListener=(e,s,t,l,o)=>pe(b,z(o),s,t,[e],l),e.useRowListener=(e,s,t,l,o,r)=>pe(p,z(r),t,l,[e,s],o),e.useSetCellCallback=(e,s,t,l,o,r,u,n)=>Ce(r,R,l,o,u,n,e,s,t),e.useSetCheckpointCallback=(e=T,s=ue,t,l=T,o=ue)=>{const r=Y(t);return _((s=>m(r,(t=>{const o=e(s);l(t.addCheckpoint(o),t,o)}))),[r,...s,...o])},e.useSetPartialRowCallback=(e,s,t,l,o,r,u)=>Ce(o,"PartialRow",t,l,r,u,e,s),e.useSetPartialValuesCallback=(e,s,t,l,o)=>Ce(t,"PartialValues",e,s,l,o),e.useSetRowCallback=(e,s,t,l,o,r,u)=>Ce(o,p,t,l,r,u,e,s),e.useSetTableCallback=(e,s,t,l,o,r)=>Ce(l,a,s,t,o,r,e),e.useSetTablesCallback=(e,s,t,l,o)=>Ce(t,c,e,s,l,o),e.useSetValueCallback=(e,s,t,l,o,r)=>Ce(l,g,s,t,o,r,e),e.useSetValuesCallback=(e,s,t,l,o)=>Ce(t,y,e,s,l,o),e.useSliceIds=fe,e.useSliceIdsListener=(e,s,t,l)=>pe("SliceIds",K(l),s,t,[e]),e.useSliceRowIds=Se,e.useSliceRowIdsListener=(e,s,t,l,o)=>pe("Slice"+b,K(o),t,l,[e,s]),e.useSortedRowIds=ge,e.useSortedRowIdsListener=(e,s,t,l,o,r,u,n,d)=>pe(w,z(d),r,u,[e,s,t,l,o],n),e.useStartTransactionListener=(e,s,t)=>pe("Start"+$,z(t),e,s),e.useStore=e=>G(e,0),e.useStoreIds=()=>W(1),e.useStoreOrStoreById=z,e.useTable=(e,s)=>Ie(a,z(s),0,[e]),e.useTableCellIds=(e,s)=>Ie(a+k,z(s),1,[e]),e.useTableCellIdsListener=(e,s,t,l,o)=>pe(a+k,z(o),s,t,[e],l),e.useTableIds=Re,e.useTableIdsListener=(e,s,t,l)=>pe(I,z(l),e,s,ue,t),e.useTableListener=(e,s,t,l,o)=>pe(a,z(o),s,t,[e],l),e.useTables=e=>Ie(c,z(e),0),e.useTablesListener=(e,s,t,l)=>pe(c,z(l),e,s,ue,t),e.useUndoInformation=e=>{var s;const t=Y(e),[o,r]=He(t);return[(u=o,!(0==S(u))),De(t),r,null!=(s=m(r,(e=>null==t?void 0:t.getCheckpoint(e))))?s:l];var u},e.useValue=me,e.useValueIds=he,e.useValueIdsListener=(e,s,t,l)=>pe(v,z(l),e,s,ue,t),e.useValueListener=(e,s,t,l,o)=>pe(g,z(o),s,t,[e],l),e.useValues=e=>Ie(y,z(e),0),e.useValuesListener=(e,s,t,l)=>pe(y,z(l),e,s,ue,t),e.useWillFinishTransactionListener=(e,s,t)=>pe("WillFinish"+$,z(t),e,s)},"object"==typeof exports&&"undefined"!=typeof module?s(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],s):s((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseUiReact={},e.React);
1
+ var e,s;e=this,s=function(e,s){"use strict";const t=e=>typeof e,l="",o=t(l),r=t(t),u="Listener",n="Result",d="Has",i="Ids",a="Table",c=a+"s",I=a+i,p="Row",C=p+"Count",b=p+i,w="Sorted"+p+i,R="Cell",k=R+i,y="Value",g=y+"s",v=y+i,h=e=>null==e,m=(e,s,t)=>h(e)?null==t?void 0:t():s(e),L=e=>t(e)==o,f=e=>t(e)==r,S=e=>e.length,T=()=>{},V=(e,s)=>e.every(s),P=(e,s)=>S(e)===S(s)&&V(e,((e,t)=>s[t]===e)),x=(e,s)=>e.map(s),O=Object,q=e=>O.getPrototypeOf(e),B=O.entries,H=e=>!h(e)&&m(q(e),(e=>e==O.prototype||h(q(e))),(()=>!0)),M=O.keys,D=(e,s)=>m(e,(e=>e[s])),j=(e,s)=>{const t=B(e);return S(t)===S(M(s))&&V(t,(([e,t])=>H(t)?!!H(s[e])&&j(s[e],t):s[e]===t))},{createContext:F,useContext:E,useEffect:Q}=s,A=F([]),G=(e,s)=>{var t;const l=E(A);return h(e)?l[s]:L(e)?D(null!=(t=l[s+1])?t:{},e):e},U=(e,s)=>{const t=G(e,s);return h(e)||L(e)?t:e},W=e=>{var s;return M(null!=(s=E(A)[e])?s:{})},z=e=>U(e,0),J=e=>U(e,2),K=e=>U(e,4),N=e=>U(e,6),X=e=>U(e,8),Y=e=>U(e,10),Z=e=>e.toLowerCase();Z(u);const $="Transaction";Z($);var _=(e,s,t)=>new Promise(((l,o)=>{var r=e=>{try{n(t.next(e))}catch(e){o(e)}},u=e=>{try{n(t.throw(e))}catch(e){o(e)}},n=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,u);n((t=t.apply(e,s)).next())}));const{useCallback:ee,useEffect:se,useMemo:te,useLayoutEffect:le,useRef:oe,useState:re,useSyncExternalStore:ue}=s,ne=[],de=[{},[],[ne,void 0,ne],void 0,!1,0],ie=(e,s)=>e===s,ae=[j,P,([e,s,t],[l,o,r])=>s===o&&P(e,l)&&P(t,r)],ce=(e,s,t=ne)=>{const[,l]=re(),[o,r]=re();return se((()=>{const t=s(e);return r(t),l([]),t.destroy}),[e,...t]),o},Ie=(e,s,...t)=>{var l;const o=null==(l=null==e?void 0:e["add"+s+u])?void 0:l.call(e,...t);return()=>null==e?void 0:e.delListener(o)},pe=(e,s,t,o=ne)=>{const r=oe(de[t]),u=ee((()=>{var l,u,n;const d=null!=(u=null==(l=null==s?void 0:s[(4==t?"has":"get")+e])?void 0:l.call(s,...o))?u:de[t];return(null!=(n=ae[t])?n:ie)(d,r.current)?r.current:r.current=d}),[s,t,e,...o]),n=ee((r=>Ie(s,(4==t?d:l)+e,...o,r)),[s,t,e,...o]);return ue(n,u)},Ce=(e,s,t,l=ne,o=ne,...r)=>le((()=>Ie(s,e,...o,t,...r)),[s,e,...o,...l,...r]),be=(e,s,t,l=ne,o=T,r=ne,...u)=>{const n=z(e);return ee((e=>m(n,(l=>m(t(e,l),(t=>o(l["set"+s](...x(u,(s=>f(s)?s(e,l):s)),t),t)))))),[n,s,...l,...r,...u])},we=(e,s,t=T,l=ne,...o)=>{const r=z(e);return ee((()=>t(null==r?void 0:r["del"+s](...o))),[r,s,...l,...o])},Re=(e,s,t)=>{const l=Y(e);return ee((()=>null==l?void 0:l[s](t)),[l,s,t])},ke=e=>pe(I,z(e),1),ye=(e,s)=>pe(b,z(s),1,[e]),ge=(e,s,t,l=0,o,r)=>pe(w,z(r),1,[e,s,t,l,o]),ve=(e,s,t)=>pe(k,z(t),1,[e,s]),he=(e,s,t,l)=>pe(R,z(l),3,[e,s,t]),me=e=>pe(v,z(e),1),Le=(e,s)=>pe(y,z(s),3,[e]),fe=(e,s)=>pe("Metric",J(s),3,[e]),Se=(e,s)=>pe("SliceIds",K(s),1,[e]),Te=(e,s,t)=>pe("Slice"+b,K(t),1,[e,s]),Ve=(e,s,t)=>pe("RemoteRowId",N(t),3,[e,s]),Pe=(e,s,t)=>pe("Local"+b,N(t),1,[e,s]),xe=(e,s,t)=>pe("Linked"+b,N(t),1,[e,s]),Oe=(e,s)=>pe(n+b,X(s),1,[e]),qe=(e,s,t,l=0,o,r)=>pe(n+w,X(r),1,[e,s,t,l,o]),Be=(e,s,t)=>pe(n+k,X(t),1,[e,s]),He=(e,s,t,l)=>pe(n+R,X(l),3,[e,s,t]),Me=e=>pe("CheckpointIds",Y(e),2),De=(e,s)=>pe("Checkpoint",Y(s),3,[e]),je=e=>Re(e,"goBackward"),Fe=e=>Re(e,"goForward"),{PureComponent:Ee,Fragment:Qe,createElement:Ae,useCallback:Ge,useLayoutEffect:Ue,useRef:We,useState:ze}=s,Je=(e,...s)=>h(e)?{}:e(...s),Ke=(e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(s),null==e?void 0:e.getRemoteTableId(s)];var Ne=Object.defineProperty,Xe=Object.defineProperties,Ye=Object.getOwnPropertyDescriptors,Ze=Object.getOwnPropertySymbols,$e=Object.prototype.hasOwnProperty,_e=Object.prototype.propertyIsEnumerable,es=(e,s,t)=>s in e?Ne(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,ss=(e,s)=>{for(var t in s||(s={}))$e.call(s,t)&&es(e,t,s[t]);if(Ze)for(var t of Ze(s))_e.call(s,t)&&es(e,t,s[t]);return e},ts=(e,s)=>Xe(e,Ye(s)),ls=(e,s)=>{var t={};for(var l in e)$e.call(e,l)&&s.indexOf(l)<0&&(t[l]=e[l]);if(null!=e&&Ze)for(var l of Ze(e))s.indexOf(l)<0&&_e.call(e,l)&&(t[l]=e[l]);return t};const{useCallback:os,useContext:rs,useMemo:us,useState:ns}=s,ds=({tableId:e,store:s,rowComponent:t=Cs,getRowComponentProps:l,customCellIds:o,separator:r,debugIds:u},n)=>Is(x(n,(r=>Ae(t,ts(ss({},Je(l,r)),{key:r,tableId:e,rowId:r,customCellIds:o,store:s,debugIds:u})))),r,u,e),is=({queryId:e,queries:s,resultRowComponent:t=ys,getResultRowComponentProps:l,separator:o,debugIds:r},u)=>Is(x(u,(o=>Ae(t,ts(ss({},Je(l,o)),{key:o,queryId:e,rowId:o,queries:s,debugIds:r})))),o,r,e),as=({relationshipId:e,relationships:s,rowComponent:t=Cs,getRowComponentProps:l,separator:o,debugIds:r},u,n)=>{const[d,i,a]=Ke(N(s),e),c=u(e,n,d);return Is(x(c,(e=>Ae(t,ts(ss({},Je(l,e)),{key:e,tableId:a,rowId:e,store:i,debugIds:r})))),o,r,n)},cs=e=>({checkpoints:s,checkpointComponent:t=gs,getCheckpointComponentProps:l,separator:o,debugIds:r})=>{const u=Y(s);return Is(x(e(Me(u)),(e=>Ae(t,ts(ss({},Je(l,e)),{key:e,checkpoints:u,checkpointId:e,debugIds:r})))),o)},Is=(e,s,t,l)=>{const o=h(s)||!Array.isArray(e)?e:x(e,((e,t)=>t>0?[s,e]:e));return t?[l,":{",o,"}"]:o},ps=({tableId:e,rowId:s,cellId:t,store:o,debugIds:r})=>{var u;return Is(l+(null!=(u=he(e,s,t,o))?u:l),void 0,r,t)},Cs=({tableId:e,rowId:s,store:t,cellComponent:l=ps,getCellComponentProps:o,customCellIds:r,separator:u,debugIds:n})=>Is(x(((e,s,t,l)=>{const o=ve(s,t,l);return null!=e?e:o})(r,e,s,t),(r=>Ae(l,ts(ss({},Je(o,r)),{key:r,tableId:e,rowId:s,cellId:r,store:t,debugIds:n})))),u,n,s),bs=e=>ds(e,ye(e.tableId,e.store)),ws=({valueId:e,store:s,debugIds:t})=>{var o;return Is(l+(null!=(o=Le(e,s))?o:l),void 0,t,e)},Rs=({indexId:e,sliceId:s,indexes:t,rowComponent:l=Cs,getRowComponentProps:o,separator:r,debugIds:u})=>{const[n,d,i]=((e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(s)])(K(t),e),a=Te(e,s,n);return Is(x(a,(e=>Ae(l,ts(ss({},Je(o,e)),{key:e,tableId:i,rowId:e,store:d,debugIds:u})))),r,u,s)},ks=({queryId:e,rowId:s,cellId:t,queries:o,debugIds:r})=>{var u;return Is(l+(null!=(u=He(e,s,t,o))?u:l),void 0,r,t)},ys=({queryId:e,rowId:s,queries:t,resultCellComponent:l=ks,getResultCellComponentProps:o,separator:r,debugIds:u})=>Is(x(Be(e,s,t),(r=>Ae(l,ts(ss({},Je(o,r)),{key:r,queryId:e,rowId:s,cellId:r,queries:t,debugIds:u})))),r,u,s),gs=({checkpoints:e,checkpointId:s,debugIds:t})=>{var o;return Is(null!=(o=De(s,e))?o:l,void 0,t,s)},vs=cs((e=>e[0])),hs=cs((e=>h(e[1])?[]:[e[1]])),ms=cs((e=>e[2]));e.BackwardCheckpointsView=vs,e.CellView=ps,e.CheckpointView=gs,e.CurrentCheckpointView=hs,e.ForwardCheckpointsView=ms,e.IndexView=({indexId:e,indexes:s,sliceComponent:t=Rs,getSliceComponentProps:l,separator:o,debugIds:r})=>Is(x(Se(e,s),(o=>Ae(t,ts(ss({},Je(l,o)),{key:o,indexId:e,sliceId:o,indexes:s,debugIds:r})))),o,r,e),e.LinkedRowsView=e=>as(e,xe,e.firstRowId),e.LocalRowsView=e=>as(e,Pe,e.remoteRowId),e.MetricView=({metricId:e,metrics:s,debugIds:t})=>{var o;return Is(null!=(o=fe(e,s))?o:l,void 0,t,e)},e.Provider=({store:e,storesById:s,metrics:t,metricsById:l,indexes:o,indexesById:r,relationships:u,relationshipsById:n,queries:d,queriesById:i,checkpoints:a,checkpointsById:c,children:I})=>{const p=rs(A),[C,b]=ns({}),w=os(((e,s)=>b((t=>D(t,e)==s?t:ts(ss({},t),{[e]:s})))),[]),R=os((e=>b((s=>ss({},((e,s)=>(delete e[s],e))(s,e))))),[]);return Ae(A.Provider,{value:us((()=>[null!=e?e:p[0],ss(ss(ss({},p[1]),s),C),null!=t?t:p[2],ss(ss({},p[3]),l),null!=o?o:p[4],ss(ss({},p[5]),r),null!=u?u:p[6],ss(ss({},p[7]),n),null!=d?d:p[8],ss(ss({},p[9]),i),null!=a?a:p[10],ss(ss({},p[11]),c),w,R]),[e,s,C,t,l,o,r,u,n,d,i,a,c,p,w,R])},I)},e.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:l=Cs,getRowComponentProps:o,debugIds:r})=>{const[u,n,,d]=Ke(N(t),e),i=Ve(e,s,u);return Is(h(d)||h(i)?null:Ae(l,ts(ss({},Je(o,i)),{key:i,tableId:d,rowId:i,store:n,debugIds:r})),void 0,r,s)},e.ResultCellView=ks,e.ResultRowView=ys,e.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:l,offset:o,limit:r}=s,u=ls(s,["cellId","descending","offset","limit"]);return is(u,qe(u.queryId,t,l,o,r,u.queries))},e.ResultTableView=e=>is(e,Oe(e.queryId,e.queries)),e.RowView=Cs,e.SliceView=Rs,e.SortedTableView=e=>{var s=e,{cellId:t,descending:l,offset:o,limit:r}=s,u=ls(s,["cellId","descending","offset","limit"]);return ds(u,ge(u.tableId,t,l,o,r,u.store))},e.TableView=bs,e.TablesView=({store:e,tableComponent:s=bs,getTableComponentProps:t,separator:l,debugIds:o})=>Is(x(ke(e),(l=>Ae(s,ts(ss({},Je(t,l)),{key:l,tableId:l,store:e,debugIds:o})))),l),e.ValueView=ws,e.ValuesView=({store:e,valueComponent:s=ws,getValueComponentProps:t,separator:l,debugIds:o})=>Is(x(me(e),(l=>Ae(s,ts(ss({},Je(t,l)),{key:l,valueId:l,store:e,debugIds:o})))),l),e.useAddRowCallback=(e,s,t=ne,l,o=T,r=ne,u=!0)=>{const n=z(l);return ee((t=>m(n,(l=>m(s(t,l),(s=>o(l.addRow(f(e)?e(t,l):e,s,u),l,s)))))),[n,e,...t,...r,u])},e.useCell=he,e.useCellIds=ve,e.useCellIdsListener=(e,s,t,l,o,r)=>Ce(k,z(r),t,l,[e,s],o),e.useCellListener=(e,s,t,l,o,r,u)=>Ce(R,z(u),l,o,[e,s,t],r),e.useCheckpoint=De,e.useCheckpointIds=Me,e.useCheckpointIdsListener=(e,s,t)=>Ce("CheckpointIds",Y(t),e,s),e.useCheckpointListener=(e,s,t,l)=>Ce("Checkpoint",Y(l),s,t,[e]),e.useCheckpoints=e=>G(e,10),e.useCheckpointsIds=()=>W(11),e.useCheckpointsOrCheckpointsById=Y,e.useCreateCheckpoints=(e,s,t)=>ce(e,s,t),e.useCreateIndexes=(e,s,t)=>ce(e,s,t),e.useCreateMergeableStore=(e,s=ne)=>te(e,s),e.useCreateMetrics=(e,s,t)=>ce(e,s,t),e.useCreatePersister=(e,s,t=ne,l,o=ne,r,u=ne)=>{const[,n]=re(),[d,i]=re();return se((()=>{const t=s(e);i(t),t&&l&&_(void 0,null,(function*(){yield l(t),n([])}))}),[e,...t,...o]),se((()=>()=>{d&&(d.destroy(),null==r||r(d))}),[d,...u]),d},e.useCreateQueries=(e,s,t)=>ce(e,s,t),e.useCreateRelationships=(e,s,t)=>ce(e,s,t),e.useCreateStore=(e,s=ne)=>te(e,s),e.useCreateSynchronizer=(e,s,t=ne,l,o=ne,r,u=ne)=>{const[,n]=re(),[d,i]=re();return se((()=>{_(void 0,null,(function*(){const t=yield s(e);i(t),t&&l&&_(void 0,null,(function*(){yield l(t),n([])}))}))}),[e,...t,...o]),se((()=>()=>{d&&(d.destroy(),null==r||r(d))}),[d,...u]),d},e.useDelCellCallback=(e,s,t,l,o,r,u)=>we(o,R,r,u,e,s,t,l),e.useDelRowCallback=(e,s,t,l,o)=>we(t,p,l,o,e,s),e.useDelTableCallback=(e,s,t,l)=>we(s,a,t,l,e),e.useDelTablesCallback=(e,s,t)=>we(e,c,s,t),e.useDelValueCallback=(e,s,t,l)=>we(s,y,t,l,e),e.useDelValuesCallback=(e,s,t)=>we(e,g,s,t),e.useDidFinishTransactionListener=(e,s,t)=>Ce("DidFinish"+$,z(t),e,s),e.useGoBackwardCallback=je,e.useGoForwardCallback=Fe,e.useGoToCallback=(e,s=ne,t,l=T,o=ne)=>{const r=Y(t);return ee((s=>m(r,(t=>m(e(s),(e=>l(t.goTo(e),e)))))),[r,...s,...o])},e.useHasCell=(e,s,t,l)=>pe(R,z(l),4,[e,s,t]),e.useHasCellListener=(e,s,t,l,o,r,u)=>Ce(d+R,z(u),l,o,[e,s,t],r),e.useHasRow=(e,s,t)=>pe(p,z(t),4,[e,s]),e.useHasRowListener=(e,s,t,l,o,r)=>Ce(d+p,z(r),t,l,[e,s],o),e.useHasTable=(e,s)=>pe(a,z(s),4,[e]),e.useHasTableCell=(e,s,t)=>pe(a+R,z(t),4,[e,s]),e.useHasTableCellListener=(e,s,t,l,o,r)=>Ce(d+a+R,z(r),t,l,[e,s],o),e.useHasTableListener=(e,s,t,l,o)=>Ce(d+a,z(o),s,t,[e],l),e.useHasTables=e=>pe(c,z(e),4,[]),e.useHasTablesListener=(e,s,t,l)=>Ce(d+c,z(l),e,s,[],t),e.useHasValue=(e,s)=>pe(y,z(s),4,[e]),e.useHasValueListener=(e,s,t,l,o)=>Ce(d+y,z(o),s,t,[e],l),e.useHasValues=e=>pe(g,z(e),4,[]),e.useHasValuesListener=(e,s,t,l)=>Ce(d+g,z(l),e,s,[],t),e.useIndexIds=e=>pe("IndexIds",K(e),1),e.useIndexes=e=>G(e,4),e.useIndexesIds=()=>W(5),e.useIndexesOrIndexesById=K,e.useLinkedRowIds=xe,e.useLinkedRowIdsListener=(e,s,t,l,o)=>Ce("Linked"+b,N(o),t,l,[e,s]),e.useLocalRowIds=Pe,e.useLocalRowIdsListener=(e,s,t,l,o)=>Ce("Local"+b,N(o),t,l,[e,s]),e.useMetric=fe,e.useMetricIds=e=>pe("MetricIds",J(e),1),e.useMetricListener=(e,s,t,l)=>Ce("Metric",J(l),s,t,[e]),e.useMetrics=e=>G(e,2),e.useMetricsIds=()=>W(3),e.useMetricsOrMetricsById=J,e.useProvideStore=(e,s)=>{const{12:t,13:l}=E(A);Q((()=>(null==t||t(e,s),()=>null==l?void 0:l(e))),[t,e,s,l])},e.useQueries=e=>G(e,8),e.useQueriesIds=()=>W(9),e.useQueriesOrQueriesById=X,e.useQueryIds=e=>pe("QueryIds",X(e),1),e.useRedoInformation=e=>{var s;const t=Y(e),[,,[o]]=Me(t);return[!h(o),Fe(t),o,null!=(s=m(o,(e=>null==t?void 0:t.getCheckpoint(e))))?s:l]},e.useRelationshipIds=e=>pe("RelationshipIds",N(e),1),e.useRelationships=e=>G(e,6),e.useRelationshipsIds=()=>W(7),e.useRelationshipsOrRelationshipsById=N,e.useRemoteRowId=Ve,e.useRemoteRowIdListener=(e,s,t,l,o)=>Ce("RemoteRowId",N(o),t,l,[e,s]),e.useResultCell=He,e.useResultCellIds=Be,e.useResultCellIdsListener=(e,s,t,l,o)=>Ce(n+k,X(o),t,l,[e,s]),e.useResultCellListener=(e,s,t,l,o,r)=>Ce(n+R,X(r),l,o,[e,s,t]),e.useResultRow=(e,s,t)=>pe(n+p,X(t),0,[e,s]),e.useResultRowCount=(e,s)=>pe(n+C,X(s),5,[e]),e.useResultRowCountListener=(e,s,t,l)=>Ce(n+C,X(l),s,t,[e]),e.useResultRowIds=Oe,e.useResultRowIdsListener=(e,s,t,l)=>Ce(n+b,X(l),s,t,[e]),e.useResultRowListener=(e,s,t,l,o)=>Ce(n+p,X(o),t,l,[e,s]),e.useResultSortedRowIds=qe,e.useResultSortedRowIdsListener=(e,s,t,l,o,r,u,d)=>Ce(n+w,X(d),r,u,[e,s,t,l,o]),e.useResultTable=(e,s)=>pe(n+a,X(s),0,[e]),e.useResultTableCellIds=(e,s)=>pe(n+a+k,X(s),1,[e]),e.useResultTableCellIdsListener=(e,s,t,l)=>Ce(n+a+k,X(l),s,t,[e]),e.useResultTableListener=(e,s,t,l)=>Ce(n+a,X(l),s,t,[e]),e.useRow=(e,s,t)=>pe(p,z(t),0,[e,s]),e.useRowCount=(e,s)=>pe(C,z(s),5,[e]),e.useRowCountListener=(e,s,t,l,o)=>Ce(C,z(o),s,t,[e],l),e.useRowIds=ye,e.useRowIdsListener=(e,s,t,l,o)=>Ce(b,z(o),s,t,[e],l),e.useRowListener=(e,s,t,l,o,r)=>Ce(p,z(r),t,l,[e,s],o),e.useSetCellCallback=(e,s,t,l,o,r,u,n)=>be(r,R,l,o,u,n,e,s,t),e.useSetCheckpointCallback=(e=T,s=ne,t,l=T,o=ne)=>{const r=Y(t);return ee((s=>m(r,(t=>{const o=e(s);l(t.addCheckpoint(o),t,o)}))),[r,...s,...o])},e.useSetPartialRowCallback=(e,s,t,l,o,r,u)=>be(o,"PartialRow",t,l,r,u,e,s),e.useSetPartialValuesCallback=(e,s,t,l,o)=>be(t,"PartialValues",e,s,l,o),e.useSetRowCallback=(e,s,t,l,o,r,u)=>be(o,p,t,l,r,u,e,s),e.useSetTableCallback=(e,s,t,l,o,r)=>be(l,a,s,t,o,r,e),e.useSetTablesCallback=(e,s,t,l,o)=>be(t,c,e,s,l,o),e.useSetValueCallback=(e,s,t,l,o,r)=>be(l,y,s,t,o,r,e),e.useSetValuesCallback=(e,s,t,l,o)=>be(t,g,e,s,l,o),e.useSliceIds=Se,e.useSliceIdsListener=(e,s,t,l)=>Ce("SliceIds",K(l),s,t,[e]),e.useSliceRowIds=Te,e.useSliceRowIdsListener=(e,s,t,l,o)=>Ce("Slice"+b,K(o),t,l,[e,s]),e.useSortedRowIds=ge,e.useSortedRowIdsListener=(e,s,t,l,o,r,u,n,d)=>Ce(w,z(d),r,u,[e,s,t,l,o],n),e.useStartTransactionListener=(e,s,t)=>Ce("Start"+$,z(t),e,s),e.useStore=e=>G(e,0),e.useStoreIds=()=>W(1),e.useStoreOrStoreById=z,e.useTable=(e,s)=>pe(a,z(s),0,[e]),e.useTableCellIds=(e,s)=>pe(a+k,z(s),1,[e]),e.useTableCellIdsListener=(e,s,t,l,o)=>Ce(a+k,z(o),s,t,[e],l),e.useTableIds=ke,e.useTableIdsListener=(e,s,t,l)=>Ce(I,z(l),e,s,ne,t),e.useTableListener=(e,s,t,l,o)=>Ce(a,z(o),s,t,[e],l),e.useTables=e=>pe(c,z(e),0),e.useTablesListener=(e,s,t,l)=>Ce(c,z(l),e,s,ne,t),e.useUndoInformation=e=>{var s;const t=Y(e),[o,r]=Me(t);return[(u=o,!(0==S(u))),je(t),r,null!=(s=m(r,(e=>null==t?void 0:t.getCheckpoint(e))))?s:l];var u},e.useValue=Le,e.useValueIds=me,e.useValueIdsListener=(e,s,t,l)=>Ce(v,z(l),e,s,ne,t),e.useValueListener=(e,s,t,l,o)=>Ce(y,z(o),s,t,[e],l),e.useValues=e=>pe(g,z(e),0),e.useValuesListener=(e,s,t,l)=>Ce(g,z(l),e,s,ne,t),e.useWillFinishTransactionListener=(e,s,t)=>Ce("WillFinish"+$,z(t),e,s)},"object"==typeof exports&&"undefined"!=typeof module?s(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],s):s((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseUiReact={},e.React);
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tinybase",
3
- "version": "5.0.0-beta.1",
3
+ "version": "5.0.0-beta.11",
4
4
  "author": "jamesgpearce",
5
5
  "repository": "github:tinyplex/tinybase",
6
6
  "license": "MIT",
@@ -214,34 +214,37 @@
214
214
  "publishPackage": "gulp publishPackage"
215
215
  },
216
216
  "devDependencies": {
217
- "@automerge/automerge": "^2.1.10",
218
- "@babel/cli": "^7.23.4",
219
- "@babel/core": "^7.23.7",
220
- "@babel/preset-env": "^7.23.8",
221
- "@babel/preset-react": "^7.23.3",
222
- "@babel/preset-typescript": "^7.23.3",
223
- "@prettier/sync": "^0.3.0",
217
+ "@automerge/automerge": "^2.2.0",
218
+ "@automerge/automerge-repo": "^1.1.9",
219
+ "@babel/cli": "^7.24.1",
220
+ "@babel/core": "^7.24.4",
221
+ "@babel/preset-env": "^7.24.4",
222
+ "@babel/preset-react": "^7.24.1",
223
+ "@babel/preset-typescript": "^7.24.1",
224
+ "@libsql/client": "^0.6.0",
225
+ "@journeyapps/powersync-sdk-common": "^1.6.0",
226
+ "@prettier/sync": "^0.5.2",
224
227
  "@rollup/plugin-image": "^3.0.3",
225
228
  "@rollup/plugin-replace": "^5.0.5",
226
229
  "@rollup/plugin-terser": "^0.4.4",
227
- "@sqlite.org/sqlite-wasm": "^3.44.2-build3",
230
+ "@sqlite.org/sqlite-wasm": "^3.45.3-build1",
228
231
  "@types/asciichart": "^1.5.8",
229
232
  "@types/expect-puppeteer": "^5.0.6",
230
233
  "@types/http-server": "^0.12.4",
231
- "@types/jest": "^29.5.11",
234
+ "@types/jest": "^29.5.12",
232
235
  "@types/jest-environment-puppeteer": "^5.0.6",
233
236
  "@types/less": "^3.0.6",
234
- "@types/node": "^20.11.5",
237
+ "@types/node": "^20.12.7",
235
238
  "@types/puppeteer": "^5.4.7",
236
- "@types/react": "^18.2.48",
237
- "@types/react-dom": "^18.2.18",
239
+ "@types/react": "^18.2.79",
240
+ "@types/react-dom": "^18.2.25",
238
241
  "@types/react-test-renderer": "^18.0.7",
239
242
  "@types/tmp": "^0.2.6",
240
- "@typescript-eslint/eslint-plugin": "^6.19.0",
241
- "@typescript-eslint/parser": "^6.19.0",
243
+ "@types/ws": "^8.5.10",
244
+ "@typescript-eslint/eslint-plugin": "^7.7.1",
245
+ "@typescript-eslint/parser": "^7.7.1",
242
246
  "@vlcn.io/crsqlite-wasm": "^0.16.0",
243
247
  "asciichart": "^1.5.25",
244
- "automerge-repo": "^0.1.0",
245
248
  "babel-eslint": "^10.1.0",
246
249
  "babel-jest": "^29.7.0",
247
250
  "babel-plugin-transform-import-meta": "^2.2.1",
@@ -249,71 +252,85 @@
249
252
  "babel-preset-minify": "^0.5.2",
250
253
  "buffer-replace": "^1.0.0",
251
254
  "country-flag-emoji-json": "^2.0.0",
252
- "cspell": "^8.3.2",
253
- "electric-sql": "^0.8.2",
254
- "esbuild": "^0.19.11",
255
- "eslint": "^8.56.0",
255
+ "cspell": "^8.7.0",
256
+ "electric-sql": "^0.10.1",
257
+ "esbuild": "^0.20.2",
258
+ "eslint": "^8.57.0",
256
259
  "eslint-config-prettier": "^9.1.0",
257
- "eslint-plugin-jest": "^27.6.3",
258
- "eslint-plugin-jsdoc": "^48.0.2",
259
- "eslint-plugin-react": "7.33.2",
260
+ "eslint-plugin-jest": "^28.2.0",
261
+ "eslint-plugin-jsdoc": "^48.2.3",
262
+ "eslint-plugin-react": "7.34.1",
260
263
  "eslint-plugin-react-hooks": "^4.6.0",
261
264
  "expo-sqlite": "^13.2.1",
262
265
  "fake-indexeddb": "^5.0.2",
263
- "gulp": "^4.0.2",
266
+ "gulp": "^5.0.0",
264
267
  "gulp-gzip": "^1.4.2",
265
268
  "http-server": "^14.1.1",
266
269
  "idb": "^8.0.0",
267
270
  "jest": "^29.7.0",
268
271
  "jest-environment-jsdom": "^29.7.0",
269
272
  "jest-fetch-mock": "^3.0.3",
270
- "jest-puppeteer": "^9.0.2",
273
+ "jest-puppeteer": "^10.0.1",
271
274
  "less": "^4.2.0",
272
- "partykit": "^0.0.72",
273
- "partysocket": "^0.0.20",
274
- "prettier": "^3.2.4",
275
- "puppeteer": "21.7.0",
275
+ "partykit": "^0.0.104",
276
+ "partysocket": "^1.0.1",
277
+ "prettier": "^3.2.5",
278
+ "puppeteer": "22.7.0",
276
279
  "react": "^18.2.0",
277
280
  "react-dom": "^18.2.0",
278
281
  "react-test-renderer": "^18.2.0",
279
- "rollup": "^4.9.5",
280
- "rollup-plugin-esbuild": "^6.1.0",
281
- "rollup-plugin-gzip": "^3.1.1",
282
+ "rollup": "^4.16.4",
283
+ "rollup-plugin-esbuild": "^6.1.1",
284
+ "rollup-plugin-gzip": "^3.1.2",
282
285
  "rollup-plugin-preserve-shebang": "^1.0.1",
283
286
  "rollup-plugin-prettier": "^4.1.1",
284
287
  "sqlite3": "^5.1.7",
285
288
  "tinybase": "file:./",
286
- "tinydocs": "^0.1.34",
287
- "tmp": "^0.2.1",
289
+ "tinydocs": "^0.1.36",
290
+ "tmp": "^0.2.3",
288
291
  "ts-unused-exports": "^10.0.1",
289
- "typescript": "5.3.3",
292
+ "typescript": "5.4.5",
290
293
  "wa-sqlite": "github:rhashimoto/wa-sqlite",
291
- "yjs": "^13.6.10"
294
+ "ws": "^8.16.0",
295
+ "yjs": "^13.6.14"
292
296
  },
293
297
  "peerDependencies": {
294
- "@sqlite.org/sqlite-wasm": "^3.44.2-build3",
298
+ "@automerge/automerge-repo": "^1.1.9",
299
+ "@libsql/client": "^0.5.6",
300
+ "@journeyapps/powersync-sdk-common": "^1.6.0",
301
+ "@sqlite.org/sqlite-wasm": "^3.45.3-build1",
295
302
  "@vlcn.io/crsqlite-wasm": "^0.16.0",
296
- "automerge-repo": "^0.1.0",
297
- "electric-sql": "^0.8.2",
298
- "partykit": "^0.0.72",
299
- "partysocket": "^0.0.20",
300
- "prettier": "^3.2.4",
303
+ "electric-sql": "^0.10.1",
304
+ "expo-sqlite": "^13.2.1",
305
+ "partykit": "^0.0.104",
306
+ "partysocket": "^1.0.1",
307
+ "prettier": "^3.2.5",
301
308
  "react": "^18.2.0",
302
309
  "react-dom": "^18.2.0",
303
310
  "sqlite3": "^5.1.7",
304
- "yjs": "^13.6.10"
311
+ "ws": "^8.16.0",
312
+ "yjs": "^13.6.14"
305
313
  },
306
314
  "peerDependenciesMeta": {
315
+ "@automerge/automerge-repo": {
316
+ "optional": true
317
+ },
318
+ "@libsql/client": {
319
+ "optional": true
320
+ },
321
+ "@journeyapps/powersync-sdk-common": {
322
+ "optional": true
323
+ },
307
324
  "@sqlite.org/sqlite-wasm": {
308
325
  "optional": true
309
326
  },
310
327
  "@vlcn.io/crsqlite-wasm": {
311
328
  "optional": true
312
329
  },
313
- "automerge-repo": {
330
+ "electric-sql": {
314
331
  "optional": true
315
332
  },
316
- "electric-sql": {
333
+ "expo-sqlite": {
317
334
  "optional": true
318
335
  },
319
336
  "partykit": {
@@ -334,6 +351,9 @@
334
351
  "sqlite3": {
335
352
  "optional": true
336
353
  },
354
+ "ws": {
355
+ "optional": true
356
+ },
337
357
  "yjs": {
338
358
  "optional": true
339
359
  }
package/readme.md CHANGED
@@ -1,4 +1,4 @@
1
- <section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2><p id="copy">Build blisteringly fast web apps that work both online and offline. Manage your state locally, synchronize it to the cloud when you need to, or even make it collaborative. But, most importantly... have fun building stuff again!</p></section><p><a href="https://beta.tinybase.org/guides/releases/#v4-6"><em>NEW!</em> v4.6 release</a> <span id="one-with">&quot;The One With ElectricSQL&quot;</span></p><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><ul><li>Manage <a href="#start-with-a-simple-key-value-store">key-value data</a>, <a href="#level-up-to-use-tabular-data">tabular data</a> - or both - with optional <a href="#apply-schemas-to-tables-values">schematization</a> to model your app&#x27;s data structures.</li><li><a href="#register-granular-listeners">Flexibly reactive</a> to reconciled updates, so you only spend rendering cycles on things that change.</li><li><a href="#build-complex-queries-with-tinyql">Powerful query engine</a> to select, join, filter, group, sort and paginate data - reactively - and without SQL.</li><li>Built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, <a href="#model-table-relationships">tabular relationships</a> - and even an <a href="#set-checkpoints-for-an-undo-stack">undo stack</a> for your app state.</li><li>Create <a href="#type-definitions-orm-like-apis">type definitions &amp; ORM-like APIs</a>, from schema or inference. <a href="#an-inspector-for-your-data">Inspect your data</a> (<em>new!</em>) directly in the browser.</li><li>Easily <a href="#persist-to-storage-sqlite-crdts">sync your data</a> to browser <a href="https://beta.tinybase.org/api/persister-browser">storage</a>, <a href="https://beta.tinybase.org/api/persister-indexed-db/">IndexedDB</a>, <a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence/">SQLite</a>, <a href="https://beta.tinybase.org/guides/schemas-and-persistence/synchronizing-data/">CRDTs</a>; and (<em>new!</em>) <a href="https://beta.tinybase.org/api/persister-partykit-client/">PartyKit</a> and <a href="https://electric-sql.com/">ElectricSQL</a>.</li><li>Optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and (<em>new!</em>) <a href="#pre-built-reactive-components">pre-built components</a> that let you easily build fully reactive user interfaces.</li><li>Tiny by name, tiny by nature: <a href="#did-we-say-tiny">5.0kB - 9.5kB</a>, no dependencies. <a href="#well-tested-and-documented">100% tested</a>, <a href="https://beta.tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and of course, <a href="https://github.com/tinyplex/tinybase">open source</a>!</li></ul><hr><section id="friends"><h2 id="tinybase-works-great-on-its-own-but-also-plays-well-with-friends">TinyBase works great on its own, but also plays well with friends!</h2><div><a href="https://beta.tinybase.org/guides/building-uis/getting-started-with-ui-react"><img width="48" src="https://beta.tinybase.org/react.svg"> React</a></div><div><a href="https://beta.tinybase.org/api/persister-partykit-client"><img width="48" src="https://beta.tinybase.org/partykit.svg"> PartyKit</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/expo.svg">Expo SQLite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/electric.svg">ElectricSQL</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/sqlite.svg"> SQLite</a></div><div><a href="https://beta.tinybase.org/api/persister-indexed-db/functions/creation/createindexeddbpersister"><img width="48" src="https://beta.tinybase.org/indexeddb.svg"> IndexedDB</a></div><div><a href="https://beta.tinybase.org/api/persister-yjs/functions/creation/createyjspersister"><img width="48" src="https://beta.tinybase.org/yjs.svg"> YJS</a></div><div><a href="https://beta.tinybase.org/api/persister-cr-sqlite-wasm"><img width="48" src="https://beta.tinybase.org/crsqlite.png"> CR-SQLite</a></div><div><a href="https://beta.tinybase.org/api/persister-automerge"><img width="48" src="https://beta.tinybase.org/automerge.svg"> Automerge</a></div></section><hr><section id="follow"><a href="https://github.com/tinyplex/tinybase" target="_blank"><img src="https://img.shields.io/github/stars/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=GitHub&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="https://discord.com/invite/mGz3mevwP8" target="_blank"><img src="https://img.shields.io/discord/1027918215323590676?style=for-the-badge&amp;logo=discord&amp;logoColor=%23fff&amp;label=Discord&amp;labelColor=%233131e8&amp;color=%23333"> </a><a href="https://twitter.com/tinybasejs" target="_blank"><img src="https://img.shields.io/twitter/follow/tinybasejs?style=for-the-badge&amp;logo=x&amp;logoColor=%23fff&amp;label=Twitter&amp;labelColor=%23333&amp;color=%23333"></a><br><a href="https://github.com/tinyplex/tinybase/discussions" target="_blank"><img src="https://img.shields.io/github/discussions/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=Ideas&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="https://github.com/tinyplex/tinybase/issues" target="_blank"><img src="https://img.shields.io/github/issues/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=Issues&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="#well-tested-and-documented"><img src="https://img.shields.io/badge/Tests-100%25-green?style=for-the-badge&amp;logo=jest&amp;logoColor=%23fff&amp;color=%23333&amp;labelColor=%2387c305"> </a><a href="https://www.npmjs.com/package/tinybase/v/5.0.0-beta.1" target="_blank"><img src="https://img.shields.io/npm/v/tinybase?style=for-the-badge&amp;logo=npm&amp;logoColor=%23fff&amp;labelColor=%23bd0005&amp;color=%23333"></a></section><hr><section><h2 id="start-with-a-simple-key-value-store">Start with a simple key-value store.</h2><p>Creating a <a href="https://beta.tinybase.org/api/store/interfaces/store/store/"><code>Store</code></a> requires just a simple call to the <a href="https://beta.tinybase.org/api/store/functions/creation/createstore/"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://beta.tinybase.org/api/store/type-aliases/store/values/"><code>Values</code></a> in it by unique <a href="https://beta.tinybase.org/api/common/type-aliases/identity/id/"><code>Id</code></a>. And of course you can easily get them back out again.</p><p>Read more about using keyed value data in <a href="https://beta.tinybase.org/guides/the-basics/">The Basics</a> guide.</p></section>
1
+ <section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2><p id="copy">Build blisteringly fast web apps that work both online and offline. Manage your state locally, synchronize it to the cloud when you need to, or even make it collaborative. But, most importantly... have fun building stuff again!</p></section><p><a href="https://beta.tinybase.org/guides/releases/#v5-0"><em>NEW!</em> v5.0 release</a> <span id="one-with">&quot;The One You Can Sync&quot;</span></p><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><ul><li>Manage <a href="#start-with-a-simple-key-value-store">key-value data</a>, <a href="#level-up-to-use-tabular-data">tabular data</a> - or both - with optional <a href="#apply-schemas-to-tables-values">schematization</a> to model your app&#x27;s data structures.</li><li><a href="#register-granular-listeners">Flexibly reactive</a> to reconciled updates, so you only spend rendering cycles on things that change.</li><li><a href="#build-complex-queries-with-tinyql">Powerful query engine</a> to select, join, filter, group, sort and paginate data - reactively - and without SQL.</li><li>Built-in <a href="#create-indexes-for-fast-lookups">indexing</a>, <a href="#define-metrics-and-aggregations">metric aggregation</a>, <a href="#model-table-relationships">tabular relationships</a> - and even an <a href="#set-checkpoints-for-an-undo-stack">undo stack</a> for your app state.</li><li>Create <a href="#type-definitions-orm-like-apis">type definitions &amp; ORM-like APIs</a>, from schema or inference. <a href="#an-inspector-for-your-data">Inspect your data</a> (<em>new!</em>) directly in the browser.</li><li>Easily <a href="#persist-to-storage-sqlite-crdts">sync your data</a> to browser <a href="https://beta.tinybase.org/api/persister-browser">storage</a>, <a href="https://beta.tinybase.org/api/persister-indexed-db/">IndexedDB</a>, <a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence/">SQLite</a>, <a href="https://beta.tinybase.org/guides/schemas-and-persistence/synchronizing-data/">CRDTs</a>; and (<em>new!</em>) <a href="https://beta.tinybase.org/api/persister-partykit-client/">PartyKit</a> and <a href="https://electric-sql.com/">ElectricSQL</a>.</li><li>Optional <a href="#call-hooks-to-bind-to-data">bindings to React</a> and (<em>new!</em>) <a href="#pre-built-reactive-components">pre-built components</a> that let you easily build fully reactive user interfaces.</li><li>Tiny by name, tiny by nature: <a href="#did-we-say-tiny">5.0kB - 12.1kB</a>, no dependencies. <a href="#well-tested-and-documented">100% tested</a>, <a href="https://beta.tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and of course, <a href="https://github.com/tinyplex/tinybase">open source</a>!</li></ul><hr><section id="friends"><h2 id="tinybase-works-great-on-its-own-but-also-plays-well-with-friends">TinyBase works great on its own, but also plays well with friends!</h2><div><a href="https://beta.tinybase.org/guides/building-uis/getting-started-with-ui-react"><img width="48" src="https://beta.tinybase.org/react.svg"> React</a></div><div><a href="https://beta.tinybase.org/api/persister-partykit-client"><img width="48" src="https://beta.tinybase.org/partykit.svg"> PartyKit</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/expo.svg">Expo SQLite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/electric.svg">ElectricSQL</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/sqlite.svg"> SQLite</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/turso.svg">Turso</a></div><div><a href="https://beta.tinybase.org/guides/schemas-and-persistence/database-persistence"><img width="48" src="https://beta.tinybase.org/powersync.svg">PowerSync</a></div><div><a href="https://beta.tinybase.org/api/persister-indexed-db/functions/creation/createindexeddbpersister"><img width="48" src="https://beta.tinybase.org/indexeddb.svg"> IndexedDB</a></div><div><a href="https://beta.tinybase.org/api/persister-yjs/functions/creation/createyjspersister"><img width="48" src="https://beta.tinybase.org/yjs.svg"> YJS</a></div><div><a href="https://beta.tinybase.org/api/persister-cr-sqlite-wasm"><img width="48" src="https://beta.tinybase.org/crsqlite.png"> CR-SQLite</a></div><div><a href="https://beta.tinybase.org/api/persister-automerge"><img width="48" src="https://beta.tinybase.org/automerge.svg"> Automerge</a></div></section><hr><section id="follow"><a href="https://github.com/tinyplex/tinybase" target="_blank"><img src="https://img.shields.io/github/stars/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=GitHub&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="https://discord.com/invite/mGz3mevwP8" target="_blank"><img src="https://img.shields.io/discord/1027918215323590676?style=for-the-badge&amp;logo=discord&amp;logoColor=%23fff&amp;label=Discord&amp;labelColor=%233131e8&amp;color=%23333"> </a><a href="https://twitter.com/tinybasejs" target="_blank"><img src="https://img.shields.io/twitter/follow/tinybasejs?style=for-the-badge&amp;logo=x&amp;logoColor=%23fff&amp;label=Twitter&amp;labelColor=%23333&amp;color=%23333"></a><br><a href="https://github.com/tinyplex/tinybase/discussions" target="_blank"><img src="https://img.shields.io/github/discussions/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=Ideas&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="https://github.com/tinyplex/tinybase/issues" target="_blank"><img src="https://img.shields.io/github/issues/tinyplex/tinybase?style=for-the-badge&amp;logo=GitHub&amp;logoColor=%23fff&amp;label=Issues&amp;labelColor=%23d81b60&amp;color=%23333"> </a><a href="#well-tested-and-documented"><img src="https://img.shields.io/badge/Tests-100%25-green?style=for-the-badge&amp;logo=jest&amp;logoColor=%23fff&amp;color=%23333&amp;labelColor=%2387c305"> </a><a href="https://www.npmjs.com/package/tinybase/v/5.0.0-beta.11" target="_blank"><img src="https://img.shields.io/npm/v/tinybase?style=for-the-badge&amp;logo=npm&amp;logoColor=%23fff&amp;labelColor=%23bd0005&amp;color=%23333"></a></section><hr><section><h2 id="start-with-a-simple-key-value-store">Start with a simple key-value store.</h2><p>Creating a <a href="https://beta.tinybase.org/api/store/interfaces/store/store/"><code>Store</code></a> requires just a simple call to the <a href="https://beta.tinybase.org/api/store/functions/creation/createstore/"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://beta.tinybase.org/api/store/type-aliases/store/values/"><code>Values</code></a> in it by unique <a href="https://beta.tinybase.org/api/common/type-aliases/identity/id/"><code>Id</code></a>. And of course you can easily get them back out again.</p><p>Read more about using keyed value data in <a href="https://beta.tinybase.org/guides/the-basics/">The Basics</a> guide.</p></section>
2
2
 
3
3
  ```js
4
4
  const store = createStore()
@@ -247,4 +247,4 @@ export const createShop: typeof createShopDecl = () => {
247
247
  };
248
248
  ```
249
249
 
250
- <section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://beta.tinybase.org/api/store/"><code>store</code></a> module alone, you&#x27;ll only add a gzipped <em>5.0kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>9.5kB</em>.</p><p>The optional <a href="https://beta.tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just another <em>4.5kB</em>, the auxiliary <a href="https://beta.tinybase.org/api/tools/"><code>tools</code></a> module is <em>11.2kB</em>, and everything is super fast. Life&#x27;s easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>.js.gz</th><th>.js</th><th>debug.js</th><th>.d.ts</th></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/store/">store</a></th><td>5.0kB</td><td>12.0kB</td><td>51.7kB</td><td>252.6kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/metrics/">metrics</a></th><td>1.8kB</td><td>3.7kB</td><td>15.2kB</td><td>30.9kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/indexes/">indexes</a></th><td>1.9kB</td><td>3.8kB</td><td>17.1kB</td><td>35.6kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/relationships/">relationships</a></th><td>1.9kB</td><td>3.8kB</td><td>17.2kB</td><td>44.2kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/queries/">queries</a></th><td>2.8kB</td><td>5.7kB</td><td>25.7kB</td><td>126.0kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/checkpoints/">checkpoints</a></th><td>1.6kB</td><td>3.2kB</td><td>13.5kB</td><td>35.1kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/persisters/">persisters</a></th><td>0.8kB</td><td>1.5kB</td><td>5.3kB</td><td>43.9kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/common/">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.1kB</td><td>3.5kB</td></tr><tr><th class="right">tinybase (all)</th><td>9.5kB</td><td>23.3kB</td><td>101.6kB</td><td>0.3kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>1,994</td><td>1,994</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,154</td><td>2,154</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>857</td><td>857</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>740</td><td>740</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">3,890</td></tr><tr><th class="right">Assertions</th><td colspan="3">18,071</td></tr></tbody></table></div><hr><section id="sponsors"><h2 id="proud-to-be-sponsored-by">Proud to be sponsored by:</h2><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/beekeeb" target="_blank"><img title="beekeeb" src="https://github.com/beekeeb.png?size=48" width="48" height="48"></a><a href="https://github.com/cancelself" target="_blank"><img title="cancelself" src="https://github.com/cancelself.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a><a href="https://github.com/arpitBhalla" target="_blank"><img title="arpitBhalla" src="https://github.com/arpitBhalla.png?size=48" width="48" height="48"></a></section><section id="users"><h2 id="excited-to-be-used-by">Excited to be used by:</h2><a href="https://github.com/Apocalypsor" target="_blank"><img title="Apocalypsor" src="https://github.com/Apocalypsor.png?size=48" width="48" height="48"></a><a href="https://github.com/brentvatne" target="_blank"><img title="brentvatne" src="https://github.com/brentvatne.png?size=48" width="48" height="48"></a><a href="https://github.com/circadian-risk" target="_blank"><img title="circadian-risk" src="https://github.com/circadian-risk.png?size=48" width="48" height="48"></a><a href="https://github.com/cubecull" target="_blank"><img title="cubecull" src="https://github.com/cubecull.png?size=48" width="48" height="48"></a><a href="https://github.com/erwinkn" target="_blank"><img title="erwinkn" src="https://github.com/erwinkn.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/ezra-en" target="_blank"><img title="ezra-en" src="https://github.com/ezra-en.png?size=48" width="48" height="48"></a><a href="https://github.com/fdfontes" target="_blank"><img title="fdfontes" src="https://github.com/fdfontes.png?size=48" width="48" height="48"></a><a href="https://github.com/feychenie" target="_blank"><img title="feychenie" src="https://github.com/feychenie.png?size=48" width="48" height="48"></a><a href="https://github.com/flaming-codes" target="_blank"><img title="flaming-codes" src="https://github.com/flaming-codes.png?size=48" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.png?size=48" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.png?size=48" width="48" height="48"></a><a href="https://github.com/generates" target="_blank"><img title="generates" src="https://github.com/generates.png?size=48" width="48" height="48"></a><a href="https://github.com/Giulio987" target="_blank"><img title="Giulio987" src="https://github.com/Giulio987.png?size=48" width="48" height="48"></a><a href="https://github.com/itsdevcoffee" target="_blank"><img title="itsdevcoffee" src="https://github.com/itsdevcoffee.png?size=48" width="48" height="48"></a><a href="https://github.com/jaysc" target="_blank"><img title="jaysc" src="https://github.com/jaysc.png?size=48" width="48" height="48"></a><a href="https://github.com/jbolda" target="_blank"><img title="jbolda" src="https://github.com/jbolda.png?size=48" width="48" height="48"></a><a href="https://github.com/Kayoo-asso" target="_blank"><img title="Kayoo-asso" src="https://github.com/Kayoo-asso.png?size=48" width="48" height="48"></a><a href="https://github.com/kotofurumiya" target="_blank"><img title="kotofurumiya" src="https://github.com/kotofurumiya.png?size=48" width="48" height="48"></a><a href="https://github.com/Kudo" target="_blank"><img title="Kudo" src="https://github.com/Kudo.png?size=48" width="48" height="48"></a><a href="https://github.com/learn-anything" target="_blank"><img title="learn-anything" src="https://github.com/learn-anything.png?size=48" width="48" height="48"></a><a href="https://github.com/lluc" target="_blank"><img title="lluc" src="https://github.com/lluc.png?size=48" width="48" height="48"></a><a href="https://github.com/marksteve" target="_blank"><img title="marksteve" src="https://github.com/marksteve.png?size=48" width="48" height="48"></a><a href="https://github.com/miking-the-viking" target="_blank"><img title="miking-the-viking" src="https://github.com/miking-the-viking.png?size=48" width="48" height="48"></a><a href="https://github.com/mjamesderocher" target="_blank"><img title="mjamesderocher" src="https://github.com/mjamesderocher.png?size=48" width="48" height="48"></a><a href="https://github.com/nikitavoloboev" target="_blank"><img title="nikitavoloboev" src="https://github.com/nikitavoloboev.png?size=48" width="48" height="48"></a><a href="https://github.com/palerdot" target="_blank"><img title="palerdot" src="https://github.com/palerdot.png?size=48" width="48" height="48"></a><a href="https://github.com/PorcoRosso85" target="_blank"><img title="PorcoRosso85" src="https://github.com/PorcoRosso85.png?size=48" width="48" height="48"></a><a href="https://github.com/shaneosullivan" target="_blank"><img title="shaneosullivan" src="https://github.com/shaneosullivan.png?size=48" width="48" height="48"></a><a href="https://github.com/sudo-self" target="_blank"><img title="sudo-self" src="https://github.com/sudo-self.png?size=48" width="48" height="48"></a><a href="https://github.com/SuperSonicHub1" target="_blank"><img title="SuperSonicHub1" src="https://github.com/SuperSonicHub1.png?size=48" width="48" height="48"></a><a href="https://github.com/threepointone" target="_blank"><img title="threepointone" src="https://github.com/threepointone.png?size=48" width="48" height="48"></a><a href="https://github.com/uptonking" target="_blank"><img title="uptonking" src="https://github.com/uptonking.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a></section><hr><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section id="about"><h2 id="about">About</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Or sacrifice features for bundle size? And why does the cloud do all the work <a href="https://localfirstweb.dev/" target="_blank">anyway</a>?</p><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://tripleodeon.com">me</a> in API design, minification, and documentation. But now it has taken on a life of its own, and has grown beyond my wildest expectations.</p><p>It could not have been built without these great <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it as much as I do building it!</p></section><section id="story"><h2 id="the-story">The story</h2><a href="https://youtu.be/hXL7OkW-Prk?t=1232" target="_blank"><img src="https://beta.tinybase.org/youtube.webp"></a></section>
250
+ <section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://beta.tinybase.org/api/store/"><code>store</code></a> module alone, you&#x27;ll only add a gzipped <em>5.0kB</em> to your app. Incrementally add the other modules as you need more functionality, or get it all for <em>12.1kB</em>.</p><p>The optional <a href="https://beta.tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just another <em>4.6kB</em>, the auxiliary <a href="https://beta.tinybase.org/api/tools/"><code>tools</code></a> module is <em>11.1kB</em>, and everything is super fast. Life&#x27;s easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured and packaged in the <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>.js.gz</th><th>.js</th><th>debug.js</th><th>.d.ts</th></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/store/">store</a></th><td>5.0kB</td><td>12.0kB</td><td>52.1kB</td><td>255.3kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/metrics/">metrics</a></th><td>1.8kB</td><td>3.7kB</td><td>15.3kB</td><td>30.9kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/indexes/">indexes</a></th><td>1.9kB</td><td>3.8kB</td><td>17.1kB</td><td>35.6kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/relationships/">relationships</a></th><td>1.9kB</td><td>3.8kB</td><td>17.3kB</td><td>44.2kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/queries/">queries</a></th><td>2.8kB</td><td>5.7kB</td><td>25.8kB</td><td>126.0kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/checkpoints/">checkpoints</a></th><td>1.6kB</td><td>3.2kB</td><td>13.5kB</td><td>35.1kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/mergeable-store/">mergeable-store</a></th><td>7.0kB</td><td>16.9kB</td><td>72.0kB</td><td>4.5kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/persisters/">persisters</a></th><td>0.9kB</td><td>1.7kB</td><td>6.3kB</td><td>46.7kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/synchronizers/">synchronizers</a></th><td>2.0kB</td><td>4.2kB</td><td>16.0kB</td><td>3.6kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/common/">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.1kB</td><td>3.5kB</td></tr><tr><th class="right">tinybase (all)</th><td>12.1kB</td><td>29.9kB</td><td>129.1kB</td><td>0.4kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible for you to get your TinyBase-powered app up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>2,368</td><td>2,368</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>2,553</td><td>2,553</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>994</td><td>994</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>940</td><td>940</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">6,617</td></tr><tr><th class="right">Assertions</th><td colspan="3">31,186</td></tr></tbody></table></div><hr><section id="sponsors"><h2 id="proud-to-be-sponsored-by">Proud to be sponsored by:</h2><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/beekeeb" target="_blank"><img title="beekeeb" src="https://github.com/beekeeb.png?size=48" width="48" height="48"></a><a href="https://github.com/cancelself" target="_blank"><img title="cancelself" src="https://github.com/cancelself.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a><a href="https://github.com/arpitBhalla" target="_blank"><img title="arpitBhalla" src="https://github.com/arpitBhalla.png?size=48" width="48" height="48"></a></section><section id="users"><h2 id="excited-to-be-used-by">Excited to be used by:</h2><a href="https://github.com/Apocalypsor" target="_blank"><img title="Apocalypsor" src="https://github.com/Apocalypsor.png?size=48" width="48" height="48"></a><a href="https://github.com/brentvatne" target="_blank"><img title="brentvatne" src="https://github.com/brentvatne.png?size=48" width="48" height="48"></a><a href="https://github.com/circadian-risk" target="_blank"><img title="circadian-risk" src="https://github.com/circadian-risk.png?size=48" width="48" height="48"></a><a href="https://github.com/cubecull" target="_blank"><img title="cubecull" src="https://github.com/cubecull.png?size=48" width="48" height="48"></a><a href="https://github.com/erwinkn" target="_blank"><img title="erwinkn" src="https://github.com/erwinkn.png?size=48" width="48" height="48"></a><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/ezra-en" target="_blank"><img title="ezra-en" src="https://github.com/ezra-en.png?size=48" width="48" height="48"></a><a href="https://github.com/fdfontes" target="_blank"><img title="fdfontes" src="https://github.com/fdfontes.png?size=48" width="48" height="48"></a><a href="https://github.com/feychenie" target="_blank"><img title="feychenie" src="https://github.com/feychenie.png?size=48" width="48" height="48"></a><a href="https://github.com/flaming-codes" target="_blank"><img title="flaming-codes" src="https://github.com/flaming-codes.png?size=48" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.png?size=48" width="48" height="48"></a><a href="https://github.com/fostertheweb" target="_blank"><img title="fostertheweb" src="https://github.com/fostertheweb.png?size=48" width="48" height="48"></a><a href="https://github.com/generates" target="_blank"><img title="generates" src="https://github.com/generates.png?size=48" width="48" height="48"></a><a href="https://github.com/Giulio987" target="_blank"><img title="Giulio987" src="https://github.com/Giulio987.png?size=48" width="48" height="48"></a><a href="https://github.com/itsdevcoffee" target="_blank"><img title="itsdevcoffee" src="https://github.com/itsdevcoffee.png?size=48" width="48" height="48"></a><a href="https://github.com/jaysc" target="_blank"><img title="jaysc" src="https://github.com/jaysc.png?size=48" width="48" height="48"></a><a href="https://github.com/jbolda" target="_blank"><img title="jbolda" src="https://github.com/jbolda.png?size=48" width="48" height="48"></a><a href="https://github.com/Kayoo-asso" target="_blank"><img title="Kayoo-asso" src="https://github.com/Kayoo-asso.png?size=48" width="48" height="48"></a><a href="https://github.com/kotofurumiya" target="_blank"><img title="kotofurumiya" src="https://github.com/kotofurumiya.png?size=48" width="48" height="48"></a><a href="https://github.com/Kudo" target="_blank"><img title="Kudo" src="https://github.com/Kudo.png?size=48" width="48" height="48"></a><a href="https://github.com/learn-anything" target="_blank"><img title="learn-anything" src="https://github.com/learn-anything.png?size=48" width="48" height="48"></a><a href="https://github.com/lluc" target="_blank"><img title="lluc" src="https://github.com/lluc.png?size=48" width="48" height="48"></a><a href="https://github.com/marksteve" target="_blank"><img title="marksteve" src="https://github.com/marksteve.png?size=48" width="48" height="48"></a><a href="https://github.com/miking-the-viking" target="_blank"><img title="miking-the-viking" src="https://github.com/miking-the-viking.png?size=48" width="48" height="48"></a><a href="https://github.com/mjamesderocher" target="_blank"><img title="mjamesderocher" src="https://github.com/mjamesderocher.png?size=48" width="48" height="48"></a><a href="https://github.com/nikitavoloboev" target="_blank"><img title="nikitavoloboev" src="https://github.com/nikitavoloboev.png?size=48" width="48" height="48"></a><a href="https://github.com/palerdot" target="_blank"><img title="palerdot" src="https://github.com/palerdot.png?size=48" width="48" height="48"></a><a href="https://github.com/PorcoRosso85" target="_blank"><img title="PorcoRosso85" src="https://github.com/PorcoRosso85.png?size=48" width="48" height="48"></a><a href="https://github.com/shaneosullivan" target="_blank"><img title="shaneosullivan" src="https://github.com/shaneosullivan.png?size=48" width="48" height="48"></a><a href="https://github.com/sudo-self" target="_blank"><img title="sudo-self" src="https://github.com/sudo-self.png?size=48" width="48" height="48"></a><a href="https://github.com/SuperSonicHub1" target="_blank"><img title="SuperSonicHub1" src="https://github.com/SuperSonicHub1.png?size=48" width="48" height="48"></a><a href="https://github.com/threepointone" target="_blank"><img title="threepointone" src="https://github.com/threepointone.png?size=48" width="48" height="48"></a><a href="https://github.com/uptonking" target="_blank"><img title="uptonking" src="https://github.com/uptonking.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a></section><hr><p><a class="start" href="https://beta.tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://beta.tinybase.org/demos/">Try the demos</a></p><p><a href="https://beta.tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section id="about"><h2 id="about">About</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Or sacrifice features for bundle size? And why does the cloud do all the work <a href="https://localfirstweb.dev/" target="_blank">anyway</a>?</p><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://tripleodeon.com">me</a> in API design, minification, and documentation. But now it has taken on a life of its own, and has grown beyond my wildest expectations.</p><p>It could not have been built without these great <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it as much as I do building it!</p></section><section id="story"><h2 id="the-story">The story</h2><a href="https://youtu.be/hXL7OkW-Prk?t=1232" target="_blank"><img src="https://beta.tinybase.org/youtube.webp"></a></section>