@mauryasumit/driftdb 2.0.1 → 3.0.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/README.md +70 -45
- package/dist/db.d.ts +19 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +66 -13
- package/dist/db.js.map +1 -1
- package/dist/storage/s3-adapter.d.ts +4 -4
- package/dist/storage/s3-adapter.d.ts.map +1 -1
- package/dist/storage/s3-adapter.js +8 -8
- package/dist/storage/s3-adapter.js.map +1 -1
- package/dist/sync/engine.d.ts.map +1 -1
- package/dist/sync/engine.js +12 -9
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/snapshot-manager.d.ts +2 -1
- package/dist/sync/snapshot-manager.d.ts.map +1 -1
- package/dist/sync/snapshot-manager.js +6 -5
- package/dist/sync/snapshot-manager.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/db.ts +97 -36
- package/src/storage/s3-adapter.ts +8 -8
- package/src/sync/engine.ts +44 -35
- package/src/sync/snapshot-manager.ts +34 -31
- package/src/types.ts +133 -130
package/README.md
CHANGED
|
@@ -109,12 +109,13 @@ npm install driftdb
|
|
|
109
109
|
### Schema-based API (recommended)
|
|
110
110
|
|
|
111
111
|
```typescript
|
|
112
|
-
import { DB, Column } from 'driftdb';
|
|
113
|
-
|
|
114
|
-
const db = new DB({
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
112
|
+
import { DB, Column } from 'driftdb';
|
|
113
|
+
|
|
114
|
+
const db = new DB({
|
|
115
|
+
dbName: 'myapp-prod',
|
|
116
|
+
sqlitePath: './data/myapp.sqlite',
|
|
117
|
+
s3Config: {
|
|
118
|
+
bucket: 'my-app-backups',
|
|
118
119
|
region: 'us-east-1',
|
|
119
120
|
},
|
|
120
121
|
});
|
|
@@ -151,10 +152,10 @@ db.close();
|
|
|
151
152
|
### Class-based API
|
|
152
153
|
|
|
153
154
|
```typescript
|
|
154
|
-
import { DB, Model, Column } from 'driftdb';
|
|
155
|
-
import type { ModelSchema } from 'driftdb';
|
|
156
|
-
|
|
157
|
-
const db = new DB({ sqlitePath: './data.sqlite' });
|
|
155
|
+
import { DB, Model, Column } from 'driftdb';
|
|
156
|
+
import type { ModelSchema } from 'driftdb';
|
|
157
|
+
|
|
158
|
+
const db = new DB({ dbName: 'users-db', sqlitePath: './data.sqlite' });
|
|
158
159
|
|
|
159
160
|
class User extends Model {
|
|
160
161
|
static tableName = 'users';
|
|
@@ -431,7 +432,7 @@ const schema = {
|
|
|
431
432
|
- Serializes them into a compressed (optionally encrypted) JSON batch
|
|
432
433
|
- Uploads the batch to S3
|
|
433
434
|
- Marks those entries as synced in SQLite
|
|
434
|
-
- Updates the
|
|
435
|
+
- Updates the database manifest on S3
|
|
435
436
|
- If `latestSequence % snapshotEveryNLogs === 0`, enqueues a snapshot job
|
|
436
437
|
|
|
437
438
|
3. **On crash/restart**, the sync engine calls `resetStuck()` on the queue, which re-queues any jobs that were "processing" when the process died. Since S3 keys are deterministic, re-uploading is safe.
|
|
@@ -449,16 +450,34 @@ const schema = {
|
|
|
449
450
|
manifest.json ← pointer to latest snapshot + sequence
|
|
450
451
|
```
|
|
451
452
|
|
|
452
|
-
**`manifest.json` example:**
|
|
453
|
-
```json
|
|
454
|
-
{
|
|
455
|
-
"
|
|
456
|
-
"
|
|
457
|
-
"
|
|
458
|
-
"
|
|
459
|
-
"
|
|
460
|
-
|
|
461
|
-
|
|
453
|
+
**`manifest.json` example:**
|
|
454
|
+
```json
|
|
455
|
+
{
|
|
456
|
+
"dbName": "crm-prod",
|
|
457
|
+
"nodeId": "a1b2c3d4e5f6",
|
|
458
|
+
"latestSnapshotKey": "databases/crm-prod/nodes/a1b2c3d4e5f6/snapshots/1704067200000.sqlite",
|
|
459
|
+
"latestSnapshotTimestamp": 1704067200000,
|
|
460
|
+
"latestLogSequence": 1500,
|
|
461
|
+
"updatedAt": 1704070800000
|
|
462
|
+
}
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
Current releases use a database-scoped layout so multiple logical databases can share one bucket safely:
|
|
466
|
+
|
|
467
|
+
```text
|
|
468
|
+
{prefix}/
|
|
469
|
+
databases/{dbName}/
|
|
470
|
+
manifest.json
|
|
471
|
+
nodes/{nodeId}/
|
|
472
|
+
logs/
|
|
473
|
+
snapshots/
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
`dbName` is required in `DBConfig`. DriftDB uses it to:
|
|
477
|
+
|
|
478
|
+
- isolate each application database under `databases/{dbName}`
|
|
479
|
+
- restore the latest snapshot after a local SQLite file is deleted
|
|
480
|
+
- persist the local `nodeId` for that selected database so restarts reuse the same node identity
|
|
462
481
|
|
|
463
482
|
**Log batch example:**
|
|
464
483
|
```json
|
|
@@ -507,10 +526,11 @@ Both are optional and apply to S3 uploads only. Local SQLite is never compressed
|
|
|
507
526
|
Enabled by default (`compression: true`). Uses Node.js built-in `zlib` (gzip, `Z_BEST_SPEED`). Typical JSON log batches compress 60–80%.
|
|
508
527
|
|
|
509
528
|
```typescript
|
|
510
|
-
const db = new DB({
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
529
|
+
const db = new DB({
|
|
530
|
+
dbName: 'myapp-prod',
|
|
531
|
+
sqlitePath: './data.sqlite',
|
|
532
|
+
s3Config: { bucket: 'my-bucket', region: 'us-east-1' },
|
|
533
|
+
compression: true, // default: true
|
|
514
534
|
});
|
|
515
535
|
```
|
|
516
536
|
|
|
@@ -519,10 +539,11 @@ const db = new DB({
|
|
|
519
539
|
Uses AES-256-GCM via Node.js built-in `crypto`. Encryption happens **after** compression. Each upload uses a fresh random IV, and the auth tag is prepended to the ciphertext.
|
|
520
540
|
|
|
521
541
|
```typescript
|
|
522
|
-
const db = new DB({
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
542
|
+
const db = new DB({
|
|
543
|
+
dbName: 'myapp-prod',
|
|
544
|
+
sqlitePath: './data.sqlite',
|
|
545
|
+
s3Config: { bucket: 'my-bucket', region: 'us-east-1' },
|
|
546
|
+
encryption: {
|
|
526
547
|
key: 'a'.repeat(64), // 64 hex chars = 32 bytes = AES-256
|
|
527
548
|
},
|
|
528
549
|
});
|
|
@@ -559,10 +580,11 @@ attempt 5: 8000ms delay (capped at maxDelayMs)
|
|
|
559
580
|
|
|
560
581
|
Configure via `retryConfig`:
|
|
561
582
|
```typescript
|
|
562
|
-
const db = new DB({
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
583
|
+
const db = new DB({
|
|
584
|
+
dbName: 'myapp-prod',
|
|
585
|
+
retryConfig: {
|
|
586
|
+
maxRetries: 5,
|
|
587
|
+
baseDelayMs: 500,
|
|
566
588
|
maxDelayMs: 30_000,
|
|
567
589
|
},
|
|
568
590
|
});
|
|
@@ -577,7 +599,7 @@ const db = new DB({
|
|
|
577
599
|
### Verifying DB health on startup
|
|
578
600
|
|
|
579
601
|
```typescript
|
|
580
|
-
const db = new DB({ sqlitePath: './data.sqlite' });
|
|
602
|
+
const db = new DB({ dbName: 'myapp-prod', sqlitePath: './data.sqlite' });
|
|
581
603
|
|
|
582
604
|
if (!db.integrityCheck()) {
|
|
583
605
|
console.error('DB corrupted — restore from S3 snapshot');
|
|
@@ -633,8 +655,9 @@ db.transaction(() => {
|
|
|
633
655
|
## Configuration Reference
|
|
634
656
|
|
|
635
657
|
```typescript
|
|
636
|
-
interface DBConfig {
|
|
637
|
-
|
|
658
|
+
interface DBConfig {
|
|
659
|
+
dbName: string; // Required logical database name used for S3 isolation/restores
|
|
660
|
+
sqlitePath: string; // Path to SQLite file, or ':memory:'
|
|
638
661
|
|
|
639
662
|
s3Config?: {
|
|
640
663
|
bucket: string; // S3 bucket name
|
|
@@ -646,7 +669,7 @@ interface DBConfig {
|
|
|
646
669
|
forcePathStyle?: boolean; // Required for MinIO (default: true if endpoint set)
|
|
647
670
|
};
|
|
648
671
|
|
|
649
|
-
nodeId?: string; // Stable ID for this
|
|
672
|
+
nodeId?: string; // Stable ID for this local node within the selected dbName
|
|
650
673
|
autoSync?: boolean; // Start sync automatically (default: true if s3Config set)
|
|
651
674
|
syncIntervalMs?: number; // How often to sync (default: 5000ms)
|
|
652
675
|
snapshotEveryNLogs?: number; // Take snapshot every N log entries (default: 1000)
|
|
@@ -672,9 +695,10 @@ interface DBConfig {
|
|
|
672
695
|
### Using with LocalStack / MinIO
|
|
673
696
|
|
|
674
697
|
```typescript
|
|
675
|
-
const db = new DB({
|
|
676
|
-
|
|
677
|
-
|
|
698
|
+
const db = new DB({
|
|
699
|
+
dbName: 'local-dev',
|
|
700
|
+
sqlitePath: './local.sqlite',
|
|
701
|
+
s3Config: {
|
|
678
702
|
bucket: 'local-test',
|
|
679
703
|
region: 'us-east-1',
|
|
680
704
|
endpoint: 'http://localhost:4566', // LocalStack
|
|
@@ -690,10 +714,11 @@ const db = new DB({
|
|
|
690
714
|
Disable auto-sync and flush on demand:
|
|
691
715
|
|
|
692
716
|
```typescript
|
|
693
|
-
const db = new DB({
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
717
|
+
const db = new DB({
|
|
718
|
+
dbName: 'manual-sync-demo',
|
|
719
|
+
sqlitePath: './data.sqlite',
|
|
720
|
+
s3Config: { bucket: 'my-bucket', region: 'us-east-1' },
|
|
721
|
+
autoSync: false,
|
|
697
722
|
});
|
|
698
723
|
|
|
699
724
|
// Do work...
|
|
@@ -722,7 +747,7 @@ console.log({
|
|
|
722
747
|
### Raw SQL access
|
|
723
748
|
|
|
724
749
|
```typescript
|
|
725
|
-
const db = new DB({ sqlitePath: './data.sqlite' });
|
|
750
|
+
const db = new DB({ dbName: 'analytics', sqlitePath: './data.sqlite' });
|
|
726
751
|
|
|
727
752
|
// Via repository
|
|
728
753
|
const Users = db.define('users', schema);
|
package/dist/db.d.ts
CHANGED
|
@@ -10,6 +10,25 @@ export declare class DB {
|
|
|
10
10
|
private readonly syncEngine;
|
|
11
11
|
private readonly repos;
|
|
12
12
|
constructor(config: DBConfig);
|
|
13
|
+
/**
|
|
14
|
+
* Async factory — use this instead of `new DB()` when you need S3 restore on startup.
|
|
15
|
+
*
|
|
16
|
+
* - If `restoreFromS3: true` and the local SQLite file does not exist, it downloads
|
|
17
|
+
* the latest snapshot from S3 before opening the database.
|
|
18
|
+
* - `dbName` is required and namespaces each logical database in S3.
|
|
19
|
+
* - `nodeId` identifies the current local node within that logical database.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const db = await DB.open({
|
|
23
|
+
* dbName: 'my-app-db',
|
|
24
|
+
* sqlitePath: './data/app.sqlite',
|
|
25
|
+
* nodeId: 'server-1',
|
|
26
|
+
* restoreFromS3: true, // auto-restore if local file is missing
|
|
27
|
+
* s3Config: { bucket: '...', region: '...' },
|
|
28
|
+
* });
|
|
29
|
+
*/
|
|
30
|
+
static open(config: DBConfig): Promise<DB>;
|
|
31
|
+
private static restoreSnapshot;
|
|
13
32
|
private getOrCreateNodeId;
|
|
14
33
|
define<S extends ModelSchema>(tableName: string, schema: S): Repository<BaseRecord & {
|
|
15
34
|
[K in keyof S]: unknown;
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIjD,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C,qBAAa,EAAE;IACb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6C;gBAEvD,MAAM,EAAE,QAAQ;IAmC5B;;;;;;;;;;;;;;;;OAgBG;WACU,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;mBAY3B,eAAe;IAqBpC,OAAO,CAAC,iBAAiB;IAuBzB,MAAM,CAAC,CAAC,SAAS,WAAW,EAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,GACR,UAAU,CAAC,UAAU,GAAG;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO;KAAE,CAAC;IAWvD,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAmBhE,SAAS,IAAI,MAAM;IAInB,UAAU,IAAI,QAAQ,CAAC,WAAW,CAAC;IAI7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,SAAS,IAAI,IAAI;IAIjB,QAAQ,IAAI,IAAI;IAIhB,GAAG,IAAI,QAAQ,CAAC,QAAQ;IAIxB,KAAK,IAAI,IAAI;IAKb,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAI9B,MAAM,IAAI,IAAI;IAId,cAAc,IAAI,OAAO;CAM1B"}
|
package/dist/db.js
CHANGED
|
@@ -9,6 +9,7 @@ const fs_1 = require("fs");
|
|
|
9
9
|
const path_1 = require("path");
|
|
10
10
|
const repository_js_1 = require("./orm/repository.js");
|
|
11
11
|
const engine_js_1 = require("./sync/engine.js");
|
|
12
|
+
const s3_adapter_js_1 = require("./storage/s3-adapter.js");
|
|
12
13
|
const id_js_1 = require("./utils/id.js");
|
|
13
14
|
const META_SCHEMA = `
|
|
14
15
|
CREATE TABLE IF NOT EXISTS _driftdb_meta (
|
|
@@ -19,42 +20,94 @@ const META_SCHEMA = `
|
|
|
19
20
|
class DB {
|
|
20
21
|
constructor(config) {
|
|
21
22
|
this.repos = new Map();
|
|
22
|
-
|
|
23
|
-
if (
|
|
24
|
-
|
|
23
|
+
const dbName = config.dbName.trim();
|
|
24
|
+
if (!dbName) {
|
|
25
|
+
throw new Error('DBConfig.dbName is required');
|
|
26
|
+
}
|
|
27
|
+
this.config = {
|
|
28
|
+
...config,
|
|
29
|
+
dbName,
|
|
30
|
+
};
|
|
31
|
+
if (this.config.sqlitePath !== ':memory:') {
|
|
32
|
+
const dir = (0, path_1.dirname)(this.config.sqlitePath);
|
|
25
33
|
if (dir && dir !== '.') {
|
|
26
34
|
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
27
35
|
}
|
|
28
36
|
}
|
|
29
|
-
this.sqliteDb = new better_sqlite3_1.default(config.sqlitePath);
|
|
37
|
+
this.sqliteDb = new better_sqlite3_1.default(this.config.sqlitePath);
|
|
30
38
|
this.sqliteDb.pragma('journal_mode = WAL');
|
|
31
39
|
this.sqliteDb.pragma('synchronous = NORMAL');
|
|
32
40
|
this.sqliteDb.pragma('foreign_keys = ON');
|
|
33
41
|
this.sqliteDb.pragma('cache_size = -64000');
|
|
34
42
|
this.sqliteDb.pragma('temp_store = MEMORY');
|
|
35
43
|
this.sqliteDb.exec(META_SCHEMA);
|
|
36
|
-
this.nodeId = this.getOrCreateNodeId(config.nodeId);
|
|
37
|
-
this.syncEngine = new engine_js_1.SyncEngine(this.sqliteDb, this.nodeId, config);
|
|
38
|
-
if (config.autoSync !== false && config.s3Config) {
|
|
44
|
+
this.nodeId = this.getOrCreateNodeId(this.config.nodeId);
|
|
45
|
+
this.syncEngine = new engine_js_1.SyncEngine(this.sqliteDb, this.nodeId, this.config);
|
|
46
|
+
if (this.config.autoSync !== false && this.config.s3Config) {
|
|
39
47
|
this.syncEngine.start();
|
|
40
48
|
}
|
|
41
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Async factory — use this instead of `new DB()` when you need S3 restore on startup.
|
|
52
|
+
*
|
|
53
|
+
* - If `restoreFromS3: true` and the local SQLite file does not exist, it downloads
|
|
54
|
+
* the latest snapshot from S3 before opening the database.
|
|
55
|
+
* - `dbName` is required and namespaces each logical database in S3.
|
|
56
|
+
* - `nodeId` identifies the current local node within that logical database.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* const db = await DB.open({
|
|
60
|
+
* dbName: 'my-app-db',
|
|
61
|
+
* sqlitePath: './data/app.sqlite',
|
|
62
|
+
* nodeId: 'server-1',
|
|
63
|
+
* restoreFromS3: true, // auto-restore if local file is missing
|
|
64
|
+
* s3Config: { bucket: '...', region: '...' },
|
|
65
|
+
* });
|
|
66
|
+
*/
|
|
67
|
+
static async open(config) {
|
|
68
|
+
if (config.restoreFromS3 &&
|
|
69
|
+
config.s3Config &&
|
|
70
|
+
config.sqlitePath !== ':memory:' &&
|
|
71
|
+
!(0, fs_1.existsSync)(config.sqlitePath)) {
|
|
72
|
+
await DB.restoreSnapshot(config);
|
|
73
|
+
}
|
|
74
|
+
return new DB(config);
|
|
75
|
+
}
|
|
76
|
+
static async restoreSnapshot(config) {
|
|
77
|
+
const s3 = new s3_adapter_js_1.S3Adapter(config.s3Config);
|
|
78
|
+
const uploadOptions = {
|
|
79
|
+
compress: config.compression !== false,
|
|
80
|
+
encryptionKey: config.encryption?.key,
|
|
81
|
+
};
|
|
82
|
+
const manifest = await s3.getManifest(config.dbName);
|
|
83
|
+
if (!manifest?.latestSnapshotKey) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
const data = await s3.download(manifest.latestSnapshotKey, uploadOptions);
|
|
87
|
+
const dir = (0, path_1.dirname)(config.sqlitePath);
|
|
88
|
+
if (dir && dir !== '.') {
|
|
89
|
+
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
90
|
+
}
|
|
91
|
+
(0, fs_1.writeFileSync)(config.sqlitePath, data);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
42
94
|
getOrCreateNodeId(preferred) {
|
|
95
|
+
const metaKey = `nodeId:${this.config.dbName}`;
|
|
43
96
|
if (preferred) {
|
|
44
97
|
this.sqliteDb
|
|
45
|
-
.prepare(`INSERT OR REPLACE INTO _driftdb_meta (key, value) VALUES (
|
|
46
|
-
.run(preferred);
|
|
98
|
+
.prepare(`INSERT OR REPLACE INTO _driftdb_meta (key, value) VALUES (?, ?)`)
|
|
99
|
+
.run(metaKey, preferred);
|
|
47
100
|
return preferred;
|
|
48
101
|
}
|
|
49
102
|
const row = this.sqliteDb
|
|
50
|
-
.prepare(`SELECT value FROM _driftdb_meta WHERE key = 'nodeId'`)
|
|
51
|
-
.get();
|
|
103
|
+
.prepare(`SELECT value FROM _driftdb_meta WHERE key = ? OR key = 'nodeId' ORDER BY CASE WHEN key = ? THEN 0 ELSE 1 END LIMIT 1`)
|
|
104
|
+
.get(metaKey, metaKey);
|
|
52
105
|
if (row)
|
|
53
106
|
return row.value;
|
|
54
107
|
const id = (0, id_js_1.generateNodeId)();
|
|
55
108
|
this.sqliteDb
|
|
56
|
-
.prepare(`INSERT INTO _driftdb_meta (key, value) VALUES (
|
|
57
|
-
.run(id);
|
|
109
|
+
.prepare(`INSERT INTO _driftdb_meta (key, value) VALUES (?, ?)`)
|
|
110
|
+
.run(metaKey, id);
|
|
58
111
|
return id;
|
|
59
112
|
}
|
|
60
113
|
define(tableName, schema) {
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA2C;AAE3C,
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,9 @@ export declare class S3Adapter {
|
|
|
13
13
|
download(path: string, options?: S3UploadOptions): Promise<Buffer>;
|
|
14
14
|
exists(path: string): Promise<boolean>;
|
|
15
15
|
listKeys(prefix: string): Promise<string[]>;
|
|
16
|
-
putManifest(
|
|
17
|
-
getManifest(
|
|
18
|
-
logKey(nodeId: string, fromSeq: number, toSeq: number): string;
|
|
19
|
-
snapshotKey(nodeId: string, timestamp: number): string;
|
|
16
|
+
putManifest(dbName: string, manifest: SyncManifest): Promise<void>;
|
|
17
|
+
getManifest(dbName: string): Promise<SyncManifest | null>;
|
|
18
|
+
logKey(dbName: string, nodeId: string, fromSeq: number, toSeq: number): string;
|
|
19
|
+
snapshotKey(dbName: string, nodeId: string, timestamp: number): string;
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=s3-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/s3-adapter.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,QAAQ;IAsB5B,OAAO,CAAC,GAAG;IAIL,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAyCV,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IA0BZ,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWtC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0B3C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAO/D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"s3-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/s3-adapter.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,QAAQ;IAsB5B,OAAO,CAAC,GAAG;IAIL,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAyCV,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IA0BZ,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWtC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0B3C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAO/D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAI9E,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAGvE"}
|
|
@@ -111,22 +111,22 @@ class S3Adapter {
|
|
|
111
111
|
} while (continuationToken);
|
|
112
112
|
return keys;
|
|
113
113
|
}
|
|
114
|
-
async putManifest(
|
|
114
|
+
async putManifest(dbName, manifest) {
|
|
115
115
|
const data = Buffer.from(JSON.stringify(manifest), 'utf8');
|
|
116
|
-
await this.upload(`
|
|
116
|
+
await this.upload(`databases/${dbName}/manifest.json`, data);
|
|
117
117
|
}
|
|
118
|
-
async getManifest(
|
|
119
|
-
const path = `
|
|
118
|
+
async getManifest(dbName) {
|
|
119
|
+
const path = `databases/${dbName}/manifest.json`;
|
|
120
120
|
if (!(await this.exists(path)))
|
|
121
121
|
return null;
|
|
122
122
|
const data = await this.download(path);
|
|
123
123
|
return JSON.parse(data.toString('utf8'));
|
|
124
124
|
}
|
|
125
|
-
logKey(nodeId, fromSeq, toSeq) {
|
|
126
|
-
return `nodes/${nodeId}/logs/${String(fromSeq).padStart(12, '0')}-${String(toSeq).padStart(12, '0')}.json`;
|
|
125
|
+
logKey(dbName, nodeId, fromSeq, toSeq) {
|
|
126
|
+
return `databases/${dbName}/nodes/${nodeId}/logs/${String(fromSeq).padStart(12, '0')}-${String(toSeq).padStart(12, '0')}.json`;
|
|
127
127
|
}
|
|
128
|
-
snapshotKey(nodeId, timestamp) {
|
|
129
|
-
return `nodes/${nodeId}/snapshots/${timestamp}.sqlite`;
|
|
128
|
+
snapshotKey(dbName, nodeId, timestamp) {
|
|
129
|
+
return `databases/${dbName}/nodes/${nodeId}/snapshots/${timestamp}.sqlite`;
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
exports.S3Adapter = S3Adapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-adapter.js","sourceRoot":"","sources":["../../src/storage/s3-adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"s3-adapter.js","sourceRoot":"","sources":["../../src/storage/s3-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAW,WAAW,EAA2C,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAmB;IAEtC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,OAAO,CAQb;gBAEU,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAW,WAAW,EAA2C,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAmB;IAEtC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,OAAO,CAQb;gBAEU,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;IA6BnE,YAAY,IAAI,SAAS;IAIzB,QAAQ,IAAI,SAAS;IAIrB,KAAK,IAAI,IAAI;IAeb,IAAI,IAAI,IAAI;IAQN,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,UAAU,IAAI,QAAQ,CAAC,WAAW,CAAC;IAQnC,OAAO,CAAC,cAAc;YAUR,IAAI;YAcJ,kBAAkB;YAwBlB,YAAY;YAUZ,UAAU;YA+DV,aAAa;IAcrB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAcvC"}
|
package/dist/sync/engine.js
CHANGED
|
@@ -36,7 +36,7 @@ class SyncEngine {
|
|
|
36
36
|
compress: config.compression !== false,
|
|
37
37
|
encryptionKey: config.encryption?.key,
|
|
38
38
|
};
|
|
39
|
-
this.snapshotManager = new snapshot_manager_js_1.SnapshotManager(db, this.s3, nodeId, config.sqlitePath, uploadOptions);
|
|
39
|
+
this.snapshotManager = new snapshot_manager_js_1.SnapshotManager(db, this.s3, config.dbName, nodeId, config.sqlitePath, uploadOptions);
|
|
40
40
|
}
|
|
41
41
|
else {
|
|
42
42
|
this.s3 = null;
|
|
@@ -111,7 +111,7 @@ class SyncEngine {
|
|
|
111
111
|
if (pending.length === 0)
|
|
112
112
|
return;
|
|
113
113
|
const batch = this.changeLog.buildBatch(pending);
|
|
114
|
-
const s3Key = this.s3.logKey(this.nodeId, batch.fromSequence, batch.toSequence);
|
|
114
|
+
const s3Key = this.s3.logKey(this.config.dbName, this.nodeId, batch.fromSequence, batch.toSequence);
|
|
115
115
|
const alreadyQueued = this.queue.hasPendingOfType('upload_log');
|
|
116
116
|
if (!alreadyQueued) {
|
|
117
117
|
const payload = {
|
|
@@ -140,9 +140,10 @@ class SyncEngine {
|
|
|
140
140
|
const batchBuffer = Buffer.from(JSON.stringify(p.batch), 'utf8');
|
|
141
141
|
await this.s3.upload(p.s3Key, batchBuffer, uploadOptions);
|
|
142
142
|
this.changeLog.markSynced(p.fromSequence, p.toSequence);
|
|
143
|
-
const manifest = await this.s3.getManifest(this.
|
|
143
|
+
const manifest = await this.s3.getManifest(this.config.dbName);
|
|
144
144
|
const latestSeq = Math.max(manifest?.latestLogSequence ?? 0, p.toSequence);
|
|
145
|
-
await this.s3.putManifest(this.
|
|
145
|
+
await this.s3.putManifest(this.config.dbName, {
|
|
146
|
+
dbName: this.config.dbName,
|
|
146
147
|
nodeId: this.nodeId,
|
|
147
148
|
latestSnapshotKey: manifest?.latestSnapshotKey ?? null,
|
|
148
149
|
latestSnapshotTimestamp: manifest?.latestSnapshotTimestamp ?? null,
|
|
@@ -157,8 +158,9 @@ class SyncEngine {
|
|
|
157
158
|
const p = JSON.parse(job.payload);
|
|
158
159
|
if (this.snapshotManager) {
|
|
159
160
|
const { key, timestamp } = await this.snapshotManager.takeAndUpload();
|
|
160
|
-
const manifest = await this.s3.getManifest(this.
|
|
161
|
-
await this.s3.putManifest(this.
|
|
161
|
+
const manifest = await this.s3.getManifest(this.config.dbName);
|
|
162
|
+
await this.s3.putManifest(this.config.dbName, {
|
|
163
|
+
dbName: this.config.dbName,
|
|
162
164
|
nodeId: this.nodeId,
|
|
163
165
|
latestSnapshotKey: key,
|
|
164
166
|
latestSnapshotTimestamp: timestamp,
|
|
@@ -184,7 +186,7 @@ class SyncEngine {
|
|
|
184
186
|
if (!this.queue.hasPendingOfType('upload_snapshot')) {
|
|
185
187
|
const payload = {
|
|
186
188
|
timestamp: Date.now(),
|
|
187
|
-
s3Key: this.s3.snapshotKey(this.nodeId, Date.now()),
|
|
189
|
+
s3Key: this.s3.snapshotKey(this.config.dbName, this.nodeId, Date.now()),
|
|
188
190
|
dbPath: this.config.sqlitePath,
|
|
189
191
|
};
|
|
190
192
|
this.queue.enqueue('upload_snapshot', payload);
|
|
@@ -195,8 +197,9 @@ class SyncEngine {
|
|
|
195
197
|
if (!this.snapshotManager || !this.s3)
|
|
196
198
|
return;
|
|
197
199
|
const { key, timestamp } = await this.snapshotManager.takeAndUpload();
|
|
198
|
-
const manifest = await this.s3.getManifest(this.
|
|
199
|
-
await this.s3.putManifest(this.
|
|
200
|
+
const manifest = await this.s3.getManifest(this.config.dbName);
|
|
201
|
+
await this.s3.putManifest(this.config.dbName, {
|
|
202
|
+
dbName: this.config.dbName,
|
|
200
203
|
nodeId: this.nodeId,
|
|
201
204
|
latestSnapshotKey: key,
|
|
202
205
|
latestSnapshotTimestamp: timestamp,
|
package/dist/sync/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,11 @@ import type { S3UploadOptions } from '../storage/s3-adapter.js';
|
|
|
4
4
|
export declare class SnapshotManager {
|
|
5
5
|
private readonly db;
|
|
6
6
|
private readonly s3;
|
|
7
|
+
private readonly dbName;
|
|
7
8
|
private readonly nodeId;
|
|
8
9
|
private readonly sqlitePath;
|
|
9
10
|
private readonly uploadOptions;
|
|
10
|
-
constructor(db: Database.Database, s3: S3Adapter, nodeId: string, sqlitePath: string, uploadOptions: S3UploadOptions);
|
|
11
|
+
constructor(db: Database.Database, s3: S3Adapter, dbName: string, nodeId: string, sqlitePath: string, uploadOptions: S3UploadOptions);
|
|
11
12
|
takeAndUpload(): Promise<{
|
|
12
13
|
key: string;
|
|
13
14
|
timestamp: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-manager.d.ts","sourceRoot":"","sources":["../../src/sync/snapshot-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;gBAG9C,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"snapshot-manager.d.ts","sourceRoot":"","sources":["../../src/sync/snapshot-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;gBAG9C,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,eAAe;IAU1B,aAAa,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAiC5D,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;CAiBxC"}
|
|
@@ -39,9 +39,10 @@ const path_1 = require("path");
|
|
|
39
39
|
const os_1 = require("os");
|
|
40
40
|
const fs_2 = require("fs");
|
|
41
41
|
class SnapshotManager {
|
|
42
|
-
constructor(db, s3, nodeId, sqlitePath, uploadOptions) {
|
|
42
|
+
constructor(db, s3, dbName, nodeId, sqlitePath, uploadOptions) {
|
|
43
43
|
this.db = db;
|
|
44
44
|
this.s3 = s3;
|
|
45
|
+
this.dbName = dbName;
|
|
45
46
|
this.nodeId = nodeId;
|
|
46
47
|
this.sqlitePath = sqlitePath;
|
|
47
48
|
this.uploadOptions = uploadOptions;
|
|
@@ -53,14 +54,14 @@ class SnapshotManager {
|
|
|
53
54
|
this.db.exec('PRAGMA wal_checkpoint(FULL)');
|
|
54
55
|
if (this.sqlitePath === ':memory:') {
|
|
55
56
|
const backup = this.db.serialize();
|
|
56
|
-
await this.s3.upload(this.s3.snapshotKey(this.nodeId, timestamp), Buffer.from(backup), this.uploadOptions);
|
|
57
|
+
await this.s3.upload(this.s3.snapshotKey(this.dbName, this.nodeId, timestamp), Buffer.from(backup), this.uploadOptions);
|
|
57
58
|
}
|
|
58
59
|
else {
|
|
59
60
|
(0, fs_2.copyFileSync)(this.sqlitePath, tempPath);
|
|
60
61
|
const data = (0, fs_1.readFileSync)(tempPath);
|
|
61
|
-
await this.s3.upload(this.s3.snapshotKey(this.nodeId, timestamp), data, this.uploadOptions);
|
|
62
|
+
await this.s3.upload(this.s3.snapshotKey(this.dbName, this.nodeId, timestamp), data, this.uploadOptions);
|
|
62
63
|
}
|
|
63
|
-
const key = this.s3.snapshotKey(this.nodeId, timestamp);
|
|
64
|
+
const key = this.s3.snapshotKey(this.dbName, this.nodeId, timestamp);
|
|
64
65
|
return { key, timestamp };
|
|
65
66
|
}
|
|
66
67
|
finally {
|
|
@@ -73,7 +74,7 @@ class SnapshotManager {
|
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
76
|
async restoreLatest() {
|
|
76
|
-
const manifest = await this.s3.getManifest(this.
|
|
77
|
+
const manifest = await this.s3.getManifest(this.dbName);
|
|
77
78
|
if (!manifest?.latestSnapshotKey)
|
|
78
79
|
return false;
|
|
79
80
|
const data = await this.s3.download(manifest.latestSnapshotKey, this.uploadOptions);
|