From 7f257e258f5d5dedc9bc1edbd38180cc872bc2a0 Mon Sep 17 00:00:00 2001
From: Jacob Evans <jacob@dekz.net>
Date: Fri, 2 Feb 2018 14:44:29 -0800
Subject: Change the InjectedWeb3Subprovider to accept Web3.Provider

---
 packages/subproviders/src/subproviders/injected_web3.ts | 9 ++++-----
 packages/website/ts/blockchain.ts                       | 2 +-
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/packages/subproviders/src/subproviders/injected_web3.ts b/packages/subproviders/src/subproviders/injected_web3.ts
index bd29acb22..238ba89f8 100644
--- a/packages/subproviders/src/subproviders/injected_web3.ts
+++ b/packages/subproviders/src/subproviders/injected_web3.ts
@@ -1,17 +1,16 @@
 import * as _ from 'lodash';
 import Web3 = require('web3');
-import Web3ProviderEngine = require('web3-provider-engine');
 
 /*
  * This class implements the web3-provider-engine subprovider interface and forwards
  * requests involving user accounts (getAccounts, sendTransaction, etc...) to the injected
- * web3 instance in their browser.
+ * MetamaskInpageProvider instance in their browser.
  * Source: https://github.com/MetaMask/provider-engine/blob/master/subproviders/subprovider.js
  */
 export class InjectedWeb3Subprovider {
     private _injectedWeb3: Web3;
-    constructor(injectedWeb3: Web3) {
-        this._injectedWeb3 = injectedWeb3;
+    constructor(subprovider: Web3.Provider) {
+        this._injectedWeb3 = new Web3(subprovider);
     }
     public handleRequest(
         payload: Web3.JSONRPCRequestPayload,
@@ -43,7 +42,7 @@ export class InjectedWeb3Subprovider {
     }
     // Required to implement this method despite not needing it for this subprovider
     // tslint:disable-next-line:prefer-function-over-method
-    public setEngine(engine: Web3ProviderEngine) {
+    public setEngine(engine: any) {
         // noop
     }
 }
diff --git a/packages/website/ts/blockchain.ts b/packages/website/ts/blockchain.ts
index 71995e2cd..099efb405 100644
--- a/packages/website/ts/blockchain.ts
+++ b/packages/website/ts/blockchain.ts
@@ -100,7 +100,7 @@ export class Blockchain {
             // We catch all requests involving a users account and send it to the injectedWeb3
             // instance. All other requests go to the public hosted node.
             provider = new ProviderEngine();
-            provider.addProvider(new InjectedWeb3Subprovider(injectedWeb3));
+            provider.addProvider(new InjectedWeb3Subprovider(injectedWeb3.currentProvider));
             provider.addProvider(new FilterSubprovider());
             provider.addProvider(new RedundantRPCSubprovider(publicNodeUrlsIfExistsForNetworkId));
             provider.start();
-- 
cgit v1.2.3


From 5aca3a2d7d8ebbdb0fcb2bcee771068a553dae8a Mon Sep 17 00:00:00 2001
From: Jacob Evans <jacob@dekz.net>
Date: Fri, 2 Feb 2018 14:53:44 -0800
Subject: Changelog

---
 packages/subproviders/CHANGELOG.md | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/packages/subproviders/CHANGELOG.md b/packages/subproviders/CHANGELOG.md
index 0469150c0..6ee8e2455 100644
--- a/packages/subproviders/CHANGELOG.md
+++ b/packages/subproviders/CHANGELOG.md
@@ -1,6 +1,10 @@
 # CHANGELOG
 
-## v0.4.0 - _January 28, 2017_
+## v0.4.0 - _Feburary 02, 2018_
+
+    * InjectedWeb3Subprovider accepts a Provider in the constructor, previously it was a Web3 object.
+
+## v0.3.5 - _January 28, 2018_
 
     * Return a transaction hash from `_sendTransactionAsync` (#303)
 
-- 
cgit v1.2.3


From 882816d60958f0e7d1b1aa06dc214ebdcfc53e2a Mon Sep 17 00:00:00 2001
From: Jacob Evans <jacob@dekz.net>
Date: Mon, 5 Feb 2018 13:46:59 -0800
Subject: Justify the any usage

---
 packages/subproviders/src/subproviders/injected_web3.ts | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/packages/subproviders/src/subproviders/injected_web3.ts b/packages/subproviders/src/subproviders/injected_web3.ts
index 238ba89f8..a74a6c4b2 100644
--- a/packages/subproviders/src/subproviders/injected_web3.ts
+++ b/packages/subproviders/src/subproviders/injected_web3.ts
@@ -4,7 +4,7 @@ import Web3 = require('web3');
 /*
  * This class implements the web3-provider-engine subprovider interface and forwards
  * requests involving user accounts (getAccounts, sendTransaction, etc...) to the injected
- * MetamaskInpageProvider instance in their browser.
+ * provider instance in their browser.
  * Source: https://github.com/MetaMask/provider-engine/blob/master/subproviders/subprovider.js
  */
 export class InjectedWeb3Subprovider {
@@ -41,6 +41,7 @@ export class InjectedWeb3Subprovider {
         }
     }
     // Required to implement this method despite not needing it for this subprovider
+    // This type is Web3ProviderEngine, but there is no need to import this for a noop.
     // tslint:disable-next-line:prefer-function-over-method
     public setEngine(engine: any) {
         // noop
-- 
cgit v1.2.3


From d14ae70776e82c8a61e1c41219c40ec283890a8a Mon Sep 17 00:00:00 2001
From: Jacob Evans <jacob@dekz.net>
Date: Mon, 5 Feb 2018 13:55:01 -0800
Subject: Link to the wiki article in the README

---
 packages/subproviders/README.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/packages/subproviders/README.md b/packages/subproviders/README.md
index d7b80f7ee..84cab5601 100644
--- a/packages/subproviders/README.md
+++ b/packages/subproviders/README.md
@@ -2,6 +2,8 @@
 
 A few useful web3 subproviders including a LedgerSubprovider useful for adding Ledger Nano S support.
 
+We have written up a [Wiki](https://0xproject.com/wiki#Web3-Provider-Examples) article detailing some use cases of this subprovider package.
+
 ## Installation
 
 ```
-- 
cgit v1.2.3