tinybase 4.0.0-beta.3 → 4.0.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 (282) hide show
  1. package/lib/cjs/persisters/persister-automerge.cjs +1 -0
  2. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-browser.cjs +1 -0
  4. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -0
  6. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-file.cjs +1 -0
  8. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-remote.cjs +1 -0
  10. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -0
  12. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -0
  14. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-yjs.cjs +1 -0
  16. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  17. package/lib/cjs/persisters.cjs +1 -1
  18. package/lib/cjs/persisters.cjs.gz +0 -0
  19. package/lib/cjs/queries.cjs +1 -1
  20. package/lib/cjs/queries.cjs.gz +0 -0
  21. package/lib/cjs/store.cjs +1 -1
  22. package/lib/cjs/store.cjs.gz +0 -0
  23. package/lib/cjs/tinybase.cjs +1 -1
  24. package/lib/cjs/tinybase.cjs.gz +0 -0
  25. package/lib/cjs/tools.cjs +1 -1
  26. package/lib/cjs/tools.cjs.gz +0 -0
  27. package/lib/cjs/ui-react.cjs +1 -1
  28. package/lib/cjs/ui-react.cjs.gz +0 -0
  29. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -0
  30. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  31. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -0
  32. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  33. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -0
  34. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  35. package/lib/cjs-es6/persisters/persister-file.cjs +1 -0
  36. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  37. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -0
  38. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  39. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -0
  40. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  41. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -0
  42. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  43. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -0
  44. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  45. package/lib/cjs-es6/persisters.cjs +1 -1
  46. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  47. package/lib/cjs-es6/queries.cjs +1 -1
  48. package/lib/cjs-es6/queries.cjs.gz +0 -0
  49. package/lib/cjs-es6/store.cjs +1 -1
  50. package/lib/cjs-es6/store.cjs.gz +0 -0
  51. package/lib/cjs-es6/tinybase.cjs +1 -1
  52. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  53. package/lib/cjs-es6/tools.cjs +1 -1
  54. package/lib/cjs-es6/tools.cjs.gz +0 -0
  55. package/lib/cjs-es6/ui-react.cjs +1 -1
  56. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  57. package/lib/debug/{persister-automerge.js → persisters/persister-automerge.js} +57 -30
  58. package/lib/debug/{persister-browser.js → persisters/persister-browser.js} +48 -19
  59. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +665 -0
  60. package/lib/debug/{persister-file.js → persisters/persister-file.js} +50 -24
  61. package/lib/debug/{persister-remote.js → persisters/persister-remote.js} +47 -18
  62. package/lib/debug/persisters/persister-sqlite-wasm.js +673 -0
  63. package/lib/debug/persisters/persister-sqlite3.js +676 -0
  64. package/lib/debug/{persister-yjs.js → persisters/persister-yjs.js} +48 -19
  65. package/lib/debug/persisters.js +46 -17
  66. package/lib/debug/queries.js +1 -1
  67. package/lib/debug/store.js +104 -40
  68. package/lib/debug/tinybase.js +148 -57
  69. package/lib/debug/tools.js +129 -27
  70. package/lib/debug/ui-react.js +24 -0
  71. package/lib/es6/persisters/persister-automerge.js +1 -0
  72. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  73. package/lib/es6/persisters/persister-browser.js +1 -0
  74. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  75. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -0
  76. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  77. package/lib/es6/persisters/persister-file.js +1 -0
  78. package/lib/es6/persisters/persister-file.js.gz +0 -0
  79. package/lib/es6/persisters/persister-remote.js +1 -0
  80. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  81. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -0
  82. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  83. package/lib/es6/persisters/persister-sqlite3.js +1 -0
  84. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  85. package/lib/es6/persisters/persister-yjs.js +1 -0
  86. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  87. package/lib/es6/persisters.js +1 -1
  88. package/lib/es6/persisters.js.gz +0 -0
  89. package/lib/es6/queries.js +1 -1
  90. package/lib/es6/queries.js.gz +0 -0
  91. package/lib/es6/store.js +1 -1
  92. package/lib/es6/store.js.gz +0 -0
  93. package/lib/es6/tinybase.js +1 -1
  94. package/lib/es6/tinybase.js.gz +0 -0
  95. package/lib/es6/tools.js +1 -1
  96. package/lib/es6/tools.js.gz +0 -0
  97. package/lib/es6/ui-react.js +1 -1
  98. package/lib/es6/ui-react.js.gz +0 -0
  99. package/lib/persisters/persister-automerge.js +1 -0
  100. package/lib/persisters/persister-automerge.js.gz +0 -0
  101. package/lib/persisters/persister-browser.js +1 -0
  102. package/lib/persisters/persister-browser.js.gz +0 -0
  103. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -0
  104. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  105. package/lib/persisters/persister-file.js +1 -0
  106. package/lib/persisters/persister-file.js.gz +0 -0
  107. package/lib/persisters/persister-remote.js +1 -0
  108. package/lib/persisters/persister-remote.js.gz +0 -0
  109. package/lib/persisters/persister-sqlite-wasm.js +1 -0
  110. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  111. package/lib/persisters/persister-sqlite3.js +1 -0
  112. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  113. package/lib/persisters/persister-yjs.js +1 -0
  114. package/lib/persisters/persister-yjs.js.gz +0 -0
  115. package/lib/persisters.js +1 -1
  116. package/lib/persisters.js.gz +0 -0
  117. package/lib/queries.js +1 -1
  118. package/lib/queries.js.gz +0 -0
  119. package/lib/store.js +1 -1
  120. package/lib/store.js.gz +0 -0
  121. package/lib/tinybase.js +1 -1
  122. package/lib/tinybase.js.gz +0 -0
  123. package/lib/tools.js +1 -1
  124. package/lib/tools.js.gz +0 -0
  125. package/lib/types/checkpoints.d.ts +0 -27
  126. package/lib/types/common.d.ts +0 -9
  127. package/lib/types/indexes.d.ts +0 -26
  128. package/lib/types/metrics.d.ts +0 -23
  129. package/lib/types/{persister-automerge.d.ts → persisters/persister-automerge.d.ts} +4 -6
  130. package/lib/types/{persister-browser.d.ts → persisters/persister-browser.d.ts} +2 -5
  131. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +95 -0
  132. package/lib/types/{persister-file.d.ts → persisters/persister-file.d.ts} +3 -5
  133. package/lib/types/{persister-remote.d.ts → persisters/persister-remote.d.ts} +2 -4
  134. package/lib/types/persisters/persister-sqlite-wasm.d.ts +102 -0
  135. package/lib/types/persisters/persister-sqlite3.d.ts +109 -0
  136. package/lib/types/{persister-yjs.d.ts → persisters/persister-yjs.d.ts} +4 -6
  137. package/lib/types/persisters.d.ts +517 -27
  138. package/lib/types/queries.d.ts +52 -127
  139. package/lib/types/relationships.d.ts +0 -26
  140. package/lib/types/store.d.ts +397 -193
  141. package/lib/types/tinybase.d.ts +0 -1
  142. package/lib/types/tools.d.ts +15 -28
  143. package/lib/types/ui-react.d.ts +196 -181
  144. package/lib/types/with-schemas/checkpoints.d.ts +5 -32
  145. package/lib/types/with-schemas/common.d.ts +0 -9
  146. package/lib/types/with-schemas/indexes.d.ts +9 -35
  147. package/lib/types/with-schemas/metrics.d.ts +9 -32
  148. package/lib/types/with-schemas/{persister-automerge.d.ts → persisters/persister-automerge.d.ts} +4 -6
  149. package/lib/types/with-schemas/{persister-browser.d.ts → persisters/persister-browser.d.ts} +2 -5
  150. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +105 -0
  151. package/lib/types/with-schemas/{persister-file.d.ts → persisters/persister-file.d.ts} +3 -5
  152. package/lib/types/with-schemas/{persister-remote.d.ts → persisters/persister-remote.d.ts} +2 -4
  153. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +113 -0
  154. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +119 -0
  155. package/lib/types/with-schemas/{persister-yjs.d.ts → persisters/persister-yjs.d.ts} +4 -6
  156. package/lib/types/with-schemas/persisters.d.ts +534 -29
  157. package/lib/types/with-schemas/queries.d.ts +61 -224
  158. package/lib/types/with-schemas/relationships.d.ts +9 -35
  159. package/lib/types/with-schemas/store.d.ts +544 -236
  160. package/lib/types/with-schemas/tinybase.d.ts +0 -1
  161. package/lib/types/with-schemas/tools.d.ts +19 -32
  162. package/lib/types/with-schemas/ui-react.d.ts +221 -186
  163. package/lib/ui-react.js +1 -1
  164. package/lib/ui-react.js.gz +0 -0
  165. package/lib/umd/persisters/persister-automerge.js +1 -0
  166. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  167. package/lib/umd/persisters/persister-browser.js +1 -0
  168. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  169. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -0
  170. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  171. package/lib/umd/persisters/persister-file.js +1 -0
  172. package/lib/umd/persisters/persister-file.js.gz +0 -0
  173. package/lib/umd/persisters/persister-remote.js +1 -0
  174. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  175. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -0
  176. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  177. package/lib/umd/persisters/persister-sqlite3.js +1 -0
  178. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  179. package/lib/umd/persisters/persister-yjs.js +1 -0
  180. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  181. package/lib/umd/persisters.js +1 -1
  182. package/lib/umd/persisters.js.gz +0 -0
  183. package/lib/umd/queries.js +1 -1
  184. package/lib/umd/queries.js.gz +0 -0
  185. package/lib/umd/store.js +1 -1
  186. package/lib/umd/store.js.gz +0 -0
  187. package/lib/umd/tinybase.js +1 -1
  188. package/lib/umd/tinybase.js.gz +0 -0
  189. package/lib/umd/tools.js +1 -1
  190. package/lib/umd/tools.js.gz +0 -0
  191. package/lib/umd/ui-react.js +1 -1
  192. package/lib/umd/ui-react.js.gz +0 -0
  193. package/lib/umd-es6/persisters/persister-automerge.js +1 -0
  194. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  195. package/lib/umd-es6/persisters/persister-browser.js +1 -0
  196. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  197. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -0
  198. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  199. package/lib/umd-es6/persisters/persister-file.js +1 -0
  200. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  201. package/lib/umd-es6/persisters/persister-remote.js +1 -0
  202. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  203. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -0
  204. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  205. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -0
  206. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  207. package/lib/umd-es6/persisters/persister-yjs.js +1 -0
  208. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  209. package/lib/umd-es6/persisters.js +1 -1
  210. package/lib/umd-es6/persisters.js.gz +0 -0
  211. package/lib/umd-es6/queries.js +1 -1
  212. package/lib/umd-es6/queries.js.gz +0 -0
  213. package/lib/umd-es6/store.js +1 -1
  214. package/lib/umd-es6/store.js.gz +0 -0
  215. package/lib/umd-es6/tinybase.js +1 -1
  216. package/lib/umd-es6/tinybase.js.gz +0 -0
  217. package/lib/umd-es6/tools.js +1 -1
  218. package/lib/umd-es6/tools.js.gz +0 -0
  219. package/lib/umd-es6/ui-react.js +1 -1
  220. package/lib/umd-es6/ui-react.js.gz +0 -0
  221. package/package.json +39 -22
  222. package/readme.md +3 -3
  223. package/lib/cjs/persister-automerge.cjs +0 -1
  224. package/lib/cjs/persister-automerge.cjs.gz +0 -0
  225. package/lib/cjs/persister-browser.cjs +0 -1
  226. package/lib/cjs/persister-browser.cjs.gz +0 -0
  227. package/lib/cjs/persister-file.cjs +0 -1
  228. package/lib/cjs/persister-file.cjs.gz +0 -0
  229. package/lib/cjs/persister-remote.cjs +0 -1
  230. package/lib/cjs/persister-remote.cjs.gz +0 -0
  231. package/lib/cjs/persister-yjs.cjs +0 -1
  232. package/lib/cjs/persister-yjs.cjs.gz +0 -0
  233. package/lib/cjs-es6/persister-automerge.cjs +0 -1
  234. package/lib/cjs-es6/persister-automerge.cjs.gz +0 -0
  235. package/lib/cjs-es6/persister-browser.cjs +0 -1
  236. package/lib/cjs-es6/persister-browser.cjs.gz +0 -0
  237. package/lib/cjs-es6/persister-file.cjs +0 -1
  238. package/lib/cjs-es6/persister-file.cjs.gz +0 -0
  239. package/lib/cjs-es6/persister-remote.cjs +0 -1
  240. package/lib/cjs-es6/persister-remote.cjs.gz +0 -0
  241. package/lib/cjs-es6/persister-yjs.cjs +0 -1
  242. package/lib/cjs-es6/persister-yjs.cjs.gz +0 -0
  243. package/lib/es6/persister-automerge.js +0 -1
  244. package/lib/es6/persister-automerge.js.gz +0 -0
  245. package/lib/es6/persister-browser.js +0 -1
  246. package/lib/es6/persister-browser.js.gz +0 -0
  247. package/lib/es6/persister-file.js +0 -1
  248. package/lib/es6/persister-file.js.gz +0 -0
  249. package/lib/es6/persister-remote.js +0 -1
  250. package/lib/es6/persister-remote.js.gz +0 -0
  251. package/lib/es6/persister-yjs.js +0 -1
  252. package/lib/es6/persister-yjs.js.gz +0 -0
  253. package/lib/persister-automerge.js +0 -1
  254. package/lib/persister-automerge.js.gz +0 -0
  255. package/lib/persister-browser.js +0 -1
  256. package/lib/persister-browser.js.gz +0 -0
  257. package/lib/persister-file.js +0 -1
  258. package/lib/persister-file.js.gz +0 -0
  259. package/lib/persister-remote.js +0 -1
  260. package/lib/persister-remote.js.gz +0 -0
  261. package/lib/persister-yjs.js +0 -1
  262. package/lib/persister-yjs.js.gz +0 -0
  263. package/lib/umd/persister-automerge.js +0 -1
  264. package/lib/umd/persister-automerge.js.gz +0 -0
  265. package/lib/umd/persister-browser.js +0 -1
  266. package/lib/umd/persister-browser.js.gz +0 -0
  267. package/lib/umd/persister-file.js +0 -1
  268. package/lib/umd/persister-file.js.gz +0 -0
  269. package/lib/umd/persister-remote.js +0 -1
  270. package/lib/umd/persister-remote.js.gz +0 -0
  271. package/lib/umd/persister-yjs.js +0 -1
  272. package/lib/umd/persister-yjs.js.gz +0 -0
  273. package/lib/umd-es6/persister-automerge.js +0 -1
  274. package/lib/umd-es6/persister-automerge.js.gz +0 -0
  275. package/lib/umd-es6/persister-browser.js +0 -1
  276. package/lib/umd-es6/persister-browser.js.gz +0 -0
  277. package/lib/umd-es6/persister-file.js +0 -1
  278. package/lib/umd-es6/persister-file.js.gz +0 -0
  279. package/lib/umd-es6/persister-remote.js +0 -1
  280. package/lib/umd-es6/persister-remote.js.gz +0 -0
  281. package/lib/umd-es6/persister-yjs.js +0 -1
  282. package/lib/umd-es6/persister-yjs.js.gz +0 -0
