/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*
* @format
*/
"use strict";
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function() {
var self = this,
args = arguments;
return new Promise(function(resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
const TerminalReporter = require("metro/src/lib/TerminalReporter");
const blacklist = require("./blacklist");
const getMaxWorkers = require("metro/src/lib/getMaxWorkers");
const os = require("os");
const path = require("path");
const _require = require("./defaults"),
providesModuleNodeModules = _require.providesModuleNodeModules,
assetExts = _require.assetExts,
sourceExts = _require.sourceExts,
platforms = _require.platforms,
DEFAULT_METRO_MINIFIER_PATH = _require.DEFAULT_METRO_MINIFIER_PATH,
defaultCreateModuleIdFactory = _require.defaultCreateModuleIdFactory;
const _require2 = require("metro-cache"),
FileStore = _require2.FileStore;
const _require3 = require("metro-core"),
Terminal = _require3.Terminal;
const getDefaultValues = projectRoot => ({
resolver: {
allowPnp: true,
assetExts,
platforms,
sourceExts,
providesModuleNodeModules: providesModuleNodeModules.slice(),
resolverMainFields: ["browser", "main"],
extraNodeModules: {},
resolveRequest: null,
hasteImplModulePath: undefined,
blacklistRE: blacklist(),
useWatchman: true,
virtualMapper: file => [file]
},
serializer: {
polyfillModuleNames: [],
getRunModuleStatement: moduleId => `__r(${JSON.stringify(moduleId)});`,
getPolyfills: () => [],
postProcessBundleSourcemap: _ref => {
let code = _ref.code,
map = _ref.map,
outFileName = _ref.outFileName;
return {
code,
map
};
},
getModulesRunBeforeMainModule: () => [],
processModuleFilter: module => true,
createModuleIdFactory: defaultCreateModuleIdFactory,
experimentalSerializerHook: () => {},
customSerializer: null
},
server: {
useGlobalHotkey: true,
port: 8080,
enableVisualizer: false,
enhanceMiddleware: middleware => middleware
},
transformer: {
assetPlugins: [],
asyncRequireModulePath: "metro/src/lib/bundle-modules/asyncRequire",
assetRegistryPath: "missing-asset-registry-path",
babelTransformerPath: "metro-babel-transformer",
dynamicDepsInPackages: "throwAtRuntime",
enableBabelRCLookup: true,
enableBabelRuntime: true,
getTransformOptions: (function() {
var _ref2 = _asyncToGenerator(function*() {
return {
transform: {
experimentalImportSupport: false,
inlineRequires: false
},
preloadedModules: false,
ramGroups: []
};
});
return function getTransformOptions() {
return _ref2.apply(this, arguments);
};
})(),
minifierConfig: {
mangle: {
toplevel: false
},
output: {
ascii_only: true,
quote_style: 3,
wrap_iife: true
},
sourceMap: {
includeSources: false
},
toplevel: false,
compress: {
// reduce_funcs inlines single-use functions, which cause perf regressions.
reduce_funcs: false
}
},
minifierPath: DEFAULT_METRO_MINIFIER_PATH,
optimizationSizeLimit: 150 * 1024,
// 150 KiB.
postMinifyProcess: x => x,
transformVariants: {
default: {}
},
workerPath: "metro/src/DeltaBundler/Worker",
publicPath: "/assets"
},
cacheStores: [
new FileStore({
root: path.join(os.tmpdir(), "metro-cache")
})
],
cacheVersion: "1.0",
// We assume the default project path is two levels up from
// node_modules/metro/
projectRoot: projectRoot || path.resolve(__dirname, "../../.."),
stickyWorkers: true,
watchFolders: [],
transformerPath: require.resolve("metro/src/JSTransformer/worker.js"),
maxWorkers: getMaxWorkers(),
resetCache: false,
reporter: new TerminalReporter(new Terminal(process.stdout)),
visualizer: {
presets: []
}
});
function getDefaultConfig(_x) {
return _getDefaultConfig.apply(this, arguments);
}
function _getDefaultConfig() {
_getDefaultConfig = _asyncToGenerator(function*(rootPath) {
// We can add more logic here to get a sensible default configuration, for
// now we just return a stub.
return getDefaultValues(rootPath);
});
return _getDefaultConfig.apply(this, arguments);
}
module.exports = getDefaultConfig;
module.exports.getDefaultValues = getDefaultValues;