tinybase 4.0.1 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  2. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -0
  4. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  6. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  8. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  9. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  10. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  11. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -0
  12. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  13. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  14. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  15. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  16. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  17. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +177 -117
  18. package/lib/debug/persisters/persister-expo-sqlite.js +764 -0
  19. package/lib/debug/persisters/persister-sqlite-wasm.js +172 -116
  20. package/lib/debug/persisters/persister-sqlite3.js +174 -119
  21. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  22. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  23. package/lib/es6/persisters/persister-expo-sqlite.js +1 -0
  24. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  25. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  26. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  27. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  28. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  29. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  30. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  31. package/lib/persisters/persister-expo-sqlite.js +1 -0
  32. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  33. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  34. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  35. package/lib/persisters/persister-sqlite3.js +1 -1
  36. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  37. package/lib/types/persisters/persister-expo-sqlite.d.ts +118 -0
  38. package/lib/types/persisters.d.ts +7 -0
  39. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +128 -0
  40. package/lib/types/with-schemas/persisters.d.ts +7 -0
  41. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  42. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  43. package/lib/umd/persisters/persister-expo-sqlite.js +1 -0
  44. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  45. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  46. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  47. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  48. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  49. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  50. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  51. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -0
  52. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  53. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  54. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  55. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  56. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  57. package/package.json +20 -19
  58. package/readme.md +1 -1
@@ -69,10 +69,6 @@ const mapMatch = (map, obj, set, del = mapSet) => {
69
69
  return map;
70
70
  };
71
71
 
72
- const SINGLE_ROW_ID = '_';
73
- const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
74
- const escapeId = (str) => `"${str.replace(/"/g, '""')}"`;
75
-
76
72
  const setNew = (entryOrEntries) =>
77
73
  new Set(
78
74
  isArray(entryOrEntries) || isUndefined(entryOrEntries)
@@ -81,6 +77,10 @@ const setNew = (entryOrEntries) =>
81
77
  );
82
78
  const setAdd = (set, value) => set?.add(value);
83
79
 
80
+ const SINGLE_ROW_ID = '_';
81
+ const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
82
+ const escapeId = (str) => `"${str.replace(/"/g, '""')}"`;
83
+
84
84
  const SELECT_STAR_FROM = 'SELECT*FROM';
85
85
  const FROM_PRAGMA_TABLE = 'FROM pragma_table_';
86
86
  const WHERE = 'WHERE';
@@ -134,21 +134,6 @@ const getCommandFunctions = (cmd, managedTableNames) => {
134
134
  ),
135
135
  (_, name) => mapSet(schemaMap, name),
136
136
  );
137
- const loadSingleRow = async (tableName, rowIdColumnName) => {
138
- const rows = canSelect(tableName, rowIdColumnName)
139
- ? await cmd(
140
- SELECT_STAR_FROM +
141
- escapeId(tableName) +
142
- WHERE +
143
- escapeId(rowIdColumnName) +
144
- '=?',
145
- [SINGLE_ROW_ID],
146
- )
147
- : [];
148
- return arrayIsEmpty(rows) ? null : objDel(rows[0], rowIdColumnName);
149
- };
150
- const saveSingleRow = async (tableName, rowIdColumnName, rowId, row) =>
151
- await saveTable(tableName, rowIdColumnName, true, true, {[rowId]: row});
152
137
  const loadTable = async (tableName, rowIdColumnName) =>
153
138
  canSelect(tableName, rowIdColumnName)
