@dxos/feed-store 0.8.3 → 0.8.4-main.2e9d522
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/lib/browser/{chunk-WS47OKDO.mjs → chunk-YBS47XQD.mjs} +7 -7
- package/dist/lib/browser/index.mjs +9 -9
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +6 -6
- package/dist/lib/node-esm/{chunk-AO5I2BX3.mjs → chunk-3SO44TKS.mjs} +7 -7
- package/dist/lib/node-esm/index.mjs +9 -9
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +6 -6
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +17 -17
- package/src/index.ts +1 -1
- package/dist/lib/node/chunk-YOYJCS5J.cjs +0 -523
- package/dist/lib/node/chunk-YOYJCS5J.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -593
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/testing/index.cjs +0 -173
- package/dist/lib/node/testing/index.cjs.map +0 -7
- /package/dist/lib/browser/{chunk-WS47OKDO.mjs.map → chunk-YBS47XQD.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-AO5I2BX3.mjs.map → chunk-3SO44TKS.mjs.map} +0 -0
package/dist/lib/node/meta.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"inputs":{"packages/common/feed-store/src/feed-wrapper.ts":{"bytes":34043,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/common/feed-store/src/feed-factory.ts":{"bytes":9099,"imports":[{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/common/feed-store/src/feed-wrapper.ts","kind":"import-statement","original":"./feed-wrapper"}],"format":"esm"},"packages/common/feed-store/src/feed-queue.ts":{"bytes":19584,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/common/feed-store/src/feed-iterator.ts":{"bytes":10127,"imports":[{"path":"race-as-promised","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/common/feed-store/src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"}],"format":"esm"},"packages/common/feed-store/src/feed-set-iterator.ts":{"bytes":20088,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/common/feed-store/src/feed-iterator.ts","kind":"import-statement","original":"./feed-iterator"},{"path":"packages/common/feed-store/src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"}],"format":"esm"},"packages/common/feed-store/src/feed-store.ts":{"bytes":12115,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/common/feed-store/src/feed-writer.ts":{"bytes":2638,"imports":[],"format":"esm"},"packages/common/feed-store/src/types.ts":{"bytes":582,"imports":[],"format":"esm"},"packages/common/feed-store/src/index.ts":{"bytes":1156,"imports":[{"path":"packages/common/feed-store/src/feed-factory.ts","kind":"import-statement","original":"./feed-factory"},{"path":"packages/common/feed-store/src/feed-iterator.ts","kind":"import-statement","original":"./feed-iterator"},{"path":"packages/common/feed-store/src/feed-set-iterator.ts","kind":"import-statement","original":"./feed-set-iterator"},{"path":"packages/common/feed-store/src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"},{"path":"packages/common/feed-store/src/feed-store.ts","kind":"import-statement","original":"./feed-store"},{"path":"packages/common/feed-store/src/feed-wrapper.ts","kind":"import-statement","original":"./feed-wrapper"},{"path":"packages/common/feed-store/src/feed-writer.ts","kind":"import-statement","original":"./feed-writer"},{"path":"packages/common/feed-store/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/common/feed-store/src/testing/mocks.ts":{"bytes":3449,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"packages/common/feed-store/src/testing/test-generator.ts":{"bytes":5535,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"format":"esm"},"packages/common/feed-store/src/testing/test-builder.ts":{"bytes":9638,"imports":[{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"packages/common/feed-store/src/testing/test-generator.ts","kind":"import-statement","original":"./test-generator"},{"path":"packages/common/feed-store/src/feed-factory.ts","kind":"import-statement","original":"../feed-factory"},{"path":"packages/common/feed-store/src/feed-store.ts","kind":"import-statement","original":"../feed-store"}],"format":"esm"},"packages/common/feed-store/src/testing/index.ts":{"bytes":673,"imports":[{"path":"packages/common/feed-store/src/testing/mocks.ts","kind":"import-statement","original":"./mocks"},{"path":"packages/common/feed-store/src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"packages/common/feed-store/src/testing/test-generator.ts","kind":"import-statement","original":"./test-generator"}],"format":"esm"}},"outputs":{"packages/common/feed-store/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":24427},"packages/common/feed-store/dist/lib/node/index.cjs":{"imports":[{"path":"packages/common/feed-store/dist/lib/node/chunk-YOYJCS5J.cjs","kind":"import-statement"},{"path":"race-as-promised","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["AbstractFeedIterator","FeedFactory","FeedIterator","FeedQueue","FeedSetIterator","FeedStore","FeedWrapper","createFeedWriter","defaultFeedSetIteratorOptions","defaultReadStreamOptions","writeMessages"],"entryPoint":"packages/common/feed-store/src/index.ts","inputs":{"packages/common/feed-store/src/index.ts":{"bytesInOutput":0},"packages/common/feed-store/src/feed-iterator.ts":{"bytesInOutput":2798},"packages/common/feed-store/src/feed-queue.ts":{"bytesInOutput":4925},"packages/common/feed-store/src/feed-set-iterator.ts":{"bytesInOutput":4933},"packages/common/feed-store/src/feed-writer.ts":{"bytesInOutput":273}},"bytes":13529},"packages/common/feed-store/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9597},"packages/common/feed-store/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/common/feed-store/dist/lib/node/chunk-YOYJCS5J.cjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"exports":["MockFeedWriter","TestBuilder","TestGenerator","TestItemBuilder","defaultCodec","defaultTestBlockGenerator","defaultTestGenerator","defaultValueEncoding"],"entryPoint":"packages/common/feed-store/src/testing/index.ts","inputs":{"packages/common/feed-store/src/testing/mocks.ts":{"bytesInOutput":784},"packages/common/feed-store/src/testing/index.ts":{"bytesInOutput":0},"packages/common/feed-store/src/testing/test-builder.ts":{"bytesInOutput":1800},"packages/common/feed-store/src/testing/test-generator.ts":{"bytesInOutput":961}},"bytes":4052},"packages/common/feed-store/dist/lib/node/chunk-YOYJCS5J.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":26154},"packages/common/feed-store/dist/lib/node/chunk-YOYJCS5J.cjs":{"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["FeedFactory","FeedStore","FeedWrapper"],"inputs":{"packages/common/feed-store/src/feed-wrapper.ts":{"bytesInOutput":8205},"packages/common/feed-store/src/feed-factory.ts":{"bytesInOutput":2015},"packages/common/feed-store/src/feed-store.ts":{"bytesInOutput":3129}},"bytes":13598}}}
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var testing_exports = {};
|
|
20
|
-
__export(testing_exports, {
|
|
21
|
-
MockFeedWriter: () => MockFeedWriter,
|
|
22
|
-
TestBuilder: () => TestBuilder,
|
|
23
|
-
TestGenerator: () => TestGenerator,
|
|
24
|
-
TestItemBuilder: () => TestItemBuilder,
|
|
25
|
-
defaultCodec: () => defaultCodec,
|
|
26
|
-
defaultTestBlockGenerator: () => defaultTestBlockGenerator,
|
|
27
|
-
defaultTestGenerator: () => defaultTestGenerator,
|
|
28
|
-
defaultValueEncoding: () => defaultValueEncoding
|
|
29
|
-
});
|
|
30
|
-
module.exports = __toCommonJS(testing_exports);
|
|
31
|
-
var import_chunk_YOYJCS5J = require("../chunk-YOYJCS5J.cjs");
|
|
32
|
-
var import_async = require("@dxos/async");
|
|
33
|
-
var import_context = require("@dxos/context");
|
|
34
|
-
var import_keys = require("@dxos/keys");
|
|
35
|
-
var import_keyring = require("@dxos/keyring");
|
|
36
|
-
var import_random_access_storage = require("@dxos/random-access-storage");
|
|
37
|
-
var import_async2 = require("@dxos/async");
|
|
38
|
-
var import_hypercore = require("@dxos/hypercore");
|
|
39
|
-
var import_random = require("@dxos/random");
|
|
40
|
-
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/common/feed-store/src/testing/mocks.ts";
|
|
41
|
-
var MockFeedWriter = class {
|
|
42
|
-
constructor(feedKey = import_keys.PublicKey.random()) {
|
|
43
|
-
this.feedKey = feedKey;
|
|
44
|
-
this.written = new import_async.Event();
|
|
45
|
-
this.messages = [];
|
|
46
|
-
}
|
|
47
|
-
async write(data, { afterWrite } = {}) {
|
|
48
|
-
this.messages.push(data);
|
|
49
|
-
const receipt = {
|
|
50
|
-
feedKey: this.feedKey,
|
|
51
|
-
seq: this.messages.length - 1
|
|
52
|
-
};
|
|
53
|
-
await afterWrite?.(receipt);
|
|
54
|
-
(0, import_async.scheduleTask)(new import_context.Context(void 0, {
|
|
55
|
-
F: __dxlog_file,
|
|
56
|
-
L: 30
|
|
57
|
-
}), () => {
|
|
58
|
-
this.written.emit([
|
|
59
|
-
data,
|
|
60
|
-
receipt
|
|
61
|
-
]);
|
|
62
|
-
});
|
|
63
|
-
return receipt;
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
var defaultCodec = {
|
|
67
|
-
encode: (obj) => Buffer.from(JSON.stringify(obj)),
|
|
68
|
-
decode: (buffer) => JSON.parse(buffer.toString())
|
|
69
|
-
};
|
|
70
|
-
var defaultValueEncoding = (0, import_hypercore.createCodecEncoding)(defaultCodec);
|
|
71
|
-
var defaultTestBlockGenerator = (i) => ({
|
|
72
|
-
id: import_random.faker.string.uuid(),
|
|
73
|
-
index: i,
|
|
74
|
-
value: import_random.faker.lorem.sentence()
|
|
75
|
-
});
|
|
76
|
-
var TestGenerator = class {
|
|
77
|
-
constructor(_generate) {
|
|
78
|
-
this._generate = _generate;
|
|
79
|
-
this._count = 0;
|
|
80
|
-
}
|
|
81
|
-
async writeBlocks(writer, { count = 1, delay } = {}) {
|
|
82
|
-
return await Promise.all(Array.from(Array(count)).map(async () => {
|
|
83
|
-
const data = this._generate(this._count++);
|
|
84
|
-
const receipt = await writer.write(data);
|
|
85
|
-
if (delay) {
|
|
86
|
-
await (0, import_async2.sleep)(import_random.faker.number.int(delay));
|
|
87
|
-
}
|
|
88
|
-
return receipt;
|
|
89
|
-
}));
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
var defaultTestGenerator = new TestGenerator(defaultTestBlockGenerator);
|
|
93
|
-
var evaluate = (builder, arg) => arg === "function" ? arg(builder) : arg;
|
|
94
|
-
var TestBuilder = class _TestBuilder {
|
|
95
|
-
static {
|
|
96
|
-
this.ROOT_DIR = "feeds";
|
|
97
|
-
}
|
|
98
|
-
constructor(_properties = {}) {
|
|
99
|
-
this._properties = _properties;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Creates a new builder with the current builder's properties.
|
|
103
|
-
*/
|
|
104
|
-
clone() {
|
|
105
|
-
return new _TestBuilder(Object.assign({}, this._properties));
|
|
106
|
-
}
|
|
107
|
-
get keyring() {
|
|
108
|
-
return this._properties.keyring ??= new import_keyring.Keyring();
|
|
109
|
-
}
|
|
110
|
-
get storage() {
|
|
111
|
-
return this._properties.storage ??= (0, import_random_access_storage.createStorage)({
|
|
112
|
-
type: import_random_access_storage.StorageType.RAM
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
get root() {
|
|
116
|
-
return this._properties.root ??= this.storage.createDirectory(_TestBuilder.ROOT_DIR);
|
|
117
|
-
}
|
|
118
|
-
setKeyring(keyring) {
|
|
119
|
-
this._properties.keyring = evaluate(this, keyring);
|
|
120
|
-
return this;
|
|
121
|
-
}
|
|
122
|
-
setStorage(storage, root) {
|
|
123
|
-
this._properties.storage = evaluate(this, storage);
|
|
124
|
-
if (root) {
|
|
125
|
-
this._properties.root = this.storage.createDirectory(root);
|
|
126
|
-
}
|
|
127
|
-
return this;
|
|
128
|
-
}
|
|
129
|
-
setRoot(root) {
|
|
130
|
-
this._properties.root = evaluate(this, root);
|
|
131
|
-
return this;
|
|
132
|
-
}
|
|
133
|
-
createFeedFactory() {
|
|
134
|
-
return new import_chunk_YOYJCS5J.FeedFactory({
|
|
135
|
-
root: this.root,
|
|
136
|
-
signer: this.keyring,
|
|
137
|
-
hypercore: {
|
|
138
|
-
valueEncoding: this._properties.valueEncoding
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
createFeedStore() {
|
|
143
|
-
return new import_chunk_YOYJCS5J.FeedStore({
|
|
144
|
-
factory: this.createFeedFactory()
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
var TestItemBuilder = class extends TestBuilder {
|
|
149
|
-
constructor() {
|
|
150
|
-
super({
|
|
151
|
-
valueEncoding: defaultValueEncoding,
|
|
152
|
-
generator: defaultTestGenerator
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
get valueEncoding() {
|
|
156
|
-
return this._properties.valueEncoding;
|
|
157
|
-
}
|
|
158
|
-
get generator() {
|
|
159
|
-
return this._properties.generator;
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
163
|
-
0 && (module.exports = {
|
|
164
|
-
MockFeedWriter,
|
|
165
|
-
TestBuilder,
|
|
166
|
-
TestGenerator,
|
|
167
|
-
TestItemBuilder,
|
|
168
|
-
defaultCodec,
|
|
169
|
-
defaultTestBlockGenerator,
|
|
170
|
-
defaultTestGenerator,
|
|
171
|
-
defaultValueEncoding
|
|
172
|
-
});
|
|
173
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/testing/mocks.ts", "../../../../src/testing/test-builder.ts", "../../../../src/testing/test-generator.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { Event, scheduleTask } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { PublicKey } from '@dxos/keys';\n\nimport type { FeedWriter, WriteOptions, WriteReceipt } from '../feed-writer';\n\n/**\n * Mock writer collects and emits messages.\n */\nexport class MockFeedWriter<T extends {}> implements FeedWriter<T> {\n public readonly written = new Event<[T, WriteReceipt]>();\n public readonly messages: T[] = [];\n\n constructor(readonly feedKey = PublicKey.random()) {}\n\n async write(data: T, { afterWrite }: WriteOptions = {}): Promise<WriteReceipt> {\n this.messages.push(data);\n\n const receipt: WriteReceipt = {\n feedKey: this.feedKey,\n seq: this.messages.length - 1,\n };\n\n await afterWrite?.(receipt);\n\n scheduleTask(new Context(), () => {\n this.written.emit([data, receipt]);\n });\n\n return receipt;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport type { ValueEncoding } from 'hypercore';\n\nimport { Keyring } from '@dxos/keyring';\nimport { createStorage, type Directory, type Storage, StorageType } from '@dxos/random-access-storage';\n\nimport { defaultTestGenerator, defaultValueEncoding, type TestGenerator, type TestItem } from './test-generator';\nimport { FeedFactory } from '../feed-factory';\nimport { FeedStore } from '../feed-store';\n\nexport type TestBuilderOptions<T extends {}> = {\n storage?: Storage;\n root?: Directory;\n keyring?: Keyring;\n valueEncoding?: ValueEncoding<T>;\n generator?: TestGenerator<T>;\n};\n\ntype PropertyProvider<T extends {}, P> = (cb: TestBuilder<T>) => P;\n\nconst evaluate = <T extends {}, P>(builder: TestBuilder<T>, arg: P | PropertyProvider<T, P>) =>\n arg === 'function' ? (arg as Function)(builder) : arg;\n\n/**\n * The builder provides building blocks for tests with sensible defaults.\n * - Factory methods trigger the automatic generation of unset required properties.\n * - Avoids explosion of overly specific test functions that require and return large bags of properties.\n */\nexport class TestBuilder<T extends {}> {\n static readonly ROOT_DIR = 'feeds';\n\n constructor(public readonly _properties: TestBuilderOptions<T> = {}) {}\n\n /**\n * Creates a new builder with the current builder's properties.\n */\n clone(): TestBuilder<T> {\n return new TestBuilder<T>(Object.assign({}, this._properties));\n }\n\n get keyring(): Keyring {\n return (this._properties.keyring ??= new Keyring());\n }\n\n get storage(): Storage {\n return (this._properties.storage ??= createStorage({ type: StorageType.RAM }));\n }\n\n get root(): Directory {\n return (this._properties.root ??= this.storage.createDirectory(TestBuilder.ROOT_DIR));\n }\n\n setKeyring(keyring: Keyring | PropertyProvider<T, Keyring>): this {\n this._properties.keyring = evaluate(this, keyring);\n return this;\n }\n\n setStorage(storage: Storage, root?: string): this {\n this._properties.storage = evaluate(this, storage);\n if (root) {\n this._properties.root = this.storage.createDirectory(root);\n }\n\n return this;\n }\n\n setRoot(root: Directory): this {\n this._properties.root = evaluate(this, root);\n return this;\n }\n\n createFeedFactory(): FeedFactory<T> {\n return new FeedFactory<T>({\n root: this.root,\n signer: this.keyring,\n hypercore: {\n valueEncoding: this._properties.valueEncoding,\n },\n });\n }\n\n createFeedStore(): FeedStore<T> {\n return new FeedStore<T>({\n factory: this.createFeedFactory(),\n });\n }\n}\n\n/**\n * Builder with default encoder and generator.\n */\nexport class TestItemBuilder extends TestBuilder<TestItem> {\n constructor() {\n super({\n valueEncoding: defaultValueEncoding,\n generator: defaultTestGenerator,\n });\n }\n\n get valueEncoding() {\n return this._properties.valueEncoding!;\n }\n\n get generator() {\n return this._properties.generator!;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport type { AbstractValueEncoding } from 'hypercore';\n\nimport { sleep } from '@dxos/async';\nimport { type Codec } from '@dxos/codec-protobuf';\nimport { createCodecEncoding } from '@dxos/hypercore';\nimport { faker } from '@dxos/random';\n\nimport { type FeedWriter } from '../feed-writer';\n\nexport type TestItem = {\n id: string;\n index: number;\n value: string;\n};\n\nexport const defaultCodec: Codec<any> = {\n encode: (obj: any) => Buffer.from(JSON.stringify(obj)),\n decode: (buffer: Uint8Array) => JSON.parse(buffer.toString()),\n};\n\nexport const defaultValueEncoding: AbstractValueEncoding<any> = createCodecEncoding(defaultCodec);\n\nexport type TestBlockGenerator<T> = (i: number) => T;\n\nexport const defaultTestBlockGenerator: TestBlockGenerator<TestItem> = (i) => ({\n id: faker.string.uuid(),\n index: i,\n value: faker.lorem.sentence(),\n});\n\n/**\n * Writes data to feeds.\n */\nexport class TestGenerator<T extends {}> {\n _count = 0;\n\n constructor(private readonly _generate: TestBlockGenerator<T>) {}\n\n async writeBlocks(\n writer: FeedWriter<T>,\n {\n count = 1,\n delay,\n }: {\n count?: number;\n delay?: {\n min: number;\n max: number;\n };\n } = {},\n ) {\n return await Promise.all(\n Array.from(Array(count)).map(async () => {\n const data = this._generate(this._count++);\n const receipt = await writer.write(data);\n if (delay) {\n await sleep(faker.number.int(delay));\n }\n\n return receipt;\n }),\n );\n }\n}\n\nexport const defaultTestGenerator = new TestGenerator<TestItem>(defaultTestBlockGenerator);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_async", "MockFeedWriter", "feedKey", "PublicKey", "random", "written", "Event", "messages", "write", "data", "afterWrite", "push", "receipt", "seq", "length", "scheduleTask", "Context", "emit", "defaultCodec", "encode", "obj", "Buffer", "from", "JSON", "stringify", "decode", "buffer", "parse", "toString", "defaultValueEncoding", "createCodecEncoding", "defaultTestBlockGenerator", "i", "id", "faker", "string", "uuid", "index", "value", "lorem", "sentence", "TestGenerator", "_generate", "_count", "writeBlocks", "writer", "count", "delay", "Promise", "all", "Array", "map", "sleep", "number", "int", "defaultTestGenerator", "evaluate", "builder", "arg", "TestBuilder", "ROOT_DIR", "_properties", "clone", "Object", "assign", "keyring", "Keyring", "storage", "createStorage", "type", "StorageType", "RAM", "root", "createDirectory", "setKeyring", "setStorage", "setRoot", "createFeedFactory", "FeedFactory", "signer", "hypercore", "valueEncoding", "createFeedStore", "FeedStore", "factory", "TestItemBuilder", "generator"]
|
|
7
|
-
}
|
|
File without changes
|
|
File without changes
|