tinybase 8.0.0-beta.1 → 8.0.0-beta.3

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 (280) hide show
  1. package/@types/_internal/store/with-schemas/index.d.ts +2 -2
  2. package/@types/common/index.d.ts +22 -0
  3. package/@types/common/with-schemas/index.d.ts +22 -0
  4. package/@types/middleware/index.d.ts +151 -29
  5. package/@types/middleware/with-schemas/index.d.ts +174 -29
  6. package/@types/store/index.d.ts +132 -79
  7. package/@types/store/with-schemas/index.d.ts +137 -81
  8. package/checkpoints/index.js +2 -8
  9. package/checkpoints/with-schemas/index.js +2 -8
  10. package/index.js +272 -143
  11. package/mergeable-store/index.js +271 -156
  12. package/mergeable-store/with-schemas/index.js +271 -156
  13. package/middleware/index.js +40 -1
  14. package/middleware/with-schemas/index.js +40 -1
  15. package/min/checkpoints/index.js +1 -1
  16. package/min/checkpoints/index.js.gz +0 -0
  17. package/min/checkpoints/with-schemas/index.js +1 -1
  18. package/min/checkpoints/with-schemas/index.js.gz +0 -0
  19. package/min/index.js +1 -1
  20. package/min/index.js.gz +0 -0
  21. package/min/mergeable-store/index.js +1 -1
  22. package/min/mergeable-store/index.js.gz +0 -0
  23. package/min/mergeable-store/with-schemas/index.js +1 -1
  24. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  25. package/min/middleware/index.js +1 -1
  26. package/min/middleware/index.js.gz +0 -0
  27. package/min/middleware/with-schemas/index.js +1 -1
  28. package/min/middleware/with-schemas/index.js.gz +0 -0
  29. package/min/omni/index.js +1 -1
  30. package/min/omni/index.js.gz +0 -0
  31. package/min/omni/with-schemas/index.js +1 -1
  32. package/min/omni/with-schemas/index.js.gz +0 -0
  33. package/min/persisters/index.js +1 -1
  34. package/min/persisters/index.js.gz +0 -0
  35. package/min/persisters/persister-automerge/index.js +1 -1
  36. package/min/persisters/persister-automerge/index.js.gz +0 -0
  37. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  38. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  39. package/min/persisters/persister-browser/index.js +1 -1
  40. package/min/persisters/persister-browser/index.js.gz +0 -0
  41. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  42. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  43. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  44. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  45. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  46. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  47. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  48. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  49. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  50. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  51. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  52. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  53. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  54. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  55. package/min/persisters/persister-electric-sql/index.js +1 -1
  56. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  57. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  58. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  59. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  60. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  61. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  62. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  63. package/min/persisters/persister-file/index.js +1 -1
  64. package/min/persisters/persister-file/index.js.gz +0 -0
  65. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  66. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  67. package/min/persisters/persister-indexed-db/index.js +1 -1
  68. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  69. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  70. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  71. package/min/persisters/persister-libsql/index.js +1 -1
  72. package/min/persisters/persister-libsql/index.js.gz +0 -0
  73. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  74. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  75. package/min/persisters/persister-partykit-client/index.js +1 -1
  76. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  77. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  78. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  79. package/min/persisters/persister-pglite/index.js +1 -1
  80. package/min/persisters/persister-pglite/index.js.gz +0 -0
  81. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  82. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  83. package/min/persisters/persister-postgres/index.js +1 -1
  84. package/min/persisters/persister-postgres/index.js.gz +0 -0
  85. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  86. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  87. package/min/persisters/persister-powersync/index.js +1 -1
  88. package/min/persisters/persister-powersync/index.js.gz +0 -0
  89. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  90. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  91. package/min/persisters/persister-react-native-mmkv/index.js +1 -1
  92. package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
  93. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
  94. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
  95. package/min/persisters/persister-react-native-sqlite/index.js +1 -1
  96. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  97. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
  98. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  99. package/min/persisters/persister-remote/index.js +1 -1
  100. package/min/persisters/persister-remote/index.js.gz +0 -0
  101. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  102. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  103. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  104. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  105. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  106. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  107. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  108. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  109. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  110. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  111. package/min/persisters/persister-sqlite3/index.js +1 -1
  112. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  113. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  114. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  115. package/min/persisters/persister-yjs/index.js +1 -1
  116. package/min/persisters/persister-yjs/index.js.gz +0 -0
  117. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  118. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  119. package/min/persisters/with-schemas/index.js +1 -1
  120. package/min/persisters/with-schemas/index.js.gz +0 -0
  121. package/min/queries/index.js +1 -1
  122. package/min/queries/index.js.gz +0 -0
  123. package/min/queries/with-schemas/index.js +1 -1
  124. package/min/queries/with-schemas/index.js.gz +0 -0
  125. package/min/schematizers/index.js +1 -1
  126. package/min/schematizers/index.js.gz +0 -0
  127. package/min/schematizers/schematizer-arktype/index.js +1 -1
  128. package/min/schematizers/schematizer-arktype/index.js.gz +0 -0
  129. package/min/schematizers/schematizer-arktype/with-schemas/index.js +1 -1
  130. package/min/schematizers/schematizer-arktype/with-schemas/index.js.gz +0 -0
  131. package/min/schematizers/schematizer-effect/index.js +1 -1
  132. package/min/schematizers/schematizer-effect/index.js.gz +0 -0
  133. package/min/schematizers/schematizer-effect/with-schemas/index.js +1 -1
  134. package/min/schematizers/schematizer-effect/with-schemas/index.js.gz +0 -0
  135. package/min/schematizers/schematizer-typebox/index.js +1 -1
  136. package/min/schematizers/schematizer-typebox/index.js.gz +0 -0
  137. package/min/schematizers/schematizer-typebox/with-schemas/index.js +1 -1
  138. package/min/schematizers/schematizer-typebox/with-schemas/index.js.gz +0 -0
  139. package/min/schematizers/schematizer-valibot/index.js +1 -1
  140. package/min/schematizers/schematizer-valibot/index.js.gz +0 -0
  141. package/min/schematizers/schematizer-valibot/with-schemas/index.js +1 -1
  142. package/min/schematizers/schematizer-valibot/with-schemas/index.js.gz +0 -0
  143. package/min/schematizers/schematizer-yup/index.js +1 -1
  144. package/min/schematizers/schematizer-yup/index.js.gz +0 -0
  145. package/min/schematizers/schematizer-yup/with-schemas/index.js +1 -1
  146. package/min/schematizers/schematizer-yup/with-schemas/index.js.gz +0 -0
  147. package/min/schematizers/schematizer-zod/index.js +1 -1
  148. package/min/schematizers/schematizer-zod/index.js.gz +0 -0
  149. package/min/schematizers/schematizer-zod/with-schemas/index.js +1 -1
  150. package/min/schematizers/schematizer-zod/with-schemas/index.js.gz +0 -0
  151. package/min/schematizers/with-schemas/index.js +1 -1
  152. package/min/schematizers/with-schemas/index.js.gz +0 -0
  153. package/min/store/index.js +1 -1
  154. package/min/store/index.js.gz +0 -0
  155. package/min/store/with-schemas/index.js +1 -1
  156. package/min/store/with-schemas/index.js.gz +0 -0
  157. package/min/synchronizers/index.js +1 -1
  158. package/min/synchronizers/index.js.gz +0 -0
  159. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  160. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  161. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  162. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  163. package/min/synchronizers/synchronizer-local/index.js +1 -1
  164. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  165. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  166. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  167. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  168. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  169. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  170. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  171. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  172. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  173. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  174. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  175. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  176. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  177. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  178. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  179. package/min/synchronizers/with-schemas/index.js +1 -1
  180. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  181. package/min/ui-react/index.js +1 -1
  182. package/min/ui-react/index.js.gz +0 -0
  183. package/min/ui-react/with-schemas/index.js +1 -1
  184. package/min/ui-react/with-schemas/index.js.gz +0 -0
  185. package/min/ui-react-dom/index.js +1 -1
  186. package/min/ui-react-dom/index.js.gz +0 -0
  187. package/min/ui-react-dom/with-schemas/index.js +1 -1
  188. package/min/ui-react-dom/with-schemas/index.js.gz +0 -0
  189. package/min/ui-react-inspector/index.js +1 -1
  190. package/min/ui-react-inspector/index.js.gz +0 -0
  191. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  192. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  193. package/min/with-schemas/index.js +1 -1
  194. package/min/with-schemas/index.js.gz +0 -0
  195. package/omni/index.js +356 -154
  196. package/omni/with-schemas/index.js +356 -154
  197. package/package.json +7 -7
  198. package/persisters/index.js +5 -5
  199. package/persisters/persister-automerge/index.js +5 -5
  200. package/persisters/persister-automerge/with-schemas/index.js +5 -5
  201. package/persisters/persister-browser/index.js +5 -5
  202. package/persisters/persister-browser/with-schemas/index.js +5 -5
  203. package/persisters/persister-cr-sqlite-wasm/index.js +5 -5
  204. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +5 -5
  205. package/persisters/persister-durable-object-sql-storage/index.js +5 -5
  206. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +5 -5
  207. package/persisters/persister-durable-object-storage/index.js +5 -5
  208. package/persisters/persister-durable-object-storage/with-schemas/index.js +5 -5
  209. package/persisters/persister-electric-sql/index.js +5 -5
  210. package/persisters/persister-electric-sql/with-schemas/index.js +5 -5
  211. package/persisters/persister-expo-sqlite/index.js +5 -5
  212. package/persisters/persister-expo-sqlite/with-schemas/index.js +5 -5
  213. package/persisters/persister-file/index.js +5 -5
  214. package/persisters/persister-file/with-schemas/index.js +5 -5
  215. package/persisters/persister-indexed-db/index.js +5 -5
  216. package/persisters/persister-indexed-db/with-schemas/index.js +5 -5
  217. package/persisters/persister-libsql/index.js +5 -5
  218. package/persisters/persister-libsql/with-schemas/index.js +5 -5
  219. package/persisters/persister-partykit-client/index.js +5 -5
  220. package/persisters/persister-partykit-client/with-schemas/index.js +5 -5
  221. package/persisters/persister-pglite/index.js +5 -5
  222. package/persisters/persister-pglite/with-schemas/index.js +5 -5
  223. package/persisters/persister-postgres/index.js +5 -5
  224. package/persisters/persister-postgres/with-schemas/index.js +5 -5
  225. package/persisters/persister-powersync/index.js +5 -5
  226. package/persisters/persister-powersync/with-schemas/index.js +5 -5
  227. package/persisters/persister-react-native-mmkv/index.js +5 -5
  228. package/persisters/persister-react-native-mmkv/with-schemas/index.js +5 -5
  229. package/persisters/persister-react-native-sqlite/index.js +5 -5
  230. package/persisters/persister-react-native-sqlite/with-schemas/index.js +5 -5
  231. package/persisters/persister-remote/index.js +5 -5
  232. package/persisters/persister-remote/with-schemas/index.js +5 -5
  233. package/persisters/persister-sqlite-bun/index.js +5 -5
  234. package/persisters/persister-sqlite-bun/with-schemas/index.js +5 -5
  235. package/persisters/persister-sqlite-wasm/index.js +5 -5
  236. package/persisters/persister-sqlite-wasm/with-schemas/index.js +5 -5
  237. package/persisters/persister-sqlite3/index.js +5 -5
  238. package/persisters/persister-sqlite3/with-schemas/index.js +5 -5
  239. package/persisters/persister-yjs/index.js +5 -5
  240. package/persisters/persister-yjs/with-schemas/index.js +5 -5
  241. package/persisters/with-schemas/index.js +5 -5
  242. package/queries/index.js +11 -4
  243. package/queries/with-schemas/index.js +11 -4
  244. package/readme.md +3 -3
  245. package/releases.md +19 -3
  246. package/schematizers/index.js +9 -1
  247. package/schematizers/schematizer-arktype/index.js +16 -1
  248. package/schematizers/schematizer-arktype/with-schemas/index.js +16 -1
  249. package/schematizers/schematizer-effect/index.js +15 -2
  250. package/schematizers/schematizer-effect/with-schemas/index.js +15 -2
  251. package/schematizers/schematizer-typebox/index.js +9 -1
  252. package/schematizers/schematizer-typebox/with-schemas/index.js +9 -1
  253. package/schematizers/schematizer-valibot/index.js +17 -2
  254. package/schematizers/schematizer-valibot/with-schemas/index.js +17 -2
  255. package/schematizers/schematizer-yup/index.js +9 -1
  256. package/schematizers/schematizer-yup/with-schemas/index.js +9 -1
  257. package/schematizers/schematizer-zod/index.js +13 -2
  258. package/schematizers/schematizer-zod/with-schemas/index.js +13 -2
  259. package/schematizers/with-schemas/index.js +9 -1
  260. package/store/index.js +195 -104
  261. package/store/with-schemas/index.js +195 -104
  262. package/synchronizers/index.js +5 -5
  263. package/synchronizers/synchronizer-broadcast-channel/index.js +5 -5
  264. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +5 -5
  265. package/synchronizers/synchronizer-local/index.js +5 -5
  266. package/synchronizers/synchronizer-local/with-schemas/index.js +5 -5
  267. package/synchronizers/synchronizer-ws-client/index.js +5 -5
  268. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +5 -5
  269. package/synchronizers/synchronizer-ws-server/index.js +5 -5
  270. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +5 -5
  271. package/synchronizers/synchronizer-ws-server-durable-object/index.js +5 -5
  272. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +5 -5
  273. package/synchronizers/with-schemas/index.js +5 -5
  274. package/ui-react/index.js +6 -0
  275. package/ui-react/with-schemas/index.js +6 -0
  276. package/ui-react-dom/index.js +91 -6
  277. package/ui-react-dom/with-schemas/index.js +91 -6
  278. package/ui-react-inspector/index.js +248 -84
  279. package/ui-react-inspector/with-schemas/index.js +248 -84
  280. package/with-schemas/index.js +272 -143
