blob: 1cb2172ba1d3079d301d5108120ba74cc62ea5f6 [file] [log] [blame]
load("@build_bazel_rules_nodejs//:defs.bzl", "http_server", "rollup_bundle")
load(
"//:defs.bzl",
"ts_devserver",
"ts_proto_library",
)
load("//internal:defaults.bzl", "ts_library", "ts_web_test_suite")
proto_library(
name = "tire_proto",
srcs = ["tire.proto"],
)
proto_library(
name = "car_proto",
srcs = ["car.proto"],
deps = [":tire_proto"],
)
ts_proto_library(
# The result will be "car.d.ts" named after this target.
# We could use the output_name attribute if we want the output named
# differently than the target.
name = "car",
deps = [":car_proto"],
)
ts_library(
name = "test_lib",
testonly = True,
srcs = ["car.spec.ts"],
tsconfig = "//examples:tsconfig-test",
deps = [
":car",
"@npm//@types/jasmine",
"@npm//@types/long",
"@npm//@types/node",
"@npm//long",
],
)
ts_web_test_suite(
name = "test",
bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"],
browsers = [
"@io_bazel_rules_webtesting//browsers:chromium-local",
"@io_bazel_rules_webtesting//browsers:firefox-local",
],
deps = ["test_lib"],
)
ts_library(
name = "app",
srcs = ["app.ts"],
deps = [":car"],
)
ts_devserver(
name = "devserver",
bootstrap = ["@build_bazel_rules_typescript//:protobufjs_bootstrap_scripts"],
entry_module = "build_bazel_rules_typescript/examples/protocol_buffers/app",
port = 8080,
deps = [":app"],
)
# Test for production mode
rollup_bundle(
name = "bundle",
entry_point = "examples/protocol_buffers/app",
# TODO(alexeagle): we should be able to get this from //:protobufjs_bootstrap_scripts
# and automatically plumb it through to Rollup.
globals = {
"long": "Long",
"protobufjs/minimal": "protobuf",
},
deps = [":app"],
)
# Needed because the prodserver only loads static files that appear under this
# package.
genrule(
name = "protobufjs",
srcs = [
"@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/protobufjs:dist/minimal/protobuf.min.js",
"@build_bazel_rules_typescript_protobufs_compiletime_deps//node_modules/long:dist/long.js",
],
outs = [
"protobuf.min.js",
"long.js",
],
cmd = "outs=($(OUTS)); d=$$(dirname $${outs[0]}); for s in $(SRCS); do cp $$s $$d; done",
)
http_server(
name = "prodserver",
data = [
"index.html",
":bundle",
":protobufjs",
],
)
ts_library(
name = "e2e",
testonly = 1,
srcs = ["app_e2e_test.ts"],
tsconfig = "//examples:tsconfig-test",
deps = [
"@npm//@types/jasmine",
"@npm//@types/node",
"@npm//protractor",
],
)