@ne1410s/codl 0.1.174 → 0.1.175
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/README.md +3 -3
- package/dist/decorate/interception.d.ts +3 -2
- package/dist/decorate/interception.d.ts.map +1 -0
- package/dist/decorate/interception.js +50 -0
- package/dist/decorate/interception.js.map +1 -0
- package/dist/decorate/metadata.d.ts +2 -1
- package/dist/decorate/metadata.d.ts.map +1 -0
- package/dist/decorate/metadata.js +33 -0
- package/dist/decorate/metadata.js.map +1 -0
- package/dist/decorate/type.d.ts +2 -1
- package/dist/decorate/type.d.ts.map +1 -0
- package/dist/decorate/type.js +22 -0
- package/dist/decorate/type.js.map +1 -0
- package/dist/decorate/validation.d.ts +2 -1
- package/dist/decorate/validation.d.ts.map +1 -0
- package/dist/decorate/validation.js +147 -0
- package/dist/decorate/validation.js.map +1 -0
- package/dist/index.d.ts +8 -7
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/mdkeys.d.ts +1 -0
- package/dist/mdkeys.d.ts.map +1 -0
- package/dist/mdkeys.js +23 -0
- package/dist/mdkeys.js.map +1 -0
- package/dist/reflect/metadata.d.ts +2 -1
- package/dist/reflect/metadata.d.ts.map +1 -0
- package/dist/reflect/metadata.js +33 -0
- package/dist/reflect/metadata.js.map +1 -0
- package/dist/reflect/type/models.d.ts +1 -0
- package/dist/reflect/type/models.d.ts.map +1 -0
- package/dist/reflect/type/models.js +2 -0
- package/dist/reflect/type/models.js.map +1 -0
- package/dist/reflect/type/parsers/boolean.d.ts +3 -2
- package/dist/reflect/type/parsers/boolean.d.ts.map +1 -0
- package/dist/reflect/type/parsers/boolean.js +8 -0
- package/dist/reflect/type/parsers/boolean.js.map +1 -0
- package/dist/reflect/type/parsers/date.d.ts +3 -2
- package/dist/reflect/type/parsers/date.d.ts.map +1 -0
- package/dist/reflect/type/parsers/date.js +10 -0
- package/dist/reflect/type/parsers/date.js.map +1 -0
- package/dist/reflect/type/parsers/integer.d.ts +3 -2
- package/dist/reflect/type/parsers/integer.d.ts.map +1 -0
- package/dist/reflect/type/parsers/integer.js +6 -0
- package/dist/reflect/type/parsers/integer.js.map +1 -0
- package/dist/reflect/type/parsers/number.d.ts +3 -2
- package/dist/reflect/type/parsers/number.d.ts.map +1 -0
- package/dist/reflect/type/parsers/number.js +6 -0
- package/dist/reflect/type/parsers/number.js.map +1 -0
- package/dist/reflect/type/type.d.ts +3 -2
- package/dist/reflect/type/type.d.ts.map +1 -0
- package/dist/reflect/type/type.js +43 -0
- package/dist/reflect/type/type.js.map +1 -0
- package/dist/reflect/validation/models.d.ts +2 -1
- package/dist/reflect/validation/models.d.ts.map +1 -0
- package/dist/reflect/validation/models.js +2 -0
- package/dist/reflect/validation/models.js.map +1 -0
- package/dist/reflect/validation/validation.d.ts +3 -2
- package/dist/reflect/validation/validation.d.ts.map +1 -0
- package/dist/reflect/validation/validation.js +179 -0
- package/dist/reflect/validation/validation.js.map +1 -0
- package/dist/reflect/validation/validators/custom.d.ts +2 -1
- package/dist/reflect/validation/validators/custom.d.ts.map +1 -0
- package/dist/reflect/validation/validators/custom.js +19 -0
- package/dist/reflect/validation/validators/custom.js.map +1 -0
- package/dist/reflect/validation/validators/forbidden.d.ts +2 -1
- package/dist/reflect/validation/validators/forbidden.d.ts.map +1 -0
- package/dist/reflect/validation/validators/forbidden.js +18 -0
- package/dist/reflect/validation/validators/forbidden.js.map +1 -0
- package/dist/reflect/validation/validators/length-range.d.ts +2 -1
- package/dist/reflect/validation/validators/length-range.d.ts.map +1 -0
- package/dist/reflect/validation/validators/length-range.js +30 -0
- package/dist/reflect/validation/validators/length-range.js.map +1 -0
- package/dist/reflect/validation/validators/options.d.ts +2 -1
- package/dist/reflect/validation/validators/options.d.ts.map +1 -0
- package/dist/reflect/validation/validators/options.js +21 -0
- package/dist/reflect/validation/validators/options.js.map +1 -0
- package/dist/reflect/validation/validators/range.d.ts +2 -1
- package/dist/reflect/validation/validators/range.d.ts.map +1 -0
- package/dist/reflect/validation/validators/range.js +37 -0
- package/dist/reflect/validation/validators/range.js.map +1 -0
- package/dist/reflect/validation/validators/regex.d.ts +2 -1
- package/dist/reflect/validation/validators/regex.d.ts.map +1 -0
- package/dist/reflect/validation/validators/regex.js +21 -0
- package/dist/reflect/validation/validators/regex.js.map +1 -0
- package/dist/reflect/validation/validators/required.d.ts +2 -1
- package/dist/reflect/validation/validators/required.d.ts.map +1 -0
- package/dist/reflect/validation/validators/required.js +18 -0
- package/dist/reflect/validation/validators/required.js.map +1 -0
- package/dist/reflect/validation/validators/type.d.ts +2 -1
- package/dist/reflect/validation/validators/type.d.ts.map +1 -0
- package/dist/reflect/validation/validators/type.js +22 -0
- package/dist/reflect/validation/validators/type.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +56 -52
- package/dist/ne14_codl.cjs.min.js +0 -807
- package/dist/ne14_codl.esm.min.js +0 -799
- package/dist/ne14_codl.umd.min.js +0 -811
package/README.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
# @ne1410s/codl
|
|
2
|
-
|
|
3
|
-
Indulge your apps with codl: a component model library
|
|
1
|
+
# @ne1410s/codl
|
|
2
|
+
|
|
3
|
+
Indulge your apps with codl: a component model library
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Ctor, FunctionDecorator, TypedPropertyDecorator } from '../types';
|
|
1
|
+
import type { Ctor, FunctionDecorator, TypedPropertyDecorator } from '../types.js';
|
|
2
2
|
export declare abstract class Interception {
|
|
3
3
|
/**
|
|
4
4
|
* Calls a custom function each with new instance created.
|
|
5
5
|
* @param fn A custom function.
|
|
6
6
|
*/
|
|
7
|
-
static readonly init: <T>(fn: (o: any) => void) => (c: Ctor<T>) => Ctor<
|
|
7
|
+
static readonly init: <T>(fn: (o: any) => void) => (c: Ctor<T>) => Ctor<T>;
|
|
8
8
|
/**
|
|
9
9
|
* Provides an initial / default value.
|
|
10
10
|
* @param val The initial value.
|
|
@@ -24,3 +24,4 @@ export declare abstract class Interception {
|
|
|
24
24
|
static readonly output: <T>(fn: (val: T, args: any[], o: any) => T) => FunctionDecorator;
|
|
25
25
|
private static readonly expose;
|
|
26
26
|
}
|
|
27
|
+
//# sourceMappingURL=interception.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interception.d.ts","sourceRoot":"","sources":["../../src/decorate/interception.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAEnF,8BAAsB,YAAY;IAChC;;;OAGG;IACH,gBAAuB,IAAI,GACxB,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,SACpB,IAAI,CAAC,CAAC,CAAC,aACkB;IAE/B;;;OAGG;IACH,gBAAuB,OAAO,GAAI,CAAC,OAAO,CAAC,KAAG,sBAAsB,CAAC,CAAC,CAAC,CAIrE;IAEF;;;;OAIG;IACH,gBAAuB,KAAK,OAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,GAAG,KAAG,iBAAiB,CAIlF;IAEF;;;;OAIG;IACH,gBAAuB,MAAM,GAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,KAAG,iBAAiB,CAQ5F;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAS5B;CACH"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export class Interception {
|
|
2
|
+
/**
|
|
3
|
+
* Calls a custom function each with new instance created.
|
|
4
|
+
* @param fn A custom function.
|
|
5
|
+
*/
|
|
6
|
+
static { this.init = (fn) => (c) => Interception.expose(c, fn); }
|
|
7
|
+
/**
|
|
8
|
+
* Provides an initial / default value.
|
|
9
|
+
* @param val The initial value.
|
|
10
|
+
*/
|
|
11
|
+
static { this.initial = (val) => {
|
|
12
|
+
return (target, key) => {
|
|
13
|
+
target[key] = val;
|
|
14
|
+
};
|
|
15
|
+
}; }
|
|
16
|
+
/**
|
|
17
|
+
* Intercepts the input of a function, preventing its execution.
|
|
18
|
+
* @param fn A custom function.
|
|
19
|
+
* @returns The result of the custom function.
|
|
20
|
+
*/
|
|
21
|
+
static { this.input = (fn) => {
|
|
22
|
+
return (trg, key, desc) => {
|
|
23
|
+
desc.value = (...args) => fn(args, trg);
|
|
24
|
+
};
|
|
25
|
+
}; }
|
|
26
|
+
/**
|
|
27
|
+
* Intercepts the output of a function, after it is executed.
|
|
28
|
+
* @param fn A custom function.
|
|
29
|
+
* @returns The result of the custom function.
|
|
30
|
+
*/
|
|
31
|
+
static { this.output = (fn) => {
|
|
32
|
+
return (trg, key, desc) => {
|
|
33
|
+
const origFn = desc.value;
|
|
34
|
+
desc.value = (...args) => {
|
|
35
|
+
const origVal = origFn.apply(trg, args);
|
|
36
|
+
return fn(origVal, args, trg);
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}; }
|
|
40
|
+
static { this.expose = (ctor, fn) => {
|
|
41
|
+
function retVal(...args) {
|
|
42
|
+
const instance = Reflect.construct(ctor, args);
|
|
43
|
+
fn(instance);
|
|
44
|
+
return instance;
|
|
45
|
+
}
|
|
46
|
+
retVal.prototype = ctor.prototype;
|
|
47
|
+
return retVal;
|
|
48
|
+
}; }
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=interception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interception.js","sourceRoot":"","sources":["../../src/decorate/interception.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,YAAY;IAChC;;;OAGG;aACoB,SAAI,GACzB,CAAI,EAAoB,EAAE,EAAE,CAC5B,CAAC,CAAU,EAAE,EAAE,CACb,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE/B;;;OAGG;aACoB,YAAO,GAAG,CAAI,GAAM,EAA6B,EAAE;QACxE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACpB,MAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF;;;;OAIG;aACoB,UAAK,GAAG,CAAC,EAAgC,EAAqB,EAAE;QACrF,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACxB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF;;;;OAIG;aACoB,WAAM,GAAG,CAAI,EAAsC,EAAqB,EAAE;QAC/F,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;gBAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAChC,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,CAAC;aAEsB,WAAM,GAAG,CAAI,IAAa,EAAE,EAAkB,EAAW,EAAE;QACjF,SAAS,MAAM,CAAY,GAAG,IAAW;YACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAM,CAAC;YACpD,EAAE,CAAC,QAAQ,CAAC,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,OAAO,MAA4B,CAAC;IACtC,CAAC,CAAC;CACH"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import { TypedPropertyDecorator, Ctor } from '../types';
|
|
2
|
+
import type { TypedPropertyDecorator, Ctor } from '../types.js';
|
|
3
3
|
/** Decorators for metadata purposes. */
|
|
4
4
|
export declare abstract class Metadata {
|
|
5
5
|
/**
|
|
@@ -26,3 +26,4 @@ export declare abstract class Metadata {
|
|
|
26
26
|
/** Associates a child's prototype data on the parent in which it appears. */
|
|
27
27
|
static readonly model: <T extends Object>(ctor: Ctor<T>) => TypedPropertyDecorator<T | T[]>;
|
|
28
28
|
}
|
|
29
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/decorate/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGhE,wCAAwC;AACxC,8BAAsB,QAAQ;IAC5B;;;OAGG;IACH,gBAAuB,WAAW,QAAS,MAAM;;;MAE/C;IAEF;;;OAGG;IACH,gBAAuB,WAAW,QAAS,MAAM;;;MAE/C;IAEF;;;OAGG;IACH,gBAAuB,MAAM,GAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,KAAG,sBAAsB,CAAC,CAAC,CAAC,CAEpF;IAEF,6EAA6E;IAC7E,gBAAuB,KAAK,GAAI,CAAC,SAAS,MAAM,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAG,sBAAsB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAI/F;CACH"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { MetadataKey } from '../mdkeys.js';
|
|
3
|
+
/** Decorators for metadata purposes. */
|
|
4
|
+
export class Metadata {
|
|
5
|
+
/**
|
|
6
|
+
* Associates a display name with the member to which it is applied.
|
|
7
|
+
* @param val The name.
|
|
8
|
+
*/
|
|
9
|
+
static { this.displayName = (val) => {
|
|
10
|
+
return Reflect.metadata(MetadataKey.DISPLAY_NAME, val);
|
|
11
|
+
}; }
|
|
12
|
+
/**
|
|
13
|
+
* Associates a description with the member to which it is applied.
|
|
14
|
+
* @param val The description.
|
|
15
|
+
*/
|
|
16
|
+
static { this.description = (val) => {
|
|
17
|
+
return Reflect.metadata(MetadataKey.DESCRIPTION, val);
|
|
18
|
+
}; }
|
|
19
|
+
/**
|
|
20
|
+
* Associates a format function with the member to which it is applied.
|
|
21
|
+
* @param fn The format function.
|
|
22
|
+
*/
|
|
23
|
+
static { this.format = (fn) => {
|
|
24
|
+
return Reflect.metadata(MetadataKey.FORMAT, fn);
|
|
25
|
+
}; }
|
|
26
|
+
/** Associates a child's prototype data on the parent in which it appears. */
|
|
27
|
+
static { this.model = (ctor) => {
|
|
28
|
+
return (trg, key) => {
|
|
29
|
+
Reflect.defineMetadata(`${MetadataKey.MODEL}:${key.toString()}`, ctor, trg);
|
|
30
|
+
};
|
|
31
|
+
}; }
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/decorate/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wCAAwC;AACxC,MAAM,OAAgB,QAAQ;IAC5B;;;OAGG;aACoB,gBAAW,GAAG,CAAC,GAAW,EAAE,EAAE;QACnD,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF;;;OAGG;aACoB,gBAAW,GAAG,CAAC,GAAW,EAAE,EAAE;QACnD,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF;;;OAGG;aACoB,WAAM,GAAG,CAAI,EAAsB,EAA6B,EAAE;QACvF,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,6EAA6E;aACtD,UAAK,GAAG,CAAmB,IAAa,EAAmC,EAAE;QAClG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClB,OAAO,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9E,CAAC,CAAC;IACJ,CAAC,CAAC;CACH"}
|
package/dist/decorate/type.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import { TypedPropertyDecorator } from '../types';
|
|
2
|
+
import type { TypedPropertyDecorator } from '../types.js';
|
|
3
3
|
/** Decorators for type purposes. */
|
|
4
4
|
export declare abstract class Type {
|
|
5
5
|
static readonly boolean: TypedPropertyDecorator<boolean | number | string | Array<boolean | number | string>>;
|
|
@@ -7,3 +7,4 @@ export declare abstract class Type {
|
|
|
7
7
|
static readonly integer: TypedPropertyDecorator<number | string | Array<number | string>>;
|
|
8
8
|
static readonly number: TypedPropertyDecorator<number | string | Array<number | string>>;
|
|
9
9
|
}
|
|
10
|
+
//# sourceMappingURL=type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/decorate/type.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG1D,oCAAoC;AACpC,8BAAsB,IAAI;IACxB,gBAAuB,OAAO,EAAE,sBAAsB,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAIhH;IAEJ,gBAAuB,IAAI,EAAE,sBAAsB,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAGvF;IAEF,gBAAuB,OAAO,EAAE,sBAAsB,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAG9F;IAEF,gBAAuB,MAAM,EAAE,sBAAsB,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAG7F;CACH"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { ValidationKey } from '../mdkeys.js';
|
|
3
|
+
/** Decorators for type purposes. */
|
|
4
|
+
export class Type {
|
|
5
|
+
static { this.boolean = (trg, key) => {
|
|
6
|
+
Reflect.defineMetadata(`${ValidationKey.TYPE}:${key.toString()}`, key, trg);
|
|
7
|
+
Reflect.defineMetadata(ValidationKey.TYPE, 'boolean', trg, key);
|
|
8
|
+
}; }
|
|
9
|
+
static { this.date = (trg, key) => {
|
|
10
|
+
Reflect.defineMetadata(`${ValidationKey.TYPE}:${key.toString()}`, key, trg);
|
|
11
|
+
Reflect.defineMetadata(ValidationKey.TYPE, 'date', trg, key);
|
|
12
|
+
}; }
|
|
13
|
+
static { this.integer = (trg, key) => {
|
|
14
|
+
Reflect.defineMetadata(`${ValidationKey.TYPE}:${key.toString()}`, key, trg);
|
|
15
|
+
Reflect.defineMetadata(ValidationKey.TYPE, 'integer', trg, key);
|
|
16
|
+
}; }
|
|
17
|
+
static { this.number = (trg, key) => {
|
|
18
|
+
Reflect.defineMetadata(`${ValidationKey.TYPE}:${key.toString()}`, key, trg);
|
|
19
|
+
Reflect.defineMetadata(ValidationKey.TYPE, 'number', trg, key);
|
|
20
|
+
}; }
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/decorate/type.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,oCAAoC;AACpC,MAAM,OAAgB,IAAI;aACD,YAAO,GAC5B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5E,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClE,CAAC,CAAC;aAEmB,SAAI,GAAiE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACvG,OAAO,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5E,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC,CAAC;aAEqB,YAAO,GAAqE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9G,OAAO,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5E,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClE,CAAC,CAAC;aAEqB,WAAM,GAAqE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7G,OAAO,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5E,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC,CAAC;CACH"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import { TypedPropertyDecorator, CustomValidator } from '../types';
|
|
2
|
+
import type { TypedPropertyDecorator, CustomValidator } from '../types.js';
|
|
3
3
|
/** Decorators for validation purposes. */
|
|
4
4
|
export declare abstract class Validation {
|
|
5
5
|
/**
|
|
@@ -69,3 +69,4 @@ export declare abstract class Validation {
|
|
|
69
69
|
*/
|
|
70
70
|
static readonly custom: <T>(fn: CustomValidator) => TypedPropertyDecorator<T>;
|
|
71
71
|
}
|
|
72
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/decorate/validation.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG3E,0CAA0C;AAC1C,8BAAsB,UAAU;IAC9B;;;OAGG;IACH,gBAAuB,QAAQ,EAAE,iBAAiB,CAGhD;IAEF;;;OAGG;IACH,gBAAuB,SAAS,EAAE,iBAAiB,CAGjD;IAEF;;;;;OAKG;IACH,gBAAuB,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,KAAK,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAK3F;IAEF;;;;;OAKG;IACH,gBAAuB,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,KAAK,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAK3F;IAEF;;;;;OAKG;IACH,gBAAuB,GAAG,EAAE,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,sBAAsB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAc1G;IAEF;;;;;OAKG;IACH,gBAAuB,GAAG,EAAE,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,sBAAsB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAc1G;IAEF;;;;;OAKG;IACH,gBAAuB,KAAK,EAAE,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,EACpD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,KACN,sBAAsB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAc3C;IAEF;;;;;OAKG;IACH,gBAAuB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,iBAAiB,CAKzE;IAEF;;;OAGG;IACH,gBAAuB,OAAO,EAAE,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EAClE,GAAG,IAAI,EAAE,CAAC,EAAE,KACT,sBAAsB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAK3C;IAEF;;;;;;;OAOG;IACH,gBAAuB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,eAAe,KAAK,sBAAsB,CAAC,CAAC,CAAC,CAKlF;CACH"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { ValidationKey } from '../mdkeys.js';
|
|
3
|
+
/** Decorators for validation purposes. */
|
|
4
|
+
export class Validation {
|
|
5
|
+
/**
|
|
6
|
+
* Makes a property required. 'Unprovided' values (null, undefined, '') are
|
|
7
|
+
* invalid, as is NaN. Anything else is valid (including: 0, 0n, false).
|
|
8
|
+
*/
|
|
9
|
+
static { this.required = (trg, key) => {
|
|
10
|
+
Reflect.defineMetadata(`${ValidationKey.REQUIRED}:${key.toString()}`, key, trg);
|
|
11
|
+
Reflect.defineMetadata(ValidationKey.REQUIRED, true, trg, key);
|
|
12
|
+
}; }
|
|
13
|
+
/**
|
|
14
|
+
* Makes a property forbidden. 'Unprovided' values (null, undefined, '') are
|
|
15
|
+
* valid. Anything else is considered invalid (including: 0, 0n, false).
|
|
16
|
+
*/
|
|
17
|
+
static { this.forbidden = (trg, key) => {
|
|
18
|
+
Reflect.defineMetadata(`${ValidationKey.FORBIDDEN}:${key.toString()}`, key, trg);
|
|
19
|
+
Reflect.defineMetadata(ValidationKey.FORBIDDEN, true, trg, key);
|
|
20
|
+
}; }
|
|
21
|
+
/**
|
|
22
|
+
* Associates a string or array with a minimum length. 'Unprovided' values
|
|
23
|
+
* (null, undefined, '') are not tested hence valid. Otherwise the string
|
|
24
|
+
* length must not be less than the bound supplied.
|
|
25
|
+
* @param lBound The minimum length.
|
|
26
|
+
*/
|
|
27
|
+
static { this.minLength = (lBound) => {
|
|
28
|
+
return (trg, key) => {
|
|
29
|
+
Reflect.defineMetadata(`${ValidationKey.MIN_LENGTH}:${key.toString()}`, key, trg);
|
|
30
|
+
Reflect.defineMetadata(ValidationKey.MIN_LENGTH, lBound, trg, key);
|
|
31
|
+
};
|
|
32
|
+
}; }
|
|
33
|
+
/**
|
|
34
|
+
* Associates a string or array with a maximum length. 'Unprovided' values
|
|
35
|
+
* (null, undefined, '') are not tested hence valid. Otherwise the string
|
|
36
|
+
* length must not exceed the upper bound supplied.
|
|
37
|
+
* @param uBound The maximum length.
|
|
38
|
+
*/
|
|
39
|
+
static { this.maxLength = (uBound) => {
|
|
40
|
+
return (trg, key) => {
|
|
41
|
+
Reflect.defineMetadata(`${ValidationKey.MAX_LENGTH}:${key.toString()}`, key, trg);
|
|
42
|
+
Reflect.defineMetadata(ValidationKey.MAX_LENGTH, uBound, trg, key);
|
|
43
|
+
};
|
|
44
|
+
}; }
|
|
45
|
+
/**
|
|
46
|
+
* Associates a property with a minimum value. 'Unprovided' values (null,
|
|
47
|
+
* undefined, '') are not tested hence valid. Otherwise the value must not be
|
|
48
|
+
* less than the lower bound supplied to be valid.
|
|
49
|
+
* @param lBound The minimum value.
|
|
50
|
+
*/
|
|
51
|
+
static { this.min = (lBound) => {
|
|
52
|
+
let typekey;
|
|
53
|
+
if (lBound instanceof Date)
|
|
54
|
+
typekey = 'date';
|
|
55
|
+
else if (typeof lBound === 'number')
|
|
56
|
+
typekey = 'number';
|
|
57
|
+
else
|
|
58
|
+
throw new TypeError('Unable to infer type key from: ' + lBound);
|
|
59
|
+
return (trg, key) => {
|
|
60
|
+
Reflect.defineMetadata(`${ValidationKey.TYPE}:${key.toString()}`, key, trg);
|
|
61
|
+
Reflect.defineMetadata(`${ValidationKey.MIN}:${key.toString()}`, key, trg);
|
|
62
|
+
Reflect.defineMetadata(ValidationKey.TYPE, typekey, trg, key);
|
|
63
|
+
Reflect.defineMetadata(ValidationKey.MIN, lBound, trg, key);
|
|
64
|
+
};
|
|
65
|
+
}; }
|
|
66
|
+
/**
|
|
67
|
+
* Associates a number or date property with a maximum value. 'Unprovided'
|
|
68
|
+
* values (null, undefined, '') are not tested hence valid. Otherwise the
|
|
69
|
+
* value must not exceed the upper bound supplied to be valid.
|
|
70
|
+
* @param uBound The maximum value.
|
|
71
|
+
*/
|
|
72
|
+
static { this.max = (uBound) => {
|
|
73
|
+
let typekey;
|
|
74
|
+
if (uBound instanceof Date)
|
|
75
|
+
typekey = 'date';
|
|
76
|
+
else if (typeof uBound === 'number')
|
|
77
|
+
typekey = 'number';
|
|
78
|
+
else
|
|
79
|
+
throw new TypeError('Unable to infer type key from: ' + uBound);
|
|
80
|
+
return (trg, key) => {
|
|
81
|
+
Reflect.defineMetadata(`${ValidationKey.TYPE}:${key.toString()}`, key, trg);
|
|
82
|
+
Reflect.defineMetadata(`${ValidationKey.MAX}:${key.toString()}`, key, trg);
|
|
83
|
+
Reflect.defineMetadata(ValidationKey.TYPE, typekey, trg, key);
|
|
84
|
+
Reflect.defineMetadata(ValidationKey.MAX, uBound, trg, key);
|
|
85
|
+
};
|
|
86
|
+
}; }
|
|
87
|
+
/**
|
|
88
|
+
* Associates a property with minimum and maximum values. 'Unprovided' values
|
|
89
|
+
* (null, undefined, '') are not tested hence valid. Otherwise the value must
|
|
90
|
+
* be (inclusively) between the lower and upper bounds.
|
|
91
|
+
* @param lBound The minimum value.
|
|
92
|
+
*/
|
|
93
|
+
static { this.range = (lBound, uBound) => {
|
|
94
|
+
let typekey;
|
|
95
|
+
if (lBound instanceof Date)
|
|
96
|
+
typekey = 'date';
|
|
97
|
+
else if (typeof lBound === 'number')
|
|
98
|
+
typekey = 'number';
|
|
99
|
+
else
|
|
100
|
+
throw new TypeError('Unable to infer type key from: ' + lBound);
|
|
101
|
+
return (trg, key) => {
|
|
102
|
+
Reflect.defineMetadata(`${ValidationKey.TYPE}:${key.toString()}`, key, trg);
|
|
103
|
+
Reflect.defineMetadata(`${ValidationKey.MIN}:${key.toString()}`, key, trg);
|
|
104
|
+
Reflect.defineMetadata(`${ValidationKey.MAX}:${key.toString()}`, key, trg);
|
|
105
|
+
Reflect.defineMetadata(ValidationKey.TYPE, typekey, trg, key);
|
|
106
|
+
Reflect.defineMetadata(ValidationKey.MIN, lBound, trg, key);
|
|
107
|
+
Reflect.defineMetadata(ValidationKey.MAX, uBound, trg, key);
|
|
108
|
+
};
|
|
109
|
+
}; }
|
|
110
|
+
/**
|
|
111
|
+
* Associates a property with a pattern. 'Unprovided' values (null, undefined,
|
|
112
|
+
* '') are not tested hence valid. Otherwise the result of .toString() must
|
|
113
|
+
* match the regex supplied to be valid.
|
|
114
|
+
* @param regex The validation pattern.
|
|
115
|
+
*/
|
|
116
|
+
static { this.regex = (regex) => {
|
|
117
|
+
return (trg, key) => {
|
|
118
|
+
Reflect.defineMetadata(`${ValidationKey.REGEX}:${key.toString()}`, key, trg);
|
|
119
|
+
Reflect.defineMetadata(ValidationKey.REGEX, regex, trg, key);
|
|
120
|
+
};
|
|
121
|
+
}; }
|
|
122
|
+
/**
|
|
123
|
+
* Associates a property with a predefined set of allowed values. Primitive
|
|
124
|
+
* types, enums and arrays thereof are all supported.
|
|
125
|
+
*/
|
|
126
|
+
static { this.options = (...opts) => {
|
|
127
|
+
return (trg, key) => {
|
|
128
|
+
Reflect.defineMetadata(`${ValidationKey.OPTIONS}:${key.toString()}`, key, trg);
|
|
129
|
+
Reflect.defineMetadata(ValidationKey.OPTIONS, opts, trg, key);
|
|
130
|
+
};
|
|
131
|
+
}; }
|
|
132
|
+
/**
|
|
133
|
+
* Associates a property with a custom validator. Unlike most other validation
|
|
134
|
+
* decorators, ALL values will be tested (rather than being skipped if it was
|
|
135
|
+
* deemed 'unprovided') - the decision is not taken on the caller's behalf. If
|
|
136
|
+
* the function returns false, the value is deemed invalid and a generic error
|
|
137
|
+
* is used. Else if it returns a string, this string is used as the message,
|
|
138
|
+
* with null or empty strings taken to indicate that the value is valid).
|
|
139
|
+
*/
|
|
140
|
+
static { this.custom = (fn) => {
|
|
141
|
+
return (trg, key) => {
|
|
142
|
+
Reflect.defineMetadata(`${ValidationKey.CUSTOM}:${key.toString()}`, key, trg);
|
|
143
|
+
Reflect.defineMetadata(ValidationKey.CUSTOM, fn, trg, key);
|
|
144
|
+
};
|
|
145
|
+
}; }
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/decorate/validation.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export * from './types';
|
|
2
|
-
export * from './decorate/interception';
|
|
3
|
-
export * from './decorate/metadata';
|
|
4
|
-
export * from './decorate/type';
|
|
5
|
-
export * from './decorate/validation';
|
|
6
|
-
export * from './reflect/metadata';
|
|
7
|
-
export * from './reflect/validation/validation';
|
|
1
|
+
export * from './types.js';
|
|
2
|
+
export * from './decorate/interception.js';
|
|
3
|
+
export * from './decorate/metadata.js';
|
|
4
|
+
export * from './decorate/type.js';
|
|
5
|
+
export * from './decorate/validation.js';
|
|
6
|
+
export * from './reflect/metadata.js';
|
|
7
|
+
export * from './reflect/validation/validation.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './types.js';
|
|
2
|
+
export * from './decorate/interception.js';
|
|
3
|
+
export * from './decorate/metadata.js';
|
|
4
|
+
export * from './decorate/type.js';
|
|
5
|
+
export * from './decorate/validation.js';
|
|
6
|
+
export * from './reflect/metadata.js';
|
|
7
|
+
export * from './reflect/validation/validation.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oCAAoC,CAAC"}
|
package/dist/mdkeys.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdkeys.d.ts","sourceRoot":"","sources":["../src/mdkeys.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,oBAAY,WAAW;IACrB,YAAY,kCAAkC;IAC9C,WAAW,iCAAiC;IAC5C,MAAM,4BAA4B;IAClC,KAAK,2BAA2B;CACjC;AAED,uBAAuB;AACvB,oBAAY,aAAa;IACvB,QAAQ,gCAAgC;IACxC,SAAS,iCAAiC;IAC1C,UAAU,kCAAkC;IAC5C,UAAU,kCAAkC;IAC5C,GAAG,2BAA2B;IAC9B,GAAG,2BAA2B;IAC9B,KAAK,6BAA6B;IAClC,IAAI,4BAA4B;IAChC,OAAO,+BAA+B;IACtC,MAAM,8BAA8B;CACrC"}
|
package/dist/mdkeys.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Metadata keys. */
|
|
2
|
+
export var MetadataKey;
|
|
3
|
+
(function (MetadataKey) {
|
|
4
|
+
MetadataKey["DISPLAY_NAME"] = "ne-codl:metadata:display-name";
|
|
5
|
+
MetadataKey["DESCRIPTION"] = "ne-codl:metadata:description";
|
|
6
|
+
MetadataKey["FORMAT"] = "ne-codl:metadata:format";
|
|
7
|
+
MetadataKey["MODEL"] = "ne-codl:metadata:model";
|
|
8
|
+
})(MetadataKey || (MetadataKey = {}));
|
|
9
|
+
/** Validation keys. */
|
|
10
|
+
export var ValidationKey;
|
|
11
|
+
(function (ValidationKey) {
|
|
12
|
+
ValidationKey["REQUIRED"] = "ne-codl:validation:required";
|
|
13
|
+
ValidationKey["FORBIDDEN"] = "ne-codl:validation:forbidden";
|
|
14
|
+
ValidationKey["MIN_LENGTH"] = "ne-codl:validation:min-length";
|
|
15
|
+
ValidationKey["MAX_LENGTH"] = "ne-codl:validation:max-length";
|
|
16
|
+
ValidationKey["MIN"] = "ne-codl:validation:min";
|
|
17
|
+
ValidationKey["MAX"] = "ne-codl:validation:max";
|
|
18
|
+
ValidationKey["REGEX"] = "ne-codl:validation:regex";
|
|
19
|
+
ValidationKey["TYPE"] = "ne-codl:validation:type";
|
|
20
|
+
ValidationKey["OPTIONS"] = "ne-codl:validation:options";
|
|
21
|
+
ValidationKey["CUSTOM"] = "ne-codl:validation:custom";
|
|
22
|
+
})(ValidationKey || (ValidationKey = {}));
|
|
23
|
+
//# sourceMappingURL=mdkeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdkeys.js","sourceRoot":"","sources":["../src/mdkeys.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,6DAA8C,CAAA;IAC9C,2DAA4C,CAAA;IAC5C,iDAAkC,CAAA;IAClC,+CAAgC,CAAA;AAClC,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,uBAAuB;AACvB,MAAM,CAAN,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,yDAAwC,CAAA;IACxC,2DAA0C,CAAA;IAC1C,6DAA4C,CAAA;IAC5C,6DAA4C,CAAA;IAC5C,+CAA8B,CAAA;IAC9B,+CAA8B,CAAA;IAC9B,mDAAkC,CAAA;IAClC,iDAAgC,CAAA;IAChC,uDAAsC,CAAA;IACtC,qDAAoC,CAAA;AACtC,CAAC,EAXW,aAAa,KAAb,aAAa,QAWxB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import { RecordKey } from '../types';
|
|
2
|
+
import type { RecordKey } from '../types.js';
|
|
3
3
|
export declare abstract class ReflectMetadata {
|
|
4
4
|
/**
|
|
5
5
|
* Retrieves the display name if provided (else the property key).
|
|
@@ -22,3 +22,4 @@ export declare abstract class ReflectMetadata {
|
|
|
22
22
|
*/
|
|
23
23
|
static readonly getFormatted: (target: Object, key: RecordKey, other?: unknown) => string;
|
|
24
24
|
}
|
|
25
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/reflect/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,8BAAsB,eAAe;IACnC;;;;OAIG;IACH,gBAAuB,cAAc,WAAY,MAAM,OAAO,SAAS,KAAG,MAAM,CAE9E;IAEF;;;;OAIG;IACH,gBAAuB,cAAc,WAAY,MAAM,OAAO,SAAS,KAAG,MAAM,CAE9E;IAEF;;;;;;OAMG;IACH,gBAAuB,YAAY,WAAY,MAAM,OAAO,SAAS,UAAU,OAAO,KAAG,MAAM,CAI7F;CACH"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { MetadataKey } from '../mdkeys.js';
|
|
3
|
+
export class ReflectMetadata {
|
|
4
|
+
/**
|
|
5
|
+
* Retrieves the display name if provided (else the property key).
|
|
6
|
+
* @param target The parent object.
|
|
7
|
+
* @param key The property key.
|
|
8
|
+
*/
|
|
9
|
+
static { this.getDisplayName = (target, key) => {
|
|
10
|
+
return Reflect.getMetadata(MetadataKey.DISPLAY_NAME, target, key) || key;
|
|
11
|
+
}; }
|
|
12
|
+
/**
|
|
13
|
+
* Retrieves the description.
|
|
14
|
+
* @param target The parent object.
|
|
15
|
+
* @param key The property key.
|
|
16
|
+
*/
|
|
17
|
+
static { this.getDescription = (target, key) => {
|
|
18
|
+
return Reflect.getMetadata(MetadataKey.DESCRIPTION, target, key);
|
|
19
|
+
}; }
|
|
20
|
+
/**
|
|
21
|
+
* Retrieves the formatted value if format provided (else the raw value).
|
|
22
|
+
* @param target The parent object.
|
|
23
|
+
* @param key The property key.
|
|
24
|
+
* @param other If supplied, the formatter is applied to this value, rather
|
|
25
|
+
* than that of the property.
|
|
26
|
+
*/
|
|
27
|
+
static { this.getFormatted = (target, key, other) => {
|
|
28
|
+
const fn = Reflect.getMetadata(MetadataKey.FORMAT, target, key);
|
|
29
|
+
const value = other != null ? other : target[key];
|
|
30
|
+
return fn ? fn(value) : value;
|
|
31
|
+
}; }
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/reflect/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,OAAgB,eAAe;IACnC;;;;OAIG;aACoB,mBAAc,GAAG,CAAC,MAAc,EAAE,GAAc,EAAU,EAAE;QACjF,OAAO,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;IAC3E,CAAC,CAAC;IAEF;;;;OAIG;aACoB,mBAAc,GAAG,CAAC,MAAc,EAAE,GAAc,EAAU,EAAE;QACjF,OAAO,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF;;;;;;OAMG;aACoB,iBAAY,GAAG,CAAC,MAAc,EAAE,GAAc,EAAE,KAAe,EAAU,EAAE;QAChG,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,MAAc,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAChC,CAAC,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/reflect/type/models.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/reflect/type/models.ts"],"names":[],"mappings":""}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { Parser } from '../models';
|
|
2
|
-
export declare const BooleanParser: Parser<boolean>;
|
|
1
|
+
import type { Parser } from '../models.js';
|
|
2
|
+
export declare const BooleanParser: Parser<boolean | undefined>;
|
|
3
|
+
//# sourceMappingURL=boolean.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../../../src/reflect/type/parsers/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAIrD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../../../src/reflect/type/parsers/boolean.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAgC,CAAC,GAAG,EAAE,EAAE;IAChE,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;AACvD,CAAC,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { Parser } from '../models';
|
|
2
|
-
export declare const DateParser: Parser<Date>;
|
|
1
|
+
import type { Parser } from '../models.js';
|
|
2
|
+
export declare const DateParser: Parser<Date | undefined>;
|
|
3
|
+
//# sourceMappingURL=date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../../src/reflect/type/parsers/date.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAM/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/reflect/type/parsers/date.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAA6B,CAAC,GAAG,EAAE,EAAE;IAC1D,IAAI,GAAG,YAAY,IAAI;QAAE,OAAO,GAAG,CAAC;IACpC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IAC1C,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { Parser } from '../models';
|
|
2
|
-
export declare const IntegerParser: Parser<number>;
|
|
1
|
+
import type { Parser } from '../models.js';
|
|
2
|
+
export declare const IntegerParser: Parser<number | undefined>;
|
|
3
|
+
//# sourceMappingURL=integer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer.d.ts","sourceRoot":"","sources":["../../../../src/reflect/type/parsers/integer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAGpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integer.js","sourceRoot":"","sources":["../../../../src/reflect/type/parsers/integer.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAA+B,CAAC,GAAG,EAAE,EAAE;IAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;AAC1F,CAAC,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { Parser } from '../models';
|
|
2
|
-
export declare const NumberParser: Parser<number>;
|
|
1
|
+
import type { Parser } from '../models.js';
|
|
2
|
+
export declare const NumberParser: Parser<number | undefined>;
|
|
3
|
+
//# sourceMappingURL=number.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../../../src/reflect/type/parsers/number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAGnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../../../src/reflect/type/parsers/number.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAA+B,CAAC,GAAG,EAAE,EAAE;IAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;AAChC,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import { RecordKey } from '../../types';
|
|
3
|
-
import { Parser } from './models';
|
|
2
|
+
import { type RecordKey } from '../../types.js';
|
|
3
|
+
import type { Parser } from './models.js';
|
|
4
4
|
export declare abstract class ReflectType {
|
|
5
5
|
/**
|
|
6
6
|
* Parses provided according to its meta type. If no type found, the original
|
|
@@ -15,3 +15,4 @@ export declare abstract class ReflectType {
|
|
|
15
15
|
/** Gets parser for supported meta types. */
|
|
16
16
|
static getParser(type: string): Parser<any>;
|
|
17
17
|
}
|
|
18
|
+
//# sourceMappingURL=type.d.ts.map
|