# 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", package_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