diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index 92b8746..dc31779 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -17,9 +17,6 @@
     - "@nodejs//:yarn"
     build_targets:
     - "..."
-    # Run some targets again, but addressed as an external repo
-    # TODO(alexeagle): run all of them after fixing https://github.com/bazelbuild/rules_typescript/issues/243
-    - "@npm_bazel_typescript//examples/some_library:lib"
     test_flags:
     # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1604
     - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local"
diff --git a/BUILD.bazel b/BUILD.bazel
index 74d8f24..d542231 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -22,48 +22,19 @@
 load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package")
 load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "js_library")
 
-# ts_library defaults to this label in the top-level package.
-# Point to where the file actually lives.
-alias(
-    name = "tsconfig.json",
-    actual = "//examples:tsconfig.json",
-    visibility = ["//visibility:public"],
-)
-
-exports_files(["LICENSE"])
+exports_files(["LICENSE", "tsconfig.json"])
 
 gazelle(
     name = "gazelle",
     prefix = "github.com/bazelbuild/rules_typescript",
 )
 
-# Runtime libraries needed by the protobufjs library.
-# Any JS code produced by the ts_proto_library rule has a runtime dependency on these scripts.
-js_library(
-    name = "protobufjs_bootstrap_scripts",
-    srcs = [
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/long:dist/long.js",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/protobufjs:dist/minimal/protobuf.min.js",
-    ],
-    # Make devmode loading work when it does require("protobufjs/minimal")
-    # so this is shimmed to define it to equal global.protobuf
-    amd_names = {
-        "long": "Long",
-        "protobufjs/minimal": "protobuf",
-    },
-    visibility = ["//visibility:public"],
-)
-
-
 # This package is included in the npm_bazel_typescript package in rules_nodejs/packages/typescript
 npm_package(
     name = "npm_bazel_typescript_package",
     srcs = [
         "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:npm_package_assets",
-        "//internal:common/compilation.bzl",
-        "//internal:common/json_marshal.bzl",
-        "//internal:common/module_mappings.bzl",
-        "//internal:common/tsconfig.bzl",
+        "//internal:npm_package_assets",
     ],
     deps = [
         "//internal:generated_BUILD",
diff --git a/README.md b/README.md
index 8c999b3..41028ad 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,5 @@
 # build_bazel_rules_typescript
 
-> Looking for documentation for TypeScript bazel rules that used to be here?
-> See https://npmjs.com/package/@bazel/typescript
-
 This repo contains a mirror of some Google-internal bits that support TypeScript development under Bazel.
 
 It contains these utilities:
diff --git a/WORKSPACE b/WORKSPACE
index e6fc9e8..7bb6346 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -12,26 +12,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-workspace(name = "npm_bazel_typescript")
-
-# Load nested npm_bazel_karma repository
-local_repository(
-    name = "npm_bazel_karma",
-    path = "internal/karma",
-)
+workspace(name = "build_bazel_rules_typescript")
 
 # Load our dependencies
 load("//:package.bzl", "rules_typescript_dev_dependencies")
 
 rules_typescript_dev_dependencies()
 
-# Load rules_karma dependencies
-load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies")
-
-rules_karma_dependencies()
-
 # Setup nodejs toolchain
-load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install")
+load("@build_bazel_rules_nodejs//:defs.bzl", "yarn_install")
 
 # Use a bazel-managed npm dependency, allowing us to test resolution to these paths
 yarn_install(
@@ -40,9 +29,6 @@
     yarn_lock = "//examples/bazel_managed_deps:yarn.lock",
 )
 
-# Install a hermetic version of node.
-node_repositories()
-
 # Download npm dependencies
 yarn_install(
     name = "npm",
@@ -50,6 +36,9 @@
     yarn_lock = "//:yarn.lock",
 )
 
+load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies")
+install_bazel_dependencies()
+
 # Setup rules_go toolchain
 load("@io_bazel_rules_go//go:def.bzl", "go_register_toolchains", "go_rules_dependencies")
 
@@ -67,21 +56,6 @@
 
 ts_setup_dev_workspace()
 
-# Dependencies for generating documentation
-load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories")
-
-sass_repositories()
-
-# Setup rules_webtesting toolchain
-load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories")
-
-web_test_repositories()
-
-# Setup browser repositories
-load("@npm_bazel_karma//:browser_repositories.bzl", "browser_repositories")
-
-browser_repositories()
-
 local_repository(
     name = "devserver_test_workspace",
     path = "devserver/devserver/test/test-workspace",
diff --git a/defs.bzl b/defs.bzl
deleted file mode 100644
index 2e223e8..0000000
--- a/defs.bzl
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-""" Public API surface is re-exported here.
-
-Users should not load files under "/internal"
-"""
-
-load("//internal/devserver:ts_devserver.bzl", _ts_devserver = "ts_devserver_macro")
-load("//internal/protobufjs:ts_proto_library.bzl", _ts_proto_library = "ts_proto_library")
-load("//internal:build_defs.bzl", _ts_library = "ts_library_macro")
-load("//internal:ts_config.bzl", _ts_config = "ts_config")
-load("//internal:ts_repositories.bzl", _ts_setup_workspace = "ts_setup_workspace")
-
-ts_setup_workspace = _ts_setup_workspace
-ts_library = _ts_library
-ts_config = _ts_config
-ts_devserver = _ts_devserver
-
-ts_proto_library = _ts_proto_library
-# DO NOT ADD MORE rules here unless they appear in the generated docsite.
-# Run yarn skydoc to re-generate the docsite.
diff --git a/devserver/devserver/devserver_test.go b/devserver/devserver/devserver_test.go
index 1fa9129..0c0ba56 100644
--- a/devserver/devserver/devserver_test.go
+++ b/devserver/devserver/devserver_test.go
@@ -47,9 +47,9 @@
 	handler := CreateFileHandler("/app.js", "manifest.MF", []string{
 		// This verifies that we can resolve relatively to the current package. Usually the
 		// devserver Bazel rule adds the current package here.
-		"npm_bazel_typescript/devserver/devserver",
+		"build_bazel_rules_typescript/devserver/devserver",
 		// Verifies that we can specify subfolders of workspaces
-		"npm_bazel_typescript/devserver/devserver/test",
+		"build_bazel_rules_typescript/devserver/devserver/test",
 		// Verifies that we can specify external workspaces as root dirs.
 		"devserver_test_workspace",
 		// Verifies that we can specify subfolders from external workspaces.
diff --git a/examples/BUILD.bazel b/examples/BUILD.bazel
deleted file mode 100644
index a5a3072..0000000
--- a/examples/BUILD.bazel
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-load("//:defs.bzl", "ts_config")
-load("//internal:defaults.bzl", "ts_library")
-
-package(default_visibility = ["//visibility:public"])
-
-exports_files(["tsconfig.json"])
-
-ts_library(
-    name = "types",
-    srcs = ["types.d.ts"],
-)
-
-ts_library(
-    name = "foo_ts_library",
-    srcs = ["foo.ts"],
-    tsconfig = ":tsconfig.json",
-    deps = [
-        ":types",
-        "//examples/generated_ts",
-    ],
-)
-
-ts_library(
-    name = "bar_ts_library",
-    srcs = ["bar.ts"],
-    tsconfig = ":tsconfig-bar.json",
-    deps = [
-        ":foo_ts_library",
-        "//examples/generated_ts",
-        "//examples/some_library:lib",
-        "@npm//typescript",
-        # Example of using the `@npm//@types` target to depend on all
-        # @types packages and with the types attribute of tsconfig not
-        # specified. In this case, typescript will automatically discover
-        # all types under node_modules/@types and included them in the compile.
-        # See getAutomaticTypeDirectiveNames in
-        # https://github.com/Microsoft/TypeScript/blob/master/src/compiler/moduleNameResolver.ts.
-        "@npm//@types",
-    ],
-)
-
-ts_config(
-    name = "tsconfig-test",
-    src = "tsconfig-test.json",
-    deps = [":tsconfig.json"],
-)
diff --git a/examples/app/BUILD.bazel b/examples/app/BUILD.bazel
deleted file mode 100644
index 89842d1..0000000
--- a/examples/app/BUILD.bazel
+++ /dev/null
@@ -1,45 +0,0 @@
-load("@build_bazel_rules_nodejs//:defs.bzl", "http_server", "rollup_bundle")
-load("//:defs.bzl", "ts_devserver")
-load("//internal:defaults.bzl", "ts_library")
-
-ts_library(
-    name = "app",
-    srcs = ["app.ts"],
-)
-
-ts_devserver(
-    name = "devserver",
-    port = 8080,
-    # This is the path we'll request from the browser, see index.html
-    serving_path = "/bundle.min.js",
-    # The devserver can serve our static files too
-    static_files = ["index.html"],
-    # We'll collect all the devmode JS sources from these TypeScript libraries
-    deps = [":app"],
-)
-
-rollup_bundle(
-    name = "bundle",
-    entry_point = "examples/app/app",
-    deps = [":app"],
-)
-
-http_server(
-    name = "prodserver",
-    data = [
-        "index.html",
-        ":bundle",
-    ],
-)
-
-ts_library(
-    name = "e2e",
-    testonly = 1,
-    srcs = ["app_e2e_test.ts"],
-    tsconfig = "//examples:tsconfig-test",
-    deps = [
-        "@npm//@types/jasmine",
-        "@npm//@types/node",
-        "@npm//protractor",
-    ],
-)
diff --git a/examples/app/app.ts b/examples/app/app.ts
deleted file mode 100644
index 6c1c6e9..0000000
--- a/examples/app/app.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-const el: HTMLDivElement = document.createElement('div');
-el.innerText = 'Hello, TypeScript';
-el.className = 'ts1';
-document.body.appendChild(el);
diff --git a/examples/app/app_e2e_test.ts b/examples/app/app_e2e_test.ts
deleted file mode 100644
index 1ce56fb..0000000
--- a/examples/app/app_e2e_test.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import {browser, by, element, ExpectedConditions} from 'protractor';
-
-// This test uses Protractor without Angular, so disable Angular features
-browser.waitForAngularEnabled(false);
-
-// Since we don't have a protractor bazel rule yet, the test is brought up in
-// parallel with building the service under test. So the timeout must include
-// compiling the application as well as starting the server.
-const timeoutMs = 90 * 1000;
-
-describe('app', () => {
-  beforeAll(() => {
-    browser.get('');
-    // Don't run any specs until we see a <div> on the page.
-    browser.wait(
-        ExpectedConditions.presenceOf(element(by.css('div.ts1'))),
-        timeoutMs);
-  }, timeoutMs);
-
-  it('should display: Hello, TypeScript', (done) => {
-    const div = element(by.css('div.ts1'));
-    div.getText().then(t => expect(t).toEqual(`Hello, TypeScript`));
-    done();
-  });
-});
diff --git a/examples/app/index.html b/examples/app/index.html
deleted file mode 100644
index 8af1e7f..0000000
--- a/examples/app/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html>
-
-<!--
-   This HTML file is an example of how you can write and serve your own
-   index page. It's not required for ts_devserver - if no index.html file is
-   found to serve, a simple one will be generated.
--->
-<html>
-  <head>
-    <title>ts_devserver example</title>
-  </head>
-  <body>
-    <!--
-      For development mode, this script will be bundled on-the-fly by
-      the devserver, based on the latest JS files built by Bazel.
-      For production, you should be able to use the same index.html file, but
-      this JS resource would be served from a static file.
-    -->
-    <script src="/bundle.min.js"></script>
-  </body>
-</html>
diff --git a/examples/bar.ts b/examples/bar.ts
deleted file mode 100644
index d363ae3..0000000
--- a/examples/bar.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * @license
- * Copyright 2017 The Bazel Authors. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- *
- * You may obtain a copy of the License at
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import {Greeter} from 'npm_bazel_typescript/examples/foo';
-import {a} from 'npm_bazel_typescript/examples/generated_ts/foo';
-// Repro for #31, should automatically discover @types/node
-import * as fs from 'fs';
-import {cool} from 'some-lib';
-import * as ts from 'typescript';
-
-import('./foo').then(({greeter}) => {
-  console.log(Greeter, fs, cool, ts, greeter, a);
-});
\ No newline at end of file
diff --git a/examples/bazel_managed_deps/BUILD.bazel b/examples/bazel_managed_deps/BUILD.bazel
deleted file mode 100644
index 43c5bd6..0000000
--- a/examples/bazel_managed_deps/BUILD.bazel
+++ /dev/null
@@ -1,8 +0,0 @@
-load("//internal:defaults.bzl", "ts_library")
-
-ts_library(
-    name = "bazel_managed_deps",
-    srcs = ["index.ts"],
-    node_modules = "@build_bazel_rules_typescript_internal_bazel_managed_deps//:node_modules",
-    tsconfig = ":tsconfig.json",
-)
diff --git a/examples/bazel_managed_deps/README.md b/examples/bazel_managed_deps/README.md
deleted file mode 100644
index c0cff30..0000000
--- a/examples/bazel_managed_deps/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Bazel-managed deps
-
-The NodeJS rules allow you to skip the install step, and have Bazel run yarn/npm for you.
-
-See the /WORKSPACE file where we declare a workspace called
-build_bazel_rules_typescript_internal_bazel_managed_deps
-that will be installed automatically by Bazel.
-
-We then can build the code in this directory without installing the package.json located here.
-
-Regression test for
-https://github.com/bazelbuild/rules_typescript/issues/179
diff --git a/examples/bazel_managed_deps/index.ts b/examples/bazel_managed_deps/index.ts
deleted file mode 100644
index 5b3b16a..0000000
--- a/examples/bazel_managed_deps/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-import * as t from 'three';
diff --git a/examples/bazel_managed_deps/package.json b/examples/bazel_managed_deps/package.json
deleted file mode 100644
index 4a39fc5..0000000
--- a/examples/bazel_managed_deps/package.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "name": "bazel_managed_deps",
-  "devDependencies": {
-    "@types/three": "^0.91.10",
-    "three": "^0.92.0",
-    "typescript": "^2.8.3"
-  }
-}
diff --git a/examples/bazel_managed_deps/tsconfig.json b/examples/bazel_managed_deps/tsconfig.json
deleted file mode 100644
index aee0ec9..0000000
--- a/examples/bazel_managed_deps/tsconfig.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "compilerOptions": {
-    "strict": true
-  }
-}
diff --git a/examples/bazel_managed_deps/yarn.lock b/examples/bazel_managed_deps/yarn.lock
deleted file mode 100644
index 4ba79ac..0000000
--- a/examples/bazel_managed_deps/yarn.lock
+++ /dev/null
@@ -1,21 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@types/three@^0.91.10":
-  version "0.91.10"
-  resolved "https://registry.yarnpkg.com/@types/three/-/three-0.91.10.tgz#996b82993902d564daa1c29d0c3d653f2b15243a"
-  dependencies:
-    "@types/webvr-api" "*"
-
-"@types/webvr-api@*":
-  version "0.0.34"
-  resolved "https://registry.yarnpkg.com/@types/webvr-api/-/webvr-api-0.0.34.tgz#8fa49028de925c7b8bce3d559d3374ce2c89ee28"
-
-three@^0.92.0:
-  version "0.92.0"
-  resolved "https://registry.yarnpkg.com/three/-/three-0.92.0.tgz#8d3d1f5af890e62da7f4cb45d20c09fa51057dcd"
-
-typescript@^2.8.3:
-  version "2.8.3"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.3.tgz#5d817f9b6f31bb871835f4edf0089f21abe6c170"
diff --git a/examples/devmode_consumer/BUILD.bazel b/examples/devmode_consumer/BUILD.bazel
deleted file mode 100644
index 78d6a46..0000000
--- a/examples/devmode_consumer/BUILD.bazel
+++ /dev/null
@@ -1,15 +0,0 @@
-load(":devmode_consumer.bzl", "devmode_consumer")
-
-devmode_consumer(
-    name = "devmode_consumer",
-    deps = ["//examples:bar_ts_library"],
-)
-
-sh_test(
-    name = "devmode_consumer_test",
-    srcs = ["devmode_consumer_test.sh"],
-    data = [
-        ":devmode_consumer",
-        "@bazel_tools//tools/bash/runfiles",
-    ],
-)
diff --git a/examples/devmode_consumer/devmode_consumer.bzl b/examples/devmode_consumer/devmode_consumer.bzl
deleted file mode 100644
index b23a4b4..0000000
--- a/examples/devmode_consumer/devmode_consumer.bzl
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Example of a rule that requires es2015 (devmode) inputs.
-"""
-
-load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect")
-
-def _devmode_consumer(ctx):
-    files = depset()
-
-    # Since we apply the sources_aspect to our deps below, we can iterate through
-    # the deps and grab the attribute attached by that aspect, which is called
-    # "node_sources".
-    # See https://github.com/bazelbuild/rules_nodejs/blob/master/internal/node.bzl
-    for d in ctx.attr.deps:
-        files = depset(transitive = [files, d.node_sources])
-
-    return [DefaultInfo(
-        files = files,
-        runfiles = ctx.runfiles(files.to_list()),
-    )]
-
-devmode_consumer = rule(
-    implementation = _devmode_consumer,
-    attrs = {
-        "deps": attr.label_list(aspects = [sources_aspect]),
-    },
-)
diff --git a/examples/devmode_consumer/devmode_consumer_test.sh b/examples/devmode_consumer/devmode_consumer_test.sh
deleted file mode 100755
index eb51180..0000000
--- a/examples/devmode_consumer/devmode_consumer_test.sh
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash
-set -e
-
-# --- begin runfiles.bash initialization ---
-# Source the runfiles library:
-# https://github.com/bazelbuild/bazel/blob/master/tools/bash/runfiles/runfiles.bash
-# The runfiles library defines rlocation, which is a platform independent function
-# used to lookup the runfiles locations. This code snippet is needed at the top
-# of scripts that use rlocation to lookup the location of runfiles.bash and source it
-if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
-    if [[ -f "$0.runfiles_manifest" ]]; then
-      export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest"
-    elif [[ -f "$0.runfiles/MANIFEST" ]]; then
-      export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST"
-    elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
-      export RUNFILES_DIR="$0.runfiles"
-    fi
-fi
-if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
-  source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash"
-elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
-  source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \
-            "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)"
-else
-  echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash"
-  exit 1
-fi
-# --- end runfiles.bash initialization ---
-
-readonly LIBRARY_JS=$(cat $(rlocation "npm_bazel_typescript/examples/some_library/library.js"))
-readonly BAR_JS=$(cat $(rlocation "npm_bazel_typescript/examples/bar.js"))
-readonly FOO_JS=$(cat $(rlocation "npm_bazel_typescript/examples/foo.js"))
-
-# should produce named UMD modules
-if [[ "$LIBRARY_JS" != *"define(\"some-lib\""* ]]; then
-  echo "Expected library.js to declare module named some-lib, but was"
-  echo "$LIBRARY_JS"
-  exit 1
-fi
-
-# should produce named UMD modules
-if [[ "$BAR_JS" != *"define(\"npm_bazel_typescript/examples/bar\""* ]]; then
-  echo "Expected bar.js to declare named module, but was"
-  echo "$BAR_JS"
-  exit 1
-fi
-
-# should give a name to required modules
-if [[ "$BAR_JS" != *"require(\"npm_bazel_typescript/examples/foo\")"* ]]; then
-  echo "Expected bar.js to require named module foo, but was"
-  echo "$BAR_JS"
-  exit 1
-fi
-
-# should give a name to required modules from other compilation unit
-if [[ "$BAR_JS" != *"require(\"some-lib\")"* ]]; then
-  echo "Expected bar.js to require named module library, but was"
-  echo "$BAR_JS"
-  exit 1
-fi
-
-# should give a name to required generated modules without bazel-bin
-if [[ "$BAR_JS" != *"require(\"npm_bazel_typescript/examples/generated_ts/foo\")"* ]]; then
-  echo "Expected bar.js to require generated named module foo, but was"
-  echo "$BAR_JS"
-  exit 1
-fi
-
-# should not give a module name to external modules
-if [[ "$BAR_JS" != *"require(\"typescript\")"* ]]; then
-  echo "Expected bar.js to require typescript by its original name, but was"
-  echo "$BAR_JS"
-  exit 1
-fi
-
-# should produce named UMD modules
-if [[ "$FOO_JS" != *"define(\"npm_bazel_typescript/examples/foo\""* ]]; then
-  echo "Expected foo.js to declare named module, but was"
-  echo "$FOO_JS"
-  exit 1
-fi
-
-# should produce es2015 classes
-if [[ "$FOO_JS" != *"class Greeter"* ]]; then
-  echo "Expected foo.js produce a es2015, but was"
-  echo "$FOO_JS"
-  exit 1
-fi
\ No newline at end of file
diff --git a/examples/devserver/BUILD.bazel b/examples/devserver/BUILD.bazel
deleted file mode 100644
index 249e728..0000000
--- a/examples/devserver/BUILD.bazel
+++ /dev/null
@@ -1,44 +0,0 @@
-load("//:defs.bzl", "ts_devserver")
-load("//internal:defaults.bzl", "ts_library")
-
-ts_library(
-    name = "app",
-    srcs = ["app.ts"],
-    tsconfig = "//examples:tsconfig.json",
-    deps = [
-        "@npm//@types/node",
-    ],
-)
-
-ts_devserver(
-    name = "devserver",
-    additional_root_paths = [
-        "npm/node_modules/tslib",
-        "npm_bazel_typescript/examples/devserver/",
-    ],
-    port = 80,
-    serving_path = "/bundle.js",
-    static_files = [
-        # Files you want to import from the "additional_root_paths", still need to be explicitly specified
-        # as files that should be served. The root paths just make it more convenient to import those dependencies.
-        "@npm//tslib",
-        ":say-hello",
-        ":print-host",
-        ":index.html",
-    ],
-    # Dependencies that produce JavaScript output will be automatically picked up by ConcatJS and will be
-    # part of the serving_path bundle.
-    deps = [":app"],
-)
-
-genrule(
-    name = "say-hello",
-    outs = ["say-hello.js"],
-    cmd = "echo 'console.log(\"Hello!\")' > $@",
-)
-
-genrule(
-    name = "print-host",
-    outs = ["test/print-host.js"],
-    cmd = "echo 'console.log(location.host)' > $@",
-)
diff --git a/examples/devserver/app.ts b/examples/devserver/app.ts
deleted file mode 100644
index a200b40..0000000
--- a/examples/devserver/app.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-const body = document.body;
-const textElement = document.createElement('span');
-
-textElement.innerText = 'Hello from TypeScript';
-
-// Append element to the body.
-body.appendChild(textElement);
\ No newline at end of file
diff --git a/examples/devserver/index.html b/examples/devserver/index.html
deleted file mode 100644
index 991a2f1..0000000
--- a/examples/devserver/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<html>
-<head>
-    <title>Devserver example</title>
-</head>
-<body>
-    <!-- Scripts loaded through the additional_root_paths. -->
-    <script src="/say-hello.js"></script>
-    <script src="/tslib.js"></script>
-
-    <!-- Bundle that comes from concatjs. Specified with serving_path. -->
-    <script src="/bundle.js"></script>
-
-    <!-- Script that is imported relatively to the package directory. -->
-    <script src="/test/print-host.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/examples/es6_output/BUILD.bazel b/examples/es6_output/BUILD.bazel
deleted file mode 100644
index b5ff91c..0000000
--- a/examples/es6_output/BUILD.bazel
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-load(":es6_consumer.bzl", "es6_consumer")
-
-package(default_visibility = ["//visibility:public"])
-
-es6_consumer(
-    name = "es6_output",
-    deps = ["//examples:bar_ts_library"],
-)
-
-sh_test(
-    name = "es6_output_test",
-    srcs = ["es6_output_test.sh"],
-    data = [
-        ":es6_output",
-        "@bazel_tools//tools/bash/runfiles",
-    ],
-)
diff --git a/examples/es6_output/es6_consumer.bzl b/examples/es6_output/es6_consumer.bzl
deleted file mode 100644
index 16726ba..0000000
--- a/examples/es6_output/es6_consumer.bzl
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Example of a rule that requires ES6 inputs.
-"""
-
-load("@build_bazel_rules_nodejs//internal/common:collect_es6_sources.bzl", "collect_es6_sources")
-
-def _es6_consumer(ctx):
-    es6_sources = collect_es6_sources(ctx)
-
-    return [DefaultInfo(
-        files = es6_sources,
-        runfiles = ctx.runfiles(es6_sources.to_list()),
-    )]
-
-es6_consumer = rule(
-    implementation = _es6_consumer,
-    attrs = {
-        "deps": attr.label_list(),
-    },
-)
diff --git a/examples/es6_output/es6_output_test.sh b/examples/es6_output/es6_output_test.sh
deleted file mode 100755
index c6a0102..0000000
--- a/examples/es6_output/es6_output_test.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/bash
-set -e
-
-# --- begin runfiles.bash initialization ---
-# Source the runfiles library:
-# https://github.com/bazelbuild/bazel/blob/master/tools/bash/runfiles/runfiles.bash
-# The runfiles library defines rlocation, which is a platform independent function
-# used to lookup the runfiles locations. This code snippet is needed at the top
-# of scripts that use rlocation to lookup the location of runfiles.bash and source it
-if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
-    if [[ -f "$0.runfiles_manifest" ]]; then
-      export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest"
-    elif [[ -f "$0.runfiles/MANIFEST" ]]; then
-      export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST"
-    elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
-      export RUNFILES_DIR="$0.runfiles"
-    fi
-fi
-if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
-  source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash"
-elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
-  source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \
-            "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)"
-else
-  echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash"
-  exit 1
-fi
-# --- end runfiles.bash initialization ---
-
-readonly FOO_JS=$(cat $(rlocation "npm_bazel_typescript/examples/es6_output/es6_output.es6/examples/foo.js"))
-readonly BAR_JS=$(cat $(rlocation "npm_bazel_typescript/examples/es6_output/es6_output.es6/examples/bar.js"))
-readonly LIBRARY_JS=$(cat $(rlocation "npm_bazel_typescript/examples/es6_output/es6_output.es6/examples/some_library/library.js"))
-
-# should not down-level ES2015 syntax, eg. `class`
-if [[ "$FOO_JS" != *"class Greeter"* ]]; then
-  echo "Expected foo.js to contain 'class Greeter' but was"
-  echo "$FOO_JS"
-  exit 1
-fi
-
-# should not down-level ES Modules
-if [[ "$LIBRARY_JS" != *"export const cool = 1;"* ]]; then
-  echo "Expected library.js to contain 'export const cool = 1;' but was"
-  echo "$LIBRARY_JS"
-  exit 1
-fi
-
-# should not down-level dynamic import
-if [[ "$BAR_JS" != *"import('./foo')"* ]]; then
-  echo "Expected bar.js to contain 'import('./foo')' but was"
-  echo "$BAR_JS"
-  exit 1
-fi
diff --git a/examples/foo.ts b/examples/foo.ts
deleted file mode 100644
index b05c8ce..0000000
--- a/examples/foo.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * @license
- * Copyright 2017 The Bazel Authors. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- *
- * You may obtain a copy of the License at
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import {Polite} from './types';
-
-export class Greeter implements Polite {
-  constructor(public greeting: string) {}
-  greet(): Promise<string> {
-    return Promise.resolve('<h1>' + this.greeting + '</h1>');
-  }
-}
-
-export const greeter = new Greeter('Hello, world!');
-greeter.greet().then(msg => { document.body.innerHTML = msg; });
diff --git a/examples/generated_ts/BUILD.bazel b/examples/generated_ts/BUILD.bazel
deleted file mode 100644
index d786981..0000000
--- a/examples/generated_ts/BUILD.bazel
+++ /dev/null
@@ -1,14 +0,0 @@
-load("//internal:defaults.bzl", "ts_library")
-
-package(default_visibility = ["//visibility:public"])
-
-genrule(
-    name = "foo_ts",
-    outs = ["foo.ts"],
-    cmd = "echo 'export const a = 1;' > $@",
-)
-
-ts_library(
-    name = "generated_ts",
-    srcs = [":foo.ts"],
-)
diff --git a/examples/googmodule/BUILD.bazel b/examples/googmodule/BUILD.bazel
deleted file mode 100644
index efaa52e..0000000
--- a/examples/googmodule/BUILD.bazel
+++ /dev/null
@@ -1,23 +0,0 @@
-load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test")
-load("//examples/devmode_consumer:devmode_consumer.bzl", "devmode_consumer")
-load("//internal:defaults.bzl", "ts_library")
-
-ts_library(
-    name = "googmodule",
-    srcs = ["a.ts"],
-    tsconfig = "tsconfig.json",
-)
-
-devmode_consumer(
-    name = "devmode_output",
-    deps = [":googmodule"],
-)
-
-jasmine_node_test(
-    name = "googmodule_output_test",
-    srcs = ["googmodule_output_test.js"],
-    data = [
-        ":devmode_output",
-        "@npm//jasmine",
-    ],
-)
diff --git a/examples/googmodule/a.ts b/examples/googmodule/a.ts
deleted file mode 100644
index 4f633f6..0000000
--- a/examples/googmodule/a.ts
+++ /dev/null
@@ -1 +0,0 @@
-const a: number = 1;
diff --git a/examples/googmodule/googmodule_output_test.js b/examples/googmodule/googmodule_output_test.js
deleted file mode 100644
index 82d9e20..0000000
--- a/examples/googmodule/googmodule_output_test.js
+++ /dev/null
@@ -1,20 +0,0 @@
-const fs = require('fs');
-
-describe('googmodule', () => {
-  let output;
-  beforeAll(() => {
-    output = require.resolve(
-        'npm_bazel_typescript/examples/googmodule/a.js');
-  });
-
-  it('should have goog module syntax in devmode', () => {
-    expect(fs.readFileSync(output, {encoding: 'utf-8'}))
-        .toContain(
-            `goog.module('npm_bazel_typescript.examples.googmodule.a')`);
-  });
-  it('should have tsickle type annotations', () => {
-    expect(fs.readFileSync(output, {
-      encoding: 'utf-8'
-    })).toContain(`@type {number}`);
-  });
-});
\ No newline at end of file
diff --git a/examples/googmodule/tsconfig.json b/examples/googmodule/tsconfig.json
deleted file mode 100644
index c3c478f..0000000
--- a/examples/googmodule/tsconfig.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "compilerOptions": {
-        // Explicitly set types settings so typescript doesn't auto-discover types.
-        // If all types are discovered then all types need to be included as deps
-        // or typescript may error out with TS2688: Cannot find type definition file for 'foo'.
-        "types": []
-    },
-    "bazelOptions": {
-        "tsickle": true,
-        "googmodule": true
-    }
-}
\ No newline at end of file
diff --git a/examples/protocol_buffers/BUILD.bazel b/examples/protocol_buffers/BUILD.bazel
deleted file mode 100644
index 4594ffe..0000000
--- a/examples/protocol_buffers/BUILD.bazel
+++ /dev/null
@@ -1,139 +0,0 @@
-load("@build_bazel_rules_nodejs//:defs.bzl", "http_server", "rollup_bundle")
-load("@io_bazel_rules_go//go:def.bzl", "go_library")
-load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
-load("@npm_bazel_karma//:defaults.bzl", "ts_web_test_suite")
-load(
-    "//:defs.bzl",
-    "ts_devserver",
-    "ts_proto_library",
-)
-load("//internal:defaults.bzl", "ts_library")
-
-proto_library(
-    name = "tire_proto",
-    srcs = ["tire.proto"],
-)
-
-proto_library(
-    name = "car_proto",
-    srcs = ["car.proto"],
-    deps = [":tire_proto"],
-)
-
-ts_proto_library(
-    # The result will be "car.d.ts" named after this target.
-    # We could use the output_name attribute if we want the output named
-    # differently than the target.
-    name = "car",
-    deps = [":car_proto"],
-)
-
-ts_library(
-    name = "test_lib",
-    testonly = True,
-    srcs = ["car.spec.ts"],
-    tsconfig = "//examples:tsconfig-test",
-    deps = [
-        ":car",
-        "@npm//@types/jasmine",
-        "@npm//@types/long",
-        "@npm//@types/node",
-        "@npm//long",
-    ],
-)
-
-ts_web_test_suite(
-    name = "test",
-    bootstrap = ["@npm_bazel_typescript//:protobufjs_bootstrap_scripts"],
-    browsers = [
-        "@io_bazel_rules_webtesting//browsers:chromium-local",
-        "@io_bazel_rules_webtesting//browsers:firefox-local",
-    ],
-    deps = ["test_lib"],
-)
-
-ts_library(
-    name = "app",
-    srcs = ["app.ts"],
-    deps = [":car"],
-)
-
-ts_devserver(
-    name = "devserver",
-    bootstrap = ["@npm_bazel_typescript//:protobufjs_bootstrap_scripts"],
-    entry_module = "npm_bazel_typescript/examples/protocol_buffers/app",
-    port = 8080,
-    deps = [":bundle"],
-)
-
-# Test for production mode
-rollup_bundle(
-    name = "bundle",
-    entry_point = "examples/protocol_buffers/app",
-    # TODO(alexeagle): we should be able to get this from //:protobufjs_bootstrap_scripts
-    # and automatically plumb it through to Rollup.
-    globals = {
-        "long": "Long",
-        "protobufjs/minimal": "protobuf",
-    },
-    deps = [":app"],
-)
-
-# Needed because the prodserver only loads static files that appear under this
-# package.
-genrule(
-    name = "protobufjs",
-    srcs = [
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/protobufjs:dist/minimal/protobuf.min.js",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/long:dist/long.js",
-    ],
-    outs = [
-        "protobuf.min.js",
-        "long.js",
-    ],
-    cmd = "outs=($(OUTS)); d=$$(dirname $${outs[0]}); for s in $(SRCS); do cp $$s $$d; done",
-)
-
-http_server(
-    name = "prodserver",
-    data = [
-        "index.html",
-        ":bundle",
-        ":protobufjs",
-    ],
-)
-
-ts_library(
-    name = "e2e",
-    testonly = 1,
-    srcs = ["app_e2e_test.ts"],
-    tsconfig = "//examples:tsconfig-test",
-    deps = [
-        "@npm//@types/jasmine",
-        "@npm//@types/node",
-        "@npm//protractor",
-    ],
-)
-
-proto_library(
-    name = "rules_typescript_proto",
-    srcs = [
-        "car.proto",
-        "tire.proto",
-    ],
-    visibility = ["//visibility:public"],
-)
-
-go_proto_library(
-    name = "rules_typescript_go_proto",
-    importpath = "github.com/bazelbuild/rules_typescript/examples/protocol_buffers",
-    proto = ":rules_typescript_proto",
-    visibility = ["//visibility:public"],
-)
-
-go_library(
-    name = "go_default_library",
-    embed = [":rules_typescript_go_proto"],
-    importpath = "github.com/bazelbuild/rules_typescript/examples/protocol_buffers",
-    visibility = ["//visibility:public"],
-)
diff --git a/examples/protocol_buffers/app.ts b/examples/protocol_buffers/app.ts
deleted file mode 100644
index 0cf23d9..0000000
--- a/examples/protocol_buffers/app.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import {Car} from './car';
-
-const serverResponse = `{"make": "Porsche"}`;
-const car = Car.create(JSON.parse(serverResponse));
-const el: HTMLDivElement = document.createElement('div');
-el.innerText = `Car from server: ${car.make}`;
-el.className = 'ts1';
-document.body.appendChild(el);
diff --git a/examples/protocol_buffers/app_e2e_test.ts b/examples/protocol_buffers/app_e2e_test.ts
deleted file mode 100644
index 639392e..0000000
--- a/examples/protocol_buffers/app_e2e_test.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import {browser, by, element, ExpectedConditions} from 'protractor';
-
-// This test uses Protractor without Angular, so disable Angular features
-browser.waitForAngularEnabled(false);
-
-// Since we don't have a protractor bazel rule yet, the test is brought up in
-// parallel with building the service under test. So the timeout must include
-// compiling the application as well as starting the server.
-const timeoutMs = 90 * 1000;
-
-describe('protocol_buffers', () => {
-  beforeAll(() => {
-    browser.get('');
-    // Don't run any specs until we see a <div> on the page.
-    browser.wait(
-        ExpectedConditions.presenceOf(element(by.css('div.ts1'))),
-        timeoutMs);
-  }, timeoutMs);
-
-  it('should display: Car from server: Porsche', (done) => {
-    const div = element(by.css('div.ts1'));
-    div.getText().then(t => expect(t).toEqual(`Car from server: Porsche`));
-    done();
-  });
-});
diff --git a/examples/protocol_buffers/car.proto b/examples/protocol_buffers/car.proto
deleted file mode 100644
index d8b04d1..0000000
--- a/examples/protocol_buffers/car.proto
+++ /dev/null
@@ -1,12 +0,0 @@
-syntax = "proto3";
-
-import "examples/protocol_buffers/tire.proto";
-
-message Car {
-  string make = 1;
-  string model = 2;
-  int32 year = 3;
-  Tire front_tires = 4;
-  Tire rear_tires = 5;
-  int64 mileage = 6;
-}
diff --git a/examples/protocol_buffers/car.spec.ts b/examples/protocol_buffers/car.spec.ts
deleted file mode 100644
index 803b9df..0000000
--- a/examples/protocol_buffers/car.spec.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import {Car} from './car';
-import Long = require('long');
-
-describe('protocol buffers', () => {
-
-  it('allows creation of an object described by proto', () => {
-    const pontiac = Car.create({
-      make: "pontiac",
-      frontTires: {
-        width: 225,
-        aspectRatio: 65,
-        construction: 'R',
-        diameter: 17,
-      },
-    });
-    expect(pontiac.make).toEqual('pontiac');
-    if (!pontiac.frontTires) {
-      fail('Should have frontTires set');
-    } else {
-      expect(pontiac.frontTires.width).toEqual(225);
-    }
-  });
-
-  // Asserts that longs are handled correctly.
-  // This value comes from https://github.com/dcodeIO/long.js#background
-  it('handles long values correctly', () => {
-    const pontiac = Car.create({
-      make: "pontiac",
-      // Long.MAX_VALUE
-      mileage: new Long(0xFFFFFFFF, 0x7FFFFFFF),
-    });
-    const object = Car.toObject(pontiac, {longs: String});
-    expect(object["mileage"]).toEqual("9223372036854775807");
-  });
-});
diff --git a/examples/protocol_buffers/index.html b/examples/protocol_buffers/index.html
deleted file mode 100644
index 6f8690e..0000000
--- a/examples/protocol_buffers/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-<head>
-    <title>protocol_buffers example</title>
-</head>
-<body>
-<script src="/protobuf.min.js"></script>
-<script src="/long.js"></script>
-<script src="/bundle.min.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/examples/protocol_buffers/tire.proto b/examples/protocol_buffers/tire.proto
deleted file mode 100644
index a7de133..0000000
--- a/examples/protocol_buffers/tire.proto
+++ /dev/null
@@ -1,11 +0,0 @@
-syntax = "proto3";
-
-message Tire {
-  string type = 1;
-  int32 width = 2;
-  int32 aspect_ratio = 3;
-  string construction = 4;
-  int32 diameter = 5;
-  int32 load_index = 6;
-  string speed_rating = 7;
-}
diff --git a/examples/some_library/BUILD.bazel b/examples/some_library/BUILD.bazel
deleted file mode 100644
index 2668d2c..0000000
--- a/examples/some_library/BUILD.bazel
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-load("//internal:defaults.bzl", "ts_library")
-
-package(default_visibility = ["//visibility:public"])
-
-ts_library(
-    name = "lib",
-    srcs = ["library.ts"],
-    # Allow this library to be imported from `some-lib`
-    module_name = "some-lib",
-    # The imported path should be the library.d.ts file
-    module_root = "library",
-)
diff --git a/examples/some_library/library.ts b/examples/some_library/library.ts
deleted file mode 100644
index 1cc6cf3..0000000
--- a/examples/some_library/library.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * @license
- * Copyright 2017 The Bazel Authors. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- *
- * You may obtain a copy of the License at
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-export const cool = 1;
diff --git a/examples/some_module/BUILD.bazel b/examples/some_module/BUILD.bazel
deleted file mode 100644
index ecd8224..0000000
--- a/examples/some_module/BUILD.bazel
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary")
-load("//internal:defaults.bzl", "ts_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# We compile this library with the module name "sm" to make it possible to
-# use `import {} from 'sm';` both at type-check time (we include the mapping in
-# the paths map in tsconfig) as well as runtime (we patch the nodejs module
-# loader to discover the path in the runfiles).
-ts_library(
-    name = "some_module",
-    srcs = ["index.ts"],
-    module_name = "sm",
-)
-
-ts_library(
-    name = "main",
-    srcs = ["main.ts"],
-    deps = [":some_module"],
-)
-
-nodejs_binary(
-    name = "bin",
-    data = [
-        ":main",
-        ":some_module",
-    ],
-    entry_point = "npm_bazel_typescript/examples/some_module/main.js",
-)
-
-sh_test(
-    name = "module_load_test",
-    srcs = ["module_load_test.sh"],
-    data = [
-        ":bin",
-        "@bazel_tools//tools/bash/runfiles",
-    ],
-)
diff --git a/examples/some_module/index.ts b/examples/some_module/index.ts
deleted file mode 100644
index 0f0c413..0000000
--- a/examples/some_module/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export function hello() {
-  console.log("hello world");
-}
diff --git a/examples/some_module/main.ts b/examples/some_module/main.ts
deleted file mode 100644
index bb7d422..0000000
--- a/examples/some_module/main.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import {hello} from 'sm';
-
-hello();
-
diff --git a/examples/some_module/module_load_test.sh b/examples/some_module/module_load_test.sh
deleted file mode 100755
index 752979a..0000000
--- a/examples/some_module/module_load_test.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-set -e
-
-# --- begin runfiles.bash initialization ---
-# Source the runfiles library:
-# https://github.com/bazelbuild/bazel/blob/master/tools/bash/runfiles/runfiles.bash
-# The runfiles library defines rlocation, which is a platform independent function
-# used to lookup the runfiles locations. This code snippet is needed at the top
-# of scripts that use rlocation to lookup the location of runfiles.bash and source it
-if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
-    if [[ -f "$0.runfiles_manifest" ]]; then
-      export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest"
-    elif [[ -f "$0.runfiles/MANIFEST" ]]; then
-      export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST"
-    elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
-      export RUNFILES_DIR="$0.runfiles"
-    fi
-fi
-if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
-  source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash"
-elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
-  source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \
-            "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)"
-else
-  echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash"
-  exit 1
-fi
-# --- end runfiles.bash initialization ---
-
-readonly OUT=$($(rlocation "npm_bazel_typescript/examples/some_module/bin"))
-
-if [ "$OUT" != "hello world" ]; then
-  echo "Expected output 'hello world' but was $OUT"
-  exit 1
-fi
diff --git a/examples/testing/BUILD.bazel b/examples/testing/BUILD.bazel
deleted file mode 100644
index 133ee68..0000000
--- a/examples/testing/BUILD.bazel
+++ /dev/null
@@ -1,96 +0,0 @@
-load("@npm_bazel_karma//:defaults.bzl", "karma_web_test_suite", "ts_web_test_suite")
-load("//internal:defaults.bzl", "ts_library")
-
-ts_library(
-    name = "lib",
-    srcs = ["decrement.ts"],
-)
-
-ts_library(
-    name = "tests",
-    testonly = 1,
-    srcs = glob(["*.spec.ts"]),
-    tsconfig = "//examples:tsconfig-test",
-    deps = [
-        ":lib",
-        "@npm//@types/jasmine",
-        "@npm//@types/node",
-    ],
-)
-
-ts_library(
-    name = "tests_setup",
-    testonly = 1,
-    srcs = ["setup_script.ts"],
-    tsconfig = "//examples:tsconfig-test",
-    deps = [
-        "@npm//@types/jasmine",
-        "@npm//@types/node",
-    ],
-)
-
-karma_web_test_suite(
-    name = "testing_karma",
-    browsers = [
-        "@io_bazel_rules_webtesting//browsers:chromium-local",
-        "@io_bazel_rules_webtesting//browsers:firefox-local",
-    ],
-    config_file = ":karma.conf.js",
-    static_files = [
-        "static_script.js",
-    ],
-    runtime_deps = [
-        ":tests_setup",
-    ],
-    deps = [
-        ":tests",
-        "@npm//karma-json-result-reporter",
-    ],
-)
-
-karma_web_test_suite(
-    name = "testing_karma_sauce",
-    browsers = [
-        "@io_bazel_rules_webtesting//browsers/sauce:chrome-win10",
-    ],
-    tags = [
-        "sauce",
-        # TODO(alexeagle): enable on CI once we have set the SAUCE env variables
-        "manual",
-    ],
-    deps = [
-        ":tests",
-    ],
-)
-
-ts_web_test_suite(
-    name = "testing",
-    browsers = [
-        "@io_bazel_rules_webtesting//browsers:chromium-local",
-        "@io_bazel_rules_webtesting//browsers:firefox-local",
-    ],
-    static_files = [
-        "static_script.js",
-    ],
-    runtime_deps = [
-        ":tests_setup",
-    ],
-    deps = [
-        ":tests",
-    ],
-)
-
-ts_web_test_suite(
-    name = "testing_sauce",
-    browsers = [
-        "@io_bazel_rules_webtesting//browsers/sauce:chrome-win10",
-    ],
-    tags = [
-        "sauce",
-        # TODO(alexeagle): enable on CI once we have set the SAUCE env variables
-        "manual",
-    ],
-    deps = [
-        ":tests",
-    ],
-)
diff --git a/examples/testing/decrement.spec.ts b/examples/testing/decrement.spec.ts
deleted file mode 100644
index bf1bd91..0000000
--- a/examples/testing/decrement.spec.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import {decrement} from './decrement';
-
-describe('decrementing', () => {
-  it('should do that', () => {
-    expect(decrement(1)).toBe(0);
-  });
-});
diff --git a/examples/testing/decrement.ts b/examples/testing/decrement.ts
deleted file mode 100644
index 7173ecc..0000000
--- a/examples/testing/decrement.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export function decrement(n: number) {
-  return n - 1;
-}
diff --git a/examples/testing/karma.conf.js b/examples/testing/karma.conf.js
deleted file mode 100644
index f96e698..0000000
--- a/examples/testing/karma.conf.js
+++ /dev/null
@@ -1,12 +0,0 @@
-module.exports = function(config) {
-  config.set({
-    plugins: ['karma-json-result-reporter'],
-    reporters: ['dots', 'progress', 'json-result'],
-    logLevel: config.LOG_DEBUG,
-    colors: false,
-    jsonResultReporter: {
-      outputFile: `${process.env['TEST_UNDECLARED_OUTPUTS_DIR']}/karma-result.json`,
-      isSynchronous: true,
-    },
-  });
-}
diff --git a/examples/testing/setup_script.spec.ts b/examples/testing/setup_script.spec.ts
deleted file mode 100644
index 1b39eff..0000000
--- a/examples/testing/setup_script.spec.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-describe('setup script', () => {
-  it('should load before the spec', async () => {
-    expect((window as any).setupGlobal).toBe("setupGlobalValue");
-  });
-});
-
-// at least one import or export is needed for this file to
-// be compiled into an named-UMD module by typescript
-export {};
diff --git a/examples/testing/setup_script.ts b/examples/testing/setup_script.ts
deleted file mode 100644
index 7bca6f8..0000000
--- a/examples/testing/setup_script.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-// Setup global value that the test expect to be present.
-(window as any).setupGlobal = "setupGlobalValue";
-
-// at least one import or export is needed for this file to
-// be compiled into an named-UMD module by typescript
-export { };
diff --git a/examples/testing/static_script.js b/examples/testing/static_script.js
deleted file mode 100644
index 06fd64e..0000000
--- a/examples/testing/static_script.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Some test data that is loaded dynamically from the test
-window.someGlobal = "someGlobalValue";
diff --git a/examples/testing/static_script.spec.ts b/examples/testing/static_script.spec.ts
deleted file mode 100644
index 6651308..0000000
--- a/examples/testing/static_script.spec.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-const someGlobal = new Promise<string>((resolve, reject) => {
-  const script = document.createElement('script');
-  script.src = `base/npm_bazel_typescript/examples/testing/static_script.js`;
-  script.onerror = reject;
-  script.onload = () => {
-    document.body.removeChild(script);
-    resolve((window as any).someGlobal);
-  };
-  document.body.appendChild(script);
-});
-
-describe('static script', () => {
-  it('should load', async () => {
-    expect(await someGlobal).toBe("someGlobalValue");
-  });
-});
-
-// at least one import or export is needed for this file to
-// be compiled into an named-UMD module by typescript
-export {};
diff --git a/examples/testing/tsconfig.json b/examples/testing/tsconfig.json
deleted file mode 100644
index c4faf5a..0000000
--- a/examples/testing/tsconfig.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "compilerOptions": {
-    "strict": true,
-    "lib": ["es2015.promise", "dom", "es5"],
-  }
-}
-
diff --git a/examples/tsconfig-bar.json b/examples/tsconfig-bar.json
deleted file mode 100644
index 0307f47..0000000
--- a/examples/tsconfig-bar.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "compilerOptions": {
-    "strict": true,
-    "lib": ["es2015.promise", "dom", "es5"],
-    // Auto-discover all types in this configuration since we don't
-    // specify `types = []` and the ts_library rule depends on `@npm//@types`.
-    // Typescript will automatically discover all types under node_modules/@types
-    // and included them in the build. See getAutomaticTypeDirectiveNames in
-    // https://github.com/Microsoft/TypeScript/blob/master/src/compiler/moduleNameResolver.ts.
-  }
-}
diff --git a/examples/tsconfig-test.json b/examples/tsconfig-test.json
deleted file mode 100644
index 634f399..0000000
--- a/examples/tsconfig-test.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "extends": "./tsconfig.json",
-
-  "compilerOptions": {
-    "types": ["jasmine", "node"]
-  }
-}
diff --git a/examples/tsconfig.json b/examples/tsconfig.json
deleted file mode 100644
index 39b27cb..0000000
--- a/examples/tsconfig.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "compilerOptions": {
-    "strict": true,
-    "lib": ["es2015.promise", "dom", "es5"],
-    // Include the output directory in rootDirs so that generated .d.ts files
-    // can be used for type-checking in the editor, for example the car.proto
-    // produces a car.d.ts.
-    "rootDirs": [".", "../bazel-bin/examples"],
-    // Explicitly set types settings so typescript doesn't auto-discover types.
-    // If all types are discovered then all types need to be included as deps
-    // or typescript may error out with TS2688: Cannot find type definition file for 'foo'.
-    "types": []
- }
-}
-
diff --git a/examples/tsconfig_extends/BUILD.bazel b/examples/tsconfig_extends/BUILD.bazel
deleted file mode 100644
index 5125897..0000000
--- a/examples/tsconfig_extends/BUILD.bazel
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-load("//:defs.bzl", "ts_config")
-load("//internal:defaults.bzl", "ts_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# Because our tsconfig.json has an extends property, we must also tell the
-# ts_library to include the extended tsconfig file in compilations.
-# The ts_library rule will generate its own tsconfig which extends from the
-# src file.
-ts_config(
-    name = "tsconfig",
-    src = "tsconfig.json",
-    deps = ["tsconfig-base.json"],
-)
-
-ts_library(
-    name = "tsconfig_extends",
-    srcs = [
-        "uses_promise.ts",
-    ],
-    tsconfig = ":tsconfig",
-)
diff --git a/examples/tsconfig_extends/tsconfig-base.json b/examples/tsconfig_extends/tsconfig-base.json
deleted file mode 100644
index 9aa1316..0000000
--- a/examples/tsconfig_extends/tsconfig-base.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "compilerOptions": {
-    "lib": ["es2015.promise", "es5"],
-    // Explicitly set types settings so typescript doesn't auto-discover types.
-    // If all types are discovered then all types need to be included as deps
-    // or typescript may error out with TS2688: Cannot find type definition file for 'foo'.
-    "types": []
-  }
-}
\ No newline at end of file
diff --git a/examples/tsconfig_extends/tsconfig.json b/examples/tsconfig_extends/tsconfig.json
deleted file mode 100644
index 712de29..0000000
--- a/examples/tsconfig_extends/tsconfig.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "extends": "./tsconfig-base"
-}
-
diff --git a/examples/tsconfig_extends/uses_promise.ts b/examples/tsconfig_extends/uses_promise.ts
deleted file mode 100644
index 4d2e73b..0000000
--- a/examples/tsconfig_extends/uses_promise.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export function hiLater(): Promise<string> {
-  return Promise.resolve('hi');
-}
diff --git a/examples/types.d.ts b/examples/types.d.ts
deleted file mode 100644
index d23a060..0000000
--- a/examples/types.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export interface Polite {
-  greet(): Promise<string>;
-}
diff --git a/internal/BUILD.bazel b/internal/BUILD.bazel
index 375a5ce..d953a01 100644
--- a/internal/BUILD.bazel
+++ b/internal/BUILD.bazel
@@ -16,7 +16,7 @@
 
 load("@build_bazel_rules_nodejs//:defs.bzl", "jasmine_node_test", "nodejs_binary")
 load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
