/**
 * Copyright (c) 2013-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */

'use strict';

const babelRegisterOnly = require('metro-bundler/src/babelRegisterOnly');
const escapeRegExp = require('lodash/escapeRegExp');
const path = require('path');

const BABEL_ENABLED_PATHS = [
  'local-cli',
];

/**
 * We use absolute paths for matching only the top-level folders reliably. For
 * example, we would not want to match some deeply nested forder that happens to
 * have the same name as one of `BABEL_ENABLED_PATHS`.
 */
function buildRegExps(basePath, dirPaths) {
  return dirPaths.map(folderPath =>
    // Babel `only` option works with forward slashes in the RegExp so replace
    // backslashes for Windows.
    new RegExp(`^${escapeRegExp(path.resolve(basePath, folderPath).replace(/\\/g, '/'))}`)
  );
}

function getOnlyList() {
  return buildRegExps(__dirname, BABEL_ENABLED_PATHS);
}

/**
 * Centralized place to register all the directories that need a Babel
 * transformation before being fed to Node.js. Notably, this is necessary to
 * support Flow type annotations.
 */
function setupBabel() {
  babelRegisterOnly(getOnlyList());
}

setupBabel.buildRegExps = buildRegExps;
setupBabel.getOnlyList = getOnlyList;
module.exports = setupBabel;

@@ -505,19 +505,16 @@
 ATHS = %5B
-%0A  
 'local-c
@@ -520,10 +520,8 @@
 cli'
-,%0A
 %5D;%0A%0A
@@ -809,16 +809,21 @@
 ths.map(
+%0A    
 folderPa
@@ -828,16 +828,18 @@
 Path =%3E%0A
+  
     // B
@@ -913,16 +913,18 @@
 ace%0A    
+  
 // backs
@@ -951,36 +951,300 @@
     
-new RegExp(%60%5E$%7BescapeRegExp(
+  folderPath instanceof RegExp%0A        ? new RegExp(%0A            %60%5E$%7BescapeRegExp(%0A              path.resolve(basePath, '.').replace(/%5C%5C/g, '/'),%0A            )%7D/$%7BfolderPath.source%7D%60,%0A            folderPath.flags,%0A          )%0A        : new RegExp(%0A            %60%5E$%7BescapeRegExp(%0A              
 path
@@ -1297,12 +1297,39 @@
 '/')
-)%7D%60)
+,%0A            )%7D%60,%0A          ),
 %0A  )

Allow to pass regular expressions to `buildRegExps`