shelving
Version:
Toolkit for using data in JavaScript.
23 lines (22 loc) • 1.02 kB
JavaScript
import { COUNTRY } from "./CountrySchema.js";
import { DataSchema } from "./DataSchema.js";
import { NULLABLE } from "./NullableSchema.js";
import { StringSchema } from "./StringSchema.js";
const ADDRESS_PROPS = {
address1: new StringSchema({ title: "Address 1", max: 60, min: 1 }),
address2: new StringSchema({ title: "Address 2", max: 60, min: 0 }),
city: new StringSchema({ title: "City", min: 1, max: 60 }),
state: new StringSchema({ title: "State", min: 1, max: 60 }),
postcode: new StringSchema({ title: "Postcode", min: 1, max: 12, case: "upper" }),
country: COUNTRY,
};
/** Schema that validates a postal address. */
export class AddressSchema extends DataSchema {
constructor({ one = "address", title = "Address", ...options } = {}) {
super({ one, title, props: ADDRESS_PROPS, ...options });
}
}
/** Valid postal address data. */
export const ADDRESS = new AddressSchema({});
/** Valid postal address data, or `null` */
export const NULLABLE_ADDRESS = NULLABLE(ADDRESS);