| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | 'use strict';Object.defineProperty(exports, '__esModule', {  value: true});exports.printIteratorEntries = printIteratorEntries;exports.printIteratorValues = printIteratorValues;exports.printListItems = printListItems;exports.printObjectProperties = printObjectProperties;/** * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */const getKeysOfEnumerableProperties = (object, compareKeys) => {  const keys = Object.keys(object).sort(compareKeys);  if (Object.getOwnPropertySymbols) {    Object.getOwnPropertySymbols(object).forEach(symbol => {      if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {        keys.push(symbol);      }    });  }  return keys;};/** * Return entries (for example, of a map) * with spacing, indentation, and comma * without surrounding punctuation (for example, braces) */function printIteratorEntries(  iterator,  config,  indentation,  depth,  refs,  printer, // Too bad, so sad that separator for ECMAScript Map has been ' => '  // What a distracting diff if you change a data structure to/from  // ECMAScript Object or Immutable.Map/OrderedMap which use the default.  separator = ': ') {  let result = '';  let current = iterator.next();  if (!current.done) {    result += config.spacingOuter;    const indentationNext = indentation + config.indent;    while (!current.done) {      const name = printer(        current.value[0],        config,        indentationNext,        depth,        refs      );      const value = printer(        current.value[1],        config,        indentationNext,        depth,        refs      );      result += indentationNext + name + separator + value;      current = iterator.next();      if (!current.done) {        result += ',' + config.spacingInner;      } else if (!config.min) {        result += ',';      }    }    result += config.spacingOuter + indentation;  }  return result;}/** * Return values (for example, of a set) * with spacing, indentation, and comma * without surrounding punctuation (braces or brackets) */function printIteratorValues(  iterator,  config,  indentation,  depth,  refs,  printer) {  let result = '';  let current = iterator.next();  if (!current.done) {    result += config.spacingOuter;    const indentationNext = indentation + config.indent;    while (!current.done) {      result +=        indentationNext +        printer(current.value, config, indentationNext, depth, refs);      current = iterator.next();      if (!current.done) {        result += ',' + config.spacingInner;      } else if (!config.min) {        result += ',';      }    }    result += config.spacingOuter + indentation;  }  return result;}/** * Return items (for example, of an array) * with spacing, indentation, and comma * without surrounding punctuation (for example, brackets) **/function printListItems(list, config, indentation, depth, refs, printer) {  let result = '';  if (list.length) {    result += config.spacingOuter;    const indentationNext = indentation + config.indent;    for (let i = 0; i < list.length; i++) {      result += indentationNext;      if (i in list) {        result += printer(list[i], config, indentationNext, depth, refs);      }      if (i < list.length - 1) {        result += ',' + config.spacingInner;      } else if (!config.min) {        result += ',';      }    }    result += config.spacingOuter + indentation;  }  return result;}/** * Return properties of an object * with spacing, indentation, and comma * without surrounding punctuation (for example, braces) */function printObjectProperties(val, config, indentation, depth, refs, printer) {  let result = '';  const keys = getKeysOfEnumerableProperties(val, config.compareKeys);  if (keys.length) {    result += config.spacingOuter;    const indentationNext = indentation + config.indent;    for (let i = 0; i < keys.length; i++) {      const key = keys[i];      const name = printer(key, config, indentationNext, depth, refs);      const value = printer(val[key], config, indentationNext, depth, refs);      result += indentationNext + name + ': ' + value;      if (i < keys.length - 1) {        result += ',' + config.spacingInner;      } else if (!config.min) {        result += ',';      }    }    result += config.spacingOuter + indentation;  }  return result;}
 |