Socket
Book a DemoInstallSign in
Socket

alpha-stringify

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

alpha-stringify

Serialize anything, and sort keys for equality comparison

latest
Source
npmnpm
Version
1.0.0
Version published
Weekly downloads
0
-100%
Maintainers
1
Weekly downloads
 
Created
Source

alpha-stringify

NPM TypeScript Coverage Status GitHub Stars Twitter Follow

Serialize anything, and sort keys for equality comparison.

Installation

yarn add alpha-stringify
npm install alpha-stringify

Example Usage

import stringify from "alpha-stringify";

const cache = new Map();

function memoizedFunction(x: any) {
  if(cache.has(stringify(x))) {
    return cache.get(stringify(x));
  } else {
    cache.set(stringify(x), x);
  }
}

Supported Types

import stringify from "alpha-stringify";

// Some primitives behave the same as JSON.stringify:

stringify(true);      // true
stringify("test");    // "test"
stringify(null);      // null

// Numbers use the `.toString()` method instead, which helps with Infinity and NaN:

stringify(1);         // 1
stringify(Infinity);  // Infinity
stringify(NaN);       // NaN

// Other types are serialized as they would be written in JavaScript:

stringify(BigInt(9007199254740991));      // BigInt(9007199254740991)
stringify(Symbol("Sym"));                 // Symbol("Sym")
stringify(new Date());                    // new Date(1619932122057)
stringify(/test/);                        // /test/
stringify(new RegExp(/test/));            // /test/
stringify(new Set(["a", "b"]));           // new Set(["a","b"])
stringify(new Map([["a", 1], ["b", 2]])); // new Map([["a",1],["b",2]])

// There are a few exceptions to this rule though:

stringify(new Error("ok"));                 // Error: ok
stringify(new WeakSet([{ a: 1, b: 2 }]));   // [object WeakSet]
stringify(new WeakMap([[{ a: 1 }, "b"]]));  // [object WeakMap]
stringify(new Promise(() => {}));           // [object Promise]

// Arrays are not sorted by default, but can be with the `sortArrays` option:

stringify(["b", "a"]);                        // ["b","a"]
stringify(["b", "a"], { sortArrays: true });  // ["a","b"]

// Objects are sorted by default, but can be disabled with the `sortObjects` option:

stringify({ b: 1, a: 2 });                          // {"a":2,"b":1}
stringify({ b: 1, a: 2 }, { sortObjects: false });  // {"b":1,"a":2}

// Functions and are also supported:

stringify(() => 5);                               // () => 5
stringify(function testFunction() { return 5; }); // function testFunction() { return 5; }
stringify(console.info);                          // function () { [native code] }

// Classes are stringified to their constructor, plus value:

class TestClass {
  constructor(color: string) {
    this.color = color;
  }
  getColor() {
    return this.color.toUpperCase();
  }
}
stringify(new TestClass("red"));
// class TestClass {
//   constructor(color) {
//     this.color = color;
//   }
//   getColor() {
//     return this.color.toUpperCase();
//   }
// }
// '{"color":"red"}'
  

// Other edge cases:

stringify(undefined);   // undefined
stringify(globalThis);  // globalThis
stringify(Math);        // Math

// Circular dependencies are supported:

const x = { a: 1 };
x.b = x;
stringify(x); // {"a":1,"b":[Circular]}

Types

import stringify, { Options } from "alpha-stringify";

function stringify(value: any, options?: Options): string;

type Options = {
  /**
   * Sort object keys. Default: `true`.
   */
  sortObjects?: boolean;
  /**
   * Sort array items. Default: `false`.
   */
  sortArrays?: boolean;
};

Dev DependenciesDavid

  • @bconnorwhite/bob: Bob is a toolkit for TypeScript projects

License license

MIT

Keywords

serialize

FAQs

Package last updated on 02 May 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts