[connectivity_for_web] Fix JS Interop in release mode. (#2869)

* Switch to dart:html window.navigator.connection instead of package:js JS-interop.
* Overwrite connection.onchange instead of listening to connection.onChange Stream (prevents multiple subscriptions after hot-reload).
* Cleaned up old code related to generating the JS facade.
diff --git a/packages/connectivity/connectivity_for_web/CHANGELOG.md b/packages/connectivity/connectivity_for_web/CHANGELOG.md
index 89e186a..83dc386 100644
--- a/packages/connectivity/connectivity_for_web/CHANGELOG.md
+++ b/packages/connectivity/connectivity_for_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.1
+
+* Use NetworkInformation API from dart:html, instead of the JS-interop version.
+
 ## 0.3.0
 
 * Rename from "experimental_connectivity_web" to "connectivity_for_web", and move to flutter/plugins master.
diff --git a/packages/connectivity/connectivity_for_web/lib/src/generated/network_information_types.dart b/packages/connectivity/connectivity_for_web/lib/src/generated/network_information_types.dart
deleted file mode 100644
index c4045b3..0000000
--- a/packages/connectivity/connectivity_for_web/lib/src/generated/network_information_types.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-@JS()
-library network_information_types;
-
-import "package:js/js.dart";
-import "dart:html" show EventListener, EventTarget;
-
-/// W3C Spec Draft http://wicg.github.io/netinfo/
-/// Edition: Draft Community Group Report 20 February 2019
-
-/// http://wicg.github.io/netinfo/#navigatornetworkinformation-interface
-@anonymous
-@JS()
-abstract class Navigator implements NavigatorNetworkInformation {}
-
-@anonymous
-@JS()
-abstract class WorkerNavigator implements NavigatorNetworkInformation {
-  external factory WorkerNavigator({NetworkInformation connection});
-}
-
-/// http://wicg.github.io/netinfo/#navigatornetworkinformation-interface
-@anonymous
-@JS()
-abstract class NavigatorNetworkInformation {
-  external NetworkInformation get connection;
-  external factory NavigatorNetworkInformation({NetworkInformation connection});
-}
-
-/// http://wicg.github.io/netinfo/#connection-types
-/*type ConnectionType =
-  | 'bluetooth'
-  | 'cellular'
-  | 'ethernet'
-  | 'mixed'
-  | 'none'
-  | 'other'
-  | 'unknown'
-  | 'wifi'
-  | 'wimax';
-*/
-
-/// http://wicg.github.io/netinfo/#effectiveconnectiontype-enum
-/*type EffectiveConnectionType = '2g' | '3g' | '4g' | 'slow-2g';*/
-
-/// http://wicg.github.io/netinfo/#dom-megabit
-/*type Megabit = number;*/
-/// http://wicg.github.io/netinfo/#dom-millisecond
-/*type Millisecond = number;*/
-
-/// http://wicg.github.io/netinfo/#networkinformation-interface
-@anonymous
-@JS()
-abstract class NetworkInformation implements EventTarget {
-  /// http://wicg.github.io/netinfo/#type-attribute
-  external String /*'bluetooth'|'cellular'|'ethernet'|'mixed'|'none'|'other'|'unknown'|'wifi'|'wimax'*/ get type;
-
-  /// http://wicg.github.io/netinfo/#effectivetype-attribute
-  external String /*'2g'|'3g'|'4g'|'slow-2g'*/ get effectiveType;
-
-  /// http://wicg.github.io/netinfo/#downlinkmax-attribute
-  external num get downlinkMax;
-
-  /// http://wicg.github.io/netinfo/#downlink-attribute
-  external num get downlink;
-
-  /// http://wicg.github.io/netinfo/#rtt-attribute
-  external num get rtt;
-
-  /// http://wicg.github.io/netinfo/#savedata-attribute
-  external bool get saveData;
-
-  /// http://wicg.github.io/netinfo/#handling-changes-to-the-underlying-connection
-  external EventListener get onchange;
-  external set onchange(EventListener v);
-}
-
-@JS()
-external Navigator get navigator;
diff --git a/packages/connectivity/connectivity_for_web/lib/src/network_information_api_connectivity_plugin.dart b/packages/connectivity/connectivity_for_web/lib/src/network_information_api_connectivity_plugin.dart
index d88487b..99bac2a 100644
--- a/packages/connectivity/connectivity_for_web/lib/src/network_information_api_connectivity_plugin.dart
+++ b/packages/connectivity/connectivity_for_web/lib/src/network_information_api_connectivity_plugin.dart
@@ -1,28 +1,29 @@
 import 'dart:async';
+import 'dart:html' as html show window, NetworkInformation;
+import 'dart:js';
+import 'dart:js_util';
 
 import 'package:connectivity_platform_interface/connectivity_platform_interface.dart';
 import 'package:connectivity_for_web/connectivity_for_web.dart';
 import 'package:flutter/foundation.dart';
-import 'package:js/js.dart';
 
-import 'generated/network_information_types.dart' as dom;
 import 'utils/connectivity_result.dart';
 
 /// The web implementation of the ConnectivityPlatform of the Connectivity plugin.
 class NetworkInformationApiConnectivityPlugin extends ConnectivityPlugin {
-  final dom.NetworkInformation _networkInformation;
+  final html.NetworkInformation _networkInformation;
 
   /// A check to determine if this version of the plugin can be used.
-  static bool isSupported() => dom.navigator?.connection != null;
+  static bool isSupported() => html.window.navigator.connection != null;
 
   /// The constructor of the plugin.
   NetworkInformationApiConnectivityPlugin()
-      : this.withConnection(dom.navigator?.connection);
+      : this.withConnection(html.window.navigator.connection);
 
   /// Creates the plugin, with an override of the NetworkInformation object.
   @visibleForTesting
   NetworkInformationApiConnectivityPlugin.withConnection(
-      dom.NetworkInformation connection)
+      html.NetworkInformation connection)
       : _networkInformation = connection;
 
   /// Checks the connection status of the device.
@@ -31,18 +32,30 @@
     return networkInformationToConnectivityResult(_networkInformation);
   }
 
