diff --git a/README.md b/README.md
index dc0f434..3605cd4 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,7 @@
 [Skydoc documentation](https://bazelbuild.github.io/rules_kotlin)
 
 # Announcements
+* <b>August 14, 2018.</b> Js support. No documentation yet but see the nested example workspace `examples/node`.
 * <b>August 14, 2018.</b> Android support. No documentation but it's a simple integration. see 
   `kotlin/internal/jvm/android.bzl`.
 * <b>Jun 29, 2018.</b> The commits from this date forward are compatible with bazel `>=0.14`. JDK9 host issues were 
diff --git a/WORKSPACE b/WORKSPACE
index b6d1c29..c79c711 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -21,22 +21,6 @@
     repo = "google/protobuf",
 )
 
-git_repository(
-    name = "bazel_skylib",
-    remote = "https://github.com/bazelbuild/bazel-skylib.git",
-    tag = "0.5.0",
-)
-
-git_repository(
-    name = "build_bazel_rules_nodejs",
-    remote = "https://github.com/bazelbuild/rules_nodejs.git",
-    tag = "0.11.4",
-)
-
-load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories")
-
-node_repositories(package_json = [])
-
 http_jar(
     name = "bazel_deps",
     sha256 = "05498224710808be9687f5b9a906d11dd29ad592020246d4cd1a26eeaed0735e",
diff --git a/examples/node/BUILD b/examples/node/BUILD
new file mode 100644
index 0000000..9c0f139
--- /dev/null
+++ b/examples/node/BUILD
@@ -0,0 +1,13 @@
+# 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.
diff --git a/examples/node/README.MD b/examples/node/README.MD
new file mode 100644
index 0000000..5721a60
--- /dev/null
+++ b/examples/node/README.MD
@@ -0,0 +1 @@
+This example workspace demonstrates the JS support.
\ No newline at end of file
diff --git a/examples/node/WORKSPACE b/examples/node/WORKSPACE
new file mode 100644
index 0000000..81be52d
--- /dev/null
+++ b/examples/node/WORKSPACE
@@ -0,0 +1,33 @@
+workspace(name = "kotlin_node_examples")
+
+local_repository(
+    name = "io_bazel_rules_kotlin",
+    path = "../.."
+)
+
+load("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kotlin_repositories", "kt_register_toolchains")
+kotlin_repositories()
+kt_register_toolchains()
+
+git_repository(
+    name = "bazel_skylib",
+    remote = "https://github.com/bazelbuild/bazel-skylib.git",
+    tag = "0.5.0",
+)
+
+git_repository(
+    name = "build_bazel_rules_nodejs",
+    remote = "https://github.com/bazelbuild/rules_nodejs.git",
+    tag = "0.11.4",
+)
+load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories")
+
+node_repositories(package_json = [])
+
+load("@build_bazel_rules_nodejs//:defs.bzl", "yarn_install")
+
+yarn_install(
+    name = "node_ws",
+    package_json = "//:package.json",
+    yarn_lock = "//:yarn.lock",
+)
diff --git a/examples/node/express/App.kt b/examples/node/express/App.kt
new file mode 100644
index 0000000..4cdc181
--- /dev/null
+++ b/examples/node/express/App.kt
@@ -0,0 +1,15 @@
+package express
+
+@JsModule("express")
+external fun express(): dynamic
+
+val app = express()
+
+fun main(args: Array<String>) {
+    // register the routes.
+    routes(app)
+
+    app.listen(3000, {
+        println("Listening on port 3000")
+    })
+}
\ No newline at end of file
diff --git a/examples/node/express/BUILD b/examples/node/express/BUILD
new file mode 100644
index 0000000..ca38a89
--- /dev/null
+++ b/examples/node/express/BUILD
@@ -0,0 +1,37 @@
+# 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("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kt_js_library")
+load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary")
+
+# routes and auth have acme prepended to the rule name as these are the names of the resulting jars. The name of the
+# jar is the name of the module, and thus the name of the require statements.
+kt_js_library(
+    name = "acme-routes",
+    srcs = [":Routes.kt"],
+    deps = ["//express/auth:acme-auth"],
+)
+
+kt_js_library(
+    name ="app",
+    srcs = [":App.kt"],
+    deps = [":acme-routes"],
+)
+
+# The binary demonstrates an express app composed of three modules. The modules can co-exist in the same directory.
+nodejs_binary(
+    name = "express",
+    node_modules = "@node_ws//:node_modules",
+    data = [":app"],
+    entry_point = "kotlin_node_examples/express/app.js",
+)
diff --git a/examples/node/express/Routes.kt b/examples/node/express/Routes.kt
new file mode 100644
index 0000000..3f079d9
--- /dev/null
+++ b/examples/node/express/Routes.kt
@@ -0,0 +1,16 @@
+package express
+
+import express.auth.isAuthenticated
+
+//import express.auth.isAuthenticated
+
+fun routes(app: dynamic) {
+    app.get("/") { req, res ->
+        if(!isAuthenticated("bob")) {
+            res.send(401, "you sir, are not authorized !")
+        } else {
+            res.type("text/plain")
+            res.send("hello world")
+        }
+    }
+}
\ No newline at end of file
diff --git a/examples/node/express/auth/Auth.kt b/examples/node/express/auth/Auth.kt
new file mode 100644
index 0000000..f5a2d4c
--- /dev/null
+++ b/examples/node/express/auth/Auth.kt
@@ -0,0 +1,6 @@
+package express.auth
+
+
+fun isAuthenticated(user: String): Boolean {
+    return user != "bob"
+}
\ No newline at end of file
diff --git a/examples/node/express/auth/BUILD b/examples/node/express/auth/BUILD
new file mode 100644
index 0000000..835e9d6
--- /dev/null
+++ b/examples/node/express/auth/BUILD
@@ -0,0 +1,20 @@
+# 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("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kt_js_library")
+
+kt_js_library(
+    name = "acme-auth",
+    srcs = ["Auth.kt"],
+    visibility=["//visibility:public"]
+)
diff --git a/examples/node/package.json b/examples/node/package.json
new file mode 100644
index 0000000..7ae63ad
--- /dev/null
+++ b/examples/node/package.json
@@ -0,0 +1,12 @@
+{
+  "name": "node_packages",
+  "version": "1.0.0",
+  "dependencies": {
+    "express": "^4.16.3",
+    "kotlin": "1.2.60",
+    "kotlin-test": "1.2.60"
+  },
+  "devDependencies": {
+    "source-map-support": "^0.5.6"
+  }
+}
diff --git a/examples/node/yarn.lock b/examples/node/yarn.lock
new file mode 100644
index 0000000..06dda37
--- /dev/null
+++ b/examples/node/yarn.lock
@@ -0,0 +1,331 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+accepts@~1.3.5:
+  version "1.3.5"
+  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
+  dependencies:
+    mime-types "~2.1.18"
+    negotiator "0.6.1"
+
+array-flatten@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+
+body-parser@1.18.2:
+  version "1.18.2"
+  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
+  dependencies:
+    bytes "3.0.0"
+    content-type "~1.0.4"
+    debug "2.6.9"
+    depd "~1.1.1"
+    http-errors "~1.6.2"
+    iconv-lite "0.4.19"
+    on-finished "~2.3.0"
+    qs "6.5.1"
+    raw-body "2.3.2"
+    type-is "~1.6.15"
+
+buffer-from@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04"
+
+bytes@3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+
+content-disposition@0.5.2:
+  version "0.5.2"
+  resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
+
+content-type@~1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+
+cookie-signature@1.0.6:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+
+cookie@0.3.1:
+  version "0.3.1"
+  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
+
+debug@2.6.9:
+  version "2.6.9"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+  dependencies:
+    ms "2.0.0"
+
+depd@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
+
+depd@~1.1.1, depd@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+
+destroy@~1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+
+ee-first@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+
+encodeurl@~1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+
+escape-html@~1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+
+etag@~1.8.1:
+  version "1.8.1"
+  resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+
+express@^4.16.3:
+  version "4.16.3"
+  resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53"
+  dependencies:
+    accepts "~1.3.5"
+    array-flatten "1.1.1"
+    body-parser "1.18.2"
+    content-disposition "0.5.2"
+    content-type "~1.0.4"
+    cookie "0.3.1"
+    cookie-signature "1.0.6"
+    debug "2.6.9"
+    depd "~1.1.2"
+    encodeurl "~1.0.2"
+    escape-html "~1.0.3"
+    etag "~1.8.1"
+    finalhandler "1.1.1"
+    fresh "0.5.2"
+    merge-descriptors "1.0.1"
+    methods "~1.1.2"
+    on-finished "~2.3.0"
+    parseurl "~1.3.2"
+    path-to-regexp "0.1.7"
+    proxy-addr "~2.0.3"
+    qs "6.5.1"
+    range-parser "~1.2.0"
+    safe-buffer "5.1.1"
+    send "0.16.2"
+    serve-static "1.13.2"
+    setprototypeof "1.1.0"
+    statuses "~1.4.0"
+    type-is "~1.6.16"
+    utils-merge "1.0.1"
+    vary "~1.1.2"
+
+finalhandler@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
+  dependencies:
+    debug "2.6.9"
+    encodeurl "~1.0.2"
+    escape-html "~1.0.3"
+    on-finished "~2.3.0"
+    parseurl "~1.3.2"
+    statuses "~1.4.0"
+    unpipe "~1.0.0"
+
+forwarded@~0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+
+fresh@0.5.2:
+  version "0.5.2"
+  resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+
+http-errors@1.6.2:
+  version "1.6.2"
+  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
+  dependencies:
+    depd "1.1.1"
+    inherits "2.0.3"
+    setprototypeof "1.0.3"
+    statuses ">= 1.3.1 < 2"
+
+http-errors@~1.6.2:
+  version "1.6.3"
+  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+  dependencies:
+    depd "~1.1.2"
+    inherits "2.0.3"
+    setprototypeof "1.1.0"
+    statuses ">= 1.4.0 < 2"
+
+iconv-lite@0.4.19:
+  version "0.4.19"
+  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
+
+inherits@2.0.3:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+
+ipaddr.js@1.8.0:
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
+
+kotlin-test@1.2.60:
+  version "1.2.60"
+  resolved "https://registry.yarnpkg.com/kotlin-test/-/kotlin-test-1.2.60.tgz#e238c48740a1c9f1c036d3c3db04d40f47c934db"
+  dependencies:
+    kotlin "1.2.60"
+
+kotlin@1.2.60:
+  version "1.2.60"
+  resolved "https://registry.yarnpkg.com/kotlin/-/kotlin-1.2.60.tgz#3d7ec2328a0d46281e21b9d7cf5314032217b010"
+
+media-typer@0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+
+merge-descriptors@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+
+methods@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+
+mime-db@~1.35.0:
+  version "1.35.0"
+  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47"
+
+mime-types@~2.1.18:
+  version "2.1.19"
+  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0"
+  dependencies:
+    mime-db "~1.35.0"
+
+mime@1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
+
+ms@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+
+negotiator@0.6.1:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
+
+on-finished@~2.3.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+  dependencies:
+    ee-first "1.1.1"
+
+parseurl@~1.3.2:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
+
+path-to-regexp@0.1.7:
+  version "0.1.7"
+  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+
+proxy-addr@~2.0.3:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
+  dependencies:
+    forwarded "~0.1.2"
+    ipaddr.js "1.8.0"
+
+qs@6.5.1:
+  version "6.5.1"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
+
+range-parser@~1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
+
+raw-body@2.3.2:
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
+  dependencies:
+    bytes "3.0.0"
+    http-errors "1.6.2"
+    iconv-lite "0.4.19"
+    unpipe "1.0.0"
+
+safe-buffer@5.1.1:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
+
+send@0.16.2:
+  version "0.16.2"
+  resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
+  dependencies:
+    debug "2.6.9"
+    depd "~1.1.2"
+    destroy "~1.0.4"
+    encodeurl "~1.0.2"
+    escape-html "~1.0.3"
+    etag "~1.8.1"
+    fresh "0.5.2"
+    http-errors "~1.6.2"
+    mime "1.4.1"
+    ms "2.0.0"
+    on-finished "~2.3.0"
+    range-parser "~1.2.0"
+    statuses "~1.4.0"
+
+serve-static@1.13.2:
+  version "1.13.2"
+  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
+  dependencies:
+    encodeurl "~1.0.2"
+    escape-html "~1.0.3"
+    parseurl "~1.3.2"
+    send "0.16.2"
+
+setprototypeof@1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
+
+setprototypeof@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+
+source-map-support@^0.5.6:
+  version "0.5.6"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13"
+  dependencies:
+    buffer-from "^1.0.0"
+    source-map "^0.6.0"
+
+source-map@^0.6.0:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+
+"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2":
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+
+statuses@~1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
+
+type-is@~1.6.15, type-is@~1.6.16:
+  version "1.6.16"
+  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
+  dependencies:
+    media-typer "0.3.0"
+    mime-types "~2.1.18"
+
+unpipe@1.0.0, unpipe@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+
+utils-merge@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+
+vary@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
diff --git a/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar b/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar
index 1038b72..5c04b63 100755
--- a/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar
+++ b/kotlin/builder/proto/jars/libkotlin_model_proto-speed.jar
Binary files differ
diff --git a/kotlin/builder/proto/kotlin_model.proto b/kotlin/builder/proto/kotlin_model.proto
index 8814ef6..3f108af 100644
--- a/kotlin/builder/proto/kotlin_model.proto
+++ b/kotlin/builder/proto/kotlin_model.proto
@@ -147,3 +147,25 @@
     Outputs outputs = 3;
     Inputs inputs = 4;
 }
