@verdant-web/store 4.0.0 → 4.1.0-alpha.0

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 (171) hide show
  1. package/LICENSE +21 -650
  2. package/dist/bundle/index.js +11 -11
  3. package/dist/bundle/index.js.map +4 -4
  4. package/dist/esm/__tests__/fixtures/testStorage.d.ts +1 -2
  5. package/dist/esm/__tests__/fixtures/testStorage.js +3 -5
  6. package/dist/esm/__tests__/fixtures/testStorage.js.map +1 -1
  7. package/dist/esm/client/Client.d.ts +6 -2
  8. package/dist/esm/client/Client.js +18 -6
  9. package/dist/esm/client/Client.js.map +1 -1
  10. package/dist/esm/client/ClientDescriptor.d.ts +7 -5
  11. package/dist/esm/client/ClientDescriptor.js +18 -4
  12. package/dist/esm/client/ClientDescriptor.js.map +1 -1
  13. package/dist/esm/context/ShutdownHandler.d.ts +8 -0
  14. package/dist/esm/context/ShutdownHandler.js +24 -0
  15. package/dist/esm/context/ShutdownHandler.js.map +1 -0
  16. package/dist/esm/context/context.d.ts +15 -4
  17. package/dist/esm/entities/EntityStore.js +6 -3
  18. package/dist/esm/entities/EntityStore.js.map +1 -1
  19. package/dist/esm/files/EntityFile.d.ts +1 -0
  20. package/dist/esm/files/EntityFile.js +16 -11
  21. package/dist/esm/files/EntityFile.js.map +1 -1
  22. package/dist/esm/files/FileManager.d.ts +1 -3
  23. package/dist/esm/files/FileManager.js +12 -10
  24. package/dist/esm/files/FileManager.js.map +1 -1
  25. package/dist/esm/index.d.ts +4 -5
  26. package/dist/esm/index.js +2 -3
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/internal.d.ts +6 -0
  29. package/dist/esm/internal.js +5 -0
  30. package/dist/esm/internal.js.map +1 -0
  31. package/dist/esm/persistence/MessageCreator.d.ts +3 -1
  32. package/dist/esm/persistence/MessageCreator.js +58 -55
  33. package/dist/esm/persistence/MessageCreator.js.map +1 -1
  34. package/dist/esm/persistence/PersistenceFiles.d.ts +8 -21
  35. package/dist/esm/persistence/PersistenceFiles.js +44 -30
  36. package/dist/esm/persistence/PersistenceFiles.js.map +1 -1
  37. package/dist/esm/persistence/PersistenceMetadata.d.ts +12 -11
  38. package/dist/esm/persistence/PersistenceMetadata.js +201 -137
  39. package/dist/esm/persistence/PersistenceMetadata.js.map +1 -1
  40. package/dist/esm/persistence/PersistenceQueries.d.ts +10 -11
  41. package/dist/esm/persistence/PersistenceQueries.js +33 -5
  42. package/dist/esm/persistence/PersistenceQueries.js.map +1 -1
  43. package/dist/esm/persistence/PersistenceRebaser.d.ts +5 -9
  44. package/dist/esm/persistence/PersistenceRebaser.js +63 -47
  45. package/dist/esm/persistence/PersistenceRebaser.js.map +1 -1
  46. package/dist/esm/persistence/idb/IdbService.d.ts +0 -1
  47. package/dist/esm/persistence/idb/IdbService.js +28 -16
  48. package/dist/esm/persistence/idb/IdbService.js.map +1 -1
  49. package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.d.ts +11 -31
  50. package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.js +31 -36
  51. package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.js.map +1 -1
  52. package/dist/esm/persistence/idb/idbPersistence.d.ts +17 -9
  53. package/dist/esm/persistence/idb/idbPersistence.js +80 -39
  54. package/dist/esm/persistence/idb/idbPersistence.js.map +1 -1
  55. package/dist/esm/persistence/idb/metadata/IdbMetadataDb.d.ts +7 -10
  56. package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js +45 -71
  57. package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js.map +1 -1
  58. package/dist/esm/persistence/idb/metadata/openMetadataDatabase.d.ts +1 -12
  59. package/dist/esm/persistence/idb/metadata/openMetadataDatabase.js +3 -56
  60. package/dist/esm/persistence/idb/metadata/openMetadataDatabase.js.map +1 -1
  61. package/dist/esm/persistence/idb/queries/{IdbQueryDb.d.ts → IdbDocumentDb.d.ts} +7 -13
  62. package/dist/esm/persistence/idb/queries/{IdbQueryDb.js → IdbDocumentDb.js} +15 -32
  63. package/dist/esm/persistence/idb/queries/IdbDocumentDb.js.map +1 -0
  64. package/dist/esm/persistence/idb/queries/migration/db.d.ts +3 -5
  65. package/dist/esm/persistence/idb/queries/migration/db.js +13 -28
  66. package/dist/esm/persistence/idb/queries/migration/db.js.map +1 -1
  67. package/dist/esm/persistence/idb/util.d.ts +8 -4
  68. package/dist/esm/persistence/idb/util.js +64 -21
  69. package/dist/esm/persistence/idb/util.js.map +1 -1
  70. package/dist/esm/persistence/interfaces.d.ts +68 -75
  71. package/dist/esm/persistence/{idb/queries/migration → migration}/engine.d.ts +4 -7
  72. package/dist/esm/persistence/{idb/queries/migration → migration}/engine.js +18 -10
  73. package/dist/esm/persistence/migration/engine.js.map +1 -0
  74. package/dist/esm/persistence/migration/finalize.d.ts +9 -0
  75. package/dist/esm/persistence/migration/finalize.js +75 -0
  76. package/dist/esm/persistence/migration/finalize.js.map +1 -0
  77. package/dist/esm/persistence/migration/migrate.d.ts +12 -0
  78. package/dist/esm/persistence/migration/migrate.js +89 -0
  79. package/dist/esm/persistence/migration/migrate.js.map +1 -0
  80. package/dist/esm/persistence/migration/paths.js.map +1 -0
  81. package/dist/esm/persistence/migration/paths.test.js.map +1 -0
  82. package/dist/esm/persistence/migration/types.d.ts +3 -0
  83. package/dist/esm/persistence/migration/types.js.map +1 -0
  84. package/dist/esm/persistence/persistence.js +25 -15
  85. package/dist/esm/persistence/persistence.js.map +1 -1
  86. package/dist/esm/queries/FindAllQuery.js +1 -1
  87. package/dist/esm/queries/FindAllQuery.js.map +1 -1
  88. package/dist/esm/queries/FindInfiniteQuery.js +2 -2
  89. package/dist/esm/queries/FindInfiniteQuery.js.map +1 -1
  90. package/dist/esm/queries/FindOneQuery.js +1 -1
  91. package/dist/esm/queries/FindOneQuery.js.map +1 -1
  92. package/dist/esm/queries/FindPageQuery.js +1 -1
  93. package/dist/esm/queries/FindPageQuery.js.map +1 -1
  94. package/dist/esm/sync/FileSync.js +3 -3
  95. package/dist/esm/sync/FileSync.js.map +1 -1
  96. package/dist/esm/sync/PushPullSync.d.ts +2 -3
  97. package/dist/esm/sync/PushPullSync.js +4 -2
  98. package/dist/esm/sync/PushPullSync.js.map +1 -1
  99. package/dist/esm/sync/ServerSyncEndpointProvider.d.ts +3 -7
  100. package/dist/esm/sync/ServerSyncEndpointProvider.js +3 -2
  101. package/dist/esm/sync/ServerSyncEndpointProvider.js.map +1 -1
  102. package/dist/esm/sync/Sync.d.ts +6 -1
  103. package/dist/esm/sync/Sync.js +12 -4
  104. package/dist/esm/sync/Sync.js.map +1 -1
  105. package/dist/esm/sync/WebSocketSync.js +10 -4
  106. package/dist/esm/sync/WebSocketSync.js.map +1 -1
  107. package/package.json +6 -2
  108. package/src/__tests__/fixtures/testStorage.ts +6 -6
  109. package/src/client/Client.ts +26 -8
  110. package/src/client/ClientDescriptor.ts +27 -9
  111. package/src/context/ShutdownHandler.ts +26 -0
  112. package/src/context/context.ts +16 -4
  113. package/src/entities/EntityStore.ts +9 -3
  114. package/src/files/EntityFile.ts +11 -6
  115. package/src/files/FileManager.ts +13 -10
  116. package/src/index.ts +8 -9
  117. package/src/internal.ts +27 -0
  118. package/src/persistence/MessageCreator.ts +79 -73
  119. package/src/persistence/PersistenceFiles.ts +57 -31
  120. package/src/persistence/PersistenceMetadata.ts +287 -195
  121. package/src/persistence/PersistenceQueries.ts +45 -9
  122. package/src/persistence/PersistenceRebaser.ts +105 -70
  123. package/src/persistence/idb/IdbService.ts +40 -22
  124. package/src/persistence/idb/files/IdbPersistenceFileDb.ts +30 -62
  125. package/src/persistence/idb/idbPersistence.ts +123 -47
  126. package/src/persistence/idb/metadata/IdbMetadataDb.ts +75 -97
  127. package/src/persistence/idb/metadata/openMetadataDatabase.ts +2 -96
  128. package/src/persistence/idb/queries/{IdbQueryDb.ts → IdbDocumentDb.ts} +17 -57
  129. package/src/persistence/idb/queries/migration/db.ts +20 -39
  130. package/src/persistence/idb/util.ts +84 -21
  131. package/src/persistence/interfaces.ts +89 -90
  132. package/src/persistence/{idb/queries/migration → migration}/engine.ts +30 -15
  133. package/src/persistence/migration/finalize.ts +126 -0
  134. package/src/persistence/migration/migrate.ts +169 -0
  135. package/src/persistence/migration/types.ts +4 -0
  136. package/src/persistence/persistence.ts +37 -14
  137. package/src/queries/FindAllQuery.ts +1 -1
  138. package/src/queries/FindInfiniteQuery.ts +2 -2
  139. package/src/queries/FindOneQuery.ts +1 -1
  140. package/src/queries/FindPageQuery.ts +1 -1
  141. package/src/sync/FileSync.ts +21 -15
  142. package/src/sync/PushPullSync.ts +3 -4
  143. package/src/sync/ServerSyncEndpointProvider.ts +6 -8
  144. package/src/sync/Sync.ts +20 -7
  145. package/src/sync/WebSocketSync.ts +10 -4
  146. package/dist/esm/client/constants.d.ts +0 -1
  147. package/dist/esm/client/constants.js +0 -2
  148. package/dist/esm/client/constants.js.map +0 -1
  149. package/dist/esm/persistence/idb/queries/IdbQueryDb.js.map +0 -1
  150. package/dist/esm/persistence/idb/queries/migration/engine.js.map +0 -1
  151. package/dist/esm/persistence/idb/queries/migration/migrations.d.ts +0 -15
  152. package/dist/esm/persistence/idb/queries/migration/migrations.js +0 -243
  153. package/dist/esm/persistence/idb/queries/migration/migrations.js.map +0 -1
  154. package/dist/esm/persistence/idb/queries/migration/openQueryDatabase.d.ts +0 -8
  155. package/dist/esm/persistence/idb/queries/migration/openQueryDatabase.js +0 -24
  156. package/dist/esm/persistence/idb/queries/migration/openQueryDatabase.js.map +0 -1
  157. package/dist/esm/persistence/idb/queries/migration/paths.js.map +0 -1
  158. package/dist/esm/persistence/idb/queries/migration/paths.test.js.map +0 -1
  159. package/dist/esm/persistence/idb/queries/migration/types.d.ts +0 -6
  160. package/dist/esm/persistence/idb/queries/migration/types.js.map +0 -1
  161. package/src/client/constants.ts +0 -1
  162. package/src/persistence/idb/queries/migration/migrations.ts +0 -345
  163. package/src/persistence/idb/queries/migration/openQueryDatabase.ts +0 -54
  164. package/src/persistence/idb/queries/migration/types.ts +0 -8
  165. /package/dist/esm/persistence/{idb/queries/migration → migration}/paths.d.ts +0 -0
  166. /package/dist/esm/persistence/{idb/queries/migration → migration}/paths.js +0 -0
  167. /package/dist/esm/persistence/{idb/queries/migration → migration}/paths.test.d.ts +0 -0
  168. /package/dist/esm/persistence/{idb/queries/migration → migration}/paths.test.js +0 -0
  169. /package/dist/esm/persistence/{idb/queries/migration → migration}/types.js +0 -0
  170. /package/src/persistence/{idb/queries/migration → migration}/paths.test.ts +0 -0
  171. /package/src/persistence/{idb/queries/migration → migration}/paths.ts +0 -0
