1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.savedDBEntitySchema = exports.baseDBEntitySchema = exports.ipAddressSchema = exports.utcOffsetSchema = exports.userAgentSchema = exports.semVerSchema = exports.SEM_VER_PATTERN = exports.emailSchema = exports.verSchema = exports.unixTimestampSchema = exports.slugSchema = exports.SLUG_PATTERN = exports.idSchema = exports.anyObjectSchema = exports.anySchema = exports.oneOfSchema = exports.objectSchema = exports.arraySchema = exports.urlSchema = exports.binarySchema = exports.dateStringSchema = exports.percentageSchema = exports.integerSchema = exports.numberSchema = exports.stringSchema = exports.booleanDefaultToFalseSchema = exports.booleanSchema = void 0;
|
4 | const joi_extensions_1 = require("./joi.extensions");
|
5 | exports.booleanSchema = joi_extensions_1.Joi.boolean();
|
6 | exports.booleanDefaultToFalseSchema = joi_extensions_1.Joi.boolean().default(false);
|
7 | exports.stringSchema = joi_extensions_1.Joi.string();
|
8 | exports.numberSchema = joi_extensions_1.Joi.number();
|
9 | exports.integerSchema = joi_extensions_1.Joi.number().integer();
|
10 | exports.percentageSchema = joi_extensions_1.Joi.number().integer().min(0).max(100);
|
11 | exports.dateStringSchema = exports.stringSchema.dateString();
|
12 | exports.binarySchema = joi_extensions_1.Joi.binary();
|
13 | const urlSchema = (scheme = 'https') => joi_extensions_1.Joi.string().uri({ scheme });
|
14 | exports.urlSchema = urlSchema;
|
15 | function arraySchema(items) {
|
16 | return items ? joi_extensions_1.Joi.array().items(items) : joi_extensions_1.Joi.array();
|
17 | }
|
18 | exports.arraySchema = arraySchema;
|
19 | function objectSchema(schema) {
|
20 | return joi_extensions_1.Joi.object(schema);
|
21 | }
|
22 | exports.objectSchema = objectSchema;
|
23 | function oneOfSchema(...schemas) {
|
24 | return joi_extensions_1.Joi.alternatives(schemas);
|
25 | }
|
26 | exports.oneOfSchema = oneOfSchema;
|
27 | exports.anySchema = joi_extensions_1.Joi.any();
|
28 | exports.anyObjectSchema = joi_extensions_1.Joi.object().options({ stripUnknown: false });
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 | exports.idSchema = exports.stringSchema.regex(/^[a-zA-Z0-9_]{6,64}$/);
|
35 |
|
36 |
|
37 |
|
38 | exports.SLUG_PATTERN = /^[a-z0-9-]*$/;
|
39 |
|
40 |
|
41 |
|
42 | exports.slugSchema = exports.stringSchema.regex(/^[a-z0-9-]{1,255}$/);
|
43 |
|
44 | exports.unixTimestampSchema = exports.numberSchema.integer().min(0).max(16725225600);
|
45 |
|
46 | exports.verSchema = exports.numberSchema.optional().integer().min(1).max(100);
|
47 |
|
48 |
|
49 |
|
50 | exports.emailSchema = exports.stringSchema.email().lowercase();
|
51 |
|
52 |
|
53 |
|
54 | exports.SEM_VER_PATTERN = /^[0-9]+\.[0-9]+\.[0-9]+$/;
|
55 | exports.semVerSchema = exports.stringSchema.regex(exports.SEM_VER_PATTERN);
|
56 |
|
57 | exports.userAgentSchema = exports.stringSchema
|
58 | .min(5)
|
59 | .max(400);
|
60 | exports.utcOffsetSchema = exports.numberSchema
|
61 | .min(-14 * 60)
|
62 | .max(14 * 60)
|
63 | .dividable(15);
|
64 | exports.ipAddressSchema = exports.stringSchema.ip();
|
65 | exports.baseDBEntitySchema = objectSchema({
|
66 | id: exports.stringSchema.optional(),
|
67 | created: exports.unixTimestampSchema.optional(),
|
68 | updated: exports.unixTimestampSchema.optional(),
|
69 | });
|
70 | exports.savedDBEntitySchema = objectSchema({
|
71 | id: exports.stringSchema,
|
72 | created: exports.unixTimestampSchema,
|
73 | updated: exports.unixTimestampSchema,
|
74 | });
|