@thisisagile/easy 15.16.3 → 15.17.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/resources/Route.ts"],"sourcesContent":["import { List, meta, Optional, tryTo, Uri } from '../types';\nimport { Verb } from '../http';\nimport { Req } from './Req';\nimport { Resource } from './Resource';\nimport { Scope, UseCase } from '../process';\nimport { RequestHandler } from 'express';\n\nexport const route =\n (uri: Uri): ClassDecorator =>\n (subject: unknown): void => {\n meta(subject).set('route', uri);\n };\n\nexport type Endpoint<T = unknown> = (re: Req) => Promise<T | List<T>>;\nexport type RouteRequires = { token: boolean; labCoat: boolean; scope?: Scope; uc?: UseCase };\nexport type Route = { verb: Verb; endpoint: Endpoint; requires: RouteRequires; middleware: RequestHandler[] };\nexport type Routes = { route: Uri; middleware: RequestHandler[]; endpoints: List<Route> };\n\nconst toRoute = (endpoint: Endpoint, requires: RouteRequires, verb?: Verb, middleware?: RequestHandler[]): Optional<Route> =>\n tryTo(verb)\n .is.defined()\n .map(verb => ({ verb, endpoint, requires, middleware: middleware ?? [] } as Route))\n .orElse();\n\nclass Router implements Routes {\n constructor(readonly resource: Resource) {}\n\n get route(): Uri {\n return meta(this.resource).get('route');\n }\n\n get middleware(): RequestHandler[] {\n return meta(this.resource).get<RequestHandler[]>('middleware') ?? [];\n }\n\n get endpoints(): List<Route> {\n return meta(this.resource)\n .properties('verb')\n .mapDefined(v =>\n toRoute(\n this.resource[v.property],\n {\n labCoat: v.get<boolean>('labCoat') ?? false,\n token: v.get<boolean>('token') ?? false,\n scope: v.get<Scope>('scope'),\n uc: v.get<UseCase>('uc'),\n },\n v.get<Verb>('verb'),\n v.get<RequestHandler[]>('middleware')\n )\n );\n }\n}\n\nexport const routes = (resource: Resource): Routes => new Router(resource);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAiD;AAO1C,MAAM,QACX,CAAC,QACD,CAAC,YAA2B;AAC1B,yBAAK,OAAO,EAAE,IAAI,SAAS,GAAG;AAChC;AAOF,MAAM,UAAU,CAAC,UAAoB,UAAyB,MAAa,mBACzE,oBAAM,IAAI,EACP,GAAG,QAAQ,EACX,IAAI,CAAAA,WAAS,EAAE,MAAAA,OAAM,UAAU,UAAU,YAAY,cAAc,CAAC,EAAE,EAAW,EACjF,OAAO;AAEZ,MAAM,OAAyB;AAAA,EAC7B,YAAqB,UAAoB;AAApB;AAAA,EAAqB;AAAA,EAE1C,IAAI,QAAa;AACf,eAAO,mBAAK,KAAK,QAAQ,EAAE,IAAI,OAAO;AAAA,EACxC;AAAA,EAEA,IAAI,aAA+B;AACjC,eAAO,mBAAK,KAAK,QAAQ,EAAE,IAAsB,YAAY,KAAK,CAAC;AAAA,EACrE;AAAA,EAEA,IAAI,YAAyB;AAC3B,eAAO,mBAAK,KAAK,QAAQ,EACtB,WAAW,MAAM,EACjB;AAAA,MAAW,OACV;AAAA,QACE,KAAK,SAAS,EAAE,QAAQ;AAAA,QACxB;AAAA,UACE,SAAS,EAAE,IAAa,SAAS,KAAK;AAAA,UACtC,OAAO,EAAE,IAAa,OAAO,KAAK;AAAA,UAClC,OAAO,EAAE,IAAW,OAAO;AAAA,UAC3B,IAAI,EAAE,IAAa,IAAI;AAAA,QACzB;AAAA,QACA,EAAE,IAAU,MAAM;AAAA,QAClB,EAAE,IAAsB,YAAY;AAAA,MACtC;AAAA,IACF;AAAA,EACJ;AACF;AAEO,MAAM,SAAS,CAAC,aAA+B,IAAI,OAAO,QAAQ;","names":["verb"]}
1
+ {"version":3,"sources":["../../src/resources/Route.ts"],"sourcesContent":["import { List, meta, Optional, tryTo, Uri } from '../types';\nimport { Verb } from '../http';\nimport { Req } from './Req';\nimport { Resource } from './Resource';\nimport { Scope, UseCase } from '../process';\nimport { RequestHandler } from 'express';\n\nexport const route =\n (uri: Uri): ClassDecorator =>\n (subject: unknown): void => {\n meta(subject).set('route', uri);\n };\n\nexport type Endpoint<T = unknown> = (re: Req) => Promise<T | List<T>>;\nexport type RouteRequires = { token: boolean; labCoat: boolean; scope?: Scope; uc?: UseCase };\nexport type Route = { verb: Verb; endpoint: Endpoint; requires: RouteRequires; middleware: RequestHandler[] };\nexport type Routes = { route: Uri; middleware: RequestHandler[]; endpoints: List<Route> };\n\nconst toRoute = (endpoint: Endpoint, requires: RouteRequires, verb?: Verb, middleware?: RequestHandler[]): Optional<Route> =>\n tryTo(verb)\n .is.defined()\n .map(verb => ({ verb, endpoint, requires, middleware: middleware ?? [] }) as Route)\n .orElse();\n\nclass Router implements Routes {\n constructor(readonly resource: Resource) {}\n\n get route(): Uri {\n return meta(this.resource).get('route');\n }\n\n get middleware(): RequestHandler[] {\n return meta(this.resource).get<RequestHandler[]>('middleware') ?? [];\n }\n\n get endpoints(): List<Route> {\n return meta(this.resource)\n .properties('verb')\n .mapDefined(v =>\n toRoute(\n this.resource[v.property],\n {\n labCoat: v.get<boolean>('labCoat') ?? false,\n token: v.get<boolean>('token') ?? false,\n scope: v.get<Scope>('scope'),\n uc: v.get<UseCase>('uc'),\n },\n v.get<Verb>('verb'),\n v.get<RequestHandler[]>('middleware')\n )\n );\n }\n}\n\nexport const routes = (resource: Resource): Routes => new Router(resource);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAiD;AAO1C,MAAM,QACX,CAAC,QACD,CAAC,YAA2B;AAC1B,yBAAK,OAAO,EAAE,IAAI,SAAS,GAAG;AAChC;AAOF,MAAM,UAAU,CAAC,UAAoB,UAAyB,MAAa,mBACzE,oBAAM,IAAI,EACP,GAAG,QAAQ,EACX,IAAI,CAAAA,WAAS,EAAE,MAAAA,OAAM,UAAU,UAAU,YAAY,cAAc,CAAC,EAAE,EAAW,EACjF,OAAO;AAEZ,MAAM,OAAyB;AAAA,EAC7B,YAAqB,UAAoB;AAApB;AAAA,EAAqB;AAAA,EAE1C,IAAI,QAAa;AACf,eAAO,mBAAK,KAAK,QAAQ,EAAE,IAAI,OAAO;AAAA,EACxC;AAAA,EAEA,IAAI,aAA+B;AACjC,eAAO,mBAAK,KAAK,QAAQ,EAAE,IAAsB,YAAY,KAAK,CAAC;AAAA,EACrE;AAAA,EAEA,IAAI,YAAyB;AAC3B,eAAO,mBAAK,KAAK,QAAQ,EACtB,WAAW,MAAM,EACjB;AAAA,MAAW,OACV;AAAA,QACE,KAAK,SAAS,EAAE,QAAQ;AAAA,QACxB;AAAA,UACE,SAAS,EAAE,IAAa,SAAS,KAAK;AAAA,UACtC,OAAO,EAAE,IAAa,OAAO,KAAK;AAAA,UAClC,OAAO,EAAE,IAAW,OAAO;AAAA,UAC3B,IAAI,EAAE,IAAa,IAAI;AAAA,QACzB;AAAA,QACA,EAAE,IAAU,MAAM;AAAA,QAClB,EAAE,IAAsB,YAAY;AAAA,MACtC;AAAA,IACF;AAAA,EACJ;AACF;AAEO,MAAM,SAAS,CAAC,aAA+B,IAAI,OAAO,QAAQ;","names":["verb"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/resources/Route.ts"],"sourcesContent":["import { List, meta, Optional, tryTo, Uri } from '../types';\nimport { Verb } from '../http';\nimport { Req } from './Req';\nimport { Resource } from './Resource';\nimport { Scope, UseCase } from '../process';\nimport { RequestHandler } from 'express';\n\nexport const route =\n (uri: Uri): ClassDecorator =>\n (subject: unknown): void => {\n meta(subject).set('route', uri);\n };\n\nexport type Endpoint<T = unknown> = (re: Req) => Promise<T | List<T>>;\nexport type RouteRequires = { token: boolean; labCoat: boolean; scope?: Scope; uc?: UseCase };\nexport type Route = { verb: Verb; endpoint: Endpoint; requires: RouteRequires; middleware: RequestHandler[] };\nexport type Routes = { route: Uri; middleware: RequestHandler[]; endpoints: List<Route> };\n\nconst toRoute = (endpoint: Endpoint, requires: RouteRequires, verb?: Verb, middleware?: RequestHandler[]): Optional<Route> =>\n tryTo(verb)\n .is.defined()\n .map(verb => ({ verb, endpoint, requires, middleware: middleware ?? [] } as Route))\n .orElse();\n\nclass Router implements Routes {\n constructor(readonly resource: Resource) {}\n\n get route(): Uri {\n return meta(this.resource).get('route');\n }\n\n get middleware(): RequestHandler[] {\n return meta(this.resource).get<RequestHandler[]>('middleware') ?? [];\n }\n\n get endpoints(): List<Route> {\n return meta(this.resource)\n .properties('verb')\n .mapDefined(v =>\n toRoute(\n this.resource[v.property],\n {\n labCoat: v.get<boolean>('labCoat') ?? false,\n token: v.get<boolean>('token') ?? false,\n scope: v.get<Scope>('scope'),\n uc: v.get<UseCase>('uc'),\n },\n v.get<Verb>('verb'),\n v.get<RequestHandler[]>('middleware')\n )\n );\n }\n}\n\nexport const routes = (resource: Resource): Routes => new Router(resource);\n"],"mappings":";AAAA,SAAe,MAAgB,aAAkB;AAO1C,MAAM,QACX,CAAC,QACD,CAAC,YAA2B;AAC1B,OAAK,OAAO,EAAE,IAAI,SAAS,GAAG;AAChC;AAOF,MAAM,UAAU,CAAC,UAAoB,UAAyB,MAAa,eACzE,MAAM,IAAI,EACP,GAAG,QAAQ,EACX,IAAI,CAAAA,WAAS,EAAE,MAAAA,OAAM,UAAU,UAAU,YAAY,cAAc,CAAC,EAAE,EAAW,EACjF,OAAO;AAEZ,MAAM,OAAyB;AAAA,EAC7B,YAAqB,UAAoB;AAApB;AAAA,EAAqB;AAAA,EAE1C,IAAI,QAAa;AACf,WAAO,KAAK,KAAK,QAAQ,EAAE,IAAI,OAAO;AAAA,EACxC;AAAA,EAEA,IAAI,aAA+B;AACjC,WAAO,KAAK,KAAK,QAAQ,EAAE,IAAsB,YAAY,KAAK,CAAC;AAAA,EACrE;AAAA,EAEA,IAAI,YAAyB;AAC3B,WAAO,KAAK,KAAK,QAAQ,EACtB,WAAW,MAAM,EACjB;AAAA,MAAW,OACV;AAAA,QACE,KAAK,SAAS,EAAE,QAAQ;AAAA,QACxB;AAAA,UACE,SAAS,EAAE,IAAa,SAAS,KAAK;AAAA,UACtC,OAAO,EAAE,IAAa,OAAO,KAAK;AAAA,UAClC,OAAO,EAAE,IAAW,OAAO;AAAA,UAC3B,IAAI,EAAE,IAAa,IAAI;AAAA,QACzB;AAAA,QACA,EAAE,IAAU,MAAM;AAAA,QAClB,EAAE,IAAsB,YAAY;AAAA,MACtC;AAAA,IACF;AAAA,EACJ;AACF;AAEO,MAAM,SAAS,CAAC,aAA+B,IAAI,OAAO,QAAQ;","names":["verb"]}
1
+ {"version":3,"sources":["../../src/resources/Route.ts"],"sourcesContent":["import { List, meta, Optional, tryTo, Uri } from '../types';\nimport { Verb } from '../http';\nimport { Req } from './Req';\nimport { Resource } from './Resource';\nimport { Scope, UseCase } from '../process';\nimport { RequestHandler } from 'express';\n\nexport const route =\n (uri: Uri): ClassDecorator =>\n (subject: unknown): void => {\n meta(subject).set('route', uri);\n };\n\nexport type Endpoint<T = unknown> = (re: Req) => Promise<T | List<T>>;\nexport type RouteRequires = { token: boolean; labCoat: boolean; scope?: Scope; uc?: UseCase };\nexport type Route = { verb: Verb; endpoint: Endpoint; requires: RouteRequires; middleware: RequestHandler[] };\nexport type Routes = { route: Uri; middleware: RequestHandler[]; endpoints: List<Route> };\n\nconst toRoute = (endpoint: Endpoint, requires: RouteRequires, verb?: Verb, middleware?: RequestHandler[]): Optional<Route> =>\n tryTo(verb)\n .is.defined()\n .map(verb => ({ verb, endpoint, requires, middleware: middleware ?? [] }) as Route)\n .orElse();\n\nclass Router implements Routes {\n constructor(readonly resource: Resource) {}\n\n get route(): Uri {\n return meta(this.resource).get('route');\n }\n\n get middleware(): RequestHandler[] {\n return meta(this.resource).get<RequestHandler[]>('middleware') ?? [];\n }\n\n get endpoints(): List<Route> {\n return meta(this.resource)\n .properties('verb')\n .mapDefined(v =>\n toRoute(\n this.resource[v.property],\n {\n labCoat: v.get<boolean>('labCoat') ?? false,\n token: v.get<boolean>('token') ?? false,\n scope: v.get<Scope>('scope'),\n uc: v.get<UseCase>('uc'),\n },\n v.get<Verb>('verb'),\n v.get<RequestHandler[]>('middleware')\n )\n );\n }\n}\n\nexport const routes = (resource: Resource): Routes => new Router(resource);\n"],"mappings":";AAAA,SAAe,MAAgB,aAAkB;AAO1C,MAAM,QACX,CAAC,QACD,CAAC,YAA2B;AAC1B,OAAK,OAAO,EAAE,IAAI,SAAS,GAAG;AAChC;AAOF,MAAM,UAAU,CAAC,UAAoB,UAAyB,MAAa,eACzE,MAAM,IAAI,EACP,GAAG,QAAQ,EACX,IAAI,CAAAA,WAAS,EAAE,MAAAA,OAAM,UAAU,UAAU,YAAY,cAAc,CAAC,EAAE,EAAW,EACjF,OAAO;AAEZ,MAAM,OAAyB;AAAA,EAC7B,YAAqB,UAAoB;AAApB;AAAA,EAAqB;AAAA,EAE1C,IAAI,QAAa;AACf,WAAO,KAAK,KAAK,QAAQ,EAAE,IAAI,OAAO;AAAA,EACxC;AAAA,EAEA,IAAI,aAA+B;AACjC,WAAO,KAAK,KAAK,QAAQ,EAAE,IAAsB,YAAY,KAAK,CAAC;AAAA,EACrE;AAAA,EAEA,IAAI,YAAyB;AAC3B,WAAO,KAAK,KAAK,QAAQ,EACtB,WAAW,MAAM,EACjB;AAAA,MAAW,OACV;AAAA,QACE,KAAK,SAAS,EAAE,QAAQ;AAAA,QACxB;AAAA,UACE,SAAS,EAAE,IAAa,SAAS,KAAK;AAAA,UACtC,OAAO,EAAE,IAAa,OAAO,KAAK;AAAA,UAClC,OAAO,EAAE,IAAW,OAAO;AAAA,UAC3B,IAAI,EAAE,IAAa,IAAI;AAAA,QACzB;AAAA,QACA,EAAE,IAAU,MAAM;AAAA,QAClB,EAAE,IAAsB,YAAY;AAAA,MACtC;AAAA,IACF;AAAA,EACJ;AACF;AAEO,MAAM,SAAS,CAAC,aAA+B,IAAI,OAAO,QAAQ;","names":["verb"]}
@@ -0,0 +1,34 @@
1
+ import { Get } from './Get';
2
+ import { Constructor } from './Constructor';
3
+ export declare class Parser<T, V> {
4
+ protected value: T;
5
+ protected f: Get<V, T>;
6
+ protected alt: Get<V, T>;
7
+ readonly valid: boolean;
8
+ if: {
9
+ empty: <U>(pred?: Get<U, T> | undefined) => this;
10
+ defined: <U_1>(pred?: Get<U_1, T> | undefined) => this;
11
+ valid: <U_2>(pred?: Get<U_2, T> | undefined) => this;
12
+ in: (...items: T[]) => this;
13
+ is: {
14
+ object: <U_3>(pred?: Get<U_3, T> | undefined) => this;
15
+ string: <U_4>(pred?: Get<U_4, T> | undefined) => this;
16
+ instance: <U_5>(c: Constructor<U_5>, pred?: Get<U_5, T> | undefined) => this;
17
+ };
18
+ not: {
19
+ empty: <U_6>(pred?: Get<U_6, T> | undefined) => this;
20
+ defined: <U_7>(pred?: Get<U_7, T> | undefined) => this;
21
+ valid: <U_8>(pred?: Get<U_8, T> | undefined) => this;
22
+ isObject: <U_9>(pred?: Get<U_9, T> | undefined) => this;
23
+ in: (...items: T[]) => this;
24
+ is: {
25
+ object: <U_10>(pred?: Get<U_10, T> | undefined) => this;
26
+ string: <U_11>(pred?: Get<U_11, T> | undefined) => this;
27
+ instance: <U_12>(c: Constructor<U_12>, pred?: Get<U_12, T> | undefined) => this;
28
+ };
29
+ };
30
+ };
31
+ constructor(value: T, f: Get<V, T>, alt: Get<V, T>, valid?: boolean);
32
+ protected evaluate<U>(meta: Get<boolean>, pred?: Get<U, T>): this;
33
+ protected evaluateNot<U>(meta: Get<boolean>, pred?: Get<U, T>): this;
34
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var Parser_exports = {};
20
+ __export(Parser_exports, {
21
+ Parser: () => Parser
22
+ });
23
+ module.exports = __toCommonJS(Parser_exports);
24
+ var import_Get = require("./Get");
25
+ var import_Is = require("./Is");
26
+ var import_validation = require("../validation");
27
+ var import_Array = require("./Array");
28
+ class Parser {
29
+ constructor(value, f, alt, valid = true) {
30
+ this.value = value;
31
+ this.f = f;
32
+ this.alt = alt;
33
+ this.valid = valid;
34
+ }
35
+ if = {
36
+ empty: (pred) => this.evaluate(import_Is.isEmpty, pred),
37
+ defined: (pred) => this.evaluate(import_Is.isDefined, pred),
38
+ valid: (pred) => this.evaluate(import_validation.isValid, pred),
39
+ in: (...items) => this.evaluate(() => (0, import_Is.isIn)(this.value, (0, import_Array.toArray)(...items))),
40
+ is: {
41
+ object: (pred) => this.evaluate(import_Is.isObject, pred),
42
+ string: (pred) => this.evaluate(import_Is.isString, pred),
43
+ instance: (c, pred) => this.evaluate(() => this.value instanceof c, pred)
44
+ },
45
+ not: {
46
+ empty: (pred) => this.evaluateNot(import_Is.isEmpty, pred),
47
+ defined: (pred) => this.evaluateNot(import_Is.isDefined, pred),
48
+ valid: (pred) => this.evaluateNot(import_validation.isValid, pred),
49
+ isObject: (pred) => this.evaluateNot(import_Is.isObject, pred),
50
+ in: (...items) => this.evaluate(() => !(0, import_Is.isIn)(this.value, (0, import_Array.toArray)(...items))),
51
+ is: {
52
+ object: (pred) => this.evaluateNot(import_Is.isObject, pred),
53
+ string: (pred) => this.evaluateNot(import_Is.isString, pred),
54
+ instance: (c, pred) => this.evaluate(() => !(this.value instanceof c), pred)
55
+ }
56
+ }
57
+ };
58
+ evaluate(meta, pred) {
59
+ return new this.constructor(
60
+ this.value,
61
+ this.f,
62
+ this.alt,
63
+ (0, import_Get.ofGet)(meta, pred ? (0, import_Get.ofGet)(pred, this.value) : this.value)
64
+ );
65
+ }
66
+ evaluateNot(meta, pred) {
67
+ return new this.constructor(
68
+ this.value,
69
+ this.f,
70
+ this.alt,
71
+ !(0, import_Get.ofGet)(meta, pred ? (0, import_Get.ofGet)(pred, this.value) : this.value)
72
+ );
73
+ }
74
+ }
75
+ // Annotate the CommonJS export names for ESM import in node:
76
+ 0 && (module.exports = {
77
+ Parser
78
+ });
79
+ //# sourceMappingURL=Parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/types/Parser.ts"],"sourcesContent":["import { Get, ofGet } from './Get';\nimport { isDefined, isEmpty, isIn, isObject, isString } from './Is';\nimport { isValid } from '../validation';\nimport { Constructor } from './Constructor';\nimport { toArray } from './Array';\n\nexport class Parser<T, V> {\n if = {\n empty: <U>(pred?: Get<U, T>): this => this.evaluate(isEmpty, pred),\n defined: <U>(pred?: Get<U, T>): this => this.evaluate(isDefined, pred),\n valid: <U>(pred?: Get<U, T>): this => this.evaluate(isValid, pred),\n in: (...items: T[]): this => this.evaluate(() => isIn(this.value, toArray(...items))),\n is: {\n object: <U>(pred?: Get<U, T>): this => this.evaluate(isObject, pred),\n string: <U>(pred?: Get<U, T>): this => this.evaluate(isString, pred),\n instance: <U>(c: Constructor<U>, pred?: Get<U, T>): this => this.evaluate(() => this.value instanceof c, pred),\n },\n not: {\n empty: <U>(pred?: Get<U, T>): this => this.evaluateNot(isEmpty, pred),\n defined: <U>(pred?: Get<U, T>): this => this.evaluateNot(isDefined, pred),\n valid: <U>(pred?: Get<U, T>): this => this.evaluateNot(isValid, pred),\n isObject: <U>(pred?: Get<U, T>): this => this.evaluateNot(isObject, pred),\n in: (...items: T[]): this => this.evaluate(() => !isIn(this.value, toArray(...items))),\n is: {\n object: <U>(pred?: Get<U, T>): this => this.evaluateNot(isObject, pred),\n string: <U>(pred?: Get<U, T>): this => this.evaluateNot(isString, pred),\n instance: <U>(c: Constructor<U>, pred?: Get<U, T>): this => this.evaluate(() => !(this.value instanceof c), pred),\n },\n },\n };\n\n constructor(protected value: T, protected f: Get<V, T>, protected alt: Get<V, T>, readonly valid = true) {}\n\n protected evaluate<U>(meta: Get<boolean>, pred?: Get<U, T>): this {\n return new (this.constructor as new (value: T, f: Get<V, T>, alt: Get<V, T>, allow?: boolean) => this)(\n this.value,\n this.f,\n this.alt,\n ofGet(meta, pred ? ofGet(pred, this.value) : this.value)\n );\n }\n\n protected evaluateNot<U>(meta: Get<boolean>, pred?: Get<U, T>): this {\n return new (this.constructor as new (value: T, f: Get<V, T>, alt: Get<V, T>, allow?: boolean) => this)(\n this.value,\n this.f,\n this.alt,\n !ofGet(meta, pred ? ofGet(pred, this.value) : this.value)\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAA2B;AAC3B,gBAA6D;AAC7D,wBAAwB;AAExB,mBAAwB;AAEjB,MAAM,OAAa;AAAA,EAyBxB,YAAsB,OAAoB,GAAwB,KAAyB,QAAQ,MAAM;AAAnF;AAAoB;AAAwB;AAAyB;AAAA,EAAe;AAAA,EAxB1G,KAAK;AAAA,IACH,OAAO,CAAI,SAA2B,KAAK,SAAS,mBAAS,IAAI;AAAA,IACjE,SAAS,CAAI,SAA2B,KAAK,SAAS,qBAAW,IAAI;AAAA,IACrE,OAAO,CAAI,SAA2B,KAAK,SAAS,2BAAS,IAAI;AAAA,IACjE,IAAI,IAAI,UAAqB,KAAK,SAAS,UAAM,gBAAK,KAAK,WAAO,sBAAQ,GAAG,KAAK,CAAC,CAAC;AAAA,IACpF,IAAI;AAAA,MACF,QAAQ,CAAI,SAA2B,KAAK,SAAS,oBAAU,IAAI;AAAA,MACnE,QAAQ,CAAI,SAA2B,KAAK,SAAS,oBAAU,IAAI;AAAA,MACnE,UAAU,CAAI,GAAmB,SAA2B,KAAK,SAAS,MAAM,KAAK,iBAAiB,GAAG,IAAI;AAAA,IAC/G;AAAA,IACA,KAAK;AAAA,MACH,OAAO,CAAI,SAA2B,KAAK,YAAY,mBAAS,IAAI;AAAA,MACpE,SAAS,CAAI,SAA2B,KAAK,YAAY,qBAAW,IAAI;AAAA,MACxE,OAAO,CAAI,SAA2B,KAAK,YAAY,2BAAS,IAAI;AAAA,MACpE,UAAU,CAAI,SAA2B,KAAK,YAAY,oBAAU,IAAI;AAAA,MACxE,IAAI,IAAI,UAAqB,KAAK,SAAS,MAAM,KAAC,gBAAK,KAAK,WAAO,sBAAQ,GAAG,KAAK,CAAC,CAAC;AAAA,MACrF,IAAI;AAAA,QACF,QAAQ,CAAI,SAA2B,KAAK,YAAY,oBAAU,IAAI;AAAA,QACtE,QAAQ,CAAI,SAA2B,KAAK,YAAY,oBAAU,IAAI;AAAA,QACtE,UAAU,CAAI,GAAmB,SAA2B,KAAK,SAAS,MAAM,EAAE,KAAK,iBAAiB,IAAI,IAAI;AAAA,MAClH;AAAA,IACF;AAAA,EACF;AAAA,EAIU,SAAY,MAAoB,MAAwB;AAChE,WAAO,IAAK,KAAK;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,UACL,kBAAM,MAAM,WAAO,kBAAM,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK;AAAA,IACzD;AAAA,EACF;AAAA,EAEU,YAAe,MAAoB,MAAwB;AACnE,WAAO,IAAK,KAAK;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAC,kBAAM,MAAM,WAAO,kBAAM,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK;AAAA,IAC1D;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,56 @@
1
+ import "../chunk-4N72FQFX.mjs";
2
+ import { ofGet } from "./Get";
3
+ import { isDefined, isEmpty, isIn, isObject, isString } from "./Is";
4
+ import { isValid } from "../validation";
5
+ import { toArray } from "./Array";
6
+ class Parser {
7
+ constructor(value, f, alt, valid = true) {
8
+ this.value = value;
9
+ this.f = f;
10
+ this.alt = alt;
11
+ this.valid = valid;
12
+ }
13
+ if = {
14
+ empty: (pred) => this.evaluate(isEmpty, pred),
15
+ defined: (pred) => this.evaluate(isDefined, pred),
16
+ valid: (pred) => this.evaluate(isValid, pred),
17
+ in: (...items) => this.evaluate(() => isIn(this.value, toArray(...items))),
18
+ is: {
19
+ object: (pred) => this.evaluate(isObject, pred),
20
+ string: (pred) => this.evaluate(isString, pred),
21
+ instance: (c, pred) => this.evaluate(() => this.value instanceof c, pred)
22
+ },
23
+ not: {
24
+ empty: (pred) => this.evaluateNot(isEmpty, pred),
25
+ defined: (pred) => this.evaluateNot(isDefined, pred),
26
+ valid: (pred) => this.evaluateNot(isValid, pred),
27
+ isObject: (pred) => this.evaluateNot(isObject, pred),
28
+ in: (...items) => this.evaluate(() => !isIn(this.value, toArray(...items))),
29
+ is: {
30
+ object: (pred) => this.evaluateNot(isObject, pred),
31
+ string: (pred) => this.evaluateNot(isString, pred),
32
+ instance: (c, pred) => this.evaluate(() => !(this.value instanceof c), pred)
33
+ }
34
+ }
35
+ };
36
+ evaluate(meta, pred) {
37
+ return new this.constructor(
38
+ this.value,
39
+ this.f,
40
+ this.alt,
41
+ ofGet(meta, pred ? ofGet(pred, this.value) : this.value)
42
+ );
43
+ }
44
+ evaluateNot(meta, pred) {
45
+ return new this.constructor(
46
+ this.value,
47
+ this.f,
48
+ this.alt,
49
+ !ofGet(meta, pred ? ofGet(pred, this.value) : this.value)
50
+ );
51
+ }
52
+ }
53
+ export {
54
+ Parser
55
+ };
56
+ //# sourceMappingURL=Parser.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/types/Parser.ts"],"sourcesContent":["import { Get, ofGet } from './Get';\nimport { isDefined, isEmpty, isIn, isObject, isString } from './Is';\nimport { isValid } from '../validation';\nimport { Constructor } from './Constructor';\nimport { toArray } from './Array';\n\nexport class Parser<T, V> {\n if = {\n empty: <U>(pred?: Get<U, T>): this => this.evaluate(isEmpty, pred),\n defined: <U>(pred?: Get<U, T>): this => this.evaluate(isDefined, pred),\n valid: <U>(pred?: Get<U, T>): this => this.evaluate(isValid, pred),\n in: (...items: T[]): this => this.evaluate(() => isIn(this.value, toArray(...items))),\n is: {\n object: <U>(pred?: Get<U, T>): this => this.evaluate(isObject, pred),\n string: <U>(pred?: Get<U, T>): this => this.evaluate(isString, pred),\n instance: <U>(c: Constructor<U>, pred?: Get<U, T>): this => this.evaluate(() => this.value instanceof c, pred),\n },\n not: {\n empty: <U>(pred?: Get<U, T>): this => this.evaluateNot(isEmpty, pred),\n defined: <U>(pred?: Get<U, T>): this => this.evaluateNot(isDefined, pred),\n valid: <U>(pred?: Get<U, T>): this => this.evaluateNot(isValid, pred),\n isObject: <U>(pred?: Get<U, T>): this => this.evaluateNot(isObject, pred),\n in: (...items: T[]): this => this.evaluate(() => !isIn(this.value, toArray(...items))),\n is: {\n object: <U>(pred?: Get<U, T>): this => this.evaluateNot(isObject, pred),\n string: <U>(pred?: Get<U, T>): this => this.evaluateNot(isString, pred),\n instance: <U>(c: Constructor<U>, pred?: Get<U, T>): this => this.evaluate(() => !(this.value instanceof c), pred),\n },\n },\n };\n\n constructor(protected value: T, protected f: Get<V, T>, protected alt: Get<V, T>, readonly valid = true) {}\n\n protected evaluate<U>(meta: Get<boolean>, pred?: Get<U, T>): this {\n return new (this.constructor as new (value: T, f: Get<V, T>, alt: Get<V, T>, allow?: boolean) => this)(\n this.value,\n this.f,\n this.alt,\n ofGet(meta, pred ? ofGet(pred, this.value) : this.value)\n );\n }\n\n protected evaluateNot<U>(meta: Get<boolean>, pred?: Get<U, T>): this {\n return new (this.constructor as new (value: T, f: Get<V, T>, alt: Get<V, T>, allow?: boolean) => this)(\n this.value,\n this.f,\n this.alt,\n !ofGet(meta, pred ? ofGet(pred, this.value) : this.value)\n );\n }\n}\n"],"mappings":";AAAA,SAAc,aAAa;AAC3B,SAAS,WAAW,SAAS,MAAM,UAAU,gBAAgB;AAC7D,SAAS,eAAe;AAExB,SAAS,eAAe;AAEjB,MAAM,OAAa;AAAA,EAyBxB,YAAsB,OAAoB,GAAwB,KAAyB,QAAQ,MAAM;AAAnF;AAAoB;AAAwB;AAAyB;AAAA,EAAe;AAAA,EAxB1G,KAAK;AAAA,IACH,OAAO,CAAI,SAA2B,KAAK,SAAS,SAAS,IAAI;AAAA,IACjE,SAAS,CAAI,SAA2B,KAAK,SAAS,WAAW,IAAI;AAAA,IACrE,OAAO,CAAI,SAA2B,KAAK,SAAS,SAAS,IAAI;AAAA,IACjE,IAAI,IAAI,UAAqB,KAAK,SAAS,MAAM,KAAK,KAAK,OAAO,QAAQ,GAAG,KAAK,CAAC,CAAC;AAAA,IACpF,IAAI;AAAA,MACF,QAAQ,CAAI,SAA2B,KAAK,SAAS,UAAU,IAAI;AAAA,MACnE,QAAQ,CAAI,SAA2B,KAAK,SAAS,UAAU,IAAI;AAAA,MACnE,UAAU,CAAI,GAAmB,SAA2B,KAAK,SAAS,MAAM,KAAK,iBAAiB,GAAG,IAAI;AAAA,IAC/G;AAAA,IACA,KAAK;AAAA,MACH,OAAO,CAAI,SAA2B,KAAK,YAAY,SAAS,IAAI;AAAA,MACpE,SAAS,CAAI,SAA2B,KAAK,YAAY,WAAW,IAAI;AAAA,MACxE,OAAO,CAAI,SAA2B,KAAK,YAAY,SAAS,IAAI;AAAA,MACpE,UAAU,CAAI,SAA2B,KAAK,YAAY,UAAU,IAAI;AAAA,MACxE,IAAI,IAAI,UAAqB,KAAK,SAAS,MAAM,CAAC,KAAK,KAAK,OAAO,QAAQ,GAAG,KAAK,CAAC,CAAC;AAAA,MACrF,IAAI;AAAA,QACF,QAAQ,CAAI,SAA2B,KAAK,YAAY,UAAU,IAAI;AAAA,QACtE,QAAQ,CAAI,SAA2B,KAAK,YAAY,UAAU,IAAI;AAAA,QACtE,UAAU,CAAI,GAAmB,SAA2B,KAAK,SAAS,MAAM,EAAE,KAAK,iBAAiB,IAAI,IAAI;AAAA,MAClH;AAAA,IACF;AAAA,EACF;AAAA,EAIU,SAAY,MAAoB,MAAwB;AAChE,WAAO,IAAK,KAAK;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM,MAAM,OAAO,MAAM,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK;AAAA,IACzD;AAAA,EACF;AAAA,EAEU,YAAe,MAAoB,MAAwB;AACnE,WAAO,IAAK,KAAK;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,CAAC,MAAM,MAAM,OAAO,MAAM,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK;AAAA,IAC1D;AAAA,EACF;AACF;","names":[]}
@@ -25,6 +25,7 @@ export * from './Meta';
25
25
  export * from './Nullish';
26
26
  export * from './Number';
27
27
  export * from './PageList';
28
+ export * from './Parser';
28
29
  export * from './Primitive';
29
30
  export * from './Repository';
30
31
  export * from './Result';
@@ -42,6 +42,7 @@ __reExport(types_exports, require("./Meta"), module.exports);
42
42
  __reExport(types_exports, require("./Nullish"), module.exports);
43
43
  __reExport(types_exports, require("./Number"), module.exports);
44
44
  __reExport(types_exports, require("./PageList"), module.exports);
45
+ __reExport(types_exports, require("./Parser"), module.exports);
45
46
  __reExport(types_exports, require("./Primitive"), module.exports);
46
47
  __reExport(types_exports, require("./Repository"), module.exports);
47
48
  __reExport(types_exports, require("./Result"), module.exports);
@@ -86,6 +87,7 @@ __reExport(types_exports, require("./Value"), module.exports);
86
87
  ...require("./Nullish"),
87
88
  ...require("./Number"),
88
89
  ...require("./PageList"),
90
+ ...require("./Parser"),
89
91
  ...require("./Primitive"),
90
92
  ...require("./Repository"),
91
93
  ...require("./Result"),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["export * from './Array';\nexport * from './Builder';\nexport * from './Cache';\nexport * from './CacheAge';\nexport * from './Case';\nexport * from './Constructor';\nexport * from './Context';\nexport * from './Enum';\nexport * from './ErrorOrigin';\nexport * from './Exception';\nexport * from './Falsy';\nexport * from './Func';\nexport * from './Gateway';\nexport * from './Get';\nexport * from './Id';\nexport * from './Identity';\nexport * from './Is';\nexport * from './IsA';\nexport * from './IsDate';\nexport * from './IsEqual';\nexport * from './Json';\nexport * from './List';\nexport * from './Message';\nexport * from './Meta';\nexport * from './Nullish';\nexport * from './Number';\nexport * from './PageList';\nexport * from './Primitive';\nexport * from './Repository';\nexport * from './Result';\nexport * from './Results';\nexport * from './Sort';\nexport * from './Tag';\nexport * from './Template';\nexport * from './Text';\nexport * from './Try';\nexport * from './TypeGuard';\nexport * from './Types';\nexport * from './Uri';\nexport * from './Uuid';\nexport * from './Validatable';\nexport * from './Value';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,oBAAd;AACA,0BAAc,sBADd;AAEA,0BAAc,oBAFd;AAGA,0BAAc,uBAHd;AAIA,0BAAc,mBAJd;AAKA,0BAAc,0BALd;AAMA,0BAAc,sBANd;AAOA,0BAAc,mBAPd;AAQA,0BAAc,0BARd;AASA,0BAAc,wBATd;AAUA,0BAAc,oBAVd;AAWA,0BAAc,mBAXd;AAYA,0BAAc,sBAZd;AAaA,0BAAc,kBAbd;AAcA,0BAAc,iBAdd;AAeA,0BAAc,uBAfd;AAgBA,0BAAc,iBAhBd;AAiBA,0BAAc,kBAjBd;AAkBA,0BAAc,qBAlBd;AAmBA,0BAAc,sBAnBd;AAoBA,0BAAc,mBApBd;AAqBA,0BAAc,mBArBd;AAsBA,0BAAc,sBAtBd;AAuBA,0BAAc,mBAvBd;AAwBA,0BAAc,sBAxBd;AAyBA,0BAAc,qBAzBd;AA0BA,0BAAc,uBA1Bd;AA2BA,0BAAc,wBA3Bd;AA4BA,0BAAc,yBA5Bd;AA6BA,0BAAc,qBA7Bd;AA8BA,0BAAc,sBA9Bd;AA+BA,0BAAc,mBA/Bd;AAgCA,0BAAc,kBAhCd;AAiCA,0BAAc,uBAjCd;AAkCA,0BAAc,mBAlCd;AAmCA,0BAAc,kBAnCd;AAoCA,0BAAc,wBApCd;AAqCA,0BAAc,oBArCd;AAsCA,0BAAc,kBAtCd;AAuCA,0BAAc,mBAvCd;AAwCA,0BAAc,0BAxCd;AAyCA,0BAAc,oBAzCd;","names":[]}
1
+ {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["export * from './Array';\nexport * from './Builder';\nexport * from './Cache';\nexport * from './CacheAge';\nexport * from './Case';\nexport * from './Constructor';\nexport * from './Context';\nexport * from './Enum';\nexport * from './ErrorOrigin';\nexport * from './Exception';\nexport * from './Falsy';\nexport * from './Func';\nexport * from './Gateway';\nexport * from './Get';\nexport * from './Id';\nexport * from './Identity';\nexport * from './Is';\nexport * from './IsA';\nexport * from './IsDate';\nexport * from './IsEqual';\nexport * from './Json';\nexport * from './List';\nexport * from './Message';\nexport * from './Meta';\nexport * from './Nullish';\nexport * from './Number';\nexport * from './PageList';\nexport * from './Parser';\nexport * from './Primitive';\nexport * from './Repository';\nexport * from './Result';\nexport * from './Results';\nexport * from './Sort';\nexport * from './Tag';\nexport * from './Template';\nexport * from './Text';\nexport * from './Try';\nexport * from './TypeGuard';\nexport * from './Types';\nexport * from './Uri';\nexport * from './Uuid';\nexport * from './Validatable';\nexport * from './Value';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,oBAAd;AACA,0BAAc,sBADd;AAEA,0BAAc,oBAFd;AAGA,0BAAc,uBAHd;AAIA,0BAAc,mBAJd;AAKA,0BAAc,0BALd;AAMA,0BAAc,sBANd;AAOA,0BAAc,mBAPd;AAQA,0BAAc,0BARd;AASA,0BAAc,wBATd;AAUA,0BAAc,oBAVd;AAWA,0BAAc,mBAXd;AAYA,0BAAc,sBAZd;AAaA,0BAAc,kBAbd;AAcA,0BAAc,iBAdd;AAeA,0BAAc,uBAfd;AAgBA,0BAAc,iBAhBd;AAiBA,0BAAc,kBAjBd;AAkBA,0BAAc,qBAlBd;AAmBA,0BAAc,sBAnBd;AAoBA,0BAAc,mBApBd;AAqBA,0BAAc,mBArBd;AAsBA,0BAAc,sBAtBd;AAuBA,0BAAc,mBAvBd;AAwBA,0BAAc,sBAxBd;AAyBA,0BAAc,qBAzBd;AA0BA,0BAAc,uBA1Bd;AA2BA,0BAAc,qBA3Bd;AA4BA,0BAAc,wBA5Bd;AA6BA,0BAAc,yBA7Bd;AA8BA,0BAAc,qBA9Bd;AA+BA,0BAAc,sBA/Bd;AAgCA,0BAAc,mBAhCd;AAiCA,0BAAc,kBAjCd;AAkCA,0BAAc,uBAlCd;AAmCA,0BAAc,mBAnCd;AAoCA,0BAAc,kBApCd;AAqCA,0BAAc,wBArCd;AAsCA,0BAAc,oBAtCd;AAuCA,0BAAc,kBAvCd;AAwCA,0BAAc,mBAxCd;AAyCA,0BAAc,0BAzCd;AA0CA,0BAAc,oBA1Cd;","names":[]}
@@ -25,6 +25,7 @@ export * from "./Meta";
25
25
  export * from "./Nullish";
26
26
  export * from "./Number";
27
27
  export * from "./PageList";
28
+ export * from "./Parser";
28
29
  export * from "./Primitive";
29
30
  export * from "./Repository";
30
31
  export * from "./Result";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["export * from './Array';\nexport * from './Builder';\nexport * from './Cache';\nexport * from './CacheAge';\nexport * from './Case';\nexport * from './Constructor';\nexport * from './Context';\nexport * from './Enum';\nexport * from './ErrorOrigin';\nexport * from './Exception';\nexport * from './Falsy';\nexport * from './Func';\nexport * from './Gateway';\nexport * from './Get';\nexport * from './Id';\nexport * from './Identity';\nexport * from './Is';\nexport * from './IsA';\nexport * from './IsDate';\nexport * from './IsEqual';\nexport * from './Json';\nexport * from './List';\nexport * from './Message';\nexport * from './Meta';\nexport * from './Nullish';\nexport * from './Number';\nexport * from './PageList';\nexport * from './Primitive';\nexport * from './Repository';\nexport * from './Result';\nexport * from './Results';\nexport * from './Sort';\nexport * from './Tag';\nexport * from './Template';\nexport * from './Text';\nexport * from './Try';\nexport * from './TypeGuard';\nexport * from './Types';\nexport * from './Uri';\nexport * from './Uuid';\nexport * from './Validatable';\nexport * from './Value';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["export * from './Array';\nexport * from './Builder';\nexport * from './Cache';\nexport * from './CacheAge';\nexport * from './Case';\nexport * from './Constructor';\nexport * from './Context';\nexport * from './Enum';\nexport * from './ErrorOrigin';\nexport * from './Exception';\nexport * from './Falsy';\nexport * from './Func';\nexport * from './Gateway';\nexport * from './Get';\nexport * from './Id';\nexport * from './Identity';\nexport * from './Is';\nexport * from './IsA';\nexport * from './IsDate';\nexport * from './IsEqual';\nexport * from './Json';\nexport * from './List';\nexport * from './Message';\nexport * from './Meta';\nexport * from './Nullish';\nexport * from './Number';\nexport * from './PageList';\nexport * from './Parser';\nexport * from './Primitive';\nexport * from './Repository';\nexport * from './Result';\nexport * from './Results';\nexport * from './Sort';\nexport * from './Tag';\nexport * from './Template';\nexport * from './Text';\nexport * from './Try';\nexport * from './TypeGuard';\nexport * from './Types';\nexport * from './Uri';\nexport * from './Uuid';\nexport * from './Validatable';\nexport * from './Value';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -9,3 +9,4 @@ export type Validator = {
9
9
  export declare const asResults: (subject: unknown, template: Text, options?: TemplateOptions) => Results;
10
10
  export declare const validate: (subject?: unknown) => Results;
11
11
  export declare const validateReject: <T>(subject: T) => Promise<T>;
12
+ export declare const isValid: <T>(t: T) => boolean;
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var Validate_exports = {};
20
20
  __export(Validate_exports, {
21
21
  asResults: () => asResults,
22
+ isValid: () => isValid,
22
23
  validate: () => validate,
23
24
  validateReject: () => validateReject
24
25
  });
@@ -34,9 +35,11 @@ const validate = (subject) => (0, import_types.choose)(subject).is.not.defined(
34
35
  () => (0, import_types.toResults)("Subject is not defined.")
35
36
  ).type(import_types.isEnum, (e) => e.isValid ? (0, import_types.toResults)() : asResults(e, "This is not a valid {type}.")).type(import_types.isValue, (v) => v.isValid ? (0, import_types.toResults)() : asResults(v, "This is not a valid {type}.")).type(import_types.isArray, (a) => a.map((i) => validate(i)).reduce((rs, r) => rs.add(...r.results), (0, import_types.toResults)())).type(import_types.isValidatable, (v) => constraints(v)).else((0, import_types.toResults)());
36
37
  const validateReject = (subject) => (0, import_When.when)(subject).not.isValid.reject();
38
+ const isValid = (t) => validate(t).isValid;
37
39
  // Annotate the CommonJS export names for ESM import in node:
38
40
  0 && (module.exports = {
39
41
  asResults,
42
+ isValid,
40
43
  validate,
41
44
  validateReject
42
45
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/validation/Validate.ts"],"sourcesContent":["import {\n asString,\n choose,\n isArray,\n isEnum,\n isFunction,\n isResults,\n isValidatable,\n isValue,\n List,\n meta,\n Results,\n TemplateOptions,\n text,\n Text,\n toList,\n toName,\n toResult,\n toResults,\n tryTo,\n} from '../types';\nimport { Constraint } from './Contraints';\nimport { when } from './When';\n\nexport type Validator = { property: string | symbol; constraint: Constraint; text: Text; actual?: Text };\n\nexport const asResults = (subject: unknown, template: Text, options: TemplateOptions = {}): Results =>\n toResults(toResult(text(template).parse(subject, options), toName(subject)));\n\nconst validators = (subject: unknown): List<Validator> =>\n meta(subject)\n .keys<List<Validator>>('constraint')\n .reduce((list, vs) => list.add(vs), toList<Validator>());\n\nconst runValidator = (v: Validator, subject?: unknown): Results =>\n tryTo(() => (isFunction((subject as any)[v.property]) ? (subject as any)[v.property]() : (subject as any)[v.property]))\n .map(actual => [actual, v.constraint(actual)])\n .map(([actual, res]) => (isResults(res) ? res : !res ? asResults(subject, v.text, { ...v, actual }) : toResults()))\n .recover(e => asResults(subject, asString(e))).value;\n\nconst constraints = (subject?: unknown): Results =>\n tryTo(() => validators(subject))\n .map(vs => vs.mapDefined(v => runValidator(v, subject)))\n .map(res => res.reduce((rs, r) => rs.add(...r.results), toResults())).value;\n\nexport const validate = (subject?: unknown): Results =>\n choose(subject)\n .is.not.defined(\n s => s,\n () => toResults('Subject is not defined.')\n )\n .type(isEnum, e => (e.isValid ? toResults() : asResults(e, 'This is not a valid {type}.')))\n .type(isValue, v => (v.isValid ? toResults() : asResults(v, 'This is not a valid {type}.')))\n .type(isArray, a => a.map(i => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults()))\n .type(isValidatable, v => constraints(v))\n .else(toResults());\n\nexport const validateReject = <T>(subject: T): Promise<T> => when(subject).not.isValid.reject();\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAoBO;AAEP,kBAAqB;AAId,MAAM,YAAY,CAAC,SAAkB,UAAgB,UAA2B,CAAC,UACtF,4BAAU,2BAAS,mBAAK,QAAQ,EAAE,MAAM,SAAS,OAAO,OAAG,qBAAO,OAAO,CAAC,CAAC;AAE7E,MAAM,aAAa,CAAC,gBAClB,mBAAK,OAAO,EACT,KAAsB,YAAY,EAClC,OAAO,CAAC,MAAM,OAAO,KAAK,IAAI,EAAE,OAAG,qBAAkB,CAAC;AAE3D,MAAM,eAAe,CAAC,GAAc,gBAClC,oBAAM,UAAO,yBAAY,QAAgB,EAAE,QAAQ,CAAC,IAAK,QAAgB,EAAE,QAAQ,EAAE,IAAK,QAAgB,EAAE,QAAQ,CAAE,EACnH,IAAI,YAAU,CAAC,QAAQ,EAAE,WAAW,MAAM,CAAC,CAAC,EAC5C,IAAI,CAAC,CAAC,QAAQ,GAAG,UAAO,wBAAU,GAAG,IAAI,MAAM,CAAC,MAAM,UAAU,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,QAAI,wBAAU,CAAE,EACjH,QAAQ,OAAK,UAAU,aAAS,uBAAS,CAAC,CAAC,CAAC,EAAE;AAEnD,MAAM,cAAc,CAAC,gBACnB,oBAAM,MAAM,WAAW,OAAO,CAAC,EAC5B,IAAI,QAAM,GAAG,WAAW,OAAK,aAAa,GAAG,OAAO,CAAC,CAAC,EACtD,IAAI,SAAO,IAAI,OAAO,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,OAAO,OAAG,wBAAU,CAAC,CAAC,EAAE;AAEnE,MAAM,WAAW,CAAC,gBACvB,qBAAO,OAAO,EACX,GAAG,IAAI;AAAA,EACN,OAAK;AAAA,EACL,UAAM,wBAAU,yBAAyB;AAC3C,EACC,KAAK,qBAAQ,OAAM,EAAE,cAAU,wBAAU,IAAI,UAAU,GAAG,6BAA6B,CAAE,EACzF,KAAK,sBAAS,OAAM,EAAE,cAAU,wBAAU,IAAI,UAAU,GAAG,6BAA6B,CAAE,EAC1F,KAAK,sBAAS,OAAK,EAAE,IAAI,OAAK,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,OAAO,OAAG,wBAAU,CAAC,CAAC,EAC/F,KAAK,4BAAe,OAAK,YAAY,CAAC,CAAC,EACvC,SAAK,wBAAU,CAAC;AAEd,MAAM,iBAAiB,CAAI,gBAA2B,kBAAK,OAAO,EAAE,IAAI,QAAQ,OAAO;","names":[]}
1
+ {"version":3,"sources":["../../src/validation/Validate.ts"],"sourcesContent":["import {\n asString,\n choose,\n isArray,\n isEnum,\n isFunction,\n isResults,\n isValidatable,\n isValue,\n List,\n meta,\n Results,\n TemplateOptions,\n text,\n Text,\n toList,\n toName,\n toResult,\n toResults,\n tryTo,\n} from '../types';\nimport { Constraint } from './Contraints';\nimport { when } from './When';\n\nexport type Validator = { property: string | symbol; constraint: Constraint; text: Text; actual?: Text };\n\nexport const asResults = (subject: unknown, template: Text, options: TemplateOptions = {}): Results =>\n toResults(toResult(text(template).parse(subject, options), toName(subject)));\n\nconst validators = (subject: unknown): List<Validator> =>\n meta(subject)\n .keys<List<Validator>>('constraint')\n .reduce((list, vs) => list.add(vs), toList<Validator>());\n\nconst runValidator = (v: Validator, subject?: unknown): Results =>\n tryTo(() => (isFunction((subject as any)[v.property]) ? (subject as any)[v.property]() : (subject as any)[v.property]))\n .map(actual => [actual, v.constraint(actual)])\n .map(([actual, res]) => (isResults(res) ? res : !res ? asResults(subject, v.text, { ...v, actual }) : toResults()))\n .recover(e => asResults(subject, asString(e))).value;\n\nconst constraints = (subject?: unknown): Results =>\n tryTo(() => validators(subject))\n .map(vs => vs.mapDefined(v => runValidator(v, subject)))\n .map(res => res.reduce((rs, r) => rs.add(...r.results), toResults())).value;\n\nexport const validate = (subject?: unknown): Results =>\n choose(subject)\n .is.not.defined(\n s => s,\n () => toResults('Subject is not defined.')\n )\n .type(isEnum, e => (e.isValid ? toResults() : asResults(e, 'This is not a valid {type}.')))\n .type(isValue, v => (v.isValid ? toResults() : asResults(v, 'This is not a valid {type}.')))\n .type(isArray, a => a.map(i => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults()))\n .type(isValidatable, v => constraints(v))\n .else(toResults());\n\nexport const validateReject = <T>(subject: T): Promise<T> => when(subject).not.isValid.reject();\n\nexport const isValid = <T>(t: T): boolean => validate(t).isValid;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAoBO;AAEP,kBAAqB;AAId,MAAM,YAAY,CAAC,SAAkB,UAAgB,UAA2B,CAAC,UACtF,4BAAU,2BAAS,mBAAK,QAAQ,EAAE,MAAM,SAAS,OAAO,OAAG,qBAAO,OAAO,CAAC,CAAC;AAE7E,MAAM,aAAa,CAAC,gBAClB,mBAAK,OAAO,EACT,KAAsB,YAAY,EAClC,OAAO,CAAC,MAAM,OAAO,KAAK,IAAI,EAAE,OAAG,qBAAkB,CAAC;AAE3D,MAAM,eAAe,CAAC,GAAc,gBAClC,oBAAM,UAAO,yBAAY,QAAgB,EAAE,QAAQ,CAAC,IAAK,QAAgB,EAAE,QAAQ,EAAE,IAAK,QAAgB,EAAE,QAAQ,CAAE,EACnH,IAAI,YAAU,CAAC,QAAQ,EAAE,WAAW,MAAM,CAAC,CAAC,EAC5C,IAAI,CAAC,CAAC,QAAQ,GAAG,UAAO,wBAAU,GAAG,IAAI,MAAM,CAAC,MAAM,UAAU,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,QAAI,wBAAU,CAAE,EACjH,QAAQ,OAAK,UAAU,aAAS,uBAAS,CAAC,CAAC,CAAC,EAAE;AAEnD,MAAM,cAAc,CAAC,gBACnB,oBAAM,MAAM,WAAW,OAAO,CAAC,EAC5B,IAAI,QAAM,GAAG,WAAW,OAAK,aAAa,GAAG,OAAO,CAAC,CAAC,EACtD,IAAI,SAAO,IAAI,OAAO,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,OAAO,OAAG,wBAAU,CAAC,CAAC,EAAE;AAEnE,MAAM,WAAW,CAAC,gBACvB,qBAAO,OAAO,EACX,GAAG,IAAI;AAAA,EACN,OAAK;AAAA,EACL,UAAM,wBAAU,yBAAyB;AAC3C,EACC,KAAK,qBAAQ,OAAM,EAAE,cAAU,wBAAU,IAAI,UAAU,GAAG,6BAA6B,CAAE,EACzF,KAAK,sBAAS,OAAM,EAAE,cAAU,wBAAU,IAAI,UAAU,GAAG,6BAA6B,CAAE,EAC1F,KAAK,sBAAS,OAAK,EAAE,IAAI,OAAK,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,OAAO,OAAG,wBAAU,CAAC,CAAC,EAC/F,KAAK,4BAAe,OAAK,YAAY,CAAC,CAAC,EACvC,SAAK,wBAAU,CAAC;AAEd,MAAM,iBAAiB,CAAI,gBAA2B,kBAAK,OAAO,EAAE,IAAI,QAAQ,OAAO;AAEvF,MAAM,UAAU,CAAI,MAAkB,SAAS,CAAC,EAAE;","names":[]}
@@ -26,8 +26,10 @@ const validate = (subject) => choose(subject).is.not.defined(
26
26
  () => toResults("Subject is not defined.")
27
27
  ).type(isEnum, (e) => e.isValid ? toResults() : asResults(e, "This is not a valid {type}.")).type(isValue, (v) => v.isValid ? toResults() : asResults(v, "This is not a valid {type}.")).type(isArray, (a) => a.map((i) => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults())).type(isValidatable, (v) => constraints(v)).else(toResults());
28
28
  const validateReject = (subject) => when(subject).not.isValid.reject();
29
+ const isValid = (t) => validate(t).isValid;
29
30
  export {
30
31
  asResults,
32
+ isValid,
31
33
  validate,
32
34
  validateReject
33
35
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/validation/Validate.ts"],"sourcesContent":["import {\n asString,\n choose,\n isArray,\n isEnum,\n isFunction,\n isResults,\n isValidatable,\n isValue,\n List,\n meta,\n Results,\n TemplateOptions,\n text,\n Text,\n toList,\n toName,\n toResult,\n toResults,\n tryTo,\n} from '../types';\nimport { Constraint } from './Contraints';\nimport { when } from './When';\n\nexport type Validator = { property: string | symbol; constraint: Constraint; text: Text; actual?: Text };\n\nexport const asResults = (subject: unknown, template: Text, options: TemplateOptions = {}): Results =>\n toResults(toResult(text(template).parse(subject, options), toName(subject)));\n\nconst validators = (subject: unknown): List<Validator> =>\n meta(subject)\n .keys<List<Validator>>('constraint')\n .reduce((list, vs) => list.add(vs), toList<Validator>());\n\nconst runValidator = (v: Validator, subject?: unknown): Results =>\n tryTo(() => (isFunction((subject as any)[v.property]) ? (subject as any)[v.property]() : (subject as any)[v.property]))\n .map(actual => [actual, v.constraint(actual)])\n .map(([actual, res]) => (isResults(res) ? res : !res ? asResults(subject, v.text, { ...v, actual }) : toResults()))\n .recover(e => asResults(subject, asString(e))).value;\n\nconst constraints = (subject?: unknown): Results =>\n tryTo(() => validators(subject))\n .map(vs => vs.mapDefined(v => runValidator(v, subject)))\n .map(res => res.reduce((rs, r) => rs.add(...r.results), toResults())).value;\n\nexport const validate = (subject?: unknown): Results =>\n choose(subject)\n .is.not.defined(\n s => s,\n () => toResults('Subject is not defined.')\n )\n .type(isEnum, e => (e.isValid ? toResults() : asResults(e, 'This is not a valid {type}.')))\n .type(isValue, v => (v.isValid ? toResults() : asResults(v, 'This is not a valid {type}.')))\n .type(isArray, a => a.map(i => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults()))\n .type(isValidatable, v => constraints(v))\n .else(toResults());\n\nexport const validateReject = <T>(subject: T): Promise<T> => when(subject).not.isValid.reject();\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EAGA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,YAAY;AAId,MAAM,YAAY,CAAC,SAAkB,UAAgB,UAA2B,CAAC,MACtF,UAAU,SAAS,KAAK,QAAQ,EAAE,MAAM,SAAS,OAAO,GAAG,OAAO,OAAO,CAAC,CAAC;AAE7E,MAAM,aAAa,CAAC,YAClB,KAAK,OAAO,EACT,KAAsB,YAAY,EAClC,OAAO,CAAC,MAAM,OAAO,KAAK,IAAI,EAAE,GAAG,OAAkB,CAAC;AAE3D,MAAM,eAAe,CAAC,GAAc,YAClC,MAAM,MAAO,WAAY,QAAgB,EAAE,QAAQ,CAAC,IAAK,QAAgB,EAAE,QAAQ,EAAE,IAAK,QAAgB,EAAE,QAAQ,CAAE,EACnH,IAAI,YAAU,CAAC,QAAQ,EAAE,WAAW,MAAM,CAAC,CAAC,EAC5C,IAAI,CAAC,CAAC,QAAQ,GAAG,MAAO,UAAU,GAAG,IAAI,MAAM,CAAC,MAAM,UAAU,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,UAAU,CAAE,EACjH,QAAQ,OAAK,UAAU,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE;AAEnD,MAAM,cAAc,CAAC,YACnB,MAAM,MAAM,WAAW,OAAO,CAAC,EAC5B,IAAI,QAAM,GAAG,WAAW,OAAK,aAAa,GAAG,OAAO,CAAC,CAAC,EACtD,IAAI,SAAO,IAAI,OAAO,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC,EAAE;AAEnE,MAAM,WAAW,CAAC,YACvB,OAAO,OAAO,EACX,GAAG,IAAI;AAAA,EACN,OAAK;AAAA,EACL,MAAM,UAAU,yBAAyB;AAC3C,EACC,KAAK,QAAQ,OAAM,EAAE,UAAU,UAAU,IAAI,UAAU,GAAG,6BAA6B,CAAE,EACzF,KAAK,SAAS,OAAM,EAAE,UAAU,UAAU,IAAI,UAAU,GAAG,6BAA6B,CAAE,EAC1F,KAAK,SAAS,OAAK,EAAE,IAAI,OAAK,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC,EAC/F,KAAK,eAAe,OAAK,YAAY,CAAC,CAAC,EACvC,KAAK,UAAU,CAAC;AAEd,MAAM,iBAAiB,CAAI,YAA2B,KAAK,OAAO,EAAE,IAAI,QAAQ,OAAO;","names":[]}
1
+ {"version":3,"sources":["../../src/validation/Validate.ts"],"sourcesContent":["import {\n asString,\n choose,\n isArray,\n isEnum,\n isFunction,\n isResults,\n isValidatable,\n isValue,\n List,\n meta,\n Results,\n TemplateOptions,\n text,\n Text,\n toList,\n toName,\n toResult,\n toResults,\n tryTo,\n} from '../types';\nimport { Constraint } from './Contraints';\nimport { when } from './When';\n\nexport type Validator = { property: string | symbol; constraint: Constraint; text: Text; actual?: Text };\n\nexport const asResults = (subject: unknown, template: Text, options: TemplateOptions = {}): Results =>\n toResults(toResult(text(template).parse(subject, options), toName(subject)));\n\nconst validators = (subject: unknown): List<Validator> =>\n meta(subject)\n .keys<List<Validator>>('constraint')\n .reduce((list, vs) => list.add(vs), toList<Validator>());\n\nconst runValidator = (v: Validator, subject?: unknown): Results =>\n tryTo(() => (isFunction((subject as any)[v.property]) ? (subject as any)[v.property]() : (subject as any)[v.property]))\n .map(actual => [actual, v.constraint(actual)])\n .map(([actual, res]) => (isResults(res) ? res : !res ? asResults(subject, v.text, { ...v, actual }) : toResults()))\n .recover(e => asResults(subject, asString(e))).value;\n\nconst constraints = (subject?: unknown): Results =>\n tryTo(() => validators(subject))\n .map(vs => vs.mapDefined(v => runValidator(v, subject)))\n .map(res => res.reduce((rs, r) => rs.add(...r.results), toResults())).value;\n\nexport const validate = (subject?: unknown): Results =>\n choose(subject)\n .is.not.defined(\n s => s,\n () => toResults('Subject is not defined.')\n )\n .type(isEnum, e => (e.isValid ? toResults() : asResults(e, 'This is not a valid {type}.')))\n .type(isValue, v => (v.isValid ? toResults() : asResults(v, 'This is not a valid {type}.')))\n .type(isArray, a => a.map(i => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults()))\n .type(isValidatable, v => constraints(v))\n .else(toResults());\n\nexport const validateReject = <T>(subject: T): Promise<T> => when(subject).not.isValid.reject();\n\nexport const isValid = <T>(t: T): boolean => validate(t).isValid;\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EAGA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,YAAY;AAId,MAAM,YAAY,CAAC,SAAkB,UAAgB,UAA2B,CAAC,MACtF,UAAU,SAAS,KAAK,QAAQ,EAAE,MAAM,SAAS,OAAO,GAAG,OAAO,OAAO,CAAC,CAAC;AAE7E,MAAM,aAAa,CAAC,YAClB,KAAK,OAAO,EACT,KAAsB,YAAY,EAClC,OAAO,CAAC,MAAM,OAAO,KAAK,IAAI,EAAE,GAAG,OAAkB,CAAC;AAE3D,MAAM,eAAe,CAAC,GAAc,YAClC,MAAM,MAAO,WAAY,QAAgB,EAAE,QAAQ,CAAC,IAAK,QAAgB,EAAE,QAAQ,EAAE,IAAK,QAAgB,EAAE,QAAQ,CAAE,EACnH,IAAI,YAAU,CAAC,QAAQ,EAAE,WAAW,MAAM,CAAC,CAAC,EAC5C,IAAI,CAAC,CAAC,QAAQ,GAAG,MAAO,UAAU,GAAG,IAAI,MAAM,CAAC,MAAM,UAAU,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,UAAU,CAAE,EACjH,QAAQ,OAAK,UAAU,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE;AAEnD,MAAM,cAAc,CAAC,YACnB,MAAM,MAAM,WAAW,OAAO,CAAC,EAC5B,IAAI,QAAM,GAAG,WAAW,OAAK,aAAa,GAAG,OAAO,CAAC,CAAC,EACtD,IAAI,SAAO,IAAI,OAAO,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC,EAAE;AAEnE,MAAM,WAAW,CAAC,YACvB,OAAO,OAAO,EACX,GAAG,IAAI;AAAA,EACN,OAAK;AAAA,EACL,MAAM,UAAU,yBAAyB;AAC3C,EACC,KAAK,QAAQ,OAAM,EAAE,UAAU,UAAU,IAAI,UAAU,GAAG,6BAA6B,CAAE,EACzF,KAAK,SAAS,OAAM,EAAE,UAAU,UAAU,IAAI,UAAU,GAAG,6BAA6B,CAAE,EAC1F,KAAK,SAAS,OAAK,EAAE,IAAI,OAAK,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC,EAC/F,KAAK,eAAe,OAAK,YAAY,CAAC,CAAC,EACvC,KAAK,UAAU,CAAC;AAEd,MAAM,iBAAiB,CAAI,YAA2B,KAAK,OAAO,EAAE,IAAI,QAAQ,OAAO;AAEvF,MAAM,UAAU,CAAI,MAAkB,SAAS,CAAC,EAAE;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "15.16.3",
3
+ "version": "15.17.1",
4
4
  "description": "Straightforward library for building domain-driven microservice architectures",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
@@ -33,7 +33,7 @@
33
33
  "access": "public"
34
34
  },
35
35
  "devDependencies": {
36
- "@thisisagile/easy-test": "15.16.3",
36
+ "@thisisagile/easy-test": "15.17.1",
37
37
  "@types/form-urlencoded": "^4.4.0",
38
38
  "@types/jsonwebtoken": "^9.0.2",
39
39
  "@types/luxon": "3.4.2",
@@ -19,7 +19,7 @@ export type Routes = { route: Uri; middleware: RequestHandler[]; endpoints: List
19
19
  const toRoute = (endpoint: Endpoint, requires: RouteRequires, verb?: Verb, middleware?: RequestHandler[]): Optional<Route> =>
20
20
  tryTo(verb)
21
21
  .is.defined()
22
- .map(verb => ({ verb, endpoint, requires, middleware: middleware ?? [] } as Route))
22
+ .map(verb => ({ verb, endpoint, requires, middleware: middleware ?? [] }) as Route)
23
23
  .orElse();
24
24
 
25
25
  class Router implements Routes {
@@ -0,0 +1,51 @@
1
+ import { Get, ofGet } from './Get';
2
+ import { isDefined, isEmpty, isIn, isObject, isString } from './Is';
3
+ import { isValid } from '../validation';
4
+ import { Constructor } from './Constructor';
5
+ import { toArray } from './Array';
6
+
7
+ export class Parser<T, V> {
8
+ if = {
9
+ empty: <U>(pred?: Get<U, T>): this => this.evaluate(isEmpty, pred),
10
+ defined: <U>(pred?: Get<U, T>): this => this.evaluate(isDefined, pred),
11
+ valid: <U>(pred?: Get<U, T>): this => this.evaluate(isValid, pred),
12
+ in: (...items: T[]): this => this.evaluate(() => isIn(this.value, toArray(...items))),
13
+ is: {
14
+ object: <U>(pred?: Get<U, T>): this => this.evaluate(isObject, pred),
15
+ string: <U>(pred?: Get<U, T>): this => this.evaluate(isString, pred),
16
+ instance: <U>(c: Constructor<U>, pred?: Get<U, T>): this => this.evaluate(() => this.value instanceof c, pred),
17
+ },
18
+ not: {
19
+ empty: <U>(pred?: Get<U, T>): this => this.evaluateNot(isEmpty, pred),
20
+ defined: <U>(pred?: Get<U, T>): this => this.evaluateNot(isDefined, pred),
21
+ valid: <U>(pred?: Get<U, T>): this => this.evaluateNot(isValid, pred),
22
+ isObject: <U>(pred?: Get<U, T>): this => this.evaluateNot(isObject, pred),
23
+ in: (...items: T[]): this => this.evaluate(() => !isIn(this.value, toArray(...items))),
24
+ is: {
25
+ object: <U>(pred?: Get<U, T>): this => this.evaluateNot(isObject, pred),
26
+ string: <U>(pred?: Get<U, T>): this => this.evaluateNot(isString, pred),
27
+ instance: <U>(c: Constructor<U>, pred?: Get<U, T>): this => this.evaluate(() => !(this.value instanceof c), pred),
28
+ },
29
+ },
30
+ };
31
+
32
+ constructor(protected value: T, protected f: Get<V, T>, protected alt: Get<V, T>, readonly valid = true) {}
33
+
34
+ protected evaluate<U>(meta: Get<boolean>, pred?: Get<U, T>): this {
35
+ return new (this.constructor as new (value: T, f: Get<V, T>, alt: Get<V, T>, allow?: boolean) => this)(
36
+ this.value,
37
+ this.f,
38
+ this.alt,
39
+ ofGet(meta, pred ? ofGet(pred, this.value) : this.value)
40
+ );
41
+ }
42
+
43
+ protected evaluateNot<U>(meta: Get<boolean>, pred?: Get<U, T>): this {
44
+ return new (this.constructor as new (value: T, f: Get<V, T>, alt: Get<V, T>, allow?: boolean) => this)(
45
+ this.value,
46
+ this.f,
47
+ this.alt,
48
+ !ofGet(meta, pred ? ofGet(pred, this.value) : this.value)
49
+ );
50
+ }
51
+ }
@@ -25,6 +25,7 @@ export * from './Meta';
25
25
  export * from './Nullish';
26
26
  export * from './Number';
27
27
  export * from './PageList';
28
+ export * from './Parser';
28
29
  export * from './Primitive';
29
30
  export * from './Repository';
30
31
  export * from './Result';
@@ -56,3 +56,5 @@ export const validate = (subject?: unknown): Results =>
56
56
  .else(toResults());
57
57
 
58
58
  export const validateReject = <T>(subject: T): Promise<T> => when(subject).not.isValid.reject();
59
+
60
+ export const isValid = <T>(t: T): boolean => validate(t).isValid;