@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.
@@ -29,10 +29,6 @@ class FeedStore {
29
29
  * @param options Feedstore options.
30
30
  */
31
31
  constructor(storage, options = {}) {
32
- /**
33
- * Is emitted when data gets appended to one of the FeedStore's feeds represented by FeedDescriptors.
34
- */
35
- this.appendEvent = new async_1.Event();
36
32
  /**
37
33
  * Is emitted when a new feed represented by FeedDescriptor is opened.
38
34
  */
@@ -43,13 +39,6 @@ class FeedStore {
43
39
  this._valueEncoding = valueEncoding && patchBufferCodec(valueEncoding);
44
40
  this._hypercore = hypercore;
45
41
  this._descriptors = new Map();
46
- this._open = false;
47
- }
48
- get opened() {
49
- return this._open;
50
- }
51
- get closed() {
52
- return !this._open;
53
42
  }
54
43
  /**
55
44
  * @type {RandomAccessStorage}
@@ -57,162 +46,49 @@ class FeedStore {
57
46
  get storage() {
58
47
  return this._storage;
59
48
  }
60
- async open() {
61
- if (this._open) {
62
- return;
63
- }
64
- this._open = true;
65
- }
66
49
  async close() {
67
- if (!this._open) {
68
- return;
69
- }
70
- this._open = false;
71
- await Promise.all(this
72
- .getDescriptors()
73
- .map(descriptor => descriptor.close()));
50
+ await Promise.all(Array.from(this._descriptors.values()).map(descriptor => descriptor.close()));
74
51
  this._descriptors.clear();
75
52
  }
76
- /**
77
- * Get the list of descriptors.
78
- */
79
- getDescriptors() {
80
- return Array.from(this._descriptors.values());
81
- }
82
- /**
83
- * Get desciptor by its public key
84
- */
85
- getDescriptor(key) {
86
- return this.getDescriptors().find(descriptor => descriptor.key.equals(key));
87
- }
88
- /**
89
- * Fast access to a descriptor
90
- */
91
- getDescriptorByDiscoveryKey(discoverKey) {
92
- return this._descriptors.get(discoverKey.toString('hex'));
93
- }
94
- /**
95
- * Get the list of opened feeds, with optional filter.
96
- */
97
- getOpenFeeds(callback) {
98
- const notNull = (value) => Boolean(value);
99
- return this.getDescriptors()
100
- .filter(descriptor => descriptor.opened && (!callback || callback(descriptor)))
101
- .map(descriptor => descriptor.feed)
102
- .filter(notNull);
103
- }
104
- /**
105
- * Find an opened feed using a filter callback.
106
- */
107
- getOpenFeed(callback) {
108
- const descriptor = this.getDescriptors()
109
- .find(descriptor => descriptor.opened && callback(descriptor));
110
- if (descriptor && descriptor.feed) {
111
- return descriptor.feed;
112
- }
113
- return undefined;
114
- }
115
- /**
116
- * Checks if feedstore has a feed with specified key.
117
- */
118
- hasFeed(key) {
119
- return this.getDescriptors().some(fd => fd.key.equals(key));
120
- }
121
- /**
122
- * Open multiple feeds using a filter callback.
123
- */
124
- async openFeeds(callback) {
125
- assert_1.default(this._open, 'FeedStore closed');
126
- const descriptors = this.getDescriptors()
127
- .filter(descriptor => callback(descriptor));
128
- return Promise.all(descriptors.map(descriptor => descriptor.open()));
129
- }
130
- /**
131
- * Open a feed to FeedStore.
132
- */
133
- async openFeed(key) {
134
- assert_1.default(this._open, 'FeedStore closed');
135
- const descriptor = this.getDescriptors().find(fd => fd.key.equals(key));
136
- assert_1.default(descriptor, 'Descriptor not found');
137
- const feed = await descriptor.open();
138
- return feed;
139
- }
140
53
  /**
141
54
  * Create a feed to Feedstore
142
55
  */
143
- async createReadWriteFeed(options) {
144
- this._createDescriptor(options);
145
- return this.openFeed(options.key);
56
+ async openReadWriteFeed(key, secretKey) {
57
+ const descriptor = this._descriptors.get(key.toString());
58
+ if (descriptor && descriptor.secretKey) {
59
+ return descriptor;
60
+ }
61
+ return this._createDescriptor({ key, secretKey });
146
62
  }
147
63
  /**
148
64
  * Create a readonly feed to Feedstore
149
65
  */
150
- async createReadOnlyFeed(options) {
151
- this._createDescriptor(options);
152
- return this.openFeed(options.key);
153
- }
154
- /**
155
- * Close a feed by the key.
156
- */
157
- async closeFeed(key) {
158
- assert_1.default(this._open, 'FeedStore closed');
159
- const descriptor = this.getDescriptors().find(fd => fd.key.equals(key));
160
- if (!descriptor) {
161
- throw new Error(`Feed not found: ${key.toString()}`);
162
- }
163
- await descriptor.close();
66
+ async openReadOnlyFeed(key) {
67
+ var _a;
68
+ const descriptor = (_a = this._descriptors.get(key.toString())) !== null && _a !== void 0 ? _a : await this._createDescriptor({ key });
69
+ return descriptor;
164
70
  }
165
71
  /**
166
72
  * Factory to create a new FeedDescriptor.
167
73
  */
168
- _createDescriptor(options) {
169
- const { key, secretKey, metadata } = options;
170
- const existing = this.getDescriptors().find(fd => fd.key.equals(key));
171
- if (existing) {
172
- return existing;
173
- }
74
+ async _createDescriptor(options) {
75
+ const { key, secretKey } = options;
174
76
  const descriptor = new feed_descriptor_1.default({
175
77
  storage: this._storage,
176
78
  key,
177
79
  secretKey,
178
80
  valueEncoding: this._valueEncoding,
179
- metadata,
180
81
  hypercore: this._hypercore
181
82
  });
182
- this._descriptors.set(descriptor.discoveryKey.toString('hex'), descriptor);
183
- const append = () => this.appendEvent.emit(descriptor);
184
- descriptor.watch(async (event) => {
185
- if (event === 'updated') {
186
- return;
187
- }
188
- const { feed } = descriptor;
189
- if (event === 'opened' && feed) {
190
- feed.on('append', append);
191
- this.feedOpenedEvent.emit(descriptor);
192
- return;
193
- }
194
- if (event === 'closed' && feed) {
195
- feed.removeListener('append', append);
196
- }
197
- });
83
+ this._descriptors.set(descriptor.key.toString(), descriptor);
84
+ await descriptor.open();
85
+ this.feedOpenedEvent.emit(descriptor);
198
86
  return descriptor;
199
87
  }
200
88
  }
201
- __decorate([
202
- async_1.synchronized
203
- ], FeedStore.prototype, "open", null);
204
89
  __decorate([
205
90
  async_1.synchronized
206
91
  ], FeedStore.prototype, "close", null);
207
- __decorate([
208
- async_1.synchronized
209
- ], FeedStore.prototype, "openFeeds", null);
210
- __decorate([
211
- async_1.synchronized
212
- ], FeedStore.prototype, "openFeed", null);
213
- __decorate([
214
- async_1.synchronized
215
- ], FeedStore.prototype, "closeFeed", null);
216
92
  exports.FeedStore = FeedStore;
217
93
  function patchBufferCodec(encoding) {
218
94
  if (typeof encoding === 'string') {
@@ -1 +1 @@
1
- {"version":3,"file":"feed-store.js","sourceRoot":"","sources":["../../src/feed-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feed-store.js","sourceRoot":"","sources":["../../src/feed-store.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  /* eslint-disable jest/no-done-callback */
10
+ const assert_1 = __importDefault(require("assert"));
10
11
  const hypercore_1 = __importDefault(require("hypercore"));
11
12
  const hypertrie_1 = __importDefault(require("hypertrie"));
12
13
  const pify_1 = __importDefault(require("pify"));
@@ -16,22 +17,19 @@ const crypto_1 = require("@dxos/crypto");
16
17
  const random_access_multi_storage_1 = require("@dxos/random-access-multi-storage");
17
18
  const feed_store_1 = require("./feed-store");
18
19
  const feedNames = ['booksFeed', 'usersFeed', 'groupsFeed'];
19
- const createFeedStore = async (storage, options = {}) => {
20
+ const createFeedStore = (storage, options = {}) => {
20
21
  const feedStore = new feed_store_1.FeedStore(storage, options);
21
- await feedStore.open();
22
22
  return feedStore;
23
23
  };
24
24
  async function createDefault() {
25
25
  const directory = tempy_1.default.directory();
26
26
  return {
27
27
  directory,
28
- feedStore: await createFeedStore(random_access_multi_storage_1.createStorage(directory, random_access_multi_storage_1.STORAGE_NODE), { valueEncoding: 'utf-8' })
28
+ feedStore: createFeedStore(random_access_multi_storage_1.createStorage(directory, random_access_multi_storage_1.STORAGE_NODE), { valueEncoding: 'utf-8' })
29
29
  };
30
30
  }
31
31
  async function defaultFeeds(feedStore, keys) {
32
- return Object.fromEntries(await Promise.all(Object.entries(keys).map(async ([feed, keyPair]) => feed === 'booksFeed'
33
- ? [feed, await feedStore.createReadWriteFeed({ key: keyPair.key, secretKey: keyPair.secretKey, metadata: { topic: 'books' } })]
34
- : [feed, await feedStore.createReadWriteFeed({ key: keyPair.key, secretKey: keyPair.secretKey })])));
32
+ return Object.fromEntries(await Promise.all(Object.entries(keys).map(async ([feed, keyPair]) => [feed, await feedStore.openReadWriteFeed(keyPair.key, keyPair.secretKey)])));
35
33
  }
36
34
  function append(feed, message) {
37
35
  return pify_1.default(feed.append.bind(feed))(message);
@@ -50,12 +48,8 @@ describe('FeedStore', () => {
50
48
  test('Config default', async () => {
51
49
  const feedStore = await createFeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM));
52
50
  expect(feedStore).toBeInstanceOf(feed_store_1.FeedStore);
53
- expect(feedStore.opened).toBeTruthy();
54
51
  const feedStore2 = new feed_store_1.FeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM));
55
52
  expect(feedStore2).toBeInstanceOf(feed_store_1.FeedStore);
56
- expect(feedStore2.opened).toBeFalsy();
57
- await feedStore2.open();
58
- expect(feedStore2.opened).toBeTruthy();
59
53
  });
60
54
  test('Config default + custom database + custom hypercore', async () => {
61
55
  const customHypercore = jest.fn((...args) => {
@@ -64,107 +58,74 @@ describe('FeedStore', () => {
64
58
  const storage = random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM);
65
59
  const database = hypertrie_1.default(storage.createOrOpen.bind(storage), { valueEncoding: 'json' });
66
60
  database.list = jest.fn((_, cb) => cb(null, []));
67
- const feedStore = await createFeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM), {
61
+ const feedStore = createFeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM), {
68
62
  hypercore: customHypercore
69
63
  });
70
64
  expect(feedStore).toBeInstanceOf(feed_store_1.FeedStore);
71
- await feedStore.createReadOnlyFeed({ key: crypto_1.PublicKey.random() });
65
+ await feedStore.openReadOnlyFeed(crypto_1.PublicKey.random());
72
66
  expect(customHypercore.mock.calls.length).toBe(1);
73
67
  });
74
68
  test('Create feed', async () => {
75
69
  const { feedStore } = await createDefault();
76
- const { booksFeed } = await defaultFeeds(feedStore, keys);
70
+ const { booksFeed: { feed: booksFeed } } = await defaultFeeds(feedStore, keys);
77
71
  expect(booksFeed).toBeInstanceOf(hypercore_1.default);
78
- const booksFeedDescriptor = feedStore.getDescriptors().find(fd => fd.key.equals(booksFeed.key));
72
+ const booksFeedDescriptor = await feedStore.openReadWriteFeed(crypto_1.PublicKey.from(booksFeed.key), booksFeed.secretKey);
79
73
  expect(booksFeedDescriptor).toHaveProperty('key', crypto_1.PublicKey.from(booksFeed.key));
80
- expect(booksFeedDescriptor === null || booksFeedDescriptor === void 0 ? void 0 : booksFeedDescriptor.metadata).toHaveProperty('topic', 'books');
81
74
  await append(booksFeed, 'Foundation and Empire');
82
75
  await expect(head(booksFeed)).resolves.toBe('Foundation and Empire');
83
76
  // It should return the same opened instance.
84
- await expect(feedStore.openFeed(crypto_1.PublicKey.from(booksFeed.key))).resolves.toBe(booksFeed);
77
+ await expect(feedStore.openReadOnlyFeed(crypto_1.PublicKey.from(booksFeed.key))).resolves.toBe(booksFeedDescriptor);
85
78
  });
86
79
  test('Create duplicate feed', async () => {
87
80
  const { feedStore } = await createDefault();
88
- const fds = await feedStore.createReadWriteFeed({ key: keys.usersFeed.key, secretKey: keys.usersFeed.secretKey });
81
+ const { feed: fds } = await feedStore.openReadWriteFeed(keys.usersFeed.key, keys.usersFeed.secretKey);
82
+ assert_1.default(fds.secretKey);
89
83
  const [usersFeed, feed2] = await Promise.all([
90
- feedStore.openFeed(crypto_1.PublicKey.from(fds.key)),
91
- feedStore.openFeed(crypto_1.PublicKey.from(fds.key))
84
+ feedStore.openReadWriteFeed(crypto_1.PublicKey.from(fds.key), fds.secretKey),
85
+ feedStore.openReadWriteFeed(crypto_1.PublicKey.from(fds.key), fds.secretKey)
92
86
  ]);
93
- expect(usersFeed).toBe(feed2);
94
- await append(usersFeed, 'alice');
95
- await expect(head(usersFeed)).resolves.toBe('alice');
87
+ expect(usersFeed.feed).toBe(feed2.feed);
88
+ await append(usersFeed.feed, 'alice');
89
+ await expect(head(usersFeed.feed)).resolves.toBe('alice');
96
90
  });
97
91
  test('Create and close a feed', async () => {
98
92
  const { feedStore } = await createDefault();
99
93
  const publicKey = crypto_1.PublicKey.random();
100
- await expect(feedStore.closeFeed(publicKey)).rejects.toThrow(/Feed not found/);
101
- const foo = await feedStore.createReadOnlyFeed({ key: publicKey });
94
+ const foo = await feedStore.openReadOnlyFeed(publicKey);
102
95
  expect(foo.opened).toBeTruthy();
103
- expect(foo.closed).toBeFalsy();
104
- await feedStore.closeFeed(publicKey);
105
- expect(foo.closed).toBeTruthy();
96
+ await feedStore.close();
97
+ expect(foo.opened).toBeFalsy();
106
98
  });
107
99
  test('Descriptors', async () => {
108
- var _a;
109
100
  const { feedStore } = await createDefault();
110
- const { booksFeed } = await defaultFeeds(feedStore, keys);
111
- expect(feedStore.getDescriptors().map(fd => fd.key)).toEqual(Object.entries(keys).map(([, keyPair]) => keyPair.key));
112
- expect((_a = feedStore.getDescriptorByDiscoveryKey(booksFeed.discoveryKey)) === null || _a === void 0 ? void 0 : _a.key).toEqual(keys.booksFeed.key);
101
+ await defaultFeeds(feedStore, keys);
102
+ expect(Array.from(feedStore._descriptors.values()).map((fd) => fd.key))
103
+ .toEqual(Object.entries(keys).map(([, keyPair]) => keyPair.key));
113
104
  });
114
105
  test('Feeds', async () => {
115
106
  const { feedStore } = await createDefault();
116
107
  const { booksFeed, usersFeed, groupsFeed } = await defaultFeeds(feedStore, keys);
117
- expect(feedStore.getOpenFeeds().map(f => f.key)).toEqual([booksFeed.key, usersFeed.key, groupsFeed.key]);
118
- expect(feedStore.getOpenFeed(fd => fd.key.equals(booksFeed.key))).toBe(booksFeed);
119
- expect(feedStore.getOpenFeed(() => false)).toBeUndefined();
120
- expect(feedStore.getOpenFeeds(fd => fd.key.equals(keys.booksFeed.key))).toEqual([booksFeed]);
121
- });
122
- test('Close/Load feed', async () => {
123
- const { feedStore } = await createDefault();
124
- const { booksFeed } = await defaultFeeds(feedStore, keys);
125
- await feedStore.closeFeed(keys.booksFeed.key);
126
- expect(feedStore.getDescriptors().find(fd => fd.key.equals(keys.booksFeed.key))).toHaveProperty('opened', false);
127
- const [feed] = await feedStore.openFeeds(fd => fd.key.equals(keys.booksFeed.key));
128
- expect(feed).toBeDefined();
129
- expect(feed.key).toEqual(booksFeed.key);
130
- expect(feedStore.getDescriptors().find(fd => fd.key.equals(keys.booksFeed.key))).toHaveProperty('opened', true);
108
+ expect(Array.from(feedStore._descriptors.values()).map((fd) => fd.key))
109
+ .toEqual([booksFeed.key, usersFeed.key, groupsFeed.key]);
131
110
  });
132
111
  test('Close feedStore and their feeds', async () => {
133
112
  const { feedStore } = await createDefault();
134
113
  await defaultFeeds(feedStore, keys);
135
- expect(feedStore.opened).toBe(true);
136
- expect(feedStore.closed).toBe(false);
137
- expect(feedStore.getDescriptors().filter(fd => fd.opened).length).toBe(3);
114
+ expect(Array.from(feedStore._descriptors.values()).map((fd) => fd.key).length).toBe(3);
138
115
  await feedStore.close();
139
- expect(feedStore.getDescriptors().filter(fd => fd.opened).length).toBe(0);
140
- expect(feedStore.opened).toBe(false);
141
- expect(feedStore.closed).toBe(true);
116
+ expect(Array.from(feedStore._descriptors.values()).map((fd) => fd.key).length).toBe(0);
142
117
  });
143
118
  test('Default codec: binary', async () => {
144
- const feedStore = await createFeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM));
119
+ const feedStore = createFeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM));
145
120
  expect(feedStore).toBeInstanceOf(feed_store_1.FeedStore);
146
121
  const { publicKey, secretKey } = crypto_1.createKeyPair();
147
- const feed = await feedStore.createReadWriteFeed({ key: crypto_1.PublicKey.from(publicKey), secretKey });
122
+ const { feed } = await feedStore.openReadWriteFeed(crypto_1.PublicKey.from(publicKey), secretKey);
148
123
  expect(feed).toBeInstanceOf(hypercore_1.default);
149
124
  await append(feed, 'test');
150
125
  await expect(head(feed)).resolves.toBeInstanceOf(Buffer);
151
126
  });
152
- test('on open error should unlock the descriptor', async () => {
153
- const feedStore = await createFeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM), {
154
- hypercore: () => {
155
- throw new Error('open error');
156
- }
157
- });
158
- const publicKey = crypto_1.PublicKey.random();
159
- await expect(feedStore.createReadOnlyFeed({ key: publicKey })).rejects.toThrow(/open error/);
160
- const fd = feedStore.getDescriptors().find(fd => fd.key.equals(publicKey));
161
- if (!fd) {
162
- throw new Error('Descriptor not found');
163
- }
164
- await expect(fd.lock.executeSynchronized(async () => 'Unlocked')).resolves.toBe('Unlocked');
165
- });
166
127
  test('on close error should unlock the descriptor', async () => {
167
- const feedStore = await createFeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM), {
128
+ const feedStore = createFeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM), {
168
129
  hypercore: () => ({
169
130
  opened: true,
170
131
  ready(cb) {
@@ -177,31 +138,8 @@ describe('FeedStore', () => {
177
138
  })
178
139
  });
179
140
  const publicKey = crypto_1.PublicKey.random();
180
- await feedStore.createReadOnlyFeed({ key: publicKey });
181
- const fd = feedStore.getDescriptors().find(fd => fd.key.equals(publicKey));
182
- if (!fd) {
183
- throw new Error('Descriptor not found');
184
- }
185
- await expect(feedStore.closeFeed(publicKey)).rejects.toThrow(/close error/);
141
+ await feedStore.openReadOnlyFeed(publicKey);
186
142
  await expect(feedStore.close()).rejects.toThrow(/close error/);
187
- await expect(fd.lock.executeSynchronized(async () => 'Unlocked')).resolves.toBe('Unlocked');
188
- });
189
- test('append event', async (done) => {
190
- const feedStore = await createFeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM));
191
- const { publicKey, secretKey } = crypto_1.createKeyPair();
192
- const feed = await feedStore.createReadWriteFeed({ key: crypto_1.PublicKey.from(publicKey), secretKey });
193
- feedStore.appendEvent.on((descriptor) => {
194
- expect(descriptor.feed).toBe(feed);
195
- done();
196
- });
197
- feed.append('test');
198
- });
199
- test('openFeed should wait until FeedStore is ready', async () => {
200
- const feedStore = new feed_store_1.FeedStore(random_access_multi_storage_1.createStorage('', random_access_multi_storage_1.STORAGE_RAM));
201
- await feedStore.open();
202
- const publicKey = crypto_1.PublicKey.random();
203
- const feed = await feedStore.createReadOnlyFeed({ key: publicKey });
204
- expect(feed).toBeDefined();
205
143
  });
206
144
  test('feed event does not get called twice', async () => {
207
145
  const { feedStore } = await createDefault();
@@ -210,10 +148,10 @@ describe('FeedStore', () => {
210
148
  timesCalled++;
211
149
  });
212
150
  const key = crypto_1.PublicKey.random();
213
- await feedStore.createReadOnlyFeed({ key });
214
- await feedStore.openFeed(key);
215
- await feedStore.openFeed(key);
216
- await feedStore.openFeed(key);
151
+ await feedStore.openReadOnlyFeed(key);
152
+ await feedStore.openReadOnlyFeed(key);
153
+ await feedStore.openReadOnlyFeed(key);
154
+ await feedStore.openReadOnlyFeed(key);
217
155
  await async_1.sleep(20); // To flush events
218
156
  expect(timesCalled).toEqual(1);
219
157
  });
@@ -1 +1 @@
1
- {"version":3,"file":"feed-store.test.js","sourceRoot":"","sources":["../../src/feed-store.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feed-store.test.js","sourceRoot":"","sources":["../../src/feed-store.test.ts"],"names":[],"mappings":"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"}