-  StreamController<ConnectivityResult> _connectivityResult;
+  StreamController<ConnectivityResult> _connectivityResultStreamController;
+  Stream<ConnectivityResult> _connectivityResultStream;
 
   /// Returns a Stream of ConnectivityResults changes.
   @override
   Stream<ConnectivityResult> get onConnectivityChanged {
-    if (_connectivityResult == null) {
-      _connectivityResult = StreamController<ConnectivityResult>();
-      _networkInformation.onchange = allowInterop((_) {
-        _connectivityResult
+    if (_connectivityResultStreamController == null) {
+      _connectivityResultStreamController =
+          StreamController<ConnectivityResult>();
+      setProperty(_networkInformation, 'onchange', allowInterop((_) {
+        _connectivityResultStreamController
             .add(networkInformationToConnectivityResult(_networkInformation));
-      });
+      }));
+      // TODO: Implement the above with _networkInformation.onChange:
+      // _networkInformation.onChange.listen((_) {
+      //   _connectivityResult
+      //       .add(networkInformationToConnectivityResult(_networkInformation));
+      // });
+      // Once we can detect when to *cancel* a subscription to the _networkInformation
+      // onChange Stream upon hot restart.
+      // https://github.com/dart-lang/sdk/issues/42679
+      _connectivityResultStream =
+          _connectivityResultStreamController.stream.asBroadcastStream();
     }
-    return _connectivityResult.stream;
+    return _connectivityResultStream;
   }
 }
