Files
angular/BUILD
2016-08-26 14:43:36 -07:00

882 lines
22 KiB
Python

package(default_visibility=["//visibility:public"])
load("//build_defs:nodejs.bzl", "nodejs_binary", "nodejs_test")
load("//build_defs:typescript.bzl", "ts_library", "ts_ext_library")
load("//build_defs:ts_compat.bzl", "ts_compat")
load("//build_defs:jasmine.bzl", "jasmine_node_test")
load("//build_defs:karma.bzl", "karma_test")
load("//build_defs:bundle.bzl", "js_bundle")
load("//build_defs:protractor.bzl", "protractor_test")
load("//build_defs:ts_api_guardian.bzl", "public_api", "public_api_test")
load("//build_defs:npm_package.bzl", "ts_npm_package")
# This imports node_modules targets from a generated file.
load("//build_defs:node_modules_index.bzl", "node_modules_index")
node_modules_index(glob)
###############################################################################
# Tools
###############################################################################
nodejs_binary(
name = "tsc-wrapped_bootstrap",
srcs = [
'tools/@angular/tsc-wrapped/bootstrap.js',
'//:typescript',
'//:minimist',
],
entry_point = 'tools/@angular/tsc-wrapped/bootstrap.js',
)
ts_library(
name = "tsc-wrapped",
srcs = glob(
[
"tools/@angular/tsc-wrapped/index.ts",
"tools/@angular/tsc-wrapped/src/**/*.ts",
],
),
deps = [
"//:_types_node",
"//:typescript",
"//:tsickle",
],
data = [
"tools/@angular/tsc-wrapped/worker_protocol.proto",
"//:minimist",
"//:bytebuffer",
"//:protobufjs",
],
tsconfig = "tools/@angular/tsc-wrapped/tsconfig.json",
compiler = "//:tsc-wrapped_bootstrap",
module_name = "@angular/tsc-wrapped",
root_dir = "tools/@angular/tsc-wrapped",
)
nodejs_binary(
name = "tsc-wrapped_bin",
srcs = [":tsc-wrapped"],
entry_point = "tools/@angular/tsc-wrapped/src/worker.js",
)
###############################################################################
# Packages
###############################################################################
ts_library(
name = "jasmine_helper",
srcs = [
"modules/jasmine_helper.ts"
],
deps = [
"//:core",
"//:platform-server",
],
data = [
"//:source-map-support",
"//:reflect-metadata",
"//:zone.js",
"//:parse5",
],
tsconfig = "modules/tsconfig.json",
)
ts_ext_library(
name = "es6-subset",
declarations = ["modules/es6-subset.d.ts"],
ambient = True,
entry_point = "modules/es6-subset.d.ts",
)
ts_ext_library(
name = "dummy_system",
declarations = ["modules/system.d.ts"],
ambient = True,
entry_point = "modules/system.d.ts",
)
ts_library(
name = "facade",
srcs = glob(["modules/@angular/facade/src/**/*.ts"]),
deps = [
"//:zone.js",
"//:rxjs",
"//:es6-subset",
],
tsconfig = "modules/tsconfig.json",
module_name = "@angular/facade",
root_dir = "modules/@angular/facade",
)
ts_library(
name = "common",
srcs = glob(
["modules/@angular/common/**/*.ts"],
exclude = ["modules/@angular/common/test/**/*.ts"]),
deps = [
"//:zone.js",
"//:core",
"//:es6-subset",
],
tsconfig = "modules/@angular/common/tsconfig-es5.json",
module_name = "@angular/common",
)
ts_library(
name = "common_test_module",
srcs = glob(["modules/@angular/common/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:common",
"//:compiler",
"//:platform-browser",
"//:platform-browser-dynamic",
"//:platform-server",
"//:facade",
"//:es6-subset",
],
deps_use_internal = [
"//:common",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/@angular/common/test",
is_leaf = True,
)
ts_library(
name = "compiler-cli",
srcs = glob(
["modules/@angular/compiler-cli/**/*.ts"],
exclude = [
"modules/@angular/compiler-cli/test/**/*.ts",
"modules/@angular/compiler-cli/integrationtest/**/*.ts",
]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:common",
"//:compiler",
"//:platform-server",
"//:platform-browser",
"//:tsc-wrapped",
],
tsconfig = "modules/@angular/compiler-cli/tsconfig-es5.json",
module_name = "@angular/compiler-cli",
)
ts_library(
name = "compiler-cli_test_module",
srcs = glob(["modules/@angular/compiler-cli/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:platform-browser",
"//:platform-browser-dynamic",
"//:compiler-cli",
"//:tsc-wrapped",
"//:facade",
],
deps_use_internal = [
"//:compiler-cli",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/@angular/compiler-cli/test",
is_leaf = True,
)
ts_library(
name = "compiler",
srcs = glob(
["modules/@angular/compiler/**/*.ts"],
exclude = ["modules/@angular/compiler/test/**/*.ts"]),
deps = [
"//:zone.js",
"//:core",
],
tsconfig = "modules/@angular/compiler/tsconfig-es5.json",
module_name = "@angular/compiler",
)
ts_library(
name = "compiler_test_module",
srcs = glob(["modules/@angular/compiler/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:common",
"//:platform-browser",
"//:platform-browser-dynamic",
"//:compiler",
"//:facade",
"//:es6-subset",
],
deps_use_internal = [
"//:compiler",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/@angular/compiler/test",
# Required for compiling codegen.
module_name = "@angular/compiler/test",
)
nodejs_binary(
name = "compiler_test_codegen_bin",
srcs = [":compiler_test_module"],
deps = [
"reflect-metadata",
],
entry_point = "modules/@angular/compiler/test/output/output_emitter_codegen.js",
)
genrule(
name = "compiler_test_codegen_ts",
outs = [
"modules/@angular/compiler/test/output/output_emitter_generated_typed.ts",
"modules/@angular/compiler/test/output/output_emitter_generated_untyped.ts",
],
tools = [
# This has to be put in tools so that its runfiles tree is also built.
":compiler_test_codegen_bin",
],
cmd = "$(location :compiler_test_codegen_bin) --node_path=modules/ $(OUTS)",
output_to_bindir = True,
)
ts_library(
name = "compiler_test_codegen_js",
srcs = [":compiler_test_codegen_ts"],
deps = [
":core",
":compiler",
":compiler_test_module",
],
tsconfig = "tools/cjs-jasmine/tsconfig-output_emitter_codegen.json",
root_dir = "modules/@angular/compiler/test",
)
ts_library(
name = "core",
srcs = glob(
["modules/@angular/core/**/*.ts"],
exclude = ["modules/@angular/core/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:rxjs",
"//:dummy_system",
],
tsconfig = "modules/@angular/core/tsconfig-es5.json",
module_name = "@angular/core",
)
ts_library(
name = "core_test_module",
srcs = glob(["modules/@angular/core/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:common",
"//:compiler",
"//:platform-browser",
"//:platform-browser-dynamic",
"//:core",
"//:facade",
"//:es6-subset",
],
deps_use_internal = [
"//:core",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/@angular/core/test",
is_leaf = True,
)
ts_library(
name = "forms",
srcs = glob(
["modules/@angular/forms/**/*.ts"],
exclude = ["modules/@angular/forms/test/**/*.ts"]),
deps = [
"//:zone.js",
"//:core",
"//:common",
"//:compiler",
],
tsconfig = "modules/@angular/forms/tsconfig-es5.json",
module_name = "@angular/forms",
)
ts_library(
name = "forms_test_module",
srcs = glob(
["modules/@angular/forms/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:common",
"//:platform-browser",
"//:platform-browser-dynamic",
"//:forms",
"//:facade",
],
deps_use_internal = [
"//:forms",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/@angular/forms/test",
is_leaf = True,
)
ts_library(
name = "http",
srcs = glob(
["modules/@angular/http/**/*.ts"],
exclude = ["modules/@angular/http/test/**/*.ts"]),
deps = [
"//:zone.js",
"//:core",
"//:common",
"//:platform-browser",
],
tsconfig = "modules/@angular/http/tsconfig-es5.json",
module_name = "@angular/http",
)
ts_library(
name = "platform-browser",
srcs = glob(
["modules/@angular/platform-browser/**/*.ts"],
exclude = ["modules/@angular/platform-browser/test/**/*.ts"]),
deps = [
"//:_types_hammerjs",
"//:_types_jasmine",
"//:_types_protractor",
"//:zone.js",
"//:_types_selenium-webdriver",
"//:core",
"//:common",
"//:facade",
],
tsconfig = "modules/@angular/platform-browser/tsconfig-es5.json",
module_name = "@angular/platform-browser",
)
ts_library(
name = "platform-browser_test_module",
srcs = glob(["modules/@angular/platform-browser/test/**/*.ts"]),
data = glob(
[
"modules/@angular/platform-browser/test/static_assets/**",
"modules/@angular/platform-browser/test/browser/static_assets/**",
]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:common",
"//:compiler",
"//:platform-browser",
"//:platform-browser-dynamic",
"//:core",
],
deps_use_internal = [
"//:core",
"//:platform-browser",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/@angular/platform-browser/test",
is_leaf = True,
)
ts_library(
name = "http_test_module",
srcs = glob(["modules/@angular/http/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:common",
"//:platform-browser",
"//:platform-browser-dynamic",
"//:http",
"//:facade",
],
deps_use_internal = [
"//:http",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/@angular/http/test",
is_leaf = True,
)
ts_library(
name = "platform-browser-dynamic",
srcs = glob(
["modules/@angular/platform-browser-dynamic/**/*.ts"],
exclude = ["modules/@angular/platform-browser-dynamic/test/**/*.ts"]),
deps = [
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:common",
"//:compiler",
"//:platform-browser",
],
tsconfig = "modules/@angular/platform-browser-dynamic/tsconfig-es5.json",
module_name = "@angular/platform-browser-dynamic",
)
ts_library(
name = "platform-browser-dynamic_test_module",
srcs = glob(["modules/@angular/platform-browser-dynamic/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:compiler",
"//:platform-browser",
"//:platform-browser-dynamic",
"//:facade",
],
deps_use_internal = [
"//:platform-browser-dynamic",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/@angular/platform-browser-dynamic/test",
is_leaf = True,
)
ts_library(
name = "platform-server",
srcs = glob(
["modules/@angular/platform-server/**/*.ts"],
exclude = [
"modules/@angular/platform-server/platform_browser_dynamic_testing_private.ts",
"modules/@angular/platform-server/test/**/*.ts",
]),
deps = [
"//:_types_jasmine",
"//:_types_node",
"//:zone.js",
"//:core",
"//:common",
"//:compiler",
"//:platform-browser",
"//:platform-browser-dynamic",
],
tsconfig = "modules/@angular/platform-server/tsconfig-es5.json",
module_name = "@angular/platform-server",
)
ts_library(
name = "platform-server_test_module",
srcs = glob(["modules/@angular/platform-server/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:platform-browser",
"//:platform-browser-dynamic",
"//:platform-server",
"//:facade",
],
deps_use_internal = [
"//:platform-server",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/@angular/platform-server/test",
is_leaf = True,
)
ts_library(
name = "router",
srcs = glob(
["modules/@angular/router/**/*.ts"],
exclude = ["modules/@angular/router/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:common",
"//:compiler",
"//:platform-browser",
"//:platform-browser-dynamic",
],
tsconfig = "modules/@angular/router/tsconfig-es5.json",
module_name = "@angular/router",
)
ts_library(
name = "router_test_module",
srcs = glob(["modules/@angular/router/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:common",
"//:router",
"//:platform-browser",
"//:facade",
],
deps_use_internal = [
"//:router",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/@angular/router/test",
is_leaf = True,
)
ts_library(
name = "upgrade",
srcs = glob(
["modules/@angular/upgrade/**/*.ts"],
exclude = ["modules/@angular/upgrade/test/**/*.ts"]),
deps = [
"//:zone.js",
"//:core",
"//:common",
"//:compiler",
"//:platform-browser",
"//:platform-browser-dynamic",
],
tsconfig = "modules/@angular/upgrade/tsconfig-es5.json",
module_name = "@angular/upgrade",
)
ts_library(
name = "upgrade_test_module",
srcs = glob(["modules/@angular/upgrade/test/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_jasmine",
"//:zone.js",
"//:core",
"//:platform-browser",
"//:upgrade",
"//:facade",
],
deps_use_internal = [
"//:upgrade",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/@angular/upgrade/test",
is_leaf = True,
)
jasmine_node_test(
name = "compiler_test",
srcs = [":compiler_test_module", ":compiler_test_codegen_js"],
helpers = [":jasmine_helper"],
size = "small",
args = ["--node_path=modules:tools"],
)
JASMINE_TESTABLE = [
"core",
"common",
"compiler",
"compiler-cli",
"http",
"platform-server",
"router",
]
[
jasmine_node_test(
name = pkg + "_test",
srcs = [":{}_test_module".format(pkg)],
helpers = [":jasmine_helper"],
size = "small",
args = ["--node_path=modules:tools"],
flaky = pkg == "platform-server",
)
for pkg in JASMINE_TESTABLE
if pkg != "compiler"
]
test_suite(
name = "jasmine_tests",
tests = [":{}_test".format(p) for p in JASMINE_TESTABLE],
)
ts_library(
name = "empty_module",
srcs = ["modules/empty.ts"],
tsconfig = "modules/tsconfig.json",
)
KARMA_DATA = [
":es6-shim",
":karma-browserstack-launcher",
":karma-chrome-launcher",
":karma-jasmine",
":karma-sauce-launcher",
":karma-sourcemap-loader",
":reflect-metadata",
":source-map",
":systemjs",
]
karma_test(
name = "karma_test",
srcs = [
":core_test_module",
":common_test_module",
":compiler_test_module",
":compiler_test_codegen_js",
":forms_test_module",
":http_test_module",
":platform-browser_test_module",
":platform-browser-dynamic_test_module",
":platform-server_test_module",
":upgrade_test_module",
":empty_module",
"shims_for_IE.js",
"test-main.js",
],
data = KARMA_DATA + [
":angular",
"browser-providers.conf.js",
"tools/karma/reporter.js",
],
config = "karma-js.conf.js",
local = True,
)
karma_test(
name = "router_karma_test",
srcs = [
":router_test_module",
"modules/@angular/router/karma-test-shim.js",
],
data = KARMA_DATA + [
"browser-providers.conf.js",
],
config = "modules/@angular/router/karma.conf.js",
size = "small",
local = True,
)
###############################################################################
# Packaging and end to end tests
###############################################################################
ESM_PACKAGES = [
"core",
"common",
"compiler",
"forms",
"http",
"platform-browser",
"platform-browser-dynamic",
"platform-server",
"router",
"upgrade",
]
NON_ESM_PACKAGES = [
"compiler-cli",
]
ALL_PACKAGES = ESM_PACKAGES + NON_ESM_PACKAGES + ["tsc-wrapped"]
[
js_bundle(
name = pkg + "_bundle",
srcs = [":" + pkg],
output = "modules/@angular/{}/{}.umd.js".format(pkg, pkg),
entry_point = "modules/@angular/{}/esm/index.js".format(pkg),
rollup_config = "modules/@angular/{}/rollup.config.js".format(pkg),
banner = "modules/@angular/license-banner.txt",
)
for pkg in ESM_PACKAGES
]
ts_npm_package(
name = "tsc-wrapped_package",
srcs = [":tsc-wrapped"],
manifest = "tools/@angular/tsc-wrapped/package.json",
module_name = "@angular/tsc-wrapped",
strip_prefix = "/tools/@angular/tsc-wrapped",
esm = False,
)
[
(
ts_compat(
name = pkg + "_compat",
srcs = [":" + pkg],
),
ts_npm_package(
name = pkg + "_package",
srcs = [":{}_compat".format(pkg)],
manifest = "modules/@angular/{}/package.json".format(pkg),
module_name = "@angular/" + pkg,
# Prefix / avoids bug https://github.com/bazelbuild/bazel/issues/1604
strip_prefix = "/modules/@angular/" + pkg,
esm = pkg in ESM_PACKAGES,
),
)
for pkg in ESM_PACKAGES + NON_ESM_PACKAGES
]
filegroup(
name = "all_packages",
srcs = [":{}_package".format(p) for p in ALL_PACKAGES],
)
ts_library(
name = "playground",
srcs = glob(["modules/playground/src/**/*.ts"]),
deps = [
"//:core",
"//:common",
"//:forms",
"//:http",
"//:platform-browser",
"//:platform-browser-dynamic",
"//:router",
"//:upgrade",
"//:facade",
],
data = glob(
["modules/playground/src/**/*"],
exclude = ["modules/playground/src/**/*.ts"],
),
tsconfig = "modules/tsconfig.json",
)
ts_library(
name = "e2e_util",
srcs = glob(["modules/e2e_util/**/*.ts"]),
deps = [
"//:_types_node",
"//:_types_protractor",
"//:_types_selenium-webdriver",
],
tsconfig = "modules/tsconfig.json",
root_dir = "modules/e2e_util",
module_name = "e2e_util",
)
ts_library(
name = "playground_test_module",
srcs = glob(["modules/playground/e2e_test/**/*.ts"]),
deps = [
"//:_types_jasmine",
"//:e2e_util",
],
tsconfig = "modules/tsconfig.json",
is_leaf = True,
)
protractor_test(
name = "playground_test",
srcs = [":playground_test_module"],
data = [":{}_bundle".format(p) for p in ESM_PACKAGES] + [
":core", # Needed for @angular/core/src/facade
":facade",
":playground",
":core-js",
":zone.js",
":systemjs",
":base64-js",
":reflect-metadata",
":rxjs",
":angular",
"favicon.ico",
],
config = "protractor-bazel.conf.js",
local = True,
args = ["--node_path=modules:tools"],
)
public_api(
name = "public_api",
srcs = [
":core_compat",
":common_compat",
":platform-browser_compat",
":platform-browser-dynamic_compat",
":platform-server_compat",
":http_compat",
":forms_compat",
":router_compat",
":upgrade_compat",
],
entry_points = [
"modules/@angular/core/compat/index.d.ts",
"modules/@angular/core/compat/testing.d.ts",
"modules/@angular/common/compat/index.d.ts",
"modules/@angular/common/compat/testing.d.ts",
"modules/@angular/upgrade/compat/index.d.ts",
"modules/@angular/platform-browser/compat/index.d.ts",
"modules/@angular/platform-browser/compat/testing.d.ts",
"modules/@angular/platform-browser-dynamic/compat/index.d.ts",
"modules/@angular/platform-browser-dynamic/compat/testing.d.ts",
"modules/@angular/platform-server/compat/index.d.ts",
"modules/@angular/platform-server/compat/testing.d.ts",
"modules/@angular/http/compat/index.d.ts",
"modules/@angular/http/compat/testing.d.ts",
"modules/@angular/forms/compat/index.d.ts",
"modules/@angular/router/compat/index.d.ts",
],
root_dir = "modules/@angular",
out_dir = "tools/public_api_guard",
arguments = [
"--stripExportPattern ^__",
"--allowModuleIdentifiers jasmine",
"--allowModuleIdentifiers protractor",
"--allowModuleIdentifiers angular",
"--onStabilityMissing error",
],
)
public_api_test(
name = "public_api_test",
srcs = glob(["tools/public_api_guard/**/*"]),
public_api = ":public_api",
size = "small",
)
nodejs_test(
name = "check_cycle_test",
srcs = [
"//build_defs:check_cycle.js",
],
deps = [
":madge",
],
entry_point = "check_cycle.js",
data = [
":core",
":common",
":compiler",
":compiler-cli",
":forms",
":http",
":platform-browser",
":platform-browser-dynamic",
":platform-server",
":router",
":upgrade",
":tsc-wrapped",
],
size = "small",
)