diff --git a/internal/common/compilation.bzl b/internal/common/compilation.bzl
index 75d3c64..65b34d6 100644
--- a/internal/common/compilation.bzl
+++ b/internal/common/compilation.bzl
@@ -59,8 +59,11 @@
 }
 
 # TODO(plf): Enforce this at analysis time.
-def assert_js_or_typescript_deps(ctx):
-    for dep in ctx.attr.deps:
+def assert_js_or_typescript_deps(ctx, deps = None):
+    # `deps` args is optinal for backward compat.
+    # Fallback to `ctx.attr.deps`.
+    deps = deps or ctx.attr.deps
+    for dep in deps:
         if not hasattr(dep, "typescript") and not hasattr(dep, "js"):
             fail(
                 ("%s is neither a TypeScript nor a JS producing rule." % dep.label) +
@@ -71,7 +74,7 @@
                 "also proto_library and some others).\n",
             )
 
-def _collect_dep_declarations(ctx):
+def _collect_dep_declarations(ctx, deps):
     """Collects .d.ts files from typescript and javascript dependencies.
 
     Args:
@@ -90,7 +93,7 @@
     # .d.ts files whose types tsickle will not emit (used for ts_declaration(generate_externs=False).
     type_blacklisted_declarations = depset()
 
-    for dep in ctx.attr.deps + getattr(ctx.attr, "_helpers", []):
+    for dep in deps + getattr(ctx.attr, "_helpers", []):
         if hasattr(dep, "typescript"):
             direct_deps_declarations += dep.typescript.declarations
             transitive_deps_declarations += dep.typescript.transitive_declarations
@@ -105,12 +108,13 @@
         type_blacklisted = type_blacklisted_declarations,
     )
 
-def _outputs(ctx, label):
+def _outputs(ctx, label, srcs_files = []):
     """Returns closure js, devmode js, and .d.ts output files.
 
     Args:
       ctx: ctx.
       label: Label. package label.
+      srcs_files: File list. sources files list.
 
     Returns:
       A struct of file lists for different output types.
@@ -123,7 +127,7 @@
     closure_js_files = []
     devmode_js_files = []
     declaration_files = []
-    for input_file in ctx.files.srcs:
+    for input_file in srcs_files:
         is_dts = input_file.short_path.endswith(".d.ts")
         if is_dts and not create_shim_files:
             continue
@@ -145,6 +149,8 @@
 def compile_ts(
         ctx,
         is_library,
+        srcs = None,
+        deps = None,
         compile_action = None,
         devmode_compile_action = None,
         jsx_factory = None,
@@ -157,6 +163,8 @@
     Args:
       ctx: ctx.
       is_library: boolean. False if only compiling .dts files.
+      srcs: label list. Explicit list of sources to be used instead of ctx.attr.srcs.
+      deps: label list. Explicit list of deps to be used instead of ctx.attr.deps.
       compile_action: function. Creates the compilation action.
       devmode_compile_action: function. Creates the compilation action
         for devmode.
@@ -167,16 +175,19 @@
     Returns:
       struct that will be returned by the rule implementation.
     """
-    assert_js_or_typescript_deps(ctx)
 
     ### Collect srcs and outputs.
-    srcs = ctx.files.srcs
+    srcs = srcs or ctx.attr.srcs
+    deps = deps or ctx.attr.deps
+    srcs_files = [f for t in srcs for f in t.files]
     src_declarations = []  # d.ts found in inputs.
     tsickle_externs = []  # externs.js generated by tsickle, if any.
     has_sources = False
 
     # Validate the user inputs.
-    for src in ctx.attr.srcs:
+    assert_js_or_typescript_deps(ctx, deps)
+
+    for src in srcs:
         if src.label.package != ctx.label.package:
             # Sources can be in sub-folders, but not in sub-packages.
             fail("Sources must be in the same package as the ts_library rule, " +
@@ -191,7 +202,7 @@
                 src_declarations += [f]
                 continue
 
-    outs = outputs(ctx, ctx.label)
+    outs = outputs(ctx, ctx.label, srcs_files)
     transpiled_closure_js = outs.closure_js
     transpiled_devmode_js = outs.devmode_js
     gen_declarations = outs.declarations
@@ -200,11 +211,11 @@
         # Note: setting this variable controls whether tsickle is run at all.
         tsickle_externs = [ctx.new_file(ctx.label.name + ".externs.js")]
 
-    dep_declarations = _collect_dep_declarations(ctx)
+    dep_declarations = _collect_dep_declarations(ctx, deps)
     input_declarations = dep_declarations.transitive + src_declarations
     type_blacklisted_declarations = dep_declarations.type_blacklisted
     if not is_library and not ctx.attr.generate_externs:
-        type_blacklisted_declarations += ctx.files.srcs
+        type_blacklisted_declarations += srcs_files
 
     # The list of output files. These are the files that are always built
     # (including e.g. if you "blaze build :the_target" directly).
@@ -221,14 +232,14 @@
     if "TYPESCRIPT_PERF_TRACE_TARGET" in ctx.var:
         perf_trace = str(ctx.label) == ctx.var["TYPESCRIPT_PERF_TRACE_TARGET"]
 
-    compilation_inputs = input_declarations + srcs
+    compilation_inputs = input_declarations + srcs_files
     tsickle_externs_path = tsickle_externs[0] if tsickle_externs else None
 
     # Calculate allowed dependencies for strict deps enforcement.
     allowed_deps = depset()
 
     # A target's sources may depend on each other,
-    allowed_deps += srcs[:]
+    allowed_deps += srcs_files[:]
 
     # or on a .d.ts from a direct dependency
     allowed_deps += dep_declarations.direct
@@ -236,7 +247,7 @@
     tsconfig_es6 = tsc_wrapped_tsconfig(
         ctx,
         compilation_inputs,
-        srcs,
+        srcs_files,
         jsx_factory = jsx_factory,
         tsickle_externs = tsickle_externs_path,
         type_blacklisted_declarations = type_blacklisted_declarations,
@@ -295,7 +306,7 @@
         tsconfig_es5 = tsc_wrapped_tsconfig(
             ctx,
             compilation_inputs,
-            srcs,
+            srcs_files,
             jsx_factory = jsx_factory,
             devmode_manifest = devmode_manifest.path,
             allowed_deps = allowed_deps,
@@ -354,10 +365,10 @@
     declarations = depset()
     declarations += gen_declarations
     declarations += src_declarations
-    if not srcs:
+    if not srcs_files:
         # Re-export sources from deps.
         # TODO(b/30018387): introduce an "exports" attribute.
-        for dep in ctx.attr.deps:
+        for dep in deps:
             if hasattr(dep, "typescript"):
                 declarations += dep.typescript.declarations
     files += declarations
@@ -370,7 +381,7 @@
 
     transitive_es5_sources = depset()
     transitive_es6_sources = depset()
-    for dep in ctx.attr.deps:
+    for dep in deps:
         if hasattr(dep, "typescript"):
             transitive_es5_sources = depset(transitive = [
                 transitive_es5_sources,
