presidium 4.10.0 → 4.11.0
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/DatabaseLoadBalancer.js +3 -0
- package/Validator.js +196 -0
- package/index.js +31 -29
- package/package.json +3 -1
package/Validator.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
const Validator = {
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @name Validator.Object
|
|
5
|
+
*
|
|
6
|
+
* @docs
|
|
7
|
+
* ```specscript
|
|
8
|
+
* Validator.Object(validators Object<function>) -> objectValidator function
|
|
9
|
+
*
|
|
10
|
+
* objectValidator(data any) -> result Object
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
Object(validators) {
|
|
14
|
+
return function _Object(data) {
|
|
15
|
+
if (typeof data == "object") {
|
|
16
|
+
const result = {}
|
|
17
|
+
for (const key in validators) {
|
|
18
|
+
const validator = validators[key]
|
|
19
|
+
const value = data[key]
|
|
20
|
+
try {
|
|
21
|
+
const validated = validator(value)
|
|
22
|
+
if (validated != Validator.Optional) {
|
|
23
|
+
result[key] = validator(value)
|
|
24
|
+
}
|
|
25
|
+
} catch (error) {
|
|
26
|
+
error.key = key
|
|
27
|
+
throw error
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return result
|
|
31
|
+
}
|
|
32
|
+
const error = new Error("BadObject")
|
|
33
|
+
error.data = data
|
|
34
|
+
throw error
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @name Validator.Array
|
|
40
|
+
*
|
|
41
|
+
* @docs
|
|
42
|
+
* ```specscript
|
|
43
|
+
* Validator.Array(data) -> Array
|
|
44
|
+
*
|
|
45
|
+
* Validator.Array(validator function) -> arrayValidator
|
|
46
|
+
*
|
|
47
|
+
* arrayValidator(data any) -> result Array
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
Array(data) {
|
|
51
|
+
if (typeof data == "function") {
|
|
52
|
+
const validator = data
|
|
53
|
+
return function _ArrayOf(_data) {
|
|
54
|
+
if (Array.isArray(_data)) {
|
|
55
|
+
const result = []
|
|
56
|
+
for (let i = 0; i < _data.length; i++) {
|
|
57
|
+
try {
|
|
58
|
+
result.push(validator(_data[i]))
|
|
59
|
+
} catch (error) {
|
|
60
|
+
error.index = i
|
|
61
|
+
throw error
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return result
|
|
65
|
+
}
|
|
66
|
+
const error = new Error("BadArray")
|
|
67
|
+
error.data = _data
|
|
68
|
+
throw error
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (Array.isArray(data)) {
|
|
72
|
+
return data
|
|
73
|
+
}
|
|
74
|
+
const error = new Error("BadArray")
|
|
75
|
+
error.data = data
|
|
76
|
+
throw error
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @name Validator.Number
|
|
81
|
+
*
|
|
82
|
+
* @docs
|
|
83
|
+
* ```specscript
|
|
84
|
+
* Validator.Number(data any) -> number
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
Number(data) {
|
|
88
|
+
if (typeof data == "number") {
|
|
89
|
+
return data
|
|
90
|
+
}
|
|
91
|
+
const error = new Error("BadNumber")
|
|
92
|
+
error.data = data
|
|
93
|
+
throw error
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @name Validator.String
|
|
98
|
+
*
|
|
99
|
+
* @docs
|
|
100
|
+
* ```specscript
|
|
101
|
+
* Validator.String(data any) -> string
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
String(data) {
|
|
105
|
+
if (typeof data == "string") {
|
|
106
|
+
return data
|
|
107
|
+
}
|
|
108
|
+
const error = new Error("BadString")
|
|
109
|
+
error.data = data
|
|
110
|
+
throw error
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @name Validator.Email
|
|
115
|
+
*
|
|
116
|
+
* @docs
|
|
117
|
+
* ```specscript
|
|
118
|
+
* Validator.Email(data any) -> email string
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
Email(data) {
|
|
122
|
+
if (
|
|
123
|
+
data.includes("@")
|
|
124
|
+
&& data.includes(".")
|
|
125
|
+
&& !data.startsWith("@")
|
|
126
|
+
&& !data.endsWith("@")
|
|
127
|
+
&& !data.startsWith(".")
|
|
128
|
+
&& !data.endsWith(".")
|
|
129
|
+
) {
|
|
130
|
+
return data
|
|
131
|
+
}
|
|
132
|
+
const error = new Error("BadEmail")
|
|
133
|
+
error.data = data
|
|
134
|
+
throw error
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* @name Validator.Boolean
|
|
139
|
+
*
|
|
140
|
+
* @docs
|
|
141
|
+
* ```specscript
|
|
142
|
+
* Validator.Boolean(data any) -> boolean
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
Boolean(data) {
|
|
146
|
+
if (typeof data == "boolean") {
|
|
147
|
+
return data
|
|
148
|
+
}
|
|
149
|
+
const error = new Error("BadBoolean")
|
|
150
|
+
error.data = data
|
|
151
|
+
throw error
|
|
152
|
+
},
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @name Validator.OneOf
|
|
156
|
+
*
|
|
157
|
+
* @docs
|
|
158
|
+
* ```specscript
|
|
159
|
+
* Validator.OneOf(...values Arguments) -> oneOfValidator
|
|
160
|
+
*
|
|
161
|
+
* oneOfValidator(data any) -> result string|number
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
OneOf(...values) {
|
|
165
|
+
return function _OneOf(data) {
|
|
166
|
+
if (values.includes(data)) {
|
|
167
|
+
return data
|
|
168
|
+
}
|
|
169
|
+
const error = new Error("NotOneOf")
|
|
170
|
+
error.data = data
|
|
171
|
+
throw error
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @name Validator.Optional
|
|
177
|
+
*
|
|
178
|
+
* @docs
|
|
179
|
+
* ```specscript
|
|
180
|
+
* Validator.Optional(validator function) -> optionalValidator
|
|
181
|
+
*
|
|
182
|
+
* optionalValidator(data any) -> result any
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
Optional(validator) {
|
|
186
|
+
return function _Optional(data) {
|
|
187
|
+
if (data == null) {
|
|
188
|
+
return Validator.Optional
|
|
189
|
+
}
|
|
190
|
+
return validator(data)
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
module.exports = Validator
|
package/index.js
CHANGED
|
@@ -3,33 +3,35 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
module.exports = {
|
|
6
|
-
AwsCredentials: require(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
6
|
+
AwsCredentials: require("./AwsCredentials.js"),
|
|
7
|
+
DatabaseLoadBalancer: require("./DatabaseLoadBalancer.js"),
|
|
8
|
+
DatabaseServer: require("./DatabaseServer.js"),
|
|
9
|
+
DiskHashTable: require("./DiskHashTable.js"),
|
|
10
|
+
DiskHashTableClient: require("./DiskHashTableClient.js"),
|
|
11
|
+
DiskSortedHashTable: require("./DiskSortedHashTable.js"),
|
|
12
|
+
DiskSortedHashTableClient: require("./DiskSortedHashTableClient.js"),
|
|
13
|
+
Docker: require("./Docker.js"),
|
|
14
|
+
DynamoDBGlobalSecondaryIndex: require("./DynamoDBGlobalSecondaryIndex.js"),
|
|
15
|
+
DynamoDBStream: require("./DynamoDBStream.js"),
|
|
16
|
+
DynamoDBTable: require("./DynamoDBTable.js"),
|
|
17
|
+
ECR: require("./ECR.js"),
|
|
18
|
+
GoogleChromeDevTools: require("./GoogleChromeDevTools.js"),
|
|
19
|
+
GoogleChromeForTesting: require("./GoogleChromeForTesting.js"),
|
|
20
|
+
HTTP: require("./HTTP.js"),
|
|
21
|
+
NpmToken: require("./NpmToken.js"),
|
|
22
|
+
OptionalValidator: require("./OptionalValidator.js"),
|
|
23
|
+
Password: require("./Password.js"),
|
|
24
|
+
Readable: require("./Readable.js"),
|
|
25
|
+
S3Bucket: require("./S3Bucket.js"),
|
|
26
|
+
Secrets: require("./Secrets.js"),
|
|
27
|
+
SecretsManager: require("./SecretsManager.js"),
|
|
28
|
+
StrictValidator: require("./StrictValidator.js"),
|
|
29
|
+
TranscribeStream: require("./TranscribeStream.js"),
|
|
30
|
+
userAgent: require("./userAgent.js"),
|
|
31
|
+
WebSocket: require("./WebSocket.js"),
|
|
32
|
+
WebSocketServer: require("./WebSocketServer.js"),
|
|
33
|
+
WebSocketSecureServer: require("./WebSocketSecureServer.js"),
|
|
34
|
+
ServerWebSocket: require("./ServerWebSocket.js"),
|
|
35
|
+
Validator: require("./Validator.js"),
|
|
36
|
+
XML: require("./XML.js"),
|
|
35
37
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "presidium",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.11.0",
|
|
4
4
|
"description": "The Presidium library.",
|
|
5
5
|
"author": "Richard Tong",
|
|
6
6
|
"license": "CFOSS",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"files": [
|
|
14
14
|
"internal",
|
|
15
15
|
"AwsCredentials.js",
|
|
16
|
+
"DatabaseLoadBalancer.js",
|
|
16
17
|
"DatabaseServer.js",
|
|
17
18
|
"DiskHashTable.js",
|
|
18
19
|
"DiskHashTableClient.js",
|
|
@@ -41,6 +42,7 @@
|
|
|
41
42
|
"WebSocketServer.js",
|
|
42
43
|
"WebSocketSecureServer.js",
|
|
43
44
|
"ServerWebSocket.js",
|
|
45
|
+
"Validator.js",
|
|
44
46
|
"XML.js",
|
|
45
47
|
"LICENSE"
|
|
46
48
|
],
|