diff --git a/src/schemas/Semantics.ts b/src/schemas/Semantics.ts index def88a1..6dc0838 100644 --- a/src/schemas/Semantics.ts +++ b/src/schemas/Semantics.ts @@ -1,4 +1,5 @@ import Joi from "joi"; +import { RGB_HEX_COLOR_REGEX } from "."; /** * For a better description of every single field, @@ -105,7 +106,7 @@ const SeatSemantics = Joi.object().keys({ * For newly-introduced event tickets * in iOS 18 */ - seatSectionColor: Joi.string(), + seatSectionColor: Joi.string().regex(RGB_HEX_COLOR_REGEX), }); const LocationSemantics = Joi.object().keys({ diff --git a/src/schemas/index.ts b/src/schemas/index.ts index 6a5c5bd..ecfc581 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -21,8 +21,8 @@ import { CertificatesSchema } from "./Certificates"; import * as Messages from "../messages"; -const RGB_COLOR_REGEX = - /rgb\(\s*(?:[01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\s*,\s*(?:[01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\s*,\s*(?:[01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\s*\)/; +export const RGB_HEX_COLOR_REGEX = + /(#[a-fA-F0-9]{3,6}|rgb\(\s*(?:[01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\s*,\s*(?:[01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\s*,\s*(?:[01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\s*\))/; const URL_REGEX = /https?:\/\/(?:[a-z0-9]+\.?)+(?::\d{2,})?(?:\/[\S]+)*/; @@ -311,9 +311,9 @@ export const OverridablePassProps = Joi.object({ suppressStripShine: Joi.boolean(), maxDistance: Joi.number().positive(), authenticationToken: Joi.string().min(16), - labelColor: Joi.string().regex(RGB_COLOR_REGEX), - backgroundColor: Joi.string().regex(RGB_COLOR_REGEX), - foregroundColor: Joi.string().regex(RGB_COLOR_REGEX), + labelColor: Joi.string().regex(RGB_HEX_COLOR_REGEX), + backgroundColor: Joi.string().regex(RGB_HEX_COLOR_REGEX), + foregroundColor: Joi.string().regex(RGB_HEX_COLOR_REGEX), associatedStoreIdentifiers: Joi.array().items(Joi.number()), userInfo: Joi.alternatives(Joi.object().unknown(), Joi.array()), webServiceURL: Joi.string().regex(URL_REGEX),