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