diff --git a/packages/connectivity/connectivity_for_web/lib/src/utils/connectivity_result.dart b/packages/connectivity/connectivity_for_web/lib/src/utils/connectivity_result.dart
index 28943ef..efefd8d 100644
--- a/packages/connectivity/connectivity_for_web/lib/src/utils/connectivity_result.dart
+++ b/packages/connectivity/connectivity_for_web/lib/src/utils/connectivity_result.dart
@@ -1,27 +1,22 @@
+import 'dart:html' as html show NetworkInformation;
 import 'package:connectivity_platform_interface/connectivity_platform_interface.dart';
 
 /// Converts an incoming NetworkInformation object into the correct ConnectivityResult.
-//
-// We can't be more specific on the signature of this method because the API is odd,
-// data can come from a static value in the DOM, or as the 'target' of a DOM Event.
-//
-// If we type info as `NetworkInformation`, Dart will complain with:
-// "Uncaught Error: Expected a value of type 'NetworkInformation',
-// but got one of type 'NetworkInformation'"
 ConnectivityResult networkInformationToConnectivityResult(
-    dynamic /* NetworkInformation */ info) {
+  html.NetworkInformation info,
+) {
   if (info == null) {
     return ConnectivityResult.none;
   }
   if (info.downlink == 0 && info.rtt == 0) {
     return ConnectivityResult.none;
   }
-  if (info.type != null) {
-    return _typeToConnectivityResult(info.type);
-  }
   if (info.effectiveType != null) {
     return _effectiveTypeToConnectivityResult(info.effectiveType);
   }
+  if (info.type != null) {
+    return _typeToConnectivityResult(info.type);
+  }
   return ConnectivityResult.none;
 }
 
diff --git a/packages/connectivity/connectivity_for_web/pubspec.yaml b/packages/connectivity/connectivity_for_web/pubspec.yaml
index e4a1673..e1142a7 100644
--- a/packages/connectivity/connectivity_for_web/pubspec.yaml
+++ b/packages/connectivity/connectivity_for_web/pubspec.yaml
@@ -1,6 +1,6 @@
 name: connectivity_for_web
 description: An implementation for the web platform of the Flutter `connectivity` plugin. This uses the NetworkInformation Web API, with a fallback to Navigator.onLine.
-version: 0.3.0
+version: 0.3.1
 homepage: https://github.com/ditman/plugins/tree/connectivity-web/packages/connectivity/experimental_connectivity_web
 
 flutter:
@@ -12,7 +12,6 @@
 
 dependencies:
   connectivity_platform_interface: ^1.0.3
-  js: ^0.6.1+1
   flutter_web_plugins:
     sdk: flutter
   flutter:
@@ -25,6 +24,7 @@
   flutter_test:
     sdk: flutter
   e2e: ^0.2.4+3
+  mockito: ^4.1.1
 
 environment:
   sdk: ">=2.6.0 <3.0.0"
diff --git a/packages/connectivity/connectivity_for_web/test/lib/main.dart b/packages/connectivity/connectivity_for_web/test/lib/main.dart
index 21621a9..93b9a73 100644
--- a/packages/connectivity/connectivity_for_web/test/lib/main.dart
+++ b/packages/connectivity/connectivity_for_web/test/lib/main.dart
@@ -3,6 +3,8 @@
 import 'package:connectivity_platform_interface/connectivity_platform_interface.dart';
 import 'package:connectivity_for_web/src/network_information_api_connectivity_plugin.dart';
 
