Make ts_compile_actions callable from aspects.

This adds fallbacks for cases where a certain attribute isn't present on ctx:
- ctx.attr.compiler falls back to ctx.attr._compiler
- ctx.attr.generate_externs defaults to True
- ctx.attr.runtime defaults to "browser"
- ctx.attr.module_name defaults to None

It also defines an attribute dict for aspects that define a lot of the necessary attributes for compilation (similar to TS_LIB_DECL_ATTRIBUTES).

Finally, it allows callers of compile_ts or ts_compile_actions to define their own  tsconfig output instead o getting it from ctx.outputs (since aspects cannot have outputs).

PiperOrigin-RevId: 256070225
1 file changed
tree: 129decd43f27b0a59ad130be96865ec160dfed03
  1. .bazelci/
  2. .github/
  3. .vscode/
  4. devserver/
  5. docs/
  6. internal/
  7. third_party/
  8. ts_auto_deps/
  9. .bazelignore
  10. .bazelrc
  11. .gitignore
  12. AUTHORS
  13. BUILD.bazel
  14. CODE_OF_CONDUCT.md
  15. CODEOWNERS
  16. CONTRIBUTING.md
  17. CONTRIBUTORS
  18. LICENSE
  19. package.bzl
  20. package.json
  21. README.md
  22. tsconfig.json
  23. WORKSPACE
  24. yarn.lock
README.md

build_bazel_rules_typescript

This repo contains a mirror of some Google-internal bits that support TypeScript development under Bazel.

It contains these utilities:

  • ts_devserver: a Go library and binary that runs a fast local web server which concatenates JavaScript on-the-fly. It requires inputs in a named module format (module ids must be contained in the file, not inferred from the file's path).
  • ts_auto_deps: a Go library and binary which generates BUILD.bazel files from TypeScript sources.
  • tsc_wrapped: a TypeScript program which wraps the TypeScript compiler, hosting it under a Bazel worker.
  • tsetse: a collection of third-party “strictness” checks which we add to the TypeScript compiler.
  • internal/common/*.bzl: some Starlark utility code for running the ts_library rule.

There are no user-facing bits in this repo. These utilities are consumed in https://github.com/bazelbuild/rules_nodejs/tree/master/packages/typescript

Please file issues for ts_library rule and other Bazel rules in that repo.