UNPKG

gpx-builder

Version:
88 lines (75 loc) 1.9 kB
import { Extensions, Meta } from '../../../types'; import Bounds from './Bounds'; import Copyright from './Copyright'; import Link from './Link'; import Person from './Person'; export default class Metadata { private name: string | null; private desc: string | null; private author: Person | null; private copyright: Copyright | null; private link: Link | null; private time: Date | null; private keywords: string | null; private bounds: Bounds | null; private extensions: Extensions | null; /** * @see http://www.topografix.com/gpx/1/1/#type_metadataType */ // eslint-disable-next-line public constructor({ name, desc, author, copyright, link, time, keywords, bounds, extensions, }: { author?: Person; bounds?: Bounds; copyright?: Copyright; desc?: string; extensions?: Extensions; keywords?: string; link?: Link; name?: string; time?: Date; }) { this.name = name || null; this.desc = desc || null; this.author = author || null; this.copyright = copyright || null; this.link = link || null; this.time = time || null; this.keywords = keywords || null; this.bounds = bounds || null; this.extensions = extensions || null; } public toObject(): Meta { const { name, desc, author, copyright, link, time, keywords, bounds, extensions, } = this; return { ...(name ? { name } : {}), ...(desc ? { desc } : {}), ...(author ? { author: author.toObject() } : {}), ...(copyright ? { copyright: copyright.toObject() } : {}), ...(link ? { link: link.toObject() } : {}), ...(time ? { time } : {}), ...(keywords ? { keywords } : {}), ...(bounds ? { bounds: bounds.toObject() } : {}), ...(extensions ? { extensions } : {}), }; } }