@@ -1,19 +1,15 @@
1
1
  import { CollectionFilter, ObjectIdentifier } from '@verdant-web/common';
2
2
  import { Context } from '../../../context/context.js';
3
- import { AbstractTransaction, CommonQueryOptions, PersistenceQueryDb, QueryMode } from '../../interfaces.js';
3
+ import { PersistenceDocumentDb } from '../../interfaces.js';
4
4
  import { IdbService } from '../IdbService.js';
5
- export declare class IdbQueryDb extends IdbService implements PersistenceQueryDb {
5
+ export declare class IdbDocumentDb extends IdbService implements PersistenceDocumentDb {
6
6
  private ctx;
7
- constructor(db: IDBDatabase, context: Omit<Context, 'queries' | 'files'>);
7
+ constructor(db: IDBDatabase, context: Omit<Context, 'documents' | 'files'>);
8
+ close: () => Promise<void>;
8
9
  stats: () => Promise<Record<string, {
9
10
  count: number;
10
11
  size: number;
11
12
  }>>;
12
- transaction: (opts: {
13
- mode?: QueryMode;
14
- storeNames: string[];
15
- abort?: AbortSignal;
16
- }) => AbstractTransaction;
17
13
  findOneOid: (opts: {
18
14
  collection: string;
19
15
  index?: CollectionFilter;
@@ -30,12 +26,10 @@ export declare class IdbQueryDb extends IdbService implements PersistenceQueryDb
30
26
  saveEntities: (entities: {
31
27
  oid: ObjectIdentifier;
32
28
  getSnapshot: () => any;
33
- }[], opts?: CommonQueryOptions & {
29
+ }[], optsAndInfo: {
34
30
  abort?: AbortSignal;
31
+ collections: string[];
35
32
  }) => Promise<void>;
36
- reset: (opts?: {
37
- transaction?: AbstractTransaction;
38
- }) => Promise<void>;
39
- dispose: () => Promise<void>;
33
+ reset: () => Promise<void>;
40
34
  private saveDocument;
41
35
  }
@@ -2,9 +2,12 @@ import { createOid, decomposeOid, getIndexValues, } from '@verdant-web/common';
2
2
  import { IdbService } from '../IdbService.js';
3
3
  import { getRange } from './ranges.js';
4
4
  import { closeDatabase, getSizeOfObjectStore, isAbortError } from '../util.js';
5
- export class IdbQueryDb extends IdbService {
5
+ export class IdbDocumentDb extends IdbService {
6
6
  constructor(db, context) {
7
7
  super(db, { log: context.log });
8
+ this.close = async () => {
9
+ await this.dispose();
10
+ };
8
11
  this.stats = async () => {
9
12
  const collectionNames = Object.keys(this.ctx.schema.collections);
10
13
  const collections = {};
@@ -14,12 +17,6 @@ export class IdbQueryDb extends IdbService {
14
17
  }));
15
18
  return collections;
16
19
  };
17
- this.transaction = (opts) => {
18
- return this.createTransaction(opts.storeNames, {
19
- mode: opts.mode,
20
- abort: opts.abort,
21
- });
22
- };
23
20
  this.findOneOid = async (opts) => {
24
21
  const result = await this.run(opts.collection, (store) => {
25
22
  var _a, _b;
@@ -97,24 +94,13 @@ export class IdbQueryDb extends IdbService {
97
94
  hasNextPage,
98
95
  };
99
96
  };
100
- this.saveEntities = async (entities, opts) => {
101
- if (entities.length === 0)
102
- return;
103
- let collections = Array.from(new Set(entities.map((e) => decomposeOid(e.oid).collection)));
104
- const toRemove = collections.filter((c) => !this.ctx.schema.collections[c]);
105
- if (toRemove.length > 0) {
106
- this.ctx.log('warn', `Ignoring entities from collections that no longer exist: ${toRemove.join(', ')}`);
107
- }
108
- const withRemoved = new Set(collections);
109
- toRemove.forEach((c) => withRemoved.delete(c));
110
- collections = Array.from(withRemoved);
97
+ this.saveEntities = async (entities, optsAndInfo) => {
111
98
  const options = {
112
- transaction: this.createTransaction(collections, {
99
+ transaction: this.createTransaction(optsAndInfo.collections, {
113
100
  mode: 'readwrite',
114
- abort: opts === null || opts === void 0 ? void 0 : opts.abort,
101
+ abort: optsAndInfo.abort,
115
102
  }),
116
103
  };
117
- // FIXME: not test is making it to this line
118
104
  await Promise.all(entities.map(async (e) => {
119
105
  const snapshot = e.getSnapshot();
120
106
  try {
@@ -131,22 +117,14 @@ export class IdbQueryDb extends IdbService {
131
117
  }
132
118
  }));
133
119
  options.transaction.commit();
134
- this.ctx.entityEvents.emit('collectionsChanged', collections);
135
- for (const entity of entities) {
136
- this.ctx.entityEvents.emit('documentChanged', entity.oid);
137
- }
138
120
  };
139
- this.reset = async (opts) => {
121
+ this.reset = async () => {
140
122
  const names = Object.keys(this.ctx.schema.collections);
141
- const tx = (opts === null || opts === void 0 ? void 0 : opts.transaction) ||
142
- this.createTransaction(names, { mode: 'readwrite' });
123
+ const tx = this.createTransaction(names, { mode: 'readwrite' });
143
124
  await Promise.all(names.map((name) => this.run(name, (store) => store.clear(), { transaction: tx })));
144
125
  this.ctx.entityEvents.emit('collectionsChanged', names);
145
126
  this.ctx.log('info', '💨 Reset queryable storage');
146
127
  };
147
- this.dispose = () => {
148
- return closeDatabase(this.db);
149
- };
150
128
  this.saveDocument = async (oid, doc, { transaction }) => {
151
129
  this.ctx.log('debug', `Saving document indexes for querying ${oid}`);
152
130
  const { collection, id } = decomposeOid(oid);
@@ -161,6 +139,7 @@ export class IdbQueryDb extends IdbService {
161
139
  const schema = this.ctx.schema.collections[collection];
162
140
  // no need to validate before storing; the entity's snapshot is already validated.
163
141
  const indexes = getIndexValues(schema, doc);
142
+ indexes['@@@snapshot'] = JSON.stringify(doc);
164
143
  await this.run(collection, (store) => store.put(indexes), {
165
144
  mode: 'readwrite',
166
145
  transaction,
@@ -169,6 +148,10 @@ export class IdbQueryDb extends IdbService {
169
148
  }
170
149
  };
171
150
  this.ctx = context;
151
+ this.addDispose(() => {
152
+ this.ctx.log('info', 'Closing document database for', this.ctx.namespace);
153
+ return closeDatabase(this.db);
154
+ });
172
155
  }
173
156
  }
174
- //# sourceMappingURL=IdbQueryDb.js.map
157
+ //# sourceMappingURL=IdbDocumentDb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdbDocumentDb.js","sourceRoot":"","sources":["../../../../../src/persistence/idb/queries/IdbDocumentDb.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,12 @@
1
- import { OpenDocumentDbContext } from './types.js';
2
- export declare function getDatabaseVersion(indexedDB: IDBFactory, namespace: string): Promise<number>;
1
+ import { Context } from '../../../../internal.js';
3
2
  /**
4
3
  * Upgrades the database to the given version, using the given upgrader function.
5
4
  */
6
5
  export declare function upgradeDatabase(indexedDb: IDBFactory, namespace: string, version: number, upgrader: (transaction: IDBTransaction, db: IDBDatabase, event: IDBVersionChangeEvent) => void, log?: (...args: any[]) => void): Promise<IDBDatabase>;
7
- export declare function acquireLock(namespace: string, procedure: () => Promise<void>): Promise<void>;
8
- export declare function openDatabase({ indexedDB, namespace, version, context, }: {
6
+ export declare function openDatabase({ indexedDB, namespace, version, log, }: {
9
7
  indexedDB?: IDBFactory;
10
8
  namespace: string;
11
9
  version: number;
12
- context: OpenDocumentDbContext;
10
+ log?: Context['log'];
13
11
  }): Promise<IDBDatabase>;
14
12
  export declare function copyAll(sourceDatabase: IDBDatabase, targetDatabase: IDBDatabase): Promise<void>;
@@ -1,28 +1,21 @@
1
- import { globalIDB, storeRequestPromise, openDatabase as baseOpenDatabase, getDocumentDbName, } from '../../util.js';
2
- export async function getDatabaseVersion(indexedDB, namespace) {
3
- var _a;
4
- const databaseName = getDocumentDbName(namespace);
5
- const dbInfo = await indexedDB.databases();
6
- const existingDb = dbInfo.find((info) => info.name === databaseName);
7
- if (existingDb) {
8
- return (_a = existingDb.version) !== null && _a !== void 0 ? _a : 0;
9
- }
10
- return 0;
11
- }
1
+ import { globalIDB, storeRequestPromise, openDatabase as baseOpenDatabase, getDocumentDbName, closeDatabase, } from '../../util.js';
12
2
  /**
13
3
  * Upgrades the database to the given version, using the given upgrader function.
14
4
  */
15
5
  export async function upgradeDatabase(indexedDb, namespace, version, upgrader, log) {
6
+ log === null || log === void 0 ? void 0 : log('debug', 'Upgrading database', namespace, 'to version', version);
16
7
  function openAndUpgrade(resolve, reject) {
17
- const request = indexedDb.open([namespace, 'collections'].join('_'), version);
8
+ const request = indexedDb.open(getDocumentDbName(namespace), version);
18
9
  let wasUpgraded = false;
19
10
  request.onupgradeneeded = (event) => {
20
11
  const transaction = request.transaction;
21
12
  upgrader(transaction, request.result, event);
22
13
  wasUpgraded = true;
23
14
  };
24
- request.onsuccess = (event) => {
15
+ request.onsuccess = async (event) => {
25
16
  if (wasUpgraded) {
17
+ // close the database
18
+ await closeDatabase(request.result);
26
19
  resolve(request.result);
27
20
  }
28
21
  else {
@@ -33,29 +26,21 @@ export async function upgradeDatabase(indexedDb, namespace, version, upgrader, l
33
26
  reject(request.error || new Error('Unknown error'));
34
27
  };
35
28
  request.onblocked = (event) => {
36
- log === null || log === void 0 ? void 0 : log('Database upgrade blocked, waiting...');
37
- // setTimeout(() => {
38
- // openAndUpgrade(resolve, reject);
39
- // }, 200);
29
+ log === null || log === void 0 ? void 0 : log('Database upgrade blocked!');
30
+ reject(new Error('Database upgrade blocked. The app may be open in another tab?'));
40
31
  };
41
32
  }
42
33
  return new Promise(openAndUpgrade);
43
34
  }
44
- export async function acquireLock(namespace, procedure) {
45
- if (typeof navigator !== 'undefined' && navigator.locks) {
46
- await navigator.locks.request(`verdant_migration_${namespace}`, procedure);
47
- }
48
- else {
49
- // TODO: is there a fallback?
50
- await procedure();
51
- }
52
- }
53
- export async function openDatabase({ indexedDB = globalIDB, namespace, version, context, }) {
54
- context.log('debug', 'Opening database', namespace, 'at version', version);
35
+ export async function openDatabase({ indexedDB = globalIDB, namespace, version, log, }) {
36
+ log === null || log === void 0 ? void 0 : log('debug', 'Opening database', namespace, 'at version', version);
55
37
  const db = await baseOpenDatabase(getDocumentDbName(namespace), version, indexedDB);
56
38
  db.addEventListener('versionchange', (event) => {
57
39
  db.close();
58
40
  });
41
+ db.addEventListener('close', () => {
42
+ log === null || log === void 0 ? void 0 : log('warn', 'Database closed', namespace);
43
+ });
59
44
  return db;
60
45
  }
61
46
  export async function copyAll(sourceDatabase, targetDatabase) {
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../../../src/persistence/idb/queries/migration/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../../../src/persistence/idb/queries/migration/db.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { Context } from '../../internal.js';
1
2
  export declare const globalIDB: any;
2
3
  export declare function isAbortError(err: unknown): boolean;
3
4
  export declare function storeRequestPromise<T>(request: IDBRequest<T>): Promise<T>;
@@ -19,11 +20,14 @@ export declare function deleteDatabase(name: string, indexedDB?: IDBFactory): Pr
19
20
  export declare function getAllDatabaseNamesAndVersions(indexedDB?: IDBFactory): Promise<IDBDatabaseInfo[]>;
20
21
  export declare function createAbortableTransaction(db: IDBDatabase, storeNames: string[], mode: 'readonly' | 'readwrite', abortSignal?: AbortSignal, log?: (...args: any[]) => void): IDBTransaction;
21
22
  /**
22
- * Empties all data in a database without changing
23
- * its structure.
23
+ * Deletes any existing database with name `toName` and
24
+ * copies the index structure and all data
25
+ * from `from` to a new database.
26
+ *
27
+ * Does NOT run Verdant migrations. Use to copy existing
28
+ * data as-is.
24
29
  */
25
- export declare function emptyDatabase(db: IDBDatabase): Promise<void>;
26
- export declare function copyDatabase(from: IDBDatabase, to: IDBDatabase): Promise<void>;
30
+ export declare function overwriteDatabase(from: IDBDatabase, toName: string, ctx: Pick<Context, 'log'>, indexedDB?: IDBFactory): Promise<void>;
27
31
  export declare function openDatabase(name: string, expectedVersion: number, indexedDB?: IDBFactory): Promise<IDBDatabase>;
28
32
  export declare function getMetadataDbName(namespace: string): string;
29
33
  export declare function getDocumentDbName(namespace: string): string;
@@ -155,34 +155,77 @@ export function createAbortableTransaction(db, storeNames, mode, abortSignal, lo
155
155
  return tx;
156
156
  }
157
157
  /**
158
- * Empties all data in a database without changing
159
- * its structure.
158
+ * Deletes any existing database with name `toName` and
159
+ * copies the index structure and all data
160
+ * from `from` to a new database.
161
+ *
162
+ * Does NOT run Verdant migrations. Use to copy existing
163
+ * data as-is.
160
164
  */
161
- export function emptyDatabase(db) {
162
- const storeNames = Array.from(db.objectStoreNames);
163
- const tx = db.transaction(storeNames, 'readwrite');
164
- for (const storeName of storeNames) {
165
- tx.objectStore(storeName).clear();
165
+ export async function overwriteDatabase(from, toName, ctx, indexedDB = window.indexedDB) {
166
+ const databases = await getAllDatabaseNamesAndVersions(indexedDB);
167
+ if (databases.some((d) => d.name === toName)) {
168
+ await deleteDatabase(toName, indexedDB);
169
+ ctx.log('debug', 'Deleted existing database', toName);
166
170
  }
167
- return new Promise((resolve, reject) => {
168
- tx.oncomplete = () => resolve();
169
- tx.onerror = () => reject(tx.error);
171
+ const to = await new Promise((resolve, reject) => {
172
+ ctx.log('debug', 'Opening reset database', toName, 'at', from.version);
173
+ const openRequest = indexedDB.open(toName, from.version);
174
+ openRequest.onupgradeneeded = () => {
175
+ ctx.log('debug', 'Upgrading database', toName, 'to version', from.version);
176
+ // copy all indexes from original
177
+ const original = from;
178
+ const upgradeTx = openRequest.transaction;
179
+ if (!upgradeTx) {
180
+ throw new Error('No transaction');
181
+ }
182
+ for (const storeName of Array.from(original.objectStoreNames)) {
183
+ const originalObjectStore = original
184
+ .transaction(storeName)
185
+ .objectStore(storeName);
186
+ // create object store
187
+ upgradeTx.db.createObjectStore(storeName, {
188
+ keyPath: originalObjectStore.keyPath,
189
+ autoIncrement: originalObjectStore.autoIncrement,
190
+ });
191
+ const store = upgradeTx.objectStore(storeName);
192
+ const originalStore = original
193
+ .transaction(storeName)
194
+ .objectStore(storeName);
195
+ for (const index of Array.from(originalStore.indexNames)) {
196
+ const originalIndex = originalStore.index(index);
197
+ ctx.log('debug', 'Copying index', index);
198
+ store.createIndex(index, originalIndex.keyPath, {
199
+ unique: originalIndex.unique,
200
+ multiEntry: originalIndex.multiEntry,
201
+ });
202
+ }
203
+ }
204
+ };
205
+ openRequest.onsuccess = () => {
206
+ ctx.log('debug', 'Opened reset database', toName);
207
+ resolve(openRequest.result);
208
+ };
209
+ openRequest.onerror = () => { var _a; return reject((_a = openRequest.error) !== null && _a !== void 0 ? _a : new Error('Unknown database upgrade error')); };
170
210
  });
171
- }
172
- export async function copyDatabase(from, to) {
173
- await emptyDatabase(to);
174
211
  const records = await getAllFromObjectStores(from, Array.from(from.objectStoreNames));
175
- const writeTx = to.transaction(Array.from(to.objectStoreNames), 'readwrite');
176
- for (let i = 0; i < records.length; i++) {
177
- const store = writeTx.objectStore(from.objectStoreNames[i]);
178
- for (const record of records[i]) {
179
- store.add(record);
212
+ await new Promise((resolve, reject) => {
213
+ const writeTx = to.transaction(Array.from(to.objectStoreNames), 'readwrite');
214
+ for (let i = 0; i < records.length; i++) {
215
+ const store = writeTx.objectStore(from.objectStoreNames[i]);
216
+ for (const record of records[i]) {
217
+ store.add(record);
218
+ }
180
219
  }
181
- }
182
- return new Promise((resolve, reject) => {
183
220
  writeTx.oncomplete = () => resolve();
184
- writeTx.onerror = () => reject(writeTx.error);
221
+ writeTx.onerror = (ev) => {
222
+ var _a, _b, _c;
223
+ const err = (_c = (_a = writeTx.error) !== null && _a !== void 0 ? _a : (_b = ev.target.transaction) === null || _b === void 0 ? void 0 : _b.error) !== null && _c !== void 0 ? _c : new Error('Unknown error');
224
+ ctx.log('critical', 'Error copying data', err);
225
+ reject(err);
226
+ };
185
227
  });
228
+ await closeDatabase(to);
186
229
  }
187
230
  export function openDatabase(name, expectedVersion, indexedDB = window.indexedDB) {
188
231
  return new Promise((resolve, reject) => {
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/persistence/idb/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/persistence/idb/util.ts"],"names":[],"mappings":"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"}