tinybase 4.3.13 → 4.3.15

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 (206) hide show
  1. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  2. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  4. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  6. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  8. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-file.cjs +1 -1
  10. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  12. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  14. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  16. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  18. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  20. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  22. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  23. package/lib/cjs/persisters.cjs +1 -1
  24. package/lib/cjs/persisters.cjs.gz +0 -0
  25. package/lib/cjs/tinybase.cjs +1 -1
  26. package/lib/cjs/tinybase.cjs.gz +0 -0
  27. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  28. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  29. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  30. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  31. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  32. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  33. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  34. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  35. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  36. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  37. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  38. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  39. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  40. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  41. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  42. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  43. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  44. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  45. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  46. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  47. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  48. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  49. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  50. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  51. package/lib/cjs-es6/persisters.cjs +1 -1
  52. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  53. package/lib/cjs-es6/tinybase.cjs +1 -1
  54. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  55. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  56. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  57. package/lib/debug/persisters/persister-automerge.js +6 -0
  58. package/lib/debug/persisters/persister-browser.js +6 -0
  59. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +13 -6
  60. package/lib/debug/persisters/persister-expo-sqlite.js +13 -6
  61. package/lib/debug/persisters/persister-file.js +6 -0
  62. package/lib/debug/persisters/persister-indexed-db.js +6 -0
  63. package/lib/debug/persisters/persister-partykit-client.js +7 -1
  64. package/lib/debug/persisters/persister-remote.js +6 -0
  65. package/lib/debug/persisters/persister-sqlite-wasm.js +13 -6
  66. package/lib/debug/persisters/persister-sqlite3.js +13 -6
  67. package/lib/debug/persisters/persister-yjs.js +6 -0
  68. package/lib/debug/persisters.js +5 -0
  69. package/lib/debug/tinybase.js +5 -0
  70. package/lib/debug/ui-react-dom.js +6 -0
  71. package/lib/es6/persisters/persister-automerge.js +1 -1
  72. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  73. package/lib/es6/persisters/persister-browser.js +1 -1
  74. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  75. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  76. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  77. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  78. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  79. package/lib/es6/persisters/persister-file.js +1 -1
  80. package/lib/es6/persisters/persister-file.js.gz +0 -0
  81. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  82. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  83. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  84. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  85. package/lib/es6/persisters/persister-remote.js +1 -1
  86. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  87. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  88. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  89. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  90. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  91. package/lib/es6/persisters/persister-yjs.js +1 -1
  92. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  93. package/lib/es6/persisters.js +1 -1
  94. package/lib/es6/persisters.js.gz +0 -0
  95. package/lib/es6/tinybase.js +1 -1
  96. package/lib/es6/tinybase.js.gz +0 -0
  97. package/lib/es6/ui-react-dom-debug.js +1 -1
  98. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  99. package/lib/persisters/persister-automerge.js +1 -1
  100. package/lib/persisters/persister-automerge.js.gz +0 -0
  101. package/lib/persisters/persister-browser.js +1 -1
  102. package/lib/persisters/persister-browser.js.gz +0 -0
  103. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  104. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  105. package/lib/persisters/persister-expo-sqlite.js +1 -1
  106. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  107. package/lib/persisters/persister-file.js +1 -1
  108. package/lib/persisters/persister-file.js.gz +0 -0
  109. package/lib/persisters/persister-indexed-db.js +1 -1
  110. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  111. package/lib/persisters/persister-partykit-client.js +1 -1
  112. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  113. package/lib/persisters/persister-remote.js +1 -1
  114. package/lib/persisters/persister-remote.js.gz +0 -0
  115. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  116. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  117. package/lib/persisters/persister-sqlite3.js +1 -1
  118. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  119. package/lib/persisters/persister-yjs.js +1 -1
  120. package/lib/persisters/persister-yjs.js.gz +0 -0
  121. package/lib/persisters.js +1 -1
  122. package/lib/persisters.js.gz +0 -0
  123. package/lib/tinybase.js +1 -1
  124. package/lib/tinybase.js.gz +0 -0
  125. package/lib/types/persisters/persister-automerge.d.ts +36 -3
  126. package/lib/types/persisters/persister-browser.d.ts +71 -8
  127. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +42 -8
  128. package/lib/types/persisters/persister-expo-sqlite.d.ts +40 -7
  129. package/lib/types/persisters/persister-file.d.ts +34 -3
  130. package/lib/types/persisters/persister-indexed-db.d.ts +36 -4
  131. package/lib/types/persisters/persister-partykit-client.d.ts +39 -3
  132. package/lib/types/persisters/persister-remote.d.ts +40 -4
  133. package/lib/types/persisters/persister-sqlite-wasm.d.ts +46 -7
  134. package/lib/types/persisters/persister-sqlite3.d.ts +40 -7
  135. package/lib/types/persisters/persister-yjs.d.ts +37 -5
  136. package/lib/types/persisters.d.ts +10 -10
  137. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +38 -4
  138. package/lib/types/with-schemas/persisters/persister-browser.d.ts +75 -10
  139. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +44 -9
  140. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +42 -8
  141. package/lib/types/with-schemas/persisters/persister-file.d.ts +36 -4
  142. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +38 -5
  143. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +41 -4
  144. package/lib/types/with-schemas/persisters/persister-remote.d.ts +42 -5
  145. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +48 -8
  146. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +41 -7
  147. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +39 -6
  148. package/lib/types/with-schemas/persisters.d.ts +10 -10
  149. package/lib/umd/persisters/persister-automerge.js +1 -1
  150. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  151. package/lib/umd/persisters/persister-browser.js +1 -1
  152. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  153. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  154. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  155. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  156. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  157. package/lib/umd/persisters/persister-file.js +1 -1
  158. package/lib/umd/persisters/persister-file.js.gz +0 -0
  159. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  160. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  161. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  162. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  163. package/lib/umd/persisters/persister-remote.js +1 -1
  164. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  165. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  166. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  167. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  168. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  169. package/lib/umd/persisters/persister-yjs.js +1 -1
  170. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  171. package/lib/umd/persisters.js +1 -1
  172. package/lib/umd/persisters.js.gz +0 -0
  173. package/lib/umd/tinybase.js +1 -1
  174. package/lib/umd/tinybase.js.gz +0 -0
  175. package/lib/umd/ui-react-dom-debug.js +1 -1
  176. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  177. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  178. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  179. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  180. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  181. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  182. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  183. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  184. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  185. package/lib/umd-es6/persisters/persister-file.js +1 -1
  186. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  187. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  188. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  189. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  190. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  191. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  192. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  193. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  194. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  195. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  196. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  197. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  198. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  199. package/lib/umd-es6/persisters.js +1 -1
  200. package/lib/umd-es6/persisters.js.gz +0 -0
  201. package/lib/umd-es6/tinybase.js +1 -1
  202. package/lib/umd-es6/tinybase.js.gz +0 -0
  203. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  204. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  205. package/package.json +20 -20
  206. package/readme.md +2 -2
@@ -11,6 +11,46 @@
11
11
  import {DatabasePersisterConfig, Persister} from '../persisters';
12
12
  import {OptionalSchemas, Store} from '../store';
13
13
 
