mirror of
https://github.com/marcogll/passkit-generator.git
synced 2026-03-15 14:25:17 +00:00
Edited schemas, moved outside the object all the schemas,
added schemas for structure and field
This commit is contained in:
92
schema.js
92
schema.js
@@ -1,51 +1,57 @@
|
||||
const Joi = require("joi");
|
||||
|
||||
const CONSTANTS = {
|
||||
instance: Joi.object().keys({
|
||||
modelDir: Joi.string().required(),
|
||||
modelName: Joi.string(),
|
||||
certificates: Joi.object().keys({
|
||||
dir: Joi.string().required(),
|
||||
wwdr: Joi.string().required(),
|
||||
signerCert: Joi.string().required(),
|
||||
signerKey: Joi.object().keys({
|
||||
keyFile: Joi.string().required(),
|
||||
passphrase: Joi.string().required(),
|
||||
}).required()
|
||||
}).required(),
|
||||
handlers: Joi.object().keys({
|
||||
barcode: Joi.func(),
|
||||
serialNumber: Joi.func()
|
||||
}),
|
||||
overrides: Joi.object()
|
||||
let instance = Joi.object().keys({
|
||||
modelDir: Joi.string().required(),
|
||||
modelName: Joi.string(),
|
||||
certificates: Joi.object().keys({
|
||||
dir: Joi.string().required(),
|
||||
wwdr: Joi.string().required(),
|
||||
signerCert: Joi.string().required(),
|
||||
signerKey: Joi.object().keys({
|
||||
keyFile: Joi.string().required(),
|
||||
passphrase: Joi.string().required(),
|
||||
}).required()
|
||||
}).required(),
|
||||
handlers: Joi.object().keys({
|
||||
barcode: Joi.func(),
|
||||
serialNumber: Joi.func()
|
||||
}),
|
||||
barcode: Joi.object().keys({
|
||||
altText: Joi.string(),
|
||||
messageEncoding: Joi.string(),
|
||||
format: Joi.string().required().regex(/(PKBarcodeFormatQR|PKBarcodeFormatPDF417|PKBarcodeFormatAztec|PKBarcodeFormatCode128)/, "barcodeType"),
|
||||
message: Joi.string().required()
|
||||
}),
|
||||
field: Joi.object().keys({
|
||||
attributedValue: Joi.string(),
|
||||
changeMessage: Joi.string(),
|
||||
dataDetectorType: Joi.array().items(Joi.string().regex(/(PKDataDetectorTypePhoneNumber|PKDataDetectorTypeLink|PKDataDetectorTypeAddress|PKDataDetectorTypeCalendarEvent)/, "dataDetectorType")),
|
||||
label: Joi.string(),
|
||||
textAlignment: Joi.string().regex(/(PKTextAlignmentLeft|PKTextAlignmentCenter|PKTextAlignmentRight|PKTextAlignmentNatural)/, "graphic-alignment"),
|
||||
key: Joi.string().required(),
|
||||
value: Joi.string().required()
|
||||
}),
|
||||
structure: Joi.object().keys({
|
||||
auxiliaryFields: Joi.array().items(this.field),
|
||||
backFields: Joi.array().items(this.field),
|
||||
headerFields: Joi.array().items(this.field),
|
||||
primaryFields: Joi.array().items(this.field),
|
||||
secondaryFields: Joi.array().items(this.field),
|
||||
transitType: Joi.string().regex(/(PKTransitTypeAir|PKTransitTypeBoat|PKTransitTypeBus|PKTransitTypeGeneric|PKTransitTypeTrain)/)
|
||||
})
|
||||
};
|
||||
overrides: Joi.object()
|
||||
});
|
||||
|
||||
let barcode = Joi.object().keys({
|
||||
altText: Joi.string(),
|
||||
messageEncoding: Joi.string(),
|
||||
format: Joi.string().required().regex(/(PKBarcodeFormatQR|PKBarcodeFormatPDF417|PKBarcodeFormatAztec|PKBarcodeFormatCode128)/, "barcodeType"),
|
||||
message: Joi.string().required()
|
||||
});
|
||||
|
||||
let field = Joi.object().keys({
|
||||
attributedValue: Joi.string(),
|
||||
changeMessage: Joi.string(),
|
||||
dataDetectorType: Joi.array().items(Joi.string().regex(/(PKDataDetectorTypePhoneNumber|PKDataDetectorTypeLink|PKDataDetectorTypeAddress|PKDataDetectorTypeCalendarEvent)/, "dataDetectorType")),
|
||||
label: Joi.string(),
|
||||
textAlignment: Joi.string().regex(/(PKTextAlignmentLeft|PKTextAlignmentCenter|PKTextAlignmentRight|PKTextAlignmentNatural)/, "graphic-alignment"),
|
||||
key: Joi.string().required(),
|
||||
value: Joi.string().required()
|
||||
})
|
||||
|
||||
let structure = Joi.object().keys({
|
||||
auxiliaryFields: Joi.array().items(field),
|
||||
backFields: Joi.array().items(field),
|
||||
headerFields: Joi.array().items(field),
|
||||
primaryFields: Joi.array().items(field),
|
||||
secondaryFields: Joi.array().items(field),
|
||||
transitType: Joi.string().regex(/(PKTransitTypeAir|PKTransitTypeBoat|PKTransitTypeBus|PKTransitTypeGeneric|PKTransitTypeTrain)/)
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
CONSTANTS,
|
||||
constants: {
|
||||
instance,
|
||||
barcode,
|
||||
field,
|
||||
structure
|
||||
},
|
||||
isValid: (opts, schemaName) => {
|
||||
let validation = Joi.validate(opts, schemaName);
|
||||
return !validation.error;
|
||||
|
||||
Reference in New Issue
Block a user