@peerbit/document 6.0.6 → 6.0.7-0691c73
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/README.md +2 -2
- package/dist/benchmark/index.d.ts +2 -0
- package/dist/benchmark/index.d.ts.map +1 -0
- package/dist/benchmark/index.js +126 -0
- package/dist/benchmark/index.js.map +1 -0
- package/dist/benchmark/replication.d.ts +2 -0
- package/dist/benchmark/replication.d.ts.map +1 -0
- package/dist/benchmark/replication.js +174 -0
- package/dist/benchmark/replication.js.map +1 -0
- package/dist/src/constants.d.ts +2 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +2 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/program.d.ts +90 -0
- package/dist/src/program.d.ts.map +1 -0
- package/{lib/esm/document-store.js → dist/src/program.js} +141 -109
- package/dist/src/program.js.map +1 -0
- package/dist/src/search.d.ts +118 -0
- package/dist/src/search.d.ts.map +1 -0
- package/{lib/esm/document-index.js → dist/src/search.js} +246 -446
- package/dist/src/search.js.map +1 -0
- package/package.json +69 -43
- package/src/constants.ts +1 -0
- package/src/index.ts +4 -3
- package/src/{document-store.ts → program.ts} +216 -183
- package/src/search.ts +997 -0
- package/LICENSE +0 -202
- package/lib/esm/document-index.d.ts +0 -147
- package/lib/esm/document-index.js.map +0 -1
- package/lib/esm/document-store.d.ts +0 -72
- package/lib/esm/document-store.js.map +0 -1
- package/lib/esm/index.d.ts +0 -3
- package/lib/esm/index.js +0 -4
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/query.d.ts +0 -191
- package/lib/esm/query.js +0 -615
- package/lib/esm/query.js.map +0 -1
- package/lib/esm/utils.d.ts +0 -3
- package/lib/esm/utils.js +0 -12
- package/lib/esm/utils.js.map +0 -1
- package/src/document-index.ts +0 -1268
- package/src/query.ts +0 -525
- package/src/utils.ts +0 -17
|
@@ -7,17 +7,16 @@ 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,
|
|
10
|
+
import { BorshError, field, serialize, variant } from "@dao-xyz/borsh";
|
|
11
11
|
import { Entry, EntryType } from "@peerbit/log";
|
|
12
12
|
import { Program } from "@peerbit/program";
|
|
13
13
|
import { AccessError, DecryptedThing } from "@peerbit/crypto";
|
|
14
14
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
15
15
|
import { CustomEvent } from "@libp2p/interface";
|
|
16
|
-
import { Replicator, SharedLog } from "@peerbit/shared-log";
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
export { MAX_DOCUMENT_SIZE };
|
|
16
|
+
import { Observer, Replicator, SharedLog } from "@peerbit/shared-log";
|
|
17
|
+
import * as types from "@peerbit/document-interface";
|
|
18
|
+
import { BORSH_ENCODING_OPERATION, DeleteOperation, DocumentIndex, Operation, PutOperation } from "./search.js";
|
|
19
|
+
import { MAX_BATCH_SIZE } from "./constants.js";
|
|
21
20
|
const logger = loggerFn({ module: "document" });
|
|
22
21
|
export class OperationError extends Error {
|
|
23
22
|
constructor(message) {
|
|
@@ -31,6 +30,7 @@ let Documents = class Documents extends Program {
|
|
|
31
30
|
_clazz;
|
|
32
31
|
_optionCanPerform;
|
|
33
32
|
_manuallySynced;
|
|
33
|
+
idResolver;
|
|
34
34
|
canOpen;
|
|
35
35
|
constructor(properties) {
|
|
36
36
|
super();
|
|
@@ -52,13 +52,31 @@ let Documents = class Documents extends Program {
|
|
|
52
52
|
}
|
|
53
53
|
this._optionCanPerform = options.canPerform;
|
|
54
54
|
this._manuallySynced = new Set();
|
|
55
|
+
const idProperty = options.index?.idProperty || "id";
|
|
56
|
+
const idResolver = options.id ||
|
|
57
|
+
(typeof idProperty === "string"
|
|
58
|
+
? (obj) => obj[idProperty]
|
|
59
|
+
: (obj) => types.extractFieldValue(obj, idProperty));
|
|
60
|
+
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
|
+
}
|
|
55
73
|
await this._index.open({
|
|
56
74
|
type: this._clazz,
|
|
57
75
|
log: this.log,
|
|
58
76
|
canRead: options?.index?.canRead,
|
|
59
77
|
canSearch: options.index?.canSearch,
|
|
60
|
-
fields:
|
|
61
|
-
indexBy:
|
|
78
|
+
fields: transform,
|
|
79
|
+
indexBy: idProperty,
|
|
62
80
|
sync: async (result) => {
|
|
63
81
|
// here we arrive for all the results we want to persist.
|
|
64
82
|
// we we need to do here is
|
|
@@ -102,20 +120,43 @@ let Documents = class Documents extends Program {
|
|
|
102
120
|
get role() {
|
|
103
121
|
return this.log.role;
|
|
104
122
|
}
|
|
105
|
-
async canAppend(entry) {
|
|
106
|
-
const l0 = await this._canAppend(entry);
|
|
123
|
+
async canAppend(entry, reference) {
|
|
124
|
+
const l0 = await this._canAppend(entry, reference);
|
|
107
125
|
if (!l0) {
|
|
108
126
|
return false;
|
|
109
127
|
}
|
|
110
128
|
try {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
129
|
+
let operation = l0;
|
|
130
|
+
let document = reference?.document;
|
|
131
|
+
if (!document) {
|
|
132
|
+
if (l0 instanceof PutOperation) {
|
|
133
|
+
document = this._index.valueEncoding.decoder(l0.data);
|
|
134
|
+
if (!document) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else if (l0 instanceof DeleteOperation) {
|
|
139
|
+
// Nothing to do here by default
|
|
140
|
+
// checking if the document exists is not necessary
|
|
141
|
+
// since it might already be deleted
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
throw new Error("Unsupported operation");
|
|
145
|
+
}
|
|
114
146
|
}
|
|
115
147
|
if (this._optionCanPerform) {
|
|
116
|
-
if (!(await this._optionCanPerform(
|
|
117
|
-
|
|
118
|
-
|
|
148
|
+
if (!(await this._optionCanPerform(operation instanceof PutOperation
|
|
149
|
+
? {
|
|
150
|
+
type: "put",
|
|
151
|
+
value: document,
|
|
152
|
+
operation,
|
|
153
|
+
entry: entry
|
|
154
|
+
}
|
|
155
|
+
: {
|
|
156
|
+
type: "delete",
|
|
157
|
+
operation,
|
|
158
|
+
entry: entry
|
|
159
|
+
}))) {
|
|
119
160
|
return false;
|
|
120
161
|
}
|
|
121
162
|
}
|
|
@@ -129,7 +170,7 @@ let Documents = class Documents extends Program {
|
|
|
129
170
|
}
|
|
130
171
|
return true;
|
|
131
172
|
}
|
|
132
|
-
async _canAppend(entry) {
|
|
173
|
+
async _canAppend(entry, reference) {
|
|
133
174
|
const resolve = async (history) => {
|
|
134
175
|
return typeof history === "string"
|
|
135
176
|
? this.log.log.get(history) ||
|
|
@@ -155,16 +196,19 @@ let Documents = class Documents extends Program {
|
|
|
155
196
|
encoding: this.log.log.encoding,
|
|
156
197
|
keychain: this.node.services.keychain
|
|
157
198
|
});
|
|
158
|
-
const operation = entry._payload instanceof DecryptedThing
|
|
199
|
+
const operation = reference?.operation || entry._payload instanceof DecryptedThing
|
|
159
200
|
? entry.payload.getValue(entry.encoding)
|
|
160
201
|
: await entry.getPayloadValue();
|
|
161
202
|
if (operation instanceof PutOperation) {
|
|
162
203
|
// check nexts
|
|
163
204
|
const putOperation = operation;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
const
|
|
167
|
-
|
|
205
|
+
let value = reference?.document ??
|
|
206
|
+
this.index.valueEncoding.decoder(putOperation.data);
|
|
207
|
+
const keyValue = this.idResolver(value);
|
|
208
|
+
const key = types.toId(keyValue);
|
|
209
|
+
const existingDocument = await this.index.engine.get(key);
|
|
210
|
+
if (existingDocument && existingDocument.context.head !== entry.hash) {
|
|
211
|
+
// econd condition can false if we reset the operation log, while not resetting the index. For example when doing .recover
|
|
168
212
|
if (this.immutable) {
|
|
169
213
|
//Key already exist and this instance Documents can note overrite/edit'
|
|
170
214
|
return false;
|
|
@@ -177,7 +221,8 @@ let Documents = class Documents extends Program {
|
|
|
177
221
|
logger.error("Failed to find Document from head");
|
|
178
222
|
return false;
|
|
179
223
|
}
|
|
180
|
-
|
|
224
|
+
const referenceHistoryCorrectly = await pointsToHistory(doc);
|
|
225
|
+
return referenceHistoryCorrectly ? putOperation : false;
|
|
181
226
|
}
|
|
182
227
|
else {
|
|
183
228
|
if (entry.next.length !== 0) {
|
|
@@ -189,18 +234,26 @@ let Documents = class Documents extends Program {
|
|
|
189
234
|
if (entry.next.length !== 1) {
|
|
190
235
|
return false;
|
|
191
236
|
}
|
|
192
|
-
const existingDocument = this._index.
|
|
237
|
+
const existingDocument = await this._index.engine.get(operation.key);
|
|
193
238
|
if (!existingDocument) {
|
|
194
239
|
// already deleted
|
|
195
|
-
return
|
|
240
|
+
return operation; // assume ok
|
|
196
241
|
}
|
|
197
242
|
let doc = await this.log.log.get(existingDocument.context.head);
|
|
198
243
|
if (!doc) {
|
|
199
244
|
logger.error("Failed to find Document from head");
|
|
200
245
|
return false;
|
|
201
246
|
}
|
|
202
|
-
|
|
247
|
+
if (await pointsToHistory(doc)) {
|
|
248
|
+
// references the existing document
|
|
249
|
+
return operation;
|
|
250
|
+
}
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
throw new Error("Unsupported operation");
|
|
203
255
|
}
|
|
256
|
+
return operation;
|
|
204
257
|
}
|
|
205
258
|
catch (error) {
|
|
206
259
|
if (error instanceof AccessError) {
|
|
@@ -212,36 +265,43 @@ let Documents = class Documents extends Program {
|
|
|
212
265
|
}
|
|
213
266
|
throw error;
|
|
214
267
|
}
|
|
215
|
-
return true;
|
|
216
268
|
}
|
|
217
269
|
async put(doc, options) {
|
|
218
|
-
const
|
|
219
|
-
|
|
270
|
+
const keyValue = this.idResolver(doc);
|
|
271
|
+
// type check the key
|
|
272
|
+
types.checkId(keyValue);
|
|
220
273
|
const ser = serialize(doc);
|
|
221
|
-
if (ser.length >
|
|
222
|
-
throw new Error(`Document is too large (${ser.length * 1e-6}) mb). Needs to be less than ${
|
|
274
|
+
if (ser.length > MAX_BATCH_SIZE) {
|
|
275
|
+
throw new Error(`Document is too large (${ser.length * 1e-6}) mb). Needs to be less than ${MAX_BATCH_SIZE * 1e-6} mb`);
|
|
223
276
|
}
|
|
224
277
|
const existingDocument = options?.unique
|
|
225
278
|
? undefined
|
|
226
|
-
: (await this._index.getDetailed(
|
|
279
|
+
: (await this._index.getDetailed(keyValue, {
|
|
227
280
|
local: true,
|
|
228
281
|
remote: { sync: true } // only query remote if we know they exist
|
|
229
282
|
}))?.[0]?.results[0];
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
}), {
|
|
283
|
+
const operation = new PutOperation({
|
|
284
|
+
data: ser
|
|
285
|
+
});
|
|
286
|
+
const appended = await this.log.append(operation, {
|
|
235
287
|
...options,
|
|
236
288
|
meta: {
|
|
237
289
|
next: existingDocument
|
|
238
290
|
? [await this._resolveEntry(existingDocument.context.head)]
|
|
239
291
|
: [],
|
|
240
292
|
...options?.meta
|
|
241
|
-
}
|
|
293
|
+
},
|
|
294
|
+
canAppend: (entry) => {
|
|
295
|
+
return this.canAppend(entry, { document: doc, operation });
|
|
296
|
+
},
|
|
297
|
+
onChange: (change) => {
|
|
298
|
+
return this.handleChanges(change, { document: doc, operation });
|
|
299
|
+
}
|
|
242
300
|
});
|
|
301
|
+
return appended;
|
|
243
302
|
}
|
|
244
|
-
async del(
|
|
303
|
+
async del(id, options) {
|
|
304
|
+
const key = types.toId(id);
|
|
245
305
|
const existing = (await this._index.getDetailed(key, {
|
|
246
306
|
local: true,
|
|
247
307
|
remote: { sync: true }
|
|
@@ -250,7 +310,7 @@ let Documents = class Documents extends Program {
|
|
|
250
310
|
throw new Error(`No entry with key '${key}' in the database`);
|
|
251
311
|
}
|
|
252
312
|
return this.log.append(new DeleteOperation({
|
|
253
|
-
key
|
|
313
|
+
key
|
|
254
314
|
}), {
|
|
255
315
|
...options,
|
|
256
316
|
meta: {
|
|
@@ -261,50 +321,40 @@ let Documents = class Documents extends Program {
|
|
|
261
321
|
} //
|
|
262
322
|
);
|
|
263
323
|
}
|
|
264
|
-
async handleChanges(change) {
|
|
324
|
+
async handleChanges(change, reference) {
|
|
325
|
+
const isAppendOperation = change?.added.length === 1 ? !!change.added[0] : false;
|
|
265
326
|
const removed = [...(change.removed || [])];
|
|
266
327
|
const removedSet = new Map();
|
|
267
328
|
for (const r of removed) {
|
|
268
329
|
removedSet.set(r.hash, r);
|
|
269
330
|
}
|
|
270
|
-
const
|
|
331
|
+
const sortedEntries = [...change.added, ...(removed || [])]
|
|
271
332
|
.sort(this.log.log.sortFn)
|
|
272
333
|
.reverse(); // sort so we get newest to oldest
|
|
273
334
|
// There might be a case where change.added and change.removed contains the same document id. Usaully because you use the "trim" option
|
|
274
335
|
// in combination with inserting the same document. To mitigate this, we loop through the changes and modify the behaviour for this
|
|
275
|
-
let visited = new Map();
|
|
276
|
-
for (const item of entries) {
|
|
277
|
-
const payload = item._payload instanceof DecryptedThing
|
|
278
|
-
? item.payload.getValue(item.encoding)
|
|
279
|
-
: await item.getPayloadValue();
|
|
280
|
-
let itemKey;
|
|
281
|
-
if (payload instanceof PutOperation ||
|
|
282
|
-
payload instanceof DeleteOperation) {
|
|
283
|
-
itemKey = payload.key;
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
throw new Error("Unsupported operation type");
|
|
287
|
-
}
|
|
288
|
-
let arr = visited.get(itemKey);
|
|
289
|
-
if (!arr) {
|
|
290
|
-
arr = [];
|
|
291
|
-
visited.set(itemKey, arr);
|
|
292
|
-
}
|
|
293
|
-
arr.push(item);
|
|
294
|
-
}
|
|
295
336
|
let documentsChanged = {
|
|
296
337
|
added: [],
|
|
297
338
|
removed: []
|
|
298
339
|
};
|
|
299
|
-
|
|
340
|
+
let modified = new Set();
|
|
341
|
+
for (const item of sortedEntries) {
|
|
300
342
|
try {
|
|
301
|
-
const item = entries[0];
|
|
302
343
|
const payload = item._payload instanceof DecryptedThing
|
|
303
344
|
? item.payload.getValue(item.encoding)
|
|
304
345
|
: await item.getPayloadValue();
|
|
305
346
|
if (payload instanceof PutOperation && !removedSet.has(item.hash)) {
|
|
306
|
-
|
|
307
|
-
|
|
347
|
+
let value = (isAppendOperation &&
|
|
348
|
+
reference?.operation === payload &&
|
|
349
|
+
reference?.document) ||
|
|
350
|
+
this.index.valueEncoding.decoder(payload.data);
|
|
351
|
+
// get index key from value
|
|
352
|
+
const keyObject = this.idResolver(value);
|
|
353
|
+
const key = types.toId(keyObject);
|
|
354
|
+
// document is already updated with more recent entry
|
|
355
|
+
if (modified.has(key.primitive)) {
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
308
358
|
// Program specific
|
|
309
359
|
if (value instanceof Program) {
|
|
310
360
|
// if replicator, then open
|
|
@@ -319,37 +369,37 @@ let Documents = class Documents extends Program {
|
|
|
319
369
|
}
|
|
320
370
|
}
|
|
321
371
|
documentsChanged.added.push(value);
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
item.meta.clock.timestamp.wallTime,
|
|
325
|
-
modified: item.meta.clock.timestamp.wallTime,
|
|
326
|
-
head: item.hash,
|
|
327
|
-
gid: item.gid
|
|
328
|
-
});
|
|
329
|
-
const valueToIndex = this._index.toIndex(value, context);
|
|
330
|
-
this._index.index.set(key, {
|
|
331
|
-
key: payload.key,
|
|
332
|
-
value: isPromise(valueToIndex) ? await valueToIndex : valueToIndex,
|
|
333
|
-
context,
|
|
334
|
-
reference: valueToIndex === value || value instanceof Program
|
|
335
|
-
? { value, last: payload }
|
|
336
|
-
: undefined
|
|
337
|
-
});
|
|
372
|
+
this._index.put(value, item, key);
|
|
373
|
+
modified.add(key.primitive);
|
|
338
374
|
}
|
|
339
375
|
else if ((payload instanceof DeleteOperation && !removedSet.has(item.hash)) ||
|
|
340
376
|
payload instanceof PutOperation ||
|
|
341
377
|
removedSet.has(item.hash)) {
|
|
342
378
|
this._manuallySynced.delete(item.gid);
|
|
343
|
-
const key = payload.key;
|
|
344
|
-
if (!this.index.index.has(key)) {
|
|
345
|
-
continue;
|
|
346
|
-
}
|
|
347
379
|
let value;
|
|
380
|
+
let key;
|
|
348
381
|
if (payload instanceof PutOperation) {
|
|
349
|
-
value = this.
|
|
382
|
+
value = this.index.valueEncoding.decoder(payload.data);
|
|
383
|
+
key = types.toIdeable(this.idResolver(value));
|
|
384
|
+
// document is already updated with more recent entry
|
|
385
|
+
if (modified.has(key)) {
|
|
386
|
+
continue;
|
|
387
|
+
}
|
|
350
388
|
}
|
|
351
389
|
else if (payload instanceof DeleteOperation) {
|
|
352
|
-
|
|
390
|
+
key = payload.key.primitive;
|
|
391
|
+
// document is already updated with more recent entry
|
|
392
|
+
if (modified.has(key)) {
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
const document = await this._index.get(key, {
|
|
396
|
+
local: true,
|
|
397
|
+
remote: false
|
|
398
|
+
});
|
|
399
|
+
if (!document) {
|
|
400
|
+
continue;
|
|
401
|
+
}
|
|
402
|
+
value = document;
|
|
353
403
|
}
|
|
354
404
|
else {
|
|
355
405
|
throw new Error("Unexpected");
|
|
@@ -359,7 +409,8 @@ let Documents = class Documents extends Program {
|
|
|
359
409
|
await value.drop(this);
|
|
360
410
|
}
|
|
361
411
|
// update index
|
|
362
|
-
this._index.
|
|
412
|
+
this._index.del(key);
|
|
413
|
+
modified.add(key);
|
|
363
414
|
}
|
|
364
415
|
else {
|
|
365
416
|
// Unknown operation
|
|
@@ -374,22 +425,6 @@ let Documents = class Documents extends Program {
|
|
|
374
425
|
}
|
|
375
426
|
this.events.dispatchEvent(new CustomEvent("change", { detail: documentsChanged }));
|
|
376
427
|
}
|
|
377
|
-
async getDocumentFromEntry(entry) {
|
|
378
|
-
const payloadValue = await entry.getPayloadValue();
|
|
379
|
-
if (payloadValue instanceof PutOperation) {
|
|
380
|
-
return payloadValue.getValue(this.index.valueEncoding);
|
|
381
|
-
}
|
|
382
|
-
throw new Error("Unexpected");
|
|
383
|
-
}
|
|
384
|
-
deserializeOrPass(value) {
|
|
385
|
-
if (value._value) {
|
|
386
|
-
return value._value;
|
|
387
|
-
}
|
|
388
|
-
else {
|
|
389
|
-
value._value = deserialize(value.data, this.index.type);
|
|
390
|
-
return value._value;
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
428
|
};
|
|
394
429
|
__decorate([
|
|
395
430
|
field({ type: SharedLog }),
|
|
@@ -408,7 +443,4 @@ Documents = __decorate([
|
|
|
408
443
|
__metadata("design:paramtypes", [Object])
|
|
409
444
|
], Documents);
|
|
410
445
|
export { Documents };
|
|
411
|
-
|
|
412
|
-
return Boolean(value && typeof value.then === "function");
|
|
413
|
-
}
|
|
414
|
-
//# sourceMappingURL=document-store.js.map
|
|
446
|
+
//# sourceMappingURL=program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { type AbstractType } from "@dao-xyz/borsh";
|
|
2
|
+
import { type Encoding, Entry } from "@peerbit/log";
|
|
3
|
+
import { Program } from "@peerbit/program";
|
|
4
|
+
import * as types from "@peerbit/document-interface";
|
|
5
|
+
import { RPC, type RPCRequestAllOptions } from "@peerbit/rpc";
|
|
6
|
+
import { PublicSignKey } from "@peerbit/crypto";
|
|
7
|
+
import { SharedLog } from "@peerbit/shared-log";
|
|
8
|
+
export declare class Operation {
|
|
9
|
+
}
|
|
10
|
+
export declare const BORSH_ENCODING_OPERATION: Encoding<Operation>;
|
|
11
|
+
/**
|
|
12
|
+
* Put a complete document at a key
|
|
13
|
+
*/
|
|
14
|
+
export declare class PutOperation extends Operation {
|
|
15
|
+
data: Uint8Array;
|
|
16
|
+
constructor(props?: {
|
|
17
|
+
data: Uint8Array;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Delete a document at a key
|
|
22
|
+
*/
|
|
23
|
+
export declare class DeleteOperation extends Operation {
|
|
24
|
+
key: types.IdKey;
|
|
25
|
+
constructor(props: {
|
|
26
|
+
key: types.IdKey;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export type RemoteQueryOptions<R> = RPCRequestAllOptions<R> & {
|
|
30
|
+
sync?: boolean;
|
|
31
|
+
minAge?: number;
|
|
32
|
+
throwOnMissing?: boolean;
|
|
33
|
+
};
|
|
34
|
+
export type QueryOptions<R> = {
|
|
35
|
+
remote?: boolean | RemoteQueryOptions<types.AbstractSearchResult<R>>;
|
|
36
|
+
local?: boolean;
|
|
37
|
+
};
|
|
38
|
+
export type SearchOptions<R> = {
|
|
39
|
+
size?: number;
|
|
40
|
+
} & QueryOptions<R>;
|
|
41
|
+
export type IndexableFields<T> = (obj: T, context: types.Context) => Record<string, any> | Promise<Record<string, any>>;
|
|
42
|
+
export type ResultsIterator<T> = {
|
|
43
|
+
close: () => Promise<void>;
|
|
44
|
+
next: (number: number) => Promise<T[]>;
|
|
45
|
+
done: () => boolean;
|
|
46
|
+
};
|
|
47
|
+
type QueryDetailedOptions<T> = QueryOptions<T> & {
|
|
48
|
+
onResponse?: (response: types.AbstractSearchResult<T>, from: PublicSignKey) => void | Promise<void>;
|
|
49
|
+
};
|
|
50
|
+
export type CanSearch = (request: types.SearchRequest | types.CollectNextRequest, from: PublicSignKey) => Promise<boolean> | boolean;
|
|
51
|
+
export type CanRead<T> = (result: T, from: PublicSignKey) => Promise<boolean> | boolean;
|
|
52
|
+
export type OpenOptions<T> = {
|
|
53
|
+
type: AbstractType<T>;
|
|
54
|
+
dbType: AbstractType<types.IDocumentStore<T>>;
|
|
55
|
+
log: SharedLog<Operation>;
|
|
56
|
+
canRead?: CanRead<T>;
|
|
57
|
+
canSearch?: CanSearch;
|
|
58
|
+
engine?: types.IndexEngine;
|
|
59
|
+
sync: (result: types.Results<T>) => Promise<void>;
|
|
60
|
+
indexBy?: string | string[];
|
|
61
|
+
fields: IndexableFields<T>;
|
|
62
|
+
};
|
|
63
|
+
export declare class DocumentIndex<T> extends Program<OpenOptions<T>> {
|
|
64
|
+
_query: RPC<types.AbstractSearchRequest, types.AbstractSearchResult<T>>;
|
|
65
|
+
engine: types.IndexEngine;
|
|
66
|
+
type: AbstractType<T>;
|
|
67
|
+
dbType: AbstractType<types.IDocumentStore<T>>;
|
|
68
|
+
private indexBy;
|
|
69
|
+
private indexByArr;
|
|
70
|
+
private indexByResolver;
|
|
71
|
+
fields: IndexableFields<T>;
|
|
72
|
+
private _valueEncoding;
|
|
73
|
+
private _sync;
|
|
74
|
+
private _log;
|
|
75
|
+
private _resolverProgramCache?;
|
|
76
|
+
private _resolverCache;
|
|
77
|
+
private _isProgramValues;
|
|
78
|
+
constructor(properties?: {
|
|
79
|
+
query?: RPC<types.AbstractSearchRequest, types.AbstractSearchResult<T>>;
|
|
80
|
+
});
|
|
81
|
+
get valueEncoding(): Encoding<T>;
|
|
82
|
+
open(properties: OpenOptions<T>): Promise<void>;
|
|
83
|
+
close(from?: Program): Promise<boolean>;
|
|
84
|
+
drop(from?: Program): Promise<boolean>;
|
|
85
|
+
get(key: types.Ideable | types.IdKey, options?: QueryOptions<T>): Promise<T | undefined>;
|
|
86
|
+
put(value: T, entry: Entry<Operation>, id: types.IdKey): Promise<void>;
|
|
87
|
+
del(key: types.IdPrimitive): void | Promise<void>;
|
|
88
|
+
getDetailed(key: types.IdKey | types.IdPrimitive, options?: QueryOptions<T>): Promise<types.Results<T>[] | undefined>;
|
|
89
|
+
getSize(): Promise<number> | number;
|
|
90
|
+
private resolveDocument;
|
|
91
|
+
processQuery(query: types.SearchRequest | types.CollectNextRequest, from: PublicSignKey, options?: {
|
|
92
|
+
canRead?: CanRead<T>;
|
|
93
|
+
}): Promise<types.Results<T>>;
|
|
94
|
+
processCloseIteratorRequest(query: types.CloseIteratorRequest, publicKey: PublicSignKey): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Query and retrieve results with most details
|
|
97
|
+
* @param queryRequest
|
|
98
|
+
* @param options
|
|
99
|
+
* @returns
|
|
100
|
+
*/
|
|
101
|
+
queryDetailed(queryRequest: types.SearchRequest, options?: QueryDetailedOptions<T>): Promise<types.Results<T>[]>;
|
|
102
|
+
/**
|
|
103
|
+
* Query and retrieve results
|
|
104
|
+
* @param queryRequest
|
|
105
|
+
* @param options
|
|
106
|
+
* @returns
|
|
107
|
+
*/
|
|
108
|
+
search(queryRequest: types.SearchRequest, options?: SearchOptions<T>): Promise<T[]>;
|
|
109
|
+
/**
|
|
110
|
+
* Query and retrieve documents in a iterator
|
|
111
|
+
* @param queryRequest
|
|
112
|
+
* @param options
|
|
113
|
+
* @returns
|
|
114
|
+
*/
|
|
115
|
+
iterate(queryRequest: types.SearchRequest, options?: QueryOptions<T>): ResultsIterator<T>;
|
|
116
|
+
}
|
|
117
|
+
export {};
|
|
118
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAkB,KAAK,QAAQ,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAC;AACrD,OAAO,EACN,GAAG,EAIH,KAAK,oBAAoB,EACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAoB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAiBhD,qBACa,SAAS;CAAc;AAEpC,eAAO,MAAM,wBAAwB,qBAA4B,CAAC;AAElE;;GAEG;AAEH,qBACa,YAAa,SAAQ,SAAS;IAE1C,IAAI,EAAE,UAAU,CAAC;gBAIL,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAkB;CAOxD;AAgBD;;GAEG;AACH,qBACa,eAAgB,SAAQ,SAAS;IAE7C,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;gBAEL,KAAK,EAAE;QAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAA;KAAE;CAIvC;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC7B,MAAM,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AACnE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAChC,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,KAAK,CAAC,OAAO,KAClB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAExD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAChC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,EAAE,MAAM,OAAO,CAAC;CACpB,CAAC;AAEF,KAAK,oBAAoB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IAChD,UAAU,CAAC,EAAE,CACZ,QAAQ,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE,aAAa,KACf,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B,CAAC;AAuDF,MAAM,MAAM,SAAS,GAAG,CACvB,OAAO,EAAE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,kBAAkB,EACvD,IAAI,EAAE,aAAa,KACf,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAEhC,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CACxB,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,aAAa,KACf,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAEhC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC5B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IAC3B,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;CAC3B,CAAC;AAEF,qBACa,aAAa,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE5D,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC;IAE1B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAG9C,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,eAAe,CAAoC;IAG3D,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAE3B,OAAO,CAAC,cAAc,CAAc;IAEpC,OAAO,CAAC,KAAK,CAA8C;IAE3D,OAAO,CAAC,IAAI,CAAuB;IAEnC,OAAO,CAAC,qBAAqB,CAAC,CAAmC;IACjE,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,gBAAgB,CAAU;gBACtB,UAAU,CAAC,EAAE;QACxB,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;KACxE;IAKD,IAAI,aAAa,gBAEhB;IAEK,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IAsF/B,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAQvC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ/B,GAAG,CACf,GAAG,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,EAChC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IASZ,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK;IA8B5D,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW;IAUpB,WAAW,CACvB,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,EACpC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;IAgD1C,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM;YAIrB,eAAe;IAgCvB,YAAY,CACjB,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,kBAAkB,EACrD,IAAI,EAAE,aAAa,EACnB,OAAO,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;KACrB,GACC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAoCtB,2BAA2B,CAChC,KAAK,EAAE,KAAK,CAAC,oBAAoB,EACjC,SAAS,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;OAKG;IACU,aAAa,CACzB,YAAY,EAAE,KAAK,CAAC,aAAa,EACjC,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IA+G9B;;;;;OAKG;IACU,MAAM,CAClB,YAAY,EAAE,KAAK,CAAC,aAAa,EACjC,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,EAAE,CAAC;IA2Bf;;;;;OAKG;IACI,OAAO,CACb,YAAY,EAAE,KAAK,CAAC,aAAa,EACjC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACvB,eAAe,CAAC,CAAC,CAAC;CA6TrB"}
|