"""Re-export of some bazel rules with repository-wide defaults.""" load("@build_bazel_rules_nodejs//:defs.bzl", _jasmine_node_test = "jasmine_node_test", _nodejs_binary = "nodejs_binary", _npm_package = "npm_package") load("@build_bazel_rules_typescript//:defs.bzl", _ts_library = "ts_library", _ts_web_test_suite = "ts_web_test_suite") load("//packages/bazel:index.bzl", _ng_module = "ng_module", _ng_package = "ng_package") load("//packages/bazel/src:ng_module.bzl", _internal_global_ng_module = "internal_global_ng_module") load("//packages/bazel/src:ng_rollup_bundle.bzl", _ng_rollup_bundle = "ng_rollup_bundle") DEFAULT_TSCONFIG_BUILD = "//packages:tsconfig-build.json" DEFAULT_TSCONFIG_TEST = "//packages:tsconfig-test.json" DEFAULT_NODE_MODULES = "@angular_deps//:node_modules" # Packages which are versioned together on npm ANGULAR_SCOPED_PACKAGES = ["@angular/%s" % p for p in [ # core should be the first package because it's the main package in the group # this is significant for Angular CLI and "ng update" specifically, @angular/core # is considered the identifier of the group by these tools. "core", "bazel", "common", "compiler", "compiler-cli", "animations", "elements", "platform-browser", "platform-browser-dynamic", "forms", "http", "platform-server", "platform-webworker", "platform-webworker-dynamic", "upgrade", "router", "language-service", "service-worker", ]] PKG_GROUP_REPLACEMENTS = { "\"NG_UPDATE_PACKAGE_GROUP\"": """[ %s ]""" % ",\n ".join(["\"%s\"" % s for s in ANGULAR_SCOPED_PACKAGES]), } def ts_library(tsconfig = None, node_modules = DEFAULT_NODE_MODULES, testonly = False, **kwargs): if not tsconfig: if testonly: tsconfig = DEFAULT_TSCONFIG_TEST else: tsconfig = DEFAULT_TSCONFIG_BUILD _ts_library(tsconfig = tsconfig, node_modules = node_modules, testonly = testonly, **kwargs) def ng_module(name, tsconfig = None, entry_point = None, node_modules = DEFAULT_NODE_MODULES, testonly = False, **kwargs): if not tsconfig: if testonly: tsconfig = DEFAULT_TSCONFIG_TEST else: tsconfig = DEFAULT_TSCONFIG_BUILD if not entry_point: entry_point = "public_api.ts" _ng_module(name = name, flat_module_out_file = name, tsconfig = tsconfig, entry_point = entry_point, node_modules = node_modules, testonly = testonly, **kwargs) # ivy_ng_module behaves like ng_module, and under --define=compile=legacy it runs ngc with global # analysis but produces Ivy outputs. Under other compile modes, it behaves as ng_module. # TODO(alxhub): remove when ngtsc supports the same use cases. def ivy_ng_module(name, tsconfig = None, entry_point = None, testonly = False, **kwargs): if not tsconfig: if testonly: tsconfig = DEFAULT_TSCONFIG_TEST else: tsconfig = DEFAULT_TSCONFIG_BUILD if not entry_point: entry_point = "public_api.ts" _internal_global_ng_module(name = name, flat_module_out_file = name, tsconfig = tsconfig, entry_point = entry_point, testonly = testonly, **kwargs) def ng_package(name, node_modules = DEFAULT_NODE_MODULES, readme_md = None, license_banner = None, **kwargs): if not readme_md: readme_md = "//packages:README.md" if not license_banner: license_banner = "//packages:license-banner.txt" _ng_package( name = name, readme_md = readme_md, license_banner = license_banner, replacements = PKG_GROUP_REPLACEMENTS, node_modules = node_modules, **kwargs ) def npm_package(name, replacements = {}, **kwargs): _npm_package( name = name, replacements = dict(replacements, **PKG_GROUP_REPLACEMENTS), **kwargs ) def ts_web_test_suite(bootstrap = [], deps = [], **kwargs): if not bootstrap: bootstrap = ["//:web_test_bootstrap_scripts"] local_deps = [ "@angular_deps//:node_modules/tslib/tslib.js", "//tools/testing:browser", ] + deps _ts_web_test_suite( bootstrap = bootstrap, deps = local_deps, # Run unit tests on local Chromium by default. # You can exclude tests based on tags, e.g. to skip Firefox testing, # `bazel test --test_tag_filters=-browser:firefox-local [targets]` browsers = [ "@io_bazel_rules_webtesting//browsers:chromium-local", # Don't test on local Firefox by default, for faster builds. # We think that bugs in Angular tend to be caught the same in any # evergreen browser. # "@io_bazel_rules_webtesting//browsers:firefox-local", # TODO(alexeagle): add remote browsers on SauceLabs ], **kwargs ) def nodejs_binary(node_modules = DEFAULT_NODE_MODULES, **kwargs): _nodejs_binary(node_modules = node_modules, **kwargs) def jasmine_node_test(node_modules = DEFAULT_NODE_MODULES, **kwargs): _jasmine_node_test(node_modules = node_modules, **kwargs) def ng_rollup_bundle(node_modules = DEFAULT_NODE_MODULES, **kwargs): _ng_rollup_bundle(node_modules = node_modules, **kwargs)