@peerbit/document-interface 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.
@@ -0,0 +1,545 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { deserialize, field, fixedArray, serialize, variant, vec } from "@dao-xyz/borsh";
11
+ import { randomBytes, sha256Base64Sync, toBase64 } from "@peerbit/crypto";
12
+ import { BigUnsignedIntegerValue, IntegerValue, UnsignedIntegerValue } from "./id.js";
13
+ export var Compare;
14
+ (function (Compare) {
15
+ Compare[Compare["Equal"] = 0] = "Equal";
16
+ Compare[Compare["Greater"] = 1] = "Greater";
17
+ Compare[Compare["GreaterOrEqual"] = 2] = "GreaterOrEqual";
18
+ Compare[Compare["Less"] = 3] = "Less";
19
+ Compare[Compare["LessOrEqual"] = 4] = "LessOrEqual";
20
+ })(Compare || (Compare = {}));
21
+ export const compare = (test, compare, value) => {
22
+ switch (compare) {
23
+ case Compare.Equal:
24
+ return test == value; // == because with want bigint == number at some cases
25
+ case Compare.Greater:
26
+ return test > value;
27
+ case Compare.GreaterOrEqual:
28
+ return test >= value;
29
+ case Compare.Less:
30
+ return test < value;
31
+ case Compare.LessOrEqual:
32
+ return test <= value;
33
+ default:
34
+ console.warn("Unexpected compare");
35
+ return false;
36
+ }
37
+ };
38
+ /// ----- QUERY -----
39
+ export class Query {
40
+ clone() {
41
+ return deserialize(serialize(this), this.constructor);
42
+ }
43
+ }
44
+ export var SortDirection;
45
+ (function (SortDirection) {
46
+ SortDirection[SortDirection["ASC"] = 0] = "ASC";
47
+ SortDirection[SortDirection["DESC"] = 1] = "DESC";
48
+ })(SortDirection || (SortDirection = {}));
49
+ let Sort = class Sort {
50
+ key;
51
+ direction;
52
+ constructor(properties) {
53
+ this.key = Array.isArray(properties.key)
54
+ ? properties.key
55
+ : [properties.key];
56
+ this.direction = properties.direction || SortDirection.ASC;
57
+ }
58
+ };
59
+ __decorate([
60
+ field({ type: vec("string") }),
61
+ __metadata("design:type", Array)
62
+ ], Sort.prototype, "key", void 0);
63
+ __decorate([
64
+ field({ type: "u8" }),
65
+ __metadata("design:type", Number)
66
+ ], Sort.prototype, "direction", void 0);
67
+ Sort = __decorate([
68
+ variant(0),
69
+ __metadata("design:paramtypes", [Object])
70
+ ], Sort);
71
+ export { Sort };
72
+ export class AbstractSearchRequest {
73
+ }
74
+ /**
75
+ * Search with query and collect with sort conditionss
76
+ */
77
+ const toArray = (arr) => (arr ? (Array.isArray(arr) ? arr : [arr]) : undefined) || [];
78
+ let SearchRequest = class SearchRequest extends AbstractSearchRequest {
79
+ id; // Session id
80
+ query;
81
+ sort;
82
+ fetch;
83
+ constructor(props) {
84
+ super();
85
+ this.id = randomBytes(32);
86
+ this.query = toArray(props?.query);
87
+ this.sort = toArray(props?.sort);
88
+ this.fetch = 1;
89
+ }
90
+ _idString;
91
+ get idString() {
92
+ return this._idString || (this._idString = sha256Base64Sync(this.id));
93
+ }
94
+ };
95
+ __decorate([
96
+ field({ type: fixedArray("u8", 32) }),
97
+ __metadata("design:type", Uint8Array)
98
+ ], SearchRequest.prototype, "id", void 0);
99
+ __decorate([
100
+ field({ type: vec(Query) }),
101
+ __metadata("design:type", Array)
102
+ ], SearchRequest.prototype, "query", void 0);
103
+ __decorate([
104
+ field({ type: vec(Sort) }),
105
+ __metadata("design:type", Array)
106
+ ], SearchRequest.prototype, "sort", void 0);
107
+ __decorate([
108
+ field({ type: "u32" }),
109
+ __metadata("design:type", Number)
110
+ ], SearchRequest.prototype, "fetch", void 0);
111
+ SearchRequest = __decorate([
112
+ variant(0),
113
+ __metadata("design:paramtypes", [Object])
114
+ ], SearchRequest);
115
+ export { SearchRequest };
116
+ /**
117
+ * Collect documents from peers using 'collect' session ids. This is used for distributed sorting internally
118
+ */
119
+ let CollectNextRequest = class CollectNextRequest extends AbstractSearchRequest {
120
+ id; // collect with id
121
+ amount; // number of documents to ask for
122
+ constructor(properties) {
123
+ super();
124
+ this.id = properties.id;
125
+ this.amount = properties.amount;
126
+ }
127
+ _idString;
128
+ get idString() {
129
+ return this._idString || (this._idString = sha256Base64Sync(this.id));
130
+ }
131
+ };
132
+ __decorate([
133
+ field({ type: fixedArray("u8", 32) }),
134
+ __metadata("design:type", Uint8Array)
135
+ ], CollectNextRequest.prototype, "id", void 0);
136
+ __decorate([
137
+ field({ type: "u32" }),
138
+ __metadata("design:type", Number)
139
+ ], CollectNextRequest.prototype, "amount", void 0);
140
+ CollectNextRequest = __decorate([
141
+ variant(2),
142
+ __metadata("design:paramtypes", [Object])
143
+ ], CollectNextRequest);
144
+ export { CollectNextRequest };
145
+ let CloseIteratorRequest = class CloseIteratorRequest extends AbstractSearchRequest {
146
+ id; // collect with id
147
+ constructor(properties) {
148
+ super();
149
+ this.id = properties.id;
150
+ }
151
+ _idString;
152
+ get idString() {
153
+ return this._idString || (this._idString = sha256Base64Sync(this.id));
154
+ }
155
+ };
156
+ __decorate([
157
+ field({ type: fixedArray("u8", 32) }),
158
+ __metadata("design:type", Uint8Array)
159
+ ], CloseIteratorRequest.prototype, "id", void 0);
160
+ CloseIteratorRequest = __decorate([
161
+ variant(3),
162
+ __metadata("design:paramtypes", [Object])
163
+ ], CloseIteratorRequest);
164
+ export { CloseIteratorRequest };
165
+ let LogicalQuery = class LogicalQuery extends Query {
166
+ };
167
+ LogicalQuery = __decorate([
168
+ variant(1)
169
+ ], LogicalQuery);
170
+ export { LogicalQuery };
171
+ let And = class And extends LogicalQuery {
172
+ and;
173
+ constructor(and) {
174
+ super();
175
+ this.and = and;
176
+ }
177
+ };
178
+ __decorate([
179
+ field({ type: vec(Query) }),
180
+ __metadata("design:type", Array)
181
+ ], And.prototype, "and", void 0);
182
+ And = __decorate([
183
+ variant(0),
184
+ __metadata("design:paramtypes", [Array])
185
+ ], And);
186
+ export { And };
187
+ let Or = class Or extends LogicalQuery {
188
+ or;
189
+ constructor(or) {
190
+ super();
191
+ this.or = or;
192
+ }
193
+ };
194
+ __decorate([
195
+ field({ type: vec(Query) }),
196
+ __metadata("design:type", Array)
197
+ ], Or.prototype, "or", void 0);
198
+ Or = __decorate([
199
+ variant(1),
200
+ __metadata("design:paramtypes", [Array])
201
+ ], Or);
202
+ export { Or };
203
+ let StateQuery = class StateQuery extends Query {
204
+ };
205
+ StateQuery = __decorate([
206
+ variant(2)
207
+ ], StateQuery);
208
+ export { StateQuery };
209
+ let StateFieldQuery = class StateFieldQuery extends StateQuery {
210
+ key;
211
+ constructor(props) {
212
+ super();
213
+ this.key = Array.isArray(props.key) ? props.key : [props.key];
214
+ }
215
+ };
216
+ __decorate([
217
+ field({ type: vec("string") }),
218
+ __metadata("design:type", Array)
219
+ ], StateFieldQuery.prototype, "key", void 0);
220
+ StateFieldQuery = __decorate([
221
+ variant(1),
222
+ __metadata("design:paramtypes", [Object])
223
+ ], StateFieldQuery);
224
+ export { StateFieldQuery };
225
+ let ByteMatchQuery = class ByteMatchQuery extends StateFieldQuery {
226
+ value;
227
+ _reserved; // Replcate MemoryCompare query with this?
228
+ constructor(props) {
229
+ super(props);
230
+ this.value = props.value;
231
+ this._reserved = 0;
232
+ }
233
+ _valueString;
234
+ /**
235
+ * value `asString`
236
+ */
237
+ get valueString() {
238
+ return this._valueString ?? (this._valueString = toBase64(this.value));
239
+ }
240
+ };
241
+ __decorate([
242
+ field({ type: Uint8Array }),
243
+ __metadata("design:type", Uint8Array)
244
+ ], ByteMatchQuery.prototype, "value", void 0);
245
+ __decorate([
246
+ field({ type: "u8" })
247
+ // @ts-ignore: unused
248
+ ,
249
+ __metadata("design:type", Number)
250
+ ], ByteMatchQuery.prototype, "_reserved", void 0);
251
+ ByteMatchQuery = __decorate([
252
+ variant(1),
253
+ __metadata("design:paramtypes", [Object])
254
+ ], ByteMatchQuery);
255
+ export { ByteMatchQuery };
256
+ export var StringMatchMethod;
257
+ (function (StringMatchMethod) {
258
+ StringMatchMethod[StringMatchMethod["exact"] = 0] = "exact";
259
+ StringMatchMethod[StringMatchMethod["prefix"] = 1] = "prefix";
260
+ StringMatchMethod[StringMatchMethod["contains"] = 2] = "contains";
261
+ })(StringMatchMethod || (StringMatchMethod = {}));
262
+ let StringMatch = class StringMatch extends StateFieldQuery {
263
+ value;
264
+ method;
265
+ caseInsensitive;
266
+ constructor(props) {
267
+ super(props);
268
+ this.value = props.value;
269
+ this.method = props.method ?? StringMatchMethod.exact;
270
+ this.caseInsensitive = props.caseInsensitive ?? false;
271
+ }
272
+ };
273
+ __decorate([
274
+ field({ type: "string" }),
275
+ __metadata("design:type", String)
276
+ ], StringMatch.prototype, "value", void 0);
277
+ __decorate([
278
+ field({ type: "u8" }),
279
+ __metadata("design:type", Number)
280
+ ], StringMatch.prototype, "method", void 0);
281
+ __decorate([
282
+ field({ type: "bool" }),
283
+ __metadata("design:type", Boolean)
284
+ ], StringMatch.prototype, "caseInsensitive", void 0);
285
+ StringMatch = __decorate([
286
+ variant(2),
287
+ __metadata("design:paramtypes", [Object])
288
+ ], StringMatch);
289
+ export { StringMatch };
290
+ let IntegerCompare = class IntegerCompare extends StateFieldQuery {
291
+ compare;
292
+ value;
293
+ constructor(props) {
294
+ super(props);
295
+ if (props.value instanceof IntegerValue) {
296
+ this.value = props.value;
297
+ }
298
+ else {
299
+ if (typeof props.value === "bigint") {
300
+ this.value = new BigUnsignedIntegerValue(props.value);
301
+ }
302
+ else {
303
+ this.value = new UnsignedIntegerValue(props.value);
304
+ }
305
+ }
306
+ this.compare = props.compare;
307
+ }
308
+ };
309
+ __decorate([
310
+ field({ type: "u8" }),
311
+ __metadata("design:type", Number)
312
+ ], IntegerCompare.prototype, "compare", void 0);
313
+ __decorate([
314
+ field({ type: IntegerValue }),
315
+ __metadata("design:type", IntegerValue)
316
+ ], IntegerCompare.prototype, "value", void 0);
317
+ IntegerCompare = __decorate([
318
+ variant(3),
319
+ __metadata("design:paramtypes", [Object])
320
+ ], IntegerCompare);
321
+ export { IntegerCompare };
322
+ let MissingField = class MissingField extends StateFieldQuery {
323
+ constructor(props) {
324
+ super(props);
325
+ }
326
+ };
327
+ MissingField = __decorate([
328
+ variant(4),
329
+ __metadata("design:paramtypes", [Object])
330
+ ], MissingField);
331
+ export { MissingField };
332
+ let BoolQuery = class BoolQuery extends StateFieldQuery {
333
+ value;
334
+ constructor(props) {
335
+ super(props);
336
+ this.value = props.value;
337
+ }
338
+ };
339
+ __decorate([
340
+ field({ type: "bool" }),
341
+ __metadata("design:type", Boolean)
342
+ ], BoolQuery.prototype, "value", void 0);
343
+ BoolQuery = __decorate([
344
+ variant(5),
345
+ __metadata("design:paramtypes", [Object])
346
+ ], BoolQuery);
347
+ export { BoolQuery };
348
+ // TODO MemoryCompareQuery can be replaces with ByteMatchQuery? Or Nesteed Queries + ByteMatchQuery?
349
+ /* @variant(0)
350
+ export class MemoryCompare {
351
+ @field({ type: Uint8Array })
352
+ bytes: Uint8Array;
353
+
354
+ @field({ type: "u64" })
355
+ offset: bigint;
356
+
357
+ constructor(opts?: { bytes: Uint8Array; offset: bigint }) {
358
+ if (opts) {
359
+ this.bytes = opts.bytes;
360
+ this.offset = opts.offset;
361
+ }
362
+ }
363
+ }
364
+
365
+ @variant(4)
366
+ export class MemoryCompareQuery extends Query {
367
+ @field({ type: vec(MemoryCompare) })
368
+ compares: MemoryCompare[];
369
+
370
+ constructor(opts?: { compares: MemoryCompare[] }) {
371
+ super();
372
+ if (opts) {
373
+ this.compares = opts.compares;
374
+ }
375
+ }
376
+ } */
377
+ /// ----- RESULTS -----
378
+ export class Result {
379
+ }
380
+ let Context = class Context {
381
+ created;
382
+ modified;
383
+ head;
384
+ gid;
385
+ constructor(properties) {
386
+ this.created = properties.created;
387
+ this.modified = properties.modified;
388
+ this.head = properties.head;
389
+ this.gid = properties.gid;
390
+ }
391
+ };
392
+ __decorate([
393
+ field({ type: "u64" }),
394
+ __metadata("design:type", BigInt)
395
+ ], Context.prototype, "created", void 0);
396
+ __decorate([
397
+ field({ type: "u64" }),
398
+ __metadata("design:type", BigInt)
399
+ ], Context.prototype, "modified", void 0);
400
+ __decorate([
401
+ field({ type: "string" }),
402
+ __metadata("design:type", String)
403
+ ], Context.prototype, "head", void 0);
404
+ __decorate([
405
+ field({ type: "string" }),
406
+ __metadata("design:type", String)
407
+ ], Context.prototype, "gid", void 0);
408
+ Context = __decorate([
409
+ variant(0),
410
+ __metadata("design:paramtypes", [Object])
411
+ ], Context);
412
+ export { Context };
413
+ let ResultWithSource = class ResultWithSource extends Result {
414
+ _source;
415
+ context;
416
+ _type;
417
+ constructor(opts) {
418
+ super();
419
+ this._source = opts.source;
420
+ this.context = opts.context;
421
+ this._value = opts.value;
422
+ this.indexed = opts.indexed;
423
+ }
424
+ init(type) {
425
+ this._type = type;
426
+ }
427
+ _value;
428
+ get value() {
429
+ if (this._value) {
430
+ return this._value;
431
+ }
432
+ if (!this._source) {
433
+ throw new Error("Missing source binary");
434
+ }
435
+ this._value = deserialize(this._source, this._type);
436
+ return this._value;
437
+ }
438
+ indexed;
439
+ };
440
+ __decorate([
441
+ field({ type: Uint8Array }),
442
+ __metadata("design:type", Uint8Array)
443
+ ], ResultWithSource.prototype, "_source", void 0);
444
+ __decorate([
445
+ field({ type: Context }),
446
+ __metadata("design:type", Context)
447
+ ], ResultWithSource.prototype, "context", void 0);
448
+ ResultWithSource = __decorate([
449
+ variant(0),
450
+ __metadata("design:paramtypes", [Object])
451
+ ], ResultWithSource);
452
+ export { ResultWithSource };
453
+ export class AbstractSearchResult {
454
+ }
455
+ let Results = class Results extends AbstractSearchResult {
456
+ results;
457
+ kept; // how many results that were not sent, but can be collected later
458
+ constructor(properties) {
459
+ super();
460
+ this.kept = properties.kept;
461
+ this.results = properties.results;
462
+ }
463
+ };
464
+ __decorate([
465
+ field({ type: vec(ResultWithSource) }),
466
+ __metadata("design:type", Array)
467
+ ], Results.prototype, "results", void 0);
468
+ __decorate([
469
+ field({ type: "u64" }),
470
+ __metadata("design:type", BigInt)
471
+ ], Results.prototype, "kept", void 0);
472
+ Results = __decorate([
473
+ variant(0),
474
+ __metadata("design:paramtypes", [Object])
475
+ ], Results);
476
+ export { Results };
477
+ let NoAccess = class NoAccess extends AbstractSearchResult {
478
+ };
479
+ NoAccess = __decorate([
480
+ variant(1)
481
+ ], NoAccess);
482
+ export { NoAccess };
483
+ /* @variant(5)
484
+ export class LogQuery extends Query { } */
485
+ /**
486
+ * Find logs that can be decrypted by certain keys
487
+ */
488
+ /*
489
+ @variant(0)
490
+ export class EntryEncryptedByQuery
491
+ extends LogQuery
492
+ implements
493
+ EntryEncryptionTemplate<
494
+ X25519PublicKey[],
495
+ X25519PublicKey[],
496
+ X25519PublicKey[],
497
+ X25519PublicKey[]
498
+ >
499
+ {
500
+ @field({ type: vec(X25519PublicKey) })
501
+ meta: X25519PublicKey[];
502
+
503
+ @field({ type: vec(X25519PublicKey) })
504
+ payload: X25519PublicKey[];
505
+
506
+ @field({ type: vec(X25519PublicKey) })
507
+ next: X25519PublicKey[];
508
+
509
+ @field({ type: vec(X25519PublicKey) })
510
+ signatures: X25519PublicKey[];
511
+
512
+ constructor(properties?: {
513
+ meta: X25519PublicKey[];
514
+ next: X25519PublicKey[];
515
+ payload: X25519PublicKey[];
516
+ signatures: X25519PublicKey[];
517
+ }) {
518
+ super();
519
+ if (properties) {
520
+ this.metadata = properties.metadata;
521
+ this.payload = properties.payload;
522
+ this.next = properties.next;
523
+ this.signatures = properties.signatures;
524
+ }
525
+ }
526
+ }
527
+
528
+ @variant(1)
529
+ export class SignedByQuery extends LogQuery {
530
+ @field({ type: vec(PublicSignKey) })
531
+ _publicKeys: PublicSignKey[];
532
+
533
+ constructor(properties: { publicKeys: PublicSignKey[] }) {
534
+ super();
535
+ if (properties) {
536
+ this._publicKeys = properties.publicKeys;
537
+ }
538
+ }
539
+
540
+ get publicKeys() {
541
+ return this._publicKeys;
542
+ }
543
+ }
544
+ */
545
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { SearchRequest } from "./query.js";
2
+ export type IDocumentStore<T> = {
3
+ index: {
4
+ search: (query: SearchRequest) => Promise<T[]>;
5
+ };
6
+ };
7
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC/B,KAAK,EAAE;QAAE,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;KAAE,CAAC;CAC1D,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { SearchRequest } from "./query.js";
2
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Context, Sort } from "./query.js";
2
+ export declare const stringArraysEquals: (a: string[] | string, b: string[] | string) => boolean;
3
+ export declare const resolvedSort: <Q extends {
4
+ indexed: Record<string, any>;
5
+ context: Context;
6
+ }>(arr: Q[], sorts: Sort[]) => Promise<Q[]>;
7
+ export declare const extractSortCompare: (a: Record<string, any>, b: Record<string, any>, sorts: Sort[]) => number;
8
+ export declare const sortCompare: (av: any, bv: any) => number;
9
+ export declare const extractFieldValue: <T>(doc: any, path: string[]) => T;
10
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAiB,MAAM,YAAY,CAAC;AAE1D,eAAO,MAAM,kBAAkB,MAC3B,MAAM,EAAE,GAAG,MAAM,KACjB,MAAM,EAAE,GAAG,MAAM,YAWpB,CAAC;AAEF,eAAO,MAAM,YAAY;aACH,OAAO,MAAM,EAAE,GAAG,CAAC;aAAW,OAAO;QAErD,CAAC,EAAE,SACD,IAAI,EAAE,iBAIb,CAAC;AAEF,eAAO,MAAM,kBAAkB,MAC3B,OAAO,MAAM,EAAE,GAAG,CAAC,KACnB,OAAO,MAAM,EAAE,GAAG,CAAC,SACf,IAAI,EAAE,WAeb,CAAC;AAEF,eAAO,MAAM,WAAW,OAAQ,GAAG,MAAM,GAAG,WAU3C,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAY,GAAG,QAAQ,MAAM,EAAE,KAAG,CAK/D,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { Context, Sort, SortDirection } from "./query.js";
2
+ export const stringArraysEquals = (a, b) => {
3
+ if (a.length !== b.length) {
4
+ return false;
5
+ }
6
+ for (let i = 0; i < a.length; i++) {
7
+ if (a[i] !== b[i]) {
8
+ return false;
9
+ }
10
+ }
11
+ return true;
12
+ };
13
+ export const resolvedSort = async (arr, sorts) => {
14
+ arr.sort((a, b) => extractSortCompare(a.indexed, b.indexed, sorts));
15
+ return arr;
16
+ };
17
+ export const extractSortCompare = (a, b, sorts) => {
18
+ for (const sort of sorts) {
19
+ const av = extractFieldValue(a, sort.key);
20
+ const bv = extractFieldValue(b, sort.key);
21
+ const cmp = sortCompare(av, bv);
22
+ if (cmp != 0) {
23
+ if (sort.direction === SortDirection.ASC) {
24
+ return cmp;
25
+ }
26
+ else {
27
+ return -cmp;
28
+ }
29
+ }
30
+ }
31
+ return 0;
32
+ };
33
+ export const sortCompare = (av, bv) => {
34
+ if (typeof av === "string" && typeof bv === "string") {
35
+ return av.localeCompare(bv);
36
+ }
37
+ if (av < bv) {
38
+ return -1;
39
+ }
40
+ else if (av > bv) {
41
+ return 1;
42
+ }
43
+ return 0;
44
+ };
45
+ export const extractFieldValue = (doc, path) => {
46
+ for (let i = 0; i < path.length; i++) {
47
+ doc = doc[path[i]];
48
+ }
49
+ return doc;
50
+ };
51
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,CAAoB,EACpB,CAAoB,EACnB,EAAE;IACH,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACd,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAGhC,GAAQ,EACR,KAAa,EACZ,EAAE;IACH,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,CAAsB,EACtB,CAAsB,EACtB,KAAa,EACZ,EAAE;IACH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;gBAC1C,OAAO,GAAG,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC;YACb,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAO,EAAE,EAAO,EAAE,EAAE;IAC/C,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,CAAC,CAAC;IACX,CAAC;SAAM,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,CAAC,CAAC;IACV,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAI,GAAQ,EAAE,IAAc,EAAK,EAAE;IACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC"}