@desaubv/quik 0.0.21 → 0.0.81
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 +804 -0
- package/dist/cron/index.cjs +330 -0
- package/dist/cron/index.cjs.map +1 -0
- package/dist/cron/index.d.cts +38 -0
- package/dist/cron/index.d.ts +38 -0
- package/dist/cron/index.js +291 -0
- package/dist/cron/index.js.map +1 -0
- package/dist/cron-BLi976po.d.cts +38 -0
- package/dist/cron-BLi976po.d.ts +38 -0
- package/dist/http/index.cjs +318 -0
- package/dist/http/index.cjs.map +1 -0
- package/dist/http/index.d.cts +121 -0
- package/dist/http/index.d.ts +121 -0
- package/dist/http/index.js +288 -0
- package/dist/http/index.js.map +1 -0
- package/dist/index.cjs +523 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +92 -3
- package/dist/index.d.ts +92 -3
- package/dist/index.js +516 -15
- package/dist/index.js.map +1 -1
- package/package.json +67 -34
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
// src/http/validatorTypes.ts
|
|
2
|
+
var ArrayType = class {
|
|
3
|
+
type;
|
|
4
|
+
description = "array";
|
|
5
|
+
empty = false;
|
|
6
|
+
constructor(...type) {
|
|
7
|
+
this.type = [...type];
|
|
8
|
+
this.empty = false;
|
|
9
|
+
const types = type.map((t) => t.description);
|
|
10
|
+
this.description = `array(${types.join(" | ")})`;
|
|
11
|
+
}
|
|
12
|
+
canBeEmpty() {
|
|
13
|
+
this.empty = true;
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var ObjectType = class {
|
|
18
|
+
fields;
|
|
19
|
+
description = "object";
|
|
20
|
+
constructor(fields) {
|
|
21
|
+
this.fields = fields;
|
|
22
|
+
const names = Object.keys(fields);
|
|
23
|
+
this.description = `object{${names.join(", ")}}`;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
function Array2(...type) {
|
|
27
|
+
return new ArrayType(...type);
|
|
28
|
+
}
|
|
29
|
+
function Struct(fields) {
|
|
30
|
+
return new ObjectType(fields);
|
|
31
|
+
}
|
|
32
|
+
var Types = {
|
|
33
|
+
String: /* @__PURE__ */ Symbol("string"),
|
|
34
|
+
Number: /* @__PURE__ */ Symbol("number"),
|
|
35
|
+
Int: /* @__PURE__ */ Symbol("int"),
|
|
36
|
+
Float: /* @__PURE__ */ Symbol("float"),
|
|
37
|
+
Boolean: /* @__PURE__ */ Symbol("boolean"),
|
|
38
|
+
Object: /* @__PURE__ */ Symbol("object"),
|
|
39
|
+
Null: /* @__PURE__ */ Symbol("null"),
|
|
40
|
+
Any: /* @__PURE__ */ Symbol("any"),
|
|
41
|
+
Array: Array2,
|
|
42
|
+
Struct
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// src/http/exceptions.ts
|
|
46
|
+
var ValidationException = class extends Error {
|
|
47
|
+
constructor(message) {
|
|
48
|
+
super(message);
|
|
49
|
+
this.name = "ValidationException";
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
var RequestBodyUndefinedException = class extends ValidationException {
|
|
53
|
+
constructor() {
|
|
54
|
+
super("Request body is undefined");
|
|
55
|
+
this.name = "RequestBodyUndefinedException";
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var InvalidBodyException = class extends ValidationException {
|
|
59
|
+
constructor() {
|
|
60
|
+
super("Request body must be an object");
|
|
61
|
+
this.name = "InvalidBodyException";
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
var RequiredFieldException = class extends ValidationException {
|
|
65
|
+
constructor(field) {
|
|
66
|
+
super(`Field "${field}" is required`);
|
|
67
|
+
this.field = field;
|
|
68
|
+
this.name = "RequiredFieldException";
|
|
69
|
+
}
|
|
70
|
+
field;
|
|
71
|
+
};
|
|
72
|
+
var InvalidTypeException = class extends ValidationException {
|
|
73
|
+
constructor(field, expected, received) {
|
|
74
|
+
super(
|
|
75
|
+
`Field "${field}" must be of type ${expected}, received ${received}`
|
|
76
|
+
);
|
|
77
|
+
this.field = field;
|
|
78
|
+
this.expected = expected;
|
|
79
|
+
this.received = received;
|
|
80
|
+
this.name = "InvalidTypeException";
|
|
81
|
+
}
|
|
82
|
+
field;
|
|
83
|
+
expected;
|
|
84
|
+
received;
|
|
85
|
+
};
|
|
86
|
+
var EmptyArrayException = class extends ValidationException {
|
|
87
|
+
constructor(field) {
|
|
88
|
+
super(`Field "${field}" must not be an empty array`);
|
|
89
|
+
this.field = field;
|
|
90
|
+
this.name = "EmptyArrayException";
|
|
91
|
+
}
|
|
92
|
+
field;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
// src/http/validador.ts
|
|
96
|
+
var Validator = {
|
|
97
|
+
body(body, fields) {
|
|
98
|
+
if (body === void 0) {
|
|
99
|
+
throw new RequestBodyUndefinedException();
|
|
100
|
+
}
|
|
101
|
+
if (typeof body !== "object" || body === null || Array.isArray(body)) {
|
|
102
|
+
throw new InvalidBodyException();
|
|
103
|
+
}
|
|
104
|
+
return validateObject(body, fields);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
function validateObject(body, fields, parentPath = "") {
|
|
108
|
+
if (typeof body !== "object" || body === null || Array.isArray(body)) {
|
|
109
|
+
throw new InvalidBodyException();
|
|
110
|
+
}
|
|
111
|
+
const bodyData = body;
|
|
112
|
+
const data = {};
|
|
113
|
+
for (const name in fields) {
|
|
114
|
+
const field = fields[name];
|
|
115
|
+
if (!field) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
const fieldPath = parentPath ? `${parentPath}.${name}` : name;
|
|
119
|
+
let value = bodyData[name];
|
|
120
|
+
if (field.required && value === void 0) {
|
|
121
|
+
throw new RequiredFieldException(fieldPath);
|
|
122
|
+
}
|
|
123
|
+
if (value === void 0) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (!validateType(field.type, value, fieldPath)) {
|
|
127
|
+
const type = getTypeDescription(field.type);
|
|
128
|
+
throw new InvalidTypeException(
|
|
129
|
+
fieldPath,
|
|
130
|
+
type,
|
|
131
|
+
whatTypeIs(value)
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
if (field.validator) {
|
|
135
|
+
const result = field.validator(value);
|
|
136
|
+
if (result instanceof ValidationException) {
|
|
137
|
+
throw result;
|
|
138
|
+
}
|
|
139
|
+
value = result;
|
|
140
|
+
}
|
|
141
|
+
data[name] = value;
|
|
142
|
+
}
|
|
143
|
+
return data;
|
|
144
|
+
}
|
|
145
|
+
function validateType(type, value, fieldName = "") {
|
|
146
|
+
if (Array.isArray(type)) {
|
|
147
|
+
return type.some(
|
|
148
|
+
(t) => validateType(t, value, fieldName)
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
if (type instanceof ArrayType) {
|
|
152
|
+
if (!Array.isArray(value)) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
if (!type.empty && value.length === 0) {
|
|
156
|
+
throw new EmptyArrayException(fieldName);
|
|
157
|
+
}
|
|
158
|
+
for (const item of value) {
|
|
159
|
+
if (!validateType(type.type, item, fieldName)) {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
if (type instanceof ObjectType) {
|
|
166
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
validateObject(
|
|
170
|
+
value,
|
|
171
|
+
type.fields,
|
|
172
|
+
fieldName
|
|
173
|
+
);
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
switch (type?.description) {
|
|
177
|
+
case "any":
|
|
178
|
+
return true;
|
|
179
|
+
case "null":
|
|
180
|
+
return value === null;
|
|
181
|
+
case "string":
|
|
182
|
+
return typeof value === "string";
|
|
183
|
+
case "number":
|
|
184
|
+
case "float":
|
|
185
|
+
return typeof value === "number";
|
|
186
|
+
case "int":
|
|
187
|
+
return typeof value === "number" && Number.isInteger(value);
|
|
188
|
+
case "boolean":
|
|
189
|
+
return typeof value === "boolean";
|
|
190
|
+
case "object":
|
|
191
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
192
|
+
}
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
function getTypeDescription(type) {
|
|
196
|
+
if (Array.isArray(type)) {
|
|
197
|
+
return type.map((t) => getTypeDescription(t)).join(" | ");
|
|
198
|
+
}
|
|
199
|
+
return type.description || "";
|
|
200
|
+
}
|
|
201
|
+
function whatTypeIs(value) {
|
|
202
|
+
if (typeof value === "number" && Number.isInteger(value)) {
|
|
203
|
+
return "int";
|
|
204
|
+
}
|
|
205
|
+
if (Array.isArray(value)) {
|
|
206
|
+
return "array";
|
|
207
|
+
}
|
|
208
|
+
if (value === null) {
|
|
209
|
+
return "null";
|
|
210
|
+
}
|
|
211
|
+
return typeof value;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// src/http/status.ts
|
|
215
|
+
var Status = {
|
|
216
|
+
// 1xx Informational
|
|
217
|
+
CONTINUE: 100,
|
|
218
|
+
SWITCHING_PROTOCOLS: 101,
|
|
219
|
+
PROCESSING: 102,
|
|
220
|
+
EARLY_HINTS: 103,
|
|
221
|
+
// 2xx Success
|
|
222
|
+
OK: 200,
|
|
223
|
+
CREATED: 201,
|
|
224
|
+
ACCEPTED: 202,
|
|
225
|
+
NON_AUTHORITATIVE_INFORMATION: 203,
|
|
226
|
+
NO_CONTENT: 204,
|
|
227
|
+
RESET_CONTENT: 205,
|
|
228
|
+
PARTIAL_CONTENT: 206,
|
|
229
|
+
MULTI_STATUS: 207,
|
|
230
|
+
ALREADY_REPORTED: 208,
|
|
231
|
+
IM_USED: 226,
|
|
232
|
+
// 3xx Redirection
|
|
233
|
+
MULTIPLE_CHOICES: 300,
|
|
234
|
+
MOVED_PERMANENTLY: 301,
|
|
235
|
+
FOUND: 302,
|
|
236
|
+
SEE_OTHER: 303,
|
|
237
|
+
NOT_MODIFIED: 304,
|
|
238
|
+
TEMPORARY_REDIRECT: 307,
|
|
239
|
+
PERMANENT_REDIRECT: 308,
|
|
240
|
+
// 4xx Client Errors
|
|
241
|
+
BAD_REQUEST: 400,
|
|
242
|
+
UNAUTHORIZED: 401,
|
|
243
|
+
PAYMENT_REQUIRED: 402,
|
|
244
|
+
FORBIDDEN: 403,
|
|
245
|
+
NOT_FOUND: 404,
|
|
246
|
+
METHOD_NOT_ALLOWED: 405,
|
|
247
|
+
NOT_ACCEPTABLE: 406,
|
|
248
|
+
PROXY_AUTHENTICATION_REQUIRED: 407,
|
|
249
|
+
REQUEST_TIMEOUT: 408,
|
|
250
|
+
CONFLICT: 409,
|
|
251
|
+
GONE: 410,
|
|
252
|
+
LENGTH_REQUIRED: 411,
|
|
253
|
+
PRECONDITION_FAILED: 412,
|
|
254
|
+
PAYLOAD_TOO_LARGE: 413,
|
|
255
|
+
URI_TOO_LONG: 414,
|
|
256
|
+
UNSUPPORTED_MEDIA_TYPE: 415,
|
|
257
|
+
RANGE_NOT_SATISFIABLE: 416,
|
|
258
|
+
EXPECTATION_FAILED: 417,
|
|
259
|
+
IM_A_TEAPOT: 418,
|
|
260
|
+
MISDIRECTED_REQUEST: 421,
|
|
261
|
+
UNPROCESSABLE_CONTENT: 422,
|
|
262
|
+
LOCKED: 423,
|
|
263
|
+
FAILED_DEPENDENCY: 424,
|
|
264
|
+
UPGRADE_REQUIRED: 426,
|
|
265
|
+
PRECONDITION_REQUIRED: 428,
|
|
266
|
+
TOO_MANY_REQUESTS: 429,
|
|
267
|
+
REQUEST_HEADER_FIELDS_TOO_LARGE: 431,
|
|
268
|
+
UNAVAILABLE_FOR_LEGAL_REASONS: 451,
|
|
269
|
+
// 5xx Server Errors
|
|
270
|
+
INTERNAL_SERVER_ERROR: 500,
|
|
271
|
+
NOT_IMPLEMENTED: 501,
|
|
272
|
+
BAD_GATEWAY: 502,
|
|
273
|
+
SERVICE_UNAVAILABLE: 503,
|
|
274
|
+
GATEWAY_TIMEOUT: 504,
|
|
275
|
+
HTTP_VERSION_NOT_SUPPORTED: 505,
|
|
276
|
+
VARIANT_ALSO_NEGOTIATES: 506,
|
|
277
|
+
INSUFFICIENT_STORAGE: 507,
|
|
278
|
+
LOOP_DETECTED: 508,
|
|
279
|
+
NOT_EXTENDED: 510,
|
|
280
|
+
NETWORK_AUTHENTICATION_REQUIRED: 511
|
|
281
|
+
};
|
|
282
|
+
export {
|
|
283
|
+
Status,
|
|
284
|
+
Types,
|
|
285
|
+
ValidationException,
|
|
286
|
+
Validator
|
|
287
|
+
};
|
|
288
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/http/validatorTypes.ts","../../src/http/exceptions.ts","../../src/http/validador.ts","../../src/http/status.ts"],"sourcesContent":["import type { ValidationException } from \"./exceptions.js\";\r\n\r\nexport class ArrayType {\r\n type: PrimitiveType[];\r\n description = \"array\";\r\n empty: boolean = false;\r\n\r\n constructor(...type: PrimitiveType[]) {\r\n this.type = [...type];\r\n this.empty = false;\r\n\r\n const types = type.map((t) => t.description);\r\n this.description = `array(${types.join(\" | \")})`;\r\n }\r\n\r\n canBeEmpty() {\r\n this.empty = true;\r\n return this;\r\n }\r\n}\r\n\r\nexport type FieldDefinition = {\r\n type: ValidatorType;\r\n required?: boolean;\r\n validator?: (value: unknown) => unknown | ValidationException;\r\n};\r\n\r\nexport type ObjectFields = {\r\n [name: string]: FieldDefinition;\r\n};\r\n\r\nexport class ObjectType {\r\n fields: ObjectFields;\r\n description = \"object\";\r\n\r\n constructor(fields: ObjectFields) {\r\n this.fields = fields;\r\n\r\n const names = Object.keys(fields);\r\n\r\n this.description = `object{${names.join(\", \")}}`;\r\n }\r\n}\r\n\r\nfunction Array(...type: PrimitiveType[]) {\r\n return new ArrayType(...type);\r\n}\r\n\r\nfunction Struct(fields: ObjectFields) {\r\n return new ObjectType(fields);\r\n}\r\n\r\nexport const Types = {\r\n String: Symbol(\"string\"),\r\n Number: Symbol(\"number\"),\r\n Int: Symbol(\"int\"),\r\n Float: Symbol(\"float\"),\r\n Boolean: Symbol(\"boolean\"),\r\n Object: Symbol(\"object\"),\r\n Null: Symbol(\"null\"),\r\n Any: Symbol(\"any\"),\r\n \r\n Array,\r\n Struct,\r\n};\r\n\r\nexport type PrimitiveType =\r\n | typeof Types.String\r\n | typeof Types.Number\r\n | typeof Types.Int\r\n | typeof Types.Float\r\n | typeof Types.Boolean\r\n | typeof Types.Object\r\n | typeof Types.Null;\r\n\r\nexport type MultiType = PrimitiveType[];\r\n\r\nexport type ValidatorType =\r\n | PrimitiveType\r\n | MultiType\r\n | ArrayType\r\n | ObjectType;","class ValidationException extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n\r\n this.name = \"ValidationException\";\r\n }\r\n}\r\n\r\nclass RequestBodyUndefinedException extends ValidationException {\r\n constructor() {\r\n super(\"Request body is undefined\");\r\n\r\n this.name = \"RequestBodyUndefinedException\";\r\n }\r\n}\r\n\r\nclass InvalidBodyException extends ValidationException {\r\n constructor() {\r\n super(\"Request body must be an object\");\r\n\r\n this.name = \"InvalidBodyException\";\r\n }\r\n}\r\n\r\nclass RequiredFieldException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n ) {\r\n super(`Field \"${field}\" is required`);\r\n\r\n this.name = \"RequiredFieldException\";\r\n }\r\n}\r\n\r\nclass InvalidTypeException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n public readonly expected: string | undefined,\r\n public readonly received: string,\r\n ) {\r\n super(\r\n `Field \"${field}\" must be of type ${expected}, received ${received}`,\r\n );\r\n\r\n this.name = \"InvalidTypeException\";\r\n }\r\n}\r\n\r\nclass CustomValidationException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n ) {\r\n super(`Field \"${field}\" failed custom validation`);\r\n\r\n this.name = \"CustomValidationException\";\r\n }\r\n}\r\n\r\nclass EmptyArrayException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n ) {\r\n super(`Field \"${field}\" must not be an empty array`);\r\n\r\n this.name = \"EmptyArrayException\";\r\n }\r\n}\r\n\r\nexport {\r\n ValidationException,\r\n RequestBodyUndefinedException,\r\n InvalidBodyException,\r\n RequiredFieldException,\r\n InvalidTypeException,\r\n CustomValidationException,\r\n EmptyArrayException\r\n}","import {\r\n ValidationException,\r\n RequestBodyUndefinedException,\r\n InvalidBodyException,\r\n RequiredFieldException,\r\n InvalidTypeException,\r\n EmptyArrayException\r\n} from \"./exceptions.js\";\r\n\r\nimport {\r\n ArrayType,\r\n ObjectType,\r\n Types\r\n} from \"./validatorTypes.js\";\r\n\r\nimport type {\r\n ValidatorType,\r\n ObjectFields\r\n} from \"./validatorTypes.js\";\r\n\r\ntype FieldDefinition = {\r\n type: ValidatorType;\r\n required?: boolean;\r\n validator?: (\r\n value: unknown\r\n ) => unknown | ValidationException;\r\n};\r\n\r\ninterface BodyFields {\r\n [name: string]: FieldDefinition;\r\n}\r\n\r\ninterface Body {\r\n [name: string]: unknown;\r\n}\r\n\r\nconst Validator = {\r\n body(body: Body, fields: BodyFields) {\r\n if (body === undefined) {\r\n throw new RequestBodyUndefinedException();\r\n }\r\n\r\n if (\r\n typeof body !== \"object\" ||\r\n body === null ||\r\n Array.isArray(body)\r\n ) {\r\n throw new InvalidBodyException();\r\n }\r\n\r\n return validateObject(body, fields);\r\n }\r\n};\r\n\r\nfunction validateObject(\r\n body: unknown,\r\n fields: ObjectFields,\r\n parentPath = \"\"\r\n): Record<string, unknown> {\r\n\r\n if (\r\n typeof body !== \"object\" ||\r\n body === null ||\r\n Array.isArray(body)\r\n ) {\r\n throw new InvalidBodyException();\r\n }\r\n\r\n const bodyData = body as Record<string, unknown>;\r\n const data: Record<string, unknown> = {};\r\n\r\n for (const name in fields) {\r\n const field = fields[name];\r\n\r\n if (!field) {\r\n continue;\r\n }\r\n\r\n const fieldPath = parentPath\r\n ? `${parentPath}.${name}`\r\n : name;\r\n\r\n let value = bodyData[name];\r\n\r\n // Required field\r\n if (field.required && value === undefined) {\r\n throw new RequiredFieldException(fieldPath);\r\n }\r\n\r\n // Optional field not provided\r\n if (value === undefined) {\r\n continue;\r\n }\r\n\r\n // Validate type\r\n if (!validateType(field.type, value, fieldPath)) {\r\n const type = getTypeDescription(field.type);\r\n\r\n throw new InvalidTypeException(\r\n fieldPath,\r\n type,\r\n whatTypeIs(value)\r\n );\r\n }\r\n\r\n // Custom validator\r\n if (field.validator) {\r\n const result = field.validator(value);\r\n\r\n if (result instanceof ValidationException) {\r\n throw result;\r\n }\r\n\r\n value = result;\r\n }\r\n\r\n data[name] = value;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nfunction validateType(\r\n type: ValidatorType | undefined,\r\n value: unknown,\r\n fieldName = \"\"\r\n): boolean {\r\n\r\n // Multiple types\r\n if (Array.isArray(type)) {\r\n return type.some((t) =>\r\n validateType(t, value, fieldName)\r\n );\r\n }\r\n\r\n // Array\r\n if (type instanceof ArrayType) {\r\n\r\n if (!Array.isArray(value)) {\r\n return false;\r\n }\r\n\r\n if (!type.empty && value.length === 0) {\r\n throw new EmptyArrayException(fieldName);\r\n }\r\n\r\n for (const item of value) {\r\n if (!validateType(type.type, item, fieldName)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // Object structure\r\n if (type instanceof ObjectType) {\r\n\r\n if (\r\n typeof value !== \"object\" ||\r\n value === null ||\r\n Array.isArray(value)\r\n ) {\r\n return false;\r\n }\r\n\r\n validateObject(\r\n value,\r\n type.fields,\r\n fieldName\r\n );\r\n\r\n return true;\r\n }\r\n\r\n // Primitive types\r\n switch (type?.description) {\r\n case \"any\":\r\n return true;\r\n\r\n case \"null\":\r\n return value === null;\r\n\r\n case \"string\":\r\n return typeof value === \"string\";\r\n\r\n case \"number\":\r\n case \"float\":\r\n return typeof value === \"number\";\r\n\r\n case \"int\":\r\n return (\r\n typeof value === \"number\" &&\r\n Number.isInteger(value)\r\n );\r\n\r\n case \"boolean\":\r\n return typeof value === \"boolean\";\r\n\r\n case \"object\":\r\n return (\r\n typeof value === \"object\" &&\r\n value !== null &&\r\n !Array.isArray(value)\r\n );\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getTypeDescription(\r\n type: ValidatorType\r\n): string {\r\n\r\n if (Array.isArray(type)) {\r\n return type\r\n .map((t) => getTypeDescription(t))\r\n .join(\" | \");\r\n }\r\n\r\n return type.description || \"\";\r\n}\r\n\r\nfunction whatTypeIs(value: unknown): string {\r\n\r\n if (\r\n typeof value === \"number\" &&\r\n Number.isInteger(value)\r\n ) {\r\n return \"int\";\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return \"array\";\r\n }\r\n\r\n if (value === null) {\r\n return \"null\";\r\n }\r\n\r\n return typeof value;\r\n}\r\n\r\nexport {\r\n Validator\r\n};","const Status = {\r\n // 1xx Informational\r\n CONTINUE: 100,\r\n SWITCHING_PROTOCOLS: 101,\r\n PROCESSING: 102,\r\n EARLY_HINTS: 103,\r\n\r\n // 2xx Success\r\n OK: 200,\r\n CREATED: 201,\r\n ACCEPTED: 202,\r\n NON_AUTHORITATIVE_INFORMATION: 203,\r\n NO_CONTENT: 204,\r\n RESET_CONTENT: 205,\r\n PARTIAL_CONTENT: 206,\r\n MULTI_STATUS: 207,\r\n ALREADY_REPORTED: 208,\r\n IM_USED: 226,\r\n\r\n // 3xx Redirection\r\n MULTIPLE_CHOICES: 300,\r\n MOVED_PERMANENTLY: 301,\r\n FOUND: 302,\r\n SEE_OTHER: 303,\r\n NOT_MODIFIED: 304,\r\n TEMPORARY_REDIRECT: 307,\r\n PERMANENT_REDIRECT: 308,\r\n\r\n // 4xx Client Errors\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n PAYMENT_REQUIRED: 402,\r\n FORBIDDEN: 403,\r\n NOT_FOUND: 404,\r\n METHOD_NOT_ALLOWED: 405,\r\n NOT_ACCEPTABLE: 406,\r\n PROXY_AUTHENTICATION_REQUIRED: 407,\r\n REQUEST_TIMEOUT: 408,\r\n CONFLICT: 409,\r\n GONE: 410,\r\n LENGTH_REQUIRED: 411,\r\n PRECONDITION_FAILED: 412,\r\n PAYLOAD_TOO_LARGE: 413,\r\n URI_TOO_LONG: 414,\r\n UNSUPPORTED_MEDIA_TYPE: 415,\r\n RANGE_NOT_SATISFIABLE: 416,\r\n EXPECTATION_FAILED: 417,\r\n IM_A_TEAPOT: 418,\r\n MISDIRECTED_REQUEST: 421,\r\n UNPROCESSABLE_CONTENT: 422,\r\n LOCKED: 423,\r\n FAILED_DEPENDENCY: 424,\r\n UPGRADE_REQUIRED: 426,\r\n PRECONDITION_REQUIRED: 428,\r\n TOO_MANY_REQUESTS: 429,\r\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\r\n UNAVAILABLE_FOR_LEGAL_REASONS: 451,\r\n\r\n // 5xx Server Errors\r\n INTERNAL_SERVER_ERROR: 500,\r\n NOT_IMPLEMENTED: 501,\r\n BAD_GATEWAY: 502,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n HTTP_VERSION_NOT_SUPPORTED: 505,\r\n VARIANT_ALSO_NEGOTIATES: 506,\r\n INSUFFICIENT_STORAGE: 507,\r\n LOOP_DETECTED: 508,\r\n NOT_EXTENDED: 510,\r\n NETWORK_AUTHENTICATION_REQUIRED: 511\r\n} as const;\r\n\r\nexport {\r\n Status\r\n};"],"mappings":"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","names":["Array"]}
|