Raw File
BUILD.bazel
load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test")
load("@npm//@angular/build-tooling/bazel/api-gen:generate_api_docs.bzl", "generate_api_docs")
load("//packages/common/locales:index.bzl", "generate_base_locale_file")
load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "ng_module", "ng_package", "tsec_test")

package(default_visibility = ["//visibility:public"])

# This generates the `src/i18n/locale_en.ts` file through the `generate-locales` tool. Since
# the base locale file is checked-in for Google3, we add a `generated_file_test` to ensure
# the checked-in file is up-to-date. To disambiguate from the test, we use a more precise target
# name here.
generate_base_locale_file(
    name = "base_locale_file_generated",
    output_file = "base_locale_file_generated.ts",
)

generated_file_test(
    name = "base_locale_file",
    src = "src/i18n/locale_en.ts",
    generated = ":base_locale_file_generated",
)

ng_module(
    name = "core",
    srcs = glob(
        [
            "*.ts",
            "src/**/*.ts",
        ],
    ),
    deps = [
        "//packages:types",
        "//packages/core/primitives/event-dispatch",
        "//packages/core/primitives/signals",
        "//packages/core/src/compiler",
        "//packages/core/src/di/interface",
        "//packages/core/src/interface",
        "//packages/core/src/reflection",
        "//packages/core/src/util",
        "//packages/zone.js/lib:zone_d_ts",
        "@npm//rxjs",
    ],
)

tsec_test(
    name = "tsec_test",
    target = "core",
    tsconfig = "//packages:tsec_config",
)

ng_package(
    name = "npm_package",
    package_name = "@angular/core",
    srcs = [
        "package.json",
        ":event_dispatch_contract_binary",
    ],
    nested_packages = [
        "//packages/core/schematics:npm_package",
    ],
    tags = [
        "release-with-framework",
    ],
    # Do not add more to this list.
    # Dependencies on the full npm_package cause long re-builds.
    visibility = [
        "//adev:__pkg__",
        "//adev/shared-docs:__subpackages__",
        "//integration:__subpackages__",
        "//packages/bazel/test/ng_package:__pkg__",
        "//packages/compiler-cli/src/ngtsc/metadata/test:__subpackages__",
        "//packages/compiler-cli/src/ngtsc/typecheck/extended/test:__subpackages__",
        "//packages/compiler-cli/src/ngtsc/typecheck/test:__subpackages__",
        "//packages/compiler-cli/test:__subpackages__",
        "//packages/compiler/test:__pkg__",
        "//packages/language-service/test:__pkg__",
    ],
    deps = [
        ":core",
        "//packages/core/primitives/event-dispatch",
        "//packages/core/primitives/signals",
        "//packages/core/rxjs-interop",
        "//packages/core/testing",
    ],
)

api_golden_test_npm_package(
    name = "core_api",
    data = [
        ":npm_package",
        "//goldens:public-api",
    ],
    golden_dir = "angular/goldens/public-api/core",
    npm_package = "angular/packages/core/npm_package",
    strip_export_pattern = "^ɵ(?!.*ApiGuard)",
)

api_golden_test(
    name = "ng_global_utils_api",
    data = [
        "//goldens:public-api",
        "//packages/core",
        # Additional targets the entry-point indirectly resolves `.d.ts` source files from.
        # These are transitive to `:core`, but need to be listed explicitly here as only
        # transitive `JSModule` information is collected (missing the type definitions).
        "//packages/core/src/compiler",
        "//packages/core/src/di/interface",
        "//packages/core/src/interface",
        "//packages/core/src/reflection",
        "//packages/core/src/util",
    ],
    entry_point = "angular/packages/core/src/render3/global_utils_api.d.ts",
    golden = "angular/goldens/public-api/core/global_utils.api.md",
)

api_golden_test(
    name = "core_errors",
    data = [
        "//goldens:public-api",
        "//packages/core",
    ],
    entry_point = "angular/packages/core/src/errors.d.ts",
    golden = "angular/goldens/public-api/core/errors.api.md",
)

filegroup(
    name = "files_for_docgen",
    srcs = glob([
        "*.ts",
        "src/**/*.ts",
    ]) + [
        "PACKAGE.md",
    ],
)

generate_api_docs(
    name = "core_docs",
    srcs = [
        "//packages:common_files_and_deps_for_docs",
    ],
    entry_point = ":index.ts",
    module_name = "@angular/core",
)

genrule(
    name = "event_dispatch_contract_binary",
    srcs = ["//packages/core/primitives/event-dispatch:contract_bundle_min"],
    outs = ["event-dispatch-contract.min.js"],
    cmd = "cp $< $@",
)
back to top