tinybase 4.1.0-beta.1 → 4.1.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 (219) hide show
  1. package/bin/cli.js +1 -1
  2. package/lib/checkpoints.js +1 -1
  3. package/lib/checkpoints.js.gz +0 -0
  4. package/lib/cjs/checkpoints.cjs +1 -1
  5. package/lib/cjs/checkpoints.cjs.gz +0 -0
  6. package/lib/cjs/indexes.cjs +1 -1
  7. package/lib/cjs/indexes.cjs.gz +0 -0
  8. package/lib/cjs/metrics.cjs +1 -1
  9. package/lib/cjs/metrics.cjs.gz +0 -0
  10. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  11. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  12. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  13. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  14. package/lib/cjs/persisters/persister-file.cjs +1 -1
  15. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  16. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  17. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  18. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  19. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  20. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  21. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  22. package/lib/cjs/queries.cjs +1 -1
  23. package/lib/cjs/queries.cjs.gz +0 -0
  24. package/lib/cjs/relationships.cjs +1 -1
  25. package/lib/cjs/relationships.cjs.gz +0 -0
  26. package/lib/cjs/store.cjs +1 -1
  27. package/lib/cjs/store.cjs.gz +0 -0
  28. package/lib/cjs/tinybase.cjs +1 -1
  29. package/lib/cjs/tinybase.cjs.gz +0 -0
  30. package/lib/cjs/tools.cjs +1 -1
  31. package/lib/cjs/tools.cjs.gz +0 -0
  32. package/lib/cjs/ui-react-dom.cjs +1 -1
  33. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  34. package/lib/cjs/ui-react.cjs +1 -1
  35. package/lib/cjs/ui-react.cjs.gz +0 -0
  36. package/lib/cjs-es6/checkpoints.cjs +1 -1
  37. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  38. package/lib/cjs-es6/indexes.cjs +1 -1
  39. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  40. package/lib/cjs-es6/metrics.cjs +1 -1
  41. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  42. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  43. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  44. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  45. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  46. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  47. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  48. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  49. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  50. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  51. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  52. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  53. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  54. package/lib/cjs-es6/queries.cjs +1 -1
  55. package/lib/cjs-es6/queries.cjs.gz +0 -0
  56. package/lib/cjs-es6/relationships.cjs +1 -1
  57. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  58. package/lib/cjs-es6/store.cjs +1 -1
  59. package/lib/cjs-es6/store.cjs.gz +0 -0
  60. package/lib/cjs-es6/tinybase.cjs +1 -1
  61. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  62. package/lib/cjs-es6/tools.cjs +1 -1
  63. package/lib/cjs-es6/tools.cjs.gz +0 -0
  64. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  65. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  66. package/lib/cjs-es6/ui-react.cjs +1 -1
  67. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  68. package/lib/debug/checkpoints.js +6 -6
  69. package/lib/debug/indexes.js +7 -7
  70. package/lib/debug/metrics.js +12 -12
  71. package/lib/debug/persisters/persister-browser.js +10 -19
  72. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +6 -15
  73. package/lib/debug/persisters/persister-file.js +10 -19
  74. package/lib/debug/persisters/persister-remote.js +10 -19
  75. package/lib/debug/persisters/persister-sqlite-wasm.js +6 -15
  76. package/lib/debug/persisters/persister-sqlite3.js +6 -15
  77. package/lib/debug/persisters.js +4 -4
  78. package/lib/debug/queries.js +1 -0
  79. package/lib/debug/relationships.js +7 -7
  80. package/lib/debug/store.js +16 -24
  81. package/lib/debug/tinybase.js +21 -28
  82. package/lib/debug/tools.js +14 -13
  83. package/lib/debug/ui-react-dom.js +253 -33
  84. package/lib/debug/ui-react.js +26 -4
  85. package/lib/es6/checkpoints.js +1 -1
  86. package/lib/es6/checkpoints.js.gz +0 -0
  87. package/lib/es6/indexes.js +1 -1
  88. package/lib/es6/indexes.js.gz +0 -0
  89. package/lib/es6/metrics.js +1 -1
  90. package/lib/es6/metrics.js.gz +0 -0
  91. package/lib/es6/persisters/persister-browser.js +1 -1
  92. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  93. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  94. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  95. package/lib/es6/persisters/persister-file.js +1 -1
  96. package/lib/es6/persisters/persister-file.js.gz +0 -0
  97. package/lib/es6/persisters/persister-remote.js +1 -1
  98. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  99. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  100. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  101. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  102. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  103. package/lib/es6/queries.js +1 -1
  104. package/lib/es6/queries.js.gz +0 -0
  105. package/lib/es6/relationships.js +1 -1
  106. package/lib/es6/relationships.js.gz +0 -0
  107. package/lib/es6/store.js +1 -1
  108. package/lib/es6/store.js.gz +0 -0
  109. package/lib/es6/tinybase.js +1 -1
  110. package/lib/es6/tinybase.js.gz +0 -0
  111. package/lib/es6/tools.js +1 -1
  112. package/lib/es6/tools.js.gz +0 -0
  113. package/lib/es6/ui-react-dom.js +1 -1
  114. package/lib/es6/ui-react-dom.js.gz +0 -0
  115. package/lib/es6/ui-react.js +1 -1
  116. package/lib/es6/ui-react.js.gz +0 -0
  117. package/lib/indexes.js +1 -1
  118. package/lib/indexes.js.gz +0 -0
  119. package/lib/metrics.js +1 -1
  120. package/lib/metrics.js.gz +0 -0
  121. package/lib/persisters/persister-browser.js +1 -1
  122. package/lib/persisters/persister-browser.js.gz +0 -0
  123. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  124. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  125. package/lib/persisters/persister-file.js +1 -1
  126. package/lib/persisters/persister-file.js.gz +0 -0
  127. package/lib/persisters/persister-remote.js +1 -1
  128. package/lib/persisters/persister-remote.js.gz +0 -0
  129. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  130. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  131. package/lib/persisters/persister-sqlite3.js +1 -1
  132. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  133. package/lib/queries.js +1 -1
  134. package/lib/queries.js.gz +0 -0
  135. package/lib/relationships.js +1 -1
  136. package/lib/relationships.js.gz +0 -0
  137. package/lib/store.js +1 -1
  138. package/lib/store.js.gz +0 -0
  139. package/lib/tinybase.js +1 -1
  140. package/lib/tinybase.js.gz +0 -0
  141. package/lib/tools.js +1 -1
  142. package/lib/tools.js.gz +0 -0
  143. package/lib/types/queries.d.ts +167 -0
  144. package/lib/types/ui-react-dom.d.ts +568 -70
  145. package/lib/types/ui-react.d.ts +269 -58
  146. package/lib/types/with-schemas/internal/ui-react.d.ts +32 -22
  147. package/lib/types/with-schemas/queries.d.ts +185 -0
  148. package/lib/types/with-schemas/ui-react-dom.d.ts +647 -93
  149. package/lib/types/with-schemas/ui-react.d.ts +281 -50
  150. package/lib/ui-react-dom.js +1 -1
  151. package/lib/ui-react-dom.js.gz +0 -0
  152. package/lib/ui-react.js +1 -1
  153. package/lib/ui-react.js.gz +0 -0
  154. package/lib/umd/checkpoints.js +1 -1
  155. package/lib/umd/checkpoints.js.gz +0 -0
  156. package/lib/umd/indexes.js +1 -1
  157. package/lib/umd/indexes.js.gz +0 -0
  158. package/lib/umd/metrics.js +1 -1
  159. package/lib/umd/metrics.js.gz +0 -0
  160. package/lib/umd/persisters/persister-browser.js +1 -1
  161. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  162. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  163. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  164. package/lib/umd/persisters/persister-file.js +1 -1
  165. package/lib/umd/persisters/persister-file.js.gz +0 -0
  166. package/lib/umd/persisters/persister-remote.js +1 -1
  167. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  168. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  169. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  170. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  171. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  172. package/lib/umd/queries.js +1 -1
  173. package/lib/umd/queries.js.gz +0 -0
  174. package/lib/umd/relationships.js +1 -1
  175. package/lib/umd/relationships.js.gz +0 -0
  176. package/lib/umd/store.js +1 -1
  177. package/lib/umd/store.js.gz +0 -0
  178. package/lib/umd/tinybase.js +1 -1
  179. package/lib/umd/tinybase.js.gz +0 -0
  180. package/lib/umd/tools.js +1 -1
  181. package/lib/umd/tools.js.gz +0 -0
  182. package/lib/umd/ui-react-dom.js +1 -1
  183. package/lib/umd/ui-react-dom.js.gz +0 -0
  184. package/lib/umd/ui-react.js +1 -1
  185. package/lib/umd/ui-react.js.gz +0 -0
  186. package/lib/umd-es6/checkpoints.js +1 -1
  187. package/lib/umd-es6/checkpoints.js.gz +0 -0
  188. package/lib/umd-es6/indexes.js +1 -1
  189. package/lib/umd-es6/indexes.js.gz +0 -0
  190. package/lib/umd-es6/metrics.js +1 -1
  191. package/lib/umd-es6/metrics.js.gz +0 -0
  192. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  193. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  194. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  195. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  196. package/lib/umd-es6/persisters/persister-file.js +1 -1
  197. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  198. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  199. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  200. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  201. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  202. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  203. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  204. package/lib/umd-es6/queries.js +1 -1
  205. package/lib/umd-es6/queries.js.gz +0 -0
  206. package/lib/umd-es6/relationships.js +1 -1
  207. package/lib/umd-es6/relationships.js.gz +0 -0
  208. package/lib/umd-es6/store.js +1 -1
  209. package/lib/umd-es6/store.js.gz +0 -0
  210. package/lib/umd-es6/tinybase.js +1 -1
  211. package/lib/umd-es6/tinybase.js.gz +0 -0
  212. package/lib/umd-es6/tools.js +1 -1
  213. package/lib/umd-es6/tools.js.gz +0 -0
  214. package/lib/umd-es6/ui-react-dom.js +1 -1
  215. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  216. package/lib/umd-es6/ui-react.js +1 -1
  217. package/lib/umd-es6/ui-react.js.gz +0 -0
  218. package/package.json +17 -17
  219. package/readme.md +2 -2
