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