-load("//internal:defaults.bzl", "ts_library")
+load("@npm_bazel_typescript//:defs.bzl", "ts_library")
 
 package(default_visibility = ["//visibility:public"])
 
@@ -87,7 +87,7 @@
         "@npm//tsutils",
         "@npm//typescript",
     ],
-    entry_point = "npm_bazel_typescript/internal/tsc_wrapped/tsc_wrapped.js",
+    entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js",
     visibility = ["//visibility:public"],
 )
 
@@ -95,6 +95,7 @@
     name = "test_lib",
     srcs = glob(["tsc_wrapped/*_test.ts"]) + ["tsc_wrapped/test_support.ts"],
     tsconfig = "//internal:tsc_wrapped/tsconfig.json",
+    compiler = "@build_bazel_rules_typescript//internal:tsc_wrapped_bin",
     deps = [
         ":tsc_wrapped",
         "@npm//@types/jasmine",
diff --git a/internal/build_defs.bzl b/internal/build_defs.bzl
deleted file mode 100644
index 1639546..0000000
--- a/internal/build_defs.bzl
+++ /dev/null
@@ -1,407 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"TypeScript compilation"
-
-load("@build_bazel_rules_nodejs//internal/common:node_module_info.bzl", "NodeModuleInfo", "collect_node_modules_aspect")
-
-# pylint: disable=unused-argument
-# pylint: disable=missing-docstring
-load(":common/compilation.bzl", "COMMON_ATTRIBUTES", "DEPS_ASPECTS", "compile_ts", "ts_providers_dict_to_struct")
-load(":common/tsconfig.bzl", "create_tsconfig")
-load(":ts_config.bzl", "TsConfigInfo")
-
-_DEFAULT_COMPILER = "@npm//@bazel/typescript/bin:tsc_wrapped"
-
-def _trim_package_node_modules(package_name):
-    # trim a package name down to its path prior to a node_modules
-    # segment. 'foo/node_modules/bar' would become 'foo' and
-    # 'node_modules/bar' would become ''
-    segments = []
-    for n in package_name.split("/"):
-        if n == "node_modules":
-            break
-        segments += [n]
-    return "/".join(segments)
-
-def _compute_node_modules_root(ctx):
-    """Computes the node_modules root from the node_modules and deps attributes.
-
-    Args:
-      ctx: the skylark execution context
-
-    Returns:
-      The node_modules root as a string
-    """
-    node_modules_root = None
-    if ctx.files.node_modules:
-        # ctx.files.node_modules is not an empty list
-        node_modules_root = "/".join([f for f in [
-            ctx.attr.node_modules.label.workspace_root,
-            _trim_package_node_modules(ctx.attr.node_modules.label.package),
-            "node_modules",
-        ] if f])
-    for d in ctx.attr.deps:
-        if NodeModuleInfo in d:
-            possible_root = "/".join(["external", d[NodeModuleInfo].workspace, "node_modules"])
-            if not node_modules_root:
-                node_modules_root = possible_root
-            elif node_modules_root != possible_root:
-                fail("All npm dependencies need to come from a single workspace. Found '%s' and '%s'." % (node_modules_root, possible_root))
-    if not node_modules_root:
-        # there are no fine grained deps and the node_modules attribute is an empty filegroup
-        # but we still need a node_modules_root even if its empty
-        node_modules_root = "/".join([f for f in [
-            ctx.attr.node_modules.label.workspace_root,
-            ctx.attr.node_modules.label.package,
-            "node_modules",
-        ] if f])
-    return node_modules_root
-
-def _filter_ts_inputs(all_inputs):
-    return [
-        f
-        for f in all_inputs
-        if f.path.endswith(".js") or f.path.endswith(".ts") or f.path.endswith(".json")
-    ]
-
-def _compile_action(ctx, inputs, outputs, tsconfig_file, node_opts, description = "prodmode"):
-    externs_files = []
-    action_inputs = []
-    action_outputs = []
-    for output in outputs:
-        if output.basename.endswith(".externs.js"):
-            externs_files.append(output)
-        elif output.basename.endswith(".es5.MF"):
-            ctx.actions.write(output, content = "")
-        else:
-            action_outputs.append(output)
-
-    # TODO(plf): For now we mock creation of files other than {name}.js.
-    for externs_file in externs_files:
-        ctx.actions.write(output = externs_file, content = "")
-
-    # A ts_library that has only .d.ts inputs will have no outputs,
-    # therefore there are no actions to execute
-    if not action_outputs:
-        return None
-
-    action_inputs.extend(_filter_ts_inputs(ctx.files.node_modules))
-
-    # Also include files from npm fine grained deps as action_inputs.
-    # These deps are identified by the NodeModuleInfo provider.
-    for d in ctx.attr.deps:
-        if NodeModuleInfo in d:
-            action_inputs.extend(_filter_ts_inputs(d.files.to_list()))
-
-    if ctx.file.tsconfig:
-        action_inputs.append(ctx.file.tsconfig)
-        if TsConfigInfo in ctx.attr.tsconfig:
-            action_inputs.extend(ctx.attr.tsconfig[TsConfigInfo].deps)
-
-    # Pass actual options for the node binary in the special "--node_options" argument.
-    arguments = ["--node_options=%s" % opt for opt in node_opts]
-
-    # One at-sign makes this a params-file, enabling the worker strategy.
-    # Two at-signs escapes the argument so it's passed through to tsc_wrapped
-    # rather than the contents getting expanded.
-    if ctx.attr.supports_workers:
-        arguments.append("@@" + tsconfig_file.path)
-        mnemonic = "TypeScriptCompile"
-    else:
-        arguments.append("-p")
-        arguments.append(tsconfig_file.path)
-        mnemonic = "tsc"
-
-    ctx.actions.run(
-        progress_message = "Compiling TypeScript (%s) %s" % (description, ctx.label),
-        mnemonic = mnemonic,
-        inputs = depset(action_inputs, transitive = [inputs]),
-        outputs = action_outputs,
-        # Use the built-in shell environment
-        # Allow for users who set a custom shell that can locate standard binaries like tr and uname
-        # See https://github.com/NixOS/nixpkgs/issues/43955#issuecomment-407546331
-        use_default_shell_env = True,
-        arguments = arguments,
-        executable = ctx.executable.compiler,
-        execution_requirements = {
-            "supports-workers": str(int(ctx.attr.supports_workers)),
-        },
-    )
-
-    # Enable the replay_params in case an aspect needs to re-build this library.
-    return struct(
-        label = ctx.label,
-        tsconfig = tsconfig_file,
-        inputs = depset(action_inputs, transitive = [inputs]),
-        outputs = action_outputs,
-        compiler = ctx.executable.compiler,
-    )
-
-def _devmode_compile_action(ctx, inputs, outputs, tsconfig_file, node_opts):
-    _compile_action(
-        ctx,
-        inputs,
-        outputs,
-        tsconfig_file,
-        node_opts,
-        description = "devmode",
-    )
-
-def tsc_wrapped_tsconfig(
-        ctx,
-        files,
-        srcs,
-        devmode_manifest = None,
-        jsx_factory = None,
-        **kwargs):
-    """Produce a tsconfig.json that sets options required under Bazel.
-    """
-
-    # The location of tsconfig.json is interpreted as the root of the project
-    # when it is passed to the TS compiler with the `-p` option:
-    #   https://www.typescriptlang.org/docs/handbook/tsconfig-json.html.
-    # Our tsconfig.json is in bazel-foo/bazel-out/local-fastbuild/bin/{package_path}
-    # because it's generated in the execution phase. However, our source files are in
-    # bazel-foo/ and therefore we need to strip some parent directories for each
-    # f.path.
-
-    node_modules_root = _compute_node_modules_root(ctx)
-    config = create_tsconfig(
-        ctx,
-        files,
-        srcs,
-        devmode_manifest = devmode_manifest,
-        node_modules_root = node_modules_root,
-        **kwargs
-    )
-    config["bazelOptions"]["nodeModulesPrefix"] = node_modules_root
-
-    # Override the target so we use es2015 for devmode
-    # Since g3 isn't ready to do this yet
-    config["compilerOptions"]["target"] = "es2015"
-
-    # If the user gives a tsconfig attribute, the generated file should extend
-    # from the user's tsconfig.
-    # See https://github.com/Microsoft/TypeScript/issues/9876
-    # We subtract the ".json" from the end before handing to TypeScript because
-    # this gives extra error-checking.
-    if ctx.file.tsconfig:
-        workspace_path = config["compilerOptions"]["rootDir"]
-        config["extends"] = "/".join([workspace_path, ctx.file.tsconfig.path[:-len(".json")]])
-
-    if jsx_factory:
-        config["compilerOptions"]["jsxFactory"] = jsx_factory
-
-    tsetse_disabled_rules = []
-
-    # Matches section in javascript/typescript/tsconfig.bzl
-    # TODO(alexeagle): make them share code
-    if ctx.label.workspace_root.startswith("external/"):
-        # Violated by rxjs
-        tsetse_disabled_rules += ["ban-promise-as-condition"]
-
-        # For local testing
-        tsetse_disabled_rules += ["check-return-value"]
-
-    config["compilerOptions"]["plugins"] = [{
-        "name": "@bazel/tsetse",
-        "disabledRules": tsetse_disabled_rules,
-    }]
-
-    return config
-
-# ************ #
-# ts_library   #
-# ************ #
-
-def _ts_library_impl(ctx):
-    """Implementation of ts_library.
-
-    Args:
-      ctx: the context.
-
-    Returns:
-      the struct returned by the call to compile_ts.
-    """
-    ts_providers = compile_ts(
-        ctx,
-        is_library = True,
-        # Filter out the node_modules from deps passed to TypeScript compiler
-        # since they don't have the required providers.
-        # They were added to the action inputs for tsc_wrapped already.
-        # strict_deps checking currently skips node_modules.
-        # TODO(alexeagle): turn on strict deps checking when we have a real
-        # provider for JS/DTS inputs to ts_library.
-        deps = [d for d in ctx.attr.deps if not NodeModuleInfo in d],
-        compile_action = _compile_action,
-        devmode_compile_action = _devmode_compile_action,
-        tsc_wrapped_tsconfig = tsc_wrapped_tsconfig,
-    )
-    return ts_providers_dict_to_struct(ts_providers)
-
-local_deps_aspects = [collect_node_modules_aspect]
-
-# Workaround skydoc bug which assumes DEPS_ASPECTS is a str type
-[local_deps_aspects.append(a) for a in DEPS_ASPECTS]
-
-ts_library = rule(
-    _ts_library_impl,
-    attrs = dict(COMMON_ATTRIBUTES, **{
-        "srcs": attr.label_list(
-            doc = "The TypeScript source files to compile.",
-            allow_files = [".ts", ".tsx"],
-            mandatory = True,
-        ),
-        "compile_angular_templates": attr.bool(
-            doc = """Run the Angular ngtsc compiler under ts_library""",
-        ),
-        "compiler": attr.label(
-            doc = """Sets a different TypeScript compiler binary to use for this library.
-            For example, we use the vanilla TypeScript tsc.js for bootstrapping,
-            and Angular compilations can replace this with `ngc`.
-
-            The default ts_library compiler depends on the `@npm//@bazel/typescript`
-            target which is setup for projects that use bazel managed npm deps that
-            fetch the @bazel/typescript npm package. It is recommended that you use
-            the workspace name `@npm` for bazel managed deps so the default
-            compiler works out of the box. Otherwise, you'll have to override
-            the compiler attribute manually.
-            """,
-            default = Label(_DEFAULT_COMPILER),
-            allow_files = True,
-            executable = True,
-            cfg = "host",
-        ),
-        "internal_testing_type_check_dependencies": attr.bool(default = False, doc = "Testing only, whether to type check inputs that aren't srcs."),
-        "node_modules": attr.label(
-            doc = """The npm packages which should be available during the compile.
-
-            The default value is `@npm//typescript:typescript__typings` is setup
-            for projects that use bazel managed npm deps that. It is recommended
-            that you use the workspace name `@npm` for bazel managed deps so the
-            default node_modules works out of the box. Otherwise, you'll have to
-            override the node_modules attribute manually. This default is in place
-            since ts_library will always depend on at least the typescript
-            default libs which are provided by `@npm//typescript:typescript__typings`.
-
-            This attribute is DEPRECATED. As of version 0.18.0 the recommended
-            approach to npm dependencies is to use fine grained npm dependencies
-            which are setup with the `yarn_install` or `npm_install` rules.
-
-            For example, in targets that used a `//:node_modules` filegroup,
-
-            ```
-            ts_library(
-              name = "my_lib",
-              ...
-              node_modules = "//:node_modules",
-            )
-            ```
-
-            which specifies all files within the `//:node_modules` filegroup
-            to be inputs to the `my_lib`. Using fine grained npm dependencies,
-            `my_lib` is defined with only the npm dependencies that are
-            needed:
-
-            ```
-            ts_library(
-              name = "my_lib",
-              ...
-              deps = [
-                  "@npm//@types/foo",
-                  "@npm//@types/bar",
-                  "@npm//foo",
-                  "@npm//bar",
-                  ...
-              ],
-            )
-            ```
-
-            In this case, only the listed npm packages and their
-            transitive deps are includes as inputs to the `my_lib` target
-            which reduces the time required to setup the runfiles for this
-            target (see https://github.com/bazelbuild/bazel/issues/5153).
-            The default typescript libs are also available via the node_modules
-            default in this case.
-
-            The @npm external repository and the fine grained npm package
-            targets are setup using the `yarn_install` or `npm_install` rule
-            in your WORKSPACE file:
-
-            yarn_install(
-              name = "npm",
-              package_json = "//:package.json",
-              yarn_lock = "//:yarn.lock",
-            )
-            """,
-            default = Label("@npm//typescript:typescript__typings"),
-        ),
-        "supports_workers": attr.bool(
-            doc = """Intended for internal use only.
-            Allows you to disable the Bazel Worker strategy for this library.
-            Typically used together with the "compiler" setting when using a
-            non-worker aware compiler binary.""",
-            default = True,
-        ),
-
-        # TODO(alexeagle): reconcile with google3: ts_library rules should
-        # be portable across internal/external, so we need this attribute
-        # internally as well.
-        "tsconfig": attr.label(
-            doc = """A tsconfig.json file containing settings for TypeScript compilation.
-            Note that some properties in the tsconfig are governed by Bazel and will be
-            overridden, such as `target` and `module`.
-
-            The default value is set to `//:tsconfig.json` by a macro. This means you must
-            either:
-
-            - Have your `tsconfig.json` file in the workspace root directory
-            - Use an alias in the root BUILD.bazel file to point to the location of tsconfig:
-              `alias(name="tsconfig.json", actual="//path/to:tsconfig-something.json")`
-            - Give an explicit `tsconfig` attribute to all `ts_library` targets
-            """,
-            allow_single_file = True,
-        ),
-        "tsickle_typed": attr.bool(default = True),
-        "deps": attr.label_list(aspects = local_deps_aspects),
-    }),
-    outputs = {
-        "tsconfig": "%{name}_tsconfig.json",
-    },
-)
-"""
-`ts_library` type-checks and compiles a set of TypeScript sources to JavaScript.
-
-It produces declarations files (`.d.ts`) which are used for compiling downstream
-TypeScript targets and JavaScript for the browser and Closure compiler.
-"""
-
-def ts_library_macro(tsconfig = None, **kwargs):
-    """Wraps `ts_library` to set the default for the `tsconfig` attribute.
-
-    This must be a macro so that the string is converted to a label in the context of the
-    workspace that declares the `ts_library` target, rather than the workspace that defines
-    `ts_library`, or the workspace where the build is taking place.
-
-    This macro is re-exported as `ts_library` in the public API.
-
-    Args:
-      tsconfig: the label pointing to a tsconfig.json file
-      **kwargs: remaining args to pass to the ts_library rule
-    """
-    if not tsconfig:
-        tsconfig = "//:tsconfig.json"
-
-    ts_library(tsconfig = tsconfig, **kwargs)
diff --git a/internal/defaults.bzl b/internal/defaults.bzl
deleted file mode 100644
index 9ef73e2..0000000
--- a/internal/defaults.bzl
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"Defaults for rules_typescript repository not meant to be used downstream"
-
-load(
-    "@npm_bazel_typescript//:defs.bzl",
-    _ts_library = "ts_library",
-)
-
-# We can't use the defaults for ts_library compiler and ts_web_test_suite karma
-# internally because the defaults are .js dependencies on the npm packages that are
-# published and internally we are building the things themselves to publish to npm
-INTERNAL_TS_LIBRARY_COMPILER = "@npm_bazel_typescript//internal:tsc_wrapped_bin"
-
-def ts_library(compiler = INTERNAL_TS_LIBRARY_COMPILER, **kwargs):
-    _ts_library(compiler = compiler, **kwargs)
diff --git a/internal/devserver/BUILD b/internal/devserver/BUILD
deleted file mode 100644
index 25b03e1..0000000
--- a/internal/devserver/BUILD
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-licenses(["notice"])  # Apache 2.0
-
-package(default_visibility = [
-    "//third_party/bazel_rules/rules_typescript/internal:__subpackages__",
-])
-
-exports_files([
-    "launcher_template.sh",
-    # Exported to be consumed for generating skydoc.
-    "ts_devserver.bzl",
-])
-
-filegroup(
-    name = "source_tree",
-    srcs = glob(["**/*"]),
-)
-
-filegroup(
-    name = "npm_package_assets",
-    srcs = [
-        "BUILD",
-        "launcher_template.sh",
-        "package.json",
-        "ts_devserver.bzl",
-        "yarn.lock",
-    ],
-    visibility = ["//internal:__pkg__"],
-)
diff --git a/internal/devserver/README.md b/internal/devserver/README.md
deleted file mode 100644
index 7000c25..0000000
--- a/internal/devserver/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# TypeScript devserver
-
-This development server is very simple. It's meant to be a convenient step in
-the "getting started" workflow. Once you have any real requirements, you should
-develop against your real frontend server instead.
-
-This devserver includes the "concatjs" bundling strategy. If you use a different
-frontend server, you should port this library to whatever language you run in.
-
diff --git a/internal/devserver/launcher_template.sh b/internal/devserver/launcher_template.sh
deleted file mode 100644
index 13722a9..0000000
--- a/internal/devserver/launcher_template.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-
-# Copyright 2018 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -e
-
-# --- begin runfiles.bash initialization ---
-# Source the runfiles library:
-# https://github.com/bazelbuild/bazel/blob/master/tools/bash/runfiles/runfiles.bash
-# The runfiles library defines rlocation, which is a platform independent function
-# used to lookup the runfiles locations. This code snippet is needed at the top
-# of scripts that use rlocation to lookup the location of runfiles.bash and source it
-if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
-    if [[ -f "$0.runfiles_manifest" ]]; then
-      export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest"
-    elif [[ -f "$0.runfiles/MANIFEST" ]]; then
-      export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST"
-    elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
-      export RUNFILES_DIR="$0.runfiles"
-    fi
-fi
-if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
-  source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash"
-elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
-  source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \
-            "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)"
-else
-  echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash"
-  exit 1
-fi
-# --- end runfiles.bash initialization ---
-
-
-readonly main=$(rlocation "TEMPLATED_main")
-readonly manifest=$(rlocation "TEMPLATED_manifest")
-readonly scripts_manifest=$(rlocation "TEMPLATED_scripts_manifest")
-
-# Workaround for https://github.com/bazelbuild/bazel/issues/6764
-# If this issue is incorporated into Bazel, the workaround here should be removed.
-MSYS2_ARG_CONV_EXCL="*" "${main}" \
-  -packages=TEMPLATED_packages \
-  -serving_path=TEMPLATED_serving_path \
-  -entry_module=TEMPLATED_entry_module \
-  -port=TEMPLATED_port \
-  -manifest="${manifest}" \
-  -scripts_manifest="${scripts_manifest}" \
-  "$@"
diff --git a/internal/devserver/package.json b/internal/devserver/package.json
deleted file mode 100644
index 5391d98..0000000
--- a/internal/devserver/package.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "description": "runtime dependencies for devserver",
-    "devDependencies": {
-        "requirejs": "2.3.5"
-    }
-}
diff --git a/internal/devserver/ts_devserver.bzl b/internal/devserver/ts_devserver.bzl
deleted file mode 100644
index 399bd4e..0000000
--- a/internal/devserver/ts_devserver.bzl
+++ /dev/null
@@ -1,264 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"Simple development server"
-
-load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect")
-load(
-    "@build_bazel_rules_nodejs//internal/js_library:js_library.bzl",
-    "write_amd_names_shim",
-)
-load(
-    "@build_bazel_rules_nodejs//internal/web_package:web_package.bzl",
-    "html_asset_inject",
-)
-
-# Helper function to convert a short path to a path that is
-# found in the MANIFEST file.
-def _short_path_to_manifest_path(ctx, short_path):
-    if short_path.startswith("../"):
-        return short_path[3:]
-    else:
-        return ctx.workspace_name + "/" + short_path
-
-def _ts_devserver(ctx):
-    files = depset()
-    for d in ctx.attr.deps:
-        if hasattr(d, "node_sources"):
-            files = depset(transitive = [files, d.node_sources])
-        elif hasattr(d, "files"):
-            files = depset(transitive = [files, d.files])
-
-    if ctx.label.workspace_root:
-        # We need the workspace_name for the target being visited.
-        # Skylark doesn't have this - instead they have a workspace_root
-        # which looks like "external/repo_name" - so grab the second path segment.
-        # TODO(alexeagle): investigate a better way to get the workspace name
-        workspace_name = ctx.label.workspace_root.split("/")[1]
-    else:
-        workspace_name = ctx.workspace_name
-
-    # Create a manifest file with the sources in arbitrary order, and without
-    # bazel-bin prefixes ("root-relative paths").
-    # TODO(alexeagle): we should experiment with keeping the files toposorted, to
-    # see if we can get performance gains out of the module loader.
-    ctx.actions.write(ctx.outputs.manifest, "".join([
-        workspace_name + "/" + f.short_path + "\n"
-        for f in files.to_list()
-    ]))
-
-    amd_names_shim = ctx.actions.declare_file(
-        "_%s.amd_names_shim.js" % ctx.label.name,
-        sibling = ctx.outputs.script,
-    )
-    write_amd_names_shim(ctx.actions, amd_names_shim, ctx.attr.bootstrap)
-
-    # Requirejs is always needed so its included as the first script
-    # in script_files before any user specified scripts for the devserver
-    # to concat in order.
-    script_files = []
-    script_files.extend(ctx.files.bootstrap)
-    script_files.append(ctx.file._requirejs_script)
-    script_files.append(amd_names_shim)
-    script_files.extend(ctx.files.scripts)
-    ctx.actions.write(ctx.outputs.scripts_manifest, "".join([
-        workspace_name + "/" + f.short_path + "\n"
-        for f in script_files
-    ]))
-
-    devserver_runfiles = [
-        ctx.executable._devserver,
-        ctx.outputs.manifest,
-        ctx.outputs.scripts_manifest,
-    ]
-    devserver_runfiles += ctx.files.static_files
-    devserver_runfiles += script_files
-    devserver_runfiles += ctx.files._bash_runfile_helpers
-
-    if ctx.file.index_html:
-        injected_index = ctx.actions.declare_file("index.html")
-        bundle_script = ctx.attr.serving_path
-        if bundle_script.startswith("/"):
-            bundle_script = bundle_script[1:]
-        html_asset_inject(
-            ctx.file.index_html,
-            ctx.actions,
-            ctx.executable._injector,
-            ctx.attr.additional_root_paths + [
-                ctx.label.package,
-                "/".join([ctx.bin_dir.path, ctx.label.package]),
-                "/".join([ctx.genfiles_dir.path, ctx.label.package]),
-            ],
-            [_short_path_to_manifest_path(ctx, f.short_path) for f in ctx.files.static_files] + [bundle_script],
-            injected_index,
-        )
-        devserver_runfiles += [injected_index]
-
-    packages = depset(["/".join([workspace_name, ctx.label.package])] + ctx.attr.additional_root_paths)
-
-    ctx.actions.expand_template(
-        template = ctx.file._launcher_template,
-        output = ctx.outputs.script,
-        substitutions = {
-            "TEMPLATED_entry_module": ctx.attr.entry_module,
-            "TEMPLATED_main": _short_path_to_manifest_path(ctx, ctx.executable._devserver.short_path),
-            "TEMPLATED_manifest": _short_path_to_manifest_path(ctx, ctx.outputs.manifest.short_path),
-            "TEMPLATED_packages": ",".join(packages.to_list()),
-            "TEMPLATED_port": str(ctx.attr.port),
-            "TEMPLATED_scripts_manifest": _short_path_to_manifest_path(ctx, ctx.outputs.scripts_manifest.short_path),
-            "TEMPLATED_serving_path": ctx.attr.serving_path if ctx.attr.serving_path else "",
-            "TEMPLATED_workspace": workspace_name,
-        },
-        is_executable = True,
-    )
-
-    return [DefaultInfo(
-        runfiles = ctx.runfiles(
-            files = devserver_runfiles,
-            # We don't expect executable targets to depend on the devserver, but if they do,
-            # they can see the JavaScript code.
-            transitive_files = depset(ctx.files.data, transitive = [files]),
-            collect_data = True,
-            collect_default = True,
-        ),
-    )]
-
-ts_devserver = rule(
-    implementation = _ts_devserver,
-    attrs = {
-        "additional_root_paths": attr.string_list(
-            doc = """Additional root paths to serve static_files from.
-            Paths should include the workspace name such as [\"__main__/resources\"]
-            """,
-        ),
-        "bootstrap": attr.label_list(
-            doc = "Scripts to include in the JS bundle before the module loader (require.js)",
-            allow_files = [".js"],
-        ),
-        "data": attr.label_list(
-            doc = "Dependencies that can be require'd while the server is running",
-            allow_files = True,
-        ),
-        "entry_module": attr.string(
-            doc = """The entry_module should be the AMD module name of the entry module such as `"__main__/src/index"`
-            ts_devserver concats the following snippet after the bundle to load the application:
-            `require(["entry_module"]);`
-            """,
-        ),
-        "index_html": attr.label(
-            allow_single_file = True,
-            doc = """An index.html file, we'll inject the script tag for the bundle,
-            as well as script tags for .js static_files and link tags for .css
-            static_files""",
-        ),
-        "port": attr.int(
-            doc = """The port that the devserver will listen on.""",
-            default = 5432,
-        ),
-        "scripts": attr.label_list(
-            doc = "User scripts to include in the JS bundle before the application sources",
-            allow_files = [".js"],
-        ),
-        "serving_path": attr.string(
-            # This default repeats the one in the go program. We make it explicit here so we can read it
-            # when injecting scripts into the index file.
-            default = "/_/ts_scripts.js",
-            doc = """The path you can request from the client HTML which serves the JavaScript bundle.
-            If you don't specify one, the JavaScript can be loaded at /_/ts_scripts.js""",
-        ),
-        "static_files": attr.label_list(
-            doc = """Arbitrary files which to be served, such as index.html.
-            They are served relative to the package where this rule is declared.""",
-            allow_files = True,
-        ),
-        "deps": attr.label_list(
-            doc = "Targets that produce JavaScript, such as `ts_library`",
-            allow_files = True,
-            aspects = [sources_aspect],
-        ),
-        "_bash_runfile_helpers": attr.label(default = Label("@bazel_tools//tools/bash/runfiles")),
-        "_devserver": attr.label(
-            # For local development in rules_typescript, we build the devserver from sources.
-            # This requires that we have the go toolchain available.
-            # NB: this value is replaced by "//devserver:server" in the packaged distro
-            # //devserver:server is the pre-compiled binary.
-            # That means that our users don't need the go toolchain.
-            default = Label("//devserver:devserver_bin"),
-            executable = True,
-            cfg = "host",
-        ),
-        "_injector": attr.label(
-            default = "@build_bazel_rules_nodejs//internal/web_package:injector",
-            executable = True,
-            cfg = "host",
-        ),
-        "_launcher_template": attr.label(allow_single_file = True, default = Label("//internal/devserver:launcher_template.sh")),
-        "_requirejs_script": attr.label(allow_single_file = True, default = Label("@build_bazel_rules_typescript_devserver_deps//node_modules/requirejs:require.js")),
-    },
-    outputs = {
-        "manifest": "%{name}.MF",
-        "script": "%{name}.sh",
-        "scripts_manifest": "scripts_%{name}.MF",
-    },
-)
-"""ts_devserver is a simple development server intended for a quick "getting started" experience.
-
-Additional documentation at https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel
-"""
-
-def ts_devserver_macro(name, data = [], args = [], visibility = None, tags = [], testonly = 0, **kwargs):
-    """Macro for creating a `ts_devserver`
-
-    This macro re-exposes a `sh_binary` and `ts_devserver` target that can run the
-    actual devserver implementation.
-    The `ts_devserver` rule is just responsible for generating a launcher script
-    that runs the Go devserver implementation. The `sh_binary` is the primary
-    target that matches the specified "name" and executes the generated bash
-    launcher script.
-    This is re-exported in `//:defs.bzl` as `ts_devserver` so if you load the rule
-    from there, you actually get this macro.
-    Args:
-      name: Name of the devserver target
-      data: Runtime dependencies for the devserver
-      args: Command line arguments that will be passed to the devserver Go implementation
-      visibility: Visibility of the devserver targets
-      tags: Standard Bazel tags, this macro adds a couple for ibazel
-      testonly: Whether the devserver should only run in `bazel test`
-      **kwargs: passed through to `ts_devserver`
-    """
-    ts_devserver(
-        name = "%s_launcher" % name,
-        data = data + ["@bazel_tools//tools/bash/runfiles"],
-        testonly = testonly,
-        visibility = ["//visibility:private"],
-        tags = tags,
-        **kwargs
-    )
-
-    native.sh_binary(
-        name = name,
-        args = args,
-        # Users don't need to know that these tags are required to run under ibazel
-        tags = tags + [
-            # Tell ibazel not to restart the devserver when its deps change.
-            "ibazel_notify_changes",
-            # Tell ibazel to serve the live reload script, since we expect a browser will connect to
-            # this program.
-            "ibazel_live_reload",
-        ],
-        srcs = ["%s_launcher.sh" % name],
-        data = [":%s_launcher" % name],
-        testonly = testonly,
-        visibility = visibility,
-    )
diff --git a/internal/devserver/yarn.lock b/internal/devserver/yarn.lock
deleted file mode 100644
index 95ae199..0000000
--- a/internal/devserver/yarn.lock
+++ /dev/null
@@ -1,7 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-requirejs@2.3.5:
-  version "2.3.5"
-  resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0"
diff --git a/internal/karma/.bazelrc b/internal/karma/.bazelrc
deleted file mode 100644
index ad69514..0000000
--- a/internal/karma/.bazelrc
+++ /dev/null
@@ -1 +0,0 @@
-build --workspace_status_command=../../tools/bazel_stamp_vars.sh
diff --git a/internal/karma/BUILD.bazel b/internal/karma/BUILD.bazel
deleted file mode 100644
index 54f69ed..0000000
--- a/internal/karma/BUILD.bazel
+++ /dev/null
@@ -1,106 +0,0 @@
-# Copyright 2018 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# BEGIN-DEV-ONLY
-# Parts of this BUILD file only necessary when building within the bazelbuild/rules_typescript repo.
-# The generated `@bazel/karma` npm package contains a trimmed BUILD file using # DEV-ONLY fences.
-load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "npm_package")
-load("@npm_bazel_typescript//:version.bzl", "COMPAT_VERSION")
-load("@npm_bazel_typescript//internal:defaults.bzl", "ts_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# Exports to be consumed for generating skydoc.
-exports_files([
-    "karma_web_test.bzl",
-    "ts_web_test.bzl",
-    "web_test.bzl",
-])
-
-ts_library(
-    name = "bazel_karma",
-    srcs = glob(["*.ts"]),
-    module_name = "@bazel/karma",
-    tsconfig = ":tsconfig.json",
-    deps = [
-        "@npm//@types/node",
-        "@npm//tmp",
-    ],
-)
-
-nodejs_binary(
-    name = "karma_bin",
-    data = [
-        ":bazel_karma",
-        "@npm//jasmine-core",
-        "@npm//karma",
-        "@npm//karma-chrome-launcher",
-        "@npm//karma-firefox-launcher",
-        "@npm//karma-jasmine",
-        "@npm//karma-requirejs",
-        "@npm//karma-sauce-launcher",
-        "@npm//karma-sourcemap-loader",
-        "@npm//requirejs",
-        "@npm//tmp",
-    ],
-    entry_point = "karma/bin/karma",
-    install_source_map_support = False,
-)
-
-genrule(
-    name = "license_copy",
-    srcs = ["@npm_bazel_typescript//:LICENSE"],
-    outs = ["LICENSE"],
-    cmd = "cp $< $@",
-)
-
-# Ugly genrule depending on local linux environment to build the README out of skylark doc generation.
-# Only referenced when we do a release.
-# TODO: This ought to be possible with stardoc alone. Need to coordinate with Chris Parsons.
-genrule(
-    name = "generate_README",
-    srcs = ["//docs", "//docs:install.md"],
-    outs = ["README.md"],
-    cmd = "unzip -o -d docs $(location //docs:docs) && cat docs/install.md docs/*_web_test.md | sed 's/^##/\\\n##/' > $@",
-)
-
-npm_package(
-    name = "npm_package",
-    srcs = [
-        "BUILD.bazel",
-        "WORKSPACE",
-        "browser_repositories.bzl",
-        "defaults.bzl",
-        "defs.bzl",
-        "karma.conf.js",
-        "karma.js",
-        "karma_web_test.bzl",
-        "package.bzl",
-        "package.json",
-        "ts_web_test.bzl",
-        "web_test.bzl",
-    ],
-    replacements = {
-        "(#|\/\/)\\s+BEGIN-DEV-ONLY[\\w\W]+?(#|\/\/)\\s+END-DEV-ONLY": "",
-        "0.0.0-COMPAT_VERSION": COMPAT_VERSION,
-    },
-    deps = [
-        ":bazel_karma",
-        ":license_copy",
-        ":generate_README"
-    ],
-)
-
-# END-DEV-ONLY
-exports_files(["karma.conf.js"])
diff --git a/internal/karma/WORKSPACE b/internal/karma/WORKSPACE
deleted file mode 100644
index f584c27..0000000
--- a/internal/karma/WORKSPACE
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-workspace(name = "npm_bazel_karma")
-
-# Load nested npm_bazel_typescript repository
-local_repository(
-    name = "npm_bazel_typescript",
-    path = "../..",
-)
-
-# Load our dependencies
-load("@npm_bazel_typescript//:package.bzl", "rules_typescript_dev_dependencies")
-
-rules_typescript_dev_dependencies()
-
-# Load rules_karma dependencies
-load("//:package.bzl", "rules_karma_dependencies")
-
-rules_karma_dependencies()
-
-# Setup nodejs toolchain
-load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install")
-
-# Install a hermetic version of node.
-node_repositories()
-
-# Download npm dependencies
-yarn_install(
-    name = "npm",
-    package_json = "//:package.json",
-    yarn_lock = "//:yarn.lock",
-)
-
-# Setup typescript toolchain
-load("@npm_bazel_typescript//:defs.bzl", "ts_setup_workspace")
-
-ts_setup_workspace()
-
-# Dependencies for generating documentation
-load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories")
-
-sass_repositories()
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-http_archive(
-    name = "com_google_protobuf",
-    strip_prefix = "protobuf-3.6.1.3",
-    sha256 = "9510dd2afc29e7245e9e884336f848c8a6600a14ae726adb6befdb4f786f0be2",
-    # v3.6.1.3 as of 2019-01-15
-    urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.6.1.3.zip"],
-    type = "zip",
-)
-
-load("@io_bazel_skydoc//skylark:skylark.bzl", "skydoc_repositories")
-
-skydoc_repositories()
diff --git a/internal/karma/browser_repositories.bzl b/internal/karma/browser_repositories.bzl
deleted file mode 100644
index cc58e5c..0000000
--- a/internal/karma/browser_repositories.bzl
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright 2018 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Pinned browser versions tested against in https://github.com/bazelbuild/rules_typescript CI.
-"""
-
-load("@io_bazel_rules_webtesting//web/internal:platform_http_file.bzl", "platform_http_file")
-
-def browser_repositories():
-    """Load pinned rules_webtesting browser versions."""
-
-    platform_http_file(
-        name = "org_chromium_chromium",
-        amd64_sha256 =
-            "941de83d78b27d43db07f427136ba159d661bb111db8d9ffe12499b863a003e1",
-        amd64_urls = [
-            # Chromium 69.0.3497.0 (2018-07-19 snaphot 576668)
-            # https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/576668/
-            "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/576668/chrome-linux.zip",
-        ],
-        licenses = ["notice"],  # BSD 3-clause (maybe more?)
-        macos_sha256 =
-            "bd01783e7d179e9f85d4b6f0c9df53118d13977cc7d365a1caa9d198c6afcfd8",
-        macos_urls = [
-            # Chromium 69.0.3497.0 (2018-07-19 snaphot 576668)
-            # https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Mac/576668/
-            # NOTE: There is an issue with ChromeHeadless on OSX chromium 70+
-            "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/576668/chrome-mac.zip",
-        ],
-        windows_sha256 =
-            "d1bb728118c12ea436d8ea07dba980789e7d860aa664dd1fad78bc20e8d9391c",
-        windows_urls = [
-            # Chromium 66.0.3359.0 (2018-03-01 snaphot 540270)
-            # https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Win_x64/612439/
-            # NOTE: There is an issue with chromium 68-71 with Windows: https://bugs.chromium.org/p/chromium/issues/detail?id=540270
-            #       and pinning to 72 is not possible as the archive name has changed to chrome-win.zip which breaks
-            #       as the executable path the hard-coded in rules_webtesting and includes the archive name.
-            "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/540270/chrome-win32.zip",
-        ],
-    )
-
-    platform_http_file(
-        name = "org_chromium_chromedriver",
-        amd64_sha256 =
-            "687d2e15c42908e2911344c08a949461b3f20a83017a7a682ef4d002e05b5d46",
-        amd64_urls = [
-            # ChromeDriver 2.44 supports Chrome v69-71
-            # http://chromedriver.chromium.org/downloads
-            "https://chromedriver.storage.googleapis.com/2.44/chromedriver_linux64.zip",
-        ],
-        licenses = ["reciprocal"],  # BSD 3-clause, ICU, MPL 1.1, libpng (BSD/MIT-like), Academic Free License v. 2.0, BSD 2-clause, MIT
-        macos_sha256 =
-            "3fd49c2782a5f93cb48ff2dee021004d9a7fb393798e4c4807b391cedcd30ed9",
-        macos_urls = [
-            # ChromeDriver 2.44 supports Chrome v69-71
-            # http://chromedriver.chromium.org/downloads
-            "https://chromedriver.storage.googleapis.com/2.44/chromedriver_mac64.zip",
-        ],
-        windows_sha256 =
-            "a8fa028acebef7b931ef9cb093f02865f9f7495e49351f556e919f7be77f072e",
-        windows_urls = [
-            # ChromeDriver 2.38 supports Chrome v65-67
-            # http://chromedriver.chromium.org/downloads
-            "https://chromedriver.storage.googleapis.com/2.38/chromedriver_win32.zip",
-        ],
-    )
-
-    platform_http_file(
-        name = "org_mozilla_firefox",
-        amd64_sha256 =
-            "3a729ddcb1e0f5d63933177a35177ac6172f12edbf9fbbbf45305f49333608de",
-        amd64_urls = [
-            "https://mirror.bazel.build/ftp.mozilla.org/pub/firefox/releases/61.0.2/linux-x86_64/en-US/firefox-61.0.2.tar.bz2",
-            "https://ftp.mozilla.org/pub/firefox/releases/61.0.2/linux-x86_64/en-US/firefox-61.0.2.tar.bz2",
-        ],
-        licenses = ["reciprocal"],  # MPL 2.0
-        macos_sha256 =
-            "bf23f659ae34832605dd0576affcca060d1077b7bf7395bc9874f62b84936dc5",
-        macos_urls = [
-            "https://mirror.bazel.build/ftp.mozilla.org/pub/firefox/releases/61.0.2/mac/en-US/Firefox%2061.0.2.dmg",
-            "https://ftp.mozilla.org/pub/firefox/releases/61.0.2/mac/en-US/Firefox%2061.0.2.dmg",
-        ],
-    )
-
-    platform_http_file(
-        name = "org_mozilla_geckodriver",
-        amd64_sha256 =
-            "c9ae92348cf00aa719be6337a608fae8304691a95668e8e338d92623ba9e0ec6",
-        amd64_urls = [
-            "https://mirror.bazel.build/github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz",
-            "https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz",
-        ],
-        licenses = ["reciprocal"],  # MPL 2.0
-        macos_sha256 =
-            "ce4a3e9d706db94e8760988de1ad562630412fa8cf898819572522be584f01ce",
-        macos_urls = [
-            "https://mirror.bazel.build/github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-macos.tar.gz",
-            "https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-macos.tar.gz",
-        ],
-    )
diff --git a/internal/karma/defaults.bzl b/internal/karma/defaults.bzl
deleted file mode 100644
index 954a991..0000000
--- a/internal/karma/defaults.bzl
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"Defaults for rules_karma repository not meant to be used downstream"
-
-load(
-    "@npm_bazel_karma//:defs.bzl",
-    _karma_web_test = "karma_web_test",
-    _karma_web_test_suite = "karma_web_test_suite",
-    _ts_web_test = "ts_web_test",
-    _ts_web_test_suite = "ts_web_test_suite",
-)
-
-INTERNAL_KARMA_BIN = "@npm_bazel_karma//:karma_bin"
-
-def karma_web_test(karma = INTERNAL_KARMA_BIN, **kwargs):
-    _karma_web_test(karma = karma, **kwargs)
-
-def karma_web_test_suite(karma = INTERNAL_KARMA_BIN, **kwargs):
-    _karma_web_test_suite(karma = karma, **kwargs)
-
-def ts_web_test(karma = INTERNAL_KARMA_BIN, **kwargs):
-    _ts_web_test(karma = karma, **kwargs)
-
-def ts_web_test_suite(karma = INTERNAL_KARMA_BIN, **kwargs):
-    _ts_web_test_suite(karma = karma, **kwargs)
diff --git a/internal/karma/defs.bzl b/internal/karma/defs.bzl
deleted file mode 100644
index b8053b9..0000000
--- a/internal/karma/defs.bzl
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-""" Public API surface is re-exported here.
-"""
-
-load(
-    ":karma_web_test.bzl",
-    _karma_web_test = "karma_web_test",
-    _karma_web_test_suite = "karma_web_test_suite",
-)
-load(
-    ":ts_web_test.bzl",
-    _ts_web_test = "ts_web_test",
-    _ts_web_test_suite = "ts_web_test_suite",
-)
-
-# TODO(alexeagle): make ts_web_test && ts_web_test_suite work in google3
-ts_web_test = _ts_web_test
-ts_web_test_suite = _ts_web_test_suite
-karma_web_test = _karma_web_test
-karma_web_test_suite = _karma_web_test_suite
diff --git a/internal/karma/docs/BUILD.bazel b/internal/karma/docs/BUILD.bazel
deleted file mode 100644
index ff0476c..0000000
--- a/internal/karma/docs/BUILD.bazel
+++ /dev/null
@@ -1,11 +0,0 @@
-load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc")
-exports_files(["install.md"])
-skylark_doc(
-    name = "docs",
-    srcs = [
-        "//:karma_web_test.bzl",
-        "//:ts_web_test.bzl",
-    ],
-    format = "markdown",
-    visibility = ["//:__subpackages__"],
-)
diff --git a/internal/karma/docs/index.md b/internal/karma/docs/index.md
deleted file mode 100644
index 697f82f..0000000
--- a/internal/karma/docs/index.md
+++ /dev/null
@@ -1,89 +0,0 @@
-
-# Overview
-
-
-<nav class="toc">
-  <h2>Rule sets</h2>
-  <ul>
-    <li><a href="#karma_web_test">Unit testing with Karma</a></li>
-    <li><a href="#ts_web_test">Unit testing in a browser</a></li>
-  </ul>
-</nav>
-
-<h2><a href="/karma_web_test.html" id="karma_web_test">Unit testing with Karma</a></h2>
-
-<h3>Macros</h3>
-<table class="overview-table">
-  <colgroup>
-    <col class="col-name" />
-    <col class="col-description" />
-  </colgroup>
-  <tbody>
-    <tr>
-      <td>
-        <a href="/karma_web_test.html#run_karma_web_test">
-          <code>run_karma_web_test</code>
-        </a>
-      </td>
-      <td>
-        <p>Creates an action that can run karma.</p>
-
-      </td>
-    </tr>
-    <tr>
-      <td>
-        <a href="/karma_web_test.html#karma_web_test">
-          <code>karma_web_test</code>
-        </a>
-      </td>
-      <td>
-        <p>Runs unit tests in a browser with Karma.</p>
-
-      </td>
-    </tr>
-    <tr>
-      <td>
-        <a href="/karma_web_test.html#karma_web_test_suite">
-          <code>karma_web_test_suite</code>
-        </a>
-      </td>
-      <td>
-        <p>Defines a test_suite of web_test targets that wrap a karma_web_test target.</p>
-
-      </td>
-    </tr>
-  </tbody>
-</table>
-<h2><a href="/ts_web_test.html" id="ts_web_test">Unit testing in a browser</a></h2>
-
-<h3>Macros</h3>
-<table class="overview-table">
-  <colgroup>
-    <col class="col-name" />
-    <col class="col-description" />
-  </colgroup>
-  <tbody>
-    <tr>
-      <td>
-        <a href="/ts_web_test.html#ts_web_test">
-          <code>ts_web_test</code>
-        </a>
-      </td>
-      <td>
-        <p>Runs unit tests in a browser.</p>
-
-      </td>
-    </tr>
-    <tr>
-      <td>
-        <a href="/ts_web_test.html#ts_web_test_suite">
-          <code>ts_web_test_suite</code>
-        </a>
-      </td>
-      <td>
-        <p>Defines a test_suite of web_test targets that wrap a ts_web_test target.</p>
-
-      </td>
-    </tr>
-  </tbody>
-</table>
diff --git a/internal/karma/docs/install.md b/internal/karma/docs/install.md
deleted file mode 100644
index e04b558..0000000
--- a/internal/karma/docs/install.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# Karma rules for Bazel
-
-**WARNING: this is beta-quality software. Breaking changes are likely. Not recommended for production use without expert support.**
-
-The Karma rules run karma tests with Bazel.
-
-## Installation
-
-Add the `@bazel/karma` npm package to your `devDependencies` in `package.json`.
-
-Your `WORKSPACE` should declare a `yarn_install` or `npm_install` rule named `npm`.
-It should then install the rules found in the npm packages.
-
-This is copied from the README for rules_nodejs:
-
-```python
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-# Fetch rules_nodejs
-# (you can check https://github.com/bazelbuild/rules_nodejs/releases for a newer release than this)
-http_archive(
-    name = "build_bazel_rules_nodejs",
-    urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"],
-    sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b",
-)
-
-# Setup the NodeJS toolchain
-load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install")
-node_repositories()
-
-yarn_install(
-  name = "npm",
-  package_json = "//:package.json",
-  yarn_lock = "//:yarn.lock",
-)
-
-# Install all Bazel dependencies needed for npm packages that supply Bazel rules
-load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies")
-install_bazel_dependencies()
-```
-
-This causes the `@bazel/karma` package to be installed as a Bazel workspace named `npm_bazel_karma`.
-
-Now add this to your `WORKSPACE` to install the Karma dependencies:
-
-```python
-# Fetch transitive Bazel dependencies of npm_bazel_karma
-load("@npm_bazel_karma//:package.bzl", "rules_karma_dependencies")
-rules_karma_dependencies()
-```
-
-This installs the `io_bazel_rules_webtesting` repository, if you haven't installed it earlier.
-
-Finally, configure the rules_webtesting:
-
-```python
-# Setup web testing, choose browsers we can test on
-load("@io_bazel_rules_webtesting//web:repositories.bzl", "browser_repositories", "web_test_repositories")
-
-web_test_repositories()
-browser_repositories(
-    chromium = True,
-)
-```
-
-## Installing with self-managed dependencies
-
-If you didn't use the `yarn_install` or `npm_install` rule to create an `npm` workspace, you'll have to declare a rule in your root `BUILD.bazel` file to execute karma:
-
-```python
-# Create a karma rule to use in ts_web_test_suite karma
-# attribute when using self-managed dependencies
-nodejs_binary(
-    name = "karma/karma",
-    entry_point = "karma/bin/karma",
-    # Point bazel to your node_modules to find the entry point
-    node_modules = ["//:node_modules"],
-)
-```
-
diff --git a/internal/karma/docs/karma_web_test.md b/internal/karma/docs/karma_web_test.md
deleted file mode 100644
index 39c6543..0000000
--- a/internal/karma/docs/karma_web_test.md
+++ /dev/null
@@ -1,315 +0,0 @@
-
-<!---
-Documentation generated by Skydoc
--->
-<h1>Unit testing with Karma</h1>
-
-
-<nav class="toc">
-  <h2>Macros</h2>
-  <ul>
-    <li><a href="#run_karma_web_test">run_karma_web_test</a></li>
-    <li><a href="#karma_web_test">karma_web_test</a></li>
-    <li><a href="#karma_web_test_suite">karma_web_test_suite</a></li>
-  </ul>
-</nav>
-<a name="run_karma_web_test"></a>
-## run_karma_web_test
-
-<pre>
-run_karma_web_test(<a href="#run_karma_web_test.ctx">ctx</a>)
-</pre>
-
-Creates an action that can run karma.
-
-This is also used by ts_web_test_rule.
-
-Returns:
-  The runfiles for the generated action.
-
-
-<a name="run_karma_web_test_args"></a>
-### Attributes
-
-
-<table class="params-table">
-  <colgroup>
-    <col class="col-param" />
-    <col class="col-description" />
-  </colgroup>
-  <tbody>
-    <tr id="run_karma_web_test.ctx">
-      <td><code>ctx</code></td>
-      <td>
-        <p><code>Unknown; Required</code></p>
-        <p>Bazel rule execution context</p>
-      </td>
-    </tr>
-  </tbody>
-</table>
-<a name="karma_web_test"></a>
-## karma_web_test
-
-<pre>
-karma_web_test(<a href="#karma_web_test.srcs">srcs</a>, <a href="#karma_web_test.deps">deps</a>, <a href="#karma_web_test.data">data</a>, <a href="#karma_web_test.configuration_env_vars">configuration_env_vars</a>, <a href="#karma_web_test.bootstrap">bootstrap</a>, <a href="#karma_web_test.runtime_deps">runtime_deps</a>, <a href="#karma_web_test.static_files">static_files</a>, <a href="#karma_web_test.config_file">config_file</a>, <a href="#karma_web_test.tags">tags</a>, <a href="#karma_web_test.**kwargs">**kwargs</a>)
-</pre>
-
-Runs unit tests in a browser with Karma.
-
-When executed under `bazel test`, this uses a headless browser for speed.
-This is also because `bazel test` allows multiple targets to be tested together,
-and we don't want to open a Chrome window on your machine for each one. Also,
-under `bazel test` the test will execute and immediately terminate.
-
-Running under `ibazel test` gives you a "watch mode" for your tests. The rule is
-optimized for this case - the test runner server will stay running and just
-re-serve the up-to-date JavaScript source bundle.
-
-To debug a single test target, run it with `bazel run` instead. This will open a
-browser window on your computer. Also you can use any other browser by opening
-the URL printed when the test starts up. The test will remain running until you
-cancel the `bazel run` command.
-
-This rule will use your system Chrome by default. In the default case, your
-environment must specify CHROME_BIN so that the rule will know which Chrome binary to run.
-Other `browsers` and `customLaunchers` may be set using the a base Karma configuration
-specified in the `config_file` attribute.
-
-
-<a name="karma_web_test_args"></a>
-### Attributes
-
-
-<table class="params-table">
-  <colgroup>
-    <col class="col-param" />
-    <col class="col-description" />
-  </colgroup>
-  <tbody>
-    <tr id="karma_web_test.srcs">
-      <td><code>srcs</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>A list of JavaScript test files</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test.deps">
-      <td><code>deps</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Other targets which produce JavaScript such as <code>ts_library</code></p>
-      </td>
-    </tr>
-    <tr id="karma_web_test.data">
-      <td><code>data</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Runtime dependencies</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test.configuration_env_vars">
-      <td><code>configuration_env_vars</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Pass these configuration environment variables to the resulting binary.
-Chooses a subset of the configuration environment variables (taken from ctx.var), which also
-includes anything specified via the --define flag.
-Note, this can lead to different outputs produced by this rule.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test.bootstrap">
-      <td><code>bootstrap</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>JavaScript files to include <em>before</em> the module loader (require.js).
-For example, you can include Reflect,js for TypeScript decorator metadata reflection,
-or UMD bundles for third-party libraries.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test.runtime_deps">
-      <td><code>runtime_deps</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Dependencies which should be loaded after the module loader but before the srcs and deps.
-These should be a list of targets which produce JavaScript such as <code>ts_library</code>.
-The files will be loaded in the same order they are declared by that rule.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test.static_files">
-      <td><code>static_files</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Arbitrary files which are available to be served on request.
-Files are served at:
-<code>/base/&amp;lt;WORKSPACE_NAME&amp;gt;/&amp;lt;path-to-file&amp;gt;</code>, e.g.
-<code>/base/npm_bazel_typescript/examples/testing/static_script.js</code></p>
-      </td>
-    </tr>
-    <tr id="karma_web_test.config_file">
-      <td><code>config_file</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>User supplied Karma configuration file. Bazel will override
-certain attributes of this configuration file. Attributes that are
-overridden will be outputted to the test log.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test.tags">
-      <td><code>tags</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Standard Bazel tags, this macro adds tags for ibazel support</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test.**kwargs">
-      <td><code>**kwargs</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>Passed through to <code>karma_web_test</code></p>
-      </td>
-    </tr>
-  </tbody>
-</table>
-<a name="karma_web_test_suite"></a>
-## karma_web_test_suite
-
-<pre>
-karma_web_test_suite(<a href="#karma_web_test_suite.name">name</a>, <a href="#karma_web_test_suite.browsers">browsers</a>, <a href="#karma_web_test_suite.args">args</a>, <a href="#karma_web_test_suite.browser_overrides">browser_overrides</a>, <a href="#karma_web_test_suite.config">config</a>, <a href="#karma_web_test_suite.flaky">flaky</a>, <a href="#karma_web_test_suite.local">local</a>, <a href="#karma_web_test_suite.shard_count">shard_count</a>, <a href="#karma_web_test_suite.size">size</a>, <a href="#karma_web_test_suite.tags">tags</a>, <a href="#karma_web_test_suite.test_suite_tags">test_suite_tags</a>, <a href="#karma_web_test_suite.timeout">timeout</a>, <a href="#karma_web_test_suite.visibility">visibility</a>, <a href="#karma_web_test_suite.web_test_data">web_test_data</a>, <a href="#karma_web_test_suite.wrapped_test_tags">wrapped_test_tags</a>, <a href="#karma_web_test_suite.**remaining_keyword_args">**remaining_keyword_args</a>)
-</pre>
-
-Defines a test_suite of web_test targets that wrap a karma_web_test target.
-
-This macro also accepts all parameters in karma_web_test. See karma_web_test docs
-for details.
-
-
-<a name="karma_web_test_suite_args"></a>
-### Attributes
-
-
-<table class="params-table">
-  <colgroup>
-    <col class="col-param" />
-    <col class="col-description" />
-  </colgroup>
-  <tbody>
-    <tr id="karma_web_test_suite.name">
-      <td><code>name</code></td>
-      <td>
-        <p><code><a href="https://bazel.build/docs/build-ref.html#name">Name</a>; Required</code></p>
-        <p>The base name of the test</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.browsers">
-      <td><code>browsers</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>A sequence of labels specifying the browsers to use.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.args">
-      <td><code>args</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>Args for web_test targets generated by this extension.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.browser_overrides">
-      <td><code>browser_overrides</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>Dictionary; optional; default is an empty dictionary. A
-dictionary mapping from browser names to browser-specific web_test
-attributes, such as shard_count, flakiness, timeout, etc. For example:
-{'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1}
-'//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.config">
-      <td><code>config</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>Label; optional; Configuration of web test features.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.flaky">
-      <td><code>flaky</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>A boolean specifying that the test is flaky. If set, the test will
-be retried up to 3 times (default: 0)</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.local">
-      <td><code>local</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>boolean; optional.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.shard_count">
-      <td><code>shard_count</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>The number of test shards to use per browser. (default: 1)</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.size">
-      <td><code>size</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>A string specifying the test size. (default: 'large')</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.tags">
-      <td><code>tags</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>A list of test tag strings to apply to each generated web_test target.
-This macro adds a couple for ibazel.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.test_suite_tags">
-      <td><code>test_suite_tags</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>A list of tag strings for the generated test_suite.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.timeout">
-      <td><code>timeout</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>A string specifying the test timeout (default: computed from size)</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.visibility">
-      <td><code>visibility</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>List of labels; optional.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.web_test_data">
-      <td><code>web_test_data</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Data dependencies for the web_test.</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.wrapped_test_tags">
-      <td><code>wrapped_test_tags</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>A list of test tag strings to use for the wrapped test</p>
-      </td>
-    </tr>
-    <tr id="karma_web_test_suite.**remaining_keyword_args">
-      <td><code>**remaining_keyword_args</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>Arguments for the wrapped test target.</p>
-      </td>
-    </tr>
-  </tbody>
-</table>
diff --git a/internal/karma/docs/ts_web_test.md b/internal/karma/docs/ts_web_test.md
deleted file mode 100644
index eca8535..0000000
--- a/internal/karma/docs/ts_web_test.md
+++ /dev/null
@@ -1,272 +0,0 @@
-
-<!---
-Documentation generated by Skydoc
--->
-<h1>Unit testing in a browser</h1>
-
-
-<nav class="toc">
-  <h2>Macros</h2>
-  <ul>
-    <li><a href="#ts_web_test">ts_web_test</a></li>
-    <li><a href="#ts_web_test_suite">ts_web_test_suite</a></li>
-  </ul>
-</nav>
-<a name="ts_web_test"></a>
-## ts_web_test
-
-<pre>
-ts_web_test(<a href="#ts_web_test.srcs">srcs</a>, <a href="#ts_web_test.deps">deps</a>, <a href="#ts_web_test.data">data</a>, <a href="#ts_web_test.configuration_env_vars">configuration_env_vars</a>, <a href="#ts_web_test.bootstrap">bootstrap</a>, <a href="#ts_web_test.runtime_deps">runtime_deps</a>, <a href="#ts_web_test.static_files">static_files</a>, <a href="#ts_web_test.tags">tags</a>, <a href="#ts_web_test.**kwargs">**kwargs</a>)
-</pre>
-
-Runs unit tests in a browser.
-
-When executed under `bazel test`, this uses a headless browser for speed.
-This is also because `bazel test` allows multiple targets to be tested together,
-and we don't want to open a Chrome window on your machine for each one. Also,
-under `bazel test` the test will execute and immediately terminate.
-
-Running under `ibazel test` gives you a "watch mode" for your tests. The rule is
-optimized for this case - the test runner server will stay running and just
-re-serve the up-to-date JavaScript source bundle.
-
-To debug a single test target, run it with `bazel run` instead. This will open a
-browser window on your computer. Also you can use any other browser by opening
-the URL printed when the test starts up. The test will remain running until you
-cancel the `bazel run` command.
-
-This rule will use your system Chrome. Your environment must specify CHROME_BIN
-so that the rule will know which Chrome binary to run.
-
-Currently this rule uses Karma as the test runner under the hood, but this is
-an implementation detail. We might switch to another runner like Jest in the future.
-
-
-<a name="ts_web_test_args"></a>
-### Attributes
-
-
-<table class="params-table">
-  <colgroup>
-    <col class="col-param" />
-    <col class="col-description" />
-  </colgroup>
-  <tbody>
-    <tr id="ts_web_test.srcs">
-      <td><code>srcs</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>A list of JavaScript test files</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test.deps">
-      <td><code>deps</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Other targets which produce JavaScript such as <code>ts_library</code></p>
-      </td>
-    </tr>
-    <tr id="ts_web_test.data">
-      <td><code>data</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Runtime dependencies</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test.configuration_env_vars">
-      <td><code>configuration_env_vars</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Pass these configuration environment variables to the resulting binary.
-Chooses a subset of the configuration environment variables (taken from ctx.var), which also
-includes anything specified via the --define flag.
-Note, this can lead to different outputs produced by this rule.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test.bootstrap">
-      <td><code>bootstrap</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>JavaScript files to include <em>before</em> the module loader (require.js).
-For example, you can include Reflect,js for TypeScript decorator metadata reflection,
-or UMD bundles for third-party libraries.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test.runtime_deps">
-      <td><code>runtime_deps</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Dependencies which should be loaded after the module loader but before the srcs and deps.
-These should be a list of targets which produce JavaScript such as <code>ts_library</code>.
-The files will be loaded in the same order they are declared by that rule.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test.static_files">
-      <td><code>static_files</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Arbitrary files which are available to be served on request.
-Files are served at:
-<code>/base/&amp;lt;WORKSPACE_NAME&amp;gt;/&amp;lt;path-to-file&amp;gt;</code>, e.g.
-<code>/base/npm_bazel_typescript/examples/testing/static_script.js</code></p>
-      </td>
-    </tr>
-    <tr id="ts_web_test.tags">
-      <td><code>tags</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Standard Bazel tags, this macro adds tags for ibazel support as well as</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test.**kwargs">
-      <td><code>**kwargs</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>Passed through to <code>ts_web_test</code></p>
-      </td>
-    </tr>
-  </tbody>
-</table>
-<a name="ts_web_test_suite"></a>
-## ts_web_test_suite
-
-<pre>
-ts_web_test_suite(<a href="#ts_web_test_suite.name">name</a>, <a href="#ts_web_test_suite.browsers">browsers</a>, <a href="#ts_web_test_suite.args">args</a>, <a href="#ts_web_test_suite.browser_overrides">browser_overrides</a>, <a href="#ts_web_test_suite.config">config</a>, <a href="#ts_web_test_suite.flaky">flaky</a>, <a href="#ts_web_test_suite.local">local</a>, <a href="#ts_web_test_suite.shard_count">shard_count</a>, <a href="#ts_web_test_suite.size">size</a>, <a href="#ts_web_test_suite.tags">tags</a>, <a href="#ts_web_test_suite.test_suite_tags">test_suite_tags</a>, <a href="#ts_web_test_suite.timeout">timeout</a>, <a href="#ts_web_test_suite.visibility">visibility</a>, <a href="#ts_web_test_suite.web_test_data">web_test_data</a>, <a href="#ts_web_test_suite.wrapped_test_tags">wrapped_test_tags</a>, <a href="#ts_web_test_suite.**remaining_keyword_args">**remaining_keyword_args</a>)
-</pre>
-
-Defines a test_suite of web_test targets that wrap a ts_web_test target.
-
-This macro also accepts all parameters in ts_web_test. See ts_web_test docs for
-details.
-
-
-<a name="ts_web_test_suite_args"></a>
-### Attributes
-
-
-<table class="params-table">
-  <colgroup>
-    <col class="col-param" />
-    <col class="col-description" />
-  </colgroup>
-  <tbody>
-    <tr id="ts_web_test_suite.name">
-      <td><code>name</code></td>
-      <td>
-        <p><code><a href="https://bazel.build/docs/build-ref.html#name">Name</a>; Required</code></p>
-        <p>The base name of the test.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.browsers">
-      <td><code>browsers</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>A sequence of labels specifying the browsers to use.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.args">
-      <td><code>args</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>Args for web_test targets generated by this extension.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.browser_overrides">
-      <td><code>browser_overrides</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>Dictionary; optional; default is an empty dictionary. A
-dictionary mapping from browser names to browser-specific web_test
-attributes, such as shard_count, flakiness, timeout, etc. For example:
-{'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1}
-'//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.config">
-      <td><code>config</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>Label; optional; Configuration of web test features.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.flaky">
-      <td><code>flaky</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>A boolean specifying that the test is flaky. If set, the test will
-be retried up to 3 times (default: 0)</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.local">
-      <td><code>local</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>boolean; optional.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.shard_count">
-      <td><code>shard_count</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>The number of test shards to use per browser. (default: 1)</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.size">
-      <td><code>size</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>A string specifying the test size. (default: 'large')</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.tags">
-      <td><code>tags</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>A list of test tag strings to apply to each generated web_test_suite target.
-This macro adds a couple for ibazel.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.test_suite_tags">
-      <td><code>test_suite_tags</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>A list of tag strings for the generated test_suite.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.timeout">
-      <td><code>timeout</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>A string specifying the test timeout (default: computed from size)</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.visibility">
-      <td><code>visibility</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>List of labels; optional.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.web_test_data">
-      <td><code>web_test_data</code></td>
-      <td>
-        <p><code>List of strings; Optional</code></p>
-        <p>Data dependencies for the web_test_suite.</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.wrapped_test_tags">
-      <td><code>wrapped_test_tags</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>A list of test tag strings to use for the wrapped test</p>
-      </td>
-    </tr>
-    <tr id="ts_web_test_suite.**remaining_keyword_args">
-      <td><code>**remaining_keyword_args</code></td>
-      <td>
-        <p><code>Unknown; Optional</code></p>
-        <p>Arguments for the wrapped test target.</p>
-      </td>
-    </tr>
-  </tbody>
-</table>
diff --git a/internal/karma/index.ts b/internal/karma/index.ts
deleted file mode 100644
index 511a6fb..0000000
--- a/internal/karma/index.ts
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Concat all JS files before serving.
- */
-import * as crypto from 'crypto';
-import * as fs from 'fs';
-import * as path from 'path';
-import * as process from 'process';
-import * as tmp from 'tmp';
-import {createInterface} from 'readline';
-///<reference types="lib.dom"/>
-
-/**
- * Return SHA1 of data buffer.
- */
-function sha1(data) {
-  const hash = crypto.createHash('sha1');
-  hash.update(data);
-  return hash.digest('hex');
-}
-
-/**
- * Entry-point for the Karma plugin.
- */
-function initConcatJs(logger, emitter, basePath, hostname, port) {
-  const log = logger.create('framework.concat_js');
-
-  // Create a tmp file for the concat bundle that is automatically cleaned up on
-  // exit.
-  const tmpFile = tmp.fileSync({keep: false, dir: process.env['TEST_TMPDIR']});
-
-  emitter.on('file_list_modified', files => {
-    const bundleFile = {
-      path: '/concatjs_bundle.js',
-      contentPath: tmpFile.name,
-      isUrl: false,
-      content: '',
-      encodings: {},
-    } as any;
-    const included = [];
-
-    files.included.forEach(file => {
-      if (path.extname(file.originalPath) !== '.js') {
-        // Preserve all non-JS that were there in the included list.
-        included.push(file);
-      } else {
-        const relativePath =
-            path.relative(basePath, file.originalPath).replace(/\\/g, '/');
-
-        // Remove 'use strict'.
-        let content = file.content.replace(/('use strict'|"use strict");?/,
-                                           '');
-        content = JSON.stringify(
-          `${content}\n//# sourceURL=http://${hostname}:${port}/base/` +
-          `${relativePath}\n`);
-        content = `//${relativePath}\neval(${content});\n`;
-        bundleFile.content += content;
-      }
-    });
-
-    bundleFile.sha = sha1(Buffer.from(bundleFile.content));
-    bundleFile.mtime = new Date();
-    included.unshift(bundleFile);
-
-    files.included = included;
-    files.served.push(bundleFile);
-
-    log.debug('Writing concatjs bundle to tmp file %s',
-        bundleFile.contentPath);
-    fs.writeFileSync(bundleFile.contentPath, bundleFile.content);
-  });
-}
-
-(initConcatJs as any).$inject = ['logger', 'emitter', 'config.basePath', 'config.hostname', 'config.port'];
-
-function watcher(fileList: {refresh: () => void}) {
-  // ibazel will write this string after a successful build
-  // We don't want to re-trigger tests if the compilation fails, so
-  // we should only listen for this event.
-  const IBAZEL_NOTIFY_BUILD_SUCCESS = 'IBAZEL_BUILD_COMPLETED SUCCESS';
-  // ibazel communicates with us via stdin
-  const rl = createInterface({input: process.stdin, terminal: false});
-  rl.on('line', (chunk: string) => {
-    if (chunk === IBAZEL_NOTIFY_BUILD_SUCCESS) {
-      fileList.refresh();
-    }
-  });
-  rl.on('close', () => {
-    // Give ibazel 5s to kill our process, otherwise do it ourselves
-    setTimeout(() => {
-      console.error('ibazel failed to stop karma after 5s; probably a bug');
-      process.exit(1);
-    }, 5000);
-  });
-}
-
-(watcher as any).$inject = ['fileList'];
-
-module.exports = {
-  'framework:concat_js': ['factory', initConcatJs],
-  'watcher': ['value', watcher],
-};
diff --git a/internal/karma/karma.conf.js b/internal/karma/karma.conf.js
deleted file mode 100644
index 1d82ff1..0000000
--- a/internal/karma/karma.conf.js
+++ /dev/null
@@ -1,423 +0,0 @@
-// Karma configuration
-// GENERATED BY Bazel
-try
-{
-  const fs = require('fs');
-  const path = require('path');
-  const tmp = require('tmp');
-  const child_process = require('child_process');
-
-  const DEBUG = false;
-
-  TMPL_env_vars
-
-  const configPath = 'TMPL_config_file';
-
-  if (DEBUG)
-    console.info(`Karma test starting with:
-    cwd: ${process.cwd()}
-    configPath: ${configPath}`);
-
-  /**
-   * Helper function to find a particular namedFile
-   * within the webTestMetadata webTestFiles
-   */
-  function findNamedFile(webTestMetadata, key) {
-    let result;
-    webTestMetadata['webTestFiles'].forEach(entry => {
-      const webTestNamedFiles = entry['namedFiles'];
-      if (webTestNamedFiles && webTestNamedFiles[key]) {
-        result = webTestNamedFiles[key];
-      }
-    });
-    return result;
-  }
-
-  /**
-   * Helper function to extract a browser archive
-   * and return the path to extract executable
-   */
-  function extractWebArchive(extractExe, archiveFile, executablePath) {
-    try {
-      // Paths are relative to the root runfiles folder
-      extractExe = extractExe ? path.join('..', extractExe) : extractExe;
-      archiveFile = path.join('..', archiveFile);
-      const extractedExecutablePath = path.join(process.cwd(), executablePath);
-      if (!extractExe) {
-        throw new Error('No EXTRACT_EXE found');
-      }
-      child_process.execFileSync(
-          extractExe, [archiveFile, '.'],
-          {stdio: [process.stdin, process.stdout, process.stderr]});
-    if (DEBUG) console.info(`Extracting web archive ${archiveFile} with ${extractExe} to ${extractedExecutablePath}`);
-      return extractedExecutablePath;
-    } catch (e) {
-      console.error(`Failed to extract ${archiveFile}`);
-      throw e;
-    }
-  }
-
-  /**
-   * Chrome on Linux uses sandboxing, which needs user namespaces to be enabled.
-   * This is not available on all kernels and it might be turned off even if it is available.
-   * Notable examples where user namespaces are not available include:
-   * - In Debian it is compiled-in but disabled by default.
-   * - The Docker daemon for Windows or OSX does not support user namespaces.
-   * We can detect if user namespaces are supported via /proc/sys/kernel/unprivileged_userns_clone.
-   * For more information see:
-   * https://github.com/Googlechrome/puppeteer/issues/290
-   * https://superuser.com/questions/1094597/enable-user-namespaces-in-debian-kernel#1122977
-   * https://github.com/karma-runner/karma-chrome-launcher/issues/158
-   * https://github.com/angular/angular/pull/24906
-   */
-  function supportsSandboxing() {
-    if (process.platform !== 'linux') {
-      return true;
-    }
-    try {
-      const res = child_process
-        .execSync('cat /proc/sys/kernel/unprivileged_userns_clone').toString().trim();
-      return res === '1';
-    } catch (error) { }
-
-    return false;
-  }
-
-  /**
-   * Helper function to override base karma config values.
-   */
-  function overrideConfigValue(conf, name, value) {
-    if (conf.hasOwnProperty(name)) {
-      console.warn(
-          `Your karma configuration specifies '${name}' which will be overwritten by Bazel`);
-    }
-    conf[name] = value;
-  }
-
-  /**
-   * Helper function to merge base karma config values that are arrays.
-   */
-  function mergeConfigArray(conf, name, values) {
-    if (!conf[name]) {
-      conf[name] = [];
-    }
-    values.forEach(v => {
-      if (!conf[name].includes(v)) {
-        conf[name].push(v);
-      }
-    })
-  }
-
-  /**
-   * Configuration settings for karma under Bazel common to karma_web_test
-   * and karma_web_test_suite.
-   */
-  function configureBazelConfig(config, conf) {
-    // list of karma plugins
-    mergeConfigArray(conf, 'plugins', [
-      'karma-*',
-      '@bazel/karma',
-      'karma-sourcemap-loader',
-      'karma-chrome-launcher',
-      'karma-firefox-launcher',
-      'karma-sauce-launcher',
-    ]);
-
-    // list of karma preprocessors
-    if (!conf.preprocessors) {
-      conf.preprocessors = {}
-    }
-    conf.preprocessors['**/*.js'] = ['sourcemap'];
-
-    // list of test frameworks to use
-    overrideConfigValue(conf, 'frameworks', ['jasmine', 'concat_js']);
-
-    // test results reporter to use
-    // possible values: 'dots', 'progress'
-    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
-    mergeConfigArray(conf, 'reporters', ['progress']);
-
-    // enable / disable colors in the output (reporters and logs)
-    if (!conf.colors) {
-      conf.colors = true;
-    }
-
-    // level of logging
-    // possible values: config.LOG_DISABLE || config.LOG_ERROR ||
-    // config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
-    if (!conf.logLevel) {
-      conf.logLevel = config.LOG_INFO;
-    }
-
-    // enable / disable watching file and executing tests whenever
-    // any file changes
-    overrideConfigValue(conf, 'autoWatch', process.env['IBAZEL_NOTIFY_CHANGES'] === 'y');
-
-    // Continuous Integration mode
-    // if true, Karma captures browsers, runs the tests and exits
-    // note: run_karma.sh may override this as a command-line option.
-    overrideConfigValue(conf, 'singleRun', false);
-
-    // Concurrency level
-    // how many browser should be started simultaneous
-    overrideConfigValue(conf, 'concurrency', Infinity);
-
-    // base path that will be used to resolve all patterns
-    // (eg. files, exclude)
-    overrideConfigValue(conf, 'basePath', 'TMPL_runfiles_path');
-
-    // Do not show "no timestamp" errors from "karma-requirejs" for proxied file
-    // requests. Files which are passed as "static_files" are proxied by default and
-    // therefore should not cause such an exception when loaded as expected.
-    // See: https://github.com/karma-runner/karma-requirejs/issues/6
-    const requireJsShowNoTimestampsError = '^(?!/base/).*$';
-
-    if (conf.client) {
-      overrideConfigValue(conf.client, 'requireJsShowNoTimestampsError',
-          requireJsShowNoTimestampsError);
-    } else {
-      conf.client = {requireJsShowNoTimestampsError};
-    }
-  }
-
-  /**
-   * Configure the 'files' and 'proxies' configuration attributes.
-   * These are concatenated into a single file by karma-concat-js.
-   */
-  function configureFiles(conf) {
-    overrideConfigValue(conf, 'files', [
-      TMPL_bootstrap_files
-      TMPL_user_files
-    ].map(f => {
-      if (f.startsWith('NODE_MODULES/')) {
-        try {
-          // attempt to resolve in @bazel/typescript nested node_modules first
-          return require.resolve(f.replace(/^NODE_MODULES\//, '@bazel/karma/node_modules/'));
-        } catch (e) {
-          // if that failed then attempt to resolve in root node_modules
-          return require.resolve(f.replace(/^NODE_MODULES\//, ''));
-        }
-      } else {
-        return require.resolve(f);
-      }
-    }));
-    overrideConfigValue(conf, 'exclude', []);
-    overrideConfigValue(conf, 'proxies', {});
-
-    // static files are added to the files array but
-    // configured to not be included so karma-concat-js does
-    // not included them in the bundle
-    [TMPL_static_files].forEach((f) => {
-      // In Windows, the runfile will probably not be symlinked. Se we need to
-      // serve the real file through karma, and proxy calls to the expected file
-      // location in the runfiles to the real file.
-      const resolvedFile = require.resolve(f);
-      conf.files.push({pattern: resolvedFile, included: false});
-      // Prefixing the proxy path with '/absolute' allows karma to load local
-      // files. This doesn't see to be an official API.
-      // https://github.com/karma-runner/karma/issues/2703
-      conf.proxies['/base/' + f] = '/absolute' + resolvedFile;
-    });
-
-    var requireConfigContent = `
-// A simplified version of Karma's requirejs.config.tpl.js for use with Karma under Bazel.
-// This does an explicit \`require\` on each test script in the files, otherwise nothing will be loaded.
-(function(){
-  var runtimeFiles = [TMPL_runtime_files].map(function(file) { return file.replace(/\\.js$/, ''); });
-  var allFiles = [TMPL_user_files];
-  var allTestFiles = [];
-  allFiles.forEach(function (file) {
-    if (/[^a-zA-Z0-9](spec|test)\\.js$/i.test(file) && !/\\/node_modules\\//.test(file)) {
-      allTestFiles.push(file.replace(/\\.js$/, ''))
-    }
-  });
-  require(runtimeFiles, function() { return require(allTestFiles, window.__karma__.start); });
-})();
-`;
-
-    const requireConfigFile = tmp.fileSync(
-        {keep: false, postfix: '.js', dir: process.env['TEST_TMPDIR']});
-    fs.writeFileSync(requireConfigFile.name, requireConfigContent);
-    conf.files.push(requireConfigFile.name);
-  }
-
-  /**
-   * Configure karma under karma_web_test_suite.
-   * `browsers` and `customLaunchers` are setup by Bazel.
-   */
-  function configureTsWebTestSuiteConfig(conf) {
-    // WEB_TEST_METADATA is configured in rules_webtesting based on value
-    // of the browsers attribute passed to karms_web_test_suite
-    // We setup the karma configuration based on the values in this object
-    if (!process.env['WEB_TEST_METADATA']) {
-      // This is a karma_web_test rule since there is no WEB_TEST_METADATA
-      return;
-    }
-
-    overrideConfigValue(conf, 'browsers', []);
-    overrideConfigValue(conf, 'customLaunchers', null);
-
-    const webTestMetadata = require(process.env['WEB_TEST_METADATA']);
-    if (DEBUG) console.info(`WEB_TEST_METADATA: ${JSON.stringify(webTestMetadata, null, 2)}`);
-    if (webTestMetadata['environment'] === 'sauce') {
-      // If a sauce labs browser is chosen for the test such as
-      // "@io_bazel_rules_webtesting//browsers/sauce:chrome-win10"
-      // than the 'environment' will equal 'sauce'.
-      // We expect that a SAUCE_USERNAME and SAUCE_ACCESS_KEY is available
-      // from the environment for this test to run
-      if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) {
-        console.error('Make sure the SAUCE_USERNAME and SAUCE_ACCESS_KEY environment variables are set.');
-        process.exit(1);
-      }
-      // 'capabilities' will specify the sauce labs configuration to use
-      const capabilities = webTestMetadata['capabilities'];
-      conf.customLaunchers = {
-          'sauce': {
-          base: 'SauceLabs',
-          browserName: capabilities['browserName'],
-          platform: capabilities['platform'],
-          version: capabilities['version'],
-        }
-      };
-      conf.browsers.push('sauce');
-    } else if (webTestMetadata['environment'] === 'local') {
-      // When a local chrome or firefox browser is chosen such as
-      // "@io_bazel_rules_webtesting//browsers:chromium-local" or
-      // "@io_bazel_rules_webtesting//browsers:firefox-local"
-      // then the 'environment' will equal 'local' and
-      // 'webTestFiles' will contain the path to the binary to use
-      const extractExe = findNamedFile(webTestMetadata, 'EXTRACT_EXE');
-      webTestMetadata['webTestFiles'].forEach(webTestFiles => {
-        const webTestNamedFiles = webTestFiles['namedFiles'];
-        const archiveFile = webTestFiles['archiveFile'];
-        if (webTestNamedFiles['CHROMIUM']) {
-          // When karma is configured to use Chrome it will look for a CHROME_BIN
-          // environment variable.
-          if (archiveFile) {
-            process.env.CHROME_BIN = extractWebArchive(extractExe, archiveFile, webTestNamedFiles['CHROMIUM']);
-          } else {
-            process.env.CHROME_BIN = require.resolve(webTestNamedFiles['CHROMIUM']);
-          }
-          const browser = process.env['DISPLAY'] ? 'Chrome' : 'ChromeHeadless';
-          if (!supportsSandboxing()) {
-            const launcher = 'CustomChromeWithoutSandbox';
-            conf.customLaunchers = {
-              [launcher]: {
-                base: browser,
-                flags: ['--no-sandbox']
-              }
-            };
-            conf.browsers.push(launcher);
-          } else {
-            conf.browsers.push(browser);
-          }
-        }
-        if (webTestNamedFiles['FIREFOX']) {
-          // When karma is configured to use Firefox it will look for a
-          // FIREFOX_BIN environment variable.
-          if (archiveFile) {
-            process.env.FIREFOX_BIN = extractWebArchive(extractExe, archiveFile, webTestNamedFiles['FIREFOX']);
-          } else {
-            process.env.FIREFOX_BIN = require.resolve(webTestNamedFiles['FIREFOX']);
-          }
-          conf.browsers.push(process.env['DISPLAY'] ? 'Firefox' : 'FirefoxHeadless');
-        }
-      });
-    } else {
-      throw new Error(`Unknown WEB_TEST_METADATA environment '${webTestMetadata['environment']}'`);
-    }
-
-    if (!conf.browsers.length) {
-      throw new Error('No browsers configured in web test suite');
-    }
-
-    // Extra configuration is needed for saucelabs
-    // See: https://github.com/karma-runner/karma-sauce-launcher
-    if (conf.customLaunchers) {
-      // set the test name for sauce labs to use
-      // TEST_BINARY is set by Bazel and contains the name of the test
-      // target postfixed with the browser name such as
-      // 'examples/testing/testing_sauce_chrome-win10' for the
-      // test target examples/testing:testing
-      if (!conf.sauceLabs) {
-        conf.sauceLabs = {}
-      }
-      conf.sauceLabs.testName = process.env['TEST_BINARY'] || 'karma';
-
-      // Try "websocket" for a faster transmission first. Fallback to "polling" if necessary.
-      overrideConfigValue(conf, 'transports', ['websocket', 'polling']);
-
-      // add the saucelabs reporter
-      mergeConfigArray(conf, 'reporters', ['saucelabs']);
-    }
-  }
-
-  function configureTsWebTestConfig(conf) {
-    if (process.env['WEB_TEST_METADATA']) {
-      // This is a karma_web_test_suite rule since there is a WEB_TEST_METADATA
-      return;
-    }
-
-    // Fallback to using the system local chrome if no valid browsers have been
-    // configured above
-    if (!conf.browsers || !conf.browsers.length) {
-      console.warn('No browsers configured. Configuring Karma to use system Chrome.');
-      conf.browsers = [process.env['DISPLAY'] ? 'Chrome': 'ChromeHeadless'];
-    }
-  }
-
-  function configureFormatError(conf) {
-    conf.formatError = (msg) =>  {
-      // This is a bazel specific formatError that removes the workspace
-      // name from stack traces.
-      // Look for filenames of the format "(<filename>:<row>:<column>"
-      const FILENAME_REGEX = /\(([^:]+)(:\d+:\d+)/gm;
-      msg = msg.replace(FILENAME_REGEX, (_, p1, p2) => {
-        if (p1. startsWith('../')) {
-          // Remove all leading "../"
-          while (p1.startsWith('../')) {
-            p1 = p1.substr(3);
-          }
-        } else {
-          // Remove workspace name(angular, ngdeps etc.) from the beginning.
-          const index = p1.indexOf('/');
-          if (index >= 0) {
-            p1 = p1.substr(index + 1);
-          }
-        }
-        return '(' + p1 + p2;
-      });
-      return msg + '\n\n';
-    };
-  }
-
-  module.exports = function(config) {
-    let conf = {};
-
-    // Import the user's base karma configuration if specified
-    if (configPath) {
-      const baseConf = require(configPath);
-      if (typeof baseConf !== 'function') {
-        throw new Error('Invalid base karma configuration. Expected config function to be exported.');
-      }
-      const originalSetConfig = config.set;
-      config.set = function(c) { conf = c; };
-      baseConf(config);
-      config.set = originalSetConfig;
-      if (DEBUG) console.info(`Base karma configuration: ${JSON.stringify(conf, null, 2)}`);
-    }
-
-    configureBazelConfig(config, conf);
-    configureFiles(conf);
-    configureTsWebTestSuiteConfig(conf);
-    configureTsWebTestConfig(conf);
-    configureFormatError(conf);
-
-    if (DEBUG) console.info(`Karma configuration: ${JSON.stringify(conf, null, 2)}`);
-
-    config.set(conf);
-  }
-} catch (e) {
-  console.error('Error in karma configuration', e.toString());
-  throw e;
-}
diff --git a/internal/karma/karma.js b/internal/karma/karma.js
deleted file mode 100644
index 2653ede..0000000
--- a/internal/karma/karma.js
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env node
-
-require('karma/lib/cli').run();
diff --git a/internal/karma/karma_web_test.bzl b/internal/karma/karma_web_test.bzl
deleted file mode 100644
index 2002fd2..0000000
--- a/internal/karma/karma_web_test.bzl
+++ /dev/null
@@ -1,447 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"Unit testing with Karma"
-
-load("@build_bazel_rules_nodejs//internal/common:expand_into_runfiles.bzl", "expand_path_into_runfiles")
-load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect")
-load("@build_bazel_rules_nodejs//internal/js_library:js_library.bzl", "write_amd_names_shim")
-load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_TEST_TAGS")
-load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite")
-load(":web_test.bzl", "COMMON_WEB_TEST_ATTRS")
-
-_CONF_TMPL = "//:karma.conf.js"
-_DEFAULT_KARMA_BIN = "@npm//@bazel/karma/bin:karma"
-
-# Attributes for karma_web_test that are shared with ts_web_test which
-# uses Karma under the hood
-KARMA_GENERIC_WEB_TEST_ATTRS = dict(COMMON_WEB_TEST_ATTRS, **{
-    "bootstrap": attr.label_list(
-        doc = """JavaScript files to include *before* the module loader (require.js).
-        For example, you can include Reflect,js for TypeScript decorator metadata reflection,
-        or UMD bundles for third-party libraries.""",
-        allow_files = [".js"],
-    ),
-    "karma": attr.label(
-        doc = "karma binary label",
-        default = Label(_DEFAULT_KARMA_BIN),
-        executable = True,
-        cfg = "target",
-        allow_files = True,
-    ),
-    "static_files": attr.label_list(
-        doc = """Arbitrary files which are available to be served on request.
-        Files are served at:
-        `/base/<WORKSPACE_NAME>/<path-to-file>`, e.g.
-        `/base/npm_bazel_typescript/examples/testing/static_script.js`""",
-        allow_files = True,
-    ),
-    "runtime_deps": attr.label_list(
-        doc = """Dependencies which should be loaded after the module loader but before the srcs and deps.
-        These should be a list of targets which produce JavaScript such as `ts_library`.
-        The files will be loaded in the same order they are declared by that rule.""",
-        allow_files = True,
-        aspects = [sources_aspect],
-    ),
-    "_conf_tmpl": attr.label(
-        default = Label(_CONF_TMPL),
-        allow_single_file = True,
-    ),
-})
-
-# Attributes for karma_web_test that are specific to karma_web_test
-KARMA_WEB_TEST_ATTRS = dict(KARMA_GENERIC_WEB_TEST_ATTRS, **{
-    "config_file": attr.label(
-        doc = """User supplied Karma configuration file. Bazel will override
-        certain attributes of this configuration file. Attributes that are
-        overridden will be outputted to the test log.""",
-        allow_single_file = True,
-        aspects = [sources_aspect],
-    ),
-})
-
-# Helper function to convert a short path to a path that is
-# found in the MANIFEST file.
-def _short_path_to_manifest_path(ctx, short_path):
-    if short_path.startswith("../"):
-        return short_path[3:]
-    else:
-        return ctx.workspace_name + "/" + short_path
-
-# Write the AMD names shim bootstrap file
-def _write_amd_names_shim(ctx):
-    amd_names_shim = ctx.actions.declare_file(
-        "_%s.amd_names_shim.js" % ctx.label.name,
-        sibling = ctx.outputs.executable,
-    )
-    write_amd_names_shim(ctx.actions, amd_names_shim, ctx.attr.bootstrap)
-    return amd_names_shim
-
-# Generates the karma configuration file for the rule
-def _write_karma_config(ctx, files, amd_names_shim):
-    configuration = ctx.actions.declare_file(
-        "%s.conf.js" % ctx.label.name,
-        sibling = ctx.outputs.executable,
-    )
-
-    config_file = ""
-    if hasattr(ctx.file, "config_file"):
-        config_file = ctx.file.config_file
-        if hasattr(ctx.attr.config_file, "typescript"):
-            config_file = ctx.attr.config_file.typescript.es5_sources.to_list()[0]
-
-    # The files in the bootstrap attribute come before the require.js support.
-    # Note that due to frameworks = ['jasmine'], a few scripts will come before
-    # the bootstrap entries:
-    # jasmine-core/lib/jasmine-core/jasmine.js
-    # karma-jasmine/lib/boot.js
-    # karma-jasmine/lib/adapter.js
-    # This is desired so that the bootstrap entries can patch jasmine, as zone.js does.
-    bootstrap_entries = [
-        expand_path_into_runfiles(ctx, f.short_path)
-        for f in ctx.files.bootstrap
-    ]
-
-    # Explicitly list the requirejs library files here, rather than use
-    # `frameworks: ['requirejs']`
-    # so that we control the script order, and the bootstrap files come before
-    # require.js.
-    # That allows bootstrap files to have anonymous AMD modules, or to do some
-    # polyfilling before test libraries load.
-    # See https://github.com/karma-runner/karma/issues/699
-    # `NODE_MODULES/` is a prefix recogized by karma.conf.js to allow
-    # for a priority require of nested `@bazel/typescript/node_modules` before
-    # looking in root node_modules.
-    bootstrap_entries += [
-        "NODE_MODULES/requirejs/require.js",
-        "NODE_MODULES/karma-requirejs/lib/adapter.js",
-        "/".join([ctx.workspace_name, amd_names_shim.short_path]),
-    ]
-
-    # Next we load the "runtime_deps" which we expect to contain named AMD modules
-    # Thus they should come after the require.js script, but before any srcs or deps
-    runtime_files = []
-    for d in ctx.attr.runtime_deps:
-        if not hasattr(d, "typescript"):
-            # Workaround https://github.com/bazelbuild/rules_nodejs/issues/57
-            # We should allow any JS source as long as it yields something that
-            # can be loaded by require.js
-            fail("labels in runtime_deps must be created by ts_library")
-        for src in d.typescript.es5_sources.to_list():
-            runtime_files.append(expand_path_into_runfiles(ctx, src.short_path))
-
-    # Finally we load the user's srcs and deps
-    user_entries = [
-        expand_path_into_runfiles(ctx, f.short_path)
-        for f in files.to_list()
-    ]
-
-    # Expand static_files paths to runfiles for config
-    static_files = [
-        expand_path_into_runfiles(ctx, f.short_path)
-        for f in ctx.files.static_files
-    ]
-
-    # root-relative (runfiles) path to the directory containing karma.conf
-    config_segments = len(configuration.short_path.split("/"))
-
-    # configuration_env_vars are set using process.env()
-    env_vars = ""
-    for k in ctx.attr.configuration_env_vars:
-        if k in ctx.var.keys():
-            env_vars += "process.env[\"%s\"]=\"%s\";\n" % (k, ctx.var[k])
-
-    ctx.actions.expand_template(
-        output = configuration,
-        template = ctx.file._conf_tmpl,
-        substitutions = {
-            "TMPL_bootstrap_files": "\n".join(["      '%s'," % e for e in bootstrap_entries]),
-            "TMPL_config_file": expand_path_into_runfiles(ctx, config_file.short_path) if config_file else "",
-            "TMPL_env_vars": env_vars,
-            "TMPL_runfiles_path": "/".join([".."] * config_segments),
-            "TMPL_runtime_files": "\n".join(["      '%s'," % e for e in runtime_files]),
-            "TMPL_static_files": "\n".join(["      '%s'," % e for e in static_files]),
-            "TMPL_user_files": "\n".join(["      '%s'," % e for e in user_entries]),
-        },
-    )
-
-    return configuration
-
-def run_karma_web_test(ctx):
-    """Creates an action that can run karma.
-
-    This is also used by ts_web_test_rule.
-
-    Args:
-      ctx: Bazel rule execution context
-
-    Returns:
-      The runfiles for the generated action.
-    """
-    files = depset(ctx.files.srcs)
-    for d in ctx.attr.deps + ctx.attr.runtime_deps:
-        if hasattr(d, "node_sources"):
-            files = depset(transitive = [files, d.node_sources])
-        elif hasattr(d, "files"):
-            files = depset(transitive = [files, d.files])
-
-    amd_names_shim = _write_amd_names_shim(ctx)
-
-    configuration = _write_karma_config(ctx, files, amd_names_shim)
-
-    ctx.actions.write(
-        output = ctx.outputs.executable,
-        is_executable = True,
-        content = """#!/usr/bin/env bash
-# Immediately exit if any command fails.
-set -e
-
-if [ -e "$RUNFILES_MANIFEST_FILE" ]; then
-  while read line; do
-    declare -a PARTS=($line)
-    if [ "${{PARTS[0]}}" == "{TMPL_karma}" ]; then
-      readonly KARMA=${{PARTS[1]}}
-    elif [ "${{PARTS[0]}}" == "{TMPL_conf}" ]; then
-      readonly CONF=${{PARTS[1]}}
-    fi
-  done < $RUNFILES_MANIFEST_FILE
-else
-  readonly KARMA=../{TMPL_karma}
-  readonly CONF=../{TMPL_conf}
-fi
-
-export HOME=$(mktemp -d)
-
-# Print the karma version in the test log
-echo $($KARMA --version)
-
-ARGV=( "start" $CONF )
-
-# Detect that we are running as a test, by using well-known environment
-# variables. See go/test-encyclopedia
-# Note: in Bazel 0.14 and later, TEST_TMPDIR is set for both bazel test and bazel run
-# so we also check for the BUILD_WORKSPACE_DIRECTORY which is set only for bazel run
-if [[ ! -z "${{TEST_TMPDIR}}" && ! -n "${{BUILD_WORKSPACE_DIRECTORY}}" ]]; then
-  ARGV+=( "--single-run" )
-fi
-
-$KARMA ${{ARGV[@]}}
-""".format(
-            TMPL_workspace = ctx.workspace_name,
-            TMPL_karma = _short_path_to_manifest_path(ctx, ctx.executable.karma.short_path),
-            TMPL_conf = _short_path_to_manifest_path(ctx, configuration.short_path),
-        ),
-    )
-
-    config_sources = []
-    if hasattr(ctx.file, "config_file"):
-        if ctx.file.config_file:
-            config_sources = [ctx.file.config_file]
-        if hasattr(ctx.attr.config_file, "node_sources"):
-            config_sources = ctx.attr.config_file.node_sources.to_list()
-
-    runfiles = [
-        configuration,
-        amd_names_shim,
-    ]
-    runfiles += config_sources
-    runfiles += ctx.files.srcs
-    runfiles += ctx.files.deps
-    runfiles += ctx.files.runtime_deps
-    runfiles += ctx.files.bootstrap
-    runfiles += ctx.files.static_files
-    runfiles += ctx.files.data
-
-    return ctx.runfiles(
-        files = runfiles,
-        transitive_files = files,
-    ).merge(ctx.attr.karma[DefaultInfo].data_runfiles)
-
-def _karma_web_test_impl(ctx):
-    runfiles = run_karma_web_test(ctx)
-
-    return [DefaultInfo(
-        files = depset([ctx.outputs.executable]),
-        runfiles = runfiles,
-        executable = ctx.outputs.executable,
-    )]
-
-_karma_web_test = rule(
-    implementation = _karma_web_test_impl,
-    test = True,
-    executable = True,
-    attrs = KARMA_WEB_TEST_ATTRS,
-)
-
-def karma_web_test(
-        srcs = [],
-        deps = [],
-        data = [],
-        configuration_env_vars = [],
-        bootstrap = [],
-        runtime_deps = [],
-        static_files = [],
-        config_file = None,
-        tags = [],
-        **kwargs):
-    """Runs unit tests in a browser with Karma.
-
-    When executed under `bazel test`, this uses a headless browser for speed.
-    This is also because `bazel test` allows multiple targets to be tested together,
-    and we don't want to open a Chrome window on your machine for each one. Also,
-    under `bazel test` the test will execute and immediately terminate.
-
-    Running under `ibazel test` gives you a "watch mode" for your tests. The rule is
-    optimized for this case - the test runner server will stay running and just
-    re-serve the up-to-date JavaScript source bundle.
-
-    To debug a single test target, run it with `bazel run` instead. This will open a
-    browser window on your computer. Also you can use any other browser by opening
-    the URL printed when the test starts up. The test will remain running until you
-    cancel the `bazel run` command.
-
-    This rule will use your system Chrome by default. In the default case, your
-    environment must specify CHROME_BIN so that the rule will know which Chrome binary to run.
-    Other `browsers` and `customLaunchers` may be set using the a base Karma configuration
-    specified in the `config_file` attribute.
-
-    Args:
-      srcs: A list of JavaScript test files
-      deps: Other targets which produce JavaScript such as `ts_library`
-      data: Runtime dependencies
-      configuration_env_vars: Pass these configuration environment variables to the resulting binary.
-          Chooses a subset of the configuration environment variables (taken from ctx.var), which also
-          includes anything specified via the --define flag.
-          Note, this can lead to different outputs produced by this rule.
-      bootstrap: JavaScript files to include *before* the module loader (require.js).
-          For example, you can include Reflect,js for TypeScript decorator metadata reflection,
-          or UMD bundles for third-party libraries.
-      runtime_deps: Dependencies which should be loaded after the module loader but before the srcs and deps.
-          These should be a list of targets which produce JavaScript such as `ts_library`.
-          The files will be loaded in the same order they are declared by that rule.
-      static_files: Arbitrary files which are available to be served on request.
-          Files are served at:
-          `/base/<WORKSPACE_NAME>/<path-to-file>`, e.g.
-          `/base/npm_bazel_typescript/examples/testing/static_script.js`
-      config_file: User supplied Karma configuration file. Bazel will override
-          certain attributes of this configuration file. Attributes that are
-          overridden will be outputted to the test log.
-      tags: Standard Bazel tags, this macro adds tags for ibazel support
-      **kwargs: Passed through to `karma_web_test`
-    """
-
-    _karma_web_test(
-        srcs = srcs,
-        deps = deps,
-        data = data,
-        configuration_env_vars = configuration_env_vars,
-        bootstrap = bootstrap,
-        runtime_deps = runtime_deps,
-        static_files = static_files,
-        config_file = config_file,
-        tags = tags + [
-            # Users don't need to know that this tag is required to run under ibazel
-            "ibazel_notify_changes",
-        ],
-        **kwargs
-    )
-
-def karma_web_test_suite(
-        name,
-        browsers = ["@io_bazel_rules_webtesting//browsers:chromium-local"],
-        args = None,
-        browser_overrides = None,
-        config = None,
-        flaky = None,
-        local = None,
-        shard_count = None,
-        size = None,
-        tags = [],
-        test_suite_tags = None,
-        timeout = None,
-        visibility = None,
-        web_test_data = [],
-        wrapped_test_tags = None,
-        **remaining_keyword_args):
-    """Defines a test_suite of web_test targets that wrap a karma_web_test target.
-
-    This macro also accepts all parameters in karma_web_test. See karma_web_test docs
-    for details.
-
-    Args:
-      name: The base name of the test
-      browsers: A sequence of labels specifying the browsers to use.
-      args: Args for web_test targets generated by this extension.
-      browser_overrides: Dictionary; optional; default is an empty dictionary. A
-        dictionary mapping from browser names to browser-specific web_test
-        attributes, such as shard_count, flakiness, timeout, etc. For example:
-        {'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1}
-         '//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}.
-      config: Label; optional; Configuration of web test features.
-      flaky: A boolean specifying that the test is flaky. If set, the test will
-        be retried up to 3 times (default: 0)
-      local: boolean; optional.
-      shard_count: The number of test shards to use per browser. (default: 1)
-      size: A string specifying the test size. (default: 'large')
-      tags: A list of test tag strings to apply to each generated web_test target.
-        This macro adds a couple for ibazel.
-      test_suite_tags: A list of tag strings for the generated test_suite.
-      timeout: A string specifying the test timeout (default: computed from size)
-      visibility: List of labels; optional.
-      web_test_data: Data dependencies for the web_test.
-      wrapped_test_tags: A list of test tag strings to use for the wrapped test
-      **remaining_keyword_args: Arguments for the wrapped test target.
-    """
-
-    # Check explicitly for None so that users can set this to the empty list
-    if wrapped_test_tags == None:
-        wrapped_test_tags = DEFAULT_WRAPPED_TEST_TAGS
-
-    size = size or "large"
-
-    wrapped_test_name = name + "_wrapped_test"
-
-    _karma_web_test(
-        name = wrapped_test_name,
-        args = args,
-        flaky = flaky,
-        local = local,
-        shard_count = shard_count,
-        size = size,
-        tags = wrapped_test_tags,
-        timeout = timeout,
-        visibility = ["//visibility:private"],
-        **remaining_keyword_args
-    )
-
-    web_test_suite(
-        name = name,
-        launcher = ":" + wrapped_test_name,
-        args = args,
-        browsers = browsers,
-        browser_overrides = browser_overrides,
-        config = config,
-        data = web_test_data,
-        flaky = flaky,
-        local = local,
-        shard_count = shard_count,
-        size = size,
-        tags = tags + [
-            # Users don't need to know that this tag is required to run under ibazel
-            "ibazel_notify_changes",
-        ],
-        test = wrapped_test_name,
-        test_suite_tags = test_suite_tags,
-        timeout = timeout,
-        visibility = visibility,
-    )
diff --git a/internal/karma/package.bzl b/internal/karma/package.bzl
deleted file mode 100644
index ed31fee..0000000
--- a/internal/karma/package.bzl
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2018 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Package file which defines npm_bazel_karma dependencies
-"""
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-def rules_karma_dependencies():
-    """
-    Fetch our transitive dependencies.
-
-    If the user wants to get a different version of these, they can just fetch it
-    from their WORKSPACE before calling this function, or not call this function at all.
-    """
-
-    # TypeScript compiler runs on node.js runtime
-    _maybe(
-        http_archive,
-        name = "build_bazel_rules_nodejs",
-        urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"],
-        sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b",
-    )
-
-    # ts_web_test depends on the web testing rules to provision browsers.
-    _maybe(
-        http_archive,
-        name = "io_bazel_rules_webtesting",
-        urls = ["https://github.com/bazelbuild/rules_webtesting/releases/download/0.3.0/rules_webtesting.tar.gz"],
-        sha256 = "1c0900547bdbe33d22aa258637dc560ce6042230e41e9ea9dad5d7d2fca8bc42",
-    )
-
-def _maybe(repo_rule, name, **kwargs):
-    if name not in native.existing_rules():
-        repo_rule(name = name, **kwargs)
diff --git a/internal/karma/package.json b/internal/karma/package.json
deleted file mode 100644
index 5f71978..0000000
--- a/internal/karma/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
-  "name": "@bazel/karma",
-  "description": "Karma rules for Bazel",
-  "homepage": "https://github.com/bazelbuild/rules_typescript",
-  "license": "Apache-2.0",
-  "version": "0.0.0-PLACEHOLDER",
-  "keywords": [
-    "karma",
-    "bazel"
-  ],
-  "main": "./index.js",
-  "typings": "./index.d.ts",
-  "bin": {
-    "karma": "./karma.js"
-  },
-  "dependencies": {
-    "jasmine-core": "2.8.0",
-    "karma": "^4.0.0",
-    "karma-chrome-launcher": "2.2.0",
-    "karma-firefox-launcher": "1.1.0",
-    "karma-jasmine": "1.1.1",
-    "karma-requirejs": "1.1.0",
-    "karma-sauce-launcher": "2.0.2",
-    "karma-sourcemap-loader": "0.3.7",
-    "requirejs": "2.3.5",
-    "semver": "5.6.0",
-    "tmp": "0.0.33"
-  },
-  "devDependencies": {
-    "@bazel/bazel": "~0.22.0",
-    "@types/node": "7.0.18",
-    "protobufjs": "5.0.3",
-    "semver": "5.6.0",
-    "source-map-support": "0.5.9",
-    "tsickle": "0.33.1",
-    "tsutils": "2.27.2",
-    "typescript": "~3.1.6",
-    "jasmine-core": "2.8.0"
-  },
-  "bazelWorkspaces": {
-    "npm_bazel_karma": {
-      "version": "0.0.0-PLACEHOLDER",
-      "compatVersion": "0.0.0-COMPAT_VERSION",
-      "rootPath": "."
-    }
-  }
-}
diff --git a/internal/karma/ts_web_test.bzl b/internal/karma/ts_web_test.bzl
deleted file mode 100644
index ab5329b..0000000
--- a/internal/karma/ts_web_test.bzl
+++ /dev/null
@@ -1,201 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"Unit testing in a browser"
-
-load("@io_bazel_rules_webtesting//web/internal:constants.bzl", "DEFAULT_WRAPPED_TEST_TAGS")
-load("@io_bazel_rules_webtesting//web:web.bzl", "web_test_suite")
-load(":karma_web_test.bzl", "KARMA_GENERIC_WEB_TEST_ATTRS", "run_karma_web_test")
-
-# Using generic karma_web_test attributes under the hood
-TS_WEB_TEST_ATTRS = dict(KARMA_GENERIC_WEB_TEST_ATTRS, **{})
-
-def _ts_web_test_impl(ctx):
-    # Using karma_web_test under the hood
-    runfiles = run_karma_web_test(ctx)
-
-    return [DefaultInfo(
-        files = depset([ctx.outputs.executable]),
-        runfiles = runfiles,
-        executable = ctx.outputs.executable,
-    )]
-
-_ts_web_test = rule(
-    implementation = _ts_web_test_impl,
-    test = True,
-    executable = True,
-    attrs = TS_WEB_TEST_ATTRS,
-)
-
-def ts_web_test(
-        srcs = [],
-        deps = [],
-        data = [],
-        configuration_env_vars = [],
-        bootstrap = [],
-        runtime_deps = [],
-        static_files = [],
-        tags = [],
-        **kwargs):
-    """Runs unit tests in a browser.
-
-    When executed under `bazel test`, this uses a headless browser for speed.
-    This is also because `bazel test` allows multiple targets to be tested together,
-    and we don't want to open a Chrome window on your machine for each one. Also,
-    under `bazel test` the test will execute and immediately terminate.
-
-    Running under `ibazel test` gives you a "watch mode" for your tests. The rule is
-    optimized for this case - the test runner server will stay running and just
-    re-serve the up-to-date JavaScript source bundle.
-
-    To debug a single test target, run it with `bazel run` instead. This will open a
-    browser window on your computer. Also you can use any other browser by opening
-    the URL printed when the test starts up. The test will remain running until you
-    cancel the `bazel run` command.
-
-    This rule will use your system Chrome. Your environment must specify CHROME_BIN
-    so that the rule will know which Chrome binary to run.
-
-    Currently this rule uses Karma as the test runner under the hood, but this is
-    an implementation detail. We might switch to another runner like Jest in the future.
-
-    Args:
-      srcs: A list of JavaScript test files
-      deps: Other targets which produce JavaScript such as `ts_library`
-      data: Runtime dependencies
-      configuration_env_vars: Pass these configuration environment variables to the resulting binary.
-          Chooses a subset of the configuration environment variables (taken from ctx.var), which also
-          includes anything specified via the --define flag.
-          Note, this can lead to different outputs produced by this rule.
-      bootstrap: JavaScript files to include *before* the module loader (require.js).
-          For example, you can include Reflect,js for TypeScript decorator metadata reflection,
-          or UMD bundles for third-party libraries.
-      runtime_deps: Dependencies which should be loaded after the module loader but before the srcs and deps.
-          These should be a list of targets which produce JavaScript such as `ts_library`.
-          The files will be loaded in the same order they are declared by that rule.
-      static_files: Arbitrary files which are available to be served on request.
-          Files are served at:
-          `/base/<WORKSPACE_NAME>/<path-to-file>`, e.g.
-          `/base/npm_bazel_typescript/examples/testing/static_script.js`
-      tags: Standard Bazel tags, this macro adds tags for ibazel support as well as
-          `browser:chromium-system` to allow for filtering on systems with no
-          system Chrome.
-      **kwargs: Passed through to `ts_web_test`
-    """
-
-    _ts_web_test(
-        srcs = srcs,
-        deps = deps,
-        data = data,
-        configuration_env_vars = configuration_env_vars,
-        bootstrap = bootstrap,
-        runtime_deps = runtime_deps,
-        static_files = static_files,
-        tags = tags + [
-            # Users don't need to know that this tag is required to run under ibazel
-            "ibazel_notify_changes",
-            # Always attach this label to allow filtering, eg. envs w/ no browser
-            "browser:chromium-system",
-        ],
-        **kwargs
-    )
-
-def ts_web_test_suite(
-        name,
-        browsers = ["@io_bazel_rules_webtesting//browsers:chromium-local"],
-        args = None,
-        browser_overrides = None,
-        config = None,
-        flaky = None,
-        local = None,
-        shard_count = None,
-        size = None,
-        tags = [],
-        test_suite_tags = None,
-        timeout = None,
-        visibility = None,
-        web_test_data = [],
-        wrapped_test_tags = None,
-        **remaining_keyword_args):
-    """Defines a test_suite of web_test targets that wrap a ts_web_test target.
-
-    This macro also accepts all parameters in ts_web_test. See ts_web_test docs for
-    details.
-
-    Args:
-      name: The base name of the test.
-      browsers: A sequence of labels specifying the browsers to use.
-      args: Args for web_test targets generated by this extension.
-      browser_overrides: Dictionary; optional; default is an empty dictionary. A
-        dictionary mapping from browser names to browser-specific web_test
-        attributes, such as shard_count, flakiness, timeout, etc. For example:
-        {'//browsers:chrome-native': {'shard_count': 3, 'flaky': 1}
-         '//browsers:firefox-native': {'shard_count': 1, 'timeout': 100}}.
-      config: Label; optional; Configuration of web test features.
-      flaky: A boolean specifying that the test is flaky. If set, the test will
-        be retried up to 3 times (default: 0)
-      local: boolean; optional.
-      shard_count: The number of test shards to use per browser. (default: 1)
-      size: A string specifying the test size. (default: 'large')
-      tags: A list of test tag strings to apply to each generated web_test_suite target.
-        This macro adds a couple for ibazel.
-      test_suite_tags: A list of tag strings for the generated test_suite.
-      timeout: A string specifying the test timeout (default: computed from size)
-      visibility: List of labels; optional.
-      web_test_data: Data dependencies for the web_test_suite.
-      wrapped_test_tags: A list of test tag strings to use for the wrapped test
-      **remaining_keyword_args: Arguments for the wrapped test target.
-    """
-
-    # Check explicitly for None so that users can set this to the empty list
-    if wrapped_test_tags == None:
-        wrapped_test_tags = DEFAULT_WRAPPED_TEST_TAGS
-
-    size = size or "large"
-
-    wrapped_test_name = name + "_wrapped_test"
-
-    _ts_web_test(
-        name = wrapped_test_name,
-        args = args,
-        flaky = flaky,
-        local = local,
-        shard_count = shard_count,
-        size = size,
-        tags = wrapped_test_tags,
-        timeout = timeout,
-        visibility = ["//visibility:private"],
-        **remaining_keyword_args
-    )
-
-    web_test_suite(
-        name = name,
-        launcher = ":" + wrapped_test_name,
-        args = args,
-        browsers = browsers,
-        browser_overrides = browser_overrides,
-        config = config,
-        data = web_test_data,
-        flaky = flaky,
-        local = local,
-        shard_count = shard_count,
-        size = size,
-        tags = tags + [
-            # Users don't need to know that this tag is required to run under ibazel
-            "ibazel_notify_changes",
-        ],
-        test = wrapped_test_name,
-        test_suite_tags = test_suite_tags,
-        timeout = timeout,
-        visibility = visibility,
-    )
diff --git a/internal/karma/tsconfig.json b/internal/karma/tsconfig.json
deleted file mode 100644
index bce2c5c..0000000
--- a/internal/karma/tsconfig.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "compilerOptions": {
-    // Explicitly set types settings so typescript doesn't auto-discover types.
-    // If all types are discovered then all types need to be included as deps
-    // or typescript may error out with TS2688: Cannot find type definition file for 'foo'.
-    "types": ["node"]
- }
-}
-
diff --git a/internal/karma/web_test.bzl b/internal/karma/web_test.bzl
deleted file mode 100644
index 7ebb58b..0000000
--- a/internal/karma/web_test.bzl
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"Common web_test attributes"
-
-load("@build_bazel_rules_nodejs//internal/common:sources_aspect.bzl", "sources_aspect")
-
-# Attributes shared by any web_test rule (ts_web_test, karma_web_test, protractor_web_test)
-COMMON_WEB_TEST_ATTRS = {
-    "srcs": attr.label_list(
-        doc = "A list of JavaScript test files",
-        allow_files = [".js"],
-    ),
-    "configuration_env_vars": attr.string_list(
-        doc = """Pass these configuration environment variables to the resulting binary.
-        Chooses a subset of the configuration environment variables (taken from ctx.var), which also
-        includes anything specified via the --define flag.
-        Note, this can lead to different outputs produced by this rule.""",
-        default = [],
-    ),
-    "data": attr.label_list(
-        doc = "Runtime dependencies",
-        allow_files = True,
-    ),
-    "deps": attr.label_list(
-        doc = "Other targets which produce JavaScript such as `ts_library`",
-        allow_files = True,
-        aspects = [sources_aspect],
-    ),
-}
diff --git a/internal/karma/yarn.lock b/internal/karma/yarn.lock
deleted file mode 100644
index 1d21df6..0000000
--- a/internal/karma/yarn.lock
+++ /dev/null
@@ -1,2320 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@bazel/bazel-darwin_x64@0.22.0":
-  version "0.22.0"
-  resolved "https://registry.yarnpkg.com/@bazel/bazel-darwin_x64/-/bazel-darwin_x64-0.22.0.tgz#a2bea5922dba9a32554a218ba4849a200115b248"
-  integrity sha512-LFxkyQgPATeB64z/1IvOWZhK+lc3JVHejbmdo96qB4lsoD8zselvOlgHvVXxlAjRxVZ9mlmXDvDRDyaXyyRdwA==
-
-"@bazel/bazel-linux_x64@0.22.0":
-  version "0.22.0"
-  resolved "https://registry.yarnpkg.com/@bazel/bazel-linux_x64/-/bazel-linux_x64-0.22.0.tgz#12e5884f2a7b7f3b62afbef9f8da4de0976f3bc8"
-  integrity sha512-xDs8cb2bbGZ9uvzYZOzCVrMBywzRhLj0J/t+py+FYZj+VO5B3wVg9eUf6nWWR0oJ2mzvToI9h31t2tNdqwy2kQ==
-
-"@bazel/bazel-win32_x64@0.22.0":
-  version "0.22.0"
-  resolved "https://registry.yarnpkg.com/@bazel/bazel-win32_x64/-/bazel-win32_x64-0.22.0.tgz#a8a65986639583a8cc7b018e001aedfdafe41b50"
-  integrity sha512-FbJaXVDoCLnpIFLnPHFkQdfriYPXfnfQNuf9EXMliERdRuoeBVbwEZfwcuArxZWNFus7bD8QiTj0XzKVWO+Wbw==
-
-"@bazel/bazel@~0.22.0":
-  version "0.22.0"
-  resolved "https://registry.yarnpkg.com/@bazel/bazel/-/bazel-0.22.0.tgz#feb0f2d82f9d169cb47951d95d55e512eda72bc9"
-  integrity sha512-uaXZsfCXOASBXzmge56akRIhJnKYdShn1X3AdEBzq2NNCf2llkc1H25gKGm4BfuWDBXRbXDMmcXup+fw39h+WQ==
-  optionalDependencies:
-    "@bazel/bazel-darwin_x64" "0.22.0"
-    "@bazel/bazel-linux_x64" "0.22.0"
-    "@bazel/bazel-win32_x64" "0.22.0"
-
-"@types/node@7.0.18":
-  version "7.0.18"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173"
-  integrity sha1-zWfyfT3Az7dG8L3V4IbExdVb4XM=
-
-abbrev@1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
-  integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-
-accepts@~1.3.4:
-  version "1.3.5"
-  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
-  integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I=
-  dependencies:
-    mime-types "~2.1.18"
-    negotiator "0.6.1"
-
-adm-zip@~0.4.3:
-  version "0.4.13"
-  resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a"
-  integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==
-
-after@0.8.2:
-  version "0.8.2"
-  resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
-  integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=
-
-agent-base@^4.1.0:
-  version "4.2.1"
-  resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
-  integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==
-  dependencies:
-    es6-promisify "^5.0.0"
-
-ansi-regex@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-  integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-
-ansi-regex@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
-  integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
-anymatch@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
-  integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
-  dependencies:
-    micromatch "^3.1.4"
-    normalize-path "^2.1.1"
-
-aproba@^1.0.3:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
-  integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
-
-are-we-there-yet@~1.1.2:
-  version "1.1.5"
-  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
-  integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
-  dependencies:
-    delegates "^1.0.0"
-    readable-stream "^2.0.6"
-
-arr-diff@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
-  integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-
-arr-flatten@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-  integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
-
-arr-union@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
-  integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-
-array-slice@^0.2.3:
-  version "0.2.3"
-  resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
-  integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU=
-
-array-unique@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
-  integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
-
-array-unique@^0.3.2:
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
-  integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-
-arraybuffer.slice@~0.0.7:
-  version "0.0.7"
-  resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
-  integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==
-
-ascli@~1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc"
-  integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=
-  dependencies:
-    colour "~0.7.1"
-    optjs "~3.2.2"
-
-assign-symbols@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
-  integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-
-async-each@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
-  integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
-
-async-limiter@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
-  integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==
-
-async@^2.1.2:
-  version "2.6.1"
-  resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
-  integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==
-  dependencies:
-    lodash "^4.17.10"
-
-atob@^2.1.1:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
-  integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-
-backo2@1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
-  integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
-
-balanced-match@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-  integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-
-base64-arraybuffer@0.1.5:
-  version "0.1.5"
-  resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
-  integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg=
-
-base64id@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
-  integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=
-
-base@^0.11.1:
-  version "0.11.2"
-  resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
-  integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
-  dependencies:
-    cache-base "^1.0.1"
-    class-utils "^0.3.5"
-    component-emitter "^1.2.1"
-    define-property "^1.0.0"
-    isobject "^3.0.1"
-    mixin-deep "^1.2.0"
-    pascalcase "^0.1.1"
-
-better-assert@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
-  integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=
-  dependencies:
-    callsite "1.0.0"
-
-binary-extensions@^1.0.0:
-  version "1.12.0"
-  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14"
-  integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==
-
-blob@0.0.5:
-  version "0.0.5"
-  resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683"
-  integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==
-
-bluebird@^3.3.0:
-  version "3.5.3"
-  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
-  integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==
-
-body-parser@^1.16.1:
-  version "1.18.3"
-  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
-  integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
-  dependencies:
-    bytes "3.0.0"
-    content-type "~1.0.4"
-    debug "2.6.9"
-    depd "~1.1.2"
-    http-errors "~1.6.3"
-    iconv-lite "0.4.23"
-    on-finished "~2.3.0"
-    qs "6.5.2"
-    raw-body "2.3.3"
-    type-is "~1.6.16"
-
-brace-expansion@^1.1.7:
-  version "1.1.11"
-  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
-  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
-  dependencies:
-    balanced-match "^1.0.0"
-    concat-map "0.0.1"
-
-braces@^0.1.2:
-  version "0.1.5"
-  resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6"
-  integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=
-  dependencies:
-    expand-range "^0.1.0"
-
-braces@^2.3.0, braces@^2.3.1:
-  version "2.3.2"
-  resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
-  integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
-  dependencies:
-    arr-flatten "^1.1.0"
-    array-unique "^0.3.2"
-    extend-shallow "^2.0.1"
-    fill-range "^4.0.0"
-    isobject "^3.0.1"
-    repeat-element "^1.1.2"
-    snapdragon "^0.8.1"
-    snapdragon-node "^2.0.1"
-    split-string "^3.0.2"
-    to-regex "^3.0.1"
-
-buffer-alloc-unsafe@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
-  integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
-
-buffer-alloc@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
-  integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
-  dependencies:
-    buffer-alloc-unsafe "^1.1.0"
-    buffer-fill "^1.0.0"
-
-buffer-fill@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
-  integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
-
-buffer-from@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
-  integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
-
-bytebuffer@~5:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd"
-  integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=
-  dependencies:
-    long "~3"
-
-bytes@3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
-  integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
-
-cache-base@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
-  integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
-  dependencies:
-    collection-visit "^1.0.0"
-    component-emitter "^1.2.1"
-    get-value "^2.0.6"
-    has-value "^1.0.0"
-    isobject "^3.0.1"
-    set-value "^2.0.0"
-    to-object-path "^0.3.0"
-    union-value "^1.0.0"
-    unset-value "^1.0.0"
-
-callsite@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
-  integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA=
-
-camelcase@^2.0.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
-  integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
-
-chokidar@^2.0.3:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
-  integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==
-  dependencies:
-    anymatch "^2.0.0"
-    async-each "^1.0.0"
-    braces "^2.3.0"
-    glob-parent "^3.1.0"
-    inherits "^2.0.1"
-    is-binary-path "^1.0.0"
-    is-glob "^4.0.0"
-    lodash.debounce "^4.0.8"
-    normalize-path "^2.1.1"
-    path-is-absolute "^1.0.0"
-    readdirp "^2.0.0"
-    upath "^1.0.5"
-  optionalDependencies:
-    fsevents "^1.2.2"
-
-chownr@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
-  integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
-
-circular-json@^0.5.5:
-  version "0.5.9"
-  resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d"
-  integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==
-
-class-utils@^0.3.5:
-  version "0.3.6"
-  resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
-  integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
-  dependencies:
-    arr-union "^3.1.0"
-    define-property "^0.2.5"
-    isobject "^3.0.0"
-    static-extend "^0.1.1"
-
-cliui@^3.0.3:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
-  integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
-  dependencies:
-    string-width "^1.0.1"
-    strip-ansi "^3.0.1"
-    wrap-ansi "^2.0.0"
-
-code-point-at@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-  integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-
-collection-visit@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
-  integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
-  dependencies:
-    map-visit "^1.0.0"
-    object-visit "^1.0.0"
-
-colors@^1.1.0:
-  version "1.3.3"
-  resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
-  integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==
-
-colour@~0.7.1:
-  version "0.7.1"
-  resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778"
-  integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=
-
-combine-lists@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6"
-  integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=
-  dependencies:
-    lodash "^4.5.0"
-
-component-bind@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
-  integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=
-
-component-emitter@1.2.1, component-emitter@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
-  integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
-
-component-inherit@0.0.3:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
-  integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=
-
-concat-map@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-
-connect@^3.6.0:
-  version "3.6.6"
-  resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524"
-  integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=
-  dependencies:
-    debug "2.6.9"
-    finalhandler "1.1.0"
-    parseurl "~1.3.2"
-    utils-merge "1.0.1"
-
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
-  integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
-
-content-type@~1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
-  integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-
-cookie@0.3.1:
-  version "0.3.1"
-  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
-  integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
-
-copy-descriptor@^0.1.0:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
-  integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-
-core-js@^2.2.0:
-  version "2.6.3"
-  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz#4b70938bdffdaf64931e66e2db158f0892289c49"
-  integrity sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ==
-
-core-js@~2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65"
-  integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU=
-
-core-util-is@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-  integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-
-custom-event@~1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
-  integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=
-
-date-format@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8"
-  integrity sha1-YV6CjiM90aubua4JUODOzPpuytg=
-
-debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3:
-  version "2.6.9"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
-  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
-  dependencies:
-    ms "2.0.0"
-
-debug@=3.1.0, debug@~3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
-  integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
-  dependencies:
-    ms "2.0.0"
-
-debug@^3.1.0:
-  version "3.2.6"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
-  integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
-  dependencies:
-    ms "^2.1.1"
-
-decamelize@^1.1.1:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-  integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
-
-decode-uri-component@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
-  integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
-
-deep-extend@^0.6.0:
-  version "0.6.0"
-  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
-  integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-
-define-property@^0.2.5:
-  version "0.2.5"
-  resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
-  integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
-  dependencies:
-    is-descriptor "^0.1.0"
-
-define-property@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
-  integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
-  dependencies:
-    is-descriptor "^1.0.0"
-
-define-property@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
-  integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
-  dependencies:
-    is-descriptor "^1.0.2"
-    isobject "^3.0.1"
-
-delegates@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-  integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
-
-depd@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
-  integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-
-detect-libc@^1.0.2:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
-  integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
-
-di@^0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
-  integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=
-
-dom-serialize@^2.2.0:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b"
-  integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=
-  dependencies:
-    custom-event "~1.0.0"
-    ent "~2.2.0"
-    extend "^3.0.0"
-    void-elements "^2.0.0"
-
-ee-first@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
-  integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-
-encodeurl@~1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
-  integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-
-engine.io-client@~3.2.0:
-  version "3.2.1"
-  resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36"
-  integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==
-  dependencies:
-    component-emitter "1.2.1"
-    component-inherit "0.0.3"
-    debug "~3.1.0"
-    engine.io-parser "~2.1.1"
-    has-cors "1.1.0"
-    indexof "0.0.1"
-    parseqs "0.0.5"
-    parseuri "0.0.5"
-    ws "~3.3.1"
-    xmlhttprequest-ssl "~1.5.4"
-    yeast "0.1.2"
-
-engine.io-parser@~2.1.0, engine.io-parser@~2.1.1:
-  version "2.1.3"
-  resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6"
-  integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==
-  dependencies:
-    after "0.8.2"
-    arraybuffer.slice "~0.0.7"
-    base64-arraybuffer "0.1.5"
-    blob "0.0.5"
-    has-binary2 "~1.0.2"
-
-engine.io@~3.2.0:
-  version "3.2.1"
-  resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2"
-  integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==
-  dependencies:
-    accepts "~1.3.4"
-    base64id "1.0.0"
-    cookie "0.3.1"
-    debug "~3.1.0"
-    engine.io-parser "~2.1.0"
-    ws "~3.3.1"
-
-ent@~2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
-  integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0=
-
-es6-promise@^4.0.3:
-  version "4.2.5"
-  resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054"
-  integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==
-
-es6-promise@~3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6"
-  integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=
-
-es6-promisify@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
-  integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
-  dependencies:
-    es6-promise "^4.0.3"
-
-escape-html@~1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
-  integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
-
-eventemitter3@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
-  integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==
-
-expand-braces@^0.1.1:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea"
-  integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o=
-  dependencies:
-    array-slice "^0.2.3"
-    array-unique "^0.2.1"
-    braces "^0.1.2"
-
-expand-brackets@^2.1.4:
-  version "2.1.4"
-  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
-  integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
-  dependencies:
-    debug "^2.3.3"
-    define-property "^0.2.5"
-    extend-shallow "^2.0.1"
-    posix-character-classes "^0.1.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-expand-range@^0.1.0:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044"
-  integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=
-  dependencies:
-    is-number "^0.1.1"
-    repeat-string "^0.2.2"
-
-extend-shallow@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
-  integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
-  dependencies:
-    is-extendable "^0.1.0"
-
-extend-shallow@^3.0.0, extend-shallow@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
-  integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
-  dependencies:
-    assign-symbols "^1.0.0"
-    is-extendable "^1.0.1"
-
-extend@^3.0.0:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
-  integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
-extglob@^2.0.4:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
-  integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
-  dependencies:
-    array-unique "^0.3.2"
-    define-property "^1.0.0"
-    expand-brackets "^2.1.4"
-    extend-shallow "^2.0.1"
-    fragment-cache "^0.2.1"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-fill-range@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
-  integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
-  dependencies:
-    extend-shallow "^2.0.1"
-    is-number "^3.0.0"
-    repeat-string "^1.6.1"
-    to-regex-range "^2.1.0"
-
-finalhandler@1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
-  integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=
-  dependencies:
-    debug "2.6.9"
-    encodeurl "~1.0.1"
-    escape-html "~1.0.3"
-    on-finished "~2.3.0"
-    parseurl "~1.3.2"
-    statuses "~1.3.1"
-    unpipe "~1.0.0"
-
-flatted@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916"
-  integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==
-
-follow-redirects@^1.0.0:
-  version "1.6.1"
-  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.1.tgz#514973c44b5757368bad8bddfe52f81f015c94cb"
-  integrity sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==
-  dependencies:
-    debug "=3.1.0"
-
-for-in@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-  integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-
-fragment-cache@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
-  integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
-  dependencies:
-    map-cache "^0.2.2"
-
-fs-access@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a"
-  integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=
-  dependencies:
-    null-check "^1.0.0"
-
-fs-minipass@^1.2.5:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
-  integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
-  dependencies:
-    minipass "^2.2.1"
-
-fs.realpath@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-
-fsevents@^1.2.2:
-  version "1.2.7"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4"
-  integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==
-  dependencies:
-    nan "^2.9.2"
-    node-pre-gyp "^0.10.0"
-
-gauge@~2.7.3:
-  version "2.7.4"
-  resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
-  integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
-  dependencies:
-    aproba "^1.0.3"
-    console-control-strings "^1.0.0"
-    has-unicode "^2.0.0"
-    object-assign "^4.1.0"
-    signal-exit "^3.0.0"
-    string-width "^1.0.1"
-    strip-ansi "^3.0.1"
-    wide-align "^1.1.0"
-
-get-value@^2.0.3, get-value@^2.0.6:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
-  integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-
-glob-parent@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
-  integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
-  dependencies:
-    is-glob "^3.1.0"
-    path-dirname "^1.0.0"
-
-glob@^7.0.5, glob@^7.1.1, glob@^7.1.3:
-  version "7.1.3"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
-  integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
-  dependencies:
-    fs.realpath "^1.0.0"
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "^3.0.4"
-    once "^1.3.0"
-    path-is-absolute "^1.0.0"
-
-graceful-fs@^4.1.11, graceful-fs@^4.1.2:
-  version "4.1.15"
-  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
-  integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
-
-has-binary2@~1.0.2:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d"
-  integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==
-  dependencies:
-    isarray "2.0.1"
-
-has-cors@1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
-  integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=
-
-has-unicode@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-  integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
-
-has-value@^0.3.1:
-  version "0.3.1"
-  resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
-  integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
-  dependencies:
-    get-value "^2.0.3"
-    has-values "^0.1.4"
-    isobject "^2.0.0"
-
-has-value@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
-  integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
-  dependencies:
-    get-value "^2.0.6"
-    has-values "^1.0.0"
-    isobject "^3.0.0"
-
-has-values@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
-  integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
-
-has-values@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
-  integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
-  dependencies:
-    is-number "^3.0.0"
-    kind-of "^4.0.0"
-
-http-errors@1.6.3, http-errors@~1.6.3:
-  version "1.6.3"
-  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
-  integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
-  dependencies:
-    depd "~1.1.2"
-    inherits "2.0.3"
-    setprototypeof "1.1.0"
-    statuses ">= 1.4.0 < 2"
-
-http-proxy@^1.13.0:
-  version "1.17.0"
-  resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
-  integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==
-  dependencies:
-    eventemitter3 "^3.0.0"
-    follow-redirects "^1.0.0"
-    requires-port "^1.0.0"
-
-https-proxy-agent@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0"
-  integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==
-  dependencies:
-    agent-base "^4.1.0"
-    debug "^3.1.0"
-
-iconv-lite@0.4.23:
-  version "0.4.23"
-  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
-  integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
-  dependencies:
-    safer-buffer ">= 2.1.2 < 3"
-
-iconv-lite@^0.4.4:
-  version "0.4.24"
-  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
-  integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
-  dependencies:
-    safer-buffer ">= 2.1.2 < 3"
-
-ignore-walk@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
-  integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
-  dependencies:
-    minimatch "^3.0.4"
-
-immediate@~3.0.5:
-  version "3.0.6"
-  resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
-  integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
-
-indexof@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
-  integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
-
-inflight@^1.0.4:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
-  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
-  dependencies:
-    once "^1.3.0"
-    wrappy "1"
-
-inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-
-ini@~1.3.0:
-  version "1.3.5"
-  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
-  integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
-
-invert-kv@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
-  integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
-
-is-accessor-descriptor@^0.1.6:
-  version "0.1.6"
-  resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
-  integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
-  dependencies:
-    kind-of "^3.0.2"
-
-is-accessor-descriptor@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
-  integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
-  dependencies:
-    kind-of "^6.0.0"
-
-is-binary-path@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
-  integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
-  dependencies:
-    binary-extensions "^1.0.0"
-
-is-buffer@^1.1.5:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-  integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
-is-data-descriptor@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
-  integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
-  dependencies:
-    kind-of "^3.0.2"
-
-is-data-descriptor@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
-  integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
-  dependencies:
-    kind-of "^6.0.0"
-
-is-descriptor@^0.1.0:
-  version "0.1.6"
-  resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
-  integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
-  dependencies:
-    is-accessor-descriptor "^0.1.6"
-    is-data-descriptor "^0.1.4"
-    kind-of "^5.0.0"
-
-is-descriptor@^1.0.0, is-descriptor@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
-  integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
-  dependencies:
-    is-accessor-descriptor "^1.0.0"
-    is-data-descriptor "^1.0.0"
-    kind-of "^6.0.2"
-
-is-extendable@^0.1.0, is-extendable@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-  integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
-
-is-extendable@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
-  integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
-  dependencies:
-    is-plain-object "^2.0.4"
-
-is-extglob@^2.1.0, is-extglob@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
-  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
-is-fullwidth-code-point@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
-  integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
-  dependencies:
-    number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
-  integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
-
-is-glob@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
-  integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
-  dependencies:
-    is-extglob "^2.1.0"
-
-is-glob@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
-  integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=
-  dependencies:
-    is-extglob "^2.1.1"
-
-is-number@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806"
-  integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=
-
-is-number@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
-  integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
-  dependencies:
-    kind-of "^3.0.2"
-
-is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
-  integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
-  dependencies:
-    isobject "^3.0.1"
-
-is-windows@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
-  integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
-
-isarray@1.0.0, isarray@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-  integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isarray@2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
-  integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=
-
-isbinaryfile@^3.0.0:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80"
-  integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==
-  dependencies:
-    buffer-alloc "^1.2.0"
-
-isexe@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-
-isobject@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
-  integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
-  dependencies:
-    isarray "1.0.0"
-
-isobject@^3.0.0, isobject@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
-  integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-
-jasmine-core@2.8.0:
-  version "2.8.0"
-  resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e"
-  integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=
-
-jszip@^3.1.3:
-  version "3.1.5"
-  resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37"
-  integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==
-  dependencies:
-    core-js "~2.3.0"
-    es6-promise "~3.0.2"
-    lie "~3.1.0"
-    pako "~1.0.2"
-    readable-stream "~2.0.6"
-
-karma-chrome-launcher@2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf"
-  integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==
-  dependencies:
-    fs-access "^1.0.0"
-    which "^1.2.1"
-
-karma-firefox-launcher@1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz#2c47030452f04531eb7d13d4fc7669630bb93339"
-  integrity sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA==
-
-karma-jasmine@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529"
-  integrity sha1-b+hA51oRYAydkehLM8RY4cRqNSk=
-
-karma-requirejs@1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/karma-requirejs/-/karma-requirejs-1.1.0.tgz#fddae2cb87d7ebc16fb0222893564d7fee578798"
-  integrity sha1-/driy4fX68FvsCIok1ZNf+5Xh5g=
-
-karma-sauce-launcher@2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3"
-  integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA==
-  dependencies:
-    sauce-connect-launcher "^1.2.4"
-    saucelabs "^1.5.0"
-    selenium-webdriver "^4.0.0-alpha.1"
-
-karma-sourcemap-loader@0.3.7:
-  version "0.3.7"
-  resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8"
-  integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=
-  dependencies:
-    graceful-fs "^4.1.2"
-
-karma@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c"
-  integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g==
-  dependencies:
-    bluebird "^3.3.0"
-    body-parser "^1.16.1"
-    chokidar "^2.0.3"
-    colors "^1.1.0"
-    combine-lists "^1.0.0"
-    connect "^3.6.0"
-    core-js "^2.2.0"
-    di "^0.0.1"
-    dom-serialize "^2.2.0"
-    expand-braces "^0.1.1"
-    flatted "^2.0.0"
-    glob "^7.1.1"
-    graceful-fs "^4.1.2"
-    http-proxy "^1.13.0"
-    isbinaryfile "^3.0.0"
-    lodash "^4.17.5"
-    log4js "^3.0.0"
-    mime "^2.3.1"
-    minimatch "^3.0.2"
-    optimist "^0.6.1"
-    qjobs "^1.1.4"
-    range-parser "^1.2.0"
-    rimraf "^2.6.0"
-    safe-buffer "^5.0.1"
-    socket.io "2.1.1"
-    source-map "^0.6.1"
-    tmp "0.0.33"
-    useragent "2.3.0"
-
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
-  version "3.2.2"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
-  integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
-  dependencies:
-    is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
-  integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
-  dependencies:
-    is-buffer "^1.1.5"
-
-kind-of@^5.0.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
-  integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-
-kind-of@^6.0.0, kind-of@^6.0.2:
-  version "6.0.2"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
-  integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
-
-lcid@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
-  integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
-  dependencies:
-    invert-kv "^1.0.0"
-
-lie@~3.1.0:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e"
-  integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=
-  dependencies:
-    immediate "~3.0.5"
-
-lodash.debounce@^4.0.8:
-  version "4.0.8"
-  resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
-  integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
-
-lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.5, lodash@^4.5.0:
-  version "4.17.11"
-  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
-  integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
-
-log4js@^3.0.0:
-  version "3.0.6"
-  resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff"
-  integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ==
-  dependencies:
-    circular-json "^0.5.5"
-    date-format "^1.2.0"
-    debug "^3.1.0"
-    rfdc "^1.1.2"
-    streamroller "0.7.0"
-
-long@~3:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
-  integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=
-
-lru-cache@4.1.x:
-  version "4.1.5"
-  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
-  integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
-  dependencies:
-    pseudomap "^1.0.2"
-    yallist "^2.1.2"
-
-map-cache@^0.2.2:
-  version "0.2.2"
-  resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
-  integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-
-map-visit@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
-  integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
-  dependencies:
-    object-visit "^1.0.0"
-
-media-typer@0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
-  integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-
-micromatch@^3.1.10, micromatch@^3.1.4:
-  version "3.1.10"
-  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
-  integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
-  dependencies:
-    arr-diff "^4.0.0"
-    array-unique "^0.3.2"
-    braces "^2.3.1"
-    define-property "^2.0.2"
-    extend-shallow "^3.0.2"
-    extglob "^2.0.4"
-    fragment-cache "^0.2.1"
-    kind-of "^6.0.2"
-    nanomatch "^1.2.9"
-    object.pick "^1.3.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.2"
-
-mime-db@~1.37.0:
-  version "1.37.0"
-  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
-  integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==
-
-mime-types@~2.1.18:
-  version "2.1.21"
-  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
-  integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==
-  dependencies:
-    mime-db "~1.37.0"
-
-mime@^2.3.1:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
-  integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==
-
-minimatch@^3.0.2, minimatch@^3.0.4:
-  version "3.0.4"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
-  integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
-  dependencies:
-    brace-expansion "^1.1.7"
-
-minimist@0.0.8:
-  version "0.0.8"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-  integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
-
-minimist@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
-  integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
-
-minimist@~0.0.1:
-  version "0.0.10"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
-  integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
-
-minipass@^2.2.1, minipass@^2.3.4:
-  version "2.3.5"
-  resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
-  integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
-  dependencies:
-    safe-buffer "^5.1.2"
-    yallist "^3.0.0"
-
-minizlib@^1.1.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
-  integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
-  dependencies:
-    minipass "^2.2.1"
-
-mixin-deep@^1.2.0:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
-  integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
-  dependencies:
-    for-in "^1.0.2"
-    is-extendable "^1.0.1"
-
-mkdirp@^0.5.0, mkdirp@^0.5.1:
-  version "0.5.1"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
-  integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
-  dependencies:
-    minimist "0.0.8"
-
-ms@2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-  integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
-ms@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
-  integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-
-nan@^2.9.2:
-  version "2.12.1"
-  resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
-  integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==
-
-nanomatch@^1.2.9:
-  version "1.2.13"
-  resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
-  integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
-  dependencies:
-    arr-diff "^4.0.0"
-    array-unique "^0.3.2"
-    define-property "^2.0.2"
-    extend-shallow "^3.0.2"
-    fragment-cache "^0.2.1"
-    is-windows "^1.0.2"
-    kind-of "^6.0.2"
-    object.pick "^1.3.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-needle@^2.2.1:
-  version "2.2.4"
-  resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
-  integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==
-  dependencies:
-    debug "^2.1.2"
-    iconv-lite "^0.4.4"
-    sax "^1.2.4"
-
-negotiator@0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
-  integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=
-
-node-pre-gyp@^0.10.0:
-  version "0.10.3"
-  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
-  integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==
-  dependencies:
-    detect-libc "^1.0.2"
-    mkdirp "^0.5.1"
-    needle "^2.2.1"
-    nopt "^4.0.1"
-    npm-packlist "^1.1.6"
-    npmlog "^4.0.2"
-    rc "^1.2.7"
-    rimraf "^2.6.1"
-    semver "^5.3.0"
-    tar "^4"
-
-nopt@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
-  integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
-  dependencies:
-    abbrev "1"
-    osenv "^0.1.4"
-
-normalize-path@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
-  integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
-  dependencies:
-    remove-trailing-separator "^1.0.1"
-
-npm-bundled@^1.0.1:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979"
-  integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==
-
-npm-packlist@^1.1.6:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.2.0.tgz#55a60e793e272f00862c7089274439a4cc31fc7f"
-  integrity sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==
-  dependencies:
-    ignore-walk "^3.0.1"
-    npm-bundled "^1.0.1"
-
-npmlog@^4.0.2:
-  version "4.1.2"
-  resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
-  integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
-  dependencies:
-    are-we-there-yet "~1.1.2"
-    console-control-strings "~1.1.0"
-    gauge "~2.7.3"
-    set-blocking "~2.0.0"
-
-null-check@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd"
-  integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=
-
-number-is-nan@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-  integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-
-object-assign@^4.1.0:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-  integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
-object-component@0.0.3:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
-  integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=
-
-object-copy@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
-  integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
-  dependencies:
-    copy-descriptor "^0.1.0"
-    define-property "^0.2.5"
-    kind-of "^3.0.3"
-
-object-visit@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
-  integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
-  dependencies:
-    isobject "^3.0.0"
-
-object.pick@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
-  integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
-  dependencies:
-    isobject "^3.0.1"
-
-on-finished@~2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
-  integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
-  dependencies:
-    ee-first "1.1.1"
-
-once@^1.3.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
-  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
-  dependencies:
-    wrappy "1"
-
-optimist@^0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
-  integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
-  dependencies:
-    minimist "~0.0.1"
-    wordwrap "~0.0.2"
-
-optjs@~3.2.2:
-  version "3.2.2"
-  resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee"
-  integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4=
-
-os-homedir@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
-  integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
-
-os-locale@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
-  integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
-  dependencies:
-    lcid "^1.0.0"
-
-os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-  integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-
-osenv@^0.1.4:
-  version "0.1.5"
-  resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
-  integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
-  dependencies:
-    os-homedir "^1.0.0"
-    os-tmpdir "^1.0.0"
-
-pako@~1.0.2:
-  version "1.0.8"
-  resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4"
-  integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==
-
-parseqs@0.0.5:
-  version "0.0.5"
-  resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
-  integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=
-  dependencies:
-    better-assert "~1.0.0"
-
-parseuri@0.0.5:
-  version "0.0.5"
-  resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a"
-  integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=
-  dependencies:
-    better-assert "~1.0.0"
-
-parseurl@~1.3.2:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
-  integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=
-
-pascalcase@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
-  integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
-
-path-dirname@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
-  integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
-
-path-is-absolute@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-
-posix-character-classes@^0.1.0:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
-  integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
-
-process-nextick-args@~1.0.6:
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
-  integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
-
-process-nextick-args@~2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
-  integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
-
-protobufjs@5.0.3:
-  version "5.0.3"
-  resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17"
-  integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==
-  dependencies:
-    ascli "~1"
-    bytebuffer "~5"
-    glob "^7.0.5"
-    yargs "^3.10.0"
-
-pseudomap@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
-  integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
-
-qjobs@^1.1.4:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071"
-  integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==
-
-qs@6.5.2:
-  version "6.5.2"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
-  integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-
-range-parser@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
-  integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
-
-raw-body@2.3.3:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
-  integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==
-  dependencies:
-    bytes "3.0.0"
-    http-errors "1.6.3"
-    iconv-lite "0.4.23"
-    unpipe "1.0.0"
-
-rc@^1.2.7:
-  version "1.2.8"
-  resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
-  integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
-  dependencies:
-    deep-extend "^0.6.0"
-    ini "~1.3.0"
-    minimist "^1.2.0"
-    strip-json-comments "~2.0.1"
-
-readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0:
-  version "2.3.6"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
-  integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.3"
-    isarray "~1.0.0"
-    process-nextick-args "~2.0.0"
-    safe-buffer "~5.1.1"
-    string_decoder "~1.1.1"
-    util-deprecate "~1.0.1"
-
-readable-stream@~2.0.6:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
-  integrity sha1-j5A0HmilPMySh4jaz80Rs265t44=
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.1"
-    isarray "~1.0.0"
-    process-nextick-args "~1.0.6"
-    string_decoder "~0.10.x"
-    util-deprecate "~1.0.1"
-
-readdirp@^2.0.0:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
-  integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
-  dependencies:
-    graceful-fs "^4.1.11"
-    micromatch "^3.1.10"
-    readable-stream "^2.0.2"
-
-regex-not@^1.0.0, regex-not@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
-  integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
-  dependencies:
-    extend-shallow "^3.0.2"
-    safe-regex "^1.1.0"
-
-remove-trailing-separator@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
-  integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
-
-repeat-element@^1.1.2:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
-  integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
-
-repeat-string@^0.2.2:
-  version "0.2.2"
-  resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae"
-  integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4=
-
-repeat-string@^1.6.1:
-  version "1.6.1"
-  resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-  integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-
-requirejs@2.3.5:
-  version "2.3.5"
-  resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0"
-  integrity sha512-svnO+aNcR/an9Dpi44C7KSAy5fFGLtmPbaaCeQaklUz8BQhS64tWWIIlvEA5jrWICzlO/X9KSzSeXFnZdBu8nw==
-
-requires-port@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
-  integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
-
-resolve-url@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
-  integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-
-ret@~0.1.10:
-  version "0.1.15"
-  resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
-  integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-
-rfdc@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349"
-  integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA==
-
-rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1:
-  version "2.6.3"
-  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
-  integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
-  dependencies:
-    glob "^7.1.3"
-
-safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
-  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safe-regex@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
-  integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
-  dependencies:
-    ret "~0.1.10"
-
-"safer-buffer@>= 2.1.2 < 3":
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
-  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
-sauce-connect-launcher@^1.2.4:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c"
-  integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA==
-  dependencies:
-    adm-zip "~0.4.3"
-    async "^2.1.2"
-    https-proxy-agent "^2.2.1"
-    lodash "^4.16.6"
-    rimraf "^2.5.4"
-
-saucelabs@^1.5.0:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d"
-  integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==
-  dependencies:
-    https-proxy-agent "^2.2.1"
-
-sax@>=0.6.0, sax@^1.2.4:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
-  integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-
-selenium-webdriver@^4.0.0-alpha.1:
-  version "4.0.0-alpha.1"
-  resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1"
-  integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q==
-  dependencies:
-    jszip "^3.1.3"
-    rimraf "^2.5.4"
-    tmp "0.0.30"
-    xml2js "^0.4.17"
-
-semver@5.6.0, semver@^5.3.0:
-  version "5.6.0"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
-  integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
-
-set-blocking@~2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-  integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-
-set-value@^0.4.3:
-  version "0.4.3"
-  resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
-  integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
-  dependencies:
-    extend-shallow "^2.0.1"
-    is-extendable "^0.1.1"
-    is-plain-object "^2.0.1"
-    to-object-path "^0.3.0"
-
-set-value@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
-  integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
-  dependencies:
-    extend-shallow "^2.0.1"
-    is-extendable "^0.1.1"
-    is-plain-object "^2.0.3"
-    split-string "^3.0.1"
-
-setprototypeof@1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
-  integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
-
-signal-exit@^3.0.0:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
-  integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
-
-snapdragon-node@^2.0.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
-  integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
-  dependencies:
-    define-property "^1.0.0"
-    isobject "^3.0.0"
-    snapdragon-util "^3.0.1"
-
-snapdragon-util@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
-  integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
-  dependencies:
-    kind-of "^3.2.0"
-
-snapdragon@^0.8.1:
-  version "0.8.2"
-  resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
-  integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
-  dependencies:
-    base "^0.11.1"
-    debug "^2.2.0"
-    define-property "^0.2.5"
-    extend-shallow "^2.0.1"
-    map-cache "^0.2.2"
-    source-map "^0.5.6"
-    source-map-resolve "^0.5.0"
-    use "^3.1.0"
-
-socket.io-adapter@~1.1.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b"
-  integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=
-
-socket.io-client@2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f"
-  integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==
-  dependencies:
-    backo2 "1.0.2"
-    base64-arraybuffer "0.1.5"
-    component-bind "1.0.0"
-    component-emitter "1.2.1"
-    debug "~3.1.0"
-    engine.io-client "~3.2.0"
-    has-binary2 "~1.0.2"
-    has-cors "1.1.0"
-    indexof "0.0.1"
-    object-component "0.0.3"
-    parseqs "0.0.5"
-    parseuri "0.0.5"
-    socket.io-parser "~3.2.0"
-    to-array "0.1.4"
-
-socket.io-parser@~3.2.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077"
-  integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==
-  dependencies:
-    component-emitter "1.2.1"
-    debug "~3.1.0"
-    isarray "2.0.1"
-
-socket.io@2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980"
-  integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==
-  dependencies:
-    debug "~3.1.0"
-    engine.io "~3.2.0"
-    has-binary2 "~1.0.2"
-    socket.io-adapter "~1.1.0"
-    socket.io-client "2.1.1"
-    socket.io-parser "~3.2.0"
-
-source-map-resolve@^0.5.0:
-  version "0.5.2"
-  resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
-  integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
-  dependencies:
-    atob "^2.1.1"
-    decode-uri-component "^0.2.0"
-    resolve-url "^0.2.1"
-    source-map-url "^0.4.0"
-    urix "^0.1.0"
-
-source-map-support@0.5.9:
-  version "0.5.9"
-  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
-  integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==
-  dependencies:
-    buffer-from "^1.0.0"
-    source-map "^0.6.0"
-
-source-map-url@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
-  integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
-
-source-map@^0.5.6:
-  version "0.5.7"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-  integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-
-source-map@^0.6.0, source-map@^0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-source-map@^0.7.3:
-  version "0.7.3"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
-  integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
-
-split-string@^3.0.1, split-string@^3.0.2:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
-  integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
-  dependencies:
-    extend-shallow "^3.0.0"
-
-static-extend@^0.1.1:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
-  integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
-  dependencies:
-    define-property "^0.2.5"
-    object-copy "^0.1.0"
-
-"statuses@>= 1.4.0 < 2":
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
-  integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
-
-statuses@~1.3.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
-  integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=
-
-streamroller@0.7.0:
-  version "0.7.0"
-  resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b"
-  integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==
-  dependencies:
-    date-format "^1.2.0"
-    debug "^3.1.0"
-    mkdirp "^0.5.1"
-    readable-stream "^2.3.0"
-
-string-width@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
-  integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
-  dependencies:
-    code-point-at "^1.0.0"
-    is-fullwidth-code-point "^1.0.0"
-    strip-ansi "^3.0.0"
-
-"string-width@^1.0.2 || 2":
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
-  integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
-  dependencies:
-    is-fullwidth-code-point "^2.0.0"
-    strip-ansi "^4.0.0"
-
-string_decoder@~0.10.x:
-  version "0.10.31"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
-  integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
-
-string_decoder@~1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
-  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
-  dependencies:
-    safe-buffer "~5.1.0"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
-  integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
-  dependencies:
-    ansi-regex "^2.0.0"
-
-strip-ansi@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
-  integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
-  dependencies:
-    ansi-regex "^3.0.0"
-
-strip-json-comments@~2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-  integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
-
-tar@^4:
-  version "4.4.8"
-  resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
-  integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==
-  dependencies:
-    chownr "^1.1.1"
-    fs-minipass "^1.2.5"
-    minipass "^2.3.4"
-    minizlib "^1.1.1"
-    mkdirp "^0.5.0"
-    safe-buffer "^5.1.2"
-    yallist "^3.0.2"
-
-tmp@0.0.30:
-  version "0.0.30"
-  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed"
-  integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=
-  dependencies:
-    os-tmpdir "~1.0.1"
-
-tmp@0.0.33, tmp@0.0.x:
-  version "0.0.33"
-  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
-  integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
-  dependencies:
-    os-tmpdir "~1.0.2"
-
-to-array@0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
-  integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA=
-
-to-object-path@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
-  integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
-  dependencies:
-    kind-of "^3.0.2"
-
-to-regex-range@^2.1.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
-  integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
-  dependencies:
-    is-number "^3.0.0"
-    repeat-string "^1.6.1"
-
-to-regex@^3.0.1, to-regex@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
-  integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
-  dependencies:
-    define-property "^2.0.2"
-    extend-shallow "^3.0.2"
-    regex-not "^1.0.2"
-    safe-regex "^1.1.0"
-
-tsickle@0.33.1:
-  version "0.33.1"
-  resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.33.1.tgz#eee4ebabeda3bcd8afc32cee34c822cbe3e839ec"
-  integrity sha512-SpW2G3PvDGs4a5sMXPlWnCWHWRviWjSlI3U0734e3fU3U39VAE0NPr8M3W1cuL/OU/YXheYipGeEwtIJ5k0NHQ==
-  dependencies:
-    minimist "^1.2.0"
-    mkdirp "^0.5.1"
-    source-map "^0.7.3"
-
-tslib@^1.8.1:
-  version "1.9.3"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
-  integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
-
-tsutils@2.27.2:
-  version "2.27.2"
-  resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7"
-  integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg==
-  dependencies:
-    tslib "^1.8.1"
-
-type-is@~1.6.16:
-  version "1.6.16"
-  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
-  integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==
-  dependencies:
-    media-typer "0.3.0"
-    mime-types "~2.1.18"
-
-typescript@~3.1.6:
-  version "3.1.6"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68"
-  integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==
-
-ultron@~1.1.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
-  integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==
-
-union-value@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
-  integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
-  dependencies:
-    arr-union "^3.1.0"
-    get-value "^2.0.6"
-    is-extendable "^0.1.1"
-    set-value "^0.4.3"
-
-unpipe@1.0.0, unpipe@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
-  integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
-
-unset-value@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
-  integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
-  dependencies:
-    has-value "^0.3.1"
-    isobject "^3.0.0"
-
-upath@^1.0.5:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
-  integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==
-
-urix@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
-  integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-
-use@^3.1.0:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
-  integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-
-useragent@2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972"
-  integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==
-  dependencies:
-    lru-cache "4.1.x"
-    tmp "0.0.x"
-
-util-deprecate@~1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-  integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
-utils-merge@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
-  integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-
-void-elements@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
-  integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=
-
-which@^1.2.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
-  integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
-  dependencies:
-    isexe "^2.0.0"
-
-wide-align@^1.1.0:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
-  integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
-  dependencies:
-    string-width "^1.0.2 || 2"
-
-window-size@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876"
-  integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=
-
-wordwrap@~0.0.2:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
-  integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
-
-wrap-ansi@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
-  integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
-  dependencies:
-    string-width "^1.0.1"
-    strip-ansi "^3.0.1"
-
-wrappy@1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-  integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-
-ws@~3.3.1:
-  version "3.3.3"
-  resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
-  integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==
-  dependencies:
-    async-limiter "~1.0.0"
-    safe-buffer "~5.1.0"
-    ultron "~1.1.0"
-
-xml2js@^0.4.17:
-  version "0.4.19"
-  resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
-  integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==
-  dependencies:
-    sax ">=0.6.0"
-    xmlbuilder "~9.0.1"
-
-xmlbuilder@~9.0.1:
-  version "9.0.7"
-  resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
-  integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
-
-xmlhttprequest-ssl@~1.5.4:
-  version "1.5.5"
-  resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e"
-  integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=
-
-y18n@^3.2.0:
-  version "3.2.1"
-  resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
-  integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
-
-yallist@^2.1.2:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
-  integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
-
-yallist@^3.0.0, yallist@^3.0.2:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
-  integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
-
-yargs@^3.10.0:
-  version "3.32.0"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
-  integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=
-  dependencies:
-    camelcase "^2.0.1"
-    cliui "^3.0.3"
-    decamelize "^1.1.1"
-    os-locale "^1.4.0"
-    string-width "^1.0.1"
-    window-size "^0.1.4"
-    y18n "^3.2.0"
-
-yeast@0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
-  integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=
diff --git a/internal/protobufjs/BUILD.bazel b/internal/protobufjs/BUILD.bazel
deleted file mode 100644
index ae06e17..0000000
--- a/internal/protobufjs/BUILD.bazel
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright 2018 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary")
-
-package(default_visibility = ["//visibility:public"])
-
-exports_files([
-    "node_modules/protobufjs/dist/minimal/protobuf.min.js",
-    # Exported to be consumed for generating skydoc.
-    "ts_proto_library.bzl",
-])
-
-nodejs_binary(
-    name = "pbjs",
-    data = [
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//protobufjs",
-        # these deps are needed even tho they are not automatic transitive deps of
-        # protobufjs since if they are not in the runfiles then protobufjs attempts to
-        # run `npm install` at runtime to get thhem which fails as it tries to access
-        # the npm cache outside of the sandbox
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//semver",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//chalk",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//glob",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//jsdoc",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//minimist",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//tmp",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//uglify-js",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//espree",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//escodegen",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//estraverse",
-    ],
-    entry_point = "protobufjs/bin/pbjs",
-    install_source_map_support = False,
-)
-
-nodejs_binary(
-    name = "pbts",
-    data = [
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//protobufjs",
-        # these deps are needed even tho they are not automatic transitive deps of
-        # protobufjs since if they are not in the runfiles then protobufjs attempts to
-        # run `npm install` at runtime to get thhem which fails as it tries to access
-        # the npm cache outside of the sandbox
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//semver",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//chalk",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//glob",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//jsdoc",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//minimist",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//tmp",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//uglify-js",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//espree",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//escodegen",
-        "@build_bazel_rules_typescript_protobufs_compiletime_deps//estraverse",
-    ],
-    entry_point = "protobufjs/bin/pbts",
-    install_source_map_support = False,
-)
diff --git a/internal/protobufjs/package.json b/internal/protobufjs/package.json
deleted file mode 100644
index 7d669f6..0000000
--- a/internal/protobufjs/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "name": "protobufjs",
-  "version": "1.0.0",
-  "main": "index.js",
-  "license": "MIT",
-  "devDependencies": {
-    "chalk": "^1.1.3",
-    "escodegen": "^1.9.0",
-    "espree": "^3.5.3",
-    "estraverse": "^4.2.0",
-    "glob": "^7.1.2",
-    "jsdoc": "^3.5.5",
-    "minimist": "^1.2.0",
-    "protobufjs": "Use HEAD to pick up fix for https://github.com/dcodeIO/protobuf.js/pull/1018",
-    "protobufjs": "github:dcodeIO/protobuf.js#65d113b0079fa2570837f3cf95268ce24714a248",
-    "semver": "^5.5.0",
-    "tmp": "0.0.33",
-    "uglify-js": "^2.8.29"
-  }
-}
diff --git a/internal/protobufjs/ts_proto_library.bzl b/internal/protobufjs/ts_proto_library.bzl
deleted file mode 100644
index 807dea0..0000000
--- a/internal/protobufjs/ts_proto_library.bzl
+++ /dev/null
@@ -1,193 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"Protocol Buffers"
-
-def _run_pbjs(actions, executable, output_name, proto_files, suffix = ".js", wrap = "amd", amd_name = ""):
-    js_file = actions.declare_file(output_name + suffix)
-
-    # Create an intermediate file so that we can do some manipulation of the
-    # generated .js output that makes it compatible with our named AMD loading.
-    js_tmpl_file = actions.declare_file(output_name + suffix + ".tmpl")
-
-    # Reference of arguments:
-    # https://github.com/dcodeIO/ProtoBuf.js/#pbjs-for-javascript
-    args = actions.args()
-    args.add_all(["--target", "static-module"])
-    args.add_all(["--wrap", wrap])
-    args.add("--strict-long")  # Force usage of Long type with int64 fields
-    args.add_all(["--out", js_file.path + ".tmpl"])
-    args.add_all(proto_files)
-
-    actions.run(
-        executable = executable._pbjs,
-        inputs = proto_files,
-        outputs = [js_tmpl_file],
-        arguments = [args],
-    )
-
-    actions.expand_template(
-        template = js_tmpl_file,
-        output = js_file,
-        substitutions = {
-            # convert anonymous AMD module
-            #  define(["protobufjs/minimal"], function($protobuf) {
-            # to named
-            #  define("wksp/path/to/module", ["protobufjs/minimal"], ...
-            "define([": "define('%s/%s', [" % (amd_name, output_name),
-        },
-    )
-    return js_file
-
-def _run_pbts(actions, executable, js_file):
-    ts_file = actions.declare_file(js_file.basename[:-len(".closure.js")] + ".d.ts")
-
-    # Reference of arguments:
-    # https://github.com/dcodeIO/ProtoBuf.js/#pbts-for-typescript
-    args = actions.args()
-    args.add_all(["--out", ts_file.path])
-    args.add(js_file.path)
-
-    actions.run(
-        executable = executable._pbts,
-        progress_message = "Generating typings from %s" % js_file.short_path,
-        inputs = [js_file],
-        outputs = [ts_file],
-        arguments = [args],
-    )
-    return ts_file
-
-def _ts_proto_library(ctx):
-    sources = depset()
-    for dep in ctx.attr.deps:
-        if not hasattr(dep, "proto"):
-            fail("ts_proto_library dep %s must be a proto_library rule" % dep.label)
-
-        # TODO(alexeagle): go/new-proto-library suggests
-        # > should not parse .proto files. Instead, they should use the descriptor
-        # > set output from proto_library
-        # but protobuf.js doesn't seem to accept that bin format
-        sources = depset(transitive = [sources, dep.proto.transitive_sources])
-
-    output_name = ctx.attr.output_name or ctx.label.name
-
-    js_es5 = _run_pbjs(
-        ctx.actions,
-        ctx.executable,
-        output_name,
-        sources,
-        amd_name = "/".join([p for p in [
-            ctx.workspace_name,
-            ctx.label.package,
-        ] if p]),
-    )
-    js_es6 = _run_pbjs(
-        ctx.actions,
-        ctx.executable,
-        output_name,
-        sources,
-        suffix = ".closure.js",
-        wrap = "es6",
-    )
-    dts = _run_pbts(ctx.actions, ctx.executable, js_es6)
-
-    # Return a structure that is compatible with the deps[] of a ts_library.
-    return struct(
-        files = depset([dts]),
-        typescript = struct(
-            declarations = depset([dts]),
-            transitive_declarations = depset([dts]),
-            type_blacklisted_declarations = depset(),
-            es5_sources = depset([js_es5]),
-            es6_sources = depset([js_es6]),
-            transitive_es5_sources = depset(),
-            transitive_es6_sources = depset([js_es6]),
-        ),
-    )
-
-ts_proto_library = rule(
-    implementation = _ts_proto_library,
-    attrs = {
-        "output_name": attr.string(
-            doc = """Name of the resulting module, which you will import from.
-            If not specified, the name will match the target's name.""",
-        ),
-        "deps": attr.label_list(doc = "proto_library targets"),
-        "_pbjs": attr.label(
-            default = Label("//internal/protobufjs:pbjs"),
-            executable = True,
-            cfg = "host",
-        ),
-        "_pbts": attr.label(
-            default = Label("//internal/protobufjs:pbts"),
-            executable = True,
-            cfg = "host",
-        ),
-    },
-)
-"""
-Wraps https://github.com/dcodeIO/protobuf.js for use in Bazel.
-
-`ts_proto_library` has identical outputs to `ts_library`, so it can be used anywhere
-a `ts_library` can appear, such as in the `deps[]` of another `ts_library`.
-
-Example:
-
-```
-load("@npm_bazel_typescript//:defs.bzl", "ts_library", "ts_proto_library")
-
-proto_library(
-    name = "car_proto",
-    srcs = ["car.proto"],
-)
-
-ts_proto_library(
-    name = "car",
-    deps = [":car_proto"],
-)
-
-ts_library(
-    name = "test_lib",
-    testonly = True,
-    srcs = ["car.spec.ts"],
-    deps = [":car"],
-)
-```
-
-Note in this example we named the `ts_proto_library` rule `car` so that the
-result will be `car.d.ts`. This means our TypeScript code can just
-`import {symbols} from './car'`. Use the `output_name` attribute if you want to
-name the rule differently from the output file.
-
-The JavaScript produced by protobuf.js has a runtime dependency on a support library.
-Under devmode (e.g. `ts_devserver`, `ts_web_test_suite`) you'll need to include these scripts
-in the `bootstrap` phase (before Require.js loads). You can use the label
-`@npm_bazel_typescript//:protobufjs_bootstrap_scripts` to reference these scripts
-in the `bootstrap` attribute of `ts_web_test_suite` or `ts_devserver`.
-
-To complete the example above, you could write a `ts_web_test_suite`:
-
-```
-load("@npm_bazel_karma//:defs.bzl", "ts_web_test_suite")
-
-ts_web_test_suite(
-    name = "test",
-    deps = ["test_lib"],
-    bootstrap = ["@npm_bazel_typescript//:protobufjs_bootstrap_scripts"],
-    browsers = [
-      "@io_bazel_rules_webtesting//browsers:chromium-local",
-      "@io_bazel_rules_webtesting//browsers:firefox-local",
-    ],
-)
-```
-"""
diff --git a/internal/protobufjs/yarn.lock b/internal/protobufjs/yarn.lock
deleted file mode 100644
index caa7100..0000000
--- a/internal/protobufjs/yarn.lock
+++ /dev/null
@@ -1,467 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
-
-"@protobufjs/base64@^1.1.2":
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
-
-"@protobufjs/codegen@^2.0.4":
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
-
-"@protobufjs/eventemitter@^1.1.0":
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
-
-"@protobufjs/fetch@^1.1.0":
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
-  dependencies:
-    "@protobufjs/aspromise" "^1.1.1"
-    "@protobufjs/inquire" "^1.1.0"
-
-"@protobufjs/float@^1.0.2":
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
-
-"@protobufjs/inquire@^1.1.0":
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
-
-"@protobufjs/path@^1.1.2":
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
-
-"@protobufjs/pool@^1.1.0":
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
-
-"@protobufjs/utf8@^1.1.0":
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
-
-"@types/long@^3.0.32":
-  version "3.0.32"
-  resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69"
-
-"@types/node@^8.9.4":
-  version "8.10.10"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.10.tgz#fec07bc2ad549d9e6d2f7aa0fb0be3491b83163a"
-
-acorn-jsx@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
-  dependencies:
-    acorn "^3.0.4"
-
-acorn@^3.0.4:
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
-
-acorn@^5.5.0:
-  version "5.5.3"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
-
-align-text@^0.1.1, align-text@^0.1.3:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
-  dependencies:
-    kind-of "^3.0.2"
-    longest "^1.0.1"
-    repeat-string "^1.5.2"
-
-ansi-regex@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-
-ansi-styles@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-
-babylon@7.0.0-beta.19:
-  version "7.0.0-beta.19"
-  resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.19.tgz#e928c7e807e970e0536b078ab3e0c48f9e052503"
-
-balanced-match@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-
-bluebird@~3.5.0:
-  version "3.5.1"
-  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
-
-brace-expansion@^1.1.7:
-  version "1.1.11"
-  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
-  dependencies:
-    balanced-match "^1.0.0"
-    concat-map "0.0.1"
-
-camelcase@^1.0.2:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-
-catharsis@~0.8.9:
-  version "0.8.9"
-  resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.9.tgz#98cc890ca652dd2ef0e70b37925310ff9e90fc8b"
-  dependencies:
-    underscore-contrib "~0.3.0"
-
-center-align@^0.1.1:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
-  dependencies:
-    align-text "^0.1.3"
-    lazy-cache "^1.0.3"
-
-chalk@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
-  dependencies:
-    ansi-styles "^2.2.1"
-    escape-string-regexp "^1.0.2"
-    has-ansi "^2.0.0"
-    strip-ansi "^3.0.0"
-    supports-color "^2.0.0"
-
-cliui@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
-  dependencies:
-    center-align "^0.1.1"
-    right-align "^0.1.1"
-    wordwrap "0.0.2"
-
-concat-map@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-
-decamelize@^1.0.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-
-deep-is@~0.1.3:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-
-escape-string-regexp@^1.0.2, escape-string-regexp@~1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-
-escodegen@^1.9.0:
-  version "1.9.1"
-  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2"
-  dependencies:
-    esprima "^3.1.3"
-    estraverse "^4.2.0"
-    esutils "^2.0.2"
-    optionator "^0.8.1"
-  optionalDependencies:
-    source-map "~0.6.1"
-
-espree@^3.5.3:
-  version "3.5.4"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
-  dependencies:
-    acorn "^5.5.0"
-    acorn-jsx "^3.0.0"
-
-esprima@^3.1.3:
-  version "3.1.3"
-  resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
-
-estraverse@^4.2.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
-
-esutils@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
-
-fast-levenshtein@~2.0.4:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-
-fs.realpath@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-
-glob@^7.1.2:
-  version "7.1.2"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
-  dependencies:
-    fs.realpath "^1.0.0"
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "^3.0.4"
-    once "^1.3.0"
-    path-is-absolute "^1.0.0"
-
-graceful-fs@^4.1.9:
-  version "4.1.11"
-  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
-
-has-ansi@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
-  dependencies:
-    ansi-regex "^2.0.0"
-
-inflight@^1.0.4:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
-  dependencies:
-    once "^1.3.0"
-    wrappy "1"
-
-inherits@2:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-
-is-buffer@^1.1.5:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-
-js2xmlparser@~3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-3.0.0.tgz#3fb60eaa089c5440f9319f51760ccd07e2499733"
-  dependencies:
-    xmlcreate "^1.0.1"
-
-jsdoc@^3.5.5:
-  version "3.5.5"
-  resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.5.5.tgz#484521b126e81904d632ff83ec9aaa096708fa4d"
-  dependencies:
-    babylon "7.0.0-beta.19"
-    bluebird "~3.5.0"
-    catharsis "~0.8.9"
-    escape-string-regexp "~1.0.5"
-    js2xmlparser "~3.0.0"
-    klaw "~2.0.0"
-    marked "~0.3.6"
-    mkdirp "~0.5.1"
-    requizzle "~0.2.1"
-    strip-json-comments "~2.0.1"
-    taffydb "2.6.2"
-    underscore "~1.8.3"
-
-kind-of@^3.0.2:
-  version "3.2.2"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
-  dependencies:
-    is-buffer "^1.1.5"
-
-klaw@~2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/klaw/-/klaw-2.0.0.tgz#59c128e0dc5ce410201151194eeb9cbf858650f6"
-  dependencies:
-    graceful-fs "^4.1.9"
-
-lazy-cache@^1.0.3:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
-
-levn@~0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
-  dependencies:
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-
-long@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
-
-longest@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-
-marked@~0.3.6:
-  version "0.3.19"
-  resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790"
-
-minimatch@^3.0.4:
-  version "3.0.4"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
-  dependencies:
-    brace-expansion "^1.1.7"
-
-minimist@0.0.8:
-  version "0.0.8"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-
-minimist@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
-
-mkdirp@~0.5.1:
-  version "0.5.1"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
-  dependencies:
-    minimist "0.0.8"
-
-once@^1.3.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
-  dependencies:
-    wrappy "1"
-
-optionator@^0.8.1:
-  version "0.8.2"
-  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
-  dependencies:
-    deep-is "~0.1.3"
-    fast-levenshtein "~2.0.4"
-    levn "~0.3.0"
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-    wordwrap "~1.0.0"
-
-os-tmpdir@~1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-
-path-is-absolute@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-
-prelude-ls@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
-
-"protobufjs@github:dcodeIO/protobuf.js#65d113b0079fa2570837f3cf95268ce24714a248":
-  version "6.8.7"
-  resolved "https://codeload.github.com/dcodeIO/protobuf.js/tar.gz/65d113b0079fa2570837f3cf95268ce24714a248"
-  dependencies:
-    "@protobufjs/aspromise" "^1.1.2"
-    "@protobufjs/base64" "^1.1.2"
-    "@protobufjs/codegen" "^2.0.4"
-    "@protobufjs/eventemitter" "^1.1.0"
-    "@protobufjs/fetch" "^1.1.0"
-    "@protobufjs/float" "^1.0.2"
-    "@protobufjs/inquire" "^1.1.0"
-    "@protobufjs/path" "^1.1.2"
-    "@protobufjs/pool" "^1.1.0"
-    "@protobufjs/utf8" "^1.1.0"
-    "@types/long" "^3.0.32"
-    "@types/node" "^8.9.4"
-    long "^4.0.0"
-
-repeat-string@^1.5.2:
-  version "1.6.1"
-  resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-
-requizzle@~0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.1.tgz#6943c3530c4d9a7e46f1cddd51c158fc670cdbde"
-  dependencies:
-    underscore "~1.6.0"
-
-right-align@^0.1.1:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
-  dependencies:
-    align-text "^0.1.1"
-
-semver@^5.5.0:
-  version "5.5.0"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
-
-source-map@~0.5.1:
-  version "0.5.7"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-
-source-map@~0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-
-strip-ansi@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
-  dependencies:
-    ansi-regex "^2.0.0"
-
-strip-json-comments@~2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-
-supports-color@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-
-taffydb@2.6.2:
-  version "2.6.2"
-  resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268"
-
-tmp@0.0.33:
-  version "0.0.33"
-  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
-  dependencies:
-    os-tmpdir "~1.0.2"
-
-type-check@~0.3.2:
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
-  dependencies:
-    prelude-ls "~1.1.2"
-
-uglify-js@^2.8.29:
-  version "2.8.29"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
-  dependencies:
-    source-map "~0.5.1"
-    yargs "~3.10.0"
-  optionalDependencies:
-    uglify-to-browserify "~1.0.0"
-
-uglify-to-browserify@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
-
-underscore-contrib@~0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/underscore-contrib/-/underscore-contrib-0.3.0.tgz#665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7"
-  dependencies:
-    underscore "1.6.0"
-
-underscore@1.6.0, underscore@~1.6.0:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8"
-
-underscore@~1.8.3:
-  version "1.8.3"
-  resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
-
-window-size@0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-
-wordwrap@0.0.2:
-  version "0.0.2"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
-
-wordwrap@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-
-wrappy@1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-
-xmlcreate@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-1.0.2.tgz#fa6bf762a60a413fb3dd8f4b03c5b269238d308f"
-
-yargs@~3.10.0:
-  version "3.10.0"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
-  dependencies:
-    camelcase "^1.0.2"
-    cliui "^2.1.0"
-    decamelize "^1.0.0"
-    window-size "0.1.0"
diff --git a/internal/ts_config.bzl b/internal/ts_config.bzl
deleted file mode 100644
index db56b39..0000000
--- a/internal/ts_config.bzl
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"tsconfig.json files using extends"
-
-TsConfigInfo = provider()
-
-def _ts_config_impl(ctx):
-    files = depset([ctx.file.src])
-    return [DefaultInfo(files = files), TsConfigInfo(deps = ctx.files.deps)]
-
-ts_config = rule(
-    implementation = _ts_config_impl,
-    attrs = {
-        "src": attr.label(
-            doc = """The tsconfig.json file passed to the TypeScript compiler""",
-            allow_single_file = True,
-            mandatory = True,
-        ),
-        "deps": attr.label_list(
-            doc = """Additional tsconfig.json files referenced via extends""",
-            allow_files = True,
-            mandatory = True,
-        ),
-    },
-)
-"""Allows a tsconfig.json file to extend another file.
-
-Normally, you just give a single `tsconfig.json` file as the tsconfig attribute
-of a `ts_library` rule. However, if your `tsconfig.json` uses the `extends`
-feature from TypeScript, then the Bazel implementation needs to know about that
-extended configuration file as well, to pass them both to the TypeScript compiler.
-"""
diff --git a/internal/ts_repositories.bzl b/internal/ts_repositories.bzl
index 16c3e40..e37ca2f 100644
--- a/internal/ts_repositories.bzl
+++ b/internal/ts_repositories.bzl
@@ -35,27 +35,6 @@
     # 0.16.8: ng_package fix for packaging binary files
     check_rules_nodejs_version("0.16.8")
 
