@atproto/repo 0.9.1 → 0.10.0-next.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/CHANGELOG.md +24 -0
- package/dist/block-map.js +10 -19
- package/dist/block-map.js.map +1 -1
- package/dist/car.d.ts +2 -2
- package/dist/car.d.ts.map +1 -1
- package/dist/car.js +30 -104
- package/dist/car.js.map +1 -1
- package/dist/cid-set.js +4 -14
- package/dist/cid-set.js.map +1 -1
- package/dist/data-diff.d.ts +3 -3
- package/dist/data-diff.d.ts.map +1 -1
- package/dist/data-diff.js +11 -45
- package/dist/data-diff.js.map +1 -1
- package/dist/error.js +11 -53
- package/dist/error.js.map +1 -1
- package/dist/index.d.ts +11 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -27
- package/dist/index.js.map +1 -1
- package/dist/logger.js +3 -6
- package/dist/logger.js.map +1 -1
- package/dist/mst/diff.d.ts +2 -2
- package/dist/mst/diff.d.ts.map +1 -1
- package/dist/mst/diff.js +9 -14
- package/dist/mst/diff.js.map +1 -1
- package/dist/mst/index.d.ts +4 -4
- package/dist/mst/index.d.ts.map +1 -1
- package/dist/mst/index.js +4 -43
- package/dist/mst/index.js.map +1 -1
- package/dist/mst/mst.d.ts +14 -14
- package/dist/mst/mst.d.ts.map +1 -1
- package/dist/mst/mst.js +41 -118
- package/dist/mst/mst.js.map +1 -1
- package/dist/mst/util.d.ts +2 -2
- package/dist/mst/util.d.ts.map +1 -1
- package/dist/mst/util.js +29 -47
- package/dist/mst/util.js.map +1 -1
- package/dist/mst/walker.d.ts +1 -1
- package/dist/mst/walker.d.ts.map +1 -1
- package/dist/mst/walker.js +3 -23
- package/dist/mst/walker.js.map +1 -1
- package/dist/parse.d.ts +1 -1
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +12 -18
- package/dist/parse.js.map +1 -1
- package/dist/readable-repo.d.ts +3 -3
- package/dist/readable-repo.d.ts.map +1 -1
- package/dist/readable-repo.js +13 -77
- package/dist/readable-repo.js.map +1 -1
- package/dist/repo.d.ts +6 -6
- package/dist/repo.d.ts.map +1 -1
- package/dist/repo.js +31 -77
- package/dist/repo.js.map +1 -1
- package/dist/storage/index.d.ts +4 -4
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +4 -20
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/memory-blockstore.d.ts +4 -4
- package/dist/storage/memory-blockstore.d.ts.map +1 -1
- package/dist/storage/memory-blockstore.js +7 -27
- package/dist/storage/memory-blockstore.js.map +1 -1
- package/dist/storage/readable-blockstore.d.ts +1 -1
- package/dist/storage/readable-blockstore.d.ts.map +1 -1
- package/dist/storage/readable-blockstore.js +9 -13
- package/dist/storage/readable-blockstore.js.map +1 -1
- package/dist/storage/sync-storage.d.ts +2 -2
- package/dist/storage/sync-storage.d.ts.map +1 -1
- package/dist/storage/sync-storage.js +5 -19
- package/dist/storage/sync-storage.js.map +1 -1
- package/dist/storage/types.d.ts +2 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js +1 -5
- package/dist/storage/types.js.map +1 -1
- package/dist/sync/consumer.d.ts +3 -3
- package/dist/sync/consumer.d.ts.map +1 -1
- package/dist/sync/consumer.js +32 -75
- package/dist/sync/consumer.js.map +1 -1
- package/dist/sync/index.d.ts +2 -2
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +2 -18
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/provider.d.ts +2 -2
- package/dist/sync/provider.d.ts.map +1 -1
- package/dist/sync/provider.js +17 -55
- package/dist/sync/provider.js.map +1 -1
- package/dist/types.d.ts +39 -39
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +41 -44
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +2 -2
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +28 -75
- package/dist/util.js.map +1 -1
- package/jest.config.cjs +17 -0
- package/package.json +19 -14
- package/src/car.ts +5 -4
- package/src/data-diff.ts +3 -3
- package/src/index.ts +11 -11
- package/src/mst/diff.ts +3 -3
- package/src/mst/index.ts +4 -4
- package/src/mst/mst.ts +7 -7
- package/src/mst/util.ts +3 -3
- package/src/mst/walker.ts +1 -1
- package/src/parse.ts +3 -3
- package/src/readable-repo.ts +7 -7
- package/src/repo.ts +9 -9
- package/src/storage/index.ts +4 -4
- package/src/storage/memory-blockstore.ts +4 -4
- package/src/storage/readable-blockstore.ts +4 -4
- package/src/storage/sync-storage.ts +2 -2
- package/src/storage/types.ts +2 -2
- package/src/sync/consumer.ts +12 -8
- package/src/sync/index.ts +2 -2
- package/src/sync/provider.ts +7 -7
- package/src/types.ts +7 -7
- package/src/util.ts +2 -2
- package/tests/_util.ts +4 -4
- package/tests/car.test.ts +2 -2
- package/tests/commit-data.test.ts +7 -2
- package/tests/commit-proofs.test.ts +4 -4
- package/tests/covering-proofs.test.ts +4 -4
- package/tests/mst.test.ts +5 -5
- package/tests/proofs.test.ts +4 -4
- package/tests/repo.test.ts +4 -4
- package/tests/sync.test.ts +4 -4
- package/tsconfig.build.tsbuildinfo +1 -1
- package/jest.config.js +0 -7
package/dist/repo.js
CHANGED
|
@@ -1,76 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.Repo = void 0;
|
|
40
|
-
const common_web_1 = require("@atproto/common-web");
|
|
41
|
-
const lex_cbor_1 = require("@atproto/lex-cbor");
|
|
42
|
-
const lex_data_1 = require("@atproto/lex-data");
|
|
43
|
-
const block_map_1 = require("./block-map");
|
|
44
|
-
const cid_set_1 = require("./cid-set");
|
|
45
|
-
const data_diff_1 = require("./data-diff");
|
|
46
|
-
const logger_1 = __importDefault(require("./logger"));
|
|
47
|
-
const mst_1 = require("./mst");
|
|
48
|
-
const readable_repo_1 = require("./readable-repo");
|
|
49
|
-
const types_1 = require("./types");
|
|
50
|
-
const util = __importStar(require("./util"));
|
|
51
|
-
class Repo extends readable_repo_1.ReadableRepo {
|
|
1
|
+
import { TID } from '@atproto/common-web';
|
|
2
|
+
import { encode } from '@atproto/lex-cbor';
|
|
3
|
+
import { cidForCbor } from '@atproto/lex-data';
|
|
4
|
+
import { BlockMap } from './block-map.js';
|
|
5
|
+
import { CidSet } from './cid-set.js';
|
|
6
|
+
import { DataDiff } from './data-diff.js';
|
|
7
|
+
import log from './logger.js';
|
|
8
|
+
import { MST } from './mst/index.js';
|
|
9
|
+
import { ReadableRepo } from './readable-repo.js';
|
|
10
|
+
import { WriteOpAction, def, } from './types.js';
|
|
11
|
+
import * as util from './util.js';
|
|
12
|
+
export class Repo extends ReadableRepo {
|
|
52
13
|
constructor(params) {
|
|
53
14
|
super(params);
|
|
54
|
-
Object.defineProperty(this, "storage", {
|
|
55
|
-
enumerable: true,
|
|
56
|
-
configurable: true,
|
|
57
|
-
writable: true,
|
|
58
|
-
value: void 0
|
|
59
|
-
});
|
|
60
15
|
this.storage = params.storage;
|
|
61
16
|
}
|
|
62
17
|
static async formatInitCommit(storage, did, keypair, initialWrites = [], revOverride) {
|
|
63
|
-
const newBlocks = new
|
|
64
|
-
let data = await
|
|
18
|
+
const newBlocks = new BlockMap();
|
|
19
|
+
let data = await MST.create(storage);
|
|
65
20
|
for (const record of initialWrites) {
|
|
66
21
|
const cid = await newBlocks.add(record.record);
|
|
67
22
|
const dataKey = util.formatDataKey(record.collection, record.rkey);
|
|
68
23
|
data = await data.add(dataKey, cid);
|
|
69
24
|
}
|
|
70
25
|
const dataCid = await data.getPointer();
|
|
71
|
-
const diff = await
|
|
26
|
+
const diff = await DataDiff.of(data, null);
|
|
72
27
|
newBlocks.addMap(diff.newMstBlocks);
|
|
73
|
-
const rev = revOverride ??
|
|
28
|
+
const rev = revOverride ?? TID.nextStr();
|
|
74
29
|
const commit = await util.signCommit({
|
|
75
30
|
did,
|
|
76
31
|
version: 3,
|
|
@@ -102,9 +57,9 @@ class Repo extends readable_repo_1.ReadableRepo {
|
|
|
102
57
|
if (!commitCid) {
|
|
103
58
|
throw new Error('No cid provided and none in storage');
|
|
104
59
|
}
|
|
105
|
-
const commit = await storage.readObj(commitCid,
|
|
106
|
-
const data = await
|
|
107
|
-
|
|
60
|
+
const commit = await storage.readObj(commitCid, def.versionedCommit);
|
|
61
|
+
const data = await MST.load(storage, commit.data);
|
|
62
|
+
log.info({ did: commit.did }, 'loaded repo for');
|
|
108
63
|
return new Repo({
|
|
109
64
|
storage,
|
|
110
65
|
data,
|
|
@@ -114,30 +69,30 @@ class Repo extends readable_repo_1.ReadableRepo {
|
|
|
114
69
|
}
|
|
115
70
|
async formatCommit(toWrite, keypair) {
|
|
116
71
|
const writes = Array.isArray(toWrite) ? toWrite : [toWrite];
|
|
117
|
-
const leaves = new
|
|
72
|
+
const leaves = new BlockMap();
|
|
118
73
|
let data = this.data;
|
|
119
74
|
for (const write of writes) {
|
|
120
|
-
if (write.action ===
|
|
75
|
+
if (write.action === WriteOpAction.Create) {
|
|
121
76
|
const cid = await leaves.add(write.record);
|
|
122
77
|
const dataKey = write.collection + '/' + write.rkey;
|
|
123
78
|
data = await data.add(dataKey, cid);
|
|
124
79
|
}
|
|
125
|
-
else if (write.action ===
|
|
80
|
+
else if (write.action === WriteOpAction.Update) {
|
|
126
81
|
const cid = await leaves.add(write.record);
|
|
127
82
|
const dataKey = write.collection + '/' + write.rkey;
|
|
128
83
|
data = await data.update(dataKey, cid);
|
|
129
84
|
}
|
|
130
|
-
else if (write.action ===
|
|
85
|
+
else if (write.action === WriteOpAction.Delete) {
|
|
131
86
|
const dataKey = write.collection + '/' + write.rkey;
|
|
132
87
|
data = await data.delete(dataKey);
|
|
133
88
|
}
|
|
134
89
|
}
|
|
135
90
|
const dataCid = await data.getPointer();
|
|
136
|
-
const diff = await
|
|
91
|
+
const diff = await DataDiff.of(data, this.data);
|
|
137
92
|
const newBlocks = diff.newMstBlocks;
|
|
138
93
|
const removedCids = diff.removedCids;
|
|
139
94
|
const proofs = await Promise.all(writes.map((op) => data.getCoveringProof(util.formatDataKey(op.collection, op.rkey))));
|
|
140
|
-
const relevantBlocks = new
|
|
95
|
+
const relevantBlocks = new BlockMap();
|
|
141
96
|
for (const proof of proofs)
|
|
142
97
|
relevantBlocks.addMap(proof);
|
|
143
98
|
const addedLeaves = leaves.getMany(diff.newLeafCids.toList());
|
|
@@ -146,7 +101,7 @@ class Repo extends readable_repo_1.ReadableRepo {
|
|
|
146
101
|
}
|
|
147
102
|
newBlocks.addMap(addedLeaves.blocks);
|
|
148
103
|
relevantBlocks.addMap(addedLeaves.blocks);
|
|
149
|
-
const rev =
|
|
104
|
+
const rev = TID.nextStr(this.commit.rev);
|
|
150
105
|
const commit = await util.signCommit({
|
|
151
106
|
did: this.did,
|
|
152
107
|
version: 3,
|
|
@@ -154,8 +109,8 @@ class Repo extends readable_repo_1.ReadableRepo {
|
|
|
154
109
|
prev: null, // added for backwards compatibility with v2
|
|
155
110
|
data: dataCid,
|
|
156
111
|
}, keypair);
|
|
157
|
-
const commitBytes =
|
|
158
|
-
const commitCid = await
|
|
112
|
+
const commitBytes = encode(commit);
|
|
113
|
+
const commitCid = await cidForCbor(commitBytes);
|
|
159
114
|
if (!commitCid.equals(this.cid)) {
|
|
160
115
|
newBlocks.set(commitCid, commitBytes);
|
|
161
116
|
relevantBlocks.set(commitCid, commitBytes);
|
|
@@ -187,7 +142,7 @@ class Repo extends readable_repo_1.ReadableRepo {
|
|
|
187
142
|
prev: null, // added for backwards compatibility with v2
|
|
188
143
|
data: this.commit.data,
|
|
189
144
|
}, keypair);
|
|
190
|
-
const newBlocks = new
|
|
145
|
+
const newBlocks = new BlockMap();
|
|
191
146
|
const commitCid = await newBlocks.add(commit);
|
|
192
147
|
return {
|
|
193
148
|
cid: commitCid,
|
|
@@ -196,7 +151,7 @@ class Repo extends readable_repo_1.ReadableRepo {
|
|
|
196
151
|
prev: null,
|
|
197
152
|
newBlocks,
|
|
198
153
|
relevantBlocks: newBlocks,
|
|
199
|
-
removedCids: new
|
|
154
|
+
removedCids: new CidSet([this.cid]),
|
|
200
155
|
};
|
|
201
156
|
}
|
|
202
157
|
async resignCommit(rev, keypair) {
|
|
@@ -204,6 +159,5 @@ class Repo extends readable_repo_1.ReadableRepo {
|
|
|
204
159
|
return this.applyCommit(formatted);
|
|
205
160
|
}
|
|
206
161
|
}
|
|
207
|
-
|
|
208
|
-
exports.default = Repo;
|
|
162
|
+
export default Repo;
|
|
209
163
|
//# sourceMappingURL=repo.js.map
|
package/dist/repo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAyC;AAEzC,gDAA0C;AAC1C,gDAAmD;AACnD,2CAAsC;AACtC,uCAAkC;AAClC,2CAAsC;AACtC,sDAA0B;AAC1B,+BAA2B;AAC3B,mDAA8C;AAE9C,mCAOgB;AAChB,6CAA8B;AAS9B,MAAa,IAAK,SAAQ,4BAAY;IAGpC,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAA;QAHf;;;;;WAAoB;QAIlB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;IAC/B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,OAAoB,EACpB,GAAW,EACX,OAAuB,EACvB,gBAAkC,EAAE,EACpC,WAAoB;QAEpB,MAAM,SAAS,GAAG,IAAI,oBAAQ,EAAE,CAAA;QAEhC,IAAI,IAAI,GAAG,MAAM,SAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACpC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;YAClE,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QACrC,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,MAAM,IAAI,GAAG,MAAM,oBAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1C,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAEnC,MAAM,GAAG,GAAG,WAAW,IAAI,gBAAG,CAAC,OAAO,EAAE,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAClC;YACE,GAAG;YACH,OAAO,EAAE,CAAC;YACV,GAAG;YACH,IAAI,EAAE,IAAI,EAAE,4CAA4C;YACxD,IAAI,EAAE,OAAO;SACd,EACD,OAAO,CACR,CAAA;QACD,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC7C,OAAO;YACL,GAAG,EAAE,SAAS;YACd,GAAG;YACH,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;YACV,SAAS;YACT,cAAc,EAAE,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAA;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,OAAoB,EACpB,MAAkB;QAElB,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,OAAoB,EACpB,GAAW,EACX,OAAuB,EACvB,gBAAkC,EAAE;QAEpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CACxC,OAAO,EACP,GAAG,EACH,OAAO,EACP,aAAa,CACd,CAAA;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAoB,EAAE,GAAS;QAC/C,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QAClD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACxD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,WAAG,CAAC,eAAe,CAAC,CAAA;QACpE,MAAM,IAAI,GAAG,MAAM,SAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QACjD,gBAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAA;QAChD,OAAO,IAAI,IAAI,CAAC;YACd,OAAO;YACP,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;YACnC,GAAG,EAAE,SAAS;SACf,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,OAAwC,EACxC,OAAuB;QAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAC3D,MAAM,MAAM,GAAG,IAAI,oBAAQ,EAAE,CAAA;QAE7B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,qBAAa,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAA;gBACnD,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YACrC,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,qBAAa,CAAC,MAAM,EAAE,CAAC;gBACjD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAA;gBACnD,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YACxC,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,qBAAa,CAAC,MAAM,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAA;gBACnD,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,MAAM,IAAI,GAAG,MAAM,oBAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAA;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QAEpC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAChB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAClE,CACF,CAAA;QACD,MAAM,cAAc,GAAG,IAAI,oBAAQ,EAAE,CAAA;QACrC,KAAK,MAAM,KAAK,IAAI,MAAM;YAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAExD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;QAC7D,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,wBAAwB,WAAW,CAAC,OAAO,EAAE,CAAC,CAAA;QAChE,CAAC;QACD,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QACpC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAEzC,MAAM,GAAG,GAAG,gBAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAClC;YACE,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,CAAC;YACV,GAAG;YACH,IAAI,EAAE,IAAI,EAAE,4CAA4C;YACxD,IAAI,EAAE,OAAO;SACd,EACD,OAAO,CACR,CAAA;QAED,MAAM,WAAW,GAAG,IAAA,iBAAM,EAAC,MAAM,CAAC,CAAA;QAClC,MAAM,SAAS,GAAG,MAAM,IAAA,qBAAU,EAAC,WAAW,CAAC,CAAA;QAE/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;YACrC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;YAC1C,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO;YACL,GAAG,EAAE,SAAS;YACd,GAAG;YACH,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;YACtB,IAAI,EAAE,IAAI,CAAC,GAAG;YACd,SAAS;YACT,cAAc;YACd,WAAW;SACZ,CAAA;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAsB;QACtC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAAwC,EACxC,OAAuB;QAEvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACxD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAW,EAAE,OAAuB;QAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAClC;YACE,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,CAAC;YACV,GAAG;YACH,IAAI,EAAE,IAAI,EAAE,4CAA4C;YACxD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;SACvB,EACD,OAAO,CACR,CAAA;QACD,MAAM,SAAS,GAAG,IAAI,oBAAQ,EAAE,CAAA;QAChC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC7C,OAAO;YACL,GAAG,EAAE,SAAS;YACd,GAAG;YACH,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;YACV,SAAS;YACT,cAAc,EAAE,SAAS;YACzB,WAAW,EAAE,IAAI,gBAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACpC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,OAAuB;QACrD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;CACF;AA7MD,oBA6MC;AAED,kBAAe,IAAI,CAAA","sourcesContent":["import { TID } from '@atproto/common-web'\nimport * as crypto from '@atproto/crypto'\nimport { encode } from '@atproto/lex-cbor'\nimport { Cid, cidForCbor } from '@atproto/lex-data'\nimport { BlockMap } from './block-map'\nimport { CidSet } from './cid-set'\nimport { DataDiff } from './data-diff'\nimport log from './logger'\nimport { MST } from './mst'\nimport { ReadableRepo } from './readable-repo'\nimport { RepoStorage } from './storage'\nimport {\n Commit,\n CommitData,\n RecordCreateOp,\n RecordWriteOp,\n WriteOpAction,\n def,\n} from './types'\nimport * as util from './util'\n\ntype Params = {\n storage: RepoStorage\n data: MST\n commit: Commit\n cid: Cid\n}\n\nexport class Repo extends ReadableRepo {\n storage: RepoStorage\n\n constructor(params: Params) {\n super(params)\n this.storage = params.storage\n }\n\n static async formatInitCommit(\n storage: RepoStorage,\n did: string,\n keypair: crypto.Keypair,\n initialWrites: RecordCreateOp[] = [],\n revOverride?: string,\n ): Promise<CommitData> {\n const newBlocks = new BlockMap()\n\n let data = await MST.create(storage)\n for (const record of initialWrites) {\n const cid = await newBlocks.add(record.record)\n const dataKey = util.formatDataKey(record.collection, record.rkey)\n data = await data.add(dataKey, cid)\n }\n const dataCid = await data.getPointer()\n const diff = await DataDiff.of(data, null)\n newBlocks.addMap(diff.newMstBlocks)\n\n const rev = revOverride ?? TID.nextStr()\n const commit = await util.signCommit(\n {\n did,\n version: 3,\n rev,\n prev: null, // added for backwards compatibility with v2\n data: dataCid,\n },\n keypair,\n )\n const commitCid = await newBlocks.add(commit)\n return {\n cid: commitCid,\n rev,\n since: null,\n prev: null,\n newBlocks,\n relevantBlocks: newBlocks,\n removedCids: diff.removedCids,\n }\n }\n\n static async createFromCommit(\n storage: RepoStorage,\n commit: CommitData,\n ): Promise<Repo> {\n await storage.applyCommit(commit)\n return Repo.load(storage, commit.cid)\n }\n\n static async create(\n storage: RepoStorage,\n did: string,\n keypair: crypto.Keypair,\n initialWrites: RecordCreateOp[] = [],\n ): Promise<Repo> {\n const commit = await Repo.formatInitCommit(\n storage,\n did,\n keypair,\n initialWrites,\n )\n return Repo.createFromCommit(storage, commit)\n }\n\n static async load(storage: RepoStorage, cid?: Cid) {\n const commitCid = cid || (await storage.getRoot())\n if (!commitCid) {\n throw new Error('No cid provided and none in storage')\n }\n const commit = await storage.readObj(commitCid, def.versionedCommit)\n const data = await MST.load(storage, commit.data)\n log.info({ did: commit.did }, 'loaded repo for')\n return new Repo({\n storage,\n data,\n commit: util.ensureV3Commit(commit),\n cid: commitCid,\n })\n }\n\n async formatCommit(\n toWrite: RecordWriteOp | RecordWriteOp[],\n keypair: crypto.Keypair,\n ): Promise<CommitData> {\n const writes = Array.isArray(toWrite) ? toWrite : [toWrite]\n const leaves = new BlockMap()\n\n let data = this.data\n for (const write of writes) {\n if (write.action === WriteOpAction.Create) {\n const cid = await leaves.add(write.record)\n const dataKey = write.collection + '/' + write.rkey\n data = await data.add(dataKey, cid)\n } else if (write.action === WriteOpAction.Update) {\n const cid = await leaves.add(write.record)\n const dataKey = write.collection + '/' + write.rkey\n data = await data.update(dataKey, cid)\n } else if (write.action === WriteOpAction.Delete) {\n const dataKey = write.collection + '/' + write.rkey\n data = await data.delete(dataKey)\n }\n }\n\n const dataCid = await data.getPointer()\n const diff = await DataDiff.of(data, this.data)\n const newBlocks = diff.newMstBlocks\n const removedCids = diff.removedCids\n\n const proofs = await Promise.all(\n writes.map((op) =>\n data.getCoveringProof(util.formatDataKey(op.collection, op.rkey)),\n ),\n )\n const relevantBlocks = new BlockMap()\n for (const proof of proofs) relevantBlocks.addMap(proof)\n\n const addedLeaves = leaves.getMany(diff.newLeafCids.toList())\n if (addedLeaves.missing.length > 0) {\n throw new Error(`Missing leaf blocks: ${addedLeaves.missing}`)\n }\n newBlocks.addMap(addedLeaves.blocks)\n relevantBlocks.addMap(addedLeaves.blocks)\n\n const rev = TID.nextStr(this.commit.rev)\n const commit = await util.signCommit(\n {\n did: this.did,\n version: 3,\n rev,\n prev: null, // added for backwards compatibility with v2\n data: dataCid,\n },\n keypair,\n )\n\n const commitBytes = encode(commit)\n const commitCid = await cidForCbor(commitBytes)\n\n if (!commitCid.equals(this.cid)) {\n newBlocks.set(commitCid, commitBytes)\n relevantBlocks.set(commitCid, commitBytes)\n removedCids.add(this.cid)\n }\n\n return {\n cid: commitCid,\n rev,\n since: this.commit.rev,\n prev: this.cid,\n newBlocks,\n relevantBlocks,\n removedCids,\n }\n }\n\n async applyCommit(commitData: CommitData): Promise<Repo> {\n await this.storage.applyCommit(commitData)\n return Repo.load(this.storage, commitData.cid)\n }\n\n async applyWrites(\n toWrite: RecordWriteOp | RecordWriteOp[],\n keypair: crypto.Keypair,\n ): Promise<Repo> {\n const commit = await this.formatCommit(toWrite, keypair)\n return this.applyCommit(commit)\n }\n\n async formatResignCommit(rev: string, keypair: crypto.Keypair) {\n const commit = await util.signCommit(\n {\n did: this.did,\n version: 3,\n rev,\n prev: null, // added for backwards compatibility with v2\n data: this.commit.data,\n },\n keypair,\n )\n const newBlocks = new BlockMap()\n const commitCid = await newBlocks.add(commit)\n return {\n cid: commitCid,\n rev,\n since: null,\n prev: null,\n newBlocks,\n relevantBlocks: newBlocks,\n removedCids: new CidSet([this.cid]),\n }\n }\n\n async resignCommit(rev: string, keypair: crypto.Keypair) {\n const formatted = await this.formatResignCommit(rev, keypair)\n return this.applyCommit(formatted)\n }\n}\n\nexport default Repo\n"]}
|
|
1
|
+
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"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","sourcesContent":["import { TID } from '@atproto/common-web'\nimport * as crypto from '@atproto/crypto'\nimport { encode } from '@atproto/lex-cbor'\nimport { Cid, cidForCbor } from '@atproto/lex-data'\nimport { BlockMap } from './block-map.js'\nimport { CidSet } from './cid-set.js'\nimport { DataDiff } from './data-diff.js'\nimport log from './logger.js'\nimport { MST } from './mst/index.js'\nimport { ReadableRepo } from './readable-repo.js'\nimport { RepoStorage } from './storage/index.js'\nimport {\n Commit,\n CommitData,\n RecordCreateOp,\n RecordWriteOp,\n WriteOpAction,\n def,\n} from './types.js'\nimport * as util from './util.js'\n\ntype Params = {\n storage: RepoStorage\n data: MST\n commit: Commit\n cid: Cid\n}\n\nexport class Repo extends ReadableRepo {\n storage: RepoStorage\n\n constructor(params: Params) {\n super(params)\n this.storage = params.storage\n }\n\n static async formatInitCommit(\n storage: RepoStorage,\n did: string,\n keypair: crypto.Keypair,\n initialWrites: RecordCreateOp[] = [],\n revOverride?: string,\n ): Promise<CommitData> {\n const newBlocks = new BlockMap()\n\n let data = await MST.create(storage)\n for (const record of initialWrites) {\n const cid = await newBlocks.add(record.record)\n const dataKey = util.formatDataKey(record.collection, record.rkey)\n data = await data.add(dataKey, cid)\n }\n const dataCid = await data.getPointer()\n const diff = await DataDiff.of(data, null)\n newBlocks.addMap(diff.newMstBlocks)\n\n const rev = revOverride ?? TID.nextStr()\n const commit = await util.signCommit(\n {\n did,\n version: 3,\n rev,\n prev: null, // added for backwards compatibility with v2\n data: dataCid,\n },\n keypair,\n )\n const commitCid = await newBlocks.add(commit)\n return {\n cid: commitCid,\n rev,\n since: null,\n prev: null,\n newBlocks,\n relevantBlocks: newBlocks,\n removedCids: diff.removedCids,\n }\n }\n\n static async createFromCommit(\n storage: RepoStorage,\n commit: CommitData,\n ): Promise<Repo> {\n await storage.applyCommit(commit)\n return Repo.load(storage, commit.cid)\n }\n\n static async create(\n storage: RepoStorage,\n did: string,\n keypair: crypto.Keypair,\n initialWrites: RecordCreateOp[] = [],\n ): Promise<Repo> {\n const commit = await Repo.formatInitCommit(\n storage,\n did,\n keypair,\n initialWrites,\n )\n return Repo.createFromCommit(storage, commit)\n }\n\n static async load(storage: RepoStorage, cid?: Cid) {\n const commitCid = cid || (await storage.getRoot())\n if (!commitCid) {\n throw new Error('No cid provided and none in storage')\n }\n const commit = await storage.readObj(commitCid, def.versionedCommit)\n const data = await MST.load(storage, commit.data)\n log.info({ did: commit.did }, 'loaded repo for')\n return new Repo({\n storage,\n data,\n commit: util.ensureV3Commit(commit),\n cid: commitCid,\n })\n }\n\n async formatCommit(\n toWrite: RecordWriteOp | RecordWriteOp[],\n keypair: crypto.Keypair,\n ): Promise<CommitData> {\n const writes = Array.isArray(toWrite) ? toWrite : [toWrite]\n const leaves = new BlockMap()\n\n let data = this.data\n for (const write of writes) {\n if (write.action === WriteOpAction.Create) {\n const cid = await leaves.add(write.record)\n const dataKey = write.collection + '/' + write.rkey\n data = await data.add(dataKey, cid)\n } else if (write.action === WriteOpAction.Update) {\n const cid = await leaves.add(write.record)\n const dataKey = write.collection + '/' + write.rkey\n data = await data.update(dataKey, cid)\n } else if (write.action === WriteOpAction.Delete) {\n const dataKey = write.collection + '/' + write.rkey\n data = await data.delete(dataKey)\n }\n }\n\n const dataCid = await data.getPointer()\n const diff = await DataDiff.of(data, this.data)\n const newBlocks = diff.newMstBlocks\n const removedCids = diff.removedCids\n\n const proofs = await Promise.all(\n writes.map((op) =>\n data.getCoveringProof(util.formatDataKey(op.collection, op.rkey)),\n ),\n )\n const relevantBlocks = new BlockMap()\n for (const proof of proofs) relevantBlocks.addMap(proof)\n\n const addedLeaves = leaves.getMany(diff.newLeafCids.toList())\n if (addedLeaves.missing.length > 0) {\n throw new Error(`Missing leaf blocks: ${addedLeaves.missing}`)\n }\n newBlocks.addMap(addedLeaves.blocks)\n relevantBlocks.addMap(addedLeaves.blocks)\n\n const rev = TID.nextStr(this.commit.rev)\n const commit = await util.signCommit(\n {\n did: this.did,\n version: 3,\n rev,\n prev: null, // added for backwards compatibility with v2\n data: dataCid,\n },\n keypair,\n )\n\n const commitBytes = encode(commit)\n const commitCid = await cidForCbor(commitBytes)\n\n if (!commitCid.equals(this.cid)) {\n newBlocks.set(commitCid, commitBytes)\n relevantBlocks.set(commitCid, commitBytes)\n removedCids.add(this.cid)\n }\n\n return {\n cid: commitCid,\n rev,\n since: this.commit.rev,\n prev: this.cid,\n newBlocks,\n relevantBlocks,\n removedCids,\n }\n }\n\n async applyCommit(commitData: CommitData): Promise<Repo> {\n await this.storage.applyCommit(commitData)\n return Repo.load(this.storage, commitData.cid)\n }\n\n async applyWrites(\n toWrite: RecordWriteOp | RecordWriteOp[],\n keypair: crypto.Keypair,\n ): Promise<Repo> {\n const commit = await this.formatCommit(toWrite, keypair)\n return this.applyCommit(commit)\n }\n\n async formatResignCommit(rev: string, keypair: crypto.Keypair) {\n const commit = await util.signCommit(\n {\n did: this.did,\n version: 3,\n rev,\n prev: null, // added for backwards compatibility with v2\n data: this.commit.data,\n },\n keypair,\n )\n const newBlocks = new BlockMap()\n const commitCid = await newBlocks.add(commit)\n return {\n cid: commitCid,\n rev,\n since: null,\n prev: null,\n newBlocks,\n relevantBlocks: newBlocks,\n removedCids: new CidSet([this.cid]),\n }\n }\n\n async resignCommit(rev: string, keypair: crypto.Keypair) {\n const formatted = await this.formatResignCommit(rev, keypair)\n return this.applyCommit(formatted)\n }\n}\n\nexport default Repo\n"]}
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './readable-blockstore';
|
|
2
|
-
export * from './memory-blockstore';
|
|
3
|
-
export * from './sync-storage';
|
|
4
|
-
export * from './types';
|
|
1
|
+
export * from './readable-blockstore.js';
|
|
2
|
+
export * from './memory-blockstore.js';
|
|
3
|
+
export * from './sync-storage.js';
|
|
4
|
+
export * from './types.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA"}
|
package/dist/storage/index.js
CHANGED
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./readable-blockstore"), exports);
|
|
18
|
-
__exportStar(require("./memory-blockstore"), exports);
|
|
19
|
-
__exportStar(require("./sync-storage"), exports);
|
|
20
|
-
__exportStar(require("./types"), exports);
|
|
1
|
+
export * from './readable-blockstore.js';
|
|
2
|
+
export * from './memory-blockstore.js';
|
|
3
|
+
export * from './sync-storage.js';
|
|
4
|
+
export * from './types.js';
|
|
21
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA","sourcesContent":["export * from './readable-blockstore.js'\nexport * from './memory-blockstore.js'\nexport * from './sync-storage.js'\nexport * from './types.js'\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Cid } from '@atproto/lex-data';
|
|
2
|
-
import { BlockMap } from '../block-map';
|
|
3
|
-
import { CommitData } from '../types';
|
|
4
|
-
import { ReadableBlockstore } from './readable-blockstore';
|
|
5
|
-
import { RepoStorage } from './types';
|
|
2
|
+
import { BlockMap } from '../block-map.js';
|
|
3
|
+
import { CommitData } from '../types.js';
|
|
4
|
+
import { ReadableBlockstore } from './readable-blockstore.js';
|
|
5
|
+
import { RepoStorage } from './types.js';
|
|
6
6
|
export declare class MemoryBlockstore extends ReadableBlockstore implements RepoStorage {
|
|
7
7
|
blocks: BlockMap;
|
|
8
8
|
root: Cid | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-blockstore.d.ts","sourceRoot":"","sources":["../../src/storage/memory-blockstore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"memory-blockstore.d.ts","sourceRoot":"","sources":["../../src/storage/memory-blockstore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,qBAAa,gBACX,SAAQ,kBACR,YAAW,WAAW;IAEtB,MAAM,EAAE,QAAQ,CAAA;IAChB,IAAI,EAAE,GAAG,GAAG,IAAI,CAAO;IACvB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAO;gBAEb,MAAM,CAAC,EAAE,QAAQ;IAQvB,OAAO,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAI9B,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI9C,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/B,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAIrE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,OAAO,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9C,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -1,30 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const block_map_1 = require("../block-map");
|
|
5
|
-
const readable_blockstore_1 = require("./readable-blockstore");
|
|
6
|
-
class MemoryBlockstore extends readable_blockstore_1.ReadableBlockstore {
|
|
1
|
+
import { BlockMap } from '../block-map.js';
|
|
2
|
+
import { ReadableBlockstore } from './readable-blockstore.js';
|
|
3
|
+
export class MemoryBlockstore extends ReadableBlockstore {
|
|
7
4
|
constructor(blocks) {
|
|
8
5
|
super();
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
writable: true,
|
|
13
|
-
value: void 0
|
|
14
|
-
});
|
|
15
|
-
Object.defineProperty(this, "root", {
|
|
16
|
-
enumerable: true,
|
|
17
|
-
configurable: true,
|
|
18
|
-
writable: true,
|
|
19
|
-
value: null
|
|
20
|
-
});
|
|
21
|
-
Object.defineProperty(this, "rev", {
|
|
22
|
-
enumerable: true,
|
|
23
|
-
configurable: true,
|
|
24
|
-
writable: true,
|
|
25
|
-
value: null
|
|
26
|
-
});
|
|
27
|
-
this.blocks = new block_map_1.BlockMap();
|
|
6
|
+
this.root = null;
|
|
7
|
+
this.rev = null;
|
|
8
|
+
this.blocks = new BlockMap();
|
|
28
9
|
if (blocks) {
|
|
29
10
|
this.blocks.addMap(blocks);
|
|
30
11
|
}
|
|
@@ -72,6 +53,5 @@ class MemoryBlockstore extends readable_blockstore_1.ReadableBlockstore {
|
|
|
72
53
|
this.blocks.clear();
|
|
73
54
|
}
|
|
74
55
|
}
|
|
75
|
-
|
|
76
|
-
exports.default = MemoryBlockstore;
|
|
56
|
+
export default MemoryBlockstore;
|
|
77
57
|
//# sourceMappingURL=memory-blockstore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-blockstore.js","sourceRoot":"","sources":["../../src/storage/memory-blockstore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memory-blockstore.js","sourceRoot":"","sources":["../../src/storage/memory-blockstore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAG7D,MAAM,OAAO,gBACX,SAAQ,kBAAkB;IAO1B,YAAY,MAAiB;QAC3B,KAAK,EAAE,CAAA;QAJT,SAAI,GAAe,IAAI,CAAA;QACvB,QAAG,GAAkB,IAAI,CAAA;QAIvB,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAA;QAC5B,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAQ;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAQ;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAW;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAQ,EAAE,KAAiB;QACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAgB;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAQ,EAAE,GAAW;QACpC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAkB;QAClC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAA;QAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;QACD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5B,KAAK,IAAI,KAAK,CAAC,UAAU,CAAA;QAC3B,CAAC,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;CACF;AAED,eAAe,gBAAgB,CAAA","sourcesContent":["import { Cid } from '@atproto/lex-data'\nimport { BlockMap } from '../block-map.js'\nimport { CommitData } from '../types.js'\nimport { ReadableBlockstore } from './readable-blockstore.js'\nimport { RepoStorage } from './types.js'\n\nexport class MemoryBlockstore\n extends ReadableBlockstore\n implements RepoStorage\n{\n blocks: BlockMap\n root: Cid | null = null\n rev: string | null = null\n\n constructor(blocks?: BlockMap) {\n super()\n this.blocks = new BlockMap()\n if (blocks) {\n this.blocks.addMap(blocks)\n }\n }\n\n async getRoot(): Promise<Cid | null> {\n return this.root\n }\n\n async getBytes(cid: Cid): Promise<Uint8Array | null> {\n return this.blocks.get(cid) || null\n }\n\n async has(cid: Cid): Promise<boolean> {\n return this.blocks.has(cid)\n }\n\n async getBlocks(cids: Cid[]): Promise<{ blocks: BlockMap; missing: Cid[] }> {\n return this.blocks.getMany(cids)\n }\n\n async putBlock(cid: Cid, block: Uint8Array): Promise<void> {\n this.blocks.set(cid, block)\n }\n\n async putMany(blocks: BlockMap): Promise<void> {\n this.blocks.addMap(blocks)\n }\n\n async updateRoot(cid: Cid, rev: string): Promise<void> {\n this.root = cid\n this.rev = rev\n }\n\n async applyCommit(commit: CommitData): Promise<void> {\n this.root = commit.cid\n const rmCids = commit.removedCids.toList()\n for (const cid of rmCids) {\n this.blocks.delete(cid)\n }\n commit.newBlocks.forEach((bytes, cid) => {\n this.blocks.set(cid, bytes)\n })\n }\n\n async sizeInBytes(): Promise<number> {\n let total = 0\n this.blocks.forEach((bytes) => {\n total += bytes.byteLength\n })\n return total\n }\n\n async destroy(): Promise<void> {\n this.blocks.clear()\n }\n}\n\nexport default MemoryBlockstore\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { check } from '@atproto/common-web';
|
|
2
2
|
import { Cid, LexMap } from '@atproto/lex-data';
|
|
3
|
-
import { BlockMap } from '../block-map';
|
|
3
|
+
import { BlockMap } from '../block-map.js';
|
|
4
4
|
export declare abstract class ReadableBlockstore {
|
|
5
5
|
abstract getBytes(cid: Cid): Promise<Uint8Array | null>;
|
|
6
6
|
abstract has(cid: Cid): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readable-blockstore.d.ts","sourceRoot":"","sources":["../../src/storage/readable-blockstore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"readable-blockstore.d.ts","sourceRoot":"","sources":["../../src/storage/readable-blockstore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAK1C,8BAAsB,kBAAkB;IACtC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IACvD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAExE,WAAW,CAAC,CAAC,EACjB,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAChB,OAAO,CAAC;QAAE,GAAG,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;IAM1C,eAAe,CAAC,CAAC,EACrB,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAChB,OAAO,CAAC;QAAE,GAAG,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC;IAQnC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAKnD,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQnD,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;CAO5C;AAED,eAAe,kBAAkB,CAAA"}
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const parse_1 = require("../parse");
|
|
6
|
-
const util_1 = require("../util");
|
|
7
|
-
class ReadableBlockstore {
|
|
1
|
+
import { MissingBlockError } from '../error.js';
|
|
2
|
+
import { parseObjByDef } from '../parse.js';
|
|
3
|
+
import { cborToLexRecord } from '../util.js';
|
|
4
|
+
export class ReadableBlockstore {
|
|
8
5
|
async attemptRead(cid, def) {
|
|
9
6
|
const bytes = await this.getBytes(cid);
|
|
10
7
|
if (!bytes)
|
|
11
8
|
return null;
|
|
12
|
-
return
|
|
9
|
+
return parseObjByDef(bytes, cid, def);
|
|
13
10
|
}
|
|
14
11
|
async readObjAndBytes(cid, def) {
|
|
15
12
|
const read = await this.attemptRead(cid, def);
|
|
16
13
|
if (!read) {
|
|
17
|
-
throw new
|
|
14
|
+
throw new MissingBlockError(cid, def.name);
|
|
18
15
|
}
|
|
19
16
|
return read;
|
|
20
17
|
}
|
|
@@ -33,11 +30,10 @@ class ReadableBlockstore {
|
|
|
33
30
|
async readRecord(cid) {
|
|
34
31
|
const bytes = await this.getBytes(cid);
|
|
35
32
|
if (!bytes) {
|
|
36
|
-
throw new
|
|
33
|
+
throw new MissingBlockError(cid);
|
|
37
34
|
}
|
|
38
|
-
return
|
|
35
|
+
return cborToLexRecord(bytes);
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
|
-
|
|
42
|
-
exports.default = ReadableBlockstore;
|
|
38
|
+
export default ReadableBlockstore;
|
|
43
39
|
//# sourceMappingURL=readable-blockstore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readable-blockstore.js","sourceRoot":"","sources":["../../src/storage/readable-blockstore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"readable-blockstore.js","sourceRoot":"","sources":["../../src/storage/readable-blockstore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,OAAgB,kBAAkB;IAKtC,KAAK,CAAC,WAAW,CACf,GAAQ,EACR,GAAiB;QAEjB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACvB,OAAO,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,GAAQ,EACR,GAAiB;QAEjB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,GAAQ,EAAE,GAAiB;QAC1C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAChD,OAAO,GAAG,CAAC,GAAG,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAQ;QAC9B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAQ;QACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAClC,CAAC;QACD,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;CACF;AAED,eAAe,kBAAkB,CAAA","sourcesContent":["import { check } from '@atproto/common-web'\nimport { Cid, LexMap } from '@atproto/lex-data'\nimport { BlockMap } from '../block-map.js'\nimport { MissingBlockError } from '../error.js'\nimport { parseObjByDef } from '../parse.js'\nimport { cborToLexRecord } from '../util.js'\n\nexport abstract class ReadableBlockstore {\n abstract getBytes(cid: Cid): Promise<Uint8Array | null>\n abstract has(cid: Cid): Promise<boolean>\n abstract getBlocks(cids: Cid[]): Promise<{ blocks: BlockMap; missing: Cid[] }>\n\n async attemptRead<T>(\n cid: Cid,\n def: check.Def<T>,\n ): Promise<{ obj: T; bytes: Uint8Array } | null> {\n const bytes = await this.getBytes(cid)\n if (!bytes) return null\n return parseObjByDef(bytes, cid, def)\n }\n\n async readObjAndBytes<T>(\n cid: Cid,\n def: check.Def<T>,\n ): Promise<{ obj: T; bytes: Uint8Array }> {\n const read = await this.attemptRead(cid, def)\n if (!read) {\n throw new MissingBlockError(cid, def.name)\n }\n return read\n }\n\n async readObj<T>(cid: Cid, def: check.Def<T>): Promise<T> {\n const obj = await this.readObjAndBytes(cid, def)\n return obj.obj\n }\n\n async attemptReadRecord(cid: Cid): Promise<LexMap | null> {\n try {\n return await this.readRecord(cid)\n } catch {\n return null\n }\n }\n\n async readRecord(cid: Cid): Promise<LexMap> {\n const bytes = await this.getBytes(cid)\n if (!bytes) {\n throw new MissingBlockError(cid)\n }\n return cborToLexRecord(bytes)\n }\n}\n\nexport default ReadableBlockstore\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Cid } from '@atproto/lex-data';
|
|
2
|
-
import { BlockMap } from '../block-map';
|
|
3
|
-
import { ReadableBlockstore } from './readable-blockstore';
|
|
2
|
+
import { BlockMap } from '../block-map.js';
|
|
3
|
+
import { ReadableBlockstore } from './readable-blockstore.js';
|
|
4
4
|
export declare class SyncStorage extends ReadableBlockstore {
|
|
5
5
|
staged: ReadableBlockstore;
|
|
6
6
|
saved: ReadableBlockstore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-storage.d.ts","sourceRoot":"","sources":["../../src/storage/sync-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"sync-storage.d.ts","sourceRoot":"","sources":["../../src/storage/sync-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE7D,qBAAa,WAAY,SAAQ,kBAAkB;IAExC,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,kBAAkB;gBADzB,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,kBAAkB;IAK5B,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAM9C,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAWrE,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;CAGtC;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -1,22 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.SyncStorage = void 0;
|
|
4
|
-
const readable_blockstore_1 = require("./readable-blockstore");
|
|
5
|
-
class SyncStorage extends readable_blockstore_1.ReadableBlockstore {
|
|
1
|
+
import { ReadableBlockstore } from './readable-blockstore.js';
|
|
2
|
+
export class SyncStorage extends ReadableBlockstore {
|
|
6
3
|
constructor(staged, saved) {
|
|
7
4
|
super();
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
configurable: true,
|
|
11
|
-
writable: true,
|
|
12
|
-
value: staged
|
|
13
|
-
});
|
|
14
|
-
Object.defineProperty(this, "saved", {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
configurable: true,
|
|
17
|
-
writable: true,
|
|
18
|
-
value: saved
|
|
19
|
-
});
|
|
5
|
+
this.staged = staged;
|
|
6
|
+
this.saved = saved;
|
|
20
7
|
}
|
|
21
8
|
async getBytes(cid) {
|
|
22
9
|
const got = await this.staged.getBytes(cid);
|
|
@@ -38,6 +25,5 @@ class SyncStorage extends readable_blockstore_1.ReadableBlockstore {
|
|
|
38
25
|
return (await this.staged.has(cid)) || (await this.saved.has(cid));
|
|
39
26
|
}
|
|
40
27
|
}
|
|
41
|
-
|
|
42
|
-
exports.default = SyncStorage;
|
|
28
|
+
export default SyncStorage;
|
|
43
29
|
//# sourceMappingURL=sync-storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-storage.js","sourceRoot":"","sources":["../../src/storage/sync-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync-storage.js","sourceRoot":"","sources":["../../src/storage/sync-storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE7D,MAAM,OAAO,WAAY,SAAQ,kBAAkB;IACjD,YACS,MAA0B,EAC1B,KAAyB;QAEhC,KAAK,EAAE,CAAA;QAHA,WAAM,GAAN,MAAM,CAAoB;QAC1B,UAAK,GAAL,KAAK,CAAoB;IAGlC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAQ;QACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC3C,IAAI,GAAG;YAAE,OAAO,GAAG,CAAA;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAW;QACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAChE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC/B,OAAO;YACL,MAAM;YACN,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAQ;QAChB,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACpE,CAAC;CACF;AAED,eAAe,WAAW,CAAA","sourcesContent":["import { Cid } from '@atproto/lex-data'\nimport { BlockMap } from '../block-map.js'\nimport { ReadableBlockstore } from './readable-blockstore.js'\n\nexport class SyncStorage extends ReadableBlockstore {\n constructor(\n public staged: ReadableBlockstore,\n public saved: ReadableBlockstore,\n ) {\n super()\n }\n\n async getBytes(cid: Cid): Promise<Uint8Array | null> {\n const got = await this.staged.getBytes(cid)\n if (got) return got\n return this.saved.getBytes(cid)\n }\n\n async getBlocks(cids: Cid[]): Promise<{ blocks: BlockMap; missing: Cid[] }> {\n const fromStaged = await this.staged.getBlocks(cids)\n const fromSaved = await this.saved.getBlocks(fromStaged.missing)\n const blocks = fromStaged.blocks\n blocks.addMap(fromSaved.blocks)\n return {\n blocks,\n missing: fromSaved.missing,\n }\n }\n\n async has(cid: Cid): Promise<boolean> {\n return (await this.staged.has(cid)) || (await this.saved.has(cid))\n }\n}\n\nexport default SyncStorage\n"]}
|
package/dist/storage/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Readable } from 'node:stream';
|
|
2
2
|
import { check } from '@atproto/common-web';
|
|
3
3
|
import { Cid, LexMap } from '@atproto/lex-data';
|
|
4
|
-
import { BlockMap } from '../block-map';
|
|
5
|
-
import { CommitData } from '../types';
|
|
4
|
+
import { BlockMap } from '../block-map.js';
|
|
5
|
+
import { CommitData } from '../types.js';
|
|
6
6
|
export interface RepoStorage {
|
|
7
7
|
getRoot(): Promise<Cid | null>;
|
|
8
8
|
putBlock(cid: Cid, block: Uint8Array, rev: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/types.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BlobNotFoundError = void 0;
|
|
4
|
-
class BlobNotFoundError extends Error {
|
|
1
|
+
export class BlobNotFoundError extends Error {
|
|
5
2
|
}
|
|
6
|
-
exports.BlobNotFoundError = BlobNotFoundError;
|
|
7
3
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AA8CA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;CAAG","sourcesContent":["import type { Readable } from 'node:stream'\nimport { check } from '@atproto/common-web'\nimport { Cid, LexMap } from '@atproto/lex-data'\nimport { BlockMap } from '../block-map.js'\nimport { CommitData } from '../types.js'\n\nexport interface RepoStorage {\n // Writable\n getRoot(): Promise<Cid | null>\n putBlock(cid: Cid, block: Uint8Array, rev: string): Promise<void>\n putMany(blocks: BlockMap, rev: string): Promise<void>\n updateRoot(cid: Cid, rev: string): Promise<void>\n applyCommit(commit: CommitData)\n\n // Readable\n getBytes(cid: Cid): Promise<Uint8Array | null>\n has(cid: Cid): Promise<boolean>\n getBlocks(cids: Cid[]): Promise<{ blocks: BlockMap; missing: Cid[] }>\n attemptRead<T>(\n cid: Cid,\n def: check.Def<T>,\n ): Promise<{ obj: T; bytes: Uint8Array } | null>\n readObjAndBytes<T>(\n cid: Cid,\n def: check.Def<T>,\n ): Promise<{ obj: T; bytes: Uint8Array }>\n readObj<T>(cid: Cid, def: check.Def<T>): Promise<T>\n attemptReadRecord(cid: Cid): Promise<LexMap | null>\n readRecord(cid: Cid): Promise<LexMap>\n}\n\n// @TODO make this less node-js specific by using AsyncIterable<Uint8Array> instead of Readable\nexport interface BlobStore {\n putTemp(bytes: Uint8Array | Readable): Promise<string>\n makePermanent(key: string, cid: Cid): Promise<void>\n putPermanent(cid: Cid, bytes: Uint8Array | Readable): Promise<void>\n quarantine(cid: Cid): Promise<void>\n unquarantine(cid: Cid): Promise<void>\n getBytes(cid: Cid): Promise<Uint8Array>\n getStream(cid: Cid): Promise<Readable>\n hasTemp(key: string): Promise<boolean>\n hasStored(cid: Cid): Promise<boolean>\n delete(cid: Cid): Promise<void>\n deleteMany(cid: Cid[]): Promise<void>\n}\n\nexport class BlobNotFoundError extends Error {}\n"]}
|
package/dist/sync/consumer.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Cid } from '@atproto/lex-data';
|
|
2
|
-
import { BlockMap } from '../block-map';
|
|
3
|
-
import { ReadableRepo } from '../readable-repo';
|
|
4
|
-
import { RecordCidClaim, RecordClaim, VerifiedDiff, VerifiedRepo } from '../types';
|
|
2
|
+
import { BlockMap } from '../block-map.js';
|
|
3
|
+
import { ReadableRepo } from '../readable-repo.js';
|
|
4
|
+
import { RecordCidClaim, RecordClaim, VerifiedDiff, VerifiedRepo } from '../types.js';
|
|
5
5
|
export declare const verifyRepoCar: (carBytes: Uint8Array, did?: string, signingKey?: string) => Promise<VerifiedRepo>;
|
|
6
6
|
export declare const verifyRepo: (blocks: BlockMap, head: Cid, did?: string, signingKey?: string, opts?: {
|
|
7
7
|
ensureLeaves?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../src/sync/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../src/sync/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAI1C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAMlD,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,EAEb,MAAM,aAAa,CAAA;AAGpB,eAAO,MAAM,aAAa,GACxB,UAAU,UAAU,EACpB,MAAM,MAAM,EACZ,aAAa,MAAM,KAClB,OAAO,CAAC,YAAY,CAGtB,CAAA;AAED,eAAO,MAAM,UAAU,GACrB,QAAQ,QAAQ,EAChB,MAAM,GAAG,EACT,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,OAAO;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,KAChC,OAAO,CAAC,YAAY,CAOtB,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,MAAM,YAAY,GAAG,IAAI,EACzB,UAAU,UAAU,EACpB,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,OAAO;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,KAChC,OAAO,CAAC,YAAY,CAGtB,CAAA;AAED,eAAO,MAAM,UAAU,GACrB,MAAM,YAAY,GAAG,IAAI,EACzB,cAAc,QAAQ,EACtB,YAAY,GAAG,EACf,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,OAAO;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,KAChC,OAAO,CAAC,YAAY,CA0CtB,CAAA;AAwBD,eAAO,MAAM,YAAY,GACvB,QAAQ,UAAU,EAClB,QAAQ,cAAc,EAAE,EACxB,KAAK,MAAM,EACX,QAAQ,MAAM,KACb,OAAO,CAAC;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,UAAU,EAAE,cAAc,EAAE,CAAA;CAAE,CAoCtE,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,QAAQ,UAAU,EAClB,KAAK,MAAM,EACX,YAAY,MAAM,KACjB,OAAO,CAAC,WAAW,EAAE,CA6BvB,CAAA;AAED,qBAAa,qBAAsB,SAAQ,KAAK;CAAG"}
|