@thisisagile/easy 9.5.9 → 10.2.0
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/Audit.js +1 -2
- package/dist/domain/Audit.js.map +1 -1
- package/dist/http/RestResult.js +2 -3
- package/dist/http/RestResult.js.map +1 -1
- package/dist/process/Search.js +2 -2
- package/dist/process/Search.js.map +1 -1
- package/dist/services/AxiosProvider.d.ts +1 -1
- package/dist/services/AxiosProvider.js +2 -3
- package/dist/services/AxiosProvider.js.map +1 -1
- package/dist/types/Case.d.ts +17 -0
- package/dist/{utils → types}/Case.js +21 -11
- package/dist/types/Case.js.map +1 -0
- package/dist/types/Is.js +1 -1
- package/dist/types/Is.js.map +1 -1
- package/dist/types/IsEqual.d.ts +1 -0
- package/dist/types/IsEqual.js +21 -0
- package/dist/types/IsEqual.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/View.js +2 -2
- package/dist/utils/View.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/validation/Validate.js +2 -3
- package/dist/validation/Validate.js.map +1 -1
- package/package.json +2 -2
- package/src/domain/Audit.ts +2 -3
- package/src/http/RestResult.ts +16 -4
- package/src/process/Search.ts +4 -4
- package/src/services/AxiosProvider.ts +21 -6
- package/src/types/Case.ts +58 -0
- package/src/types/Is.ts +1 -1
- package/src/types/IsEqual.ts +22 -0
- package/src/types/index.ts +2 -0
- package/src/utils/View.ts +2 -2
- package/src/utils/index.ts +0 -1
- package/src/validation/Validate.ts +3 -4
- package/dist/utils/Case.d.ts +0 -19
- package/dist/utils/Case.js.map +0 -1
- package/src/utils/Case.ts +0 -45
package/dist/domain/Audit.js
CHANGED
|
@@ -13,11 +13,10 @@ exports.Audit = void 0;
|
|
|
13
13
|
const Struct_1 = require("./Struct");
|
|
14
14
|
const types_1 = require("../types");
|
|
15
15
|
const validation_1 = require("../validation");
|
|
16
|
-
const utils_1 = require("../utils");
|
|
17
16
|
const values_1 = require("./values");
|
|
18
17
|
class Audit extends Struct_1.Struct {
|
|
19
18
|
constructor(a) {
|
|
20
|
-
super((0,
|
|
19
|
+
super((0, types_1.choose)(a)
|
|
21
20
|
.type(types_1.isDefined, (j) => j)
|
|
22
21
|
.else({ by: types_1.ctx.request?.identity ?? { id: 0, user: 'easy' }, when: values_1.DateTime.now.toJSON() }));
|
|
23
22
|
this.by = { id: this.state.by.id, user: this.state.by.user };
|
package/dist/domain/Audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Audit.js","sourceRoot":"","sources":["../../src/domain/Audit.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"Audit.js","sourceRoot":"","sources":["../../src/domain/Audit.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAkC;AAClC,oCAA4D;AAC5D,8CAAgD;AAChD,qCAAoC;AAEpC,MAAa,KAAM,SAAQ,eAAM;IAI/B,YAAY,CAAQ;QAClB,KAAK,CACH,IAAA,cAAM,EAAC,CAAC,CAAC;aACN,IAAI,CAAC,iBAAS,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC;aAClC,IAAI,CAAC,EAAE,EAAE,EAAE,WAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/F,CAAC;QARiB,OAAE,GAA6B,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACrF,SAAI,GAAa,IAAI,iBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAQjE,CAAC;CACF;AAVa;IAAX,IAAA,qBAAQ,GAAE;;iCAA4F;AAC9F;IAAR,IAAA,kBAAK,GAAE;8BAAgB,iBAAQ;mCAAiC;AAFnE,sBAWC"}
|
package/dist/http/RestResult.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isRestResult = exports.rest = void 0;
|
|
4
4
|
const types_1 = require("../types");
|
|
5
|
-
const utils_1 = require("../utils");
|
|
6
5
|
const HttpStatus_1 = require("./HttpStatus");
|
|
7
6
|
const Response_1 = require("./Response");
|
|
8
7
|
const hasErrors = (a) => (0, types_1.isDefined)(a?.error?.errors);
|
|
@@ -23,8 +22,8 @@ exports.rest = {
|
|
|
23
22
|
errorCount: errors.length,
|
|
24
23
|
},
|
|
25
24
|
}),
|
|
26
|
-
to: (payload, status) => (0,
|
|
27
|
-
.type(types_1.isUndefined,
|
|
25
|
+
to: (payload, status) => (0, types_1.choose)(payload)
|
|
26
|
+
.type(types_1.isUndefined, () => undefined)
|
|
28
27
|
.type(HttpStatus_1.isHttpStatus, h => exports.rest.toError(h ?? status ?? HttpStatus_1.HttpStatus.InternalServerError, [(0, types_1.toResult)(h.name)]))
|
|
29
28
|
.type(types_1.isResult, r => exports.rest.toError(status ?? HttpStatus_1.HttpStatus.BadRequest, [r]))
|
|
30
29
|
.type(types_1.isError, e => exports.rest.toError(status ?? HttpStatus_1.HttpStatus.BadRequest, [e]))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RestResult.js","sourceRoot":"","sources":["../../src/http/RestResult.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"RestResult.js","sourceRoot":"","sources":["../../src/http/RestResult.ts"],"names":[],"mappings":"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"}
|
package/dist/process/Search.js
CHANGED
|
@@ -10,8 +10,8 @@ class Search {
|
|
|
10
10
|
this.byId = (id) => this.repo.byId(id);
|
|
11
11
|
this.byIds = (...ids) => this.repo.byIds(...ids);
|
|
12
12
|
this.byKey = (key) => this.repo.byKey(key);
|
|
13
|
-
this.search = (query) => (0,
|
|
14
|
-
.
|
|
13
|
+
this.search = (query) => (0, types_1.choose)(query)
|
|
14
|
+
.case(types_1.isNotEmpty, q => this.repo.search(q))
|
|
15
15
|
.else((0, utils_1.resolve)((0, types_1.toList)()));
|
|
16
16
|
this.exists = (id) => this.repo.exists(id);
|
|
17
17
|
}
|
|
@@ -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,oCAAgF;AAChF,oCAAmC;AAEnC,MAAa,MAAM;IACjB,YAAsB,IAAa;QAAb,SAAI,GAAJ,IAAI,CAAS;QAEnC,QAAG,GAAG,GAAqB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAE9C,SAAI,GAAG,CAAC,EAAM,EAAc,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAElD,UAAK,GAAG,CAAC,GAAG,GAAS,EAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;QAEpE,UAAK,GAAG,CAAC,GAAQ,EAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7D,WAAM,GAAG,CAAC,KAAgB,EAAoB,EAAE,CAC9C,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;IAftB,CAAC;CAgBxC;AAjBD,wBAiBC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Request, RequestProvider, Response } from '../http';
|
|
2
2
|
export declare class AxiosProvider implements RequestProvider {
|
|
3
|
-
execute: ({ uri, verb, body, transform, transformError, options }: Request) => Promise<Response>;
|
|
3
|
+
execute: ({ uri, verb, body, transform, transformError, options, }: Request) => Promise<Response>;
|
|
4
4
|
}
|
|
@@ -7,16 +7,15 @@ exports.AxiosProvider = void 0;
|
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const http_1 = require("../http");
|
|
9
9
|
const types_1 = require("../types");
|
|
10
|
-
const utils_1 = require("../utils");
|
|
11
10
|
const isResponse = (a) => (0, types_1.isDefined)(a?.response);
|
|
12
11
|
const isRequest = (a) => (0, types_1.isDefined)(a?.request);
|
|
13
|
-
const asResponse = (uri, verb, error) => (0,
|
|
12
|
+
const asResponse = (uri, verb, error) => (0, types_1.choose)(error)
|
|
14
13
|
.type(isResponse, r => (0, http_1.toResponse)(r.response.status, (0, http_1.isRestResult)(r.response.data) ? r.response.data : (0, types_1.toResult)(r.response.statusText, uri.path, uri), r.response.headers))
|
|
15
14
|
.type(isRequest, r => (0, http_1.toResponse)(r.request.status, (0, types_1.toResult)(r.request.message, uri.path, uri)))
|
|
16
15
|
.else(e => (0, http_1.toResponse)(http_1.HttpStatus.InternalServerError, (0, types_1.toResult)(e.message, uri.path, uri)));
|
|
17
16
|
class AxiosProvider {
|
|
18
17
|
constructor() {
|
|
19
|
-
this.execute = ({ uri, verb, body, transform = (r) => r, transformError = (r) => r, options = http_1.RequestOptions.Json }) => axios_1.default
|
|
18
|
+
this.execute = ({ uri, verb, body, transform = (r) => r, transformError = (r) => r, options = http_1.RequestOptions.Json, }) => axios_1.default
|
|
20
19
|
.request({
|
|
21
20
|
url: uri.toString(),
|
|
22
21
|
method: verb.toString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AxiosProvider.js","sourceRoot":"","sources":["../../src/services/AxiosProvider.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAiE;AACjE,
|
|
1
|
+
{"version":3,"file":"AxiosProvider.js","sourceRoot":"","sources":["../../src/services/AxiosProvider.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAiE;AACjE,kCASiB;AACjB,oCAA0E;AAE1E,MAAM,UAAU,GAAG,CAAC,CAAU,EAAoC,EAAE,CAAC,IAAA,iBAAS,EAAE,CAAS,EAAE,QAAQ,CAAC,CAAC;AACrG,MAAM,SAAS,GAAG,CAAC,CAAU,EAAyB,EAAE,CAAC,IAAA,iBAAS,EAAE,CAAS,EAAE,OAAO,CAAC,CAAC;AAExF,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAE,IAAc,EAAE,KAAiB,EAAY,EAAE,CAC3E,IAAA,cAAM,EAAC,KAAK,CAAC;KACV,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CACpB,IAAA,iBAAU,EAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAA,mBAAY,EAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACpJ;KACA,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAU,EAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAA,gBAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;KAC9F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAU,EAAC,iBAAU,CAAC,mBAAmB,EAAE,IAAA,gBAAQ,EAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAE/F,MAAa,aAAa;IAA1B;QACE,YAAO,GAAG,CAAC,EACE,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,SAAS,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EACzB,cAAc,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAC9B,OAAO,GAAG,qBAAc,CAAC,IAAI,GACrB,EAAqB,EAAE,CAC1C,eAAK;aACF,OAAO,CAAC;YACP,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;YACnB,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAY;YACjC,OAAO,EAAE,GAAG,CAAC,UAAU,IAAI,IAAA,eAAO,EAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;YAC7H,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;SAChC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAU,EAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;aAC7D,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;CAAA;AAlBD,sCAkBC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Func, Get, Predicate } from './index';
|
|
2
|
+
declare class CaseBuilder<V> {
|
|
3
|
+
readonly v: V;
|
|
4
|
+
constructor(v: V);
|
|
5
|
+
case<T>(pred: Predicate<V>, out: Func<T, V>): Case<T, V>;
|
|
6
|
+
type<T, U = unknown>(guard: (u: unknown) => u is U, out: Func<T, U>): Case<T, V>;
|
|
7
|
+
}
|
|
8
|
+
declare class Case<T, V = unknown> {
|
|
9
|
+
protected value: V;
|
|
10
|
+
protected outcome?: T | undefined;
|
|
11
|
+
constructor(value: V, outcome?: T | undefined);
|
|
12
|
+
case(pred: Predicate<V>, out: Func<T, V>): Case<T, V>;
|
|
13
|
+
type<U>(guard: (u: unknown) => u is U, out: Func<T, U>): Case<T, V>;
|
|
14
|
+
else(alt: Get<T, V>): T;
|
|
15
|
+
}
|
|
16
|
+
export declare const choose: <V>(value: V) => CaseBuilder<V>;
|
|
17
|
+
export {};
|
|
@@ -1,28 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.choose =
|
|
4
|
-
const
|
|
3
|
+
exports.choose = void 0;
|
|
4
|
+
const index_1 = require("./index");
|
|
5
|
+
class CaseBuilder {
|
|
6
|
+
constructor(v) {
|
|
7
|
+
this.v = v;
|
|
8
|
+
}
|
|
9
|
+
case(pred, out) {
|
|
10
|
+
return new Case(this.v).case(pred, out);
|
|
11
|
+
}
|
|
12
|
+
type(guard, out) {
|
|
13
|
+
return new Case(this.v).type(guard, out);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
5
16
|
class Case {
|
|
6
17
|
constructor(value, outcome) {
|
|
7
18
|
this.value = value;
|
|
8
19
|
this.outcome = outcome;
|
|
9
20
|
}
|
|
10
21
|
case(pred, out) {
|
|
11
|
-
return (0,
|
|
22
|
+
return (0, index_1.tryTo)(pred, this.value)
|
|
12
23
|
.is.true()
|
|
13
|
-
.map(() => (
|
|
24
|
+
.map(() => out(this.value))
|
|
14
25
|
.map(res => new Found(this.value, res))
|
|
15
26
|
.or(this);
|
|
16
27
|
}
|
|
17
|
-
type(
|
|
18
|
-
return (0,
|
|
28
|
+
type(guard, out) {
|
|
29
|
+
return (0, index_1.tryTo)(guard, this.value)
|
|
19
30
|
.is.true()
|
|
20
|
-
.map(() => (
|
|
31
|
+
.map(() => out(this.value))
|
|
21
32
|
.map(res => new Found(this.value, res))
|
|
22
33
|
.or(this);
|
|
23
34
|
}
|
|
24
35
|
else(alt) {
|
|
25
|
-
return (0,
|
|
36
|
+
return (0, index_1.ofGet)(alt, this.value);
|
|
26
37
|
}
|
|
27
38
|
}
|
|
28
39
|
class Found extends Case {
|
|
@@ -34,14 +45,13 @@ class Found extends Case {
|
|
|
34
45
|
case(pred, out) {
|
|
35
46
|
return this;
|
|
36
47
|
}
|
|
37
|
-
type(
|
|
48
|
+
type(guard, out) {
|
|
38
49
|
return this;
|
|
39
50
|
}
|
|
40
51
|
else(alt) {
|
|
41
52
|
return this.outcome;
|
|
42
53
|
}
|
|
43
54
|
}
|
|
44
|
-
|
|
45
|
-
const choose = (value) => new Case(value);
|
|
55
|
+
const choose = (value) => new CaseBuilder(value);
|
|
46
56
|
exports.choose = choose;
|
|
47
57
|
//# sourceMappingURL=Case.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Case.js","sourceRoot":"","sources":["../../src/types/Case.ts"],"names":[],"mappings":";;;AAAA,mCAA6D;AAE7D,MAAM,WAAW;IACf,YAAqB,CAAI;QAAJ,MAAC,GAAD,CAAC,CAAG;IACzB,CAAC;IAED,IAAI,CAAI,IAAkB,EAAE,GAAe;QACzC,OAAO,IAAI,IAAI,CAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAiB,KAA6B,EAAE,GAAe;QACjE,OAAO,IAAI,IAAI,CAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAI,KAAK,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,IAAI;IACR,YAAsB,KAAQ,EAAY,OAAW;QAA/B,UAAK,GAAL,KAAK,CAAG;QAAY,YAAO,GAAP,OAAO,CAAI;IAAG,CAAC;IAEzD,IAAI,CAAC,IAAkB,EAAE,GAAe;QACtC,OAAO,IAAA,aAAK,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;aAC3B,EAAE,CAAC,IAAI,EAAE;aACT,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAe,CAAC;aACpD,EAAE,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,IAAI,CAAI,KAA6B,EAAE,GAAe;QACpD,OAAO,IAAA,aAAK,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;aAC5B,EAAE,CAAC,IAAI,EAAE;aACT,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAqB,CAAC,CAAC;aAC1C,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAe,CAAC;aACpD,EAAE,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,IAAI,CAAC,GAAc;QACjB,OAAO,IAAA,aAAK,EAAO,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,KAAY,SAAQ,IAAU;IAClC,YAAsB,KAAQ,EAAY,OAAU;QAClD,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QADF,UAAK,GAAL,KAAK,CAAG;QAAY,YAAO,GAAP,OAAO,CAAG;IAEpD,CAAC;IAED,IAAI,CAAC,IAAkB,EAAE,GAAe;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAI,KAA6B,EAAE,GAAe;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,GAAc;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAEM,MAAM,MAAM,GAAG,CAAI,KAAQ,EAAE,EAAE,CAAC,IAAI,WAAW,CAAI,KAAK,CAAC,CAAC;AAApD,QAAA,MAAM,UAA8C"}
|
package/dist/types/Is.js
CHANGED
|
@@ -19,7 +19,7 @@ const isTrue = (o) => ((0, exports.isFunction)(o) ? (0, exports.isTrue)(o()) : (
|
|
|
19
19
|
exports.isTrue = isTrue;
|
|
20
20
|
const isNumber = (o) => (0, exports.isDefined)(o) && typeof o === 'number' && !Number.isNaN(o);
|
|
21
21
|
exports.isNumber = isNumber;
|
|
22
|
-
const isObject = (o) => o != null && (typeof o === 'object'
|
|
22
|
+
const isObject = (o) => o != null && (typeof o === 'object') && !(0, exports.isArray)(o);
|
|
23
23
|
exports.isObject = isObject;
|
|
24
24
|
const isEmptyObject = (o) => (0, exports.isObject)(o) && Object.getOwnPropertyNames(o).length === 0;
|
|
25
25
|
exports.isEmptyObject = isEmptyObject;
|
package/dist/types/Is.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Is.js","sourceRoot":"","sources":["../../src/types/Is.ts"],"names":[],"mappings":";;;AAEO,MAAM,SAAS,GAAG,CAAc,CAAK,EAAuB,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;AAAvF,QAAA,SAAS,aAA8E;AAE7F,MAAM,WAAW,GAAG,CAAC,CAAW,EAAc,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;AAAzE,QAAA,WAAW,eAA8D;AAE/E,MAAM,OAAO,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAAhH,QAAA,OAAO,WAAyG;AAEtH,MAAM,UAAU,GAAG,CAAc,CAAW,EAAuB,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAA3I,QAAA,UAAU,cAAiI;AAEjJ,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAe,EAAE,CAAC,CAAC,YAAY,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;AAAtF,QAAA,QAAQ,YAA8E;AAE5F,MAAM,eAAe,GAAG,CAAC,CAAW,EAAe,EAAE,CAC1D,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,4EAA4E,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AADzF,QAAA,eAAe,mBAC0E;AAE/F,MAAM,SAAS,GAAG,CAAC,CAAW,EAAgB,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,SAAS,CAAC;AAAlF,QAAA,SAAS,aAAyE;AAExF,MAAM,MAAM,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,cAAM,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAA1F,QAAA,MAAM,UAAoF;AAEhG,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAe,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAAnG,QAAA,QAAQ,YAA2F;AAEzG,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAgC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"Is.js","sourceRoot":"","sources":["../../src/types/Is.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isEqual: (one?: unknown, another?: unknown) => boolean;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEqual = void 0;
|
|
4
|
+
const Is_1 = require("./Is");
|
|
5
|
+
const Case_1 = require("./Case");
|
|
6
|
+
const isEqualArray = (one, another) => (0, Case_1.choose)([one, another])
|
|
7
|
+
.case(([o, a]) => !(0, Is_1.isArray)(o) || !(0, Is_1.isArray)(a), () => false)
|
|
8
|
+
.case(([o, a]) => o?.length !== a?.length, () => false)
|
|
9
|
+
.else(([o, a]) => !o.some((v, i) => !(0, exports.isEqual)(v, a[i])));
|
|
10
|
+
const isEqualObject = (one, another) => (0, Case_1.choose)([Object.keys(one), Object.keys(another)])
|
|
11
|
+
.case(([keysO, keysA]) => keysO.length !== keysA.length, () => false)
|
|
12
|
+
.case(([keysO, keysA]) => keysO.some(k => !keysA.includes(k)), () => false)
|
|
13
|
+
.case(([keysO]) => keysO.some(k => !(0, exports.isEqual)(one[k], another[k])), () => false)
|
|
14
|
+
.else(true);
|
|
15
|
+
const isEqual = (one, another) => (0, Case_1.choose)([one, another])
|
|
16
|
+
.case(([o, a]) => o === a, () => true)
|
|
17
|
+
.case(([o, a]) => (0, Is_1.isArray)(o) || (0, Is_1.isArray)(a), ([o, a]) => isEqualArray(o, a))
|
|
18
|
+
.case(([o, a]) => o == null || a == null || (!(0, Is_1.isObject)(o) && !(0, Is_1.isObject)(a)), ([o, a]) => o !== o && a !== a)
|
|
19
|
+
.else(([o, a]) => isEqualObject(o, a));
|
|
20
|
+
exports.isEqual = isEqual;
|
|
21
|
+
//# sourceMappingURL=IsEqual.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsEqual.js","sourceRoot":"","sources":["../../src/types/IsEqual.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './Array';
|
|
2
2
|
export * from './Builder';
|
|
3
|
+
export * from './Case';
|
|
3
4
|
export * from './Constructor';
|
|
4
5
|
export * from './Context';
|
|
5
6
|
export * from './Enum';
|
|
@@ -13,6 +14,7 @@ export * from './Identity';
|
|
|
13
14
|
export * from './Is';
|
|
14
15
|
export * from './IsA';
|
|
15
16
|
export * from './IsDate';
|
|
17
|
+
export * from './IsEqual';
|
|
16
18
|
export * from './Json';
|
|
17
19
|
export * from './List';
|
|
18
20
|
export * from './Message';
|
package/dist/types/index.js
CHANGED
|
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./Array"), exports);
|
|
18
18
|
__exportStar(require("./Builder"), exports);
|
|
19
|
+
__exportStar(require("./Case"), exports);
|
|
19
20
|
__exportStar(require("./Constructor"), exports);
|
|
20
21
|
__exportStar(require("./Context"), exports);
|
|
21
22
|
__exportStar(require("./Enum"), exports);
|
|
@@ -29,6 +30,7 @@ __exportStar(require("./Identity"), exports);
|
|
|
29
30
|
__exportStar(require("./Is"), exports);
|
|
30
31
|
__exportStar(require("./IsA"), exports);
|
|
31
32
|
__exportStar(require("./IsDate"), exports);
|
|
33
|
+
__exportStar(require("./IsEqual"), exports);
|
|
32
34
|
__exportStar(require("./Json"), exports);
|
|
33
35
|
__exportStar(require("./List"), exports);
|
|
34
36
|
__exportStar(require("./Message"), exports);
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,gDAA8B;AAC9B,4CAA0B;AAC1B,yCAAuB;AACvB,gDAA8B;AAC9B,8CAA4B;AAC5B,yCAAuB;AACvB,4CAA0B;AAC1B,wCAAsB;AACtB,uCAAqB;AACrB,6CAA2B;AAC3B,uCAAqB;AACrB,wCAAsB;AACtB,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB;AACvB,4CAA0B;AAC1B,yCAAuB;AACvB,2CAAyB;AACzB,2CAAyB;AACzB,4CAA0B;AAC1B,wCAAsB;AACtB,6CAA2B;AAC3B,yCAAuB;AACvB,wCAAsB;AACtB,wCAAsB;AACtB,yCAAuB;AACvB,gDAA8B;AAC9B,0CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,yCAAuB;AACvB,gDAA8B;AAC9B,4CAA0B;AAC1B,yCAAuB;AACvB,gDAA8B;AAC9B,8CAA4B;AAC5B,yCAAuB;AACvB,4CAA0B;AAC1B,wCAAsB;AACtB,uCAAqB;AACrB,6CAA2B;AAC3B,uCAAqB;AACrB,wCAAsB;AACtB,2CAAyB;AACzB,4CAA0B;AAC1B,yCAAuB;AACvB,yCAAuB;AACvB,4CAA0B;AAC1B,yCAAuB;AACvB,2CAAyB;AACzB,2CAAyB;AACzB,4CAA0B;AAC1B,wCAAsB;AACtB,6CAA2B;AAC3B,yCAAuB;AACvB,wCAAsB;AACtB,wCAAsB;AACtB,yCAAuB;AACvB,gDAA8B;AAC9B,0CAAwB"}
|
package/dist/utils/View.js
CHANGED
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.views = exports.view = exports.skip = exports.View = void 0;
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const Traverse_1 = require("./Traverse");
|
|
6
|
-
const
|
|
6
|
+
const types_2 = require("../types");
|
|
7
7
|
const isColOnly = (v) => (0, types_1.isObject)(v) && (0, types_1.isDefined)(v.col) && !(0, types_1.isDefined)(v.in);
|
|
8
8
|
const isInOnly = (v) => (0, types_1.isObject)(v) && !(0, types_1.isDefined)(v.col) && (0, types_1.isFunction)(v.in);
|
|
9
9
|
const isColAndFunction = (v) => (0, types_1.isObject)(v) && (0, types_1.isDefined)(v.col) && (0, types_1.isFunction)(v.in);
|
|
10
10
|
const isColAndView = (v) => (0, types_1.isObject)(v) && (0, types_1.isDefined)(v.col) && v.in instanceof View;
|
|
11
11
|
const toFunc = (a, col, f = a => a) => (0, types_1.tryTo)((0, Traverse_1.traverse)(a, col)).map(v => ((0, types_1.isArray)(v) ? () => v.map(i => f(i)) : (a) => f((0, Traverse_1.traverse)(a, col)))).value;
|
|
12
|
-
const toViewer = (key, value) => (0,
|
|
12
|
+
const toViewer = (key, value) => (0, types_2.choose)(value)
|
|
13
13
|
.type(types_1.isUndefined, () => toViewer(key, () => undefined))
|
|
14
14
|
.type(types_1.isBoolean, b => toViewer(key, () => b))
|
|
15
15
|
.type(types_1.isNumber, n => toViewer(key, () => n))
|
package/dist/utils/View.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../src/utils/View.ts"],"names":[],"mappings":";;;AAAA,oCAAiJ;AACjJ,yCAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../src/utils/View.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
|
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./Case"), exports);
|
|
18
17
|
__exportStar(require("./Convert"), exports);
|
|
19
18
|
__exportStar(require("./If"), exports);
|
|
20
19
|
__exportStar(require("./Log"), exports);
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,uCAAqB;AACrB,wCAAsB;AACtB,2CAAyB;AACzB,4CAA0B;AAC1B,6CAA2B;AAC3B,0CAAwB;AACxB,6CAA2B;AAC3B,6CAA2B;AAC3B,yCAAuB"}
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.validateReject = exports.validate = exports.asResults = void 0;
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const When_1 = require("./When");
|
|
6
|
-
const utils_1 = require("../utils");
|
|
7
6
|
const asResults = (subject, template, options = {}) => (0, types_1.toResults)((0, types_1.toResult)((0, types_1.text)(template).parse(subject, options), (0, types_1.toName)(subject)));
|
|
8
7
|
exports.asResults = asResults;
|
|
9
8
|
const validators = (subject) => (0, types_1.meta)(subject)
|
|
@@ -16,8 +15,8 @@ const runValidator = (v, subject) => (0, types_1.tryTo)(() => subject[v.property
|
|
|
16
15
|
const constraints = (subject) => (0, types_1.tryTo)(() => validators(subject))
|
|
17
16
|
.map(vs => vs.mapDefined(v => runValidator(v, subject)))
|
|
18
17
|
.map(res => res.reduce((rs, r) => rs.add(...r.results), (0, types_1.toResults)())).value;
|
|
19
|
-
const validate = (subject) => (0,
|
|
20
|
-
.type(types_1.isUndefined,
|
|
18
|
+
const validate = (subject) => (0, types_1.choose)(subject)
|
|
19
|
+
.type(types_1.isUndefined, () => (0, types_1.toResults)('Subject is not defined.'))
|
|
21
20
|
.type(types_1.isEnum, e => (e.isValid ? (0, types_1.toResults)() : (0, exports.asResults)(e, 'This is not a valid {type}.')))
|
|
22
21
|
.type(types_1.isValue, v => (v.isValid ? (0, types_1.toResults)() : (0, exports.asResults)(v, 'This is not a valid {type}.')))
|
|
23
22
|
.type(types_1.isArray, a => a.map(i => (0, exports.validate)(i)).reduce((rs, r) => rs.add(...r.results), (0, types_1.toResults)()))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validate.js","sourceRoot":"","sources":["../../src/validation/Validate.ts"],"names":[],"mappings":";;;AAAA,oCAmBkB;AAElB,iCAA8B;
|
|
1
|
+
{"version":3,"file":"Validate.js","sourceRoot":"","sources":["../../src/validation/Validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thisisagile/easy",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.2.0",
|
|
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": "
|
|
34
|
+
"@thisisagile/easy-test": "10.2.0",
|
|
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/Audit.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Struct } from './Struct';
|
|
2
|
-
import { ctx, Id, isDefined, Json } from '../types';
|
|
2
|
+
import { choose, ctx, Id, isDefined, Json } from '../types';
|
|
3
3
|
import { required, valid } from '../validation';
|
|
4
|
-
import { choose } from '../utils';
|
|
5
4
|
import { DateTime } from './values';
|
|
6
5
|
|
|
7
6
|
export class Audit extends Struct {
|
|
@@ -11,7 +10,7 @@ export class Audit extends Struct {
|
|
|
11
10
|
constructor(a?: Json) {
|
|
12
11
|
super(
|
|
13
12
|
choose(a)
|
|
14
|
-
.type(isDefined, (j:
|
|
13
|
+
.type(isDefined, (j: unknown) => j)
|
|
15
14
|
.else({ by: ctx.request?.identity ?? { id: 0, user: 'easy' }, when: DateTime.now.toJSON() })
|
|
16
15
|
);
|
|
17
16
|
}
|
package/src/http/RestResult.ts
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
choose,
|
|
3
|
+
Id,
|
|
4
|
+
isDefined,
|
|
5
|
+
isError,
|
|
6
|
+
isResult,
|
|
7
|
+
isResults,
|
|
8
|
+
isUndefined,
|
|
9
|
+
Json,
|
|
10
|
+
List,
|
|
11
|
+
Result,
|
|
12
|
+
toList,
|
|
13
|
+
toResult,
|
|
14
|
+
} from '../types';
|
|
3
15
|
import { HttpStatus, isHttpStatus } from './HttpStatus';
|
|
4
16
|
import { isResponse } from './Response';
|
|
5
17
|
|
|
@@ -28,8 +40,8 @@ export const rest = {
|
|
|
28
40
|
},
|
|
29
41
|
}),
|
|
30
42
|
to: (payload?: any | any[], status?: HttpStatus): RestResult =>
|
|
31
|
-
choose
|
|
32
|
-
.type(isUndefined,
|
|
43
|
+
choose(payload)
|
|
44
|
+
.type(isUndefined, () => undefined as unknown as RestResult)
|
|
33
45
|
.type(isHttpStatus, h => rest.toError(h ?? status ?? HttpStatus.InternalServerError, [toResult(h.name)]))
|
|
34
46
|
.type(isResult, r => rest.toError(status ?? HttpStatus.BadRequest, [r]))
|
|
35
47
|
.type(isError, e => rest.toError(status ?? HttpStatus.BadRequest, [e]))
|
package/src/process/Search.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Repo, Struct } from '../domain';
|
|
2
|
-
import { Id, isNotEmpty, JsonValue, Key, List, toList } from '../types';
|
|
3
|
-
import {
|
|
2
|
+
import { choose, Id, isNotEmpty, JsonValue, Key, List, toList } from '../types';
|
|
3
|
+
import { resolve } from '../utils';
|
|
4
4
|
|
|
5
5
|
export class Search<T extends Struct> {
|
|
6
6
|
constructor(protected repo: Repo<T>) {}
|
|
@@ -14,8 +14,8 @@ export class Search<T extends Struct> {
|
|
|
14
14
|
byKey = (key: Key): Promise<List<T>> => this.repo.byKey(key);
|
|
15
15
|
|
|
16
16
|
search = (query: JsonValue): Promise<List<T>> =>
|
|
17
|
-
choose
|
|
18
|
-
.
|
|
17
|
+
choose(query)
|
|
18
|
+
.case(isNotEmpty, q => this.repo.search(q))
|
|
19
19
|
.else(resolve(toList<T>()));
|
|
20
20
|
|
|
21
21
|
exists = (id: Id): Promise<boolean> => this.repo.exists(id);
|
|
@@ -1,21 +1,36 @@
|
|
|
1
1
|
import axios, { AxiosError, AxiosResponse, Method } from 'axios';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import {
|
|
3
|
+
HttpStatus,
|
|
4
|
+
HttpVerb,
|
|
5
|
+
isRestResult,
|
|
6
|
+
Request,
|
|
7
|
+
RequestOptions,
|
|
8
|
+
RequestProvider,
|
|
9
|
+
Response,
|
|
10
|
+
toResponse,
|
|
11
|
+
} from '../http';
|
|
12
|
+
import { choose, ctx, isDefined, isEmpty, toResult, Uri } from '../types';
|
|
5
13
|
|
|
6
14
|
const isResponse = (a: unknown): a is { response: AxiosResponse } => isDefined((a as any)?.response);
|
|
7
15
|
const isRequest = (a: unknown): a is { request: any } => isDefined((a as any)?.request);
|
|
8
16
|
|
|
9
17
|
const asResponse = (uri: Uri, verb: HttpVerb, error: AxiosError): Response =>
|
|
10
|
-
choose
|
|
18
|
+
choose(error)
|
|
11
19
|
.type(isResponse, r =>
|
|
12
|
-
toResponse(r.response.status, isRestResult(r.response.data) ? r.response.data : toResult(r.response.statusText, uri.path, uri), r.response.headers)
|
|
20
|
+
toResponse(r.response.status, isRestResult(r.response.data) ? r.response.data : toResult(r.response.statusText, uri.path, uri), r.response.headers),
|
|
13
21
|
)
|
|
14
22
|
.type(isRequest, r => toResponse(r.request.status, toResult(r.request.message, uri.path, uri)))
|
|
15
23
|
.else(e => toResponse(HttpStatus.InternalServerError, toResult(e.message, uri.path, uri)));
|
|
16
24
|
|
|
17
25
|
export class AxiosProvider implements RequestProvider {
|
|
18
|
-
execute = ({
|
|
26
|
+
execute = ({
|
|
27
|
+
uri,
|
|
28
|
+
verb,
|
|
29
|
+
body,
|
|
30
|
+
transform = (r: any) => r,
|
|
31
|
+
transformError = (r: any) => r,
|
|
32
|
+
options = RequestOptions.Json,
|
|
33
|
+
}: Request): Promise<Response> =>
|
|
19
34
|
axios
|
|
20
35
|
.request({
|
|
21
36
|
url: uri.toString(),
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Func, Get, ofGet, Predicate, tryTo } from './index';
|
|
2
|
+
|
|
3
|
+
class CaseBuilder<V> {
|
|
4
|
+
constructor(readonly v: V) {
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
case<T>(pred: Predicate<V>, out: Func<T, V>): Case<T, V> {
|
|
8
|
+
return new Case<T, V>(this.v).case(pred, out);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
type<T, U = unknown>(guard: (u: unknown) => u is U, out: Func<T, U>): Case<T, V> {
|
|
12
|
+
return new Case<T, V>(this.v).type<U>(guard, out);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
class Case<T, V = unknown> {
|
|
17
|
+
constructor(protected value: V, protected outcome?: T) {}
|
|
18
|
+
|
|
19
|
+
case(pred: Predicate<V>, out: Func<T, V>): Case<T, V> {
|
|
20
|
+
return tryTo(pred, this.value)
|
|
21
|
+
.is.true()
|
|
22
|
+
.map(() => out(this.value))
|
|
23
|
+
.map(res => new Found(this.value, res) as Case<T, V>)
|
|
24
|
+
.or(this);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
type<U>(guard: (u: unknown) => u is U, out: Func<T, U>): Case<T, V> {
|
|
28
|
+
return tryTo(guard, this.value)
|
|
29
|
+
.is.true()
|
|
30
|
+
.map(() => out(this.value as unknown as U))
|
|
31
|
+
.map(res => new Found(this.value, res) as Case<T, V>)
|
|
32
|
+
.or(this);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
else(alt: Get<T, V>): T {
|
|
36
|
+
return ofGet<T, V>(alt, this.value);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
class Found<T, V> extends Case<T, V> {
|
|
41
|
+
constructor(protected value: V, protected outcome: T) {
|
|
42
|
+
super(value, outcome);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
case(pred: Predicate<V>, out: Func<T, V>): this {
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
type<U>(guard: (u: unknown) => u is U, out: Func<T, U>): Case<T, V> {
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
else(alt: Get<T, V>): T {
|
|
54
|
+
return this.outcome;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export const choose = <V>(value: V) => new CaseBuilder<V>(value);
|
package/src/types/Is.ts
CHANGED
|
@@ -19,7 +19,7 @@ export const isTrue = (o?: unknown): boolean => (isFunction(o) ? isTrue(o()) : i
|
|
|
19
19
|
|
|
20
20
|
export const isNumber = (o?: unknown): o is number => isDefined(o) && typeof o === 'number' && !Number.isNaN(o);
|
|
21
21
|
|
|
22
|
-
export const isObject = (o?: unknown): o is Record<string, unknown> => o != null && (typeof o === 'object'
|
|
22
|
+
export const isObject = (o?: unknown): o is Record<string, unknown> => o != null && (typeof o === 'object') && !isArray(o);
|
|
23
23
|
|
|
24
24
|
export const isEmptyObject = (o?: unknown): boolean => isObject(o) && Object.getOwnPropertyNames(o).length === 0;
|
|
25
25
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { isArray, isObject } from './Is';
|
|
2
|
+
import { choose } from './Case';
|
|
3
|
+
|
|
4
|
+
const isEqualArray = (one: unknown[], another: unknown[]): boolean =>
|
|
5
|
+
choose([one, another])
|
|
6
|
+
.case(([o, a]) => !isArray(o) || !isArray(a), () => false)
|
|
7
|
+
.case(([o, a]) => o?.length !== a?.length, () => false)
|
|
8
|
+
.else(([o, a]) => !o.some((v, i) => !isEqual(v, a[i])));
|
|
9
|
+
|
|
10
|
+
const isEqualObject = (one: any, another: any): boolean =>
|
|
11
|
+
choose([Object.keys(one), Object.keys(another)])
|
|
12
|
+
.case(([keysO, keysA]) => keysO.length !== keysA.length, () => false)
|
|
13
|
+
.case(([keysO, keysA]) => keysO.some(k => !keysA.includes(k)), () => false)
|
|
14
|
+
.case(([keysO]) => keysO.some(k => !isEqual(one[k], another[k])), () => false)
|
|
15
|
+
.else(true);
|
|
16
|
+
|
|
17
|
+
export const isEqual = (one?: unknown, another?: unknown): boolean =>
|
|
18
|
+
choose([one, another])
|
|
19
|
+
.case(([o, a]) => o === a, () => true)
|
|
20
|
+
.case(([o, a]) => isArray(o) || isArray(a), ([o, a]) => isEqualArray(o as [], a as []))
|
|
21
|
+
.case(([o, a]) => o == null || a == null || (!isObject(o) && !isObject(a)), ([o, a]) => o !== o && a !== a)
|
|
22
|
+
.else(([o, a]) => isEqualObject(o, a));
|
package/src/types/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './Array';
|
|
2
2
|
export * from './Builder';
|
|
3
|
+
export * from './Case';
|
|
3
4
|
export * from './Constructor';
|
|
4
5
|
export * from './Context';
|
|
5
6
|
export * from './Enum';
|
|
@@ -13,6 +14,7 @@ export * from './Identity';
|
|
|
13
14
|
export * from './Is';
|
|
14
15
|
export * from './IsA';
|
|
15
16
|
export * from './IsDate';
|
|
17
|
+
export * from './IsEqual';
|
|
16
18
|
export * from './Json';
|
|
17
19
|
export * from './List';
|
|
18
20
|
export * from './Message';
|
package/src/utils/View.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { asJson, isArray, isBoolean, isDefined, isFunction, isNumber, isObject, isString, isUndefined, Json, json, meta, tryTo } from '../types';
|
|
2
2
|
import { traverse } from './Traverse';
|
|
3
|
-
import { choose } from '
|
|
3
|
+
import { choose } from '../types';
|
|
4
4
|
|
|
5
5
|
type Func<T = unknown> = (a: any, key?: string) => T;
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@ const toFunc = (a: any, col: string, f: Func = a => a): Func =>
|
|
|
18
18
|
tryTo(traverse(a, col)).map(v => (isArray(v) ? () => v.map(i => f(i)) : (a: any) => f(traverse(a, col)))).value;
|
|
19
19
|
|
|
20
20
|
const toViewer = (key: string, value: unknown): Viewer =>
|
|
21
|
-
choose
|
|
21
|
+
choose(value)
|
|
22
22
|
.type(isUndefined, () => toViewer(key, () => undefined))
|
|
23
23
|
.type(isBoolean, b => toViewer(key, () => b))
|
|
24
24
|
.type(isNumber, n => toViewer(key, () => n))
|
package/src/utils/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
asString,
|
|
2
|
+
asString, choose,
|
|
3
3
|
isArray,
|
|
4
4
|
isEnum,
|
|
5
5
|
isResults,
|
|
@@ -20,7 +20,6 @@ import {
|
|
|
20
20
|
} from '../types';
|
|
21
21
|
import { Constraint } from './Contraints';
|
|
22
22
|
import { when } from './When';
|
|
23
|
-
import { choose } from '../utils';
|
|
24
23
|
|
|
25
24
|
export type Validator = { property: string | symbol; constraint: Constraint; text: Text; actual?: Text };
|
|
26
25
|
|
|
@@ -44,8 +43,8 @@ const constraints = (subject?: unknown): Results =>
|
|
|
44
43
|
.map(res => res.reduce((rs, r) => rs.add(...r.results), toResults())).value;
|
|
45
44
|
|
|
46
45
|
export const validate = (subject?: unknown): Results =>
|
|
47
|
-
choose
|
|
48
|
-
.type(isUndefined,
|
|
46
|
+
choose(subject)
|
|
47
|
+
.type(isUndefined, () => toResults( 'Subject is not defined.'))
|
|
49
48
|
.type(isEnum, e => (e.isValid ? toResults() : asResults(e, 'This is not a valid {type}.')))
|
|
50
49
|
.type(isValue, v => (v.isValid ? toResults() : asResults(v, 'This is not a valid {type}.')))
|
|
51
50
|
.type(isArray, a => a.map(i => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults()))
|
package/dist/utils/Case.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Get, Predicate } from '../types';
|
|
2
|
-
declare class Case<T, V = unknown> {
|
|
3
|
-
protected value: V;
|
|
4
|
-
protected outcome?: T | undefined;
|
|
5
|
-
constructor(value: V, outcome?: T | undefined);
|
|
6
|
-
case(pred: Predicate<V>, out: Get<T, V>): Case<T, V>;
|
|
7
|
-
type<U>(pred: (v: unknown) => v is U, out: Get<T, U>): Case<T, V>;
|
|
8
|
-
else(alt: Get<T, V>): T;
|
|
9
|
-
}
|
|
10
|
-
export declare class Found<T, V> extends Case<T, V> {
|
|
11
|
-
protected value: V;
|
|
12
|
-
protected outcome: T;
|
|
13
|
-
constructor(value: V, outcome: T);
|
|
14
|
-
case(pred: Predicate<V>, out: Get<T, V>): this;
|
|
15
|
-
type<U>(pred: (v: unknown) => v is U, out: Get<T, U>): Case<T, V>;
|
|
16
|
-
else(alt: Get<T, V>): T;
|
|
17
|
-
}
|
|
18
|
-
export declare const choose: <T, V = unknown>(value: V) => Case<T, V>;
|
|
19
|
-
export {};
|
package/dist/utils/Case.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Case.js","sourceRoot":"","sources":["../../src/utils/Case.ts"],"names":[],"mappings":";;;AAAA,oCAAwD;AAExD,MAAM,IAAI;IACR,YAAsB,KAAQ,EAAY,OAAW;QAA/B,UAAK,GAAL,KAAK,CAAG;QAAY,YAAO,GAAP,OAAO,CAAI;IAAG,CAAC;IAEzD,IAAI,CAAC,IAAkB,EAAE,GAAc;QACrC,OAAO,IAAA,aAAK,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;aAC3B,EAAE,CAAC,IAAI,EAAE;aACT,GAAG,CAAC,GAAG,EAAE,CAAC,IAAA,aAAK,EAAO,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aACvC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAe,CAAC;aACpD,EAAE,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,IAAI,CAAI,IAA4B,EAAE,GAAc;QAClD,OAAO,IAAA,aAAK,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;aAC3B,EAAE,CAAC,IAAI,EAAE;aACT,GAAG,CAAC,GAAG,EAAE,CAAC,IAAA,aAAK,EAAO,GAAG,EAAE,IAAI,CAAC,KAAqB,CAAC,CAAC;aACvD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAe,CAAC;aACpD,EAAE,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,IAAI,CAAC,GAAc;QACjB,OAAO,IAAA,aAAK,EAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAa,KAAY,SAAQ,IAAU;IACzC,YAAsB,KAAQ,EAAY,OAAU;QAClD,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QADF,UAAK,GAAL,KAAK,CAAG;QAAY,YAAO,GAAP,OAAO,CAAG;IAEpD,CAAC;IAED,IAAI,CAAC,IAAkB,EAAE,GAAc;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAI,IAA4B,EAAE,GAAc;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,GAAc;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAhBD,sBAgBC;AAEM,MAAM,MAAM,GAAG,CAAiB,KAAQ,EAAc,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAAnE,QAAA,MAAM,UAA6D"}
|
package/src/utils/Case.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Get, ofGet, Predicate, tryTo } from '../types';
|
|
2
|
-
|
|
3
|
-
class Case<T, V = unknown> {
|
|
4
|
-
constructor(protected value: V, protected outcome?: T) {}
|
|
5
|
-
|
|
6
|
-
case(pred: Predicate<V>, out: Get<T, V>): Case<T, V> {
|
|
7
|
-
return tryTo(pred, this.value)
|
|
8
|
-
.is.true()
|
|
9
|
-
.map(() => ofGet<T, V>(out, this.value))
|
|
10
|
-
.map(res => new Found(this.value, res) as Case<T, V>)
|
|
11
|
-
.or(this);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
type<U>(pred: (v: unknown) => v is U, out: Get<T, U>): Case<T, V> {
|
|
15
|
-
return tryTo(pred, this.value)
|
|
16
|
-
.is.true()
|
|
17
|
-
.map(() => ofGet<T, U>(out, this.value as unknown as U))
|
|
18
|
-
.map(res => new Found(this.value, res) as Case<T, V>)
|
|
19
|
-
.or(this);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
else(alt: Get<T, V>): T {
|
|
23
|
-
return ofGet(alt, this.value);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export class Found<T, V> extends Case<T, V> {
|
|
28
|
-
constructor(protected value: V, protected outcome: T) {
|
|
29
|
-
super(value, outcome);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
case(pred: Predicate<V>, out: Get<T, V>): this {
|
|
33
|
-
return this;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
type<U>(pred: (v: unknown) => v is U, out: Get<T, U>): Case<T, V> {
|
|
37
|
-
return this;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
else(alt: Get<T, V>): T {
|
|
41
|
-
return this.outcome;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export const choose = <T, V = unknown>(value: V): Case<T, V> => new Case(value);
|