Added support to relevantDate renaming to date

This commit is contained in:
Alexander Cerutti
2025-09-18 14:11:57 +02:00
parent 756f301e4a
commit 95983ffc84
2 changed files with 36 additions and 7 deletions

View File

@@ -1010,6 +1010,11 @@ export default class PKPass extends Bundle {
* Allows setting a series of relevancy intervals or
* relevancy entries for the pass.
*
* Please note that `RelevantDate[]` `relevantDate` property was renamed
* in "date" since iOS 26. Since retro-compatibility is not ensured,
* this methods takes `date`, and fallbacks to `relevantDate`, and use
* the first value found for both properties.
*
* @param {Schemas.RelevantDate[] | null} relevancyEntries
* @returns {void}
*/
@@ -1031,10 +1036,13 @@ export default class PKPass extends Bundle {
Schemas.validate(Schemas.RelevantDate, entry);
if (isRelevantEntry(entry)) {
const date = Utils.processDate(
new Date(entry.date || entry.relevantDate),
);
acc.push({
relevantDate: Utils.processDate(
new Date(entry.relevantDate),
),
relevantDate: date,
date,
});
return acc;
@@ -1193,5 +1201,8 @@ function validateJSONBuffer(
function isRelevantEntry(
entry: Schemas.RelevantDate,
): entry is Schemas.RelevancyEntry {
return Object.prototype.hasOwnProperty.call(entry, "relevantDate");
return (
Object.prototype.hasOwnProperty.call(entry, "relevantDate") ||
Object.prototype.hasOwnProperty.call(entry, "date")
);
}

View File

@@ -45,9 +45,19 @@ export interface RelevancyInterval {
endDate: string | Date;
}
export interface RelevancyEntry {
relevantDate: string | Date;
}
/**
* @iOSVersion 18 => "relevantDate"
* @iOSVersion 26 => "date"
*/
export type RelevancyEntry =
| {
date: string | Date;
relevantDate?: string | Date;
}
| {
date?: string | Date;
relevantDate: string | Date;
};
/**
* @iOSVersion 18
@@ -73,6 +83,14 @@ export const RelevantDate = Joi.alternatives(
).required(),
}),
Joi.object<RelevancyEntry>().keys({
/**
* Since iOS 26
*/
date: Joi.alternatives(Joi.string().isoDate(), Joi.date().iso()),
/**
* Since iOS 18, then was renamed in
* 'date' in iOS 26 (what a breaking change)
*/
relevantDate: Joi.alternatives(
Joi.string().isoDate(),
Joi.date().iso(),