Skip to content

Commit 6f0c871

Browse files
committed
feat: demonstrate TypeScript node client
1 parent 3eb081d commit 6f0c871

File tree

15 files changed

+403
-1
lines changed

15 files changed

+403
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ bazel-*
22
.bazelrc.user
33
.idea/
44
.ijwb/
5+
node_modules/
56
# Ignore until it is more stable
67
MODULE.bazel.lock

examples/.bazelignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

examples/.bazelrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@ common --@aspect_rules_py//py:interpreter_version=3.9.18
44

55
# Force rules_go to disable CGO even though we have a (fake) C++ toolchain registered.
66
common --host_platform=//tools:no_cgo_host_platform
7+
common --@aspect_rules_ts//ts:skipLibCheck=always
8+
common --@aspect_rules_ts//ts:default_to_tsc_transpiler

examples/BUILD.bazel

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin")
2+
load("@aspect_rules_ts//ts:defs.bzl", "ts_config")
3+
load("@npm//:defs.bzl", "npm_link_all_packages")
4+
5+
package(default_visibility = ["//visibility:public"])
6+
7+
copy_to_bin(
8+
name = "package_json",
9+
srcs = ["package.json"],
10+
)
11+
12+
# Link all direct dependencies in /package.json to
13+
# bazel-bin/node_modules
14+
npm_link_all_packages(name = "node_modules")
15+
16+
ts_config(
17+
name = "tsconfig",
18+
src = "tsconfig.json",
19+
)

examples/MODULE.bazel

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
bazel_dep(name = "toolchains_protoc", version = "0.0.0")
22
bazel_dep(name = "aspect_bazel_lib", version = "2.11.0")
3+
bazel_dep(name = "aspect_rules_js", version = "2.2.0")
34
bazel_dep(name = "aspect_rules_py", version = "1.3.2")
5+
bazel_dep(name = "aspect_rules_ts", version = "3.5.1")
46
bazel_dep(name = "platforms", version = "0.0.11")
57
bazel_dep(name = "protobuf", version = "29.3")
68
bazel_dep(name = "rules_java", version = "8.6.3")
@@ -141,3 +143,30 @@ crate.spec(
141143
)
142144
crate.from_specs()
143145
use_repo(crate, "crates")
146+
147+
####### TYPESCRIPT ##########
148+
npm = use_extension(
149+
"@aspect_rules_js//npm:extensions.bzl",
150+
"npm",
151+
dev_dependency = True,
152+
)
153+
154+
pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm")
155+
156+
npm.npm_translate_lock(
157+
name = "npm",
158+
pnpm_lock = "//:pnpm-lock.yaml",
159+
)
160+
use_repo(npm, "npm")
161+
162+
use_repo(pnpm, "pnpm")
163+
164+
rules_ts_ext = use_extension(
165+
"@aspect_rules_ts//ts:extensions.bzl",
166+
"ext",
167+
dev_dependency = True,
168+
)
169+
rules_ts_ext.deps(
170+
ts_version_from = "//:package.json",
171+
)
172+
use_repo(rules_ts_ext, "npm_typescript")