+
+message JsCompilationTask {
+    message Outputs {
+        // The primary output
+        string js = 1;
+        string jar = 3;
+        string srcjar = 4;
+    }
+
+    message Inputs {
+        repeated string libraries = 1;
+        // Partitioned from the builder flags, expanding the source_jars.
+        repeated string kotlin_sources = 2;
+    }
+
+    CompilationTaskInfo info = 1;
+    Outputs outputs = 3;
+    Inputs inputs = 4;
+
+    // flags that should be passed through straight to the kotlinc-js compiler.
+    repeated string pass_through_flags = 5;
+}
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt
index 37cfd5f..9ef3736 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt
@@ -16,6 +16,7 @@
 package io.bazel.kotlin.builder.tasks
 
 import com.google.protobuf.util.JsonFormat
+import io.bazel.kotlin.builder.tasks.js.Kotlin2JsTaskExecutor
 import io.bazel.kotlin.builder.tasks.jvm.KotlinJvmTaskExecutor
 import io.bazel.kotlin.builder.toolchain.CompilationStatusException
 import io.bazel.kotlin.builder.utils.*
@@ -33,7 +34,8 @@
 @Suppress("MemberVisibilityCanBePrivate")
 class KotlinBuilder @Inject internal constructor(
     private val outputProvider: Provider<PrintStream>,
-    private val jvmTaskExecutor: KotlinJvmTaskExecutor
+    private val jvmTaskExecutor: KotlinJvmTaskExecutor,
+    private val jsTaskExecutor: Kotlin2JsTaskExecutor
 ) : CommandLineProgram {
     companion object {
         @JvmStatic
@@ -55,7 +57,8 @@
             @Suppress("WHEN_ENUM_CAN_BE_NULL_IN_JAVA")
             when (context.info.platform) {
                 Platform.JVM -> executeJvmTask(context, argMap)
-                Platform.UNRECOGNIZED, Platform.JS -> throw IllegalStateException("unrecognized platform: ${context.info}")
+                Platform.JS -> executeJsTask(context, argMap)
+                Platform.UNRECOGNIZED -> throw IllegalStateException("unrecognized platform: ${context.info}")
             }
             success = true
         } catch (ex: CompilationStatusException) {
@@ -131,6 +134,9 @@
         PLUGINS("--kotlin_plugins"),
         FRIEND_PATHS("--kotlin_friend_paths"),
         OUTPUT_JDEPS("--kotlin_output_jdeps"),
+        OUTPUT_JS_JAR("--kotlin_output_js_jar"),
+        JS_PASSTHROUGH_FLAGS("--kotlin_js_passthrough_flags"),
+        JS_LIBRARIES("--kotlin_js_libraries"),
         DEBUG("--kotlin_debug_tags"),
         TASK_ID("--kotlin_task_id");
     }
@@ -159,6 +165,28 @@
             this
         }
 