@@ -0,0 +1,102 @@
1
+ /**
2
+ * The persister-sqlite-wasm module of the TinyBase project lets you save and
3
+ * load Store data to and from a local SQLite database (in an appropriate
4
+ * environment).
5
+ * @see Persisting Data guide
6
+ * @packageDocumentation
7
+ * @module persister-sqlite-wasm
8
+ */
9
+
10
+ import {DatabasePersisterConfig, Persister} from '../persisters';
11
+ import {Store} from '../store';
12
+
13
+ /**
14
+ * The createSqliteWasmPersister function creates a Persister object that can
15
+ * persist the Store to a local SQLite database (in an appropriate environment).
16
+ *
17
+ * As well as providing a reference to the Store to persist, you must provide
18
+ * `sqlite3` and `db` parameters which identify the WASM module and database
19
+ * instance respectively.
20
+ *
21
+ * A database Persister uses one of two modes: either a JSON serialization of
22
+ * the whole Store stored in a single row of a table (the default), or a tabular
23
+ * mapping of Table Ids to database table names and vice-versa).
24
+ *
25
+ * The fourth argument is a DatabasePersisterConfig object that configures which
26
+ * of those modes to use, and settings for each. If the fourth argument is
27
+ * simply a string, it is used as the `storeTableName` property of the JSON
28
+ * serialization.
29
+ *
30
+ * See the documentation for the DpcJson and DpcTabular types for more
31
+ * information on how both of those modes can be configured.
32
+ * @param store The Store to persist.
33
+ * @param sqlite3 The WASM module that was returned from `sqlite3InitModule`.
34
+ * @param db The database instance that was returned from `new
35
+ * sqlite3.oo1.DB(...)`.
36
+ * @param configOrStoreTableName A DatabasePersisterConfig to configure the
37
+ * persistence mode (or a string to set the `storeTableName` property of the
38
+ * JSON serialization).
39
+ * @returns A reference to the new Persister object.
40
+ * @example
41
+ * This example creates a Persister object and persists the Store to a local
42
+ * SQLite database as a JSON serialization into the `my_tinybase` table. It
43
+ * makes a change to the database directly and then reloads it back into the
44
+ * Store.
45
+ *
46
+ * ```js
47
+ * const sqlite3 = await sqlite3InitModule();
48
+ * const db = new sqlite3.oo1.DB(':memory:', 'c');
49
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
50
+ * const persister = createSqliteWasmPersister(
51
+ * store,
52
+ * sqlite3,
53
+ * db,
54
+ * 'my_tinybase',
55
+ * );
56
+ *
57
+ * await persister.save();
58
+ * console.log(db.exec('SELECT * FROM my_tinybase;', {rowMode: 'object'}));
59
+ * // -> [{_id: '_', store: '[{"pets":{"fido":{"species":"dog"}}},{}]'}]
60
+ *
61
+ * db.exec(
62
+ * 'UPDATE my_tinybase SET store = ' +
63
+ * `'[{"pets":{"felix":{"species":"cat"}}},{}]' WHERE _id = '_';`,
64
+ * );
65
+ * await persister.load();
66
+ * console.log(store.getTables());
67
+ * // -> {pets: {felix: {species: 'cat'}}}
68
+ *
69
+ * persister.destroy();
70
+ * ```
71
+ * @example
72
+ * This example creates a Persister object and persists the Store to a local
73
+ * SQLite database with tabular mapping.
74
+ *
75
+ * ```js
76
+ * const sqlite3 = await sqlite3InitModule();
77
+ * const db = new sqlite3.oo1.DB(':memory:', 'c');
78
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
79
+ * const persister = createSqliteWasmPersister(store, sqlite3, db, {
80
+ * mode: 'tabular',
81
+ * tables: {load: {pets: 'pets'}, save: {pets: 'pets'}},
82
+ * });
83
+ *
84
+ * await persister.save();
85
+ * console.log(db.exec('SELECT * FROM pets;', {rowMode: 'object'}));
86
+ * // -> [{_id: 'fido', species: 'dog'}]
87
+ *
88
+ * db.exec(`INSERT INTO pets (_id, species) VALUES ('felix', 'cat')`);
89
+ * await persister.load();
90
+ * console.log(store.getTables());
91
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
92
+ *
93
+ * persister.destroy();
94
+ * ```
95
+ * @category Creation
96
+ */
97
+ export function createSqliteWasmPersister(
98
+ store: Store,
99
+ sqlite3: any,
100
+ db: any,
101
+ configOrStoreTableName?: DatabasePersisterConfig | string,
102
+ ): Persister;
@@ -0,0 +1,109 @@
1
+ /**
2
+ * The persister-sqlite3 module of the TinyBase project lets you save and load
3
+ * Store data to and from a local SQLite database (in an appropriate
4
+ * environment).
5
+ * @see Persisting Data guide
6
+ * @packageDocumentation
7
+ * @module persister-sqlite3
8
+ */
9
+
10
+ import {DatabasePersisterConfig, Persister} from '../persisters';
11
+ import {Database} from 'sqlite3';
12
+ import {Store} from '../store';
13
+
14
+ /**
15
+ * The createSqlite3Persister function creates a Persister object that can
16
+ * persist the Store to a local SQLite database (in an appropriate environment).
17
+ *
18
+ * As well as providing a reference to the Store to persist, you must provide a
19
+ * `db` parameter which identifies the database instance.
20
+ *
21
+ * A database Persister uses one of two modes: either a JSON serialization of
22
+ * the whole Store stored in a single row of a table (the default), or a tabular
23
+ * mapping of Table Ids to database table names and vice-versa).
24
+ *
25
+ * The third argument is a DatabasePersisterConfig object that configures which
26
+ * of those modes to use, and settings for each. If the third argument is simply
27
+ * a string, it is used as the `storeTableName` property of the JSON
28
+ * serialization.
29
+ *
30
+ * See the documentation for the DpcJson and DpcTabular types for more
31
+ * information on how both of those modes can be configured.
32
+ * @param store The Store to persist.
33
+ * @param db The database instance that was returned from `new
34
+ * sqlite3.Database(...)`.
35
+ * @param configOrStoreTableName A DatabasePersisterConfig to configure the
36
+ * persistence mode (or a string to set the `storeTableName` property of the
37
+ * JSON serialization).
38
+ * @returns A reference to the new Persister object.
39
+ * @example
40
+ * This example creates a Persister object and persists the Store to a local
41
+ * SQLite database as a JSON serialization into the `my_tinybase` table. It
42
+ * makes a change to the database directly and then reloads it back into the
43
+ * Store.
44
+ *
45
+ * ```js
46
+ * const db = new sqlite3.Database(':memory:');
47
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
48
+ * const persister = createSqlite3Persister(store, db, 'my_tinybase');
49
+ *
50
+ * await persister.save();
51
+ * console.log(
52
+ * await new Promise((resolve) =>
53
+ * db.all('SELECT * FROM my_tinybase;', (_, rows) => resolve(rows)),
54
+ * ),
55
+ * );
56
+ * // -> [{_id: '_', store: '[{"pets":{"fido":{"species":"dog"}}},{}]'}]
57
+ *
58
+ * await new Promise((resolve) =>
59
+ * db.all(
60
+ * 'UPDATE my_tinybase SET store = ' +
61
+ * `'[{"pets":{"felix":{"species":"cat"}}},{}]' WHERE _id = '_';`,
62
+ * resolve,
63
+ * ),
64
+ * );
65
+ * await persister.load();
66
+ * console.log(store.getTables());
67
+ * // -> {pets: {felix: {species: 'cat'}}}
68
+ *
69
+ * persister.destroy();
70
+ * ```
71
+ * @example
72
+ * This example creates a Persister object and persists the Store to a local
73
+ * SQLite database with tabular mapping.
74
+ *
75
+ * ```js
76
+ * const db = new sqlite3.Database(':memory:');
77
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
78
+ * const persister = createSqlite3Persister(store, db, {
79
+ * mode: 'tabular',
80
+ * tables: {load: {pets: 'pets'}, save: {pets: 'pets'}},
81
+ * });
82
+ *
83
+ * await persister.save();
84
+ * console.log(
85
+ * await new Promise((resolve) =>
86
+ * db.all('SELECT * FROM pets;', (_, rows) => resolve(rows)),
87
+ * ),
88
+ * );
89
+ * // -> [{_id: 'fido', species: 'dog'}]
90
+ *
91
+ * await new Promise((resolve) =>
92
+ * db.all(
93
+ * `INSERT INTO pets (_id, species) VALUES ('felix', 'cat')`,
94
+ * resolve,
95
+ * ),
96
+ * );
97
+ * await persister.load();
98
+ * console.log(store.getTables());
99
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
100
+ *
101
+ * persister.destroy();
102
+ * ```
103
+ * @category Creation
104
+ */
105
+ export function createSqlite3Persister(
106
+ store: Store,
107
+ db: Database,
108
+ configOrStoreTableName?: DatabasePersisterConfig | string,
109
+ ): Persister;
@@ -5,15 +5,14 @@
5
5
  * A single entry point, the createYjsPersister function, is provided, which
