passkit-generator
Version:
The easiest way to generate custom Apple Wallet passes in Node.js
63 lines • 6.35 kB
JavaScript
import Joi from "joi";
import { PassFieldContent } from "./PassFieldContent.js";
import { Semantics } from "./Semantics.js";
import { URL_REGEX } from "./regexps.js";
const ImageURLEntry = Joi.object({
SHA256: Joi.string().required(),
URL: Joi.string().regex(URL_REGEX).required(),
scale: Joi.number().default(1),
size: Joi.number().max(2 * 1024 * 1024), // 2 megabytes max
});
const Image = Joi.object({
URLs: Joi.array().items(ImageURLEntry),
reuseExisting: Joi.boolean(),
});
const Images = Joi.object({
headerImage: Image,
venueMap: Image,
});
const URLs = Joi.object({
accessibilityURL: Joi.string().regex(URL_REGEX),
addOnURL: Joi.string().regex(URL_REGEX),
bagPolicyURL: Joi.string().regex(URL_REGEX),
/**
* Joi's email schema validates email TLDs and only allows TLDs that are registered in the IANA Registry.
* This also requires NodeJS runtime to work (even though can be enabled client side, but discouraged)
* Reference - https://github.com/hapijs/joi/issues/2390
*/
contactVenueEmail: Joi.string().email({ tlds: false }),
contactVenuePhoneNumber: Joi.string(),
contactVenueWebsite: Joi.string().regex(URL_REGEX),
directionsInformationURL: Joi.string().regex(URL_REGEX),
merchandiseURL: Joi.string().regex(URL_REGEX),
orderFoodURL: Joi.string().regex(URL_REGEX),
parkingInformationURL: Joi.string().regex(URL_REGEX),
purchaseParkingURL: Joi.string().regex(URL_REGEX),
sellURL: Joi.string().regex(URL_REGEX),
transferURL: Joi.string().regex(URL_REGEX),
transitInformationURL: Joi.string().regex(URL_REGEX),
});
const DateInformation = Joi.object({
date: Joi.alternatives(Joi.string().isoDate(), Joi.date().iso()).required(),
ignoreTimeComponents: Joi.boolean(),
isAllDay: Joi.boolean(),
isUnannounced: Joi.boolean(),
isUndetermined: Joi.boolean(),
timeZone: Joi.string(),
});
export const UpcomingPassInformationEntry = Joi.object({
URLs: URLs,
additionalInfoFields: Joi.array().items(PassFieldContent),
auxiliaryStoreIdentifiers: Joi.array().items(Joi.number()),
backfields: Joi.array().items(PassFieldContent),
dateInformation: DateInformation,
identifier: Joi.string().required(),
images: Images,
isActive: Joi.boolean(),
name: Joi.string().required(),
semantics: Semantics.concat(Joi.object({
venuePlaceID: Joi.string(),
})),
type: Joi.string().valid("event").required(),
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBjb21pbmdQYXNzSW5mb3JtYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2NoZW1hcy9VcGNvbWluZ1Bhc3NJbmZvcm1hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDdEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFvQnpDLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQWdCO0lBQy9DLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQy9CLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUM3QyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDOUIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxrQkFBa0I7Q0FDM0QsQ0FBQyxDQUFDO0FBY0gsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBUTtJQUMvQixJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7SUFDdEMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUU7Q0FDNUIsQ0FBQyxDQUFDO0FBY0gsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBUztJQUNqQyxXQUFXLEVBQUUsS0FBSztJQUNsQixRQUFRLEVBQUUsS0FBSztDQUNmLENBQUMsQ0FBQztB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