-    # Included here for backward compatability for downstream repositories
-    # that use @build_bazel_rules_typescript_tsc_wrapped_deps such as rxjs.
-    # @build_bazel_rules_typescript_tsc_wrapped_deps is not used locally.
-    yarn_install(
-        name = "build_bazel_rules_typescript_tsc_wrapped_deps",
-        package_json = "@npm_bazel_typescript//internal:tsc_wrapped/package.json",
-        yarn_lock = "@npm_bazel_typescript//internal:tsc_wrapped/yarn.lock",
-    )
-
-    yarn_install(
-        name = "build_bazel_rules_typescript_devserver_deps",
-        package_json = "@npm_bazel_typescript//internal/devserver:package.json",
-        yarn_lock = "@npm_bazel_typescript//internal/devserver:yarn.lock",
-    )
-
-    yarn_install(
-        name = "build_bazel_rules_typescript_protobufs_compiletime_deps",
-        package_json = "@npm_bazel_typescript//internal/protobufjs:package.json",
-        yarn_lock = "@npm_bazel_typescript//internal/protobufjs:yarn.lock",
-    )
-
 # BEGIN-DEV-ONLY
 def ts_setup_dev_workspace():
     """
diff --git a/internal/tsc_wrapped/yarn.lock b/internal/tsc_wrapped/yarn.lock
index af6b06f..de1c0b0 100644
--- a/internal/tsc_wrapped/yarn.lock
+++ b/internal/tsc_wrapped/yarn.lock
@@ -36,13 +36,18 @@
   integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
 
 brace-expansion@^1.1.7:
-  version "1.1.8"
-  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
-  integrity sha1-wHshHHyVLsH479Uad+8NHTmQopI=
+  version "1.1.11"
+  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
   dependencies:
     balanced-match "^1.0.0"
     concat-map "0.0.1"
 
+buffer-from@^1.0.0:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+  integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
 bytebuffer@~5:
   version "5.0.1"
   resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd"
@@ -207,10 +212,11 @@
     yargs "^3.10.0"
 
 source-map-support@^0.5.0:
-  version "0.5.3"
-  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.3.tgz#2b3d5fff298cfa4d1afd7d4352d569e9a0158e76"
-  integrity sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==
+  version "0.5.10"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c"
+  integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==
   dependencies:
+    buffer-from "^1.0.0"
     source-map "^0.6.0"
 
 source-map@^0.6.0:
@@ -252,9 +258,9 @@
     source-map-support "^0.5.0"
 
 tslib@^1.8.1:
-  version "1.9.0"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8"
-  integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==
+  version "1.9.3"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
+  integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
 
 tsutils@2.27.2:
   version "2.27.2"
diff --git a/internal/tsetse/tests/ban_expect_truthy_promise/BUILD b/internal/tsetse/tests/ban_expect_truthy_promise/BUILD
index 46b5590..2e59f91 100644
--- a/internal/tsetse/tests/ban_expect_truthy_promise/BUILD
+++ b/internal/tsetse/tests/ban_expect_truthy_promise/BUILD
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-load("//internal:defaults.bzl", "ts_library")
+load("//javascript/typescript:build_defs.bzl", "ts_library")
 
 licenses(["notice"])  # Apache 2.0
 
diff --git a/internal/tsetse/tests/ban_promise_as_condition/BUILD b/internal/tsetse/tests/ban_promise_as_condition/BUILD
index 83817bd..47e09ec 100644
--- a/internal/tsetse/tests/ban_promise_as_condition/BUILD
+++ b/internal/tsetse/tests/ban_promise_as_condition/BUILD
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-load("//internal:defaults.bzl", "ts_library")
+load("//javascript/typescript:build_defs.bzl", "ts_library")
 
 licenses(["notice"])  # Apache 2.0
 
diff --git a/internal/tsetse/tests/check_return_value/BUILD b/internal/tsetse/tests/check_return_value/BUILD
index 502aa27..c09ea5f 100644
--- a/internal/tsetse/tests/check_return_value/BUILD
+++ b/internal/tsetse/tests/check_return_value/BUILD
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-load("//internal:defaults.bzl", "ts_library")
+load("//javascript/typescript:build_defs.bzl", "ts_library")
 
 licenses(["notice"])  # Apache 2.0
 
diff --git a/internal/tsetse/tests/equals_nan/BUILD b/internal/tsetse/tests/equals_nan/BUILD
index 6fad147..7dc5959 100644
--- a/internal/tsetse/tests/equals_nan/BUILD
+++ b/internal/tsetse/tests/equals_nan/BUILD
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-load("//internal:defaults.bzl", "ts_library")
+load("//javascript/typescript:build_defs.bzl", "ts_library")
 
 licenses(["notice"])  # Apache 2.0
 
diff --git a/internal/tsetse/tests/must_use_promises/BUILD b/internal/tsetse/tests/must_use_promises/BUILD
index 9f88bd5..bc8c34b 100644
--- a/internal/tsetse/tests/must_use_promises/BUILD
+++ b/internal/tsetse/tests/must_use_promises/BUILD
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-load("//internal:defaults.bzl", "ts_library")
+load("//javascript/typescript:build_defs.bzl", "ts_library")
 
 licenses(["notice"])  # Apache 2.0
 
diff --git a/package.bzl b/package.bzl
index e19ba50..ae42990 100644
--- a/package.bzl
+++ b/package.bzl
@@ -12,19 +12,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""Package file which defines npm_bazel_typescript dependencies
+"""Package file which defines build dependencies
 """
 
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
 
-def rules_typescript_dependencies():
-    print("""DEPRECATION WARNING:
-    rules_typescript_dependencies is no longer needed, and will be removed in a future release.
-    We assume you will fetch rules_nodejs in your WORKSPACE file, and no other dependencies remain here.
-    Simply remove any calls to this function and the corresponding call to
-      load("@npm_bazel_typescript//:package.bzl", "rules_typescript_dependencies")
-    """)
-
 def rules_typescript_dev_dependencies():
     """
     Fetch dependencies needed for local development.
