Updates to the latest version of `rules_nodejs` that supports the most recent NodeJS lts version v14.16.1. Additionally the latest version of `rules_nodejs` provides [a package for runfile resolution](https://github.com/bazelbuild/rules_nodejs/pull/2568) w/ types that we can leverage. PR Close #41599
		
			
				
	
	
		
			115 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # BEGIN-INTERNAL
 | |
| load("@build_bazel_rules_nodejs//:index.bzl", "pkg_npm")
 | |
| load("@npm//@bazel/typescript:index.bzl", "ts_library")
 | |
| load("//tools:defaults.bzl", "jasmine_node_test")
 | |
| 
 | |
| ts_library(
 | |
|     name = "lib",
 | |
|     srcs = glob(["lib/*.ts"]),
 | |
|     module_name = "ts-api-guardian",
 | |
|     tsconfig = "//tools:tsconfig.json",
 | |
|     visibility = ["//visibility:public"],
 | |
|     deps = [
 | |
|         "@npm//@types/diff",
 | |
|         "@npm//@types/minimist",
 | |
|         "@npm//@types/node",
 | |
|         "@npm//chalk",
 | |
|         "@npm//diff",
 | |
|         "@npm//minimist",
 | |
|         "@npm//typescript",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| # Copy Angular's license to govern ts-api-guardian as well.
 | |
| # We use a genrule to put it in this package, so it will be in the right root directory.
 | |
| genrule(
 | |
|     name = "license",
 | |
|     srcs = ["//:LICENSE"],
 | |
|     outs = ["LICENSE"],
 | |
|     cmd = "cp $< $@",
 | |
| )
 | |
| 
 | |
| pkg_npm(
 | |
|     name = "ts-api-guardian",
 | |
|     srcs = [
 | |
|         "BUILD.bazel",
 | |
|         "README.md",
 | |
|         "bin/ts-api-guardian",
 | |
|         "index.bzl",
 | |
|         "package.json",
 | |
|     ],
 | |
|     substitutions = {
 | |
|         "@angular//tools/ts-api-guardian:bin": "//:node_modules/ts-api-guardian/bin",
 | |
|         "@angular//tools/ts-api-guardian:lib": "@npm//ts-api-guardian",
 | |
|     },
 | |
|     deps = [
 | |
|         ":lib",
 | |
|         ":license",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| #######################################3
 | |
| # Tests for this package
 | |
| 
 | |
| ts_library(
 | |
|     name = "test_lib",
 | |
|     testonly = True,
 | |
|     srcs = glob(
 | |
|         ["test/*.ts"],
 | |
|         exclude = ["test/bootstrap.ts"],
 | |
|     ),
 | |
|     tsconfig = "//tools:tsconfig-test",
 | |
|     deps = [
 | |
|         ":lib",
 | |
|         "@npm//@bazel/runfiles",
 | |
|         "@npm//@types/jasmine",
 | |
|         "@npm//@types/node",
 | |
|         "@npm//jasmine",
 | |
|         "@npm//typescript",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| ts_library(
 | |
|     name = "bootstrap",
 | |
|     testonly = True,
 | |
|     srcs = ["test/bootstrap.ts"],
 | |
|     tsconfig = "//tools:tsconfig-test",
 | |
|     deps = ["@npm//@types/node"],
 | |
| )
 | |
| 
 | |
| # Select the es5 .js output of the ts_library :boostrap target
 | |
| # with `output_group = "es5_sources"` for use in the jasmine_node_test
 | |
| # below. This exposes an internal detail of ts_library that is not ideal.
 | |
| # TODO(gregmagolan): clean this up by using tsc() in this case rather than ts_library
 | |
| filegroup(
 | |
|     name = "bootstrap_es5",
 | |
|     testonly = True,
 | |
|     srcs = [":bootstrap"],
 | |
|     output_group = "es5_sources",
 | |
| )
 | |
| 
 | |
| jasmine_node_test(
 | |
|     name = "tests",
 | |
|     srcs = [
 | |
|         ":test_lib",
 | |
|     ],
 | |
|     bootstrap = [":bootstrap_es5"],
 | |
|     data = glob([
 | |
|         "test/fixtures/*.ts",
 | |
|         "test/fixtures/*.patch",
 | |
|     ]) + [
 | |
|         ":ts-api-guardian",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| filegroup(
 | |
|     name = "bin",
 | |
|     srcs = glob(["lib/*.js"]) + ["bin/ts-api-guardian"],
 | |
|     visibility = ["//visibility:public"],
 | |
| )
 | |
| 
 | |
| # Exported to be referenced as entry_point of the nodejs_binary
 | |
| exports_files(["bin/ts-api-guardian"])
 | |
| 
 | |
| # END-INTERNAL
 |