xdbc 1.0.217 → 1.0.219
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/.gitattributes +16 -8
- package/.vscode/settings.json +3 -3
- package/.vscode/tasks.json +23 -23
- package/ASSESSMENT.md +249 -0
- package/README.md +538 -408
- package/__tests__/DBC/AE.test.ts +62 -62
- package/__tests__/DBC/ARRAY.test.ts +91 -91
- package/__tests__/DBC/DEFINED.test.ts +53 -53
- package/__tests__/DBC/DOM.test.ts +786 -0
- package/__tests__/DBC/Decorators.test.ts +367 -367
- package/__tests__/DBC/EQ.test.ts +13 -13
- package/__tests__/DBC/GREATER.test.ts +31 -31
- package/__tests__/DBC/HasAttribute.test.ts +60 -60
- package/__tests__/DBC/IF.test.ts +62 -62
- package/__tests__/DBC/INSTANCE.test.ts +13 -13
- package/__tests__/DBC/JSON.OP.test.ts +47 -47
- package/__tests__/DBC/JSON.Parse.test.ts +17 -17
- package/__tests__/DBC/OR.test.ts +14 -14
- package/__tests__/DBC/PLAIN_OBJECT.test.ts +109 -109
- package/__tests__/DBC/REGEX.test.ts +17 -17
- package/__tests__/DBC/TYPE.test.ts +13 -13
- package/__tests__/DBC/UNDEFINED.test.ts +45 -45
- package/__tests__/DBC/ZOD.test.ts +54 -54
- package/__tests__/DBC/onInfringement.test.ts +262 -0
- package/biome.json +45 -40
- package/dist/DBC/AE.js +172 -0
- package/dist/DBC/ARR/PLAIN_OBJECT.d.ts +0 -3
- package/dist/DBC/ARR/PLAIN_OBJECT.js +95 -0
- package/dist/DBC/ARRAY.d.ts +0 -3
- package/dist/DBC/ARRAY.js +90 -0
- package/dist/DBC/COMPARISON/GREATER.js +21 -0
- package/dist/DBC/COMPARISON/GREATER_OR_EQUAL.js +21 -0
- package/dist/DBC/COMPARISON/LESS.js +21 -0
- package/dist/DBC/COMPARISON/LESS_OR_EQUAL.js +21 -0
- package/dist/DBC/COMPARISON.js +98 -0
- package/dist/DBC/DEFINED.js +87 -0
- package/dist/DBC/DOM.d.ts +123 -0
- package/dist/DBC/DOM.js +362 -0
- package/dist/DBC/EQ/DIFFERENT.js +34 -0
- package/dist/DBC/EQ.js +101 -0
- package/dist/DBC/GREATER.js +99 -0
- package/dist/DBC/HasAttribute.js +101 -0
- package/dist/DBC/IF.js +96 -0
- package/dist/DBC/INSTANCE.js +122 -0
- package/dist/DBC/JSON.OP.js +120 -0
- package/dist/DBC/JSON.Parse.js +104 -0
- package/dist/DBC/OR.js +125 -0
- package/dist/DBC/REGEX.js +136 -0
- package/dist/DBC/TYPE.js +112 -0
- package/dist/DBC/UNDEFINED.js +87 -0
- package/dist/DBC/ZOD.js +99 -0
- package/dist/DBC.d.ts +18 -4
- package/dist/DBC.js +645 -0
- package/dist/Demo.d.ts +10 -0
- package/dist/Demo.js +713 -0
- package/dist/Test.html +18 -0
- package/dist/bundle.js +6140 -405
- package/dist/index.d.ts +22 -0
- package/dist/index.html +18 -0
- package/dist/index.js +22 -0
- package/docs/assets/highlight.css +22 -22
- package/docs/assets/icons.js +17 -17
- package/docs/assets/main.js +60 -60
- package/docs/assets/style.css +1640 -1640
- package/docs/classes/DBC.DBC.html +98 -98
- package/docs/classes/DBC_AE.AE.html +160 -160
- package/docs/classes/DBC_EQ.EQ.html +131 -131
- package/docs/classes/DBC_GREATER.GREATER.html +139 -139
- package/docs/classes/DBC_INSTANCE.INSTANCE.html +130 -130
- package/docs/classes/DBC_JSON.OP.JSON_OP.html +138 -138
- package/docs/classes/DBC_JSON.Parse.JSON_Parse.html +129 -129
- package/docs/classes/DBC_OR.OR.html +137 -137
- package/docs/classes/DBC_REGEX.REGEX.html +136 -136
- package/docs/classes/DBC_TYPE.TYPE.html +130 -130
- package/docs/classes/Demo.Demo.html +14 -14
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +1 -1
- package/docs/modules/DBC.html +1 -1
- package/docs/modules/DBC_AE.html +1 -1
- package/docs/modules/DBC_EQ.html +1 -1
- package/docs/modules/DBC_GREATER.html +1 -1
- package/docs/modules/DBC_INSTANCE.html +1 -1
- package/docs/modules/DBC_JSON.OP.html +1 -1
- package/docs/modules/DBC_JSON.Parse.html +1 -1
- package/docs/modules/DBC_OR.html +1 -1
- package/docs/modules/DBC_REGEX.html +1 -1
- package/docs/modules/DBC_TYPE.html +1 -1
- package/docs/modules/Demo.html +1 -1
- package/jest.config.js +32 -32
- package/package.json +71 -55
- package/src/DBC/AE.ts +269 -288
- package/src/DBC/ARR/PLAIN_OBJECT.ts +122 -133
- package/src/DBC/ARRAY.ts +117 -127
- package/src/DBC/COMPARISON/GREATER.ts +41 -46
- package/src/DBC/COMPARISON/GREATER_OR_EQUAL.ts +41 -45
- package/src/DBC/COMPARISON/LESS.ts +41 -45
- package/src/DBC/COMPARISON/LESS_OR_EQUAL.ts +41 -45
- package/src/DBC/COMPARISON.ts +149 -159
- package/src/DBC/DEFINED.ts +117 -122
- package/src/DBC/DOM.ts +453 -0
- package/src/DBC/EQ/DIFFERENT.ts +51 -57
- package/src/DBC/EQ.ts +154 -163
- package/src/DBC/HasAttribute.ts +149 -154
- package/src/DBC/IF.ts +173 -179
- package/src/DBC/INSTANCE.ts +168 -171
- package/src/DBC/JSON.OP.ts +178 -186
- package/src/DBC/JSON.Parse.ts +150 -157
- package/src/DBC/OR.ts +183 -187
- package/src/DBC/REGEX.ts +195 -196
- package/src/DBC/TYPE.ts +142 -149
- package/src/DBC/UNDEFINED.ts +115 -117
- package/src/DBC/ZOD.ts +130 -135
- package/src/DBC.ts +902 -904
- package/src/Demo.ts +537 -404
- package/src/index.ts +22 -0
- package/tsconfig.json +18 -18
- package/tsconfig.test.json +7 -7
- package/typedoc.json +16 -16
- package/webpack.config.js +27 -27
- package/Assessment.md +0 -507
package/src/DBC/TYPE.ts
CHANGED
|
@@ -1,149 +1,142 @@
|
|
|
1
|
-
import { DBC } from "../DBC";
|
|
2
|
-
/**
|
|
3
|
-
* A {@link DBC } defining that an {@link object }s gotta be of certain {@link TYPE.type }.
|
|
4
|
-
*
|
|
5
|
-
* @remarks
|
|
6
|
-
* Author: Salvatore Callari (Callari@WaXCode.net) / 2025
|
|
7
|
-
* Maintainer: Salvatore Callari (XDBC@WaXCode.net) */
|
|
8
|
-
export class TYPE extends DBC {
|
|
9
|
-
/**
|
|
10
|
-
* Checks if the value **toCheck** is of the **type** specified.
|
|
11
|
-
*
|
|
12
|
-
* @param toCheck The {@link Object } which's **type** to check.
|
|
13
|
-
* @param type The type the {@link object} **toCheck** has to be of. Can be a single type or multiple types separated by "|".
|
|
14
|
-
*
|
|
15
|
-
* @returns TRUE if the value **toCheck** is of the specified **type**, otherwise FALSE. */
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* @
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* @
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* @
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
type
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
*
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
* @
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
toCheck
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
* Creates this {@link TYPE } by setting the protected property {@link TYPE.type } used by {@link TYPE.check }.
|
|
144
|
-
*
|
|
145
|
-
* @param type See {@link TYPE.check }. */
|
|
146
|
-
public constructor(protected type: string) {
|
|
147
|
-
super();
|
|
148
|
-
}
|
|
149
|
-
}
|
|
1
|
+
import { DBC } from "../DBC";
|
|
2
|
+
/**
|
|
3
|
+
* A {@link DBC } defining that an {@link object }s gotta be of certain {@link TYPE.type }.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Author: Salvatore Callari (Callari@WaXCode.net) / 2025
|
|
7
|
+
* Maintainer: Salvatore Callari (XDBC@WaXCode.net) */
|
|
8
|
+
export class TYPE extends DBC {
|
|
9
|
+
/**
|
|
10
|
+
* Checks if the value **toCheck** is of the **type** specified.
|
|
11
|
+
*
|
|
12
|
+
* @param toCheck The {@link Object } which's **type** to check.
|
|
13
|
+
* @param type The type the {@link object} **toCheck** has to be of. Can be a single type or multiple types separated by "|".
|
|
14
|
+
*
|
|
15
|
+
* @returns TRUE if the value **toCheck** is of the specified **type**, otherwise FALSE. */
|
|
16
|
+
public static checkAlgorithm(toCheck: any, type: string): boolean | string {
|
|
17
|
+
if (toCheck === undefined || toCheck === null) return true;
|
|
18
|
+
const types = type.split("|").map((t) => t.trim());
|
|
19
|
+
const actualType = typeof toCheck;
|
|
20
|
+
// #region Check if the actual type matches at least one of the specified types
|
|
21
|
+
const isValid = types.some((t) => actualType === t);
|
|
22
|
+
if (!isValid) {
|
|
23
|
+
if (types.length === 1) {
|
|
24
|
+
return `Value has to be of type "${type}" but is of type "${actualType}"`;
|
|
25
|
+
}
|
|
26
|
+
return `Value has to be of type "${types.join(" | ")}" but is of type "${actualType}"`;
|
|
27
|
+
}
|
|
28
|
+
// #endregion Check if the actual type matches at least one of the specified types
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A parameter-decorator factory using the {@link TYPE.checkAlgorithm } to determine whether this {@link DBC } is fulfilled
|
|
33
|
+
* by the tagged parameter.
|
|
34
|
+
*
|
|
35
|
+
* @param type See {@link TYPE.checkAlgorithm }.
|
|
36
|
+
* @param path A ::-separated list of dotted paths to check. Each path points to a property within the parameter value.
|
|
37
|
+
* Undefined properties are skipped. See {@link DBC.decPrecondition }.
|
|
38
|
+
* @param dbc See {@link DBC.decPrecondition }.
|
|
39
|
+
*
|
|
40
|
+
* @returns See {@link DBC.decPrecondition }. */
|
|
41
|
+
public static PRE(
|
|
42
|
+
type: string,
|
|
43
|
+
path: string | undefined = undefined,
|
|
44
|
+
hint: string | undefined = undefined,
|
|
45
|
+
dbc: string | undefined = undefined,
|
|
46
|
+
): (
|
|
47
|
+
target: object,
|
|
48
|
+
methodName: string | symbol | undefined,
|
|
49
|
+
parameterIndex: number,
|
|
50
|
+
) => void {
|
|
51
|
+
return DBC.createPRE(TYPE.checkAlgorithm, [type], dbc, path, hint);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A method-decorator factory using the {@link TYPE.checkAlgorithm } to determine whether this {@link DBC } is fulfilled
|
|
55
|
+
* by the tagged method's returnvalue.
|
|
56
|
+
*
|
|
57
|
+
* @param type See {@link TYPE.checkAlgorithm }.
|
|
58
|
+
* @param path A ::-separated list of dotted paths to check. Each path points to a property within the parameter value.
|
|
59
|
+
* Undefined properties are skipped. See {@link DBC.decPrecondition }.
|
|
60
|
+
* @param dbc See {@link DBC.decPostcondition }.
|
|
61
|
+
*
|
|
62
|
+
* @returns See {@link DBC.decPostcondition }. */
|
|
63
|
+
public static POST(
|
|
64
|
+
type: string,
|
|
65
|
+
path: string | undefined = undefined,
|
|
66
|
+
hint: string | undefined = undefined,
|
|
67
|
+
dbc: string | undefined = undefined,
|
|
68
|
+
): (
|
|
69
|
+
target: object,
|
|
70
|
+
propertyKey: string,
|
|
71
|
+
descriptor: PropertyDescriptor,
|
|
72
|
+
) => PropertyDescriptor {
|
|
73
|
+
return DBC.createPOST(TYPE.checkAlgorithm, [type], dbc, path, hint);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A field-decorator factory using the {@link TYPE.checkAlgorithm } to determine whether this {@link DBC } is fulfilled
|
|
77
|
+
* by the tagged field.
|
|
78
|
+
*
|
|
79
|
+
* @param type See {@link TYPE.checkAlgorithm }.
|
|
80
|
+
* @param path A ::-separated list of dotted paths to check. Each path points to a property within the parameter value.
|
|
81
|
+
* Undefined properties are skipped. See {@link DBC.decPrecondition }.
|
|
82
|
+
* @param dbc See {@link DBC.decInvariant }.
|
|
83
|
+
*
|
|
84
|
+
* @returns See {@link DBC.decInvariant }. */
|
|
85
|
+
public static INVARIANT(
|
|
86
|
+
type: string,
|
|
87
|
+
path: string | undefined = undefined,
|
|
88
|
+
hint: string | undefined = undefined,
|
|
89
|
+
dbc: string | undefined = undefined,
|
|
90
|
+
) {
|
|
91
|
+
return DBC.createINVARIANT(TYPE, [type], dbc, path, hint);
|
|
92
|
+
}
|
|
93
|
+
// #endregion Condition checking.
|
|
94
|
+
// #region Referenced Condition checking.
|
|
95
|
+
//
|
|
96
|
+
// For usage in dynamic scenarios (like with AE-DBC).
|
|
97
|
+
//
|
|
98
|
+
/**
|
|
99
|
+
* Invokes the {@link TYPE.checkAlgorithm } passing the value **toCheck** and the {@link TYPE.type } .
|
|
100
|
+
*
|
|
101
|
+
* @param toCheck See {@link TYPE.checkAlgorithm }.
|
|
102
|
+
*
|
|
103
|
+
* @returns See {@link TYPE.checkAlgorithm}. */
|
|
104
|
+
public check(toCheck: any) {
|
|
105
|
+
return TYPE.checkAlgorithm(toCheck, this.type);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Invokes the {@link TYPE.checkAlgorithm } passing the value **toCheck** and the {@link TYPE.type } .
|
|
109
|
+
*
|
|
110
|
+
* @param toCheck See {@link TYPE.checkAlgorithm }.
|
|
111
|
+
* @param type See {@link TYPE.checkAlgorithm }.
|
|
112
|
+
* @param hint An optional {@link string } providing extra information in case of an infringement.
|
|
113
|
+
* @param id A {@link string } identifying this {@link TYPE } via the {@link DBC.Infringement }-Message.
|
|
114
|
+
*
|
|
115
|
+
* @returns The **CANDIDATE** **toCheck** doesn't fulfill this {@link TYPE }.
|
|
116
|
+
*
|
|
117
|
+
* @throws A {@link DBC.Infringement } if the **CANDIDATE** **toCheck** does not fulfill this {@link DEFINED }. */
|
|
118
|
+
public static tsCheck<CANDIDATE = unknown>(
|
|
119
|
+
toCheck: any,
|
|
120
|
+
type: string,
|
|
121
|
+
hint: string | undefined = undefined,
|
|
122
|
+
id: string | undefined = undefined,
|
|
123
|
+
dbc: string | undefined = undefined,
|
|
124
|
+
): CANDIDATE {
|
|
125
|
+
const result = TYPE.checkAlgorithm(toCheck, type);
|
|
126
|
+
if (result === true) {
|
|
127
|
+
return toCheck;
|
|
128
|
+
}
|
|
129
|
+
DBC.reportTsCheckInfringement(
|
|
130
|
+
`${id ? `(${id}) ` : ""}${result as string}${hint ? ` ✨ ${hint} ✨` : ""}`,
|
|
131
|
+
dbc,
|
|
132
|
+
);
|
|
133
|
+
return toCheck as CANDIDATE;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Creates this {@link TYPE } by setting the protected property {@link TYPE.type } used by {@link TYPE.check }.
|
|
137
|
+
*
|
|
138
|
+
* @param type See {@link TYPE.check }. */
|
|
139
|
+
public constructor(protected type: string) {
|
|
140
|
+
super();
|
|
141
|
+
}
|
|
142
|
+
}
|
package/src/DBC/UNDEFINED.ts
CHANGED
|
@@ -1,117 +1,115 @@
|
|
|
1
|
-
import { DBC } from "../DBC";
|
|
2
|
-
/**
|
|
3
|
-
* A {@link DBC } defining that an {@link object }s must be **undefined**.
|
|
4
|
-
*
|
|
5
|
-
* @remarks
|
|
6
|
-
* Maintainer: Salvatore Callari (XDBC@WaXCode.net) */
|
|
7
|
-
export class UNDEFINED extends DBC {
|
|
8
|
-
/**
|
|
9
|
-
* Checks if the value **toCheck** is undefined.
|
|
10
|
-
*
|
|
11
|
-
* @param toCheck The {@link Object } to check.
|
|
12
|
-
*
|
|
13
|
-
* @returns TRUE if the value **toCheck** is of the specified **type**, otherwise FALSE. */
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* @
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* @
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* @
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
//
|
|
81
|
-
//
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* @
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
}
|
|
1
|
+
import { DBC } from "../DBC";
|
|
2
|
+
/**
|
|
3
|
+
* A {@link DBC } defining that an {@link object }s must be **undefined**.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Maintainer: Salvatore Callari (XDBC@WaXCode.net) */
|
|
7
|
+
export class UNDEFINED extends DBC {
|
|
8
|
+
/**
|
|
9
|
+
* Checks if the value **toCheck** is undefined.
|
|
10
|
+
*
|
|
11
|
+
* @param toCheck The {@link Object } to check.
|
|
12
|
+
*
|
|
13
|
+
* @returns TRUE if the value **toCheck** is of the specified **type**, otherwise FALSE. */
|
|
14
|
+
public static checkAlgorithm(toCheck: any): boolean | string {
|
|
15
|
+
if (toCheck !== undefined) {
|
|
16
|
+
return `Value must be UNDEFINED but it is ${typeof toCheck}`;
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A parameter-decorator factory using the {@link UNDEFINED.checkAlgorithm } to determine whether this {@link DBC } is fulfilled
|
|
22
|
+
* by the tagged parameter.
|
|
23
|
+
*
|
|
24
|
+
* @param path See {@link DBC.decPrecondition }.
|
|
25
|
+
* @param dbc See {@link DBC.decPrecondition }.
|
|
26
|
+
* @param hint See {@link DBC.decPrecondition }.
|
|
27
|
+
*
|
|
28
|
+
* @returns See {@link DBC.decPrecondition }. */
|
|
29
|
+
public static PRE(
|
|
30
|
+
path: string | undefined = undefined,
|
|
31
|
+
hint: string | undefined = undefined,
|
|
32
|
+
dbc: string | undefined = undefined,
|
|
33
|
+
): (
|
|
34
|
+
target: object,
|
|
35
|
+
methodName: string | symbol | undefined,
|
|
36
|
+
parameterIndex: number,
|
|
37
|
+
) => void {
|
|
38
|
+
return DBC.createPRE(UNDEFINED.checkAlgorithm, [], dbc, path, hint);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* A method-decorator factory using the {@link UNDEFINED.checkAlgorithm } to determine whether this {@link DBC } is fulfilled
|
|
42
|
+
* by the tagged method's returnvalue.
|
|
43
|
+
*
|
|
44
|
+
* @param path See {@link DBC.Postcondition }.
|
|
45
|
+
* @param dbc See {@link DBC.decPostcondition }.
|
|
46
|
+
* @param hint See {@link DBC.decPostcondition }.
|
|
47
|
+
*
|
|
48
|
+
* @returns See {@link DBC.decPostcondition }. */
|
|
49
|
+
public static POST(
|
|
50
|
+
path: string | undefined = undefined,
|
|
51
|
+
hint: string | undefined = undefined,
|
|
52
|
+
dbc: string | undefined = undefined,
|
|
53
|
+
): (
|
|
54
|
+
target: object,
|
|
55
|
+
propertyKey: string,
|
|
56
|
+
descriptor: PropertyDescriptor,
|
|
57
|
+
) => PropertyDescriptor {
|
|
58
|
+
return DBC.createPOST(UNDEFINED.checkAlgorithm, [], dbc, path, hint);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* A field-decorator factory using the {@link UNDEFINED.checkAlgorithm } to determine whether this {@link DBC } is fulfilled
|
|
62
|
+
* by the tagged field.
|
|
63
|
+
*
|
|
64
|
+
* @param path See {@link DBC.decInvariant }.
|
|
65
|
+
* @param dbc See {@link DBC.decInvariant }.
|
|
66
|
+
* @param hint See {@link DBC.decInvariant }.
|
|
67
|
+
*
|
|
68
|
+
* @returns See {@link DBC.decInvariant }. */
|
|
69
|
+
public static INVARIANT(
|
|
70
|
+
type: string,
|
|
71
|
+
path: string | undefined = undefined,
|
|
72
|
+
hint: string | undefined = undefined,
|
|
73
|
+
dbc: string | undefined = undefined,
|
|
74
|
+
) {
|
|
75
|
+
return DBC.createINVARIANT(UNDEFINED, [], dbc, path, hint);
|
|
76
|
+
}
|
|
77
|
+
// #endregion Condition checking.
|
|
78
|
+
// #region Referenced Condition checking.
|
|
79
|
+
//
|
|
80
|
+
// For usage in dynamic scenarios (like with AE-DBC).
|
|
81
|
+
//
|
|
82
|
+
/**
|
|
83
|
+
* Invokes the {@link UNDEFINED.checkAlgorithm } passing the value **toCheck** and the {@link UNDEFINED.type } .
|
|
84
|
+
*
|
|
85
|
+
* @param toCheck See {@link UNDEFINED.checkAlgorithm }.
|
|
86
|
+
*
|
|
87
|
+
* @returns See {@link UNDEFINED.checkAlgorithm}. */
|
|
88
|
+
public check(toCheck: any) {
|
|
89
|
+
return UNDEFINED.checkAlgorithm(toCheck);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Invokes the {@link UNDEFINED.checkAlgorithm } passing the value **toCheck** and the {@link UNDEFINED.type } .
|
|
93
|
+
*
|
|
94
|
+
* @param toCheck See {@link UNDEFINED.checkAlgorithm }.
|
|
95
|
+
* @param id A {@link string } identifying this {@link INSTANCE } via the {@link DBC.Infringement }-Message.
|
|
96
|
+
*
|
|
97
|
+
* @returns The **CANDIDATE** **toCheck** doesn't fulfill this {@link UNDEFINED }.
|
|
98
|
+
*
|
|
99
|
+
* @throws A {@link DBC.Infringement } if the **CANDIDATE** **toCheck** does not fulfill this {@link UNDEFINED }.*/
|
|
100
|
+
public static tsCheck<CANDIDATE = unknown>(
|
|
101
|
+
toCheck: CANDIDATE | undefined | null,
|
|
102
|
+
id: string | undefined = undefined,
|
|
103
|
+
dbc: string | undefined = undefined,
|
|
104
|
+
): CANDIDATE {
|
|
105
|
+
const result = UNDEFINED.checkAlgorithm(toCheck);
|
|
106
|
+
if (result === true) {
|
|
107
|
+
return toCheck as CANDIDATE;
|
|
108
|
+
}
|
|
109
|
+
DBC.reportTsCheckInfringement(
|
|
110
|
+
`${id ? `(${id}) ` : ""}${result as string}`,
|
|
111
|
+
dbc,
|
|
112
|
+
);
|
|
113
|
+
return toCheck as CANDIDATE;
|
|
114
|
+
}
|
|
115
|
+
}
|