Skip to content

Commit

Permalink
Bring back node-haste to fbsource
Browse files Browse the repository at this point in the history
Summary:
Since jest stopped using node-haste a while ago, we are the only client left.
This brings back node-haste back to fbsource to allow us to iterate faster.

Reviewed By: bestander

Differential Revision: D3641341

fbshipit-source-id: a859f8834765723a3515e2cf265581b9dd83997c
  • Loading branch information
davidaurelio authored and berrytj committed Feb 1, 2017
1 parent 94e33e7 commit 7113201
Show file tree
Hide file tree
Showing 56 changed files with 12,090 additions and 24 deletions.
2 changes: 1 addition & 1 deletion local-cli/server/util/attachHMRServer.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
*/
'use strict';

const getInverseDependencies = require('node-haste').getInverseDependencies;
const {getInverseDependencies} = require('../../../packager/react-packager/src/node-haste');
const querystring = require('querystring');
const url = require('url');

Expand Down
15 changes: 9 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@
"unmockedModulePathPatterns": [
"promise",
"source-map",
"node-haste/lib/fastpath",
"fastpath",
"denodeify",
"fbjs"
]
},
Expand Down Expand Up @@ -166,7 +167,6 @@
"mkdirp": "^0.5.1",
"module-deps": "^3.9.1",
"node-fetch": "^1.3.3",
"node-haste": "~2.12.0",
"npmlog": "^2.0.4",
"opn": "^3.0.2",
"optimist": "^0.6.1",
Expand All @@ -178,7 +178,7 @@
"react-transform-hmr": "^1.0.4",
"rebound": "^0.0.13",
"regenerator-runtime": "^0.9.5",
"sane": "^1.2.0",
"sane": "^1.3.1",
"semver": "^5.0.3",
"source-map": "^0.4.4",
"stacktrace-parser": "^0.1.3",
Expand All @@ -190,8 +190,11 @@
"xcode": "^0.8.2",
"xmldoc": "^0.4.0",
"yargs": "^3.24.0",
"yeoman-environment": "^1.2.7",
"yeoman-generator": "^0.20.3"
"yeoman-environment": "1.5.3",
"yeoman-generator": "0.21.2",
"mime-types": "2.1.11",
"whatwg-fetch": "^1.0.0",
"denodeify": "^1.2.1"
},
"devDependencies": {
"babel-eslint": "^6.0.0",
Expand All @@ -204,4 +207,4 @@
"react": "~15.2.0",
"shelljs": "0.6.0"
}
}
}
2 changes: 1 addition & 1 deletion packager/react-packager/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

require('../babelRegisterOnly')([/react-packager\/src/]);

require('node-haste/lib/fastpath').replace();
require('./src/node-haste/fastpath').replace();
useGracefulFs();

var debug = require('debug');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ var fs = require('fs');