+    private fun executeJsTask(context: CompilationTaskContext, argMap: ArgMap) =
+        buildJsTask(context.info, argMap).let { jsTask ->
+            context.whenTracing { printProto("js task input", jsTask) }
+            jsTaskExecutor.execute(context, jsTask)
+        }
+
+    private fun buildJsTask(info: CompilationTaskInfo, argMap: ArgMap): JsCompilationTask =
+        with(JsCompilationTask.newBuilder()) {
+            this.info = info
+            with(inputsBuilder) {
+                addAllLibraries(argMap.mandatory(KotlinBuilderFlags.JS_LIBRARIES))
+                addAllKotlinSources(argMap.mandatory(JavaBuilderFlags.SOURCES))
+            }
+            with(outputsBuilder) {
+                js = argMap.mandatorySingle(JavaBuilderFlags.OUTPUT)
+                jar = argMap.mandatorySingle(KotlinBuilderFlags.OUTPUT_JS_JAR)
+                srcjar = argMap.mandatorySingle(KotlinBuilderFlags.OUTPUT_SRCJAR)
+            }
+            addAllPassThroughFlags(argMap.mandatory(KotlinBuilderFlags.JS_PASSTHROUGH_FLAGS))
+            build()
+        }
+
     private fun executeJvmTask(context: CompilationTaskContext, argMap: ArgMap) {
         val task = buildJvmTask(context.info, argMap)
         context.whenTracing {
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/tasks/js/Kotlin2JsTaskExecutor.kt b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/js/Kotlin2JsTaskExecutor.kt
new file mode 100644
index 0000000..630bd4b
--- /dev/null
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/tasks/js/Kotlin2JsTaskExecutor.kt
@@ -0,0 +1,82 @@
+package io.bazel.kotlin.builder.tasks.js
+
+import io.bazel.kotlin.builder.toolchain.CompilationException
+import io.bazel.kotlin.builder.toolchain.KotlinToolchain
+import io.bazel.kotlin.builder.utils.CompilationTaskContext
+import io.bazel.kotlin.builder.utils.addAll
+import io.bazel.kotlin.builder.utils.jars.JarCreator
+import io.bazel.kotlin.builder.utils.jars.SourceJarCreator
+import io.bazel.kotlin.builder.utils.resolveTwinVerified
+import io.bazel.kotlin.builder.utils.verifiedPath
+import io.bazel.kotlin.model.JsCompilationTask
+import java.io.FileOutputStream
+import java.nio.file.Files
+import java.nio.file.Path
+import java.nio.file.Paths
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class Kotlin2JsTaskExecutor @Inject constructor(
+    private val invoker: KotlinToolchain.K2JSCompilerInvoker
+) {
+    fun execute(context: CompilationTaskContext, task: JsCompilationTask) {
+        context.print(Paths.get(task.inputs.kotlinSourcesList[0]).toRealPath().toAbsolutePath().toString())
+        task.compile(context)
+
+        val jsPath = Paths.get(task.outputs.js)
+        val jsMetaFile = jsPath.resolveTwinVerified(".meta.js")
+        val jsDirectory = jsPath.parent.resolve(jsPath.toFile().nameWithoutExtension)
+        task.createJar(jsDirectory, listOf(jsPath, jsPath.resolveTwinVerified(".js.map"), jsMetaFile))
+        // this mutates the jsPath file , so do it after creating the jar.
+        appendMetaToPrimary(jsPath, jsMetaFile)
+        task.createSourceJar()
+    }
+
+    private fun JsCompilationTask.compile(context: CompilationTaskContext) {
+        val args = mutableListOf<String>().also {
+            it.addAll(passThroughFlagsList)
+            it.addAll("-libraries", inputs.librariesList.joinToString(":"))
+            it.addAll("-output", outputs.js)
+            it.addAll(inputs.kotlinSourcesList)
+        }
+        context.whenTracing { printLines("js compile args", args) }
+        context.executeCompilerTask(args, invoker::compile)
+    }
+
+    private fun JsCompilationTask.createSourceJar() {
+        try {
+            SourceJarCreator(Paths.get(outputs.srcjar), false).also { creator ->
+                creator.addSources(inputs.kotlinSourcesList.map { Paths.get(it) }.stream())
+            }.execute()
+        } catch (ex: Throwable) {
+            throw CompilationException("could not create source jar", ex)
+        }
+    }
+
+    /**
+     * Append the meta file to the JS file. This is an accepted pattern, and it allows us to not have to export the
+     * meta.js file with the js.
+     */
+    private fun appendMetaToPrimary(jsPath: Path, jsMetaFile: Path) {
+        try {
+            FileOutputStream(jsPath.toFile(), true).use { Files.copy(jsMetaFile, it) }
+        } catch (ex: Throwable) {
+            throw CompilationException("could not normalize js file", ex)
+        }
+    }
+
+    private fun JsCompilationTask.createJar(jsDirectoryPath: Path, rootEntries: List<Path>) {
+        try {
+            val outputJarPath = Paths.get(outputs.jar)
+
+            JarCreator(outputJarPath).also { creator ->
+                creator.addDirectory(jsDirectoryPath)
+                creator.addRootEntries(rootEntries.map { it.toString() })
+                creator.execute()
+            }
+        } catch (ex: Throwable) {
+            throw CompilationException("error creating js jar", ex)
+        }
+    }
+}
\ No newline at end of file
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/utils/CompilationTaskContext.kt b/kotlin/builder/src/io/bazel/kotlin/builder/utils/CompilationTaskContext.kt
index 5214657..2c626bd 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/utils/CompilationTaskContext.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/utils/CompilationTaskContext.kt
@@ -42,7 +42,6 @@
         throwable.printStackTrace(out)
     }
 
-    @Suppress("unused")
     fun print(msg: String) { out.println(msg) }
     /**
      * Print a list of debugging lines.
diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/utils/MiscUtils.kt b/kotlin/builder/src/io/bazel/kotlin/builder/utils/MiscUtils.kt
index fcfd90a..356a02c 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/utils/MiscUtils.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/utils/MiscUtils.kt
@@ -21,6 +21,11 @@
 
 fun <T, C : MutableCollection<T>> C.addAll(vararg entries: T): C = this.also { addAll(entries) }
 
+/**
+ * Utility function to add multiple entries to a list with a leader.
+ */
+fun <T, C : MutableCollection<T>> C.addAll(leader: T,  entries: List<T>): C = this.also { add(leader); addAll(entries) }
+
 private fun extensionMatcher(vararg ext: String): Predicate<String> =
     Pattern.compile("^(.+?)${ext.joinToString("|\\.", prefix = "(\\.",postfix = ")$")}").asPredicate()
 
diff --git a/kotlin/internal/defs.bzl b/kotlin/internal/defs.bzl
index 67b6bbc..ea1b774 100644
--- a/kotlin/internal/defs.bzl
+++ b/kotlin/internal/defs.bzl
@@ -25,3 +25,14 @@
         "outputs": "output jars produced by this rule. [intelij-aspect]",
     },
 )
