@peerbit/indexer-simple 1.0.4-88f45c3 → 1.0.4-a3e5123

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.
@@ -1,32 +1,28 @@
1
1
  import * as types from "@peerbit/indexer-interface";
2
2
  export declare class HashmapIndex<T extends Record<string, any>, NestedType = any> implements types.Index<T, NestedType> {
3
3
  private _index;
4
- private _resultsCollectQueue;
5
4
  private indexByArr;
6
5
  private properties;
7
6
  init(properties: types.IndexEngineInitProperties<T, NestedType>): this;
8
7
  get(id: types.IdKey): Promise<types.IndexedResult<T> | undefined>;
9
8
  put(value: T, id?: types.IdKey): void;
10
- del(query: types.DeleteRequest): Promise<types.IdKey[]>;
9
+ del(query: types.DeleteOptions): Promise<types.IdKey[]>;
11
10
  getSize(): number | Promise<number>;
12
- iterator(): IterableIterator<[string | number | bigint, types.IndexedValue<T>]>;
11
+ iterator(): MapIterator<[string | number | bigint, types.IndexedValue<T>]>;
13
12
  start(): void | Promise<void>;
14
13
  stop(): void | Promise<void>;
15
14
  drop(): void;
16
- sum(query: types.SumRequest): Promise<number | bigint>;
17
- count(query: types.CountRequest): Promise<number>;
15
+ sum(query: types.SumOptions): Promise<number | bigint>;
16
+ count(query: types.CountOptions): Promise<number>;
18
17
  private queryAll;
19
- query(query: types.SearchRequest, properties: {
18
+ iterate<S extends types.Shape | undefined>(query: types.IterateOptions, properties: {
19
+ shape?: S;
20
20
  reference?: boolean;
21
- }): Promise<types.IndexedResults<T>>;
22
- next(query: types.CollectNextRequest): Promise<types.IndexedResults<T>>;
23
- close(query: types.CloseIteratorRequest): void;
21
+ }): types.IndexIterator<T, S>;
24
22
  private handleFieldQuery;
25
23
  private handleQueryObject;
26
24
  private handleStringMatch;
27
25
  private _queryDocuments;
28
- getPending(cursorId: string): number | undefined;
29
- get cursorCount(): number;
30
26
  }
