tinybase 6.1.0-beta.4 → 6.1.0-beta.5

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 (233) hide show
  1. package/@types/persisters/index.d.ts +82 -40
  2. package/@types/persisters/persister-automerge/index.d.ts +4 -4
  3. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +4 -4
  4. package/@types/persisters/persister-browser/index.d.ts +4 -4
  5. package/@types/persisters/persister-browser/with-schemas/index.d.ts +4 -4
  6. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +3 -3
  7. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +3 -3
  8. package/@types/persisters/persister-electric-sql/index.d.ts +3 -3
  9. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +3 -3
  10. package/@types/persisters/persister-expo-sqlite/index.d.ts +3 -3
  11. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +3 -3
  12. package/@types/persisters/persister-file/index.d.ts +2 -2
  13. package/@types/persisters/persister-file/with-schemas/index.d.ts +2 -2
  14. package/@types/persisters/persister-indexed-db/index.d.ts +2 -2
  15. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +2 -2
  16. package/@types/persisters/persister-libsql/index.d.ts +3 -3
  17. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +3 -3
  18. package/@types/persisters/persister-partykit-client/index.d.ts +2 -2
  19. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +2 -2
  20. package/@types/persisters/persister-pglite/index.d.ts +3 -3
  21. package/@types/persisters/persister-pglite/with-schemas/index.d.ts +3 -3
  22. package/@types/persisters/persister-postgres/index.d.ts +3 -3
  23. package/@types/persisters/persister-postgres/with-schemas/index.d.ts +3 -3
  24. package/@types/persisters/persister-powersync/index.d.ts +3 -3
  25. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +3 -3
  26. package/@types/persisters/persister-remote/index.d.ts +2 -2
  27. package/@types/persisters/persister-remote/with-schemas/index.d.ts +2 -2
  28. package/@types/persisters/persister-sqlite-bun/index.d.ts +3 -3
  29. package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +3 -3
  30. package/@types/persisters/persister-sqlite-wasm/index.d.ts +3 -3
  31. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +3 -3
  32. package/@types/persisters/persister-sqlite3/index.d.ts +3 -3
  33. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +3 -3
  34. package/@types/persisters/persister-yjs/index.d.ts +4 -4
  35. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +4 -4
  36. package/@types/persisters/with-schemas/index.d.ts +86 -42
  37. package/@types/synchronizers/index.d.ts +18 -16
  38. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +3 -3
  39. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +3 -3
  40. package/@types/synchronizers/synchronizer-local/index.d.ts +2 -2
  41. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +2 -2
  42. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +5 -5
  43. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +5 -5
  44. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +37 -37
  45. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +37 -37
  46. package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +7 -7
  47. package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +7 -7
  48. package/@types/synchronizers/with-schemas/index.d.ts +18 -16
  49. package/@types/ui-react/index.d.ts +2 -2
  50. package/@types/ui-react/with-schemas/index.d.ts +2 -2
  51. package/index.js +23 -17
  52. package/mergeable-store/index.js +23 -17
  53. package/mergeable-store/with-schemas/index.js +23 -17
  54. package/min/index.js +1 -1
  55. package/min/index.js.gz +0 -0
  56. package/min/mergeable-store/index.js +1 -1
  57. package/min/mergeable-store/index.js.gz +0 -0
  58. package/min/mergeable-store/with-schemas/index.js +1 -1
  59. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  60. package/min/persisters/index.js +1 -1
  61. package/min/persisters/index.js.gz +0 -0
  62. package/min/persisters/persister-automerge/index.js +1 -1
  63. package/min/persisters/persister-automerge/index.js.gz +0 -0
  64. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  65. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  66. package/min/persisters/persister-browser/index.js +1 -1
  67. package/min/persisters/persister-browser/index.js.gz +0 -0
  68. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  69. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  70. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  71. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  72. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  73. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  74. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  75. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  76. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  77. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  78. package/min/persisters/persister-electric-sql/index.js +1 -1
  79. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  80. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  81. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  82. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  83. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  84. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  85. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  86. package/min/persisters/persister-file/index.js +1 -1
  87. package/min/persisters/persister-file/index.js.gz +0 -0
  88. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  89. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  90. package/min/persisters/persister-indexed-db/index.js +1 -1
  91. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  92. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  93. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  94. package/min/persisters/persister-libsql/index.js +1 -1
  95. package/min/persisters/persister-libsql/index.js.gz +0 -0
  96. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  97. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  98. package/min/persisters/persister-partykit-client/index.js +1 -1
  99. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  100. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  101. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  102. package/min/persisters/persister-pglite/index.js +1 -1
  103. package/min/persisters/persister-pglite/index.js.gz +0 -0
  104. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  105. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  106. package/min/persisters/persister-postgres/index.js +1 -1
  107. package/min/persisters/persister-postgres/index.js.gz +0 -0
  108. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  109. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  110. package/min/persisters/persister-powersync/index.js +1 -1
  111. package/min/persisters/persister-powersync/index.js.gz +0 -0
  112. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  113. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  114. package/min/persisters/persister-remote/index.js +1 -1
  115. package/min/persisters/persister-remote/index.js.gz +0 -0
  116. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  117. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  118. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  119. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  120. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  121. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  122. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  123. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  124. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  125. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  126. package/min/persisters/persister-sqlite3/index.js +1 -1
  127. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  128. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  129. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  130. package/min/persisters/persister-yjs/index.js +1 -1
  131. package/min/persisters/persister-yjs/index.js.gz +0 -0
  132. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  133. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  134. package/min/persisters/with-schemas/index.js +1 -1
  135. package/min/persisters/with-schemas/index.js.gz +0 -0
  136. package/min/store/index.js +1 -1
  137. package/min/store/index.js.gz +0 -0
  138. package/min/store/with-schemas/index.js +1 -1
  139. package/min/store/with-schemas/index.js.gz +0 -0
  140. package/min/synchronizers/index.js +1 -1
  141. package/min/synchronizers/index.js.gz +0 -0
  142. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  143. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  144. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  145. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  146. package/min/synchronizers/synchronizer-local/index.js +1 -1
  147. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  148. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  149. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  150. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  151. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  152. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  153. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  154. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  155. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  156. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  157. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  158. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  159. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  160. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  161. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  162. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  163. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  164. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  165. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  166. package/min/synchronizers/with-schemas/index.js +1 -1
  167. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  168. package/min/ui-react-inspector/index.js +1 -1
  169. package/min/ui-react-inspector/index.js.gz +0 -0
  170. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  171. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  172. package/min/with-schemas/index.js +1 -1
  173. package/min/with-schemas/index.js.gz +0 -0
  174. package/package.json +8 -4
  175. package/persisters/index.js +293 -161
  176. package/persisters/persister-automerge/index.js +55 -50
  177. package/persisters/persister-automerge/with-schemas/index.js +55 -50
  178. package/persisters/persister-browser/index.js +56 -55
  179. package/persisters/persister-browser/with-schemas/index.js +56 -55
  180. package/persisters/persister-cr-sqlite-wasm/index.js +181 -134
  181. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +181 -134
  182. package/persisters/persister-durable-object-storage/index.js +58 -53
  183. package/persisters/persister-durable-object-storage/with-schemas/index.js +58 -53
  184. package/persisters/persister-electric-sql/index.js +181 -134
  185. package/persisters/persister-electric-sql/with-schemas/index.js +181 -134
  186. package/persisters/persister-expo-sqlite/index.js +181 -134
  187. package/persisters/persister-expo-sqlite/with-schemas/index.js +181 -134
  188. package/persisters/persister-file/index.js +55 -50
  189. package/persisters/persister-file/with-schemas/index.js +55 -50
  190. package/persisters/persister-indexed-db/index.js +82 -78
  191. package/persisters/persister-indexed-db/with-schemas/index.js +82 -78
  192. package/persisters/persister-libsql/index.js +182 -135
  193. package/persisters/persister-libsql/with-schemas/index.js +182 -135
  194. package/persisters/persister-partykit-client/index.js +56 -51
  195. package/persisters/persister-partykit-client/with-schemas/index.js +56 -51
  196. package/persisters/persister-pglite/index.js +299 -173
  197. package/persisters/persister-pglite/with-schemas/index.js +299 -173
  198. package/persisters/persister-postgres/index.js +296 -171
  199. package/persisters/persister-postgres/with-schemas/index.js +296 -171
  200. package/persisters/persister-powersync/index.js +189 -138
  201. package/persisters/persister-powersync/with-schemas/index.js +189 -138
  202. package/persisters/persister-remote/index.js +55 -50
  203. package/persisters/persister-remote/with-schemas/index.js +55 -50
  204. package/persisters/persister-sqlite-bun/index.js +182 -135
  205. package/persisters/persister-sqlite-bun/with-schemas/index.js +182 -135
  206. package/persisters/persister-sqlite-wasm/index.js +182 -135
  207. package/persisters/persister-sqlite-wasm/with-schemas/index.js +182 -135
  208. package/persisters/persister-sqlite3/index.js +181 -134
  209. package/persisters/persister-sqlite3/with-schemas/index.js +181 -134
  210. package/persisters/persister-yjs/index.js +55 -50
  211. package/persisters/persister-yjs/with-schemas/index.js +55 -50
  212. package/persisters/with-schemas/index.js +293 -161
  213. package/readme.md +2 -2
  214. package/releases.md +29 -1
  215. package/store/index.js +20 -15
  216. package/store/with-schemas/index.js +20 -15
  217. package/synchronizers/index.js +68 -63
  218. package/synchronizers/synchronizer-broadcast-channel/index.js +68 -63
  219. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +68 -63
  220. package/synchronizers/synchronizer-local/index.js +68 -63
  221. package/synchronizers/synchronizer-local/with-schemas/index.js +68 -63
  222. package/synchronizers/synchronizer-ws-client/index.js +68 -63
  223. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +68 -63
  224. package/synchronizers/synchronizer-ws-server/index.js +79 -70
  225. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +79 -70
  226. package/synchronizers/synchronizer-ws-server-durable-object/index.js +69 -51
  227. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +69 -51
  228. package/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  229. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  230. package/synchronizers/with-schemas/index.js +68 -63
  231. package/ui-react-inspector/index.js +68 -60
  232. package/ui-react-inspector/with-schemas/index.js +68 -60
  233. package/with-schemas/index.js +23 -17