+
+# TODO when kt_js_import is capable of unpacking the jars and making the js and js_map files available then uncomment
+# the fields below.
+KtJsInfo = provider(
+    fields = {
+        # "js": "The primary output of the library",
+        # "js_map": "The map file for the library",
+        "jar": "A jar of the library.",
+        "srcjar": "The jar containing the sources of the library",
+    },
+)
diff --git a/kotlin/internal/js/BUILD b/kotlin/internal/js/BUILD
new file mode 100644
index 0000000..9c0f139
--- /dev/null
+++ b/kotlin/internal/js/BUILD
@@ -0,0 +1,13 @@
+# 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.
diff --git a/kotlin/internal/js/impl.bzl b/kotlin/internal/js/impl.bzl
new file mode 100644
index 0000000..3b8a983
--- /dev/null
+++ b/kotlin/internal/js/impl.bzl
@@ -0,0 +1,121 @@
+# 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(
+    "//kotlin/internal:defs.bzl",
+    _KtJsInfo = "KtJsInfo",
+    _TOOLCHAIN_TYPE = "TOOLCHAIN_TYPE",
+)
+load(
+    "//kotlin/internal/common:common.bzl",
+    _common = "common",
+)
+
+# The following kt-js flags are currently not used.
+# -Xfriend-modules=<path>
+#  -output-postfix <path>     Path to file which will be added to the end of output file
+#  -output-prefix <path>      Path to file which will be added to the beginning of output file
+#  -source-map-base-dirs <path> Base directories which are used to calculate relative paths to source files in source map
+#  -source-map-embed-sources { always, never, inlining }
+#                             Embed source files into source map
+#  -source-map-prefix         Prefix for paths in a source map
+#  -Xtyped-arrays
+
+def kt_js_library_impl(ctx):
+    toolchain = ctx.toolchains[_TOOLCHAIN_TYPE]
+
+    # meta.js is merged in with the js in the builder. It is declared as it's created at the package level and not in
+    # some anonymous directory.
+    out_meta = ctx.actions.declare_file(ctx.attr.name + ".meta.js")
+
+    # The Kotlin compiler and intellij infrastructure uses jars and bytecode. The out dir contains bytecode generated by
+    # the kotlin compiler. In addition to the js and js.map file a jar is also produced.
+    out_dir = ctx.actions.declare_directory(ctx.label.name)
+
+    libraries = depset([d[_KtJsInfo].jar for d in ctx.attr.deps])
+
+    args = _common.init_args(
+        ctx,
+        "kt_js_library",
+        _common.derive_module_name(ctx),
+    )
+
+    args.add_all(
+        "--kotlin_js_passthrough_flags",
+        [
+            "-source-map",
+            "-meta-info",
+            "-module-kind",
+            ctx.attr.module_kind,
+            "-target",
+            ctx.attr.js_target,
+        ],
+    )
+
+    args.add("--output", ctx.outputs.js)
+    args.add("--kotlin_js_dir", out_dir)  # TODO
+    args.add("--kotlin_output_js_jar", ctx.outputs.jar)
+    args.add("--kotlin_output_srcjar", ctx.outputs.srcjar)
+
+    args.add_all("--kotlin_js_libraries", libraries, omit_if_empty = False)
+    args.add_all("--sources", ctx.files.srcs)
+
+    inputs, _, input_manifests = ctx.resolve_command(tools = [toolchain.kotlinbuilder, toolchain.kotlin_home])
+
+    ctx.actions.run(
+        mnemonic = "KotlinCompile",
+        inputs = depset(inputs) + libraries + ctx.files.srcs,
+        outputs = [
+            ctx.outputs.js,
+            ctx.outputs.js_map,
+            ctx.outputs.jar,
+            ctx.outputs.srcjar,
+            out_meta,
+            out_dir,
+        ],
+        executable = toolchain.kotlinbuilder.files_to_run.executable,
+        execution_requirements = {"supports-workers": "1"},
+        arguments = [args],
+        progress_message = "Compiling Kotlin to JS %s { kt: %d }" % (ctx.label, len(ctx.files.srcs)),
+        input_manifests = input_manifests,
+    )
+
+    return [
+        DefaultInfo(
+            files = depset([ctx.outputs.js, ctx.outputs.js_map]),
+            runfiles = ctx.runfiles(files = [
+                ctx.outputs.js,
+                ctx.outputs.js_map,
+            ]),
+        ),
+        _KtJsInfo(
+            jar = ctx.outputs.jar,
+            srcjar = ctx.outputs.srcjar,
+        ),
+    ]
+
+# This is just a placeholder at the moment.
+def kt_js_import_impl(ctx):
+    if len(ctx.files.jars) != 1:
+        fail("a single jar should be supplied, multiple jars not supported")
+
+    files = depset(ctx.files.jars)
+    return [
+        DefaultInfo(
+            files = files,
+        ),
+        _KtJsInfo(
+            jar = ctx.attr.jars[0],
+            srcjar = ctx.attr.srcjar,
+        ),
+    ]
diff --git a/kotlin/internal/js/js.bzl b/kotlin/internal/js/js.bzl
new file mode 100644
index 0000000..d7bdcf3
--- /dev/null
+++ b/kotlin/internal/js/js.bzl
@@ -0,0 +1,105 @@
+# 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(
+    "//kotlin/internal:defs.bzl",
+    _KtJsInfo = "KtJsInfo",
+    _TOOLCHAIN_TYPE = "TOOLCHAIN_TYPE",
+)
+load(
+    "//kotlin/internal/js:impl.bzl",
+    _kt_js_import_impl = "kt_js_import_impl",
+    _kt_js_library_impl = "kt_js_library_impl",
+)
+
+kt_js_library = rule(
+    attrs = {
+        "srcs": attr.label_list(
+            allow_empty = False,
+            allow_files = [".kt"],
+            mandatory = True,
+        ),
+        "deps": attr.label_list(
+            doc = """A list of other kotlin JS libraries.""",
+            allow_empty = True,
+            providers = [_KtJsInfo],
+        ),
+        "module_kind": attr.string(
+            doc = """The Kind of a module generated by compiler, users should stick to commonjs.""",
+            default = "commonjs",
+            values = ["umd", "commonjs", "amd", "plain"],
+        ),
+        "js_target": attr.string(
+            default = "v5",
+            values = ["v5"],
+        ),
+        "module_root": attr.string(
+            doc = "internal attriubte",
+            mandatory = False,
+        ),
+        "module_name": attr.string(
+            doc = "internal attribute",
+            mandatory = False,
+        ),
+    },
+    implementation = _kt_js_library_impl,
+    outputs = dict(
+        js = "%{name}.js",
+        js_map = "%{name}.js.map",
+        jar = "%{name}.jar",
+        srcjar = "%{name}-sources.jar",
+    ),
+    toolchains = [_TOOLCHAIN_TYPE],
+    provides = [_KtJsInfo],
+)
+
+# The macro exists to ensure compatibility with the nodejs rules, the nodejs rules process the attributes and not the
+# providers. Ideally providers would be used so the rules can pass the information along without having to have user
+# facing attributes visible.
+#   module_root: if the module_root is made settable then there is a possibility of collisions. Keeping it simple here.
+#   module_name: The require statement generated by Kotlinc-js seems to be based on the name of the jar. Unlike the jvm
+#       compiler, there is no 'module-name' flag available. So to keep things simple it's hard coded to the module name.
+def kt_js_library_macro(name, **kwargs):
+    if kwargs.get("module_root") != None:
+        fail("The module_root is an internal attribute.")
+    else:
+        kwargs["module_root"] = name + ".js"
+
+    if kwargs.get("module_name") != None:
+        fail("module_name is an internal attribute.")
+    else:
+        kwargs["module_name"] = name
+    kt_js_library(name = name, **kwargs)
+
+# TODO for Node the kotlin dependencies have to be provided via node_modules. The correct approach is to unpack the
+# the jars and make the js and js.map files available to node (via the module_root and module_name attributes?).
+kt_js_import = rule(
+    attrs = {
+        "jars": attr.label_list(
+            allow_files = [".jar"],
+            mandatory = True,
+        ),
+        "srcjar": attr.label(
+            allow_files = ["-sources.jar"],
+            mandatory = False,
+            single_file = True,
+        ),
+        "runtime_deps": attr.label_list(
+            default = [],
+            allow_files = [".jar"],
+            mandatory = False,
+        ),
+    },
+    implementation = _kt_js_import_impl,
+    provides = [_KtJsInfo],
+)
diff --git a/kotlin/internal/repositories/BUILD.com_github_jetbrains_kotlin b/kotlin/internal/repositories/BUILD.com_github_jetbrains_kotlin
index a2311f8..315a242 100644
--- a/kotlin/internal/repositories/BUILD.com_github_jetbrains_kotlin
+++ b/kotlin/internal/repositories/BUILD.com_github_jetbrains_kotlin
@@ -70,3 +70,20 @@
         "script-runtime",
     ]
 ]