@@ -38,11 +30,11 @@
     _maybe(
         http_archive,
         name = "build_bazel_rules_nodejs",
-        urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.18.5/rules_nodejs-0.18.5.tar.gz"],
-        sha256 = "c8cd6a77433f7d3bb1f4ac87f15822aa102989f8e9eb1907ca0cad718573985b",
+        sha256 = "213dcf7e72f3acd4d1e369b7a356f3e5d9560f380bd655b13b7c0ea425d7c419",
+        urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.27.9/rules_nodejs-0.27.9.tar.gz"],
     )
 
-    # For running skylint
+    # For protocol buffers
     _maybe(
         http_archive,
         name = "io_bazel",
@@ -80,29 +72,6 @@
         sha256 = "9176a7df34dbed2cf5171eb56271868824560364e60644348219f852f593ae79",
     )
 
-    # io_bazel_rules_webtesting depends on bazel_skylib. It is installed by
-    # web_test_repositories() but we depend on it here in case users don't call
-    # web_test_repositories(). This will get cleaned up by https://github.com/bazelbuild/rules_typescript/pull/374
-    # which introduces npm_bazel_karma with its own defs.bzl file
-    # that will allow this dep to be removed from rules_typescript_dependencies()
-    _maybe(
-        http_archive,
-        name = "bazel_skylib",
-        url = "https://github.com/bazelbuild/bazel-skylib/archive/d7c5518fa061ae18a20d00b14082705d3d2d885d.zip",
-        strip_prefix = "bazel-skylib-d7c5518fa061ae18a20d00b14082705d3d2d885d",
-    )
-
-    #############################################
-    # Dependencies for generating documentation #
-    #############################################
-
-    http_archive(
-        name = "io_bazel_rules_sass",
-        urls = ["https://github.com/bazelbuild/rules_sass/archive/8ccf4f1c351928b55d5dddf3672e3667f6978d60.zip"],  # 2018-11-23
-        strip_prefix = "rules_sass-8ccf4f1c351928b55d5dddf3672e3667f6978d60",
-        sha256 = "894d7928df8da85e263d743c8434d4c10ab0a3f0708fed0d53394e688e3faf70",
-    )
-
 def _maybe(repo_rule, name, **kwargs):
     if name not in native.existing_rules():
         repo_rule(name = name, **kwargs)