@@ -39,9 +39,9 @@
39
39
  * create a fully customized way to save and load Store data.
40
40
  *
41
41
  * Similarly, the createCustomSqlitePersister function and
42
- * createCustomPostgreSqlPersister function can be used to build Persister objects
43
- * against SQLite and PostgreSQL SDKs (or forks) that are not already included
44
- * with TinyBase.
42
+ * createCustomPostgreSqlPersister function can be used to build Persister
43
+ * objects against SQLite and PostgreSQL SDKs (or forks) that are not already
44
+ * included with TinyBase.
45
45
  * @see Persistence guides
46
46
  * @see Countries demo
47
47
  * @see Todo App demos
@@ -66,8 +66,8 @@ import type {
66
66
  import type {Id} from '../../with-schemas/index.d.ts';
67
67
 
68
68
  /**
69
- * The Status enum is used to indicate whether a Persister is idle, or loading or
70
- * saving data.
69
+ * The Status enum is used to indicate whether a Persister is idle, or loading
70
+ * or saving data.
71
71
  *
72
72
  * The enum is intended to be used to understand the status of the Persister in
73
73
  * conjunction with the getStatus and addStatusListener methods.
@@ -592,6 +592,23 @@ export type DpcTabular<Schema extends OptionalTablesSchema> = {
592
592
  autoLoadIntervalSeconds?: number;
593
593
  };
594
594
 
595
+ /**
596
+ * The DpcTabularCondition type describes the SQL WHERE clause that will be used
597
+ * to filter the rows that are loaded and saved to in the Store Table.
598
+ *
599
+ * This provides a way to enact pagination or selective loading of data from the
600
+ * database into TinyBase so that only a fraction of the full data in the
601
+ * database is loaded into memory.
602
+ *
603
+ * This clause must include at least one `$tableName` placeholder for the table
604
+ * name. For example, if you only wanted to load and save records that have an
605
+ * 'active' flag set, this string would be something like `$tableName.active =
606
+ * 1`.
607
+ * @category Configuration
608
+ * @since v6.1.0
609
+ */
610
+ export type DpcTabularCondition = `${string}$tableName${string}` | 'true';
611
+
595
612
  /**
596
613
  * The DpcTabularLoad type describes the configuration for loading Tables in a
597
614
  * database-oriented Persister that is operating in tabular mode.
@@ -604,6 +621,7 @@ export type DpcTabular<Schema extends OptionalTablesSchema> = {
604
621
  * |-|-|-|
605
622
  * |`tableId`|Id|The Id of the Store Table into which data from this database table should be loaded.|
606
623
  * |`rowIdColumnName?`|string|The optional name of the column in the database table that will be used as the Row Ids in the Store Table, defaulting to '_id'.|
624
+ * |`condition?`|string|The optional SQL WHERE clause that will be used to filter the rows that are loaded into the Store Table. When set it must include the `$tableName` placeholder for the table name, since v6.1.0.|
607
625
  *
608
626
  * As a shortcut, if you do not need to specify a custom `rowIdColumnName`, you
609
627
  * can simply provide the Id of the Store Table instead of the whole object.
@@ -690,6 +708,16 @@ export type DpcTabularLoad<Schema extends OptionalTablesSchema> = {
690
708
  * @since v4.0.0
691
709
  */
692
710
  rowIdColumnName?: string;
711
+ /**
712
+ * The optional SQL WHERE clause that will be used to filter the rows
713
+ * that are loaded into the Store Table. When set it must include the
714
+ * `$tableName` placeholder for the table name. See the 'Syncing with
715
+ * subsets of database tables' section of the Database Persistence guide
716
+ * for more details.
717
+ * @category Configuration
718
+ * @since v6.1.0
719
+ */
720
+ condition?: DpcTabularCondition;
693
721
  }
