| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | 'use strict';const path = require('path');const win32 = process.platform === 'win32';const {  REGEX_BACKSLASH,  REGEX_REMOVE_BACKSLASH,  REGEX_SPECIAL_CHARS,  REGEX_SPECIAL_CHARS_GLOBAL} = require('./constants');exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');exports.removeBackslashes = str => {  return str.replace(REGEX_REMOVE_BACKSLASH, match => {    return match === '\\' ? '' : match;  });};exports.supportsLookbehinds = () => {  const segs = process.version.slice(1).split('.').map(Number);  if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {    return true;  }  return false;};exports.isWindows = options => {  if (options && typeof options.windows === 'boolean') {    return options.windows;  }  return win32 === true || path.sep === '\\';};exports.escapeLast = (input, char, lastIdx) => {  const idx = input.lastIndexOf(char, lastIdx);  if (idx === -1) return input;  if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1);  return `${input.slice(0, idx)}\\${input.slice(idx)}`;};exports.removePrefix = (input, state = {}) => {  let output = input;  if (output.startsWith('./')) {    output = output.slice(2);    state.prefix = './';  }  return output;};exports.wrapOutput = (input, state = {}, options = {}) => {  const prepend = options.contains ? '' : '^';  const append = options.contains ? '' : '$';  let output = `${prepend}(?:${input})${append}`;  if (state.negated === true) {    output = `(?:^(?!${output}).*$)`;  }  return output;};
 |