@thisisagile/easy 13.6.9 → 13.6.11
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/types/PageList.d.ts +1 -1
- package/dist/types/PageList.js.map +1 -1
- package/dist/utils/View.d.ts +5 -2
- package/dist/utils/View.js +8 -2
- package/dist/utils/View.js.map +1 -1
- package/package.json +2 -2
- package/src/types/PageList.ts +1 -1
- package/src/utils/View.ts +23 -14
package/dist/types/PageList.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export type PageOptions = {
|
|
|
23
23
|
export type PageList<T> = List<T> & Omit<PageOptions, 'sort'> & {
|
|
24
24
|
total?: number;
|
|
25
25
|
};
|
|
26
|
-
export declare const isPageList: <T>(l?:
|
|
26
|
+
export declare const isPageList: <T>(l?: unknown) => l is PageList<T>;
|
|
27
27
|
export declare const toPageList: <T>(items?: T[] | undefined, options?: Omit<PageOptions, 'sort'> & {
|
|
28
28
|
total?: number;
|
|
29
29
|
}) => PageList<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageList.js","sourceRoot":"","sources":["../../src/types/PageList.ts"],"names":[],"mappings":";;;AAAA,iCAA8C;AAC9C,+CAA2D;AAC3D,+BAA4B;AAMrB,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,KAAU,EAAU,EAAE,CAAC,IAAA,qBAAa,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAArF,QAAA,QAAQ,YAA6E;AAC3F,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,UAAkB,EAAE,KAAU,EAAU,EAAE,CAAC,CAAC;IACvF,KAAK;IACL,UAAU;IACV,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;CACpB,CAAC,CAAC;AAJU,QAAA,aAAa,iBAIvB;AAKI,MAAM,UAAU,GAAG,CAAI,
|
|
1
|
+
{"version":3,"file":"PageList.js","sourceRoot":"","sources":["../../src/types/PageList.ts"],"names":[],"mappings":";;;AAAA,iCAA8C;AAC9C,+CAA2D;AAC3D,+BAA4B;AAMrB,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,KAAU,EAAU,EAAE,CAAC,IAAA,qBAAa,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAArF,QAAA,QAAQ,YAA6E;AAC3F,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,UAAkB,EAAE,KAAU,EAAU,EAAE,CAAC,CAAC;IACvF,KAAK;IACL,UAAU;IACV,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;CACpB,CAAC,CAAC;AAJU,QAAA,aAAa,iBAIvB;AAKI,MAAM,UAAU,GAAG,CAAI,CAAW,EAAoB,EAAE,CAAC,IAAA,aAAM,EAAI,CAAC,CAAC,IAAI,IAAA,SAAG,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAAnF,QAAA,UAAU,cAAyE;AAEzF,MAAM,UAAU,GAAG,CAAI,KAAW,EAAE,OAAwD,EAAe,EAAE,CAClH,IAAA,gBAAE,EAAC,IAAA,aAAM,EAAI,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAgB,EAAE,CAAC,CAAC,EAAE;IACjD,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,GAAG,CAAC;IAC9B,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IACzB,CAAC,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IACzB,CAAC,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;AAC/B,CAAC,CAAC,CAAC;AAPQ,QAAA,UAAU,cAOlB;AAEE,MAAM,UAAU,GAAG,CAAO,CAAe,EAAE,QAAQ,IAAA,kBAAU,GAAK,EAAe,EAAE,CACxF,IAAA,kBAAU,EACR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,yBAAW,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACjC,KAAK,CACN,CAAC;AAJS,QAAA,UAAU,cAInB"}
|
package/dist/utils/View.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Constructor, DontInfer, Json, List } from '../types';
|
|
1
|
+
import { Constructor, DontInfer, Json, List, PageList } from '../types';
|
|
2
2
|
type Func<T = unknown> = (a: any, key?: string) => T;
|
|
3
3
|
export type InOut = {
|
|
4
4
|
in?: Func | View;
|
|
@@ -17,7 +17,10 @@ export declare class View<V = Json> {
|
|
|
17
17
|
readonly viewers: Viewer[];
|
|
18
18
|
constructor(views?: Views<V>, startsFrom?: 'scratch' | 'source', viewers?: Viewer[]);
|
|
19
19
|
get fromSource(): View<V>;
|
|
20
|
-
from
|
|
20
|
+
from<T = unknown>(source: PageList<T>): PageList<V>;
|
|
21
|
+
from<T = unknown>(source: List<T>): List<V>;
|
|
22
|
+
from<T = unknown>(source: T[]): V[];
|
|
23
|
+
from<T = unknown>(source: T): V;
|
|
21
24
|
same: (one?: unknown, another?: unknown) => boolean;
|
|
22
25
|
private reduce;
|
|
23
26
|
}
|
package/dist/utils/View.js
CHANGED
|
@@ -17,7 +17,7 @@ const toViewer = (key, value) => (0, types_1.choose)(value)
|
|
|
17
17
|
.type(types_1.isFunction, f => toViewer(key, { in: { key, f } }))
|
|
18
18
|
.type(isInOnly, io => toViewer(key, { in: { key, f: io.in } }))
|
|
19
19
|
.type(isColAndFunction, io => toViewer(key, { in: { key, f: (a) => toFunc(a, io.col, io.in)(a) } }))
|
|
20
|
-
.type(isColAndView, io => toViewer(key, { in: { key, f: (a) =>
|
|
20
|
+
.type(isColAndView, io => toViewer(key, { in: { key, f: (a) => io.in.from((0, Traverse_1.traverse)(a, io.col)) } }))
|
|
21
21
|
.else(v => v);
|
|
22
22
|
const toViewers = (views) => (0, types_1.meta)(views)
|
|
23
23
|
.entries()
|
|
@@ -27,13 +27,19 @@ class View {
|
|
|
27
27
|
this.views = views;
|
|
28
28
|
this.startsFrom = startsFrom;
|
|
29
29
|
this.viewers = viewers;
|
|
30
|
-
this.from = (source) => (0, types_1.isArray)(source) ? source.map(s => this.reduce((0, types_1.asJson)(s))) : this.reduce((0, types_1.asJson)(source));
|
|
31
30
|
this.same = (one, another) => (0, types_1.isEqual)(this.from(one), this.from(another));
|
|
32
31
|
this.reduce = (i) => this.viewers.reduce((a, v) => types_1.json.set(a, v.in.key, v.in.f(i, v.in.key)), this.startsFrom === 'scratch' ? {} : i);
|
|
33
32
|
}
|
|
34
33
|
get fromSource() {
|
|
35
34
|
return new View(this.views, 'source', this.viewers);
|
|
36
35
|
}
|
|
36
|
+
from(source) {
|
|
37
|
+
if ((0, types_1.isPageList)(source))
|
|
38
|
+
return (0, types_1.toPageList)(source.map(s => this.reduce((0, types_1.asJson)(s))), source);
|
|
39
|
+
if ((0, types_1.isArray)(source))
|
|
40
|
+
return source.map(s => this.reduce((0, types_1.asJson)(s)));
|
|
41
|
+
return this.reduce((0, types_1.asJson)(source));
|
|
42
|
+
}
|
|
37
43
|
}
|
|
38
44
|
exports.View = View;
|
|
39
45
|
const skip = () => undefined;
|
package/dist/utils/View.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../src/utils/View.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../src/utils/View.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thisisagile/easy",
|
|
3
|
-
"version": "13.6.
|
|
3
|
+
"version": "13.6.11",
|
|
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": "13.6.
|
|
34
|
+
"@thisisagile/easy-test": "13.6.11",
|
|
35
35
|
"@types/form-urlencoded": "^4.4.0",
|
|
36
36
|
"@types/jsonwebtoken": "^9.0.2",
|
|
37
37
|
"@types/luxon": "3.2.0",
|
package/src/types/PageList.ts
CHANGED
|
@@ -16,7 +16,7 @@ export const toShortFilter = (field: string, shortField: string, value: any): Fi
|
|
|
16
16
|
export type PageOptions = { take?: number; skip?: number; sort?: Sort[]; sorts?: PlainSort; filters?: Filter[] };
|
|
17
17
|
export type PageList<T> = List<T> & Omit<PageOptions, 'sort'> & { total?: number };
|
|
18
18
|
|
|
19
|
-
export const isPageList = <T>(l?:
|
|
19
|
+
export const isPageList = <T>(l?: unknown): l is PageList<T> => isList<T>(l) && isA(l, 'total');
|
|
20
20
|
|
|
21
21
|
export const toPageList = <T>(items?: T[], options?: Omit<PageOptions, 'sort'> & { total?: number }): PageList<T> =>
|
|
22
22
|
on(toList<T>(...(items ?? [])) as PageList<T>, l => {
|
package/src/utils/View.ts
CHANGED
|
@@ -10,11 +10,14 @@ import {
|
|
|
10
10
|
isFunction,
|
|
11
11
|
isNumber,
|
|
12
12
|
isObject,
|
|
13
|
+
isPageList,
|
|
13
14
|
isString,
|
|
14
15
|
Json,
|
|
15
16
|
json,
|
|
16
17
|
List,
|
|
17
18
|
meta,
|
|
19
|
+
PageList,
|
|
20
|
+
toPageList,
|
|
18
21
|
tryTo,
|
|
19
22
|
} from '../types';
|
|
20
23
|
import { traverse } from './Traverse';
|
|
@@ -26,13 +29,13 @@ export type InOut = { in?: Func | View; col?: string };
|
|
|
26
29
|
const isColOnly = (v: unknown): v is InOut => isObject(v) && isDefined(v.col) && !isDefined(v.in);
|
|
27
30
|
const isInOnly = (v: unknown): v is InOut => isObject(v) && !isDefined(v.col) && isFunction(v.in);
|
|
28
31
|
const isColAndFunction = (
|
|
29
|
-
v: unknown
|
|
32
|
+
v: unknown
|
|
30
33
|
): v is {
|
|
31
34
|
col: string;
|
|
32
35
|
in: Func;
|
|
33
36
|
} => isObject(v) && isDefined(v.col) && isFunction(v.in);
|
|
34
37
|
const isColAndView = (
|
|
35
|
-
v: unknown
|
|
38
|
+
v: unknown
|
|
36
39
|
): v is {
|
|
37
40
|
col: string;
|
|
38
41
|
in: View;
|
|
@@ -47,9 +50,9 @@ const toFunc = (a: any, col: string, f: Func = a => a): Func =>
|
|
|
47
50
|
const toViewer = (key: string, value: unknown): Viewer =>
|
|
48
51
|
choose(value)
|
|
49
52
|
.is.not.defined(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
v => v,
|
|
54
|
+
() => toViewer(key, () => undefined)
|
|
55
|
+
)
|
|
53
56
|
.type(isBoolean, b => toViewer(key, () => b))
|
|
54
57
|
.type(isNumber, n => toViewer(key, () => n))
|
|
55
58
|
.type(isString, s => toViewer(key, (a: any) => toFunc(a, s)(a)))
|
|
@@ -57,7 +60,7 @@ const toViewer = (key: string, value: unknown): Viewer =>
|
|
|
57
60
|
.type(isFunction, f => toViewer(key, { in: { key, f } }))
|
|
58
61
|
.type(isInOnly, io => toViewer(key, { in: { key, f: io.in } }))
|
|
59
62
|
.type(isColAndFunction, io => toViewer(key, { in: { key, f: (a: any) => toFunc(a, io.col, io.in)(a) } }))
|
|
60
|
-
.type(isColAndView, io => toViewer(key, { in: { key, f: (a: any) =>
|
|
63
|
+
.type(isColAndView, io => toViewer(key, { in: { key, f: (a: any) => io.in.from(traverse(a, io.col)) } }))
|
|
61
64
|
.else(v => v as Viewer);
|
|
62
65
|
|
|
63
66
|
const toViewers = (views: Views): Viewer[] =>
|
|
@@ -66,15 +69,21 @@ const toViewers = (views: Views): Viewer[] =>
|
|
|
66
69
|
.map(([k, v]) => toViewer(k, v));
|
|
67
70
|
|
|
68
71
|
export class View<V = Json> {
|
|
69
|
-
constructor(private views: Views<V> = {} as Views<V>, readonly startsFrom: 'scratch' | 'source' = 'scratch', readonly viewers: Viewer[] = toViewers(views)) {
|
|
70
|
-
}
|
|
72
|
+
constructor(private views: Views<V> = {} as Views<V>, readonly startsFrom: 'scratch' | 'source' = 'scratch', readonly viewers: Viewer[] = toViewers(views)) {}
|
|
71
73
|
|
|
72
74
|
get fromSource(): View<V> {
|
|
73
75
|
return new View(this.views, 'source', this.viewers);
|
|
74
76
|
}
|
|
75
77
|
|
|
76
|
-
from
|
|
77
|
-
|
|
78
|
+
from<T = unknown>(source: PageList<T>): PageList<V>;
|
|
79
|
+
from<T = unknown>(source: List<T>): List<V>;
|
|
80
|
+
from<T = unknown>(source: T[]): V[];
|
|
81
|
+
from<T = unknown>(source: T): V;
|
|
82
|
+
from<T = unknown>(source: PageList<T> | List<T> | T[] | T): PageList<V> | List<V> | V[] | V {
|
|
83
|
+
if (isPageList(source)) return toPageList(source.map(s => this.reduce(asJson(s))), source);
|
|
84
|
+
if (isArray(source)) return source.map(s => this.reduce(asJson(s)));
|
|
85
|
+
return this.reduce(asJson(source));
|
|
86
|
+
}
|
|
78
87
|
|
|
79
88
|
same = (one?: unknown, another?: unknown): boolean => isEqual(this.from(one), this.from(another));
|
|
80
89
|
|
|
@@ -91,11 +100,11 @@ export const views = {
|
|
|
91
100
|
keepOr: (alt?: unknown) => (a: unknown, key?: string) => traverse(a, key) ?? alt,
|
|
92
101
|
or:
|
|
93
102
|
(key: string, alt = '') =>
|
|
94
|
-
|
|
95
|
-
|
|
103
|
+
(a: unknown) =>
|
|
104
|
+
traverse(a, key) ?? alt,
|
|
96
105
|
value: (value: unknown) => () => value,
|
|
97
106
|
to:
|
|
98
107
|
<T>(ctor: Constructor<T>) =>
|
|
99
|
-
|
|
100
|
-
|
|
108
|
+
(a: unknown, key?: string) =>
|
|
109
|
+
new ctor(traverse(a, key)),
|
|
101
110
|
};
|