mirror of https://github.com/status-im/metro.git
Remove prepack bundle functionality
Reviewed By: davidaurelio Differential Revision: D4138495 fbshipit-source-id: 52793fc1a8ef8b2fc461156607c360f34c4cb362
This commit is contained in:
parent
403d4ed721
commit
6212c223ec
|
@ -1,149 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-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 fs = require('fs');
|
||||
|
||||
class PrepackBundle {
|
||||
constructor(sourceMapUrl) {
|
||||
this._finalized = false;
|
||||
this._moduleIds = Object.create(null);
|
||||
this._modules = Object.create(null);
|
||||
this._eagerModules = [];
|
||||
this._mainModule = null;
|
||||
this._assets = [];
|
||||
this._sourceMapUrl = sourceMapUrl;
|
||||
}
|
||||
|
||||
addModule(id, module, deps, isPolyfill) {
|
||||
this._modules[module.sourcePath] = { module, deps };
|
||||
this._moduleIds[id] = module.sourcePath;
|
||||
if (isPolyfill) {
|
||||
this._eagerModules.push(id);
|
||||
}
|
||||
}
|
||||
|
||||
addAsset(asset) {
|
||||
this._assets.push(asset);
|
||||
}
|
||||
|
||||
// Synchronously load a file path.
|
||||
_loadFilename(path) {
|
||||
const module = this._modules[path];
|
||||
if (!module) {
|
||||
throw new Error('Could not find file "' + path + '" in preloaded files.');
|
||||
}
|
||||
return module.module.code;
|
||||
}
|
||||
|
||||
// Synchronously resolve a relative require from a parent module.
|
||||
_resolveFilename(parentPath, relativePath) {
|
||||
if (!parentPath) {
|
||||
const resolvedPath = this._moduleIds[relativePath];
|
||||
if (!resolvedPath) {
|
||||
throw new Error('Could not resolve "' + relativePath + '".');
|
||||
}
|
||||
return resolvedPath;
|
||||
}
|
||||
const deps = this._modules[parentPath].deps;
|
||||
const resolvedPath = deps[relativePath];
|
||||
if (!resolvedPath) {
|
||||
throw new Error(
|
||||
'Could not resolve "' + relativePath + '" from "' + parentPath + '".'
|
||||
);
|
||||
}
|
||||
return resolvedPath;
|
||||
}
|
||||
|
||||
build(options) {
|
||||
var prepack = require('prepack');
|
||||
|
||||
var batchedBridgeConfig = (options && options.batchedBridgeConfig) || null;
|
||||
if (typeof batchedBridgeConfig === 'string') {
|
||||
batchedBridgeConfig = JSON.parse(
|
||||
fs.readFileSync(batchedBridgeConfig, 'utf-8')
|
||||
);
|
||||
}
|
||||
|
||||
var options = {
|
||||
batchedBridgeConfig: batchedBridgeConfig,
|
||||
environment: 'react-native',
|
||||
resolveFilename: this._resolveFilename.bind(this),
|
||||
loadFilename: this._loadFilename.bind(this),
|
||||
eagerModules: this._eagerModules
|
||||
};
|
||||
|
||||
return prepack.compileModule(this._mainModule, options);
|
||||
}
|
||||
|
||||
finalize(options) {
|
||||
options = options || {};
|
||||
if (options.runMainModule) {
|
||||
options.runBeforeMainModule.forEach(this._addRequireCall, this);
|
||||
this._mainModule = options.mainModuleId;
|
||||
}
|
||||
|
||||
Object.freeze(this._moduleIds);
|
||||
Object.freeze(this._modules);
|
||||
Object.freeze(this._assets);
|
||||
Object.freeze(this._eagerModules);
|
||||
this._finalized = true;
|
||||
}
|
||||
|
||||
_addRequireCall(moduleId) {
|
||||
this._eagerModules.push(moduleId);
|
||||
}
|
||||
|
||||
_assertFinalized() {
|
||||
if (!this._finalized) {
|
||||
throw new Error('Bundle needs to be finalized before getting any source');
|
||||
}
|
||||
}
|
||||
|
||||
getAssets() {
|
||||
return this._assets;
|
||||
}
|
||||
|
||||
toJSON() {
|
||||
if (!this._finalized) {
|
||||
throw new Error('Cannot serialize bundle unless finalized');
|
||||
}
|
||||
|
||||
return {
|
||||
modules: this._modules,
|
||||
moduleIds: this._moduleIds,
|
||||
assets: this._assets,
|
||||
sourceMapUrl: this._sourceMapUrl,
|
||||
mainModule: this._mainModule,
|
||||
eagerModules: this._eagerModules,
|
||||
};
|
||||
}
|
||||
|
||||
static fromJSON(json) {
|
||||
const bundle = new PrepackBundle(json.sourceMapUrl);
|
||||
bundle._assets = json.assets;
|
||||
bundle._moduleIds = json.moduleIds;
|
||||
bundle._modules = json.modules;
|
||||
bundle._sourceMapUrl = json.sourceMapUrl;
|
||||
|
||||
bundle._eagerModules = json.eagerModules;
|
||||
bundle._mainModule = json.mainModule;
|
||||
|
||||
Object.freeze(bundle._moduleIds);
|
||||
Object.freeze(bundle._modules);
|
||||
Object.freeze(bundle._assets);
|
||||
Object.freeze(bundle._eagerModules);
|
||||
|
||||
bundle._finalized = true;
|
||||
|
||||
return bundle;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PrepackBundle;
|
|
@ -22,7 +22,6 @@ jest
|
|||
.mock('../../lib/declareOpts')
|
||||
.mock('../../Resolver')
|
||||
.mock('../Bundle')
|
||||
.mock('../PrepackBundle')
|
||||
.mock('../HMRBundle')
|
||||
.mock('../../Logger')
|
||||
.mock('../../lib/declareOpts');
|
||||
|
|
|
@ -18,7 +18,6 @@ const Transformer = require('../JSTransformer');
|
|||
const Resolver = require('../Resolver');
|
||||
const Bundle = require('./Bundle');
|
||||
const HMRBundle = require('./HMRBundle');
|
||||
const PrepackBundle = require('./PrepackBundle');
|
||||
const ModuleTransport = require('../lib/ModuleTransport');
|
||||
const declareOpts = require('../lib/declareOpts');
|
||||
const imageSize = require('image-size');
|
||||
|
@ -313,46 +312,6 @@ class Bundler {
|
|||
});
|
||||
}
|
||||
|
||||
prepackBundle({
|
||||
entryFile,
|
||||
runModule: runMainModule,
|
||||
runBeforeMainModule,
|
||||
sourceMapUrl,
|
||||
dev,
|
||||
platform,
|
||||
assetPlugins,
|
||||
}) {
|
||||
const onModuleTransformed = ({module, transformed, response, bundle}) => {
|
||||
const deps = Object.create(null);
|
||||
const pairs = response.getResolvedDependencyPairs(module);
|
||||
if (pairs) {
|
||||
pairs.forEach(pair => {
|
||||
deps[pair[0]] = pair[1].path;
|
||||
});
|
||||
}
|
||||
|
||||
return module.getName().then(name => {
|
||||
bundle.addModule(name, transformed, deps, module.isPolyfill());
|
||||
});
|
||||
};
|
||||
const finalizeBundle = ({bundle, response}) => {
|
||||
const {mainModuleId} = response;
|
||||
bundle.finalize({runBeforeMainModule, runMainModule, mainModuleId});
|
||||
return bundle;
|
||||
};
|
||||
|
||||
return this._buildBundle({
|
||||
entryFile,
|
||||
dev,
|
||||
platform,
|
||||
onModuleTransformed,
|
||||
finalizeBundle,
|
||||
minify: false,
|
||||
bundle: new PrepackBundle(sourceMapUrl),
|
||||
assetPlugins,
|
||||
});
|
||||
}
|
||||
|
||||
_buildBundle({
|
||||
entryFile,
|
||||
dev,
|
||||
|
|
|
@ -329,17 +329,6 @@ class Server {
|
|||
});
|
||||
}
|
||||
|
||||
buildPrepackBundle(options) {
|
||||
return Promise.resolve().then(() => {
|
||||
if (!options.platform) {
|
||||
options.platform = getPlatformExtension(options.entryFile);
|
||||
}
|
||||
|
||||
const opts = bundleOpts(options);
|
||||
return this._bundler.prepackBundle(opts);
|
||||
});
|
||||
}
|
||||
|
||||
buildBundleFromUrl(reqUrl) {
|
||||
const options = this._getOptionsFromUrl(reqUrl);
|
||||
return this.buildBundle(options);
|
||||
|
|
Loading…
Reference in New Issue