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

    2.0.0-alpha.3 • Public • Published

    node-tosource

    Actions Status npm version codecov

    toSource is a super simple function that converts JavaScript objects back to source code.

    Introduction

    Motivation: JSON doesn't support serializing functions, dates, or regular expressions. I wanted a quick and simple way to push trusted data structures with code from Node down to the browser.

    This should make it easier to share code and modules between the server and client.

    Installation

    npm install tosource
    

    Examples

    The following code:

    import toSource from 'tosource';
    
    console.log(
      toSource([
        4,
        5,
        6,
        'hello',
        {
          a: 2,
          b: 3,
          '1': 4,
          if: 5,
          yes: true,
          no: false,
          nan: NaN,
          infinity: Infinity,
          undefined: undefined,
          null: null,
          foo: function (bar) {
            console.log('woo! a is ' + a);
            console.log('and bar is ' + bar);
          },
        },
        /we$/gi,
        new Date('Wed, 09 Aug 1995 00:00:00 GMT'),
      ]),
    );

    Output:

    [ 4,
      5,
      6,
      "hello",
      { 1:4,
        a:2,
        b:3,
        "if":5,
        yes:true,
        no:false,
        nan:NaN,
        infinity:Infinity,
        "undefined":undefined,
        "null":null,
        foo:function (bar) {
            console.log('woo! a is ' + a);
            console.log('and bar is ' + bar);
          } },
      /we$/gi,
      new Date(807926400000) ]
    

    See tosource.test.ts for more examples.

    Supported Types

    • numbers (including NaN, Infinity, and -0)
    • strings
    • Arrays (including sparse arrays)
    • object literals
    • function
    • RegExp instances
    • Date instances
    • Map
    • Set
    • true / false
    • undefined
    • null

    Notes

    • Functions are serialized with func.toString(), no closure properties are serialized
    • Multiple references to the same object become copies
    • Circular references are encoded as {$circularReference:true}

    License

    toSource is open source software under the zlib license.

    Install

    npm i tosource

    DownloadsWeekly Downloads

    61,919

    Version

    2.0.0-alpha.3

    License

    none

    Unpacked Size

    17.6 kB

    Total Files

    12

    Last publish

    Collaborators

    • marcello