tinybase 4.0.2 → 4.0.4

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 (165) 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 -0
  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-remote.cjs +1 -1
  12. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  14. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  16. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  18. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  19. package/lib/cjs/persisters.cjs +1 -1
  20. package/lib/cjs/persisters.cjs.gz +0 -0
  21. package/lib/cjs/tinybase.cjs +1 -1
  22. package/lib/cjs/tinybase.cjs.gz +0 -0
  23. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  24. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  25. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  26. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  27. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  28. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  29. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -0
  30. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  31. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  32. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  33. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  34. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  35. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  36. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  37. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  38. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  39. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  40. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  41. package/lib/cjs-es6/persisters.cjs +1 -1
  42. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  43. package/lib/cjs-es6/tinybase.cjs +1 -1
  44. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  45. package/lib/debug/persisters/persister-automerge.js +56 -18
  46. package/lib/debug/persisters/persister-browser.js +55 -22
  47. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +106 -62
  48. package/lib/debug/persisters/persister-expo-sqlite.js +813 -0
  49. package/lib/debug/persisters/persister-file.js +51 -18
  50. package/lib/debug/persisters/persister-remote.js +51 -17
  51. package/lib/debug/persisters/persister-sqlite-wasm.js +106 -62
  52. package/lib/debug/persisters/persister-sqlite3.js +113 -64
  53. package/lib/debug/persisters/persister-yjs.js +63 -27
  54. package/lib/debug/persisters.js +49 -17
  55. package/lib/debug/tinybase.js +35 -17
  56. package/lib/es6/persisters/persister-automerge.js +1 -1
  57. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  58. package/lib/es6/persisters/persister-browser.js +1 -1
  59. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  60. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  61. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  62. package/lib/es6/persisters/persister-expo-sqlite.js +1 -0
  63. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  64. package/lib/es6/persisters/persister-file.js +1 -1
  65. package/lib/es6/persisters/persister-file.js.gz +0 -0
  66. package/lib/es6/persisters/persister-remote.js +1 -1
  67. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  68. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  69. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  70. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  71. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  72. package/lib/es6/persisters/persister-yjs.js +1 -1
  73. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  74. package/lib/es6/persisters.js +1 -1
  75. package/lib/es6/persisters.js.gz +0 -0
  76. package/lib/es6/tinybase.js +1 -1
  77. package/lib/es6/tinybase.js.gz +0 -0
  78. package/lib/persisters/persister-automerge.js +1 -1
  79. package/lib/persisters/persister-automerge.js.gz +0 -0
  80. package/lib/persisters/persister-browser.js +1 -1
  81. package/lib/persisters/persister-browser.js.gz +0 -0
  82. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  83. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  84. package/lib/persisters/persister-expo-sqlite.js +1 -0
  85. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  86. package/lib/persisters/persister-file.js +1 -1
  87. package/lib/persisters/persister-file.js.gz +0 -0
  88. package/lib/persisters/persister-remote.js +1 -1
  89. package/lib/persisters/persister-remote.js.gz +0 -0
  90. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  91. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  92. package/lib/persisters/persister-sqlite3.js +1 -1
  93. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  94. package/lib/persisters/persister-yjs.js +1 -1
  95. package/lib/persisters/persister-yjs.js.gz +0 -0
  96. package/lib/persisters.js +1 -1
  97. package/lib/persisters.js.gz +0 -0
  98. package/lib/tinybase.js +1 -1
  99. package/lib/tinybase.js.gz +0 -0
  100. package/lib/types/persisters/persister-automerge.d.ts +4 -0
  101. package/lib/types/persisters/persister-browser.d.ts +8 -0
  102. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +10 -2
  103. package/lib/types/persisters/persister-expo-sqlite.d.ts +126 -0
  104. package/lib/types/persisters/persister-file.d.ts +8 -1
  105. package/lib/types/persisters/persister-remote.d.ts +4 -0
  106. package/lib/types/persisters/persister-sqlite-wasm.d.ts +8 -0
  107. package/lib/types/persisters/persister-sqlite3.d.ts +8 -0
  108. package/lib/types/persisters/persister-yjs.d.ts +4 -0
  109. package/lib/types/persisters.d.ts +16 -3
  110. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +5 -0
  111. package/lib/types/with-schemas/persisters/persister-browser.d.ts +10 -0
  112. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +12 -2
  113. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +138 -0
  114. package/lib/types/with-schemas/persisters/persister-file.d.ts +9 -1
  115. package/lib/types/with-schemas/persisters/persister-remote.d.ts +5 -0
  116. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +10 -0
  117. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +10 -0
  118. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +5 -0
  119. package/lib/types/with-schemas/persisters.d.ts +17 -3
  120. package/lib/umd/persisters/persister-automerge.js +1 -1
  121. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  122. package/lib/umd/persisters/persister-browser.js +1 -1
  123. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  124. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  125. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  126. package/lib/umd/persisters/persister-expo-sqlite.js +1 -0
  127. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  128. package/lib/umd/persisters/persister-file.js +1 -1
  129. package/lib/umd/persisters/persister-file.js.gz +0 -0
  130. package/lib/umd/persisters/persister-remote.js +1 -1
  131. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  132. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  133. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  134. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  135. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  136. package/lib/umd/persisters/persister-yjs.js +1 -1
  137. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  138. package/lib/umd/persisters.js +1 -1
  139. package/lib/umd/persisters.js.gz +0 -0
  140. package/lib/umd/tinybase.js +1 -1
  141. package/lib/umd/tinybase.js.gz +0 -0
  142. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  143. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  144. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  145. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  146. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  147. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  148. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -0
  149. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  150. package/lib/umd-es6/persisters/persister-file.js +1 -1
  151. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  152. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  153. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  154. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  155. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  156. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  157. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  158. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  159. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  160. package/lib/umd-es6/persisters.js +1 -1
  161. package/lib/umd-es6/persisters.js.gz +0 -0
  162. package/lib/umd-es6/tinybase.js +1 -1
  163. package/lib/umd-es6/tinybase.js.gz +0 -0
  164. package/package.json +6 -5
  165. package/readme.md +2 -2
@@ -22,6 +22,8 @@ import {Database} from 'sqlite3';
22
22
  * store: Store,
23
23
  * db: Database,
24
24
  * configOrStoreTableName?: DatabasePersisterConfig | string,
25
+ * onSqlCommand?: (sql: string, args?: any[]) => void,
26
+ * onIgnoredError?: (error: any) => void,
25
27
  * ): Persister;
26
28
  * ```
27
29
  *
@@ -45,6 +47,12 @@ import {Database} from 'sqlite3';
45
47
  * @param configOrStoreTableName A DatabasePersisterConfig to configure the
46
48
  * persistence mode (or a string to set the `storeTableName` property of the
47
49
  * JSON serialization).
50
+ * @param onSqlCommand An optional handler called every time the Persister
51
+ * executes a SQL command or query. This is suitable for logging persistence
52
+ * behavior in a development environment, since v4.0.4.
53
+ * @param onIgnoredError An optional handler for the errors that the Persister
54
+ * would otherwise ignore when trying to save or load data. This is suitable for
55
+ * debugging persistence issues in a development environment, since v4.0.4.
48
56
  * @returns A reference to the new Persister object.
49
57
  * @example
50
58
  * This example creates a Persister object and persists the Store to a local
@@ -118,4 +126,6 @@ export function createSqlite3Persister<Schemas extends OptionalSchemas>(
118
126
  store: Store<Schemas>,
119
127
  db: Database,
120
128
  configOrStoreTableName?: DatabasePersisterConfig<Schemas> | string,
129
+ onSqlCommand?: (sql: string, args?: any[]) => void,
130
+ onIgnoredError?: (error: any) => void,
121
131
  ): Persister<Schemas>;
@@ -26,6 +26,7 @@ import {Doc as YDoc} from 'yjs';
26
26
  * store: Store,
27
27
  * yDoc: YDoc,
28
28
  * yMapName?: string,
29
+ * onIgnoredError?: (error: any) => void,
29
30
  * ): Persister;
30
31
  * ```
31
32
  *
@@ -35,6 +36,9 @@ import {Doc as YDoc} from 'yjs';
35
36
  * @param yDoc The Yjs document to persist the Store to.
36
37
  * @param yMapName The name of the Y.Map used inside the Yjs document to sync
37
38
  * the Store to (which otherwise will default to 'tinybase').
39
+ * @param onIgnoredError An optional handler for the errors that the Persister
40
+ * would otherwise ignore when trying to save or load data. This is suitable for
41
+ * debugging persistence issues in a development environment, since v4.0.4.
38
42
  * @returns A reference to the new Persister object.
39
43
  * @example
40
44
  * This example creates a Persister object and persists the Store to a Yjs
@@ -112,4 +116,5 @@ export function createYjsPersister<Schemas extends OptionalSchemas>(
112
116
  store: Store<Schemas>,
113
117
  yDoc: YDoc,
114
118
  yMapName?: string,
119
+ onIgnoredError?: (error: any) => void,
115
120
  ): Persister<Schemas>;