154
139
  ? objNew(
@@ -167,30 +152,32 @@ const getCommandFunctions = (cmd, managedTableNames) => {
167
152
  const saveTable = async (
168
153
  tableName,
169
154
  rowIdColumnName,
155
+ table,
170
156
  deleteEmptyColumns,
171
157
  deleteEmptyTable,
172
- table,
158
+ partial = false,
173
159
  ) => {
174
- const cellIds = setNew();
160
+ const tableCellIds = setNew();
175
161
  objMap(table ?? {}, (row) =>
176
- arrayMap(objIds(row), (cellId) => setAdd(cellIds, cellId)),
162
+ arrayMap(objIds(row ?? {}), (cellId) => setAdd(tableCellIds, cellId)),
177
163
  );
178
- const columnNames = collValues(cellIds);
164
+ const tableColumnNames = collValues(tableCellIds);
179
165
  if (
180
- arrayIsEmpty(columnNames) &&
181
- collHas(schemaMap, tableName) &&
182
- deleteEmptyTable
166
+ !partial &&
167
+ deleteEmptyTable &&
168
+ arrayIsEmpty(tableColumnNames) &&
169
+ collHas(schemaMap, tableName)
183
170
  ) {
184
171
  await cmd('DROP TABLE' + escapeId(tableName));
185
172
  mapSet(schemaMap, tableName);
186
173
  return;
187
174
  }
188
- if (!arrayIsEmpty(columnNames) && !collHas(schemaMap, tableName)) {
175
+ if (!arrayIsEmpty(tableColumnNames) && !collHas(schemaMap, tableName)) {
189
176
  await cmd(
190
177
  `CREATE TABLE${escapeId(tableName)}(${escapeId(
191
178
  rowIdColumnName,
192
179
  )} PRIMARY KEY ON CONFLICT REPLACE${arrayJoin(
193
- arrayMap(columnNames, (cellId) => COMMA + escapeId(cellId)),
180
+ arrayMap(tableColumnNames, (cellId) => COMMA + escapeId(cellId)),
194
181
  )});`,
195
182
  );
196
183
  mapSet(
@@ -198,14 +185,17 @@ const getCommandFunctions = (cmd, managedTableNames) => {
198
185
  tableName,
199
186
  mapNew([
200
187
  [rowIdColumnName, EMPTY_STRING],
201
- ...arrayMap(columnNames, (columnName) => [columnName, EMPTY_STRING]),
188
+ ...arrayMap(tableColumnNames, (columnName) => [
189
+ columnName,
190
+ EMPTY_STRING,
191
+ ]),
202
192
  ]),
203
193
  );
204
194
  } else {
205
195
  const tableSchemaMap = mapGet(schemaMap, tableName);
206
196
  const columnNamesAccountedFor = setNew(mapKeys(tableSchemaMap));
207
197
  await promiseAll([
208
- ...arrayMap(columnNames, async (columnName) => {
198
+ ...arrayMap(tableColumnNames, async (columnName) => {
209
199
  if (!collDel(columnNamesAccountedFor, columnName)) {
210
200
  await cmd(
211
201
  `ALTER TABLE${escapeId(tableName)}ADD${escapeId(columnName)}`,
@@ -213,7 +203,7 @@ const getCommandFunctions = (cmd, managedTableNames) => {
213
203
  mapSet(tableSchemaMap, columnName, EMPTY_STRING);
214
204
  }
215
205
  }),
216
- ...(deleteEmptyColumns
206
+ ...(!partial && deleteEmptyColumns
217
207
  ? arrayMap(
218
208
  collValues(columnNamesAccountedFor),
219
209
  async (columnName) => {
@@ -230,68 +220,106 @@ const getCommandFunctions = (cmd, managedTableNames) => {
230
220
  : []),
231
221
  ]);
232
222
  }
233
- if (!arrayIsEmpty(columnNames)) {
234
- const insertSlots = [];
235
- const insertBinds = [];
236
- const deleteRowIds = [];
237
- const allColumnNames = arrayFilter(
238
- mapKeys(mapGet(schemaMap, tableName)),
239
- (columnName) => columnName != rowIdColumnName,
240
- );
241
- objMap(table, (row, rowId) => {
242
- arrayPush(
243
- insertSlots,
244
- `(?${strRepeat(',?', arrayLength(allColumnNames))})`,
223
+ if (partial) {
224
+ if (isUndefined(table)) {
225
+ await cmd('DELETE FROM' + escapeId(tableName) + 'WHERE 1');
226
+ } else {
227
+ await promiseAll(
228
+ objMap(table, async (row, rowId) => {
229
+ if (isUndefined(row)) {
230
+ await cmd(
231
+ 'DELETE FROM' +
232
+ escapeId(tableName) +
233
+ WHERE +
234
+ escapeId(rowIdColumnName) +
235
+ '=?',
236
+ [rowId],
237
+ );
238
+ } else if (!arrayIsEmpty(tableColumnNames)) {
239
+ await upsert(cmd, tableName, rowIdColumnName, objIds(row), [
240
+ rowId,
241
+ ...objValues(row),
242
+ ]);
243
+ }
244
+ }),
245
245
  );
246
- arrayPush(
247
- insertBinds,
248
- rowId,
249
- ...arrayMap(allColumnNames, (cellId) => row[cellId]),
246
+ }
247
+ } else {
248
+ if (!arrayIsEmpty(tableColumnNames)) {
249
+ const changingColumnNames = arrayFilter(
250
+ mapKeys(mapGet(schemaMap, tableName)),
251
+ (columnName) => columnName != rowIdColumnName,
250
252
  );
251
- arrayPush(deleteRowIds, rowId);
252
- });
253
- await cmd(
254
- 'INSERT INTO' +
255
- escapeId(tableName) +
256
- '(' +
257
- escapeId(rowIdColumnName) +
258
- arrayJoin(
259
- arrayMap(
260
- allColumnNames,
261
- (columnName) => COMMA + escapeId(columnName),
262
- ),
263
- ) +
264
- ')VALUES' +
265
- arrayJoin(insertSlots, COMMA) +
266
- 'ON CONFLICT(' +
267
- escapeId(rowIdColumnName) +
268
- ')DO UPDATE SET' +
269
- arrayJoin(
270
- arrayMap(
271
- allColumnNames,
272
- (columnName) =>
273
- escapeId(columnName) + '=excluded.' + escapeId(columnName),
274
- ),
275
- COMMA,
276
- ),
277
- insertBinds,
278
- );
279
- await cmd(
280
- 'DELETE FROM' +
281
- escapeId(tableName) +
282
- WHERE +
283
- escapeId(rowIdColumnName) +
284
- 'NOT IN(' +
285
- getPlaceholders(deleteRowIds) +
286
- ')',
287
- deleteRowIds,
288
- );
289
- } else if (collHas(schemaMap, tableName)) {
290
- await cmd('DELETE FROM' + escapeId(tableName));
253
+ const args = [];
254
+ const deleteRowIds = [];
255
+ objMap(table ?? {}, (row, rowId) => {
256
+ arrayPush(
257
+ args,
258
+ rowId,
259
+ ...arrayMap(changingColumnNames, (cellId) => row?.[cellId]),
260
+ );
261
+ arrayPush(deleteRowIds, rowId);
262
+ });
263
+ await upsert(
264
+ cmd,
265
+ tableName,
266
+ rowIdColumnName,
267
+ changingColumnNames,
268
+ args,
269
+ );
270
+ await cmd(
271
+ 'DELETE FROM' +
272
+ escapeId(tableName) +
273
+ WHERE +
274
+ escapeId(rowIdColumnName) +
275
+ 'NOT IN(' +
276
+ getPlaceholders(deleteRowIds) +
277
+ ')',
278
+ deleteRowIds,
279
+ );
280
+ } else if (collHas(schemaMap, tableName)) {
281
+ await cmd('DELETE FROM' + escapeId(tableName) + 'WHERE 1');
282
+ }
291
283
  }
292
284
  };
293
- return [refreshSchema, loadSingleRow, saveSingleRow, loadTable, saveTable];
285
+ return [refreshSchema, loadTable, saveTable];
294
286
  };
287
+ const upsert = async (
288
+ cmd,
289
+ tableName,
290
+ rowIdColumnName,
291
+ changingColumnNames,
292
+ args,
293
+ ) =>
294
+ await cmd(
295
+ 'INSERT INTO' +
296
+ escapeId(tableName) +
297
+ '(' +
298
+ escapeId(rowIdColumnName) +
299
+ arrayJoin(
300
+ arrayMap(
301
+ changingColumnNames,
302
+ (columnName) => COMMA + escapeId(columnName),
303
+ ),
304
+ ) +
305
+ ')VALUES' +
306
+ strRepeat(
307
+ `,(?${strRepeat(',?', arrayLength(changingColumnNames))})`,
308
+ arrayLength(args) / (arrayLength(changingColumnNames) + 1),
309
+ ).substring(1) +
310
+ 'ON CONFLICT(' +
311
+ escapeId(rowIdColumnName) +
312
+ ')DO UPDATE SET' +
313
+ arrayJoin(
314
+ arrayMap(
315
+ changingColumnNames,
316
+ (columnName) =>
317
+ escapeId(columnName) + '=excluded.' + escapeId(columnName),
318
+ ),
319
+ COMMA,
320
+ ),
321
+ args,
322
+ );
295
323
  const getPlaceholders = (array) =>
296
324
  arrayJoin(
297
325
  arrayMap(array, () => '?'),
@@ -434,25 +462,28 @@ const createJsonSqlitePersister = (
434
462
  [storeTableName],
435
463
  managedTableNames,
436
464
  ) => {
437
- const [refreshSchema, loadSingleRow, saveSingleRow] = getCommandFunctions(
465
+ const [refreshSchema, loadTable, saveTable] = getCommandFunctions(
438
466
  cmd,
439
467
  managedTableNames,
440
468
  );
441
469
  const getPersisted = async () => {
442
470
  await refreshSchema();
443
471
  return jsonParse(
444
- ((await loadSingleRow(storeTableName, DEFAULT_ROW_ID_COLUMN_NAME)) ?? {})[
445
- STORE_COLUMN
446
- ],
472
+ (await loadTable(storeTableName, DEFAULT_ROW_ID_COLUMN_NAME))[
473
+ SINGLE_ROW_ID
474
+ ]?.[STORE_COLUMN],
447
475
  );
448
476
  };
449
477
  const setPersisted = async (getContent) =>
450
478
  persister.schedule(refreshSchema, async () => {
451
- await saveSingleRow(
479
+ await saveTable(
452
480
  storeTableName,
453
481
  DEFAULT_ROW_ID_COLUMN_NAME,
454
- SINGLE_ROW_ID,
455
- {[STORE_COLUMN]: jsonString(getContent())},
482
+ {
483
+ [SINGLE_ROW_ID]: {[STORE_COLUMN]: jsonString(getContent())},
484
+ },
485
+ true,
486
+ true,
456
487
  );
457
488
  });
458
489
  const persister = createCustomPersister(
@@ -477,32 +508,41 @@ const createTabularSqlitePersister = (
477
508
  ],
478
509
  managedTableNames,
479
510
  ) => {
480
- const [refreshSchema, loadSingleRow, saveSingleRow, loadTable, saveTable] =
481
- getCommandFunctions(cmd, managedTableNames);
482
- const saveTables = async (tables) =>
511
+ const [refreshSchema, loadTable, saveTable] = getCommandFunctions(
512
+ cmd,
513
+ managedTableNames,
514
+ );
515
+ const saveTables = async (tables, partial) =>
483
516
  await promiseAll(
484
517
  mapMap(
485
518
  tablesSaveConfig,
486
519
  async (
487
520
  [tableName, rowIdColumnName, deleteEmptyColumns, deleteEmptyTable],
488
521
  tableId,
489
- ) =>
490
- await saveTable(
491
- tableName,
492
- rowIdColumnName,
493
- deleteEmptyColumns,
494
- deleteEmptyTable,
495
- tables[tableId],
496
- ),
522
+ ) => {
523
+ const table = tables[tableId];
524
+ if (!partial || table !== void 0) {
525
+ await saveTable(
526
+ tableName,
527
+ rowIdColumnName,
528
+ table,
529
+ deleteEmptyColumns,
530
+ deleteEmptyTable,
531
+ partial,
532
+ );
533
+ }
534
+ },
497
535
  ),
498
536
  );
499
- const saveValues = async (values) =>
537
+ const saveValues = async (values, partial) =>
500
538
  valuesSave
501
- ? await saveSingleRow(
539
+ ? await saveTable(
502
540
  valuesTableName,
503
541
  DEFAULT_ROW_ID_COLUMN_NAME,
504
- SINGLE_ROW_ID,
505
- values,
542
+ {[SINGLE_ROW_ID]: values},
543
+ true,
544
+ true,
545
+ partial,
506
546
  )
507
547
  : null;
508
548
  const loadTables = async () =>
@@ -522,7 +562,9 @@ const createTabularSqlitePersister = (
522
562
  );
523
563
  const loadValues = async () =>
524
564
  valuesLoad
525
- ? await loadSingleRow(valuesTableName, DEFAULT_ROW_ID_COLUMN_NAME)
565
+ ? (await loadTable(valuesTableName, DEFAULT_ROW_ID_COLUMN_NAME))[
566
+ SINGLE_ROW_ID
567
+ ]
526
568
  : {};
527
569
  const getPersisted = async () => {
528
570
  await refreshSchema();
@@ -532,11 +574,17 @@ const createTabularSqlitePersister = (
532
574
  ? [tables, values]
533
575
  : void 0;
534
576
  };
535
- const setPersisted = async (getContent) => {
536
- const [tables, values] = getContent();
577
+ const setPersisted = async (getContent, getTransactionChanges) => {
537
578
  await refreshSchema();
538
- await saveTables(tables);
539
- await saveValues(values);
579
+ if (!isUndefined(getTransactionChanges)) {
580
+ const [tableChanges, valueChanges] = getTransactionChanges();
581
+ await saveTables(tableChanges, true);
582
+ await saveValues(valueChanges, true);
583
+ } else {
584
+ const [tables, values] = getContent();
585
+ await saveTables(tables);
586
+ await saveValues(values);
587
+ }
540
588
  };
541
589
  const persister = createCustomPersister(
542
590
  store,
@@ -650,6 +698,7 @@ const createSqlitePersister = (
650
698
  cmd,
651
699
  addUpdateListener,
652
700
  delUpdateListener,
701
+ logSql,
653
702
  ) => {
654
703
  let dataVersion;
655
704
  let schemaVersion;
@@ -689,7 +738,12 @@ const createSqlitePersister = (
689
738
  };
690
739
  return (isJson ? createJsonSqlitePersister : createTabularSqlitePersister)(
691
740
  store,
692
- cmd,
741
+ logSql
742
+ ? async (sql, args) => {
743
+ logSql(sql, args);
744
+ return await cmd(sql, args);
745
+ }
746
+ : cmd,
693
747
  addPersisterListener,
694
748
  delPersisterListener,
695
749
  defaultedConfig,
@@ -698,12 +752,12 @@ const createSqlitePersister = (
698
752
  };
699
753
 
700
754
  const CHANGE = 'change';
701
- const createSqlite3Persister = (store, db, configOrStoreTableName) =>
755
+ const createSqlite3Persister = (store, db, configOrStoreTableName, logSql) =>
702
756
  createSqlitePersister(
703
757
  store,
704
758
  configOrStoreTableName,
705
- (sql, args = []) =>
706
- promiseNew((resolve, reject) =>
759
+ async (sql, args = []) =>
760
+ await promiseNew((resolve, reject) =>
707
761
  db.all(sql, args, (error, rows) =>
708
762
  error ? reject(error) : resolve(rows.map((row) => ({...row}))),
709
763
  ),
@@ -714,6 +768,7 @@ const createSqlite3Persister = (store, db, configOrStoreTableName) =>
714
768
  return observer;
715
769
  },
716
770
  (observer) => db.off(CHANGE, observer),
771
+ logSql,
717
772
  );
718
773
 
719
774
  export {createSqlite3Persister};
@@ -1 +1 @@
1
- const e=e=>typeof e,n="tinybase",t=",",l=e(""),r=(e,n="")=>e.join(n),o=(e,n)=>e.map(n),i=e=>e.length,u=e=>0==i(e),a=(e,n)=>e.filter(n),d=(e,n,t)=>e.slice(n,t),c=(e,...n)=>e.push(...n),s=Promise,v=(e,n)=>e instanceof n,y=e=>null==e,f=(e,n,t)=>y(e)?null==t?void 0:t():n(e),h=n=>e(n)==l,p=e=>{return n=function*(){return s.all(e)},new Promise(((e,t)=>{var l=e=>{try{o(n.next(e))}catch(e){t(e)}},r=e=>{try{o(n.throw(e))}catch(e){t(e)}},o=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,r);o((n=n.apply(void 0,null)).next())}));var n},m=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},E=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},A=(e,n)=>null==e?void 0:e.delete(n),T=Object,O=T.keys,P=T.freeze,L=(e=[])=>T.fromEntries(e),w=(...e)=>T.assign({},...e),b=(e,n)=>(delete e[n],e),x=(e,n)=>o(T.entries(e),(([e,t])=>n(t,e))),N=e=>T.values(e),S=e=>i(O(e)),C=e=>(e=>v(e,T)&&e.constructor==T)(e)&&0==S(e),R=e=>new Map(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},I=(e,n)=>null==e?void 0:e.get(n),D=(e,n)=>{var t;return o([...null!=(t=null==e?void 0:e.entries())?t:[]],(([e,t])=>n(t,e)))},$=(e,n,t)=>y(t)?(A(e,n),e):null==e?void 0:e.set(n,t),_=(e,n,t,l=$)=>(x(n,((n,l)=>t(e,l,n))),((e,n)=>{((e,n)=>{null==e||e.forEach(n)})(e,((e,t)=>n(t)))})(e,(t=>((e,n)=>!y(((e,n)=>f(e,(e=>e[n])))(e,n)))(n,t)?0:l(e,t))),e),j="_id",F=e=>`"${e.replace(/"/g,'""')}"`,M=e=>new Set(Array.isArray(e)||y(e)?e:[e]),B=(e,n)=>null==e?void 0:e.add(n);var U=Object.defineProperty,k=Object.getOwnPropertySymbols,H=Object.prototype.hasOwnProperty,J=Object.prototype.propertyIsEnumerable,W=(e,n,t)=>n in e?U(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,Y=(e,n)=>{for(var t in n||(n={}))H.call(n,t)&&W(e,t,n[t]);if(k)for(var t of k(n))J.call(n,t)&&W(e,t,n[t]);return e},z=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const K="SELECT*FROM",V="FROM pragma_table_",q="WHERE",G=(e,n)=>{const l=R(),d=(e,n)=>!y(I(I(l,e),n)),s=(n,d,s,v,y)=>z(void 0,null,(function*(){const f=M();x(null!=y?y:{},(e=>o(O(e),(e=>B(f,e)))));const h=E(f);if(u(h)&&m(l,n)&&v)return yield e("DROP TABLE"+F(n)),void $(l,n);if(u(h)||m(l,n)){const t=I(l,n),r=M(g(t));yield p([...o(h,(l=>z(void 0,null,(function*(){A(r,l)||(yield e(`ALTER TABLE${F(n)}ADD${F(l)}`),$(t,l,""))})))),...s?o(E(r),(l=>z(void 0,null,(function*(){l!=d&&(yield e(`ALTER TABLE${F(n)}DROP${F(l)}`),$(t,l))})))):[]])}else yield e(`CREATE TABLE${F(n)}(${F(d)} PRIMARY KEY ON CONFLICT REPLACE${r(o(h,(e=>t+F(e))))});`),$(l,n,R([[d,""],...o(h,(e=>[e,""]))]));if(u(h))m(l,n)&&(yield e("DELETE FROM"+F(n)));else{const u=[],s=[],v=[],f=a(g(I(l,n)),(e=>e!=d));x(y,((e,n)=>{var t;c(u,`(?${t=i(f),",?".repeat(t)})`),c(s,n,...o(f,(n=>e[n]))),c(v,n)})),yield e("INSERT INTO"+F(n)+"("+F(d)+r(o(f,(e=>t+F(e))))+")VALUES"+r(u,t)+"ON CONFLICT("+F(d)+")DO UPDATE SET"+r(o(f,(e=>F(e)+"=excluded."+F(e))),t),s),yield e("DELETE FROM"+F(n)+q+F(d)+"NOT IN("+Q(v)+")",v)}}));return[()=>z(void 0,null,(function*(){return _(l,L(yield p(o(yield e("SELECT name "+V+"list WHERE schema='main'AND type='table'AND name IN("+Q(n)+")",n),(n=>z(void 0,[n],(function*({name:n}){return[n,L(o(yield e("SELECT name,type "+V+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,t)=>{return $(l,n,_((i=R,m(r=l,o=n)||$(r,o,i()),I(r,o)),t,((e,n,t)=>{t!=I(e,n)&&$(e,n,t)}),((e,n)=>$(e,n))));var r,o,i}),((e,n)=>$(l,n)))})),(n,t)=>z(void 0,null,(function*(){const l=d(n,t)?yield e(K+F(n)+q+F(t)+"=?",["_"]):[];return u(l)?null:b(l[0],t)})),(e,n,t,l)=>z(void 0,null,(function*(){return yield s(e,n,!0,!0,{[t]:l})})),(n,t)=>z(void 0,null,(function*(){return d(n,t)?L(a(o(yield e(K+F(n)),(e=>[e[t],b(Y({},e),t)])),(([e,n])=>!y(e)&&!C(n)))):{}})),s]},Q=e=>r(o(e,(()=>"?")),t),X=JSON.parse;var Z=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const ee=(e,n,t,l,r)=>{let o,i,u,a=0,d=0,s=0;const v=[],h=e=>Z(void 0,null,(function*(){return 2!=a&&(a=1,yield p.schedule((()=>Z(void 0,null,(function*(){yield e(),a=0}))))),p})),p={load:(t,l)=>Z(void 0,null,(function*(){return yield h((()=>Z(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([t,l])}}))))})),startAutoLoad:(...t)=>Z(void 0,[...t],(function*(t={},r={}){return p.stopAutoLoad(),yield p.load(t,r),s=1,u=l(((t,l)=>Z(void 0,null,(function*(){return yield h((()=>Z(void 0,null,(function*(){var r;if(l)e.setTransactionChanges(l());else try{e.setContent(null!=(r=null==t?void 0:t())?r:yield n())}catch(e){}}))))})))),p})),stopAutoLoad:()=>(s&&(r(u),u=void 0,s=0),p),save:n=>Z(void 0,null,(function*(){return 1!=a&&(a=2,yield p.schedule((()=>Z(void 0,null,(function*(){try{yield t(e.getContent,n)}catch(e){}a=0}))))),p})),startAutoSave:()=>Z(void 0,null,(function*(){return yield p.stopAutoSave().save(),o=e.addDidFinishTransactionListener(((e,n)=>{const[t,l]=n();C(t)&&C(l)||p.save((()=>[t,l]))})),p})),stopAutoSave:()=>(f(o,e.delListener),p),schedule:(...e)=>Z(void 0,null,(function*(){return c(v,...e),yield Z(void 0,null,(function*(){if(!d){for(d=1;!y((e=v,i=e.shift()));)try{yield i()}catch(e){}d=0}var e})),p})),getStore:()=>e,destroy:()=>p.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return P(p)};var ne=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const te="store",le=(e,n,t,l,[r],o)=>{const[i,u,a]=G(n,o),d=ee(e,(()=>ne(void 0,null,(function*(){var e;return yield i(),X((null!=(e=yield u(r,j))?e:{})[te])}))),(e=>ne(void 0,null,(function*(){return d.schedule(i,(()=>ne(void 0,null,(function*(){var n;yield a(r,j,"_",{[te]:(n=e(),JSON.stringify(n,((e,n)=>v(n,Map)?T.fromEntries([...n]):n)))})}))))}))),t,l);return d};var re=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const oe=(e,n,t,l,[r,o,[i,u,d]],c)=>{const[s,v,f,h,m]=G(n,c);return ee(e,(()=>re(void 0,null,(function*(){yield s();const e=yield re(void 0,null,(function*(){return L(a(yield p(D(r,((e,n)=>re(void 0,[e,n],(function*([e,n],t){return[e,yield h(t,n)]}))))),(e=>!C(e[1]))))})),n=yield re(void 0,null,(function*(){return i?yield v(d,j):{}}));return C(e)&&y(n)?void 0:[e,n]}))),(e=>re(void 0,null,(function*(){const[n,t]=e();yield s(),yield(e=>re(void 0,null,(function*(){return yield p(D(o,((n,t)=>re(void 0,[n,t],(function*([n,t,l,r],o){return yield m(n,t,l,r,e[o])})))))})))(n),yield(e=>re(void 0,null,(function*(){return u?yield f(d,j,"_",e):null})))(t)}))),t,l)},ie="json",ue="autoLoadIntervalSeconds",ae="rowIdColumnName",de="tableId",ce="tableName",se={mode:ie,[ue]:1},ve={load:0,save:0,[ce]:n+"_values"},ye=(e,n,t,l)=>{const r=R();return x(e,((e,o)=>{const i=d(N(w(n,h(e)?{[t]:e}:e)),0,S(n));y(i[0])||l(o,i[0])||$(r,o,i)})),r},fe="pragma ",he="data_version",pe="schema_version",me=(e,t,l,r,o)=>{let i,u;const[a,c,s,v]=(e=>{const t=(e=>w(se,h(e)?{storeTableName:e}:null!=e?e:{}))(e),l=t[ue];if(t.mode==ie){const{storeTableName:e=n}=t;return[1,l,[e],M(e)]}const{tables:{load:r={},save:o={}}={},values:i={}}=t,u=d(N(w(ve,i)),0,S(ve)),a=u[2],c=M(a);return[0,l,[ye(r,{[de]:null,[ae]:j},de,(e=>B(c,e)&&e==a)),ye(o,{[ce]:null,[ae]:j,deleteEmptyColumns:0,deleteEmptyTable:0},ce,((e,n)=>B(c,n)&&n==a)),u],c]})(t);return(a?le:oe)(e,l,(e=>[setInterval((()=>{return n=function*(){try{const n=(yield l(fe+he))[0][he],t=(yield l(fe+pe))[0][pe];n==(null!=i?i:i=n)&&t==(null!=u?u:u=t)||(e(),i=n,u=t)}catch(e){}},new Promise(((e,t)=>{var l=e=>{try{o(n.next(e))}catch(e){t(e)}},r=e=>{try{o(n.throw(e))}catch(e){t(e)}},o=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,r);o((n=n.apply(void 0,null)).next())}));var n}),1e3*c),r((n=>v.has(n)?e():0))]),(([e,n])=>{clearInterval(e),i=u=null,o(n)}),s,E(v))},Ee=(e,n,t)=>me(e,t,((e,...t)=>{return l=[e,...t],r=function*(e,t=[]){return yield n.execO(e,t)},new Promise(((e,n)=>{var t=e=>{try{i(r.next(e))}catch(e){n(e)}},o=e=>{try{i(r.throw(e))}catch(e){n(e)}},i=n=>n.done?e(n.value):Promise.resolve(n.value).then(t,o);i((r=r.apply(void 0,l)).next())}));var l,r}),(e=>n.onUpdate(((n,t,l)=>e(l)))),(e=>e()));export{Ee as createCrSqliteWasmPersister};
1
+ const e=e=>typeof e,n="tinybase",t=",",l=e(""),o=(e,n)=>e.repeat(n),r=(e,n="")=>e.join(n),i=(e,n)=>e.map(n),u=e=>e.length,a=e=>0==u(e),d=(e,n)=>e.filter(n),c=(e,n,t)=>e.slice(n,t),s=(e,...n)=>e.push(...n),v=Promise,y=(e,n)=>e instanceof n,f=e=>null==e,h=(e,n,t)=>f(e)?null==t?void 0:t():n(e),E=n=>e(n)==l,p=e=>{return n=function*(){return v.all(e)},new Promise(((e,t)=>{var l=e=>{try{r(n.next(e))}catch(e){t(e)}},o=e=>{try{r(n.throw(e))}catch(e){t(e)}},r=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,o);r((n=n.apply(void 0,null)).next())}));var n},m=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},T=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},O=(e,n)=>null==e?void 0:e.delete(n),A=Object,L=A.keys,P=A.freeze,b=(e=[])=>A.fromEntries(e),w=(...e)=>A.assign({},...e),R=(e,n)=>i(A.entries(e),(([e,t])=>n(t,e))),x=e=>A.values(e),N=e=>u(L(e)),S=e=>(e=>y(e,A)&&e.constructor==A)(e)&&0==N(e),C=e=>new Map(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},D=(e,n)=>null==e?void 0:e.get(n),I=(e,n)=>{var t;return i([...null!=(t=null==e?void 0:e.entries())?t:[]],(([e,t])=>n(t,e)))},F=(e,n,t)=>f(t)?(O(e,n),e):null==e?void 0:e.set(n,t),M=(e,n,t,l=F)=>(R(n,((n,l)=>t(e,l,n))),((e,n)=>{((e,n)=>{null==e||e.forEach(n)})(e,((e,t)=>n(t)))})(e,(t=>((e,n)=>!f(((e,n)=>h(e,(e=>e[n])))(e,n)))(n,t)?0:l(e,t))),e),$=e=>new Set(Array.isArray(e)||f(e)?e:[e]),j=(e,n)=>null==e?void 0:e.add(n),_="_",B="_id",H=e=>`"${e.replace(/"/g,'""')}"`;var W=Object.defineProperty,U=Object.getOwnPropertySymbols,k=Object.prototype.hasOwnProperty,J=Object.prototype.propertyIsEnumerable,Y=(e,n,t)=>n in e?W(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,z=(e,n)=>{for(var t in n||(n={}))k.call(n,t)&&Y(e,t,n[t]);if(U)for(var t of U(n))J.call(n,t)&&Y(e,t,n[t]);return e},K=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const V="FROM pragma_table_",q="WHERE",G=(e,n)=>{const l=C();return[()=>K(void 0,null,(function*(){return M(l,b(yield p(i(yield e("SELECT name "+V+"list WHERE schema='main'AND type='table'AND name IN("+X(n)+")",n),(n=>K(void 0,[n],(function*({name:n}){return[n,b(i(yield e("SELECT name,type "+V+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,t)=>{return F(l,n,M((i=C,m(o=l,r=n)||F(o,r,i()),D(o,r)),t,((e,n,t)=>{t!=D(e,n)&&F(e,n,t)}),((e,n)=>F(e,n))));var o,r,i}),((e,n)=>F(l,n)))})),(n,t)=>K(void 0,null,(function*(){return((e,n)=>!f(D(D(l,e),n)))(n,t)?b(d(i(yield e("SELECT*FROM"+H(n)),(e=>{return[e[t],(n=z({},e),l=t,delete n[l],n)];var n,l})),(([e,n])=>!f(e)&&!S(n)))):{}})),(n,o,u,c,v,y=!1)=>K(void 0,null,(function*(){const h=$();R(null!=u?u:{},(e=>i(L(null!=e?e:{}),(e=>j(h,e)))));const E=T(h);if(!y&&v&&a(E)&&m(l,n))return yield e("DROP TABLE"+H(n)),void F(l,n);if(a(E)||m(l,n)){const t=D(l,n),r=$(g(t));yield p([...i(E,(l=>K(void 0,null,(function*(){O(r,l)||(yield e(`ALTER TABLE${H(n)}ADD${H(l)}`),F(t,l,""))})))),...!y&&c?i(T(r),(l=>K(void 0,null,(function*(){l!=o&&(yield e(`ALTER TABLE${H(n)}DROP${H(l)}`),F(t,l))})))):[]])}else yield e(`CREATE TABLE${H(n)}(${H(o)} PRIMARY KEY ON CONFLICT REPLACE${r(i(E,(e=>t+H(e))))});`),F(l,n,C([[o,""],...i(E,(e=>[e,""]))]));if(y)f(u)?yield e("DELETE FROM"+H(n)+"WHERE 1"):yield p(R(u,((t,l)=>K(void 0,null,(function*(){f(t)?yield e("DELETE FROM"+H(n)+q+H(o)+"=?",[l]):a(E)||(yield Q(e,n,o,L(t),[l,...x(t)]))})))));else if(a(E))m(l,n)&&(yield e("DELETE FROM"+H(n)+"WHERE 1"));else{const t=d(g(D(l,n)),(e=>e!=o)),r=[],a=[];R(null!=u?u:{},((e,n)=>{s(r,n,...i(t,(n=>null==e?void 0:e[n]))),s(a,n)})),yield Q(e,n,o,t,r),yield e("DELETE FROM"+H(n)+q+H(o)+"NOT IN("+X(a)+")",a)}}))]},Q=(e,n,l,a,d)=>K(void 0,null,(function*(){return yield e("INSERT INTO"+H(n)+"("+H(l)+r(i(a,(e=>t+H(e))))+")VALUES"+o(`,(?${o(",?",u(a))})`,u(d)/(u(a)+1)).substring(1)+"ON CONFLICT("+H(l)+")DO UPDATE SET"+r(i(a,(e=>H(e)+"=excluded."+H(e))),t),d)})),X=e=>r(i(e,(()=>"?")),t),Z=JSON.parse;var ee=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const ne=(e,n,t,l,o)=>{let r,i,u,a=0,d=0,c=0;const v=[],y=e=>ee(void 0,null,(function*(){return 2!=a&&(a=1,yield E.schedule((()=>ee(void 0,null,(function*(){yield e(),a=0}))))),E})),E={load:(t,l)=>ee(void 0,null,(function*(){return yield y((()=>ee(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([t,l])}}))))})),startAutoLoad:(...t)=>ee(void 0,[...t],(function*(t={},o={}){return E.stopAutoLoad(),yield E.load(t,o),c=1,u=l(((t,l)=>ee(void 0,null,(function*(){return yield y((()=>ee(void 0,null,(function*(){var o;if(l)e.setTransactionChanges(l());else try{e.setContent(null!=(o=null==t?void 0:t())?o:yield n())}catch(e){}}))))})))),E})),stopAutoLoad:()=>(c&&(o(u),u=void 0,c=0),E),save:n=>ee(void 0,null,(function*(){return 1!=a&&(a=2,yield E.schedule((()=>ee(void 0,null,(function*(){try{yield t(e.getContent,n)}catch(e){}a=0}))))),E})),startAutoSave:()=>ee(void 0,null,(function*(){return yield E.stopAutoSave().save(),r=e.addDidFinishTransactionListener(((e,n)=>{const[t,l]=n();S(t)&&S(l)||E.save((()=>[t,l]))})),E})),stopAutoSave:()=>(h(r,e.delListener),E),schedule:(...e)=>ee(void 0,null,(function*(){return s(v,...e),yield ee(void 0,null,(function*(){if(!d){for(d=1;!f((e=v,i=e.shift()));)try{yield i()}catch(e){}d=0}var e})),E})),getStore:()=>e,destroy:()=>E.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return P(E)};var te=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const le="store",oe=(e,n,t,l,[o],r)=>{const[i,u,a]=G(n,r),d=ne(e,(()=>te(void 0,null,(function*(){var e;return yield i(),Z(null==(e=(yield u(o,B))[_])?void 0:e[le])}))),(e=>te(void 0,null,(function*(){return d.schedule(i,(()=>te(void 0,null,(function*(){var n;yield a(o,B,{[_]:{[le]:(n=e(),JSON.stringify(n,((e,n)=>y(n,Map)?A.fromEntries([...n]):n)))}},!0,!0)}))))}))),t,l);return d};var re=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const ie=(e,n,t,l,[o,r,[i,u,a]],c)=>{const[s,v,y]=G(n,c),h=(e,n)=>re(void 0,null,(function*(){return yield p(I(r,((t,l)=>re(void 0,[t,l],(function*([t,l,o,r],i){const u=e[i];n&&void 0===u||(yield y(t,l,u,o,r,n))})))))})),E=(e,n)=>re(void 0,null,(function*(){return u?yield y(a,B,{[_]:e},!0,!0,n):null}));return ne(e,(()=>re(void 0,null,(function*(){yield s();const e=yield re(void 0,null,(function*(){return b(d(yield p(I(o,((e,n)=>re(void 0,[e,n],(function*([e,n],t){return[e,yield v(t,n)]}))))),(e=>!S(e[1]))))})),n=yield re(void 0,null,(function*(){return i?(yield v(a,B))[_]:{}}));return S(e)&&f(n)?void 0:[e,n]}))),((e,n)=>re(void 0,null,(function*(){if(yield s(),f(n)){const[n,t]=e();yield h(n),yield E(t)}else{const[e,t]=n();yield h(e,!0),yield E(t,!0)}}))),t,l)},ue="json",ae="autoLoadIntervalSeconds",de="rowIdColumnName",ce="tableId",se="tableName",ve={mode:ue,[ae]:1},ye={load:0,save:0,[se]:n+"_values"},fe=(e,n,t,l)=>{const o=C();return R(e,((e,r)=>{const i=c(x(w(n,E(e)?{[t]:e}:e)),0,N(n));f(i[0])||l(r,i[0])||F(o,r,i)})),o};var he=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const Ee="pragma ",pe="data_version",me="schema_version",Te=(e,t,l,o,r,i)=>{let u,a;const[d,s,v,y]=(e=>{const t=(e=>w(ve,E(e)?{storeTableName:e}:null!=e?e:{}))(e),l=t[ae];if(t.mode==ue){const{storeTableName:e=n}=t;return[1,l,[e],$(e)]}const{tables:{load:o={},save:r={}}={},values:i={}}=t,u=c(x(w(ye,i)),0,N(ye)),a=u[2],d=$(a);return[0,l,[fe(o,{[ce]:null,[de]:B},ce,(e=>j(d,e)&&e==a)),fe(r,{[se]:null,[de]:B,deleteEmptyColumns:0,deleteEmptyTable:0},se,((e,n)=>j(d,n)&&n==a)),u],d]})(t);return(d?oe:ie)(e,i?(e,n)=>he(void 0,null,(function*(){return i(e,n),yield l(e,n)})):l,(e=>[setInterval((()=>he(void 0,null,(function*(){try{const n=(yield l(Ee+pe))[0][pe],t=(yield l(Ee+me))[0][me];n==(null!=u?u:u=n)&&t==(null!=a?a:a=t)||(e(),u=n,a=t)}catch(e){}}))),1e3*s),o((n=>y.has(n)?e():0))]),(([e,n])=>{clearInterval(e),u=a=null,r(n)}),v,T(y))},Oe=(e,n,t,l)=>Te(e,t,((e,...t)=>{return l=[e,...t],o=function*(e,t=[]){return yield n.execO(e,t)},new Promise(((e,n)=>{var t=e=>{try{i(o.next(e))}catch(e){n(e)}},r=e=>{try{i(o.throw(e))}catch(e){n(e)}},i=n=>n.done?e(n.value):Promise.resolve(n.value).then(t,r);i((o=o.apply(void 0,l)).next())}));var l,o}),(e=>n.onUpdate(((n,t,l)=>e(l)))),(e=>e()),l);export{Oe as createCrSqliteWasmPersister};
@@ -0,0 +1 @@
1
+ const e=e=>typeof e,n="tinybase",t=",",l=e(""),o=(e,n)=>e.repeat(n),r=(e,n="")=>e.join(n),i=(e,n)=>e.map(n),u=e=>e.length,a=e=>0==u(e),d=(e,n)=>e.filter(n),s=(e,n,t)=>e.slice(n,t),c=(e,...n)=>e.push(...n),v=Promise,y=(e,n)=>e instanceof n,f=e=>null==e,h=(e,n,t)=>f(e)?null==t?void 0:t():n(e),E=n=>e(n)==l,p=e=>{return n=function*(){return v.all(e)},new Promise(((e,t)=>{var l=e=>{try{r(n.next(e))}catch(e){t(e)}},o=e=>{try{r(n.throw(e))}catch(e){t(e)}},r=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,o);r((n=n.apply(void 0,null)).next())}));var n},m=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},T=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},A=(e,n)=>null==e?void 0:e.delete(n),L=Object,O=L.keys,P=L.freeze,b=(e=[])=>L.fromEntries(e),w=(...e)=>L.assign({},...e),R=(e,n)=>i(L.entries(e),(([e,t])=>n(t,e))),N=e=>L.values(e),x=e=>u(O(e)),C=e=>(e=>y(e,L)&&e.constructor==L)(e)&&0==x(e),S=e=>new Map(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},D=(e,n)=>null==e?void 0:e.get(n),I=(e,n)=>{var t;return i([...null!=(t=null==e?void 0:e.entries())?t:[]],(([e,t])=>n(t,e)))},F=(e,n,t)=>f(t)?(A(e,n),e):null==e?void 0:e.set(n,t),M=(e,n,t,l=F)=>(R(n,((n,l)=>t(e,l,n))),((e,n)=>{((e,n)=>{null==e||e.forEach(n)})(e,((e,t)=>n(t)))})(e,(t=>((e,n)=>!f(((e,n)=>h(e,(e=>e[n])))(e,n)))(n,t)?0:l(e,t))),e),$=e=>new Set(Array.isArray(e)||f(e)?e:[e]),j=(e,n)=>null==e?void 0:e.add(n),_="_",B="_id",H=e=>`"${e.replace(/"/g,'""')}"`;var W=Object.defineProperty,k=Object.getOwnPropertySymbols,J=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,Y=(e,n,t)=>n in e?W(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,q=(e,n)=>{for(var t in n||(n={}))J.call(n,t)&&Y(e,t,n[t]);if(k)for(var t of k(n))U.call(n,t)&&Y(e,t,n[t]);return e},z=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const K="FROM pragma_table_",V="WHERE",G=(e,n)=>{const l=S();return[()=>z(void 0,null,(function*(){return M(l,b(yield p(i(yield e("SELECT name "+K+"list WHERE schema='main'AND type='table'AND name IN("+X(n)+")",n),(n=>z(void 0,[n],(function*({name:n}){return[n,b(i(yield e("SELECT name,type "+K+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,t)=>{return F(l,n,M((i=S,m(o=l,r=n)||F(o,r,i()),D(o,r)),t,((e,n,t)=>{t!=D(e,n)&&F(e,n,t)}),((e,n)=>F(e,n))));var o,r,i}),((e,n)=>F(l,n)))})),(n,t)=>z(void 0,null,(function*(){return((e,n)=>!f(D(D(l,e),n)))(n,t)?b(d(i(yield e("SELECT*FROM"+H(n)),(e=>{return[e[t],(n=q({},e),l=t,delete n[l],n)];var n,l})),(([e,n])=>!f(e)&&!C(n)))):{}})),(n,o,u,s,v,y=!1)=>z(void 0,null,(function*(){const h=$();R(null!=u?u:{},(e=>i(O(null!=e?e:{}),(e=>j(h,e)))));const E=T(h);if(!y&&v&&a(E)&&m(l,n))return yield e("DROP TABLE"+H(n)),void F(l,n);if(a(E)||m(l,n)){const t=D(l,n),r=$(g(t));yield p([...i(E,(l=>z(void 0,null,(function*(){A(r,l)||(yield e(`ALTER TABLE${H(n)}ADD${H(l)}`),F(t,l,""))})))),...!y&&s?i(T(r),(l=>z(void 0,null,(function*(){l!=o&&(yield e(`ALTER TABLE${H(n)}DROP${H(l)}`),F(t,l))})))):[]])}else yield e(`CREATE TABLE${H(n)}(${H(o)} PRIMARY KEY ON CONFLICT REPLACE${r(i(E,(e=>t+H(e))))});`),F(l,n,S([[o,""],...i(E,(e=>[e,""]))]));if(y)f(u)?yield e("DELETE FROM"+H(n)+"WHERE 1"):yield p(R(u,((t,l)=>z(void 0,null,(function*(){f(t)?yield e("DELETE FROM"+H(n)+V+H(o)+"=?",[l]):a(E)||(yield Q(e,n,o,O(t),[l,...N(t)]))})))));else if(a(E))m(l,n)&&(yield e("DELETE FROM"+H(n)+"WHERE 1"));else{const t=d(g(D(l,n)),(e=>e!=o)),r=[],a=[];R(null!=u?u:{},((e,n)=>{c(r,n,...i(t,(n=>null==e?void 0:e[n]))),c(a,n)})),yield Q(e,n,o,t,r),yield e("DELETE FROM"+H(n)+V+H(o)+"NOT IN("+X(a)+")",a)}}))]},Q=(e,n,l,a,d)=>z(void 0,null,(function*(){return yield e("INSERT INTO"+H(n)+"("+H(l)+r(i(a,(e=>t+H(e))))+")VALUES"+o(`,(?${o(",?",u(a))})`,u(d)/(u(a)+1)).substring(1)+"ON CONFLICT("+H(l)+")DO UPDATE SET"+r(i(a,(e=>H(e)+"=excluded."+H(e))),t),d)})),X=e=>r(i(e,(()=>"?")),t),Z=JSON.parse;var ee=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const ne=(e,n,t,l,o)=>{let r,i,u,a=0,d=0,s=0;const v=[],y=e=>ee(void 0,null,(function*(){return 2!=a&&(a=1,yield E.schedule((()=>ee(void 0,null,(function*(){yield e(),a=0}))))),E})),E={load:(t,l)=>ee(void 0,null,(function*(){return yield y((()=>ee(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([t,l])}}))))})),startAutoLoad:(...t)=>ee(void 0,[...t],(function*(t={},o={}){return E.stopAutoLoad(),yield E.load(t,o),s=1,u=l(((t,l)=>ee(void 0,null,(function*(){return yield y((()=>ee(void 0,null,(function*(){var o;if(l)e.setTransactionChanges(l());else try{e.setContent(null!=(o=null==t?void 0:t())?o:yield n())}catch(e){}}))))})))),E})),stopAutoLoad:()=>(s&&(o(u),u=void 0,s=0),E),save:n=>ee(void 0,null,(function*(){return 1!=a&&(a=2,yield E.schedule((()=>ee(void 0,null,(function*(){try{yield t(e.getContent,n)}catch(e){}a=0}))))),E})),startAutoSave:()=>ee(void 0,null,(function*(){return yield E.stopAutoSave().save(),r=e.addDidFinishTransactionListener(((e,n)=>{const[t,l]=n();C(t)&&C(l)||E.save((()=>[t,l]))})),E})),stopAutoSave:()=>(h(r,e.delListener),E),schedule:(...e)=>ee(void 0,null,(function*(){return c(v,...e),yield ee(void 0,null,(function*(){if(!d){for(d=1;!f((e=v,i=e.shift()));)try{yield i()}catch(e){}d=0}var e})),E})),getStore:()=>e,destroy:()=>E.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return P(E)};var te=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const le="store",oe=(e,n,t,l,[o],r)=>{const[i,u,a]=G(n,r),d=ne(e,(()=>te(void 0,null,(function*(){var e;return yield i(),Z(null==(e=(yield u(o,B))[_])?void 0:e[le])}))),(e=>te(void 0,null,(function*(){return d.schedule(i,(()=>te(void 0,null,(function*(){var n;yield a(o,B,{[_]:{[le]:(n=e(),JSON.stringify(n,((e,n)=>y(n,Map)?L.fromEntries([...n]):n)))}},!0,!0)}))))}))),t,l);return d};var re=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const ie=(e,n,t,l,[o,r,[i,u,a]],s)=>{const[c,v,y]=G(n,s),h=(e,n)=>re(void 0,null,(function*(){return yield p(I(r,((t,l)=>re(void 0,[t,l],(function*([t,l,o,r],i){const u=e[i];n&&void 0===u||(yield y(t,l,u,o,r,n))})))))})),E=(e,n)=>re(void 0,null,(function*(){return u?yield y(a,B,{[_]:e},!0,!0,n):null}));return ne(e,(()=>re(void 0,null,(function*(){yield c();const e=yield re(void 0,null,(function*(){return b(d(yield p(I(o,((e,n)=>re(void 0,[e,n],(function*([e,n],t){return[e,yield v(t,n)]}))))),(e=>!C(e[1]))))})),n=yield re(void 0,null,(function*(){return i?(yield v(a,B))[_]:{}}));return C(e)&&f(n)?void 0:[e,n]}))),((e,n)=>re(void 0,null,(function*(){if(yield c(),f(n)){const[n,t]=e();yield h(n),yield E(t)}else{const[e,t]=n();yield h(e,!0),yield E(t,!0)}}))),t,l)},ue="json",ae="autoLoadIntervalSeconds",de="rowIdColumnName",se="tableId",ce="tableName",ve={mode:ue,[ae]:1},ye={load:0,save:0,[ce]:n+"_values"},fe=(e,n,t,l)=>{const o=S();return R(e,((e,r)=>{const i=s(N(w(n,E(e)?{[t]:e}:e)),0,x(n));f(i[0])||l(r,i[0])||F(o,r,i)})),o};var he=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const Ee="pragma ",pe="data_version",me="schema_version",Te=(e,t,l,o,r,i)=>{let u,a;const[d,c,v,y]=(e=>{const t=(e=>w(ve,E(e)?{storeTableName:e}:null!=e?e:{}))(e),l=t[ae];if(t.mode==ue){const{storeTableName:e=n}=t;return[1,l,[e],$(e)]}const{tables:{load:o={},save:r={}}={},values:i={}}=t,u=s(N(w(ye,i)),0,x(ye)),a=u[2],d=$(a);return[0,l,[fe(o,{[se]:null,[de]:B},se,(e=>j(d,e)&&e==a)),fe(r,{[ce]:null,[de]:B,deleteEmptyColumns:0,deleteEmptyTable:0},ce,((e,n)=>j(d,n)&&n==a)),u],d]})(t);return(d?oe:ie)(e,i?(e,n)=>he(void 0,null,(function*(){return i(e,n),yield l(e,n)})):l,(e=>[setInterval((()=>he(void 0,null,(function*(){try{const n=(yield l(Ee+pe))[0][pe],t=(yield l(Ee+me))[0][me];n==(null!=u?u:u=n)&&t==(null!=a?a:a=t)||(e(),u=n,a=t)}catch(e){}}))),1e3*c),o((n=>y.has(n)?e():0))]),(([e,n])=>{clearInterval(e),u=a=null,r(n)}),v,T(y))},Ae=(e,n,t,l)=>Te(e,t,((e,...t)=>{return l=[e,...t],o=function*(e,t=[]){return(yield n.execAsync([{sql:e,args:t}],!1))[0].rows},new Promise(((e,n)=>{var t=e=>{try{i(o.next(e))}catch(e){n(e)}},r=e=>{try{i(o.throw(e))}catch(e){n(e)}},i=n=>n.done?e(n.value):Promise.resolve(n.value).then(t,r);i((o=o.apply(void 0,l)).next())}));var l,o}),(e=>n.onDatabaseChange((({tableName:n})=>e(n)))),(e=>e.remove()),l);export{Ae as createExpoSqlitePersister};
@@ -1 +1 @@
1
- const e=e=>typeof e,n="tinybase",t=",",l=e(""),r=(e,n="")=>e.join(n),o=(e,n)=>e.map(n),i=e=>e.length,u=e=>0==i(e),a=(e,n)=>e.filter(n),d=(e,n,t)=>e.slice(n,t),c=(e,...n)=>e.push(...n),s=Promise,v=(e,n)=>e instanceof n,y=e=>null==e,f=(e,n,t)=>y(e)?null==t?void 0:t():n(e),p=n=>e(n)==l,h=e=>{return n=function*(){return s.all(e)},new Promise(((e,t)=>{var l=e=>{try{o(n.next(e))}catch(e){t(e)}},r=e=>{try{o(n.throw(e))}catch(e){t(e)}},o=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,r);o((n=n.apply(void 0,null)).next())}));var n},m=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},E=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},b=(e,n)=>null==e?void 0:e.delete(n),O=Object,P=O.keys,w=O.freeze,A=(e=[])=>O.fromEntries(e),T=(...e)=>O.assign({},...e),L=(e,n)=>(delete e[n],e),S=(e,n)=>o(O.entries(e),(([e,t])=>n(t,e))),x=e=>O.values(e),N=e=>i(P(e)),C=e=>(e=>v(e,O)&&e.constructor==O)(e)&&0==N(e),R=e=>new Map(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},I=(e,n)=>null==e?void 0:e.get(n),_=(e,n)=>{var t;return o([...null!=(t=null==e?void 0:e.entries())?t:[]],(([e,t])=>n(t,e)))},j=(e,n,t)=>y(t)?(b(e,n),e):null==e?void 0:e.set(n,t),D=(e,n,t,l=j)=>(S(n,((n,l)=>t(e,l,n))),((e,n)=>{((e,n)=>{null==e||e.forEach(n)})(e,((e,t)=>n(t)))})(e,(t=>((e,n)=>!y(((e,n)=>f(e,(e=>e[n])))(e,n)))(n,t)?0:l(e,t))),e),$="_id",M=e=>`"${e.replace(/"/g,'""')}"`,F=e=>new Set(Array.isArray(e)||y(e)?e:[e]),k=(e,n)=>null==e?void 0:e.add(n);var B=Object.defineProperty,q=Object.getOwnPropertySymbols,H=Object.prototype.hasOwnProperty,J=Object.prototype.propertyIsEnumerable,U=(e,n,t)=>n in e?B(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,V=(e,n)=>{for(var t in n||(n={}))H.call(n,t)&&U(e,t,n[t]);if(q)for(var t of q(n))J.call(n,t)&&U(e,t,n[t]);return e},W=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const Y="SELECT*FROM",z="FROM pragma_table_",K="WHERE",G=(e,n)=>{const l=R(),d=(e,n)=>!y(I(I(l,e),n)),s=(n,d,s,v,y)=>W(void 0,null,(function*(){const f=F();S(null!=y?y:{},(e=>o(P(e),(e=>k(f,e)))));const p=E(f);if(u(p)&&m(l,n)&&v)return yield e("DROP TABLE"+M(n)),void j(l,n);if(u(p)||m(l,n)){const t=I(l,n),r=F(g(t));yield h([...o(p,(l=>W(void 0,null,(function*(){b(r,l)||(yield e(`ALTER TABLE${M(n)}ADD${M(l)}`),j(t,l,""))})))),...s?o(E(r),(l=>W(void 0,null,(function*(){l!=d&&(yield e(`ALTER TABLE${M(n)}DROP${M(l)}`),j(t,l))})))):[]])}else yield e(`CREATE TABLE${M(n)}(${M(d)} PRIMARY KEY ON CONFLICT REPLACE${r(o(p,(e=>t+M(e))))});`),j(l,n,R([[d,""],...o(p,(e=>[e,""]))]));if(u(p))m(l,n)&&(yield e("DELETE FROM"+M(n)));else{const u=[],s=[],v=[],f=a(g(I(l,n)),(e=>e!=d));S(y,((e,n)=>{var t;c(u,`(?${t=i(f),",?".repeat(t)})`),c(s,n,...o(f,(n=>e[n]))),c(v,n)})),yield e("INSERT INTO"+M(n)+"("+M(d)+r(o(f,(e=>t+M(e))))+")VALUES"+r(u,t)+"ON CONFLICT("+M(d)+")DO UPDATE SET"+r(o(f,(e=>M(e)+"=excluded."+M(e))),t),s),yield e("DELETE FROM"+M(n)+K+M(d)+"NOT IN("+Q(v)+")",v)}}));return[()=>W(void 0,null,(function*(){return D(l,A(yield h(o(yield e("SELECT name "+z+"list WHERE schema='main'AND type='table'AND name IN("+Q(n)+")",n),(n=>W(void 0,[n],(function*({name:n}){return[n,A(o(yield e("SELECT name,type "+z+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,t)=>{return j(l,n,D((i=R,m(r=l,o=n)||j(r,o,i()),I(r,o)),t,((e,n,t)=>{t!=I(e,n)&&j(e,n,t)}),((e,n)=>j(e,n))));var r,o,i}),((e,n)=>j(l,n)))})),(n,t)=>W(void 0,null,(function*(){const l=d(n,t)?yield e(Y+M(n)+K+M(t)+"=?",["_"]):[];return u(l)?null:L(l[0],t)})),(e,n,t,l)=>W(void 0,null,(function*(){return yield s(e,n,!0,!0,{[t]:l})})),(n,t)=>W(void 0,null,(function*(){return d(n,t)?A(a(o(yield e(Y+M(n)),(e=>[e[t],L(V({},e),t)])),(([e,n])=>!y(e)&&!C(n)))):{}})),s]},Q=e=>r(o(e,(()=>"?")),t),X=JSON.parse;var Z=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const ee=(e,n,t,l,r)=>{let o,i,u,a=0,d=0,s=0;const v=[],p=e=>Z(void 0,null,(function*(){return 2!=a&&(a=1,yield h.schedule((()=>Z(void 0,null,(function*(){yield e(),a=0}))))),h})),h={load:(t,l)=>Z(void 0,null,(function*(){return yield p((()=>Z(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([t,l])}}))))})),startAutoLoad:(...t)=>Z(void 0,[...t],(function*(t={},r={}){return h.stopAutoLoad(),yield h.load(t,r),s=1,u=l(((t,l)=>Z(void 0,null,(function*(){return yield p((()=>Z(void 0,null,(function*(){var r;if(l)e.setTransactionChanges(l());else try{e.setContent(null!=(r=null==t?void 0:t())?r:yield n())}catch(e){}}))))})))),h})),stopAutoLoad:()=>(s&&(r(u),u=void 0,s=0),h),save:n=>Z(void 0,null,(function*(){return 1!=a&&(a=2,yield h.schedule((()=>Z(void 0,null,(function*(){try{yield t(e.getContent,n)}catch(e){}a=0}))))),h})),startAutoSave:()=>Z(void 0,null,(function*(){return yield h.stopAutoSave().save(),o=e.addDidFinishTransactionListener(((e,n)=>{const[t,l]=n();C(t)&&C(l)||h.save((()=>[t,l]))})),h})),stopAutoSave:()=>(f(o,e.delListener),h),schedule:(...e)=>Z(void 0,null,(function*(){return c(v,...e),yield Z(void 0,null,(function*(){if(!d){for(d=1;!y((e=v,i=e.shift()));)try{yield i()}catch(e){}d=0}var e})),h})),getStore:()=>e,destroy:()=>h.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return w(h)};var ne=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const te="store",le=(e,n,t,l,[r],o)=>{const[i,u,a]=G(n,o),d=ee(e,(()=>ne(void 0,null,(function*(){var e;return yield i(),X((null!=(e=yield u(r,$))?e:{})[te])}))),(e=>ne(void 0,null,(function*(){return d.schedule(i,(()=>ne(void 0,null,(function*(){var n;yield a(r,$,"_",{[te]:(n=e(),JSON.stringify(n,((e,n)=>v(n,Map)?O.fromEntries([...n]):n)))})}))))}))),t,l);return d};var re=(e,n,t)=>new Promise(((l,r)=>{var o=e=>{try{u(t.next(e))}catch(e){r(e)}},i=e=>{try{u(t.throw(e))}catch(e){r(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(o,i);u((t=t.apply(e,n)).next())}));const oe=(e,n,t,l,[r,o,[i,u,d]],c)=>{const[s,v,f,p,m]=G(n,c);return ee(e,(()=>re(void 0,null,(function*(){yield s();const e=yield re(void 0,null,(function*(){return A(a(yield h(_(r,((e,n)=>re(void 0,[e,n],(function*([e,n],t){return[e,yield p(t,n)]}))))),(e=>!C(e[1]))))})),n=yield re(void 0,null,(function*(){return i?yield v(d,$):{}}));return C(e)&&y(n)?void 0:[e,n]}))),(e=>re(void 0,null,(function*(){const[n,t]=e();yield s(),yield(e=>re(void 0,null,(function*(){return yield h(_(o,((n,t)=>re(void 0,[n,t],(function*([n,t,l,r],o){return yield m(n,t,l,r,e[o])})))))})))(n),yield(e=>re(void 0,null,(function*(){return u?yield f(d,$,"_",e):null})))(t)}))),t,l)},ie="json",ue="autoLoadIntervalSeconds",ae="rowIdColumnName",de="tableId",ce="tableName",se={mode:ie,[ue]:1},ve={load:0,save:0,[ce]:n+"_values"},ye=(e,n,t,l)=>{const r=R();return S(e,((e,o)=>{const i=d(x(T(n,p(e)?{[t]:e}:e)),0,N(n));y(i[0])||l(o,i[0])||j(r,o,i)})),r},fe="pragma ",pe="data_version",he="schema_version",me=(e,t,l,r,o)=>{let i,u;const[a,c,s,v]=(e=>{const t=(e=>T(se,p(e)?{storeTableName:e}:null!=e?e:{}))(e),l=t[ue];if(t.mode==ie){const{storeTableName:e=n}=t;return[1,l,[e],F(e)]}const{tables:{load:r={},save:o={}}={},values:i={}}=t,u=d(x(T(ve,i)),0,N(ve)),a=u[2],c=F(a);return[0,l,[ye(r,{[de]:null,[ae]:$},de,(e=>k(c,e)&&e==a)),ye(o,{[ce]:null,[ae]:$,deleteEmptyColumns:0,deleteEmptyTable:0},ce,((e,n)=>k(c,n)&&n==a)),u],c]})(t);return(a?le:oe)(e,l,(e=>[setInterval((()=>{return n=function*(){try{const n=(yield l(fe+pe))[0][pe],t=(yield l(fe+he))[0][he];n==(null!=i?i:i=n)&&t==(null!=u?u:u=t)||(e(),i=n,u=t)}catch(e){}},new Promise(((e,t)=>{var l=e=>{try{o(n.next(e))}catch(e){t(e)}},r=e=>{try{o(n.throw(e))}catch(e){t(e)}},o=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,r);o((n=n.apply(void 0,null)).next())}));var n}),1e3*c),r((n=>v.has(n)?e():0))]),(([e,n])=>{clearInterval(e),i=u=null,o(n)}),s,E(v))};var Ee=Object.defineProperty,be=Object.getOwnPropertySymbols,Oe=Object.prototype.hasOwnProperty,Pe=Object.prototype.propertyIsEnumerable,we=(e,n,t)=>n in e?Ee(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;const Ae=(e,n,t,l)=>me(e,l,((e,...n)=>{return l=[e,...n],r=function*(e,n=[]){return t.exec(e,{bind:n,rowMode:"object",returnValue:"resultRows"}).map((e=>((e,n)=>{for(var t in n||(n={}))Oe.call(n,t)&&we(e,t,n[t]);if(be)for(var t of be(n))Pe.call(n,t)&&we(e,t,n[t]);return e})({},e)))},new Promise(((e,n)=>{var t=e=>{try{i(r.next(e))}catch(e){n(e)}},o=e=>{try{i(r.throw(e))}catch(e){n(e)}},i=n=>n.done?e(n.value):Promise.resolve(n.value).then(t,o);i((r=r.apply(void 0,l)).next())}));var l,r}),(e=>n.capi.sqlite3_update_hook(t,((n,t,l,r)=>e(r)),0)),(()=>n.capi.sqlite3_update_hook(t,(()=>0),0)));export{Ae as createSqliteWasmPersister};
1
+ const e=e=>typeof e,n="tinybase",t=",",l=e(""),o=(e,n)=>e.repeat(n),r=(e,n="")=>e.join(n),i=(e,n)=>e.map(n),u=e=>e.length,a=e=>0==u(e),d=(e,n)=>e.filter(n),c=(e,n,t)=>e.slice(n,t),s=(e,...n)=>e.push(...n),v=Promise,y=(e,n)=>e instanceof n,f=e=>null==e,p=(e,n,t)=>f(e)?null==t?void 0:t():n(e),h=n=>e(n)==l,E=e=>{return n=function*(){return v.all(e)},new Promise(((e,t)=>{var l=e=>{try{r(n.next(e))}catch(e){t(e)}},o=e=>{try{r(n.throw(e))}catch(e){t(e)}},r=n=>n.done?e(n.value):Promise.resolve(n.value).then(l,o);r((n=n.apply(void 0,null)).next())}));var n},m=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},b=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},O=(e,n)=>null==e?void 0:e.delete(n),P=Object,T=P.keys,w=P.freeze,A=(e=[])=>P.fromEntries(e),L=(...e)=>P.assign({},...e),R=(e,n)=>i(P.entries(e),(([e,t])=>n(t,e))),S=e=>P.values(e),x=e=>u(T(e)),N=e=>(e=>y(e,P)&&e.constructor==P)(e)&&0==x(e),g=e=>new Map(e),C=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},I=(e,n)=>null==e?void 0:e.get(n),D=(e,n)=>{var t;return i([...null!=(t=null==e?void 0:e.entries())?t:[]],(([e,t])=>n(t,e)))},j=(e,n,t)=>f(t)?(O(e,n),e):null==e?void 0:e.set(n,t),_=(e,n,t,l=j)=>(R(n,((n,l)=>t(e,l,n))),((e,n)=>{((e,n)=>{null==e||e.forEach(n)})(e,((e,t)=>n(t)))})(e,(t=>((e,n)=>!f(((e,n)=>p(e,(e=>e[n])))(e,n)))(n,t)?0:l(e,t))),e),M=e=>new Set(Array.isArray(e)||f(e)?e:[e]),F=(e,n)=>null==e?void 0:e.add(n),$="_",k="_id",B=e=>`"${e.replace(/"/g,'""')}"`;var H=Object.defineProperty,W=Object.getOwnPropertySymbols,q=Object.prototype.hasOwnProperty,J=Object.prototype.propertyIsEnumerable,U=(e,n,t)=>n in e?H(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,V=(e,n)=>{for(var t in n||(n={}))q.call(n,t)&&U(e,t,n[t]);if(W)for(var t of W(n))J.call(n,t)&&U(e,t,n[t]);return e},Y=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const z="FROM pragma_table_",K="WHERE",G=(e,n)=>{const l=g();return[()=>Y(void 0,null,(function*(){return _(l,A(yield E(i(yield e("SELECT name "+z+"list WHERE schema='main'AND type='table'AND name IN("+X(n)+")",n),(n=>Y(void 0,[n],(function*({name:n}){return[n,A(i(yield e("SELECT name,type "+z+"info(?)",[n]),(({name:e,type:n})=>[e,n])))]})))))),((e,n,t)=>{return j(l,n,_((i=g,m(o=l,r=n)||j(o,r,i()),I(o,r)),t,((e,n,t)=>{t!=I(e,n)&&j(e,n,t)}),((e,n)=>j(e,n))));var o,r,i}),((e,n)=>j(l,n)))})),(n,t)=>Y(void 0,null,(function*(){return((e,n)=>!f(I(I(l,e),n)))(n,t)?A(d(i(yield e("SELECT*FROM"+B(n)),(e=>{return[e[t],(n=V({},e),l=t,delete n[l],n)];var n,l})),(([e,n])=>!f(e)&&!N(n)))):{}})),(n,o,u,c,v,y=!1)=>Y(void 0,null,(function*(){const p=M();R(null!=u?u:{},(e=>i(T(null!=e?e:{}),(e=>F(p,e)))));const h=b(p);if(!y&&v&&a(h)&&m(l,n))return yield e("DROP TABLE"+B(n)),void j(l,n);if(a(h)||m(l,n)){const t=I(l,n),r=M(C(t));yield E([...i(h,(l=>Y(void 0,null,(function*(){O(r,l)||(yield e(`ALTER TABLE${B(n)}ADD${B(l)}`),j(t,l,""))})))),...!y&&c?i(b(r),(l=>Y(void 0,null,(function*(){l!=o&&(yield e(`ALTER TABLE${B(n)}DROP${B(l)}`),j(t,l))})))):[]])}else yield e(`CREATE TABLE${B(n)}(${B(o)} PRIMARY KEY ON CONFLICT REPLACE${r(i(h,(e=>t+B(e))))});`),j(l,n,g([[o,""],...i(h,(e=>[e,""]))]));if(y)f(u)?yield e("DELETE FROM"+B(n)+"WHERE 1"):yield E(R(u,((t,l)=>Y(void 0,null,(function*(){f(t)?yield e("DELETE FROM"+B(n)+K+B(o)+"=?",[l]):a(h)||(yield Q(e,n,o,T(t),[l,...S(t)]))})))));else if(a(h))m(l,n)&&(yield e("DELETE FROM"+B(n)+"WHERE 1"));else{const t=d(C(I(l,n)),(e=>e!=o)),r=[],a=[];R(null!=u?u:{},((e,n)=>{s(r,n,...i(t,(n=>null==e?void 0:e[n]))),s(a,n)})),yield Q(e,n,o,t,r),yield e("DELETE FROM"+B(n)+K+B(o)+"NOT IN("+X(a)+")",a)}}))]},Q=(e,n,l,a,d)=>Y(void 0,null,(function*(){return yield e("INSERT INTO"+B(n)+"("+B(l)+r(i(a,(e=>t+B(e))))+")VALUES"+o(`,(?${o(",?",u(a))})`,u(d)/(u(a)+1)).substring(1)+"ON CONFLICT("+B(l)+")DO UPDATE SET"+r(i(a,(e=>B(e)+"=excluded."+B(e))),t),d)})),X=e=>r(i(e,(()=>"?")),t),Z=JSON.parse;var ee=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const ne=(e,n,t,l,o)=>{let r,i,u,a=0,d=0,c=0;const v=[],y=e=>ee(void 0,null,(function*(){return 2!=a&&(a=1,yield h.schedule((()=>ee(void 0,null,(function*(){yield e(),a=0}))))),h})),h={load:(t,l)=>ee(void 0,null,(function*(){return yield y((()=>ee(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([t,l])}}))))})),startAutoLoad:(...t)=>ee(void 0,[...t],(function*(t={},o={}){return h.stopAutoLoad(),yield h.load(t,o),c=1,u=l(((t,l)=>ee(void 0,null,(function*(){return yield y((()=>ee(void 0,null,(function*(){var o;if(l)e.setTransactionChanges(l());else try{e.setContent(null!=(o=null==t?void 0:t())?o:yield n())}catch(e){}}))))})))),h})),stopAutoLoad:()=>(c&&(o(u),u=void 0,c=0),h),save:n=>ee(void 0,null,(function*(){return 1!=a&&(a=2,yield h.schedule((()=>ee(void 0,null,(function*(){try{yield t(e.getContent,n)}catch(e){}a=0}))))),h})),startAutoSave:()=>ee(void 0,null,(function*(){return yield h.stopAutoSave().save(),r=e.addDidFinishTransactionListener(((e,n)=>{const[t,l]=n();N(t)&&N(l)||h.save((()=>[t,l]))})),h})),stopAutoSave:()=>(p(r,e.delListener),h),schedule:(...e)=>ee(void 0,null,(function*(){return s(v,...e),yield ee(void 0,null,(function*(){if(!d){for(d=1;!f((e=v,i=e.shift()));)try{yield i()}catch(e){}d=0}var e})),h})),getStore:()=>e,destroy:()=>h.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return w(h)};var te=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const le="store",oe=(e,n,t,l,[o],r)=>{const[i,u,a]=G(n,r),d=ne(e,(()=>te(void 0,null,(function*(){var e;return yield i(),Z(null==(e=(yield u(o,k))[$])?void 0:e[le])}))),(e=>te(void 0,null,(function*(){return d.schedule(i,(()=>te(void 0,null,(function*(){var n;yield a(o,k,{[$]:{[le]:(n=e(),JSON.stringify(n,((e,n)=>y(n,Map)?P.fromEntries([...n]):n)))}},!0,!0)}))))}))),t,l);return d};var re=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const ie=(e,n,t,l,[o,r,[i,u,a]],c)=>{const[s,v,y]=G(n,c),p=(e,n)=>re(void 0,null,(function*(){return yield E(D(r,((t,l)=>re(void 0,[t,l],(function*([t,l,o,r],i){const u=e[i];n&&void 0===u||(yield y(t,l,u,o,r,n))})))))})),h=(e,n)=>re(void 0,null,(function*(){return u?yield y(a,k,{[$]:e},!0,!0,n):null}));return ne(e,(()=>re(void 0,null,(function*(){yield s();const e=yield re(void 0,null,(function*(){return A(d(yield E(D(o,((e,n)=>re(void 0,[e,n],(function*([e,n],t){return[e,yield v(t,n)]}))))),(e=>!N(e[1]))))})),n=yield re(void 0,null,(function*(){return i?(yield v(a,k))[$]:{}}));return N(e)&&f(n)?void 0:[e,n]}))),((e,n)=>re(void 0,null,(function*(){if(yield s(),f(n)){const[n,t]=e();yield p(n),yield h(t)}else{const[e,t]=n();yield p(e,!0),yield h(t,!0)}}))),t,l)},ue="json",ae="autoLoadIntervalSeconds",de="rowIdColumnName",ce="tableId",se="tableName",ve={mode:ue,[ae]:1},ye={load:0,save:0,[se]:n+"_values"},fe=(e,n,t,l)=>{const o=g();return R(e,((e,r)=>{const i=c(S(L(n,h(e)?{[t]:e}:e)),0,x(n));f(i[0])||l(r,i[0])||j(o,r,i)})),o};var pe=(e,n,t)=>new Promise(((l,o)=>{var r=e=>{try{u(t.next(e))}catch(e){o(e)}},i=e=>{try{u(t.throw(e))}catch(e){o(e)}},u=e=>e.done?l(e.value):Promise.resolve(e.value).then(r,i);u((t=t.apply(e,n)).next())}));const he="pragma ",Ee="data_version",me="schema_version",be=(e,t,l,o,r,i)=>{let u,a;const[d,s,v,y]=(e=>{const t=(e=>L(ve,h(e)?{storeTableName:e}:null!=e?e:{}))(e),l=t[ae];if(t.mode==ue){const{storeTableName:e=n}=t;return[1,l,[e],M(e)]}const{tables:{load:o={},save:r={}}={},values:i={}}=t,u=c(S(L(ye,i)),0,x(ye)),a=u[2],d=M(a);return[0,l,[fe(o,{[ce]:null,[de]:k},ce,(e=>F(d,e)&&e==a)),fe(r,{[se]:null,[de]:k,deleteEmptyColumns:0,deleteEmptyTable:0},se,((e,n)=>F(d,n)&&n==a)),u],d]})(t);return(d?oe:ie)(e,i?(e,n)=>pe(void 0,null,(function*(){return i(e,n),yield l(e,n)})):l,(e=>[setInterval((()=>pe(void 0,null,(function*(){try{const n=(yield l(he+Ee))[0][Ee],t=(yield l(he+me))[0][me];n==(null!=u?u:u=n)&&t==(null!=a?a:a=t)||(e(),u=n,a=t)}catch(e){}}))),1e3*s),o((n=>y.has(n)?e():0))]),(([e,n])=>{clearInterval(e),u=a=null,r(n)}),v,b(y))};var Oe=Object.defineProperty,Pe=Object.getOwnPropertySymbols,Te=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable,Ae=(e,n,t)=>n in e?Oe(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;const Le=(e,n,t,l,o)=>be(e,l,((e,...n)=>{return l=[e,...n],o=function*(e,n=[]){return t.exec(e,{bind:n,rowMode:"object",returnValue:"resultRows"}).map((e=>((e,n)=>{for(var t in n||(n={}))Te.call(n,t)&&Ae(e,t,n[t]);if(Pe)for(var t of Pe(n))we.call(n,t)&&Ae(e,t,n[t]);return e})({},e)))},new Promise(((e,n)=>{var t=e=>{try{i(o.next(e))}catch(e){n(e)}},r=e=>{try{i(o.throw(e))}catch(e){n(e)}},i=n=>n.done?e(n.value):Promise.resolve(n.value).then(t,r);i((o=o.apply(void 0,l)).next())}));var l,o}),(e=>n.capi.sqlite3_update_hook(t,((n,t,l,o)=>e(o)),0)),(()=>n.capi.sqlite3_update_hook(t,(()=>0),0)),o);export{Le as createSqliteWasmPersister};