mirror of
https://github.com/status-im/react-native.git
synced 2025-02-04 21:53:30 +00:00
Use continuous module IDs for random access bundles
Reviewed By: bestander Differential Revision: D3292980 fbshipit-source-id: ab5791d31add42a26cf55a0309564330c383eaa2
This commit is contained in:
parent
3f1cd5aa4e
commit
b4e970f6c3
@ -12,7 +12,11 @@ const asIndexedFile = require('./as-indexed-file');
|
|||||||
const asAssets = require('./as-assets');
|
const asAssets = require('./as-assets');
|
||||||
|
|
||||||
function buildBundle(packagerClient, requestOptions) {
|
function buildBundle(packagerClient, requestOptions) {
|
||||||
return packagerClient.buildBundle({...requestOptions, unbundle: true});
|
return packagerClient.buildBundle({
|
||||||
|
...requestOptions,
|
||||||
|
unbundle: true,
|
||||||
|
isolateModuleIDs: true,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveUnbundle(bundle, options, log) {
|
function saveUnbundle(bundle, options, log) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "0.3.1",
|
"version": "0.3.2",
|
||||||
"name": "react-native-packager",
|
"name": "react-native-packager",
|
||||||
"description": "Build native apps with React!",
|
"description": "Build native apps with React!",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -128,6 +128,7 @@ describe('Bundler', function() {
|
|||||||
mainModuleId: 'foo',
|
mainModuleId: 'foo',
|
||||||
dependencies: modules,
|
dependencies: modules,
|
||||||
transformOptions,
|
transformOptions,
|
||||||
|
getModuleId: () => 123,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -207,7 +208,8 @@ describe('Bundler', function() {
|
|||||||
pit('gets the list of dependencies from the resolver', function() {
|
pit('gets the list of dependencies from the resolver', function() {
|
||||||
const entryFile = '/root/foo.js';
|
const entryFile = '/root/foo.js';
|
||||||
return bundler.getDependencies({entryFile, recursive: true}).then(() =>
|
return bundler.getDependencies({entryFile, recursive: true}).then(() =>
|
||||||
expect(getDependencies).toBeCalledWith(
|
// jest calledWith does not support jasmine.any
|
||||||
|
expect(getDependencies.mock.calls[0].slice(0, -2)).toEqual([
|
||||||
'/root/foo.js',
|
'/root/foo.js',
|
||||||
{ dev: true, recursive: true },
|
{ dev: true, recursive: true },
|
||||||
{ minify: false,
|
{ minify: false,
|
||||||
@ -219,8 +221,7 @@ describe('Bundler', function() {
|
|||||||
projectRoots,
|
projectRoots,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
undefined,
|
])
|
||||||
)
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
31
packager/react-packager/src/Bundler/index.js
vendored
31
packager/react-packager/src/Bundler/index.js
vendored
@ -141,7 +141,6 @@ class Bundler {
|
|||||||
fileWatcher: opts.fileWatcher,
|
fileWatcher: opts.fileWatcher,
|
||||||
assetExts: opts.assetExts,
|
assetExts: opts.assetExts,
|
||||||
cache: this._cache,
|
cache: this._cache,
|
||||||
getModuleId: this._getModuleId,
|
|
||||||
transformCode:
|
transformCode:
|
||||||
(module, code, options) =>
|
(module, code, options) =>
|
||||||
this._transformer.transformFile(module.path, code, options),
|
this._transformer.transformFile(module.path, code, options),
|
||||||
@ -169,9 +168,9 @@ class Bundler {
|
|||||||
const moduleSystemDeps =
|
const moduleSystemDeps =
|
||||||
this._resolver.getModuleSystemDependencies({dev, unbundle});
|
this._resolver.getModuleSystemDependencies({dev, unbundle});
|
||||||
return this._bundle({
|
return this._bundle({
|
||||||
|
...options,
|
||||||
bundle: new Bundle({dev, minify, sourceMapUrl: options.sourceMapUrl}),
|
bundle: new Bundle({dev, minify, sourceMapUrl: options.sourceMapUrl}),
|
||||||
moduleSystemDeps,
|
moduleSystemDeps,
|
||||||
...options,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,9 +246,10 @@ class Bundler {
|
|||||||
unbundle,
|
unbundle,
|
||||||
entryModuleOnly,
|
entryModuleOnly,
|
||||||
resolutionResponse,
|
resolutionResponse,
|
||||||
|
isolateModuleIDs,
|
||||||
}) {
|
}) {
|
||||||
const onResolutionResponse = response => {
|
const onResolutionResponse = response => {
|
||||||
bundle.setMainModuleId(this._getModuleId(getMainModule(response)));
|
bundle.setMainModuleId(response.getModuleId(getMainModule(response)));
|
||||||
if (bundle.setNumPrependedModules) {
|
if (bundle.setNumPrependedModules) {
|
||||||
bundle.setNumPrependedModules(
|
bundle.setNumPrependedModules(
|
||||||
response.numPrependedDependencies + moduleSystemDeps.length
|
response.numPrependedDependencies + moduleSystemDeps.length
|
||||||
@ -273,7 +273,7 @@ class Bundler {
|
|||||||
? runBeforeMainModule
|
? runBeforeMainModule
|
||||||
.map(name => modulesByName[name])
|
.map(name => modulesByName[name])
|
||||||
.filter(Boolean)
|
.filter(Boolean)
|
||||||
.map(this._getModuleId, this)
|
.map(response.getModuleId)
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
bundle.finalize({
|
bundle.finalize({
|
||||||
@ -294,6 +294,7 @@ class Bundler {
|
|||||||
resolutionResponse,
|
resolutionResponse,
|
||||||
onResolutionResponse,
|
onResolutionResponse,
|
||||||
finalizeBundle,
|
finalizeBundle,
|
||||||
|
isolateModuleIDs,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,6 +345,7 @@ class Bundler {
|
|||||||
hot,
|
hot,
|
||||||
unbundle,
|
unbundle,
|
||||||
resolutionResponse,
|
resolutionResponse,
|
||||||
|
isolateModuleIDs,
|
||||||
onResolutionResponse = noop,
|
onResolutionResponse = noop,
|
||||||
onModuleTransformed = noop,
|
onModuleTransformed = noop,
|
||||||
finalizeBundle = noop,
|
finalizeBundle = noop,
|
||||||
@ -371,6 +373,7 @@ class Bundler {
|
|||||||
hot,
|
hot,
|
||||||
onProgress,
|
onProgress,
|
||||||
minify,
|
minify,
|
||||||
|
isolateModuleIDs,
|
||||||
generateSourceMaps: unbundle,
|
generateSourceMaps: unbundle,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -398,6 +401,7 @@ class Bundler {
|
|||||||
bundle,
|
bundle,
|
||||||
entryFilePath,
|
entryFilePath,
|
||||||
transformOptions: response.transformOptions,
|
transformOptions: response.transformOptions,
|
||||||
|
getModuleId: response.getModuleId,
|
||||||
}).then(transformed => {
|
}).then(transformed => {
|
||||||
modulesByName[transformed.name] = module;
|
modulesByName[transformed.name] = module;
|
||||||
onModuleTransformed({
|
onModuleTransformed({
|
||||||
@ -467,6 +471,7 @@ class Bundler {
|
|||||||
hot = false,
|
hot = false,
|
||||||
recursive = true,
|
recursive = true,
|
||||||
generateSourceMaps = false,
|
generateSourceMaps = false,
|
||||||
|
isolateModuleIDs = false,
|
||||||
onProgress,
|
onProgress,
|
||||||
}) {
|
}) {
|
||||||
return this.getTransformOptions(
|
return this.getTransformOptions(
|
||||||
@ -491,6 +496,7 @@ class Bundler {
|
|||||||
{dev, platform, recursive},
|
{dev, platform, recursive},
|
||||||
transformOptions,
|
transformOptions,
|
||||||
onProgress,
|
onProgress,
|
||||||
|
isolateModuleIDs ? createModuleIdFactory() : this._getModuleId,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -527,13 +533,14 @@ class Bundler {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
_toModuleTransport({module, bundle, entryFilePath, transformOptions}) {
|
_toModuleTransport({module, bundle, entryFilePath, transformOptions, getModuleId}) {
|
||||||
let moduleTransport;
|
let moduleTransport;
|
||||||
if (module.isAsset_DEPRECATED()) {
|
if (module.isAsset_DEPRECATED()) {
|
||||||
moduleTransport = this._generateAssetModule_DEPRECATED(bundle, module);
|
moduleTransport =
|
||||||
|
this._generateAssetModule_DEPRECATED(bundle, module, getModuleId);
|
||||||
} else if (module.isAsset()) {
|
} else if (module.isAsset()) {
|
||||||
moduleTransport = this._generateAssetModule(
|
moduleTransport = this._generateAssetModule(
|
||||||
bundle, module, transformOptions.platform);
|
bundle, module, getModuleId, transformOptions.platform);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (moduleTransport) {
|
if (moduleTransport) {
|
||||||
@ -554,7 +561,7 @@ class Bundler {
|
|||||||
|
|
||||||
return new ModuleTransport({
|
return new ModuleTransport({
|
||||||
name,
|
name,
|
||||||
id: this._getModuleId(module),
|
id: getModuleId(module),
|
||||||
code,
|
code,
|
||||||
map,
|
map,
|
||||||
meta: {dependencies, dependencyOffsets, preloaded},
|
meta: {dependencies, dependencyOffsets, preloaded},
|
||||||
@ -568,7 +575,7 @@ class Bundler {
|
|||||||
return this._resolver.getDebugInfo();
|
return this._resolver.getDebugInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
_generateAssetModule_DEPRECATED(bundle, module) {
|
_generateAssetModule_DEPRECATED(bundle, module, getModuleId) {
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
sizeOf(module.path),
|
sizeOf(module.path),
|
||||||
module.getName(),
|
module.getName(),
|
||||||
@ -588,7 +595,7 @@ class Bundler {
|
|||||||
|
|
||||||
return new ModuleTransport({
|
return new ModuleTransport({
|
||||||
name: id,
|
name: id,
|
||||||
id: this._getModuleId(module),
|
id: getModuleId(module),
|
||||||
code: code,
|
code: code,
|
||||||
sourceCode: code,
|
sourceCode: code,
|
||||||
sourcePath: module.path,
|
sourcePath: module.path,
|
||||||
@ -647,7 +654,7 @@ class Bundler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
_generateAssetModule(bundle, module, platform = null) {
|
_generateAssetModule(bundle, module, getModuleId, platform = null) {
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
module.getName(),
|
module.getName(),
|
||||||
this._generateAssetObjAndCode(module, platform),
|
this._generateAssetObjAndCode(module, platform),
|
||||||
@ -655,7 +662,7 @@ class Bundler {
|
|||||||
bundle.addAsset(asset);
|
bundle.addAsset(asset);
|
||||||
return new ModuleTransport({
|
return new ModuleTransport({
|
||||||
name,
|
name,
|
||||||
id: this._getModuleId(module),
|
id: getModuleId(module),
|
||||||
code,
|
code,
|
||||||
meta: meta,
|
meta: meta,
|
||||||
sourceCode: code,
|
sourceCode: code,
|
||||||
|
@ -50,6 +50,7 @@ describe('Resolver', function() {
|
|||||||
constructor({dependencies, mainModuleId}) {
|
constructor({dependencies, mainModuleId}) {
|
||||||
this.dependencies = dependencies;
|
this.dependencies = dependencies;
|
||||||
this.mainModuleId = mainModuleId;
|
this.mainModuleId = mainModuleId;
|
||||||
|
this.getModuleId = createGetModuleId();
|
||||||
}
|
}
|
||||||
|
|
||||||
prependDependency(dependency) {
|
prependDependency(dependency) {
|
||||||
@ -95,7 +96,7 @@ describe('Resolver', function() {
|
|||||||
|
|
||||||
DependencyGraph.prototype.getDependencies.mockImplementation(
|
DependencyGraph.prototype.getDependencies.mockImplementation(
|
||||||
() => Promise.reject());
|
() => Promise.reject());
|
||||||
new Resolver({projectRoot: '/root', })
|
new Resolver({projectRoot: '/root'})
|
||||||
.getDependencies(entry, {platform}, transformOptions);
|
.getDependencies(entry, {platform}, transformOptions);
|
||||||
expect(DependencyGraph.prototype.getDependencies).toBeCalledWith({
|
expect(DependencyGraph.prototype.getDependencies).toBeCalledWith({
|
||||||
entryPath: entry,
|
entryPath: entry,
|
||||||
@ -110,7 +111,6 @@ describe('Resolver', function() {
|
|||||||
var deps = [module];
|
var deps = [module];
|
||||||
|
|
||||||
var depResolver = new Resolver({
|
var depResolver = new Resolver({
|
||||||
getModuleId: createGetModuleId(),
|
|
||||||
projectRoot: '/root',
|
projectRoot: '/root',
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -121,8 +121,14 @@ describe('Resolver', function() {
|
|||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
return depResolver.getDependencies('/root/index.js', { dev: false })
|
return depResolver
|
||||||
.then(function(result) {
|
.getDependencies(
|
||||||
|
'/root/index.js',
|
||||||
|
{ dev: false },
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
createGetModuleId()
|
||||||
|
).then(function(result) {
|
||||||
expect(result.mainModuleId).toEqual('index');
|
expect(result.mainModuleId).toEqual('index');
|
||||||
expect(result.dependencies[result.dependencies.length - 1]).toBe(module);
|
expect(result.dependencies[result.dependencies.length - 1]).toBe(module);
|
||||||
expect(DependencyGraph.prototype.createPolyfill.mock.calls.map((call) => call[0])).toEqual([
|
expect(DependencyGraph.prototype.createPolyfill.mock.calls.map((call) => call[0])).toEqual([
|
||||||
@ -227,8 +233,14 @@ describe('Resolver', function() {
|
|||||||
|
|
||||||
const polyfill = {};
|
const polyfill = {};
|
||||||
DependencyGraph.prototype.createPolyfill.mockReturnValueOnce(polyfill);
|
DependencyGraph.prototype.createPolyfill.mockReturnValueOnce(polyfill);
|
||||||
return depResolver.getDependencies('/root/index.js', { dev: true })
|
return depResolver
|
||||||
.then(function(result) {
|
.getDependencies(
|
||||||
|
'/root/index.js',
|
||||||
|
{ dev: true },
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
createGetModuleId()
|
||||||
|
).then(function(result) {
|
||||||
expect(result.mainModuleId).toEqual('index');
|
expect(result.mainModuleId).toEqual('index');
|
||||||
expect(DependencyGraph.mock.instances[0].getDependencies)
|
expect(DependencyGraph.mock.instances[0].getDependencies)
|
||||||
.toBeCalledWith({entryPath: '/root/index.js', recursive: true});
|
.toBeCalledWith({entryPath: '/root/index.js', recursive: true});
|
||||||
@ -254,8 +266,14 @@ describe('Resolver', function() {
|
|||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
return depResolver.getDependencies('/root/index.js', { dev: false })
|
return depResolver
|
||||||
.then((result) => {
|
.getDependencies(
|
||||||
|
'/root/index.js',
|
||||||
|
{ dev: false },
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
createGetModuleId()
|
||||||
|
).then((result) => {
|
||||||
expect(result.mainModuleId).toEqual('index');
|
expect(result.mainModuleId).toEqual('index');
|
||||||
expect(DependencyGraph.prototype.createPolyfill.mock.calls[result.dependencies.length - 2]).toEqual([
|
expect(DependencyGraph.prototype.createPolyfill.mock.calls[result.dependencies.length - 2]).toEqual([
|
||||||
{ file: 'some module',
|
{ file: 'some module',
|
||||||
@ -278,12 +296,10 @@ describe('Resolver', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('wrapModule', function() {
|
describe('wrapModule', function() {
|
||||||
let depResolver, getModuleId;
|
let depResolver;
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
getModuleId = createGetModuleId();
|
|
||||||
depResolver = new Resolver({
|
depResolver = new Resolver({
|
||||||
depResolver,
|
depResolver,
|
||||||
getModuleId,
|
|
||||||
projectRoot: '/root',
|
projectRoot: '/root',
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -325,7 +341,8 @@ describe('Resolver', function() {
|
|||||||
const moduleIds = new Map(
|
const moduleIds = new Map(
|
||||||
resolutionResponse
|
resolutionResponse
|
||||||
.getResolvedDependencyPairs()
|
.getResolvedDependencyPairs()
|
||||||
.map(([importId, module]) => [importId, getModuleId(module)])
|
.map(([importId, module]) =>
|
||||||
|
[importId, resolutionResponse.getModuleId(module)])
|
||||||
);
|
);
|
||||||
|
|
||||||
return depResolver.wrapModule({
|
return depResolver.wrapModule({
|
||||||
@ -337,7 +354,7 @@ describe('Resolver', function() {
|
|||||||
dev: false,
|
dev: false,
|
||||||
}).then(({code: processedCode}) => {
|
}).then(({code: processedCode}) => {
|
||||||
expect(processedCode).toEqual([
|
expect(processedCode).toEqual([
|
||||||
`__d(${getModuleId(module)} /* test module */, function(global, require, module, exports) {` +
|
`__d(${resolutionResponse.getModuleId(module)} /* test module */, function(global, require, module, exports) {` +
|
||||||
// require
|
// require
|
||||||
`require(${moduleIds.get('x')} /* x */)`,
|
`require(${moduleIds.get('x')} /* x */)`,
|
||||||
`require(${moduleIds.get('y')} /* y */)`,
|
`require(${moduleIds.get('y')} /* y */)`,
|
||||||
@ -364,7 +381,7 @@ describe('Resolver', function() {
|
|||||||
dev: true,
|
dev: true,
|
||||||
}).then(({code: processedCode}) =>
|
}).then(({code: processedCode}) =>
|
||||||
expect(processedCode).toEqual([
|
expect(processedCode).toEqual([
|
||||||
`__d(${getModuleId(module)} /* test module */, function(global, require, module, exports) {` +
|
`__d(${resolutionResponse.getModuleId(module)} /* test module */, function(global, require, module, exports) {` +
|
||||||
code,
|
code,
|
||||||
'}, "test module");'
|
'}, "test module");'
|
||||||
].join('\n'))
|
].join('\n'))
|
||||||
@ -413,7 +430,7 @@ describe('Resolver', function() {
|
|||||||
let depResolver, module, resolutionResponse;
|
let depResolver, module, resolutionResponse;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
depResolver = new Resolver({getModuleId, projectRoot: '/root'});
|
depResolver = new Resolver({projectRoot: '/root'});
|
||||||
module = createJsonModule(id);
|
module = createJsonModule(id);
|
||||||
resolutionResponse = new ResolutionResponseMock({
|
resolutionResponse = new ResolutionResponseMock({
|
||||||
dependencies: [module],
|
dependencies: [module],
|
||||||
@ -426,7 +443,7 @@ describe('Resolver', function() {
|
|||||||
.wrapModule({resolutionResponse, module, name: id, code, dev: false})
|
.wrapModule({resolutionResponse, module, name: id, code, dev: false})
|
||||||
.then(({code: processedCode}) =>
|
.then(({code: processedCode}) =>
|
||||||
expect(processedCode).toEqual([
|
expect(processedCode).toEqual([
|
||||||
`__d(${getModuleId(module)} /* ${id} */, function(global, require, module, exports) {`,
|
`__d(${resolutionResponse.getModuleId(module)} /* ${id} */, function(global, require, module, exports) {`,
|
||||||
`module.exports = ${code}\n});`,
|
`module.exports = ${code}\n});`,
|
||||||
].join('')));
|
].join('')));
|
||||||
});
|
});
|
||||||
@ -442,7 +459,6 @@ describe('Resolver', function() {
|
|||||||
Promise.resolve({code, map}));
|
Promise.resolve({code, map}));
|
||||||
depResolver = new Resolver({
|
depResolver = new Resolver({
|
||||||
projectRoot: '/root',
|
projectRoot: '/root',
|
||||||
getModuleId,
|
|
||||||
minifyCode,
|
minifyCode,
|
||||||
});
|
});
|
||||||
module = createModule(id);
|
module = createModule(id);
|
||||||
@ -455,7 +471,7 @@ describe('Resolver', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
pit('should invoke the minifier with the wrapped code', () => {
|
pit('should invoke the minifier with the wrapped code', () => {
|
||||||
const wrappedCode = `__d(${getModuleId(module)} /* ${id} */, function(global, require, module, exports) {${code}\n});`
|
const wrappedCode = `__d(${resolutionResponse.getModuleId(module)} /* ${id} */, function(global, require, module, exports) {${code}\n});`
|
||||||
return depResolver
|
return depResolver
|
||||||
.wrapModule({
|
.wrapModule({
|
||||||
resolutionResponse,
|
resolutionResponse,
|
||||||
|
14
packager/react-packager/src/Resolver/index.js
vendored
14
packager/react-packager/src/Resolver/index.js
vendored
@ -47,10 +47,6 @@ const validateOpts = declareOpts({
|
|||||||
type: 'object',
|
type: 'object',
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
getModuleId: {
|
|
||||||
type: 'function',
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
transformCode: {
|
transformCode: {
|
||||||
type: 'function',
|
type: 'function',
|
||||||
},
|
},
|
||||||
@ -115,7 +111,6 @@ class Resolver {
|
|||||||
assetDependencies: ['react-native/Libraries/Image/AssetRegistry'],
|
assetDependencies: ['react-native/Libraries/Image/AssetRegistry'],
|
||||||
});
|
});
|
||||||
|
|
||||||
this._getModuleId = options.getModuleId;
|
|
||||||
this._minifyCode = opts.minifyCode;
|
this._minifyCode = opts.minifyCode;
|
||||||
this._polyfillModuleNames = opts.polyfillModuleNames || [];
|
this._polyfillModuleNames = opts.polyfillModuleNames || [];
|
||||||
|
|
||||||
@ -137,7 +132,7 @@ class Resolver {
|
|||||||
return this._depGraph.getModuleForPath(entryFile);
|
return this._depGraph.getModuleForPath(entryFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
getDependencies(entryPath, options, transformOptions, onProgress) {
|
getDependencies(entryPath, options, transformOptions, onProgress, getModuleId) {
|
||||||
const {platform, recursive} = getDependenciesValidateOpts(options);
|
const {platform, recursive} = getDependenciesValidateOpts(options);
|
||||||
return this._depGraph.getDependencies({
|
return this._depGraph.getDependencies({
|
||||||
entryPath,
|
entryPath,
|
||||||
@ -150,8 +145,7 @@ class Resolver {
|
|||||||
polyfill => resolutionResponse.prependDependency(polyfill)
|
polyfill => resolutionResponse.prependDependency(polyfill)
|
||||||
);
|
);
|
||||||
|
|
||||||
// currently used by HMR
|
resolutionResponse.getModuleId = getModuleId;
|
||||||
resolutionResponse.getModuleId = this._getModuleId;
|
|
||||||
return resolutionResponse.finalize();
|
return resolutionResponse.finalize();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -205,7 +199,7 @@ class Resolver {
|
|||||||
resolutionResponse.getResolvedDependencyPairs(module)
|
resolutionResponse.getResolvedDependencyPairs(module)
|
||||||
.forEach(([depName, depModule]) => {
|
.forEach(([depName, depModule]) => {
|
||||||
if (depModule) {
|
if (depModule) {
|
||||||
resolvedDeps[depName] = this._getModuleId(depModule);
|
resolvedDeps[depName] = resolutionResponse.getModuleId(depModule);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -251,7 +245,7 @@ class Resolver {
|
|||||||
if (module.isPolyfill()) {
|
if (module.isPolyfill()) {
|
||||||
code = definePolyfillCode(code);
|
code = definePolyfillCode(code);
|
||||||
} else {
|
} else {
|
||||||
const moduleId = this._getModuleId(module);
|
const moduleId = resolutionResponse.getModuleId(module);
|
||||||
code = this.resolveRequires(
|
code = this.resolveRequires(
|
||||||
resolutionResponse,
|
resolutionResponse,
|
||||||
module,
|
module,
|
||||||
|
@ -22,14 +22,14 @@ jest.setMock('worker-farm', function() { return () => {}; })
|
|||||||
|
|
||||||
const Promise = require('promise');
|
const Promise = require('promise');
|
||||||
|
|
||||||
var Bundler = require('../../Bundler');
|
const Bundler = require('../../Bundler');
|
||||||
var Server = require('../');
|
const Server = require('../');
|
||||||
var AssetServer = require('../../AssetServer');
|
const AssetServer = require('../../AssetServer');
|
||||||
|
|
||||||
var FileWatcher;
|
let FileWatcher;
|
||||||
|
|
||||||
describe('processRequest', () => {
|
describe('processRequest', () => {
|
||||||
var server;
|
let server;
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
projectRoots: ['root'],
|
projectRoots: ['root'],
|
||||||
@ -56,8 +56,8 @@ describe('processRequest', () => {
|
|||||||
|
|
||||||
const invalidatorFunc = jest.fn();
|
const invalidatorFunc = jest.fn();
|
||||||
const watcherFunc = jest.fn();
|
const watcherFunc = jest.fn();
|
||||||
var requestHandler;
|
let requestHandler;
|
||||||
var triggerFileChange;
|
let triggerFileChange;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
FileWatcher = require('node-haste').FileWatcher;
|
FileWatcher = require('node-haste').FileWatcher;
|
||||||
@ -135,7 +135,7 @@ describe('processRequest', () => {
|
|||||||
requestHandler,
|
requestHandler,
|
||||||
'index.ios.includeRequire.bundle'
|
'index.ios.includeRequire.bundle'
|
||||||
).then(response => {
|
).then(response => {
|
||||||
expect(response.body).toEqual('this is the source');
|
expect(response.body).toEqual('this is the source')
|
||||||
expect(Bundler.prototype.bundle).toBeCalledWith({
|
expect(Bundler.prototype.bundle).toBeCalledWith({
|
||||||
entryFile: 'index.ios.js',
|
entryFile: 'index.ios.js',
|
||||||
inlineSourceMap: false,
|
inlineSourceMap: false,
|
||||||
@ -148,6 +148,7 @@ describe('processRequest', () => {
|
|||||||
runBeforeMainModule: ['InitializeJavaScriptAppEngine'],
|
runBeforeMainModule: ['InitializeJavaScriptAppEngine'],
|
||||||
unbundle: false,
|
unbundle: false,
|
||||||
entryModuleOnly: false,
|
entryModuleOnly: false,
|
||||||
|
isolateModuleIDs: false,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -170,6 +171,7 @@ describe('processRequest', () => {
|
|||||||
runBeforeMainModule: ['InitializeJavaScriptAppEngine'],
|
runBeforeMainModule: ['InitializeJavaScriptAppEngine'],
|
||||||
unbundle: false,
|
unbundle: false,
|
||||||
entryModuleOnly: false,
|
entryModuleOnly: false,
|
||||||
|
isolateModuleIDs: false,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -291,9 +293,9 @@ describe('processRequest', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('/onchange endpoint', () => {
|
describe('/onchange endpoint', () => {
|
||||||
var EventEmitter;
|
let EventEmitter;
|
||||||
var req;
|
let req;
|
||||||
var res;
|
let res;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
EventEmitter = require.requireActual('events').EventEmitter;
|
EventEmitter = require.requireActual('events').EventEmitter;
|
||||||
@ -363,6 +365,7 @@ describe('processRequest', () => {
|
|||||||
runBeforeMainModule: ['InitializeJavaScriptAppEngine'],
|
runBeforeMainModule: ['InitializeJavaScriptAppEngine'],
|
||||||
unbundle: false,
|
unbundle: false,
|
||||||
entryModuleOnly: false,
|
entryModuleOnly: false,
|
||||||
|
isolateModuleIDs: false,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -384,6 +387,7 @@ describe('processRequest', () => {
|
|||||||
runBeforeMainModule: ['InitializeJavaScriptAppEngine'],
|
runBeforeMainModule: ['InitializeJavaScriptAppEngine'],
|
||||||
unbundle: false,
|
unbundle: false,
|
||||||
entryModuleOnly: false,
|
entryModuleOnly: false,
|
||||||
|
isolateModuleIDs: false,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
18
packager/react-packager/src/Server/index.js
vendored
18
packager/react-packager/src/Server/index.js
vendored
@ -131,6 +131,10 @@ const bundleOpts = declareOpts({
|
|||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
isolateModuleIDs: {
|
||||||
|
type: 'boolean',
|
||||||
|
default: false
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const dependencyOpts = declareOpts({
|
const dependencyOpts = declareOpts({
|
||||||
@ -167,7 +171,7 @@ class Server {
|
|||||||
|
|
||||||
const assetGlobs = opts.assetExts.map(ext => '**/*.' + ext);
|
const assetGlobs = opts.assetExts.map(ext => '**/*.' + ext);
|
||||||
|
|
||||||
var watchRootConfigs = opts.projectRoots.map(dir => {
|
let watchRootConfigs = opts.projectRoots.map(dir => {
|
||||||
return {
|
return {
|
||||||
dir: dir,
|
dir: dir,
|
||||||
globs: [
|
globs: [
|
||||||
@ -338,7 +342,7 @@ class Server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_processDebugRequest(reqUrl, res) {
|
_processDebugRequest(reqUrl, res) {
|
||||||
var ret = '<!doctype html>';
|
let ret = '<!doctype html>';
|
||||||
const pathname = url.parse(reqUrl).pathname;
|
const pathname = url.parse(reqUrl).pathname;
|
||||||
const parts = pathname.split('/').filter(Boolean);
|
const parts = pathname.split('/').filter(Boolean);
|
||||||
if (parts.length === 1) {
|
if (parts.length === 1) {
|
||||||
@ -406,9 +410,9 @@ class Server {
|
|||||||
|
|
||||||
processRequest(req, res, next) {
|
processRequest(req, res, next) {
|
||||||
const urlObj = url.parse(req.url, true);
|
const urlObj = url.parse(req.url, true);
|
||||||
var pathname = urlObj.pathname;
|
const pathname = urlObj.pathname;
|
||||||
|
|
||||||
var requestType;
|
let requestType;
|
||||||
if (pathname.match(/\.bundle$/)) {
|
if (pathname.match(/\.bundle$/)) {
|
||||||
requestType = 'bundle';
|
requestType = 'bundle';
|
||||||
} else if (pathname.match(/\.map$/)) {
|
} else if (pathname.match(/\.map$/)) {
|
||||||
@ -438,7 +442,7 @@ class Server {
|
|||||||
building.then(
|
building.then(
|
||||||
p => {
|
p => {
|
||||||
if (requestType === 'bundle') {
|
if (requestType === 'bundle') {
|
||||||
var bundleSource = p.getSource({
|
const bundleSource = p.getSource({
|
||||||
inlineSourceMap: options.inlineSourceMap,
|
inlineSourceMap: options.inlineSourceMap,
|
||||||
minify: options.minify,
|
minify: options.minify,
|
||||||
dev: options.dev,
|
dev: options.dev,
|
||||||
@ -453,7 +457,7 @@ class Server {
|
|||||||
}
|
}
|
||||||
Activity.endEvent(startReqEventId);
|
Activity.endEvent(startReqEventId);
|
||||||
} else if (requestType === 'map') {
|
} else if (requestType === 'map') {
|
||||||
var sourceMap = p.getSourceMap({
|
let sourceMap = p.getSourceMap({
|
||||||
minify: options.minify,
|
minify: options.minify,
|
||||||
dev: options.dev,
|
dev: options.dev,
|
||||||
});
|
});
|
||||||
@ -466,7 +470,7 @@ class Server {
|
|||||||
res.end(sourceMap);
|
res.end(sourceMap);
|
||||||
Activity.endEvent(startReqEventId);
|
Activity.endEvent(startReqEventId);
|
||||||
} else if (requestType === 'assets') {
|
} else if (requestType === 'assets') {
|
||||||
var assetsList = JSON.stringify(p.getAssets());
|
const assetsList = JSON.stringify(p.getAssets());
|
||||||
res.setHeader('Content-Type', 'application/json');
|
res.setHeader('Content-Type', 'application/json');
|
||||||
res.end(assetsList);
|
res.end(assetsList);
|
||||||
Activity.endEvent(startReqEventId);
|
Activity.endEvent(startReqEventId);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user