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/INSTANCE.ts
CHANGED
|
@@ -1,171 +1,168 @@
|
|
|
1
|
-
import { DBC } from "../DBC";
|
|
2
|
-
/**
|
|
3
|
-
* A {@link DBC } defining that the an {@link object }s gotta be an instance of a certain {@link INSTANCE.reference }.
|
|
4
|
-
*
|
|
5
|
-
* @remarks
|
|
6
|
-
* Maintainer: Salvatore Callari (XDBC@WaXCode.net) */
|
|
7
|
-
export class INSTANCE extends DBC {
|
|
8
|
-
/**
|
|
9
|
-
* Checks if the value **toCheck** is an instance of the specified **reference**.
|
|
10
|
-
*
|
|
11
|
-
* @param toCheck The value that has to be an instance of the **reference** in order for this {@link DBC }
|
|
12
|
-
* to be fulfilled.
|
|
13
|
-
* @param reference The {@link object } the one **toCheck** has to be an instance of.
|
|
14
|
-
*
|
|
15
|
-
* @returns TRUE if the value **toCheck** is is an instance of the *reference**, **undefined** or **null**, otherwise FALSE. */
|
|
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
|
-
* @
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
* @param
|
|
138
|
-
* @param
|
|
139
|
-
* @param
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
*
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
super();
|
|
170
|
-
}
|
|
171
|
-
}
|
|
1
|
+
import { DBC } from "../DBC";
|
|
2
|
+
/**
|
|
3
|
+
* A {@link DBC } defining that the an {@link object }s gotta be an instance of a certain {@link INSTANCE.reference }.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Maintainer: Salvatore Callari (XDBC@WaXCode.net) */
|
|
7
|
+
export class INSTANCE extends DBC {
|
|
8
|
+
/**
|
|
9
|
+
* Checks if the value **toCheck** is an instance of the specified **reference**.
|
|
10
|
+
*
|
|
11
|
+
* @param toCheck The value that has to be an instance of the **reference** in order for this {@link DBC }
|
|
12
|
+
* to be fulfilled.
|
|
13
|
+
* @param reference The {@link object } the one **toCheck** has to be an instance of.
|
|
14
|
+
*
|
|
15
|
+
* @returns TRUE if the value **toCheck** is is an instance of the *reference**, **undefined** or **null**, otherwise FALSE. */
|
|
16
|
+
public static checkAlgorithm(
|
|
17
|
+
toCheck: any,
|
|
18
|
+
...references: any[]
|
|
19
|
+
): boolean | string {
|
|
20
|
+
if (toCheck === null || toCheck === undefined) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
for (const ref of references) {
|
|
24
|
+
if (toCheck instanceof ref) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return `Value has to be an instance of "${references.map((ref) => ref.name || ref).join(", ")}" but is of type "${typeof toCheck}"`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A parameter-decorator factory using the {@link INSTANCE.checkAlgorithm } to determine whether this {@link DBC } is fulfilled
|
|
32
|
+
* by the tagged parameter.
|
|
33
|
+
*
|
|
34
|
+
* @param reference See {@link INSTANCE.checkAlgorithm }.
|
|
35
|
+
* @param path See {@link DBC.decPrecondition }.
|
|
36
|
+
* @param dbc See {@link DBC.decPrecondition }.
|
|
37
|
+
*
|
|
38
|
+
* @returns See {@link DBC.decPrecondition }. */
|
|
39
|
+
public static PRE(
|
|
40
|
+
reference: any | any[],
|
|
41
|
+
path: string | undefined = undefined,
|
|
42
|
+
hint: string | undefined = undefined,
|
|
43
|
+
dbc: string | undefined = undefined,
|
|
44
|
+
): (
|
|
45
|
+
target: object,
|
|
46
|
+
methodName: string | symbol | undefined,
|
|
47
|
+
parameterIndex: number,
|
|
48
|
+
) => void {
|
|
49
|
+
const refs = Array.isArray(reference) ? reference : [reference];
|
|
50
|
+
return DBC.createPRE(INSTANCE.checkAlgorithm, refs, dbc, path, hint);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A method-decorator factory using the {@link INSTANCE.checkAlgorithm } to determine whether this {@link DBC } is fulfilled
|
|
54
|
+
* by the tagged method's returnvalue.
|
|
55
|
+
*
|
|
56
|
+
* @param reference See {@link INSTANCE.checkAlgorithm }.
|
|
57
|
+
* @param path See {@link DBC.Postcondition }.
|
|
58
|
+
* @param dbc See {@link DBC.decPostcondition }.
|
|
59
|
+
*
|
|
60
|
+
* @returns See {@link DBC.decPostcondition }. */
|
|
61
|
+
public static POST(
|
|
62
|
+
reference: any | any[],
|
|
63
|
+
path: string | undefined = undefined,
|
|
64
|
+
hint: string | undefined = undefined,
|
|
65
|
+
dbc: string | undefined = undefined,
|
|
66
|
+
): (
|
|
67
|
+
target: object,
|
|
68
|
+
propertyKey: string,
|
|
69
|
+
descriptor: PropertyDescriptor,
|
|
70
|
+
) => PropertyDescriptor {
|
|
71
|
+
const refs = Array.isArray(reference) ? reference : [reference];
|
|
72
|
+
return DBC.createPOST(INSTANCE.checkAlgorithm, refs, dbc, path, hint);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* A field-decorator factory using the {@link INSTANCE.checkAlgorithm } to determine whether this {@link DBC } is fulfilled
|
|
76
|
+
* by the tagged method's returnvalue.
|
|
77
|
+
*
|
|
78
|
+
* @param reference See {@link INSTANCE.checkAlgorithm }.
|
|
79
|
+
* @param path See {@link DBC.decInvariant }.
|
|
80
|
+
* @param dbc See {@link DBC.decInvariant }.
|
|
81
|
+
*
|
|
82
|
+
* @returns See {@link DBC.decInvariant }. */
|
|
83
|
+
public static INVARIANT(
|
|
84
|
+
reference: any | any[],
|
|
85
|
+
path: string | undefined = undefined,
|
|
86
|
+
hint: string | undefined = undefined,
|
|
87
|
+
dbc: string | undefined = undefined,
|
|
88
|
+
) {
|
|
89
|
+
return DBC.createINVARIANT(INSTANCE, [reference], dbc, path, hint);
|
|
90
|
+
}
|
|
91
|
+
// #endregion Condition checking.
|
|
92
|
+
// #region Referenced Condition checking.
|
|
93
|
+
//
|
|
94
|
+
// For usage in dynamic scenarios (like with AE-DBC).
|
|
95
|
+
//
|
|
96
|
+
/**
|
|
97
|
+
* Invokes the {@link INSTANCE.checkAlgorithm } passing the value **toCheck** and the {@link INSTANCE.reference } .
|
|
98
|
+
*
|
|
99
|
+
* @param toCheck See {@link INSTANCE.checkAlgorithm }.
|
|
100
|
+
*
|
|
101
|
+
* @returns See {@link INSTANCE.checkAlgorithm}. */
|
|
102
|
+
public check(toCheck: any) {
|
|
103
|
+
return Array.isArray(this.reference)
|
|
104
|
+
? INSTANCE.checkAlgorithm(toCheck, ...this.reference)
|
|
105
|
+
: INSTANCE.checkAlgorithm(toCheck, this.reference);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Type-safe check that validates if a value is an instance of a specified reference.
|
|
109
|
+
*
|
|
110
|
+
* @param toCheck The value to check for instance validity.
|
|
111
|
+
* @param reference The {@link object } the one **toCheck** has to be an instance of.
|
|
112
|
+
* @param hint An optional {@link string } providing extra information in case of an infringement.
|
|
113
|
+
* @param id A {@link string } identifying this {@link INSTANCE } via the {@link DBC.Infringement }-Message.
|
|
114
|
+
*
|
|
115
|
+
* @returns The **CANDIDATE** **toCheck** if it fulfills this {@link INSTANCE }.
|
|
116
|
+
*
|
|
117
|
+
* @throws A {@link DBC.Infringement } if the **CANDIDATE** **toCheck** does not fulfill this {@link INSTANCE }. */
|
|
118
|
+
public static tsCheck<CANDIDATE = unknown>(
|
|
119
|
+
toCheck: any,
|
|
120
|
+
reference: any,
|
|
121
|
+
hint: string = undefined,
|
|
122
|
+
id: string | undefined = undefined,
|
|
123
|
+
dbc: string | undefined = undefined,
|
|
124
|
+
): CANDIDATE {
|
|
125
|
+
return INSTANCE.tsCheckMulti<CANDIDATE>(
|
|
126
|
+
toCheck,
|
|
127
|
+
[reference],
|
|
128
|
+
hint,
|
|
129
|
+
id,
|
|
130
|
+
dbc,
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Invokes the {@link INSTANCE.checkAlgorithm } passing the value **toCheck** and the {@link INSTANCE.reference } .
|
|
135
|
+
*
|
|
136
|
+
* @param toCheck See {@link INSTANCE.checkAlgorithm }.
|
|
137
|
+
* @param reference See {@link INSTANCE.checkAlgorithm }.
|
|
138
|
+
* @param hint An optional {@link string } providing extra information in case of an infringement.
|
|
139
|
+
* @param id A {@link string } identifying this {@link INSTANCE } via the {@link DBC.Infringement }-Message.
|
|
140
|
+
*
|
|
141
|
+
* @returns The **CANDIDATE** **toCheck** doesn't fulfill this {@link INSTANCE }.
|
|
142
|
+
*
|
|
143
|
+
* @throws A {@link DBC.Infringement } if the **CANDIDATE** **toCheck** does not fulfill this {@link DEFINED }. */
|
|
144
|
+
public static tsCheckMulti<CANDIDATE = unknown>(
|
|
145
|
+
toCheck: any,
|
|
146
|
+
references: any[],
|
|
147
|
+
hint: string = undefined,
|
|
148
|
+
id: string | undefined = undefined,
|
|
149
|
+
dbc: string | undefined = undefined,
|
|
150
|
+
): CANDIDATE {
|
|
151
|
+
const result = INSTANCE.checkAlgorithm(toCheck, ...references);
|
|
152
|
+
if (result === true) {
|
|
153
|
+
return toCheck;
|
|
154
|
+
}
|
|
155
|
+
DBC.reportTsCheckInfringement(
|
|
156
|
+
`${id ? `(${id}) ` : ""}${result as string} ${hint ? `✨ ${hint} ✨` : ""}`,
|
|
157
|
+
dbc,
|
|
158
|
+
);
|
|
159
|
+
return toCheck as CANDIDATE;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Creates this {@link INSTANCE } by setting the protected property {@link INSTANCE.reference } used by {@link INSTANCE.check }.
|
|
163
|
+
*
|
|
164
|
+
* @param reference See {@link INSTANCE.check }. */
|
|
165
|
+
public constructor(protected reference: any) {
|
|
166
|
+
super();
|
|
167
|
+
}
|
|
168
|
+
}
|