+import 'package:mockito/mockito.dart';
+
 import 'src/connectivity_mocks.dart';
 
 void main() {
@@ -16,11 +18,12 @@
       num rtt = 50,
       ConnectivityResult expected,
     }) {
-      MockNetworkInformation connection = MockNetworkInformation(
-          type: type,
-          effectiveType: effectiveType,
-          downlink: downlink,
-          rtt: rtt);
+      final connection = MockNetworkInformation();
+      when(connection.type).thenReturn(type);
+      when(connection.effectiveType).thenReturn(effectiveType);
+      when(connection.downlink).thenReturn(downlink);
+      when(connection.rtt).thenReturn(downlink);
+
       NetworkInformationApiConnectivityPlugin plugin =
           NetworkInformationApiConnectivityPlugin.withConnection(connection);
       expect(plugin.checkConnectivity(), completion(equals(expected)));
@@ -53,16 +56,16 @@
 
   group('get onConnectivityChanged', () {
     test('puts change events in a Stream', () async {
-      MockNetworkInformation connection =
-          MockNetworkInformation(effectiveType: '4g', downlink: 10, rtt: 50);
+      final connection = MockNetworkInformation();
       NetworkInformationApiConnectivityPlugin plugin =
           NetworkInformationApiConnectivityPlugin.withConnection(connection);
 
       Stream<ConnectivityResult> results = plugin.onConnectivityChanged;
 
       // Fake a disconnect-reconnect
-      connection.mockChangeValue(downlink: 0, rtt: 0);
-      connection.mockChangeValue(downlink: 10, rtt: 50);
+      await connection.mockChangeValue(downlink: 0, rtt: 0);
+      await connection.mockChangeValue(
+          downlink: 10, rtt: 50, effectiveType: '4g');
 
       // The stream of results is infinite, so we need to .take(2) for this test to complete.
       expect(
diff --git a/packages/connectivity/connectivity_for_web/test/lib/src/connectivity_mocks.dart b/packages/connectivity/connectivity_for_web/test/lib/src/connectivity_mocks.dart
index 9ce2e81..7b82b51 100644
--- a/packages/connectivity/connectivity_for_web/test/lib/src/connectivity_mocks.dart
+++ b/packages/connectivity/connectivity_for_web/test/lib/src/connectivity_mocks.dart
@@ -1,33 +1,12 @@
 import 'dart:html';
 
-import 'package:connectivity_for_web/src/generated/network_information_types.dart'
-    as dom;
+import 'package:mockito/mockito.dart';
 
 /// A Mock implementation of the NetworkInformation API that allows
 /// for external modification of its values.
-class MockNetworkInformation extends dom.NetworkInformation {
-  @override
-  String type;
-
-  @override
-  String effectiveType;
-
-  @override
-  num downlink;
-
-  @override
-  num rtt;
-
-  @override
-  EventListener onchange;
-
-  /// Constructor of mocked instances...
-  MockNetworkInformation({
-    this.type,
-    this.effectiveType,
-    this.downlink,
-    this.rtt,
-  });
+class MockNetworkInformation extends Mock implements NetworkInformation {
+  /// The callback that will fire after the network information values change.
+  Function onchange;
 
   /// Changes the desired values, and triggers the change event listener.
   void mockChangeValue({
@@ -35,26 +14,12 @@
     String effectiveType,
     num downlink,
     num rtt,
-  }) {
-    this.type = type ?? this.type;
-    this.effectiveType = effectiveType ?? this.effectiveType;
-    this.downlink = downlink ?? this.downlink;
-    this.rtt = rtt ?? this.rtt;
+  }) async {
+    when(this.type).thenAnswer((_) => type);
+    when(this.effectiveType).thenAnswer((_) => effectiveType);
+    when(this.downlink).thenAnswer((_) => downlink);
+    when(this.rtt).thenAnswer((_) => rtt);
 
     onchange(Event('change'));
   }
-
-  @override
-  void addEventListener(String type, listener, [bool useCapture]) {}
-
-  @override
-  bool dispatchEvent(Event event) {
-    return true;
-  }
-
-  @override
-  Events get on => null;
-
-  @override
-  void removeEventListener(String type, listener, [bool useCapture]) {}
 }
diff --git a/packages/connectivity/connectivity_for_web/test/pubspec.yaml b/packages/connectivity/connectivity_for_web/test/pubspec.yaml
index 4d7d10a..44f4b55 100644
--- a/packages/connectivity/connectivity_for_web/test/pubspec.yaml
+++ b/packages/connectivity/connectivity_for_web/test/pubspec.yaml
@@ -1,6 +1,6 @@
 name: connectivity_web_example
 description: Example web app for the connectivity plugin 
-version: 0.1.0
+version: 0.1.1
 homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity_web
 
 dependencies:
@@ -18,6 +18,7 @@
   flutter_driver:
     sdk: flutter
   e2e: ^0.2.4+3
+  mockito: ^4.1.1
 
 environment:
   sdk: ">=2.6.0 <3.0.0"
diff --git a/packages/connectivity/connectivity_for_web/ts/.gitignore b/packages/connectivity/connectivity_for_web/ts/.gitignore
deleted file mode 100644
index de4d1f0..0000000
--- a/packages/connectivity/connectivity_for_web/ts/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-dist
-node_modules
diff --git a/packages/connectivity/connectivity_for_web/ts/README.md b/packages/connectivity/connectivity_for_web/ts/README.md
deleted file mode 100644
index 3372ad2..0000000
--- a/packages/connectivity/connectivity_for_web/ts/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# JS Facade generator
-
-This npm script takes the `network-information-types` npm package, and runs it through Dart's `dart_js_facade_gen` to auto-generate (most) of the JS facades used by this plugin.
-
-The process is not completely automated yet, but it should be pretty close.
-
-To generate the facades, and after [installing `npm`](https://www.npmjs.com/get-npm), do:
-
-```
-npm install
-npm run build
-```
-
-The above will fetch the required dependencies, and generate a `dist/network_information_types.dart` file that you can use with the plugin.
-
-```
-cp dist/*.dart ../lib/src/generated
-```
-
-This script should come handy once the Network Information Web API changes, or becomes stable, so the JS-interop part of this plugin can be regenerated more easily.
-
-Read more:
-
-* [Dart JS Interop](https://dart.dev/web/js-interop)
-* [dart_js_facade_gen](https://www.npmjs.com/package/dart_js_facade_gen)
\ No newline at end of file
diff --git a/packages/connectivity/connectivity_for_web/ts/package-lock.json b/packages/connectivity/connectivity_for_web/ts/package-lock.json
deleted file mode 100644
index 45293a4..0000000
--- a/packages/connectivity/connectivity_for_web/ts/package-lock.json
+++ /dev/null
@@ -1,117 +0,0 @@
-{
-  "name": "network-information-types-to-dart-generator",
-  "version": "1.0.0",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "@types/chai": {
-      "version": "4.2.9",
-      "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.9.tgz",
-      "integrity": "sha512-NeXgZj+MFL4izGqA4sapdYzkzQG+MtGra9vhQ58dnmDY++VgJaRUws+aLVV5zRJCYJl/8s9IjMmhiUw1WsKSmw=="
-    },
-    "@types/fs-extra": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.0.tgz",
-      "integrity": "sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg==",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/minimist": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz",
-      "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY="
-    },
-    "@types/mocha": {
-      "version": "5.2.7",
-      "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz",
-      "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ=="
-    },
-    "@types/node": {
-      "version": "12.12.28",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.28.tgz",
-      "integrity": "sha512-g73GJYJDXgf0jqg+P9S8h2acWbDXNkoCX8DLtJVu7Fkn788pzQ/oJsrdJz/2JejRf/SjfZaAhsw+3nd1D5EWGg=="
-    },
-    "@types/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/@types/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha512-LrnsgZIfJaysFkv9rRJp4/uAyqw87oVed3s1hhF83nwbo9c7MG9g5DqR0seHP+lkX4ldmMrVolPjQSe2ZfD0yA==",
-      "requires": {
-        "source-map": "*"
-      }
-    },
-    "@types/source-map-support": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/@types/source-map-support/-/source-map-support-0.5.1.tgz",
-      "integrity": "sha512-VDqnZe9D2zR19qbeRvwYyHSp7AtUtCkTaRVFQ8wzwH9TXw9kKKq/vBhfEnFEXVupO2M0lBMA9mr/XyQ6gEkUOA==",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "buffer-from": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
-    },
-    "dart-style": {
-      "version": "1.3.2-dev",
-      "resolved": "https://registry.npmjs.org/dart-style/-/dart-style-1.3.2-dev.tgz",
-      "integrity": "sha512-NFI4UQYvG32t/cEkQAdkXT2ZT72tjF61tMWoALmnGwj03d2Co94zwGfbnFfdQUQvrhUNx8Wz2jKSVxGrmFaVJQ=="
-    },
-    "dart_js_facade_gen": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/dart_js_facade_gen/-/dart_js_facade_gen-0.0.7.tgz",
-      "integrity": "sha512-AZiWsccbzhgJWmBjbFTPuvBhwGXk7AN8nOP91/I8PqUfSvVALiWshDc66TvywNkdNogAE5X8zlxjodw1C3iHpA==",
-      "requires": {
-        "@types/chai": "^4.2.3",
-        "@types/fs-extra": "^8.0.0",
-        "@types/minimist": "^1.2.0",
-        "@types/mocha": "^5.2.7",
-        "@types/node": "^12.7.8",
-        "@types/source-map": "^0.5.7",
-        "@types/source-map-support": "^0.5.0",
-        "dart-style": "^1.3.2-dev",
-        "minimist": "^1.2.0",
-        "source-map": "^0.7.3",
-        "source-map-support": "^0.5.13",
-        "typescript": "^3.6.3"
-      }
-    },
-    "minimist": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
-    },
-    "network-information-types": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/network-information-types/-/network-information-types-0.1.0.tgz",
-      "integrity": "sha512-cRUCYZoRHTMjYcgk5MbwqM0h0Za34panRxAJKY8n+mQ+NLMuRIw7aKzmaZqkC/cte7bnRcdfTwFA27GgN62EtQ=="
-    },
-    "source-map": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-      "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
-    },
-    "source-map-support": {
-      "version": "0.5.16",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
-      "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        }
-      }
-    },
-    "typescript": {
-      "version": "3.8.2",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.2.tgz",
-      "integrity": "sha512-EgOVgL/4xfVrCMbhYKUQTdF37SQn4Iw73H5BgCrF1Abdun7Kwy/QZsE/ssAy0y4LxBbvua3PIbFsbRczWWnDdQ=="
-    }
-  }
-}
diff --git a/packages/connectivity/connectivity_for_web/ts/package.json b/packages/connectivity/connectivity_for_web/ts/package.json
deleted file mode 100644
index 665c89d..0000000
--- a/packages/connectivity/connectivity_for_web/ts/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "name": "network-information-types-to-dart-generator",
-  "version": "1.0.0",
-  "description": "Use dart_js_facade_gen to generate the facade for the network-information-types package.",
-  "main": "index.js",
-  "private": true,
-  "scripts": {
-    "build": "./scripts/run_facade_gen.sh",
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "author": "",
-  "license": "MIT",
-  "dependencies": {
-    "network-information-types": "0.1.0",
-    "dart_js_facade_gen": "^0.0.7"
-  }
-}
diff --git a/packages/connectivity/connectivity_for_web/ts/scripts/run_facade_gen.sh b/packages/connectivity/connectivity_for_web/ts/scripts/run_facade_gen.sh
deleted file mode 100755
index c74b8ba..0000000
--- a/packages/connectivity/connectivity_for_web/ts/scripts/run_facade_gen.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-
-INDEX_PATH=node_modules/network-information-types/dist-types/index.d.ts
-WORK_PATH=network_information_types.d.ts
-DIST_PATH=dist
-
-# Create dist if it doesn't exist already
-mkdir -p $DIST_PATH
-
-# Copy the input file(s) into our work path
-cp $INDEX_PATH $WORK_PATH
-
-# Run dart_js_facade_gen
-dart_js_facade_gen $WORK_PATH --trust-js-types --generate-html --destination .
-
-# Move output to the right place, and clean after yourself
-mv *.dart $DIST_PATH
-rm $WORK_PATH