From 1bac5019e84a11843fed3100c36c9b3c47abe430 Mon Sep 17 00:00:00 2001
From: Amir Bandeali <abandeali1@gmail.com>
Date: Sat, 31 Mar 2018 23:54:09 -0700
Subject: Add missing type import

---
 packages/0x.js/src/0x.ts | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/packages/0x.js/src/0x.ts b/packages/0x.js/src/0x.ts
index 7627f1d6e..b82cc820f 100644
--- a/packages/0x.js/src/0x.ts
+++ b/packages/0x.js/src/0x.ts
@@ -15,7 +15,7 @@ import { OrderStateWatcher } from './order_watcher/order_state_watcher';
 import { zeroExConfigSchema } from './schemas/zero_ex_config_schema';
 import { zeroExPrivateNetworkConfigSchema } from './schemas/zero_ex_private_network_config_schema';
 import { zeroExPublicNetworkConfigSchema } from './schemas/zero_ex_public_network_config_schema';
-import { OrderStateWatcherConfig, ZeroExConfig, ZeroExError } from './types';
+import { OrderStateWatcherConfig, Web3Provider, ZeroExConfig, ZeroExError } from './types';
 import { assert } from './utils/assert';
 import { constants } from './utils/constants';
 import { decorators } from './utils/decorators';
