Add generated API docs for TypeScript rules
PiperOrigin-RevId: 195089105
diff --git a/BUILD.bazel b/BUILD.bazel
index acb3211..baf8715 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -37,3 +37,19 @@
]),
visibility = ["//visibility:public"],
)
+
+load("@io_bazel_skydoc//skylark:skylark.bzl", "skylark_doc")
+
+skylark_doc(
+ name = "docs",
+ srcs = [
+ "//internal:build_defs.bzl",
+ "//internal:ts_repositories.bzl",
+ "//internal:ts_config.bzl",
+ "//internal/devserver:ts_devserver.bzl",
+ "//internal/karma:ts_web_test.bzl",
+ ],
+ format = "html",
+ site_root = "/rules_typescript/api",
+ strip_prefix = "internal/",
+)
diff --git a/WORKSPACE b/WORKSPACE
index 23884f2..80c2a40 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -60,3 +60,30 @@
url = "https://github.com/bazelbuild/bazel/releases/download/0.9.0/bazel-0.9.0-dist.zip",
sha256 = "efb28fed4ffcfaee653e0657f6500fc4cbac61e32104f4208da385676e76312a",
)
+
+#############################################
+# Dependencies for generating documentation #
+#############################################
+
+http_archive(
+ name = "io_bazel_rules_sass",
+ url = "https://github.com/bazelbuild/rules_sass/archive/0.0.3.zip",
+ strip_prefix = "rules_sass-0.0.3",
+ sha256 = "8fa98e7b48a5837c286a1ea254b5a5c592fced819ee9fe4fdd759768d97be868",
+)
+load("@io_bazel_rules_sass//sass:sass.bzl", "sass_repositories")
+sass_repositories()
+
+http_archive(
+ name = "bazel_skylib",
+ url = "https://github.com/bazelbuild/bazel-skylib/archive/0.3.1.zip",
+ strip_prefix = "bazel-skylib-0.3.1",
+)
+
+http_archive(
+ name = "io_bazel_skydoc",
+ url = "https://github.com/bazelbuild/skydoc/archive/0ef7695c9d70084946a3e99b89ad5a99ede79580.zip",
+ strip_prefix = "skydoc-0ef7695c9d70084946a3e99b89ad5a99ede79580",
+)
+load("@io_bazel_skydoc//skylark:skylark.bzl", "skydoc_repositories")
+skydoc_repositories()
diff --git a/defs.bzl b/defs.bzl
index 644d3c7..d5bfd61 100644
--- a/defs.bzl
+++ b/defs.bzl
@@ -28,3 +28,5 @@
ts_devserver = _ts_devserver
# TODO(alexeagle): make ts_web_test work in google3
ts_web_test = _ts_web_test
+# DO NOT ADD MORE rules here unless they appear in the generated docsite.
+# Run yarn skydoc to re-generate the docsite.
diff --git a/docs/api/build_defs.html b/docs/api/build_defs.html
new file mode 100644
index 0000000..2290c91
--- /dev/null
+++ b/docs/api/build_defs.html
@@ -0,0 +1,262 @@
+
+
+<!--
+Documentation generated by Skydoc
+-->
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width initial-scale=1" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+
+ <title>TypeScript compilation</title>
+
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700" type="text/css">
+ <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
+ <link rel="stylesheet" href="https://code.getmdl.io/1.1.1/material.green-light_blue.min.css">
+ <script defer src="https://code.getmdl.io/1.1.1/material.min.js"></script>
+ <link rel="stylesheet" href="/rules_typescript/api/main.css">
+ </head>
+ <body>
+ <div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer
+ mdl-layout--fixed-header">
+ <header class="mdl-layout__header">
+ <div class="mdl-layout__header-row">
+ <span class="mdl-layout-title">TypeScript compilation</span>
+ </div>
+ </header>
+ <div class="mdl-layout__drawer">
+ <span class="mdl-layout-title">Bazel</span>
+ <nav class="drawer-nav">
+ <ul class="drawer-nav">
+
+<li><a href="/rules_typescript/api/index.html">Overview</a></li>
+<li>
+ <a href="/rules_typescript/api/build_defs.html">TypeScript compilation</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/build_defs.html#ts_library">
+ ts_library
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_repositories.html">Install toolchain dependencies</a>
+ <ul>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_config.html">Multiple tsconfig.json files</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/ts_config.html#ts_config">
+ ts_config
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html">Simple development server</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html#ts_devserver">
+ ts_devserver
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html">Unit testing in Chrome</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html#ts_web_test">
+ ts_web_test
+ </a>
+ </li>
+ </ul>
+</li>
+
+ </ul>
+ </nav>
+ </div>
+
+ <main class="mdl-layout__content">
+ <div class="page-content">
+ <h1>TypeScript compilation</h1>
+
+<nav class="toc">
+ <h2>Rules</h2>
+ <ul>
+ <li><a href="#ts_library">ts_library</a></li>
+ </ul>
+ <h2>Macros</h2>
+ <ul>
+ <li><a href="#tsc_wrapped_tsconfig">tsc_wrapped_tsconfig</a></li>
+ </ul>
+</nav>
+ <hr>
+
+ <h2 id="tsc_wrapped_tsconfig">tsc_wrapped_tsconfig</h2>
+
+ <pre>tsc_wrapped_tsconfig(<a href="#tsc_wrapped_tsconfig.ctx">ctx</a>, <a href="#tsc_wrapped_tsconfig.files">files</a>, <a href="#tsc_wrapped_tsconfig.srcs">srcs</a>, <a href="#tsc_wrapped_tsconfig.devmode_manifest">devmode_manifest</a>, <a href="#tsc_wrapped_tsconfig.jsx_factory">jsx_factory</a>)</pre>
+
+ <p>Produce a tsconfig.json that sets options required under Bazel.</p>
+
+
+ <h3 id="tsc_wrapped_tsconfig_args">Attributes</h3>
+
+<table class="params-table">
+ <colgroup>
+ <col class="col-param" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr id="tsc_wrapped_tsconfig.ctx">
+ <td><code>ctx</code></td>
+ <td>
+ <p><code>Unknown; Required</code></p>
+
+ </td>
+ </tr>
+ <tr id="tsc_wrapped_tsconfig.files">
+ <td><code>files</code></td>
+ <td>
+ <p><code>Unknown; Required</code></p>
+
+ </td>
+ </tr>
+ <tr id="tsc_wrapped_tsconfig.srcs">
+ <td><code>srcs</code></td>
+ <td>
+ <p><code>Unknown; Required</code></p>
+
+ </td>
+ </tr>
+ <tr id="tsc_wrapped_tsconfig.devmode_manifest">
+ <td><code>devmode_manifest</code></td>
+ <td>
+ <p><code>Unknown; Optional</code></p>
+
+ </td>
+ </tr>
+ <tr id="tsc_wrapped_tsconfig.jsx_factory">
+ <td><code>jsx_factory</code></td>
+ <td>
+ <p><code>Unknown; Optional</code></p>
+
+ </td>
+ </tr>
+ </tbody>
+</table>
+ <hr>
+
+ <h2 id="ts_library">ts_library</h2>
+
+ <pre>ts_library(<a href="#ts_library.name">name</a>, <a href="#ts_library.srcs">srcs</a>, <a href="#ts_library.compiler">compiler</a>, <a href="#ts_library.internal_testing_type_check_dependencies">internal_testing_type_check_dependencies</a>, <a href="#ts_library.node_modules">node_modules</a>, <a href="#ts_library.supports_workers">supports_workers</a>, <a href="#ts_library.tsconfig">tsconfig</a>, <a href="#ts_library.tsickle_typed">tsickle_typed</a>)</pre>
+
+ <p><code>ts_library</code> type-checks and compiles a set of TypeScript sources to JavaScript.</p>
+<p>It produces declarations files (<code>.d.ts</code>) which are used for compiling downstream
+TypeScript dependencies and JavaScript for the browser and Closure compiler.</p>
+<p>The "devmode" output of <code>ts_library</code> is meant for <code>ts_web_test</code>, <code>ts_devserver</code>,
+and other rules which can provide a fast development round-trip at large scale.
+The intention is that the 50%ile dev round-trip should never exceed 2s, even for
+a very large project.</p>
+<p>The "prodmode" output of <code>ts_library</code> is written as <code>*.closure.js</code> because we
+originally created this to target the Closure Compiler. Any optimizing bundler
+can make use of this output to create highly optimized applications, but the
+development experience is much slower.</p>
+
+
+ <h3 id="ts_library_args">Attributes</h3>
+
+<table class="params-table">
+ <colgroup>
+ <col class="col-param" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr id="ts_library.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>A unique name for this rule.</p>
+ </td>
+ </tr>
+ <tr id="ts_library.srcs">
+ <td><code>srcs</code></td>
+ <td>
+ <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Required</code></p>
+ <p>The TypeScript source files to compile.</p>
+ </td>
+ </tr>
+ <tr id="ts_library.compiler">
+ <td><code>compiler</code></td>
+ <td>
+ <p><code><a href="https://bazel.build/docs/build-ref.html#labels">Label</a>; Optional; Default is //internal:tsc_wrapped_bin</code></p>
+ <p>Advanced users only.
+ 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 <code>ngc</code>.</p>
+ </td>
+ </tr>
+ <tr id="ts_library.internal_testing_type_check_dependencies">
+ <td><code>internal_testing_type_check_dependencies</code></td>
+ <td>
+ <p><code>Boolean; Optional; Default is False</code></p>
+ <p>Testing only, whether to type check inputs that aren't srcs.</p>
+ </td>
+ </tr>
+ <tr id="ts_library.node_modules">
+ <td><code>node_modules</code></td>
+ <td>
+ <p><code><a href="https://bazel.build/docs/build-ref.html#labels">Label</a>; Optional; Default is @//:node_modules</code></p>
+
+ </td>
+ </tr>
+ <tr id="ts_library.supports_workers">
+ <td><code>supports_workers</code></td>
+ <td>
+ <p><code>Boolean; Optional; Default is True</code></p>
+ <p>Advanced users 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.</p>
+ </td>
+ </tr>
+ <tr id="ts_library.tsconfig">
+ <td><code>tsconfig</code></td>
+ <td>
+ <p><code><a href="https://bazel.build/docs/build-ref.html#labels">Label</a>; Optional</code></p>
+ <p>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 <code>target</code> and <code>module</code>.</p>
+ </td>
+ </tr>
+ <tr id="ts_library.tsickle_typed">
+ <td><code>tsickle_typed</code></td>
+ <td>
+ <p><code>Boolean; Optional; Default is True</code></p>
+
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+
+ </div>
+
+ <footer class="mdl-mini-footer">
+ <div class="mdl-mini-footer__left-section">
+ <div class="mdl-logo">Bazel</div>
+ <ul class="mdl-mini-footer__link-list">
+ <li><a href="https://bazel.build">Home</a></li>
+ <li><a href="https://github.com/bazelbuild">GitHub</a></li>
+ </ul>
+ </div>
+ </footer>
+ </main>
+ </div>
+ </body>
+</html>
diff --git a/docs/api/devserver/ts_devserver.html b/docs/api/devserver/ts_devserver.html
new file mode 100644
index 0000000..d375664
--- /dev/null
+++ b/docs/api/devserver/ts_devserver.html
@@ -0,0 +1,214 @@
+
+
+<!--
+Documentation generated by Skydoc
+-->
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width initial-scale=1" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+
+ <title>Simple development server</title>
+
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700" type="text/css">
+ <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
+ <link rel="stylesheet" href="https://code.getmdl.io/1.1.1/material.green-light_blue.min.css">
+ <script defer src="https://code.getmdl.io/1.1.1/material.min.js"></script>
+ <link rel="stylesheet" href="/rules_typescript/api/main.css">
+ </head>
+ <body>
+ <div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer
+ mdl-layout--fixed-header">
+ <header class="mdl-layout__header">
+ <div class="mdl-layout__header-row">
+ <span class="mdl-layout-title">Simple development server</span>
+ </div>
+ </header>
+ <div class="mdl-layout__drawer">
+ <span class="mdl-layout-title">Bazel</span>
+ <nav class="drawer-nav">
+ <ul class="drawer-nav">
+
+<li><a href="/rules_typescript/api/index.html">Overview</a></li>
+<li>
+ <a href="/rules_typescript/api/build_defs.html">TypeScript compilation</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/build_defs.html#ts_library">
+ ts_library
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_repositories.html">Install toolchain dependencies</a>
+ <ul>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_config.html">Multiple tsconfig.json files</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/ts_config.html#ts_config">
+ ts_config
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html">Simple development server</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html#ts_devserver">
+ ts_devserver
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html">Unit testing in Chrome</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html#ts_web_test">
+ ts_web_test
+ </a>
+ </li>
+ </ul>
+</li>
+
+ </ul>
+ </nav>
+ </div>
+
+ <main class="mdl-layout__content">
+ <div class="page-content">
+ <h1>Simple development server</h1>
+
+<nav class="toc">
+ <h2>Rules</h2>
+ <ul>
+ <li><a href="#ts_devserver">ts_devserver</a></li>
+ </ul>
+ <h2>Macros</h2>
+ <ul>
+ <li><a href="#ts_devserver_macro">ts_devserver_macro</a></li>
+ </ul>
+</nav>
+ <hr>
+
+ <h2 id="ts_devserver_macro">ts_devserver_macro</h2>
+
+ <pre>ts_devserver_macro(<a href="#ts_devserver_macro.tags">tags</a>)</pre>
+
+ <p>This macro re-exposes the <code>ts_devserver</code> rule with some extra tags so that
+it behaves correctly under ibazel.
+This is re-exported in <code>//:defs.bzl</code> as <code>ts_devserver</code> so if you load the rule
+from there, you actually get this macro.</p>
+
+
+ <h3 id="ts_devserver_macro_args">Attributes</h3>
+
+<table class="params-table">
+ <colgroup>
+ <col class="col-param" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr id="ts_devserver_macro.tags">
+ <td><code>tags</code></td>
+ <td>
+ <p><code>List of strings; Optional</code></p>
+ <p>standard Bazel tags, this macro adds a couple for ibazel</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+ <hr>
+
+ <h2 id="ts_devserver">ts_devserver</h2>
+
+ <pre>ts_devserver(<a href="#ts_devserver.name">name</a>, <a href="#ts_devserver.deps">deps</a>, <a href="#ts_devserver.data">data</a>, <a href="#ts_devserver.entry_module">entry_module</a>, <a href="#ts_devserver.scripts">scripts</a>, <a href="#ts_devserver.serving_path">serving_path</a>, <a href="#ts_devserver.static_files">static_files</a>)</pre>
+
+ <p>ts_devserver is a simple development server intended for a quick "getting started" experience.</p>
+<p>Additional documentation at <a href="https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel">https://github.com/alexeagle/angular-bazel-example/wiki/Running-a-devserver-under-Bazel</a></p>
+
+
+ <h3 id="ts_devserver_args">Attributes</h3>
+
+<table class="params-table">
+ <colgroup>
+ <col class="col-param" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr id="ts_devserver.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>A unique name for this rule.</p>
+ </td>
+ </tr>
+ <tr id="ts_devserver.deps">
+ <td><code>deps</code></td>
+ <td>
+ <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
+ <p>Targets that produce JavaScript, such as <code>ts_library</code></p>
+ </td>
+ </tr>
+ <tr id="ts_devserver.data">
+ <td><code>data</code></td>
+ <td>
+ <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
+ <p>Runtime dependencies</p>
+ </td>
+ </tr>
+ <tr id="ts_devserver.entry_module">
+ <td><code>entry_module</code></td>
+ <td>
+ <p><code>String; Optional; Default is ''</code></p>
+ <p>The entry<em>module should be the AMD module name of the entry module such as `"<em>_main</em></em>/src/index"<code>ts_devserver concats the following snippet after the bundle to load the application:</code>require(["entry_module"]);`</p>
+ </td>
+ </tr>
+ <tr id="ts_devserver.scripts">
+ <td><code>scripts</code></td>
+ <td>
+ <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
+ <p>User scripts to include in the JS bundle before the application sources</p>
+ </td>
+ </tr>
+ <tr id="ts_devserver.serving_path">
+ <td><code>serving_path</code></td>
+ <td>
+ <p><code>String; Optional; Default is ''</code></p>
+ <p>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</p>
+ </td>
+ </tr>
+ <tr id="ts_devserver.static_files">
+ <td><code>static_files</code></td>
+ <td>
+ <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
+ <p>Arbitrary files which to be served, such as index.html</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+
+ </div>
+
+ <footer class="mdl-mini-footer">
+ <div class="mdl-mini-footer__left-section">
+ <div class="mdl-logo">Bazel</div>
+ <ul class="mdl-mini-footer__link-list">
+ <li><a href="https://bazel.build">Home</a></li>
+ <li><a href="https://github.com/bazelbuild">GitHub</a></li>
+ </ul>
+ </div>
+ </footer>
+ </main>
+ </div>
+ </body>
+</html>
diff --git a/docs/api/index.html b/docs/api/index.html
new file mode 100644
index 0000000..006d0e8
--- /dev/null
+++ b/docs/api/index.html
@@ -0,0 +1,294 @@
+
+
+<!--
+Documentation generated by Skydoc
+-->
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width initial-scale=1" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+
+ <title>Overview</title>
+
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700" type="text/css">
+ <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
+ <link rel="stylesheet" href="https://code.getmdl.io/1.1.1/material.green-light_blue.min.css">
+ <script defer src="https://code.getmdl.io/1.1.1/material.min.js"></script>
+ <link rel="stylesheet" href="/rules_typescript/api/main.css">
+ </head>
+ <body>
+ <div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer
+ mdl-layout--fixed-header">
+ <header class="mdl-layout__header">
+ <div class="mdl-layout__header-row">
+ <span class="mdl-layout-title">Overview</span>
+ </div>
+ </header>
+ <div class="mdl-layout__drawer">
+ <span class="mdl-layout-title">Bazel</span>
+ <nav class="drawer-nav">
+ <ul class="drawer-nav">
+
+<li><a href="/rules_typescript/api/index.html">Overview</a></li>
+<li>
+ <a href="/rules_typescript/api/build_defs.html">TypeScript compilation</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/build_defs.html#ts_library">
+ ts_library
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_repositories.html">Install toolchain dependencies</a>
+ <ul>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_config.html">Multiple tsconfig.json files</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/ts_config.html#ts_config">
+ ts_config
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html">Simple development server</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html#ts_devserver">
+ ts_devserver
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html">Unit testing in Chrome</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html#ts_web_test">
+ ts_web_test
+ </a>
+ </li>
+ </ul>
+</li>
+
+ </ul>
+ </nav>
+ </div>
+
+ <main class="mdl-layout__content">
+ <div class="page-content">
+<h1>Overview</h1>
+
+
+<nav class="toc">
+ <h2>Rule sets</h2>
+ <ul>
+ <li><a href="#build_defs">TypeScript compilation</a></li>
+ <li><a href="#ts_repositories">Install toolchain dependencies</a></li>
+ <li><a href="#ts_config">Multiple tsconfig.json files</a></li>
+ <li><a href="#ts_devserver">Simple development server</a></li>
+ <li><a href="#ts_web_test">Unit testing in Chrome</a></li>
+ </ul>
+</nav>
+
+<h2><a href="/rules_typescript/api/build_defs.html" id="build_defs">TypeScript compilation</a></h2>
+
+<h3>Rules</h3>
+<table class="overview-table">
+ <colgroup>
+ <col class="col-name" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <a href="/rules_typescript/api/build_defs.html#ts_library">
+ <code>ts_library</code>
+ </a>
+ </td>
+ <td>
+ <p><code>ts_library</code> type-checks and compiles a set of TypeScript sources to JavaScript.</p>
+
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h3>Macros</h3>
+<table class="overview-table">
+ <colgroup>
+ <col class="col-name" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <a href="/rules_typescript/api/build_defs.html#tsc_wrapped_tsconfig">
+ <code>tsc_wrapped_tsconfig</code>
+ </a>
+ </td>
+ <td>
+ <p>Produce a tsconfig.json that sets options required under Bazel.</p>
+
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2><a href="/rules_typescript/api/ts_repositories.html" id="ts_repositories">Install toolchain dependencies</a></h2>
+
+<h3>Macros</h3>
+<table class="overview-table">
+ <colgroup>
+ <col class="col-name" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <a href="/rules_typescript/api/ts_repositories.html#ts_setup_workspace">
+ <code>ts_setup_workspace</code>
+ </a>
+ </td>
+ <td>
+ <p>This repository rule should be called from your WORKSPACE file.
+It creates some additional Bazel external repositories that are used internally
+by the TypeScript rules.</p>
+
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2><a href="/rules_typescript/api/ts_config.html" id="ts_config">Multiple tsconfig.json files</a></h2>
+
+<h3>Rules</h3>
+<table class="overview-table">
+ <colgroup>
+ <col class="col-name" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <a href="/rules_typescript/api/ts_config.html#ts_config">
+ <code>ts_config</code>
+ </a>
+ </td>
+ <td>
+ <p>Allows a tsconfig.json file to extend another file.</p>
+
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2><a href="/rules_typescript/api/devserver/ts_devserver.html" id="ts_devserver">Simple development server</a></h2>
+
+<h3>Rules</h3>
+<table class="overview-table">
+ <colgroup>
+ <col class="col-name" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html#ts_devserver">
+ <code>ts_devserver</code>
+ </a>
+ </td>
+ <td>
+ <p>ts_devserver is a simple development server intended for a quick "getting started" experience.</p>
+
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h3>Macros</h3>
+<table class="overview-table">
+ <colgroup>
+ <col class="col-name" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html#ts_devserver_macro">
+ <code>ts_devserver_macro</code>
+ </a>
+ </td>
+ <td>
+ <p>This macro re-exposes the <code>ts_devserver</code> rule with some extra tags so that
+it behaves correctly under ibazel.
+This is re-exported in <code>//:defs.bzl</code> as <code>ts_devserver</code> so if you load the rule
+from there, you actually get this macro.</p>
+
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2><a href="/rules_typescript/api/karma/ts_web_test.html" id="ts_web_test">Unit testing in Chrome</a></h2>
+
+<h3>Rules</h3>
+<table class="overview-table">
+ <colgroup>
+ <col class="col-name" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <a href="/rules_typescript/api/karma/ts_web_test.html#ts_web_test">
+ <code>ts_web_test</code>
+ </a>
+ </td>
+ <td>
+
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h3>Macros</h3>
+<table class="overview-table">
+ <colgroup>
+ <col class="col-name" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr>
+ <td>
+ <a href="/rules_typescript/api/karma/ts_web_test.html#ts_web_test_macro">
+ <code>ts_web_test_macro</code>
+ </a>
+ </td>
+ <td>
+ <p>This macro re-exposes the <code>ts_web_test</code> rule with some extra tags so that
+it behaves correctly under ibazel.
+This is re-exported in <code>//:defs.bzl</code> as <code>ts_web_test</code> so if you load the rule
+from there, you actually get this macro.</p>
+
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+
+ </div>
+
+ <footer class="mdl-mini-footer">
+ <div class="mdl-mini-footer__left-section">
+ <div class="mdl-logo">Bazel</div>
+ <ul class="mdl-mini-footer__link-list">
+ <li><a href="https://bazel.build">Home</a></li>
+ <li><a href="https://github.com/bazelbuild">GitHub</a></li>
+ </ul>
+ </div>
+ </footer>
+ </main>
+ </div>
+ </body>
+</html>
diff --git a/docs/api/karma/ts_web_test.html b/docs/api/karma/ts_web_test.html
new file mode 100644
index 0000000..2c1d5f0
--- /dev/null
+++ b/docs/api/karma/ts_web_test.html
@@ -0,0 +1,206 @@
+
+
+<!--
+Documentation generated by Skydoc
+-->
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width initial-scale=1" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+
+ <title>Unit testing in Chrome</title>
+
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700" type="text/css">
+ <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
+ <link rel="stylesheet" href="https://code.getmdl.io/1.1.1/material.green-light_blue.min.css">
+ <script defer src="https://code.getmdl.io/1.1.1/material.min.js"></script>
+ <link rel="stylesheet" href="/rules_typescript/api/main.css">
+ </head>
+ <body>
+ <div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer
+ mdl-layout--fixed-header">
+ <header class="mdl-layout__header">
+ <div class="mdl-layout__header-row">
+ <span class="mdl-layout-title">Unit testing in Chrome</span>
+ </div>
+ </header>
+ <div class="mdl-layout__drawer">
+ <span class="mdl-layout-title">Bazel</span>
+ <nav class="drawer-nav">
+ <ul class="drawer-nav">
+
+<li><a href="/rules_typescript/api/index.html">Overview</a></li>
+<li>
+ <a href="/rules_typescript/api/build_defs.html">TypeScript compilation</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/build_defs.html#ts_library">
+ ts_library
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_repositories.html">Install toolchain dependencies</a>
+ <ul>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_config.html">Multiple tsconfig.json files</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/ts_config.html#ts_config">
+ ts_config
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html">Simple development server</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html#ts_devserver">
+ ts_devserver
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html">Unit testing in Chrome</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html#ts_web_test">
+ ts_web_test
+ </a>
+ </li>
+ </ul>
+</li>
+
+ </ul>
+ </nav>
+ </div>
+
+ <main class="mdl-layout__content">
+ <div class="page-content">
+ <h1>Unit testing in Chrome</h1>
+
+<nav class="toc">
+ <h2>Rules</h2>
+ <ul>
+ <li><a href="#ts_web_test">ts_web_test</a></li>
+ </ul>
+ <h2>Macros</h2>
+ <ul>
+ <li><a href="#ts_web_test_macro">ts_web_test_macro</a></li>
+ </ul>
+</nav>
+ <hr>
+
+ <h2 id="ts_web_test_macro">ts_web_test_macro</h2>
+
+ <pre>ts_web_test_macro(<a href="#ts_web_test_macro.tags">tags</a>, <a href="#ts_web_test_macro.data">data</a>)</pre>
+
+ <p>This macro re-exposes the <code>ts_web_test</code> rule with some extra tags so that
+it behaves correctly under ibazel.
+This is re-exported in <code>//:defs.bzl</code> as <code>ts_web_test</code> so if you load the rule
+from there, you actually get this macro.</p>
+
+
+ <h3 id="ts_web_test_macro_args">Attributes</h3>
+
+<table class="params-table">
+ <colgroup>
+ <col class="col-param" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr id="ts_web_test_macro.tags">
+ <td><code>tags</code></td>
+ <td>
+ <p><code>List of strings; Optional</code></p>
+ <p>standard Bazel tags, this macro adds a couple for ibazel</p>
+ </td>
+ </tr>
+ <tr id="ts_web_test_macro.data">
+ <td><code>data</code></td>
+ <td>
+ <p><code>List of strings; Optional</code></p>
+ <p>runtime dependencies</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+ <hr>
+
+ <h2 id="ts_web_test">ts_web_test</h2>
+
+ <pre>ts_web_test(<a href="#ts_web_test.name">name</a>, <a href="#ts_web_test.deps">deps</a>, <a href="#ts_web_test.data">data</a>, <a href="#ts_web_test.srcs">srcs</a>, <a href="#ts_web_test.bootstrap">bootstrap</a>)</pre>
+
+
+
+ <h3 id="ts_web_test_args">Attributes</h3>
+
+<table class="params-table">
+ <colgroup>
+ <col class="col-param" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr id="ts_web_test.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>A unique name for this rule.</p>
+ </td>
+ </tr>
+ <tr id="ts_web_test.deps">
+ <td><code>deps</code></td>
+ <td>
+ <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</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 <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
+ <p>Runtime dependencies</p>
+ </td>
+ </tr>
+ <tr id="ts_web_test.srcs">
+ <td><code>srcs</code></td>
+ <td>
+ <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</code></p>
+ <p>JavaScript source files</p>
+ </td>
+ </tr>
+ <tr id="ts_web_test.bootstrap">
+ <td><code>bootstrap</code></td>
+ <td>
+ <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Optional; Default is []</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>
+ </tbody>
+</table>
+
+
+ </div>
+
+ <footer class="mdl-mini-footer">
+ <div class="mdl-mini-footer__left-section">
+ <div class="mdl-logo">Bazel</div>
+ <ul class="mdl-mini-footer__link-list">
+ <li><a href="https://bazel.build">Home</a></li>
+ <li><a href="https://github.com/bazelbuild">GitHub</a></li>
+ </ul>
+ </div>
+ </footer>
+ </main>
+ </div>
+ </body>
+</html>
diff --git a/docs/api/main.css b/docs/api/main.css
new file mode 100755
index 0000000..1b2ce72
--- /dev/null
+++ b/docs/api/main.css
@@ -0,0 +1,3 @@
+body{background-color:#fafafa}pre,code{font-family:'Liberation Mono', Consolas, Monaco, 'Andale Mono', monospace}pre{background-color:#eee;padding:20px;overflow-x:auto;word-wrap:normal}pre code{overflow-wrap:normal;white-space:pre}code{display:inline-block;font-size:90%;white-space:pre-wrap}.mdl-layout__drawer{background-color:#fff}.mdl-layout__drawer .mdl-layout-title{border-bottom:1px solid #e0e0e0;padding-left:24px}.drawer-nav ul{list-style:none;padding-left:0}.drawer-nav ul li{display:block;padding:0}.drawer-nav ul li ul li a{padding-left:44px;font-weight:400}.drawer-nav ul li a{display:block;flex-shrink:0;padding:15px 0 15px 22px;margin:0;font-weight:600;color:#757575;line-height:1em;text-decoration:none;cursor:pointer}.drawer-nav ul li a:active,.drawer-nav ul li a:hover{background-color:#f0f0f0}.drawer-nav ul li.active a{color:#4caf50;font-weight:500}h1.page-title{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}p.lead{font-size:20px;line-height:32px}table{border-collapse:collapse;border-spacing:0;background-color:#fff;table-layout:auto}table thead th{background-color:#fafafa;border:1px solid #eee;color:#757575;padding:12px 12px 12px 24px;vertical-align:top}table tbody td{border:1px solid #eee;padding:12px 12px 12px 24px;vertical-align:top}table.params-table{width:100%}table.params-table col.col-param{width:25%}table.params-table col.col-description{width:75%}table.overview-table{width:100%}table.overview-table col.col-name{width:25%}table.overview-table col.col-description{width:75%}table.overview-table td p{margin:0}hr{margin-top:40px;margin-bottom:40px}nav.toc{border-left:5px solid #4caf50;padding-left:20px;margin-bottom:48px}nav.toc h1,nav.toc h2{font-size:15px;line-height:16px;padding-bottom:12px;margin-bottom:0;font-weight:400;color:#757575}nav.toc ul{list-style:none;margin-top:0;padding-left:0}nav.toc ul li{font-size:20px;line-height:40px}nav.toc ul li a{color:#4caf50}.page-content{margin-left:auto;margin-right:auto;padding-top:60px;padding-bottom:60px;width:760px}.page-content a{text-decoration:none}.page-content h1{font-size:34px;font-weight:400;line-height:40px;margin-bottom:30px;color:#4caf50}.page-content h2{font-size:24px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}.page-content h3{font-size:20px;font-weight:400;line-height:32px;margin-bottom:30px;color:#4caf50}@media (max-width: 768px){.page-content{width:360px}}@media (min-width: 768px){.page-content{width:760px}}@media (min-width: 1476px){.page-content{width:1160px}}.mdl-mini-footer{padding-left:40px}
+
+/*# sourceMappingURL=main.css.map */
\ No newline at end of file
diff --git a/docs/api/ts_config.html b/docs/api/ts_config.html
new file mode 100644
index 0000000..a454867
--- /dev/null
+++ b/docs/api/ts_config.html
@@ -0,0 +1,155 @@
+
+
+<!--
+Documentation generated by Skydoc
+-->
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width initial-scale=1" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+
+ <title>Multiple tsconfig.json files</title>
+
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700" type="text/css">
+ <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
+ <link rel="stylesheet" href="https://code.getmdl.io/1.1.1/material.green-light_blue.min.css">
+ <script defer src="https://code.getmdl.io/1.1.1/material.min.js"></script>
+ <link rel="stylesheet" href="/rules_typescript/api/main.css">
+ </head>
+ <body>
+ <div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer
+ mdl-layout--fixed-header">
+ <header class="mdl-layout__header">
+ <div class="mdl-layout__header-row">
+ <span class="mdl-layout-title">Multiple tsconfig.json files</span>
+ </div>
+ </header>
+ <div class="mdl-layout__drawer">
+ <span class="mdl-layout-title">Bazel</span>
+ <nav class="drawer-nav">
+ <ul class="drawer-nav">
+
+<li><a href="/rules_typescript/api/index.html">Overview</a></li>
+<li>
+ <a href="/rules_typescript/api/build_defs.html">TypeScript compilation</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/build_defs.html#ts_library">
+ ts_library
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_repositories.html">Install toolchain dependencies</a>
+ <ul>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_config.html">Multiple tsconfig.json files</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/ts_config.html#ts_config">
+ ts_config
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html">Simple development server</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html#ts_devserver">
+ ts_devserver
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html">Unit testing in Chrome</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html#ts_web_test">
+ ts_web_test
+ </a>
+ </li>
+ </ul>
+</li>
+
+ </ul>
+ </nav>
+ </div>
+
+ <main class="mdl-layout__content">
+ <div class="page-content">
+ <h1>Multiple tsconfig.json files</h1>
+
+<nav class="toc">
+ <h2>Rules</h2>
+ <ul>
+ <li><a href="#ts_config">ts_config</a></li>
+ </ul>
+</nav>
+ <hr>
+
+ <h2 id="ts_config">ts_config</h2>
+
+ <pre>ts_config(<a href="#ts_config.name">name</a>, <a href="#ts_config.deps">deps</a>, <a href="#ts_config.src">src</a>)</pre>
+
+ <p>Allows a tsconfig.json file to extend another file.</p>
+<p>Normally, you just give a single <code>tsconfig.json</code> file as the tsconfig attribute
+of a <code>ts_library</code> rule. However, if your <code>tsconfig.json</code> uses the <code>extends</code>
+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.</p>
+
+
+ <h3 id="ts_config_args">Attributes</h3>
+
+<table class="params-table">
+ <colgroup>
+ <col class="col-param" />
+ <col class="col-description" />
+ </colgroup>
+ <tbody>
+ <tr id="ts_config.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>A unique name for this rule.</p>
+ </td>
+ </tr>
+ <tr id="ts_config.deps">
+ <td><code>deps</code></td>
+ <td>
+ <p><code>List of <a href="https://bazel.build/docs/build-ref.html#labels">labels</a>; Required</code></p>
+ <p>Additional tsconfig.json files referenced via extends</p>
+ </td>
+ </tr>
+ <tr id="ts_config.src">
+ <td><code>src</code></td>
+ <td>
+ <p><code><a href="https://bazel.build/docs/build-ref.html#labels">Label</a>; Required</code></p>
+ <p>The tsconfig.json file passed to the TypeScript compiler</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+
+ </div>
+
+ <footer class="mdl-mini-footer">
+ <div class="mdl-mini-footer__left-section">
+ <div class="mdl-logo">Bazel</div>
+ <ul class="mdl-mini-footer__link-list">
+ <li><a href="https://bazel.build">Home</a></li>
+ <li><a href="https://github.com/bazelbuild">GitHub</a></li>
+ </ul>
+ </div>
+ </footer>
+ </main>
+ </div>
+ </body>
+</html>
diff --git a/docs/api/ts_repositories.html b/docs/api/ts_repositories.html
new file mode 100644
index 0000000..014bf33
--- /dev/null
+++ b/docs/api/ts_repositories.html
@@ -0,0 +1,122 @@
+
+
+<!--
+Documentation generated by Skydoc
+-->
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width initial-scale=1" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+
+ <title>Install toolchain dependencies</title>
+
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700" type="text/css">
+ <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
+ <link rel="stylesheet" href="https://code.getmdl.io/1.1.1/material.green-light_blue.min.css">
+ <script defer src="https://code.getmdl.io/1.1.1/material.min.js"></script>
+ <link rel="stylesheet" href="/rules_typescript/api/main.css">
+ </head>
+ <body>
+ <div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer
+ mdl-layout--fixed-header">
+ <header class="mdl-layout__header">
+ <div class="mdl-layout__header-row">
+ <span class="mdl-layout-title">Install toolchain dependencies</span>
+ </div>
+ </header>
+ <div class="mdl-layout__drawer">
+ <span class="mdl-layout-title">Bazel</span>
+ <nav class="drawer-nav">
+ <ul class="drawer-nav">
+
+<li><a href="/rules_typescript/api/index.html">Overview</a></li>
+<li>
+ <a href="/rules_typescript/api/build_defs.html">TypeScript compilation</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/build_defs.html#ts_library">
+ ts_library
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_repositories.html">Install toolchain dependencies</a>
+ <ul>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/ts_config.html">Multiple tsconfig.json files</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/ts_config.html#ts_config">
+ ts_config
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html">Simple development server</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/devserver/ts_devserver.html#ts_devserver">
+ ts_devserver
+ </a>
+ </li>
+ </ul>
+</li>
+<li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html">Unit testing in Chrome</a>
+ <ul>
+ <li>
+ <a href="/rules_typescript/api/karma/ts_web_test.html#ts_web_test">
+ ts_web_test
+ </a>
+ </li>
+ </ul>
+</li>
+
+ </ul>
+ </nav>
+ </div>
+
+ <main class="mdl-layout__content">
+ <div class="page-content">
+ <h1>Install toolchain dependencies</h1>
+
+<nav class="toc">
+ <h2>Macros</h2>
+ <ul>
+ <li><a href="#ts_setup_workspace">ts_setup_workspace</a></li>
+ </ul>
+</nav>
+ <hr>
+
+ <h2 id="ts_setup_workspace">ts_setup_workspace</h2>
+
+ <pre>ts_setup_workspace()</pre>
+
+ <p>This repository rule should be called from your WORKSPACE file.
+It creates some additional Bazel external repositories that are used internally
+by the TypeScript rules.</p>
+
+
+
+
+ </div>
+
+ <footer class="mdl-mini-footer">
+ <div class="mdl-mini-footer__left-section">
+ <div class="mdl-logo">Bazel</div>
+ <ul class="mdl-mini-footer__link-list">
+ <li><a href="https://bazel.build">Home</a></li>
+ <li><a href="https://github.com/bazelbuild">GitHub</a></li>
+ </ul>
+ </div>
+ </footer>
+ </main>
+ </div>
+ </body>
+</html>
diff --git a/internal/BUILD.bazel b/internal/BUILD.bazel
index d2d76af..e17ec48 100644
--- a/internal/BUILD.bazel
+++ b/internal/BUILD.bazel
@@ -16,7 +16,11 @@
package(default_visibility = ["//visibility:public"])
-exports_files(["worker_protocol.proto"])
+exports_files([
+ "worker_protocol.proto",
+ # Exported to be consumed for generating skydoc.
+ "build_defs.bzl", "ts_config.bzl", "ts_repositories.bzl",
+])
load("//internal:build_defs.bzl", "ts_library")
load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "jasmine_node_test")
diff --git a/internal/build_defs.bzl b/internal/build_defs.bzl
index 673cc50..359bd38 100644
--- a/internal/build_defs.bzl
+++ b/internal/build_defs.bzl
@@ -12,12 +12,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-"""TypeScript rules.
-"""
+"TypeScript compilation"
+
# pylint: disable=unused-argument
# pylint: disable=missing-docstring
load(":common/compilation.bzl", "COMMON_ATTRIBUTES", "compile_ts", "ts_providers_dict_to_struct")
-load(":executables.bzl", "get_tsc")
load(":common/tsconfig.bzl", "create_tsconfig")
load(":ts_config.bzl", "TsConfigInfo")
@@ -158,27 +157,35 @@
ts_library = rule(
_ts_library_impl,
attrs = dict(COMMON_ATTRIBUTES, **{
- "srcs":
- attr.label_list(
- allow_files=FileType([
- ".ts",
- ".tsx",
- ]),
- mandatory=True,),
+ "srcs": attr.label_list(
+ doc = "The TypeScript source files to compile.",
+ allow_files = [".ts", ".tsx"],
+ mandatory = 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(allow_files = True, single_file = True),
- "compiler":
- attr.label(
- default=get_tsc(),
- single_file=False,
- allow_files=True,
- executable=True,
- cfg="host"),
- "supports_workers": attr.bool(default = True),
+ "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`.""",
+ allow_files = True, single_file = True),
+ "compiler": attr.label(
+ doc = """Intended for internal use only.
+ 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`.""",
+ default = Label("//internal:tsc_wrapped_bin"),
+ single_file = False,
+ allow_files = True,
+ executable = True,
+ cfg = "host"),
+ "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),
"tsickle_typed": attr.bool(default = True),
"internal_testing_type_check_dependencies": attr.bool(default = False, doc="Testing only, whether to type check inputs that aren't srcs."),
"_tsc_wrapped_deps": attr.label(default = Label("@build_bazel_rules_typescript_tsc_wrapped_deps//:node_modules")),
@@ -191,3 +198,9 @@
"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.
+"""
diff --git a/internal/devserver/BUILD b/internal/devserver/BUILD
index 34e9fc1..ed145a7 100644
--- a/internal/devserver/BUILD
+++ b/internal/devserver/BUILD
@@ -18,6 +18,11 @@
"//third_party/bazel_rules/rules_typescript/internal:__subpackages__",
])
+exports_files([
+ # Exported to be consumed for generating skydoc.
+ "ts_devserver.bzl",
+])
+
filegroup(
name = "source_tree",
srcs = [
diff --git a/internal/devserver/ts_devserver.bzl b/internal/devserver/ts_devserver.bzl
index 4cceb1a..ba60c33 100644
--- a/internal/devserver/ts_devserver.bzl
+++ b/internal/devserver/ts_devserver.bzl
@@ -12,10 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-"""The ts_devserver rule brings up our "getting started" devserver.
-
-See the README.md.
-"""
+"Simple development server"
load("@build_bazel_rules_nodejs//internal:node.bzl",
"sources_aspect",
@@ -102,15 +99,27 @@
ts_devserver = rule(
implementation = _ts_devserver,
attrs = {
- "deps": attr.label_list(allow_files = True, aspects = [sources_aspect]),
- "serving_path": attr.string(),
- "data": attr.label_list(allow_files = True, cfg = "data"),
- "static_files": attr.label_list(allow_files = True),
- # User scripts for the devserver to concat before the source files
- "scripts": attr.label_list(allow_files = True),
- # The entry_module should be the AMD module name of the entry module such as "__main__/src/index"
- # Devserver concats the following snippet after the bundle to load the application: require(["entry_module"]);
- "entry_module": attr.string(),
+ "deps": attr.label_list(
+ doc = "Targets that produce JavaScript, such as `ts_library`",
+ allow_files = True, aspects = [sources_aspect]),
+ "serving_path": attr.string(
+ 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"""),
+ "data": attr.label_list(
+ doc = "Dependencies that can be require'd while the server is running",
+ allow_files = True, cfg = "data"),
+ "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),
+ "scripts": attr.label_list(
+ doc = "User scripts to include in the JS bundle before the application sources",
+ allow_files = [".js"]),
+ "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"]);`
+ """),
"_requirejs_script": attr.label(allow_files = True, single_file = True, default = Label("@build_bazel_rules_typescript_devserver_deps//:node_modules/requirejs/require.js")),
"_devserver": attr.label(
default = Label("//internal/devserver/main"),
@@ -124,8 +133,24 @@
},
executable = True,
)
+"""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(tags = [], **kwargs):
+ """ibazel wrapper for `ts_devserver`
+
+ This macro re-exposes the `ts_devserver` rule with some extra tags so that
+ it behaves correctly under ibazel.
+
+ This is re-exported in `//:defs.bzl` as `ts_devserver` so if you load the rule
+ from there, you actually get this macro.
+
+ Args:
+ tags: standard Bazel tags, this macro adds a couple for ibazel
+ **kwargs: passed through to `ts_devserver`
+ """
ts_devserver(
# Users don't need to know that these tags are required to run under ibazel
tags = tags + [
diff --git a/internal/executables.bzl b/internal/executables.bzl
deleted file mode 100644
index e83baa2..0000000
--- a/internal/executables.bzl
+++ /dev/null
@@ -1,19 +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 compiler label.
-"""
-
-def get_tsc():
- return Label("//internal:tsc_wrapped_bin")
diff --git a/internal/karma/BUILD.bazel b/internal/karma/BUILD.bazel
index 07e5c52..9d36fed 100644
--- a/internal/karma/BUILD.bazel
+++ b/internal/karma/BUILD.bazel
@@ -1,6 +1,11 @@
package(default_visibility=["//visibility:public"])
-exports_files(["test-main.js", "karma.conf.js"])
+exports_files([
+ "test-main.js",
+ "karma.conf.js",
+ # Exported to be consumed for generating skydoc.
+ "ts_web_test.bzl",
+])
load("@build_bazel_rules_typescript//:defs.bzl", "ts_library")
diff --git a/internal/karma/ts_web_test.bzl b/internal/karma/ts_web_test.bzl
index bf0d6ce..6efba84 100644
--- a/internal/karma/ts_web_test.bzl
+++ b/internal/karma/ts_web_test.bzl
@@ -11,7 +11,7 @@
# 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.
-"""Implementation of the ts_web_test rule."""
+"Unit testing in Chrome"
load("@build_bazel_rules_nodejs//internal:node.bzl",
"sources_aspect",
@@ -128,15 +128,23 @@
implementation = _ts_web_test_impl,
test = True,
attrs = {
- "srcs": attr.label_list(allow_files = ["js"]),
+ "srcs": attr.label_list(
+ doc = "JavaScript source files",
+ allow_files = [".js"]),
"deps": attr.label_list(
- allow_files = True,
- aspects = [sources_aspect],
+ doc = "Other targets which produce JavaScript such as `ts_library`",
+ allow_files = True,
+ aspects = [sources_aspect],
),
"bootstrap": attr.label_list(
- allow_files = True,
+ 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"],
),
- "data": attr.label_list(cfg = "data"),
+ "data": attr.label_list(
+ doc = "Runtime dependencies",
+ cfg = "data"),
"_karma": attr.label(
default = Label("//internal/karma:karma_bin"),
executable = True,
@@ -152,6 +160,20 @@
# This macro exists only to modify the users rule definition a bit.
# DO NOT add composition of additional rules here.
def ts_web_test_macro(tags = [], data = [], **kwargs):
+ """ibazel wrapper for `ts_web_test`
+
+ This macro re-exposes the `ts_web_test` rule with some extra tags so that
+ it behaves correctly under ibazel.
+
+ This is re-exported in `//:defs.bzl` as `ts_web_test` so if you load the rule
+ from there, you actually get this macro.
+
+ Args:
+ tags: standard Bazel tags, this macro adds a couple for ibazel
+ data: runtime dependencies
+ **kwargs: passed through to `ts_web_test`
+ """
+
ts_web_test(
tags = tags + [
# Users don't need to know that this tag is required to run under ibazel
diff --git a/internal/ts_config.bzl b/internal/ts_config.bzl
index bc0c9ec..95d5cbe 100644
--- a/internal/ts_config.bzl
+++ b/internal/ts_config.bzl
@@ -12,8 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-"""The ts_config rule allows users to express tsconfig.json file groups.
-"""
+"tsconfig.json files using extends"
TsConfigInfo = provider()
@@ -25,7 +24,18 @@
ts_config = rule(
implementation = _ts_config_impl,
attrs = {
- "src": attr.label(allow_files = True, single_file = True, mandatory = True),
- "deps": attr.label_list(allow_files = True, mandatory = True),
+ "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 79d6c8e..ac89e7d 100644
--- a/internal/ts_repositories.bzl
+++ b/internal/ts_repositories.bzl
@@ -12,12 +12,16 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-"""The ts_setup_workspace rule installs build-time dependencies.
-"""
+"Install toolchain dependencies"
load("@build_bazel_rules_nodejs//:defs.bzl", "yarn_install")
def ts_setup_workspace():
+ """This repository rule should be called from your WORKSPACE file.
+
+ It creates some additional Bazel external repositories that are used internally
+ by the TypeScript rules.
+ """
yarn_install(
name = "build_bazel_rules_typescript_tsc_wrapped_deps",
package_json = "@build_bazel_rules_typescript//internal:tsc_wrapped/package.json",
diff --git a/package.json b/package.json
index 41a0693..126920e 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,7 @@
"pretest": "webdriver-manager update && bazel build examples/app:all",
"test": "concurrently \"bazel run examples/app:devserver\" protractor --kill-others --success first",
"preskylint": "bazel build --noshow_progress @io_bazel//src/tools/skylark/java/com/google/devtools/skylark/skylint:Skylint",
- "skylint": "find . -type f -name \"*.bzl\" ! -path \"*/node_modules/*\" | xargs $(bazel info bazel-bin)/external/io_bazel/src/tools/skylark/java/com/google/devtools/skylark/skylint/Skylint"
+ "skylint": "find . -type f -name \"*.bzl\" ! -path \"*/node_modules/*\" | xargs $(bazel info bazel-bin)/external/io_bazel/src/tools/skylark/java/com/google/devtools/skylark/skylint/Skylint",
+ "skydoc": "bazel build //:docs && unzip -o -d docs/api bazel-bin/docs-skydoc.zip"
}
}