@thisisagile/easy 14.2.0 → 14.2.3
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/Child.d.ts +1 -1
- package/dist/domain/Child.js +3 -1
- package/dist/domain/Child.js.map +1 -1
- package/dist/domain/Entity.d.ts +1 -1
- package/dist/domain/Entity.js +3 -1
- package/dist/domain/Entity.js.map +1 -1
- package/dist/domain/Struct.d.ts +3 -3
- package/dist/domain/Struct.js +9 -3
- package/dist/domain/Struct.js.map +1 -1
- package/dist/domain/structs/Box.d.ts +2 -2
- package/dist/domain/structs/Box.js +8 -6
- package/dist/domain/structs/Box.js.map +1 -1
- package/dist/domain/structs/Dimension.d.ts +3 -2
- package/dist/domain/structs/Dimension.js +9 -2
- package/dist/domain/structs/Dimension.js.map +1 -1
- package/dist/domain/structs/Money.d.ts +3 -3
- package/dist/domain/structs/Money.js +9 -3
- package/dist/domain/structs/Money.js.map +1 -1
- package/dist/domain/structs/Weight.d.ts +6 -5
- package/dist/domain/structs/Weight.js +18 -5
- package/dist/domain/structs/Weight.js.map +1 -1
- package/dist/resources/Req.js.map +1 -1
- package/dist/types/Enum.js +3 -1
- package/dist/types/Enum.js.map +1 -1
- package/dist/types/List.d.ts +16 -16
- package/dist/types/List.js +62 -39
- package/dist/types/List.js.map +1 -1
- package/dist/types/Meta.d.ts +2 -1
- package/dist/types/Meta.js.map +1 -1
- package/dist/types/PageList.js +1 -2
- package/dist/types/PageList.js.map +1 -1
- package/dist/types/Uri.d.ts +7 -3
- package/dist/types/Uri.js +10 -2
- package/dist/types/Uri.js.map +1 -1
- package/dist/utils/View.js.map +1 -1
- package/package.json +2 -2
- package/src/domain/Child.ts +3 -1
- package/src/domain/Entity.ts +3 -2
- package/src/domain/Struct.ts +9 -3
- package/src/domain/structs/Box.ts +6 -4
- package/src/domain/structs/Dimension.ts +13 -2
- package/src/domain/structs/Money.ts +9 -3
- package/src/domain/structs/Weight.ts +23 -5
- package/src/resources/Req.ts +2 -8
- package/src/types/Enum.ts +3 -1
- package/src/types/List.ts +43 -20
- package/src/types/Meta.ts +4 -2
- package/src/types/PageList.ts +11 -10
- package/src/types/Uri.ts +25 -5
- package/src/utils/View.ts +11 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageList.js","sourceRoot":"","sources":["../../src/types/PageList.ts"],"names":[],"mappings":";;;AAAA,iCAAsC;AACtC,+CAAuD;AACvD,+BAA4B;AAK5B,6BAAgC;AAChC,iCAAgC;AAKzB,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;AAKH,MAAa,QAAY,SAAQ,WAAO;IAG9B,cAAc,CAAC,OAAyB;QAC9C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,GAAG,CAAC;IACpC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"PageList.js","sourceRoot":"","sources":["../../src/types/PageList.ts"],"names":[],"mappings":";;;AAAA,iCAAsC;AACtC,+CAAuD;AACvD,+BAA4B;AAK5B,6BAAgC;AAChC,iCAAgC;AAKzB,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;AAKH,MAAa,QAAY,SAAQ,WAAO;IAG9B,cAAc,CAAC,OAAyB;QAC9C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,GAAG,CAAC;IACpC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;IAChC,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,GAAG,CAAC,CAAsB;QACxB,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,CAAsB;QACzB,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,MAAoB;QACvB,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,CAAC,MAAoB,EAAE,GAAY;QAC1C,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,CAAC,MAAoB;QAC5B,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,cAAc,CAAC,MAAoB,EAAE,GAAY;QAC/C,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,GAAG,CAAI,CAA6C,EAAE,MAAgB;QACpE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,IAAA,kBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,CAAoB,CAA4E,EAAE,MAAa;QACpH,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAI,CAA6C,EAAE,MAAgB;QAC3E,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,QAAQ,CAAC,CAAuB;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,kBAAU,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,QAAQ;QACN,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,GAAY;QACxB,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,CAAmD,EAAE,MAAgB;QAC1E,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAID,MAAM,CAAC,GAAG,KAA6B;QACrC,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,OAAO;QACL,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAID,MAAM,CAAC,KAAa,EAAE,WAAmB,EAAE,GAAG,KAAU;QACtD,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,IAAO;QACZ,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,CAAC,GAAY,EAAE,IAAO;QAC3B,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,IAAO;QACZ,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,GAAG,GAAiB;QACzB,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAc,EAAE,GAAY;QAChC,OAAO,IAAA,kBAAU,EAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;CACF;AA1HD,4BA0HC;AAEM,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,QAAa,EAAE,EAAE,OAAwD,EAAe,EAAE,CAEpH,IAAA,aAAM,EAAC,KAAK,CAAC;KACV,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAA,aAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrC,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CACjC;KACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAI,GAAG,CAAC,CAAC,CACnC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AARf,QAAA,UAAU,cAQK;AAGrB,MAAM,UAAU,GAAG,CAAO,CAAe,EAAE,QAAQ,IAAA,kBAAU,GAAK,EAAe,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,yBAAW,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAAhH,QAAA,UAAU,cAAsG"}
|
package/dist/types/Uri.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Text } from './Text';
|
|
2
2
|
import { List } from './List';
|
|
3
3
|
import { Optional } from './Types';
|
|
4
|
-
import { OneOrMore } from
|
|
4
|
+
import { OneOrMore } from './Array';
|
|
5
5
|
export type Segment = Text & {
|
|
6
6
|
key?: string;
|
|
7
7
|
segment?: string;
|
|
8
8
|
query?: (value: unknown) => string;
|
|
9
9
|
};
|
|
10
|
-
export declare const toSegment: (key?: Text, { segment, query }?: {
|
|
10
|
+
export declare const toSegment: (key?: Text, { segment, query, }?: {
|
|
11
11
|
segment?: string | undefined;
|
|
12
12
|
query?: ((value: unknown) => string) | undefined;
|
|
13
13
|
}) => Segment;
|
|
@@ -33,7 +33,10 @@ export type Uri = {
|
|
|
33
33
|
isInternal: boolean;
|
|
34
34
|
toString: () => string;
|
|
35
35
|
};
|
|
36
|
-
export
|
|
36
|
+
export type UriExpandProps = {
|
|
37
|
+
q: string;
|
|
38
|
+
};
|
|
39
|
+
export declare class EasyUri<Props = UriExpandProps> implements Uri {
|
|
37
40
|
readonly segments: Segment[];
|
|
38
41
|
static readonly id: Segment;
|
|
39
42
|
static readonly ids: Segment;
|
|
@@ -56,5 +59,6 @@ export declare class EasyUri implements Uri {
|
|
|
56
59
|
query: (q?: unknown) => this;
|
|
57
60
|
skip: (index?: number) => this;
|
|
58
61
|
take: (items?: number) => this;
|
|
62
|
+
expand(props: Partial<Props>): this;
|
|
59
63
|
}
|
|
60
64
|
export {};
|
package/dist/types/Uri.js
CHANGED
|
@@ -9,7 +9,7 @@ const List_1 = require("./List");
|
|
|
9
9
|
const Meta_1 = require("./Meta");
|
|
10
10
|
const Try_1 = require("./Try");
|
|
11
11
|
const Array_1 = require("./Array");
|
|
12
|
-
const toSegment = (key, { segment, query } = {}) => ({
|
|
12
|
+
const toSegment = (key, { segment, query, } = {}) => ({
|
|
13
13
|
key: key,
|
|
14
14
|
segment,
|
|
15
15
|
query,
|
|
@@ -62,9 +62,17 @@ class EasyUri {
|
|
|
62
62
|
return (0, Try_1.tryTo)(() => this.props)
|
|
63
63
|
.map(ps => ps.filter(p => p.segment?.segment))
|
|
64
64
|
.map(ps => ps.reduce((r, p) => r.replace((0, Text_1.asString)(p.segment.segment), (0, Text_1.asString)(p.value)), this.complete))
|
|
65
|
-
.map(route => ({
|
|
65
|
+
.map(route => ({
|
|
66
|
+
route,
|
|
67
|
+
query: this.props.mapDefined(p => (p.segment?.query ? p.segment?.query(p.value) : undefined))?.join('&'),
|
|
68
|
+
}))
|
|
66
69
|
.map(({ route, query }) => ((0, Is_1.isNotEmpty)(query) ? `${route}?${query}` : route)).value;
|
|
67
70
|
}
|
|
71
|
+
expand(props) {
|
|
72
|
+
return (0, Meta_1.meta)(props)
|
|
73
|
+
.entries()
|
|
74
|
+
.reduce((u, [k, v]) => ((0, Is_1.isBoolean)(v) ? u.set(exports.uri.boolean(k), v) : u.set(exports.uri.query(k), (0, Array_1.toArray)(v).join(','))), this);
|
|
75
|
+
}
|
|
68
76
|
}
|
|
69
77
|
EasyUri.id = exports.uri.path('id');
|
|
70
78
|
EasyUri.ids = exports.uri.query('ids');
|
package/dist/types/Uri.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Uri.js","sourceRoot":"","sources":["../../src/types/Uri.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Uri.js","sourceRoot":"","sources":["../../src/types/Uri.ts"],"names":[],"mappings":"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"}
|
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.2.
|
|
3
|
+
"version": "14.2.3",
|
|
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.2.
|
|
34
|
+
"@thisisagile/easy-test": "14.2.3",
|
|
35
35
|
"@types/form-urlencoded": "^4.4.0",
|
|
36
36
|
"@types/jsonwebtoken": "^8.5.9",
|
|
37
37
|
"@types/luxon": "3.2.0",
|
package/src/domain/Child.ts
CHANGED
|
@@ -5,5 +5,7 @@ import { required } from '../validation';
|
|
|
5
5
|
export abstract class Child extends Struct {
|
|
6
6
|
@required() readonly id: Id = this.state.id ?? toId();
|
|
7
7
|
|
|
8
|
-
protected merge
|
|
8
|
+
protected merge(a: unknown): Json {
|
|
9
|
+
return json.merge(this, a, { id: this.id });
|
|
10
|
+
}
|
|
9
11
|
}
|
package/src/domain/Entity.ts
CHANGED
|
@@ -8,10 +8,11 @@ export abstract class Entity extends Struct {
|
|
|
8
8
|
@required() readonly created: Audit = new Audit(this.state.created);
|
|
9
9
|
@required() readonly lastModified: Audit = new Audit(this.state.lastModified);
|
|
10
10
|
|
|
11
|
-
protected merge
|
|
12
|
-
json.merge(this, a, {
|
|
11
|
+
protected merge(a: unknown): Json {
|
|
12
|
+
return json.merge(this, a, {
|
|
13
13
|
id: this.id,
|
|
14
14
|
created: this.created,
|
|
15
15
|
lastModified: new Audit(),
|
|
16
16
|
});
|
|
17
|
+
}
|
|
17
18
|
}
|
package/src/domain/Struct.ts
CHANGED
|
@@ -16,9 +16,15 @@ export abstract class Struct implements Validatable {
|
|
|
16
16
|
return this.constructor.name;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
update
|
|
19
|
+
update(_add: Json): Struct {
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
20
22
|
|
|
21
|
-
protected merge
|
|
23
|
+
protected merge(a: unknown): Json {
|
|
24
|
+
return json.merge(this, a);
|
|
25
|
+
}
|
|
22
26
|
}
|
|
23
27
|
|
|
24
|
-
export
|
|
28
|
+
export function isStruct(s?: unknown): s is Struct {
|
|
29
|
+
return isDefined(s) && s instanceof Struct;
|
|
30
|
+
}
|
|
@@ -7,7 +7,7 @@ export class Box extends Struct {
|
|
|
7
7
|
@required() readonly w: Dimension = new Dimension(this.state.w);
|
|
8
8
|
@required() readonly h: Dimension = new Dimension(this.state.h);
|
|
9
9
|
|
|
10
|
-
private readonly sorted: Dimension[] = [this.l, this.w, this.h].sort((n1, n2) => n1.
|
|
10
|
+
private readonly sorted: Dimension[] = [this.l, this.w, this.h].sort((n1, n2) => n1.inMilliMeters - n2.inMilliMeters);
|
|
11
11
|
lowestDim: Dimension = this.sorted[0];
|
|
12
12
|
medianDim: Dimension = this.sorted[1];
|
|
13
13
|
maxDim: Dimension = this.sorted[2];
|
|
@@ -18,10 +18,12 @@ export class Box extends Struct {
|
|
|
18
18
|
|
|
19
19
|
static with = (l: Dimension, w: Dimension, h: Dimension) => new Box({ l, w, h });
|
|
20
20
|
|
|
21
|
-
stack
|
|
21
|
+
stack(qty: number): Box {
|
|
22
|
+
return Box.with(this.maxDim, this.medianDim, Dimension.with(this.lowestDim.value * qty, this.lowestDim.uom));
|
|
23
|
+
}
|
|
22
24
|
|
|
23
|
-
fits
|
|
25
|
+
fits(contents: Box, qty = 1): boolean {
|
|
24
26
|
const stackedContent = contents.stack(qty);
|
|
25
27
|
return this.lowestDim.gte(stackedContent.lowestDim) && this.medianDim.gte(stackedContent.medianDim) && this.maxDim.gte(stackedContent.maxDim);
|
|
26
|
-
}
|
|
28
|
+
}
|
|
27
29
|
}
|
|
@@ -8,7 +8,18 @@ export class Dimension extends Struct {
|
|
|
8
8
|
|
|
9
9
|
static with = (value: number, uom: UnitOfMeasurement = UnitOfMeasurement.MM) => new Dimension({ value, uom });
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
@deprecated use inMilliMeters getter instead
|
|
13
|
+
*/
|
|
14
|
+
sizeInMM(): number {
|
|
15
|
+
return this.inMilliMeters;
|
|
16
|
+
}
|
|
12
17
|
|
|
13
|
-
|
|
18
|
+
get inMilliMeters(): number {
|
|
19
|
+
return this.value * this.uom.mmMultiplier;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
gte(dim: Dimension): boolean {
|
|
23
|
+
return this.inMilliMeters >= dim.inMilliMeters;
|
|
24
|
+
}
|
|
14
25
|
}
|
|
@@ -7,9 +7,15 @@ export class Money extends Struct {
|
|
|
7
7
|
@required() readonly currency = Currency.byId<Currency>(this.state.currency);
|
|
8
8
|
@required() readonly value = this.state.value as number;
|
|
9
9
|
|
|
10
|
-
add
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
add(amount: number): Money {
|
|
11
|
+
return money(this.currency, this.value + amount);
|
|
12
|
+
}
|
|
13
|
+
subtract(amount: number): Money {
|
|
14
|
+
return money(this.currency, this.value - amount);
|
|
15
|
+
}
|
|
16
|
+
times(n: number): Money {
|
|
17
|
+
return money(this.currency, this.value * n);
|
|
18
|
+
}
|
|
13
19
|
|
|
14
20
|
toString(): string {
|
|
15
21
|
return text(this.currency?.code)
|
|
@@ -5,13 +5,31 @@ import { Struct } from '../Struct';
|
|
|
5
5
|
export class Weight extends Struct {
|
|
6
6
|
@required() readonly value = this.state.value as number;
|
|
7
7
|
readonly uow = UnitOfWeight.byId<UnitOfWeight>(this.state.uow, UnitOfWeight.G);
|
|
8
|
-
sizeInG = (): number => this.value * this.uow.gMultiplier;
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
/**
|
|
10
|
+
@deprecated use inGrams getter instead
|
|
11
|
+
*/
|
|
12
|
+
sizeInG(): number {
|
|
13
|
+
return this.inGrams;
|
|
14
|
+
}
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
get inGrams(): number {
|
|
17
|
+
return this.value * this.uow.gMultiplier;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
gte(w: Weight): boolean {
|
|
21
|
+
return this.inGrams >= w.inGrams;
|
|
22
|
+
}
|
|
23
|
+
lte(w: Weight): boolean {
|
|
24
|
+
return this.inGrams <= w.inGrams;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
between(lower: Weight, upper = weight(Number.MAX_VALUE, this.uow)) {
|
|
28
|
+
return this.gte(lower) && this.lte(upper);
|
|
29
|
+
}
|
|
30
|
+
sum(add: Weight): Weight {
|
|
31
|
+
return weight((this.inGrams + add.inGrams) / this.uow.gMultiplier, this.uow);
|
|
32
|
+
}
|
|
15
33
|
}
|
|
16
34
|
|
|
17
35
|
export const weight = (value: number, uow?: UnitOfWeight): Weight => new Weight({ value, uow });
|
package/src/resources/Req.ts
CHANGED
|
@@ -5,8 +5,7 @@ export class Req implements Omit<PageOptions, 'sort'> {
|
|
|
5
5
|
readonly skip = ifDefined(this.query?.skip, asNumber(this.query?.skip));
|
|
6
6
|
readonly take = ifDefined(this.query?.take, asNumber(this.query?.take));
|
|
7
7
|
|
|
8
|
-
constructor(readonly path: Json = {}, readonly query: Json = {}, readonly body: unknown, readonly headers: Record<string, OneOrMore<string>>) {
|
|
9
|
-
}
|
|
8
|
+
constructor(readonly path: Json = {}, readonly query: Json = {}, readonly body: unknown, readonly headers: Record<string, OneOrMore<string>>) {}
|
|
10
9
|
|
|
11
10
|
get id(): Id {
|
|
12
11
|
return this.get('id');
|
|
@@ -19,10 +18,5 @@ export class Req implements Omit<PageOptions, 'sort'> {
|
|
|
19
18
|
get = (key: Text): any => this.path[key.toString()] ?? this.query[key.toString()];
|
|
20
19
|
}
|
|
21
20
|
|
|
22
|
-
export const toReq = (req: {
|
|
23
|
-
params?: { id?: unknown };
|
|
24
|
-
query?: { q?: unknown };
|
|
25
|
-
body?: unknown;
|
|
26
|
-
headers?: unknown
|
|
27
|
-
}): Req =>
|
|
21
|
+
export const toReq = (req: { params?: { id?: unknown }; query?: { q?: unknown }; body?: unknown; headers?: unknown }): Req =>
|
|
28
22
|
new Req(req.params as Json, req.query as Json, req.body as Json, req.headers as Record<string, OneOrMore<string>>);
|
package/src/types/Enum.ts
CHANGED
|
@@ -32,7 +32,9 @@ export abstract class Enum implements Validatable {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
static byIds<E extends Enum>(ids: Id[] = []): List<E> {
|
|
35
|
-
return toList(ids)
|
|
35
|
+
return toList(ids)
|
|
36
|
+
.mapDefined(id => this.byId<E>(id))
|
|
37
|
+
.distinct();
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
static byId<E extends Enum>(id: Id, alt?: Get<E, unknown>): E {
|
package/src/types/List.ts
CHANGED
|
@@ -19,21 +19,37 @@ export class List<T = unknown> extends Array<T> {
|
|
|
19
19
|
return this.sort((e1, e2) => (ofProperty(e1, p) < ofProperty(e2, p) ? 1 : -1));
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
first
|
|
22
|
+
first(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {
|
|
23
|
+
return (p ? this.find(p, params) : this[0]) as T;
|
|
24
|
+
}
|
|
23
25
|
|
|
24
|
-
firstValue
|
|
26
|
+
firstValue<V>(f: (t: T) => V, alt?: Get<V, T>): Optional<V> {
|
|
27
|
+
return tryTo(() => this.first(t => !!f(t))).map(i => (i ? f(i) : ofGet(alt, i))).value;
|
|
28
|
+
}
|
|
25
29
|
|
|
26
|
-
isFirst
|
|
30
|
+
isFirst(value: T): boolean {
|
|
31
|
+
return value === this.first();
|
|
32
|
+
}
|
|
27
33
|
|
|
28
|
-
next
|
|
34
|
+
next(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {
|
|
35
|
+
return p ? this[this.findIndex(p, params) + 1] : this[0];
|
|
36
|
+
}
|
|
29
37
|
|
|
30
|
-
prev
|
|
38
|
+
prev(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {
|
|
39
|
+
return p ? this[this.findIndex(p, params) - 1] : this[0];
|
|
40
|
+
}
|
|
31
41
|
|
|
32
|
-
last
|
|
42
|
+
last(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {
|
|
43
|
+
return p ? this.filter(p, params).last() : this[this.length - 1];
|
|
44
|
+
}
|
|
33
45
|
|
|
34
|
-
isLast
|
|
46
|
+
isLast(value: T): boolean {
|
|
47
|
+
return value === this.last();
|
|
48
|
+
}
|
|
35
49
|
|
|
36
|
-
overlaps
|
|
50
|
+
overlaps(...items: ArrayLike<T>): boolean {
|
|
51
|
+
return toList<T>(...items).some(i => this.some(t => i === t));
|
|
52
|
+
}
|
|
37
53
|
|
|
38
54
|
diff(others: ArrayLike<T>): List<T> {
|
|
39
55
|
return this.filter(i => !others.includes(i));
|
|
@@ -51,11 +67,12 @@ export class List<T = unknown> extends Array<T> {
|
|
|
51
67
|
return this.filter((i: any) => others.some((o: any) => o[key] === i[key]));
|
|
52
68
|
}
|
|
53
69
|
|
|
54
|
-
toJSON
|
|
55
|
-
this.reduce((a, i) => {
|
|
70
|
+
toJSON(): Json[] {
|
|
71
|
+
return this.reduce((a, i) => {
|
|
56
72
|
a.push(json.parse(i));
|
|
57
73
|
return a;
|
|
58
74
|
}, new Array<Json>());
|
|
75
|
+
}
|
|
59
76
|
|
|
60
77
|
map<U>(f: (value: T, index: number, array: T[]) => U, params?: unknown): List<U> {
|
|
61
78
|
return toList<U>(super.map(f, params));
|
|
@@ -85,14 +102,18 @@ export class List<T = unknown> extends Array<T> {
|
|
|
85
102
|
return toList<T>(super.filter(p, params));
|
|
86
103
|
}
|
|
87
104
|
|
|
88
|
-
sum
|
|
105
|
+
sum(p: (t: T) => number): number {
|
|
106
|
+
return this.reduce((sum: number, i) => sum + p(i), 0);
|
|
107
|
+
}
|
|
89
108
|
|
|
90
|
-
byId
|
|
109
|
+
byId(id: Id): T {
|
|
110
|
+
return this.first(i => asString((i as any).id) === asString(id));
|
|
111
|
+
}
|
|
91
112
|
|
|
92
|
-
add
|
|
113
|
+
add(...items: ArrayLike<T>): this {
|
|
93
114
|
super.push(...toArray(...items));
|
|
94
115
|
return this;
|
|
95
|
-
}
|
|
116
|
+
}
|
|
96
117
|
|
|
97
118
|
concat(...items: ConcatArray<T>[]): List<T>;
|
|
98
119
|
concat(...items: (T | ConcatArray<T>)[]): List<T>;
|
|
@@ -134,31 +155,33 @@ export class List<T = unknown> extends Array<T> {
|
|
|
134
155
|
return this.reduce((l, v) => (isDefined(v) ? l.add(v) : l), toList<NonNullable<T>>());
|
|
135
156
|
}
|
|
136
157
|
|
|
137
|
-
toObject
|
|
138
|
-
this.reduce((o: any, i) => {
|
|
158
|
+
toObject(key: keyof T, options: { deleteKey?: boolean } = {}): Record<string | number | symbol, T> {
|
|
159
|
+
return this.reduce((o: any, i) => {
|
|
139
160
|
o[i[key]] = i;
|
|
140
161
|
if (options.deleteKey) delete o[i[key]][key];
|
|
141
162
|
return o;
|
|
142
163
|
}, {});
|
|
164
|
+
}
|
|
143
165
|
|
|
144
|
-
toObjectList
|
|
145
|
-
this.reduce((a, t) => {
|
|
166
|
+
toObjectList(key: keyof T): Record<string | number | symbol, List<T>> {
|
|
167
|
+
return this.reduce((a, t) => {
|
|
146
168
|
const k = t[key] as unknown as string | number | symbol;
|
|
147
169
|
a[k] = a[k] ?? toList();
|
|
148
170
|
a[k].push(t);
|
|
149
171
|
return a;
|
|
150
172
|
}, {} as Record<string | number | symbol, List<T>>);
|
|
173
|
+
}
|
|
151
174
|
|
|
152
175
|
orElse(...alt: ArrayLike<T>): Optional<List<T>> {
|
|
153
176
|
return !isEmpty(this) ? this : !isEmpty(...alt) ? toList<T>(...alt) : undefined;
|
|
154
177
|
}
|
|
155
178
|
|
|
156
|
-
weave
|
|
179
|
+
weave(insertFrom: T[], interval: number): this {
|
|
157
180
|
for (let i = interval, n = 0; i <= this.length && n < insertFrom.length; i += interval + 1) {
|
|
158
181
|
this.splice(i, 0, insertFrom[n++]);
|
|
159
182
|
}
|
|
160
183
|
return this;
|
|
161
|
-
}
|
|
184
|
+
}
|
|
162
185
|
|
|
163
186
|
slice(start?: number, end?: number): List<T> {
|
|
164
187
|
return toList(super.slice(start, end));
|
package/src/types/Meta.ts
CHANGED
|
@@ -6,6 +6,8 @@ import { Optional } from './Types';
|
|
|
6
6
|
|
|
7
7
|
type MetaParseOptions = { initial?: any; skipUndefined?: boolean };
|
|
8
8
|
|
|
9
|
+
type Entry<T = unknown> = [key: string, value: T];
|
|
10
|
+
|
|
9
11
|
class ClassMeta {
|
|
10
12
|
constructor(readonly subject: any, private readonly data: any = (subject.prototype ?? subject).constructor) {}
|
|
11
13
|
|
|
@@ -16,8 +18,8 @@ class ClassMeta {
|
|
|
16
18
|
return value;
|
|
17
19
|
};
|
|
18
20
|
|
|
19
|
-
entries = <T = unknown>(): List<
|
|
20
|
-
toList([...Object.entries(this.subject), ...Object.entries(Object.getPrototypeOf(this.subject))]) as List<
|
|
21
|
+
entries = <T = unknown>(): List<Entry<T>> =>
|
|
22
|
+
toList([...Object.entries(this.subject), ...Object.entries(Object.getPrototypeOf(this.subject))]) as List<Entry<T>>;
|
|
21
23
|
|
|
22
24
|
parse = (p: (v: unknown) => unknown, options: MetaParseOptions = {}): any => {
|
|
23
25
|
const { initial = {}, skipUndefined = false } = options;
|
package/src/types/PageList.ts
CHANGED
|
@@ -37,15 +37,15 @@ export class PageList<T> extends List<T> {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
get total(): Optional<number> {
|
|
40
|
-
return this._options?.total
|
|
40
|
+
return this._options?.total;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
get sorts(): Optional<PlainSort> {
|
|
44
|
-
return this._options?.sorts
|
|
44
|
+
return this._options?.sorts;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
get filters(): Optional<Filter[]> {
|
|
48
|
-
return this._options?.filters
|
|
48
|
+
return this._options?.filters;
|
|
49
49
|
}
|
|
50
50
|
get options(): Optional<PageListOptions> {
|
|
51
51
|
return this._options;
|
|
@@ -148,13 +148,14 @@ export class PageList<T> extends List<T> {
|
|
|
148
148
|
export const isPageList = <T>(l?: unknown): l is PageList<T> => isList<T>(l) && isA(l, 'total');
|
|
149
149
|
|
|
150
150
|
export const toPageList = <T>(items: T[] = [], options?: Omit<PageOptions, 'sort'> & { total?: number }): PageList<T> =>
|
|
151
|
-
(
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
151
|
+
(
|
|
152
|
+
choose(items)
|
|
153
|
+
.case(
|
|
154
|
+
i => i.length === 1 && isNumber(i[0]),
|
|
155
|
+
i => new PageList<T>().add(...i)
|
|
156
|
+
)
|
|
157
|
+
.else(i => new PageList<T>(...i)) as any
|
|
158
|
+
).setPageOptions(options);
|
|
158
159
|
|
|
159
160
|
/* @deprecated No longer needed as the PageList is now a class that extends from List, use the map function */
|
|
160
161
|
export const asPageList = <T, U>(c: Construct<T>, items = toPageList<U>()): PageList<T> => items.map(i => ofConstruct(c, i));
|
package/src/types/Uri.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isDefined, isNotEmpty, isTrue } from './Is';
|
|
1
|
+
import { isBoolean, isDefined, isNotEmpty, isTrue } from './Is';
|
|
2
2
|
import { asString, Text } from './Text';
|
|
3
3
|
import { toName } from './Constructor';
|
|
4
4
|
import { ctx } from './Context';
|
|
@@ -6,11 +6,20 @@ import { List, toList } from './List';
|
|
|
6
6
|
import { meta } from './Meta';
|
|
7
7
|
import { tryTo } from './Try';
|
|
8
8
|
import { Optional } from './Types';
|
|
9
|
-
import {OneOrMore, toArray} from
|
|
9
|
+
import { OneOrMore, toArray } from './Array';
|
|
10
10
|
|
|
11
11
|
export type Segment = Text & { key?: string; segment?: string; query?: (value: unknown) => string };
|
|
12
12
|
|
|
13
|
-
export const toSegment = (
|
|
13
|
+
export const toSegment = (
|
|
14
|
+
key?: Text,
|
|
15
|
+
{
|
|
16
|
+
segment,
|
|
17
|
+
query,
|
|
18
|
+
}: {
|
|
19
|
+
segment?: string;
|
|
20
|
+
query?: (value: unknown) => string;
|
|
21
|
+
} = {}
|
|
22
|
+
): Segment => ({
|
|
14
23
|
key: key as string,
|
|
15
24
|
segment,
|
|
16
25
|
query,
|
|
@@ -44,7 +53,9 @@ export type Uri = {
|
|
|
44
53
|
toString: () => string;
|
|
45
54
|
};
|
|
46
55
|
|
|
47
|
-
export
|
|
56
|
+
export type UriExpandProps = { q: string };
|
|
57
|
+
|
|
58
|
+
export class EasyUri<Props = UriExpandProps> implements Uri {
|
|
48
59
|
static readonly id = uri.path('id');
|
|
49
60
|
static readonly ids = uri.query('ids');
|
|
50
61
|
static readonly query = uri.query('q');
|
|
@@ -87,7 +98,10 @@ export class EasyUri implements Uri {
|
|
|
87
98
|
return tryTo(() => this.props)
|
|
88
99
|
.map(ps => ps.filter(p => p.segment?.segment))
|
|
89
100
|
.map(ps => ps.reduce((r: string, p: Prop) => r.replace(asString(p.segment.segment), asString(p.value)), this.complete))
|
|
90
|
-
.map(route => ({
|
|
101
|
+
.map(route => ({
|
|
102
|
+
route,
|
|
103
|
+
query: this.props.mapDefined(p => (p.segment?.query ? p.segment?.query(p.value) : undefined))?.join('&'),
|
|
104
|
+
}))
|
|
91
105
|
.map(({ route, query }) => (isNotEmpty(query) ? `${route}?${query}` : route)).value;
|
|
92
106
|
}
|
|
93
107
|
|
|
@@ -97,4 +111,10 @@ export class EasyUri implements Uri {
|
|
|
97
111
|
|
|
98
112
|
skip = (index?: number): this => this.set(EasyUri.skip, index);
|
|
99
113
|
take = (items?: number): this => this.set(EasyUri.take, items);
|
|
114
|
+
|
|
115
|
+
expand(props: Partial<Props>): this {
|
|
116
|
+
return meta(props)
|
|
117
|
+
.entries()
|
|
118
|
+
.reduce((u, [k, v]) => (isBoolean(v) ? u.set(uri.boolean(k), v) : u.set(uri.query(k), toArray(v).join(','))), this);
|
|
119
|
+
}
|
|
100
120
|
}
|