|                                                                                                                                          |  | self.Flatted = (function (exports) {  'use strict';
  function _typeof(o) {    "@babel/helpers - typeof";
    return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {      return typeof o;    } : function (o) {      return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;    }, _typeof(o);  }
  /// <reference types="../types/index.d.ts" />
  // (c) 2020-present Andrea Giammarchi
  var $parse = JSON.parse,    $stringify = JSON.stringify;  var keys = Object.keys;  var Primitive = String; // it could be Number
  var primitive = 'string'; // it could be 'number'
  var ignore = {};  var object = 'object';  var noop = function noop(_, value) {    return value;  };  var primitives = function primitives(value) {    return value instanceof Primitive ? Primitive(value) : value;  };  var Primitives = function Primitives(_, value) {    return _typeof(value) === primitive ? new Primitive(value) : value;  };  var _revive = function revive(input, parsed, output, $) {    var lazy = [];    for (var ke = keys(output), length = ke.length, y = 0; y < length; y++) {      var k = ke[y];      var value = output[k];      if (value instanceof Primitive) {        var tmp = input[value];        if (_typeof(tmp) === object && !parsed.has(tmp)) {          parsed.add(tmp);          output[k] = ignore;          lazy.push({            k: k,            a: [input, parsed, tmp, $]          });        } else output[k] = $.call(output, k, tmp);      } else if (output[k] !== ignore) output[k] = $.call(output, k, value);    }    for (var _length = lazy.length, i = 0; i < _length; i++) {      var _lazy$i = lazy[i],        _k = _lazy$i.k,        a = _lazy$i.a;      output[_k] = $.call(output, _k, _revive.apply(null, a));    }    return output;  };  var set = function set(known, input, value) {    var index = Primitive(input.push(value) - 1);    known.set(value, index);    return index;  };
  /**   * Converts a specialized flatted string into a JS value.   * @param {string} text   * @param {(this: any, key: string, value: any) => any} [reviver]   * @returns {any}   */  var parse = function parse(text, reviver) {    var input = $parse(text, Primitives).map(primitives);    var value = input[0];    var $ = reviver || noop;    var tmp = _typeof(value) === object && value ? _revive(input, new Set(), value, $) : value;    return $.call({      '': tmp    }, '', tmp);  };
  /**   * Converts a JS value into a specialized flatted string.   * @param {any} value   * @param {((this: any, key: string, value: any) => any) | (string | number)[] | null | undefined} [replacer]   * @param {string | number | undefined} [space]   * @returns {string}   */  var stringify = function stringify(value, replacer, space) {    var $ = replacer && _typeof(replacer) === object ? function (k, v) {      return k === '' || -1 < replacer.indexOf(k) ? v : void 0;    } : replacer || noop;    var known = new Map();    var input = [];    var output = [];    var i = +set(known, input, $.call({      '': value    }, '', value));    var firstRun = !i;    while (i < input.length) {      firstRun = true;      output[i] = $stringify(input[i++], replace, space);    }    return '[' + output.join(',') + ']';    function replace(key, value) {      if (firstRun) {        firstRun = !firstRun;        return value;      }      var after = $.call(this, key, value);      switch (_typeof(after)) {        case object:          if (after === null) return after;        case primitive:          return known.get(after) || set(known, input, after);      }      return after;    }  };
  /**   * Converts a generic value into a JSON serializable object without losing recursion.   * @param {any} value   * @returns {any}   */  var toJSON = function toJSON(value) {    return $parse(stringify(value));  };
  /**   * Converts a previously serialized object with recursion into a recursive one.   * @param {any} value   * @returns {any}   */  var fromJSON = function fromJSON(value) {    return parse($stringify(value));  };
  exports.fromJSON = fromJSON;  exports.parse = parse;  exports.stringify = stringify;  exports.toJSON = toJSON;
  return exports;
})({});
 |