+
+load("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kt_js_import")
+
+#  The Kotlin standard libraries. These should be setup in a Toolchain.
+[
+    kt_js_import(
+        name = "kotlin-%s" % art,
+        jars = ["lib/kotlin-%s.jar" % art],
+        srcjar = "lib/kotlin-%s-sources.jar" % art,
+        visibility = ["//visibility:public"],
+    )
+    for art in [
+        "jslib",
+        "test-js",
+        "stdlib-js",
+    ]
+]
diff --git a/kotlin/internal/toolchains.bzl b/kotlin/internal/toolchains.bzl
index a386d79..0d883bc 100644
--- a/kotlin/internal/toolchains.bzl
+++ b/kotlin/internal/toolchains.bzl
@@ -12,8 +12,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-load("//kotlin/internal/common:common.bzl", _common = "common")
-load("//kotlin/internal:defs.bzl", _KT_COMPILER_REPO = "KT_COMPILER_REPO", _TOOLCHAIN_TYPE = "TOOLCHAIN_TYPE")
+load(
+    "//kotlin/internal/common:common.bzl",
+    _common = "common",
+)
+load(
+    "//kotlin/internal:defs.bzl",
+    _KT_COMPILER_REPO = "KT_COMPILER_REPO",
+    _KtJsInfo = "KtJsInfo",
+    _TOOLCHAIN_TYPE = "TOOLCHAIN_TYPE",
+)
 
 """Kotlin Toolchains
 
@@ -53,6 +61,7 @@
             runtime_jars = ctx.files.jvm_runtime,
             use_ijar = False,
         ),
+        js_stdlibs = ctx.files.js_stdlibs,
     )
     return [
         platform_common.ToolchainInfo(**toolchain),
@@ -132,6 +141,16 @@
                 "1.8",
             ],
         ),
+        "js_target": attr.string(
+            default = "v5",
+            values = ["v5"],
+        ),
+        "js_stdlibs": attr.label_list(
+            default = [
+                Label("@" + _KT_COMPILER_REPO + "//:kotlin-stdlib-js"),
+            ],
+            providers = [_KtJsInfo],
+        ),
     },
     implementation = _kotlin_toolchain_impl,
     provides = [platform_common.ToolchainInfo],
diff --git a/kotlin/kotlin.bzl b/kotlin/kotlin.bzl
index 2a043de..77eb8c4 100644
--- a/kotlin/kotlin.bzl
+++ b/kotlin/kotlin.bzl
@@ -24,3 +24,10 @@
     "//kotlin/internal/jvm:android.bzl",
     "kt_android_library",
 )
+load(
+    "//kotlin/internal/js:js.bzl",
+    "kt_js_import",
+    _kt_js_library = "kt_js_library_macro",
+)
+
+kt_js_library = _kt_js_library
