text: /**
   * Copyright 2004-present Facebook. All Rights Reserved.
   *
   * @emails oncall+ads_integration_management
   * @flow strict-local
   * @format
   */
  
  'use strict';
  
  const MAX_ASCII_CHARACTER = 127;
  
  /**
   * Serializes strings with non-ASCII characters to their Unicode escape
   * sequences (eg. \u2022), to avoid hitting this lint rule:
   * "Source code should only include printable US-ASCII bytes"
   */
  const NonASCIIStringSnapshotSerializer = {
    test(val: mixed): boolean {
      if (typeof val !== 'string') {
        return false;
      }
      for (let i = 0; i < val.length; i++) {
        if (val.charCodeAt(i) > MAX_ASCII_CHARACTER) {
          return true;
        }
      }
      return false;
    },
  
    print: (val: string): string => {
      return (
        '"' +
        val
          .split('')
          .map((char) => {
            const code = char.charCodeAt(0);
            return code > MAX_ASCII_CHARACTER
              ? '\\u' + code.toString(16).padStart(4, '0')
              : char;
          })
          .join('')
          // Keep the same behaviour as Jest's regular string snapshot
          // serialization, which escapes double quotes.
          .replace(/"/g, '\\"') +
        '"'
      );
    },
  };
  
  module.exports = NonASCIIStringSnapshotSerializer;
  