diff --git a/WORKSPACE b/WORKSPACE index 23ba93d7..022f2251 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,4 +1,10 @@ -workspace(name = "com_google_googleapis") +workspace( + name = "com_google_googleapis", + # This tells Bazel that the node_modules directory is special and + # is managed by the package manager. + # https://bazelbuild.github.io/rules_nodejs/install.html + managed_directories = {"@npm": ["@gapic_generator_typescript//:node_modules"]} +) load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") @@ -254,6 +260,48 @@ load("@com_googleapis_gapic_generator_go//rules_go_gapic:go_gapic_repositories.b go_gapic_repositories() +############################################################################## +# TypeScript +############################################################################## + +### TypeScript generator +http_archive( + name = "gapic_generator_typescript", + urls = ["https://github.com/googleapis/gapic-generator-typescript/archive/v0.99.0.tar.gz"], + strip_prefix = "gapic-generator-typescript-0.99.0", +) + +### Dependencies of the TypeScript generator +http_archive( + name = "build_bazel_rules_nodejs", + sha256 = "d14076339deb08e5460c221fae5c5e9605d2ef4848eee1f0c81c9ffdc1ab31c1", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/1.6.1/rules_nodejs-1.6.1.tar.gz"], +) + +load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") +node_repositories( + package_json = ["@gapic_generator_typescript//:package.json"] +) +yarn_install( + name = "npm", + package_json = "@gapic_generator_typescript//:package.json", + yarn_lock = "@gapic_generator_typescript//:yarn.lock", +) +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") +install_bazel_dependencies() + +load("@npm_bazel_typescript//:index.bzl", "ts_setup_workspace") +ts_setup_workspace() + +# Note: TypeScript libraries use third-party protobuf dependency, +# protobuf.js, and official Bazel rules have a special rule to +# install this dependency and its transitive dependencies. +yarn_install( + name = "build_bazel_rules_typescript_protobufs_compiletime_deps", + package_json = "@npm_bazel_labs//protobufjs:package.json", + yarn_lock = "@npm_bazel_labs//protobufjs:yarn.lock", +) + ############################################################################## # PHP ############################################################################## diff --git a/repository_rules.bzl b/repository_rules.bzl index 32d461e2..7bbcb887 100644 --- a/repository_rules.bzl +++ b/repository_rules.bzl @@ -243,11 +243,13 @@ def switched_rules_by_language( # rules["nodejs_gapic_library"] = _switch( nodejs and grpc and gapic, - "@com_google_api_codegen//rules_gapic/nodejs:nodejs_gapic.bzl", + "@gapic_generator_typescript//rules_typescript_gapic:typescript_gapic.bzl", + "typescript_gapic_library", ) rules["nodejs_gapic_assembly_pkg"] = _switch( nodejs and grpc and gapic, - "@com_google_api_codegen//rules_gapic/nodejs:nodejs_gapic_pkg.bzl", + "@gapic_generator_typescript//rules_typescript_gapic:typescript_gapic_pkg.bzl", + "typescript_gapic_assembly_pkg", ) #