examples/localhost+2-key.pem

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC04ZLZNMOIvhss
3+
9AmAIAYcQL++XytjkBrIJ8wwEg0hAUhRiMJwKo8tDuHvOlFUKzMlgVC8/tGe3Uwh
4+
bUb7/xgO5q3HmadzslMLbtt09MI9n9GrltxLAjKnef7I+BtkUhprXafGkHCcqtLU
5+
LImKTAVx+GlD7oo+bhIoI68+u4oR0zaLf4zfSuUn+VE4PuclaGSThllLZ0ryIGcJ
6+
RGvW0OFTweJKWxVCTgmXx4RSZeNpMoOuTcaYg/VxCCBwHuSjqlXcDmzVWR2DPoc3
7+
pnc3N2Iymf/eSGv2Gt7ZwW/ymN8CQ2LwTME5V3FlSsRhcdw7rLEfBm2GoTUp4ebT
8+
/gb+g1oxAgMBAAECggEBAI946TDuYDaDjCyw+SQuwooAdda7yD+12vhuUNDEULOg
9+
P8ukbY3oxB5aUq2dlUrs5SnXk8IFYSHgqHVPJ2HUqjGPmcHbx+3GQYatDNeNGNEm
10+
hnnTNLMucB1Vb9naqmd9lEUbSWv/v8MU4Bu5o/MVb7BB+MUQXYk9Z5t9CpD40oBl
11+
sckxi8UOJnvcc9S54Yu4uMFklHSyj3TMJU637k3O4auM2RgCbFjz39GWjNRiCkd5
12+
cPfDrohGErk/hu+7rNDRvjkn3CuHKDyM+YKBUiuog2mFE6pPy4eIweU8w8DWVFfC
13+
GV9PsqjsPDln9kzqz1mecMo5iZy+ZvoO1Tg8t7XtO90CgYEA0skaH894DDbQM/rl
14+
XQW86zMJo8rlVcsbWeWn5L75xpxYEgz4C/D51+YI3JKBleYMtTqSSNviYqbi83hG
15+
C7mmY+AA4L1SGzekMV1+P6/Y98F1+x8s5gugSlVx8dhFFWG+vk0p3Py1c3Cn0RKx
16+
nQMdKso3iamdY1Y2tUYbTjrIBJ8CgYEA265Tkv+mvoQfmKgGWvZBvmGMmgkfkQll
17+
EABCx7TQUNdw4dJWHf/g3nH0FgiJWHFMDKUapkChJRw/lLcapzi6lj99vWcgR1iG
18+
MrFF7x8H8V+P5JTbOihpCAfDDiqqwHOvwNB1NTSbJqFfuZdENSIQ0gP5BYbw8JRI
19+
tVQjmY283y8CgYAtMSajuVSQsdPTwTAZ0JgfiTLA5khjK4eyr3Veqr9coLqVLCim
20+
TsUST+SIffTAkbEZzfP9IP+ZjRRNhPTnoKcW9Ljbdlu7MCPI3bWqq+YFwHmuHJIA
21+
xG9aYJVsd6TgH7PIkzytf5TbqkSgo7Rm6HsBaJedsTroSFy0YtKJ5DpsGwKBgQCb
22+
eR7w1DoAb6Wk9pW43rvcr1FA2uAaV5nM30Jj8FXWQQNE7wW/qY5OIDvtNBFwJI78
23+
DAV2UBs8FmfxKj2Ux5NWLo0g9NFlbQNc8RVbjIykiUtfLPKSkHL1Gfk0F4JNPhLO
24+
1Tl+dEKx7le/E41URU2+NM2S2dO/kFJ88pVXYXagRQKBgQCWmbaf8muwldgIJ0BU
25+
+OBApkyC8MH3Zir/Y4ynpOs7oENM8urpO0PSs079IL8senrGour8YTesy85qxKTW
26+
Gfv8Vc/LOKWyFzXFTxa9zAIBowmoP1zqIpaUQxrYVckX+vZ4O8IQkVT7fslD1Im5
27+
bRSqtwV+DxNr0SI2Y8OWg32P3Q==
28+
-----END PRIVATE KEY-----