694
722
  | TableIdFromSchema<Schema>;
695
723
  };
@@ -708,6 +736,7 @@ export type DpcTabularLoad<Schema extends OptionalTablesSchema> = {
708
736
  * |`rowIdColumnName?`|string|The optional name of the column in the database table that will be used to save the Row Ids from the Store Table, defaulting to '_id'.|
709
737
  * |`deleteEmptyColumns?`|boolean|Whether columns in the database table will be removed if they are empty in the Store Table, defaulting to false.|
710
738
  * |`deleteEmptyTable?`|boolean|Whether tables in the database will be removed if the Store Table is empty, defaulting to false.|
739
+ * |`condition?`|string|The optional SQL WHERE clause that will be used to scope cleanup operations to the Store Table. When set it must include the `$tableName` placeholder for the table name, since v6.1.0. Defaults to `DpcTabularLoad.condition`.|
711
740
  *
712
741
  * As a shortcut, if you do not need to specify a custom `rowIdColumnName`, or
713
742
  * enable the `deleteEmptyColumns` or `deleteEmptyTable` settings, you can
@@ -821,6 +850,16 @@ export type DpcTabularSave<Schema extends OptionalTablesSchema> = {
821
850
  * @since v4.0.0
822
851
  */
823
852
  deleteEmptyTable?: boolean;
853
+ /**
854
+ * The optional SQL WHERE clause that will be used to scope cleanup
855
+ * operations to the Store Table. When set it must include the
856
+ * `$tableName` placeholder for the table name. Defaults to
857
+ * `DpcTabularLoad.condition`.See the 'Syncing with subsets of database
858
+ * tables' section of the Database Persistence guide for more details.
859
+ * @category Configuration
860
+ * @since v6.1.0
861
+ */
862
+ condition?: DpcTabularCondition;
824
863
  }
825
864
  | string;
826
865
  };
