any-serialize
    TypeScript icon, indicating that this package has built-in type declarations

    1.4.12 • Public • Published

    any-serialize

    Serialize / Deserialize any JavaScript objects, as long as you provides how-to. I have already provided Date, RegExp, Set and Function.

    npm version

    This package intentionally has no dependencies, and can be used safely in browser.

    • Can also generate hash from anything, due to ability to serialize anything to String. (See Serialize#hash).
    • Cloning (See Serialize#clone)
    • Deep equality due to your definition (See Serialize#deepEqual)

    Usage

    See /tests.

    Date, RegExp and Function is already serialable via this library by default.

    • Functions are only provided in "write-only mode".
      • To enable "reconstruction", use FullFunctionAdapter. (Which is in principle similar to unsafe eval.)
    • Classes are not. You need to provide at least static fromJSON() and toJSON()
    • You can provide a custom way to serialize, including the forementioned Date, RegExp and Function.
    import { Serialize, FullFunctionAdapter } from 'any-serialize'
     
    class CustomClass1 {
      /**
       * You can turn off prefix with __prefix__ = ''
       */
      // static __prefix__ = ''
      static __key__ = 'unsafeName'
     
      static fromJSON (arg: {a: number, b: number}) {
        const { a, b } = arg
        return new CustomClass1(a, b)
      }
     
      a: number
      b: number
     
      constructor (a: number, b: number) {
        this.a = a
        this.b = b
      }
     
      toJSON () {
        const { a, b } = this
        return { a, b }
      }
    }
     
    cconst ser = new Serialize()
    ser.register(CustomClass1, FullFunctionAdapter)
     
    const r = ser.stringify({
      a: new Date(),
      r: /^hello /gi,
      c: new CustomClass1(1, 3),
      f: (a: number, b: number) => a + b
    })
     
    console.log(r)
    // {"a":{"__Date":"2020-02-18T17:53:37.557Z"},"r":{"__RegExp":{"source":"^hello ","flags":"gi"}},"c":{"__unsafeName":{"a":1,"b":3}},"f":{"__Function":"(a, b) => a + b"}}
     
    const s = ser.parse(r)
    console.log(s)
    // { a: 2020-02-18T17:52:02.555Z,
    //   r: /^hello /gi,
    //   c: CustomClass1 { a: 1, b: 3 },
    //   f: [Function: anonymous] }
    console.log(ser.stringify(s))
    // {"a":{"__Date":"2020-02-18T17:53:37.557Z"},"r":{"__RegExp":{"source":"^hello ","flags":"gi"}},"c":{"__unsafeName":{"a":1,"b":3}},"f":{"__Function":"(a, b) => a + b"}}

    Keywords

    none

    Install

    npm i any-serialize

    DownloadsWeekly Downloads

    30

    Version

    1.4.12

    License

    MIT

    Unpacked Size

    129 kB

    Total Files

    27

    Last publish

    Collaborators

    • patarapolw