14
+ /**
15
+ * The SqliteWasmPersister interface is a minor extension to the Persister
16
+ * interface.
17
+ *
18
+ * It simply provides an extra getDb method for accessing a reference to the
19
+ * database instance the Store is being persisted to.
20
+ * @since v4.3.14
21
+ */
22
+ export interface SqliteWasmPersister<Schemas extends OptionalSchemas>
23
+ extends Persister<Schemas> {
24
+ /**
25
+ * The getDb method returns a reference to the database instance the Store is
26
+ * being persisted to.
27
+ * @returns A reference to the database instance.
28
+ * @example
29
+ * This example creates a Persister object against a newly-created Store and
30
+ * then gets the database instance back out again.
31
+ *
32
+ * ```js
33
+ * const sqlite3 = await sqlite3InitModule();
34
+ * const db = new sqlite3.oo1.DB(':memory:', 'c');
35
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
36
+ * const persister = createSqliteWasmPersister(
37
+ * store,
38
+ * sqlite3,
39
+ * db,
40
+ * 'my_tinybase',
41
+ * );
42
+ *
43
+ * console.log(persister.getDb() == db);
44
+ * // -> true
45
+ *
46
+ * persister.destroy();
47
+ * ```
48
+ * @category Getter
49
+ * @since v4.3.14
50
+ */
51
+ getDb: () => any;
52
+ }
53
+
14
54
  /**
15
55
  * The createSqliteWasmPersister function creates a Persister object that can
16
56
  * persist the Store to a local SQLite database (in an appropriate environment).
@@ -25,7 +65,7 @@ import {OptionalSchemas, Store} from '../store';
25
65
  * configOrStoreTableName?: DatabasePersisterConfig | string,
26
66
  * onSqlCommand?: (sql: string, args?: any[]) => void,
27
67
  * onIgnoredError?: (error: any) => void,
28
- * ): Persister;
68
+ * ): SqliteWasmPersister;
29
69
  * ```
30
70
  *
31
71
  * As well as providing a reference to the Store to persist, you must provide
@@ -56,11 +96,11 @@ import {OptionalSchemas, Store} from '../store';
56
96
  * @param onIgnoredError An optional handler for the errors that the Persister
57
97
  * would otherwise ignore when trying to save or load data. This is suitable for
58
98
  * debugging persistence issues in a development environment, since v4.0.4.
59
- * @returns A reference to the new Persister object.
99
+ * @returns A reference to the new SqliteWasmPersister object.
60
100
  * @example
61
- * This example creates a Persister object and persists the Store to a local
62
- * SQLite database as a JSON serialization into the `my_tinybase` table. It
63
- * makes a change to the database directly and then reloads it back into the
101
+ * This example creates a SqliteWasmPersister object and persists the Store to a
102
+ * local SQLite database as a JSON serialization into the `my_tinybase` table.
103
+ * It makes a change to the database directly and then reloads it back into the
64
104
  * Store.
65
105
  *
66
106
  * ```js
@@ -91,8 +131,8 @@ import {OptionalSchemas, Store} from '../store';
91
131
  * persister.destroy();
92
132
  * ```
93
133
  * @example
94
- * This example creates a Persister object and persists the Store to a local
95
- * SQLite database with tabular mapping.
134
+ * This example creates a SqliteWasmPersister object and persists the Store to a
135
+ * local SQLite database with tabular mapping.
96
136
  *
97
137
  * ```js
98
138
  * const sqlite3 = await sqlite3InitModule();
@@ -124,4 +164,4 @@ export function createSqliteWasmPersister<Schemas extends OptionalSchemas>(
124
164
  configOrStoreTableName?: DatabasePersisterConfig<Schemas> | string,
125
165
  onSqlCommand?: (sql: string, args?: any[]) => void,
126
166
  onIgnoredError?: (error: any) => void,
127
- ): Persister<Schemas>;
167
+ ): SqliteWasmPersister<Schemas>;
@@ -12,6 +12,40 @@ import {DatabasePersisterConfig, Persister} from '../persisters';
12
12
  import {OptionalSchemas, Store} from '../store';
13
13
  import {Database} from 'sqlite3';
14
14
 
15
+ /**
16
+ * The Sqlite3Persister interface is a minor extension to the Persister
17
+ * interface.
18
+ *
19
+ * It simply provides an extra getDb method for accessing a reference to the
20
+ * database instance the Store is being persisted to.
21
+ * @since v4.3.14
22
+ */
23
+ export interface Sqlite3Persister<Schemas extends OptionalSchemas>
24
+ extends Persister<Schemas> {
25
+ /**
26
+ * The getDb method returns a reference to the database instance the Store is
27
+ * being persisted to.
28
+ * @returns A reference to the database instance.
29
+ * @example
30
+ * This example creates a Persister object against a newly-created Store and
31
+ * then gets the database instance back out again.
32
+ *
33
+ * ```js
34
+ * const db = new sqlite3.Database(':memory:');
35
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
36
+ * const persister = createSqlite3Persister(store, db, 'my_tinybase');
37
+ *
38
+ * console.log(persister.getDb() == db);
39
+ * // -> true
40
+ *
41
+ * persister.destroy();
42
+ * ```
43
+ * @category Getter
44
+ * @since v4.3.14
45
+ */
46
+ getDb: () => Database;
47
+ }
48
+
15
49
  /**
16
50
  * The createSqlite3Persister function creates a Persister object that can
17
51
  * persist the Store to a local SQLite database (in an appropriate environment).
@@ -25,7 +59,7 @@ import {Database} from 'sqlite3';
25
59
  * configOrStoreTableName?: DatabasePersisterConfig | string,
26
60
  * onSqlCommand?: (sql: string, args?: any[]) => void,
27
61
  * onIgnoredError?: (error: any) => void,
28
- * ): Persister;
62
+ * ): Sqlite3Persister;
29
63
  * ```
30
64
  *
31
65
  * As well as providing a reference to the Store to persist, you must provide a
@@ -54,11 +88,11 @@ import {Database} from 'sqlite3';
54
88
  * @param onIgnoredError An optional handler for the errors that the Persister
55
89
  * would otherwise ignore when trying to save or load data. This is suitable for
56
90
  * debugging persistence issues in a development environment, since v4.0.4.
57
- * @returns A reference to the new Persister object.
91
+ * @returns A reference to the new Sqlite3Persister object.
58
92
  * @example
59
- * This example creates a Persister object and persists the Store to a local
60
- * SQLite database as a JSON serialization into the `my_tinybase` table. It
61
- * makes a change to the database directly and then reloads it back into the
93
+ * This example creates a Sqlite3Persister object and persists the Store to a
94
+ * local SQLite database as a JSON serialization into the `my_tinybase` table.
95
+ * It makes a change to the database directly and then reloads it back into the
62
96
  * Store.
63
97
  *
64
98
  * ```js
@@ -90,8 +124,8 @@ import {Database} from 'sqlite3';
90
124
  * persister.destroy();
91
125
  * ```
92
126
  * @example
93
- * This example creates a Persister object and persists the Store to a local
94
- * SQLite database with tabular mapping.
127
+ * This example creates a Sqlite3Persister object and persists the Store to a
128
+ * local SQLite database with tabular mapping.
95
129
  *
96
130
  * ```js
97
131
  * const db = new sqlite3.Database(':memory:');
@@ -15,6 +15,39 @@ import {OptionalSchemas, Store} from '../store.d';
15
15
  import {Persister} from '../persisters.d';
16
16
  import {Doc as YDoc} from 'yjs';
17
17
 
18
+ /**
19
+ * The YjsPersister interface is a minor extension to the Persister interface.
20
+ *
21
+ * It simply provides an extra getYDoc method for accessing the Yjs document the
22
+ * Store is being persisted to.
23
+ * @since v4.3.14
24
+ */
25
+ export interface YjsPersister<Schemas extends OptionalSchemas>
26
+ extends Persister<Schemas> {
27
+ /**
28
+ * The getYDoc method returns the Yjs document the Store is being persisted
29
+ * to.
30
+ * @returns The Yjs document.
31
+ * @example
32
+ * This example creates a Persister object against a newly-created Store and
33
+ * then gets the Yjs document back out again.
34
+ *
35
+ * ```js
36
+ * const doc = new Y.Doc();
37
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
38
+ * const persister = createYjsPersister(store, doc);
39
+ *
40
+ * console.log(persister.getYDoc() == doc);
41
+ * // -> true
42
+ *
43
+ * persister.destroy();
44
+ * ```
45
+ * @category Getter
46
+ * @since v4.3.14
47
+ */
48
+ getYDoc: () => YDoc;
49
+ }
50
+
18
51
  /**
19
52
  * The createYjsPersister function creates a Persister object that can persist
20
53
  * the Store to a Yjs document.
@@ -27,7 +60,7 @@ import {Doc as YDoc} from 'yjs';
27
60
  * yDoc: YDoc,
28
61
  * yMapName?: string,
29
62
  * onIgnoredError?: (error: any) => void,
30
- * ): Persister;
63
+ * ): YjsPersister;
31
64
  * ```
32
65
  *
33
66
  * As well as providing a reference to the Store to persist, you must provide
@@ -39,9 +72,9 @@ import {Doc as YDoc} from 'yjs';
39
72
  * @param onIgnoredError An optional handler for the errors that the Persister
40
73
  * would otherwise ignore when trying to save or load data. This is suitable for
41
74
  * debugging persistence issues in a development environment, since v4.0.4.
42
- * @returns A reference to the new Persister object.
75
+ * @returns A reference to the new YjsPersister object.
43
76
  * @example
44
- * This example creates a Persister object and persists the Store to a Yjs
77
+ * This example creates a YjsPersister object and persists the Store to a Yjs
45
78
  * document.
46
79
  *
47
80
  * ```js
@@ -59,8 +92,8 @@ import {Doc as YDoc} from 'yjs';
59
92
  * ```
60
93
  * @example
61
94
  * This more complex example uses Yjs updates to keep two Store objects (each
62
- * with their own Persister objects and Yjs documents) in sync with each other.
63
- * We use the `await` keyword extensively for the purpose of ensuring
95
+ * with their own YjsPersister objects and Yjs documents) in sync with each
96
+ * other. We use the `await` keyword extensively for the purpose of ensuring
64
97
  * sequentiality in this example.
65
98
  *
66
99
  * Typically, real-world synchronization would happen between two systems via a
@@ -117,4 +150,4 @@ export function createYjsPersister<Schemas extends OptionalSchemas>(
117
150
  yDoc: YDoc,
118
151
  yMapName?: string,
119
152
  onIgnoredError?: (error: any) => void,
120
- ): Persister<Schemas>;
153
+ ): YjsPersister<Schemas>;
@@ -672,11 +672,11 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
672
672
  * load(initialTables?: Tables, initialValues?: Values): Promise<Persister>;
673
673
  * ```
674
674
  *
675
- * The optional parameter allows you to specify what the initial Tables object
676
- * for the Store will be if there is nothing currently persisted. Using this
677
- * instead of the `initialTables` parameter in the regular createStore
678
- * function allows you to easily instantiate a Store whether it's loading from
679
- * previously persisted storage or being run for the first time.
675
+ * The optional parameters allow you to specify what the initial content for
676
+ * the Store will be if there is nothing currently persisted or if the load
677
+ * fails (for example when the Persister is remote and the environment is
678
+ * offline). This allows you to fallback or instantiate a Store whether it's
679
+ * loading from previously persisted storage or being run for the first time.
680
680
  *
681
681
  * This method is asynchronous because the persisted data may be on a remote
682
682
  * machine or a filesystem. Even for those storage types that are synchronous
@@ -746,11 +746,11 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
746
746
  * ): Promise<Persister>;
747
747
  * ```
748
748
  *
749
- * The optional parameter allows you to specify what the initial Tables object
750
- * for the Store will be if there is nothing at first persisted. Using this
751
- * instead of the `initialTables` parameter in the regular createStore
752
- * function allows you to easily instantiate a Store whether it's loading from
753
- * previously persisted storage or being run for the first time.
749
+ * The optional parameters allow you to specify what the initial content for
750
+ * the Store will be if there is nothing currently persisted or if the load
751
+ * fails (for example when the Persister is remote and the environment is
752
+ * offline). This allows you to fallback or instantiate a Store whether it's
753
+ * loading from previously persisted storage or being run for the first time.
754
754
  *
755
755
  * This method first runs a single call to the load method to ensure the data
756
756
  * is in sync with the persisted storage. It then continues to watch for
@@ -1 +1 @@
1
- var t,e;t=this,e=function(t){"use strict";const e=t=>null==t,a=(t,a,s)=>e(t)?s?.():a(t),s=Object,n=s.keys,o=s.freeze,c=(t,e)=>a(t,(t=>t[e])),i=(t,a)=>!e(c(t,a)),r=(t,e)=>(delete t[e],t),d=(t,e)=>((t,e)=>t.map(e))(s.entries(t),(([t,a])=>e(a,t))),u=t=>n(t).length,y=t=>(t=>t instanceof s&&t.constructor==s)(t)&&0==u(t),l=t=>new Map(t),f=(t,e)=>t?.get(e),h=(t,a,s)=>{return e(s)?(n=t,o=a,n?.delete(o),t):t?.set(a,s);var n,o},v=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||h(t,e,a()),f(t,e)},p=l(),g=l(),w=(t,e)=>[t[e].t,t[e].v],A=(t,a,s,n)=>{const o=e(a)?t:((t,e,a)=>(i(t,e)||(t[e]={}),t[e]))(t,a);let c;return d(s,((t,e)=>{n(o,e,t)&&(c=1)})),d(o,((t,e)=>{i(s,e)||(r(o,e),c=1)})),!e(a)&&y(o)&&r(t,a),c};t.createAutomergePersister=(t,s,n="tinybase",i)=>(s.change((t=>t[n]={})),((t,s,n,c,i,r,d=[])=>{let u,l,w,A=0,L=0;v(p,d,(()=>0)),v(g,d,(()=>[]));const m=async t=>(2!=A&&(A=1,await S.schedule((async()=>{await t(),A=0}))),S),S={load:async(e,a)=>await m((async()=>{try{t.setContent(await s())}catch{t.setContent([e,a])}})),startAutoLoad:async(e={},a={})=>(S.stopAutoLoad(),await S.load(e,a),L=1,w=c((async(e,a)=>{if(a){const e=a();await m((async()=>t.setTransactionChanges(e)))}else await m((async()=>{try{t.setContent(e?.()??await s())}catch(t){r?.(t)}}))})),S),stopAutoLoad:()=>(L&&(i(w),w=void 0,L=0),S),save:async e=>(1!=A&&(A=2,await S.schedule((async()=>{try{await n(t.getContent,e)}catch(t){r?.(t)}A=0}))),S),startAutoSave:async()=>(await S.stopAutoSave().save(),u=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();y(a)&&y(s)||S.save((()=>[a,s]))})),S),stopAutoSave:()=>(a(u,t.delListener),S),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(f(g,d),...t),await(async()=>{if(!f(p,d)){for(h(p,d,1);!e((t=f(g,d),l=t.shift()));)try{await l()}catch(t){r?.(t)}h(p,d,0)}var t})(),S),getStore:()=>t,destroy:()=>S.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return o(S)})(t,(async()=>2==u(s.doc[n])?w(s.doc,n):void 0),(async(t,o)=>s.change((s=>((t,s,n,o)=>{((t,e)=>{y(t[e])&&(t[e]={t:{},v:{}})})(t,s);const[i,u]=w(t,s),l=()=>{f=1};let f=1;if(a(o?.(),(([t,s])=>{f=0,d(t,((t,s)=>f?0:e(t)?r(i,s):a(i[s],(s=>d(t,((t,n)=>f?0:e(t)?r(s,n):a(c(s,n),(a=>d(t,((t,s)=>e(t)?r(a,s):a[s]=t))),l)))),l))),d(s,((t,a)=>f?0:e(t)?r(u,a):u[a]=t))})),f){const[t,e]=n();A(i,void 0,t,((t,e,a)=>A(i,e,a,((t,e,a)=>A(t,e,a,((t,e,a)=>{if(c(t,e)!==a)return t[e]=a,1})))))),A(u,void 0,e,((t,e,a)=>{c(u,e)!==a&&(u[e]=a)}))}})(s,n,t,o)))),(t=>{const e=({doc:e})=>t((()=>w(e,n)));return s.on("change",e),e}),(t=>{s.removeListener("change",t)}),i))},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterAutomerge={});
1
+ var t,e;t=this,e=function(t){"use strict";const e=t=>null==t,a=(t,a,s)=>e(t)?s?.():a(t),s=Object,n=s.keys,o=s.freeze,c=(t,e)=>a(t,(t=>t[e])),i=(t,a)=>!e(c(t,a)),r=(t,e)=>(delete t[e],t),d=(t,e)=>((t,e)=>t.map(e))(s.entries(t),(([t,a])=>e(a,t))),u=t=>n(t).length,y=t=>(t=>t instanceof s&&t.constructor==s)(t)&&0==u(t),l=t=>new Map(t),f=(t,e)=>t?.get(e),h=(t,a,s)=>{return e(s)?(n=t,o=a,n?.delete(o),t):t?.set(a,s);var n,o},v=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||h(t,e,a()),f(t,e)},p=l(),g=l(),w=(t,e)=>[t[e].t,t[e].v],A=(t,a,s,n)=>{const o=e(a)?t:((t,e,a)=>(i(t,e)||(t[e]={}),t[e]))(t,a);let c;return d(s,((t,e)=>{n(o,e,t)&&(c=1)})),d(o,((t,e)=>{i(s,e)||(r(o,e),c=1)})),!e(a)&&y(o)&&r(t,a),c};t.createAutomergePersister=(t,s,n="tinybase",i)=>(s.change((t=>t[n]={})),((t,s,n,c,i,r,[d,u]=[],l=[])=>{let w,A,L,m=0,S=0;v(p,l,(()=>0)),v(g,l,(()=>[]));const b=async t=>(2!=m&&(m=1,await C.schedule((async()=>{await t(),m=0}))),C),C={load:async(e,a)=>await b((async()=>{try{t.setContent(await s())}catch{t.setContent([e,a])}})),startAutoLoad:async(e={},a={})=>(C.stopAutoLoad(),await C.load(e,a),S=1,L=c((async(e,a)=>{if(a){const e=a();await b((async()=>t.setTransactionChanges(e)))}else await b((async()=>{try{t.setContent(e?.()??await s())}catch(t){r?.(t)}}))})),C),stopAutoLoad:()=>(S&&(i(L),L=void 0,S=0),C),save:async e=>(1!=m&&(m=2,await C.schedule((async()=>{try{await n(t.getContent,e)}catch(t){r?.(t)}m=0}))),C),startAutoSave:async()=>(await C.stopAutoSave().save(),w=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();y(a)&&y(s)||C.save((()=>[a,s]))})),C),stopAutoSave:()=>(a(w,t.delListener),w=void 0,C),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(f(g,l),...t),await(async()=>{if(!f(p,l)){for(h(p,l,1);!e((t=f(g,l),A=t.shift()));)try{await A()}catch(t){r?.(t)}h(p,l,0)}var t})(),C),getStore:()=>t,destroy:()=>C.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return d&&(C[d]=()=>u),o(C)})(t,(async()=>2==u(s.doc[n])?w(s.doc,n):void 0),(async(t,o)=>s.change((s=>((t,s,n,o)=>{((t,e)=>{y(t[e])&&(t[e]={t:{},v:{}})})(t,s);const[i,u]=w(t,s),l=()=>{f=1};let f=1;if(a(o?.(),(([t,s])=>{f=0,d(t,((t,s)=>f?0:e(t)?r(i,s):a(i[s],(s=>d(t,((t,n)=>f?0:e(t)?r(s,n):a(c(s,n),(a=>d(t,((t,s)=>e(t)?r(a,s):a[s]=t))),l)))),l))),d(s,((t,a)=>f?0:e(t)?r(u,a):u[a]=t))})),f){const[t,e]=n();A(i,void 0,t,((t,e,a)=>A(i,e,a,((t,e,a)=>A(t,e,a,((t,e,a)=>{if(c(t,e)!==a)return t[e]=a,1})))))),A(u,void 0,e,((t,e,a)=>{c(u,e)!==a&&(u[e]=a)}))}})(s,n,t,o)))),(t=>{const e=({doc:e})=>t((()=>w(e,n)));return s.on("change",e),e}),(t=>{s.removeListener("change",t)}),i,["getDocHandle",s]))},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterAutomerge={});
@@ -1 +1 @@
1
- var t,e;t=this,e=function(t){"use strict";const e=(t,e)=>t instanceof e,a=t=>null==t,s=Object,n=s.keys,o=s.freeze,r=t=>(t=>e(t,s)&&t.constructor==s)(t)&&0==(t=>n(t).length)(t),i=JSON.parse,c=t=>new Map(t),d=(t,e)=>t?.get(e),y=(t,e,s)=>{return a(s)?(n=t,o=e,n?.delete(o),t):t?.set(e,s);var n,o},u=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||y(t,e,a()),d(t,e)},l=c(),f=c(),w="storage",h=globalThis.window,p=(t,n,c,p)=>((t,e,s,n,i,c,w=[])=>{let h,p,v,g=0,S=0;u(l,w,(()=>0)),u(f,w,(()=>[]));const A=async t=>(2!=g&&(g=1,await L.schedule((async()=>{await t(),g=0}))),L),L={load:async(a,s)=>await A((async()=>{try{t.setContent(await e())}catch{t.setContent([a,s])}})),startAutoLoad:async(a={},s={})=>(L.stopAutoLoad(),await L.load(a,s),S=1,v=n((async(a,s)=>{if(s){const e=s();await A((async()=>t.setTransactionChanges(e)))}else await A((async()=>{try{t.setContent(a?.()??await e())}catch(t){c?.(t)}}))})),L),stopAutoLoad:()=>(S&&(i(v),v=void 0,S=0),L),save:async e=>(1!=g&&(g=2,await L.schedule((async()=>{try{await s(t.getContent,e)}catch(t){c?.(t)}g=0}))),L),startAutoSave:async()=>(await L.stopAutoSave().save(),h=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();r(a)&&r(s)||L.save((()=>[a,s]))})),L),stopAutoSave:()=>{var e,s;return e=h,s=t.delListener,a(e)||s(e),L},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(d(f,w),...t),await(async()=>{if(!d(l,w)){for(y(l,w,1);!a((t=d(f,w),p=t.shift()));)try{await p()}catch(t){c?.(t)}y(l,w,0)}var t})(),L),getStore:()=>t,destroy:()=>L.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return o(L)})(t,(async()=>i(c.getItem(n))),(async t=>{return c.setItem(n,(a=t(),JSON.stringify(a,((t,a)=>e(a,Map)?s.fromEntries([...a]):a))));var a}),(t=>{const e=e=>{e.storageArea===c&&e.key===n&&t((()=>i(e.newValue)))};return h.addEventListener(w,e),e}),(t=>h.removeEventListener(w,t)),p);t.createLocalPersister=(t,e,a)=>p(t,e,localStorage,a),t.createSessionPersister=(t,e,a)=>p(t,e,sessionStorage,a)},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterBrowser={});
1
+ var t,e;t=this,e=function(t){"use strict";const e=(t,e)=>t instanceof e,a=t=>null==t,s=Object,n=s.keys,o=s.freeze,r=t=>(t=>e(t,s)&&t.constructor==s)(t)&&0==(t=>n(t).length)(t),i=JSON.parse,c=t=>new Map(t),d=(t,e)=>t?.get(e),y=(t,e,s)=>{return a(s)?(n=t,o=e,n?.delete(o),t):t?.set(e,s);var n,o},u=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||y(t,e,a()),d(t,e)},l=c(),f=c(),v="storage",w=globalThis.window,g=(t,n,c,g)=>((t,e,s,n,i,c,[v,w]=[],g=[])=>{let h,p,S,A=0,L=0;u(l,g,(()=>0)),u(f,g,(()=>[]));const m=async t=>(2!=A&&(A=1,await T.schedule((async()=>{await t(),A=0}))),T),T={load:async(a,s)=>await m((async()=>{try{t.setContent(await e())}catch{t.setContent([a,s])}})),startAutoLoad:async(a={},s={})=>(T.stopAutoLoad(),await T.load(a,s),L=1,S=n((async(a,s)=>{if(s){const e=s();await m((async()=>t.setTransactionChanges(e)))}else await m((async()=>{try{t.setContent(a?.()??await e())}catch(t){c?.(t)}}))})),T),stopAutoLoad:()=>(L&&(i(S),S=void 0,L=0),T),save:async e=>(1!=A&&(A=2,await T.schedule((async()=>{try{await s(t.getContent,e)}catch(t){c?.(t)}A=0}))),T),startAutoSave:async()=>(await T.stopAutoSave().save(),h=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();r(a)&&r(s)||T.save((()=>[a,s]))})),T),stopAutoSave:()=>{var e,s;return e=h,s=t.delListener,a(e)||s(e),h=void 0,T},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(d(f,g),...t),await(async()=>{if(!d(l,g)){for(y(l,g,1);!a((t=d(f,g),p=t.shift()));)try{await p()}catch(t){c?.(t)}y(l,g,0)}var t})(),T),getStore:()=>t,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return v&&(T[v]=()=>w),o(T)})(t,(async()=>i(c.getItem(n))),(async t=>{return c.setItem(n,(a=t(),JSON.stringify(a,((t,a)=>e(a,Map)?s.fromEntries([...a]):a))));var a}),(t=>{const e=e=>{e.storageArea===c&&e.key===n&&t((()=>i(e.newValue)))};return w.addEventListener(v,e),e}),(t=>w.removeEventListener(v,t)),g,["getStorageName",n]);t.createLocalPersister=(t,e,a)=>g(t,e,localStorage,a),t.createSessionPersister=(t,e,a)=>g(t,e,sessionStorage,a)},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterBrowser={});
@@ -1 +1 @@
1
- var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),c=Promise,o=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),E=a=>t(a)==n,d=(a,t,e)=>a.slice(t,e),u=a=>a.length,f=async a=>c.all(a),p=(a,t="")=>a.join(t),T=(a,t)=>a.map(t),m=a=>0==u(a),v=(a,t)=>a.filter(t),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),O=Object,R=O.keys,C=O.freeze,S=(a=[])=>O.fromEntries(a),D=(...a)=>O.assign({},...a),b=(a,t)=>T(O.entries(a),(([a,e])=>t(e,a))),g=a=>O.values(a),I=a=>u(R(a)),F=a=>(a=>l(a,O)&&a.constructor==O)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),_=(a,t)=>T([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),W=(a,t,e)=>(L(a,t)||B(a,t,e()),P(a,t)),x=(a,t,e,s=B)=>(b(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),j=a=>new Set(Array.isArray(a)||y(a)?a:[a]),H=(a,t)=>a?.add(t),U="_",k="_id",q=a=>`"${a.replace(/"/g,'""')}"`,J="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>x(n,S(await f(T(await a("SELECT name "+J+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,S(T(await a("SELECT name,type "+J+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,x(W(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?S(v(T(await a("SELECT*FROM"+q(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,c,o,r=!1)=>{const l=j();b(i??{},(a=>T(R(a??{}),(a=>H(l,a)))));const w=h(l);if(!r&&o&&m(w)&&L(n,t))return await a("DROP TABLE"+q(t)),void B(n,t);if(m(w)||L(n,t)){const s=P(n,t),i=j($(s));await f([...T(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${q(t)}ADD${q(e)}`),B(s,e,""))})),...!r&&c?T(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${q(t)}DROP${q(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${q(t)}(${q(e)} PRIMARY KEY ON CONFLICT REPLACE${p(T(w,(a=>s+q(a))))});`),B(n,t,M([[e,""],...T(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+q(t)+"WHERE 1"):await f(b(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+q(t)+Y+q(e)+"=?",[n]):m(w)||await G(a,t,e,R(s),[n,...g(s)])})));else if(m(w))L(n,t)&&await a("DELETE FROM"+q(t)+"WHERE 1");else{const s=v($(P(n,t)),(a=>a!=e)),c=[],o=[];b(i??{},((a,t)=>{A(c,t,...T(s,(t=>a?.[t]))),A(o,t)})),await G(a,t,e,s,c),await a("DELETE FROM"+q(t)+Y+q(e)+"NOT IN("+K(o)+")",o)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,c)=>await a("INSERT INTO"+q(t)+"("+q(e)+p(T(n,(a=>s+q(a))))+")VALUES"+d(i(`,(?${i(",?",u(n))})`,u(c)/(u(n)+1)),1)+"ON CONFLICT("+q(e)+")DO UPDATE SET"+p(T(n,(a=>q(a)+"=excluded."+q(a))),s),c),K=a=>p(T(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,c=[])=>{let o,r,l,E=0,d=0;W(Q,c,(()=>0)),W(X,c,(()=>[]));const u=async a=>(2!=E&&(E=1,await f.schedule((async()=>{await a(),E=0}))),f),f={load:async(e,s)=>await u((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(f.stopAutoLoad(),await f.load(e,n),d=1,l=s((async(e,s)=>{if(s){const t=s();await u((async()=>a.setTransactionChanges(t)))}else await u((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),f),stopAutoLoad:()=>(d&&(n(l),l=void 0,d=0),f),save:async t=>(1!=E&&(E=2,await f.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}E=0}))),f),startAutoSave:async()=>(await f.stopAutoSave().save(),o=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||f.save((()=>[e,s]))})),f),stopAutoSave:()=>(w(o,a.delListener),f),schedule:async(...a)=>(A(P(X,c),...a),await(async()=>{if(!P(Q,c)){for(B(Q,c,1);!y((a=P(X,c),r=a.shift()));)try{await r()}catch(a){i?.(a)}B(Q,c,0)}var a})(),f),getStore:()=>a,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return C(f)},aa="store",ta=(a,t,e,s,n,[i],c,o)=>{const[r,y,w,E]=z(t,c,n);return Z(a,(async()=>await E((async()=>(await r(),V((await y(i,k))[U]?.[aa]??"null"))))),(async a=>await E((async()=>{var t;await r(),await w(i,k,{[U]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?O.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,o)},ea=(a,t,e,s,n,[i,c,[o,r,l]],w,E)=>{const[d,u,p,T]=z(t,w,n),m=async(a,t)=>await f(_(c,(async([e,s,n,i],c)=>{const o=a[c];t&&void 0===o||await p(e,s,o,n,i,t)}))),A=async(a,t)=>r?await p(l,k,{[U]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await d();const a=await(async()=>S(v(await f(_(i,(async([a,t],e)=>[a,await u(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>o?(await u(l,k))[U]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await d(),y(t)){const[t,e]=a();await m(t),await A(e)}else{const[a,e]=t();await m(a,!0),await A(e,!0)}}))),e,s,n,E)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",ca="tableId",oa="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[oa]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return b(a,((a,i)=>{const c=d(g(D(t,E(a)?{[e]:a}:a)),0,I(t));y(c[0])||s(i,c[0])||B(n,i,c)})),n},wa="pragma ",Ea="data_version",da="schema_version",ua=(a,t,s,n,i,c,l,y)=>{let w,u;const[f,p,T,m]=(a=>{const t=(a=>D(ra,E(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],j(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=t,o=d(g(D(la,c)),0,I(la)),r=o[2],l=j(r);return[0,s,[ya(n,{[ca]:null,[ia]:k},ca,(a=>H(l,a)&&a==r)),ya(i,{[oa]:null,[ia]:k,deleteEmptyColumns:0,deleteEmptyTable:0},oa,((a,t)=>H(l,t)&&t==r)),o],l]})(t);return(f?ta:ea)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[o((async()=>{try{const t=(await s(wa+Ea))[0][Ea],e=(await s(wa+da))[0][da];t==(w??=t)&&e==(u??=e)||(a(),w=t,u=e)}catch{}}),1e3*p),n((t=>m.has(t)?a():0))]),(([a,t])=>{r(a),w=u=null,i(t)}),l,T,h(m),y)};a.createCrSqliteWasmPersister=(a,t,e,s,n)=>ua(a,e,(async(a,e=[])=>await t.execO(a,e)),(a=>t.onUpdate(((t,e,s)=>a(s)))),(a=>a()),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterCrSqliteWasm={});
1
+ var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),c=Promise,o=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),E=a=>t(a)==n,d=(a,t,e)=>a.slice(t,e),u=a=>a.length,f=async a=>c.all(a),p=(a,t="")=>a.join(t),T=(a,t)=>a.map(t),m=a=>0==u(a),v=(a,t)=>a.filter(t),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),O=Object,R=O.keys,C=O.freeze,S=(a=[])=>O.fromEntries(a),D=(...a)=>O.assign({},...a),b=(a,t)=>T(O.entries(a),(([a,e])=>t(e,a))),g=a=>O.values(a),I=a=>u(R(a)),F=a=>(a=>l(a,O)&&a.constructor==O)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),_=(a,t)=>T([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),W=(a,t,e)=>(L(a,t)||B(a,t,e()),P(a,t)),x=(a,t,e,s=B)=>(b(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),j=a=>new Set(Array.isArray(a)||y(a)?a:[a]),H=(a,t)=>a?.add(t),U="_",k="_id",q=a=>`"${a.replace(/"/g,'""')}"`,J="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>x(n,S(await f(T(await a("SELECT name "+J+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,S(T(await a("SELECT name,type "+J+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,x(W(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?S(v(T(await a("SELECT*FROM"+q(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,c,o,r=!1)=>{const l=j();b(i??{},(a=>T(R(a??{}),(a=>H(l,a)))));const w=h(l);if(!r&&o&&m(w)&&L(n,t))return await a("DROP TABLE"+q(t)),void B(n,t);if(m(w)||L(n,t)){const s=P(n,t),i=j($(s));await f([...T(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${q(t)}ADD${q(e)}`),B(s,e,""))})),...!r&&c?T(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${q(t)}DROP${q(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${q(t)}(${q(e)} PRIMARY KEY ON CONFLICT REPLACE${p(T(w,(a=>s+q(a))))});`),B(n,t,M([[e,""],...T(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+q(t)+"WHERE 1"):await f(b(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+q(t)+Y+q(e)+"=?",[n]):m(w)||await G(a,t,e,R(s),[n,...g(s)])})));else if(m(w))L(n,t)&&await a("DELETE FROM"+q(t)+"WHERE 1");else{const s=v($(P(n,t)),(a=>a!=e)),c=[],o=[];b(i??{},((a,t)=>{A(c,t,...T(s,(t=>a?.[t]))),A(o,t)})),await G(a,t,e,s,c),await a("DELETE FROM"+q(t)+Y+q(e)+"NOT IN("+K(o)+")",o)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,c)=>await a("INSERT INTO"+q(t)+"("+q(e)+p(T(n,(a=>s+q(a))))+")VALUES"+d(i(`,(?${i(",?",u(n))})`,u(c)/(u(n)+1)),1)+"ON CONFLICT("+q(e)+")DO UPDATE SET"+p(T(n,(a=>q(a)+"=excluded."+q(a))),s),c),K=a=>p(T(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,[c,o]=[],r=[])=>{let l,E,d,u=0,f=0;W(Q,r,(()=>0)),W(X,r,(()=>[]));const p=async a=>(2!=u&&(u=1,await T.schedule((async()=>{await a(),u=0}))),T),T={load:async(e,s)=>await p((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(T.stopAutoLoad(),await T.load(e,n),f=1,d=s((async(e,s)=>{if(s){const t=s();await p((async()=>a.setTransactionChanges(t)))}else await p((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),T),stopAutoLoad:()=>(f&&(n(d),d=void 0,f=0),T),save:async t=>(1!=u&&(u=2,await T.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}u=0}))),T),startAutoSave:async()=>(await T.stopAutoSave().save(),l=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||T.save((()=>[e,s]))})),T),stopAutoSave:()=>(w(l,a.delListener),l=void 0,T),schedule:async(...a)=>(A(P(X,r),...a),await(async()=>{if(!P(Q,r)){for(B(Q,r,1);!y((a=P(X,r),E=a.shift()));)try{await E()}catch(a){i?.(a)}B(Q,r,0)}var a})(),T),getStore:()=>a,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return c&&(T[c]=()=>o),C(T)},aa="store",ta=(a,t,e,s,n,[i],c,o)=>{const[r,y,w,E]=z(t,c,n);return Z(a,(async()=>await E((async()=>(await r(),V((await y(i,k))[U]?.[aa]??"null"))))),(async a=>await E((async()=>{var t;await r(),await w(i,k,{[U]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?O.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,["getDb",o],o)},ea=(a,t,e,s,n,[i,c,[o,r,l]],w,E)=>{const[d,u,p,T]=z(t,w,n),m=async(a,t)=>await f(_(c,(async([e,s,n,i],c)=>{const o=a[c];t&&void 0===o||await p(e,s,o,n,i,t)}))),A=async(a,t)=>r?await p(l,k,{[U]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await d();const a=await(async()=>S(v(await f(_(i,(async([a,t],e)=>[a,await u(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>o?(await u(l,k))[U]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await d(),y(t)){const[t,e]=a();await m(t),await A(e)}else{const[a,e]=t();await m(a,!0),await A(e,!0)}}))),e,s,n,["getDb",E],E)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",ca="tableId",oa="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[oa]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return b(a,((a,i)=>{const c=d(g(D(t,E(a)?{[e]:a}:a)),0,I(t));y(c[0])||s(i,c[0])||B(n,i,c)})),n},wa="pragma ",Ea="data_version",da="schema_version",ua=(a,t,s,n,i,c,l,y)=>{let w,u;const[f,p,T,m]=(a=>{const t=(a=>D(ra,E(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],j(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=t,o=d(g(D(la,c)),0,I(la)),r=o[2],l=j(r);return[0,s,[ya(n,{[ca]:null,[ia]:k},ca,(a=>H(l,a)&&a==r)),ya(i,{[oa]:null,[ia]:k,deleteEmptyColumns:0,deleteEmptyTable:0},oa,((a,t)=>H(l,t)&&t==r)),o],l]})(t);return(f?ta:ea)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[o((async()=>{try{const t=(await s(wa+Ea))[0][Ea],e=(await s(wa+da))[0][da];t==(w??=t)&&e==(u??=e)||(a(),w=t,u=e)}catch{}}),1e3*p),n((t=>m.has(t)?a():0))]),(([a,t])=>{r(a),w=u=null,i(t)}),l,T,h(m),y)};a.createCrSqliteWasmPersister=(a,t,e,s,n)=>ua(a,e,(async(a,e=[])=>await t.execO(a,e)),(a=>t.onUpdate(((t,e,s)=>a(s)))),(a=>a()),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterCrSqliteWasm={});
@@ -1 +1 @@
1
- var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),o=Promise,c=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),E=a=>t(a)==n,u=(a,t,e)=>a.slice(t,e),d=a=>a.length,f=async a=>o.all(a),p=(a,t="")=>a.join(t),T=(a,t)=>a.map(t),m=a=>0==d(a),v=(a,t)=>a.filter(t),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),R=Object,O=R.keys,S=R.freeze,C=(a=[])=>R.fromEntries(a),b=(...a)=>R.assign({},...a),g=(a,t)=>T(R.entries(a),(([a,e])=>t(e,a))),D=a=>R.values(a),I=a=>d(O(a)),F=a=>(a=>l(a,R)&&a.constructor==R)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),x=(a,t)=>T([...a?.entries()??[]],(([a,e])=>t(e,a))),_=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),B=(a,t,e)=>(L(a,t)||_(a,t,e()),P(a,t)),j=(a,t,e,s=_)=>(g(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),H=a=>new Set(Array.isArray(a)||y(a)?a:[a]),W=(a,t)=>a?.add(t),q="_",k="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>j(n,C(await f(T(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,C(T(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>_(n,t,j(B(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&_(a,t,e)}),((a,t)=>_(a,t))))),((a,t)=>_(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?C(v(T(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,o,c,r=!1)=>{const l=H();g(i??{},(a=>T(O(a??{}),(a=>W(l,a)))));const w=h(l);if(!r&&c&&m(w)&&L(n,t))return await a("DROP TABLE"+J(t)),void _(n,t);if(m(w)||L(n,t)){const s=P(n,t),i=H($(s));await f([...T(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),_(s,e,""))})),...!r&&o?T(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),_(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${p(T(w,(a=>s+J(a))))});`),_(n,t,M([[e,""],...T(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await f(g(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+Y+J(e)+"=?",[n]):m(w)||await G(a,t,e,O(s),[n,...D(s)])})));else if(m(w))L(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=v($(P(n,t)),(a=>a!=e)),o=[],c=[];g(i??{},((a,t)=>{A(o,t,...T(s,(t=>a?.[t]))),A(c,t)})),await G(a,t,e,s,o),await a("DELETE FROM"+J(t)+Y+J(e)+"NOT IN("+K(c)+")",c)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,o)=>await a("INSERT INTO"+J(t)+"("+J(e)+p(T(n,(a=>s+J(a))))+")VALUES"+u(i(`,(?${i(",?",d(n))})`,d(o)/(d(n)+1)),1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+p(T(n,(a=>J(a)+"=excluded."+J(a))),s),o),K=a=>p(T(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,o=[])=>{let c,r,l,E=0,u=0;B(Q,o,(()=>0)),B(X,o,(()=>[]));const d=async a=>(2!=E&&(E=1,await f.schedule((async()=>{await a(),E=0}))),f),f={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(f.stopAutoLoad(),await f.load(e,n),u=1,l=s((async(e,s)=>{if(s){const t=s();await d((async()=>a.setTransactionChanges(t)))}else await d((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),f),stopAutoLoad:()=>(u&&(n(l),l=void 0,u=0),f),save:async t=>(1!=E&&(E=2,await f.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}E=0}))),f),startAutoSave:async()=>(await f.stopAutoSave().save(),c=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||f.save((()=>[e,s]))})),f),stopAutoSave:()=>(w(c,a.delListener),f),schedule:async(...a)=>(A(P(X,o),...a),await(async()=>{if(!P(Q,o)){for(_(Q,o,1);!y((a=P(X,o),r=a.shift()));)try{await r()}catch(a){i?.(a)}_(Q,o,0)}var a})(),f),getStore:()=>a,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return S(f)},aa="store",ta=(a,t,e,s,n,[i],o,c)=>{const[r,y,w,E]=z(t,o,n);return Z(a,(async()=>await E((async()=>(await r(),V((await y(i,k))[q]?.[aa]??"null"))))),(async a=>await E((async()=>{var t;await r(),await w(i,k,{[q]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?R.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,c)},ea=(a,t,e,s,n,[i,o,[c,r,l]],w,E)=>{const[u,d,p,T]=z(t,w,n),m=async(a,t)=>await f(x(o,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await p(e,s,c,n,i,t)}))),A=async(a,t)=>r?await p(l,k,{[q]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await u();const a=await(async()=>C(v(await f(x(i,(async([a,t],e)=>[a,await d(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>c?(await d(l,k))[q]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await u(),y(t)){const[t,e]=a();await m(t),await A(e)}else{const[a,e]=t();await m(a,!0),await A(e,!0)}}))),e,s,n,E)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",oa="tableId",ca="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[ca]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return g(a,((a,i)=>{const o=u(D(b(t,E(a)?{[e]:a}:a)),0,I(t));y(o[0])||s(i,o[0])||_(n,i,o)})),n},wa="pragma ",Ea="data_version",ua="schema_version",da=(a,t,s,n,i,o,l,y)=>{let w,d;const[f,p,T,m]=(a=>{const t=(a=>b(ra,E(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],H(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=u(D(b(la,o)),0,I(la)),r=c[2],l=H(r);return[0,s,[ya(n,{[oa]:null,[ia]:k},oa,(a=>W(l,a)&&a==r)),ya(i,{[ca]:null,[ia]:k,deleteEmptyColumns:0,deleteEmptyTable:0},ca,((a,t)=>W(l,t)&&t==r)),c],l]})(t);return(f?ta:ea)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[c((async()=>{try{const t=(await s(wa+Ea))[0][Ea],e=(await s(wa+ua))[0][ua];t==(w??=t)&&e==(d??=e)||(a(),w=t,d=e)}catch{}}),1e3*p),n((t=>m.has(t)?a():0))]),(([a,t])=>{r(a),w=d=null,i(t)}),l,T,h(m),y)};a.createExpoSqlitePersister=(a,t,e,s,n)=>da(a,e,(async(a,e=[])=>(await t.execAsync([{sql:a,args:e}],!1))[0].rows),(a=>t.onDatabaseChange((({tableName:t})=>a(t)))),(a=>a.remove()),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterExpoSqlite={});
1
+ var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),o=Promise,c=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),E=a=>t(a)==n,d=(a,t,e)=>a.slice(t,e),u=a=>a.length,f=async a=>o.all(a),p=(a,t="")=>a.join(t),T=(a,t)=>a.map(t),m=a=>0==u(a),v=(a,t)=>a.filter(t),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),R=Object,O=R.keys,S=R.freeze,b=(a=[])=>R.fromEntries(a),g=(...a)=>R.assign({},...a),C=(a,t)=>T(R.entries(a),(([a,e])=>t(e,a))),D=a=>R.values(a),I=a=>u(O(a)),F=a=>(a=>l(a,R)&&a.constructor==R)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),x=(a,t)=>T([...a?.entries()??[]],(([a,e])=>t(e,a))),_=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),B=(a,t,e)=>(L(a,t)||_(a,t,e()),P(a,t)),j=(a,t,e,s=_)=>(C(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),H=a=>new Set(Array.isArray(a)||y(a)?a:[a]),W=(a,t)=>a?.add(t),q="_",k="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>j(n,b(await f(T(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,b(T(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>_(n,t,j(B(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&_(a,t,e)}),((a,t)=>_(a,t))))),((a,t)=>_(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?b(v(T(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,o,c,r=!1)=>{const l=H();C(i??{},(a=>T(O(a??{}),(a=>W(l,a)))));const w=h(l);if(!r&&c&&m(w)&&L(n,t))return await a("DROP TABLE"+J(t)),void _(n,t);if(m(w)||L(n,t)){const s=P(n,t),i=H($(s));await f([...T(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),_(s,e,""))})),...!r&&o?T(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),_(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${p(T(w,(a=>s+J(a))))});`),_(n,t,M([[e,""],...T(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await f(C(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+Y+J(e)+"=?",[n]):m(w)||await G(a,t,e,O(s),[n,...D(s)])})));else if(m(w))L(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=v($(P(n,t)),(a=>a!=e)),o=[],c=[];C(i??{},((a,t)=>{A(o,t,...T(s,(t=>a?.[t]))),A(c,t)})),await G(a,t,e,s,o),await a("DELETE FROM"+J(t)+Y+J(e)+"NOT IN("+K(c)+")",c)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,o)=>await a("INSERT INTO"+J(t)+"("+J(e)+p(T(n,(a=>s+J(a))))+")VALUES"+d(i(`,(?${i(",?",u(n))})`,u(o)/(u(n)+1)),1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+p(T(n,(a=>J(a)+"=excluded."+J(a))),s),o),K=a=>p(T(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,[o,c]=[],r=[])=>{let l,E,d,u=0,f=0;B(Q,r,(()=>0)),B(X,r,(()=>[]));const p=async a=>(2!=u&&(u=1,await T.schedule((async()=>{await a(),u=0}))),T),T={load:async(e,s)=>await p((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(T.stopAutoLoad(),await T.load(e,n),f=1,d=s((async(e,s)=>{if(s){const t=s();await p((async()=>a.setTransactionChanges(t)))}else await p((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),T),stopAutoLoad:()=>(f&&(n(d),d=void 0,f=0),T),save:async t=>(1!=u&&(u=2,await T.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}u=0}))),T),startAutoSave:async()=>(await T.stopAutoSave().save(),l=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||T.save((()=>[e,s]))})),T),stopAutoSave:()=>(w(l,a.delListener),l=void 0,T),schedule:async(...a)=>(A(P(X,r),...a),await(async()=>{if(!P(Q,r)){for(_(Q,r,1);!y((a=P(X,r),E=a.shift()));)try{await E()}catch(a){i?.(a)}_(Q,r,0)}var a})(),T),getStore:()=>a,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return o&&(T[o]=()=>c),S(T)},aa="store",ta=(a,t,e,s,n,[i],o,c)=>{const[r,y,w,E]=z(t,o,n);return Z(a,(async()=>await E((async()=>(await r(),V((await y(i,k))[q]?.[aa]??"null"))))),(async a=>await E((async()=>{var t;await r(),await w(i,k,{[q]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?R.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,["getDb",c],c)},ea=(a,t,e,s,n,[i,o,[c,r,l]],w,E)=>{const[d,u,p,T]=z(t,w,n),m=async(a,t)=>await f(x(o,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await p(e,s,c,n,i,t)}))),A=async(a,t)=>r?await p(l,k,{[q]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await d();const a=await(async()=>b(v(await f(x(i,(async([a,t],e)=>[a,await u(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>c?(await u(l,k))[q]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await d(),y(t)){const[t,e]=a();await m(t),await A(e)}else{const[a,e]=t();await m(a,!0),await A(e,!0)}}))),e,s,n,["getDb",E],E)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",oa="tableId",ca="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[ca]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return C(a,((a,i)=>{const o=d(D(g(t,E(a)?{[e]:a}:a)),0,I(t));y(o[0])||s(i,o[0])||_(n,i,o)})),n},wa="pragma ",Ea="data_version",da="schema_version",ua=(a,t,s,n,i,o,l,y)=>{let w,u;const[f,p,T,m]=(a=>{const t=(a=>g(ra,E(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],H(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=d(D(g(la,o)),0,I(la)),r=c[2],l=H(r);return[0,s,[ya(n,{[oa]:null,[ia]:k},oa,(a=>W(l,a)&&a==r)),ya(i,{[ca]:null,[ia]:k,deleteEmptyColumns:0,deleteEmptyTable:0},ca,((a,t)=>W(l,t)&&t==r)),c],l]})(t);return(f?ta:ea)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[c((async()=>{try{const t=(await s(wa+Ea))[0][Ea],e=(await s(wa+da))[0][da];t==(w??=t)&&e==(u??=e)||(a(),w=t,u=e)}catch{}}),1e3*p),n((t=>m.has(t)?a():0))]),(([a,t])=>{r(a),w=u=null,i(t)}),l,T,h(m),y)};a.createExpoSqlitePersister=(a,t,e,s,n)=>ua(a,e,(async(a,e=[])=>(await t.execAsync([{sql:a,args:e}],!1))[0].rows),(a=>t.onDatabaseChange((({tableName:t})=>a(t)))),(a=>a.remove()),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterExpoSqlite={});
@@ -1 +1 @@
1
- var t,e;t=this,e=function(t,e,a){"use strict";const s="utf8",n=(t,e)=>t instanceof e,o=t=>null==t,i=Object,r=i.keys,c=i.freeze,u=t=>(t=>n(t,i)&&t.constructor==i)(t)&&0==(t=>r(t).length)(t),f=JSON.parse,y=t=>new Map(t),d=(t,e)=>t?.get(e),l=(t,e,a)=>{return o(a)?(s=t,n=e,s?.delete(n),t):t?.set(e,a);var s,n},p=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||l(t,e,a()),d(t,e)},w=y(),h=y();t.createFilePersister=(t,r,y)=>((t,e,a,s,n,i,r=[])=>{let f,y,v,g=0,A=0;p(w,r,(()=>0)),p(h,r,(()=>[]));const S=async t=>(2!=g&&(g=1,await m.schedule((async()=>{await t(),g=0}))),m),m={load:async(a,s)=>await S((async()=>{try{t.setContent(await e())}catch{t.setContent([a,s])}})),startAutoLoad:async(a={},n={})=>(m.stopAutoLoad(),await m.load(a,n),A=1,v=s((async(a,s)=>{if(s){const e=s();await S((async()=>t.setTransactionChanges(e)))}else await S((async()=>{try{t.setContent(a?.()??await e())}catch(t){i?.(t)}}))})),m),stopAutoLoad:()=>(A&&(n(v),v=void 0,A=0),m),save:async e=>(1!=g&&(g=2,await m.schedule((async()=>{try{await a(t.getContent,e)}catch(t){i?.(t)}g=0}))),m),startAutoSave:async()=>(await m.stopAutoSave().save(),f=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();u(a)&&u(s)||m.save((()=>[a,s]))})),m),stopAutoSave:()=>{var e,a;return e=f,a=t.delListener,o(e)||a(e),m},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(d(h,r),...t),await(async()=>{if(!d(w,r)){for(l(w,r,1);!o((t=d(h,r),y=t.shift()));)try{await y()}catch(t){i?.(t)}l(w,r,0)}var t})(),m),getStore:()=>t,destroy:()=>m.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return c(m)})(t,(async()=>f(await a.readFile(r,s))),(async t=>{return await a.writeFile(r,(e=t(),JSON.stringify(e,((t,e)=>n(e,Map)?i.fromEntries([...e]):e))),s);var e}),(t=>e.watch(r,(()=>t()))),(t=>t?.close()),y)},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("fs"),require("fs/promises")):"function"==typeof define&&define.amd?define(["exports","fs","fs/promises"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterFile={},t.fs,t["fs/promises"]);
1
+ var t,e;t=this,e=function(t,e,a){"use strict";const s="utf8",n=(t,e)=>t instanceof e,i=t=>null==t,o=Object,r=o.keys,c=o.freeze,u=t=>(t=>n(t,o)&&t.constructor==o)(t)&&0==(t=>r(t).length)(t),d=JSON.parse,f=t=>new Map(t),y=(t,e)=>t?.get(e),l=(t,e,a)=>{return i(a)?(s=t,n=e,s?.delete(n),t):t?.set(e,a);var s,n},p=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||l(t,e,a()),y(t,e)},h=f(),w=f();t.createFilePersister=(t,r,f)=>((t,e,a,s,n,o,[r,d]=[],f=[])=>{let v,g,A,S=0,m=0;p(h,f,(()=>0)),p(w,f,(()=>[]));const F=async t=>(2!=S&&(S=1,await L.schedule((async()=>{await t(),S=0}))),L),L={load:async(a,s)=>await F((async()=>{try{t.setContent(await e())}catch{t.setContent([a,s])}})),startAutoLoad:async(a={},n={})=>(L.stopAutoLoad(),await L.load(a,n),m=1,A=s((async(a,s)=>{if(s){const e=s();await F((async()=>t.setTransactionChanges(e)))}else await F((async()=>{try{t.setContent(a?.()??await e())}catch(t){o?.(t)}}))})),L),stopAutoLoad:()=>(m&&(n(A),A=void 0,m=0),L),save:async e=>(1!=S&&(S=2,await L.schedule((async()=>{try{await a(t.getContent,e)}catch(t){o?.(t)}S=0}))),L),startAutoSave:async()=>(await L.stopAutoSave().save(),v=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();u(a)&&u(s)||L.save((()=>[a,s]))})),L),stopAutoSave:()=>{var e,a;return e=v,a=t.delListener,i(e)||a(e),v=void 0,L},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(y(w,f),...t),await(async()=>{if(!y(h,f)){for(l(h,f,1);!i((t=y(w,f),g=t.shift()));)try{await g()}catch(t){o?.(t)}l(h,f,0)}var t})(),L),getStore:()=>t,destroy:()=>L.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return r&&(L[r]=()=>d),c(L)})(t,(async()=>d(await a.readFile(r,s))),(async t=>{return await a.writeFile(r,(e=t(),JSON.stringify(e,((t,e)=>n(e,Map)?o.fromEntries([...e]):e))),s);var e}),(t=>e.watch(r,(()=>t()))),(t=>t?.close()),f,["getFilePath",r])},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("fs"),require("fs/promises")):"function"==typeof define&&define.amd?define(["exports","fs","fs/promises"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterFile={},t.fs,t["fs/promises"]);
@@ -1 +1 @@
1
- var t,e;t=this,e=function(t){"use strict";const e=Promise,a=setInterval,s=clearInterval,n=t=>null==t,o=(t,e,a)=>n(t)?a?.():e(t),c=t=>new e(t),r=async t=>e.all(t),i=(t,e)=>t.map(e),d=(t,...e)=>t.push(...e),y=Object,l=y.keys,u=y.freeze,w=t=>(t=>t instanceof y&&t.constructor==y)(t)&&0==(t=>l(t).length)(t),h=t=>new Map(t),p=(t,e)=>t?.get(e),f=(t,e,a)=>{return n(a)?(s=t,o=e,s?.delete(o),t):t?.set(e,a);var s,o},v=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||f(t,e,a()),p(t,e)},g=h(),b=h(),A=globalThis.window,S=["t","v"],x={keyPath:"k"},j=async(t,e)=>{const a=((e,a)=>i(y.entries(e),(([e,a])=>L(t,"put",{k:e,v:a}))))(e);i(await L(t,"getAllKeys"),(s=>((t,e)=>!n(((t,e)=>o(t,(t=>t[e])))(t,e)))(e,s)?0:d(a,L(t,"delete",s)))),await r(a)},L=async(t,e,a)=>c(((s,n)=>{const o=t[e](a);o.onsuccess=()=>s(o.result),o.onerror=()=>n(`objectStore.${e} error`)}));t.createIndexedDbPersister=(t,e,l=1,h)=>{const T=async(t,a=[],s=0)=>c(((n,o)=>{const c=A.indexedDB.open(e,s?2:void 0);c.onupgradeneeded=()=>s&&i(S,(t=>{try{c.result.createObjectStore(t,x)}catch{}})),c.onsuccess=async()=>{try{const e=c.result.transaction(S,"readwrite"),s=await r(i(S,(async(s,n)=>await t(e.objectStore(s),a[n]))));c.result.close(),n(s)}catch(t){o(t)}},c.onerror=()=>o("indexedDB.open error")}));return((t,e,a,s,c,r,i=[])=>{let y,l,h,A=0,S=0;v(g,i,(()=>0)),v(b,i,(()=>[]));const x=async t=>(2!=A&&(A=1,await j.schedule((async()=>{await t(),A=0}))),j),j={load:async(a,s)=>await x((async()=>{try{t.setContent(await e())}catch{t.setContent([a,s])}})),startAutoLoad:async(a={},n={})=>(j.stopAutoLoad(),await j.load(a,n),S=1,h=s((async(a,s)=>{if(s){const e=s();await x((async()=>t.setTransactionChanges(e)))}else await x((async()=>{try{t.setContent(a?.()??await e())}catch(t){r?.(t)}}))})),j),stopAutoLoad:()=>(S&&(c(h),h=void 0,S=0),j),save:async e=>(1!=A&&(A=2,await j.schedule((async()=>{try{await a(t.getContent,e)}catch(t){r?.(t)}A=0}))),j),startAutoSave:async()=>(await j.stopAutoSave().save(),y=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();w(a)&&w(s)||j.save((()=>[a,s]))})),j),stopAutoSave:()=>(o(y,t.delListener),j),schedule:async(...t)=>(d(p(b,i),...t),await(async()=>{if(!p(g,i)){for(f(g,i,1);!n((t=p(b,i),l=t.shift()));)try{await l()}catch(t){r?.(t)}f(g,i,0)}var t})(),j),getStore:()=>t,destroy:()=>j.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return u(j)})(t,(async()=>await T((async t=>((t=[])=>y.fromEntries(t))(i(await L(t,"getAll"),(({k:t,v:e})=>[t,e])))))),(async t=>await T((async(t,e)=>await j(t,e)),t(),1)),(t=>a(t,1e3*l)),(t=>s(t)),h)},t.objectStoreMatch=j},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterIndexedDb={});
1
+ var t,e;t=this,e=function(t){"use strict";const e=Promise,a=setInterval,s=clearInterval,n=t=>null==t,o=(t,e,a)=>n(t)?a?.():e(t),c=t=>new e(t),r=async t=>e.all(t),i=(t,e)=>t.map(e),d=(t,...e)=>t.push(...e),y=Object,l=y.keys,u=y.freeze,w=t=>(t=>t instanceof y&&t.constructor==y)(t)&&0==(t=>l(t).length)(t),h=t=>new Map(t),p=(t,e)=>t?.get(e),f=(t,e,a)=>{return n(a)?(s=t,o=e,s?.delete(o),t):t?.set(e,a);var s,o},v=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||f(t,e,a()),p(t,e)},g=h(),b=h(),A=globalThis.window,S=["t","v"],x={keyPath:"k"},j=async(t,e)=>{const a=((e,a)=>i(y.entries(e),(([e,a])=>m(t,"put",{k:e,v:a}))))(e);i(await m(t,"getAllKeys"),(s=>((t,e)=>!n(((t,e)=>o(t,(t=>t[e])))(t,e)))(e,s)?0:d(a,m(t,"delete",s)))),await r(a)},m=async(t,e,a)=>c(((s,n)=>{const o=t[e](a);o.onsuccess=()=>s(o.result),o.onerror=()=>n(`objectStore.${e} error`)}));t.createIndexedDbPersister=(t,e,l=1,h)=>{const D=async(t,a=[],s=0)=>c(((n,o)=>{const c=A.indexedDB.open(e,s?2:void 0);c.onupgradeneeded=()=>s&&i(S,(t=>{try{c.result.createObjectStore(t,x)}catch{}})),c.onsuccess=async()=>{try{const e=c.result.transaction(S,"readwrite"),s=await r(i(S,(async(s,n)=>await t(e.objectStore(s),a[n]))));c.result.close(),n(s)}catch(t){o(t)}},c.onerror=()=>o("indexedDB.open error")}));return((t,e,a,s,c,r,[i,y]=[],l=[])=>{let h,A,S,x=0,j=0;v(g,l,(()=>0)),v(b,l,(()=>[]));const m=async t=>(2!=x&&(x=1,await D.schedule((async()=>{await t(),x=0}))),D),D={load:async(a,s)=>await m((async()=>{try{t.setContent(await e())}catch{t.setContent([a,s])}})),startAutoLoad:async(a={},n={})=>(D.stopAutoLoad(),await D.load(a,n),j=1,S=s((async(a,s)=>{if(s){const e=s();await m((async()=>t.setTransactionChanges(e)))}else await m((async()=>{try{t.setContent(a?.()??await e())}catch(t){r?.(t)}}))})),D),stopAutoLoad:()=>(j&&(c(S),S=void 0,j=0),D),save:async e=>(1!=x&&(x=2,await D.schedule((async()=>{try{await a(t.getContent,e)}catch(t){r?.(t)}x=0}))),D),startAutoSave:async()=>(await D.stopAutoSave().save(),h=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();w(a)&&w(s)||D.save((()=>[a,s]))})),D),stopAutoSave:()=>(o(h,t.delListener),h=void 0,D),schedule:async(...t)=>(d(p(b,l),...t),await(async()=>{if(!p(g,l)){for(f(g,l,1);!n((t=p(b,l),A=t.shift()));)try{await A()}catch(t){r?.(t)}f(g,l,0)}var t})(),D),getStore:()=>t,destroy:()=>D.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return i&&(D[i]=()=>y),u(D)})(t,(async()=>await D((async t=>((t=[])=>y.fromEntries(t))(i(await m(t,"getAll"),(({k:t,v:e})=>[t,e])))))),(async t=>await D((async(t,e)=>await j(t,e)),t(),1)),(t=>a(t,1e3*l)),(t=>s(t)),h,["getDbName",e])},t.objectStoreMatch=j},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterIndexedDb={});
@@ -1 +1 @@
1
- var t,e;t=this,e=function(t){"use strict";const e=t=>typeof t,a="",s=e(a),o=(t,e)=>t instanceof e,n=t=>null==t,r=(t,e,a)=>n(t)?a?.():e(t),i=t=>e(t)==s,c=t=>t.length,d=Object,y=d.keys,u=d.freeze,f=t=>(t=>o(t,d)&&t.constructor==d)(t)&&0==(t=>c(y(t)))(t),h=t=>JSON.stringify(t,((t,e)=>o(e,Map)?d.fromEntries([...e]):e)),l=JSON.parse,p="/store",v=t=>new Map(t),w=(t,e)=>t?.get(e),g=(t,e,a)=>{return n(a)?(s=t,o=e,s?.delete(o),t):t?.set(e,a);var s,o},m=(t,e,a)=>{var s,o;return s=t,o=e,s?.has(o)||g(t,e,a()),w(t,e)},P=v(),S=v(),A="message";t.createPartyKitPersister=(t,e,s,o)=>{const{host:d,room:y}=e.partySocketOptions,{storeProtocol:v="https",storePath:L=p,messagePrefix:C=a}={...i(s)?{storeProtocol:s}:s},T=v+"://"+d+"/parties/"+(e.name??"main")+"/"+y+L,b=async t=>await(await fetch(T,{...t?{method:"PUT",body:h(t)}:{},mode:"cors",cache:"no-store"})).json();return((t,e,a,s,o,i,c=[])=>{let d,y,h,l=0,p=0;m(P,c,(()=>0)),m(S,c,(()=>[]));const v=async t=>(2!=l&&(l=1,await A.schedule((async()=>{await t(),l=0}))),A),A={load:async(a,s)=>await v((async()=>{try{t.setContent(await e())}catch{t.setContent([a,s])}})),startAutoLoad:async(a={},o={})=>(A.stopAutoLoad(),await A.load(a,o),p=1,h=s((async(a,s)=>{if(s){const e=s();await v((async()=>t.setTransactionChanges(e)))}else await v((async()=>{try{t.setContent(a?.()??await e())}catch(t){i?.(t)}}))})),A),stopAutoLoad:()=>(p&&(o(h),h=void 0,p=0),A),save:async e=>(1!=l&&(l=2,await A.schedule((async()=>{try{await a(t.getContent,e)}catch(t){i?.(t)}l=0}))),A),startAutoSave:async()=>(await A.stopAutoSave().save(),d=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();f(a)&&f(s)||A.save((()=>[a,s]))})),A),stopAutoSave:()=>(r(d,t.delListener),A),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(w(S,c),...t),await(async()=>{if(!w(P,c)){for(g(P,c,1);!n((t=w(S,c),y=t.shift()));)try{await y()}catch(t){i?.(t)}g(P,c,0)}var t})(),A),getStore:()=>t,destroy:()=>A.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return u(A)})(t,(async()=>await b()),(async(t,a)=>{var s,o;a?e.send((s=C,o=a(),s+"s"+(i(o)?o:h(o)))):await b(t())}),(t=>{const a=e=>r(((t,e,a)=>{const s=c(t);return((t,e)=>t.startsWith(e))(e,t)?[e[s],l((o=e,n=s+1,o.slice(n,void 0)))]:void 0;var o,n})(C,e.data),(([e,a])=>{"s"==e&&t(void 0,(()=>a))}));return e.addEventListener(A,a),a}),(t=>{e.removeEventListener(A,t)}),o)}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPartyKitClient={});
1
+ var t,e;t=this,e=function(t){"use strict";const e=t=>typeof t,a="",s=e(a),o=(t,e)=>t instanceof e,n=t=>null==t,r=(t,e,a)=>n(t)?a?.():e(t),i=t=>e(t)==s,c=t=>t.length,d=Object,y=d.keys,u=d.freeze,f=t=>(t=>o(t,d)&&t.constructor==d)(t)&&0==(t=>c(y(t)))(t),h=t=>JSON.stringify(t,((t,e)=>o(e,Map)?d.fromEntries([...e]):e)),l=JSON.parse,p="/store",v=t=>new Map(t),w=(t,e)=>t?.get(e),g=(t,e,a)=>{return n(a)?(s=t,o=e,s?.delete(o),t):t?.set(e,a);var s,o},m=(t,e,a)=>{var s,o;return s=t,o=e,s?.has(o)||g(t,e,a()),w(t,e)},P=v(),S=v(),A="message";t.createPartyKitPersister=(t,e,s,o)=>{const{host:d,room:y}=e.partySocketOptions,{storeProtocol:v="https",storePath:L=p,messagePrefix:C=a}={...i(s)?{storeProtocol:s}:s},T=v+"://"+d+"/parties/"+e.name+"/"+y+L,b=async t=>await(await fetch(T,{...t?{method:"PUT",body:h(t)}:{},mode:"cors",cache:"no-store"})).json();return((t,e,a,s,o,i,[c,d]=[],y=[])=>{let h,l,p,v=0,A=0;m(P,y,(()=>0)),m(S,y,(()=>[]));const L=async t=>(2!=v&&(v=1,await C.schedule((async()=>{await t(),v=0}))),C),C={load:async(a,s)=>await L((async()=>{try{t.setContent(await e())}catch{t.setContent([a,s])}})),startAutoLoad:async(a={},o={})=>(C.stopAutoLoad(),await C.load(a,o),A=1,p=s((async(a,s)=>{if(s){const e=s();await L((async()=>t.setTransactionChanges(e)))}else await L((async()=>{try{t.setContent(a?.()??await e())}catch(t){i?.(t)}}))})),C),stopAutoLoad:()=>(A&&(o(p),p=void 0,A=0),C),save:async e=>(1!=v&&(v=2,await C.schedule((async()=>{try{await a(t.getContent,e)}catch(t){i?.(t)}v=0}))),C),startAutoSave:async()=>(await C.stopAutoSave().save(),h=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();f(a)&&f(s)||C.save((()=>[a,s]))})),C),stopAutoSave:()=>(r(h,t.delListener),h=void 0,C),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(w(S,y),...t),await(async()=>{if(!w(P,y)){for(g(P,y,1);!n((t=w(S,y),l=t.shift()));)try{await l()}catch(t){i?.(t)}g(P,y,0)}var t})(),C),getStore:()=>t,destroy:()=>C.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return c&&(C[c]=()=>d),u(C)})(t,(async()=>await b()),(async(t,a)=>{var s,o;a?e.send((s=C,o=a(),s+"s"+(i(o)?o:h(o)))):await b(t())}),(t=>{const a=e=>r(((t,e,a)=>{const s=c(t);return((t,e)=>t.startsWith(e))(e,t)?[e[s],l((o=e,n=s+1,o.slice(n,void 0)))]:void 0;var o,n})(C,e.data),(([e,a])=>{"s"==e&&t(void 0,(()=>a))}));return e.addEventListener(A,a),a}),(t=>{e.removeEventListener(A,t)}),o,["getConnection",e])}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPartyKitClient={});
@@ -1 +1 @@
1
- var t,e;t=this,e=function(t){"use strict";const e=setInterval,a=clearInterval,s=(t,e)=>t instanceof e,n=t=>null==t,o=Object,r=o.keys,c=o.freeze,i=t=>(t=>s(t,o)&&t.constructor==o)(t)&&0==(t=>r(t).length)(t),d=JSON.parse,y=t=>new Map(t),u=(t,e)=>t?.get(e),f=(t,e,a)=>{return n(a)?(s=t,o=e,s?.delete(o),t):t?.set(e,a);var s,o},h=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||f(t,e,a()),u(t,e)},l=y(),p=y(),w=t=>t.headers.get("ETag");t.createRemotePersister=(t,r,y,v=5,g)=>{let A;return((t,e,a,s,o,r,d=[])=>{let y,w,v,g=0,A=0;h(l,d,(()=>0)),h(p,d,(()=>[]));const S=async t=>(2!=g&&(g=1,await T.schedule((async()=>{await t(),g=0}))),T),T={load:async(a,s)=>await S((async()=>{try{t.setContent(await e())}catch{t.setContent([a,s])}})),startAutoLoad:async(a={},n={})=>(T.stopAutoLoad(),await T.load(a,n),A=1,v=s((async(a,s)=>{if(s){const e=s();await S((async()=>t.setTransactionChanges(e)))}else await S((async()=>{try{t.setContent(a?.()??await e())}catch(t){r?.(t)}}))})),T),stopAutoLoad:()=>(A&&(o(v),v=void 0,A=0),T),save:async e=>(1!=g&&(g=2,await T.schedule((async()=>{try{await a(t.getContent,e)}catch(t){r?.(t)}g=0}))),T),startAutoSave:async()=>(await T.stopAutoSave().save(),y=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();i(a)&&i(s)||T.save((()=>[a,s]))})),T),stopAutoSave:()=>{var e,a;return e=y,a=t.delListener,n(e)||a(e),T},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(u(p,d),...t),await(async()=>{if(!u(l,d)){for(f(l,d,1);!n((t=u(p,d),w=t.shift()));)try{await w()}catch(t){r?.(t)}f(l,d,0)}var t})(),T),getStore:()=>t,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return c(T)})(t,(async()=>{const t=await fetch(r);return A=w(t),d(await t.text())}),(async t=>{return await fetch(y,{method:"POST",headers:{"Content-Type":"application/json"},body:(e=t(),JSON.stringify(e,((t,e)=>s(e,Map)?o.fromEntries([...e]):e)))});var e}),(t=>e((async()=>{const e=await fetch(r,{method:"HEAD"}),a=w(e);n(A)||n(a)||a==A||(A=a,t())}),1e3*v)),(t=>a(t)),g)}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterRemote={});
1
+ var t,e;t=this,e=function(t){"use strict";const e=setInterval,a=clearInterval,s=(t,e)=>t instanceof e,n=t=>null==t,o=Object,r=o.keys,c=o.freeze,i=t=>(t=>s(t,o)&&t.constructor==o)(t)&&0==(t=>r(t).length)(t),d=JSON.parse,y=t=>new Map(t),u=(t,e)=>t?.get(e),l=(t,e,a)=>{return n(a)?(s=t,o=e,s?.delete(o),t):t?.set(e,a);var s,o},f=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||l(t,e,a()),u(t,e)},h=y(),p=y(),w=t=>t.headers.get("ETag");t.createRemotePersister=(t,r,y,v=5,g)=>{let A;return((t,e,a,s,o,r,[d,y]=[],w=[])=>{let v,g,A,S=0,T=0;f(h,w,(()=>0)),f(p,w,(()=>[]));const m=async t=>(2!=S&&(S=1,await C.schedule((async()=>{await t(),S=0}))),C),C={load:async(a,s)=>await m((async()=>{try{t.setContent(await e())}catch{t.setContent([a,s])}})),startAutoLoad:async(a={},n={})=>(C.stopAutoLoad(),await C.load(a,n),T=1,A=s((async(a,s)=>{if(s){const e=s();await m((async()=>t.setTransactionChanges(e)))}else await m((async()=>{try{t.setContent(a?.()??await e())}catch(t){r?.(t)}}))})),C),stopAutoLoad:()=>(T&&(o(A),A=void 0,T=0),C),save:async e=>(1!=S&&(S=2,await C.schedule((async()=>{try{await a(t.getContent,e)}catch(t){r?.(t)}S=0}))),C),startAutoSave:async()=>(await C.stopAutoSave().save(),v=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();i(a)&&i(s)||C.save((()=>[a,s]))})),C),stopAutoSave:()=>{var e,a;return e=v,a=t.delListener,n(e)||a(e),v=void 0,C},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(u(p,w),...t),await(async()=>{if(!u(h,w)){for(l(h,w,1);!n((t=u(p,w),g=t.shift()));)try{await g()}catch(t){r?.(t)}l(h,w,0)}var t})(),C),getStore:()=>t,destroy:()=>C.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return d&&(C[d]=()=>y),c(C)})(t,(async()=>{const t=await fetch(r);return A=w(t),d(await t.text())}),(async t=>{return await fetch(y,{method:"POST",headers:{"Content-Type":"application/json"},body:(e=t(),JSON.stringify(e,((t,e)=>s(e,Map)?o.fromEntries([...e]):e)))});var e}),(t=>e((async()=>{const e=await fetch(r,{method:"HEAD"}),a=w(e);n(A)||n(a)||a==A||(A=a,t())}),1e3*v)),(t=>a(t)),g,["getUrls",[r,y]])}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterRemote={});
@@ -1 +1 @@
1
- var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),o=Promise,c=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),u=a=>t(a)==n,d=(a,t,e)=>a.slice(t,e),E=a=>a.length,p=async a=>o.all(a),f=(a,t="")=>a.join(t),m=(a,t)=>a.map(t),T=a=>0==E(a),v=(a,t)=>a.filter(t),h=(a,...t)=>a.push(...t),A=(a,t)=>a?.has(t)??!1,L=a=>[...a?.values()??[]],R=(a,t)=>a?.delete(t),N=Object,O=N.keys,S=N.freeze,C=(a=[])=>N.fromEntries(a),b=(...a)=>N.assign({},...a),D=(a,t)=>m(N.entries(a),(([a,e])=>t(e,a))),g=a=>N.values(a),I=a=>E(O(a)),_=a=>(a=>l(a,N)&&a.constructor==N)(a)&&0==I(a),M=a=>new Map(a),F=a=>[...a?.keys()??[]],$=(a,t)=>a?.get(t),P=(a,t)=>m([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(R(a,t),a):a?.set(t,e),W=(a,t,e)=>(A(a,t)||B(a,t,e()),$(a,t)),j=(a,t,e,s=B)=>(D(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),x=a=>new Set(Array.isArray(a)||y(a)?a:[a]),k=(a,t)=>a?.add(t),q="_",H="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",V="WHERE",Y=(a,t,e)=>{const n=M();return[async()=>j(n,C(await p(m(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+G(t)+")",t),(async({name:t})=>[t,C(m(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,j(W(n,t,M),e,((a,t,e)=>{e!=$(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y($($(n,a),t)))(t,e)?C(v(m(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!_(t)))):{},async(t,e,i,o,c,r=!1)=>{const l=x();D(i??{},(a=>m(O(a??{}),(a=>k(l,a)))));const w=L(l);if(!r&&c&&T(w)&&A(n,t))return await a("DROP TABLE"+J(t)),void B(n,t);if(T(w)||A(n,t)){const s=$(n,t),i=x(F(s));await p([...m(w,(async e=>{R(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),B(s,e,""))})),...!r&&o?m(L(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${f(m(w,(a=>s+J(a))))});`),B(n,t,M([[e,""],...m(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await p(D(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+V+J(e)+"=?",[n]):T(w)||await z(a,t,e,O(s),[n,...g(s)])})));else if(T(w))A(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=v(F($(n,t)),(a=>a!=e)),o=[],c=[];D(i??{},((a,t)=>{h(o,t,...m(s,(t=>a?.[t]))),h(c,t)})),await z(a,t,e,s,o),await a("DELETE FROM"+J(t)+V+J(e)+"NOT IN("+G(c)+")",c)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},z=async(a,t,e,n,o)=>await a("INSERT INTO"+J(t)+"("+J(e)+f(m(n,(a=>s+J(a))))+")VALUES"+d(i(`,(?${i(",?",E(n))})`,E(o)/(E(n)+1)),1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+f(m(n,(a=>J(a)+"=excluded."+J(a))),s),o),G=a=>f(m(a,(()=>"?")),s),K=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,o=[])=>{let c,r,l,u=0,d=0;W(Q,o,(()=>0)),W(X,o,(()=>[]));const E=async a=>(2!=u&&(u=1,await p.schedule((async()=>{await a(),u=0}))),p),p={load:async(e,s)=>await E((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(p.stopAutoLoad(),await p.load(e,n),d=1,l=s((async(e,s)=>{if(s){const t=s();await E((async()=>a.setTransactionChanges(t)))}else await E((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),p),stopAutoLoad:()=>(d&&(n(l),l=void 0,d=0),p),save:async t=>(1!=u&&(u=2,await p.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}u=0}))),p),startAutoSave:async()=>(await p.stopAutoSave().save(),c=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();_(e)&&_(s)||p.save((()=>[e,s]))})),p),stopAutoSave:()=>(w(c,a.delListener),p),schedule:async(...a)=>(h($(X,o),...a),await(async()=>{if(!$(Q,o)){for(B(Q,o,1);!y((a=$(X,o),r=a.shift()));)try{await r()}catch(a){i?.(a)}B(Q,o,0)}var a})(),p),getStore:()=>a,destroy:()=>p.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return S(p)},aa="store",ta=(a,t,e,s,n,[i],o,c)=>{const[r,y,w,u]=Y(t,o,n);return Z(a,(async()=>await u((async()=>(await r(),K((await y(i,H))[q]?.[aa]??"null"))))),(async a=>await u((async()=>{var t;await r(),await w(i,H,{[q]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?N.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,c)},ea=(a,t,e,s,n,[i,o,[c,r,l]],w,u)=>{const[d,E,f,m]=Y(t,w,n),T=async(a,t)=>await p(P(o,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await f(e,s,c,n,i,t)}))),h=async(a,t)=>r?await f(l,H,{[q]:a},!0,!0,t):null;return Z(a,(async()=>await m((async()=>{await d();const a=await(async()=>C(v(await p(P(i,(async([a,t],e)=>[a,await E(e,t)]))),(a=>!_(a[1])))))(),t=await(async()=>c?(await E(l,H))[q]:{})();return _(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await m((async()=>{if(await d(),y(t)){const[t,e]=a();await T(t),await h(e)}else{const[a,e]=t();await T(a,!0),await h(e,!0)}}))),e,s,n,u)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",oa="tableId",ca="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[ca]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return D(a,((a,i)=>{const o=d(g(b(t,u(a)?{[e]:a}:a)),0,I(t));y(o[0])||s(i,o[0])||B(n,i,o)})),n},wa="pragma ",ua="data_version",da="schema_version",Ea=(a,t,s,n,i,o,l,y)=>{let w,E;const[p,f,m,T]=(a=>{const t=(a=>b(ra,u(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],x(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=d(g(b(la,o)),0,I(la)),r=c[2],l=x(r);return[0,s,[ya(n,{[oa]:null,[ia]:H},oa,(a=>k(l,a)&&a==r)),ya(i,{[ca]:null,[ia]:H,deleteEmptyColumns:0,deleteEmptyTable:0},ca,((a,t)=>k(l,t)&&t==r)),c],l]})(t);return(p?ta:ea)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[c((async()=>{try{const t=(await s(wa+ua))[0][ua],e=(await s(wa+da))[0][da];t==(w??=t)&&e==(E??=e)||(a(),w=t,E=e)}catch{}}),1e3*f),n((t=>T.has(t)?a():0))]),(([a,t])=>{r(a),w=E=null,i(t)}),l,m,L(T),y)};a.createSqliteWasmPersister=(a,t,e,s,n,i)=>Ea(a,s,(async(a,t=[])=>e.exec(a,{bind:t,rowMode:"object",returnValue:"resultRows"}).map((a=>({...a})))),(a=>t.capi.sqlite3_update_hook(e,((t,e,s,n)=>a(n)),0)),(()=>t.capi.sqlite3_update_hook(e,(()=>0),0)),n,i,e)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterSqliteWasm={});
1
+ var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),o=Promise,c=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),u=a=>t(a)==n,d=(a,t,e)=>a.slice(t,e),E=a=>a.length,p=async a=>o.all(a),f=(a,t="")=>a.join(t),m=(a,t)=>a.map(t),T=a=>0==E(a),v=(a,t)=>a.filter(t),h=(a,...t)=>a.push(...t),A=(a,t)=>a?.has(t)??!1,L=a=>[...a?.values()??[]],R=(a,t)=>a?.delete(t),N=Object,O=N.keys,S=N.freeze,b=(a=[])=>N.fromEntries(a),C=(...a)=>N.assign({},...a),D=(a,t)=>m(N.entries(a),(([a,e])=>t(e,a))),g=a=>N.values(a),I=a=>E(O(a)),_=a=>(a=>l(a,N)&&a.constructor==N)(a)&&0==I(a),M=a=>new Map(a),F=a=>[...a?.keys()??[]],$=(a,t)=>a?.get(t),P=(a,t)=>m([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(R(a,t),a):a?.set(t,e),W=(a,t,e)=>(A(a,t)||B(a,t,e()),$(a,t)),j=(a,t,e,s=B)=>(D(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),x=a=>new Set(Array.isArray(a)||y(a)?a:[a]),k=(a,t)=>a?.add(t),q="_",H="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",V="WHERE",Y=(a,t,e)=>{const n=M();return[async()=>j(n,b(await p(m(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+G(t)+")",t),(async({name:t})=>[t,b(m(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,j(W(n,t,M),e,((a,t,e)=>{e!=$(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y($($(n,a),t)))(t,e)?b(v(m(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!_(t)))):{},async(t,e,i,o,c,r=!1)=>{const l=x();D(i??{},(a=>m(O(a??{}),(a=>k(l,a)))));const w=L(l);if(!r&&c&&T(w)&&A(n,t))return await a("DROP TABLE"+J(t)),void B(n,t);if(T(w)||A(n,t)){const s=$(n,t),i=x(F(s));await p([...m(w,(async e=>{R(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),B(s,e,""))})),...!r&&o?m(L(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${f(m(w,(a=>s+J(a))))});`),B(n,t,M([[e,""],...m(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await p(D(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+V+J(e)+"=?",[n]):T(w)||await z(a,t,e,O(s),[n,...g(s)])})));else if(T(w))A(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=v(F($(n,t)),(a=>a!=e)),o=[],c=[];D(i??{},((a,t)=>{h(o,t,...m(s,(t=>a?.[t]))),h(c,t)})),await z(a,t,e,s,o),await a("DELETE FROM"+J(t)+V+J(e)+"NOT IN("+G(c)+")",c)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},z=async(a,t,e,n,o)=>await a("INSERT INTO"+J(t)+"("+J(e)+f(m(n,(a=>s+J(a))))+")VALUES"+d(i(`,(?${i(",?",E(n))})`,E(o)/(E(n)+1)),1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+f(m(n,(a=>J(a)+"=excluded."+J(a))),s),o),G=a=>f(m(a,(()=>"?")),s),K=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,[o,c]=[],r=[])=>{let l,u,d,E=0,p=0;W(Q,r,(()=>0)),W(X,r,(()=>[]));const f=async a=>(2!=E&&(E=1,await m.schedule((async()=>{await a(),E=0}))),m),m={load:async(e,s)=>await f((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(m.stopAutoLoad(),await m.load(e,n),p=1,d=s((async(e,s)=>{if(s){const t=s();await f((async()=>a.setTransactionChanges(t)))}else await f((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),m),stopAutoLoad:()=>(p&&(n(d),d=void 0,p=0),m),save:async t=>(1!=E&&(E=2,await m.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}E=0}))),m),startAutoSave:async()=>(await m.stopAutoSave().save(),l=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();_(e)&&_(s)||m.save((()=>[e,s]))})),m),stopAutoSave:()=>(w(l,a.delListener),l=void 0,m),schedule:async(...a)=>(h($(X,r),...a),await(async()=>{if(!$(Q,r)){for(B(Q,r,1);!y((a=$(X,r),u=a.shift()));)try{await u()}catch(a){i?.(a)}B(Q,r,0)}var a})(),m),getStore:()=>a,destroy:()=>m.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return o&&(m[o]=()=>c),S(m)},aa="store",ta=(a,t,e,s,n,[i],o,c)=>{const[r,y,w,u]=Y(t,o,n);return Z(a,(async()=>await u((async()=>(await r(),K((await y(i,H))[q]?.[aa]??"null"))))),(async a=>await u((async()=>{var t;await r(),await w(i,H,{[q]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?N.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,["getDb",c],c)},ea=(a,t,e,s,n,[i,o,[c,r,l]],w,u)=>{const[d,E,f,m]=Y(t,w,n),T=async(a,t)=>await p(P(o,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await f(e,s,c,n,i,t)}))),h=async(a,t)=>r?await f(l,H,{[q]:a},!0,!0,t):null;return Z(a,(async()=>await m((async()=>{await d();const a=await(async()=>b(v(await p(P(i,(async([a,t],e)=>[a,await E(e,t)]))),(a=>!_(a[1])))))(),t=await(async()=>c?(await E(l,H))[q]:{})();return _(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await m((async()=>{if(await d(),y(t)){const[t,e]=a();await T(t),await h(e)}else{const[a,e]=t();await T(a,!0),await h(e,!0)}}))),e,s,n,["getDb",u],u)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",oa="tableId",ca="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[ca]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return D(a,((a,i)=>{const o=d(g(C(t,u(a)?{[e]:a}:a)),0,I(t));y(o[0])||s(i,o[0])||B(n,i,o)})),n},wa="pragma ",ua="data_version",da="schema_version",Ea=(a,t,s,n,i,o,l,y)=>{let w,E;const[p,f,m,T]=(a=>{const t=(a=>C(ra,u(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],x(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=d(g(C(la,o)),0,I(la)),r=c[2],l=x(r);return[0,s,[ya(n,{[oa]:null,[ia]:H},oa,(a=>k(l,a)&&a==r)),ya(i,{[ca]:null,[ia]:H,deleteEmptyColumns:0,deleteEmptyTable:0},ca,((a,t)=>k(l,t)&&t==r)),c],l]})(t);return(p?ta:ea)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[c((async()=>{try{const t=(await s(wa+ua))[0][ua],e=(await s(wa+da))[0][da];t==(w??=t)&&e==(E??=e)||(a(),w=t,E=e)}catch{}}),1e3*f),n((t=>T.has(t)?a():0))]),(([a,t])=>{r(a),w=E=null,i(t)}),l,m,L(T),y)};a.createSqliteWasmPersister=(a,t,e,s,n,i)=>Ea(a,s,(async(a,t=[])=>e.exec(a,{bind:t,rowMode:"object",returnValue:"resultRows"}).map((a=>({...a})))),(a=>t.capi.sqlite3_update_hook(e,((t,e,s,n)=>a(n)),0)),(()=>t.capi.sqlite3_update_hook(e,(()=>0),0)),n,i,e)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterSqliteWasm={});
@@ -1 +1 @@
1
- var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),c=Promise,o=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),u=a=>t(a)==n,E=(a,t,e)=>a.slice(t,e),d=a=>a.length,f=async a=>c.all(a),p=(a,t="")=>a.join(t),T=(a,t)=>a.map(t),m=a=>0==d(a),v=(a,t)=>a.filter(t),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),R=Object,O=R.keys,S=R.freeze,C=(a=[])=>R.fromEntries(a),g=(...a)=>R.assign({},...a),D=(a,t)=>T(R.entries(a),(([a,e])=>t(e,a))),b=a=>R.values(a),I=a=>d(O(a)),F=a=>(a=>l(a,R)&&a.constructor==R)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),_=(a,t)=>T([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),j=(a,t,e)=>(L(a,t)||B(a,t,e()),P(a,t)),x=(a,t,e,s=B)=>(D(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),H=a=>new Set(Array.isArray(a)||y(a)?a:[a]),W=(a,t)=>a?.add(t),k="_",q="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>x(n,C(await f(T(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,C(T(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,x(j(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?C(v(T(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,c,o,r=!1)=>{const l=H();D(i??{},(a=>T(O(a??{}),(a=>W(l,a)))));const w=h(l);if(!r&&o&&m(w)&&L(n,t))return await a("DROP TABLE"+J(t)),void B(n,t);if(m(w)||L(n,t)){const s=P(n,t),i=H($(s));await f([...T(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),B(s,e,""))})),...!r&&c?T(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${p(T(w,(a=>s+J(a))))});`),B(n,t,M([[e,""],...T(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await f(D(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+Y+J(e)+"=?",[n]):m(w)||await G(a,t,e,O(s),[n,...b(s)])})));else if(m(w))L(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=v($(P(n,t)),(a=>a!=e)),c=[],o=[];D(i??{},((a,t)=>{A(c,t,...T(s,(t=>a?.[t]))),A(o,t)})),await G(a,t,e,s,c),await a("DELETE FROM"+J(t)+Y+J(e)+"NOT IN("+K(o)+")",o)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,c)=>await a("INSERT INTO"+J(t)+"("+J(e)+p(T(n,(a=>s+J(a))))+")VALUES"+E(i(`,(?${i(",?",d(n))})`,d(c)/(d(n)+1)),1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+p(T(n,(a=>J(a)+"=excluded."+J(a))),s),c),K=a=>p(T(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,c=[])=>{let o,r,l,u=0,E=0;j(Q,c,(()=>0)),j(X,c,(()=>[]));const d=async a=>(2!=u&&(u=1,await f.schedule((async()=>{await a(),u=0}))),f),f={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(f.stopAutoLoad(),await f.load(e,n),E=1,l=s((async(e,s)=>{if(s){const t=s();await d((async()=>a.setTransactionChanges(t)))}else await d((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),f),stopAutoLoad:()=>(E&&(n(l),l=void 0,E=0),f),save:async t=>(1!=u&&(u=2,await f.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}u=0}))),f),startAutoSave:async()=>(await f.stopAutoSave().save(),o=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||f.save((()=>[e,s]))})),f),stopAutoSave:()=>(w(o,a.delListener),f),schedule:async(...a)=>(A(P(X,c),...a),await(async()=>{if(!P(Q,c)){for(B(Q,c,1);!y((a=P(X,c),r=a.shift()));)try{await r()}catch(a){i?.(a)}B(Q,c,0)}var a})(),f),getStore:()=>a,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return S(f)},aa="store",ta=(a,t,e,s,n,[i],c,o)=>{const[r,y,w,u]=z(t,c,n);return Z(a,(async()=>await u((async()=>(await r(),V((await y(i,q))[k]?.[aa]??"null"))))),(async a=>await u((async()=>{var t;await r(),await w(i,q,{[k]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?R.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,o)},ea=(a,t,e,s,n,[i,c,[o,r,l]],w,u)=>{const[E,d,p,T]=z(t,w,n),m=async(a,t)=>await f(_(c,(async([e,s,n,i],c)=>{const o=a[c];t&&void 0===o||await p(e,s,o,n,i,t)}))),A=async(a,t)=>r?await p(l,q,{[k]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await E();const a=await(async()=>C(v(await f(_(i,(async([a,t],e)=>[a,await d(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>o?(await d(l,q))[k]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await E(),y(t)){const[t,e]=a();await m(t),await A(e)}else{const[a,e]=t();await m(a,!0),await A(e,!0)}}))),e,s,n,u)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",ca="tableId",oa="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[oa]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return D(a,((a,i)=>{const c=E(b(g(t,u(a)?{[e]:a}:a)),0,I(t));y(c[0])||s(i,c[0])||B(n,i,c)})),n},wa="pragma ",ua="data_version",Ea="schema_version",da=(a,t,s,n,i,c,l,y)=>{let w,d;const[f,p,T,m]=(a=>{const t=(a=>g(ra,u(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],H(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=t,o=E(b(g(la,c)),0,I(la)),r=o[2],l=H(r);return[0,s,[ya(n,{[ca]:null,[ia]:q},ca,(a=>W(l,a)&&a==r)),ya(i,{[oa]:null,[ia]:q,deleteEmptyColumns:0,deleteEmptyTable:0},oa,((a,t)=>W(l,t)&&t==r)),o],l]})(t);return(f?ta:ea)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[o((async()=>{try{const t=(await s(wa+ua))[0][ua],e=(await s(wa+Ea))[0][Ea];t==(w??=t)&&e==(d??=e)||(a(),w=t,d=e)}catch{}}),1e3*p),n((t=>m.has(t)?a():0))]),(([a,t])=>{r(a),w=d=null,i(t)}),l,T,h(m),y)},fa="change";a.createSqlite3Persister=(a,t,e,s,n)=>da(a,e,(async(a,e=[])=>{return await(s=(s,n)=>t.all(a,e,((a,t)=>a?n(a):s(t.map((a=>({...a})))))),new c(s));var s}),(a=>{const e=(t,e,s)=>a(s);return t.on(fa,e),e}),(a=>t.off(fa,a)),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterSqlite3={});
1
+ var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),c=Promise,o=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),u=a=>t(a)==n,E=(a,t,e)=>a.slice(t,e),d=a=>a.length,f=async a=>c.all(a),p=(a,t="")=>a.join(t),T=(a,t)=>a.map(t),v=a=>0==d(a),m=(a,t)=>a.filter(t),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),R=Object,O=R.keys,S=R.freeze,g=(a=[])=>R.fromEntries(a),C=(...a)=>R.assign({},...a),D=(a,t)=>T(R.entries(a),(([a,e])=>t(e,a))),b=a=>R.values(a),I=a=>d(O(a)),F=a=>(a=>l(a,R)&&a.constructor==R)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),_=(a,t)=>T([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),j=(a,t,e)=>(L(a,t)||B(a,t,e()),P(a,t)),x=(a,t,e,s=B)=>(D(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),H=a=>new Set(Array.isArray(a)||y(a)?a:[a]),W=(a,t)=>a?.add(t),k="_",q="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>x(n,g(await f(T(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,g(T(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,x(j(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?g(m(T(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,c,o,r=!1)=>{const l=H();D(i??{},(a=>T(O(a??{}),(a=>W(l,a)))));const w=h(l);if(!r&&o&&v(w)&&L(n,t))return await a("DROP TABLE"+J(t)),void B(n,t);if(v(w)||L(n,t)){const s=P(n,t),i=H($(s));await f([...T(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),B(s,e,""))})),...!r&&c?T(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${p(T(w,(a=>s+J(a))))});`),B(n,t,M([[e,""],...T(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await f(D(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+Y+J(e)+"=?",[n]):v(w)||await G(a,t,e,O(s),[n,...b(s)])})));else if(v(w))L(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=m($(P(n,t)),(a=>a!=e)),c=[],o=[];D(i??{},((a,t)=>{A(c,t,...T(s,(t=>a?.[t]))),A(o,t)})),await G(a,t,e,s,c),await a("DELETE FROM"+J(t)+Y+J(e)+"NOT IN("+K(o)+")",o)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,c)=>await a("INSERT INTO"+J(t)+"("+J(e)+p(T(n,(a=>s+J(a))))+")VALUES"+E(i(`,(?${i(",?",d(n))})`,d(c)/(d(n)+1)),1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+p(T(n,(a=>J(a)+"=excluded."+J(a))),s),c),K=a=>p(T(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,[c,o]=[],r=[])=>{let l,u,E,d=0,f=0;j(Q,r,(()=>0)),j(X,r,(()=>[]));const p=async a=>(2!=d&&(d=1,await T.schedule((async()=>{await a(),d=0}))),T),T={load:async(e,s)=>await p((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(T.stopAutoLoad(),await T.load(e,n),f=1,E=s((async(e,s)=>{if(s){const t=s();await p((async()=>a.setTransactionChanges(t)))}else await p((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),T),stopAutoLoad:()=>(f&&(n(E),E=void 0,f=0),T),save:async t=>(1!=d&&(d=2,await T.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}d=0}))),T),startAutoSave:async()=>(await T.stopAutoSave().save(),l=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||T.save((()=>[e,s]))})),T),stopAutoSave:()=>(w(l,a.delListener),l=void 0,T),schedule:async(...a)=>(A(P(X,r),...a),await(async()=>{if(!P(Q,r)){for(B(Q,r,1);!y((a=P(X,r),u=a.shift()));)try{await u()}catch(a){i?.(a)}B(Q,r,0)}var a})(),T),getStore:()=>a,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return c&&(T[c]=()=>o),S(T)},aa="store",ta=(a,t,e,s,n,[i],c,o)=>{const[r,y,w,u]=z(t,c,n);return Z(a,(async()=>await u((async()=>(await r(),V((await y(i,q))[k]?.[aa]??"null"))))),(async a=>await u((async()=>{var t;await r(),await w(i,q,{[k]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?R.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,["getDb",o],o)},ea=(a,t,e,s,n,[i,c,[o,r,l]],w,u)=>{const[E,d,p,T]=z(t,w,n),v=async(a,t)=>await f(_(c,(async([e,s,n,i],c)=>{const o=a[c];t&&void 0===o||await p(e,s,o,n,i,t)}))),A=async(a,t)=>r?await p(l,q,{[k]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await E();const a=await(async()=>g(m(await f(_(i,(async([a,t],e)=>[a,await d(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>o?(await d(l,q))[k]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await E(),y(t)){const[t,e]=a();await v(t),await A(e)}else{const[a,e]=t();await v(a,!0),await A(e,!0)}}))),e,s,n,["getDb",u],u)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",ca="tableId",oa="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[oa]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return D(a,((a,i)=>{const c=E(b(C(t,u(a)?{[e]:a}:a)),0,I(t));y(c[0])||s(i,c[0])||B(n,i,c)})),n},wa="pragma ",ua="data_version",Ea="schema_version",da=(a,t,s,n,i,c,l,y)=>{let w,d;const[f,p,T,v]=(a=>{const t=(a=>C(ra,u(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],H(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=t,o=E(b(C(la,c)),0,I(la)),r=o[2],l=H(r);return[0,s,[ya(n,{[ca]:null,[ia]:q},ca,(a=>W(l,a)&&a==r)),ya(i,{[oa]:null,[ia]:q,deleteEmptyColumns:0,deleteEmptyTable:0},oa,((a,t)=>W(l,t)&&t==r)),o],l]})(t);return(f?ta:ea)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[o((async()=>{try{const t=(await s(wa+ua))[0][ua],e=(await s(wa+Ea))[0][Ea];t==(w??=t)&&e==(d??=e)||(a(),w=t,d=e)}catch{}}),1e3*p),n((t=>v.has(t)?a():0))]),(([a,t])=>{r(a),w=d=null,i(t)}),l,T,h(v),y)},fa="change";a.createSqlite3Persister=(a,t,e,s,n)=>da(a,e,(async(a,e=[])=>{return await(s=(s,n)=>t.all(a,e,((a,t)=>a?n(a):s(t.map((a=>({...a})))))),new c(s));var s}),(a=>{const e=(t,e,s)=>a(s);return t.on(fa,e),e}),(a=>t.off(fa,a)),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterSqlite3={});
@@ -1 +1 @@
1
- var t,e;t=this,e=function(t,e){"use strict";const s="t",a="v",n=t=>null==t,o=(t,e,s)=>n(t)?s?.():e(t),c=t=>t.length,r=t=>t.shift(),i=Object,d=i.keys,l=i.freeze,u=(t=[])=>i.fromEntries(t),y=(t,e)=>!n(((t,e)=>o(t,(t=>t[e])))(t,e)),g=(t,e)=>((t,e)=>t.map(e))(i.entries(t),(([t,s])=>e(s,t))),f=t=>(t=>t instanceof i&&t.constructor==i)(t)&&0==(t=>c(d(t)))(t),p=(t,e,s)=>(y(t,e)||(t[e]=s()),t[e]),h=t=>new Map(t),v=(t,e)=>t?.get(e),w=(t,e)=>((t,e)=>t?.forEach(e))(t,((t,s)=>e(s,t))),S=(t,e,s)=>{return n(s)?(a=t,o=e,a?.delete(o),t):t?.set(e,s);var a,o},A=(t,e,s)=>{var a,n;return a=t,n=e,a?.has(n)||S(t,e,s()),v(t,e)},b=h(),j=h(),O="delete",J=t=>[t.get(s),t.get(a)],L=(t,s,a,o)=>{const c=n(s)?t:t.get(s)??t.set(s,new e.Map);let r;return g(a,((t,e)=>{o(c,e,t)&&(r=1)})),c.forEach(((t,e)=>{y(a,e)||(c.delete(e),r=1)})),n(s)||c.size||t.delete(s),r};t.createYjsPersister=(t,i,d="tinybase",y)=>{const h=i.getMap(d);return((t,e,s,a,c,i,d=[])=>{let u,y,g,p=0,h=0;A(b,d,(()=>0)),A(j,d,(()=>[]));const w=async t=>(2!=p&&(p=1,await O.schedule((async()=>{await t(),p=0}))),O),O={load:async(s,a)=>await w((async()=>{try{t.setContent(await e())}catch{t.setContent([s,a])}})),startAutoLoad:async(s={},n={})=>(O.stopAutoLoad(),await O.load(s,n),h=1,g=a((async(s,a)=>{if(a){const e=a();await w((async()=>t.setTransactionChanges(e)))}else await w((async()=>{try{t.setContent(s?.()??await e())}catch(t){i?.(t)}}))})),O),stopAutoLoad:()=>(h&&(c(g),g=void 0,h=0),O),save:async e=>(1!=p&&(p=2,await O.schedule((async()=>{try{await s(t.getContent,e)}catch(t){i?.(t)}p=0}))),O),startAutoSave:async()=>(await O.stopAutoSave().save(),u=t.addDidFinishTransactionListener(((t,e)=>{const[s,a]=e();f(s)&&f(a)||O.save((()=>[s,a]))})),O),stopAutoSave:()=>(o(u,t.delListener),O),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(v(j,d),...t),await(async()=>{if(!v(b,d)){for(S(b,d,1);!n(y=r(v(j,d)));)try{await y()}catch(t){i?.(t)}S(b,d,0)}})(),O),getStore:()=>t,destroy:()=>O.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return l(O)})(t,(async()=>h.size?[h.get(s).toJSON(),h.get(a).toJSON()]:void 0),(async(t,c)=>i.transact((()=>((t,c,r)=>{t.size||(t.set(s,new e.Map),t.set(a,new e.Map));const[i,d]=J(t),l=()=>{u=1};let u=1;if(o(r?.(),(([t,e])=>{u=0,g(t,((t,e)=>u?0:n(t)?i.delete(e):o(i.get(e),(e=>g(t,((t,s)=>u?0:n(t)?e.delete(s):o(e.get(s),(e=>g(t,((t,s)=>n(t)?e.delete(s):e.set(s,t)))),l)))),l))),g(e,((t,e)=>u?0:n(t)?d.delete(e):d.set(e,t)))})),u){const[t,e]=c();L(i,void 0,t,((t,e,s)=>L(i,e,s,((t,e,s)=>L(t,e,s,((t,e,s)=>{if(t.get(e)!==s)return t.set(e,s),1})))))),L(d,void 0,e,((t,e,s)=>{d.get(e)!==s&&d.set(e,s)}))}})(h,t,c)))),(t=>{const e=e=>t(void 0,(()=>((t,e)=>{if(1==c(e)&&(n=e[0].path,0==c(n)))return[t.get(s).toJSON(),t.get(a).toJSON()];var n;const[i,d]=J(t),l={},y={};return((t,e)=>{t.forEach((({path:t,changes:{keys:e}})=>r(t)==s?o(r(t),(s=>{const a=p(l,s,u),n=i.get(s);o(r(t),(t=>{const s=p(a,t,u),o=n.get(t);w(e,((t,{action:e})=>s[t]=e==O?null:o.get(t)))}),(()=>w(e,((t,{action:e})=>a[t]=e==O?null:n.get(t)?.toJSON()))))}),(()=>w(e,((t,{action:e})=>l[t]=e==O?null:i.get(t)?.toJSON())))):w(e,((t,{action:e})=>y[t]=e==O?null:d.get(t)))))})(e),[l,y]})(h,e)));return h.observeDeep(e),e}),(t=>{h.unobserveDeep(t)}),y)}},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("yjs")):"function"==typeof define&&define.amd?define(["exports","yjs"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterYjs={},t.yjs);
1
+ var t,e;t=this,e=function(t,e){"use strict";const s="t",a="v",n=t=>null==t,o=(t,e,s)=>n(t)?s?.():e(t),c=t=>t.length,i=t=>t.shift(),r=Object,d=r.keys,l=r.freeze,u=(t=[])=>r.fromEntries(t),y=(t,e)=>!n(((t,e)=>o(t,(t=>t[e])))(t,e)),g=(t,e)=>((t,e)=>t.map(e))(r.entries(t),(([t,s])=>e(s,t))),f=t=>(t=>t instanceof r&&t.constructor==r)(t)&&0==(t=>c(d(t)))(t),p=(t,e,s)=>(y(t,e)||(t[e]=s()),t[e]),h=t=>new Map(t),v=(t,e)=>t?.get(e),w=(t,e)=>((t,e)=>t?.forEach(e))(t,((t,s)=>e(s,t))),S=(t,e,s)=>{return n(s)?(a=t,o=e,a?.delete(o),t):t?.set(e,s);var a,o},A=(t,e,s)=>{var a,n;return a=t,n=e,a?.has(n)||S(t,e,s()),v(t,e)},b=h(),j=h(),O="delete",J=t=>[t.get(s),t.get(a)],L=(t,s,a,o)=>{const c=n(s)?t:t.get(s)??t.set(s,new e.Map);let i;return g(a,((t,e)=>{o(c,e,t)&&(i=1)})),c.forEach(((t,e)=>{y(a,e)||(c.delete(e),i=1)})),n(s)||c.size||t.delete(s),i};t.createYjsPersister=(t,r,d="tinybase",y)=>{const h=r.getMap(d);return((t,e,s,a,c,r,[d,u]=[],y=[])=>{let g,p,h,w=0,O=0;A(b,y,(()=>0)),A(j,y,(()=>[]));const J=async t=>(2!=w&&(w=1,await L.schedule((async()=>{await t(),w=0}))),L),L={load:async(s,a)=>await J((async()=>{try{t.setContent(await e())}catch{t.setContent([s,a])}})),startAutoLoad:async(s={},n={})=>(L.stopAutoLoad(),await L.load(s,n),O=1,h=a((async(s,a)=>{if(a){const e=a();await J((async()=>t.setTransactionChanges(e)))}else await J((async()=>{try{t.setContent(s?.()??await e())}catch(t){r?.(t)}}))})),L),stopAutoLoad:()=>(O&&(c(h),h=void 0,O=0),L),save:async e=>(1!=w&&(w=2,await L.schedule((async()=>{try{await s(t.getContent,e)}catch(t){r?.(t)}w=0}))),L),startAutoSave:async()=>(await L.stopAutoSave().save(),g=t.addDidFinishTransactionListener(((t,e)=>{const[s,a]=e();f(s)&&f(a)||L.save((()=>[s,a]))})),L),stopAutoSave:()=>(o(g,t.delListener),g=void 0,L),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(v(j,y),...t),await(async()=>{if(!v(b,y)){for(S(b,y,1);!n(p=i(v(j,y)));)try{await p()}catch(t){r?.(t)}S(b,y,0)}})(),L),getStore:()=>t,destroy:()=>L.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return d&&(L[d]=()=>u),l(L)})(t,(async()=>h.size?[h.get(s).toJSON(),h.get(a).toJSON()]:void 0),(async(t,c)=>r.transact((()=>((t,c,i)=>{t.size||(t.set(s,new e.Map),t.set(a,new e.Map));const[r,d]=J(t),l=()=>{u=1};let u=1;if(o(i?.(),(([t,e])=>{u=0,g(t,((t,e)=>u?0:n(t)?r.delete(e):o(r.get(e),(e=>g(t,((t,s)=>u?0:n(t)?e.delete(s):o(e.get(s),(e=>g(t,((t,s)=>n(t)?e.delete(s):e.set(s,t)))),l)))),l))),g(e,((t,e)=>u?0:n(t)?d.delete(e):d.set(e,t)))})),u){const[t,e]=c();L(r,void 0,t,((t,e,s)=>L(r,e,s,((t,e,s)=>L(t,e,s,((t,e,s)=>{if(t.get(e)!==s)return t.set(e,s),1})))))),L(d,void 0,e,((t,e,s)=>{d.get(e)!==s&&d.set(e,s)}))}})(h,t,c)))),(t=>{const e=e=>t(void 0,(()=>((t,e)=>{if(1==c(e)&&(n=e[0].path,0==c(n)))return[t.get(s).toJSON(),t.get(a).toJSON()];var n;const[r,d]=J(t),l={},y={};return((t,e)=>{t.forEach((({path:t,changes:{keys:e}})=>i(t)==s?o(i(t),(s=>{const a=p(l,s,u),n=r.get(s);o(i(t),(t=>{const s=p(a,t,u),o=n.get(t);w(e,((t,{action:e})=>s[t]=e==O?null:o.get(t)))}),(()=>w(e,((t,{action:e})=>a[t]=e==O?null:n.get(t)?.toJSON()))))}),(()=>w(e,((t,{action:e})=>l[t]=e==O?null:r.get(t)?.toJSON())))):w(e,((t,{action:e})=>y[t]=e==O?null:d.get(t)))))})(e),[l,y]})(h,e)));return h.observeDeep(e),e}),(t=>{h.unobserveDeep(t)}),y,["getYDoc",r])}},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("yjs")):"function"==typeof define&&define.amd?define(["exports","yjs"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterYjs={},t.yjs);