@atproto/repo 0.9.0 → 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 +34 -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/mst/util.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const crypto_1 = require("@atproto/crypto");
|
|
5
|
-
const lex_cbor_1 = require("@atproto/lex-cbor");
|
|
6
|
-
const mst_1 = require("./mst");
|
|
1
|
+
import { sha256 } from '@atproto/crypto';
|
|
2
|
+
import { cidForLex } from '@atproto/lex-cbor';
|
|
3
|
+
import { Leaf, MST } from './mst.js';
|
|
7
4
|
function toAscii(bytes) {
|
|
8
5
|
let string = '';
|
|
9
6
|
for (let i = 0; i < bytes.length; i++) {
|
|
@@ -18,8 +15,8 @@ function fromAscii(str) {
|
|
|
18
15
|
}
|
|
19
16
|
return bytes;
|
|
20
17
|
}
|
|
21
|
-
const leadingZerosOnHash = async (key) => {
|
|
22
|
-
const hash = await
|
|
18
|
+
export const leadingZerosOnHash = async (key) => {
|
|
19
|
+
const hash = await sha256(key);
|
|
23
20
|
let leadingZeros = 0;
|
|
24
21
|
for (let i = 0; i < hash.length; i++) {
|
|
25
22
|
const byte = hash[i];
|
|
@@ -38,19 +35,17 @@ const leadingZerosOnHash = async (key) => {
|
|
|
38
35
|
}
|
|
39
36
|
return leadingZeros;
|
|
40
37
|
};
|
|
41
|
-
|
|
42
|
-
const layerForEntries = async (entries) => {
|
|
38
|
+
export const layerForEntries = async (entries) => {
|
|
43
39
|
const firstLeaf = entries.find((entry) => entry.isLeaf());
|
|
44
40
|
if (!firstLeaf || firstLeaf.isTree())
|
|
45
41
|
return null;
|
|
46
|
-
return await
|
|
42
|
+
return await leadingZerosOnHash(firstLeaf.key);
|
|
47
43
|
};
|
|
48
|
-
|
|
49
|
-
const deserializeNodeData = async (storage, data, opts) => {
|
|
44
|
+
export const deserializeNodeData = async (storage, data, opts) => {
|
|
50
45
|
const { layer } = opts || {};
|
|
51
46
|
const entries = [];
|
|
52
47
|
if (data.l !== null) {
|
|
53
|
-
entries.push(await
|
|
48
|
+
entries.push(await MST.load(storage, data.l, {
|
|
54
49
|
layer: layer ? layer - 1 : undefined,
|
|
55
50
|
}));
|
|
56
51
|
}
|
|
@@ -58,19 +53,18 @@ const deserializeNodeData = async (storage, data, opts) => {
|
|
|
58
53
|
for (const entry of data.e) {
|
|
59
54
|
const keyStr = toAscii(entry.k);
|
|
60
55
|
const key = `${lastKey.slice(0, entry.p)}${keyStr}`;
|
|
61
|
-
|
|
62
|
-
entries.push(new
|
|
56
|
+
ensureValidMstKey(key);
|
|
57
|
+
entries.push(new Leaf(key, entry.v));
|
|
63
58
|
lastKey = key;
|
|
64
59
|
if (entry.t !== null) {
|
|
65
|
-
entries.push(await
|
|
60
|
+
entries.push(await MST.load(storage, entry.t, {
|
|
66
61
|
layer: layer ? layer - 1 : undefined,
|
|
67
62
|
}));
|
|
68
63
|
}
|
|
69
64
|
}
|
|
70
65
|
return entries;
|
|
71
66
|
};
|
|
72
|
-
|
|
73
|
-
const serializeNodeData = (entries) => {
|
|
67
|
+
export const serializeNodeData = (entries) => {
|
|
74
68
|
const data = {
|
|
75
69
|
l: null,
|
|
76
70
|
e: [],
|
|
@@ -93,8 +87,8 @@ const serializeNodeData = (entries) => {
|
|
|
93
87
|
subtree = next.pointer;
|
|
94
88
|
i++;
|
|
95
89
|
}
|
|
96
|
-
|
|
97
|
-
const prefixLen =
|
|
90
|
+
ensureValidMstKey(leaf.key);
|
|
91
|
+
const prefixLen = countPrefixLen(lastKey, leaf.key);
|
|
98
92
|
data.e.push({
|
|
99
93
|
p: prefixLen,
|
|
100
94
|
k: fromAscii(leaf.key.slice(prefixLen)),
|
|
@@ -105,8 +99,7 @@ const serializeNodeData = (entries) => {
|
|
|
105
99
|
}
|
|
106
100
|
return data;
|
|
107
101
|
};
|
|
108
|
-
|
|
109
|
-
const countPrefixLen = (a, b) => {
|
|
102
|
+
export const countPrefixLen = (a, b) => {
|
|
110
103
|
let i;
|
|
111
104
|
for (i = 0; i < a.length; i++) {
|
|
112
105
|
if (a[i] !== b[i]) {
|
|
@@ -115,43 +108,32 @@ const countPrefixLen = (a, b) => {
|
|
|
115
108
|
}
|
|
116
109
|
return i;
|
|
117
110
|
};
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
return (0, lex_cbor_1.cidForLex)(data);
|
|
111
|
+
export const cidForEntries = async (entries) => {
|
|
112
|
+
const data = serializeNodeData(entries);
|
|
113
|
+
return cidForLex(data);
|
|
122
114
|
};
|
|
123
|
-
|
|
124
|
-
const isValidMstKey = (str) => {
|
|
115
|
+
export const isValidMstKey = (str) => {
|
|
125
116
|
const split = str.split('/');
|
|
126
117
|
return (str.length <= 1024 &&
|
|
127
118
|
split.length === 2 &&
|
|
128
119
|
split[0].length > 0 &&
|
|
129
120
|
split[1].length > 0 &&
|
|
130
|
-
|
|
131
|
-
|
|
121
|
+
isValidChars(split[0]) &&
|
|
122
|
+
isValidChars(split[1]));
|
|
132
123
|
};
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
return str.match(exports.validCharsRegex) !== null;
|
|
124
|
+
export const validCharsRegex = /^[a-zA-Z0-9_~\-:.]*$/;
|
|
125
|
+
export const isValidChars = (str) => {
|
|
126
|
+
return str.match(validCharsRegex) !== null;
|
|
137
127
|
};
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
if (!(0, exports.isValidMstKey)(str)) {
|
|
128
|
+
export const ensureValidMstKey = (str) => {
|
|
129
|
+
if (!isValidMstKey(str)) {
|
|
141
130
|
throw new InvalidMstKeyError(str);
|
|
142
131
|
}
|
|
143
132
|
};
|
|
144
|
-
|
|
145
|
-
class InvalidMstKeyError extends Error {
|
|
133
|
+
export class InvalidMstKeyError extends Error {
|
|
146
134
|
constructor(key) {
|
|
147
135
|
super(`Not a valid MST key: ${key}`);
|
|
148
|
-
|
|
149
|
-
enumerable: true,
|
|
150
|
-
configurable: true,
|
|
151
|
-
writable: true,
|
|
152
|
-
value: key
|
|
153
|
-
});
|
|
136
|
+
this.key = key;
|
|
154
137
|
}
|
|
155
138
|
}
|
|
156
|
-
exports.InvalidMstKeyError = InvalidMstKeyError;
|
|
157
139
|
//# sourceMappingURL=util.js.map
|
package/dist/mst/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/mst/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/mst/util.ts"],"names":[],"mappings":"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","sourcesContent":["import { sha256 } from '@atproto/crypto'\nimport { cidForLex } from '@atproto/lex-cbor'\nimport { Cid } from '@atproto/lex-data'\nimport { ReadableBlockstore } from '../storage/index.js'\nimport { Leaf, MST, MstOpts, NodeData, NodeEntry } from './mst.js'\n\nfunction toAscii(bytes: Uint8Array): string {\n let string = ''\n for (let i = 0; i < bytes.length; i++) {\n string += String.fromCharCode(bytes[i])\n }\n return string\n}\n\nfunction fromAscii(str: string): Uint8Array<ArrayBuffer> {\n const bytes = new Uint8Array(str.length)\n for (let i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i)\n }\n return bytes\n}\n\nexport const leadingZerosOnHash = async (key: string | Uint8Array) => {\n const hash = await sha256(key)\n let leadingZeros = 0\n for (let i = 0; i < hash.length; i++) {\n const byte = hash[i]\n if (byte < 64) leadingZeros++\n if (byte < 16) leadingZeros++\n if (byte < 4) leadingZeros++\n if (byte === 0) {\n leadingZeros++\n } else {\n break\n }\n }\n return leadingZeros\n}\n\nexport const layerForEntries = async (\n entries: NodeEntry[],\n): Promise<number | null> => {\n const firstLeaf = entries.find((entry) => entry.isLeaf())\n if (!firstLeaf || firstLeaf.isTree()) return null\n return await leadingZerosOnHash(firstLeaf.key)\n}\n\nexport const deserializeNodeData = async (\n storage: ReadableBlockstore,\n data: NodeData,\n opts?: Partial<MstOpts>,\n): Promise<NodeEntry[]> => {\n const { layer } = opts || {}\n const entries: NodeEntry[] = []\n if (data.l !== null) {\n entries.push(\n await MST.load(storage, data.l, {\n layer: layer ? layer - 1 : undefined,\n }),\n )\n }\n let lastKey = ''\n for (const entry of data.e) {\n const keyStr = toAscii(entry.k)\n const key = `${lastKey.slice(0, entry.p)}${keyStr}`\n ensureValidMstKey(key)\n entries.push(new Leaf(key, entry.v))\n lastKey = key\n if (entry.t !== null) {\n entries.push(\n await MST.load(storage, entry.t, {\n layer: layer ? layer - 1 : undefined,\n }),\n )\n }\n }\n return entries\n}\n\nexport const serializeNodeData = (entries: NodeEntry[]): NodeData => {\n const data: NodeData = {\n l: null,\n e: [],\n }\n let i = 0\n if (entries[0]?.isTree()) {\n i++\n data.l = entries[0].pointer\n }\n let lastKey = ''\n while (i < entries.length) {\n const leaf = entries[i]\n const next = entries[i + 1]\n if (!leaf.isLeaf()) {\n throw new Error('Not a valid node: two subtrees next to each other')\n }\n i++\n let subtree: Cid | null = null\n if (next?.isTree()) {\n subtree = next.pointer\n i++\n }\n ensureValidMstKey(leaf.key)\n const prefixLen = countPrefixLen(lastKey, leaf.key)\n data.e.push({\n p: prefixLen,\n k: fromAscii(leaf.key.slice(prefixLen)),\n v: leaf.value,\n t: subtree,\n })\n\n lastKey = leaf.key\n }\n return data\n}\n\nexport const countPrefixLen = (a: string, b: string): number => {\n let i\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n break\n }\n }\n return i\n}\n\nexport const cidForEntries = async (entries: NodeEntry[]): Promise<Cid> => {\n const data = serializeNodeData(entries)\n return cidForLex(data)\n}\n\nexport const isValidMstKey = (str: string): boolean => {\n const split = str.split('/')\n return (\n str.length <= 1024 &&\n split.length === 2 &&\n split[0].length > 0 &&\n split[1].length > 0 &&\n isValidChars(split[0]) &&\n isValidChars(split[1])\n )\n}\n\nexport const validCharsRegex = /^[a-zA-Z0-9_~\\-:.]*$/\n\nexport const isValidChars = (str: string): boolean => {\n return str.match(validCharsRegex) !== null\n}\n\nexport const ensureValidMstKey = (str: string) => {\n if (!isValidMstKey(str)) {\n throw new InvalidMstKeyError(str)\n }\n}\n\nexport class InvalidMstKeyError extends Error {\n constructor(public key: string) {\n super(`Not a valid MST key: ${key}`)\n }\n}\n"]}
|
package/dist/mst/walker.d.ts
CHANGED
package/dist/mst/walker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../src/mst/walker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../src/mst/walker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAA;IACX,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,GAAG,GAAG,IAAI,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,YAAY,GAAG,gBAAgB,GAAG,oBAAoB,CAAA;AAE3D,qBAAa,SAAS;IAID,IAAI,EAAE,GAAG;IAH5B,KAAK,EAAE,YAAY,EAAE,CAAK;IAC1B,MAAM,EAAE,YAAY,CAAA;gBAED,IAAI,EAAE,GAAG;IAU5B,KAAK,IAAI,MAAM;IAeT,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BzB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ/B"}
|
package/dist/mst/walker.js
CHANGED
|
@@ -1,26 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MstWalker = void 0;
|
|
4
|
-
class MstWalker {
|
|
1
|
+
export class MstWalker {
|
|
5
2
|
constructor(root) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
configurable: true,
|
|
9
|
-
writable: true,
|
|
10
|
-
value: root
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(this, "stack", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
configurable: true,
|
|
15
|
-
writable: true,
|
|
16
|
-
value: []
|
|
17
|
-
});
|
|
18
|
-
Object.defineProperty(this, "status", {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
configurable: true,
|
|
21
|
-
writable: true,
|
|
22
|
-
value: void 0
|
|
23
|
-
});
|
|
3
|
+
this.root = root;
|
|
4
|
+
this.stack = [];
|
|
24
5
|
this.status = {
|
|
25
6
|
done: false,
|
|
26
7
|
curr: root,
|
|
@@ -118,5 +99,4 @@ class MstWalker {
|
|
|
118
99
|
}
|
|
119
100
|
}
|
|
120
101
|
}
|
|
121
|
-
exports.MstWalker = MstWalker;
|
|
122
102
|
//# sourceMappingURL=walker.js.map
|
package/dist/mst/walker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walker.js","sourceRoot":"","sources":["../../src/mst/walker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"walker.js","sourceRoot":"","sources":["../../src/mst/walker.ts"],"names":[],"mappings":"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","sourcesContent":["import { MST, NodeEntry } from './mst.js'\n\ntype WalkerStatusDone = {\n done: true\n}\n\ntype WalkerStatusProgress = {\n done: false\n curr: NodeEntry\n walking: MST | null // walking set to null if `curr` is the root of the tree\n index: number\n}\n\ntype WalkerStatus = WalkerStatusDone | WalkerStatusProgress\n\nexport class MstWalker {\n stack: WalkerStatus[] = []\n status: WalkerStatus\n\n constructor(public root: MST) {\n this.status = {\n done: false,\n curr: root,\n walking: null,\n index: 0,\n }\n }\n\n // return the current layer of the node you are walking\n layer(): number {\n if (this.status.done) {\n throw new Error('Walk is done')\n }\n if (this.status.walking) {\n return this.status.walking.layer ?? 0\n }\n // if curr is the root of the tree, add 1\n if (this.status.curr.isTree()) {\n return (this.status.curr.layer ?? 0) + 1\n }\n throw new Error('Could not identify layer of walk')\n }\n\n // move to the next node in the subtree, skipping over the subtree\n async stepOver(): Promise<void> {\n if (this.status.done) return\n // if stepping over the root of the node, we're done\n if (this.status.walking === null) {\n this.status = { done: true }\n return\n }\n const entries = await this.status.walking.getEntries()\n this.status.index++\n const next = entries[this.status.index]\n if (!next) {\n const popped = this.stack.pop()\n if (!popped) {\n this.status = { done: true }\n return\n } else {\n this.status = popped\n await this.stepOver()\n return\n }\n } else {\n this.status.curr = next\n }\n }\n\n // step into a subtree, throws if currently pointed at a leaf\n async stepInto(): Promise<void> {\n if (this.status.done) return\n // edge case for very start of walk\n if (this.status.walking === null) {\n if (!this.status.curr.isTree()) {\n throw new Error('The root of the tree cannot be a leaf')\n }\n const next = await this.status.curr.atIndex(0)\n if (!next) {\n this.status = { done: true }\n } else {\n this.status = {\n done: false,\n walking: this.status.curr,\n curr: next,\n index: 0,\n }\n }\n return\n }\n if (!this.status.curr.isTree()) {\n throw new Error('No tree at pointer, cannot step into')\n }\n\n const next = await this.status.curr.atIndex(0)\n if (!next) {\n throw new Error(\n 'Tried to step into a node with 0 entries which is invalid',\n )\n }\n\n this.stack.push({ ...this.status })\n this.status.walking = this.status.curr\n this.status.curr = next\n this.status.index = 0\n }\n\n // advance the pointer to the next node in the tree,\n // stepping into the current node if necessary\n async advance(): Promise<void> {\n if (this.status.done) return\n if (this.status.curr.isLeaf()) {\n await this.stepOver()\n } else {\n await this.stepInto()\n }\n }\n}\n"]}
|
package/dist/parse.d.ts
CHANGED
|
@@ -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 const getAndParseRecord: (blocks: BlockMap, cid: Cid) => Promise<{
|
|
5
5
|
record: LexMap;
|
|
6
6
|
bytes: Uint8Array;
|
package/dist/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAIzC,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,QAAQ,EAChB,KAAK,GAAG,KACP,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAO/C,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,CAAC,EACtC,QAAQ,QAAQ,EAChB,KAAK,GAAG,EACR,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAChB,OAAO,CAAC;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAMvC,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,OAAO,UAAU,EACjB,KAAK,GAAG,EACR,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAChB;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAQ7B,CAAA"}
|
package/dist/parse.js
CHANGED
|
@@ -1,35 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const error_1 = require("./error");
|
|
6
|
-
const util_1 = require("./util");
|
|
7
|
-
const getAndParseRecord = async (blocks, cid) => {
|
|
1
|
+
import { decode } from '@atproto/lex-cbor';
|
|
2
|
+
import { MissingBlockError, UnexpectedObjectError } from './error.js';
|
|
3
|
+
import { cborToLexRecord } from './util.js';
|
|
4
|
+
export const getAndParseRecord = async (blocks, cid) => {
|
|
8
5
|
const bytes = blocks.get(cid);
|
|
9
6
|
if (!bytes) {
|
|
10
|
-
throw new
|
|
7
|
+
throw new MissingBlockError(cid, 'record');
|
|
11
8
|
}
|
|
12
|
-
const record =
|
|
9
|
+
const record = cborToLexRecord(bytes);
|
|
13
10
|
return { record, bytes };
|
|
14
11
|
};
|
|
15
|
-
|
|
16
|
-
const getAndParseByDef = async (blocks, cid, def) => {
|
|
12
|
+
export const getAndParseByDef = async (blocks, cid, def) => {
|
|
17
13
|
const bytes = blocks.get(cid);
|
|
18
14
|
if (!bytes) {
|
|
19
|
-
throw new
|
|
15
|
+
throw new MissingBlockError(cid, def.name);
|
|
20
16
|
}
|
|
21
|
-
return
|
|
17
|
+
return parseObjByDef(bytes, cid, def);
|
|
22
18
|
};
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
const obj = (0, lex_cbor_1.decode)(bytes);
|
|
19
|
+
export const parseObjByDef = (bytes, cid, def) => {
|
|
20
|
+
const obj = decode(bytes);
|
|
26
21
|
const res = def.schema.safeParse(obj);
|
|
27
22
|
if (res.success) {
|
|
28
23
|
return { obj: res.data, bytes };
|
|
29
24
|
}
|
|
30
25
|
else {
|
|
31
|
-
throw new
|
|
26
|
+
throw new UnexpectedObjectError(cid, def.name);
|
|
32
27
|
}
|
|
33
28
|
};
|
|
34
|
-
exports.parseObjByDef = parseObjByDef;
|
|
35
29
|
//# sourceMappingURL=parse.js.map
|
package/dist/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,MAAgB,EAChB,GAAQ,EACwC,EAAE;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACrC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,MAAgB,EAChB,GAAQ,EACR,GAAiB,EACuB,EAAE;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AACvC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAiB,EACjB,GAAQ,EACR,GAAiB,EACc,EAAE;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACzB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;IACjC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC;AACH,CAAC,CAAA","sourcesContent":["import { check } from '@atproto/common-web'\nimport { decode } from '@atproto/lex-cbor'\nimport { Cid, LexMap } from '@atproto/lex-data'\nimport { BlockMap } from './block-map.js'\nimport { MissingBlockError, UnexpectedObjectError } from './error.js'\nimport { cborToLexRecord } from './util.js'\n\nexport const getAndParseRecord = async (\n blocks: BlockMap,\n cid: Cid,\n): Promise<{ record: LexMap; bytes: Uint8Array }> => {\n const bytes = blocks.get(cid)\n if (!bytes) {\n throw new MissingBlockError(cid, 'record')\n }\n const record = cborToLexRecord(bytes)\n return { record, bytes }\n}\n\nexport const getAndParseByDef = async <T>(\n blocks: BlockMap,\n cid: Cid,\n def: check.Def<T>,\n): Promise<{ obj: T; bytes: Uint8Array }> => {\n const bytes = blocks.get(cid)\n if (!bytes) {\n throw new MissingBlockError(cid, def.name)\n }\n return parseObjByDef(bytes, cid, def)\n}\n\nexport const parseObjByDef = <T>(\n bytes: Uint8Array,\n cid: Cid,\n def: check.Def<T>,\n): { obj: T; bytes: Uint8Array } => {\n const obj = decode(bytes)\n const res = def.schema.safeParse(obj)\n if (res.success) {\n return { obj: res.data, bytes }\n } else {\n throw new UnexpectedObjectError(cid, def.name)\n }\n}\n"]}
|
package/dist/readable-repo.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Cid, LexMap } from '@atproto/lex-data';
|
|
2
|
-
import { MST } from './mst';
|
|
3
|
-
import { ReadableBlockstore } from './storage';
|
|
4
|
-
import { Commit, RepoContents } from './types';
|
|
2
|
+
import { MST } from './mst/index.js';
|
|
3
|
+
import { ReadableBlockstore } from './storage/index.js';
|
|
4
|
+
import { Commit, RepoContents } from './types.js';
|
|
5
5
|
type Params = {
|
|
6
6
|
storage: ReadableBlockstore;
|
|
7
7
|
data: MST;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readable-repo.d.ts","sourceRoot":"","sources":["../src/readable-repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG/C,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"readable-repo.d.ts","sourceRoot":"","sources":["../src/readable-repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG/C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAO,MAAM,YAAY,CAAA;AAGtD,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,kBAAkB,CAAA;IAC3B,IAAI,EAAE,GAAG,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,qBAAa,YAAY;IACvB,OAAO,EAAE,kBAAkB,CAAA;IAC3B,IAAI,EAAE,GAAG,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;gBAEI,MAAM,EAAE,MAAM;WAOb,IAAI,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,GAAG;IAY7D,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAEM,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;QAC/C,UAAU,EAAE,MAAM,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,EAAE,GAAG,CAAA;QACR,MAAM,EAAE,MAAM,CAAA;KACf,CAAC;IAQI,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAOpE,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;CAgB3C"}
|
package/dist/readable-repo.js
CHANGED
|
@@ -1,83 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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 __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.ReadableRepo = void 0;
|
|
40
|
-
const error_1 = require("./error");
|
|
41
|
-
const logger_1 = __importDefault(require("./logger"));
|
|
42
|
-
const mst_1 = require("./mst");
|
|
43
|
-
const parse = __importStar(require("./parse"));
|
|
44
|
-
const types_1 = require("./types");
|
|
45
|
-
const util = __importStar(require("./util"));
|
|
46
|
-
class ReadableRepo {
|
|
1
|
+
import { MissingBlocksError } from './error.js';
|
|
2
|
+
import log from './logger.js';
|
|
3
|
+
import { MST } from './mst/index.js';
|
|
4
|
+
import * as parse from './parse.js';
|
|
5
|
+
import { def } from './types.js';
|
|
6
|
+
import * as util from './util.js';
|
|
7
|
+
export class ReadableRepo {
|
|
47
8
|
constructor(params) {
|
|
48
|
-
Object.defineProperty(this, "storage", {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
configurable: true,
|
|
51
|
-
writable: true,
|
|
52
|
-
value: void 0
|
|
53
|
-
});
|
|
54
|
-
Object.defineProperty(this, "data", {
|
|
55
|
-
enumerable: true,
|
|
56
|
-
configurable: true,
|
|
57
|
-
writable: true,
|
|
58
|
-
value: void 0
|
|
59
|
-
});
|
|
60
|
-
Object.defineProperty(this, "commit", {
|
|
61
|
-
enumerable: true,
|
|
62
|
-
configurable: true,
|
|
63
|
-
writable: true,
|
|
64
|
-
value: void 0
|
|
65
|
-
});
|
|
66
|
-
Object.defineProperty(this, "cid", {
|
|
67
|
-
enumerable: true,
|
|
68
|
-
configurable: true,
|
|
69
|
-
writable: true,
|
|
70
|
-
value: void 0
|
|
71
|
-
});
|
|
72
9
|
this.storage = params.storage;
|
|
73
10
|
this.data = params.data;
|
|
74
11
|
this.commit = params.commit;
|
|
75
12
|
this.cid = params.cid;
|
|
76
13
|
}
|
|
77
14
|
static async load(storage, commitCid) {
|
|
78
|
-
const commit = await storage.readObj(commitCid,
|
|
79
|
-
const data = await
|
|
80
|
-
|
|
15
|
+
const commit = await storage.readObj(commitCid, def.versionedCommit);
|
|
16
|
+
const data = await MST.load(storage, commit.data);
|
|
17
|
+
log.info({ did: commit.did }, 'loaded repo for');
|
|
81
18
|
return new ReadableRepo({
|
|
82
19
|
storage,
|
|
83
20
|
data,
|
|
@@ -103,24 +40,23 @@ class ReadableRepo {
|
|
|
103
40
|
const cid = await this.data.get(dataKey);
|
|
104
41
|
if (!cid)
|
|
105
42
|
return null;
|
|
106
|
-
return this.storage.readObj(cid,
|
|
43
|
+
return this.storage.readObj(cid, def.unknown);
|
|
107
44
|
}
|
|
108
45
|
async getContents() {
|
|
109
46
|
const entries = await this.data.list();
|
|
110
47
|
const cids = entries.map((e) => e.value);
|
|
111
48
|
const { blocks, missing } = await this.storage.getBlocks(cids);
|
|
112
49
|
if (missing.length > 0) {
|
|
113
|
-
throw new
|
|
50
|
+
throw new MissingBlocksError('getContents record', missing);
|
|
114
51
|
}
|
|
115
52
|
const contents = {};
|
|
116
53
|
for (const entry of entries) {
|
|
117
54
|
const { collection, rkey } = util.parseDataKey(entry.key);
|
|
118
|
-
contents[collection]
|
|
55
|
+
contents[collection] ??= {};
|
|
119
56
|
const parsed = await parse.getAndParseRecord(blocks, entry.value);
|
|
120
57
|
contents[collection][rkey] = parsed.record;
|
|
121
58
|
}
|
|
122
59
|
return contents;
|
|
123
60
|
}
|
|
124
61
|
}
|
|
125
|
-
exports.ReadableRepo = ReadableRepo;
|
|
126
62
|
//# sourceMappingURL=readable-repo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readable-repo.js","sourceRoot":"","sources":["../src/readable-repo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"readable-repo.js","sourceRoot":"","sources":["../src/readable-repo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,OAAO,EAAwB,GAAG,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AASjC,MAAM,OAAO,YAAY;IAMvB,YAAY,MAAc;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAA;IACvB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAA2B,EAAE,SAAc;QAC3D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,CAAA;QACpE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QACjD,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAA;QAChD,OAAO,IAAI,YAAY,CAAC;YACtB,OAAO;YACP,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;YACnC,GAAG,EAAE,SAAS;SACf,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAA;IACxB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,CAAC,WAAW,CAAC,IAAa;QAM9B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxD,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAA;QACrD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAkB,EAAE,IAAY;QAC9C,MAAM,OAAO,GAAG,UAAU,GAAG,GAAG,GAAG,IAAI,CAAA;QACvC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;QAC7D,CAAC;QACD,MAAM,QAAQ,GAAiB,EAAE,CAAA;QACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACzD,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;YAC3B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YACjE,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF","sourcesContent":["import { Cid, LexMap } from '@atproto/lex-data'\nimport { MissingBlocksError } from './error.js'\nimport log from './logger.js'\nimport { MST } from './mst/index.js'\nimport * as parse from './parse.js'\nimport { ReadableBlockstore } from './storage/index.js'\nimport { Commit, RepoContents, def } from './types.js'\nimport * as util from './util.js'\n\ntype Params = {\n storage: ReadableBlockstore\n data: MST\n commit: Commit\n cid: Cid\n}\n\nexport class ReadableRepo {\n storage: ReadableBlockstore\n data: MST\n commit: Commit\n cid: Cid\n\n constructor(params: Params) {\n this.storage = params.storage\n this.data = params.data\n this.commit = params.commit\n this.cid = params.cid\n }\n\n static async load(storage: ReadableBlockstore, commitCid: Cid) {\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 ReadableRepo({\n storage,\n data,\n commit: util.ensureV3Commit(commit),\n cid: commitCid,\n })\n }\n\n get did(): string {\n return this.commit.did\n }\n\n get version(): number {\n return this.commit.version\n }\n\n async *walkRecords(from?: string): AsyncIterable<{\n collection: string\n rkey: string\n cid: Cid\n record: LexMap\n }> {\n for await (const leaf of this.data.walkLeavesFrom(from ?? '')) {\n const { collection, rkey } = util.parseDataKey(leaf.key)\n const record = await this.storage.readRecord(leaf.value)\n yield { collection, rkey, cid: leaf.value, record }\n }\n }\n\n async getRecord(collection: string, rkey: string): Promise<unknown | null> {\n const dataKey = collection + '/' + rkey\n const cid = await this.data.get(dataKey)\n if (!cid) return null\n return this.storage.readObj(cid, def.unknown)\n }\n\n async getContents(): Promise<RepoContents> {\n const entries = await this.data.list()\n const cids = entries.map((e) => e.value)\n const { blocks, missing } = await this.storage.getBlocks(cids)\n if (missing.length > 0) {\n throw new MissingBlocksError('getContents record', missing)\n }\n const contents: RepoContents = {}\n for (const entry of entries) {\n const { collection, rkey } = util.parseDataKey(entry.key)\n contents[collection] ??= {}\n const parsed = await parse.getAndParseRecord(blocks, entry.value)\n contents[collection][rkey] = parsed.record\n }\n return contents\n }\n}\n"]}
|
package/dist/repo.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as crypto from '@atproto/crypto';
|
|
2
2
|
import { Cid } from '@atproto/lex-data';
|
|
3
|
-
import { BlockMap } from './block-map';
|
|
4
|
-
import { CidSet } from './cid-set';
|
|
5
|
-
import { MST } from './mst';
|
|
6
|
-
import { ReadableRepo } from './readable-repo';
|
|
7
|
-
import { RepoStorage } from './storage';
|
|
8
|
-
import { Commit, CommitData, RecordCreateOp, RecordWriteOp } from './types';
|
|
3
|
+
import { BlockMap } from './block-map.js';
|
|
4
|
+
import { CidSet } from './cid-set.js';
|
|
5
|
+
import { MST } from './mst/index.js';
|
|
6
|
+
import { ReadableRepo } from './readable-repo.js';
|
|
7
|
+
import { RepoStorage } from './storage/index.js';
|
|
8
|
+
import { Commit, CommitData, RecordCreateOp, RecordWriteOp } from './types.js';
|
|
9
9
|
type Params = {
|
|
10
10
|
storage: RepoStorage;
|
|
11
11
|
data: MST;
|
package/dist/repo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC,OAAO,EAAE,GAAG,EAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC,OAAO,EAAE,GAAG,EAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAGrC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,aAAa,EAGd,MAAM,YAAY,CAAA;AAGnB,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,EAAE,GAAG,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,qBAAa,IAAK,SAAQ,YAAY;IACpC,OAAO,EAAE,WAAW,CAAA;gBAER,MAAM,EAAE,MAAM;WAKb,gBAAgB,CAC3B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,aAAa,GAAE,cAAc,EAAO,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,UAAU,CAAC;WAoCT,gBAAgB,CAC3B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC;WAKH,MAAM,CACjB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,aAAa,GAAE,cAAc,EAAO,GACnC,OAAO,CAAC,IAAI,CAAC;WAUH,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,GAAG;IAgB3C,YAAY,CAChB,OAAO,EAAE,aAAa,GAAG,aAAa,EAAE,EACxC,OAAO,EAAE,MAAM,CAAC,OAAO,GACtB,OAAO,CAAC,UAAU,CAAC;IAwEhB,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,WAAW,CACf,OAAO,EAAE,aAAa,GAAG,aAAa,EAAE,EACxC,OAAO,EAAE,MAAM,CAAC,OAAO,GACtB,OAAO,CAAC,IAAI,CAAC;IAKV,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;;;;;;;;;IAwBvD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;CAIxD;AAED,eAAe,IAAI,CAAA"}
|