diff --git a/package.json b/package.json
index b0579be..3d4a646 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,7 @@
         "@bazel/bazel": "~0.22.0",
         "@bazel/buildifier": "^0.20.0",
         "@bazel/ibazel": "^0.2.0",
-        "@bazel/typescript": "0.19.1",
+        "@bazel/typescript": "0.27.9",
         "@types/jasmine": "^2.8.2",
         "@types/long": "^4.0.0",
         "@types/node": "7.0.18",
diff --git a/protractor.conf.js b/protractor.conf.js
deleted file mode 100644
index ae5555b..0000000
--- a/protractor.conf.js
+++ /dev/null
@@ -1,13 +0,0 @@
-exports.config = {
-  suites: {
-    app: 'bazel-bin/examples/app/*_e2e_test.js',
-    protocol_buffers: 'bazel-bin/examples/protocol_buffers/*_e2e_test.js',
-  },
-  capabilities: {
-    browserName: 'chrome',
-    chromeOptions: {args: ['--no-sandbox']}
-  },
-  directConnect: true,
-  baseUrl: 'http://localhost:8080/',
-  framework: 'jasmine',
-};
diff --git a/ts_auto_deps/ts_auto_deps.js b/ts_auto_deps/ts_auto_deps.js
deleted file mode 100644
index 68f4f7e..0000000
--- a/ts_auto_deps/ts_auto_deps.js
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env node
-
-// This file is a shim to execute the ts_auto_deps binary from the right platform-specific package.
-const os = require('os');
-const fs = require('fs');
-const path = require('path');
-const spawnSync = require('child_process').spawnSync;
-
-/**
- * @return '.exe' for Windows and '' for all other platforms
- */
-function getNativeBinaryExt() {
-  return os.platform() === 'win32' ? '.exe' : '';
-}
-
-/**
- * @return the native `ts_auto_deps` binary for the current platform
- * @throws when the `ts_auto_deps` executable can not be found
- */
-function getNativeBinary() {
-  try {
-    return require.resolve(`./ts_auto_deps-${os.platform()}_${os.arch()}${getNativeBinaryExt()}`);
-  } catch (e) {
-    const message = 'ts_auto_deps executable not found for your platform: ' +
-        `(${os.platform()}_${os.arch()})\n`;
-    throw new Error(message);
-  }
-}
-
-/** Starts a new synchronous child process that runs with the specified arguments. */
-const spawnedProcess = spawnSync(getNativeBinary(), process.argv.slice(2), {stdio: 'inherit'});
-
-// Ensure that this wrapper script exits with the same exit code as the child process.
-process.exit(spawnedProcess.status);
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..5164862
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,12 @@
+{
+    "compilerOptions": {
+      "strict": true,
+      "lib": ["es2015.promise", "dom", "es5"],
+      // Explicitly set types settings so typescript doesn't auto-discover types.
+      // If all types are discovered then all types need to be included as deps
+      // or typescript may error out with TS2688: Cannot find type definition file for 'foo'.
+      "types": []
+   }
+  }
+  
+  
\ No newline at end of file
diff --git a/version.bzl b/version.bzl
deleted file mode 100644
index 35f5df8..0000000
--- a/version.bzl
+++ /dev/null
@@ -1 +0,0 @@
-COMPAT_VERSION = "0.25.0"
diff --git a/yarn.lock b/yarn.lock
index eb75663..6d1c539 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -49,14 +49,14 @@
   resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.2.0.tgz#c119aef4344a789cef5e792caaee52264123e71c"
   integrity sha1-wRmu9DRKeJzvXnksqu5SJkEj5xw=
 