6
6
  * returns a new Persister object that can bind a Store to a provided Yjs
7
7
  * document.
8
- *
9
8
  * @see Synchronizing Data guide
10
9
  * @packageDocumentation
11
10
  * @module persister-yjs
12
- * @since v4.0
11
+ * @since v4.0.0
13
12
  */
14
13
 
15
- import {Persister} from './persisters.d';
16
- import {Store} from './store.d';
14
+ import {Persister} from '../persisters.d';
15
+ import {Store} from '../store.d';
17
16
  import {Doc as YDoc} from 'yjs';
18
17
 
19
18
  /**
@@ -22,7 +21,6 @@ import {Doc as YDoc} from 'yjs';
22
21
  *
23
22
  * As well as providing a reference to the Store to persist, you must provide
24
23
  * the Yjs document to persist it to.
25
- *
26
24
  * @param store The Store to persist.
27
25
  * @param yDoc The Yjs document to persist the Store to.
28
26
  * @param yMapName The name of the Y.Map used inside the Yjs document to sync
@@ -98,7 +96,7 @@ import {Doc as YDoc} from 'yjs';
98
96
  * persister2.destroy();
99
97
  * ```
100
98
  * @category Creation
101
- * @since v4.0
99
+ * @since v4.0.0
102
100
  */
103
101
  export function createYjsPersister(
104
102
  store: Store,