@@ -331,13 +331,7 @@ export class ZeroEx {
      * @return  An instance of the 0x.js OrderStateWatcher class.
      */
     public createOrderStateWatcher(config?: OrderStateWatcherConfig) {
-        return new OrderStateWatcher(
-            this._web3Wrapper,
-            this._abiDecoder,
-            this.token,
-            this.exchange,
-            config,
-        );
+        return new OrderStateWatcher(this._web3Wrapper, this._abiDecoder, this.token, this.exchange, config);
     }
     /*
      * HACK: `TokenWrapper` needs a token transfer proxy address. `TokenTransferProxy` address is fetched from
-- 
cgit v1.2.3


From 20fec2943bebc50059b1a9a0646f263b07aba88b Mon Sep 17 00:00:00 2001
From: Amir Bandeali <abandeali1@gmail.com>
Date: Sat, 31 Mar 2018 23:54:56 -0700
Subject: Create solc_bin dir if does not exist before attempting to compile

---
 packages/contracts/package.json               |  3 ++-
 packages/deployer/src/compiler.ts             |  8 +++++---
 packages/deployer/src/utils/compiler.ts       | 12 ++++++------
 packages/deployer/test/compiler_utils_test.ts |  6 +++---
 4 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/packages/contracts/package.json b/packages/contracts/package.json
index 0c931344d..26e99e7b5 100644
--- a/packages/contracts/package.json
+++ b/packages/contracts/package.json
@@ -18,7 +18,7 @@
         "compile:comment": "Yarn workspaces do not link binaries correctly so we need to reference them directly https://github.com/yarnpkg/yarn/issues/3846",
         "compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contracts-dir src/contracts --artifacts-dir src/artifacts",
         "clean": "shx rm -rf ./lib",
-        "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis 'src/artifacts/@(DummyToken|TokenTransferProxy|Exchange|TokenRegistry|MultiSigWallet|MultiSigWalletWithTimeLock|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|TokenRegistry|ZRXToken|Arbitrage|EtherDelta|AccountLevels).json' --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'",
+        "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis  ${npm_package_config_abis} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'",
         "migrate": "yarn build && yarn compile && node ./lib/migrations/index.js",
         "lint": "tslint --project . 'migrations/**/*.ts' 'test/**/*.ts' 'util/**/*.ts' 'deploy/**/*.ts'",
         "coverage:report:text": "istanbul report text",
@@ -27,6 +27,7 @@
         "test:circleci": "yarn test:coverage"
     },
     "config": {
+        "abis": "src/artifacts/@(DummyToken|TokenTransferProxy|Exchange|TokenRegistry|MultiSigWallet|MultiSigWalletWithTimeLock|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|TokenRegistry|ZRXToken|Arbitrage|EtherDelta|AccountLevels).json",
         "contracts": "Exchange,DummyToken,ZRXToken,Token,WETH9,TokenTransferProxy,MultiSigWallet,MultiSigWalletWithTimeLock,MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress,MaliciousToken,TokenRegistry,Arbitrage,EtherDelta,AccountLevels"
     },
     "repository": {
diff --git a/packages/deployer/src/compiler.ts b/packages/deployer/src/compiler.ts
index 4741a9086..219a55c32 100644
--- a/packages/deployer/src/compiler.ts
+++ b/packages/deployer/src/compiler.ts
@@ -11,7 +11,7 @@ import solc = require('solc');
 
 import { binPaths } from './solc/bin_paths';
 import {
-    createArtifactsDirIfDoesNotExistAsync,
+    createDirIfDoesNotExistAsync,
     findImportIfExist,
     getContractArtifactIfExistsAsync,
     getNormalizedErrMsg,
@@ -32,6 +32,7 @@ import {
 import { utils } from './utils/utils';
 
 const ALL_CONTRACTS_IDENTIFIER = '*';
+const SOLC_BIN_DIR = path.join(__dirname, '..', '..', 'solc_bin');
 
 /**
  * The Compiler facilitates compiling Solidity smart contracts and saves the results
@@ -103,7 +104,8 @@ export class Compiler {
      * Compiles selected Solidity files found in `contractsDir` and writes JSON artifacts to `artifactsDir`.
      */
     public async compileAsync(): Promise<void> {
-        await createArtifactsDirIfDoesNotExistAsync(this._artifactsDir);
+        await createDirIfDoesNotExistAsync(this._artifactsDir);
+        await createDirIfDoesNotExistAsync(SOLC_BIN_DIR);
         this._contractSources = await Compiler._getContractSourcesAsync(this._contractsDir);
         _.forIn(this._contractSources, this._setContractSpecificSourceData.bind(this));
         const fileNames = this._specifiedContracts.has(ALL_CONTRACTS_IDENTIFIER)
@@ -147,7 +149,7 @@ export class Compiler {
             contractSpecificSourceData.solcVersionRange,
         );
         const fullSolcVersion = binPaths[solcVersion];
-        const compilerBinFilename = path.join(__dirname, '../../solc_bin', fullSolcVersion);
+        const compilerBinFilename = path.join(SOLC_BIN_DIR, fullSolcVersion);
         let solcjs: string;
         const isCompilerAvailableLocally = fs.existsSync(compilerBinFilename);
         if (isCompilerAvailableLocally) {
diff --git a/packages/deployer/src/utils/compiler.ts b/packages/deployer/src/utils/compiler.ts
index 9c8fef26d..d5137d394 100644
--- a/packages/deployer/src/utils/compiler.ts
+++ b/packages/deployer/src/utils/compiler.ts
@@ -34,13 +34,13 @@ export async function getContractArtifactIfExistsAsync(
 }
 
 /**
- * Creates the artifacts directory if it does not already exist.
- * @param artifactsDir Path to the artifacts directory.
+ * Creates a directory if it does not already exist.
+ * @param artifactsDir Path to the directory.
  */
-export async function createArtifactsDirIfDoesNotExistAsync(artifactsDir: string): Promise<void> {
-    if (!fsWrapper.doesPathExistSync(artifactsDir)) {
-        logUtils.log('Creating artifacts directory...');
-        await fsWrapper.mkdirAsync(artifactsDir);
+export async function createDirIfDoesNotExistAsync(dirPath: string): Promise<void> {
+    if (!fsWrapper.doesPathExistSync(dirPath)) {
+        logUtils.log(`Creating directory at ${dirPath}...`);
+        await fsWrapper.mkdirAsync(dirPath);
     }
 }
 
diff --git a/packages/deployer/test/compiler_utils_test.ts b/packages/deployer/test/compiler_utils_test.ts
index 1867177dc..246304858 100644
--- a/packages/deployer/test/compiler_utils_test.ts
+++ b/packages/deployer/test/compiler_utils_test.ts
@@ -3,7 +3,7 @@ import * as dirtyChai from 'dirty-chai';
 import 'mocha';
 
 import {
-    createArtifactsDirIfDoesNotExistAsync,
+    createDirIfDoesNotExistAsync,
     getNormalizedErrMsg,
     parseDependencies,
     parseSolidityVersionRange,
@@ -21,11 +21,11 @@ describe('Compiler utils', () => {
             expect(normalizedErrMsg).to.be.equal('Token.sol:6:46: Warning: Unused local variable');
         });
     });
-    describe('#createArtifactsDirIfDoesNotExistAsync', () => {
+    describe('#createDirIfDoesNotExistAsync', () => {
         it('creates artifacts dir', async () => {
             const artifactsDir = `${__dirname}/artifacts`;
             expect(fsWrapper.doesPathExistSync(artifactsDir)).to.be.false();
-            await createArtifactsDirIfDoesNotExistAsync(artifactsDir);
+            await createDirIfDoesNotExistAsync(artifactsDir);
             expect(fsWrapper.doesPathExistSync(artifactsDir)).to.be.true();
             fsWrapper.rmdirSync(artifactsDir);
             expect(fsWrapper.doesPathExistSync(artifactsDir)).to.be.false();
-- 
cgit v1.2.3


From ff7c3012a56d0744fa2bcaec0158c85b04293980 Mon Sep 17 00:00:00 2001
From: Amir Bandeali <abandeali1@gmail.com>
Date: Sun, 1 Apr 2018 00:05:55 -0700
Subject: Run prettier, update deployer CHANGELOG

---
 packages/0x.js/src/order_watcher/event_watcher.ts       |  6 +++++-
 packages/0x.js/src/order_watcher/order_state_watcher.ts | 10 +++-------
 packages/0x.js/test/order_state_watcher_test.ts         |  4 +---
 packages/deployer/CHANGELOG.md                          |  4 ++++
 4 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/packages/0x.js/src/order_watcher/event_watcher.ts b/packages/0x.js/src/order_watcher/event_watcher.ts
index d01542a8c..47bbd5b2e 100644
--- a/packages/0x.js/src/order_watcher/event_watcher.ts
+++ b/packages/0x.js/src/order_watcher/event_watcher.ts
@@ -23,7 +23,11 @@ export class EventWatcher {
     private _intervalIdIfExists?: NodeJS.Timer;
     private _lastEvents: LogEntry[] = [];
     private _stateLayer: BlockParamLiteral;
-    constructor(web3Wrapper: Web3Wrapper, pollingIntervalIfExistsMs: undefined | number, stateLayer: BlockParamLiteral = BlockParamLiteral.Latest) {
+    constructor(
+        web3Wrapper: Web3Wrapper,
+        pollingIntervalIfExistsMs: undefined | number,
+        stateLayer: BlockParamLiteral = BlockParamLiteral.Latest,
+    ) {
         this._web3Wrapper = web3Wrapper;
         this._stateLayer = stateLayer;
         this._pollingIntervalMs = _.isUndefined(pollingIntervalIfExistsMs)
diff --git a/packages/0x.js/src/order_watcher/order_state_watcher.ts b/packages/0x.js/src/order_watcher/order_state_watcher.ts
index bfd250e21..cd6016c5a 100644
--- a/packages/0x.js/src/order_watcher/order_state_watcher.ts
+++ b/packages/0x.js/src/order_watcher/order_state_watcher.ts
@@ -86,14 +86,10 @@ export class OrderStateWatcher {
         this._abiDecoder = abiDecoder;
         this._web3Wrapper = web3Wrapper;
         const pollingIntervalIfExistsMs = _.isUndefined(config) ? undefined : config.eventPollingIntervalMs;
-        const stateLayer = _.isUndefined(config) || _.isUndefined(config.stateLayer)
-            ? BlockParamLiteral.Latest
-            : config.stateLayer;
+        const stateLayer =
+            _.isUndefined(config) || _.isUndefined(config.stateLayer) ? BlockParamLiteral.Latest : config.stateLayer;
         this._eventWatcher = new EventWatcher(web3Wrapper, pollingIntervalIfExistsMs, stateLayer);
-        this._balanceAndProxyAllowanceLazyStore = new BalanceAndProxyAllowanceLazyStore(
-            token,
-            stateLayer,
-        );
+        this._balanceAndProxyAllowanceLazyStore = new BalanceAndProxyAllowanceLazyStore(token, stateLayer);
         this._orderFilledCancelledLazyStore = new OrderFilledCancelledLazyStore(exchange);
         this._orderStateUtils = new OrderStateUtils(
             this._balanceAndProxyAllowanceLazyStore,
diff --git a/packages/0x.js/test/order_state_watcher_test.ts b/packages/0x.js/test/order_state_watcher_test.ts
index 4f727d495..4210e013f 100644
--- a/packages/0x.js/test/order_state_watcher_test.ts
+++ b/packages/0x.js/test/order_state_watcher_test.ts
@@ -15,9 +15,7 @@ import {
     ZeroEx,
     ZeroExError,
 } from '../src';
-import {
-    OrderStateWatcher,
-} from '../src/order_watcher/order_state_watcher';
+import { OrderStateWatcher } from '../src/order_watcher/order_state_watcher';
 import { DoneCallback } from '../src/types';
 
 import { chaiSetup } from './utils/chai_setup';
diff --git a/packages/deployer/CHANGELOG.md b/packages/deployer/CHANGELOG.md
index 7d2a0f5e8..ecc8867b9 100644
--- a/packages/deployer/CHANGELOG.md
+++ b/packages/deployer/CHANGELOG.md
@@ -1,5 +1,9 @@
 # CHANGELOG
 
+## v0.3.2 - _TBD_
+
+    * Create solc_bin directory if does not exist before attempting to compile (#491)
+
 ## v0.3.1 - _March 18, 2018_
 
     * Add TS types for `yargs`
-- 
cgit v1.2.3