@@ -955,7 +994,7 @@ export type DpcTabularValues = {
955
994
  * console.log(store.getTables());
956
995
  * // -> {pets: {toto: {species: 'dog'}}}
957
996
  *
958
- * persister.destroy();
997
+ * await persister.destroy();
959
998
  * sessionStorage.clear();
960
999
  * ```
961
1000
  * @example
@@ -986,7 +1025,7 @@ export type DpcTabularValues = {
986
1025
  * console.log(store.getTables());
987
1026
  * // -> {pets: {toto: {species: 'dog'}}}
988
1027
  *
989
- * persister.destroy();
1028
+ * await persister.destroy();
990
1029
  * sessionStorage.clear();
991
1030
  * ```
992
1031
  * @category Persister
@@ -1129,7 +1168,7 @@ export interface Persister<
1129
1168
  * console.log(store.getTables());
1130
1169
  * // -> {pets: {toto: {species: 'dog'}}}
1131
1170
  *
1132
- * persister.destroy();
1171
+ * await persister.destroy();
1133
1172
  * sessionStorage.clear();
1134
1173
  * ```
1135
1174
  * @category Load
@@ -1144,8 +1183,8 @@ export interface Persister<
1144
1183
  * previously started with the startAutoLoad method.
1145
1184
  *
1146
1185
  * If the Persister is not currently set to automatically load, this method
1147
- * has no effect.
1148
- * @returns A reference to the Persister object.
1186
+ * has no effect. This method is asynchronous.
1187
+ * @returns A Promise containing a reference to the Persister object.
1149
1188
  * @example
1150
1189
  * This example creates an empty Store, and starts automatically loading data
1151
1190
  * into it from the browser's session storage. Once the automatic loading is
@@ -1166,7 +1205,7 @@ export interface Persister<
1166
1205
  * console.log(store.getTables());
1167
1206
  * // -> {pets: {toto: {species: 'dog'}}}
1168
1207
  *
1169
- * persister.stopAutoLoad();
1208
+ * await persister.stopAutoLoad();
1170
1209
  *
1171
1210
  * // In another browser tab:
1172
1211
  * sessionStorage.setItem(
@@ -1179,13 +1218,13 @@ export interface Persister<
1179
1218
  * // -> {pets: {toto: {species: 'dog'}}}
1180
1219
  * // Storage change has not been automatically loaded.
1181
1220
  *
1182
- * persister.destroy();
1221
+ * await persister.destroy();
1183
1222
  * sessionStorage.clear();
1184
1223
  * ```
1185
1224
  * @category Load
1186
1225
  * @since v1.0.0
1187
1226
  */
1188
- stopAutoLoad(): this;
1227
+ stopAutoLoad(): Promise<this>;
1189
1228
 
1190
1229
  /**
1191
1230
  * The isAutoLoading method lets you find out if the Persister is currently
@@ -1241,7 +1280,7 @@ export interface Persister<
1241
1280
  * console.log(sessionStorage.getItem('pets'));
1242
1281
  * // -> '[{"pets":{"fido":{"species":"dog"}}},{}]'
1243
1282
  *
1244
- * persister.destroy();
1283
+ * await persister.destroy();
1245
1284
  * sessionStorage.clear();
1246
1285
  * ```
1247
1286
  * @category Save
@@ -1295,8 +1334,8 @@ export interface Persister<
1295
1334
  * previously started with the startAutoSave method.
1296
1335
  *
1297
1336
  * If the Persister is not currently set to automatically save, this method
1298
- * has no effect.
1299
- * @returns A reference to the Persister object.
1337
+ * has no effect. This method is asynchronous.
1338
+ * @returns A Promise containing a reference to the Persister object.
1300
1339
  * @example
1301
1340
  * This example creates a Store with some data, and saves into the browser's
1302
1341
  * session storage. Subsequent changes to the Store are then automatically
@@ -1316,7 +1355,7 @@ export interface Persister<
1316
1355
  * console.log(sessionStorage.getItem('pets'));
1317
1356
  * // -> '[{"pets":{"toto":{"species":"dog"}}},{}]'
1318
1357
  *
1319
- * persister.stopAutoSave();
1358
+ * await persister.stopAutoSave();
1320
1359
  *
1321
1360
  * store.setTables({pets: {felix: {species: 'cat'}}});
1322
1361
  * // ...
@@ -1329,7 +1368,7 @@ export interface Persister<
1329
1368
  * @category Save
1330
1369
  * @since v1.0.0
1331
1370
  */
1332
- stopAutoSave(): this;
1371
+ stopAutoSave(): Promise<this>;
1333
1372
 
1334
1373
  /**
1335
1374
  * The isAutoSaving method lets you find out if the Persister is currently
@@ -1515,8 +1554,8 @@ export interface Persister<
1515
1554
  * async (getContent) => {
1516
1555
  * // setPersisted
1517
1556
  * await persister.schedule(
1518
- * async () => await checkRemoteSystemIsReady(),
1519
- * async () => await sendDataToRemoteSystem(getContent()),
1557
+ * () => checkRemoteSystemIsReady(),
1558
+ * () => sendDataToRemoteSystem(getContent()),
1520
1559
  * );
1521
1560
  * },
1522
1561
  * (listener) => setInterval(listener, 1000),
@@ -1568,8 +1607,8 @@ export interface Persister<
1568
1607
  * This guarantees that all of the listeners that the object registered with
1569
1608
  * the underlying Store and storage are removed and it can be correctly
1570
1609
  * garbage collected. It is equivalent to running the stopAutoLoad method and
1571
- * the stopAutoSave method in succession.
1572
- * @returns A reference to the Persister object.
1610
+ * the stopAutoSave method in succession. This method is asynchronous.
1611
+ * @returns A Promise containing a reference to the Persister object.
1573
1612
  * @example
1574
1613
  * This example creates a Store, associates a Persister object with it (that
1575
1614
  * registers a TablesListener with the underlying Store), and then destroys it
@@ -1586,7 +1625,7 @@ export interface Persister<
1586
1625
  * console.log(store.getListenerStats().transaction);
1587
1626
  * // -> 1
1588
1627
  *
1589
- * persister.destroy();
1628
+ * await persister.destroy();
1590
1629
  *
1591
1630
  * console.log(store.getListenerStats().transaction);
1592
1631
  * // -> 0
@@ -1594,7 +1633,7 @@ export interface Persister<
1594
1633
  * @category Lifecycle
1595
1634
  * @since v1.0.0
1596
1635
  */
1597
- destroy(): this;
1636
+ destroy(): Promise<this>;
1598
1637
 
1599
1638
  /**
1600
1639
  * The getStats method provides a set of statistics about the Persister, and
@@ -1634,7 +1673,7 @@ export interface Persister<
1634
1673
  * console.log(persister.getStats());
1635
1674
  * // -> {loads: 2, saves: 2}
1636
1675
  *
1637
- * persister.destroy();
1676
+ * await persister.destroy();
1638
1677
  * sessionStorage.clear();
1639
1678
  * ```
1640
1679
  * @category Development
@@ -1714,7 +1753,9 @@ export type DatabaseChangeListener = (tableName: string) => void;
1714
1753
  * addPersisterListener: (
1715
1754
  * listener: PersisterListener<Persist>,
1716
1755
  * ) => ListenerHandle | Promise<ListenerHandle>,
1717
- * delPersisterListener: (listenerHandle: ListenerHandle) => void,
1756
+ * delPersisterListener: (
1757
+ * listenerHandle: ListenerHandle,
1758
+ * ) => void | Promise<void>,
1718
1759
  * onIgnoredError?: (error: any) => void,
1719
1760
  * persist?: Persist,
1720
1761
  * ): Persister<Persist>;
@@ -1754,7 +1795,8 @@ export type DatabaseChangeListener = (tableName: string) => void;
1754
1795
  * called. This function can be asynchronous.
1755
1796
  * @param delPersisterListener A function that will unregister the listener from
1756
1797
  * the underlying changes to the persistence layer. It receives whatever was
1757
- * returned from your `addPersisterListener` implementation.
1798
+ * returned from your `addPersisterListener` implementation. This function can
1799
+ * be asynchronous.
1758
1800
  * @param onIgnoredError An optional handler for the errors that the Persister
1759
1801
  * would otherwise ignore when trying to save or load data. This is suitable for
1760
1802
  * debugging persistence issues in a development environment, since v4.0.4.
@@ -1801,7 +1843,7 @@ export type DatabaseChangeListener = (tableName: string) => void;
1801
1843
  * console.log(store.getTables());
1802
1844
  * // -> {pets: {fido: {species: 'dog', color: 'brown'}}}
1803
1845
  *
1804
- * persister.destroy();
1846
+ * await persister.destroy();
1805
1847
  * ```
1806
1848
  * @example
1807
1849
  * This example demonstrates a Persister creation function which returns a
@@ -1838,7 +1880,7 @@ export type DatabaseChangeListener = (tableName: string) => void;
1838
1880
  * await storePersister.save();
1839
1881
  * console.log(persistedJson);
1840
1882
  * // -> '[{"pets":{"fido":{"species":"dog"}}},{}]'
1841
- * storePersister.destroy();
1883
+ * await storePersister.destroy();
1842
1884
  *
1843
1885
  * const mergeableStore = createMergeableStore('mergeableStore1'); // !reset
1844
1886
  * mergeableStore.setTables({pets: {fido: {species: 'dog'}}});
@@ -1866,7 +1908,7 @@ export type DatabaseChangeListener = (tableName: string) => void;
1866
1908
  * ],
1867
1909
  * [{}, '', 0],
1868
1910
  * ];
1869
- * mergeableStorePersister.destroy();
1911
+ * await mergeableStorePersister.destroy();
1870
1912
  * ```
1871
1913
  * @category Creation
1872
1914
  * @since v1.0.0
@@ -1885,7 +1927,9 @@ export function createCustomPersister<
1885
1927
  addPersisterListener: (
1886
1928
  listener: PersisterListener<Schemas, Persist>,
1887
1929
  ) => ListenerHandle | Promise<ListenerHandle>,
1888
- delPersisterListener: (listenerHandle: ListenerHandle) => void,
1930
+ delPersisterListener: (
1931
+ listenerHandle: ListenerHandle,
1932
+ ) => void | Promise<void>,
1889
1933
  onIgnoredError?: (error: any) => void,
1890
1934
  persist?: Persist,
1891
1935
  ): Persister<Schemas, Persist>;
@@ -1970,8 +2014,8 @@ export function createCustomSqlitePersister<
1970
2014
  ): Persister<Schemas, Persist>;
1971
2015
 
1972
2016
  /**
1973
- * The createCustomSqlitePersister function creates a Persister object that you
1974
- * can configure to persist the Store to a PostgreSQL database.
2017
+ * The createCustomPostgreSqlPersister function creates a Persister object that
2018
+ * you can configure to persist the Store to a PostgreSQL database.
1975
2019
  *
1976
2020
  * This has schema-based typing. The following is a simplified representation:
1977
2021
  *
@@ -1987,7 +2031,7 @@ export function createCustomSqlitePersister<
1987
2031
  * channel: string,
1988
2032
  * listener: DatabaseChangeListener,
1989
2033
  * ) => Promise<ListenerHandle>,
1990
- * delChangeListener: (listenerHandle: ListenerHandle) => void,
2034
+ * delChangeListener: (listenerHandle: ListenerHandle) => void | Promise<void>,
1991
2035
  * onSqlCommand: ((sql: string, params?: any[]) => void) | undefined,
1992
2036
  * onIgnoredError: ((error: any) => void) | undefined,
1993
2037
  * destroy: () => void,
@@ -2002,18 +2046,18 @@ export function createCustomSqlitePersister<
2002
2046
  *
2003
2047
  * All of the TinyBase PostgreSQL-oriented Persister functions use this function
2004
2048
  * under the covers, and so you may wish to look at those implementations for
2005
- * ideas on how to build your own Persister type, and as functional
2006
- * examples. Examine the implementation of the createPostgresPersister function
2007
- * as a good starting point, for example.
2049
+ * ideas on how to build your own Persister type, and as functional examples.
2050
+ * Examine the implementation of the createPostgresPersister function as a good
2051
+ * starting point, for example.
2008
2052
  * @param store The Store to persist.
2009
2053
  * @param configOrStoreTableName A DatabasePersisterConfig object, or a string
2010
2054
  * that will be used as the name of the Store's table in the database.
2011
2055
  * @param executeCommand A function that will execute a command against the
2012
2056
  * database.
2013
- * @param addChangeListener A function that will register a listener for changes
2014
- * to the database.
2015
- * @param delChangeListener A function that will unregister the listener for
2016
- * changes to the database.
2057
+ * @param addChangeListener An asynchronous function that will register a
2058
+ * listener for changes to the database.
2059
+ * @param delChangeListener An asynchronous function that will unregister the
2060
+ * listener for changes to the database.
2017
2061
  * @param onSqlCommand A function that will be called for each SQL command
2018
2062
  * executed against the database.
2019
2063
  * @param onIgnoredError An optional handler for the errors that the Persister
@@ -2045,7 +2089,7 @@ export function createCustomPostgreSqlPersister<
2045
2089
  channel: string,
2046
2090
  listener: DatabaseChangeListener,
2047
2091
  ) => Promise<ListenerHandle>,
2048
- delChangeListener: (listenerHandle: ListenerHandle) => void,
2092
+ delChangeListener: (listenerHandle: ListenerHandle) => void | Promise<void>,
2049
2093
  onSqlCommand: ((sql: string, params?: any[]) => void) | undefined,
2050
2094
  onIgnoredError: ((error: any) => void) | undefined,
2051
2095
  destroy: () => void,
@@ -194,8 +194,8 @@ export type SynchronizerStats = {
194
194
  * console.log(store1.getTables());
195
195
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
196
196
  *
197
- * synchronizer1.destroy();
198
- * synchronizer2.destroy();
197
+ * await synchronizer1.destroy();
198
+ * await synchronizer2.destroy();
199
199
  * ```
200
200
  * @category Synchronizer
201
201
  * @since v5.0.0
@@ -243,8 +243,8 @@ export interface Synchronizer extends Persister<Persists.MergeableStoreOnly> {
243
243
  * console.log(store1.getTables());
244
244
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
245
245
  *
246
- * synchronizer1.destroy();
247
- * synchronizer2.destroy();
246
+ * await synchronizer1.destroy();
247
+ * await synchronizer2.destroy();
248
248
  * ```
249
249
  * @example
250
250
  * This example creates two empty MergeableStore objects, creates a
@@ -274,8 +274,8 @@ export interface Synchronizer extends Persister<Persists.MergeableStoreOnly> {
274
274
  * console.log(store2.getTables());
275
275
  * // -> {pets: {fido: {species: 'dog'}}}
276
276
  *
277
- * synchronizer1.destroy();
278
- * synchronizer2.destroy();
277
+ * await synchronizer1.destroy();
278
+ * await synchronizer2.destroy();
279
279
  * ```
280
280
  * @category Synchronization
281
281
  * @since v5.0.0
@@ -289,7 +289,9 @@ export interface Synchronizer extends Persister<Persists.MergeableStoreOnly> {
289
289
  * Persister framework, and so this startSync method is equivalent to stopping
290
290
  * both auto-loading (listening to sync messages from other active
291
291
  * Synchronizer instances) and auto-saving (sending sync messages to them).
292
- * @returns A reference to the Synchronizer object.
292
+ *
293
+ * This method is asynchronous.
294
+ * @returns A Promise containing a reference to the Synchronizer object.
293
295
  * @example
294
296
  * This example creates two empty MergeableStore objects, creates a
295
297
  * LocalSynchronizer for each, and starts - then stops - synchronizing them.
@@ -314,8 +316,8 @@ export interface Synchronizer extends Persister<Persists.MergeableStoreOnly> {
314
316
  * console.log(store2.getTables());
315
317
  * // -> {pets: {fido: {species: 'dog'}}}
316
318
  *
317
- * synchronizer1.stopSync();
318
- * synchronizer2.stopSync();
319
+ * await synchronizer1.stopSync();
320
+ * await synchronizer2.stopSync();
319
321
  *
320
322
  * store1.setCell('pets', 'fido', 'color', 'brown');
321
323
  * // ...
@@ -324,13 +326,13 @@ export interface Synchronizer extends Persister<Persists.MergeableStoreOnly> {
324
326
  * console.log(store2.getTables());
325
327
  * // -> {pets: {fido: {species: 'dog'}}}
326
328
  *
327
- * synchronizer1.destroy();
328
- * synchronizer2.destroy();
329
+ * await synchronizer1.destroy();
330
+ * await synchronizer2.destroy();
329
331
  * ```
330
332
  * @category Synchronization
331
333
  * @since v5.0.0
332
334
  */
333
- stopSync(): this;
335
+ stopSync(): Promise<this>;
334
336
  /**
335
337
  * The getSynchronizerStats method provides a set of statistics about the
336
338
  * Synchronizer, and is used for debugging purposes.
@@ -369,8 +371,8 @@ export interface Synchronizer extends Persister<Persists.MergeableStoreOnly> {
369
371
  * console.log(synchronizer2.getSynchronizerStats());
370
372
  * // -> {receives: 5, sends: 4}
371
373
  *
372
- * synchronizer1.destroy();
373
- * synchronizer2.destroy();
374
+ * await synchronizer1.destroy();
375
+ * await synchronizer2.destroy();
374
376
  * ```
375
377
  * @category Synchronization
376
378
  * @since v5.0.0
@@ -467,8 +469,8 @@ export interface Synchronizer extends Persister<Persists.MergeableStoreOnly> {
467
469
  * console.log(store2.getTables());
468
470
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
469
471
  *
470
- * synchronizer1.destroy();
471
- * synchronizer2.destroy();
472
+ * await synchronizer1.destroy();
473
+ * await synchronizer2.destroy();
472
474
  * ```
473
475
  * @category Creation
474
476
  * @since v5.0.0
@@ -42,7 +42,7 @@ export interface BroadcastChannelSynchronizer extends Synchronizer {
42
42
  * console.log(synchronizer.getChannelName());
43
43
  * // -> 'channelA'
44
44
  *
45
- * synchronizer.destroy();
45
+ * await synchronizer.destroy();
46
46
  * ```
47
47
  * @category Getter
48
48
  * @since v5.0.0
@@ -106,8 +106,8 @@ export interface BroadcastChannelSynchronizer extends Synchronizer {
106
106
  * console.log(store2.getTables());
107
107
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
108
108
  *
109
- * synchronizer1.destroy();
110
- * synchronizer2.destroy();
109
+ * await synchronizer1.destroy();
110
+ * await synchronizer2.destroy();
111
111
  * ```
112
112
  * @category Creation
113
113
  * @since v5.0.0
@@ -44,7 +44,7 @@ export interface BroadcastChannelSynchronizer<Schemas extends OptionalSchemas>
44
44
  * console.log(synchronizer.getChannelName());
45
45
  * // -> 'channelA'
46
46
  *
47
- * synchronizer.destroy();
47
+ * await synchronizer.destroy();
48
48
  * ```
49
49
  * @category Getter
50
50
  * @since v5.0.0
@@ -120,8 +120,8 @@ export interface BroadcastChannelSynchronizer<Schemas extends OptionalSchemas>
120
120
  * console.log(store2.getTables());
121
121
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
122
122
  *
123
- * synchronizer1.destroy();
124
- * synchronizer2.destroy();
123
+ * await synchronizer1.destroy();
124
+ * await synchronizer2.destroy();
125
125
  * ```
126
126
  * @category Creation
127
127
  * @since v5.0.0
@@ -81,8 +81,8 @@ export interface LocalSynchronizer extends Synchronizer {}
81
81
  * console.log(store2.getTables());
82
82
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
83
83
  *
84
- * synchronizer1.destroy();
85
- * synchronizer2.destroy();
84
+ * await synchronizer1.destroy();
85
+ * await synchronizer2.destroy();
86
86
  * ```
87
87
  * @category Creation
88
88
  * @since v5.0.0
@@ -100,8 +100,8 @@ export interface LocalSynchronizer<Schemas extends OptionalSchemas>
100
100
  * console.log(store2.getTables());
101
101
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
102
102
  *
103
- * synchronizer1.destroy();
104
- * synchronizer2.destroy();
103
+ * await synchronizer1.destroy();
104
+ * await synchronizer2.destroy();
105
105
  * ```
106
106
  * @category Creation
107
107
  * @since v5.0.0
@@ -63,8 +63,8 @@ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
63
63
  * console.log(synchronizer.getWebSocket() == webSocket);
64
64
  * // -> true
65
65
  *
66
- * synchronizer.destroy();
67
- * server.destroy();
66
+ * await synchronizer.destroy();
67
+ * await server.destroy();
68
68
  * ```
69
69
  * @category Getter
70
70
  * @since v5.0.0
@@ -143,9 +143,9 @@ export interface WsSynchronizer<WebSocketType extends WebSocketTypes>
143
143
  * console.log(store2.getTables());
144
144
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
145
145
  *
146
- * synchronizer1.destroy();
147
- * synchronizer2.destroy();
148
- * server.destroy();
146
+ * await synchronizer1.destroy();
147
+ * await synchronizer2.destroy();
148
+ * await server.destroy();
149
149
  * ```
150
150
  * @category Creation
151
151
  * @since v5.0.0
@@ -66,8 +66,8 @@ export interface WsSynchronizer<
66
66
  * console.log(synchronizer.getWebSocket() == webSocket);
67
67
  * // -> true
68
68
  *
69
- * synchronizer.destroy();
70
- * server.destroy();
69
+ * await synchronizer.destroy();
70
+ * await server.destroy();
71
71
  * ```
72
72
  * @category Getter
73
73
  * @since v5.0.0
@@ -159,9 +159,9 @@ export interface WsSynchronizer<
159
159
  * console.log(store2.getTables());
160
160
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
161
161
  *
162
- * synchronizer1.destroy();
163
- * synchronizer2.destroy();
164
- * server.destroy();
162
+ * await synchronizer1.destroy();
163
+ * await synchronizer2.destroy();
164
+ * await server.destroy();
165
165
  * ```
166
166
  * @category Creation
167
167
  * @since v5.0.0