-"@bazel/typescript@0.19.1":
-  version "0.19.1"
-  resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.19.1.tgz#61dd57c0ab8a6c9930d2463d44e9522ec007fe3a"
-  integrity sha512-rNpNNRAQmtb+AdX5CvLzDGOADO2PRbZWoQfd7I2NXTuWk8BaJEb0D5W+WxQGcNim6qTUD1JLAknfOVYICf3OaQ==
+"@bazel/typescript@0.27.9":
+  version "0.27.9"
+  resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.27.9.tgz#6cd6a7162167bec67cfae3a3b973a6bfe8c65f3e"
+  integrity sha512-o/MDGV2YNHMrsxJMpjWHQwezR7jlh7LJ+7FEmzG/LrepRtyYdaDev5bRhVn2XxnD7cPDx8zvyer35NJTnK0hnw==
   dependencies:
-    protobufjs "5.0.0"
+    protobufjs "5.0.3"
+    semver "5.6.0"
     source-map-support "0.5.9"
-    tsickle "0.28.0"
     tsutils "2.27.2"
 
 "@types/jasmine@^2.8.2":
@@ -1179,17 +1179,6 @@
     is-glob "^3.1.0"
     path-dirname "^1.0.0"
 
-glob@^5.0.10:
-  version "5.0.15"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
-  integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
-  dependencies:
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "2 || 3"
-    once "^1.3.0"
-    path-is-absolute "^1.0.0"
-
 glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6:
   version "7.1.2"
   resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
