@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.
Files changed (37) hide show
  1. package/dist/benchmark/index.js +13 -14
  2. package/dist/benchmark/index.js.map +1 -1
  3. package/dist/benchmark/memory/index.d.ts +2 -0
  4. package/dist/benchmark/memory/index.d.ts.map +1 -0
  5. package/dist/benchmark/memory/index.js +122 -0
  6. package/dist/benchmark/memory/index.js.map +1 -0
  7. package/dist/benchmark/memory/insert.d.ts +2 -0
  8. package/dist/benchmark/memory/insert.d.ts.map +1 -0
  9. package/dist/benchmark/memory/insert.js +133 -0
  10. package/dist/benchmark/memory/insert.js.map +1 -0
  11. package/dist/benchmark/memory/utils.d.ts +13 -0
  12. package/dist/benchmark/memory/utils.d.ts.map +1 -0
  13. package/dist/benchmark/memory/utils.js +2 -0
  14. package/dist/benchmark/memory/utils.js.map +1 -0
  15. package/dist/benchmark/replication.js +27 -29
  16. package/dist/benchmark/replication.js.map +1 -1
  17. package/dist/src/borsh.d.ts +2 -0
  18. package/dist/src/borsh.d.ts.map +1 -0
  19. package/dist/src/borsh.js +16 -0
  20. package/dist/src/borsh.js.map +1 -0
  21. package/dist/src/index.d.ts +0 -1
  22. package/dist/src/index.d.ts.map +1 -1
  23. package/dist/src/index.js +0 -1
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/program.d.ts +16 -19
  26. package/dist/src/program.d.ts.map +1 -1
  27. package/dist/src/program.js +57 -68
  28. package/dist/src/program.js.map +1 -1
  29. package/dist/src/search.d.ts +46 -32
  30. package/dist/src/search.d.ts.map +1 -1
  31. package/dist/src/search.js +236 -133
  32. package/dist/src/search.js.map +1 -1
  33. package/package.json +16 -11
  34. package/src/borsh.ts +19 -0
  35. package/src/index.ts +0 -1
  36. package/src/program.ts +118 -118
  37. package/src/search.ts +438 -218
@@ -1,10 +1,9 @@
1
1
  import { type AbstractType } from "@dao-xyz/borsh";
2
- import { type Change, Entry, type TrimOptions } from "@peerbit/log";
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 RoleOptions, Observer, Replicator, SharedLog, type SharedLogOptions, type SharedAppendOptions } from "@peerbit/shared-log";
5
- import * as types from "@peerbit/document-interface";
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) => types.IdPrimitive;
35
+ id?: (obj: any) => indexerTypes.IdPrimitive;
37
36
  index?: {
38
- idProperty?: string | string[];
39
37
  canSearch?: CanSearch;
40
38
  canRead?: CanRead<T>;
41
- fields?: IndexableFields<T>;
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: Entry<Operation>[];
75
+ removed: ShallowOrFullEntry<Operation>[];
80
76
  }>;
81
- del(id: types.Ideable, options?: SharedAppendOptions<Operation>): Promise<{
77
+ del(id: indexerTypes.Ideable, options?: SharedAppendOptions<Operation>): Promise<{
82
78
  entry: Entry<Operation>;
83
- removed: Entry<Operation>[];
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":"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"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
@@ -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 { Entry, EntryType } from "@peerbit/log";
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 { CustomEvent } from "@libp2p/interface";
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";
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) => types.extractFieldValue(obj, idProperty));
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
- fields: transform,
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
- role: options?.role,
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 = types.toId(keyValue);
209
- const existingDocument = await this.index.engine.get(key);
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._index.engine.get(operation.key);
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
- types.checkId(keyValue);
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 = types.toId(id);
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 = [...change.added, ...(removed || [])]
332
- .sort(this.log.log.sortFn)
333
- .reverse(); // sort so we get newest to oldest
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 = types.toId(keyObject);
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.role instanceof Replicator &&
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 = types.toIdeable(this.idResolver(value));
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.primitive;
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) {
@@ -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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"}
@@ -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: types.IdKey;
25
+ key: indexerTypes.IdKey;
25
26
  constructor(props: {
26
- key: types.IdKey;
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
- 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> = {
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: types.SearchRequest | types.CollectNextRequest, from: PublicSignKey) => Promise<boolean> | boolean;
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 OpenOptions<T> = {
53
- type: AbstractType<T>;
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
- fields: IndexableFields<T>;
70
+ transform?: TransformOptions<T, I>;
62
71
  };
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>;
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
- fields: IndexableFields<T>;
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<types.AbstractSearchRequest, types.AbstractSearchResult<T>>;
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: 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>;
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: types.SearchRequest | types.CollectNextRequest, from: PublicSignKey, options?: {
104
+ processQuery(query: indexerTypes.SearchRequest | indexerTypes.CollectNextRequest, from: PublicSignKey, isLocal: boolean, options?: {
92
105
  canRead?: CanRead<T>;
93
106
  }): Promise<types.Results<T>>;
94
- processCloseIteratorRequest(query: types.CloseIteratorRequest, publicKey: PublicSignKey): Promise<void>;
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: types.SearchRequest, options?: QueryDetailedOptions<T>): Promise<types.Results<T>[]>;
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: types.SearchRequest, options?: SearchOptions<T>): Promise<T[]>;
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: types.SearchRequest, options?: QueryOptions<T>): ResultsIterator<T>;
129
+ iterate(queryRequest: indexerTypes.SearchRequest, options?: QueryOptions<T>): ResultsIterator<T>;
116
130
  }
117
131
  export {};
118
132
  //# sourceMappingURL=search.d.ts.map