load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory") load("@build_bazel_rules_nodejs//:index.bzl", "pkg_web") load("@io_bazel_rules_sass//:defs.bzl", "sass_binary") load("//devtools/tools:ng_project.bzl", "ng_project") load("//devtools/tools/esbuild:index.bzl", "LINKER_PROCESSED_FW_PACKAGES") load("//tools:defaults.bzl", "esbuild", "http_server") package(default_visibility = ["//visibility:public"]) sass_binary( name = "demo_styles", src = "styles.scss", include_paths = ["external/npm/node_modules"], sourcemap = False, deps = ["//devtools/projects/ng-devtools/src/styles:global"], ) copy_to_directory( name = "browser_specific_styles", srcs = [ "//devtools/projects/ng-devtools/src/styles:chrome", "//devtools/projects/ng-devtools/src/styles:firefox", ], out = "styles", replace_prefixes = { "devtools/projects/ng-devtools/src/styles": "", }, ) copy_to_directory( name = "assets", srcs = [ "//devtools/projects/ng-devtools/src/assets", ], out = "assets", replace_prefixes = { "devtools/projects/ng-devtools/src/assets": "", }, ) ng_project( name = "demo", srcs = ["main.ts"], interop_deps = [ "//packages/common", "//packages/common/http", "//packages/core", "//packages/core/src/util", "//packages/platform-browser", ], deps = [ "//:node_modules/rxjs", "//devtools/src/app:app_rjs", ], ) esbuild( name = "bundle", config = "//devtools/tools/esbuild:esbuild_config_esm", entry_points = [":main.ts"], platform = "browser", splitting = True, # todo(aleksanderbodurri): here we target es2020 explicitly. # We do this because of a bug caused by https://github.com/evanw/esbuild/issues/2950 and an Angular v16 change # to how angular static properties are attached to class constructors. # Targeting esnext or es2022 will cause the static initializer blocks that attach these static properties on class # constructors to reference a class constructor variable that they do not have access to. target = "es2020", deps = LINKER_PROCESSED_FW_PACKAGES + [":demo"], ) exports_files(["index.html"]) filegroup( name = "dev_app_static_files", srcs = [ ":assets", ":browser_specific_styles", ":demo_styles", ":index.html", "//devtools/src/assets", ], ) pkg_web( name = "devapp", srcs = [":dev_app_static_files"] + [ ":bundle", "@npm//:node_modules/tslib/tslib.js", "@npm//:node_modules/zone.js/bundles/zone.umd.min.js", ], ) http_server( name = "devserver", srcs = [":dev_app_static_files"], additional_root_paths = ["angular/devtools/src/devapp"], tags = ["manual"], deps = [ ":devapp", ], ) ng_project( name = "demo_application_environment", srcs = ["demo-application-environment.ts"], deps = [ "//devtools/projects/ng-devtools:ng-devtools_rjs", "//devtools/src/environments:environments_rjs", ], ) ng_project( name = "demo_application_operations", srcs = ["demo-application-operations.ts"], deps = [ "//devtools/projects/ng-devtools:ng-devtools_rjs", "//devtools/projects/protocol:protocol_rjs", ], ) ng_project( name = "iframe_message_bus", srcs = ["iframe-message-bus.ts"], deps = [ "//devtools/projects/protocol:protocol_rjs", ], ) ng_project( name = "zone-unaware-iframe_message_bus", srcs = ["zone-unaware-iframe-message-bus.ts"], deps = [ ":iframe_message_bus_rjs", "//devtools/projects/protocol:protocol_rjs", ], )