@@ -17,6 +17,7 @@
17
17
  * |persister-sqlite3|createSqlite3Persister|SQLite in Node, via [sqlite3](https://github.com/TryGhost/node-sqlite3)|
18
18
  * |persister-sqlite-wasm|createSqliteWasmPersister|SQLite in a browser, via [sqlite-wasm](https://github.com/tomayac/sqlite-wasm)|
19
19
  * |persister-cr-sqlite-wasm|createCrSqliteWasmPersister|SQLite CRDTs, via [cr-sqlite-wasm](https://github.com/vlcn-io/cr-sqlite)|
20
+ * |persister-expo-sqlite|createExpoSqlitePersister|SQLite in React Native, via [expo-sqlite](https://github.com/expo/expo/tree/main/packages/expo-sqlite)|
20
21
  * |persister-yjs|createYjsPersister|Yjs CRDTs, via [yjs](https://github.com/yjs/yjs)|
21
22
  * |persister-automerge|createSqliteWasmPersister|Automerge CRDTs, via [automerge-repo](https://github.com/automerge/automerge-repo)|
22
23
  *
@@ -593,13 +594,21 @@ export type DpcTabularValues = {
593
594
  * that changes are constantly synchronized (allowing basic state preservation
594
595
  * between browser tabs, for example). The framework has some basic provisions
595
596
  * to prevent race conditions - for example it will not attempt to save data if
596
- * it is currently loading it and vice-versa.
597
+ * it is currently loading it and vice-versa - and will sequentially schedule
598
+ * methods that could cause race conditions.
597
599
  *
598
- * Be aware, however, that the default implementations do not provide complex
599
- * synchronization heuristics and you should comprehensively test your
600
+ * That said, be aware that you should always comprehensively test your
600
601
  * persistence strategy to understand the opportunity for data loss (in the case
601
602
  * of trying to save data to a server under poor network conditions, for
602
603
  * example).
604
+ *
605
+ * To help debug such issues, since v4.0.4, the create methods for all Persister
606
+ * objects take an optional `onIgnoredError` argument. This is a handler for the
607
+ * errors that the Persister would otherwise ignore when trying to save or load
608
+ * data (such as when handling corrupted stored data). It's recommended you use
609
+ * this for debugging persistence issues, but only in a development environment.
610
+ * Database-based Persister objects also take an optional `onSqlCommand`
611
+ * argument for logging commands and queries made to the underlying database.
603
612
  * @example
604
613
  * This example creates a Store, persists it to the browser's session storage as
605
614
  * a JSON string, changes the persisted data, updates the Store from it, and
@@ -1134,6 +1143,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1134
1143
  * ) => Promise<void>,
1135
1144
  * addPersisterListener: (listener: PersisterListener) => ListeningHandle,
1136
1145
  * delPersisterListener: (listeningHandle: ListeningHandle) => void,
1146
+ * onIgnoredError?: (error: any) => void,
1137
1147
  * ): Persister;
1138
1148
  * ```
1139
1149
  *
@@ -1167,6 +1177,9 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1167
1177
  * @param delPersisterListener A function that will unregister the listener from
1168
1178
  * the underlying changes to the persistence layer. It receives whatever was
1169
1179
  * returned from your `addPersisterListener` implementation.
1180
+ * @param onIgnoredError An optional handler for the errors that the Persister
1181
+ * would otherwise ignore when trying to save or load data. This is suitable for
1182
+ * debugging persistence issues in a development environment, since v4.0.4.
1170
1183
  * @returns A reference to the new Persister object.
1171
1184
  * @example
1172
1185
  * This example creates a custom Persister object and persists the Store to a
@@ -1221,4 +1234,5 @@ export function createCustomPersister<
1221
1234
  listener: PersisterListener<Schemas>,
1222
1235
  ) => ListeningHandle,
1223
1236
  delPersisterListener: (listeningHandle: ListeningHandle) => void,
1237
+ onIgnoredError?: (error: any) => void,
1224
1238
  ): Persister<Schemas>;
@@ -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),f=(t,e)=>[t[e].t,t[e].v],l=(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")=>(s.change((t=>t[n]={})),((t,i,u,h,v)=>{let p,g,w,A=0,L=0,m=0;const S=[],b=async t=>(2!=A&&(A=1,await C.schedule((async()=>{await t(),A=0}))),C),C={load:async(e,a)=>await b((async()=>{try{t.setContent(await i())}catch{t.setContent([e,a])}})),startAutoLoad:async(e={},a={})=>(C.stopAutoLoad(),await C.load(e,a),m=1,w=(t=>{const e=({doc:e})=>t((()=>f(e,n)));return s.on("change",e),e})((async(e,a)=>await b((async()=>{if(a)t.setTransactionChanges(a());else try{t.setContent(e?.()??await i())}catch{}})))),C),stopAutoLoad:()=>{return m&&(t=w,s.removeListener("change",t),w=void 0,m=0),C;var t},save:async o=>(1!=A&&(A=2,await C.schedule((async()=>{try{await(async(t,o)=>s.change((s=>((t,s,n,o)=>{((t,e)=>{y(t[e])&&(t[e]={t:{},v:{}})})(t,s);const[i,u]=f(t,s),h=()=>{v=1};let v=1;if(a(o?.(),(([t,s])=>{v=0,d(t,((t,s)=>v?0:e(t)?r(i,s):a(i[s],(s=>d(t,((t,n)=>v?0:e(t)?r(s,n):a(c(s,n),(a=>d(t,((t,s)=>e(t)?r(a,s):a[s]=t))),h)))),h))),d(s,((t,a)=>v?0:e(t)?r(u,a):u[a]=t))})),v){const[t,e]=n();l(i,void 0,t,((t,e,a)=>l(i,e,a,((t,e,a)=>l(t,e,a,((t,e,a)=>{if(c(t,e)!==a)return t[e]=a,1})))))),l(u,void 0,e,((t,e,a)=>{c(u,e)!==a&&(u[e]=a)}))}})(s,n,t,o))))(t.getContent,o)}catch{}A=0}))),C),startAutoSave:async()=>(await C.stopAutoSave().save(),p=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();y(a)&&y(s)||C.save((()=>[a,s]))})),C),stopAutoSave:()=>(a(p,t.delListener),C),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(S,...t),await(async()=>{if(!L){for(L=1;!e((t=S,g=t.shift()));)try{await g()}catch{}L=0}var t})(),C),getStore:()=>t,destroy:()=>C.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return o(C)})(t,(async()=>2==u(s.doc[n])?f(s.doc,n):void 0)))},"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=[])=>{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 +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="storage",d=globalThis.window,y=(t,n,y)=>((t,u,l,f,h)=>{let p,v,w,g=0,S=0,A=0;const L=[],m=async t=>(2!=g&&(g=1,await T.schedule((async()=>{await t(),g=0}))),T),T={load:async(e,a)=>await m((async()=>{try{t.setContent(await u())}catch{t.setContent([e,a])}})),startAutoLoad:async(e={},a={})=>(T.stopAutoLoad(),await T.load(e,a),A=1,w=(t=>{const e=e=>{e.storageArea===y&&e.key===n&&t((()=>i(e.newValue)))};return d.addEventListener(c,e),e})((async(e,a)=>await m((async()=>{if(a)t.setTransactionChanges(a());else try{t.setContent(e?.()??await u())}catch{}})))),T),stopAutoLoad:()=>{return A&&(t=w,d.removeEventListener(c,t),w=void 0,A=0),T;var t},save:async a=>(1!=g&&(g=2,await T.schedule((async()=>{try{await(async t=>{return y.setItem(n,(a=t(),JSON.stringify(a,((t,a)=>e(a,Map)?s.fromEntries([...a]):a))));var a})(t.getContent)}catch{}g=0}))),T),startAutoSave:async()=>(await T.stopAutoSave().save(),p=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();r(a)&&r(s)||T.save((()=>[a,s]))})),T),stopAutoSave:()=>{var e,s;return e=p,s=t.delListener,a(e)||s(e),T},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(L,...t),await(async()=>{if(!S){for(S=1;!a((t=L,v=t.shift()));)try{await v()}catch{}S=0}var t})(),T),getStore:()=>t,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return o(T)})(t,(async()=>i(y.getItem(n))));t.createLocalPersister=(t,e)=>y(t,e,localStorage),t.createSessionPersister=(t,e)=>y(t,e,sessionStorage)},"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(),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 +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=(a,t="")=>a.join(t),c=(a,t)=>a.map(t),r=a=>a.length,l=a=>0==r(a),y=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),d=(a,...t)=>a.push(...t),u=Promise,E=(a,t)=>a instanceof t,f=a=>null==a,p=(a,t,e)=>f(a)?e?.():t(a),T=a=>t(a)==n,m=async a=>u.all(a),v=(a,t)=>a?.has(t)??!1,A=a=>[...a?.values()??[]],L=(a,t)=>a?.delete(t),h=Object,O=h.keys,R=h.freeze,C=(a=[])=>h.fromEntries(a),S=(...a)=>h.assign({},...a),N=(a,t)=>c(h.entries(a),(([a,e])=>t(e,a))),b=a=>h.values(a),g=a=>r(O(a)),D=a=>(a=>E(a,h)&&a.constructor==h)(a)&&0==g(a),I=a=>new Map(a),F=a=>[...a?.keys()??[]],M=(a,t)=>a?.get(t),$=(a,t)=>c([...a?.entries()??[]],(([a,e])=>t(e,a))),P=(a,t,e)=>f(e)?(L(a,t),a):a?.set(t,e),_=(a,t,e,s=P)=>(N(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!f(((a,t)=>p(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),W=a=>new Set(Array.isArray(a)||f(a)?a:[a]),x=(a,t)=>a?.add(t),B="_",j="_id",H=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",k="WHERE",q=(a,t)=>{const e=I();return[async()=>_(e,C(await m(c(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+Y(t)+")",t),(async({name:t})=>[t,C(c(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,s)=>{return P(e,t,_((o=I,v(n=e,i=t)||P(n,i,o()),M(n,i)),s,((a,t,e)=>{e!=M(a,t)&&P(a,t,e)}),((a,t)=>P(a,t))));var n,i,o}),((a,t)=>P(e,t))),async(t,s)=>((a,t)=>!f(M(M(e,a),t)))(t,s)?C(y(c(await a("SELECT*FROM"+H(t)),(a=>{return[a[s],(t={...a},e=s,delete t[e],t)];var t,e})),(([a,t])=>!f(a)&&!D(t)))):{},async(t,n,i,r,w,u=!1)=>{const E=W();N(i??{},(a=>c(O(a??{}),(a=>x(E,a)))));const p=A(E);if(!u&&w&&l(p)&&v(e,t))return await a("DROP TABLE"+H(t)),void P(e,t);if(l(p)||v(e,t)){const s=M(e,t),i=W(F(s));await m([...c(p,(async e=>{L(i,e)||(await a(`ALTER TABLE${H(t)}ADD${H(e)}`),P(s,e,""))})),...!u&&r?c(A(i),(async e=>{e!=n&&(await a(`ALTER TABLE${H(t)}DROP${H(e)}`),P(s,e))})):[]])}else await a(`CREATE TABLE${H(t)}(${H(n)} PRIMARY KEY ON CONFLICT REPLACE${o(c(p,(a=>s+H(a))))});`),P(e,t,I([[n,""],...c(p,(a=>[a,""]))]));if(u)f(i)?await a("DELETE FROM"+H(t)+"WHERE 1"):await m(N(i,(async(e,s)=>{f(e)?await a("DELETE FROM"+H(t)+k+H(n)+"=?",[s]):l(p)||await J(a,t,n,O(e),[s,...b(e)])})));else if(l(p))v(e,t)&&await a("DELETE FROM"+H(t)+"WHERE 1");else{const s=y(F(M(e,t)),(a=>a!=n)),o=[],r=[];N(i??{},((a,t)=>{d(o,t,...c(s,(t=>a?.[t]))),d(r,t)})),await J(a,t,n,s,o),await a("DELETE FROM"+H(t)+k+H(n)+"NOT IN("+Y(r)+")",r)}}]},J=async(a,t,e,n,l)=>await a("INSERT INTO"+H(t)+"("+H(e)+o(c(n,(a=>s+H(a))))+")VALUES"+i(`,(?${i(",?",r(n))})`,r(l)/(r(n)+1)).substring(1)+"ON CONFLICT("+H(e)+")DO UPDATE SET"+o(c(n,(a=>H(a)+"=excluded."+H(a))),s),l),Y=a=>o(c(a,(()=>"?")),s),z=JSON.parse,K=(a,t,e,s,n)=>{let i,o,c,r=0,l=0,y=0;const w=[],u=async a=>(2!=r&&(r=1,await E.schedule((async()=>{await a(),r=0}))),E),E={load:async(e,s)=>await u((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(E.stopAutoLoad(),await E.load(e,n),y=1,c=s((async(e,s)=>await u((async()=>{if(s)a.setTransactionChanges(s());else try{a.setContent(e?.()??await t())}catch{}})))),E),stopAutoLoad:()=>(y&&(n(c),c=void 0,y=0),E),save:async t=>(1!=r&&(r=2,await E.schedule((async()=>{try{await e(a.getContent,t)}catch{}r=0}))),E),startAutoSave:async()=>(await E.stopAutoSave().save(),i=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||E.save((()=>[e,s]))})),E),stopAutoSave:()=>(p(i,a.delListener),E),schedule:async(...a)=>(d(w,...a),await(async()=>{if(!l){for(l=1;!f((a=w,o=a.shift()));)try{await o()}catch{}l=0}var a})(),E),getStore:()=>a,destroy:()=>E.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return R(E)},V="store",G=(a,t,e,s,[n],i)=>{const[o,c,r]=q(t,i),l=K(a,(async()=>(await o(),z((await c(n,j))[B]?.[V]))),(async a=>l.schedule(o,(async()=>{var t;await r(n,j,{[B]:{[V]:(t=a(),JSON.stringify(t,((a,t)=>E(t,Map)?h.fromEntries([...t]):t)))}},!0,!0)}))),e,s);return l},Q=(a,t,e,s,[n,i,[o,c,r]],l)=>{const[w,d,u]=q(t,l),E=async(a,t)=>await m($(i,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await u(e,s,c,n,i,t)}))),p=async(a,t)=>c?await u(r,j,{[B]:a},!0,!0,t):null;return K(a,(async()=>{await w();const a=await(async()=>C(y(await m($(n,(async([a,t],e)=>[a,await d(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>o?(await d(r,j))[B]:{})();return D(a)&&f(t)?void 0:[a,t]}),(async(a,t)=>{if(await w(),f(t)){const[t,e]=a();await E(t),await p(e)}else{const[a,e]=t();await E(a,!0),await p(e,!0)}}),e,s)},X="json",Z="autoLoadIntervalSeconds",aa="rowIdColumnName",ta="tableId",ea="tableName",sa={mode:X,[Z]:1},na={load:0,save:0,[ea]:e+"_values"},ia=(a,t,e,s)=>{const n=I();return N(a,((a,i)=>{const o=w(b(S(t,T(a)?{[e]:a}:a)),0,g(t));f(o[0])||s(i,o[0])||P(n,i,o)})),n},oa="pragma ",ca="data_version",ra="schema_version",la=(a,t,s,n,i,o)=>{let c,r;const[l,y,d,u]=(a=>{const t=(a=>S(sa,T(a)?{storeTableName:a}:a??{}))(a),s=t[Z];if(t.mode==X){const{storeTableName:a=e}=t;return[1,s,[a],W(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=w(b(S(na,o)),0,g(na)),r=c[2],l=W(r);return[0,s,[ia(n,{[ta]:null,[aa]:j},ta,(a=>x(l,a)&&a==r)),ia(i,{[ea]:null,[aa]:j,deleteEmptyColumns:0,deleteEmptyTable:0},ea,((a,t)=>x(l,t)&&t==r)),c],l]})(t);return(l?G:Q)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(oa+ca))[0][ca],e=(await s(oa+ra))[0][ra];t==(c??=t)&&e==(r??=e)||(a(),c=t,r=e)}catch{}}),1e3*y),n((t=>u.has(t)?a():0))]),(([a,t])=>{clearInterval(a),c=r=null,i(t)}),d,A(u))};a.createCrSqliteWasmPersister=(a,t,e,s)=>la(a,e,(async(a,e=[])=>await t.execO(a,e)),(a=>t.onUpdate(((t,e,s)=>a(s)))),(a=>a()),s)},"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=(a,t="")=>a.join(t),o=(a,t)=>a.map(t),r=a=>a.length,l=a=>0==r(a),y=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),E=(a,...t)=>a.push(...t),u=Promise,d=(a,t)=>a instanceof t,f=a=>null==a,p=(a,t,e)=>f(a)?e?.():t(a),T=a=>t(a)==n,m=async a=>u.all(a),v=(a,t)=>a?.has(t)??!1,A=a=>[...a?.values()??[]],L=(a,t)=>a?.delete(t),h=Object,N=h.keys,O=h.freeze,R=(a=[])=>h.fromEntries(a),C=(...a)=>h.assign({},...a),S=(a,t)=>o(h.entries(a),(([a,e])=>t(e,a))),b=a=>h.values(a),g=a=>r(N(a)),D=a=>(a=>d(a,h)&&a.constructor==h)(a)&&0==g(a),I=a=>new Map(a),F=a=>[...a?.keys()??[]],M=(a,t)=>a?.get(t),$=(a,t)=>o([...a?.entries()??[]],(([a,e])=>t(e,a))),P=(a,t,e)=>f(e)?(L(a,t),a):a?.set(t,e),_=(a,t,e)=>(v(a,t)||P(a,t,e()),M(a,t)),B=(a,t,e,s=P)=>(S(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!f(((a,t)=>p(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),W=a=>new Set(Array.isArray(a)||f(a)?a:[a]),x=(a,t)=>a?.add(t),j="_",H="_id",U=a=>`"${a.replace(/"/g,'""')}"`,k="FROM pragma_table_",q="WHERE",J=(a,t,e)=>{const n=I();return[async()=>B(n,R(await m(o(await a("SELECT name "+k+"list WHERE schema='main'AND type='table'AND name IN("+z(t)+")",t),(async({name:t})=>[t,R(o(await a("SELECT name,type "+k+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>P(n,t,B(_(n,t,I),e,((a,t,e)=>{e!=M(a,t)&&P(a,t,e)}),((a,t)=>P(a,t))))),((a,t)=>P(n,t))),async(t,e)=>((a,t)=>!f(M(M(n,a),t)))(t,e)?R(y(o(await a("SELECT*FROM"+U(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!f(a)&&!D(t)))):{},async(t,e,i,r,w,u=!1)=>{const d=W();S(i??{},(a=>o(N(a??{}),(a=>x(d,a)))));const p=A(d);if(!u&&w&&l(p)&&v(n,t))return await a("DROP TABLE"+U(t)),void P(n,t);if(l(p)||v(n,t)){const s=M(n,t),i=W(F(s));await m([...o(p,(async e=>{L(i,e)||(await a(`ALTER TABLE${U(t)}ADD${U(e)}`),P(s,e,""))})),...!u&&r?o(A(i),(async n=>{n!=e&&(await a(`ALTER TABLE${U(t)}DROP${U(n)}`),P(s,n))})):[]])}else await a(`CREATE TABLE${U(t)}(${U(e)} PRIMARY KEY ON CONFLICT REPLACE${c(o(p,(a=>s+U(a))))});`),P(n,t,I([[e,""],...o(p,(a=>[a,""]))]));if(u)f(i)?await a("DELETE FROM"+U(t)+"WHERE 1"):await m(S(i,(async(s,n)=>{f(s)?await a("DELETE FROM"+U(t)+q+U(e)+"=?",[n]):l(p)||await Y(a,t,e,N(s),[n,...b(s)])})));else if(l(p))v(n,t)&&await a("DELETE FROM"+U(t)+"WHERE 1");else{const s=y(F(M(n,t)),(a=>a!=e)),c=[],r=[];S(i??{},((a,t)=>{E(c,t,...o(s,(t=>a?.[t]))),E(r,t)})),await Y(a,t,e,s,c),await a("DELETE FROM"+U(t)+q+U(e)+"NOT IN("+z(r)+")",r)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},Y=async(a,t,e,n,l)=>await a("INSERT INTO"+U(t)+"("+U(e)+c(o(n,(a=>s+U(a))))+")VALUES"+i(`,(?${i(",?",r(n))})`,r(l)/(r(n)+1)).substring(1)+"ON CONFLICT("+U(e)+")DO UPDATE SET"+c(o(n,(a=>U(a)+"=excluded."+U(a))),s),l),z=a=>c(o(a,(()=>"?")),s),G=JSON.parse,K=I(),V=I(),Q=(a,t,e,s,n,i,c=[])=>{let o,r,l,y=0,w=0;_(K,c,(()=>0)),_(V,c,(()=>[]));const u=async a=>(2!=y&&(y=1,await d.schedule((async()=>{await a(),y=0}))),d),d={load:async(e,s)=>await u((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(d.stopAutoLoad(),await d.load(e,n),w=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)}}))})),d),stopAutoLoad:()=>(w&&(n(l),l=void 0,w=0),d),save:async t=>(1!=y&&(y=2,await d.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}y=0}))),d),startAutoSave:async()=>(await d.stopAutoSave().save(),o=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||d.save((()=>[e,s]))})),d),stopAutoSave:()=>(p(o,a.delListener),d),schedule:async(...a)=>(E(M(V,c),...a),await(async()=>{if(!M(K,c)){for(P(K,c,1);!f((a=M(V,c),r=a.shift()));)try{await r()}catch(a){i?.(a)}P(K,c,0)}var a})(),d),getStore:()=>a,destroy:()=>d.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return O(d)},X="store",Z=(a,t,e,s,n,[i],c,o)=>{const[r,l,y,w]=J(t,c,n);return Q(a,(async()=>await w((async()=>(await r(),G((await l(i,H))[j]?.[X]??"null"))))),(async a=>await w((async()=>{var t;await r(),await y(i,H,{[j]:{[X]:(t=a()??null,JSON.stringify(t,((a,t)=>d(t,Map)?h.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,o)},aa=(a,t,e,s,n,[i,c,[o,r,l]],w,E)=>{const[u,d,p,T]=J(t,w,n),v=async(a,t)=>await m($(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,H,{[j]:a},!0,!0,t):null;return Q(a,(async()=>await T((async()=>{await u();const a=await(async()=>R(y(await m($(i,(async([a,t],e)=>[a,await d(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>o?(await d(l,H))[j]:{})();return D(a)&&f(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await u(),f(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,E)},ta="json",ea="autoLoadIntervalSeconds",sa="rowIdColumnName",na="tableId",ia="tableName",ca={mode:ta,[ea]:1},oa={load:0,save:0,[ia]:e+"_values"},ra=(a,t,e,s)=>{const n=I();return S(a,((a,i)=>{const c=w(b(C(t,T(a)?{[e]:a}:a)),0,g(t));f(c[0])||s(i,c[0])||P(n,i,c)})),n},la="pragma ",ya="data_version",wa="schema_version",Ea=(a,t,s,n,i,c,o,r)=>{let l,y;const[E,u,d,f]=(a=>{const t=(a=>C(ca,T(a)?{storeTableName:a}:a??{}))(a),s=t[ea];if(t.mode==ta){const{storeTableName:a=e}=t;return[1,s,[a],W(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=t,o=w(b(C(oa,c)),0,g(oa)),r=o[2],l=W(r);return[0,s,[ra(n,{[na]:null,[sa]:H},na,(a=>x(l,a)&&a==r)),ra(i,{[ia]:null,[sa]:H,deleteEmptyColumns:0,deleteEmptyTable:0},ia,((a,t)=>x(l,t)&&t==r)),o],l]})(t);return(E?Z:aa)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(la+ya))[0][ya],e=(await s(la+wa))[0][wa];t==(l??=t)&&e==(y??=e)||(a(),l=t,y=e)}catch{}}),1e3*u),n((t=>f.has(t)?a():0))]),(([a,t])=>{clearInterval(a),l=y=null,i(t)}),o,d,A(f),r)};a.createCrSqliteWasmPersister=(a,t,e,s,n)=>Ea(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={});
@@ -0,0 +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=(a,t="")=>a.join(t),c=(a,t)=>a.map(t),r=a=>a.length,l=a=>0==r(a),y=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),E=(a,...t)=>a.push(...t),u=Promise,d=(a,t)=>a instanceof t,f=a=>null==a,p=(a,t,e)=>f(a)?e?.():t(a),T=a=>t(a)==n,m=async a=>u.all(a),v=(a,t)=>a?.has(t)??!1,A=a=>[...a?.values()??[]],L=(a,t)=>a?.delete(t),h=Object,N=h.keys,R=h.freeze,O=(a=[])=>h.fromEntries(a),S=(...a)=>h.assign({},...a),C=(a,t)=>c(h.entries(a),(([a,e])=>t(e,a))),b=a=>h.values(a),g=a=>r(N(a)),D=a=>(a=>d(a,h)&&a.constructor==h)(a)&&0==g(a),I=a=>new Map(a),F=a=>[...a?.keys()??[]],M=(a,t)=>a?.get(t),$=(a,t)=>c([...a?.entries()??[]],(([a,e])=>t(e,a))),P=(a,t,e)=>f(e)?(L(a,t),a):a?.set(t,e),x=(a,t,e)=>(v(a,t)||P(a,t,e()),M(a,t)),_=(a,t,e,s=P)=>(C(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!f(((a,t)=>p(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),B=a=>new Set(Array.isArray(a)||f(a)?a:[a]),j=(a,t)=>a?.add(t),H="_",W="_id",q=a=>`"${a.replace(/"/g,'""')}"`,k="FROM pragma_table_",J="WHERE",U=(a,t,e)=>{const n=I();return[async()=>_(n,O(await m(c(await a("SELECT name "+k+"list WHERE schema='main'AND type='table'AND name IN("+z(t)+")",t),(async({name:t})=>[t,O(c(await a("SELECT name,type "+k+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>P(n,t,_(x(n,t,I),e,((a,t,e)=>{e!=M(a,t)&&P(a,t,e)}),((a,t)=>P(a,t))))),((a,t)=>P(n,t))),async(t,e)=>((a,t)=>!f(M(M(n,a),t)))(t,e)?O(y(c(await a("SELECT*FROM"+q(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!f(a)&&!D(t)))):{},async(t,e,i,r,w,u=!1)=>{const d=B();C(i??{},(a=>c(N(a??{}),(a=>j(d,a)))));const p=A(d);if(!u&&w&&l(p)&&v(n,t))return await a("DROP TABLE"+q(t)),void P(n,t);if(l(p)||v(n,t)){const s=M(n,t),i=B(F(s));await m([...c(p,(async e=>{L(i,e)||(await a(`ALTER TABLE${q(t)}ADD${q(e)}`),P(s,e,""))})),...!u&&r?c(A(i),(async n=>{n!=e&&(await a(`ALTER TABLE${q(t)}DROP${q(n)}`),P(s,n))})):[]])}else await a(`CREATE TABLE${q(t)}(${q(e)} PRIMARY KEY ON CONFLICT REPLACE${o(c(p,(a=>s+q(a))))});`),P(n,t,I([[e,""],...c(p,(a=>[a,""]))]));if(u)f(i)?await a("DELETE FROM"+q(t)+"WHERE 1"):await m(C(i,(async(s,n)=>{f(s)?await a("DELETE FROM"+q(t)+J+q(e)+"=?",[n]):l(p)||await Y(a,t,e,N(s),[n,...b(s)])})));else if(l(p))v(n,t)&&await a("DELETE FROM"+q(t)+"WHERE 1");else{const s=y(F(M(n,t)),(a=>a!=e)),o=[],r=[];C(i??{},((a,t)=>{E(o,t,...c(s,(t=>a?.[t]))),E(r,t)})),await Y(a,t,e,s,o),await a("DELETE FROM"+q(t)+J+q(e)+"NOT IN("+z(r)+")",r)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},Y=async(a,t,e,n,l)=>await a("INSERT INTO"+q(t)+"("+q(e)+o(c(n,(a=>s+q(a))))+")VALUES"+i(`,(?${i(",?",r(n))})`,r(l)/(r(n)+1)).substring(1)+"ON CONFLICT("+q(e)+")DO UPDATE SET"+o(c(n,(a=>q(a)+"=excluded."+q(a))),s),l),z=a=>o(c(a,(()=>"?")),s),G=JSON.parse,K=I(),V=I(),Q=(a,t,e,s,n,i,o=[])=>{let c,r,l,y=0,w=0;x(K,o,(()=>0)),x(V,o,(()=>[]));const u=async a=>(2!=y&&(y=1,await d.schedule((async()=>{await a(),y=0}))),d),d={load:async(e,s)=>await u((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(d.stopAutoLoad(),await d.load(e,n),w=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)}}))})),d),stopAutoLoad:()=>(w&&(n(l),l=void 0,w=0),d),save:async t=>(1!=y&&(y=2,await d.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}y=0}))),d),startAutoSave:async()=>(await d.stopAutoSave().save(),c=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||d.save((()=>[e,s]))})),d),stopAutoSave:()=>(p(c,a.delListener),d),schedule:async(...a)=>(E(M(V,o),...a),await(async()=>{if(!M(K,o)){for(P(K,o,1);!f((a=M(V,o),r=a.shift()));)try{await r()}catch(a){i?.(a)}P(K,o,0)}var a})(),d),getStore:()=>a,destroy:()=>d.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return R(d)},X="store",Z=(a,t,e,s,n,[i],o,c)=>{const[r,l,y,w]=U(t,o,n);return Q(a,(async()=>await w((async()=>(await r(),G((await l(i,W))[H]?.[X]??"null"))))),(async a=>await w((async()=>{var t;await r(),await y(i,W,{[H]:{[X]:(t=a()??null,JSON.stringify(t,((a,t)=>d(t,Map)?h.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,c)},aa=(a,t,e,s,n,[i,o,[c,r,l]],w,E)=>{const[u,d,p,T]=U(t,w,n),v=async(a,t)=>await m($(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,W,{[H]:a},!0,!0,t):null;return Q(a,(async()=>await T((async()=>{await u();const a=await(async()=>O(y(await m($(i,(async([a,t],e)=>[a,await d(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>c?(await d(l,W))[H]:{})();return D(a)&&f(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await u(),f(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,E)},ta="json",ea="autoLoadIntervalSeconds",sa="rowIdColumnName",na="tableId",ia="tableName",oa={mode:ta,[ea]:1},ca={load:0,save:0,[ia]:e+"_values"},ra=(a,t,e,s)=>{const n=I();return C(a,((a,i)=>{const o=w(b(S(t,T(a)?{[e]:a}:a)),0,g(t));f(o[0])||s(i,o[0])||P(n,i,o)})),n},la="pragma ",ya="data_version",wa="schema_version",Ea=(a,t,s,n,i,o,c,r)=>{let l,y;const[E,u,d,f]=(a=>{const t=(a=>S(oa,T(a)?{storeTableName:a}:a??{}))(a),s=t[ea];if(t.mode==ta){const{storeTableName:a=e}=t;return[1,s,[a],B(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=w(b(S(ca,o)),0,g(ca)),r=c[2],l=B(r);return[0,s,[ra(n,{[na]:null,[sa]:W},na,(a=>j(l,a)&&a==r)),ra(i,{[ia]:null,[sa]:W,deleteEmptyColumns:0,deleteEmptyTable:0},ia,((a,t)=>j(l,t)&&t==r)),c],l]})(t);return(E?Z:aa)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(la+ya))[0][ya],e=(await s(la+wa))[0][wa];t==(l??=t)&&e==(y??=e)||(a(),l=t,y=e)}catch{}}),1e3*u),n((t=>f.has(t)?a():0))]),(([a,t])=>{clearInterval(a),l=y=null,i(t)}),c,d,A(f),r)};a.createExpoSqlitePersister=(a,t,e,s,n)=>Ea(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,r=Object,i=r.keys,c=r.freeze,u=t=>(t=>n(t,r)&&t.constructor==r)(t)&&0==(t=>i(t).length)(t),f=JSON.parse;t.createFilePersister=(t,i)=>((t,f,y,d,l)=>{let p,h,w,v=0,g=0,A=0;const S=[],m=async t=>(2!=v&&(v=1,await L.schedule((async()=>{await t(),v=0}))),L),L={load:async(e,a)=>await m((async()=>{try{t.setContent(await f())}catch{t.setContent([e,a])}})),startAutoLoad:async(a={},s={})=>{return L.stopAutoLoad(),await L.load(a,s),A=1,n=async(e,a)=>await m((async()=>{if(a)t.setTransactionChanges(a());else try{t.setContent(e?.()??await f())}catch{}})),w=e.watch(i,(()=>n())),L;var n},stopAutoLoad:()=>{return A&&(t=w,t?.close(),w=void 0,A=0),L;var t},save:async e=>(1!=v&&(v=2,await L.schedule((async()=>{try{await(async t=>{return await a.writeFile(i,(e=t(),JSON.stringify(e,((t,e)=>n(e,Map)?r.fromEntries([...e]):e))),s);var e})(t.getContent)}catch{}v=0}))),L),startAutoSave:async()=>(await L.stopAutoSave().save(),p=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();u(a)&&u(s)||L.save((()=>[a,s]))})),L),stopAutoSave:()=>{var e,a;return e=p,a=t.delListener,o(e)||a(e),L},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(S,...t),await(async()=>{if(!g){for(g=1;!o((t=S,h=t.shift()));)try{await h()}catch{}g=0}var t})(),L),getStore:()=>t,destroy:()=>L.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return c(L)})(t,(async()=>f(await a.readFile(i,s))))},"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,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 +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),c=JSON.parse,i=t=>t.headers.get("ETag");t.createRemotePersister=(t,n,d,y)=>{let u;return((t,c,f,h,l)=>{let p,w,v,g=0,A=0,S=0;const T=[],m=async t=>(2!=g&&(g=1,await C.schedule((async()=>{await t(),g=0}))),C),C={load:async(e,a)=>await m((async()=>{try{t.setContent(await c())}catch{t.setContent([e,a])}})),startAutoLoad:async(e={},s={})=>{return C.stopAutoLoad(),await C.load(e,s),S=1,o=async(e,a)=>await m((async()=>{if(a)t.setTransactionChanges(a());else try{t.setContent(e?.()??await c())}catch{}})),v=setInterval((async()=>{const t=await fetch(n,{method:"HEAD"}),e=i(t);a(u)||a(e)||e==u||(u=e,o())}),1e3*y),C;var o},stopAutoLoad:()=>(S&&(clearInterval(v),v=void 0,S=0),C),save:async a=>(1!=g&&(g=2,await C.schedule((async()=>{try{await(async t=>{return await fetch(d,{method:"POST",headers:{"Content-Type":"application/json"},body:(a=t(),JSON.stringify(a,((t,a)=>e(a,Map)?s.fromEntries([...a]):a)))});var a})(t.getContent)}catch{}g=0}))),C),startAutoSave:async()=>(await C.stopAutoSave().save(),p=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();r(a)&&r(s)||C.save((()=>[a,s]))})),C),stopAutoSave:()=>{var e,s;return e=p,s=t.delListener,a(e)||s(e),C},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(T,...t),await(async()=>{if(!A){for(A=1;!a((t=T,w=t.shift()));)try{await w()}catch{}A=0}var t})(),C),getStore:()=>t,destroy:()=>C.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return o(C)})(t,(async()=>{const t=await fetch(n);return u=i(t),c(await t.text())}))}},"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=(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),c=JSON.parse,i=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)},f=i(),h=i(),l=t=>t.headers.get("ETag");t.createRemotePersister=(t,n,i,p,w)=>{let v;return((t,e,s,n,c,i,l=[])=>{let p,w,v,g=0,A=0;u(f,l,(()=>0)),u(h,l,(()=>[]));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={},s={})=>(T.stopAutoLoad(),await T.load(a,s),A=1,v=n((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)}}))})),T),stopAutoLoad:()=>(A&&(c(v),v=void 0,A=0),T),save:async e=>(1!=g&&(g=2,await T.schedule((async()=>{try{await s(t.getContent,e)}catch(t){i?.(t)}g=0}))),T),startAutoSave:async()=>(await T.stopAutoSave().save(),p=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();r(a)&&r(s)||T.save((()=>[a,s]))})),T),stopAutoSave:()=>{var e,s;return e=p,s=t.delListener,a(e)||s(e),T},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(d(h,l),...t),await(async()=>{if(!d(f,l)){for(y(f,l,1);!a((t=d(h,l),w=t.shift()));)try{await w()}catch(t){i?.(t)}y(f,l,0)}var t})(),T),getStore:()=>t,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return o(T)})(t,(async()=>{const t=await fetch(n);return v=l(t),c(await t.text())}),(async t=>{return await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:(a=t(),JSON.stringify(a,((t,a)=>e(a,Map)?s.fromEntries([...a]):a)))});var a}),(t=>setInterval((async()=>{const e=await fetch(n,{method:"HEAD"}),s=l(e);a(v)||a(s)||s==v||(v=s,t())}),1e3*p)),(t=>clearInterval(t)),w)}},"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=(a,t="")=>a.join(t),c=(a,t)=>a.map(t),r=a=>a.length,l=a=>0==r(a),y=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),u=(a,...t)=>a.push(...t),d=Promise,E=(a,t)=>a instanceof t,p=a=>null==a,f=(a,t,e)=>p(a)?e?.():t(a),m=a=>t(a)==n,T=async a=>d.all(a),v=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],A=(a,t)=>a?.delete(t),L=Object,R=L.keys,O=L.freeze,S=(a=[])=>L.fromEntries(a),N=(...a)=>L.assign({},...a),b=(a,t)=>c(L.entries(a),(([a,e])=>t(e,a))),C=a=>L.values(a),g=a=>r(R(a)),D=a=>(a=>E(a,L)&&a.constructor==L)(a)&&0==g(a),I=a=>new Map(a),_=a=>[...a?.keys()??[]],M=(a,t)=>a?.get(t),F=(a,t)=>c([...a?.entries()??[]],(([a,e])=>t(e,a))),$=(a,t,e)=>p(e)?(A(a,t),a):a?.set(t,e),P=(a,t,e,s=$)=>(b(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!p(((a,t)=>f(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),W=a=>new Set(Array.isArray(a)||p(a)?a:[a]),j=(a,t)=>a?.add(t),x="_",B="_id",k=a=>`"${a.replace(/"/g,'""')}"`,q="FROM pragma_table_",H="WHERE",J=(a,t)=>{const e=I();return[async()=>P(e,S(await T(c(await a("SELECT name "+q+"list WHERE schema='main'AND type='table'AND name IN("+V(t)+")",t),(async({name:t})=>[t,S(c(await a("SELECT name,type "+q+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,s)=>{return $(e,t,P((o=I,v(n=e,i=t)||$(n,i,o()),M(n,i)),s,((a,t,e)=>{e!=M(a,t)&&$(a,t,e)}),((a,t)=>$(a,t))));var n,i,o}),((a,t)=>$(e,t))),async(t,s)=>((a,t)=>!p(M(M(e,a),t)))(t,s)?S(y(c(await a("SELECT*FROM"+k(t)),(a=>{return[a[s],(t={...a},e=s,delete t[e],t)];var t,e})),(([a,t])=>!p(a)&&!D(t)))):{},async(t,n,i,r,w,d=!1)=>{const E=W();b(i??{},(a=>c(R(a??{}),(a=>j(E,a)))));const f=h(E);if(!d&&w&&l(f)&&v(e,t))return await a("DROP TABLE"+k(t)),void $(e,t);if(l(f)||v(e,t)){const s=M(e,t),i=W(_(s));await T([...c(f,(async e=>{A(i,e)||(await a(`ALTER TABLE${k(t)}ADD${k(e)}`),$(s,e,""))})),...!d&&r?c(h(i),(async e=>{e!=n&&(await a(`ALTER TABLE${k(t)}DROP${k(e)}`),$(s,e))})):[]])}else await a(`CREATE TABLE${k(t)}(${k(n)} PRIMARY KEY ON CONFLICT REPLACE${o(c(f,(a=>s+k(a))))});`),$(e,t,I([[n,""],...c(f,(a=>[a,""]))]));if(d)p(i)?await a("DELETE FROM"+k(t)+"WHERE 1"):await T(b(i,(async(e,s)=>{p(e)?await a("DELETE FROM"+k(t)+H+k(n)+"=?",[s]):l(f)||await U(a,t,n,R(e),[s,...C(e)])})));else if(l(f))v(e,t)&&await a("DELETE FROM"+k(t)+"WHERE 1");else{const s=y(_(M(e,t)),(a=>a!=n)),o=[],r=[];b(i??{},((a,t)=>{u(o,t,...c(s,(t=>a?.[t]))),u(r,t)})),await U(a,t,n,s,o),await a("DELETE FROM"+k(t)+H+k(n)+"NOT IN("+V(r)+")",r)}}]},U=async(a,t,e,n,l)=>await a("INSERT INTO"+k(t)+"("+k(e)+o(c(n,(a=>s+k(a))))+")VALUES"+i(`,(?${i(",?",r(n))})`,r(l)/(r(n)+1)).substring(1)+"ON CONFLICT("+k(e)+")DO UPDATE SET"+o(c(n,(a=>k(a)+"=excluded."+k(a))),s),l),V=a=>o(c(a,(()=>"?")),s),Y=JSON.parse,z=(a,t,e,s,n)=>{let i,o,c,r=0,l=0,y=0;const w=[],d=async a=>(2!=r&&(r=1,await E.schedule((async()=>{await a(),r=0}))),E),E={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(E.stopAutoLoad(),await E.load(e,n),y=1,c=s((async(e,s)=>await d((async()=>{if(s)a.setTransactionChanges(s());else try{a.setContent(e?.()??await t())}catch{}})))),E),stopAutoLoad:()=>(y&&(n(c),c=void 0,y=0),E),save:async t=>(1!=r&&(r=2,await E.schedule((async()=>{try{await e(a.getContent,t)}catch{}r=0}))),E),startAutoSave:async()=>(await E.stopAutoSave().save(),i=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||E.save((()=>[e,s]))})),E),stopAutoSave:()=>(f(i,a.delListener),E),schedule:async(...a)=>(u(w,...a),await(async()=>{if(!l){for(l=1;!p((a=w,o=a.shift()));)try{await o()}catch{}l=0}var a})(),E),getStore:()=>a,destroy:()=>E.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return O(E)},K="store",G=(a,t,e,s,[n],i)=>{const[o,c,r]=J(t,i),l=z(a,(async()=>(await o(),Y((await c(n,B))[x]?.[K]))),(async a=>l.schedule(o,(async()=>{var t;await r(n,B,{[x]:{[K]:(t=a(),JSON.stringify(t,((a,t)=>E(t,Map)?L.fromEntries([...t]):t)))}},!0,!0)}))),e,s);return l},Q=(a,t,e,s,[n,i,[o,c,r]],l)=>{const[w,u,d]=J(t,l),E=async(a,t)=>await T(F(i,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await d(e,s,c,n,i,t)}))),f=async(a,t)=>c?await d(r,B,{[x]:a},!0,!0,t):null;return z(a,(async()=>{await w();const a=await(async()=>S(y(await T(F(n,(async([a,t],e)=>[a,await u(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>o?(await u(r,B))[x]:{})();return D(a)&&p(t)?void 0:[a,t]}),(async(a,t)=>{if(await w(),p(t)){const[t,e]=a();await E(t),await f(e)}else{const[a,e]=t();await E(a,!0),await f(e,!0)}}),e,s)},X="json",Z="autoLoadIntervalSeconds",aa="rowIdColumnName",ta="tableId",ea="tableName",sa={mode:X,[Z]:1},na={load:0,save:0,[ea]:e+"_values"},ia=(a,t,e,s)=>{const n=I();return b(a,((a,i)=>{const o=w(C(N(t,m(a)?{[e]:a}:a)),0,g(t));p(o[0])||s(i,o[0])||$(n,i,o)})),n},oa="pragma ",ca="data_version",ra="schema_version",la=(a,t,s,n,i,o)=>{let c,r;const[l,y,u,d]=(a=>{const t=(a=>N(sa,m(a)?{storeTableName:a}:a??{}))(a),s=t[Z];if(t.mode==X){const{storeTableName:a=e}=t;return[1,s,[a],W(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=w(C(N(na,o)),0,g(na)),r=c[2],l=W(r);return[0,s,[ia(n,{[ta]:null,[aa]:B},ta,(a=>j(l,a)&&a==r)),ia(i,{[ea]:null,[aa]:B,deleteEmptyColumns:0,deleteEmptyTable:0},ea,((a,t)=>j(l,t)&&t==r)),c],l]})(t);return(l?G:Q)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(oa+ca))[0][ca],e=(await s(oa+ra))[0][ra];t==(c??=t)&&e==(r??=e)||(a(),c=t,r=e)}catch{}}),1e3*y),n((t=>d.has(t)?a():0))]),(([a,t])=>{clearInterval(a),c=r=null,i(t)}),u,h(d))};a.createSqliteWasmPersister=(a,t,e,s,n)=>la(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)},"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=(a,t="")=>a.join(t),c=(a,t)=>a.map(t),r=a=>a.length,l=a=>0==r(a),y=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),u=(a,...t)=>a.push(...t),d=Promise,E=(a,t)=>a instanceof t,p=a=>null==a,f=(a,t,e)=>p(a)?e?.():t(a),m=a=>t(a)==n,T=async a=>d.all(a),v=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],A=(a,t)=>a?.delete(t),L=Object,R=L.keys,N=L.freeze,O=(a=[])=>L.fromEntries(a),S=(...a)=>L.assign({},...a),b=(a,t)=>c(L.entries(a),(([a,e])=>t(e,a))),C=a=>L.values(a),g=a=>r(R(a)),D=a=>(a=>E(a,L)&&a.constructor==L)(a)&&0==g(a),I=a=>new Map(a),_=a=>[...a?.keys()??[]],M=(a,t)=>a?.get(t),F=(a,t)=>c([...a?.entries()??[]],(([a,e])=>t(e,a))),$=(a,t,e)=>p(e)?(A(a,t),a):a?.set(t,e),P=(a,t,e)=>(v(a,t)||$(a,t,e()),M(a,t)),B=(a,t,e,s=$)=>(b(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!p(((a,t)=>f(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),W=a=>new Set(Array.isArray(a)||p(a)?a:[a]),j=(a,t)=>a?.add(t),x="_",k="_id",q=a=>`"${a.replace(/"/g,'""')}"`,H="FROM pragma_table_",J="WHERE",U=(a,t,e)=>{const n=I();return[async()=>B(n,O(await T(c(await a("SELECT name "+H+"list WHERE schema='main'AND type='table'AND name IN("+Y(t)+")",t),(async({name:t})=>[t,O(c(await a("SELECT name,type "+H+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>$(n,t,B(P(n,t,I),e,((a,t,e)=>{e!=M(a,t)&&$(a,t,e)}),((a,t)=>$(a,t))))),((a,t)=>$(n,t))),async(t,e)=>((a,t)=>!p(M(M(n,a),t)))(t,e)?O(y(c(await a("SELECT*FROM"+q(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!p(a)&&!D(t)))):{},async(t,e,i,r,w,d=!1)=>{const E=W();b(i??{},(a=>c(R(a??{}),(a=>j(E,a)))));const f=h(E);if(!d&&w&&l(f)&&v(n,t))return await a("DROP TABLE"+q(t)),void $(n,t);if(l(f)||v(n,t)){const s=M(n,t),i=W(_(s));await T([...c(f,(async e=>{A(i,e)||(await a(`ALTER TABLE${q(t)}ADD${q(e)}`),$(s,e,""))})),...!d&&r?c(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${q(t)}DROP${q(n)}`),$(s,n))})):[]])}else await a(`CREATE TABLE${q(t)}(${q(e)} PRIMARY KEY ON CONFLICT REPLACE${o(c(f,(a=>s+q(a))))});`),$(n,t,I([[e,""],...c(f,(a=>[a,""]))]));if(d)p(i)?await a("DELETE FROM"+q(t)+"WHERE 1"):await T(b(i,(async(s,n)=>{p(s)?await a("DELETE FROM"+q(t)+J+q(e)+"=?",[n]):l(f)||await V(a,t,e,R(s),[n,...C(s)])})));else if(l(f))v(n,t)&&await a("DELETE FROM"+q(t)+"WHERE 1");else{const s=y(_(M(n,t)),(a=>a!=e)),o=[],r=[];b(i??{},((a,t)=>{u(o,t,...c(s,(t=>a?.[t]))),u(r,t)})),await V(a,t,e,s,o),await a("DELETE FROM"+q(t)+J+q(e)+"NOT IN("+Y(r)+")",r)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},V=async(a,t,e,n,l)=>await a("INSERT INTO"+q(t)+"("+q(e)+o(c(n,(a=>s+q(a))))+")VALUES"+i(`,(?${i(",?",r(n))})`,r(l)/(r(n)+1)).substring(1)+"ON CONFLICT("+q(e)+")DO UPDATE SET"+o(c(n,(a=>q(a)+"=excluded."+q(a))),s),l),Y=a=>o(c(a,(()=>"?")),s),z=JSON.parse,G=I(),K=I(),Q=(a,t,e,s,n,i,o=[])=>{let c,r,l,y=0,w=0;P(G,o,(()=>0)),P(K,o,(()=>[]));const d=async a=>(2!=y&&(y=1,await E.schedule((async()=>{await a(),y=0}))),E),E={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(E.stopAutoLoad(),await E.load(e,n),w=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)}}))})),E),stopAutoLoad:()=>(w&&(n(l),l=void 0,w=0),E),save:async t=>(1!=y&&(y=2,await E.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}y=0}))),E),startAutoSave:async()=>(await E.stopAutoSave().save(),c=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||E.save((()=>[e,s]))})),E),stopAutoSave:()=>(f(c,a.delListener),E),schedule:async(...a)=>(u(M(K,o),...a),await(async()=>{if(!M(G,o)){for($(G,o,1);!p((a=M(K,o),r=a.shift()));)try{await r()}catch(a){i?.(a)}$(G,o,0)}var a})(),E),getStore:()=>a,destroy:()=>E.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return N(E)},X="store",Z=(a,t,e,s,n,[i],o,c)=>{const[r,l,y,w]=U(t,o,n);return Q(a,(async()=>await w((async()=>(await r(),z((await l(i,k))[x]?.[X]??"null"))))),(async a=>await w((async()=>{var t;await r(),await y(i,k,{[x]:{[X]:(t=a()??null,JSON.stringify(t,((a,t)=>E(t,Map)?L.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,c)},aa=(a,t,e,s,n,[i,o,[c,r,l]],w,u)=>{const[d,E,f,m]=U(t,w,n),v=async(a,t)=>await T(F(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,k,{[x]:a},!0,!0,t):null;return Q(a,(async()=>await m((async()=>{await d();const a=await(async()=>O(y(await T(F(i,(async([a,t],e)=>[a,await E(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>c?(await E(l,k))[x]:{})();return D(a)&&p(t)?void 0:[a,t]}))),(async(a,t)=>await m((async()=>{if(await d(),p(t)){const[t,e]=a();await v(t),await h(e)}else{const[a,e]=t();await v(a,!0),await h(e,!0)}}))),e,s,n,u)},ta="json",ea="autoLoadIntervalSeconds",sa="rowIdColumnName",na="tableId",ia="tableName",oa={mode:ta,[ea]:1},ca={load:0,save:0,[ia]:e+"_values"},ra=(a,t,e,s)=>{const n=I();return b(a,((a,i)=>{const o=w(C(S(t,m(a)?{[e]:a}:a)),0,g(t));p(o[0])||s(i,o[0])||$(n,i,o)})),n},la="pragma ",ya="data_version",wa="schema_version",ua=(a,t,s,n,i,o,c,r)=>{let l,y;const[u,d,E,p]=(a=>{const t=(a=>S(oa,m(a)?{storeTableName:a}:a??{}))(a),s=t[ea];if(t.mode==ta){const{storeTableName:a=e}=t;return[1,s,[a],W(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=w(C(S(ca,o)),0,g(ca)),r=c[2],l=W(r);return[0,s,[ra(n,{[na]:null,[sa]:k},na,(a=>j(l,a)&&a==r)),ra(i,{[ia]:null,[sa]:k,deleteEmptyColumns:0,deleteEmptyTable:0},ia,((a,t)=>j(l,t)&&t==r)),c],l]})(t);return(u?Z:aa)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(la+ya))[0][ya],e=(await s(la+wa))[0][wa];t==(l??=t)&&e==(y??=e)||(a(),l=t,y=e)}catch{}}),1e3*d),n((t=>p.has(t)?a():0))]),(([a,t])=>{clearInterval(a),l=y=null,i(t)}),c,E,h(p),r)};a.createSqliteWasmPersister=(a,t,e,s,n,i)=>ua(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),o=(a,t="")=>a.join(t),c=(a,t)=>a.map(t),r=a=>a.length,l=a=>0==r(a),y=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),u=(a,...t)=>a.push(...t),d=Promise,E=(a,t)=>a instanceof t,f=a=>null==a,p=(a,t,e)=>f(a)?e?.():t(a),T=a=>t(a)==n,m=async a=>d.all(a),v=(a,t)=>a?.has(t)??!1,A=a=>[...a?.values()??[]],L=(a,t)=>a?.delete(t),h=Object,R=h.keys,O=h.freeze,S=(a=[])=>h.fromEntries(a),N=(...a)=>h.assign({},...a),C=(a,t)=>c(h.entries(a),(([a,e])=>t(e,a))),g=a=>h.values(a),b=a=>r(R(a)),D=a=>(a=>E(a,h)&&a.constructor==h)(a)&&0==b(a),I=a=>new Map(a),F=a=>[...a?.keys()??[]],M=(a,t)=>a?.get(t),$=(a,t)=>c([...a?.entries()??[]],(([a,e])=>t(e,a))),P=(a,t,e)=>f(e)?(L(a,t),a):a?.set(t,e),_=(a,t,e,s=P)=>(C(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!f(((a,t)=>p(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),B=a=>new Set(Array.isArray(a)||f(a)?a:[a]),j=(a,t)=>a?.add(t),x="_",H="_id",W=a=>`"${a.replace(/"/g,'""')}"`,k="FROM pragma_table_",q="WHERE",J=(a,t)=>{const e=I();return[async()=>_(e,S(await m(c(await a("SELECT name "+k+"list WHERE schema='main'AND type='table'AND name IN("+Y(t)+")",t),(async({name:t})=>[t,S(c(await a("SELECT name,type "+k+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,s)=>{return P(e,t,_((o=I,v(n=e,i=t)||P(n,i,o()),M(n,i)),s,((a,t,e)=>{e!=M(a,t)&&P(a,t,e)}),((a,t)=>P(a,t))));var n,i,o}),((a,t)=>P(e,t))),async(t,s)=>((a,t)=>!f(M(M(e,a),t)))(t,s)?S(y(c(await a("SELECT*FROM"+W(t)),(a=>{return[a[s],(t={...a},e=s,delete t[e],t)];var t,e})),(([a,t])=>!f(a)&&!D(t)))):{},async(t,n,i,r,w,d=!1)=>{const E=B();C(i??{},(a=>c(R(a??{}),(a=>j(E,a)))));const p=A(E);if(!d&&w&&l(p)&&v(e,t))return await a("DROP TABLE"+W(t)),void P(e,t);if(l(p)||v(e,t)){const s=M(e,t),i=B(F(s));await m([...c(p,(async e=>{L(i,e)||(await a(`ALTER TABLE${W(t)}ADD${W(e)}`),P(s,e,""))})),...!d&&r?c(A(i),(async e=>{e!=n&&(await a(`ALTER TABLE${W(t)}DROP${W(e)}`),P(s,e))})):[]])}else await a(`CREATE TABLE${W(t)}(${W(n)} PRIMARY KEY ON CONFLICT REPLACE${o(c(p,(a=>s+W(a))))});`),P(e,t,I([[n,""],...c(p,(a=>[a,""]))]));if(d)f(i)?await a("DELETE FROM"+W(t)+"WHERE 1"):await m(C(i,(async(e,s)=>{f(e)?await a("DELETE FROM"+W(t)+q+W(n)+"=?",[s]):l(p)||await U(a,t,n,R(e),[s,...g(e)])})));else if(l(p))v(e,t)&&await a("DELETE FROM"+W(t)+"WHERE 1");else{const s=y(F(M(e,t)),(a=>a!=n)),o=[],r=[];C(i??{},((a,t)=>{u(o,t,...c(s,(t=>a?.[t]))),u(r,t)})),await U(a,t,n,s,o),await a("DELETE FROM"+W(t)+q+W(n)+"NOT IN("+Y(r)+")",r)}}]},U=async(a,t,e,n,l)=>await a("INSERT INTO"+W(t)+"("+W(e)+o(c(n,(a=>s+W(a))))+")VALUES"+i(`,(?${i(",?",r(n))})`,r(l)/(r(n)+1)).substring(1)+"ON CONFLICT("+W(e)+")DO UPDATE SET"+o(c(n,(a=>W(a)+"=excluded."+W(a))),s),l),Y=a=>o(c(a,(()=>"?")),s),z=JSON.parse,K=(a,t,e,s,n)=>{let i,o,c,r=0,l=0,y=0;const w=[],d=async a=>(2!=r&&(r=1,await E.schedule((async()=>{await a(),r=0}))),E),E={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(E.stopAutoLoad(),await E.load(e,n),y=1,c=s((async(e,s)=>await d((async()=>{if(s)a.setTransactionChanges(s());else try{a.setContent(e?.()??await t())}catch{}})))),E),stopAutoLoad:()=>(y&&(n(c),c=void 0,y=0),E),save:async t=>(1!=r&&(r=2,await E.schedule((async()=>{try{await e(a.getContent,t)}catch{}r=0}))),E),startAutoSave:async()=>(await E.stopAutoSave().save(),i=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||E.save((()=>[e,s]))})),E),stopAutoSave:()=>(p(i,a.delListener),E),schedule:async(...a)=>(u(w,...a),await(async()=>{if(!l){for(l=1;!f((a=w,o=a.shift()));)try{await o()}catch{}l=0}var a})(),E),getStore:()=>a,destroy:()=>E.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return O(E)},V="store",G=(a,t,e,s,[n],i)=>{const[o,c,r]=J(t,i),l=K(a,(async()=>(await o(),z((await c(n,H))[x]?.[V]))),(async a=>l.schedule(o,(async()=>{var t;await r(n,H,{[x]:{[V]:(t=a(),JSON.stringify(t,((a,t)=>E(t,Map)?h.fromEntries([...t]):t)))}},!0,!0)}))),e,s);return l},Q=(a,t,e,s,[n,i,[o,c,r]],l)=>{const[w,u,d]=J(t,l),E=async(a,t)=>await m($(i,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await d(e,s,c,n,i,t)}))),p=async(a,t)=>c?await d(r,H,{[x]:a},!0,!0,t):null;return K(a,(async()=>{await w();const a=await(async()=>S(y(await m($(n,(async([a,t],e)=>[a,await u(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>o?(await u(r,H))[x]:{})();return D(a)&&f(t)?void 0:[a,t]}),(async(a,t)=>{if(await w(),f(t)){const[t,e]=a();await E(t),await p(e)}else{const[a,e]=t();await E(a,!0),await p(e,!0)}}),e,s)},X="json",Z="autoLoadIntervalSeconds",aa="rowIdColumnName",ta="tableId",ea="tableName",sa={mode:X,[Z]:1},na={load:0,save:0,[ea]:e+"_values"},ia=(a,t,e,s)=>{const n=I();return C(a,((a,i)=>{const o=w(g(N(t,T(a)?{[e]:a}:a)),0,b(t));f(o[0])||s(i,o[0])||P(n,i,o)})),n},oa="pragma ",ca="data_version",ra="schema_version",la=(a,t,s,n,i,o)=>{let c,r;const[l,y,u,d]=(a=>{const t=(a=>N(sa,T(a)?{storeTableName:a}:a??{}))(a),s=t[Z];if(t.mode==X){const{storeTableName:a=e}=t;return[1,s,[a],B(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=w(g(N(na,o)),0,b(na)),r=c[2],l=B(r);return[0,s,[ia(n,{[ta]:null,[aa]:H},ta,(a=>j(l,a)&&a==r)),ia(i,{[ea]:null,[aa]:H,deleteEmptyColumns:0,deleteEmptyTable:0},ea,((a,t)=>j(l,t)&&t==r)),c],l]})(t);return(l?G:Q)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(oa+ca))[0][ca],e=(await s(oa+ra))[0][ra];t==(c??=t)&&e==(r??=e)||(a(),c=t,r=e)}catch{}}),1e3*y),n((t=>d.has(t)?a():0))]),(([a,t])=>{clearInterval(a),c=r=null,i(t)}),u,A(d))},ya="change";a.createSqlite3Persister=(a,t,e,s)=>la(a,e,((a,e=[])=>new d(((s,n)=>t.all(a,e,((a,t)=>a?n(a):s(t.map((a=>({...a}))))))))),(a=>{const e=(t,e,s)=>a(s);return t.on(ya,e),e}),(a=>t.off(ya,a)),s)},"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=(a,t="")=>a.join(t),o=(a,t)=>a.map(t),r=a=>a.length,l=a=>0==r(a),y=(a,t)=>a.filter(t),w=(a,t,e)=>a.slice(t,e),u=(a,...t)=>a.push(...t),E=Promise,d=(a,t)=>a instanceof t,f=a=>null==a,p=(a,t,e)=>f(a)?e?.():t(a),T=a=>t(a)==n,m=async a=>E.all(a),v=(a,t)=>a?.has(t)??!1,A=a=>[...a?.values()??[]],L=(a,t)=>a?.delete(t),h=Object,N=h.keys,R=h.freeze,O=(a=[])=>h.fromEntries(a),S=(...a)=>h.assign({},...a),C=(a,t)=>o(h.entries(a),(([a,e])=>t(e,a))),g=a=>h.values(a),b=a=>r(N(a)),D=a=>(a=>d(a,h)&&a.constructor==h)(a)&&0==b(a),I=a=>new Map(a),F=a=>[...a?.keys()??[]],M=(a,t)=>a?.get(t),$=(a,t)=>o([...a?.entries()??[]],(([a,e])=>t(e,a))),P=(a,t,e)=>f(e)?(L(a,t),a):a?.set(t,e),_=(a,t,e)=>(v(a,t)||P(a,t,e()),M(a,t)),B=(a,t,e,s=P)=>(C(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!f(((a,t)=>p(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),j=a=>new Set(Array.isArray(a)||f(a)?a:[a]),x=(a,t)=>a?.add(t),H="_",W="_id",k=a=>`"${a.replace(/"/g,'""')}"`,q="FROM pragma_table_",J="WHERE",U=(a,t,e)=>{const n=I();return[async()=>B(n,O(await m(o(await a("SELECT name "+q+"list WHERE schema='main'AND type='table'AND name IN("+z(t)+")",t),(async({name:t})=>[t,O(o(await a("SELECT name,type "+q+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>P(n,t,B(_(n,t,I),e,((a,t,e)=>{e!=M(a,t)&&P(a,t,e)}),((a,t)=>P(a,t))))),((a,t)=>P(n,t))),async(t,e)=>((a,t)=>!f(M(M(n,a),t)))(t,e)?O(y(o(await a("SELECT*FROM"+k(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!f(a)&&!D(t)))):{},async(t,e,i,r,w,E=!1)=>{const d=j();C(i??{},(a=>o(N(a??{}),(a=>x(d,a)))));const p=A(d);if(!E&&w&&l(p)&&v(n,t))return await a("DROP TABLE"+k(t)),void P(n,t);if(l(p)||v(n,t)){const s=M(n,t),i=j(F(s));await m([...o(p,(async e=>{L(i,e)||(await a(`ALTER TABLE${k(t)}ADD${k(e)}`),P(s,e,""))})),...!E&&r?o(A(i),(async n=>{n!=e&&(await a(`ALTER TABLE${k(t)}DROP${k(n)}`),P(s,n))})):[]])}else await a(`CREATE TABLE${k(t)}(${k(e)} PRIMARY KEY ON CONFLICT REPLACE${c(o(p,(a=>s+k(a))))});`),P(n,t,I([[e,""],...o(p,(a=>[a,""]))]));if(E)f(i)?await a("DELETE FROM"+k(t)+"WHERE 1"):await m(C(i,(async(s,n)=>{f(s)?await a("DELETE FROM"+k(t)+J+k(e)+"=?",[n]):l(p)||await Y(a,t,e,N(s),[n,...g(s)])})));else if(l(p))v(n,t)&&await a("DELETE FROM"+k(t)+"WHERE 1");else{const s=y(F(M(n,t)),(a=>a!=e)),c=[],r=[];C(i??{},((a,t)=>{u(c,t,...o(s,(t=>a?.[t]))),u(r,t)})),await Y(a,t,e,s,c),await a("DELETE FROM"+k(t)+J+k(e)+"NOT IN("+z(r)+")",r)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},Y=async(a,t,e,n,l)=>await a("INSERT INTO"+k(t)+"("+k(e)+c(o(n,(a=>s+k(a))))+")VALUES"+i(`,(?${i(",?",r(n))})`,r(l)/(r(n)+1)).substring(1)+"ON CONFLICT("+k(e)+")DO UPDATE SET"+c(o(n,(a=>k(a)+"=excluded."+k(a))),s),l),z=a=>c(o(a,(()=>"?")),s),G=JSON.parse,K=I(),V=I(),Q=(a,t,e,s,n,i,c=[])=>{let o,r,l,y=0,w=0;_(K,c,(()=>0)),_(V,c,(()=>[]));const E=async a=>(2!=y&&(y=1,await d.schedule((async()=>{await a(),y=0}))),d),d={load:async(e,s)=>await E((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(d.stopAutoLoad(),await d.load(e,n),w=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)}}))})),d),stopAutoLoad:()=>(w&&(n(l),l=void 0,w=0),d),save:async t=>(1!=y&&(y=2,await d.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}y=0}))),d),startAutoSave:async()=>(await d.stopAutoSave().save(),o=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();D(e)&&D(s)||d.save((()=>[e,s]))})),d),stopAutoSave:()=>(p(o,a.delListener),d),schedule:async(...a)=>(u(M(V,c),...a),await(async()=>{if(!M(K,c)){for(P(K,c,1);!f((a=M(V,c),r=a.shift()));)try{await r()}catch(a){i?.(a)}P(K,c,0)}var a})(),d),getStore:()=>a,destroy:()=>d.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return R(d)},X="store",Z=(a,t,e,s,n,[i],c,o)=>{const[r,l,y,w]=U(t,c,n);return Q(a,(async()=>await w((async()=>(await r(),G((await l(i,W))[H]?.[X]??"null"))))),(async a=>await w((async()=>{var t;await r(),await y(i,W,{[H]:{[X]:(t=a()??null,JSON.stringify(t,((a,t)=>d(t,Map)?h.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,o)},aa=(a,t,e,s,n,[i,c,[o,r,l]],w,u)=>{const[E,d,p,T]=U(t,w,n),v=async(a,t)=>await m($(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,W,{[H]:a},!0,!0,t):null;return Q(a,(async()=>await T((async()=>{await E();const a=await(async()=>O(y(await m($(i,(async([a,t],e)=>[a,await d(e,t)]))),(a=>!D(a[1])))))(),t=await(async()=>o?(await d(l,W))[H]:{})();return D(a)&&f(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await E(),f(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,u)},ta="json",ea="autoLoadIntervalSeconds",sa="rowIdColumnName",na="tableId",ia="tableName",ca={mode:ta,[ea]:1},oa={load:0,save:0,[ia]:e+"_values"},ra=(a,t,e,s)=>{const n=I();return C(a,((a,i)=>{const c=w(g(S(t,T(a)?{[e]:a}:a)),0,b(t));f(c[0])||s(i,c[0])||P(n,i,c)})),n},la="pragma ",ya="data_version",wa="schema_version",ua=(a,t,s,n,i,c,o,r)=>{let l,y;const[u,E,d,f]=(a=>{const t=(a=>S(ca,T(a)?{storeTableName:a}:a??{}))(a),s=t[ea];if(t.mode==ta){const{storeTableName:a=e}=t;return[1,s,[a],j(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=t,o=w(g(S(oa,c)),0,b(oa)),r=o[2],l=j(r);return[0,s,[ra(n,{[na]:null,[sa]:W},na,(a=>x(l,a)&&a==r)),ra(i,{[ia]:null,[sa]:W,deleteEmptyColumns:0,deleteEmptyTable:0},ia,((a,t)=>x(l,t)&&t==r)),o],l]})(t);return(u?Z:aa)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[setInterval((async()=>{try{const t=(await s(la+ya))[0][ya],e=(await s(la+wa))[0][wa];t==(l??=t)&&e==(y??=e)||(a(),l=t,y=e)}catch{}}),1e3*E),n((t=>f.has(t)?a():0))]),(([a,t])=>{clearInterval(a),l=y=null,i(t)}),o,d,A(f),r)},Ea="change";a.createSqlite3Persister=(a,t,e,s,n)=>ua(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 E(s));var s}),(a=>{const e=(t,e,s)=>a(s);return t.on(Ea,e),e}),(a=>t.off(Ea,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=>t.length,a=t=>t.shift(),n=t=>null==t,o=(t,e,s)=>n(t)?s?.():e(t),c=Object,i=c.keys,r=c.freeze,d=(t=[])=>c.fromEntries(t),l=(t,e)=>!n(((t,e)=>o(t,(t=>t[e])))(t,e)),u=(t,e)=>((t,e)=>t.map(e))(c.entries(t),(([t,s])=>e(s,t))),y=t=>(t=>t instanceof c&&t.constructor==c)(t)&&0==(t=>s(i(t)))(t),g=(t,e,s)=>(l(t,e)||(t[e]=s()),t[e]),f=(t,e)=>((t,e)=>t?.forEach(e))(t,((t,s)=>e(s,t))),p="t",h="delete",v=t=>[t.get(p),t.get("v")],w=(t,s,a,o)=>{const c=n(s)?t:t.get(s)??t.set(s,new e.Map);let i;return u(a,((t,e)=>{o(c,e,t)&&(i=1)})),c.forEach(((t,e)=>{l(a,e)||(c.delete(e),i=1)})),n(s)||c.size||t.delete(s),i};t.createYjsPersister=(t,c,i="tinybase")=>{const l=c.getMap(i);return((t,i,S,A,b)=>{let j,O,J,L=0,N=0,C=0;const T=[],m=async t=>(2!=L&&(L=1,await z.schedule((async()=>{await t(),L=0}))),z),z={load:async(e,s)=>await m((async()=>{try{t.setContent(await i())}catch{t.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(z.stopAutoLoad(),await z.load(e,n),C=1,J=(t=>{const e=e=>t(void 0,(()=>((t,e)=>{if(1==s(e)&&(n=e[0].path,0==s(n)))return[t.get("t").toJSON(),t.get("v").toJSON()];var n;const[c,i]=v(t),r={},l={};return((t,e)=>{t.forEach((({path:t,changes:{keys:e}})=>a(t)==p?o(a(t),(s=>{const n=g(r,s,d),i=c.get(s);o(a(t),(t=>{const s=g(n,t,d),a=i.get(t);f(e,((t,{action:e})=>s[t]=e==h?null:a.get(t)))}),(()=>f(e,((t,{action:e})=>n[t]=e==h?null:i.get(t)?.toJSON()))))}),(()=>f(e,((t,{action:e})=>r[t]=e==h?null:c.get(t)?.toJSON())))):f(e,((t,{action:e})=>l[t]=e==h?null:i.get(t)))))})(e),[r,l]})(l,e)));return l.observeDeep(e),e})((async(e,s)=>await m((async()=>{if(s)t.setTransactionChanges(s());else try{t.setContent(e?.()??await i())}catch{}})))),z),stopAutoLoad:()=>{return C&&(t=J,l.unobserveDeep(t),J=void 0,C=0),z;var t},save:async s=>(1!=L&&(L=2,await z.schedule((async()=>{try{await(async(t,s)=>c.transact((()=>((t,s,a)=>{(t=>{t.size||(t.set(p,new e.Map),t.set("v",new e.Map))})(t);const[c,i]=v(t),r=()=>{d=1};let d=1;if(o(a?.(),(([t,e])=>{d=0,u(t,((t,e)=>d?0:n(t)?c.delete(e):o(c.get(e),(e=>u(t,((t,s)=>d?0:n(t)?e.delete(s):o(e.get(s),(e=>u(t,((t,s)=>n(t)?e.delete(s):e.set(s,t)))),r)))),r))),u(e,((t,e)=>d?0:n(t)?i.delete(e):i.set(e,t)))})),d){const[t,e]=s();w(c,void 0,t,((t,e,s)=>w(c,e,s,((t,e,s)=>w(t,e,s,((t,e,s)=>{if(t.get(e)!==s)return t.set(e,s),1})))))),w(i,void 0,e,((t,e,s)=>{i.get(e)!==s&&i.set(e,s)}))}})(l,t,s))))(t.getContent,s)}catch{}L=0}))),z),startAutoSave:async()=>(await z.stopAutoSave().save(),j=t.addDidFinishTransactionListener(((t,e)=>{const[s,a]=e();y(s)&&y(a)||z.save((()=>[s,a]))})),z),stopAutoSave:()=>(o(j,t.delListener),z),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(T,...t),await(async()=>{if(!N){for(N=1;!n(O=a(T));)try{await O()}catch{}N=0}})(),z),getStore:()=>t,destroy:()=>z.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return r(z)})(t,(async()=>l.size?[l.get(p).toJSON(),l.get("v").toJSON()]:void 0))}},"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=>t.length,a=t=>t.shift(),n=t=>null==t,o=(t,e,s)=>n(t)?s?.():e(t),c=Object,r=c.keys,i=c.freeze,d=(t=[])=>c.fromEntries(t),l=(t,e)=>!n(((t,e)=>o(t,(t=>t[e])))(t,e)),u=(t,e)=>((t,e)=>t.map(e))(c.entries(t),(([t,s])=>e(s,t))),y=t=>(t=>t instanceof c&&t.constructor==c)(t)&&0==(t=>s(r(t)))(t),g=(t,e,s)=>(l(t,e)||(t[e]=s()),t[e]),f=t=>new Map(t),p=(t,e)=>t?.get(e),h=(t,e)=>((t,e)=>t?.forEach(e))(t,((t,s)=>e(s,t))),v=(t,e,s)=>{return n(s)?(a=t,o=e,a?.delete(o),t):t?.set(e,s);var a,o},w=(t,e,s)=>{var a,n;return a=t,n=e,a?.has(n)||v(t,e,s()),p(t,e)},S=f(),A=f(),b="t",j="delete",O=t=>[t.get(b),t.get("v")],J=(t,s,a,o)=>{const c=n(s)?t:t.get(s)??t.set(s,new e.Map);let r;return u(a,((t,e)=>{o(c,e,t)&&(r=1)})),c.forEach(((t,e)=>{l(a,e)||(c.delete(e),r=1)})),n(s)||c.size||t.delete(s),r};t.createYjsPersister=(t,c,r="tinybase",l)=>{const f=c.getMap(r);return((t,e,s,c,r,d,l=[])=>{let u,g,f,h=0,b=0;w(S,l,(()=>0)),w(A,l,(()=>[]));const j=async t=>(2!=h&&(h=1,await O.schedule((async()=>{await t(),h=0}))),O),O={load:async(s,a)=>await j((async()=>{try{t.setContent(await e())}catch{t.setContent([s,a])}})),startAutoLoad:async(s={},a={})=>(O.stopAutoLoad(),await O.load(s,a),b=1,f=c((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){d?.(t)}}))})),O),stopAutoLoad:()=>(b&&(r(f),f=void 0,b=0),O),save:async e=>(1!=h&&(h=2,await O.schedule((async()=>{try{await s(t.getContent,e)}catch(t){d?.(t)}h=0}))),O),startAutoSave:async()=>(await O.stopAutoSave().save(),u=t.addDidFinishTransactionListener(((t,e)=>{const[s,a]=e();y(s)&&y(a)||O.save((()=>[s,a]))})),O),stopAutoSave:()=>(o(u,t.delListener),O),schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(p(A,l),...t),await(async()=>{if(!p(S,l)){for(v(S,l,1);!n(g=a(p(A,l)));)try{await g()}catch(t){d?.(t)}v(S,l,0)}})(),O),getStore:()=>t,destroy:()=>O.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return i(O)})(t,(async()=>f.size?[f.get(b).toJSON(),f.get("v").toJSON()]:void 0),(async(t,s)=>c.transact((()=>((t,s,a)=>{(t=>{t.size||(t.set(b,new e.Map),t.set("v",new e.Map))})(t);const[c,r]=O(t),i=()=>{d=1};let d=1;if(o(a?.(),(([t,e])=>{d=0,u(t,((t,e)=>d?0:n(t)?c.delete(e):o(c.get(e),(e=>u(t,((t,s)=>d?0:n(t)?e.delete(s):o(e.get(s),(e=>u(t,((t,s)=>n(t)?e.delete(s):e.set(s,t)))),i)))),i))),u(e,((t,e)=>d?0:n(t)?r.delete(e):r.set(e,t)))})),d){const[t,e]=s();J(c,void 0,t,((t,e,s)=>J(c,e,s,((t,e,s)=>J(t,e,s,((t,e,s)=>{if(t.get(e)!==s)return t.set(e,s),1})))))),J(r,void 0,e,((t,e,s)=>{r.get(e)!==s&&r.set(e,s)}))}})(f,t,s)))),(t=>{const e=e=>t(void 0,(()=>((t,e)=>{if(1==s(e)&&(n=e[0].path,0==s(n)))return[t.get("t").toJSON(),t.get("v").toJSON()];var n;const[c,r]=O(t),i={},l={};return((t,e)=>{t.forEach((({path:t,changes:{keys:e}})=>a(t)==b?o(a(t),(s=>{const n=g(i,s,d),r=c.get(s);o(a(t),(t=>{const s=g(n,t,d),a=r.get(t);h(e,((t,{action:e})=>s[t]=e==j?null:a.get(t)))}),(()=>h(e,((t,{action:e})=>n[t]=e==j?null:r.get(t)?.toJSON()))))}),(()=>h(e,((t,{action:e})=>i[t]=e==j?null:c.get(t)?.toJSON())))):h(e,((t,{action:e})=>l[t]=e==j?null:r.get(t)))))})(e),[i,l]})(f,e)));return f.observeDeep(e),e}),(t=>{f.unobserveDeep(t)}),l)}},"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 +1 @@
1
- var t,e;t=this,e=function(t){"use strict";const e=t=>null==t,a=Object,s=a.keys,n=a.freeze,o=t=>(t=>t instanceof a&&t.constructor==a)(t)&&0==(t=>s(t).length)(t);t.createCustomPersister=(t,a,s,i,c)=>{let r,d,u,y=0,f=0,l=0;const h=[],p=async t=>(2!=y&&(y=1,await w.schedule((async()=>{await t(),y=0}))),w),w={load:async(e,s)=>await p((async()=>{try{t.setContent(await a())}catch{t.setContent([e,s])}})),startAutoLoad:async(e={},s={})=>(w.stopAutoLoad(),await w.load(e,s),l=1,u=i((async(e,s)=>await p((async()=>{if(s)t.setTransactionChanges(s());else try{t.setContent(e?.()??await a())}catch{}})))),w),stopAutoLoad:()=>(l&&(c(u),u=void 0,l=0),w),save:async e=>(1!=y&&(y=2,await w.schedule((async()=>{try{await s(t.getContent,e)}catch{}y=0}))),w),startAutoSave:async()=>(await w.stopAutoSave().save(),r=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();o(a)&&o(s)||w.save((()=>[a,s]))})),w),stopAutoSave:()=>{var a,s;return a=r,s=t.delListener,e(a)||s(a),w},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(h,...t),await(async()=>{if(!f){for(f=1;!e((t=h,d=t.shift()));)try{await d()}catch{}f=0}var t})(),w),getStore:()=>t,destroy:()=>w.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return n(w)}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisters={});
1
+ var t,e;t=this,e=function(t){"use strict";const e=t=>null==t,a=Object,s=a.keys,n=a.freeze,o=t=>(t=>t instanceof a&&t.constructor==a)(t)&&0==(t=>s(t).length)(t),c=t=>new Map(t),i=(t,e)=>t?.get(e),r=(t,a,s)=>{return e(s)?(n=t,o=a,n?.delete(o),t):t?.set(a,s);var n,o},d=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||r(t,e,a()),i(t,e)},u=c(),y=c();t.createCustomPersister=(t,a,s,c,f,l,h=[])=>{let p,w,v,g=0,A=0;d(u,h,(()=>0)),d(y,h,(()=>[]));const C=async t=>(2!=g&&(g=1,await L.schedule((async()=>{await t(),g=0}))),L),L={load:async(e,s)=>await C((async()=>{try{t.setContent(await a())}catch{t.setContent([e,s])}})),startAutoLoad:async(e={},s={})=>(L.stopAutoLoad(),await L.load(e,s),A=1,v=c((async(e,s)=>{if(s){const e=s();await C((async()=>t.setTransactionChanges(e)))}else await C((async()=>{try{t.setContent(e?.()??await a())}catch(t){l?.(t)}}))})),L),stopAutoLoad:()=>(A&&(f(v),v=void 0,A=0),L),save:async e=>(1!=g&&(g=2,await L.schedule((async()=>{try{await s(t.getContent,e)}catch(t){l?.(t)}g=0}))),L),startAutoSave:async()=>(await L.stopAutoSave().save(),p=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();o(a)&&o(s)||L.save((()=>[a,s]))})),L),stopAutoSave:()=>{var a,s;return a=p,s=t.delListener,e(a)||s(a),L},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(i(y,h),...t),await(async()=>{if(!i(u,h)){for(r(u,h,1);!e((t=i(y,h),w=t.shift()));)try{await w()}catch(t){l?.(t)}r(u,h,0)}var t})(),L),getStore:()=>t,destroy:()=>L.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return n(L)}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisters={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s="",n=t(s),a=t(!0),o=t(0),r=t(t),l="type",i="default",c="Listener",d="Result",u="add",h="Ids",f="Table",g=f+"s",L=f+h,w="Row",S=w+h,T="Sorted"+w+h,v="Cell",R=v+h,y="Value",I=y+"s",p=y+h,C=e=>s+e,b=Math.max,V=Math.min,m=isFinite,E=(e,t)=>e instanceof t,k=e=>null==e,M=(e,t,s)=>k(e)?s?.():t(e),x=e=>e==n||e==a,D=e=>t(e)==r,J=e=>Array.isArray(e),A=()=>{},F=(e,t)=>e.includes(t),Q=(e,t)=>e.every(t),z=(e,t)=>W(e)===W(t)&&Q(e,((e,s)=>t[s]===e)),N=(e,t)=>Q(e,((s,n)=>0==n||t(e[n-1],s)<=0)),j=(e,t)=>e.sort(t),O=(e,t)=>e.forEach(t),P=(e,t)=>e.map(t),B=e=>q(e,((e,t)=>e+t),0),W=e=>e.length,$=e=>0==W(e),q=(e,t,s)=>e.reduce(t,s),G=(e,t,s)=>e.slice(t,s),H=(e,...t)=>e.push(...t),K=e=>e.pop(),U=e=>e.shift(),X=Object,Y=X.keys,Z=X.isFrozen,_=X.freeze,ee=e=>E(e,X)&&e.constructor==X,te=(e,t)=>!k(((e,t)=>M(e,(e=>e[t])))(e,t)),se=(e,t)=>(delete e[t],e),ne=(e,t)=>P(X.entries(e),(([e,s])=>t(s,e))),ae=e=>ee(e)&&0==(e=>W(Y(e)))(e),oe=e=>e.size,re=(e,t)=>e?.has(t)??!1,le=e=>k(e)||0==oe(e),ie=e=>[...e?.values()??[]],ce=e=>e.clear(),de=(e,t)=>e?.forEach(t),ue=(e,t)=>e?.delete(t),he=e=>new Map(e),fe=e=>[...e?.keys()??[]],ge=(e,t)=>e?.get(t),Le=(e,t)=>de(e,((e,s)=>t(s,e))),we=(e,t,s)=>k(s)?(ue(e,t),e):e?.set(t,s),Se=(e,t,s)=>(re(e,t)||we(e,t,s()),ge(e,t)),Te=(e,t,s,n=we)=>(ne(t,((t,n)=>s(e,n,t))),Le(e,(s=>te(t,s)?0:n(e,s))),e),ve=(e,t,s)=>{const n={};return de(e,((e,a)=>{const o=t?t(e,a):e;!s?.(o,e)&&(n[a]=o)})),n},Re=(e,t,s)=>ve(e,(e=>ve(e,t,s)),ae),ye=(e,t,s)=>ve(e,(e=>Re(e,t,s)),ae),Ie=(e,t)=>{const s=he();return de(e,((e,n)=>s.set(n,t?.(e)??e))),s},pe=e=>Ie(e,Ie),Ce=e=>Ie(e,pe),be=(e,t,s,n,a=0)=>M((s?Se:ge)(e,t[a],a>W(t)-2?s:he),(o=>{if(a>W(t)-2)return n?.(o)&&we(e,t[a]),o;const r=be(o,t,s,n,a+1);return le(o)&&we(e,t[a]),r})),Ve=e=>{const s=t(e);return x(s)||s==o&&m(e)?s:void 0},me=(e,t,s,n,a)=>k(a)?e.delCell(t,s,n,!0):e.setCell(t,s,n,a),Ee=(e,t,s)=>k(s)?e.delValue(t):e.setValue(t,s),ke=e=>new Set(J(e)||k(e)?e:[e]),Me=(e,t)=>e?.add(t),xe=(e,t,s)=>{const n=e.hasRow,a=he(),o=he(),r=he(),l=he(),i=he(),c=(t,s,...n)=>{const a=Se(i,t,ke);return O(n,(t=>Me(a,t)&&s&&e.callListener(t))),n},d=(t,...s)=>M(ge(i,t),(n=>{O($(s)?ie(n):s,(t=>{e.delListener(t),ue(n,t)})),le(n)&&we(i,t)})),u=(e,s)=>{we(a,e,s),re(o,e)||(we(o,e,t()),we(r,e,he()),we(l,e,he()))},h=e=>{we(a,e),we(o,e),we(r,e),we(l,e),d(e)};return[()=>e,()=>fe(a),e=>Le(o,e),e=>re(o,e),e=>ge(a,e),e=>ge(o,e),(e,t)=>we(o,e,t),u,(t,a,o,i,h)=>{u(t,a);const f=he(),g=he(),L=ge(r,t),w=ge(l,t),S=t=>{const o=s=>e.getCell(a,t,s),r=ge(L,t),l=n(a,t)?s(i(o,t)):void 0;if(r===l||J(r)&&J(l)&&z(r,l)||we(f,t,[r,l]),!k(h)){const e=ge(w,t),s=n(a,t)?h(o,t):void 0;e!=s&&we(g,t,s)}},T=e=>{o((()=>{de(f,(([,e],t)=>we(L,t,e))),de(g,((e,t)=>we(w,t,e)))}),f,g,L,w,e),ce(f),ce(g)};Le(L,S),e.hasTable(a)&&O(e.getRowIds(a),(e=>{re(L,e)||S(e)})),T(!0),d(t),c(t,0,e.addRowListener(a,null,((e,t,s)=>S(s))),e.addTableListener(a,(()=>T())))},h,()=>Le(i,h),c,d]},De=(e,a)=>t(e)==n?t=>t(e):e??(()=>a??s),Je=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},Ae=/^\d+$/,Fe=()=>{const e=[];let t=0;return[n=>(n?U(e):null)??s+t++,t=>{Ae.test(t)&&W(e)<1e3&&H(e,t)}]},Qe=e=>{let t;const[n,a]=Fe(),o=he();return[(a,r,l,i=[],c=(()=>[]))=>{t??=e();const d=n(1);return we(o,d,[a,r,l,i,c]),Me(be(r,l??[s],ke),d),d},(e,n,...a)=>O(((e,t=[s])=>{const n=[],a=(e,s)=>s==W(t)?H(n,e):null===t[s]?de(e,(e=>a(e,s+1))):O([t[s],null],(t=>a(ge(e,t),s+1)));return a(e,0),n})(e,n),(e=>de(e,(e=>ge(o,e)[0](t,...n??[],...a))))),e=>M(ge(o,e),(([,t,n])=>(be(t,n??[s],void 0,(t=>(ue(t,e),le(t)?1:0))),we(o,e),a(e),n))),e=>M(ge(o,e),(([e,,s=[],n,a])=>{const o=(...r)=>{const l=W(r);l==W(s)?e(t,...r,...a(r)):k(s[l])?O(n[l]?.(...r)??[],(e=>o(...r,e))):o(...r,s[l])};o()}))]},ze=Je((e=>{let t,n,a,o=100,r=he(),l=he(),i=1;const c=he(),d=he(),[u,h,f]=Qe((()=>Q)),g=he(),L=he(),w=[],S=[],T=(t,s)=>{i=0,e.transaction((()=>{const[n,a]=ge(g,s);de(n,((s,n)=>de(s,((s,a)=>de(s,((s,o)=>me(e,n,a,o,s[t]))))))),de(a,((s,n)=>Ee(e,n,s[t])))})),i=1},v=e=>{we(g,e),we(L,e),h(d,[e])},R=(e,t)=>O(((e,t)=>e.splice(0,t))(e,t??W(e)),v),y=()=>R(w,W(w)-o),I=()=>M(t,(()=>{H(w,t),y(),R(S),t=void 0,a=1})),p=()=>{t=K(w),a=1},C=e.addCellListener(null,null,null,((e,t,s,n,a,o)=>{if(i){I();const e=Se(r,t,he),l=Se(e,s,he),i=Se(l,n,(()=>[o,void 0]));i[1]=a,i[0]===a&&le(we(l,n))&&le(we(e,s))&&le(we(r,t))&&p(),x()}})),b=e.addValueListener(null,((e,t,s,n)=>{if(i){I();const e=Se(l,t,(()=>[n,void 0]));e[1]=s,e[0]===s&&le(we(l,t))&&p(),x()}})),V=(e="")=>(k(t)&&(t=s+n++,we(g,t,[r,l]),J(t,e),r=he(),l=he(),a=1),t),m=()=>{$(w)||(((e,...t)=>{e.unshift(...t)})(S,V()),T(0,t),t=K(w),a=1)},E=()=>{$(S)||(H(w,t),t=U(S),T(1,t),a=1)},x=()=>{a&&(h(c),a=0)},D=e=>{const t=V(e);return x(),t},J=(e,t)=>(A(e)&&ge(L,e)!==t&&(we(L,e,t),h(d,[e])),Q),A=e=>re(g,e),Q={setSize:e=>(o=e,y(),Q),addCheckpoint:D,setCheckpoint:J,getStore:()=>e,getCheckpointIds:()=>[[...w],t,[...S]],forEachCheckpoint:e=>Le(L,e),hasCheckpoint:A,getCheckpoint:e=>ge(L,e),goBackward:()=>(m(),x(),Q),goForward:()=>(E(),x(),Q),goTo:e=>{const s=F(w,e)?m:F(S,e)?E:null;for(;!k(s)&&e!=t;)s();return x(),Q},addCheckpointIdsListener:e=>u(e,c),addCheckpointListener:(e,t)=>u(t,d,[e]),delListener:e=>(f(e),Q),clear:()=>(R(w),R(S),k(t)||v(t),t=void 0,n=0,D(),Q),destroy:()=>{e.delListener(C),e.delListener(b)},getListenerStats:()=>({})};return _(Q.clear())})),Ne=(e,t)=>e<t?-1:1,je=Je((e=>{const t=he(),n=he(),[a,o,r,l,i,c,d,,u,h,f]=xe(e,he,(e=>k(e)?s:J(e)?P(e,C):C(e))),[g,L,w]=Qe((()=>T)),S=(t,s,n)=>{const a=i(t);de(n,((t,n)=>s(n,(s=>de(t,(t=>s(t,(s=>e.forEachCell(a,t,s)))))))))},T={setIndexDefinition:(e,s,a,o,r,l=Ne)=>{const i=k(r)?void 0:([e],[t])=>r(e,t);return u(e,s,((s,a,r,u,h,f)=>{let g=0;const w=ke(),S=ke(),T=c(e);if(de(a,(([e,t],s)=>{const n=ke(e),a=ke(t);de(n,(e=>ue(a,e)?ue(n,e):0)),de(n,(e=>{Me(w,e),M(ge(T,e),(t=>{ue(t,s),le(t)&&(we(T,e),g=1)}))})),de(a,(e=>{Me(w,e),re(T,e)||(we(T,e,ke()),g=1),Me(ge(T,e),s),k(o)||Me(S,e)}))})),s(),le(h)||(f?Le(T,(e=>Me(S,e))):Le(r,(e=>M(ge(u,e),(e=>Me(S,e))))),de(S,(e=>{const t=(t,s)=>l(ge(h,t),ge(h,s),e),s=[...ge(T,e)];N(s,t)||(we(T,e,ke(j(s,t))),Me(w,e))}))),(g||f)&&!k(i)){const t=[...T];N(t,i)||(d(e,he(j(t,i))),g=1)}g&&L(t,[e]),de(w,(t=>L(n,[e,t])))}),De(a),M(o,De)),T},delIndexDefinition:e=>(h(e),T),getStore:a,getIndexIds:o,forEachIndex:e=>r(((t,s)=>e(t,(e=>S(t,e,s))))),forEachSlice:(e,t)=>S(e,t,c(e)),hasIndex:l,hasSlice:(e,t)=>re(c(e),t),getTableId:i,getSliceIds:e=>fe(c(e)),getSliceRowIds:(e,t)=>ie(ge(c(e),t)),addSliceIdsListener:(e,s)=>g(s,t,[e]),addSliceRowIdsListener:(e,t,s)=>g(s,n,[e,t]),delListener:e=>(w(e),T),destroy:f,getListenerStats:()=>({})};return _(T)})),Oe=he([["avg",[(e,t)=>B(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>b(...e),(e,t)=>b(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:b(t,e)]],["min",[e=>V(...e),(e,t)=>V(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:V(t,e)]],["sum",[e=>B(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),Pe=(e,t,s,n,a,o=!1)=>{if(le(s))return;const[r,l,i,c]=a;return o||=k(e),de(n,(([s,n])=>{o||(e=k(s)?l?.(e,n,t++):k(n)?i?.(e,s,t--):c?.(e,n,s,t),o||=k(e))})),o?r(ie(s),oe(s)):e},Be=Je((e=>{const t=he(),[n,a,o,r,l,i,c,,d,u,h]=xe(e,A,(e=>isNaN(e)||k(e)||!0===e||!1===e||e===s?void 0:1*e)),[f,g,L]=Qe((()=>w)),w={setMetricDefinition:(e,s,n,a,o,r,l)=>{const u=D(n)?[n,o,r,l]:ge(Oe,n)??ge(Oe,"sum");return d(e,s,((s,n,a,o,r,l)=>{const d=i(e),h=oe(o);l||=k(d),s();let f=Pe(d,h,o,n,u,l);m(f)||(f=void 0),f!=d&&(c(e,f),g(t,[e],f,d))}),De(a,1)),w},delMetricDefinition:e=>(u(e),w),getStore:n,getMetricIds:a,forEachMetric:o,hasMetric:r,getTableId:l,getMetric:i,addMetricListener:(e,s)=>f(s,t,[e]),delListener:e=>(L(e),w),destroy:h,getListenerStats:()=>({})};return _(w)})),We=Je((e=>{const t=e.createStore,[n,a,o,r,l,,,i,,h,g,L,y]=xe(e,(()=>!0),A),I=t(),p=t(),C=he(),b=(e,t,...s)=>O(s,(s=>Me(Se(Se(C,t,he),e,ke),s))),V=e=>{M(ge(C,e),(e=>{Le(e,((e,t)=>de(t,(t=>e.delListener(t))))),ce(e)})),O([p,I],(t=>t.delTable(e)))},m=(e,t,s)=>b(t,e,t.addStartTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),E={setQueryDefinition:(t,n,a)=>{i(t,n),V(t);const o=[],r=[[null,[n,null,null,[],he()]]],l=[],c=[],d=[];a({select:(e,t)=>{const n=D(e)?[W(o)+s,e]:[k(t)?e:t,s=>s(e,t)];return H(o,n),{as:e=>n[0]=e}},join:(e,t,s)=>{const n=k(s)||D(t)?null:t,a=k(n)?t:s,o=[e,[e,n,D(a)?a:e=>e(a),[],he()]];return H(r,o),{as:e=>o[0]=e}},where:(e,t,s)=>H(l,D(e)?e:k(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,a)=>{const o=[e,[e,D(t)?[t,s,n,a]:ge(Oe,t)??[(e,t)=>t]]];return H(c,o),{as:e=>o[0]=e}},having:(e,t)=>H(d,D(e)?e:s=>s(e)===t)});const u=he(o);if(le(u))return E;const h=he(r);Le(h,((e,[,t])=>M(ge(h,t),(({3:t})=>k(e)?0:H(t,e)))));const f=he(c);let g=I;if(le(f)&&$(d))g=p;else{m(t,g,p);const e=he();Le(f,((t,[s,n])=>Me(Se(e,s,ke),[t,n])));const s=ke();Le(u,(t=>re(e,t)?0:Me(s,t)));const n=he(),a=(s,n,a,o)=>M(s,(([r,l,i,c])=>{Le(n,((t,[s])=>{const n=Se(r,t,he),l=ge(n,a),i=o?void 0:s;if(l!==i){const s=ke([[l,i]]),o=oe(n);we(n,a,i),de(ge(e,t),(([e,t])=>{const a=Pe(c[e],o,n,s,t);c[e]=k(Ve(a))?null:a}))}})),le(l)||!Q(d,(e=>e((e=>c[e]))))?p.delRow(t,i):k(i)?s[2]=p.addRow(t,c):p.setRow(t,i,c)}));b(g,t,g.addRowListener(t,null,((o,r,l,i)=>{const c=[],d=[],u=he(),h=g.hasRow(t,l);let f=!h;de(s,(e=>{const[s,n,a]=i(t,l,e);H(c,n),H(d,a),f||=s})),Le(e,(e=>{const[s,,n]=i(t,l,e);(f||s)&&we(u,e,[n])})),f&&a(be(n,c,void 0,(([,e])=>(ue(e,l),le(e)))),u,l,1),h&&a(be(n,d,(()=>{const e={};return de(s,(s=>e[s]=g.getCell(t,l,s))),[he(),ke(),void 0,e]}),(([,e])=>{Me(e,l)})),u,l)})))}m(t,e,g);const w=(s,a,o,r)=>{const i=t=>e.getCell(a,o,t);O(r,(n=>{const[a,,o,r,l]=ge(h,n),c=o?.(i,s),[d,u]=ge(l,s)??[];c!=d&&(k(u)||y(t,u),we(l,s,k(c)?null:[c,...L(t,1,e.addRowListener(a,c,(()=>w(s,a,c,r))))]))})),(s=>{const a=(t,a)=>e.getCell(...k(a)?[n,s,t]:t===n?[n,s,a]:[ge(h,t)?.[0],ge(ge(h,t)?.[4],s)?.[0],a]);g.transaction((()=>Q(l,(e=>e(a)))?Le(u,((e,n)=>me(g,t,s,e,n(a,s)))):g.delRow(t,s)))})(s)},{3:S}=ge(h,null);return g.transaction((()=>L(t,1,e.addRowListener(n,null,((s,a,o)=>{e.hasRow(n,o)?w(o,n,o,S):(g.delRow(t,o),de(h,(({4:e})=>M(ge(e,o),(([,s])=>{y(t,s),we(e,o)})))))}))))),E},delQueryDefinition:e=>(V(e),h(e),E),getStore:n,getQueryIds:a,forEachQuery:o,hasQuery:r,getTableId:l,delListener:e=>(p.delListener(e),E),destroy:g,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=p.getListenerStats();return n}};return ne({[f]:[1,1],[S]:[0,1],[T]:[0,5],[w]:[1,2],[R]:[0,2],[v]:[1,3]},(([e,t],s)=>{O(e?["get","has","forEach"]:["get"],(e=>E[e+d+s]=(...t)=>p[e+s](...t))),E[u+d+s+c]=(...e)=>p[u+s+c](...G(e,0,t),((s,...n)=>e[t](E,...n)))})),_(E)})),$e=Je((e=>{const t=he(),n=he(),a=he(),o=he(),[r,l,i,c,d,u,,,h,f,g]=xe(e,(()=>[he(),he(),he(),he()]),(e=>k(e)?void 0:e+s)),[L,w,S]=Qe((()=>y)),T=(e,t,s)=>M(u(e),(([n,,a])=>{if(!re(a,t)){const o=ke();if(d(e)!=R(e))Me(o,t);else{let e=t;for(;!k(e)&&!re(o,e);)Me(o,e),e=ge(n,e)}if(s)return o;we(a,t,o)}return ge(a,t)})),v=(e,t)=>M(u(e),(([,,e])=>we(e,t))),R=e=>ge(t,e),y={setRelationshipDefinition:(e,s,r,l)=>(we(t,e,r),h(e,s,((t,s)=>{const r=ke(),l=ke(),i=ke(),[c,d]=u(e);de(s,(([t,s],n)=>{k(t)||(Me(l,t),M(ge(d,t),(e=>{ue(e,n),le(e)&&we(d,t)}))),k(s)||(Me(l,s),re(d,s)||we(d,s,ke()),Me(ge(d,s),n)),Me(r,n),we(c,n,s),Le(ge(o,e),(t=>{re(T(e,t),n)&&Me(i,t)}))})),t(),de(r,(t=>w(n,[e,t]))),de(l,(t=>w(a,[e,t]))),de(i,(t=>{v(e,t),w(o,[e,t])}))}),De(l)),y),delRelationshipDefinition:e=>(we(t,e),f(e),y),getStore:r,getRelationshipIds:l,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(d(s),t))))),hasRelationship:c,getLocalTableId:d,getRemoteTableId:R,getRemoteRowId:(e,t)=>ge(u(e)?.[0],t),getLocalRowIds:(e,t)=>ie(ge(u(e)?.[1],t)),getLinkedRowIds:(e,t)=>k(u(e))?[t]:ie(T(e,t,!0)),addRemoteRowIdListener:(e,t,s)=>L(s,n,[e,t]),addLocalRowIdsListener:(e,t,s)=>L(s,a,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(T(e,t),L(s,o,[e,t])),delListener:e=>(v(...S(e)),y),destroy:g,getListenerStats:()=>({})};return _(y)})),qe=e=>[e,e],Ge=()=>[he(),he()],He=e=>[...e],Ke=([e,t])=>e===t,Ue=e=>JSON.stringify(e,((e,t)=>E(t,Map)?X.fromEntries([...t]):t)),Xe=JSON.parse,Ye=(e,t,s)=>k(e)||!ee(e)||ae(e)||Z(e)?(s?.(),!1):(ne(e,((s,n)=>{t(s,n)||se(e,n)})),!ae(e)),Ze=(e,t,s)=>we(e,t,ge(e,t)==-s?void 0:s),_e=()=>{let e,t,s=!1,n=!1,a=0;const r=he(),d=he(),h=he(),T=he(),b=he(),V=he(),m=he(),E=he(),J=he(),A=he(),Q=he(),N=he(),B=he(),W=ke(),$=he(),q=he(),K=he(),U=he(),X=Ge(),Y=Ge(),Z=Ge(),ee=Ge(),oe=Ge(),ie=Ge(),be=Ge(),xe=Ge(),De=Ge(),Je=Ge(),Ae=Ge(),ze=Ge(),je=Ge(),Oe=Ge(),Pe=he(),Be=Ge(),[We,$e,et,tt]=Qe((()=>gs)),st=e=>{if(!Ye(e,((e,t)=>F([l,i],t))))return!1;const t=e[l];return!(!x(t)&&t!=o||(Ve(e[i])!=t&&se(e,i),0))},nt=(t,s)=>(!e||re(A,s)||Jt(s))&&Ye(t,((e,t)=>at(s,t,e)),(()=>Jt(s))),at=(e,t,s,n)=>Ye(n?s:it(s,e,t),((n,a)=>M(ot(e,t,a,n),(e=>(s[a]=e,!0)),(()=>!1))),(()=>Jt(e,t))),ot=(t,s,n,a)=>e?M(ge(ge(A,t),n),(e=>Ve(a)!=e[l]?Jt(t,s,n,a,e[i]):a),(()=>Jt(t,s,n,a))):k(Ve(a))?Jt(t,s,n,a):a,rt=(e,t)=>Ye(t?e:ct(e),((t,s)=>M(lt(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>At())),lt=(e,s)=>t?M(ge(N,e),(t=>Ve(s)!=t[l]?At(e,s,t[i]):s),(()=>At(e,s))):k(Ve(s))?At(e,s):s,it=(e,t,s)=>(M(ge(Q,t),(([n,a])=>{de(n,((t,s)=>{te(e,s)||(e[s]=t)})),de(a,(n=>{te(e,n)||Jt(t,s,n)}))})),e),ct=e=>(t&&(de(B,((t,s)=>{te(e,s)||(e[s]=t)})),de(W,(t=>{te(e,t)||At(t)}))),e),dt=e=>Te(A,e,((e,t,s)=>{const n=he(),a=ke();Te(Se(A,t,he),s,((e,t,s)=>{we(e,t,s),M(s[i],(e=>we(n,t,e)),(()=>Me(a,t)))})),we(Q,t,[n,a])}),((e,t)=>{we(A,t),we(Q,t)})),ut=e=>Te(N,e,((e,t,s)=>{we(N,t,s),M(s[i],(e=>we(B,t,e)),(()=>Me(W,t)))}),((e,t)=>{we(N,t),we(B,t),ue(W,t)})),ht=e=>ae(e)?os():es(e),ft=e=>Te(K,e,((e,t,s)=>gt(t,s)),((e,t)=>pt(t))),gt=(e,t)=>Te(Se(K,e,(()=>(mt(e,1),we($,e,Fe()),we(q,e,he()),he()))),t,((t,s,n)=>Lt(e,t,s,n)),((t,s)=>Ct(e,t,s))),Lt=(e,t,s,n,a)=>Te(Se(t,s,(()=>(Et(e,s,1),he()))),n,((t,n,a)=>wt(e,s,t,n,a)),((n,o)=>bt(e,t,s,n,o,a))),wt=(e,t,s,n,a)=>{re(s,n)||kt(e,t,n,1);const o=ge(s,n);a!==o&&(Mt(e,t,n,o,a),we(s,n,a))},St=(e,t,s,n,a)=>M(ge(t,s),(t=>wt(e,s,t,n,a)),(()=>Lt(e,t,s,it({[n]:a},e,s)))),Tt=e=>ae(e)?is():ts(e),vt=e=>Te(U,e,((e,t,s)=>Rt(t,s)),((e,t)=>Vt(t))),Rt=(e,t)=>{re(U,e)||xt(e,1);const s=ge(U,e);t!==s&&(Dt(e,s,t),we(U,e,t))},yt=(e,t)=>{const[s]=ge($,e),n=s(t);return re(ge(K,e),n)?yt(e,t):n},It=e=>ge(K,e)??gt(e,{}),pt=e=>gt(e,{}),Ct=(e,t,s)=>{const[,n]=ge($,e);n(s),Lt(e,t,s,{},!0)},bt=(e,t,s,n,a,o)=>{const r=ge(ge(Q,e)?.[0],a);if(!k(r)&&!o)return wt(e,s,n,a,r);const l=t=>{Mt(e,s,t,ge(n,t)),kt(e,s,t,-1),we(n,t)};k(r)?l(a):Le(n,l),le(n)&&(Et(e,s,-1),le(we(t,s))&&(mt(e,-1),we(K,e),we($,e),we(q,e)))},Vt=e=>{const t=ge(B,e);if(!k(t))return Rt(e,t);Dt(e,ge(U,e)),xt(e,-1),we(U,e)},mt=(e,t)=>Ze(r,e,t),Et=(e,t,s)=>Ze(Se(h,e,he),t,s),kt=(e,t,s,n)=>{const a=ge(q,e),o=ge(a,s)??0;(0==o&&1==n||1==o&&-1==n)&&Ze(Se(d,e,he),s,n),we(a,s,o!=-n?o+n:null),Ze(Se(Se(T,e,he),t,he),s,n)},Mt=(e,t,s,n,a)=>Se(Se(Se(b,e,he),t,he),s,(()=>[n,0]))[1]=a,xt=(e,t)=>Ze(V,e,t),Dt=(e,t,s)=>Se(m,e,(()=>[t,0]))[1]=s,Jt=(e,t,s,n,a)=>(H(Se(Se(Se(E,e,he),t,he),s,(()=>[])),n),a),At=(e,t,s)=>(H(Se(J,e,(()=>[])),t),s),Ft=(e,t,s)=>M(ge(ge(ge(b,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...qe(Xt(e,t,s))])),Qt=e=>M(ge(m,e),(([e,t])=>[!0,e,t]),(()=>[!1,...qe(_t(e))])),zt=e=>le(E)||le(Je[e])?0:de(e?Ce(E):E,((t,s)=>de(t,((t,n)=>de(t,((t,a)=>$e(Je[e],[s,n,a],t))))))),Nt=e=>le(J)||le(Ae[e])?0:de(e?Ie(J):J,((t,s)=>$e(Ae[e],[s],t))),jt=(e,t,s)=>{if(!le(t))return $e(e,s,(()=>ve(t))),1},Ot=e=>{const t=le(ie[e]),s=le(xe[e])&&le(ee[e])&&le(oe[e])&&t&&le(Y[e]),n=le(De[e])&&le(be[e])&&le(Z[e])&&le(X[e]);if(!s||!n){const a=e?[Ie(r),pe(d),pe(h),Ce(T),Ce(b)]:[r,d,h,T,b];if(!s){jt(Y[e],a[0]),de(a[1],((t,s)=>jt(ee[e],t,[s])));const s=ke();de(a[2],((n,a)=>{jt(oe[e],n,[a])&&!t&&($e(ie[e],[a,null]),Me(s,a))})),t||de(a[4],((t,n)=>{if(!re(s,n)){const s=ke();de(t,(e=>de(e,(([t,n],a)=>n!==t?Me(s,a):ue(e,a))))),de(s,(t=>$e(ie[e],[n,t])))}})),de(a[3],((t,s)=>de(t,((t,n)=>jt(xe[e],t,[s,n])))))}if(!n){let t;de(a[4],((s,n)=>{let a;de(s,((s,o)=>{let r;de(s,(([s,l],i)=>{l!==s&&($e(De[e],[n,o,i],l,s,Ft),t=a=r=1)})),r&&$e(be[e],[n,o],Ft)})),a&&$e(Z[e],[n],Ft)})),t&&$e(X[e],void 0,Ft)}}},Pt=e=>{const t=le(je[e]),s=le(Oe[e])&&le(ze[e]);if(!t||!s){const n=e?[Ie(V),Ie(m)]:[V,m];if(t||jt(je[e],n[0]),!s){let t;de(n[1],(([s,n],a)=>{n!==s&&($e(Oe[e],[a],n,s,Qt),t=1)})),t&&$e(ze[e],void 0,Qt)}}},Bt=(e,...t)=>(us((()=>e(...P(t,C)))),gs),Wt=()=>[ve(b,((e,t)=>-1===ge(r,t)?null:ve(e,((e,s)=>-1===ge(ge(h,t),s)?null:ve(e,(([,e])=>e??null),((e,t)=>Ke(t)))),ae)),ae),ve(m,(([,e])=>e??null),((e,t)=>Ke(t)))],$t=()=>({cellsTouched:s,valuesTouched:n,changedCells:ye(b,He,Ke),invalidCells:ye(E),changedValues:ve(m,He,Ke),invalidValues:ve(J),changedTableIds:ve(r),changedRowIds:Re(h),changedCellIds:ye(T),changedValueIds:ve(V)}),qt=()=>ye(K),Gt=()=>fe(K),Ht=e=>fe(ge(K,C(e))),Kt=(e,t,s,n=0,a)=>{return P(G(j((o=ge(K,C(e)),r=(e,s)=>[k(t)?s:ge(e,C(t)),s],P([...o?.entries()??[]],(([e,t])=>r(t,e)))),(([e],[t])=>Ne(e,t)*(s?-1:1))),n,k(a)?a:n+a),(([,e])=>e));var o,r},Ut=(e,t)=>fe(ge(ge(K,C(e)),C(t))),Xt=(e,t,s)=>ge(ge(ge(K,C(e)),C(t)),C(s)),Yt=()=>ve(U),Zt=()=>fe(U),_t=e=>ge(U,C(e)),es=e=>Bt((()=>(e=>Ye(e,nt,Jt))(e)?ft(e):0)),ts=e=>Bt((()=>rt(e)?vt(e):0)),ss=e=>{try{ht(Xe(e))}catch{}return gs},ns=t=>Bt((()=>{if((e=Ye(t,(e=>Ye(e,st))))&&(dt(t),!le(K))){const e=qt();os(),es(e)}})),as=e=>Bt((()=>{if(t=(e=>Ye(e,st))(e)){const s=Yt();ds(),is(),t=!0,ut(e),ts(s)}})),os=()=>Bt((()=>ft({}))),rs=e=>Bt((e=>re(K,e)?pt(e):0),e),ls=(e,t)=>Bt(((e,t)=>M(ge(K,e),(s=>re(s,t)?Ct(e,s,t):0))),e,t),is=()=>Bt((()=>vt({}))),cs=()=>Bt((()=>{dt({}),e=!1})),ds=()=>Bt((()=>{ut({}),t=!1})),us=(e,t)=>{if(-1!=a){hs();const s=e();return fs(t),s}},hs=()=>(-1!=a&&a++,1==a&&$e(Pe,void 0,Wt,$t),gs),fs=e=>(a>0&&(a--,0==a&&(s=!le(b),n=!le(m),a=1,zt(1),s&&Ot(1),Nt(1),n&&Pt(1),e?.(Wt,$t)&&(de(b,((e,t)=>de(e,((e,s)=>de(e,(([e],n)=>me(gs,t,s,n,e))))))),de(m,(([e],t)=>Ee(gs,t,e))),s=n=!1),$e(Be[0],void 0,Wt,$t),a=-1,zt(0),s&&Ot(0),Nt(0),n&&Pt(0),$e(Be[1],void 0,Wt,$t),a=0,s=n=!1,O([r,d,h,T,b,E,V,m,J],ce))),gs),gs={getContent:()=>[qt(),Yt()],getTables:qt,getTableIds:Gt,getTable:e=>Re(ge(K,C(e))),getTableCellIds:e=>fe(ge(q,C(e))),getRowIds:Ht,getSortedRowIds:Kt,getRow:(e,t)=>ve(ge(ge(K,C(e)),C(t))),getCellIds:Ut,getCell:Xt,getValues:Yt,getValueIds:Zt,getValue:_t,hasTables:()=>!le(K),hasTable:e=>re(K,C(e)),hasTableCell:(e,t)=>re(ge(q,C(e)),C(t)),hasRow:(e,t)=>re(ge(K,C(e)),C(t)),hasCell:(e,t,s)=>re(ge(ge(K,C(e)),C(t)),C(s)),hasValues:()=>!le(U),hasValue:e=>re(U,C(e)),getTablesJson:()=>Ue(K),getValuesJson:()=>Ue(U),getJson:()=>Ue([K,U]),getTablesSchemaJson:()=>Ue(A),getValuesSchemaJson:()=>Ue(N),getSchemaJson:()=>Ue([A,N]),setContent:([e,t])=>Bt((()=>{(ae(e)?os:es)(e),(ae(t)?is:ts)(t)})),setTables:es,setTable:(e,t)=>Bt((e=>nt(t,e)?gt(e,t):0),e),setRow:(e,t,s)=>Bt(((e,t)=>at(e,t,s)?Lt(e,It(e),t,s):0),e,t),addRow:(e,t,s=!0)=>us((()=>{let n;return at(e,n,t)&&(e=C(e),Lt(e,It(e),n=yt(e,s?1:0),t)),n})),setPartialRow:(e,t,s)=>Bt(((e,t)=>{if(at(e,t,s,1)){const n=It(e);ne(s,((s,a)=>St(e,n,t,a,s)))}}),e,t),setCell:(e,t,s,n)=>Bt(((e,t,s)=>M(ot(e,t,s,D(n)?n(Xt(e,t,s)):n),(n=>St(e,It(e),t,s,n)))),e,t,s),setValues:ts,setPartialValues:e=>Bt((()=>rt(e,1)?ne(e,((e,t)=>Rt(t,e))):0)),setValue:(e,t)=>Bt((e=>M(lt(e,D(t)?t(_t(e)):t),(t=>Rt(e,t)))),e),setTransactionChanges:e=>Bt((()=>{ne(e[0],((e,t)=>k(e)?rs(t):ne(e,((e,s)=>k(e)?ls(t,s):ne(e,((e,n)=>me(gs,t,s,n,e))))))),ne(e[1],((e,t)=>Ee(gs,t,e)))})),setTablesJson:ss,setValuesJson:e=>{try{Tt(Xe(e))}catch{}return gs},setJson:e=>{try{const[t,s]=Xe(e);ht(t),Tt(s)}catch{ss(e)}return gs},setTablesSchema:ns,setValuesSchema:as,setSchema:(e,t)=>Bt((()=>{ns(e),as(t)})),delTables:os,delTable:rs,delRow:ls,delCell:(e,t,s,n)=>Bt(((e,t,s)=>M(ge(K,e),(a=>M(ge(a,t),(o=>re(o,s)?bt(e,a,t,o,s,n):0))))),e,t,s),delValues:is,delValue:e=>Bt((e=>re(U,e)?Vt(e):0),e),delTablesSchema:cs,delValuesSchema:ds,delSchema:()=>Bt((()=>{cs(),ds()})),transaction:us,startTransaction:hs,finishTransaction:fs,forEachTable:e=>de(K,((t,s)=>e(s,(e=>de(t,((t,s)=>e(s,(e=>Le(t,e))))))))),forEachTableCell:(e,t)=>Le(ge(q,C(e)),t),forEachRow:(e,t)=>de(ge(K,C(e)),((e,s)=>t(s,(t=>Le(e,t))))),forEachCell:(e,t,s)=>Le(ge(ge(K,C(e)),C(t)),s),forEachValue:e=>Le(U,e),addSortedRowIdsListener:(e,t,s,n,a,o,r)=>{let l=Kt(e,t,s,n,a);return We((()=>{const r=Kt(e,t,s,n,a);z(r,l)||(l=r,o(gs,e,t,s,n,a,l))}),ie[r?1:0],[e,t],[Gt])},addStartTransactionListener:e=>We(e,Pe),addWillFinishTransactionListener:e=>We(e,Be[0]),addDidFinishTransactionListener:e=>We(e,Be[1]),callListener:e=>(tt(e),gs),delListener:e=>(et(e),gs),getListenerStats:()=>({}),createStore:_e};return ne({[g]:[0,X],[L]:[0,Y],[f]:[1,Z,[Gt]],[f+R]:[1,ee,[Gt]],[S]:[1,oe,[Gt]],[w]:[2,be,[Gt,Ht]],[R]:[2,xe,[Gt,Ht]],[v]:[3,De,[Gt,Ht,Ut],e=>qe(Xt(...e))],InvalidCell:[3,Je],[I]:[0,ze],[p]:[0,je],[y]:[1,Oe,[Zt],e=>qe(_t(e[0]))],InvalidValue:[1,Ae]},(([e,t,s,n],a)=>{gs[u+a+c]=(...a)=>We(a[e],t[a[e+1]?1:0],e>0?G(a,0,e):void 0,s,n)})),_(gs)};e.createCheckpoints=ze,e.createCustomPersister=(e,t,s,n,a)=>{let o,r,l,i=0,c=0,d=0;const u=[],h=async e=>(2!=i&&(i=1,await f.schedule((async()=>{await e(),i=0}))),f),f={load:async(s,n)=>await h((async()=>{try{e.setContent(await t())}catch{e.setContent([s,n])}})),startAutoLoad:async(s={},a={})=>(f.stopAutoLoad(),await f.load(s,a),d=1,l=n((async(s,n)=>await h((async()=>{if(n)e.setTransactionChanges(n());else try{e.setContent(s?.()??await t())}catch{}})))),f),stopAutoLoad:()=>(d&&(a(l),l=void 0,d=0),f),save:async t=>(1!=i&&(i=2,await f.schedule((async()=>{try{await s(e.getContent,t)}catch{}i=0}))),f),startAutoSave:async()=>(await f.stopAutoSave().save(),o=e.addDidFinishTransactionListener(((e,t)=>{const[s,n]=t();ae(s)&&ae(n)||f.save((()=>[s,n]))})),f),stopAutoSave:()=>(M(o,e.delListener),f),schedule:async(...e)=>(H(u,...e),await(async()=>{if(!c){for(c=1;!k(r=U(u));)try{await r()}catch{}c=0}})(),f),getStore:()=>e,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return _(f)},e.createIndexes=je,e.createMetrics=Be,e.createQueries=We,e.createRelationships=$e,e.createStore=_e,e.defaultSorter=Ne},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBase={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s="",n=t(s),a=t(!0),o=t(0),r=t(t),l="type",i="default",c="Listener",d="Result",u="add",h="Ids",f="Table",g=f+"s",w=f+h,L="Row",S=L+h,T="Sorted"+L+h,v="Cell",y=v+h,R="Value",I=R+"s",p=R+h,C=e=>s+e,b=Math.max,V=Math.min,m=isFinite,E=(e,t)=>e instanceof t,k=e=>null==e,M=(e,t,s)=>k(e)?s?.():t(e),x=e=>e==n||e==a,D=e=>t(e)==r,J=e=>Array.isArray(e),A=()=>{},F=(e,t)=>e.includes(t),Q=(e,t)=>e.every(t),z=(e,t)=>W(e)===W(t)&&Q(e,((e,s)=>t[s]===e)),N=(e,t)=>Q(e,((s,n)=>0==n||t(e[n-1],s)<=0)),j=(e,t)=>e.sort(t),O=(e,t)=>e.forEach(t),P=(e,t)=>e.map(t),B=e=>q(e,((e,t)=>e+t),0),W=e=>e.length,$=e=>0==W(e),q=(e,t,s)=>e.reduce(t,s),G=(e,t,s)=>e.slice(t,s),H=(e,...t)=>e.push(...t),K=e=>e.pop(),U=e=>e.shift(),X=Object,Y=X.keys,Z=X.isFrozen,_=X.freeze,ee=e=>E(e,X)&&e.constructor==X,te=(e,t)=>!k(((e,t)=>M(e,(e=>e[t])))(e,t)),se=(e,t)=>(delete e[t],e),ne=(e,t)=>P(X.entries(e),(([e,s])=>t(s,e))),ae=e=>ee(e)&&0==(e=>W(Y(e)))(e),oe=e=>e.size,re=(e,t)=>e?.has(t)??!1,le=e=>k(e)||0==oe(e),ie=e=>[...e?.values()??[]],ce=e=>e.clear(),de=(e,t)=>e?.forEach(t),ue=(e,t)=>e?.delete(t),he=e=>new Map(e),fe=e=>[...e?.keys()??[]],ge=(e,t)=>e?.get(t),we=(e,t)=>de(e,((e,s)=>t(s,e))),Le=(e,t,s)=>k(s)?(ue(e,t),e):e?.set(t,s),Se=(e,t,s)=>(re(e,t)||Le(e,t,s()),ge(e,t)),Te=(e,t,s,n=Le)=>(ne(t,((t,n)=>s(e,n,t))),we(e,(s=>te(t,s)?0:n(e,s))),e),ve=(e,t,s)=>{const n={};return de(e,((e,a)=>{const o=t?t(e,a):e;!s?.(o,e)&&(n[a]=o)})),n},ye=(e,t,s)=>ve(e,(e=>ve(e,t,s)),ae),Re=(e,t,s)=>ve(e,(e=>ye(e,t,s)),ae),Ie=(e,t)=>{const s=he();return de(e,((e,n)=>s.set(n,t?.(e)??e))),s},pe=e=>Ie(e,Ie),Ce=e=>Ie(e,pe),be=(e,t,s,n,a=0)=>M((s?Se:ge)(e,t[a],a>W(t)-2?s:he),(o=>{if(a>W(t)-2)return n?.(o)&&Le(e,t[a]),o;const r=be(o,t,s,n,a+1);return le(o)&&Le(e,t[a]),r})),Ve=e=>{const s=t(e);return x(s)||s==o&&m(e)?s:void 0},me=(e,t,s,n,a)=>k(a)?e.delCell(t,s,n,!0):e.setCell(t,s,n,a),Ee=(e,t,s)=>k(s)?e.delValue(t):e.setValue(t,s),ke=e=>new Set(J(e)||k(e)?e:[e]),Me=(e,t)=>e?.add(t),xe=(e,t,s)=>{const n=e.hasRow,a=he(),o=he(),r=he(),l=he(),i=he(),c=(t,s,...n)=>{const a=Se(i,t,ke);return O(n,(t=>Me(a,t)&&s&&e.callListener(t))),n},d=(t,...s)=>M(ge(i,t),(n=>{O($(s)?ie(n):s,(t=>{e.delListener(t),ue(n,t)})),le(n)&&Le(i,t)})),u=(e,s)=>{Le(a,e,s),re(o,e)||(Le(o,e,t()),Le(r,e,he()),Le(l,e,he()))},h=e=>{Le(a,e),Le(o,e),Le(r,e),Le(l,e),d(e)};return[()=>e,()=>fe(a),e=>we(o,e),e=>re(o,e),e=>ge(a,e),e=>ge(o,e),(e,t)=>Le(o,e,t),u,(t,a,o,i,h)=>{u(t,a);const f=he(),g=he(),w=ge(r,t),L=ge(l,t),S=t=>{const o=s=>e.getCell(a,t,s),r=ge(w,t),l=n(a,t)?s(i(o,t)):void 0;if(r===l||J(r)&&J(l)&&z(r,l)||Le(f,t,[r,l]),!k(h)){const e=ge(L,t),s=n(a,t)?h(o,t):void 0;e!=s&&Le(g,t,s)}},T=e=>{o((()=>{de(f,(([,e],t)=>Le(w,t,e))),de(g,((e,t)=>Le(L,t,e)))}),f,g,w,L,e),ce(f),ce(g)};we(w,S),e.hasTable(a)&&O(e.getRowIds(a),(e=>{re(w,e)||S(e)})),T(!0),d(t),c(t,0,e.addRowListener(a,null,((e,t,s)=>S(s))),e.addTableListener(a,(()=>T())))},h,()=>we(i,h),c,d]},De=(e,a)=>t(e)==n?t=>t(e):e??(()=>a??s),Je=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},Ae=/^\d+$/,Fe=()=>{const e=[];let t=0;return[n=>(n?U(e):null)??s+t++,t=>{Ae.test(t)&&W(e)<1e3&&H(e,t)}]},Qe=e=>{let t;const[n,a]=Fe(),o=he();return[(a,r,l,i=[],c=(()=>[]))=>{t??=e();const d=n(1);return Le(o,d,[a,r,l,i,c]),Me(be(r,l??[s],ke),d),d},(e,n,...a)=>O(((e,t=[s])=>{const n=[],a=(e,s)=>s==W(t)?H(n,e):null===t[s]?de(e,(e=>a(e,s+1))):O([t[s],null],(t=>a(ge(e,t),s+1)));return a(e,0),n})(e,n),(e=>de(e,(e=>ge(o,e)[0](t,...n??[],...a))))),e=>M(ge(o,e),(([,t,n])=>(be(t,n??[s],void 0,(t=>(ue(t,e),le(t)?1:0))),Le(o,e),a(e),n))),e=>M(ge(o,e),(([e,,s=[],n,a])=>{const o=(...r)=>{const l=W(r);l==W(s)?e(t,...r,...a(r)):k(s[l])?O(n[l]?.(...r)??[],(e=>o(...r,e))):o(...r,s[l])};o()}))]},ze=Je((e=>{let t,n,a,o=100,r=he(),l=he(),i=1;const c=he(),d=he(),[u,h,f]=Qe((()=>Q)),g=he(),w=he(),L=[],S=[],T=(t,s)=>{i=0,e.transaction((()=>{const[n,a]=ge(g,s);de(n,((s,n)=>de(s,((s,a)=>de(s,((s,o)=>me(e,n,a,o,s[t]))))))),de(a,((s,n)=>Ee(e,n,s[t])))})),i=1},v=e=>{Le(g,e),Le(w,e),h(d,[e])},y=(e,t)=>O(((e,t)=>e.splice(0,t))(e,t??W(e)),v),R=()=>y(L,W(L)-o),I=()=>M(t,(()=>{H(L,t),R(),y(S),t=void 0,a=1})),p=()=>{t=K(L),a=1},C=e.addCellListener(null,null,null,((e,t,s,n,a,o)=>{if(i){I();const e=Se(r,t,he),l=Se(e,s,he),i=Se(l,n,(()=>[o,void 0]));i[1]=a,i[0]===a&&le(Le(l,n))&&le(Le(e,s))&&le(Le(r,t))&&p(),x()}})),b=e.addValueListener(null,((e,t,s,n)=>{if(i){I();const e=Se(l,t,(()=>[n,void 0]));e[1]=s,e[0]===s&&le(Le(l,t))&&p(),x()}})),V=(e="")=>(k(t)&&(t=s+n++,Le(g,t,[r,l]),J(t,e),r=he(),l=he(),a=1),t),m=()=>{$(L)||(((e,...t)=>{e.unshift(...t)})(S,V()),T(0,t),t=K(L),a=1)},E=()=>{$(S)||(H(L,t),t=U(S),T(1,t),a=1)},x=()=>{a&&(h(c),a=0)},D=e=>{const t=V(e);return x(),t},J=(e,t)=>(A(e)&&ge(w,e)!==t&&(Le(w,e,t),h(d,[e])),Q),A=e=>re(g,e),Q={setSize:e=>(o=e,R(),Q),addCheckpoint:D,setCheckpoint:J,getStore:()=>e,getCheckpointIds:()=>[[...L],t,[...S]],forEachCheckpoint:e=>we(w,e),hasCheckpoint:A,getCheckpoint:e=>ge(w,e),goBackward:()=>(m(),x(),Q),goForward:()=>(E(),x(),Q),goTo:e=>{const s=F(L,e)?m:F(S,e)?E:null;for(;!k(s)&&e!=t;)s();return x(),Q},addCheckpointIdsListener:e=>u(e,c),addCheckpointListener:(e,t)=>u(t,d,[e]),delListener:e=>(f(e),Q),clear:()=>(y(L),y(S),k(t)||v(t),t=void 0,n=0,D(),Q),destroy:()=>{e.delListener(C),e.delListener(b)},getListenerStats:()=>({})};return _(Q.clear())})),Ne=(e,t)=>e<t?-1:1,je=Je((e=>{const t=he(),n=he(),[a,o,r,l,i,c,d,,u,h,f]=xe(e,he,(e=>k(e)?s:J(e)?P(e,C):C(e))),[g,w,L]=Qe((()=>T)),S=(t,s,n)=>{const a=i(t);de(n,((t,n)=>s(n,(s=>de(t,(t=>s(t,(s=>e.forEachCell(a,t,s)))))))))},T={setIndexDefinition:(e,s,a,o,r,l=Ne)=>{const i=k(r)?void 0:([e],[t])=>r(e,t);return u(e,s,((s,a,r,u,h,f)=>{let g=0;const L=ke(),S=ke(),T=c(e);if(de(a,(([e,t],s)=>{const n=ke(e),a=ke(t);de(n,(e=>ue(a,e)?ue(n,e):0)),de(n,(e=>{Me(L,e),M(ge(T,e),(t=>{ue(t,s),le(t)&&(Le(T,e),g=1)}))})),de(a,(e=>{Me(L,e),re(T,e)||(Le(T,e,ke()),g=1),Me(ge(T,e),s),k(o)||Me(S,e)}))})),s(),le(h)||(f?we(T,(e=>Me(S,e))):we(r,(e=>M(ge(u,e),(e=>Me(S,e))))),de(S,(e=>{const t=(t,s)=>l(ge(h,t),ge(h,s),e),s=[...ge(T,e)];N(s,t)||(Le(T,e,ke(j(s,t))),Me(L,e))}))),(g||f)&&!k(i)){const t=[...T];N(t,i)||(d(e,he(j(t,i))),g=1)}g&&w(t,[e]),de(L,(t=>w(n,[e,t])))}),De(a),M(o,De)),T},delIndexDefinition:e=>(h(e),T),getStore:a,getIndexIds:o,forEachIndex:e=>r(((t,s)=>e(t,(e=>S(t,e,s))))),forEachSlice:(e,t)=>S(e,t,c(e)),hasIndex:l,hasSlice:(e,t)=>re(c(e),t),getTableId:i,getSliceIds:e=>fe(c(e)),getSliceRowIds:(e,t)=>ie(ge(c(e),t)),addSliceIdsListener:(e,s)=>g(s,t,[e]),addSliceRowIdsListener:(e,t,s)=>g(s,n,[e,t]),delListener:e=>(L(e),T),destroy:f,getListenerStats:()=>({})};return _(T)})),Oe=he([["avg",[(e,t)=>B(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>b(...e),(e,t)=>b(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:b(t,e)]],["min",[e=>V(...e),(e,t)=>V(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:V(t,e)]],["sum",[e=>B(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),Pe=(e,t,s,n,a,o=!1)=>{if(le(s))return;const[r,l,i,c]=a;return o||=k(e),de(n,(([s,n])=>{o||(e=k(s)?l?.(e,n,t++):k(n)?i?.(e,s,t--):c?.(e,n,s,t),o||=k(e))})),o?r(ie(s),oe(s)):e},Be=Je((e=>{const t=he(),[n,a,o,r,l,i,c,,d,u,h]=xe(e,A,(e=>isNaN(e)||k(e)||!0===e||!1===e||e===s?void 0:1*e)),[f,g,w]=Qe((()=>L)),L={setMetricDefinition:(e,s,n,a,o,r,l)=>{const u=D(n)?[n,o,r,l]:ge(Oe,n)??ge(Oe,"sum");return d(e,s,((s,n,a,o,r,l)=>{const d=i(e),h=oe(o);l||=k(d),s();let f=Pe(d,h,o,n,u,l);m(f)||(f=void 0),f!=d&&(c(e,f),g(t,[e],f,d))}),De(a,1)),L},delMetricDefinition:e=>(u(e),L),getStore:n,getMetricIds:a,forEachMetric:o,hasMetric:r,getTableId:l,getMetric:i,addMetricListener:(e,s)=>f(s,t,[e]),delListener:e=>(w(e),L),destroy:h,getListenerStats:()=>({})};return _(L)})),We=he(),$e=he(),qe=Je((e=>{const t=e.createStore,[n,a,o,r,l,,,i,,h,g,w,R]=xe(e,(()=>!0),A),I=t(),p=t(),C=he(),b=(e,t,...s)=>O(s,(s=>Me(Se(Se(C,t,he),e,ke),s))),V=e=>{M(ge(C,e),(e=>{we(e,((e,t)=>de(t,(t=>e.delListener(t))))),ce(e)})),O([p,I],(t=>t.delTable(e)))},m=(e,t,s)=>b(t,e,t.addStartTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),E={setQueryDefinition:(t,n,a)=>{i(t,n),V(t);const o=[],r=[[null,[n,null,null,[],he()]]],l=[],c=[],d=[];a({select:(e,t)=>{const n=D(e)?[W(o)+s,e]:[k(t)?e:t,s=>s(e,t)];return H(o,n),{as:e=>n[0]=e}},join:(e,t,s)=>{const n=k(s)||D(t)?null:t,a=k(n)?t:s,o=[e,[e,n,D(a)?a:e=>e(a),[],he()]];return H(r,o),{as:e=>o[0]=e}},where:(e,t,s)=>H(l,D(e)?e:k(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,a)=>{const o=[e,[e,D(t)?[t,s,n,a]:ge(Oe,t)??[(e,t)=>t]]];return H(c,o),{as:e=>o[0]=e}},having:(e,t)=>H(d,D(e)?e:s=>s(e)===t)});const u=he(o);if(le(u))return E;const h=he(r);we(h,((e,[,t])=>M(ge(h,t),(({3:t})=>k(e)?0:H(t,e)))));const f=he(c);let g=I;if(le(f)&&$(d))g=p;else{m(t,g,p);const e=he();we(f,((t,[s,n])=>Me(Se(e,s,ke),[t,n])));const s=ke();we(u,(t=>re(e,t)?0:Me(s,t)));const n=he(),a=(s,n,a,o)=>M(s,(([r,l,i,c])=>{we(n,((t,[s])=>{const n=Se(r,t,he),l=ge(n,a),i=o?void 0:s;if(l!==i){const s=ke([[l,i]]),o=oe(n);Le(n,a,i),de(ge(e,t),(([e,t])=>{const a=Pe(c[e],o,n,s,t);c[e]=k(Ve(a))?null:a}))}})),le(l)||!Q(d,(e=>e((e=>c[e]))))?p.delRow(t,i):k(i)?s[2]=p.addRow(t,c):p.setRow(t,i,c)}));b(g,t,g.addRowListener(t,null,((o,r,l,i)=>{const c=[],d=[],u=he(),h=g.hasRow(t,l);let f=!h;de(s,(e=>{const[s,n,a]=i(t,l,e);H(c,n),H(d,a),f||=s})),we(e,(e=>{const[s,,n]=i(t,l,e);(f||s)&&Le(u,e,[n])})),f&&a(be(n,c,void 0,(([,e])=>(ue(e,l),le(e)))),u,l,1),h&&a(be(n,d,(()=>{const e={};return de(s,(s=>e[s]=g.getCell(t,l,s))),[he(),ke(),void 0,e]}),(([,e])=>{Me(e,l)})),u,l)})))}m(t,e,g);const L=(s,a,o,r)=>{const i=t=>e.getCell(a,o,t);O(r,(n=>{const[a,,o,r,l]=ge(h,n),c=o?.(i,s),[d,u]=ge(l,s)??[];c!=d&&(k(u)||R(t,u),Le(l,s,k(c)?null:[c,...w(t,1,e.addRowListener(a,c,(()=>L(s,a,c,r))))]))})),(s=>{const a=(t,a)=>e.getCell(...k(a)?[n,s,t]:t===n?[n,s,a]:[ge(h,t)?.[0],ge(ge(h,t)?.[4],s)?.[0],a]);g.transaction((()=>Q(l,(e=>e(a)))?we(u,((e,n)=>me(g,t,s,e,n(a,s)))):g.delRow(t,s)))})(s)},{3:S}=ge(h,null);return g.transaction((()=>w(t,1,e.addRowListener(n,null,((s,a,o)=>{e.hasRow(n,o)?L(o,n,o,S):(g.delRow(t,o),de(h,(({4:e})=>M(ge(e,o),(([,s])=>{R(t,s),Le(e,o)})))))}))))),E},delQueryDefinition:e=>(V(e),h(e),E),getStore:n,getQueryIds:a,forEachQuery:o,hasQuery:r,getTableId:l,delListener:e=>(p.delListener(e),E),destroy:g,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=p.getListenerStats();return n}};return ne({[f]:[1,1],[S]:[0,1],[T]:[0,5],[L]:[1,2],[y]:[0,2],[v]:[1,3]},(([e,t],s)=>{O(e?["get","has","forEach"]:["get"],(e=>E[e+d+s]=(...t)=>p[e+s](...t))),E[u+d+s+c]=(...e)=>p[u+s+c](...G(e,0,t),((s,...n)=>e[t](E,...n)))})),_(E)})),Ge=Je((e=>{const t=he(),n=he(),a=he(),o=he(),[r,l,i,c,d,u,,,h,f,g]=xe(e,(()=>[he(),he(),he(),he()]),(e=>k(e)?void 0:e+s)),[w,L,S]=Qe((()=>R)),T=(e,t,s)=>M(u(e),(([n,,a])=>{if(!re(a,t)){const o=ke();if(d(e)!=y(e))Me(o,t);else{let e=t;for(;!k(e)&&!re(o,e);)Me(o,e),e=ge(n,e)}if(s)return o;Le(a,t,o)}return ge(a,t)})),v=(e,t)=>M(u(e),(([,,e])=>Le(e,t))),y=e=>ge(t,e),R={setRelationshipDefinition:(e,s,r,l)=>(Le(t,e,r),h(e,s,((t,s)=>{const r=ke(),l=ke(),i=ke(),[c,d]=u(e);de(s,(([t,s],n)=>{k(t)||(Me(l,t),M(ge(d,t),(e=>{ue(e,n),le(e)&&Le(d,t)}))),k(s)||(Me(l,s),re(d,s)||Le(d,s,ke()),Me(ge(d,s),n)),Me(r,n),Le(c,n,s),we(ge(o,e),(t=>{re(T(e,t),n)&&Me(i,t)}))})),t(),de(r,(t=>L(n,[e,t]))),de(l,(t=>L(a,[e,t]))),de(i,(t=>{v(e,t),L(o,[e,t])}))}),De(l)),R),delRelationshipDefinition:e=>(Le(t,e),f(e),R),getStore:r,getRelationshipIds:l,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(d(s),t))))),hasRelationship:c,getLocalTableId:d,getRemoteTableId:y,getRemoteRowId:(e,t)=>ge(u(e)?.[0],t),getLocalRowIds:(e,t)=>ie(ge(u(e)?.[1],t)),getLinkedRowIds:(e,t)=>k(u(e))?[t]:ie(T(e,t,!0)),addRemoteRowIdListener:(e,t,s)=>w(s,n,[e,t]),addLocalRowIdsListener:(e,t,s)=>w(s,a,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(T(e,t),w(s,o,[e,t])),delListener:e=>(v(...S(e)),R),destroy:g,getListenerStats:()=>({})};return _(R)})),He=e=>[e,e],Ke=()=>[he(),he()],Ue=e=>[...e],Xe=([e,t])=>e===t,Ye=e=>JSON.stringify(e,((e,t)=>E(t,Map)?X.fromEntries([...t]):t)),Ze=JSON.parse,_e=(e,t,s)=>k(e)||!ee(e)||ae(e)||Z(e)?(s?.(),!1):(ne(e,((s,n)=>{t(s,n)||se(e,n)})),!ae(e)),et=(e,t,s)=>Le(e,t,ge(e,t)==-s?void 0:s),tt=()=>{let e,t,s=!1,n=!1,a=0;const r=he(),d=he(),h=he(),T=he(),b=he(),V=he(),m=he(),E=he(),J=he(),A=he(),Q=he(),N=he(),B=he(),W=ke(),$=he(),q=he(),K=he(),U=he(),X=Ke(),Y=Ke(),Z=Ke(),ee=Ke(),oe=Ke(),ie=Ke(),be=Ke(),xe=Ke(),De=Ke(),Je=Ke(),Ae=Ke(),ze=Ke(),je=Ke(),Oe=Ke(),Pe=he(),Be=Ke(),[We,$e,qe,Ge]=Qe((()=>gs)),st=e=>{if(!_e(e,((e,t)=>F([l,i],t))))return!1;const t=e[l];return!(!x(t)&&t!=o||(Ve(e[i])!=t&&se(e,i),0))},nt=(t,s)=>(!e||re(A,s)||Jt(s))&&_e(t,((e,t)=>at(s,t,e)),(()=>Jt(s))),at=(e,t,s,n)=>_e(n?s:it(s,e,t),((n,a)=>M(ot(e,t,a,n),(e=>(s[a]=e,!0)),(()=>!1))),(()=>Jt(e,t))),ot=(t,s,n,a)=>e?M(ge(ge(A,t),n),(e=>Ve(a)!=e[l]?Jt(t,s,n,a,e[i]):a),(()=>Jt(t,s,n,a))):k(Ve(a))?Jt(t,s,n,a):a,rt=(e,t)=>_e(t?e:ct(e),((t,s)=>M(lt(s,t),(t=>(e[s]=t,!0)),(()=>!1))),(()=>At())),lt=(e,s)=>t?M(ge(N,e),(t=>Ve(s)!=t[l]?At(e,s,t[i]):s),(()=>At(e,s))):k(Ve(s))?At(e,s):s,it=(e,t,s)=>(M(ge(Q,t),(([n,a])=>{de(n,((t,s)=>{te(e,s)||(e[s]=t)})),de(a,(n=>{te(e,n)||Jt(t,s,n)}))})),e),ct=e=>(t&&(de(B,((t,s)=>{te(e,s)||(e[s]=t)})),de(W,(t=>{te(e,t)||At(t)}))),e),dt=e=>Te(A,e,((e,t,s)=>{const n=he(),a=ke();Te(Se(A,t,he),s,((e,t,s)=>{Le(e,t,s),M(s[i],(e=>Le(n,t,e)),(()=>Me(a,t)))})),Le(Q,t,[n,a])}),((e,t)=>{Le(A,t),Le(Q,t)})),ut=e=>Te(N,e,((e,t,s)=>{Le(N,t,s),M(s[i],(e=>Le(B,t,e)),(()=>Me(W,t)))}),((e,t)=>{Le(N,t),Le(B,t),ue(W,t)})),ht=e=>ae(e)?os():es(e),ft=e=>Te(K,e,((e,t,s)=>gt(t,s)),((e,t)=>pt(t))),gt=(e,t)=>Te(Se(K,e,(()=>(mt(e,1),Le($,e,Fe()),Le(q,e,he()),he()))),t,((t,s,n)=>wt(e,t,s,n)),((t,s)=>Ct(e,t,s))),wt=(e,t,s,n,a)=>Te(Se(t,s,(()=>(Et(e,s,1),he()))),n,((t,n,a)=>Lt(e,s,t,n,a)),((n,o)=>bt(e,t,s,n,o,a))),Lt=(e,t,s,n,a)=>{re(s,n)||kt(e,t,n,1);const o=ge(s,n);a!==o&&(Mt(e,t,n,o,a),Le(s,n,a))},St=(e,t,s,n,a)=>M(ge(t,s),(t=>Lt(e,s,t,n,a)),(()=>wt(e,t,s,it({[n]:a},e,s)))),Tt=e=>ae(e)?is():ts(e),vt=e=>Te(U,e,((e,t,s)=>yt(t,s)),((e,t)=>Vt(t))),yt=(e,t)=>{re(U,e)||xt(e,1);const s=ge(U,e);t!==s&&(Dt(e,s,t),Le(U,e,t))},Rt=(e,t)=>{const[s]=ge($,e),n=s(t);return re(ge(K,e),n)?Rt(e,t):n},It=e=>ge(K,e)??gt(e,{}),pt=e=>gt(e,{}),Ct=(e,t,s)=>{const[,n]=ge($,e);n(s),wt(e,t,s,{},!0)},bt=(e,t,s,n,a,o)=>{const r=ge(ge(Q,e)?.[0],a);if(!k(r)&&!o)return Lt(e,s,n,a,r);const l=t=>{Mt(e,s,t,ge(n,t)),kt(e,s,t,-1),Le(n,t)};k(r)?l(a):we(n,l),le(n)&&(Et(e,s,-1),le(Le(t,s))&&(mt(e,-1),Le(K,e),Le($,e),Le(q,e)))},Vt=e=>{const t=ge(B,e);if(!k(t))return yt(e,t);Dt(e,ge(U,e)),xt(e,-1),Le(U,e)},mt=(e,t)=>et(r,e,t),Et=(e,t,s)=>et(Se(h,e,he),t,s),kt=(e,t,s,n)=>{const a=ge(q,e),o=ge(a,s)??0;(0==o&&1==n||1==o&&-1==n)&&et(Se(d,e,he),s,n),Le(a,s,o!=-n?o+n:null),et(Se(Se(T,e,he),t,he),s,n)},Mt=(e,t,s,n,a)=>Se(Se(Se(b,e,he),t,he),s,(()=>[n,0]))[1]=a,xt=(e,t)=>et(V,e,t),Dt=(e,t,s)=>Se(m,e,(()=>[t,0]))[1]=s,Jt=(e,t,s,n,a)=>(H(Se(Se(Se(E,e,he),t,he),s,(()=>[])),n),a),At=(e,t,s)=>(H(Se(J,e,(()=>[])),t),s),Ft=(e,t,s)=>M(ge(ge(ge(b,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...He(Xt(e,t,s))])),Qt=e=>M(ge(m,e),(([e,t])=>[!0,e,t]),(()=>[!1,...He(_t(e))])),zt=e=>le(E)||le(Je[e])?0:de(e?Ce(E):E,((t,s)=>de(t,((t,n)=>de(t,((t,a)=>$e(Je[e],[s,n,a],t))))))),Nt=e=>le(J)||le(Ae[e])?0:de(e?Ie(J):J,((t,s)=>$e(Ae[e],[s],t))),jt=(e,t,s)=>{if(!le(t))return $e(e,s,(()=>ve(t))),1},Ot=e=>{const t=le(ie[e]),s=le(xe[e])&&le(ee[e])&&le(oe[e])&&t&&le(Y[e]),n=le(De[e])&&le(be[e])&&le(Z[e])&&le(X[e]);if(!s||!n){const a=e?[Ie(r),pe(d),pe(h),Ce(T),Ce(b)]:[r,d,h,T,b];if(!s){jt(Y[e],a[0]),de(a[1],((t,s)=>jt(ee[e],t,[s])));const s=ke();de(a[2],((n,a)=>{jt(oe[e],n,[a])&&!t&&($e(ie[e],[a,null]),Me(s,a))})),t||de(a[4],((t,n)=>{if(!re(s,n)){const s=ke();de(t,(e=>de(e,(([t,n],a)=>n!==t?Me(s,a):ue(e,a))))),de(s,(t=>$e(ie[e],[n,t])))}})),de(a[3],((t,s)=>de(t,((t,n)=>jt(xe[e],t,[s,n])))))}if(!n){let t;de(a[4],((s,n)=>{let a;de(s,((s,o)=>{let r;de(s,(([s,l],i)=>{l!==s&&($e(De[e],[n,o,i],l,s,Ft),t=a=r=1)})),r&&$e(be[e],[n,o],Ft)})),a&&$e(Z[e],[n],Ft)})),t&&$e(X[e],void 0,Ft)}}},Pt=e=>{const t=le(je[e]),s=le(Oe[e])&&le(ze[e]);if(!t||!s){const n=e?[Ie(V),Ie(m)]:[V,m];if(t||jt(je[e],n[0]),!s){let t;de(n[1],(([s,n],a)=>{n!==s&&($e(Oe[e],[a],n,s,Qt),t=1)})),t&&$e(ze[e],void 0,Qt)}}},Bt=(e,...t)=>(us((()=>e(...P(t,C)))),gs),Wt=()=>[ve(b,((e,t)=>-1===ge(r,t)?null:ve(e,((e,s)=>-1===ge(ge(h,t),s)?null:ve(e,(([,e])=>e??null),((e,t)=>Xe(t)))),ae)),ae),ve(m,(([,e])=>e??null),((e,t)=>Xe(t)))],$t=()=>({cellsTouched:s,valuesTouched:n,changedCells:Re(b,Ue,Xe),invalidCells:Re(E),changedValues:ve(m,Ue,Xe),invalidValues:ve(J),changedTableIds:ve(r),changedRowIds:ye(h),changedCellIds:Re(T),changedValueIds:ve(V)}),qt=()=>Re(K),Gt=()=>fe(K),Ht=e=>fe(ge(K,C(e))),Kt=(e,t,s,n=0,a)=>{return P(G(j((o=ge(K,C(e)),r=(e,s)=>[k(t)?s:ge(e,C(t)),s],P([...o?.entries()??[]],(([e,t])=>r(t,e)))),(([e],[t])=>Ne(e,t)*(s?-1:1))),n,k(a)?a:n+a),(([,e])=>e));var o,r},Ut=(e,t)=>fe(ge(ge(K,C(e)),C(t))),Xt=(e,t,s)=>ge(ge(ge(K,C(e)),C(t)),C(s)),Yt=()=>ve(U),Zt=()=>fe(U),_t=e=>ge(U,C(e)),es=e=>Bt((()=>(e=>_e(e,nt,Jt))(e)?ft(e):0)),ts=e=>Bt((()=>rt(e)?vt(e):0)),ss=e=>{try{ht(Ze(e))}catch{}return gs},ns=t=>Bt((()=>{if((e=_e(t,(e=>_e(e,st))))&&(dt(t),!le(K))){const e=qt();os(),es(e)}})),as=e=>Bt((()=>{if(t=(e=>_e(e,st))(e)){const s=Yt();ds(),is(),t=!0,ut(e),ts(s)}})),os=()=>Bt((()=>ft({}))),rs=e=>Bt((e=>re(K,e)?pt(e):0),e),ls=(e,t)=>Bt(((e,t)=>M(ge(K,e),(s=>re(s,t)?Ct(e,s,t):0))),e,t),is=()=>Bt((()=>vt({}))),cs=()=>Bt((()=>{dt({}),e=!1})),ds=()=>Bt((()=>{ut({}),t=!1})),us=(e,t)=>{if(-1!=a){hs();const s=e();return fs(t),s}},hs=()=>(-1!=a&&a++,1==a&&$e(Pe,void 0,Wt,$t),gs),fs=e=>(a>0&&(a--,0==a&&(s=!le(b),n=!le(m),a=1,zt(1),s&&Ot(1),Nt(1),n&&Pt(1),e?.(Wt,$t)&&(de(b,((e,t)=>de(e,((e,s)=>de(e,(([e],n)=>me(gs,t,s,n,e))))))),de(m,(([e],t)=>Ee(gs,t,e))),s=n=!1),$e(Be[0],void 0,Wt,$t),a=-1,zt(0),s&&Ot(0),Nt(0),n&&Pt(0),$e(Be[1],void 0,Wt,$t),a=0,s=n=!1,O([r,d,h,T,b,E,V,m,J],ce))),gs),gs={getContent:()=>[qt(),Yt()],getTables:qt,getTableIds:Gt,getTable:e=>ye(ge(K,C(e))),getTableCellIds:e=>fe(ge(q,C(e))),getRowIds:Ht,getSortedRowIds:Kt,getRow:(e,t)=>ve(ge(ge(K,C(e)),C(t))),getCellIds:Ut,getCell:Xt,getValues:Yt,getValueIds:Zt,getValue:_t,hasTables:()=>!le(K),hasTable:e=>re(K,C(e)),hasTableCell:(e,t)=>re(ge(q,C(e)),C(t)),hasRow:(e,t)=>re(ge(K,C(e)),C(t)),hasCell:(e,t,s)=>re(ge(ge(K,C(e)),C(t)),C(s)),hasValues:()=>!le(U),hasValue:e=>re(U,C(e)),getTablesJson:()=>Ye(K),getValuesJson:()=>Ye(U),getJson:()=>Ye([K,U]),getTablesSchemaJson:()=>Ye(A),getValuesSchemaJson:()=>Ye(N),getSchemaJson:()=>Ye([A,N]),setContent:([e,t])=>Bt((()=>{(ae(e)?os:es)(e),(ae(t)?is:ts)(t)})),setTables:es,setTable:(e,t)=>Bt((e=>nt(t,e)?gt(e,t):0),e),setRow:(e,t,s)=>Bt(((e,t)=>at(e,t,s)?wt(e,It(e),t,s):0),e,t),addRow:(e,t,s=!0)=>us((()=>{let n;return at(e,n,t)&&(e=C(e),wt(e,It(e),n=Rt(e,s?1:0),t)),n})),setPartialRow:(e,t,s)=>Bt(((e,t)=>{if(at(e,t,s,1)){const n=It(e);ne(s,((s,a)=>St(e,n,t,a,s)))}}),e,t),setCell:(e,t,s,n)=>Bt(((e,t,s)=>M(ot(e,t,s,D(n)?n(Xt(e,t,s)):n),(n=>St(e,It(e),t,s,n)))),e,t,s),setValues:ts,setPartialValues:e=>Bt((()=>rt(e,1)?ne(e,((e,t)=>yt(t,e))):0)),setValue:(e,t)=>Bt((e=>M(lt(e,D(t)?t(_t(e)):t),(t=>yt(e,t)))),e),setTransactionChanges:e=>Bt((()=>{ne(e[0],((e,t)=>k(e)?rs(t):ne(e,((e,s)=>k(e)?ls(t,s):ne(e,((e,n)=>me(gs,t,s,n,e))))))),ne(e[1],((e,t)=>Ee(gs,t,e)))})),setTablesJson:ss,setValuesJson:e=>{try{Tt(Ze(e))}catch{}return gs},setJson:e=>{try{const[t,s]=Ze(e);ht(t),Tt(s)}catch{ss(e)}return gs},setTablesSchema:ns,setValuesSchema:as,setSchema:(e,t)=>Bt((()=>{ns(e),as(t)})),delTables:os,delTable:rs,delRow:ls,delCell:(e,t,s,n)=>Bt(((e,t,s)=>M(ge(K,e),(a=>M(ge(a,t),(o=>re(o,s)?bt(e,a,t,o,s,n):0))))),e,t,s),delValues:is,delValue:e=>Bt((e=>re(U,e)?Vt(e):0),e),delTablesSchema:cs,delValuesSchema:ds,delSchema:()=>Bt((()=>{cs(),ds()})),transaction:us,startTransaction:hs,finishTransaction:fs,forEachTable:e=>de(K,((t,s)=>e(s,(e=>de(t,((t,s)=>e(s,(e=>we(t,e))))))))),forEachTableCell:(e,t)=>we(ge(q,C(e)),t),forEachRow:(e,t)=>de(ge(K,C(e)),((e,s)=>t(s,(t=>we(e,t))))),forEachCell:(e,t,s)=>we(ge(ge(K,C(e)),C(t)),s),forEachValue:e=>we(U,e),addSortedRowIdsListener:(e,t,s,n,a,o,r)=>{let l=Kt(e,t,s,n,a);return We((()=>{const r=Kt(e,t,s,n,a);z(r,l)||(l=r,o(gs,e,t,s,n,a,l))}),ie[r?1:0],[e,t],[Gt])},addStartTransactionListener:e=>We(e,Pe),addWillFinishTransactionListener:e=>We(e,Be[0]),addDidFinishTransactionListener:e=>We(e,Be[1]),callListener:e=>(Ge(e),gs),delListener:e=>(qe(e),gs),getListenerStats:()=>({}),createStore:tt};return ne({[g]:[0,X],[w]:[0,Y],[f]:[1,Z,[Gt]],[f+y]:[1,ee,[Gt]],[S]:[1,oe,[Gt]],[L]:[2,be,[Gt,Ht]],[y]:[2,xe,[Gt,Ht]],[v]:[3,De,[Gt,Ht,Ut],e=>He(Xt(...e))],InvalidCell:[3,Je],[I]:[0,ze],[p]:[0,je],[R]:[1,Oe,[Zt],e=>He(_t(e[0]))],InvalidValue:[1,Ae]},(([e,t,s,n],a)=>{gs[u+a+c]=(...a)=>We(a[e],t[a[e+1]?1:0],e>0?G(a,0,e):void 0,s,n)})),_(gs)};e.createCheckpoints=ze,e.createCustomPersister=(e,t,s,n,a,o,r=[])=>{let l,i,c,d=0,u=0;Se(We,r,(()=>0)),Se($e,r,(()=>[]));const h=async e=>(2!=d&&(d=1,await f.schedule((async()=>{await e(),d=0}))),f),f={load:async(s,n)=>await h((async()=>{try{e.setContent(await t())}catch{e.setContent([s,n])}})),startAutoLoad:async(s={},a={})=>(f.stopAutoLoad(),await f.load(s,a),u=1,c=n((async(s,n)=>{if(n){const t=n();await h((async()=>e.setTransactionChanges(t)))}else await h((async()=>{try{e.setContent(s?.()??await t())}catch(e){o?.(e)}}))})),f),stopAutoLoad:()=>(u&&(a(c),c=void 0,u=0),f),save:async t=>(1!=d&&(d=2,await f.schedule((async()=>{try{await s(e.getContent,t)}catch(e){o?.(e)}d=0}))),f),startAutoSave:async()=>(await f.stopAutoSave().save(),l=e.addDidFinishTransactionListener(((e,t)=>{const[s,n]=t();ae(s)&&ae(n)||f.save((()=>[s,n]))})),f),stopAutoSave:()=>(M(l,e.delListener),f),schedule:async(...e)=>(H(ge($e,r),...e),await(async()=>{if(!ge(We,r)){for(Le(We,r,1);!k(i=U(ge($e,r)));)try{await i()}catch(e){o?.(e)}Le(We,r,0)}})(),f),getStore:()=>e,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return _(f)},e.createIndexes=je,e.createMetrics=Be,e.createQueries=qe,e.createRelationships=Ge,e.createStore=tt,e.defaultSorter=Ne},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBase={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>null==e,n=(e,n,o)=>t(e)?null==o?void 0:o():n(e),o=Object,i=o.keys,r=o.freeze,l=(e,t)=>n(e,(e=>e[t])),u=(e,n)=>!t(l(e,n)),s=(e,t)=>(delete e[t],e),d=(e,t)=>((e,t)=>e.map(t))(o.entries(e),(([e,n])=>t(n,e))),c=e=>i(e).length,a=e=>(e=>e instanceof o&&e.constructor==o)(e)&&0==c(e);var v=(e,t,n)=>new Promise(((o,i)=>{var r=e=>{try{u(n.next(e))}catch(e){i(e)}},l=e=>{try{u(n.throw(e))}catch(e){i(e)}},u=e=>e.done?o(e.value):Promise.resolve(e.value).then(r,l);u((n=n.apply(e,t)).next())})),f=(e,t,n)=>new Promise(((o,i)=>{var r=e=>{try{u(n.next(e))}catch(e){i(e)}},l=e=>{try{u(n.throw(e))}catch(e){i(e)}},u=e=>e.done?o(e.value):Promise.resolve(e.value).then(r,l);u((n=n.apply(e,t)).next())}));const y=(e,t)=>[e[t].t,e[t].v],h=(e,n,o,i)=>{const r=t(n)?e:((e,t,n)=>(u(e,t)||(e[t]={}),e[t]))(e,n);let l;return d(o,((e,t)=>{i(r,t,e)&&(l=1)})),d(r,((e,t)=>{u(o,t)||(s(r,t),l=1)})),!t(n)&&a(r)&&s(e,n),l};e.createAutomergePersister=(e,o,i="tinybase")=>(o.change((e=>e[i]={})),((e,u,c,p,g)=>{let m,A,x,L=0,P=0,S=0;const b=[],C=e=>v(void 0,null,(function*(){return 2!=L&&(L=1,yield T.schedule((()=>v(void 0,null,(function*(){yield e(),L=0}))))),T})),T={load:(t,n)=>v(void 0,null,(function*(){return yield C((()=>v(void 0,null,(function*(){try{e.setContent(yield u())}catch(o){e.setContent([t,n])}}))))})),startAutoLoad:(...t)=>v(void 0,[...t],(function*(t={},n={}){return T.stopAutoLoad(),yield T.load(t,n),S=1,x=(e=>{const t=({doc:t})=>e((()=>y(t,i)));return o.on("change",t),t})(((t,n)=>v(void 0,null,(function*(){return yield C((()=>v(void 0,null,(function*(){var o;if(n)e.setTransactionChanges(n());else try{e.setContent(null!=(o=null==t?void 0:t())?o:yield u())}catch(e){}}))))})))),T})),stopAutoLoad:()=>{return S&&(e=x,o.removeListener("change",e),x=void 0,S=0),T;var e},save:r=>v(void 0,null,(function*(){return 1!=L&&(L=2,yield T.schedule((()=>v(void 0,null,(function*(){try{yield((e,r)=>f(void 0,null,(function*(){return o.change((o=>((e,o,i,r)=>{((e,t)=>{a(e[t])&&(e[t]={t:{},v:{}})})(e,o);const[u,c]=y(e,o),v=()=>{f=1};let f=1;if(n(null==r?void 0:r(),(([e,o])=>{f=0,d(e,((e,o)=>f?0:t(e)?s(u,o):n(u[o],(o=>d(e,((e,i)=>f?0:t(e)?s(o,i):n(l(o,i),(n=>d(e,((e,o)=>t(e)?s(n,o):n[o]=e))),v)))),v))),d(o,((e,n)=>f?0:t(e)?s(c,n):c[n]=e))})),f){const[e,t]=i();h(u,void 0,e,((e,t,n)=>h(u,t,n,((e,t,n)=>h(e,t,n,((e,t,n)=>{if(l(e,t)!==n)return e[t]=n,1})))))),h(c,void 0,t,((e,t,n)=>{l(c,t)!==n&&(c[t]=n)}))}})(o,i,e,r)))})))(e.getContent,r)}catch(e){}L=0}))))),T})),startAutoSave:()=>v(void 0,null,(function*(){return yield T.stopAutoSave().save(),m=e.addDidFinishTransactionListener(((e,t)=>{const[n,o]=t();a(n)&&a(o)||T.save((()=>[n,o]))})),T})),stopAutoSave:()=>(n(m,e.delListener),T),schedule:(...e)=>v(void 0,null,(function*(){return((e,...t)=>{e.push(...t)})(b,...e),yield v(void 0,null,(function*(){if(!P){for(P=1;!t((e=b,A=e.shift()));)try{yield A()}catch(e){}P=0}var e})),T})),getStore:()=>e,destroy:()=>T.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return r(T)})(e,(()=>f(void 0,null,(function*(){return 2==c(o.doc[i])?y(o.doc,i):void 0})))))},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBasePersisterAutomerge={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>null==e,n=(e,n,o)=>t(e)?null==o?void 0:o():n(e),o=Object,l=o.keys,i=o.freeze,u=(e,t)=>n(e,(e=>e[t])),r=(e,n)=>!t(u(e,n)),d=(e,t)=>(delete e[t],e),s=(e,t)=>((e,t)=>e.map(t))(o.entries(e),(([e,n])=>t(n,e))),c=e=>l(e).length,a=e=>(e=>e instanceof o&&e.constructor==o)(e)&&0==c(e),v=e=>new Map(e),f=(e,t)=>null==e?void 0:e.get(t),y=(e,n,o)=>{return t(o)?(i=n,null==(l=e)||l.delete(i),e):null==e?void 0:e.set(n,o);var l,i},h=(e,t,n)=>{var o,l,i;return l=t,null!=(i=null==(o=e)?void 0:o.has(l))&&i||y(e,t,n()),f(e,t)};var p=(e,t,n)=>new Promise(((o,l)=>{var i=e=>{try{r(n.next(e))}catch(e){l(e)}},u=e=>{try{r(n.throw(e))}catch(e){l(e)}},r=e=>e.done?o(e.value):Promise.resolve(e.value).then(i,u);r((n=n.apply(e,t)).next())}));const g=v(),m=v();var A=(e,t,n)=>new Promise(((o,l)=>{var i=e=>{try{r(n.next(e))}catch(e){l(e)}},u=e=>{try{r(n.throw(e))}catch(e){l(e)}},r=e=>e.done?o(e.value):Promise.resolve(e.value).then(i,u);r((n=n.apply(e,t)).next())}));const x=(e,t)=>[e[t].t,e[t].v],L=(e,n,o,l)=>{const i=t(n)?e:((e,t,n)=>(r(e,t)||(e[t]={}),e[t]))(e,n);let u;return s(o,((e,t)=>{l(i,t,e)&&(u=1)})),s(i,((e,t)=>{r(o,t)||(d(i,t),u=1)})),!t(n)&&a(i)&&d(e,n),u};e.createAutomergePersister=(e,o,l="tinybase",r)=>(o.change((e=>e[l]={})),((e,o,l,u,r,d,s=[])=>{let c,v,A,x=0,L=0;h(g,s,(()=>0)),h(m,s,(()=>[]));const P=e=>p(void 0,null,(function*(){return 2!=x&&(x=1,yield S.schedule((()=>p(void 0,null,(function*(){yield e(),x=0}))))),S})),S={load:(t,n)=>p(void 0,null,(function*(){return yield P((()=>p(void 0,null,(function*(){try{e.setContent(yield o())}catch(o){e.setContent([t,n])}}))))})),startAutoLoad:(...t)=>p(void 0,[...t],(function*(t={},n={}){return S.stopAutoLoad(),yield S.load(t,n),L=1,A=u(((t,n)=>p(void 0,null,(function*(){if(n){const t=n();yield P((()=>p(void 0,null,(function*(){return e.setTransactionChanges(t)}))))}else yield P((()=>p(void 0,null,(function*(){var n;try{e.setContent(null!=(n=null==t?void 0:t())?n:yield o())}catch(e){null==d||d(e)}}))))})))),S})),stopAutoLoad:()=>(L&&(r(A),A=void 0,L=0),S),save:t=>p(void 0,null,(function*(){return 1!=x&&(x=2,yield S.schedule((()=>p(void 0,null,(function*(){try{yield l(e.getContent,t)}catch(e){null==d||d(e)}x=0}))))),S})),startAutoSave:()=>p(void 0,null,(function*(){return yield S.stopAutoSave().save(),c=e.addDidFinishTransactionListener(((e,t)=>{const[n,o]=t();a(n)&&a(o)||S.save((()=>[n,o]))})),S})),stopAutoSave:()=>(n(c,e.delListener),S),schedule:(...e)=>p(void 0,null,(function*(){return((e,...t)=>{e.push(...t)})(f(m,s),...e),yield p(void 0,null,(function*(){if(!f(g,s)){for(y(g,s,1);!t((e=f(m,s),v=e.shift()));)try{yield v()}catch(e){null==d||d(e)}y(g,s,0)}var e})),S})),getStore:()=>e,destroy:()=>S.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return i(S)})(e,(()=>A(void 0,null,(function*(){return 2==c(o.doc[l])?x(o.doc,l):void 0}))),((e,i)=>A(void 0,null,(function*(){return o.change((o=>((e,o,l,i)=>{((e,t)=>{a(e[t])&&(e[t]={t:{},v:{}})})(e,o);const[r,c]=x(e,o),v=()=>{f=1};let f=1;if(n(null==i?void 0:i(),(([e,o])=>{f=0,s(e,((e,o)=>f?0:t(e)?d(r,o):n(r[o],(o=>s(e,((e,l)=>f?0:t(e)?d(o,l):n(u(o,l),(n=>s(e,((e,o)=>t(e)?d(n,o):n[o]=e))),v)))),v))),s(o,((e,n)=>f?0:t(e)?d(c,n):c[n]=e))})),f){const[e,t]=l();L(r,void 0,e,((e,t,n)=>L(r,t,n,((e,t,n)=>L(e,t,n,((e,t,n)=>{if(u(e,t)!==n)return e[t]=n,1})))))),L(c,void 0,t,((e,t,n)=>{u(c,t)!==n&&(c[t]=n)}))}})(o,l,e,i)))}))),(e=>{const t=({doc:t})=>e((()=>x(t,l)));return o.on("change",t),t}),(e=>{o.removeListener("change",e)}),r))},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBasePersisterAutomerge={});