examples/localhost+2.pem

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIEbjCCAtagAwIBAgIRAPoGqA2zKkvJJU1IajOdtrowDQYJKoZIhvcNAQELBQAw
3+
gY8xHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEyMDAGA1UECwwpYWxl
4+
eGVhZ2xlQGFzcGVjdC1idWlsZC5sb2NhbCAoQWxleCBFYWdsZSkxOTA3BgNVBAMM
5+
MG1rY2VydCBhbGV4ZWFnbGVAYXNwZWN0LWJ1aWxkLmxvY2FsIChBbGV4IEVhZ2xl
6+
KTAeFw0yNTAzMTgwNjE3NDZaFw0yNzA2MTgwNjE3NDZaMF0xJzAlBgNVBAoTHm1r
7+
Y2VydCBkZXZlbG9wbWVudCBjZXJ0aWZpY2F0ZTEyMDAGA1UECwwpYWxleGVhZ2xl
8+
QGFzcGVjdC1idWlsZC5sb2NhbCAoQWxleCBFYWdsZSkwggEiMA0GCSqGSIb3DQEB
9+
AQUAA4IBDwAwggEKAoIBAQC04ZLZNMOIvhss9AmAIAYcQL++XytjkBrIJ8wwEg0h
10+
AUhRiMJwKo8tDuHvOlFUKzMlgVC8/tGe3UwhbUb7/xgO5q3HmadzslMLbtt09MI9
11+
n9GrltxLAjKnef7I+BtkUhprXafGkHCcqtLULImKTAVx+GlD7oo+bhIoI68+u4oR
12+
0zaLf4zfSuUn+VE4PuclaGSThllLZ0ryIGcJRGvW0OFTweJKWxVCTgmXx4RSZeNp
13+
MoOuTcaYg/VxCCBwHuSjqlXcDmzVWR2DPoc3pnc3N2Iymf/eSGv2Gt7ZwW/ymN8C
14+
Q2LwTME5V3FlSsRhcdw7rLEfBm2GoTUp4ebT/gb+g1oxAgMBAAGjdjB0MA4GA1Ud
15+
DwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBQv6gmv
16+
UFR+bA8FOi4MoBE3xtM9qTAsBgNVHREEJTAjgglsb2NhbGhvc3SHBH8AAAGHEAAA
17+
AAAAAAAAAAAAAAAAAAEwDQYJKoZIhvcNAQELBQADggGBAIiLii7TDzQ2g+uQ30fL
18+
ehDyooWo5fl1BKESmeeb9kimQqYgDtgFideMiuYMFKe3umUbj3pGCDDTWJCqtsMU
19+
26zrEqUP6VGEx/YSsira2zFIjY5P/Np58sZT+P7Pcrv7vBDJoUDUPCeCfM3NANfw
20+
x6eYpvi3lYDY9b6CgM4lOqlLFl3b7lIZbD4GK/z+ISzMJCyQw6fuJJn6muMzNtKd
21+
uYHienDAn5PbXdALqlV74U5g2dJy3YOE8NNmYN7pURSkEimSrYm/AQ4IGDP+8b4g
22+
EuNnN9muh5FOEoem6XwO3LD/OmJ0BhE03lkVYZa8bLiBE1xR0B70L+RFKv4DfIln
23+
dGo7urW1nh8je6No0WLcJA7nUYe8NmzuzJGA6Id6y9vbIFv7e5jBMu51IpQt5l4h
24+
3983u7HEa2Th054KjhaEj922qcO6URUesajOsiEPQlaA1hgVMdS/vDN0G7dSryJT
25+
ENy5wq9yXSq39716XvgjUkpcD41rb+z3+AGP6giqnco/eQ==
26+
-----END CERTIFICATE-----

examples/package.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"dependencies": {
3+
"@bufbuild/protobuf": "^2.2.4",
4+
"@connectrpc/connect-node": "2.0.2"
5+
},
6+
"devDependencies": {
7+
"@bufbuild/protoc-gen-es": "~2.2.4",
8+
"@connectrpc/connect": "~2.0.2",
9+
"typescript": "5.7.2",
10+
"@types/node": "~22.13.10"
11+
},
12+
"type": "module"
13+
}

examples/pnpm-lock.yaml

Lines changed: 160 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/proto/BUILD.bazel

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
load("@aspect_rules_ts//ts:proto.bzl", "ts_proto_library")
12
load("@rules_go//proto:def.bzl", "go_proto_library")
23
load("@rules_proto//proto:defs.bzl", "proto_library")
34
load("@rules_rust_prost//:defs.bzl", "rust_prost_library")
@@ -37,3 +38,11 @@ rust_prost_library(
3738
proto = ":greeter_proto",
3839
visibility = ["//visibility:public"],
3940
)
41+
42+
ts_proto_library(
43+
name = "greeter_ts_proto",
44+
gen_connect_es = False,
45+
node_modules = "//:node_modules",
46+
proto = ":greeter_proto",
47+
proto_srcs = ["greeter.proto"], # to copy greeter.d.ts back to the source tree
48+
)

0 commit comments

Comments
 (0)