mirror of
https://github.com/marcogll/passkit-generator.git
synced 2026-03-16 02:25:32 +00:00
75 lines
2.0 KiB
TypeScript
75 lines
2.0 KiB
TypeScript
import Joi from "joi";
|
|
import { Semantics } from "./Semantics";
|
|
|
|
/**
|
|
* @see https://developer.apple.com/documentation/walletpasses/passfieldcontent
|
|
*/
|
|
|
|
export interface Field {
|
|
attributedValue?: string | number | Date;
|
|
changeMessage?: string;
|
|
dataDetectorTypes?: string[];
|
|
label?: string;
|
|
textAlignment?: string;
|
|
key: string;
|
|
value: string | number | Date;
|
|
semantics?: Semantics;
|
|
dateStyle?: string;
|
|
ignoresTimeZone?: boolean;
|
|
isRelative?: boolean;
|
|
timeStyle?: string;
|
|
currencyCode?: string;
|
|
numberStyle?: string;
|
|
}
|
|
|
|
export const Field = Joi.object<Field>().keys({
|
|
attributedValue: Joi.alternatives(
|
|
Joi.string().allow(""),
|
|
Joi.number(),
|
|
Joi.date().iso(),
|
|
),
|
|
changeMessage: Joi.string(),
|
|
dataDetectorTypes: Joi.array().items(
|
|
Joi.string().regex(
|
|
/(PKDataDetectorTypePhoneNumber|PKDataDetectorTypeLink|PKDataDetectorTypeAddress|PKDataDetectorTypeCalendarEvent)/,
|
|
"dataDetectorType",
|
|
),
|
|
),
|
|
label: Joi.string().allow(""),
|
|
textAlignment: Joi.string().regex(
|
|
/(PKTextAlignmentLeft|PKTextAlignmentCenter|PKTextAlignmentRight|PKTextAlignmentNatural)/,
|
|
"graphic-alignment",
|
|
),
|
|
key: Joi.string().required(),
|
|
value: Joi.alternatives(
|
|
Joi.string().allow(""),
|
|
Joi.number(),
|
|
Joi.date().iso(),
|
|
).required(),
|
|
semantics: Semantics,
|
|
// date fields formatters, all optionals
|
|
dateStyle: Joi.string().regex(
|
|
/(PKDateStyleNone|PKDateStyleShort|PKDateStyleMedium|PKDateStyleLong|PKDateStyleFull)/,
|
|
"date style",
|
|
),
|
|
ignoresTimeZone: Joi.boolean(),
|
|
isRelative: Joi.boolean(),
|
|
timeStyle: Joi.string().regex(
|
|
/(PKDateStyleNone|PKDateStyleShort|PKDateStyleMedium|PKDateStyleLong|PKDateStyleFull)/,
|
|
"date style",
|
|
),
|
|
// number fields formatters, all optionals
|
|
currencyCode: Joi.string().when("value", {
|
|
is: Joi.number(),
|
|
otherwise: Joi.string().forbidden(),
|
|
}),
|
|
numberStyle: Joi.string()
|
|
.regex(
|
|
/(PKNumberStyleDecimal|PKNumberStylePercent|PKNumberStyleScientific|PKNumberStyleSpellOut)/,
|
|
)
|
|
.when("value", {
|
|
is: Joi.number(),
|
|
otherwise: Joi.string().forbidden(),
|
|
}),
|
|
});
|