create-expo-cljs-app
Version:
Create a react native application with Expo and Shadow-CLJS!
72 lines (63 loc) • 1.59 kB
JavaScript
/**
* 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
*/
;
const nullthrows = require("nullthrows");
const _require = require("@babel/core"),
parseSync = _require.parseSync,
transformFromAstSync = _require.transformFromAstSync;
const _require2 = require("metro-source-map"),
generateFunctionMap = _require2.generateFunctionMap;
function transform(_ref) {
let filename = _ref.filename,
options = _ref.options,
plugins = _ref.plugins,
src = _ref.src;
const OLD_BABEL_ENV = process.env.BABEL_ENV;
process.env.BABEL_ENV = options.dev
? "development"
: process.env.BABEL_ENV || "production";
try {
const babelConfig = {
caller: {
name: "metro",
bundler: "metro",
platform: options.platform
},
ast: true,
babelrc: options.enableBabelRCLookup,
code: false,
highlightCode: true,
filename,
plugins,
sourceType: "module"
};
const sourceAst = parseSync(src, babelConfig);
const _transformFromAstSync = transformFromAstSync(
sourceAst,
src,
babelConfig
),
ast = _transformFromAstSync.ast;
const functionMap = generateFunctionMap(sourceAst, {
filename
});
return {
ast: nullthrows(ast),
functionMap
};
} finally {
if (OLD_BABEL_ENV) {
process.env.BABEL_ENV = OLD_BABEL_ENV;
}
}
}
module.exports = {
transform
};