describe('AssetServer', () => {
beforeEach(() => {
const NodeHaste = require('node-haste');
NodeHaste.getAssetDataFromName = require.requireActual('node-haste/lib/lib/getAssetDataFromName');
const NodeHaste = require('../../node-haste');
NodeHaste.getAssetDataFromName = require.requireActual('../../node-haste/lib/getAssetDataFromName');
});

describe('assetServer.get', () => {
Expand Down
2 changes: 1 addition & 1 deletion packager/react-packager/src/AssetServer/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const Promise = require('promise');
const crypto = require('crypto');
const declareOpts = require('../lib/declareOpts');
const fs = require('fs');
const getAssetDataFromName = require('node-haste').getAssetDataFromName;
const getAssetDataFromName = require('../node-haste').getAssetDataFromName;
const path = require('path');

const createTimeoutPromise = (timeout) => new Promise((resolve, reject) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jest
.mock('fs')
.mock('assert')
.mock('progress')
.mock('node-haste')
.mock('../../node-haste')
.mock('../../JSTransformer')
.mock('../../lib/declareOpts')
.mock('../../Resolver')
Expand Down
2 changes: 1 addition & 1 deletion packager/react-packager/src/Bundler/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const fs = require('fs');
const path = require('path');
const Promise = require('promise');
const ProgressBar = require('progress');
const Cache = require('node-haste').Cache;
const Cache = require('../node-haste').Cache;
const Transformer = require('../JSTransformer');
const Resolver = require('../Resolver');
const Bundle = require('./Bundle');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,8 @@ jest.mock('path');
const Promise = require('promise');
const Resolver = require('../');

const path = require('path');

let DependencyGraph = jest.fn();
jest.setMock('node-haste', DependencyGraph);
const DependencyGraph = jest.fn();
jest.setMock('../../node-haste', DependencyGraph);
let Module;
let Polyfill;

Expand All @@ -36,7 +34,7 @@ describe('Resolver', function() {
return polyfill;
});

DependencyGraph.replacePatterns = require.requireActual('node-haste/lib/lib/replacePatterns');
DependencyGraph.replacePatterns = require.requireActual('../../node-haste/lib/replacePatterns');
DependencyGraph.prototype.createPolyfill = jest.fn();
DependencyGraph.prototype.getDependencies = jest.fn();

Expand Down
2 changes: 1 addition & 1 deletion packager/react-packager/src/Resolver/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

const path = require('path');
const Activity = require('../Activity');
const DependencyGraph = require('node-haste');
const DependencyGraph = require('../node-haste');
const declareOpts = require('../lib/declareOpts');
const Promise = require('promise');

Expand Down
4 changes: 2 additions & 2 deletions packager/react-packager/src/Server/__tests__/Server-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jest.setMock('worker-farm', function() { return () => {}; })
.mock('../../Bundler')
.mock('../../AssetServer')
.mock('../../lib/declareOpts')
.mock('node-haste')
.mock('../../node-haste')
.mock('../../Activity');

const Promise = require('promise');
Expand Down Expand Up @@ -62,7 +62,7 @@ describe('processRequest', () => {
let triggerFileChange;

beforeEach(() => {
FileWatcher = require('node-haste').FileWatcher;
FileWatcher = require('../../node-haste').FileWatcher;
Bundler.prototype.bundle = jest.fn(() =>
Promise.resolve({
getSource: () => 'this is the source',
Expand Down
4 changes: 2 additions & 2 deletions packager/react-packager/src/Server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@

const Activity = require('../Activity');
const AssetServer = require('../AssetServer');
const FileWatcher = require('node-haste').FileWatcher;
const getPlatformExtension = require('node-haste').getPlatformExtension;
const FileWatcher = require('../node-haste').FileWatcher;
const getPlatformExtension = require('../node-haste').getPlatformExtension;
const Bundler = require('../Bundler');
const Promise = require('promise');
const SourceMapConsumer = require('source-map').SourceMapConsumer;
Expand Down
2 changes: 1 addition & 1 deletion packager/react-packager/src/__mocks__/fs.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
*/
'use strict';

module.exports = require.requireActual('node-haste/mocks/graceful-fs');
module.exports = require.requireActual('../node-haste/__mocks__/graceful-fs');
47 changes: 47 additions & 0 deletions packager/react-packager/src/node-haste/AssetModule.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
'use strict';

const Module = require('./Module');
const getAssetDataFromName = require('./lib/getAssetDataFromName');

class AssetModule extends Module {
constructor(args, platforms) {
super(args);
const { resolution, name, type } = getAssetDataFromName(this.path, platforms);
this.resolution = resolution;
this._name = name;
this._type = type;
this._dependencies = args.dependencies || [];
}

isHaste() {
return Promise.resolve(false);
}

getDependencies() {
return Promise.resolve(this._dependencies);
}

read() {
return Promise.resolve({});
}

getName() {
return super.getName().then(
id => id.replace(/\/[^\/]+$/, `/${this._name}.${this._type}`)
);
}

hash() {
return `AssetModule : ${this.path}`;
}

isJSON() {
return false;
}

isAsset() {
return true;
}
}

module.exports = AssetModule;
45 changes: 45 additions & 0 deletions packager/react-packager/src/node-haste/AssetModule_DEPRECATED.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
'use strict';

const Module = require('./Module');
const getAssetDataFromName = require('./lib/getAssetDataFromName');

class AssetModule_DEPRECATED extends Module {
constructor(args, platforms) {
super(args);
const {resolution, name} = getAssetDataFromName(this.path, platforms);
this.resolution = resolution;
this.name = name;
this.platforms = platforms;
}

isHaste() {
return Promise.resolve(false);
}

getName() {
return Promise.resolve(`image!${this.name}`);
}

getDependencies() {
return Promise.resolve([]);
}

hash() {
return `AssetModule_DEPRECATED : ${this.path}`;
}

isJSON() {
return false;
}

isAsset_DEPRECATED() {
return true;
}

resolution() {
return getAssetDataFromName(this.path, this.platforms).resolution;
}

}

module.exports = AssetModule_DEPRECATED;
20 changes: 20 additions & 0 deletions packager/react-packager/src/node-haste/Cache/__mocks__/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/**
* 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';

class Cache {
get(filepath, field, cb) {
return cb(filepath);
}

invalidate(filepath) { }
end() { }
}

module.exports = Cache;
Loading

0 comments on commit 7113201

Please sign in to comment.