@dxos/feed-store 2.12.20 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/benchmark.js +2 -3
- package/dist/src/benchmark.js.map +1 -1
- package/dist/src/create-batch-stream.test.js +1 -2
- package/dist/src/create-batch-stream.test.js.map +1 -1
- package/dist/src/feed-descriptor.d.ts +9 -27
- package/dist/src/feed-descriptor.d.ts.map +1 -1
- package/dist/src/feed-descriptor.js +9 -39
- package/dist/src/feed-descriptor.js.map +1 -1
- package/dist/src/feed-descriptor.test.js +19 -33
- package/dist/src/feed-descriptor.test.js.map +1 -1
- package/dist/src/feed-store.d.ts +4 -53
- package/dist/src/feed-store.d.ts.map +1 -1
- package/dist/src/feed-store.js +16 -140
- package/dist/src/feed-store.js.map +1 -1
- package/dist/src/feed-store.test.js +34 -96
- package/dist/src/feed-store.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -9
- package/src/benchmark.ts +2 -3
- package/src/create-batch-stream.test.ts +1 -2
- package/src/feed-descriptor.test.ts +20 -41
- package/src/feed-descriptor.ts +20 -59
- package/src/feed-store.test.ts +39 -114
- package/src/feed-store.ts +18 -174
package/dist/src/benchmark.js
CHANGED
|
@@ -18,13 +18,12 @@ void (async () => {
|
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
const fs = new feed_store_1.FeedStore(random_access_multi_storage_1.createStorage('.benchmark'), { valueEncoding: 'utf8' });
|
|
21
|
-
await fs.open();
|
|
22
21
|
const suite = new benchmark_suite_1.Suite(fs, { maxFeeds, maxMessages });
|
|
23
22
|
suite.beforeAll(() => {
|
|
24
23
|
return Promise.all(range(maxFeeds).map(async (i) => {
|
|
25
24
|
const name = `feed/${i}`;
|
|
26
25
|
const { publicKey, secretKey } = crypto_1.createKeyPair();
|
|
27
|
-
const feed = await fs.
|
|
26
|
+
const { feed } = await fs.openReadWriteFeed(crypto_1.PublicKey.from(publicKey), secretKey);
|
|
28
27
|
for (let i = 0; i < maxMessages; i++) {
|
|
29
28
|
await new Promise((resolve, reject) => {
|
|
30
29
|
feed.append(`${name}/${i}`, (err) => {
|
|
@@ -40,7 +39,7 @@ void (async () => {
|
|
|
40
39
|
});
|
|
41
40
|
suite.test('getBatch', async () => {
|
|
42
41
|
let count = 0;
|
|
43
|
-
await Promise.all(fs.
|
|
42
|
+
await Promise.all(Array.from(fs._descriptors.values()).map(({ feed }) => {
|
|
44
43
|
return new Promise((resolve, reject) => {
|
|
45
44
|
feed.getBatch(0, maxMessages, (err, result) => {
|
|
46
45
|
count += result.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../src/benchmark.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;AAEF,2DAA8C;AAC9C,yCAAwD;AACxD,mFAAkE;AAElE,6CAAyC;AAEzC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAElD,KAAK,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAM,WAAW,GAAG,IAAI,CAAC;IACzB,MAAM,gBAAgB,GAAG,QAAQ,GAAG,WAAW,CAAC;IAEhD,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE;QAC9B,IAAI,KAAK,KAAK,gBAAgB,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;IACH,CAAC,CAAC;IAEF,MAAM,EAAE,GAAG,IAAI,sBAAS,CAAC,2CAAa,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;IACjF,MAAM,
|
|
1
|
+
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../src/benchmark.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,9 +14,8 @@ const create_batch_stream_1 = require("./create-batch-stream");
|
|
|
14
14
|
const feed_store_1 = require("./feed-store");
|
|
15
15
|
const createFeed = async () => {
|
|
16
16
|
const feedStore = new feed_store_1.FeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM), { valueEncoding: 'utf-8' });
|
|
17
|
-
await feedStore.open();
|
|
18
17
|
const { publicKey, secretKey } = crypto_1.createKeyPair();
|
|
19
|
-
const feed = await feedStore.
|
|
18
|
+
const { feed } = await feedStore.openReadWriteFeed(crypto_1.PublicKey.from(publicKey), secretKey);
|
|
20
19
|
return feed;
|
|
21
20
|
};
|
|
22
21
|
const append = (feed, message) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-batch-stream.test.js","sourceRoot":"","sources":["../../src/create-batch-stream.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;AAEF,gDAAwB;AACxB,sEAA4C;AAE5C,yCAAwD;AACxD,mFAA+E;AAE/E,+DAA0D;AAC1D,6CAAyC;AAGzC,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;IAC5B,MAAM,SAAS,GAAG,IAAI,sBAAS,CAAC,2CAAa,CAAC,EAAE,EAAE,yCAAW,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5F,MAAM,
|
|
1
|
+
{"version":3,"file":"create-batch-stream.test.js","sourceRoot":"","sources":["../../src/create-batch-stream.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Lock } from '@dxos/async';
|
|
3
2
|
import { PublicKey } from '@dxos/crypto';
|
|
4
3
|
import type { IStorage } from '@dxos/random-access-multi-storage';
|
|
5
4
|
import type { HypercoreFeed, Hypercore } from './hypercore-types';
|
|
@@ -7,37 +6,30 @@ import type { ValueEncoding } from './types';
|
|
|
7
6
|
interface FeedDescriptorOptions {
|
|
8
7
|
storage: IStorage;
|
|
9
8
|
key: PublicKey;
|
|
9
|
+
hypercore: Hypercore;
|
|
10
10
|
secretKey?: Buffer;
|
|
11
11
|
valueEncoding?: ValueEncoding;
|
|
12
|
-
metadata?: any;
|
|
13
|
-
hypercore?: Hypercore;
|
|
14
12
|
}
|
|
15
|
-
declare type Listener = ((...args: any) => Promise<void> | void) | null;
|
|
16
13
|
/**
|
|
17
14
|
* FeedDescriptor
|
|
18
15
|
*
|
|
19
16
|
* Abstract handler for an Hypercore instance.
|
|
20
17
|
*/
|
|
21
18
|
export declare class FeedDescriptor {
|
|
22
|
-
private _storage;
|
|
23
|
-
private _key;
|
|
24
|
-
private _secretKey?;
|
|
25
|
-
private _valueEncoding?;
|
|
26
|
-
private _hypercore;
|
|
27
|
-
private
|
|
28
|
-
private _discoveryKey;
|
|
29
|
-
readonly lock: Lock;
|
|
19
|
+
private readonly _storage;
|
|
20
|
+
private readonly _key;
|
|
21
|
+
private readonly _secretKey?;
|
|
22
|
+
private readonly _valueEncoding?;
|
|
23
|
+
private readonly _hypercore;
|
|
24
|
+
private readonly _lock;
|
|
30
25
|
private _feed;
|
|
31
|
-
private _listeners;
|
|
32
26
|
constructor(options: FeedDescriptorOptions);
|
|
33
|
-
get feed(): HypercoreFeed
|
|
27
|
+
get feed(): HypercoreFeed;
|
|
34
28
|
get opened(): boolean;
|
|
35
29
|
get key(): PublicKey;
|
|
36
30
|
get secretKey(): Buffer | undefined;
|
|
37
|
-
get discoveryKey(): Buffer;
|
|
38
31
|
get valueEncoding(): ValueEncoding | undefined;
|
|
39
|
-
get
|
|
40
|
-
setMetadata(metadata: any): Promise<void>;
|
|
32
|
+
get writable(): boolean;
|
|
41
33
|
/**
|
|
42
34
|
* Open an Hypercore feed based on the related feed options.
|
|
43
35
|
*
|
|
@@ -49,22 +41,12 @@ export declare class FeedDescriptor {
|
|
|
49
41
|
* Close the Hypercore referenced by the descriptor.
|
|
50
42
|
*/
|
|
51
43
|
close(): Promise<void>;
|
|
52
|
-
/**
|
|
53
|
-
* Watch for descriptor events.
|
|
54
|
-
*
|
|
55
|
-
* @param {function} listener
|
|
56
|
-
*/
|
|
57
|
-
watch(listener: Listener): void;
|
|
58
44
|
/**
|
|
59
45
|
* Defines the real path where the Hypercore is going
|
|
60
46
|
* to work with the RandomAccessStorage specified.
|
|
61
47
|
*/
|
|
62
48
|
private _createStorage;
|
|
63
49
|
private _open;
|
|
64
|
-
/**
|
|
65
|
-
* Asynchronous emitter.
|
|
66
|
-
*/
|
|
67
|
-
private _emit;
|
|
68
50
|
}
|
|
69
51
|
export default FeedDescriptor;
|
|
70
52
|
//# sourceMappingURL=feed-descriptor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-descriptor.d.ts","sourceRoot":"","sources":["../../src/feed-descriptor.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"feed-descriptor.d.ts","sourceRoot":"","sources":["../../src/feed-descriptor.ts"],"names":[],"mappings":";AASA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAS,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,UAAU,qBAAqB;IAC7B,OAAO,EAAE,QAAQ,CAAC;IAClB,GAAG,EAAE,SAAS,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAE7B,OAAO,CAAC,KAAK,CAAuB;gBAEvB,OAAO,EAAE,qBAAqB;IAoB3C,IAAI,IAAI,IAAK,aAAa,CAGzB;IAED,IAAI,MAAM,YAET;IAED,IAAI,GAAG,cAEN;IAED,IAAI,SAAS,uBAEZ;IAED,IAAI,aAAa,8BAEhB;IAED,IAAI,QAAQ,YAEX;IAED;;;;;OAKG;IACG,IAAI,IAAK,OAAO,CAAC,aAAa,CAAC;IAWrC;;OAEG;IACG,KAAK;IAUX;;;OAGG;IACH,OAAO,CAAC,cAAc;YAMR,KAAK;CAYpB;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -11,7 +11,6 @@ const assert_1 = __importDefault(require("assert"));
|
|
|
11
11
|
const hypercore_1 = __importDefault(require("hypercore"));
|
|
12
12
|
const pify_1 = __importDefault(require("pify"));
|
|
13
13
|
const async_1 = require("@dxos/async");
|
|
14
|
-
const crypto_1 = require("@dxos/crypto");
|
|
15
14
|
/**
|
|
16
15
|
* FeedDescriptor
|
|
17
16
|
*
|
|
@@ -19,19 +18,17 @@ const crypto_1 = require("@dxos/crypto");
|
|
|
19
18
|
*/
|
|
20
19
|
class FeedDescriptor {
|
|
21
20
|
constructor(options) {
|
|
22
|
-
|
|
23
|
-
const { storage, key, secretKey, valueEncoding, hypercore = hypercore_1.default, metadata } = options;
|
|
21
|
+
const { storage, key, secretKey, valueEncoding, hypercore = hypercore_1.default } = options;
|
|
24
22
|
this._storage = storage;
|
|
25
23
|
this._valueEncoding = valueEncoding;
|
|
26
24
|
this._hypercore = hypercore;
|
|
27
|
-
this._metadata = metadata;
|
|
28
25
|
this._key = key;
|
|
29
26
|
this._secretKey = secretKey;
|
|
30
|
-
this.
|
|
31
|
-
this.lock = new async_1.Lock();
|
|
27
|
+
this._lock = new async_1.Lock();
|
|
32
28
|
this._feed = null;
|
|
33
29
|
}
|
|
34
30
|
get feed() {
|
|
31
|
+
assert_1.default(this._feed, 'Feed is not initialized');
|
|
35
32
|
return this._feed;
|
|
36
33
|
}
|
|
37
34
|
get opened() {
|
|
@@ -43,18 +40,11 @@ class FeedDescriptor {
|
|
|
43
40
|
get secretKey() {
|
|
44
41
|
return this._secretKey;
|
|
45
42
|
}
|
|
46
|
-
get discoveryKey() {
|
|
47
|
-
return this._discoveryKey;
|
|
48
|
-
}
|
|
49
43
|
get valueEncoding() {
|
|
50
44
|
return this._valueEncoding;
|
|
51
45
|
}
|
|
52
|
-
get
|
|
53
|
-
return this.
|
|
54
|
-
}
|
|
55
|
-
async setMetadata(metadata) {
|
|
56
|
-
this._metadata = metadata;
|
|
57
|
-
await this._emit('updated');
|
|
46
|
+
get writable() {
|
|
47
|
+
return !!this.secretKey;
|
|
58
48
|
}
|
|
59
49
|
/**
|
|
60
50
|
* Open an Hypercore feed based on the related feed options.
|
|
@@ -64,15 +54,12 @@ class FeedDescriptor {
|
|
|
64
54
|
*/
|
|
65
55
|
async open() {
|
|
66
56
|
if (this.opened) {
|
|
67
|
-
|
|
68
|
-
return this._feed;
|
|
57
|
+
return this.feed;
|
|
69
58
|
}
|
|
70
|
-
await this.
|
|
59
|
+
await this._lock.executeSynchronized(async () => {
|
|
71
60
|
await this._open();
|
|
72
|
-
await this._emit('opened');
|
|
73
61
|
});
|
|
74
|
-
|
|
75
|
-
return this._feed;
|
|
62
|
+
return this.feed;
|
|
76
63
|
}
|
|
77
64
|
/**
|
|
78
65
|
* Close the Hypercore referenced by the descriptor.
|
|
@@ -81,20 +68,11 @@ class FeedDescriptor {
|
|
|
81
68
|
if (!this.opened) {
|
|
82
69
|
return;
|
|
83
70
|
}
|
|
84
|
-
await this.
|
|
71
|
+
await this._lock.executeSynchronized(async () => {
|
|
85
72
|
var _a;
|
|
86
73
|
await pify_1.default((_a = this._feed) === null || _a === void 0 ? void 0 : _a.close.bind(this._feed))();
|
|
87
|
-
await this._emit('closed');
|
|
88
74
|
});
|
|
89
75
|
}
|
|
90
|
-
/**
|
|
91
|
-
* Watch for descriptor events.
|
|
92
|
-
*
|
|
93
|
-
* @param {function} listener
|
|
94
|
-
*/
|
|
95
|
-
watch(listener) {
|
|
96
|
-
this._listeners.push(listener);
|
|
97
|
-
}
|
|
98
76
|
/**
|
|
99
77
|
* Defines the real path where the Hypercore is going
|
|
100
78
|
* to work with the RandomAccessStorage specified.
|
|
@@ -111,14 +89,6 @@ class FeedDescriptor {
|
|
|
111
89
|
});
|
|
112
90
|
await pify_1.default(this._feed.ready.bind(this._feed))();
|
|
113
91
|
}
|
|
114
|
-
/**
|
|
115
|
-
* Asynchronous emitter.
|
|
116
|
-
*/
|
|
117
|
-
async _emit(event, ...args) {
|
|
118
|
-
for (const listener of this._listeners) {
|
|
119
|
-
await (listener === null || listener === void 0 ? void 0 : listener(event, ...args));
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
92
|
}
|
|
123
93
|
exports.FeedDescriptor = FeedDescriptor;
|
|
124
94
|
exports.default = FeedDescriptor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-descriptor.js","sourceRoot":"","sources":["../../src/feed-descriptor.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,oDAA4B;AAC5B,0DAAyC;AACzC,gDAAwB;AAExB,uCAAmC;
|
|
1
|
+
{"version":3,"file":"feed-descriptor.js","sourceRoot":"","sources":["../../src/feed-descriptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,22 +8,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
/* eslint-disable jest/no-done-callback */
|
|
10
10
|
const assert_1 = __importDefault(require("assert"));
|
|
11
|
+
const hypercore_1 = __importDefault(require("hypercore"));
|
|
11
12
|
const pify_1 = __importDefault(require("pify"));
|
|
12
13
|
const tempy_1 = __importDefault(require("tempy"));
|
|
13
|
-
const wait_for_expect_1 = __importDefault(require("wait-for-expect"));
|
|
14
14
|
const crypto_1 = require("@dxos/crypto");
|
|
15
15
|
const random_access_multi_storage_1 = require("@dxos/random-access-multi-storage");
|
|
16
16
|
const feed_descriptor_1 = __importDefault(require("./feed-descriptor"));
|
|
17
|
-
// Caution: the tests depend on each other in sequence.
|
|
18
17
|
describe('FeedDescriptor', () => {
|
|
19
18
|
let fd;
|
|
20
|
-
|
|
19
|
+
beforeEach(async () => {
|
|
21
20
|
const { publicKey, secretKey } = crypto_1.createKeyPair();
|
|
22
|
-
|
|
23
|
-
storage: random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.
|
|
21
|
+
fd = new feed_descriptor_1.default({
|
|
22
|
+
storage: random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM),
|
|
24
23
|
key: crypto_1.PublicKey.from(publicKey),
|
|
25
|
-
secretKey
|
|
24
|
+
secretKey,
|
|
25
|
+
hypercore: hypercore_1.default
|
|
26
26
|
});
|
|
27
|
+
});
|
|
28
|
+
afterEach(async () => {
|
|
29
|
+
await fd.close();
|
|
30
|
+
});
|
|
31
|
+
test('Create', () => {
|
|
27
32
|
expect(fd).toBeInstanceOf(feed_descriptor_1.default);
|
|
28
33
|
expect(fd.key).toBeDefined();
|
|
29
34
|
expect(fd.secretKey).toBeDefined();
|
|
@@ -32,30 +37,25 @@ describe('FeedDescriptor', () => {
|
|
|
32
37
|
// When this behaviour was changed, suddenly `protocol-plugin-replicator` tests started hanging forever on network generation.
|
|
33
38
|
const { publicKey } = crypto_1.createKeyPair();
|
|
34
39
|
const key = crypto_1.PublicKey.from(publicKey);
|
|
35
|
-
const fd = new feed_descriptor_1.default({ key, storage: random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_NODE) });
|
|
40
|
+
const fd = new feed_descriptor_1.default({ key, storage: random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_NODE), hypercore: hypercore_1.default });
|
|
36
41
|
expect(fd.key).toEqual(key);
|
|
37
42
|
expect(fd.secretKey).toBeUndefined();
|
|
38
43
|
});
|
|
39
44
|
test('Create custom options', () => {
|
|
40
45
|
const { publicKey, secretKey } = crypto_1.createKeyPair();
|
|
41
|
-
const
|
|
42
|
-
subject: 'books'
|
|
43
|
-
};
|
|
44
|
-
fd = new feed_descriptor_1.default({
|
|
46
|
+
const fd = new feed_descriptor_1.default({
|
|
45
47
|
storage: random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM),
|
|
46
48
|
key: crypto_1.PublicKey.from(publicKey),
|
|
47
49
|
secretKey,
|
|
48
50
|
valueEncoding: 'json',
|
|
49
|
-
|
|
51
|
+
hypercore: hypercore_1.default
|
|
50
52
|
});
|
|
51
53
|
expect(fd).toBeInstanceOf(feed_descriptor_1.default);
|
|
52
54
|
expect(fd.key).toBeInstanceOf(crypto_1.PublicKey);
|
|
53
55
|
expect(fd.secretKey).toBeInstanceOf(Buffer);
|
|
54
|
-
expect(fd.metadata).toEqual(metadata);
|
|
55
56
|
expect(fd.valueEncoding).toBe('json');
|
|
56
57
|
});
|
|
57
58
|
test('Open', async () => {
|
|
58
|
-
expect(fd.feed).toBeNull();
|
|
59
59
|
expect(fd.opened).toBe(false);
|
|
60
60
|
// Opening multiple times should actually open once.
|
|
61
61
|
const [feed1, feed2] = await Promise.all([fd.open(), fd.open()]);
|
|
@@ -66,6 +66,7 @@ describe('FeedDescriptor', () => {
|
|
|
66
66
|
expect(fd.opened).toBe(true);
|
|
67
67
|
});
|
|
68
68
|
test('Close', async () => {
|
|
69
|
+
await fd.open();
|
|
69
70
|
// Closing multiple times should actually close once.
|
|
70
71
|
await Promise.all([fd.close(), fd.close()]);
|
|
71
72
|
expect(fd.opened).toBe(false);
|
|
@@ -78,7 +79,8 @@ describe('FeedDescriptor', () => {
|
|
|
78
79
|
const fd2 = new feed_descriptor_1.default({
|
|
79
80
|
storage: random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM),
|
|
80
81
|
key: crypto_1.PublicKey.from(publicKey),
|
|
81
|
-
secretKey
|
|
82
|
+
secretKey,
|
|
83
|
+
hypercore: hypercore_1.default
|
|
82
84
|
});
|
|
83
85
|
await fd2.open();
|
|
84
86
|
await expect(fd2.close()).resolves.toBeUndefined();
|
|
@@ -91,7 +93,8 @@ describe('FeedDescriptor', () => {
|
|
|
91
93
|
storage: random_access_multi_storage_1.createStorage(root, random_access_multi_storage_1.STORAGE_NODE),
|
|
92
94
|
key: crypto_1.PublicKey.from(publicKey),
|
|
93
95
|
secretKey,
|
|
94
|
-
valueEncoding: 'utf-8'
|
|
96
|
+
valueEncoding: 'utf-8',
|
|
97
|
+
hypercore: hypercore_1.default
|
|
95
98
|
});
|
|
96
99
|
await fd.open();
|
|
97
100
|
expect(fd.opened).toBe(true);
|
|
@@ -104,21 +107,6 @@ describe('FeedDescriptor', () => {
|
|
|
104
107
|
const msg = await pify_1.default(fd.feed.head.bind(fd.feed))();
|
|
105
108
|
expect(msg).toBe('test');
|
|
106
109
|
});
|
|
107
|
-
test('Watch data', async () => {
|
|
108
|
-
const { publicKey, secretKey } = crypto_1.createKeyPair();
|
|
109
|
-
const fd = new feed_descriptor_1.default({
|
|
110
|
-
storage: random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM),
|
|
111
|
-
key: crypto_1.PublicKey.from(publicKey),
|
|
112
|
-
secretKey
|
|
113
|
-
});
|
|
114
|
-
const events = [];
|
|
115
|
-
fd.watch(event => {
|
|
116
|
-
events.push(event);
|
|
117
|
-
});
|
|
118
|
-
await fd.open();
|
|
119
|
-
await wait_for_expect_1.default(() => expect(events).toContain('opened'));
|
|
120
|
-
await fd.close();
|
|
121
|
-
});
|
|
122
110
|
test('on open error should unlock the resource', async () => {
|
|
123
111
|
const { publicKey, secretKey } = crypto_1.createKeyPair();
|
|
124
112
|
const fd = new feed_descriptor_1.default({
|
|
@@ -130,7 +118,6 @@ describe('FeedDescriptor', () => {
|
|
|
130
118
|
}
|
|
131
119
|
});
|
|
132
120
|
await expect(fd.open()).rejects.toThrow(/open error/);
|
|
133
|
-
await expect(fd.lock.executeSynchronized(async () => 'Unlocked')).resolves.toBe('Unlocked');
|
|
134
121
|
});
|
|
135
122
|
test('on close error should unlock the resource', async () => {
|
|
136
123
|
const { publicKey, secretKey } = crypto_1.createKeyPair();
|
|
@@ -151,7 +138,6 @@ describe('FeedDescriptor', () => {
|
|
|
151
138
|
});
|
|
152
139
|
await fd.open();
|
|
153
140
|
await expect(fd.close()).rejects.toThrow(/close error/);
|
|
154
|
-
await expect(fd.lock.executeSynchronized(async () => 'Unlocked')).resolves.toBe('Unlocked');
|
|
155
141
|
});
|
|
156
142
|
});
|
|
157
143
|
//# sourceMappingURL=feed-descriptor.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-descriptor.test.js","sourceRoot":"","sources":["../../src/feed-descriptor.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;AAEF,0CAA0C;AAE1C,oDAA4B;AAC5B,gDAAwB;AACxB,kDAA0B;
|
|
1
|
+
{"version":3,"file":"feed-descriptor.test.js","sourceRoot":"","sources":["../../src/feed-descriptor.test.ts"],"names":[],"mappings":"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"}
|
package/dist/src/feed-store.d.ts
CHANGED
|
@@ -1,24 +1,20 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Event } from '@dxos/async';
|
|
3
|
-
import { PublicKey
|
|
3
|
+
import { PublicKey } from '@dxos/crypto';
|
|
4
4
|
import { IStorage } from '@dxos/random-access-multi-storage';
|
|
5
5
|
import FeedDescriptor from './feed-descriptor';
|
|
6
|
-
import type {
|
|
6
|
+
import type { Hypercore } from './hypercore-types';
|
|
7
7
|
import type { ValueEncoding } from './types';
|
|
8
|
-
declare type DescriptorCallback = (descriptor: FeedDescriptor) => boolean;
|
|
9
8
|
export interface CreateDescriptorOptions {
|
|
10
9
|
key: PublicKey;
|
|
11
10
|
secretKey?: Buffer;
|
|
12
|
-
metadata?: any;
|
|
13
11
|
}
|
|
14
12
|
export interface CreateReadWriteFeedOptions {
|
|
15
13
|
key: PublicKey;
|
|
16
14
|
secretKey: Buffer;
|
|
17
|
-
metadata?: any;
|
|
18
15
|
}
|
|
19
16
|
export interface CreateReadOnlyFeedOptions {
|
|
20
17
|
key: PublicKey;
|
|
21
|
-
metadata?: any;
|
|
22
18
|
}
|
|
23
19
|
export interface FeedStoreOptions {
|
|
24
20
|
/**
|
|
@@ -41,11 +37,6 @@ export declare class FeedStore {
|
|
|
41
37
|
private _valueEncoding;
|
|
42
38
|
private _hypercore;
|
|
43
39
|
private _descriptors;
|
|
44
|
-
private _open;
|
|
45
|
-
/**
|
|
46
|
-
* Is emitted when data gets appended to one of the FeedStore's feeds represented by FeedDescriptors.
|
|
47
|
-
*/
|
|
48
|
-
readonly appendEvent: Event<FeedDescriptor>;
|
|
49
40
|
/**
|
|
50
41
|
* Is emitted when a new feed represented by FeedDescriptor is opened.
|
|
51
42
|
*/
|
|
@@ -55,62 +46,22 @@ export declare class FeedStore {
|
|
|
55
46
|
* @param options Feedstore options.
|
|
56
47
|
*/
|
|
57
48
|
constructor(storage: IStorage, options?: FeedStoreOptions);
|
|
58
|
-
get opened(): boolean;
|
|
59
|
-
get closed(): boolean;
|
|
60
49
|
/**
|
|
61
50
|
* @type {RandomAccessStorage}
|
|
62
51
|
*/
|
|
63
52
|
get storage(): IStorage;
|
|
64
|
-
open(): Promise<void>;
|
|
65
53
|
close(): Promise<void>;
|
|
66
|
-
/**
|
|
67
|
-
* Get the list of descriptors.
|
|
68
|
-
*/
|
|
69
|
-
getDescriptors(): FeedDescriptor[];
|
|
70
|
-
/**
|
|
71
|
-
* Get desciptor by its public key
|
|
72
|
-
*/
|
|
73
|
-
getDescriptor(key: PublicKeyLike): FeedDescriptor | undefined;
|
|
74
|
-
/**
|
|
75
|
-
* Fast access to a descriptor
|
|
76
|
-
*/
|
|
77
|
-
getDescriptorByDiscoveryKey(discoverKey: Buffer): FeedDescriptor | undefined;
|
|
78
|
-
/**
|
|
79
|
-
* Get the list of opened feeds, with optional filter.
|
|
80
|
-
*/
|
|
81
|
-
getOpenFeeds(callback?: DescriptorCallback): HypercoreFeed[];
|
|
82
|
-
/**
|
|
83
|
-
* Find an opened feed using a filter callback.
|
|
84
|
-
*/
|
|
85
|
-
getOpenFeed(callback: DescriptorCallback): HypercoreFeed | undefined;
|
|
86
|
-
/**
|
|
87
|
-
* Checks if feedstore has a feed with specified key.
|
|
88
|
-
*/
|
|
89
|
-
hasFeed(key: PublicKeyLike): boolean;
|
|
90
|
-
/**
|
|
91
|
-
* Open multiple feeds using a filter callback.
|
|
92
|
-
*/
|
|
93
|
-
openFeeds(callback: DescriptorCallback): Promise<HypercoreFeed[]>;
|
|
94
|
-
/**
|
|
95
|
-
* Open a feed to FeedStore.
|
|
96
|
-
*/
|
|
97
|
-
openFeed(key: PublicKey): Promise<HypercoreFeed>;
|
|
98
54
|
/**
|
|
99
55
|
* Create a feed to Feedstore
|
|
100
56
|
*/
|
|
101
|
-
|
|
57
|
+
openReadWriteFeed(key: PublicKey, secretKey: Buffer): Promise<FeedDescriptor>;
|
|
102
58
|
/**
|
|
103
59
|
* Create a readonly feed to Feedstore
|
|
104
60
|
*/
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Close a feed by the key.
|
|
108
|
-
*/
|
|
109
|
-
closeFeed(key: PublicKey): Promise<void>;
|
|
61
|
+
openReadOnlyFeed(key: PublicKey): Promise<FeedDescriptor>;
|
|
110
62
|
/**
|
|
111
63
|
* Factory to create a new FeedDescriptor.
|
|
112
64
|
*/
|
|
113
65
|
private _createDescriptor;
|
|
114
66
|
}
|
|
115
|
-
export {};
|
|
116
67
|
//# sourceMappingURL=feed-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed-store.d.ts","sourceRoot":"","sources":["../../src/feed-store.ts"],"names":[],"mappings":";AAOA,OAAO,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"feed-store.d.ts","sourceRoot":"","sources":["../../src/feed-store.ts"],"names":[],"mappings":";AAOA,OAAO,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7D,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,SAAS,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,SAAS,CAAC;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,SAAS,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,YAAY,CAA8B;IAElD;;OAEG;IACH,QAAQ,CAAC,eAAe,wBAA+B;IAEvD;;;OAGG;gBACU,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAE,gBAAqB;IAgB9D;;OAEG;IACH,IAAI,OAAO,aAEV;IAGK,KAAK;IAKX;;OAEG;IACG,iBAAiB,CAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAQpF;;OAEG;IACG,gBAAgB,CAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;IAKhE;;OAEG;YACW,iBAAiB;CAqBhC"}
|