@peerbit/document 2.0.1 → 3.0.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/lib/esm/document-index.d.ts +17 -12
- package/lib/esm/document-index.js +89 -50
- package/lib/esm/document-index.js.map +1 -1
- package/lib/esm/document-store.d.ts +18 -11
- package/lib/esm/document-store.js +31 -17
- package/lib/esm/document-store.js.map +1 -1
- package/lib/esm/query.d.ts +5 -1
- package/lib/esm/query.js +11 -3
- package/lib/esm/query.js.map +1 -1
- package/package.json +6 -6
- package/src/document-index.ts +162 -75
- package/src/document-store.ts +65 -27
- package/src/query.ts +10 -3
|
@@ -2,8 +2,8 @@ import { AbstractType } from "@dao-xyz/borsh";
|
|
|
2
2
|
import { Keyable } from "./utils.js";
|
|
3
3
|
import { Encoding } from "@peerbit/log";
|
|
4
4
|
import { Program } from "@peerbit/program";
|
|
5
|
-
import { Context, CollectNextRequest, AbstractSearchRequest, SearchRequest, CloseIteratorRequest } from "./query.js";
|
|
6
|
-
import {
|
|
5
|
+
import { Context, CollectNextRequest, AbstractSearchRequest, SearchRequest, CloseIteratorRequest, AbstractSearchResult } from "./query.js";
|
|
6
|
+
import { RPC, RPCOptions } from "@peerbit/rpc";
|
|
7
7
|
import { Results } from "./query.js";
|
|
8
8
|
import { PublicSignKey } from "@peerbit/crypto";
|
|
9
9
|
import { SharedLog } from "@peerbit/shared-log";
|
|
@@ -39,32 +39,35 @@ export type RemoteQueryOptions<R> = RPCOptions<R> & {
|
|
|
39
39
|
minAge?: number;
|
|
40
40
|
};
|
|
41
41
|
export type QueryOptions<R> = {
|
|
42
|
-
remote?: boolean | RemoteQueryOptions<
|
|
42
|
+
remote?: boolean | RemoteQueryOptions<AbstractSearchResult<R>>;
|
|
43
43
|
local?: boolean;
|
|
44
44
|
};
|
|
45
45
|
export type SearchOptions<R> = {
|
|
46
46
|
size?: number;
|
|
47
47
|
} & QueryOptions<R>;
|
|
48
|
-
export type
|
|
48
|
+
export type IndexableFields<T> = (obj: T, context: Context) => Record<string, any> | Promise<Record<string, any>>;
|
|
49
49
|
export type ResultsIterator<T> = {
|
|
50
50
|
close: () => Promise<void>;
|
|
51
51
|
next: (number: number) => Promise<T[]>;
|
|
52
52
|
done: () => boolean;
|
|
53
53
|
};
|
|
54
54
|
type QueryDetailedOptions<T> = QueryOptions<T> & {
|
|
55
|
-
onResponse?: (response:
|
|
55
|
+
onResponse?: (response: AbstractSearchResult<T>, from: PublicSignKey) => void;
|
|
56
56
|
excludePeerAgeThreshold?: number;
|
|
57
57
|
};
|
|
58
|
+
export type CanSearch = (request: SearchRequest | CollectNextRequest, from: PublicSignKey) => Promise<boolean> | boolean;
|
|
59
|
+
export type CanRead<T> = (result: T, from: PublicSignKey) => Promise<boolean> | boolean;
|
|
58
60
|
export type OpenOptions<T> = {
|
|
59
61
|
type: AbstractType<T>;
|
|
60
62
|
log: SharedLog<Operation<T>>;
|
|
61
|
-
canRead
|
|
62
|
-
|
|
63
|
+
canRead?: CanRead<T>;
|
|
64
|
+
canSearch?: CanSearch;
|
|
65
|
+
fields: IndexableFields<T>;
|
|
63
66
|
sync: (result: Results<T>) => Promise<void>;
|
|
64
67
|
indexBy?: string | string[];
|
|
65
68
|
};
|
|
66
69
|
export declare class DocumentIndex<T> extends Program<OpenOptions<T>> {
|
|
67
|
-
_query: RPC<AbstractSearchRequest,
|
|
70
|
+
_query: RPC<AbstractSearchRequest, AbstractSearchResult<T>>;
|
|
68
71
|
type: AbstractType<T>;
|
|
69
72
|
private _indexBy;
|
|
70
73
|
private _indexByArr;
|
|
@@ -76,11 +79,11 @@ export declare class DocumentIndex<T> extends Program<OpenOptions<T>> {
|
|
|
76
79
|
private _resultsCollectQueue;
|
|
77
80
|
private _log;
|
|
78
81
|
constructor(properties?: {
|
|
79
|
-
query?: RPC<
|
|
82
|
+
query?: RPC<AbstractSearchRequest, AbstractSearchResult<T>>;
|
|
80
83
|
});
|
|
81
84
|
get index(): Map<string, IndexedValue<T>>;
|
|
82
85
|
get valueEncoding(): Encoding<T>;
|
|
83
|
-
get toIndex():
|
|
86
|
+
get toIndex(): IndexableFields<T>;
|
|
84
87
|
open(properties: OpenOptions<T>): Promise<void>;
|
|
85
88
|
get(key: Keyable, options?: QueryOptions<T>): Promise<T | undefined>;
|
|
86
89
|
getDetailed(key: Keyable, options?: QueryOptions<T>): Promise<Results<T>[] | undefined>;
|
|
@@ -95,14 +98,16 @@ export declare class DocumentIndex<T> extends Program<OpenOptions<T>> {
|
|
|
95
98
|
context: Context;
|
|
96
99
|
value: T;
|
|
97
100
|
}[]>;
|
|
98
|
-
processFetchRequest(query: SearchRequest | CollectNextRequest
|
|
101
|
+
processFetchRequest(query: SearchRequest | CollectNextRequest, from: PublicSignKey, options?: {
|
|
102
|
+
canRead?: CanRead<T>;
|
|
103
|
+
}): Promise<{
|
|
99
104
|
results: {
|
|
100
105
|
context: Context;
|
|
101
106
|
value: T;
|
|
102
107
|
}[];
|
|
103
108
|
kept: number;
|
|
104
109
|
}>;
|
|
105
|
-
processCloseIteratorRequest(query: CloseIteratorRequest): Promise<void>;
|
|
110
|
+
processCloseIteratorRequest(query: CloseIteratorRequest, publicKey: PublicSignKey): Promise<void>;
|
|
106
111
|
private handleQueryObject;
|
|
107
112
|
private handleStringMatch;
|
|
108
113
|
/**
|
|
@@ -12,11 +12,13 @@ import { asString } from "./utils.js";
|
|
|
12
12
|
import { BORSH_ENCODING } from "@peerbit/log";
|
|
13
13
|
import { equals } from "@peerbit/uint8arrays";
|
|
14
14
|
import { Program } from "@peerbit/program";
|
|
15
|
-
import { IntegerCompare, ByteMatchQuery, StringMatch, ResultWithSource, StateFieldQuery, compare, MissingField, StringMatchMethod, LogicalQuery, And, Or, BoolQuery, CollectNextRequest, AbstractSearchRequest, SearchRequest, SortDirection, CloseIteratorRequest, } from "./query.js";
|
|
15
|
+
import { IntegerCompare, ByteMatchQuery, StringMatch, ResultWithSource, StateFieldQuery, compare, MissingField, StringMatchMethod, LogicalQuery, And, Or, BoolQuery, CollectNextRequest, AbstractSearchRequest, SearchRequest, SortDirection, CloseIteratorRequest, NoAccess, AbstractSearchResult, } from "./query.js";
|
|
16
16
|
import { RPC, queryAll, MissingResponsesError, } from "@peerbit/rpc";
|
|
17
17
|
import { Results } from "./query.js";
|
|
18
18
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
19
19
|
import { Cache } from "@peerbit/cache";
|
|
20
|
+
import { sha256Base64Sync } from "@peerbit/crypto";
|
|
21
|
+
import { concat, fromString } from "uint8arrays";
|
|
20
22
|
const logger = loggerFn({ module: "document-index" });
|
|
21
23
|
const stringArraysEquals = (a, b) => {
|
|
22
24
|
if (a.length !== b.length) {
|
|
@@ -142,28 +144,30 @@ const resolvedSort = async (arr, index, sorts) => {
|
|
|
142
144
|
arr.sort((a, b) => extractSortCompare(a[SORT_TMP_KEY], b[SORT_TMP_KEY], sorts));
|
|
143
145
|
return arr;
|
|
144
146
|
};
|
|
145
|
-
/*
|
|
146
|
-
const sortValueWithContext = async<T>(arr: {
|
|
147
|
-
value: T;
|
|
148
|
-
context: Context;
|
|
149
|
-
}[], index: Indexable<T>) => {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}
|
|
153
|
-
*/
|
|
154
147
|
const SORT_TMP_KEY = "__sort_ref";
|
|
155
148
|
const introduceEntries = async (responses, type, sync, options) => {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
if (
|
|
159
|
-
await sync(x.response);
|
|
160
|
-
}
|
|
161
|
-
if (!x.from) {
|
|
149
|
+
const results = [];
|
|
150
|
+
for (const response of responses) {
|
|
151
|
+
if (!response.from) {
|
|
162
152
|
logger.error("Missing from for response");
|
|
163
153
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
154
|
+
if (response.response instanceof Results) {
|
|
155
|
+
response.response.results.forEach((r) => r.init(type));
|
|
156
|
+
if (typeof options?.remote !== "boolean" && options?.remote?.sync) {
|
|
157
|
+
await sync(response.response);
|
|
158
|
+
}
|
|
159
|
+
options?.onResponse &&
|
|
160
|
+
options.onResponse(response.response, response.from); // TODO fix types
|
|
161
|
+
results.push(response);
|
|
162
|
+
}
|
|
163
|
+
else if (response.response instanceof NoAccess) {
|
|
164
|
+
logger.error("Search resulted in access error");
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
throw new Error("Unsupported");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return results;
|
|
167
171
|
};
|
|
168
172
|
const dedup = (allResult, dedupBy) => {
|
|
169
173
|
const unique = new Set();
|
|
@@ -225,14 +229,25 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
225
229
|
this._valueEncoding = BORSH_ENCODING(this.type);
|
|
226
230
|
this._resultsCollectQueue = new Cache({ max: 10000 }); // TODO choose limit better
|
|
227
231
|
await this._query.open({
|
|
228
|
-
topic: this._log.log.
|
|
229
|
-
|
|
230
|
-
|
|
232
|
+
topic: sha256Base64Sync(concat([this._log.log.id, fromString("/document")])),
|
|
233
|
+
responseHandler: async (query, ctx) => {
|
|
234
|
+
if (!ctx.from) {
|
|
235
|
+
logger.info("Receieved query without from");
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
if (properties.canSearch &&
|
|
239
|
+
(query instanceof SearchRequest ||
|
|
240
|
+
query instanceof CollectNextRequest) &&
|
|
241
|
+
!(await properties.canSearch(query, ctx.from))) {
|
|
242
|
+
return new NoAccess();
|
|
243
|
+
}
|
|
231
244
|
if (query instanceof CloseIteratorRequest) {
|
|
232
|
-
this.processCloseIteratorRequest(query);
|
|
245
|
+
this.processCloseIteratorRequest(query, ctx.from);
|
|
233
246
|
}
|
|
234
247
|
else {
|
|
235
|
-
const results = await this.processFetchRequest(query
|
|
248
|
+
const results = await this.processFetchRequest(query, ctx.from, {
|
|
249
|
+
canRead: properties.canRead,
|
|
250
|
+
});
|
|
236
251
|
return new Results({
|
|
237
252
|
// Even if results might have length 0, respond, because then we now at least there are no matching results
|
|
238
253
|
results: results.results.map((r) => new ResultWithSource({
|
|
@@ -243,7 +258,7 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
243
258
|
});
|
|
244
259
|
}
|
|
245
260
|
},
|
|
246
|
-
responseType:
|
|
261
|
+
responseType: AbstractSearchResult,
|
|
247
262
|
queryType: AbstractSearchRequest,
|
|
248
263
|
});
|
|
249
264
|
}
|
|
@@ -296,7 +311,7 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
296
311
|
}
|
|
297
312
|
return results;
|
|
298
313
|
}
|
|
299
|
-
async processFetchRequest(query) {
|
|
314
|
+
async processFetchRequest(query, from, options) {
|
|
300
315
|
// We do special case for querying the id as we can do it faster than iterating
|
|
301
316
|
if (query instanceof SearchRequest) {
|
|
302
317
|
if (query.query.length === 1 &&
|
|
@@ -335,7 +350,7 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
335
350
|
: { results: [], kept: 0 };
|
|
336
351
|
}
|
|
337
352
|
}
|
|
338
|
-
|
|
353
|
+
let results = await this._queryDocuments((doc) => {
|
|
339
354
|
for (const f of query.query) {
|
|
340
355
|
if (!this.handleQueryObject(f, doc)) {
|
|
341
356
|
return false;
|
|
@@ -343,11 +358,18 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
343
358
|
}
|
|
344
359
|
return true;
|
|
345
360
|
});
|
|
361
|
+
if (options?.canRead) {
|
|
362
|
+
const keepFilter = await Promise.all(results.map((x) => options?.canRead(x.value, from)));
|
|
363
|
+
results = results.filter((x, i) => keepFilter[i]);
|
|
364
|
+
}
|
|
346
365
|
// Sort
|
|
347
366
|
await resolvedSort(results, this._toIndex, query.sort);
|
|
348
367
|
const batch = results.splice(0, query.fetch);
|
|
349
368
|
if (results.length > 0) {
|
|
350
|
-
this._resultsCollectQueue.add(query.idString,
|
|
369
|
+
this._resultsCollectQueue.add(query.idString, {
|
|
370
|
+
arr: results,
|
|
371
|
+
from,
|
|
372
|
+
}); // cache resulst not returned
|
|
351
373
|
}
|
|
352
374
|
return { results: batch, kept: results.length }; // Only return 1 result since we are doing distributed sort, TODO buffer more initially
|
|
353
375
|
}
|
|
@@ -359,16 +381,22 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
359
381
|
kept: 0,
|
|
360
382
|
};
|
|
361
383
|
}
|
|
362
|
-
const batch = results.splice(0, query.amount);
|
|
363
|
-
if (results.length === 0) {
|
|
384
|
+
const batch = results.arr.splice(0, query.amount);
|
|
385
|
+
if (results.arr.length === 0) {
|
|
364
386
|
this._resultsCollectQueue.del(query.idString); // TODO add tests for proper cleanup/timeouts
|
|
365
387
|
}
|
|
366
|
-
return { results: batch, kept: results.length };
|
|
388
|
+
return { results: batch, kept: results.arr.length };
|
|
367
389
|
}
|
|
368
390
|
throw new Error("Unsupported");
|
|
369
391
|
}
|
|
370
|
-
async processCloseIteratorRequest(query) {
|
|
371
|
-
this._resultsCollectQueue.
|
|
392
|
+
async processCloseIteratorRequest(query, publicKey) {
|
|
393
|
+
const entry = this._resultsCollectQueue.get(query.idString);
|
|
394
|
+
if (entry?.from.equals(publicKey)) {
|
|
395
|
+
this._resultsCollectQueue.del(query.idString);
|
|
396
|
+
}
|
|
397
|
+
else if (entry) {
|
|
398
|
+
logger.warn("Received a close iterator request for a iterator that does not belong to the requesting peer");
|
|
399
|
+
}
|
|
372
400
|
}
|
|
373
401
|
handleQueryObject(f, doc) {
|
|
374
402
|
if (f instanceof StateFieldQuery) {
|
|
@@ -482,7 +510,7 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
482
510
|
}
|
|
483
511
|
const allResults = [];
|
|
484
512
|
if (local) {
|
|
485
|
-
const results = await this.processFetchRequest(queryRequest);
|
|
513
|
+
const results = await this.processFetchRequest(queryRequest, this.node.identity.publicKey);
|
|
486
514
|
if (results.results.length > 0) {
|
|
487
515
|
const resultsObject = new Results({
|
|
488
516
|
results: await Promise.all(results.results.map(async (r) => {
|
|
@@ -505,7 +533,7 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
505
533
|
}
|
|
506
534
|
if (remote) {
|
|
507
535
|
const peerMinAge = remote.minAge ?? DEFAULT_REPLICATOR_MIN_AGE;
|
|
508
|
-
const replicatorGroups = await this._log.
|
|
536
|
+
const replicatorGroups = await this._log.getDiscoveryGroups?.();
|
|
509
537
|
if (replicatorGroups) {
|
|
510
538
|
// Make sure we don't query peers that are "too" new
|
|
511
539
|
// TODO make this better
|
|
@@ -523,7 +551,9 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
523
551
|
const fn = async () => {
|
|
524
552
|
const rs = [];
|
|
525
553
|
const responseHandler = async (results) => {
|
|
526
|
-
await introduceEntries(results, this.type, this._sync, options)
|
|
554
|
+
for (const r of await introduceEntries(results, this.type, this._sync, options)) {
|
|
555
|
+
rs.push(r.response);
|
|
556
|
+
}
|
|
527
557
|
};
|
|
528
558
|
try {
|
|
529
559
|
if (queryRequest instanceof CloseIteratorRequest) {
|
|
@@ -612,21 +642,30 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
612
642
|
logger.error("Missing response from");
|
|
613
643
|
return;
|
|
614
644
|
}
|
|
615
|
-
if (response
|
|
645
|
+
if (response instanceof NoAccess) {
|
|
646
|
+
logger.error("Dont have access");
|
|
616
647
|
return;
|
|
617
648
|
}
|
|
618
|
-
if (response
|
|
619
|
-
|
|
649
|
+
else if (response instanceof Results) {
|
|
650
|
+
if (response.kept === 0n && response.results.length === 0) {
|
|
651
|
+
return;
|
|
652
|
+
}
|
|
653
|
+
if (response.kept > 0n) {
|
|
654
|
+
done = false; // we have more to do later!
|
|
655
|
+
}
|
|
656
|
+
peerBufferMap.set(from.hashcode(), {
|
|
657
|
+
buffer: response.results
|
|
658
|
+
.filter((x) => !visited.has(asString(this.indexByResolver(x.value))))
|
|
659
|
+
.map((x) => {
|
|
660
|
+
visited.add(asString(this.indexByResolver(x.value)));
|
|
661
|
+
return { from, value: x.value, context: x.context };
|
|
662
|
+
}),
|
|
663
|
+
kept: Number(response.kept),
|
|
664
|
+
});
|
|
665
|
+
}
|
|
666
|
+
else {
|
|
667
|
+
throw new Error("Unsupported result type: " + response?.constructor?.name);
|
|
620
668
|
}
|
|
621
|
-
peerBufferMap.set(from.hashcode(), {
|
|
622
|
-
buffer: response.results
|
|
623
|
-
.filter((x) => !visited.has(asString(this.indexByResolver(x.value))))
|
|
624
|
-
.map((x) => {
|
|
625
|
-
visited.add(asString(this.indexByResolver(x.value)));
|
|
626
|
-
return { from, value: x.value, context: x.context };
|
|
627
|
-
}),
|
|
628
|
-
kept: Number(response.kept),
|
|
629
|
-
});
|
|
630
669
|
},
|
|
631
670
|
});
|
|
632
671
|
return done;
|
|
@@ -660,7 +699,7 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
660
699
|
});
|
|
661
700
|
// Fetch locally?
|
|
662
701
|
if (peer === this.node.identity.publicKey.hashcode()) {
|
|
663
|
-
promises.push(this.processFetchRequest(collectRequest)
|
|
702
|
+
promises.push(this.processFetchRequest(collectRequest, this.node.identity.publicKey)
|
|
664
703
|
.then((results) => {
|
|
665
704
|
resultsLeft += results.kept;
|
|
666
705
|
if (results.results.length === 0) {
|
|
@@ -788,7 +827,7 @@ export let DocumentIndex = class DocumentIndex extends Program {
|
|
|
788
827
|
}
|
|
789
828
|
// Fetch locally?
|
|
790
829
|
if (peer === this.node.identity.publicKey.hashcode()) {
|
|
791
|
-
promises.push(this.processCloseIteratorRequest(closeRequest));
|
|
830
|
+
promises.push(this.processCloseIteratorRequest(closeRequest, this.node.identity.publicKey));
|
|
792
831
|
}
|
|
793
832
|
else {
|
|
794
833
|
// Fetch remotely
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-index.js","sourceRoot":"","sources":["../../src/document-index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-index.js","sourceRoot":"","sources":["../../src/document-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { AbstractType } from "@dao-xyz/borsh";
|
|
2
|
-
import {
|
|
2
|
+
import { Change, Entry, TrimOptions } from "@peerbit/log";
|
|
3
3
|
import { Program, ProgramEvents } from "@peerbit/program";
|
|
4
|
-
import { CanRead } from "@peerbit/rpc";
|
|
5
4
|
import { AppendOptions } from "@peerbit/log";
|
|
6
|
-
import { Role, Observer, Replicator, SharedLog, SharedLogOptions } from "@peerbit/shared-log";
|
|
5
|
+
import { Role, Observer, Replicator, SharedLog, SharedLogOptions, SharedAppendOptions } from "@peerbit/shared-log";
|
|
7
6
|
export { Role, Observer, Replicator };
|
|
8
|
-
import {
|
|
7
|
+
import { IndexableFields, DeleteOperation, DocumentIndex, Operation, PutOperation, CanSearch, CanRead } from "./document-index.js";
|
|
9
8
|
import { Keyable } from "./utils.js";
|
|
10
9
|
export declare class OperationError extends Error {
|
|
11
10
|
constructor(message?: string);
|
|
@@ -17,23 +16,31 @@ export interface DocumentsChange<T> {
|
|
|
17
16
|
export interface DocumentEvents<T> {
|
|
18
17
|
change: CustomEvent<DocumentsChange<T>>;
|
|
19
18
|
}
|
|
19
|
+
export type TransactionContext<T> = {
|
|
20
|
+
entry: Entry<Operation<T>>;
|
|
21
|
+
};
|
|
22
|
+
type MaybePromise = Promise<boolean> | boolean;
|
|
23
|
+
type CanPerform<T> = (operation: PutOperation<T> | DeleteOperation, context: TransactionContext<T>) => MaybePromise;
|
|
20
24
|
export type SetupOptions<T> = {
|
|
21
25
|
type: AbstractType<T>;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
canOpen?: (program: T) => Promise<boolean> | boolean;
|
|
26
|
+
canOpen?: (program: T) => MaybePromise;
|
|
27
|
+
canPerform?: CanPerform<T>;
|
|
25
28
|
index?: {
|
|
26
29
|
key?: string | string[];
|
|
27
|
-
fields?:
|
|
30
|
+
fields?: IndexableFields<T>;
|
|
31
|
+
canSearch?: CanSearch;
|
|
32
|
+
canRead?: CanRead<T>;
|
|
33
|
+
};
|
|
34
|
+
log?: {
|
|
35
|
+
trim?: TrimOptions;
|
|
28
36
|
};
|
|
29
|
-
trim?: TrimOptions;
|
|
30
37
|
} & SharedLogOptions;
|
|
31
38
|
export declare class Documents<T extends Record<string, any>> extends Program<SetupOptions<T>, DocumentEvents<T> & ProgramEvents> {
|
|
32
39
|
log: SharedLog<Operation<T>>;
|
|
33
40
|
immutable: boolean;
|
|
34
41
|
private _index;
|
|
35
42
|
private _clazz?;
|
|
36
|
-
private
|
|
43
|
+
private _optionCanPerform?;
|
|
37
44
|
canOpen?: (program: T, entry: Entry<Operation<T>>) => Promise<boolean> | boolean;
|
|
38
45
|
constructor(properties?: {
|
|
39
46
|
id?: Uint8Array;
|
|
@@ -45,7 +52,7 @@ export declare class Documents<T extends Record<string, any>> extends Program<Se
|
|
|
45
52
|
private _resolveEntry;
|
|
46
53
|
canAppend(entry: Entry<Operation<T>>): Promise<boolean>;
|
|
47
54
|
_canAppend(entry: Entry<Operation<T>>): Promise<boolean>;
|
|
48
|
-
put(doc: T, options?:
|
|
55
|
+
put(doc: T, options?: SharedAppendOptions<Operation<T>> & {
|
|
49
56
|
unique?: boolean;
|
|
50
57
|
}): Promise<{
|
|
51
58
|
entry: Entry<Operation<T>>;
|
|
@@ -29,7 +29,7 @@ export let Documents = class Documents extends Program {
|
|
|
29
29
|
immutable; // "Can I overwrite a document?"
|
|
30
30
|
_index;
|
|
31
31
|
_clazz;
|
|
32
|
-
|
|
32
|
+
_optionCanPerform;
|
|
33
33
|
canOpen;
|
|
34
34
|
constructor(properties) {
|
|
35
35
|
super();
|
|
@@ -49,25 +49,25 @@ export let Documents = class Documents extends Program {
|
|
|
49
49
|
throw new Error("Document store needs to be opened with canOpen option when the document type is a Program");
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
this._optionCanAppend = options.canAppend;
|
|
54
|
-
}
|
|
52
|
+
this._optionCanPerform = options.canPerform;
|
|
55
53
|
await this._index.open({
|
|
56
54
|
type: this._clazz,
|
|
57
55
|
log: this.log,
|
|
58
|
-
canRead: options
|
|
56
|
+
canRead: options?.index?.canRead,
|
|
57
|
+
canSearch: options.index?.canSearch,
|
|
59
58
|
fields: options.index?.fields || ((obj) => obj),
|
|
60
59
|
indexBy: options.index?.key,
|
|
61
60
|
sync: async (result) => this.log.log.join(result.results.map((x) => x.context.head)),
|
|
62
61
|
});
|
|
63
62
|
await this.log.open({
|
|
64
63
|
encoding: BORSH_ENCODING_OPERATION,
|
|
64
|
+
canReplicate: options?.canReplicate,
|
|
65
65
|
canAppend: this.canAppend.bind(this),
|
|
66
66
|
onChange: this.handleChanges.bind(this),
|
|
67
|
-
trim: options?.trim,
|
|
67
|
+
trim: options?.log?.trim,
|
|
68
68
|
sync: options?.sync,
|
|
69
69
|
role: options?.role,
|
|
70
|
-
|
|
70
|
+
replicas: options?.replicas,
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
async _resolveEntry(history) {
|
|
@@ -81,8 +81,16 @@ export let Documents = class Documents extends Program {
|
|
|
81
81
|
if (!l0) {
|
|
82
82
|
return false;
|
|
83
83
|
}
|
|
84
|
-
if (this.
|
|
85
|
-
|
|
84
|
+
if (this._optionCanPerform) {
|
|
85
|
+
const payload = await entry.getPayloadValue();
|
|
86
|
+
if (payload instanceof PutOperation) {
|
|
87
|
+
payload.getValue(this.index.valueEncoding); // Decode they value so callbacks can jsut do .value
|
|
88
|
+
}
|
|
89
|
+
if (!(await this._optionCanPerform(payload, {
|
|
90
|
+
entry,
|
|
91
|
+
}))) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
86
94
|
}
|
|
87
95
|
return true;
|
|
88
96
|
}
|
|
@@ -182,10 +190,13 @@ export let Documents = class Documents extends Program {
|
|
|
182
190
|
data: ser,
|
|
183
191
|
value: doc,
|
|
184
192
|
}), {
|
|
185
|
-
nexts: existingDocument
|
|
186
|
-
? [await this._resolveEntry(existingDocument.context.head)]
|
|
187
|
-
: [],
|
|
188
193
|
...options,
|
|
194
|
+
meta: {
|
|
195
|
+
next: existingDocument
|
|
196
|
+
? [await this._resolveEntry(existingDocument.context.head)]
|
|
197
|
+
: [],
|
|
198
|
+
...options?.meta,
|
|
199
|
+
}, //
|
|
189
200
|
});
|
|
190
201
|
}
|
|
191
202
|
async del(key, options) {
|
|
@@ -199,9 +210,12 @@ export let Documents = class Documents extends Program {
|
|
|
199
210
|
return this.log.append(new DeleteOperation({
|
|
200
211
|
key: asString(key),
|
|
201
212
|
}), {
|
|
202
|
-
nexts: [await this._resolveEntry(existing.context.head)],
|
|
203
|
-
type: EntryType.CUT,
|
|
204
213
|
...options,
|
|
214
|
+
meta: {
|
|
215
|
+
next: [await this._resolveEntry(existing.context.head)],
|
|
216
|
+
type: EntryType.CUT,
|
|
217
|
+
...options?.meta,
|
|
218
|
+
},
|
|
205
219
|
} //
|
|
206
220
|
);
|
|
207
221
|
}
|
|
@@ -252,8 +266,8 @@ export let Documents = class Documents extends Program {
|
|
|
252
266
|
documentsChanged.added.push(value);
|
|
253
267
|
const context = new Context({
|
|
254
268
|
created: this._index.index.get(key)?.context.created ||
|
|
255
|
-
item.
|
|
256
|
-
modified: item.
|
|
269
|
+
item.meta.clock.timestamp.wallTime,
|
|
270
|
+
modified: item.meta.clock.timestamp.wallTime,
|
|
257
271
|
head: item.hash,
|
|
258
272
|
});
|
|
259
273
|
const valueToIndex = this._index.toIndex(value, context);
|
|
@@ -269,7 +283,7 @@ export let Documents = class Documents extends Program {
|
|
|
269
283
|
// if replicator, then open
|
|
270
284
|
if ((await this.canOpen(value, item)) &&
|
|
271
285
|
this.log.role instanceof Replicator &&
|
|
272
|
-
(await this.log.replicator(item
|
|
286
|
+
(await this.log.replicator(item)) // TODO types, throw runtime error if replicator is not provided
|
|
273
287
|
) {
|
|
274
288
|
await this.node.open(value, {
|
|
275
289
|
parent: this,
|