@@ -1924,7 +1913,7 @@
   resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
   integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==
 
-"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4:
+minimatch@^3.0.2, minimatch@^3.0.4:
   version "3.0.4"
   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
   integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
@@ -2271,16 +2260,6 @@
   resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
   integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
 
-protobufjs@5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.0.tgz#4223063233ea96ac063ca2b554035204db524fa1"
-  integrity sha1-QiMGMjPqlqwGPKK1VANSBNtST6E=
-  dependencies:
-    ascli "~1"
-    bytebuffer "~5"
-    glob "^5.0.10"
-    yargs "^3.10.0"
-
 protobufjs@5.0.3:
   version "5.0.3"
   resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17"
@@ -2762,14 +2741,6 @@
     buffer-from "^1.0.0"
     source-map "^0.6.0"
 
-source-map-support@^0.5.0:
-  version "0.5.6"
-  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13"
-  integrity sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==
-  dependencies:
-    buffer-from "^1.0.0"
-    source-map "^0.6.0"
-
 source-map-support@~0.4.0:
   version "0.4.18"
   resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
@@ -3003,16 +2974,6 @@
   resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36"
   integrity sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==
 
-tsickle@0.28.0:
-  version "0.28.0"
-  resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.28.0.tgz#6cd6fa004766c6ad9261b599c83866ee97cc7875"
-  integrity sha512-cb/Z4NlKMPGiIIbgmklfBJIxDl4EQoYqC+0/BnPxZWzWcUvikeOHFkkkEmabJVqKh47jUqOwU/uMAu6UvhicZg==
-  dependencies:
-    minimist "^1.2.0"
-    mkdirp "^0.5.1"
-    source-map "^0.6.0"
-    source-map-support "^0.5.0"
-
 tsickle@0.33.1:
   version "0.33.1"
   resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.33.1.tgz#eee4ebabeda3bcd8afc32cee34c822cbe3e839ec"
