@thisisagile/easy 10.4.0 → 10.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/domain/Repo.d.ts +6 -6
- package/dist/domain/Repo.js.map +1 -1
- package/dist/http/RestResult.d.ts +1 -0
- package/dist/process/Search.d.ts +5 -5
- package/dist/process/Search.js.map +1 -1
- package/dist/types/Gateway.d.ts +5 -5
- package/dist/types/List.d.ts +7 -4
- package/dist/types/List.js +4 -4
- package/dist/types/List.js.map +1 -1
- package/package.json +2 -2
- package/src/domain/Repo.ts +20 -7
- package/src/http/RestResult.ts +1 -1
- package/src/process/Search.ts +7 -6
- package/src/types/Gateway.ts +5 -5
- package/src/types/List.ts +8 -7
package/dist/domain/Repo.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { Constructor, Gateway, Id, Json, JsonValue, Key,
|
|
1
|
+
import { Constructor, Gateway, Id, Json, JsonValue, Key, TotalledList } from '../types';
|
|
2
2
|
import { Struct } from './Struct';
|
|
3
3
|
export declare class Repo<T extends Struct> {
|
|
4
4
|
protected ctor: Constructor<T>;
|
|
5
5
|
private readonly gateway;
|
|
6
6
|
constructor(ctor: Constructor<T>, gateway: Gateway);
|
|
7
7
|
create: (item: T | Json) => T;
|
|
8
|
-
all(): Promise<
|
|
8
|
+
all(): Promise<TotalledList<T>>;
|
|
9
9
|
byId(id: Id): Promise<T>;
|
|
10
|
-
byIds(...ids: Id[]): Promise<
|
|
11
|
-
byKey(key: Key): Promise<
|
|
12
|
-
by(key: keyof T, value: JsonValue): Promise<
|
|
13
|
-
search(q: JsonValue): Promise<
|
|
10
|
+
byIds(...ids: Id[]): Promise<TotalledList<T>>;
|
|
11
|
+
byKey(key: Key): Promise<TotalledList<T>>;
|
|
12
|
+
by(key: keyof T, value: JsonValue): Promise<TotalledList<T>>;
|
|
13
|
+
search(q: JsonValue): Promise<TotalledList<T>>;
|
|
14
14
|
exists(id: Id): Promise<boolean>;
|
|
15
15
|
add(t: T | Json): Promise<T>;
|
|
16
16
|
update(id: Id, json: Json): Promise<T>;
|
package/dist/domain/Repo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repo.js","sourceRoot":"","sources":["../../src/domain/Repo.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Repo.js","sourceRoot":"","sources":["../../src/domain/Repo.ts"],"names":[],"mappings":"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"}
|
package/dist/process/Search.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Repo, Struct } from '../domain';
|
|
2
|
-
import { Id, JsonValue, Key,
|
|
2
|
+
import { Id, JsonValue, Key, TotalledList } from '../types';
|
|
3
3
|
export declare class Search<T extends Struct> {
|
|
4
4
|
protected repo: Repo<T>;
|
|
5
5
|
constructor(repo: Repo<T>);
|
|
6
|
-
all: () => Promise<
|
|
6
|
+
all: () => Promise<TotalledList<T>>;
|
|
7
7
|
byId: (id: Id) => Promise<T>;
|
|
8
|
-
byIds: (...ids: Id[]) => Promise<
|
|
9
|
-
byKey: (key: Key) => Promise<
|
|
10
|
-
search: (query: JsonValue) => Promise<
|
|
8
|
+
byIds: (...ids: Id[]) => Promise<TotalledList<T>>;
|
|
9
|
+
byKey: (key: Key) => Promise<TotalledList<T>>;
|
|
10
|
+
search: (query: JsonValue) => Promise<TotalledList<T>>;
|
|
11
11
|
exists: (id: Id) => Promise<boolean>;
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Search.js","sourceRoot":"","sources":["../../src/process/Search.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"Search.js","sourceRoot":"","sources":["../../src/process/Search.ts"],"names":[],"mappings":";;;AACA,oCAAwF;AACxF,oCAAmC;AAEnC,MAAa,MAAM;IACjB,YAAsB,IAAa;QAAb,SAAI,GAAJ,IAAI,CAAS;QAGnC,QAAG,GAAG,GAA6B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAEtD,SAAI,GAAG,CAAC,EAAM,EAAc,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAElD,UAAK,GAAG,CAAC,GAAG,GAAS,EAA4B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;QAE5E,UAAK,GAAG,CAAC,GAAQ,EAA4B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAErE,WAAM,GAAG,CAAC,KAAgB,EAA4B,EAAE,CACtD,IAAA,cAAM,EAAC,KAAK,CAAC;aACV,IAAI,CAAC,kBAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC1C,IAAI,CAAC,IAAA,eAAO,EAAC,IAAA,cAAM,GAAK,CAAC,CAAC,CAAC;QAEhC,WAAM,GAAG,CAAC,EAAM,EAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAf5D,CAAC;CAgBF;AAlBD,wBAkBC"}
|
package/dist/types/Gateway.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TotalledList } from './List';
|
|
2
2
|
import { Json, JsonValue } from './Json';
|
|
3
3
|
import { Id } from './Id';
|
|
4
4
|
export declare abstract class Gateway {
|
|
5
|
-
all(): Promise<
|
|
5
|
+
all(): Promise<TotalledList<Json>>;
|
|
6
6
|
byId(id: Id): Promise<Json | undefined>;
|
|
7
|
-
by(key: string, value: JsonValue): Promise<
|
|
8
|
-
byIds(...ids: Id[]): Promise<
|
|
9
|
-
search(q: JsonValue): Promise<
|
|
7
|
+
by(key: string, value: JsonValue): Promise<TotalledList<Json>>;
|
|
8
|
+
byIds(...ids: Id[]): Promise<TotalledList<Json>>;
|
|
9
|
+
search(q: JsonValue): Promise<TotalledList<Json>>;
|
|
10
10
|
exists(id: Id): Promise<boolean>;
|
|
11
11
|
add(item: Json): Promise<Json>;
|
|
12
12
|
update(item: Json): Promise<Json>;
|
package/dist/types/List.d.ts
CHANGED
|
@@ -13,10 +13,10 @@ export declare class List<T = unknown> extends Array<T> {
|
|
|
13
13
|
last: (p?: ((value: T, index: number, array: T[]) => unknown) | undefined, params?: unknown) => T;
|
|
14
14
|
isLast: (value: T) => boolean;
|
|
15
15
|
overlaps: (...items: ArrayLike<T>) => boolean;
|
|
16
|
-
diff: (
|
|
17
|
-
diffByKey: (
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
diff: (others: ArrayLike<T>) => List<T>;
|
|
17
|
+
diffByKey: (others: ArrayLike<T>, key: keyof T) => List<T>;
|
|
18
|
+
intersect: (others: ArrayLike<T>) => List<T>;
|
|
19
|
+
intersectByKey: (others: ArrayLike<T>, key: keyof T) => List<T>;
|
|
20
20
|
toJSON: () => Json[];
|
|
21
21
|
map: <U>(f: (value: T, index: number, array: T[]) => U, params?: unknown) => List<U>;
|
|
22
22
|
flatMap: <U, This = unknown>(f: (this: This, value: T, index: number, array: T[]) => U | readonly U[], params?: This | undefined) => List<U>;
|
|
@@ -36,3 +36,6 @@ export declare class List<T = unknown> extends Array<T> {
|
|
|
36
36
|
export declare const toList: <T = unknown>(...items: ArrayLike<T>) => List<T>;
|
|
37
37
|
export declare const isList: <T>(l?: unknown) => l is List<T>;
|
|
38
38
|
export declare const asList: <T>(c: Constructor<T>, items?: unknown | unknown[]) => List<T>;
|
|
39
|
+
export declare type TotalledList<T> = List<T> & {
|
|
40
|
+
total?: number;
|
|
41
|
+
};
|
package/dist/types/List.js
CHANGED
|
@@ -19,10 +19,10 @@ class List extends Array {
|
|
|
19
19
|
this.last = (p, params) => (p ? this.filter(p, params).last() : this[this.length - 1]);
|
|
20
20
|
this.isLast = (value) => value === this.last();
|
|
21
21
|
this.overlaps = (...items) => (0, exports.toList)(...items).some(i => this.some(t => i === t));
|
|
22
|
-
this.diff = (
|
|
23
|
-
this.diffByKey = (
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
22
|
+
this.diff = (others) => this.filter(i => !others.includes(i));
|
|
23
|
+
this.diffByKey = (others, key) => this.filter((i) => !others.some((o) => o[key] === i[key]));
|
|
24
|
+
this.intersect = (others) => this.filter(i => others.includes(i));
|
|
25
|
+
this.intersectByKey = (others, key) => this.filter((i) => others.some((o) => o[key] === i[key]));
|
|
26
26
|
this.toJSON = () => this.reduce((a, i) => {
|
|
27
27
|
a.push(Json_1.json.parse(i));
|
|
28
28
|
return a;
|
package/dist/types/List.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.js","sourceRoot":"","sources":["../../src/types/List.ts"],"names":[],"mappings":";;;AAAA,mCAAwE;AAExE,iCAAoC;AACpC,6BAAmD;AACnD,+BAA4B;AAC5B,+BAAgD;AAEhD,iCAAkC;AAElC,MAAa,IAAkB,SAAQ,KAAQ;IAA/C;;QACE,QAAG,GAAG,CAAC,CAAsB,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAA,gBAAU,EAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAA,gBAAU,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnH,SAAI,GAAG,CAAC,CAAsB,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAA,gBAAU,EAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAA,gBAAU,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpH,UAAK,GAAG,CAAC,CAAoD,EAAE,MAAgB,EAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtI,YAAO,GAAG,CAAC,KAAQ,EAAW,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QAExD,SAAI,GAAG,CAAC,CAAoD,EAAE,MAAgB,EAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1I,SAAI,GAAG,CAAC,CAAoD,EAAE,MAAgB,EAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1I,SAAI,GAAG,CAAC,CAAoD,EAAE,MAAgB,EAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAElJ,WAAM,GAAG,CAAC,KAAQ,EAAW,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAEtD,aAAQ,GAAG,CAAC,GAAG,KAAmB,EAAW,EAAE,CAAC,IAAA,cAAM,EAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEvG,SAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"List.js","sourceRoot":"","sources":["../../src/types/List.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thisisagile/easy",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.5.8",
|
|
4
4
|
"description": "Straightforward library for building domain-driven microservice architectures",
|
|
5
5
|
"author": "Sander Hoogendoorn",
|
|
6
6
|
"license": "MIT",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"access": "public"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@thisisagile/easy-test": "10.
|
|
34
|
+
"@thisisagile/easy-test": "10.5.8",
|
|
35
35
|
"@types/form-urlencoded": "^4.4.0",
|
|
36
36
|
"@types/jsonwebtoken": "^8.5.8",
|
|
37
37
|
"@types/validator": "^13.7.2"
|
package/src/domain/Repo.ts
CHANGED
|
@@ -1,14 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
asList,
|
|
3
|
+
Constructor,
|
|
4
|
+
Exception,
|
|
5
|
+
Gateway,
|
|
6
|
+
Id,
|
|
7
|
+
isValidatable,
|
|
8
|
+
Json,
|
|
9
|
+
JsonValue,
|
|
10
|
+
Key,
|
|
11
|
+
toJson,
|
|
12
|
+
TotalledList,
|
|
13
|
+
} from '../types';
|
|
2
14
|
import { when } from '../validation';
|
|
3
15
|
import { reject, resolve } from '../utils';
|
|
4
16
|
import { Struct } from './Struct';
|
|
5
17
|
|
|
6
18
|
export class Repo<T extends Struct> {
|
|
7
|
-
constructor(protected ctor: Constructor<T>, private readonly gateway: Gateway) {
|
|
19
|
+
constructor(protected ctor: Constructor<T>, private readonly gateway: Gateway) {
|
|
20
|
+
}
|
|
8
21
|
|
|
9
22
|
create = (item: T | Json): T => (isValidatable(item) ? item : new this.ctor(item));
|
|
10
23
|
|
|
11
|
-
all(): Promise<
|
|
24
|
+
all(): Promise<TotalledList<T>> {
|
|
12
25
|
return this.gateway.all().then(js => js.map(j => new this.ctor(j)));
|
|
13
26
|
}
|
|
14
27
|
|
|
@@ -19,19 +32,19 @@ export class Repo<T extends Struct> {
|
|
|
19
32
|
.then(j => new this.ctor(j));
|
|
20
33
|
}
|
|
21
34
|
|
|
22
|
-
byIds(...ids: Id[]): Promise<
|
|
35
|
+
byIds(...ids: Id[]): Promise<TotalledList<T>> {
|
|
23
36
|
return this.gateway.byIds(...ids).then(j => asList(this.ctor, j));
|
|
24
37
|
}
|
|
25
38
|
|
|
26
|
-
byKey(key: Key): Promise<
|
|
39
|
+
byKey(key: Key): Promise<TotalledList<T>> {
|
|
27
40
|
return this.gateway.by('key', key).then(js => js.map(j => new this.ctor(j)));
|
|
28
41
|
}
|
|
29
42
|
|
|
30
|
-
by(key: keyof T, value: JsonValue): Promise<
|
|
43
|
+
by(key: keyof T, value: JsonValue): Promise<TotalledList<T>> {
|
|
31
44
|
return this.gateway.by(key.toString(), value).then(js => js.map(j => new this.ctor(j)));
|
|
32
45
|
}
|
|
33
46
|
|
|
34
|
-
search(q: JsonValue): Promise<
|
|
47
|
+
search(q: JsonValue): Promise<TotalledList<T>> {
|
|
35
48
|
return this.gateway.search(q).then(js => js.map(j => new this.ctor(j)));
|
|
36
49
|
}
|
|
37
50
|
|
package/src/http/RestResult.ts
CHANGED
|
@@ -16,7 +16,7 @@ import { HttpStatus, isHttpStatus } from './HttpStatus';
|
|
|
16
16
|
import { isResponse } from './Response';
|
|
17
17
|
|
|
18
18
|
export type RestResult = {
|
|
19
|
-
data?: { code: number; items: List<Json>; itemCount: number };
|
|
19
|
+
data?: { code: number; items: List<Json>; itemCount: number; totalItems?: number };
|
|
20
20
|
error?: { code: number; message: string; errorCount: number; errors: List<Result> };
|
|
21
21
|
};
|
|
22
22
|
|
package/src/process/Search.ts
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { Repo, Struct } from '../domain';
|
|
2
|
-
import { choose, Id, isNotEmpty, JsonValue, Key,
|
|
2
|
+
import { choose, Id, isNotEmpty, JsonValue, Key, toList, TotalledList } from '../types';
|
|
3
3
|
import { resolve } from '../utils';
|
|
4
4
|
|
|
5
5
|
export class Search<T extends Struct> {
|
|
6
|
-
constructor(protected repo: Repo<T>) {
|
|
6
|
+
constructor(protected repo: Repo<T>) {
|
|
7
|
+
}
|
|
7
8
|
|
|
8
|
-
all = (): Promise<
|
|
9
|
+
all = (): Promise<TotalledList<T>> => this.repo.all();
|
|
9
10
|
|
|
10
11
|
byId = (id: Id): Promise<T> => this.repo.byId(id);
|
|
11
12
|
|
|
12
|
-
byIds = (...ids: Id[]): Promise<
|
|
13
|
+
byIds = (...ids: Id[]): Promise<TotalledList<T>> => this.repo.byIds(...ids);
|
|
13
14
|
|
|
14
|
-
byKey = (key: Key): Promise<
|
|
15
|
+
byKey = (key: Key): Promise<TotalledList<T>> => this.repo.byKey(key);
|
|
15
16
|
|
|
16
|
-
search = (query: JsonValue): Promise<
|
|
17
|
+
search = (query: JsonValue): Promise<TotalledList<T>> =>
|
|
17
18
|
choose(query)
|
|
18
19
|
.case(isNotEmpty, q => this.repo.search(q))
|
|
19
20
|
.else(resolve(toList<T>()));
|
package/src/types/Gateway.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TotalledList } from './List';
|
|
2
2
|
import { Json, JsonValue } from './Json';
|
|
3
3
|
import { Id } from './Id';
|
|
4
4
|
import { Exception } from './Exception';
|
|
5
5
|
import { reject } from '../utils';
|
|
6
6
|
|
|
7
7
|
export abstract class Gateway {
|
|
8
|
-
all(): Promise<
|
|
8
|
+
all(): Promise<TotalledList<Json>> {
|
|
9
9
|
return reject(Exception.IsNotImplemented);
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -13,15 +13,15 @@ export abstract class Gateway {
|
|
|
13
13
|
return reject(Exception.IsNotImplemented);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
by(key: string, value: JsonValue): Promise<
|
|
16
|
+
by(key: string, value: JsonValue): Promise<TotalledList<Json>> {
|
|
17
17
|
return reject(Exception.IsNotImplemented);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
byIds(...ids: Id[]): Promise<
|
|
20
|
+
byIds(...ids: Id[]): Promise<TotalledList<Json>> {
|
|
21
21
|
return reject(Exception.IsNotImplemented);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
search(q: JsonValue): Promise<
|
|
24
|
+
search(q: JsonValue): Promise<TotalledList<Json>> {
|
|
25
25
|
return reject(Exception.IsNotImplemented);
|
|
26
26
|
}
|
|
27
27
|
|
package/src/types/List.ts
CHANGED
|
@@ -26,15 +26,14 @@ export class List<T = unknown> extends Array<T> {
|
|
|
26
26
|
|
|
27
27
|
overlaps = (...items: ArrayLike<T>): boolean => toList<T>(...items).some(i => this.some(t => i === t));
|
|
28
28
|
|
|
29
|
-
diff = (
|
|
29
|
+
diff = (others: ArrayLike<T>): List<T> => this.filter(i => !others.includes(i));
|
|
30
30
|
|
|
31
|
-
diffByKey = (
|
|
32
|
-
this.filter((i: any) => !
|
|
31
|
+
diffByKey = (others: ArrayLike<T>, key: keyof T): List<T> =>
|
|
32
|
+
this.filter((i: any) => !others.some((o: any) => o[key] === i[key]));
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
intersect = (others: ArrayLike<T>): List<T> => this.filter(i => others.includes(i));
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
this.filter((i: any) => items.some((ii: any) => Object.keys(i).includes(key) && Object.keys(ii).includes(key) && ii[key] === i[key]));
|
|
36
|
+
intersectByKey = (others: ArrayLike<T>, key: keyof T): List<T> => this.filter((i: any) => others.some((o: any) => o[key] === i[key]));
|
|
38
37
|
|
|
39
38
|
toJSON = (): Json[] =>
|
|
40
39
|
this.reduce((a, i) => {
|
|
@@ -85,5 +84,7 @@ export const toList = <T = unknown>(...items: ArrayLike<T>): List<T> => new List
|
|
|
85
84
|
|
|
86
85
|
export const isList = <T>(l?: unknown): l is List<T> => isDefined(l) && isArray(l) && isA<List<T>>(l, 'first', 'last', 'asc', 'desc');
|
|
87
86
|
|
|
88
|
-
// export const asList = <T>(c: Constructor<T>, items: unknown[] = []): List<T> => toList<T>(items.map(i => new c(i)));
|
|
89
87
|
export const asList = <T>(c: Constructor<T>, items: unknown | unknown[] = []): List<T> => toList<T>(toArray(items).map(i => new c(i)));
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
export type TotalledList<T> = List<T> & {total?: number};
|