UNPKG

rtech-struct

Version:

Rtech Platform Superstruct Entity

59 lines (42 loc) 1.36 kB
const s = require('superstruct') const { Tz } = require('../lib') const { Position } = require('../position') const STREET_SIZE_MIN = 1 const STREET_SIZE_MAX = 128 const ADDITIONAL_STREET_SIZE_MIN = 1 const ADDITIONAL_STREET_SIZE_MAX = 128 const CITY_SIZE_MIN = 1 const CITY_SIZE_MAX = 64 const ZIP_CODE_SIZE_MIN = 1 const ZIP_CODE_SIZE_MAX = 32 const PROVINCE_SIZE_MIN = 1 const PROVINCE_SIZE_MAX = 128 const COUNTRY_SIZE = 2 const ENTITY_TYPE = 'sfu/address' const Address = s.object({ street: s.size(s.string(), STREET_SIZE_MIN, STREET_SIZE_MAX), additional_street: s.optional(s.size(s.string(), ADDITIONAL_STREET_SIZE_MIN, ADDITIONAL_STREET_SIZE_MAX)), city: s.size(s.string(), CITY_SIZE_MIN, CITY_SIZE_MAX), zip_code: s.size(s.string(), ZIP_CODE_SIZE_MIN, ZIP_CODE_SIZE_MAX), province: s.optional(s.size(s.string(), PROVINCE_SIZE_MIN, PROVINCE_SIZE_MAX)), country: s.size(s.string(), COUNTRY_SIZE), timezone_string: Tz, position: Position, type: s.defaulted(s.optional(s.literal(ENTITY_TYPE)), ENTITY_TYPE) }) module.exports = { address: Address, position: Position, STREET_SIZE_MIN, STREET_SIZE_MAX, ADDITIONAL_STREET_SIZE_MIN, ADDITIONAL_STREET_SIZE_MAX, CITY_SIZE_MIN, CITY_SIZE_MAX, ZIP_CODE_SIZE_MIN, ZIP_CODE_SIZE_MAX, PROVINCE_SIZE_MIN, PROVINCE_SIZE_MAX, COUNTRY_SIZE, ENTITY_TYPE }