@forcloud/date-json
TypeScript icon, indicating that this package has built-in type declarations

1.0.6 • Public • Published

DateJson

A lightweight (794 bytes) library to add Date support to JSON APIs.

Enables APIs to send database records that contain dates without having to manually transform them.

import { DateJson } from "@forcloud/date-json"

const json = DateJson.toJSON({ createdAt: new Date() })
// --> { createdAt: { $date: 1519211811670 } }

const jsonWithDates = DateJson.fromJSON(json)
// --> { createdAt: anInstanceOfADateObject }

Features

  • Lightweight: 795 bytes
  • JSON: Transform to/from JSON
  • String: Transform to/from string (stringify/parse)
  • TypeScript: Keeps type integrity through transformations

TypeScript

Keeps type integrity during encode/decode enabling type safety in API calls.

const json = DateJson.toJSON({ createdAt: new Date() })
// --> { createdAt: { $date: 1519211811670 } }
type MyJson = typeof json
// --> type: { createdAt: { $date: number }}

const jsonWithDates = DateJson.fromJSON(json)
// --> { createdAt: anInstanceOfADateObject }
type MyJsonWithDates = typeof jsonWithDates
// --> type: { createdAt: Date }

No $date Key Allowed

The key $date is prohibited in toJSON like in DateJson.toJSON({ $date: 'today' }). This throws the error Object with key $date is invalid.

The design is intentional and is there to prevent confusion. Am I looking at a DateJson object or a plain JSON object with $date in it?

/@forcloud/date-json/

    Package Sidebar

    Install

    npm i @forcloud/date-json

    Weekly Downloads

    1

    Version

    1.0.6

    License

    MIT

    Unpacked Size

    13 kB

    Total Files

    9

    Last publish

    Collaborators

    • thesunny