@verdant-web/store 3.2.1 → 3.3.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.
- package/dist/bundle/index.js +6 -6
- package/dist/bundle/index.js.map +3 -3
- package/dist/cjs/backup.d.ts +10 -0
- package/dist/cjs/backup.js +58 -0
- package/dist/cjs/backup.js.map +1 -0
- package/dist/cjs/client/Client.d.ts +28 -8
- package/dist/cjs/client/Client.js +76 -16
- package/dist/cjs/client/Client.js.map +1 -1
- package/dist/cjs/files/FileManager.d.ts +2 -0
- package/dist/cjs/files/FileManager.js +25 -0
- package/dist/cjs/files/FileManager.js.map +1 -1
- package/dist/cjs/files/FileStorage.d.ts +11 -0
- package/dist/cjs/files/FileStorage.js +5 -0
- package/dist/cjs/files/FileStorage.js.map +1 -1
- package/dist/cjs/sync/PushPullSync.d.ts +3 -1
- package/dist/cjs/sync/PushPullSync.js +3 -2
- package/dist/cjs/sync/PushPullSync.js.map +1 -1
- package/dist/cjs/sync/ServerSyncEndpointProvider.d.ts +8 -2
- package/dist/cjs/sync/ServerSyncEndpointProvider.js +2 -1
- package/dist/cjs/sync/ServerSyncEndpointProvider.js.map +1 -1
- package/dist/cjs/sync/Sync.d.ts +12 -4
- package/dist/cjs/sync/Sync.js +3 -1
- package/dist/cjs/sync/Sync.js.map +1 -1
- package/dist/esm/backup.d.ts +10 -0
- package/dist/esm/backup.js +49 -0
- package/dist/esm/backup.js.map +1 -0
- package/dist/esm/client/Client.d.ts +28 -8
- package/dist/esm/client/Client.js +76 -16
- package/dist/esm/client/Client.js.map +1 -1
- package/dist/esm/files/FileManager.d.ts +2 -0
- package/dist/esm/files/FileManager.js +26 -1
- package/dist/esm/files/FileManager.js.map +1 -1
- package/dist/esm/files/FileStorage.d.ts +11 -0
- package/dist/esm/files/FileStorage.js +5 -0
- package/dist/esm/files/FileStorage.js.map +1 -1
- package/dist/esm/sync/PushPullSync.d.ts +3 -1
- package/dist/esm/sync/PushPullSync.js +3 -2
- package/dist/esm/sync/PushPullSync.js.map +1 -1
- package/dist/esm/sync/ServerSyncEndpointProvider.d.ts +8 -2
- package/dist/esm/sync/ServerSyncEndpointProvider.js +2 -1
- package/dist/esm/sync/ServerSyncEndpointProvider.js.map +1 -1
- package/dist/esm/sync/Sync.d.ts +12 -4
- package/dist/esm/sync/Sync.js +3 -1
- package/dist/esm/sync/Sync.js.map +1 -1
- package/dist/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -1
- package/src/backup.ts +60 -0
- package/src/client/Client.ts +105 -17
- package/src/files/FileManager.ts +35 -1
- package/src/files/FileStorage.ts +7 -1
- package/src/sync/PushPullSync.ts +5 -1
- package/src/sync/ServerSyncEndpointProvider.ts +10 -3
- package/src/sync/Sync.ts +15 -7
package/dist/cjs/sync/Sync.js
CHANGED
|
@@ -43,7 +43,7 @@ class NoSync extends common_1.EventSubscriber {
|
|
|
43
43
|
}
|
|
44
44
|
exports.NoSync = NoSync;
|
|
45
45
|
class ServerSync extends common_1.EventSubscriber {
|
|
46
|
-
constructor({ authEndpoint, fetchAuth, initialPresence, automaticTransportSelection = true, autoStart, initialTransport, pullInterval, presenceUpdateBatchTimeout, defaultProfile, useBroadcastChannel, }, { meta, log, onData, }) {
|
|
46
|
+
constructor({ authEndpoint, fetchAuth, fetch, initialPresence, automaticTransportSelection = true, autoStart, initialTransport, pullInterval, presenceUpdateBatchTimeout, defaultProfile, useBroadcastChannel, }, { meta, log, onData, }) {
|
|
47
47
|
super();
|
|
48
48
|
this.broadcastChannel = null;
|
|
49
49
|
this._activelySyncing = false;
|
|
@@ -196,6 +196,7 @@ class ServerSync extends common_1.EventSubscriber {
|
|
|
196
196
|
this.endpointProvider = new ServerSyncEndpointProvider_js_1.ServerSyncEndpointProvider({
|
|
197
197
|
authEndpoint,
|
|
198
198
|
fetchAuth,
|
|
199
|
+
fetch,
|
|
199
200
|
});
|
|
200
201
|
this.webSocketSync = new WebSocketSync_js_1.WebSocketSync({
|
|
201
202
|
endpointProvider: this.endpointProvider,
|
|
@@ -209,6 +210,7 @@ class ServerSync extends common_1.EventSubscriber {
|
|
|
209
210
|
presence: this.presence,
|
|
210
211
|
log: this.log,
|
|
211
212
|
interval: pullInterval,
|
|
213
|
+
fetch,
|
|
212
214
|
});
|
|
213
215
|
this.fileSync = new FileSync_js_1.FileSync({
|
|
214
216
|
endpointProvider: this.endpointProvider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sync.js","sourceRoot":"","sources":["../../../src/sync/Sync.ts"],"names":[],"mappings":";;;AAAA,gDAQ6B;AAE7B,6DAAuE;AACvE,+CAA2E;AAC3E,uDAAiD;AACjD,mFAGyC;AACzC,yDAAmD;
|
|
1
|
+
{"version":3,"file":"Sync.js","sourceRoot":"","sources":["../../../src/sync/Sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Client } from './client/Client.js';
|
|
2
|
+
import { ExportData } from './metadata/Metadata.js';
|
|
3
|
+
import { ReturnedFileData } from './files/FileStorage.js';
|
|
4
|
+
export declare function createClientBackup(client: Client): Promise<Blob>;
|
|
5
|
+
export declare function readBackupFile(file: Blob): Promise<{
|
|
6
|
+
data: ExportData;
|
|
7
|
+
fileData: Omit<ReturnedFileData, "file">[];
|
|
8
|
+
files: File[];
|
|
9
|
+
}>;
|
|
10
|
+
export declare function importClientBackup(client: Client, file: Blob): Promise<void>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import Zip from 'jszip';
|
|
2
|
+
export async function createClientBackup(client) {
|
|
3
|
+
const exportData = await client.export();
|
|
4
|
+
const zipFile = new Zip();
|
|
5
|
+
zipFile.file('data.json', JSON.stringify(exportData.data));
|
|
6
|
+
zipFile.file('fileData.json', JSON.stringify(exportData.fileData));
|
|
7
|
+
const folder = zipFile.folder('files');
|
|
8
|
+
if (!folder) {
|
|
9
|
+
throw new Error('Failed to create files folder');
|
|
10
|
+
}
|
|
11
|
+
for (const file of exportData.files) {
|
|
12
|
+
folder.file(file.name, file);
|
|
13
|
+
}
|
|
14
|
+
return zipFile.generateAsync({ type: 'blob' });
|
|
15
|
+
}
|
|
16
|
+
export async function readBackupFile(file) {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
const zipFile = await Zip.loadAsync(file);
|
|
19
|
+
const data = await ((_a = zipFile.file('data.json')) === null || _a === void 0 ? void 0 : _a.async('text'));
|
|
20
|
+
const fileData = await ((_b = zipFile.file('fileData.json')) === null || _b === void 0 ? void 0 : _b.async('text'));
|
|
21
|
+
if (!data || !fileData) {
|
|
22
|
+
throw new Error('Failed to read data from backup');
|
|
23
|
+
}
|
|
24
|
+
const parsedData = JSON.parse(data);
|
|
25
|
+
const parsedFileData = JSON.parse(fileData);
|
|
26
|
+
const filesInFilesFolder = Object.entries(zipFile.files).filter(([key, val]) => {
|
|
27
|
+
return key.startsWith('files/') && !val.dir;
|
|
28
|
+
});
|
|
29
|
+
let files = new Array();
|
|
30
|
+
if (filesInFilesFolder.length > 0) {
|
|
31
|
+
files = await Promise.all(filesInFilesFolder.map(async ([path, f]) => {
|
|
32
|
+
const blob = await f.async('blob');
|
|
33
|
+
return new File([blob], f.name.replace('files/', ''), {
|
|
34
|
+
type: blob.type,
|
|
35
|
+
});
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
const importData = {
|
|
39
|
+
data: parsedData,
|
|
40
|
+
fileData: parsedFileData,
|
|
41
|
+
files,
|
|
42
|
+
};
|
|
43
|
+
return importData;
|
|
44
|
+
}
|
|
45
|
+
export async function importClientBackup(client, file) {
|
|
46
|
+
const importData = await readBackupFile(file);
|
|
47
|
+
await client.import(importData);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import { EventSubscriber, Migration } from '@verdant-web/common';
|
|
3
2
|
import { Context } from '../context.js';
|
|
4
3
|
import { DocumentManager } from '../DocumentManager.js';
|
|
5
4
|
import { FileManagerConfig } from '../files/FileManager.js';
|
|
6
|
-
import { Metadata } from '../metadata/Metadata.js';
|
|
5
|
+
import { ExportData, Metadata } from '../metadata/Metadata.js';
|
|
7
6
|
import { EntityStore } from '../entities/EntityStore.js';
|
|
8
7
|
import { ServerSyncOptions, Sync } from '../sync/Sync.js';
|
|
9
8
|
import { CollectionQueries } from '../queries/CollectionQueries.js';
|
|
9
|
+
import { ReturnedFileData } from '../files/FileStorage.js';
|
|
10
10
|
interface ClientConfig<Presence = any> {
|
|
11
11
|
syncConfig?: ServerSyncOptions<Presence>;
|
|
12
12
|
migrations: Migration[];
|
|
@@ -51,10 +51,6 @@ export declare class Client<Presence = any, Profile = any> extends EventSubscrib
|
|
|
51
51
|
}>;
|
|
52
52
|
get namespace(): string;
|
|
53
53
|
get undoHistory(): import("../UndoHistory.js").UndoHistory;
|
|
54
|
-
/**
|
|
55
|
-
* @deprecated - use client.sync.presence instead
|
|
56
|
-
*/
|
|
57
|
-
get presence(): import("../sync/PresenceManager.js").PresenceManager<Profile, Presence>;
|
|
58
54
|
/**
|
|
59
55
|
* Batch multiple operations together to be executed in a single transaction.
|
|
60
56
|
* The changes made will not be included in the same undo history step as
|
|
@@ -94,7 +90,31 @@ export declare class Client<Presence = any, Profile = any> extends EventSubscrib
|
|
|
94
90
|
}>;
|
|
95
91
|
close: () => Promise<void>;
|
|
96
92
|
__dangerous__resetLocal: () => Promise<void>;
|
|
97
|
-
export: (
|
|
98
|
-
|
|
93
|
+
export: ({ downloadRemoteFiles }?: {
|
|
94
|
+
downloadRemoteFiles?: boolean | undefined;
|
|
95
|
+
}) => Promise<{
|
|
96
|
+
data: ExportData;
|
|
97
|
+
fileData: Omit<ReturnedFileData, "file">[];
|
|
98
|
+
files: File[];
|
|
99
|
+
}>;
|
|
100
|
+
private getFileExportName;
|
|
101
|
+
private parseFileExportname;
|
|
102
|
+
import: ({ data, fileData, files, }: {
|
|
103
|
+
data: ExportData;
|
|
104
|
+
fileData: Array<Omit<ReturnedFileData, 'file'>>;
|
|
105
|
+
files: File[];
|
|
106
|
+
}) => Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Export all data, then re-import it. This might resolve
|
|
109
|
+
* some issues with the local database, but it should
|
|
110
|
+
* only be done as a second-to-last resort. The last resort
|
|
111
|
+
* would be __dangerous__resetLocal on ClientDescriptor, which
|
|
112
|
+
* clears all local data.
|
|
113
|
+
*
|
|
114
|
+
* Unlike __dangerous__resetLocal, this method allows local-only
|
|
115
|
+
* clients to recover data, whereas __dangerous__resetLocal only
|
|
116
|
+
* lets networked clients recover from the server.
|
|
117
|
+
*/
|
|
118
|
+
__dangerous__hardReset: () => Promise<void>;
|
|
99
119
|
}
|
|
100
120
|
export {};
|
|
@@ -85,19 +85,61 @@ export class Client extends EventSubscriber {
|
|
|
85
85
|
this.sync.stop();
|
|
86
86
|
await deleteAllDatabases(this.namespace, indexedDB);
|
|
87
87
|
};
|
|
88
|
-
this.export = async (
|
|
88
|
+
this.export = async ({ downloadRemoteFiles } = {
|
|
89
|
+
downloadRemoteFiles: true,
|
|
90
|
+
}) => {
|
|
91
|
+
this.context.log('info', 'Exporting data...');
|
|
89
92
|
const metaExport = await this.meta.export();
|
|
90
|
-
|
|
93
|
+
const filesExport = await this._fileManager.exportAll(downloadRemoteFiles);
|
|
94
|
+
// split files into data and files
|
|
95
|
+
const fileData = [];
|
|
96
|
+
const files = [];
|
|
97
|
+
for (const fileExport of filesExport) {
|
|
98
|
+
const file = fileExport.file;
|
|
99
|
+
delete fileExport.file;
|
|
100
|
+
fileData.push(fileExport);
|
|
101
|
+
if (file) {
|
|
102
|
+
// rename with ID
|
|
103
|
+
const asFile = new File([file], this.getFileExportName(fileExport.name, fileExport.id), {
|
|
104
|
+
type: fileExport.type,
|
|
105
|
+
});
|
|
106
|
+
files.push(asFile);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
this.context.log('warn', `File ${fileExport.id} was could not be loaded locally or from the server. It will be missing in the export.`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
data: metaExport,
|
|
114
|
+
fileData,
|
|
115
|
+
files,
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
this.getFileExportName = (originalFileName, id) => {
|
|
119
|
+
return `${id}___${originalFileName}`;
|
|
120
|
+
};
|
|
121
|
+
this.parseFileExportname = (name) => {
|
|
122
|
+
const [id, originalFileName] = name.split('___');
|
|
123
|
+
return { id, originalFileName };
|
|
91
124
|
};
|
|
92
|
-
this.import = async (
|
|
93
|
-
this.context.log('Importing data...');
|
|
125
|
+
this.import = async ({ data, fileData, files, }) => {
|
|
126
|
+
this.context.log('info', 'Importing data...');
|
|
94
127
|
// close the document DB
|
|
95
128
|
await closeDatabase(this.context.documentDb);
|
|
96
|
-
|
|
97
|
-
|
|
129
|
+
await this.meta.resetFrom(data);
|
|
130
|
+
// re-attach files to their file data and import
|
|
131
|
+
const fileToIdMap = new Map(files.map((file) => {
|
|
132
|
+
const { id } = this.parseFileExportname(file.name);
|
|
133
|
+
return [id, file];
|
|
134
|
+
}));
|
|
135
|
+
const importedFiles = fileData.map((fileData) => {
|
|
136
|
+
const file = fileToIdMap.get(fileData.id);
|
|
137
|
+
return Object.assign(Object.assign({}, fileData), { file });
|
|
138
|
+
});
|
|
139
|
+
await this._fileManager.importAll(importedFiles);
|
|
98
140
|
// now delete the document DB, open it to the specified version
|
|
99
141
|
// and run migrations to get it to the latest version
|
|
100
|
-
const version =
|
|
142
|
+
const version = data.schema.version;
|
|
101
143
|
const deleteReq = indexedDB.deleteDatabase([this.namespace, 'collections'].join('_'));
|
|
102
144
|
await new Promise((resolve, reject) => {
|
|
103
145
|
deleteReq.onsuccess = resolve;
|
|
@@ -105,7 +147,16 @@ export class Client extends EventSubscriber {
|
|
|
105
147
|
});
|
|
106
148
|
// reset our context to the imported schema for now
|
|
107
149
|
const currentSchema = this.context.schema;
|
|
108
|
-
|
|
150
|
+
if (currentSchema.version !== version) {
|
|
151
|
+
// TODO: support importing older schema data - this will
|
|
152
|
+
// require being able to migrate that data, which requires
|
|
153
|
+
// a "live" schema for that version. the client does not currently
|
|
154
|
+
// receive historical schemas, although they should be available
|
|
155
|
+
// if the CLI was used.
|
|
156
|
+
// importing from older versions is also tricky because
|
|
157
|
+
// migration shortcuts mean that versions could get marooned.
|
|
158
|
+
throw new Error(`Only exports from the current schema version can be imported`);
|
|
159
|
+
}
|
|
109
160
|
// now open the document DB empty at the specified version
|
|
110
161
|
// and initialize it from the meta DB
|
|
111
162
|
this.context.documentDb = await openDocumentDatabase({
|
|
@@ -118,8 +169,8 @@ export class Client extends EventSubscriber {
|
|
|
118
169
|
// re-initialize data
|
|
119
170
|
this.context.log('Re-initializing data from imported data...');
|
|
120
171
|
await this._entities.addData({
|
|
121
|
-
operations:
|
|
122
|
-
baselines:
|
|
172
|
+
operations: data.operations,
|
|
173
|
+
baselines: data.baselines,
|
|
123
174
|
reset: true,
|
|
124
175
|
});
|
|
125
176
|
// close the database and reopen to latest version, applying
|
|
@@ -136,6 +187,21 @@ export class Client extends EventSubscriber {
|
|
|
136
187
|
});
|
|
137
188
|
this.context.internalEvents.emit('documentDbChanged', this.documentDb);
|
|
138
189
|
};
|
|
190
|
+
/**
|
|
191
|
+
* Export all data, then re-import it. This might resolve
|
|
192
|
+
* some issues with the local database, but it should
|
|
193
|
+
* only be done as a second-to-last resort. The last resort
|
|
194
|
+
* would be __dangerous__resetLocal on ClientDescriptor, which
|
|
195
|
+
* clears all local data.
|
|
196
|
+
*
|
|
197
|
+
* Unlike __dangerous__resetLocal, this method allows local-only
|
|
198
|
+
* clients to recover data, whereas __dangerous__resetLocal only
|
|
199
|
+
* lets networked clients recover from the server.
|
|
200
|
+
*/
|
|
201
|
+
this.__dangerous__hardReset = async () => {
|
|
202
|
+
const exportData = await this.export();
|
|
203
|
+
await this.import(exportData);
|
|
204
|
+
};
|
|
139
205
|
this.meta = components.meta;
|
|
140
206
|
this.collectionNames = Object.keys(context.schema.collections);
|
|
141
207
|
this._sync =
|
|
@@ -213,12 +279,6 @@ export class Client extends EventSubscriber {
|
|
|
213
279
|
get undoHistory() {
|
|
214
280
|
return this.context.undoHistory;
|
|
215
281
|
}
|
|
216
|
-
/**
|
|
217
|
-
* @deprecated - use client.sync.presence instead
|
|
218
|
-
*/
|
|
219
|
-
get presence() {
|
|
220
|
-
return this.sync.presence;
|
|
221
|
-
}
|
|
222
282
|
/**
|
|
223
283
|
* Batch multiple operations together to be executed in a single transaction.
|
|
224
284
|
* The changes made will not be included in the same undo history step as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../src/client/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,QAAQ,EAER,eAAe,GAIf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAqB,MAAM,yBAAyB,CAAC;AACzE,OAAO,EACN,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,UAAU,EAA2B,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../src/client/Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,8 @@ export declare class FileManager {
|
|
|
38
38
|
}) => EntityFile;
|
|
39
39
|
private load;
|
|
40
40
|
listUnsynced: () => Promise<ReturnedFileData[]>;
|
|
41
|
+
exportAll: (downloadRemote?: boolean) => Promise<ReturnedFileData[]>;
|
|
42
|
+
importAll: (files: ReturnedFileData[]) => Promise<void>;
|
|
41
43
|
private onOnlineChange;
|
|
42
44
|
private tryCleanupDeletedFiles;
|
|
43
45
|
private handleFileRefsDeleted;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EntityFile, MARK_FAILED, UPDATE } from './EntityFile.js';
|
|
2
|
-
import { FileStorage } from './FileStorage.js';
|
|
2
|
+
import { FileStorage, } from './FileStorage.js';
|
|
3
3
|
/**
|
|
4
4
|
* Default: if file was deleted > 3 days ago
|
|
5
5
|
*/
|
|
@@ -98,6 +98,31 @@ export class FileManager {
|
|
|
98
98
|
this.listUnsynced = async () => {
|
|
99
99
|
return this.storage.listUnsynced();
|
|
100
100
|
};
|
|
101
|
+
this.exportAll = async (downloadRemote = false) => {
|
|
102
|
+
const storedFiles = await this.storage.getAll();
|
|
103
|
+
if (downloadRemote) {
|
|
104
|
+
for (const storedFile of storedFiles) {
|
|
105
|
+
// if it doesn't have a buffer, we need to read
|
|
106
|
+
// one from the server
|
|
107
|
+
if (!storedFile.file && storedFile.url) {
|
|
108
|
+
try {
|
|
109
|
+
const blob = await fetch(storedFile.url, {
|
|
110
|
+
method: 'GET',
|
|
111
|
+
credentials: 'include',
|
|
112
|
+
}).then((r) => r.blob());
|
|
113
|
+
storedFile.file = blob;
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
this.context.log('error', "Failed to download file to cache it locally. The file will still be available using its URL. Check the file server's CORS configuration.", err);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return storedFiles;
|
|
122
|
+
};
|
|
123
|
+
this.importAll = async (files) => {
|
|
124
|
+
await Promise.all(files.map((file) => this.add(file)));
|
|
125
|
+
};
|
|
101
126
|
this.onOnlineChange = async (online) => {
|
|
102
127
|
// if online, try to upload any unsynced files
|
|
103
128
|
if (online) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileManager.js","sourceRoot":"","sources":["../../../src/files/FileManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"FileManager.js","sourceRoot":"","sources":["../../../src/files/FileManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { FileData } from '@verdant-web/common';
|
|
2
2
|
import { IDBService } from '../IDBService.js';
|
|
3
|
+
/**
|
|
4
|
+
* When stored in IDB, replace the file blob with an array buffer
|
|
5
|
+
* since it's more compatible, and replace remote boolean with
|
|
6
|
+
* a string since IDB doesn't support boolean indexes.
|
|
7
|
+
*/
|
|
8
|
+
export interface StoredFileData extends Omit<FileData, 'remote' | 'file'> {
|
|
9
|
+
remote: 'true' | 'false';
|
|
10
|
+
buffer?: ArrayBuffer;
|
|
11
|
+
deletedAt: number | null;
|
|
12
|
+
}
|
|
3
13
|
export interface ReturnedFileData extends FileData {
|
|
4
14
|
deletedAt: number | null;
|
|
5
15
|
}
|
|
@@ -24,5 +34,6 @@ export declare class FileStorage extends IDBService {
|
|
|
24
34
|
}) => Promise<IDBValidKey>;
|
|
25
35
|
listUnsynced: () => Promise<ReturnedFileData[]>;
|
|
26
36
|
iterateOverPendingDelete: (iterator: (file: ReturnedFileData, store: IDBObjectStore) => void, transaction?: IDBTransaction) => Promise<void>;
|
|
37
|
+
getAll: () => Promise<ReturnedFileData[]>;
|
|
27
38
|
}
|
|
28
39
|
export declare function arrayBufferToBlob(buffer: ArrayBuffer, type: string): Blob;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IDBService } from '../IDBService.js';
|
|
2
2
|
import { fileToArrayBuffer } from './utils.js';
|
|
3
|
+
import { getAllFromObjectStores } from '../idb.js';
|
|
3
4
|
export class FileStorage extends IDBService {
|
|
4
5
|
constructor() {
|
|
5
6
|
super(...arguments);
|
|
@@ -87,6 +88,10 @@ export class FileStorage extends IDBService {
|
|
|
87
88
|
iterator(this.hydrateFileData(value), store);
|
|
88
89
|
}, { mode: 'readwrite', transaction });
|
|
89
90
|
};
|
|
91
|
+
this.getAll = async () => {
|
|
92
|
+
const [files] = await getAllFromObjectStores(this.db, ['files']);
|
|
93
|
+
return files.map(this.hydrateFileData);
|
|
94
|
+
};
|
|
90
95
|
}
|
|
91
96
|
deleteFile(id, { transaction } = {}) {
|
|
92
97
|
return this.run('files', (store) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileStorage.js","sourceRoot":"","sources":["../../../src/files/FileStorage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"FileStorage.js","sourceRoot":"","sources":["../../../src/files/FileStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,17 +8,19 @@ export declare class PushPullSync extends EventSubscriber<SyncTransportEvents> i
|
|
|
8
8
|
readonly presence: PresenceManager;
|
|
9
9
|
private endpointProvider;
|
|
10
10
|
private heartbeat;
|
|
11
|
+
private fetch;
|
|
11
12
|
readonly mode = "pull";
|
|
12
13
|
private log;
|
|
13
14
|
private _isConnected;
|
|
14
15
|
private _status;
|
|
15
16
|
private _hasSynced;
|
|
16
|
-
constructor({ endpointProvider, meta, presence, interval, log, }: {
|
|
17
|
+
constructor({ endpointProvider, meta, presence, interval, log, fetch, }: {
|
|
17
18
|
endpointProvider: ServerSyncEndpointProvider;
|
|
18
19
|
meta: Metadata;
|
|
19
20
|
presence: PresenceManager;
|
|
20
21
|
interval?: number;
|
|
21
22
|
log?: (...args: any[]) => any;
|
|
23
|
+
fetch?: typeof window.fetch;
|
|
22
24
|
});
|
|
23
25
|
setInterval: (interval: number) => void;
|
|
24
26
|
get interval(): number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EventSubscriber, VerdantErrorCode, isVerdantErrorResponse, } from '@verdant-web/common';
|
|
2
2
|
import { Heartbeat } from './Heartbeat.js';
|
|
3
3
|
export class PushPullSync extends EventSubscriber {
|
|
4
|
-
constructor({ endpointProvider, meta, presence, interval = 15 * 1000, log = () => { }, }) {
|
|
4
|
+
constructor({ endpointProvider, meta, presence, interval = 15 * 1000, log = () => { }, fetch = window.fetch, }) {
|
|
5
5
|
super();
|
|
6
6
|
this.mode = 'pull';
|
|
7
7
|
this._isConnected = false;
|
|
@@ -14,7 +14,7 @@ export class PushPullSync extends EventSubscriber {
|
|
|
14
14
|
this.log('Sending sync request', messages);
|
|
15
15
|
try {
|
|
16
16
|
const { http: host, token } = await this.endpointProvider.getEndpoints();
|
|
17
|
-
const response = await fetch(host, {
|
|
17
|
+
const response = await this.fetch(host, {
|
|
18
18
|
method: 'POST',
|
|
19
19
|
headers: {
|
|
20
20
|
'Content-Type': 'application/json',
|
|
@@ -118,6 +118,7 @@ export class PushPullSync extends EventSubscriber {
|
|
|
118
118
|
this.meta = meta;
|
|
119
119
|
this.presence = presence;
|
|
120
120
|
this.endpointProvider = endpointProvider;
|
|
121
|
+
this.fetch = fetch;
|
|
121
122
|
this.heartbeat = new Heartbeat({
|
|
122
123
|
interval,
|
|
123
124
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PushPullSync.js","sourceRoot":"","sources":["../../../src/sync/PushPullSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,eAAe,EAEf,gBAAgB,EAChB,sBAAsB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI3C,MAAM,OAAO,YACZ,SAAQ,eAAoC;
|
|
1
|
+
{"version":3,"file":"PushPullSync.js","sourceRoot":"","sources":["../../../src/sync/PushPullSync.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,18 @@ export interface ServerSyncEndpointProviderConfig {
|
|
|
6
6
|
*/
|
|
7
7
|
authEndpoint?: string;
|
|
8
8
|
/**
|
|
9
|
-
* A custom
|
|
10
|
-
* data.
|
|
9
|
+
* A custom function to retrieve authorization
|
|
10
|
+
* data. Use whatever fetching mechanism you want.
|
|
11
11
|
*/
|
|
12
12
|
fetchAuth?: () => Promise<{
|
|
13
13
|
accessToken: string;
|
|
14
14
|
}>;
|
|
15
|
+
/**
|
|
16
|
+
* A spec-compliant fetch implementation. If not provided,
|
|
17
|
+
* the global fetch will be used. authEndpoint will
|
|
18
|
+
* be used to fetch the token.
|
|
19
|
+
*/
|
|
20
|
+
fetch?: typeof fetch;
|
|
15
21
|
}
|
|
16
22
|
export declare class ServerSyncEndpointProvider {
|
|
17
23
|
private config;
|
|
@@ -14,7 +14,8 @@ export class ServerSyncEndpointProvider {
|
|
|
14
14
|
result = await this.config.fetchAuth();
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
|
-
|
|
17
|
+
const fetchImpl = this.config.fetch || fetch;
|
|
18
|
+
result = await fetchImpl(this.config.authEndpoint, {
|
|
18
19
|
credentials: 'include',
|
|
19
20
|
}).then((res) => {
|
|
20
21
|
if (!res.ok) {
|