@@ -264,6 +264,28 @@ export type ResultTableListener = (
264
264
  getCellChange: GetCellResultChange,
265
265
  ) => void;
266
266
 
267
+ /**
268
+ * The ResultTableCellIdsListener type describes a function that is used to
269
+ * listen to changes to the Cell Ids that appear anywhere in a query's
270
+ * ResultTable.
271
+ *
272
+ * A ResultTableCellIdsListener is provided when using the
273
+ * addResultTableCellIdsListener method. See that method for specific examples.
274
+ *
275
+ * When called, a ResultTableCellIdsListener is given a reference to the Queries
276
+ * object, and the Id of the ResultTable whose Cell Ids changed (which is the
277
+ * same as the query Id).
278
+ * @param queries A reference to the Queries object that changed.
279
+ * @param tableId The Id of the ResultTable that changed, which is also the
280
+ * query Id.
281
+ * @category Listener
282
+ * @since v4.1.0
283
+ */
284
+ export type ResultTableCellIdsListener = (
285
+ queries: Queries,
286
+ tableId: Id,
287
+ ) => void;
288
+
267
289
  /**
268
290
  * The ResultRowIdsListener type describes a function that is used to listen to
269
291
  * changes to the ResultRow Ids in a query's ResultTable.
@@ -1843,6 +1865,51 @@ export interface Queries {
1843
1865
  */
