HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/shop.komma.nl/node_modules/graphql/jsutils/dedent.js.flow
// @flow strict

/**
 * An ES6 string tag that fixes indentation. Also removes leading newlines
 * and trailing spaces and tabs, but keeps trailing newlines.
 *
 * Example usage:
 * const str = dedent`
 *   {
 *     test
 *   }
 * `;
 * str === "{\n  test\n}\n";
 */
export default function dedent(
  strings: $ReadOnlyArray<string>,
  ...values: $ReadOnlyArray<string>
): string {
  let str = '';

  for (let i = 0; i < strings.length; ++i) {
    str += strings[i];
    if (i < values.length) {
      str += values[i]; // interpolation
    }
  }

  const trimmedStr = str
    .replace(/^\n*/m, '') //  remove leading newline
    .replace(/[ \t]*$/, ''); // remove trailing spaces and tabs

  // fixes indentation by removing leading spaces and tabs from each line
  let indent = '';
  for (const char of trimmedStr) {
    if (char !== ' ' && char !== '\t') {
      break;
    }
    indent += char;
  }
  return trimmedStr.replace(RegExp('^' + indent, 'mg'), ''); // remove indent
}