@@ -278,8 +278,8 @@ const getStoreFunctions = (
278
278
  persist != 1 /* StoreOnly */ && store.isMergeable()
279
279
  ? [
280
280
  1,
281
- store.getMergeableContent,
282
- () => store.getTransactionMergeableChanges(!isSynchronizer),
281
+ store.__[1],
282
+ () => store.__[2](!isSynchronizer),
283
283
  ([[changedTables], [changedValues]]) =>
284
284
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
285
285
  store.setDefaultContent,
@@ -287,8 +287,8 @@ const getStoreFunctions = (
287
287
  : persist != 2 /* MergeableStoreOnly */
288
288
  ? [
289
289
  0,
290
- store.getContent,
291
- store.getTransactionChanges,
290
+ store._[7],
291
+ store._[8],
292
292
  ([changedTables, changedValues]) =>
293
293
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
294
294
  store.setContent,
@@ -353,7 +353,7 @@ const createCustomPersister = (
353
353
  : store.setContent)(contentOrChanges);
354
354
  };
355
355
  const saveAfterMutated = async () => {
356
- if (isAutoSaving() && store.hadMutated?.()) {
356
+ if (isAutoSaving() && store.__?.[0]?.()) {
357
357
  await save();
358
358
  }
359
359
  };
@@ -290,8 +290,8 @@ const getStoreFunctions = (
290
290
  persist != 1 /* StoreOnly */ && store.isMergeable()
291
291
  ? [
292
292
  1,
293
- store.getMergeableContent,
294
- () => store.getTransactionMergeableChanges(!isSynchronizer),
293
+ store.__[1],
294
+ () => store.__[2](!isSynchronizer),
295
295
  ([[changedTables], [changedValues]]) =>
296
296
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
297
297
  store.setDefaultContent,
@@ -299,8 +299,8 @@ const getStoreFunctions = (
299
299
  : persist != 2 /* MergeableStoreOnly */
300
300
  ? [
301
301
  0,
302
- store.getContent,
303
- store.getTransactionChanges,
302
+ store._[7],
303
+ store._[8],
304
304
  ([changedTables, changedValues]) =>
305
305
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
306
306
  store.setContent,
@@ -365,7 +365,7 @@ const createCustomPersister = (
365
365
  : store.setContent)(contentOrChanges);
366
366
  };
367
367
  const saveAfterMutated = async () => {
368
- if (isAutoSaving() && store.hadMutated?.()) {
368
+ if (isAutoSaving() && store.__?.[0]?.()) {
369
369
  await save();
370
370
  }
371
371
  };
@@ -290,8 +290,8 @@ const getStoreFunctions = (
290
290
  persist != 1 /* StoreOnly */ && store.isMergeable()
291
291
  ? [
292
292
  1,
293
- store.getMergeableContent,
294
- () => store.getTransactionMergeableChanges(!isSynchronizer),
293
+ store.__[1],
294
+ () => store.__[2](!isSynchronizer),
295
295
  ([[changedTables], [changedValues]]) =>
296
296
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
297
297
  store.setDefaultContent,
@@ -299,8 +299,8 @@ const getStoreFunctions = (
299
299
  : persist != 2 /* MergeableStoreOnly */
300
300
  ? [
301
301
  0,
302
- store.getContent,
303
- store.getTransactionChanges,
302
+ store._[7],
303
+ store._[8],
304
304
  ([changedTables, changedValues]) =>
305
305
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
306
306
  store.setContent,
@@ -365,7 +365,7 @@ const createCustomPersister = (
365
365
  : store.setContent)(contentOrChanges);
366
366
  };
367
367
  const saveAfterMutated = async () => {
368
- if (isAutoSaving() && store.hadMutated?.()) {
368
+ if (isAutoSaving() && store.__?.[0]?.()) {
369
369
  await save();
370
370
  }
371
371
  };
@@ -280,8 +280,8 @@ const getStoreFunctions = (
280
280
  persist != 1 /* StoreOnly */ && store.isMergeable()
281
281
  ? [
282
282
  1,
283
- store.getMergeableContent,
284
- () => store.getTransactionMergeableChanges(!isSynchronizer),
283
+ store.__[1],
284
+ () => store.__[2](!isSynchronizer),
285
285
  ([[changedTables], [changedValues]]) =>
286
286
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
287
287
  store.setDefaultContent,
@@ -289,8 +289,8 @@ const getStoreFunctions = (
289
289
  : persist != 2 /* MergeableStoreOnly */
290
290
  ? [
291
291
  0,
292
- store.getContent,
293
- store.getTransactionChanges,
292
+ store._[7],
293
+ store._[8],
294
294
  ([changedTables, changedValues]) =>
295
295
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
296
296
  store.setContent,
@@ -355,7 +355,7 @@ const createCustomPersister = (
355
355
  : store.setContent)(contentOrChanges);
356
356
  };
357
357
  const saveAfterMutated = async () => {
358
- if (isAutoSaving() && store.hadMutated?.()) {
358
+ if (isAutoSaving() && store.__?.[0]?.()) {
359
359
  await save();
360
360
  }
361
361
  };
@@ -280,8 +280,8 @@ const getStoreFunctions = (
280
280
  persist != 1 /* StoreOnly */ && store.isMergeable()
281
281
  ? [
282
282
  1,
283
- store.getMergeableContent,
284
- () => store.getTransactionMergeableChanges(!isSynchronizer),
283
+ store.__[1],
284
+ () => store.__[2](!isSynchronizer),
285
285
  ([[changedTables], [changedValues]]) =>
286
286
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
287
287
  store.setDefaultContent,
@@ -289,8 +289,8 @@ const getStoreFunctions = (
289
289
  : persist != 2 /* MergeableStoreOnly */
290
290
  ? [
291
291
  0,
292
- store.getContent,
293
- store.getTransactionChanges,
292
+ store._[7],
293
+ store._[8],
294
294
  ([changedTables, changedValues]) =>
295
295
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
296
296
  store.setContent,
@@ -355,7 +355,7 @@ const createCustomPersister = (
355
355
  : store.setContent)(contentOrChanges);
356
356
  };
357
357
  const saveAfterMutated = async () => {
358
- if (isAutoSaving() && store.hadMutated?.()) {
358
+ if (isAutoSaving() && store.__?.[0]?.()) {
359
359
  await save();
360
360
  }
361
361
  };
@@ -236,8 +236,8 @@ const getStoreFunctions = (
236
236
  persist != 1 /* StoreOnly */ && store.isMergeable()
237
237
  ? [
238
238
  1,
239
- store.getMergeableContent,
240
- () => store.getTransactionMergeableChanges(!isSynchronizer),
239
+ store.__[1],
240
+ () => store.__[2](!isSynchronizer),
241
241
  ([[changedTables], [changedValues]]) =>
242
242
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
243
243
  store.setDefaultContent,
@@ -245,8 +245,8 @@ const getStoreFunctions = (
245
245
  : persist != 2 /* MergeableStoreOnly */
246
246
  ? [
247
247
  0,
248
- store.getContent,
249
- store.getTransactionChanges,
248
+ store._[7],
249
+ store._[8],
250
250
  ([changedTables, changedValues]) =>
251
251
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
252
252
  store.setContent,
@@ -311,7 +311,7 @@ const createCustomPersister = (
311
311
  : store.setContent)(contentOrChanges);
312
312
  };
313
313
  const saveAfterMutated = async () => {
314
- if (isAutoSaving() && store.hadMutated?.()) {
314
+ if (isAutoSaving() && store.__?.[0]?.()) {
315
315
  await save();
316
316
  }
317
317
  };
package/ui-react/index.js CHANGED
@@ -113,6 +113,8 @@ const objIsEqual = (
113
113
  );
114
114
  };
115
115
 
116
+ const jsonString = JSON.stringify;
117
+
116
118
  const {
117
119
  PureComponent,
118
120
  createContext,
@@ -352,6 +354,10 @@ const IS_EQUALS = [
352
354
  (paramValues1, paramValues2) =>
353
355
  objIsEqual(paramValues1, paramValues2, arrayOrValueEqual),
354
356
  arrayOrValueEqual,
357
+ (thing1, thing2) =>
358
+ thing1 === thing2 ||
359
+ ((isObject(thing1) || isArray(thing1)) &&
360
+ jsonString(thing1) === jsonString(thing2)),
355
361
  ];
356
362
  const isEqual = (thing1, thing2) => thing1 === thing2;
357
363
  const useCreate = (store, create, createDeps = EMPTY_ARRAY) => {
@@ -113,6 +113,8 @@ const objIsEqual = (
113
113
  );
114
114
  };
115
115
 
116
+ const jsonString = JSON.stringify;
117
+
116
118
  const {
117
119
  PureComponent,
118
120
  createContext,
@@ -352,6 +354,10 @@ const IS_EQUALS = [
352
354
  (paramValues1, paramValues2) =>
353
355
  objIsEqual(paramValues1, paramValues2, arrayOrValueEqual),
354
356
  arrayOrValueEqual,
357
+ (thing1, thing2) =>
358
+ thing1 === thing2 ||
359
+ ((isObject(thing1) || isArray(thing1)) &&
360
+ jsonString(thing1) === jsonString(thing2)),
355
361
  ];
356
362
  const isEqual = (thing1, thing2) => thing1 === thing2;
357
363
  const useCreate = (store, create, createDeps = EMPTY_ARRAY) => {
@@ -10,6 +10,8 @@ const STRING = getTypeOf(EMPTY_STRING);
10
10
  const BOOLEAN = getTypeOf(true);
11
11
  const NUMBER = getTypeOf(0);
12
12
  const FUNCTION = getTypeOf(getTypeOf);
13
+ const OBJECT = 'object';
14
+ const ARRAY = 'array';
13
15
  const NULL = 'null';
14
16
  const LISTENER = 'Listener';
15
17
  const RESULT = 'Result';
@@ -111,6 +113,9 @@ const objIsEqual = (
111
113
  );
112
114
  };
113
115
 
116
+ const jsonString = JSON.stringify;
117
+ const jsonParse = JSON.parse;
118
+
114
119
  const {
115
120
  PureComponent,
116
121
  createContext,
@@ -186,6 +191,10 @@ const IS_EQUALS = [
186
191
  (paramValues1, paramValues2) =>
187
192
  objIsEqual(paramValues1, paramValues2, arrayOrValueEqual),
188
193
  arrayOrValueEqual,
194
+ (thing1, thing2) =>
195
+ thing1 === thing2 ||
196
+ ((isObject(thing1) || isArray(thing1)) &&
197
+ jsonString(thing1) === jsonString(thing2)),
189
198
  ];
190
199
  const isEqual = (thing1, thing2) => thing1 === thing2;
191
200
  const addAndDelListener = (thing, listenable, ...args) => {
@@ -463,20 +472,37 @@ const getCellOrValueType = (cellOrValue) => {
463
472
  if (isNull(cellOrValue)) {
464
473
  return NULL;
465
474
  }
475
+ if (isArray(cellOrValue)) {
476
+ return ARRAY;
477
+ }
478
+ if (isObject(cellOrValue)) {
479
+ return OBJECT;
480
+ }
466
481
  const type = getTypeOf(cellOrValue);
467
482
  return isTypeStringOrBoolean(type) ||
468
483
  (type == NUMBER && isFiniteNumber(cellOrValue))
469
484
  ? type
470
485
  : void 0;
471
486
  };
472
- const getTypeCase = (type, stringCase, numberCase, booleanCase) =>
487
+ const getTypeCase = (
488
+ type,
489
+ stringCase,
490
+ numberCase,
491
+ booleanCase,
492
+ objectCase,
493
+ arrayCase,
494
+ ) =>
473
495
  type == STRING
474
496
  ? stringCase
475
497
  : type == NUMBER
476
498
  ? numberCase
477
499
  : type == BOOLEAN
478
500
  ? booleanCase
479
- : null;
501
+ : type == OBJECT
502
+ ? objectCase
503
+ : type == ARRAY
504
+ ? arrayCase
505
+ : null;
480
506
 
481
507
  const useStoreCellComponentProps = (store, tableId) =>
482
508
  useMemo(() => ({store, tableId}), [store, tableId]);
@@ -652,12 +678,20 @@ const EditableThing = ({
652
678
  const [stringThing, setStringThing] = useState();
653
679
  const [numberThing, setNumberThing] = useState();
654
680
  const [booleanThing, setBooleanThing] = useState();
681
+ const [objectThingJson, setObjectThingJson] = useState(EMPTY_STRING);
682
+ const [arrayThingJson, setArrayThingJson] = useState(EMPTY_STRING);
655
683
  if (currentThing !== thing) {
656
684
  setThingType(getCellOrValueType(thing));
657
685
  setCurrentThing(thing);
658
- setStringThing(String(thing));
659
- setNumberThing(Number(thing) || 0);
660
- setBooleanThing(Boolean(thing));
686
+ if (isObject(thing)) {
687
+ setObjectThingJson(jsonString(thing));
688
+ } else if (isArray(thing)) {
689
+ setArrayThingJson(jsonString(thing));
690
+ } else {
691
+ setStringThing(String(thing));
692
+ setNumberThing(Number(thing) || 0);
693
+ setBooleanThing(Boolean(thing));
694
+ }
661
695
  }
662
696
  const handleThingChange = useCallback(
663
697
  (thing2, setTypedThing) => {
@@ -669,12 +703,21 @@ const EditableThing = ({
669
703
  );
670
704
  const handleTypeChange = useCallback(() => {
671
705
  if (!hasSchema?.()) {
672
- const nextType = getTypeCase(thingType, NUMBER, BOOLEAN, STRING);
706
+ const nextType = getTypeCase(
707
+ thingType,
708
+ NUMBER,
709
+ BOOLEAN,
710
+ OBJECT,
711
+ ARRAY,
712
+ STRING,
713
+ );
673
714
  const thing2 = getTypeCase(
674
715
  nextType,
675
716
  stringThing,
676
717
  numberThing,
677
718
  booleanThing,
719
+ objectThingJson ? jsonParse(objectThingJson) : {},
720
+ arrayThingJson ? jsonParse(arrayThingJson) : [],
678
721
  );
679
722
  setThingType(nextType);
680
723
  setCurrentThing(thing2);
@@ -686,6 +729,8 @@ const EditableThing = ({
686
729
  stringThing,
687
730
  numberThing,
688
731
  booleanThing,
732
+ objectThingJson,
733
+ arrayThingJson,
689
734
  thingType,
690
735
  ]);
691
736
  const widget = getTypeCase(
@@ -737,6 +782,46 @@ const EditableThing = ({
737
782
  },
738
783
  thingType,
739
784
  ),
785
+ /* @__PURE__ */ jsx(
786
+ 'textarea',
787
+ {
788
+ value: objectThingJson,
789
+ onChange: useCallback(
790
+ (event) => {
791
+ const str = event[CURRENT_TARGET][_VALUE];
792
+ setObjectThingJson(str);
793
+ try {
794
+ const parsed = jsonParse(str);
795
+ if (isObject(parsed)) {
796
+ onThingChange(parsed);
797
+ }
798
+ } catch {}
799
+ },
800
+ [onThingChange],
801
+ ),
802
+ },
803
+ thingType,
804
+ ),
805
+ /* @__PURE__ */ jsx(
806
+ 'textarea',
807
+ {
808
+ value: arrayThingJson,
809
+ onChange: useCallback(
810
+ (event) => {
811
+ const str = event[CURRENT_TARGET][_VALUE];
812
+ setArrayThingJson(str);
813
+ try {
814
+ const parsed = jsonParse(str);
815
+ if (isArray(parsed)) {
816
+ onThingChange(parsed);
817
+ }
818
+ } catch {}
819
+ },
820
+ [onThingChange],
821
+ ),
822
+ },
823
+ thingType,
824
+ ),
740
825
  );
741
826
  return /* @__PURE__ */ jsxs('div', {
742
827
  className,
@@ -10,6 +10,8 @@ const STRING = getTypeOf(EMPTY_STRING);
10
10
  const BOOLEAN = getTypeOf(true);
11
11
  const NUMBER = getTypeOf(0);
12
12
  const FUNCTION = getTypeOf(getTypeOf);
13
+ const OBJECT = 'object';
14
+ const ARRAY = 'array';
13
15
  const NULL = 'null';
14
16
  const LISTENER = 'Listener';
15
17
  const RESULT = 'Result';
@@ -111,6 +113,9 @@ const objIsEqual = (
111
113
  );
112
114
  };
113
115
 
116
+ const jsonString = JSON.stringify;
117
+ const jsonParse = JSON.parse;
118
+
114
119
  const {
115
120
  PureComponent,
116
121
  createContext,
@@ -186,6 +191,10 @@ const IS_EQUALS = [
186
191
  (paramValues1, paramValues2) =>
187
192
  objIsEqual(paramValues1, paramValues2, arrayOrValueEqual),
188
193
  arrayOrValueEqual,
194
+ (thing1, thing2) =>
195
+ thing1 === thing2 ||
196
+ ((isObject(thing1) || isArray(thing1)) &&
197
+ jsonString(thing1) === jsonString(thing2)),
189
198
  ];
190
199
  const isEqual = (thing1, thing2) => thing1 === thing2;
191
200
  const addAndDelListener = (thing, listenable, ...args) => {
@@ -463,20 +472,37 @@ const getCellOrValueType = (cellOrValue) => {
463
472
  if (isNull(cellOrValue)) {
464
473
  return NULL;
465
474
  }
475
+ if (isArray(cellOrValue)) {
476
+ return ARRAY;
477
+ }
478
+ if (isObject(cellOrValue)) {
479
+ return OBJECT;
480
+ }
466
481
  const type = getTypeOf(cellOrValue);
467
482
  return isTypeStringOrBoolean(type) ||
468
483
  (type == NUMBER && isFiniteNumber(cellOrValue))
469
484
  ? type
470
485
  : void 0;
471
486
  };
472
- const getTypeCase = (type, stringCase, numberCase, booleanCase) =>
487
+ const getTypeCase = (
488
+ type,
489
+ stringCase,
490
+ numberCase,
491
+ booleanCase,
492
+ objectCase,
493
+ arrayCase,
494
+ ) =>
473
495
  type == STRING
474
496
  ? stringCase
475
497
  : type == NUMBER
476
498
  ? numberCase
477
499
  : type == BOOLEAN
478
500
  ? booleanCase
479
- : null;
501
+ : type == OBJECT
502
+ ? objectCase
503
+ : type == ARRAY
504
+ ? arrayCase
505
+ : null;
480
506
 
481
507
  const useStoreCellComponentProps = (store, tableId) =>
482
508
  useMemo(() => ({store, tableId}), [store, tableId]);
@@ -652,12 +678,20 @@ const EditableThing = ({
652
678
  const [stringThing, setStringThing] = useState();
653
679
  const [numberThing, setNumberThing] = useState();
654
680
  const [booleanThing, setBooleanThing] = useState();
681
+ const [objectThingJson, setObjectThingJson] = useState(EMPTY_STRING);
682
+ const [arrayThingJson, setArrayThingJson] = useState(EMPTY_STRING);
655
683
  if (currentThing !== thing) {
656
684
  setThingType(getCellOrValueType(thing));
657
685
  setCurrentThing(thing);
658
- setStringThing(String(thing));
659
- setNumberThing(Number(thing) || 0);
660
- setBooleanThing(Boolean(thing));
686
+ if (isObject(thing)) {
687
+ setObjectThingJson(jsonString(thing));
688
+ } else if (isArray(thing)) {
689
+ setArrayThingJson(jsonString(thing));
690
+ } else {
691
+ setStringThing(String(thing));
692
+ setNumberThing(Number(thing) || 0);
693
+ setBooleanThing(Boolean(thing));
694
+ }
661
695
  }
662
696
  const handleThingChange = useCallback(
663
697
  (thing2, setTypedThing) => {
@@ -669,12 +703,21 @@ const EditableThing = ({
669
703
  );
670
704
  const handleTypeChange = useCallback(() => {
671
705
  if (!hasSchema?.()) {
672
- const nextType = getTypeCase(thingType, NUMBER, BOOLEAN, STRING);
706
+ const nextType = getTypeCase(
707
+ thingType,
708
+ NUMBER,
709
+ BOOLEAN,
710
+ OBJECT,
711
+ ARRAY,
712
+ STRING,
713
+ );
673
714
  const thing2 = getTypeCase(
674
715
  nextType,
675
716
  stringThing,
676
717
  numberThing,
677
718
  booleanThing,
719
+ objectThingJson ? jsonParse(objectThingJson) : {},
720
+ arrayThingJson ? jsonParse(arrayThingJson) : [],
678
721
  );
679
722
  setThingType(nextType);
680
723
  setCurrentThing(thing2);
@@ -686,6 +729,8 @@ const EditableThing = ({
686
729
  stringThing,
687
730
  numberThing,
688
731
  booleanThing,
732
+ objectThingJson,
733
+ arrayThingJson,
689
734
  thingType,
690
735
  ]);
691
736
  const widget = getTypeCase(
@@ -737,6 +782,46 @@ const EditableThing = ({
737
782
  },
738
783
  thingType,
739
784
  ),
785
+ /* @__PURE__ */ jsx(
786
+ 'textarea',
787
+ {
788
+ value: objectThingJson,
789
+ onChange: useCallback(
790
+ (event) => {
791
+ const str = event[CURRENT_TARGET][_VALUE];
792
+ setObjectThingJson(str);
793
+ try {
794
+ const parsed = jsonParse(str);
795
+ if (isObject(parsed)) {
796
+ onThingChange(parsed);
797
+ }
798
+ } catch {}
799
+ },
800
+ [onThingChange],
801
+ ),
802
+ },
803
+ thingType,
804
+ ),
805
+ /* @__PURE__ */ jsx(
806
+ 'textarea',
807
+ {
808
+ value: arrayThingJson,
809
+ onChange: useCallback(
810
+ (event) => {
811
+ const str = event[CURRENT_TARGET][_VALUE];
812
+ setArrayThingJson(str);
813
+ try {
814
+ const parsed = jsonParse(str);
815
+ if (isArray(parsed)) {
816
+ onThingChange(parsed);
817
+ }
818
+ } catch {}
819
+ },
820
+ [onThingChange],
821
+ ),
822
+ },
823
+ thingType,
824
+ ),
740
825
  );
741
826
  return /* @__PURE__ */ jsxs('div', {
742
827
  className,