31
27
  export declare class HashmapIndices implements types.Indices {
32
28
  private scopes;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AAqEpD,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,GAAG,CACxE,YAAW,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;IAErC,OAAO,CAAC,MAAM,CAAuD;IACrE,OAAO,CAAC,oBAAoB,CAGzB;IAEH,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,UAAU,CAAiD;IAEnE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,UAAU,CAAC;IAuBzD,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAWvE,GAAG,CACF,KAAK,EAAE,CAAC,EACR,EAAE,cAA8D,GAC9D,IAAI;IAID,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAU7D,OAAO,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAInC,QAAQ;IAKR,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5B,IAAI;IAgBE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAoBtD,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;YAIzC,QAAQ;IAwChB,KAAK,CACV,KAAK,EAAE,KAAK,CAAC,aAAa,EAC1B,UAAU,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GACjC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAqC7B,IAAI,CACT,KAAK,EAAE,KAAK,CAAC,kBAAkB,GAC7B,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IA4BnC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,oBAAoB,GAAG,IAAI;YAIhC,gBAAgB;YA0FhB,iBAAiB;IAwD/B,OAAO,CAAC,iBAAiB;YAmBX,eAAe;IAa7B,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhD,IAAI,WAAW,IAAI,MAAM,CAExB;CACD;AAED,qBAAa,cAAe,YAAW,KAAK,CAAC,OAAO;IACnD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,OAAO,CAAwD;IACvE,OAAO,CAAC,MAAM,CAAU;;IAMlB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,EACnD,UAAU,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,GAAG,CAAC;IAmB9C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;IAY3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAW3B;AAED,QAAA,MAAM,MAAM,sBAA6B,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AAmCpD,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,GAAG,CACxE,YAAW,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;IAErC,OAAO,CAAC,MAAM,CAAwD;IAEtE,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAkD;IAEpE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,UAAU,CAAC;IAsBzD,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAWvE,GAAG,CACF,KAAK,EAAE,CAAC,EACR,EAAE,cAA8D,GAC9D,IAAI;IAID,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAU7D,OAAO,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAInC,QAAQ;IAKR,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5B,IAAI;IAeE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAoBtD,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;YAIzC,QAAQ;IAyCtB,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,GAAG,SAAS,EACxC,KAAK,EAAE,KAAK,CAAC,cAAc,EAC3B,UAAU,EAAE;QAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5C,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;YAoFd,gBAAgB;YAyFhB,iBAAiB;IAwD/B,OAAO,CAAC,iBAAiB;YAmBX,eAAe;CAY7B;AAED,qBAAa,cAAe,YAAW,KAAK,CAAC,OAAO;IACnD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,OAAO,CAAwD;IACvE,OAAO,CAAC,MAAM,CAAU;;IAMlB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,EACnD,UAAU,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,GAAG,CAAC;IAmB9C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;IAY3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAW3B;AAED,QAAA,MAAM,MAAM,sBAA6B,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { deserialize, serialize } from "@dao-xyz/borsh";
2
- import { Cache } from "@peerbit/cache";
3
2
  import * as types from "@peerbit/indexer-interface";
4
3
  import { logger as loggerFn } from "@peerbit/logger";
5
4
  import { equals } from "uint8arrays";
@@ -20,53 +19,18 @@ const getBatchFromResults = (results, wantedSize) => {
20
19
  results.splice(0, batch.length);
21
20
  return batch;
22
21
  };
23
- /* const resolveNestedAliasesRecursively = (request: types.SearchRequest) => {
24
- const map = new Map();
25
- for (const query of request.query) {
26
- _resolveNestedAliasesRecursively(query, map);
27
- }
28
- return map;
29
- }
30
- */
31
22
  const cloneResults = (indexed, schema) => {
32
23
  return indexed.map((x) => {
33
24
  return { id: x.id, value: deserialize(serialize(x.value), schema) };
34
25
  });
35
26
  };
36
- /*
37
- const _resolveNestedAliasesRecursively = (query: types.Query, aliases: Map<string, string>) => {
38
-
39
- if (query instanceof types.Nested) {
40
- aliases.set(query.id, query.path);
41
- for (const subQuery of query.query) {
42
- _resolveNestedAliasesRecursively(subQuery, aliases);
43
- }
44
- }
45
- else if (query instanceof types.And) {
46
- for (const subQuery of query.and) {
47
- _resolveNestedAliasesRecursively(subQuery, aliases);
48
- }
49
- }
50
- else if (query instanceof types.Or) {
51
- for (const subQuery of query.or) {
52
- _resolveNestedAliasesRecursively(subQuery, aliases);
53
- }
54
- }
55
- else if (query instanceof types.Not) {
56
- _resolveNestedAliasesRecursively(query.not, aliases);
57
- }
58
-
59
- }
60
- */
61
27
  export class HashmapIndex {
62
28
  _index;
63
- _resultsCollectQueue;
64
29
  indexByArr;
65
30
  properties;
66
31
  init(properties) {
67
32
  this.properties = properties;
68
33
  this._index = new Map();
69
- this._resultsCollectQueue = new Cache({ max: 10000 }); // TODO choose limit better
70
34
  if (properties.indexBy) {
71
35
  this.indexByArr = Array.isArray(properties.indexBy)
72
36
  ? properties.indexBy
@@ -113,12 +77,9 @@ export class HashmapIndex {
113
77
  start() {
114
78
  // nothing to do
115
79
  }
116
- stop() {
117
- this._resultsCollectQueue.clear();
118
- }
80
+ stop() { }
119
81
  drop() {
120
82
  this._index.clear();
121
- this._resultsCollectQueue.clear();
122
83
  /* for (const subindex of this.subIndices) {
123
84
  subindex[1].clear()
124
85
  } */
@@ -134,7 +95,7 @@ export class HashmapIndex {
134
95
  let sum = undefined;
135
96
  outer: for (const doc of await this.queryAll(query)) {
136
97
  let value = doc.value;
137
- for (const path of query.key) {
98
+ for (const path of Array.isArray(query.key) ? query.key : [query.key]) {
138
99
  value = value[path];
139
100
  if (!value) {
140
101
  continue outer;
@@ -153,11 +114,12 @@ export class HashmapIndex {
153
114
  return (await this.queryAll(query)).length;
154
115
  }
155
116
  async queryAll(query) {
156
- if (query.query.length === 1 &&
157
- (query.query[0] instanceof types.ByteMatchQuery ||
158
- query.query[0] instanceof types.StringMatch) &&
159
- types.stringArraysEquals(query.query[0].key, this.indexByArr)) {
160
- const firstQuery = query.query[0];
117
+ const queryCoerced = types.toQuery(query?.query);
118
+ if (queryCoerced.length === 1 &&
119
+ (queryCoerced[0] instanceof types.ByteMatchQuery ||
120
+ queryCoerced[0] instanceof types.StringMatch) &&
121
+ types.stringArraysEquals(queryCoerced[0].key, this.indexByArr)) {
122
+ const firstQuery = queryCoerced[0];
161
123
  if (firstQuery instanceof types.ByteMatchQuery) {
162
124
  const doc = this._index.get(types.toId(firstQuery.value).primitive);
163
125
  return doc ? [doc] : [];
@@ -171,7 +133,7 @@ export class HashmapIndex {
171
133
  }
172
134
  // Handle query normally
173
135
  const indexedDocuments = await this._queryDocuments(async (doc) => {
174
- for (const f of query.query) {
136
+ for (const f of queryCoerced) {
175
137
  if (!(await this.handleQueryObject(f, doc.value))) {
176
138
  return false;
177
139
  }
@@ -180,55 +142,68 @@ export class HashmapIndex {
180
142
  });
181
143
  return indexedDocuments;
182
144
  }
183
- async query(query, properties) {
184
- const indexedDocuments = await this.queryAll(query);
185
- if (indexedDocuments.length <= 1) {
186
- return {
187
- kept: 0,
188
- results: indexedDocuments,
189
- };
190
- }
191
- /* const aliases = resolveNestedAliasesRecursively(query) */
192
- // Sort
193
- indexedDocuments.sort((a, b) => types.extractSortCompare(a.value, b.value, query.sort));
194
- const batch = getBatchFromResults(indexedDocuments, query.fetch);
195
- if (indexedDocuments.length > 0) {
196
- this._resultsCollectQueue.add(query.idString, {
197
- arr: indexedDocuments,
198
- reference: properties?.reference,
199
- }); // cache resulst not returned
200
- }
145
+ iterate(query, properties) {
146
+ let done = undefined;
147
+ let queue = undefined;
148
+ const fetch = async (n) => {
149
+ if (!queue && !done) {
150
+ const indexedDocuments = await this.queryAll(query);
151
+ if (indexedDocuments.length > 1) {
152
+ // Sort
153
+ if (query.sort) {
154
+ const sortArr = Array.isArray(query.sort)
155
+ ? query.sort
156
+ : [query.sort];
157
+ sortArr.length > 0 &&
158
+ indexedDocuments.sort((a, b) => types.extractSortCompare(a.value, b.value, sortArr));
159
+ }
160
+ }
161
+ if (indexedDocuments.length > 0) {
162
+ queue = {
163
+ arr: indexedDocuments,
164
+ reference: properties?.reference,
165
+ }; // cache resulst not returned
166
+ done = false;
167
+ }
168
+ else {
169
+ done = true;
170
+ }
171
+ }
172
+ if (queue && queue.arr.length <= n) {
173
+ done = true;
174
+ }
175
+ if (!queue) {
176
+ return [];
177
+ }
178
+ const batch = getBatchFromResults(queue.arr, n);
179
+ return (queue.reference ? batch : cloneResults(batch, this.properties.schema));
180
+ };
201
181
  // TODO dont leak kept if canRead is defined, or return something random
202
- return {
182
+ /* return {
203
183
  kept: indexedDocuments.length,
204
- results: properties?.reference
184
+ results: (properties?.reference
205
185
  ? batch
206
- : cloneResults(batch, this.properties.schema),
207
- };
208
- }
209
- async next(query) {
210
- const results = this._resultsCollectQueue.get(query.idString);
211
- if (!results) {
212
- return {
213
- results: [],
214
- kept: 0,
215
- };
216
- }
217
- const batch = getBatchFromResults(results.arr, query.amount);
218
- if (results.arr.length === 0) {
219
- this._resultsCollectQueue.del(query.idString); // TODO add tests for proper cleanup/timeouts
220
- }
221
- // TODO dont leak kept if canRead is defined, or return something random
186
+ : cloneResults(batch, this.properties.schema)) as any, // TODO fix this type,
187
+ }; */
222
188
  return {
223
- results: results.reference
224
- ? batch
225
- : cloneResults(batch, this.properties.schema),
226
- kept: results.arr.length,
189
+ all: async () => {
190
+ const results = await fetch(Infinity);
191
+ return results;
192
+ },
193
+ next: (n) => fetch(n),
194
+ done: () => done,
195
+ pending: async () => {
196
+ if (done == null) {
197
+ await fetch(0);
198
+ }
199
+ return done ? 0 : (queue?.arr.length ?? 0);
200
+ },
201
+ close: () => {
202
+ done = true;
203
+ queue = undefined;
204
+ },
227
205
  };
228
206
  }
229
- close(query) {
230
- this._resultsCollectQueue.del(query.idString);
231
- }
232
207
  async handleFieldQuery(f, obj, startIndex) {
233
208
  // this clause is needed if we have a field that is of type [][] (we will recursively go through each subarray)
234
209
  if (Array.isArray(obj) ||
@@ -257,7 +232,9 @@ export class HashmapIndex {
257
232
  if (this.properties.nested?.match(obj)) {
258
233
  const queryCloned = f.clone();
259
234
  queryCloned.key.splice(0, i + 1); // remove key path until the document store
260
- const results = await this.properties.nested.query(obj, new types.SearchRequest({ query: [queryCloned] }));
235
+ const results = await this.properties.nested.iterate(obj, {
236
+ query: [queryCloned],
237
+ });
261
238
  return results.length > 0 ? true : false; // TODO return INNER HITS?
262
239
  }
263
240
  }
@@ -383,12 +360,6 @@ export class HashmapIndex {
383
360
  }
384
361
  return results;
385
362
  }
386
- getPending(cursorId) {
387
- return this._resultsCollectQueue.get(cursorId)?.arr.length;
388
- }
389
- get cursorCount() {
390
- return this._resultsCollectQueue.size;
391
- }
392
363
  }
393
364
  export class HashmapIndices {
394
365
  scopes;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/indexer-simple",
3
- "version": "1.0.4-88f45c3",
3
+ "version": "1.0.4-a3e5123",
4
4
  "description": "Simple in memory index for document store",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -58,9 +58,9 @@
58
58
  "author": "dao.xyz",
59
59
  "license": "MIT",
60
60
  "dependencies": {
61
- "@peerbit/indexer-interface": "1.0.3-88f45c3"
61
+ "@peerbit/indexer-interface": "1.0.3-a3e5123"
62
62
  },
63
63
  "devDependencies": {
64
- "@peerbit/indexer-tests": "1.0.4-88f45c3"
64
+ "@peerbit/indexer-tests": "1.0.4-a3e5123"
65
65
  }
66
66
  }
package/src/index.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { deserialize, serialize } from "@dao-xyz/borsh";
2
- import { Cache } from "@peerbit/cache";
3
2
  import * as types from "@peerbit/indexer-interface";
4
3
  import { logger as loggerFn } from "@peerbit/logger";
5
4
  import { equals } from "uint8arrays";
@@ -26,15 +25,6 @@ const getBatchFromResults = <T extends Record<string, any>>(
26
25
  results.splice(0, batch.length);
27
26
  return batch;
28
27
  };
29
-
30
- /* const resolveNestedAliasesRecursively = (request: types.SearchRequest) => {
31
- const map = new Map();
32
- for (const query of request.query) {
33
- _resolveNestedAliasesRecursively(query, map);
34
- }
35
- return map;
36
- }
37
- */
38
28
  const cloneResults = <T>(
39
29
  indexed: types.IndexedValue<T>[],
40
30
  schema: any,
@@ -43,48 +33,18 @@ const cloneResults = <T>(
43
33
  return { id: x.id, value: deserialize(serialize(x.value), schema) };
44
34
  });
45
35
  };
46
- /*
47
- const _resolveNestedAliasesRecursively = (query: types.Query, aliases: Map<string, string>) => {
48
-
49
- if (query instanceof types.Nested) {
50
- aliases.set(query.id, query.path);
51
- for (const subQuery of query.query) {
52
- _resolveNestedAliasesRecursively(subQuery, aliases);
53
- }
54
- }
55
- else if (query instanceof types.And) {
56
- for (const subQuery of query.and) {
57
- _resolveNestedAliasesRecursively(subQuery, aliases);
58
- }
59
- }
60
- else if (query instanceof types.Or) {
61
- for (const subQuery of query.or) {
62
- _resolveNestedAliasesRecursively(subQuery, aliases);
63
- }
64
- }
65
- else if (query instanceof types.Not) {
66
- _resolveNestedAliasesRecursively(query.not, aliases);
67
- }
68
-
69
- }
70
- */
71
36
 
72
37
  export class HashmapIndex<T extends Record<string, any>, NestedType = any>
73
38
  implements types.Index<T, NestedType>
74
39
  {
75
- private _index: Map<string | bigint | number, types.IndexedValue<T>>;
76
- private _resultsCollectQueue: Cache<{
77
- arr: types.IndexedValue<T>[];
78
- reference: boolean | undefined;
79
- }>;
40
+ private _index!: Map<string | bigint | number, types.IndexedValue<T>>;
80
41
 
81
- private indexByArr: string[];
82
- private properties: types.IndexEngineInitProperties<T, NestedType>;
42
+ private indexByArr!: string[];
43
+ private properties!: types.IndexEngineInitProperties<T, NestedType>;
83
44
 
84
45
  init(properties: types.IndexEngineInitProperties<T, NestedType>) {
85
46
  this.properties = properties;
86
47
  this._index = new Map();
87
- this._resultsCollectQueue = new Cache({ max: 10000 }); // TODO choose limit better
88
48
  if (properties.indexBy) {
89
49
  this.indexByArr = Array.isArray(properties.indexBy)
90
50
  ? properties.indexBy
@@ -122,7 +82,7 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
122
82
  this._index.set(id.primitive, { id, value });
123
83
  }
124
84
 
125
- async del(query: types.DeleteRequest): Promise<types.IdKey[]> {
85
+ async del(query: types.DeleteOptions): Promise<types.IdKey[]> {
126
86
  let deleted: types.IdKey[] = [];
127
87
  for (const doc of await this.queryAll(query)) {
128
88
  if (this._index.delete(doc.id.primitive)) {
@@ -145,13 +105,10 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
145
105
  // nothing to do
146
106
  }
147
107
 
148
- stop(): void | Promise<void> {
149
- this._resultsCollectQueue.clear();
150
- }
108
+ stop(): void | Promise<void> {}
151
109
 
152
110
  drop() {
153
111
  this._index.clear();
154
- this._resultsCollectQueue.clear();
155
112
  /* for (const subindex of this.subIndices) {
156
113
  subindex[1].clear()
157
114
  } */
@@ -165,11 +122,11 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
165
122
  }
166
123
  */
167
124
 
168
- async sum(query: types.SumRequest): Promise<number | bigint> {
125
+ async sum(query: types.SumOptions): Promise<number | bigint> {
169
126
  let sum: undefined | number | bigint = undefined;
170
127
  outer: for (const doc of await this.queryAll(query)) {
171
128
  let value: any = doc.value;
172
- for (const path of query.key) {
129
+ for (const path of Array.isArray(query.key) ? query.key : [query.key]) {
173
130
  value = value[path];
174
131
  if (!value) {
175
132
  continue outer;
@@ -185,24 +142,25 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
185
142
  return sum != null ? sum : 0;
186
143
  }
187
144
 
188
- async count(query: types.CountRequest): Promise<number> {
145
+ async count(query: types.CountOptions): Promise<number> {
189
146
  return (await this.queryAll(query)).length;
190
147
  }
191
148
 
192
149
  private async queryAll(
193
- query:
194
- | types.SearchRequest
195
- | types.DeleteRequest
196
- | types.CountRequest
197
- | types.SumRequest,
150
+ query?:
151
+ | types.IterateOptions
152
+ | types.DeleteOptions
153
+ | types.CountOptions
154
+ | types.SumOptions,
198
155
  ): Promise<types.IndexedValue<T>[]> {
156
+ const queryCoerced = types.toQuery(query?.query);
199
157
  if (
200
- query.query.length === 1 &&
201
- (query.query[0] instanceof types.ByteMatchQuery ||
202
- query.query[0] instanceof types.StringMatch) &&
203
- types.stringArraysEquals(query.query[0].key, this.indexByArr)
158
+ queryCoerced.length === 1 &&
159
+ (queryCoerced[0] instanceof types.ByteMatchQuery ||
160
+ queryCoerced[0] instanceof types.StringMatch) &&
161
+ types.stringArraysEquals(queryCoerced[0].key, this.indexByArr)
204
162
  ) {
205
- const firstQuery = query.query[0];
163
+ const firstQuery = queryCoerced[0];
206
164
  if (firstQuery instanceof types.ByteMatchQuery) {
207
165
  const doc = this._index.get(types.toId(firstQuery.value).primitive);
208
166
  return doc ? [doc] : [];
@@ -218,7 +176,7 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
218
176
 
219
177
  // Handle query normally
220
178
  const indexedDocuments = await this._queryDocuments(async (doc) => {
221
- for (const f of query.query) {
179
+ for (const f of queryCoerced) {
222
180
  if (!(await this.handleQueryObject(f, doc.value))) {
223
181
  return false;
224
182
  }
@@ -229,80 +187,93 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
229
187
  return indexedDocuments;
230
188
  }
231
189
 
232
- async query(
233
- query: types.SearchRequest,
234
- properties: { reference?: boolean },
235
- ): Promise<types.IndexedResults<T>> {
236
- const indexedDocuments = await this.queryAll(query);
237
- if (indexedDocuments.length <= 1) {
238
- return {
239
- kept: 0,
240
- results: indexedDocuments,
241
- };
242
- }
190
+ iterate<S extends types.Shape | undefined>(
191
+ query: types.IterateOptions,
192
+ properties: { shape?: S; reference?: boolean },
193
+ ): types.IndexIterator<T, S> {
194
+ let done: boolean | undefined = undefined;
195
+ let queue:
196
+ | {
197
+ arr: types.IndexedValue<T>[];
198
+ reference: boolean | undefined;
199
+ }
200
+ | undefined = undefined;
201
+ const fetch = async (
202
+ n: number,
203
+ ): Promise<types.IndexedResults<types.ReturnTypeFromShape<T, S>>> => {
204
+ if (!queue && !done) {
205
+ const indexedDocuments = await this.queryAll(query);
206
+ if (indexedDocuments.length > 1) {
207
+ // Sort
208
+ if (query.sort) {
209
+ const sortArr = Array.isArray(query.sort)
210
+ ? query.sort
211
+ : [query.sort];
212
+ sortArr.length > 0 &&
213
+ indexedDocuments.sort((a, b) =>
214
+ types.extractSortCompare(a.value, b.value, sortArr),
215
+ );
216
+ }
217
+ }
243
218
 
244
- /* const aliases = resolveNestedAliasesRecursively(query) */
219
+ if (indexedDocuments.length > 0) {
220
+ queue = {
221
+ arr: indexedDocuments,
222
+ reference: properties?.reference,
223
+ }; // cache resulst not returned
224
+ done = false;
225
+ } else {
226
+ done = true;
227
+ }
228
+ }
229
+ if (queue && queue.arr.length <= n) {
230
+ done = true;
231
+ }
245
232
 
246
- // Sort
247
- indexedDocuments.sort((a, b) =>
248
- types.extractSortCompare(a.value, b.value, query.sort),
249
- );
250
- const batch = getBatchFromResults<T>(
251
- indexedDocuments,
252
- query.fetch,
253
- /* this.properties.iterator.batch, */
254
- );
233
+ if (!queue) {
234
+ return [];
235
+ }
255
236
 
256
- if (indexedDocuments.length > 0) {
257
- this._resultsCollectQueue.add(query.idString, {
258
- arr: indexedDocuments,
259
- reference: properties?.reference,
260
- }); // cache resulst not returned
261
- }
237
+ const batch = getBatchFromResults<T>(
238
+ queue.arr,
239
+ n,
240
+ /* this.properties.iterator.batch */
241
+ );
262
242
 
263
- // TODO dont leak kept if canRead is defined, or return something random
264
- return {
265
- kept: indexedDocuments.length,
266
- results: properties?.reference
267
- ? batch
268
- : cloneResults(batch, this.properties.schema),
243
+ return (
244
+ queue.reference ? batch : cloneResults(batch, this.properties.schema)
245
+ ) as types.IndexedResults<types.ReturnTypeFromShape<T, S>>;
269
246
  };
270
- }
271
247
 
272
- async next(
273
- query: types.CollectNextRequest,
274
- ): Promise<types.IndexedResults<T>> {
275
- const results = this._resultsCollectQueue.get(query.idString);
276
- if (!results) {
277
- return {
278
- results: [],
279
- kept: 0,
280
- };
281
- }
282
-
283
- const batch = getBatchFromResults<T>(
284
- results.arr,
285
- query.amount,
286
- /* this.properties.iterator.batch */
287
- );
248
+ // TODO dont leak kept if canRead is defined, or return something random
288
249
 
289
- if (results.arr.length === 0) {
290
- this._resultsCollectQueue.del(query.idString); // TODO add tests for proper cleanup/timeouts
291
- }
250
+ /* return {
251
+ kept: indexedDocuments.length,
252
+ results: (properties?.reference
253
+ ? batch
254
+ : cloneResults(batch, this.properties.schema)) as any, // TODO fix this type,
255
+ }; */
292
256
 
293
- // TODO dont leak kept if canRead is defined, or return something random
294
257
  return {
295
- results: results.reference
296
- ? batch
297
- : cloneResults(batch, this.properties.schema),
298
- kept: results.arr.length,
258
+ all: async () => {
259
+ const results = await fetch(Infinity);
260
+ return results;
261
+ },
262
+ next: (n: number) => fetch(n),
263
+ done: () => done,
264
+ pending: async () => {
265
+ if (done == null) {
266
+ await fetch(0);
267
+ }
268
+ return done ? 0 : (queue?.arr.length ?? 0);
269
+ },
270
+ close: () => {
271
+ done = true;
272
+ queue = undefined;
273
+ },
299
274
  };
300
275
  }
301
276
 
302
- close(query: types.CloseIteratorRequest): void {
303
- this._resultsCollectQueue.del(query.idString);
304
- }
305
-
306
277
  private async handleFieldQuery(
307
278
  f: types.StateFieldQuery,
308
279
  obj: any,
@@ -341,10 +312,9 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
341
312
  if (this.properties.nested?.match(obj)) {
342
313
  const queryCloned = f.clone();
343
314
  queryCloned.key.splice(0, i + 1); // remove key path until the document store
344
- const results = await this.properties.nested.query(
345
- obj,
346
- new types.SearchRequest({ query: [queryCloned] }),
347
- );
315
+ const results = await this.properties.nested.iterate(obj, {
316
+ query: [queryCloned],
317
+ });
348
318
  return results.length > 0 ? true : false; // TODO return INNER HITS?
349
319
  }
350
320
  }
@@ -480,14 +450,6 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
480
450
  }
481
451
  return results;
482
452
  }
483
-
484
- getPending(cursorId: string): number | undefined {
485
- return this._resultsCollectQueue.get(cursorId)?.arr.length;
486
- }
487
-
488
- get cursorCount(): number {
489
- return this._resultsCollectQueue.size;
490
- }
491
453
  }
492
454
 
493
455
  export class HashmapIndices implements types.Indices {