diff --git a/src/PKPass.ts b/src/PKPass.ts index b7e2b09..2e2432a 100644 --- a/src/PKPass.ts +++ b/src/PKPass.ts @@ -5,7 +5,7 @@ import * as Signature from "./Signature"; import * as Strings from "./StringsUtils"; import { getModelFolderContents } from "./parser"; import { Stream } from "stream"; -import { isValidRGB, processDate } from "./utils"; +import { processDate } from "./utils"; /** Exporting for tests specs */ export const propsSymbol = Symbol("props"); @@ -516,30 +516,6 @@ export default class PKPass extends Bundle { ) { const fileNames = Object.keys(this[filesSymbol]); - /** - * Filtering colors props that have an - * invalid RGB value - */ - - const passColors = [ - "backgroundColor", - "foregroundColor", - "labelColor", - ] as Array; - - for (let i = 0; i < passColors.length; i++) { - const colorProperty = passColors[i]; - const colorInProps = this[propsSymbol][colorProperty]; - - if (colorInProps && !isValidRGB(colorInProps)) { - console.warn( - `'${colorProperty}' property has been removed from pass.json as it has not a valid RGB-string value.`, - ); - - delete this[propsSymbol][colorProperty]; - } - } - const passJson = Buffer.from(JSON.stringify(this[propsSymbol])); super.addBuffer("pass.json", passJson); diff --git a/src/schemas/index.ts b/src/schemas/index.ts index 78d60dd..a36fbc6 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -14,11 +14,13 @@ import { Barcode } from "./Barcodes"; import { Location } from "./Location"; import { Beacon } from "./Beacons"; import { NFC } from "./NFC"; -import { Field } from "./PassFieldContent"; import { PassFields, TransitType } from "./PassFields"; import { Semantics } from "./SemanticTags"; import { CertificatesSchema } from "./Certificates"; +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 interface FileBuffers { [key: string]: Buffer; } @@ -128,10 +130,10 @@ export const OverridablePassProps = Joi.object({ groupingIdentifier: Joi.string(), suppressStripShine: Joi.boolean(), maxDistance: Joi.number().positive(), - labelColor: Joi.string().min(10).max(16), authenticationToken: Joi.string().min(16), - backgroundColor: Joi.string().min(10).max(16), - foregroundColor: Joi.string().min(10).max(16), + labelColor: Joi.string().regex(RGB_COLOR_REGEX), + backgroundColor: Joi.string().regex(RGB_COLOR_REGEX), + foregroundColor: Joi.string().regex(RGB_COLOR_REGEX), associatedStoreIdentifiers: Joi.array().items(Joi.number()), userInfo: Joi.alternatives(Joi.object().unknown(), Joi.array()), // parsing url as set of words and nums followed by dots, optional port and any possible path after