Move type calculation to the worker

Reviewed By: davidaurelio

Differential Revision: D7877465

fbshipit-source-id: b5b444e383363ae3b80f5fe099d99203435b8d69
This commit is contained in:
Rafael Oleza 2018-05-11 15:05:00 -07:00 committed by Facebook Github Bot
parent 192e1080ab
commit 94f531ad79
4 changed files with 22 additions and 19 deletions

View File

@ -13,7 +13,7 @@
import type {TransformResultDependency} from '../ModuleGraph/types.flow';
import type {MetroSourceMapSegmentTuple} from 'metro-source-map';
export type DependencyType = 'module' | 'script' | 'asset';
export type DependencyType = string;
export type Dependency = {|
absolutePath: string,

View File

@ -42,6 +42,7 @@ export type TransformedCode = {
code: string,
dependencies: $ReadOnlyArray<TransformResultDependency>,
map: Array<MetroSourceMapSegmentTuple>,
type: string,
};
export type TransformArgs<ExtraOptions: {}> = {|
@ -140,6 +141,7 @@ async function transformCode(
};
let data;
let type = 'module';
if (sourceCode == null) {
data = fs.readFileSync(filename);
@ -171,7 +173,7 @@ async function transformCode(
}
return {
result: {dependencies: [], code, map},
result: {dependencies: [], code, map, type},
sha1,
transformFileStartLogEntry,
transformFileEndLogEntry,
@ -193,13 +195,18 @@ async function transformCode(
src: sourceCode,
};
const transformResult = isAsset(filename, assetExts)
? await assetTransformer.transform(
transformerArgs,
assetRegistryPath,
options.assetDataPlugins,
)
: await transformer.transform(transformerArgs);
if (isAsset(filename, assetExts)) {
type = 'asset';
}
const transformResult =
type === 'asset'
? await assetTransformer.transform(
transformerArgs,
assetRegistryPath,
options.assetDataPlugins,
)
: await transformer.transform(transformerArgs);
// Transformers can ouptut null ASTs (if they ignore the file). In that case
// we need to parse the module source code to get their AST.
@ -220,6 +227,8 @@ async function transformCode(
if (isScript) {
dependencies = [];
wrappedAst = JsFileWrapping.wrapPolyfill(ast);
type = 'script';
} else {
let dependencyMapName;
try {
@ -280,7 +289,7 @@ async function transformCode(
}
return {
result: {dependencies, code, map},
result: {dependencies, code, map, type},
sha1,
transformFileStartLogEntry,
transformFileEndLogEntry,

View File

@ -109,20 +109,12 @@ async function getTransformFn(
),
});
let type = 'module';
if (module.isAsset()) {
type = 'asset';
}
if (module.isPolyfill()) {
type = 'script';
}
// eslint-disable-next-line lint/flow-no-fixme
// $FlowFixMe: "defineProperty" with a getter is buggy in flow.
const output = {
code: result.code,
map: result.map,
type,
type: result.type,
};
// Lazily access source code; if not needed, don't read the file.

View File

@ -27,6 +27,7 @@ type ReadResult = {
+dependencies: $ReadOnlyArray<TransformResultDependency>,
+map: Array<MetroSourceMapSegmentTuple>,
+source: string,
+type: string,
};
export type TransformCode = (
@ -91,6 +92,7 @@ class Module {
code: result.code,
dependencies: result.dependencies,
map: result.map,
type: result.type,
get source() {
return module._readSourceCode();
},