tinybase 4.8.16 → 4.8.17

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 (356) hide show
  1. package/lib/checkpoints.js +1 -0
  2. package/lib/checkpoints.js.gz +0 -0
  3. package/lib/cjs/checkpoints.cjs +1 -0
  4. package/lib/cjs/checkpoints.cjs.gz +0 -0
  5. package/lib/cjs/common.cjs +1 -0
  6. package/lib/cjs/common.cjs.gz +0 -0
  7. package/lib/cjs/indexes.cjs +1 -0
  8. package/lib/cjs/indexes.cjs.gz +0 -0
  9. package/lib/cjs/metrics.cjs +1 -0
  10. package/lib/cjs/metrics.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-automerge.cjs +1 -0
  12. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-browser.cjs +1 -0
  14. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -0
  16. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -0
  18. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -0
  20. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -0
  22. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-file.cjs +1 -0
  24. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -0
  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 -0
  30. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  31. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -0
  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 -0
  36. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  37. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -0
  38. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  39. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -0
  40. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  41. package/lib/cjs/persisters/persister-yjs.cjs +1 -0
  42. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  43. package/lib/cjs/persisters.cjs +1 -0
  44. package/lib/cjs/persisters.cjs.gz +0 -0
  45. package/lib/cjs/queries.cjs +1 -0
  46. package/lib/cjs/queries.cjs.gz +0 -0
  47. package/lib/cjs/relationships.cjs +1 -0
  48. package/lib/cjs/relationships.cjs.gz +0 -0
  49. package/lib/cjs/store.cjs +1 -0
  50. package/lib/cjs/store.cjs.gz +0 -0
  51. package/lib/cjs/tinybase.cjs +1 -0
  52. package/lib/cjs/tinybase.cjs.gz +0 -0
  53. package/lib/cjs/tools.cjs +1 -0
  54. package/lib/cjs/tools.cjs.gz +0 -0
  55. package/lib/cjs/ui-react-dom-debug.cjs +1 -0
  56. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  57. package/lib/cjs/ui-react-dom.cjs +1 -0
  58. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  59. package/lib/cjs/ui-react.cjs +1 -0
  60. package/lib/cjs/ui-react.cjs.gz +0 -0
  61. package/lib/cjs-es6/checkpoints.cjs +1 -0
  62. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  63. package/lib/cjs-es6/common.cjs +1 -0
  64. package/lib/cjs-es6/common.cjs.gz +0 -0
  65. package/lib/cjs-es6/indexes.cjs +1 -0
  66. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  67. package/lib/cjs-es6/metrics.cjs +1 -0
  68. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  69. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -0
  70. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  71. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -0
  72. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  73. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -0
  74. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  75. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -0
  76. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  77. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -0
  78. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  79. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -0
  80. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  81. package/lib/cjs-es6/persisters/persister-file.cjs +1 -0
  82. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  83. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -0
  84. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  85. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -0
  86. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  87. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -0
  88. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  89. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -0
  90. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  91. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -0
  92. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  93. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -0
  94. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  95. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -0
  96. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  97. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -0
  98. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  99. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -0
  100. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  101. package/lib/cjs-es6/persisters.cjs +1 -0
  102. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  103. package/lib/cjs-es6/queries.cjs +1 -0
  104. package/lib/cjs-es6/queries.cjs.gz +0 -0
  105. package/lib/cjs-es6/relationships.cjs +1 -0
  106. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  107. package/lib/cjs-es6/store.cjs +1 -0
  108. package/lib/cjs-es6/store.cjs.gz +0 -0
  109. package/lib/cjs-es6/tinybase.cjs +1 -0
  110. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  111. package/lib/cjs-es6/tools.cjs +1 -0
  112. package/lib/cjs-es6/tools.cjs.gz +0 -0
  113. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -0
  114. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  115. package/lib/cjs-es6/ui-react-dom.cjs +1 -0
  116. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  117. package/lib/cjs-es6/ui-react.cjs +1 -0
  118. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  119. package/lib/common.js +1 -0
  120. package/lib/common.js.gz +0 -0
  121. package/lib/debug/checkpoints.js +412 -0
  122. package/lib/debug/common.js +4 -0
  123. package/lib/debug/indexes.js +544 -0
  124. package/lib/debug/metrics.js +516 -0
  125. package/lib/debug/persisters.js +183 -0
  126. package/lib/debug/queries.js +807 -0
  127. package/lib/debug/relationships.js +526 -0
  128. package/lib/debug/store.js +1602 -0
  129. package/lib/es6/checkpoints.js +1 -0
  130. package/lib/es6/checkpoints.js.gz +0 -0
  131. package/lib/es6/common.js +1 -0
  132. package/lib/es6/common.js.gz +0 -0
  133. package/lib/es6/indexes.js +1 -0
  134. package/lib/es6/indexes.js.gz +0 -0
  135. package/lib/es6/metrics.js +1 -0
  136. package/lib/es6/metrics.js.gz +0 -0
  137. package/lib/es6/persisters/persister-automerge.js +1 -0
  138. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  139. package/lib/es6/persisters/persister-browser.js +1 -0
  140. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  141. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -0
  142. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  143. package/lib/es6/persisters/persister-electric-sql.js +1 -0
  144. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  145. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -0
  146. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  147. package/lib/es6/persisters/persister-expo-sqlite.js +1 -0
  148. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  149. package/lib/es6/persisters/persister-file.js +1 -0
  150. package/lib/es6/persisters/persister-file.js.gz +0 -0
  151. package/lib/es6/persisters/persister-indexed-db.js +1 -0
  152. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  153. package/lib/es6/persisters/persister-libsql.js +1 -0
  154. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  155. package/lib/es6/persisters/persister-partykit-client.js +1 -0
  156. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  157. package/lib/es6/persisters/persister-partykit-server.js +1 -0
  158. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  159. package/lib/es6/persisters/persister-powersync.js +1 -0
  160. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  161. package/lib/es6/persisters/persister-remote.js +1 -0
  162. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  163. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -0
  164. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  165. package/lib/es6/persisters/persister-sqlite3.js +1 -0
  166. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  167. package/lib/es6/persisters/persister-yjs.js +1 -0
  168. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  169. package/lib/es6/persisters.js +1 -0
  170. package/lib/es6/persisters.js.gz +0 -0
  171. package/lib/es6/queries.js +1 -0
  172. package/lib/es6/queries.js.gz +0 -0
  173. package/lib/es6/relationships.js +1 -0
  174. package/lib/es6/relationships.js.gz +0 -0
  175. package/lib/es6/store.js +1 -0
  176. package/lib/es6/store.js.gz +0 -0
  177. package/lib/es6/tinybase.js +1 -0
  178. package/lib/es6/tinybase.js.gz +0 -0
  179. package/lib/es6/tools.js +1 -0
  180. package/lib/es6/tools.js.gz +0 -0
  181. package/lib/es6/ui-react-dom-debug.js +1 -0
  182. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  183. package/lib/es6/ui-react-dom.js +1 -0
  184. package/lib/es6/ui-react-dom.js.gz +0 -0
  185. package/lib/es6/ui-react.js +1 -0
  186. package/lib/es6/ui-react.js.gz +0 -0
  187. package/lib/indexes.js +1 -0
  188. package/lib/indexes.js.gz +0 -0
  189. package/lib/metrics.js +1 -0
  190. package/lib/metrics.js.gz +0 -0
  191. package/lib/persisters/persister-automerge.js +1 -0
  192. package/lib/persisters/persister-automerge.js.gz +0 -0
  193. package/lib/persisters/persister-browser.js +1 -0
  194. package/lib/persisters/persister-browser.js.gz +0 -0
  195. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -0
  196. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  197. package/lib/persisters/persister-electric-sql.js +1 -0
  198. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  199. package/lib/persisters/persister-expo-sqlite-next.js +1 -0
  200. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  201. package/lib/persisters/persister-expo-sqlite.js +1 -0
  202. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  203. package/lib/persisters/persister-file.js +1 -0
  204. package/lib/persisters/persister-file.js.gz +0 -0
  205. package/lib/persisters/persister-indexed-db.js +1 -0
  206. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  207. package/lib/persisters/persister-libsql.js +1 -0
  208. package/lib/persisters/persister-libsql.js.gz +0 -0
  209. package/lib/persisters/persister-partykit-client.js +1 -0
  210. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  211. package/lib/persisters/persister-partykit-server.js +1 -0
  212. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  213. package/lib/persisters/persister-powersync.js +1 -0
  214. package/lib/persisters/persister-powersync.js.gz +0 -0
  215. package/lib/persisters/persister-remote.js +1 -0
  216. package/lib/persisters/persister-remote.js.gz +0 -0
  217. package/lib/persisters/persister-sqlite-wasm.js +1 -0
  218. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  219. package/lib/persisters/persister-sqlite3.js +1 -0
  220. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  221. package/lib/persisters/persister-yjs.js +1 -0
  222. package/lib/persisters/persister-yjs.js.gz +0 -0
  223. package/lib/persisters.js +1 -0
  224. package/lib/persisters.js.gz +0 -0
  225. package/lib/queries.js +1 -0
  226. package/lib/queries.js.gz +0 -0
  227. package/lib/relationships.js +1 -0
  228. package/lib/relationships.js.gz +0 -0
  229. package/lib/store.js +1 -0
  230. package/lib/store.js.gz +0 -0
  231. package/lib/tinybase.js +1 -0
  232. package/lib/tinybase.js.gz +0 -0
  233. package/lib/tools.js +1 -0
  234. package/lib/tools.js.gz +0 -0
  235. package/lib/ui-react-dom.js +1 -0
  236. package/lib/ui-react-dom.js.gz +0 -0
  237. package/lib/ui-react.js +1 -0
  238. package/lib/ui-react.js.gz +0 -0
  239. package/lib/umd/checkpoints.js +1 -0
  240. package/lib/umd/checkpoints.js.gz +0 -0
  241. package/lib/umd/common.js +1 -0
  242. package/lib/umd/common.js.gz +0 -0
  243. package/lib/umd/indexes.js +1 -0
  244. package/lib/umd/indexes.js.gz +0 -0
  245. package/lib/umd/metrics.js +1 -0
  246. package/lib/umd/metrics.js.gz +0 -0
  247. package/lib/umd/persisters/persister-automerge.js +1 -0
  248. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  249. package/lib/umd/persisters/persister-browser.js +1 -0
  250. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  251. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -0
  252. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  253. package/lib/umd/persisters/persister-electric-sql.js +1 -0
  254. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  255. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -0
  256. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  257. package/lib/umd/persisters/persister-expo-sqlite.js +1 -0
  258. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  259. package/lib/umd/persisters/persister-file.js +1 -0
  260. package/lib/umd/persisters/persister-file.js.gz +0 -0
  261. package/lib/umd/persisters/persister-indexed-db.js +1 -0
  262. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  263. package/lib/umd/persisters/persister-libsql.js +1 -0
  264. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  265. package/lib/umd/persisters/persister-partykit-client.js +1 -0
  266. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  267. package/lib/umd/persisters/persister-partykit-server.js +1 -0
  268. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  269. package/lib/umd/persisters/persister-powersync.js +1 -0
  270. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  271. package/lib/umd/persisters/persister-remote.js +1 -0
  272. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  273. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -0
  274. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  275. package/lib/umd/persisters/persister-sqlite3.js +1 -0
  276. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  277. package/lib/umd/persisters/persister-yjs.js +1 -0
  278. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  279. package/lib/umd/persisters.js +1 -0
  280. package/lib/umd/persisters.js.gz +0 -0
  281. package/lib/umd/queries.js +1 -0
  282. package/lib/umd/queries.js.gz +0 -0
  283. package/lib/umd/relationships.js +1 -0
  284. package/lib/umd/relationships.js.gz +0 -0
  285. package/lib/umd/store.js +1 -0
  286. package/lib/umd/store.js.gz +0 -0
  287. package/lib/umd/tinybase.js +1 -0
  288. package/lib/umd/tinybase.js.gz +0 -0
  289. package/lib/umd/tools.js +1 -0
  290. package/lib/umd/tools.js.gz +0 -0
  291. package/lib/umd/ui-react-dom-debug.js +1 -0
  292. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  293. package/lib/umd/ui-react-dom.js +1 -0
  294. package/lib/umd/ui-react-dom.js.gz +0 -0
  295. package/lib/umd/ui-react.js +1 -0
  296. package/lib/umd/ui-react.js.gz +0 -0
  297. package/lib/umd-es6/checkpoints.js +1 -0
  298. package/lib/umd-es6/checkpoints.js.gz +0 -0
  299. package/lib/umd-es6/common.js +1 -0
  300. package/lib/umd-es6/common.js.gz +0 -0
  301. package/lib/umd-es6/indexes.js +1 -0
  302. package/lib/umd-es6/indexes.js.gz +0 -0
  303. package/lib/umd-es6/metrics.js +1 -0
  304. package/lib/umd-es6/metrics.js.gz +0 -0
  305. package/lib/umd-es6/persisters/persister-automerge.js +1 -0
  306. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  307. package/lib/umd-es6/persisters/persister-browser.js +1 -0
  308. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  309. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -0
  310. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  311. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -0
  312. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  313. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -0
  314. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  315. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -0
  316. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  317. package/lib/umd-es6/persisters/persister-file.js +1 -0
  318. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  319. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -0
  320. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  321. package/lib/umd-es6/persisters/persister-libsql.js +1 -0
  322. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  323. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -0
  324. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  325. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -0
  326. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  327. package/lib/umd-es6/persisters/persister-powersync.js +1 -0
  328. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  329. package/lib/umd-es6/persisters/persister-remote.js +1 -0
  330. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  331. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -0
  332. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  333. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -0
  334. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  335. package/lib/umd-es6/persisters/persister-yjs.js +1 -0
  336. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  337. package/lib/umd-es6/persisters.js +1 -0
  338. package/lib/umd-es6/persisters.js.gz +0 -0
  339. package/lib/umd-es6/queries.js +1 -0
  340. package/lib/umd-es6/queries.js.gz +0 -0
  341. package/lib/umd-es6/relationships.js +1 -0
  342. package/lib/umd-es6/relationships.js.gz +0 -0
  343. package/lib/umd-es6/store.js +1 -0
  344. package/lib/umd-es6/store.js.gz +0 -0
  345. package/lib/umd-es6/tinybase.js +1 -0
  346. package/lib/umd-es6/tinybase.js.gz +0 -0
  347. package/lib/umd-es6/tools.js +1 -0
  348. package/lib/umd-es6/tools.js.gz +0 -0
  349. package/lib/umd-es6/ui-react-dom-debug.js +1 -0
  350. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  351. package/lib/umd-es6/ui-react-dom.js +1 -0
  352. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  353. package/lib/umd-es6/ui-react.js +1 -0
  354. package/lib/umd-es6/ui-react.js.gz +0 -0
  355. package/package.json +1 -1
  356. package/readme.md +2 -2