1844
1866
  getResultTable(queryId: Id): ResultTable;
1845
1867
 
1868
+ /**
1869
+ * The getResultTableCellIds method returns the Ids of every ResultCell used
1870
+ * across the ResultTable of the given query.
1871
+ *
1872
+ * This has the same behavior as a Store's getTableCellIds method. For
1873
+ * example, if the query Id is invalid, the method returns an empty array.
1874
+ * Similarly, it returns a copy of, rather than a reference to the list of
1875
+ * Ids, so changes made to the list object are not made to the query results
1876
+ * themselves.
1877
+ * @param queryId The Id of a query.
1878
+ * @returns An array of the Ids of every ResultCell used across the
1879
+ * ResultTable of the query.
1880
+ * @example
1881
+ * This example creates a Queries object, a single query definition, and then
1882
+ * calls this method on it (as well as a non-existent definition) to get the
1883
+ * ResultCell Ids.
1884
+ *
1885
+ * ```js
1886
+ * const store = createStore().setTable('pets', {
1887
+ * fido: {species: 'dog', color: 'brown'},
1888
+ * felix: {species: 'cat', color: 'black'},
1889
+ * cujo: {species: 'dog', color: 'black', legs: 4},
1890
+ * });
1891
+ *
1892
+ * const queries = createQueries(store).setQueryDefinition(
1893
+ * 'dogColors',
1894
+ * 'pets',
1895
+ * ({select, where}) => {
1896
+ * select('color');
1897
+ * select('legs');
1898
+ * where('species', 'dog');
1899
+ * },
1900
+ * );
1901
+ *
1902
+ * console.log(queries.getResultTableCellIds('dogColors'));
1903
+ * // -> ['color', 'legs']
1904
+ *
1905
+ * console.log(queries.getResultTableCellIds('catColors'));
1906
+ * // -> []
1907
+ * ```
1908
+ * @category Result
1909
+ * @since v4.1.0
1910
+ */
1911
+ getResultTableCellIds(queryId: Id): Ids;
1912
+
1846
1913
  /**
1847
1914
  * The getResultRowIds method returns the Ids of every ResultRow in the
1848
1915
  * ResultTable of the given query.
@@ -2416,6 +2483,106 @@ export interface Queries {
2416
2483
  */
2417
2484
  addResultTableListener(queryId: IdOrNull, listener: ResultTableListener): Id;
2418
2485
 
