@peerbit/document 6.0.7-efee9d3 → 7.0.0-3a75d6e
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/benchmark/index.js +13 -14
- package/dist/benchmark/index.js.map +1 -1
- package/dist/benchmark/memory/index.d.ts +2 -0
- package/dist/benchmark/memory/index.d.ts.map +1 -0
- package/dist/benchmark/memory/index.js +122 -0
- package/dist/benchmark/memory/index.js.map +1 -0
- package/dist/benchmark/memory/insert.d.ts +2 -0
- package/dist/benchmark/memory/insert.d.ts.map +1 -0
- package/dist/benchmark/memory/insert.js +133 -0
- package/dist/benchmark/memory/insert.js.map +1 -0
- package/dist/benchmark/memory/utils.d.ts +13 -0
- package/dist/benchmark/memory/utils.d.ts.map +1 -0
- package/dist/benchmark/memory/utils.js +2 -0
- package/dist/benchmark/memory/utils.js.map +1 -0
- package/dist/benchmark/replication.js +27 -29
- package/dist/benchmark/replication.js.map +1 -1
- package/dist/src/borsh.d.ts +2 -0
- package/dist/src/borsh.d.ts.map +1 -0
- package/dist/src/borsh.js +16 -0
- package/dist/src/borsh.js.map +1 -0
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/program.d.ts +16 -19
- package/dist/src/program.d.ts.map +1 -1
- package/dist/src/program.js +57 -68
- package/dist/src/program.js.map +1 -1
- package/dist/src/search.d.ts +46 -32
- package/dist/src/search.d.ts.map +1 -1
- package/dist/src/search.js +236 -133
- package/dist/src/search.js.map +1 -1
- package/package.json +16 -11
- package/src/borsh.ts +19 -0
- package/src/index.ts +0 -1
- package/src/program.ts +118 -118
- package/src/search.ts +438 -218
package/dist/src/program.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { type AbstractType } from "@dao-xyz/borsh";
|
|
2
|
-
import
|
|
2
|
+
import * as indexerTypes from "@peerbit/indexer-interface";
|
|
3
|
+
import { type Change, Entry, type ShallowOrFullEntry, type TrimOptions } from "@peerbit/log";
|
|
3
4
|
import { Program, type ProgramEvents } from "@peerbit/program";
|
|
4
|
-
import { type
|
|
5
|
-
import
|
|
6
|
-
export type { RoleOptions };
|
|
7
|
-
import { type IndexableFields, DeleteOperation, DocumentIndex, Operation, PutOperation, type CanSearch, type CanRead } from "./search.js";
|
|
5
|
+
import { type SharedAppendOptions, SharedLog, type SharedLogOptions } from "@peerbit/shared-log";
|
|
6
|
+
import { type CanRead, type CanSearch, DeleteOperation, DocumentIndex, Operation, PutOperation, type TransformOptions } from "./search.js";
|
|
8
7
|
export declare class OperationError extends Error {
|
|
9
8
|
constructor(message?: string);
|
|
10
9
|
}
|
|
@@ -29,22 +28,21 @@ type CanPerformDelete<T> = {
|
|
|
29
28
|
};
|
|
30
29
|
export type CanPerformOperations<T> = CanPerformPut<T> | CanPerformDelete<T>;
|
|
31
30
|
export type CanPerform<T> = (properties: CanPerformOperations<T>) => MaybePromise<boolean>;
|
|
32
|
-
export type SetupOptions<T> = {
|
|
31
|
+
export type SetupOptions<T, I = T> = {
|
|
33
32
|
type: AbstractType<T>;
|
|
34
33
|
canOpen?: (program: T) => MaybePromise<boolean>;
|
|
35
34
|
canPerform?: CanPerform<T>;
|
|
36
|
-
id?: (obj: any) =>
|
|
35
|
+
id?: (obj: any) => indexerTypes.IdPrimitive;
|
|
37
36
|
index?: {
|
|
38
|
-
idProperty?: string | string[];
|
|
39
37
|
canSearch?: CanSearch;
|
|
40
38
|
canRead?: CanRead<T>;
|
|
41
|
-
|
|
42
|
-
}
|
|
39
|
+
idProperty?: string | string[];
|
|
40
|
+
} & TransformOptions<T, I>;
|
|
43
41
|
log?: {
|
|
44
42
|
trim?: TrimOptions;
|
|
45
43
|
};
|
|
46
44
|
} & SharedLogOptions<Operation>;
|
|
47
|
-
export declare class Documents<T> extends Program<SetupOptions<T>, DocumentEvents<T> & ProgramEvents> {
|
|
45
|
+
export declare class Documents<T, I extends Record<string, any> = T extends Record<string, any> ? T : any> extends Program<SetupOptions<T, I>, DocumentEvents<T> & ProgramEvents> {
|
|
48
46
|
log: SharedLog<Operation>;
|
|
49
47
|
immutable: boolean;
|
|
50
48
|
private _index;
|
|
@@ -56,14 +54,12 @@ export declare class Documents<T> extends Program<SetupOptions<T>, DocumentEvent
|
|
|
56
54
|
constructor(properties?: {
|
|
57
55
|
id?: Uint8Array;
|
|
58
56
|
immutable?: boolean;
|
|
59
|
-
index?: DocumentIndex<T>;
|
|
57
|
+
index?: DocumentIndex<T, I>;
|
|
60
58
|
});
|
|
61
|
-
get index(): DocumentIndex<T>;
|
|
62
|
-
open(options: SetupOptions<T>): Promise<void>;
|
|
59
|
+
get index(): DocumentIndex<T, I>;
|
|
60
|
+
open(options: SetupOptions<T, I>): Promise<void>;
|
|
63
61
|
recover(): Promise<void>;
|
|
64
62
|
private _resolveEntry;
|
|
65
|
-
updateRole(role: RoleOptions): Promise<void>;
|
|
66
|
-
get role(): Replicator | Observer;
|
|
67
63
|
canAppend(entry: Entry<Operation>, reference?: {
|
|
68
64
|
document: T;
|
|
69
65
|
operation: PutOperation;
|
|
@@ -76,15 +72,16 @@ export declare class Documents<T> extends Program<SetupOptions<T>, DocumentEvent
|
|
|
76
72
|
unique?: boolean;
|
|
77
73
|
}): Promise<{
|
|
78
74
|
entry: Entry<Operation>;
|
|
79
|
-
removed:
|
|
75
|
+
removed: ShallowOrFullEntry<Operation>[];
|
|
80
76
|
}>;
|
|
81
|
-
del(id:
|
|
77
|
+
del(id: indexerTypes.Ideable, options?: SharedAppendOptions<Operation>): Promise<{
|
|
82
78
|
entry: Entry<Operation>;
|
|
83
|
-
removed:
|
|
79
|
+
removed: ShallowOrFullEntry<Operation>[];
|
|
84
80
|
}>;
|
|
85
81
|
handleChanges(change: Change<Operation>, reference?: {
|
|
86
82
|
document: T;
|
|
87
83
|
operation: PutOperation;
|
|
88
84
|
}): Promise<void>;
|
|
89
85
|
}
|
|
86
|
+
export {};
|
|
90
87
|
//# sourceMappingURL=program.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,YAAY,EAKjB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
package/dist/src/program.js
CHANGED
|
@@ -7,16 +7,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import { BorshError, field, serialize, variant } from "@dao-xyz/borsh";
|
|
11
|
-
import {
|
|
12
|
-
import { Program } from "@peerbit/program";
|
|
10
|
+
import { BorshError, field, serialize, variant, } from "@dao-xyz/borsh";
|
|
11
|
+
import { CustomEvent } from "@libp2p/interface";
|
|
13
12
|
import { AccessError, DecryptedThing } from "@peerbit/crypto";
|
|
13
|
+
import * as documentsTypes from "@peerbit/document-interface";
|
|
14
|
+
import * as indexerTypes from "@peerbit/indexer-interface";
|
|
15
|
+
import { Entry, EntryType, } from "@peerbit/log";
|
|
14
16
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import * as types from "@peerbit/document-interface";
|
|
18
|
-
import { BORSH_ENCODING_OPERATION, DeleteOperation, DocumentIndex, Operation, PutOperation } from "./search.js";
|
|
17
|
+
import { Program } from "@peerbit/program";
|
|
18
|
+
import { SharedLog, } from "@peerbit/shared-log";
|
|
19
19
|
import { MAX_BATCH_SIZE } from "./constants.js";
|
|
20
|
+
import { BORSH_ENCODING_OPERATION, DeleteOperation, DocumentIndex, Operation, PutOperation, } from "./search.js";
|
|
20
21
|
const logger = loggerFn({ module: "document" });
|
|
21
22
|
export class OperationError extends Error {
|
|
22
23
|
constructor(message) {
|
|
@@ -56,26 +57,14 @@ let Documents = class Documents extends Program {
|
|
|
56
57
|
const idResolver = options.id ||
|
|
57
58
|
(typeof idProperty === "string"
|
|
58
59
|
? (obj) => obj[idProperty]
|
|
59
|
-
: (obj) =>
|
|
60
|
+
: (obj) => indexerTypes.extractFieldValue(obj, idProperty));
|
|
60
61
|
this.idResolver = idResolver;
|
|
61
|
-
let transform;
|
|
62
|
-
if (options.index?.fields) {
|
|
63
|
-
if (typeof options.index.fields === "function") {
|
|
64
|
-
transform = options.index.fields;
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
transform = options.index.fields;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
transform = (obj) => obj; // TODO check types
|
|
72
|
-
}
|
|
73
62
|
await this._index.open({
|
|
74
|
-
type: this._clazz,
|
|
75
63
|
log: this.log,
|
|
76
64
|
canRead: options?.index?.canRead,
|
|
77
65
|
canSearch: options.index?.canSearch,
|
|
78
|
-
|
|
66
|
+
documentType: this._clazz,
|
|
67
|
+
transform: options.index,
|
|
79
68
|
indexBy: idProperty,
|
|
80
69
|
sync: async (result) => {
|
|
81
70
|
// here we arrive for all the results we want to persist.
|
|
@@ -88,7 +77,7 @@ let Documents = class Documents extends Program {
|
|
|
88
77
|
}
|
|
89
78
|
return this.log.log.join(heads);
|
|
90
79
|
},
|
|
91
|
-
dbType: this.constructor
|
|
80
|
+
dbType: this.constructor,
|
|
92
81
|
});
|
|
93
82
|
await this.log.open({
|
|
94
83
|
encoding: BORSH_ENCODING_OPERATION,
|
|
@@ -96,13 +85,13 @@ let Documents = class Documents extends Program {
|
|
|
96
85
|
canAppend: this.canAppend.bind(this),
|
|
97
86
|
onChange: this.handleChanges.bind(this),
|
|
98
87
|
trim: options?.log?.trim,
|
|
99
|
-
|
|
88
|
+
replicate: options?.replicate,
|
|
100
89
|
replicas: options?.replicas,
|
|
101
90
|
sync: (entry) => {
|
|
102
91
|
// here we arrive when ever a insertion/pruning behaviour processes an entry
|
|
103
92
|
// returning true means that it should persist
|
|
104
93
|
return this._manuallySynced.has(entry.gid);
|
|
105
|
-
}
|
|
94
|
+
},
|
|
106
95
|
});
|
|
107
96
|
}
|
|
108
97
|
async recover() {
|
|
@@ -114,12 +103,6 @@ let Documents = class Documents extends Program {
|
|
|
114
103
|
(await Entry.fromMultihash(this.log.log.blocks, history))
|
|
115
104
|
: history;
|
|
116
105
|
}
|
|
117
|
-
async updateRole(role) {
|
|
118
|
-
await this.log.updateRole(role);
|
|
119
|
-
}
|
|
120
|
-
get role() {
|
|
121
|
-
return this.log.role;
|
|
122
|
-
}
|
|
123
106
|
async canAppend(entry, reference) {
|
|
124
107
|
const l0 = await this._canAppend(entry, reference);
|
|
125
108
|
if (!l0) {
|
|
@@ -150,12 +133,12 @@ let Documents = class Documents extends Program {
|
|
|
150
133
|
type: "put",
|
|
151
134
|
value: document,
|
|
152
135
|
operation,
|
|
153
|
-
entry: entry
|
|
136
|
+
entry: entry,
|
|
154
137
|
}
|
|
155
138
|
: {
|
|
156
139
|
type: "delete",
|
|
157
140
|
operation,
|
|
158
|
-
entry: entry
|
|
141
|
+
entry: entry,
|
|
159
142
|
}))) {
|
|
160
143
|
return false;
|
|
161
144
|
}
|
|
@@ -194,7 +177,7 @@ let Documents = class Documents extends Program {
|
|
|
194
177
|
try {
|
|
195
178
|
entry.init({
|
|
196
179
|
encoding: this.log.log.encoding,
|
|
197
|
-
keychain: this.node.services.keychain
|
|
180
|
+
keychain: this.node.services.keychain,
|
|
198
181
|
});
|
|
199
182
|
const operation = reference?.operation || entry._payload instanceof DecryptedThing
|
|
200
183
|
? entry.payload.getValue(entry.encoding)
|
|
@@ -205,8 +188,9 @@ let Documents = class Documents extends Program {
|
|
|
205
188
|
let value = reference?.document ??
|
|
206
189
|
this.index.valueEncoding.decoder(putOperation.data);
|
|
207
190
|
const keyValue = this.idResolver(value);
|
|
208
|
-
const key =
|
|
209
|
-
const existingDocument = await this.index.
|
|
191
|
+
const key = indexerTypes.toId(keyValue);
|
|
192
|
+
const existingDocument = (await this.index.getDetailed(key))?.[0]
|
|
193
|
+
?.results[0];
|
|
210
194
|
if (existingDocument && existingDocument.context.head !== entry.hash) {
|
|
211
195
|
// econd condition can false if we reset the operation log, while not resetting the index. For example when doing .recover
|
|
212
196
|
if (this.immutable) {
|
|
@@ -234,7 +218,7 @@ let Documents = class Documents extends Program {
|
|
|
234
218
|
if (entry.next.length !== 1) {
|
|
235
219
|
return false;
|
|
236
220
|
}
|
|
237
|
-
const existingDocument = await this.
|
|
221
|
+
const existingDocument = (await this.index.getDetailed(operation.key))?.[0].results[0];
|
|
238
222
|
if (!existingDocument) {
|
|
239
223
|
// already deleted
|
|
240
224
|
return operation; // assume ok
|
|
@@ -269,7 +253,7 @@ let Documents = class Documents extends Program {
|
|
|
269
253
|
async put(doc, options) {
|
|
270
254
|
const keyValue = this.idResolver(doc);
|
|
271
255
|
// type check the key
|
|
272
|
-
|
|
256
|
+
indexerTypes.checkId(keyValue);
|
|
273
257
|
const ser = serialize(doc);
|
|
274
258
|
if (ser.length > MAX_BATCH_SIZE) {
|
|
275
259
|
throw new Error(`Document is too large (${ser.length * 1e-6}) mb). Needs to be less than ${MAX_BATCH_SIZE * 1e-6} mb`);
|
|
@@ -278,10 +262,10 @@ let Documents = class Documents extends Program {
|
|
|
278
262
|
? undefined
|
|
279
263
|
: (await this._index.getDetailed(keyValue, {
|
|
280
264
|
local: true,
|
|
281
|
-
remote: { sync: true } // only query remote if we know they exist
|
|
265
|
+
remote: { sync: true }, // only query remote if we know they exist
|
|
282
266
|
}))?.[0]?.results[0];
|
|
283
267
|
const operation = new PutOperation({
|
|
284
|
-
data: ser
|
|
268
|
+
data: ser,
|
|
285
269
|
});
|
|
286
270
|
const appended = await this.log.append(operation, {
|
|
287
271
|
...options,
|
|
@@ -289,56 +273,61 @@ let Documents = class Documents extends Program {
|
|
|
289
273
|
next: existingDocument
|
|
290
274
|
? [await this._resolveEntry(existingDocument.context.head)]
|
|
291
275
|
: [],
|
|
292
|
-
...options?.meta
|
|
276
|
+
...options?.meta,
|
|
293
277
|
},
|
|
294
278
|
canAppend: (entry) => {
|
|
295
279
|
return this.canAppend(entry, { document: doc, operation });
|
|
296
280
|
},
|
|
297
281
|
onChange: (change) => {
|
|
298
282
|
return this.handleChanges(change, { document: doc, operation });
|
|
299
|
-
}
|
|
283
|
+
},
|
|
300
284
|
});
|
|
301
285
|
return appended;
|
|
302
286
|
}
|
|
303
287
|
async del(id, options) {
|
|
304
|
-
const key =
|
|
288
|
+
const key = indexerTypes.toId(id);
|
|
305
289
|
const existing = (await this._index.getDetailed(key, {
|
|
306
290
|
local: true,
|
|
307
|
-
remote: { sync: true }
|
|
291
|
+
remote: { sync: true },
|
|
308
292
|
}))?.[0]?.results[0];
|
|
309
293
|
if (!existing) {
|
|
310
|
-
throw new Error(`No entry with key '${key}' in the database`);
|
|
294
|
+
throw new Error(`No entry with key '${key.primitive}' in the database`);
|
|
311
295
|
}
|
|
312
296
|
return this.log.append(new DeleteOperation({
|
|
313
|
-
key
|
|
297
|
+
key,
|
|
314
298
|
}), {
|
|
315
299
|
...options,
|
|
316
300
|
meta: {
|
|
317
301
|
next: [await this._resolveEntry(existing.context.head)],
|
|
318
302
|
type: EntryType.CUT,
|
|
319
|
-
...options?.meta
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
);
|
|
303
|
+
...options?.meta,
|
|
304
|
+
},
|
|
305
|
+
});
|
|
323
306
|
}
|
|
324
307
|
async handleChanges(change, reference) {
|
|
325
308
|
const isAppendOperation = change?.added.length === 1 ? !!change.added[0] : false;
|
|
326
|
-
const removed = [...(change.removed || [])];
|
|
327
309
|
const removedSet = new Map();
|
|
328
|
-
for (const r of removed) {
|
|
310
|
+
for (const r of change.removed) {
|
|
329
311
|
removedSet.set(r.hash, r);
|
|
330
312
|
}
|
|
331
|
-
const sortedEntries = [
|
|
332
|
-
.
|
|
333
|
-
.
|
|
313
|
+
const sortedEntries = [
|
|
314
|
+
...change.added,
|
|
315
|
+
...((await Promise.all(change.removed.map((x) => x instanceof Entry ? x : this.log.log.entryIndex.get(x.hash)))) || []),
|
|
316
|
+
]; // TODO assert sorting
|
|
317
|
+
/*
|
|
318
|
+
const sortedEntries = [...change.added, ...(removed || [])]
|
|
319
|
+
.sort(this.log.log.sortFn)
|
|
320
|
+
.reverse(); // sort so we get newest to oldest */
|
|
334
321
|
// There might be a case where change.added and change.removed contains the same document id. Usaully because you use the "trim" option
|
|
335
322
|
// in combination with inserting the same document. To mitigate this, we loop through the changes and modify the behaviour for this
|
|
336
323
|
let documentsChanged = {
|
|
337
324
|
added: [],
|
|
338
|
-
removed: []
|
|
325
|
+
removed: [],
|
|
339
326
|
};
|
|
340
327
|
let modified = new Set();
|
|
341
328
|
for (const item of sortedEntries) {
|
|
329
|
+
if (!item)
|
|
330
|
+
continue;
|
|
342
331
|
try {
|
|
343
332
|
const payload = item._payload instanceof DecryptedThing
|
|
344
333
|
? item.payload.getValue(item.encoding)
|
|
@@ -350,7 +339,7 @@ let Documents = class Documents extends Program {
|
|
|
350
339
|
this.index.valueEncoding.decoder(payload.data);
|
|
351
340
|
// get index key from value
|
|
352
341
|
const keyObject = this.idResolver(value);
|
|
353
|
-
const key =
|
|
342
|
+
const key = indexerTypes.toId(keyObject);
|
|
354
343
|
// document is already updated with more recent entry
|
|
355
344
|
if (modified.has(key.primitive)) {
|
|
356
345
|
continue;
|
|
@@ -359,17 +348,16 @@ let Documents = class Documents extends Program {
|
|
|
359
348
|
if (value instanceof Program) {
|
|
360
349
|
// if replicator, then open
|
|
361
350
|
if ((await this.canOpen(value, item)) &&
|
|
362
|
-
this.log.
|
|
363
|
-
(await this.log.replicator(item)) // TODO types, throw runtime error if replicator is not provided
|
|
351
|
+
(await this.log.isReplicator(item)) // TODO types, throw runtime error if replicator is not provided
|
|
364
352
|
) {
|
|
365
353
|
value = (await this.node.open(value, {
|
|
366
354
|
parent: this,
|
|
367
|
-
existing: "reuse"
|
|
355
|
+
existing: "reuse",
|
|
368
356
|
})); // TODO types
|
|
369
357
|
}
|
|
370
358
|
}
|
|
371
359
|
documentsChanged.added.push(value);
|
|
372
|
-
this._index.put(value, item, key);
|
|
360
|
+
await this._index.put(value, item, key);
|
|
373
361
|
modified.add(key.primitive);
|
|
374
362
|
}
|
|
375
363
|
else if ((payload instanceof DeleteOperation && !removedSet.has(item.hash)) ||
|
|
@@ -380,21 +368,21 @@ let Documents = class Documents extends Program {
|
|
|
380
368
|
let key;
|
|
381
369
|
if (payload instanceof PutOperation) {
|
|
382
370
|
value = this.index.valueEncoding.decoder(payload.data);
|
|
383
|
-
key =
|
|
371
|
+
key = indexerTypes.toId(this.idResolver(value));
|
|
384
372
|
// document is already updated with more recent entry
|
|
385
|
-
if (modified.has(key)) {
|
|
373
|
+
if (modified.has(key.primitive)) {
|
|
386
374
|
continue;
|
|
387
375
|
}
|
|
388
376
|
}
|
|
389
377
|
else if (payload instanceof DeleteOperation) {
|
|
390
|
-
key = payload.key
|
|
378
|
+
key = payload.key;
|
|
391
379
|
// document is already updated with more recent entry
|
|
392
|
-
if (modified.has(key)) {
|
|
380
|
+
if (modified.has(key.primitive)) {
|
|
393
381
|
continue;
|
|
394
382
|
}
|
|
395
383
|
const document = await this._index.get(key, {
|
|
396
384
|
local: true,
|
|
397
|
-
remote: false
|
|
385
|
+
remote: false,
|
|
398
386
|
});
|
|
399
387
|
if (!document) {
|
|
400
388
|
continue;
|
|
@@ -409,11 +397,12 @@ let Documents = class Documents extends Program {
|
|
|
409
397
|
await value.drop(this);
|
|
410
398
|
}
|
|
411
399
|
// update index
|
|
412
|
-
this._index.del(key);
|
|
413
|
-
modified.add(key);
|
|
400
|
+
await this._index.del(key);
|
|
401
|
+
modified.add(key.primitive);
|
|
414
402
|
}
|
|
415
403
|
else {
|
|
416
404
|
// Unknown operation
|
|
405
|
+
throw new OperationError("Unknown operation");
|
|
417
406
|
}
|
|
418
407
|
}
|
|
419
408
|
catch (error) {
|
package/dist/src/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
package/dist/src/search.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type AbstractType } from "@dao-xyz/borsh";
|
|
2
|
+
import { type MaybePromise, PublicSignKey } from "@peerbit/crypto";
|
|
3
|
+
import * as types from "@peerbit/document-interface";
|
|
4
|
+
import * as indexerTypes from "@peerbit/indexer-interface";
|
|
2
5
|
import { type Encoding, Entry } from "@peerbit/log";
|
|
3
6
|
import { Program } from "@peerbit/program";
|
|
4
|
-
import * as types from "@peerbit/document-interface";
|
|
5
7
|
import { RPC, type RPCRequestAllOptions } from "@peerbit/rpc";
|
|
6
|
-
import { PublicSignKey } from "@peerbit/crypto";
|
|
7
8
|
import { SharedLog } from "@peerbit/shared-log";
|
|
8
9
|
export declare class Operation {
|
|
9
10
|
}
|
|
@@ -13,7 +14,7 @@ export declare const BORSH_ENCODING_OPERATION: Encoding<Operation>;
|
|
|
13
14
|
*/
|
|
14
15
|
export declare class PutOperation extends Operation {
|
|
15
16
|
data: Uint8Array;
|
|
16
|
-
constructor(props
|
|
17
|
+
constructor(props: {
|
|
17
18
|
data: Uint8Array;
|
|
18
19
|
});
|
|
19
20
|
}
|
|
@@ -21,9 +22,9 @@ export declare class PutOperation extends Operation {
|
|
|
21
22
|
* Delete a document at a key
|
|
22
23
|
*/
|
|
23
24
|
export declare class DeleteOperation extends Operation {
|
|
24
|
-
key:
|
|
25
|
+
key: indexerTypes.IdKey;
|
|
25
26
|
constructor(props: {
|
|
26
|
-
key:
|
|
27
|
+
key: indexerTypes.IdKey;
|
|
27
28
|
});
|
|
28
29
|
}
|
|
29
30
|
export type RemoteQueryOptions<R> = RPCRequestAllOptions<R> & {
|
|
@@ -35,11 +36,9 @@ export type QueryOptions<R> = {
|
|
|
35
36
|
remote?: boolean | RemoteQueryOptions<types.AbstractSearchResult<R>>;
|
|
36
37
|
local?: boolean;
|
|
37
38
|
};
|
|
38
|
-
export type SearchOptions<R> =
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
export type IndexableFields<T> = (obj: T, context: types.Context) => Record<string, any> | Promise<Record<string, any>>;
|
|
42
|
-
export type ResultsIterator<T> = {
|
|
39
|
+
export type SearchOptions<R> = QueryOptions<R>;
|
|
40
|
+
type Transformer<T, I> = (obj: T, context: types.Context) => MaybePromise<I>;
|
|
41
|
+
type ResultsIterator<T> = {
|
|
43
42
|
close: () => Promise<void>;
|
|
44
43
|
next: (number: number) => Promise<T[]>;
|
|
45
44
|
done: () => boolean;
|
|
@@ -47,72 +46,87 @@ export type ResultsIterator<T> = {
|
|
|
47
46
|
type QueryDetailedOptions<T> = QueryOptions<T> & {
|
|
48
47
|
onResponse?: (response: types.AbstractSearchResult<T>, from: PublicSignKey) => void | Promise<void>;
|
|
49
48
|
};
|
|
50
|
-
export type CanSearch = (request:
|
|
49
|
+
export type CanSearch = (request: indexerTypes.SearchRequest | indexerTypes.CollectNextRequest, from: PublicSignKey) => Promise<boolean> | boolean;
|
|
51
50
|
export type CanRead<T> = (result: T, from: PublicSignKey) => Promise<boolean> | boolean;
|
|
52
|
-
export type
|
|
53
|
-
|
|
51
|
+
export type IDocumentWithContext<I> = {
|
|
52
|
+
__context: types.Context;
|
|
53
|
+
} & I;
|
|
54
|
+
export type TransformerAsConstructor<T, I> = {
|
|
55
|
+
type?: new (arg: T, context: types.Context) => I;
|
|
56
|
+
};
|
|
57
|
+
export type TransformerAsFunction<T, I> = {
|
|
58
|
+
type: AbstractType<I>;
|
|
59
|
+
transform: (arg: T, context: types.Context) => I | Promise<I>;
|
|
60
|
+
};
|
|
61
|
+
export type TransformOptions<T, I> = TransformerAsConstructor<T, I> | TransformerAsFunction<T, I>;
|
|
62
|
+
export type OpenOptions<T, I> = {
|
|
63
|
+
documentType: AbstractType<T>;
|
|
54
64
|
dbType: AbstractType<types.IDocumentStore<T>>;
|
|
55
65
|
log: SharedLog<Operation>;
|
|
56
66
|
canRead?: CanRead<T>;
|
|
57
67
|
canSearch?: CanSearch;
|
|
58
|
-
engine?: types.IndexEngine;
|
|
59
68
|
sync: (result: types.Results<T>) => Promise<void>;
|
|
60
69
|
indexBy?: string | string[];
|
|
61
|
-
|
|
70
|
+
transform?: TransformOptions<T, I>;
|
|
62
71
|
};
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
72
|
+
type IndexableClass<I> = new (value: I, context: types.Context) => IDocumentWithContext<I>;
|
|
73
|
+
export declare class DocumentIndex<T, I extends Record<string, any>> extends Program<OpenOptions<T, I>> {
|
|
74
|
+
_query: RPC<indexerTypes.AbstractSearchRequest, types.AbstractSearchResult<T>>;
|
|
75
|
+
documentType: AbstractType<T>;
|
|
76
|
+
transformer: Transformer<T, I>;
|
|
77
|
+
wrappedIndexedType: IndexableClass<I>;
|
|
67
78
|
dbType: AbstractType<types.IDocumentStore<T>>;
|
|
79
|
+
indexedTypeIsDocumentType: boolean;
|
|
68
80
|
private indexBy;
|
|
69
|
-
private indexByArr;
|
|
70
81
|
private indexByResolver;
|
|
71
|
-
|
|
82
|
+
index: indexerTypes.Index<IDocumentWithContext<I>>;
|
|
72
83
|
private _valueEncoding;
|
|
73
84
|
private _sync;
|
|
74
85
|
private _log;
|
|
75
86
|
private _resolverProgramCache?;
|
|
76
87
|
private _resolverCache;
|
|
77
88
|
private _isProgramValues;
|
|
89
|
+
private _resultQueue;
|
|
78
90
|
constructor(properties?: {
|
|
79
|
-
query?: RPC<
|
|
91
|
+
query?: RPC<indexerTypes.AbstractSearchRequest, types.AbstractSearchResult<T>>;
|
|
80
92
|
});
|
|
81
93
|
get valueEncoding(): Encoding<T>;
|
|
82
|
-
open(properties: OpenOptions<T>): Promise<void>;
|
|
94
|
+
open(properties: OpenOptions<T, I>): Promise<void>;
|
|
95
|
+
getPending(cursorId: string): number | undefined;
|
|
83
96
|
close(from?: Program): Promise<boolean>;
|
|
84
97
|
drop(from?: Program): Promise<boolean>;
|
|
85
|
-
get(key:
|
|
86
|
-
put(value: T, entry: Entry<Operation>, id:
|
|
87
|
-
del(key:
|
|
88
|
-
getDetailed(key:
|
|
98
|
+
get(key: indexerTypes.Ideable | indexerTypes.IdKey, options?: QueryOptions<T>): Promise<T | undefined>;
|
|
99
|
+
put(value: T, entry: Entry<Operation>, id: indexerTypes.IdKey): Promise<void>;
|
|
100
|
+
del(key: indexerTypes.IdKey): indexerTypes.IdKey[] | Promise<indexerTypes.IdKey[]>;
|
|
101
|
+
getDetailed(key: indexerTypes.IdKey | indexerTypes.IdPrimitive, options?: QueryOptions<T>): Promise<types.Results<T>[] | undefined>;
|
|
89
102
|
getSize(): Promise<number> | number;
|
|
90
103
|
private resolveDocument;
|
|
91
|
-
processQuery(query:
|
|
104
|
+
processQuery(query: indexerTypes.SearchRequest | indexerTypes.CollectNextRequest, from: PublicSignKey, isLocal: boolean, options?: {
|
|
92
105
|
canRead?: CanRead<T>;
|
|
93
106
|
}): Promise<types.Results<T>>;
|
|
94
|
-
|
|
107
|
+
clearResultsQueue(query: indexerTypes.SearchRequest | indexerTypes.CollectNextRequest | indexerTypes.CloseIteratorRequest): void;
|
|
108
|
+
processCloseIteratorRequest(query: indexerTypes.CloseIteratorRequest, publicKey: PublicSignKey): Promise<void>;
|
|
95
109
|
/**
|
|
96
110
|
* Query and retrieve results with most details
|
|
97
111
|
* @param queryRequest
|
|
98
112
|
* @param options
|
|
99
113
|
* @returns
|
|
100
114
|
*/
|
|
101
|
-
queryDetailed(queryRequest:
|
|
115
|
+
queryDetailed(queryRequest: indexerTypes.SearchRequest, options?: QueryDetailedOptions<T>): Promise<types.Results<T>[]>;
|
|
102
116
|
/**
|
|
103
117
|
* Query and retrieve results
|
|
104
118
|
* @param queryRequest
|
|
105
119
|
* @param options
|
|
106
120
|
* @returns
|
|
107
121
|
*/
|
|
108
|
-
search(queryRequest:
|
|
122
|
+
search(queryRequest: indexerTypes.SearchRequest, options?: SearchOptions<T>): Promise<T[]>;
|
|
109
123
|
/**
|
|
110
124
|
* Query and retrieve documents in a iterator
|
|
111
125
|
* @param queryRequest
|
|
112
126
|
* @param options
|
|
113
127
|
* @returns
|
|
114
128
|
*/
|
|
115
|
-
iterate(queryRequest:
|
|
129
|
+
iterate(queryRequest: indexerTypes.SearchRequest, options?: QueryOptions<T>): ResultsIterator<T>;
|
|
116
130
|
}
|
|
117
131
|
export {};
|
|
118
132
|
//# sourceMappingURL=search.d.ts.map
|