Updates from Tue 24 Mar

- [ReactNative] Open Source PushNotifications and move Badge Number methods and permission into it | Tadeu Zagallo
- [react-packager] Fix regression with transform errors | Amjad Masad
- Flowify TextStylePropTypes and fix a bug with unsupported props | Marshall Roch
- [ReactNative] Remove `arc build` instructions from require | Alex Kotliarskyi
- Flowify Library/Utilities/ | Marshall Roch
- [react-packager] Default to index.js from main if it's a dir | Amjad Masad
This commit is contained in:
Christopher Chedeau 2015-03-24 09:26:16 -07:00
parent 9a6db3d6e6
commit 074065331a
5 changed files with 76 additions and 3 deletions

View File

@ -166,6 +166,69 @@ describe('DependencyGraph', function() {
}); });
}); });
pit('should default main package to index.js', function() {
var root = '/root';
fs.__setMockFilesystem({
'root': {
'index.js': 'require("aPackage")',
'aPackage': {
'package.json': JSON.stringify({
name: 'aPackage',
}),
'index.js': 'lol',
}
}
});
var dgraph = new DependencyGraph({
roots: [root],
fileWatcher: fileWatcher
});
return dgraph.load().then(function() {
expect(dgraph.getOrderedDependencies('/root/index.js'))
.toEqual([
{id: '/root/index.js', path: '/root/index.js', dependencies: ['aPackage']},
{ id: 'aPackage/index',
path: '/root/aPackage/index.js',
dependencies: []
},
]);
});
});
pit('should default use index.js if main is a dir', function() {
var root = '/root';
fs.__setMockFilesystem({
'root': {
'index.js': 'require("aPackage")',
'aPackage': {
'package.json': JSON.stringify({
name: 'aPackage',
main: 'lib',
}),
lib: {
'index.js': 'lol',
},
}
}
});
var dgraph = new DependencyGraph({
roots: [root],
fileWatcher: fileWatcher
});
return dgraph.load().then(function() {
expect(dgraph.getOrderedDependencies('/root/index.js'))
.toEqual([
{id: '/root/index.js', path: '/root/index.js', dependencies: ['aPackage']},
{ id: 'aPackage/lib/index',
path: '/root/aPackage/lib/index.js',
dependencies: []
},
]);
});
});
pit('should ignore malformed packages', function() { pit('should ignore malformed packages', function() {
var root = '/root'; var root = '/root';
fs.__setMockFilesystem({ fs.__setMockFilesystem({

View File

@ -184,6 +184,12 @@ DependecyGraph.prototype.resolveDependency = function(
var main = packageJson.main || 'index'; var main = packageJson.main || 'index';
modulePath = withExtJs(path.join(packageJson._root, main)); modulePath = withExtJs(path.join(packageJson._root, main));
dep = this._graph[modulePath]; dep = this._graph[modulePath];
// Some packages use just a dir and rely on an index.js inside that dir.
if (dep == null) {
dep = this._graph[path.join(packageJson._root, main, 'index.js')];
}
if (dep == null) { if (dep == null) {
throw new Error( throw new Error(
'Cannot find package main file for package: ' + packageJson._root 'Cannot find package main file for package: ' + packageJson._root

View File

@ -196,7 +196,7 @@
if (!module) { if (!module) {
msg = 'Requiring unknown module "' + id + '"'; msg = 'Requiring unknown module "' + id + '"';
if (__DEV__) { if (__DEV__) {
msg += '. It may not be loaded yet. Did you forget to run arc build?'; msg += '. If you are sure the module is there, try restarting the packager.';
} }
throw new ModuleError(msg); throw new ModuleError(msg);
} }

View File

@ -186,6 +186,7 @@ describe('processRequest', function() {
expect(packageFunc.mock.calls.length).toBe(1); expect(packageFunc.mock.calls.length).toBe(1);
triggerFileChange('all','path/file.js', options.projectRoots[0]); triggerFileChange('all','path/file.js', options.projectRoots[0]);
jest.runAllTimers(); jest.runAllTimers();
jest.runAllTimers();
}) })
.then(function() { .then(function() {
expect(packageFunc.mock.calls.length).toBe(2); expect(packageFunc.mock.calls.length).toBe(2);

View File

@ -92,8 +92,10 @@ Server.prototype._rebuildPackages = function() {
Object.keys(packages).forEach(function(key) { Object.keys(packages).forEach(function(key) {
var options = getOptionsFromUrl(key); var options = getOptionsFromUrl(key);
// Wait for a previous build (if exists) to finish. // Wait for a previous build (if exists) to finish.
packages[key] = (packages[key] || q()).then(function() { packages[key] = (packages[key] || q()).finally(function() {
return buildPackage(options).then(function(p) { // With finally promise callback we can't change the state of the promise
// so we need to reassign the promise.
packages[key] = buildPackage(options).then(function(p) {
// Make a throwaway call to getSource to cache the source string. // Make a throwaway call to getSource to cache the source string.
p.getSource({ p.getSource({
inlineSourceMap: options.dev, inlineSourceMap: options.dev,
@ -102,6 +104,7 @@ Server.prototype._rebuildPackages = function() {
return p; return p;
}); });
}); });
return packages[key];
}); });
}; };