2486
+ /**
2487
+ * The addResultTableCellIdsListener method registers a listener function with
2488
+ * the Queries object that will be called whenever the Cell Ids that
2489
+ * appear anywhere in a ResultTable change.
2490
+ *
2491
+ * The provided listener is a ResultTableCellIdsListener function, and will be
2492
+ * called with a reference to the Queries object and the Id of the ResultTable
2493
+ * that changed (which is also the query Id).
2494
+ *
2495
+ * By default, such a listener is only called when a Cell Id is added
2496
+ * to, or removed from, the ResultTable. To listen to all changes in the
2497
+ * ResultTable, use the addResultTableListener method.
2498
+ *
2499
+ * You can either listen to a single ResultTable (by specifying a query Id as
2500
+ * the method's first parameter) or changes to any ResultTable (by providing a
2501
+ * `null` wildcard).
2502
+ * @param queryId The Id of the query to listen to, or `null` as a wildcard.
2503
+ * @param listener The function that will be called whenever the Cell
2504
+ * Ids that appear anywhere in the ResultTable change.
2505
+ * @returns A unique Id for the listener that can later be used to remove it.
2506
+ * @example
2507
+ * This example registers a listener that responds to any change to the
2508
+ * Cell Ids of a specific ResultTable.
2509
+ *
2510
+ * ```js
2511
+ * const store = createStore().setTable('pets', {
2512
+ * fido: {species: 'dog', color: 'brown'},
2513
+ * felix: {species: 'cat', color: 'black'},
2514
+ * cujo: {species: 'dog', color: 'black'},
2515
+ * });
2516
+ *
2517
+ * const queries = createQueries(store).setQueryDefinition(
2518
+ * 'dogColorsAndLegs',
2519
+ * 'pets',
2520
+ * ({select, where}) => {
2521
+ * select('color');
2522
+ * select('legs');
2523
+ * where('species', 'dog');
2524
+ * },
2525
+ * );
2526
+ *
2527
+ * const listenerId = queries.addResultTableCellIdsListener(
2528
+ * 'dogColorsAndLegs',
2529
+ * (queries, tableId) => {
2530
+ * console.log(`Cell Ids for dogColorsAndLegs result table changed`);
2531
+ * console.log(queries.getResultTableCellIds('dogColorsAndLegs'));
2532
+ * },
2533
+ * );
2534
+ *
2535
+ * store.setCell('pets', 'cujo', 'legs', 4);
2536
+ * // -> 'Cell Ids for dogColorsAndLegs result table changed'
2537
+ * // -> ['color', 'legs']
2538
+ *
2539
+ * store.delListener(listenerId);
2540
+ * ```
2541
+ * @example
2542
+ * This example registers a listener that responds to any change to the
2543
+ * ResultCell Ids of any ResultTable.
2544
+ *
2545
+ * ```js
2546
+ * const store = createStore().setTable('pets', {
2547
+ * fido: {species: 'dog', color: 'brown'},
2548
+ * felix: {species: 'cat', color: 'black', legs: 4},
2549
+ * cujo: {species: 'dog', color: 'black'},
2550
+ * });
2551
+ *
2552
+ * const queries = createQueries(store)
2553
+ * .setQueryDefinition('dogColorsAndLegs', 'pets', ({select, where}) => {
2554
+ * select('color');
2555
+ * select('legs');
2556
+ * where('species', 'dog');
2557
+ * })
2558
+ * .setQueryDefinition('catColorsAndLegs', 'pets', ({select, where}) => {
2559
+ * select('color');
2560
+ * select('legs');
2561
+ * where('species', 'cat');
2562
+ * });
2563
+ *
2564
+ * const listenerId = queries.addResultTableCellIdsListener(
2565
+ * null,
2566
+ * (queries, tableId) => {
2567
+ * console.log(`Cell Ids for ${tableId} result table changed`);
2568
+ * },
2569
+ * );
2570
+ *
2571
+ * store.setCell('pets', 'cujo', 'legs', 4);
2572
+ * // -> 'Cell Ids for dogColorsAndLegs result table changed'
2573
+ * store.delCell('pets', 'felix', 'legs');
2574
+ * // -> 'Cell Ids for catColorsAndLegs result table changed'
2575
+ *
2576
+ * store.delListener(listenerId);
2577
+ * ```
2578
+ * @category Listener
2579
+ * @since v2.0.0
2580
+ */
2581
+ addResultTableCellIdsListener(
2582
+ queryId: IdOrNull,
2583
+ listener: ResultTableCellIdsListener,
2584
+ ): Id;
2585
+
2419
2586
  /**
2420
2587
  * The addResultRowIdsListener method registers a listener function with the
2421
2588
  * Queries object that will be called whenever the ResultRow Ids in a