import stringify = require('json-stable-stringify');

const obj = { c: 8, b: [{z: 6, y: 5, x: 4}, 7], a: 3 };

{
  console.log(stringify(obj));
}

{
  // Second arg can be a stringify.Comparator function.
  const s: string = stringify(obj, (a: stringify.Element, b: stringify.Element): number => a.key < b.key ? 1 : -1);
  console.log(s);
}

{
  // Can specify Comparator in an Options object.
  function 
(a: stringify.Element, b: stringify.Element): number {
    return a.value < b.value ? 1 : -1;
  }
  const opts: stringify.Options = { cmp: reverse };
  const s: string = stringify(obj, opts);
  console.log(s);
}

{
  // Space can be a string.
  const s: string = stringify(obj, { space: '  ' });
  console.log(s);
}

{
  // Space can be an integer.
  const s: string = stringify(obj, { space: 2 });
  console.log(s);
}

{
  // The replacer option can remove or modify values.
  function removeStrings(key: string, value: any): any {
    if (typeof value === "string") {
      return undefined;
    }
    return value;
  }
  const s: string = stringify(obj, { replacer: removeStrings });
  console.log(s);
}

reverse