stringify-without-comments.ts 764 Bytes
/*
  Copyright 2021 Google LLC

  Use of this source code is governed by an MIT-style
  license that can be found in the LICENSE file or at
  https://opensource.org/licenses/MIT.
*/

import objectStringify from 'stringify-object';
import stripComments from 'strip-comments';

export function stringifyWithoutComments(obj: {[key: string]: any}): string {
  return objectStringify(obj, {
    // See https://github.com/yeoman/stringify-object#transformobject-property-originalresult
    transform: (_obj: {[key: string]: any}, _prop, str) => {
      if (typeof _prop !== 'symbol' && typeof _obj[_prop] === 'function') {
        // Can't typify correctly stripComments
        return stripComments(str); // eslint-disable-line
      }
      return str;
    },
  });
}