@thisisagile/easy 14.0.0 → 14.1.1
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/resources/Req.d.ts +6 -4
- package/dist/resources/Req.js +3 -2
- package/dist/resources/Req.js.map +1 -1
- package/dist/utils/View.d.ts +1 -1
- package/dist/utils/View.js.map +1 -1
- package/package.json +2 -2
- package/src/resources/Req.ts +13 -7
- package/src/utils/View.ts +13 -12
package/dist/resources/Req.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { Id, Json, JsonValue, PageOptions, Text } from '../types';
|
|
1
|
+
import { Id, Json, JsonValue, OneOrMore, PageOptions, Text } from '../types';
|
|
2
2
|
export declare class Req implements Omit<PageOptions, 'sort'> {
|
|
3
3
|
readonly path: Json;
|
|
4
4
|
readonly query: Json;
|
|
5
5
|
readonly body: unknown;
|
|
6
|
-
|
|
7
|
-
get id(): Id;
|
|
8
|
-
get q(): JsonValue;
|
|
6
|
+
readonly headers: Record<string, OneOrMore<string>>;
|
|
9
7
|
readonly skip: import("../types").Optional<number>;
|
|
10
8
|
readonly take: import("../types").Optional<number>;
|
|
9
|
+
constructor(path: Json, query: Json, body: unknown, headers: Record<string, OneOrMore<string>>);
|
|
10
|
+
get id(): Id;
|
|
11
|
+
get q(): JsonValue;
|
|
11
12
|
get: (key: Text) => any;
|
|
12
13
|
}
|
|
13
14
|
export declare const toReq: (req: {
|
|
@@ -18,4 +19,5 @@ export declare const toReq: (req: {
|
|
|
18
19
|
q?: unknown;
|
|
19
20
|
};
|
|
20
21
|
body?: unknown;
|
|
22
|
+
headers?: unknown;
|
|
21
23
|
}) => Req;
|
package/dist/resources/Req.js
CHANGED
|
@@ -4,10 +4,11 @@ exports.toReq = exports.Req = void 0;
|
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
6
|
class Req {
|
|
7
|
-
constructor(path = {}, query = {}, body) {
|
|
7
|
+
constructor(path = {}, query = {}, body, headers) {
|
|
8
8
|
this.path = path;
|
|
9
9
|
this.query = query;
|
|
10
10
|
this.body = body;
|
|
11
|
+
this.headers = headers;
|
|
11
12
|
this.skip = (0, utils_1.ifDefined)(this.query?.skip, (0, types_1.asNumber)(this.query?.skip));
|
|
12
13
|
this.take = (0, utils_1.ifDefined)(this.query?.take, (0, types_1.asNumber)(this.query?.take));
|
|
13
14
|
this.get = (key) => this.path[key.toString()] ?? this.query[key.toString()];
|
|
@@ -20,6 +21,6 @@ class Req {
|
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
exports.Req = Req;
|
|
23
|
-
const toReq = (req) => new Req(req.params, req.query, req.body);
|
|
24
|
+
const toReq = (req) => new Req(req.params, req.query, req.body, req.headers);
|
|
24
25
|
exports.toReq = toReq;
|
|
25
26
|
//# sourceMappingURL=Req.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Req.js","sourceRoot":"","sources":["../../src/resources/Req.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Req.js","sourceRoot":"","sources":["../../src/resources/Req.ts"],"names":[],"mappings":";;;AAAA,oCAAuF;AACvF,oCAAqC;AAErC,MAAa,GAAG;IAId,YAAqB,OAAa,EAAE,EAAW,QAAc,EAAE,EAAW,IAAa,EAAW,OAA0C;QAAvH,SAAI,GAAJ,IAAI,CAAW;QAAW,UAAK,GAAL,KAAK,CAAW;QAAW,SAAI,GAAJ,IAAI,CAAS;QAAW,YAAO,GAAP,OAAO,CAAmC;QAHnI,SAAI,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAA,gBAAQ,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/D,SAAI,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAA,gBAAQ,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAaxE,QAAG,GAAG,CAAC,GAAS,EAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAVlF,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;CAGF;AAhBD,kBAgBC;AAEM,MAAM,KAAK,GAAG,CAAC,GAKrB,EAAO,EAAE,CACR,IAAI,GAAG,CAAC,GAAG,CAAC,MAAc,EAAE,GAAG,CAAC,KAAa,EAAE,GAAG,CAAC,IAAY,EAAE,GAAG,CAAC,OAA4C,CAAC,CAAC;AANxG,QAAA,KAAK,SAMmG"}
|
package/dist/utils/View.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
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
|
-
in?: Func | View
|
|
4
|
+
in?: Func | View<any>;
|
|
5
5
|
col?: string;
|
|
6
6
|
};
|
|
7
7
|
type Views<V = Json> = Partial<Record<keyof V, string | Func | InOut | number | boolean | 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,oCAqBkB;AAClB,yCAAsC;AAMtC,MAAM,SAAS,GAAG,CAAC,CAAU,EAAc,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,IAAA,iBAAS,EAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClG,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAc,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAA,kBAAU,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClG,MAAM,gBAAgB,GAAG,CACvB,CAAU,EAIV,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,IAAA,iBAAS,EAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAA,kBAAU,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzD,MAAM,YAAY,GAAG,CACnB,CAAU,EAIV,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,IAAA,iBAAS,EAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC;AAK7D,MAAM,MAAM,GAAG,CAAC,CAAM,EAAE,GAAW,EAAE,IAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAQ,EAAE,CAC7D,IAAA,aAAK,EAAC,IAAA,mBAAQ,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAA,mBAAQ,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAEvH,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAc,EAAU,EAAE,CACvD,IAAA,cAAM,EAAC,KAAK,CAAC;KACV,EAAE,CAAC,GAAG,CAAC,OAAO,
|
|
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": "14.
|
|
3
|
+
"version": "14.1.1",
|
|
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": "14.
|
|
34
|
+
"@thisisagile/easy-test": "14.1.1",
|
|
35
35
|
"@types/form-urlencoded": "^4.4.0",
|
|
36
36
|
"@types/jsonwebtoken": "^9.0.2",
|
|
37
37
|
"@types/luxon": "3.2.0",
|
package/src/resources/Req.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import { asNumber, Id, Json, JsonValue, PageOptions, Text } from '../types';
|
|
1
|
+
import { asNumber, Id, Json, JsonValue, OneOrMore, PageOptions, Text } from '../types';
|
|
2
2
|
import { ifDefined } from '../utils';
|
|
3
3
|
|
|
4
4
|
export class Req implements Omit<PageOptions, 'sort'> {
|
|
5
|
-
|
|
5
|
+
readonly skip = ifDefined(this.query?.skip, asNumber(this.query?.skip));
|
|
6
|
+
readonly take = ifDefined(this.query?.take, asNumber(this.query?.take));
|
|
7
|
+
|
|
8
|
+
constructor(readonly path: Json = {}, readonly query: Json = {}, readonly body: unknown, readonly headers: Record<string, OneOrMore<string>>) {
|
|
9
|
+
}
|
|
6
10
|
|
|
7
11
|
get id(): Id {
|
|
8
12
|
return this.get('id');
|
|
@@ -12,11 +16,13 @@ export class Req implements Omit<PageOptions, 'sort'> {
|
|
|
12
16
|
return this.get('q');
|
|
13
17
|
}
|
|
14
18
|
|
|
15
|
-
readonly skip = ifDefined(this.query?.skip, asNumber(this.query?.skip));
|
|
16
|
-
readonly take = ifDefined(this.query?.take, asNumber(this.query?.take));
|
|
17
|
-
|
|
18
19
|
get = (key: Text): any => this.path[key.toString()] ?? this.query[key.toString()];
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
export const toReq = (req: {
|
|
22
|
-
|
|
22
|
+
export const toReq = (req: {
|
|
23
|
+
params?: { id?: unknown };
|
|
24
|
+
query?: { q?: unknown };
|
|
25
|
+
body?: unknown;
|
|
26
|
+
headers?: unknown
|
|
27
|
+
}): Req =>
|
|
28
|
+
new Req(req.params as Json, req.query as Json, req.body as Json, req.headers as Record<string, OneOrMore<string>>);
|
package/src/utils/View.ts
CHANGED
|
@@ -24,18 +24,18 @@ import { traverse } from './Traverse';
|
|
|
24
24
|
|
|
25
25
|
type Func<T = unknown> = (a: any, key?: string) => T;
|
|
26
26
|
|
|
27
|
-
export type InOut = { in?: Func | View
|
|
27
|
+
export type InOut = { in?: Func | View<any>; col?: string };
|
|
28
28
|
|
|
29
29
|
const isColOnly = (v: unknown): v is InOut => isObject(v) && isDefined(v.col) && !isDefined(v.in);
|
|
30
30
|
const isInOnly = (v: unknown): v is InOut => isObject(v) && !isDefined(v.col) && isFunction(v.in);
|
|
31
31
|
const isColAndFunction = (
|
|
32
|
-
v: unknown
|
|
32
|
+
v: unknown,
|
|
33
33
|
): v is {
|
|
34
34
|
col: string;
|
|
35
35
|
in: Func;
|
|
36
36
|
} => isObject(v) && isDefined(v.col) && isFunction(v.in);
|
|
37
37
|
const isColAndView = (
|
|
38
|
-
v: unknown
|
|
38
|
+
v: unknown,
|
|
39
39
|
): v is {
|
|
40
40
|
col: string;
|
|
41
41
|
in: View;
|
|
@@ -50,9 +50,9 @@ const toFunc = (a: any, col: string, f: Func = a => a): Func =>
|
|
|
50
50
|
const toViewer = (key: string, value: unknown): Viewer =>
|
|
51
51
|
choose(value)
|
|
52
52
|
.is.not.defined(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
v => v,
|
|
54
|
+
() => toViewer(key, () => undefined),
|
|
55
|
+
)
|
|
56
56
|
.type(isBoolean, b => toViewer(key, () => b))
|
|
57
57
|
.type(isNumber, n => toViewer(key, () => n))
|
|
58
58
|
.type(isString, s => toViewer(key, (a: any) => toFunc(a, s)(a)))
|
|
@@ -69,7 +69,8 @@ const toViewers = (views: Views): Viewer[] =>
|
|
|
69
69
|
.map(([k, v]) => toViewer(k, v));
|
|
70
70
|
|
|
71
71
|
export class View<V = Json> {
|
|
72
|
-
constructor(private views: Views<V> = {} as Views<V>, readonly startsFrom: 'scratch' | 'source' = 'scratch', readonly viewers: Viewer[] = toViewers(views)) {
|
|
72
|
+
constructor(private views: Views<V> = {} as Views<V>, readonly startsFrom: 'scratch' | 'source' = 'scratch', readonly viewers: Viewer[] = toViewers(views)) {
|
|
73
|
+
}
|
|
73
74
|
|
|
74
75
|
get fromSource(): View<V> {
|
|
75
76
|
return new View(this.views, 'source', this.viewers);
|
|
@@ -83,7 +84,7 @@ export class View<V = Json> {
|
|
|
83
84
|
if (isPageList(source))
|
|
84
85
|
return toPageList(
|
|
85
86
|
source.map(s => this.reduce(asJson(s))),
|
|
86
|
-
source
|
|
87
|
+
source,
|
|
87
88
|
);
|
|
88
89
|
if (isArray(source)) return source.map(s => this.reduce(asJson(s)));
|
|
89
90
|
return this.reduce(asJson(source));
|
|
@@ -104,11 +105,11 @@ export const views = {
|
|
|
104
105
|
keepOr: (alt?: unknown) => (a: unknown, key?: string) => traverse(a, key) ?? alt,
|
|
105
106
|
or:
|
|
106
107
|
(key: string, alt = '') =>
|
|
107
|
-
|
|
108
|
-
|
|
108
|
+
(a: unknown) =>
|
|
109
|
+
traverse(a, key) ?? alt,
|
|
109
110
|
value: (value: unknown) => () => value,
|
|
110
111
|
to:
|
|
111
112
|
<T>(ctor: Constructor<T>) =>
|
|
112
|
-
|
|
113
|
-
|
|
113
|
+
(a: unknown, key?: string) =>
|
|
114
|
+
new ctor(traverse(a, key)),
|
|
114
115
|
};
|