@@ -0,0 +1,526 @@
1
+ const getTypeOf = (thing) => typeof thing;
2
+ const EMPTY_STRING = '';
3
+ const STRING = getTypeOf(EMPTY_STRING);
4
+
5
+ const isUndefined = (thing) => thing == void 0;
6
+ const ifNotUndefined = (value, then, otherwise) =>
7
+ isUndefined(value) ? otherwise?.() : then(value);
8
+ const isString = (thing) => getTypeOf(thing) == STRING;
9
+ const isArray = (thing) => Array.isArray(thing);
10
+ const size = (arrayOrString) => arrayOrString.length;
11
+ const test = (regex, subject) => regex.test(subject);
12
+
13
+ const arrayEvery = (array, cb) => array.every(cb);
14
+ const arrayIsEqual = (array1, array2) =>
15
+ size(array1) === size(array2) &&
16
+ arrayEvery(array1, (value1, index) => array2[index] === value1);
17
+ const arrayForEach = (array, cb) => array.forEach(cb);
18
+ const arrayIsEmpty = (array) => size(array) == 0;
19
+ const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
20
+ const arrayPush = (array, ...values) => array.push(...values);
21
+ const arrayShift = (array) => array.shift();
22
+
23
+ const object = Object;
24
+ const objFreeze = object.freeze;
25
+
26
+ const collSizeN = (collSizer) => (coll) =>
27
+ arrayReduce(collValues(coll), (total, coll2) => total + collSizer(coll2), 0);
28
+ const collSize = (coll) => coll?.size ?? 0;
29
+ const collSize2 = collSizeN(collSize);
30
+ const collSize3 = collSizeN(collSize2);
31
+ const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
32
+ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
33
+ const collValues = (coll) => [...(coll?.values() ?? [])];
34
+ const collClear = (coll) => coll.clear();
35
+ const collForEach = (coll, cb) => coll?.forEach(cb);
36
+ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
37
+
38
+ const mapNew = (entries) => new Map(entries);
39
+ const mapKeys = (map) => [...(map?.keys() ?? [])];
40
+ const mapGet = (map, key) => map?.get(key);
41
+ const mapForEach = (map, cb) =>
42
+ collForEach(map, (value, key) => cb(key, value));
43
+ const mapSet = (map, key, value) =>
44
+ isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
45
+ const mapEnsure = (map, key, getDefaultValue) => {
46
+ if (!collHas(map, key)) {
47
+ mapSet(map, key, getDefaultValue());
48
+ }
49
+ return mapGet(map, key);
50
+ };
51
+ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
52
+ ifNotUndefined(
53
+ (ensureLeaf ? mapEnsure : mapGet)(
54
+ node,
55
+ path[p],
56
+ p > size(path) - 2 ? ensureLeaf : mapNew,
57
+ ),
58
+ (nodeOrLeaf) => {
59
+ if (p > size(path) - 2) {
60
+ if (pruneLeaf?.(nodeOrLeaf)) {
61
+ mapSet(node, path[p]);
62
+ }
63
+ return nodeOrLeaf;
64
+ }
65
+ const leaf = visitTree(nodeOrLeaf, path, ensureLeaf, pruneLeaf, p + 1);
66
+ if (collIsEmpty(nodeOrLeaf)) {
67
+ mapSet(node, path[p]);
68
+ }
69
+ return leaf;
70
+ },
71
+ );
72
+
73
+ const setNew = (entryOrEntries) =>
74
+ new Set(
75
+ isArray(entryOrEntries) || isUndefined(entryOrEntries)
76
+ ? entryOrEntries
77
+ : [entryOrEntries],
78
+ );
79
+ const setAdd = (set, value) => set?.add(value);
80
+
81
+ const getDefinableFunctions = (
82
+ store,
83
+ getDefaultThing,
84
+ validateRowValue,
85
+ addListener,
86
+ callListeners,
87
+ ) => {
88
+ const hasRow = store.hasRow;
89
+ const tableIds = mapNew();
90
+ const things = mapNew();
91
+ const thingIdListeners = mapNew();
92
+ const allRowValues = mapNew();
93
+ const allSortKeys = mapNew();
94
+ const storeListenerIds = mapNew();
95
+ const getStore = () => store;
96
+ const getThingIds = () => mapKeys(tableIds);
97
+ const forEachThing = (cb) => mapForEach(things, cb);
98
+ const hasThing = (id) => collHas(things, id);
99
+ const getTableId = (id) => mapGet(tableIds, id);
100
+ const getThing = (id) => mapGet(things, id);
101
+ const setThing = (id, thing) => mapSet(things, id, thing);
102
+ const addStoreListeners = (id, andCall, ...listenerIds) => {
103
+ const set = mapEnsure(storeListenerIds, id, setNew);
104
+ arrayForEach(
105
+ listenerIds,
106
+ (listenerId) =>
107
+ setAdd(set, listenerId) && andCall && store.callListener(listenerId),
108
+ );
109
+ return listenerIds;
110
+ };
111
+ const delStoreListeners = (id, ...listenerIds) =>
112
+ ifNotUndefined(mapGet(storeListenerIds, id), (allListenerIds) => {
113
+ arrayForEach(
114
+ arrayIsEmpty(listenerIds) ? collValues(allListenerIds) : listenerIds,
115
+ (listenerId) => {
116
+ store.delListener(listenerId);
117
+ collDel(allListenerIds, listenerId);
118
+ },
119
+ );
120
+ if (collIsEmpty(allListenerIds)) {
121
+ mapSet(storeListenerIds, id);
122
+ }
123
+ });
124
+ const setDefinition = (id, tableId) => {
125
+ mapSet(tableIds, id, tableId);
126
+ if (!collHas(things, id)) {
127
+ mapSet(things, id, getDefaultThing());
128
+ mapSet(allRowValues, id, mapNew());
129
+ mapSet(allSortKeys, id, mapNew());
130
+ callListeners(thingIdListeners);
131
+ }
132
+ };
133
+ const setDefinitionAndListen = (
134
+ id,
135
+ tableId,
136
+ onChanged,
137
+ getRowValue,
138
+ getSortKey,
139
+ ) => {
140
+ setDefinition(id, tableId);
141
+ const changedRowValues = mapNew();
142
+ const changedSortKeys = mapNew();
143
+ const rowValues = mapGet(allRowValues, id);
144
+ const sortKeys = mapGet(allSortKeys, id);
145
+ const processRow = (rowId) => {
146
+ const getCell = (cellId) => store.getCell(tableId, rowId, cellId);
147
+ const oldRowValue = mapGet(rowValues, rowId);
148
+ const newRowValue = hasRow(tableId, rowId)
149
+ ? validateRowValue(getRowValue(getCell, rowId))
150
+ : void 0;
151
+ if (
152
+ !(
153
+ oldRowValue === newRowValue ||
154
+ (isArray(oldRowValue) &&
155
+ isArray(newRowValue) &&
156
+ arrayIsEqual(oldRowValue, newRowValue))
157
+ )
158
+ ) {
159
+ mapSet(changedRowValues, rowId, [oldRowValue, newRowValue]);
160
+ }
161
+ if (!isUndefined(getSortKey)) {
162
+ const oldSortKey = mapGet(sortKeys, rowId);
163
+ const newSortKey = hasRow(tableId, rowId)
164
+ ? getSortKey(getCell, rowId)
165
+ : void 0;
166
+ if (oldSortKey != newSortKey) {
167
+ mapSet(changedSortKeys, rowId, newSortKey);
168
+ }
169
+ }
170
+ };
171
+ const processTable = (force) => {
172
+ onChanged(
173
+ () => {
174
+ collForEach(changedRowValues, ([, newRowValue], rowId) =>
175
+ mapSet(rowValues, rowId, newRowValue),
176
+ );
177
+ collForEach(changedSortKeys, (newSortKey, rowId) =>
178
+ mapSet(sortKeys, rowId, newSortKey),
179
+ );
180
+ },
181
+ changedRowValues,
182
+ changedSortKeys,
183
+ rowValues,
184
+ sortKeys,
185
+ force,
186
+ );
187
+ collClear(changedRowValues);
188
+ collClear(changedSortKeys);
189
+ };
190
+ mapForEach(rowValues, processRow);
191
+ if (store.hasTable(tableId)) {
192
+ arrayForEach(store.getRowIds(tableId), (rowId) => {
193
+ if (!collHas(rowValues, rowId)) {
194
+ processRow(rowId);
195
+ }
196
+ });
197
+ }
198
+ processTable(true);
199
+ delStoreListeners(id);
200
+ addStoreListeners(
201
+ id,
202
+ 0,
203
+ store.addRowListener(tableId, null, (_store, _tableId, rowId) =>
204
+ processRow(rowId),
205
+ ),
206
+ store.addTableListener(tableId, () => processTable()),
207
+ );
208
+ };
209
+ const delDefinition = (id) => {
210
+ mapSet(tableIds, id);
211
+ mapSet(things, id);
212
+ mapSet(allRowValues, id);
213
+ mapSet(allSortKeys, id);
214
+ delStoreListeners(id);
215
+ callListeners(thingIdListeners);
216
+ };
217
+ const addThingIdsListener = (listener) =>
218
+ addListener(listener, thingIdListeners);
219
+ const destroy = () => mapForEach(storeListenerIds, delDefinition);
220
+ return [
221
+ getStore,
222
+ getThingIds,
223
+ forEachThing,
224
+ hasThing,
225
+ getTableId,
226
+ getThing,
227
+ setThing,
228
+ setDefinition,
229
+ setDefinitionAndListen,
230
+ delDefinition,
231
+ addThingIdsListener,
232
+ destroy,
233
+ addStoreListeners,
234
+ delStoreListeners,
235
+ ];
236
+ };
237
+ const getRowCellFunction = (getRowCell, defaultCellValue) =>
238
+ isString(getRowCell)
239
+ ? (getCell) => getCell(getRowCell)
240
+ : getRowCell ?? (() => defaultCellValue ?? EMPTY_STRING);
241
+ const getCreateFunction = (getFunction) => {
242
+ const getFunctionsByStore = /* @__PURE__ */ new WeakMap();
243
+ return (store) => {
244
+ if (!getFunctionsByStore.has(store)) {
245
+ getFunctionsByStore.set(store, getFunction(store));
246
+ }
247
+ return getFunctionsByStore.get(store);
248
+ };
249
+ };
250
+
251
+ const INTEGER = /^\d+$/;
252
+ const getPoolFunctions = () => {
253
+ const pool = [];
254
+ let nextId = 0;
255
+ return [
256
+ (reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
257
+ (id) => {
258
+ if (test(INTEGER, id) && size(pool) < 1e3) {
259
+ arrayPush(pool, id);
260
+ }
261
+ },
262
+ ];
263
+ };
264
+
265
+ const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
266
+ const leaves = [];
267
+ const deep = (node, p) =>
268
+ p == size(path)
269
+ ? arrayPush(leaves, node)
270
+ : path[p] === null
271
+ ? collForEach(node, (node2) => deep(node2, p + 1))
272
+ : arrayForEach([path[p], null], (id) => deep(mapGet(node, id), p + 1));
273
+ deep(deepIdSet, 0);
274
+ return leaves;
275
+ };
276
+ const getListenerFunctions = (getThing) => {
277
+ let thing;
278
+ const [getId, releaseId] = getPoolFunctions();
279
+ const allListeners = mapNew();
280
+ const addListener = (
281
+ listener,
282
+ idSetNode,
283
+ path,
284
+ pathGetters = [],
285
+ extraArgsGetter = () => [],
286
+ ) => {
287
+ thing ??= getThing();
288
+ const id = getId(1);
289
+ mapSet(allListeners, id, [
290
+ listener,
291
+ idSetNode,
292
+ path,
293
+ pathGetters,
294
+ extraArgsGetter,
295
+ ]);
296
+ setAdd(visitTree(idSetNode, path ?? [EMPTY_STRING], setNew), id);
297
+ return id;
298
+ };
299
+ const callListeners = (idSetNode, ids, ...extraArgs) =>
300
+ arrayForEach(getWildcardedLeaves(idSetNode, ids), (set) =>
301
+ collForEach(set, (id) =>
302
+ mapGet(allListeners, id)[0](thing, ...(ids ?? []), ...extraArgs),
303
+ ),
304
+ );
305
+ const delListener = (id) =>
306
+ ifNotUndefined(mapGet(allListeners, id), ([, idSetNode, idOrNulls]) => {
307
+ visitTree(idSetNode, idOrNulls ?? [EMPTY_STRING], void 0, (idSet) => {
308
+ collDel(idSet, id);
309
+ return collIsEmpty(idSet) ? 1 : 0;
310
+ });
311
+ mapSet(allListeners, id);
312
+ releaseId(id);
313
+ return idOrNulls;
314
+ });
315
+ const callListener = (id) =>
316
+ ifNotUndefined(
317
+ mapGet(allListeners, id),
318
+ ([listener, , path = [], pathGetters, extraArgsGetter]) => {
319
+ const callWithIds = (...ids) => {
320
+ const index = size(ids);
321
+ index == size(path)
322
+ ? listener(thing, ...ids, ...extraArgsGetter(ids))
323
+ : isUndefined(path[index])
324
+ ? arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
325
+ callWithIds(...ids, id2),
326
+ )
327
+ : callWithIds(...ids, path[index]);
328
+ };
329
+ callWithIds();
330
+ },
331
+ );
332
+ return [addListener, callListeners, delListener, callListener];
333
+ };
334
+
335
+ const createRelationships = getCreateFunction((store) => {
336
+ const remoteTableIds = mapNew();
337
+ const remoteRowIdListeners = mapNew();
338
+ const localRowIdsListeners = mapNew();
339
+ const linkedRowIdsListeners = mapNew();
340
+ const [addListener, callListeners, delListenerImpl] = getListenerFunctions(
341
+ () => relationships,
342
+ );
343
+ const [
344
+ getStore,
345
+ getRelationshipIds,
346
+ forEachRelationshipImpl,
347
+ hasRelationship,
348
+ getLocalTableId,
349
+ getRelationship,
350
+ ,
351
+ ,
352
+ setDefinitionAndListen,
353
+ delDefinition,
354
+ addRelationshipIdsListener,
355
+ destroy,
356
+ ] = getDefinableFunctions(
357
+ store,
358
+ () => [mapNew(), mapNew(), mapNew(), mapNew()],
359
+ (value) => (isUndefined(value) ? void 0 : value + EMPTY_STRING),
360
+ addListener,
361
+ callListeners,
362
+ );
363
+ const getLinkedRowIdsCache = (relationshipId, firstRowId, skipCache) =>
364
+ ifNotUndefined(
365
+ getRelationship(relationshipId),
366
+ ([remoteRows, , linkedRowsCache]) => {
367
+ if (!collHas(linkedRowsCache, firstRowId)) {
368
+ const linkedRows = setNew();
369
+ if (
370
+ getLocalTableId(relationshipId) != getRemoteTableId(relationshipId)
371
+ ) {
372
+ setAdd(linkedRows, firstRowId);
373
+ } else {
374
+ let rowId = firstRowId;
375
+ while (!isUndefined(rowId) && !collHas(linkedRows, rowId)) {
376
+ setAdd(linkedRows, rowId);
377
+ rowId = mapGet(remoteRows, rowId);
378
+ }
379
+ }
380
+ if (skipCache) {
381
+ return linkedRows;
382
+ }
383
+ mapSet(linkedRowsCache, firstRowId, linkedRows);
384
+ }
385
+ return mapGet(linkedRowsCache, firstRowId);
386
+ },
387
+ );
388
+ const delLinkedRowIdsCache = (relationshipId, firstRowId) =>
389
+ ifNotUndefined(getRelationship(relationshipId), ([, , linkedRowsCache]) =>
390
+ mapSet(linkedRowsCache, firstRowId),
391
+ );
392
+ const setRelationshipDefinition = (
393
+ relationshipId,
394
+ localTableId,
395
+ remoteTableId,
396
+ getRemoteRowId2,
397
+ ) => {
398
+ mapSet(remoteTableIds, relationshipId, remoteTableId);
399
+ setDefinitionAndListen(
400
+ relationshipId,
401
+ localTableId,
402
+ (change, changedRemoteRowIds) => {
403
+ const changedLocalRows = setNew();
404
+ const changedRemoteRows = setNew();
405
+ const changedLinkedRows = setNew();
406
+ const [localRows, remoteRows] = getRelationship(relationshipId);
407
+ collForEach(
408
+ changedRemoteRowIds,
409
+ ([oldRemoteRowId, newRemoteRowId], localRowId) => {
410
+ if (!isUndefined(oldRemoteRowId)) {
411
+ setAdd(changedRemoteRows, oldRemoteRowId);
412
+ ifNotUndefined(
413
+ mapGet(remoteRows, oldRemoteRowId),
414
+ (oldRemoteRow) => {
415
+ collDel(oldRemoteRow, localRowId);
416
+ if (collIsEmpty(oldRemoteRow)) {
417
+ mapSet(remoteRows, oldRemoteRowId);
418
+ }
419
+ },
420
+ );
421
+ }
422
+ if (!isUndefined(newRemoteRowId)) {
423
+ setAdd(changedRemoteRows, newRemoteRowId);
424
+ if (!collHas(remoteRows, newRemoteRowId)) {
425
+ mapSet(remoteRows, newRemoteRowId, setNew());
426
+ }
427
+ setAdd(mapGet(remoteRows, newRemoteRowId), localRowId);
428
+ }
429
+ setAdd(changedLocalRows, localRowId);
430
+ mapSet(localRows, localRowId, newRemoteRowId);
431
+ mapForEach(
432
+ mapGet(linkedRowIdsListeners, relationshipId),
433
+ (firstRowId) => {
434
+ if (
435
+ collHas(
436
+ getLinkedRowIdsCache(relationshipId, firstRowId),
437
+ localRowId,
438
+ )
439
+ ) {
440
+ setAdd(changedLinkedRows, firstRowId);
441
+ }
442
+ },
443
+ );
444
+ },
445
+ );
446
+ change();
447
+ collForEach(changedLocalRows, (localRowId) =>
448
+ callListeners(remoteRowIdListeners, [relationshipId, localRowId]),
449
+ );
450
+ collForEach(changedRemoteRows, (remoteRowId) =>
451
+ callListeners(localRowIdsListeners, [relationshipId, remoteRowId]),
452
+ );
453
+ collForEach(changedLinkedRows, (firstRowId) => {
454
+ delLinkedRowIdsCache(relationshipId, firstRowId);
455
+ callListeners(linkedRowIdsListeners, [relationshipId, firstRowId]);
456
+ });
457
+ },
458
+ getRowCellFunction(getRemoteRowId2),
459
+ );
460
+ return relationships;
461
+ };
462
+ const forEachRelationship = (relationshipCallback) =>
463
+ forEachRelationshipImpl((relationshipId) =>
464
+ relationshipCallback(relationshipId, (rowCallback) =>
465
+ store.forEachRow(getLocalTableId(relationshipId), rowCallback),
466
+ ),
467
+ );
468
+ const delRelationshipDefinition = (relationshipId) => {
469
+ mapSet(remoteTableIds, relationshipId);
470
+ delDefinition(relationshipId);
471
+ return relationships;
472
+ };
473
+ const getRemoteTableId = (relationshipId) =>
474
+ mapGet(remoteTableIds, relationshipId);
475
+ const getRemoteRowId = (relationshipId, localRowId) =>
476
+ mapGet(getRelationship(relationshipId)?.[0], localRowId);
477
+ const getLocalRowIds = (relationshipId, remoteRowId) =>
478
+ collValues(mapGet(getRelationship(relationshipId)?.[1], remoteRowId));
479
+ const getLinkedRowIds = (relationshipId, firstRowId) =>
480
+ isUndefined(getRelationship(relationshipId))
481
+ ? [firstRowId]
482
+ : collValues(getLinkedRowIdsCache(relationshipId, firstRowId, true));
483
+ const addRemoteRowIdListener = (relationshipId, localRowId, listener) =>
484
+ addListener(listener, remoteRowIdListeners, [relationshipId, localRowId]);
485
+ const addLocalRowIdsListener = (relationshipId, remoteRowId, listener) =>
486
+ addListener(listener, localRowIdsListeners, [relationshipId, remoteRowId]);
487
+ const addLinkedRowIdsListener = (relationshipId, firstRowId, listener) => {
488
+ getLinkedRowIdsCache(relationshipId, firstRowId);
489
+ return addListener(listener, linkedRowIdsListeners, [
490
+ relationshipId,
491
+ firstRowId,
492
+ ]);
493
+ };
494
+ const delListener = (listenerId) => {
495
+ delLinkedRowIdsCache(...(delListenerImpl(listenerId) ?? []));
496
+ return relationships;
497
+ };
498
+ const getListenerStats = () => ({
499
+ remoteRowId: collSize3(remoteRowIdListeners),
500
+ localRowIds: collSize3(localRowIdsListeners),
501
+ linkedRowIds: collSize3(linkedRowIdsListeners),
502
+ });
503
+ const relationships = {
504
+ setRelationshipDefinition,
505
+ delRelationshipDefinition,
506
+ getStore,
507
+ getRelationshipIds,
508
+ forEachRelationship,
509
+ hasRelationship,
510
+ getLocalTableId,
511
+ getRemoteTableId,
512
+ getRemoteRowId,
513
+ getLocalRowIds,
514
+ getLinkedRowIds,
515
+ addRelationshipIdsListener,
516
+ addRemoteRowIdListener,
517
+ addLocalRowIdsListener,
518
+ addLinkedRowIdsListener,
519
+ delListener,
520
+ destroy,
521
+ getListenerStats,
522
+ };
523
+ return objFreeze(relationships);
524
+ });
525
+
526
+ export {createRelationships};