From d970b725ab33602a759164edb14e391858ee1383 Mon Sep 17 00:00:00 2001 From: Orne Brocaar Date: Mon, 1 Apr 2024 11:22:02 +0100 Subject: [PATCH] api: Update js + grpc-web dependencies + build in nix-shell. --- api/Dockerfile-grpc-web | 12 ------------ api/Dockerfile-js | 9 --------- api/Makefile | 4 ++-- api/docker-compose.yml | 14 -------------- api/grpc-web/Makefile | 32 ++++++++++++++++--------------- api/grpc-web/package.json | 4 ++-- api/grpc-web/yarn.lock | 22 ++++++++++----------- api/js/Makefile | 38 ++++++++++++++++++------------------- api/js/package.json | 2 +- api/js/yarn.lock | 40 +++++++++++++++++---------------------- shell.nix | 7 +++++-- ui/yarn.lock | 8 ++++---- 12 files changed, 78 insertions(+), 114 deletions(-) delete mode 100644 api/Dockerfile-grpc-web delete mode 100644 api/Dockerfile-js diff --git a/api/Dockerfile-grpc-web b/api/Dockerfile-grpc-web deleted file mode 100644 index 35ef2160..00000000 --- a/api/Dockerfile-grpc-web +++ /dev/null @@ -1,12 +0,0 @@ -FROM node:19 - -ENV PROJECT_PATH=/chirpstack/api -RUN apt update && apt install -y protobuf-compiler libprotobuf-dev git bash - -RUN git clone https://github.com/googleapis/googleapis.git /googleapis - -ADD https://github.com/grpc/grpc-web/releases/download/1.4.2/protoc-gen-grpc-web-1.4.2-linux-x86_64 /usr/bin/protoc-gen-grpc-web -RUN chmod +x /usr/bin/protoc-gen-grpc-web - -RUN mkdir -p $PROJECT_PATH -WORKDIR $PROJECT_PATH diff --git a/api/Dockerfile-js b/api/Dockerfile-js deleted file mode 100644 index 7e21e189..00000000 --- a/api/Dockerfile-js +++ /dev/null @@ -1,9 +0,0 @@ -FROM node:19 - -ENV PROJECT_PATH=/chirpstack/api -RUN apt update && apt install -y protobuf-compiler libprotobuf-dev git bash - -RUN git clone https://github.com/googleapis/googleapis.git /googleapis - -RUN mkdir -p $PROJECT_PATH -WORKDIR $PROJECT_PATH diff --git a/api/Makefile b/api/Makefile index cf2191a9..1ed01d03 100644 --- a/api/Makefile +++ b/api/Makefile @@ -7,13 +7,13 @@ rust: docker compose run --rm chirpstack-api-rust grpc-web: - docker compose run --rm chirpstack-api-grpc-web + cd grpc-web && make go: cd go && make js: - docker compose run --rm chirpstack-api-js + cd js && make python: docker compose run --rm chirpstack-api-python diff --git a/api/docker-compose.yml b/api/docker-compose.yml index d8e56895..aaa890d4 100644 --- a/api/docker-compose.yml +++ b/api/docker-compose.yml @@ -7,20 +7,6 @@ services: command: bash -c "cd rust && make all" volumes: - ./:/chirpstack/api - chirpstack-api-grpc-web: - build: - context: . - dockerfile: Dockerfile-grpc-web - command: bash -c "cd grpc-web && make all" - volumes: - - ./:/chirpstack/api - chirpstack-api-js: - build: - context: . - dockerfile: Dockerfile-js - command: bash -c "cd js && make all" - volumes: - - ./:/chirpstack/api chirpstack-api-python: build: context: . diff --git a/api/grpc-web/Makefile b/api/grpc-web/Makefile index a5f0e38e..de948ff3 100644 --- a/api/grpc-web/Makefile +++ b/api/grpc-web/Makefile @@ -1,6 +1,8 @@ .PHONY: common api google-api -PROTOC_ARGS := -I=/googleapis -I=../proto --js_out=import_style=commonjs:. --grpc-web_out=import_style=commonjs+dts,mode=grpcwebtext:. + +PROTOC_PATH := ./node_modules/grpc-tools/bin/protoc +PROTOC_ARGS := -I=../proto --js_out=import_style=commonjs:. --grpc-web_out=import_style=commonjs+dts,mode=grpcwebtext:. all: requirements common gw api integration google-api @@ -9,29 +11,29 @@ requirements: common: mkdir -p common - protoc $(PROTOC_ARGS) ../proto/common/common.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/common/common.proto gw: mkdir -p gw - protoc $(PROTOC_ARGS) ../proto/gw/gw.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/gw/gw.proto api: mkdir -p api - protoc $(PROTOC_ARGS) ../proto/api/internal.proto - protoc $(PROTOC_ARGS) ../proto/api/user.proto - protoc $(PROTOC_ARGS) ../proto/api/tenant.proto - protoc $(PROTOC_ARGS) ../proto/api/application.proto - protoc $(PROTOC_ARGS) ../proto/api/device_profile.proto - protoc $(PROTOC_ARGS) ../proto/api/device_profile_template.proto - protoc $(PROTOC_ARGS) ../proto/api/device.proto - protoc $(PROTOC_ARGS) ../proto/api/gateway.proto - protoc $(PROTOC_ARGS) ../proto/api/multicast_group.proto - protoc $(PROTOC_ARGS) ../proto/api/relay.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/api/internal.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/api/user.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/api/tenant.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/api/application.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/api/device_profile.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/api/device_profile_template.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/api/device.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/api/gateway.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/api/multicast_group.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/api/relay.proto integration: mkdir -p integration - protoc $(PROTOC_ARGS) ../proto/integration/integration.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/integration/integration.proto google-api: - protoc $(PROTOC_ARGS) /googleapis/google/api/*.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/google/api/*.proto diff --git a/api/grpc-web/package.json b/api/grpc-web/package.json index 12e7fa84..e98b8005 100644 --- a/api/grpc-web/package.json +++ b/api/grpc-web/package.json @@ -9,8 +9,8 @@ "typescript": "^5.1.6" }, "dependencies": { - "@types/google-protobuf": "^3.15.6", + "@types/google-protobuf": "^3.15.12", "google-protobuf": "^3.21.2", - "grpc-web": "^1.4.2" + "grpc-web": "^1.5.0" } } diff --git a/api/grpc-web/yarn.lock b/api/grpc-web/yarn.lock index 421a6ef0..4ca77165 100644 --- a/api/grpc-web/yarn.lock +++ b/api/grpc-web/yarn.lock @@ -17,10 +17,10 @@ semver "^7.3.5" tar "^6.1.11" -"@types/google-protobuf@^3.15.6": - version "3.15.6" - resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.6.tgz#674a69493ef2c849b95eafe69167ea59079eb504" - integrity sha512-pYVNNJ+winC4aek+lZp93sIKxnXt5qMkuKmaqS3WGuTq0Bw1ZDYNBgzG5kkdtwcv+GmYJGo3yEg6z2cKKAiEdw== +"@types/google-protobuf@^3.15.12": + version "3.15.12" + resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.12.tgz#eb2ba0eddd65712211a2b455dc6071d665ccf49b" + integrity sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ== abbrev@1: version "1.1.1" @@ -158,10 +158,10 @@ grpc-tools@^1.12.4: dependencies: "@mapbox/node-pre-gyp" "^1.0.5" -grpc-web@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/grpc-web/-/grpc-web-1.4.2.tgz#86995f76471ce6b2119106ec26f909b7b69e7d43" - integrity sha512-gUxWq42l5ldaRplcKb4Pw5O4XBONWZgz3vxIIXnfIeJj8Jc3wYiq2O4c9xzx/NGbbPEej4rhI62C9eTENwLGNw== +grpc-web@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/grpc-web/-/grpc-web-1.5.0.tgz#154e4007ab59a94bf7726b87ef6c5bd8815ecf6e" + integrity sha512-y1tS3BBIoiVSzKTDF3Hm7E8hV2n7YY7pO0Uo7depfWJqKzWE+SKr0jvHNIJsJJYILQlpYShpi/DRJJMbosgDMQ== has-unicode@^2.0.1: version "2.0.1" @@ -377,9 +377,9 @@ ts-protoc-gen@^0.15.0: google-protobuf "^3.15.5" typescript@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" - integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== + version "5.4.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.3.tgz#5c6fedd4c87bee01cd7a528a30145521f8e0feff" + integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg== util-deprecate@^1.0.1: version "1.0.2" diff --git a/api/js/Makefile b/api/js/Makefile index 691488df..cc91e847 100644 --- a/api/js/Makefile +++ b/api/js/Makefile @@ -3,7 +3,7 @@ PROTOC_PATH := ./node_modules/grpc-tools/bin/protoc PROTOC_GEN_TS_PATH := ./node_modules/.bin/protoc-gen-ts PROTOC_GEN_GRPC_PATH := ./node_modules/.bin/grpc_tools_node_protoc_plugin -PROTOC_ARGS := -I=/googleapis -I=../proto --plugin=protoc-gen-ts=$(PROTOC_GEN_TS_PATH) --plugin=protoc-gen-grpc=$(PROTOC_GEN_GRPC_PATH) --js_out=import_style=commonjs,binary:. --ts_out=service=grpc-node,mode=grpc-js:. +PROTOC_ARGS := -I=../proto --plugin=protoc-gen-ts=$(PROTOC_GEN_TS_PATH) --plugin=protoc-gen-grpc=$(PROTOC_GEN_GRPC_PATH) --js_out=import_style=commonjs,binary:. --ts_out=service=grpc-node,mode=grpc-js:. PROTOC_GRPC_ARGS := $(PROTOC_ARGS) --grpc_out=grpc_js:. all: requirements common gw api integration stream google-api @@ -12,31 +12,31 @@ requirements: yarn install common: - protoc $(PROTOC_ARGS) ../proto/common/common.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/common/common.proto gw: - protoc $(PROTOC_ARGS) ../proto/gw/gw.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/gw/gw.proto api: - protoc ${PROTOC_GRPC_ARGS} ../proto/api/internal.proto - protoc ${PROTOC_GRPC_ARGS} ../proto/api/user.proto - protoc ${PROTOC_GRPC_ARGS} ../proto/api/tenant.proto - protoc ${PROTOC_GRPC_ARGS} ../proto/api/application.proto - protoc ${PROTOC_GRPC_ARGS} ../proto/api/device_profile.proto - protoc ${PROTOC_GRPC_ARGS} ../proto/api/device_profile_template.proto - protoc ${PROTOC_GRPC_ARGS} ../proto/api/device.proto - protoc ${PROTOC_GRPC_ARGS} ../proto/api/gateway.proto - protoc ${PROTOC_GRPC_ARGS} ../proto/api/multicast_group.proto - protoc ${PROTOC_GRPC_ARGS} ../proto/api/relay.proto + $(PROTOC_PATH) ${PROTOC_GRPC_ARGS} ../proto/api/internal.proto + $(PROTOC_PATH) ${PROTOC_GRPC_ARGS} ../proto/api/user.proto + $(PROTOC_PATH) ${PROTOC_GRPC_ARGS} ../proto/api/tenant.proto + $(PROTOC_PATH) ${PROTOC_GRPC_ARGS} ../proto/api/application.proto + $(PROTOC_PATH) ${PROTOC_GRPC_ARGS} ../proto/api/device_profile.proto + $(PROTOC_PATH) ${PROTOC_GRPC_ARGS} ../proto/api/device_profile_template.proto + $(PROTOC_PATH) ${PROTOC_GRPC_ARGS} ../proto/api/device.proto + $(PROTOC_PATH) ${PROTOC_GRPC_ARGS} ../proto/api/gateway.proto + $(PROTOC_PATH) ${PROTOC_GRPC_ARGS} ../proto/api/multicast_group.proto + $(PROTOC_PATH) ${PROTOC_GRPC_ARGS} ../proto/api/relay.proto integration: - protoc ${PROTOC_ARGS} ../proto/integration/integration.proto + $(PROTOC_PATH) ${PROTOC_ARGS} ../proto/integration/integration.proto stream: - protoc ${PROTOC_ARGS} ../proto/stream/meta.proto - protoc ${PROTOC_ARGS} ../proto/stream/frame.proto - protoc ${PROTOC_ARGS} ../proto/stream/api_request.proto - protoc ${PROTOC_ARGS} ../proto/stream/backend_interfaces.proto + $(PROTOC_PATH) ${PROTOC_ARGS} ../proto/stream/meta.proto + $(PROTOC_PATH) ${PROTOC_ARGS} ../proto/stream/frame.proto + $(PROTOC_PATH) ${PROTOC_ARGS} ../proto/stream/api_request.proto + $(PROTOC_PATH) ${PROTOC_ARGS} ../proto/stream/backend_interfaces.proto google-api: - protoc $(PROTOC_ARGS) /googleapis/google/api/*.proto + $(PROTOC_PATH) $(PROTOC_ARGS) ../proto/google/api/*.proto diff --git a/api/js/package.json b/api/js/package.json index c542403f..7bb2fedd 100644 --- a/api/js/package.json +++ b/api/js/package.json @@ -9,7 +9,7 @@ "typescript": "^5.1.6" }, "dependencies": { - "@grpc/grpc-js": "^1.9.0", + "@grpc/grpc-js": "^1.10.4", "@mapbox/node-pre-gyp": "^1.0.11", "@types/google-protobuf": "^3.15.6", "google-protobuf": "^3.21.2" diff --git a/api/js/yarn.lock b/api/js/yarn.lock index 33a7d89b..9c4155b6 100644 --- a/api/js/yarn.lock +++ b/api/js/yarn.lock @@ -2,25 +2,29 @@ # yarn lockfile v1 -"@grpc/grpc-js@^1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.0.tgz#bdb599e339adabb16aa7243e70c311f75a572867" - integrity sha512-H8+iZh+kCE6VR/Krj6W28Y/ZlxoZ1fOzsNt77nrdE3knkbSelW1Uus192xOFCxHyeszLj8i4APQkSIXjAoOxXg== +"@grpc/grpc-js@^1.10.4": + version "1.10.4" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.4.tgz#a33f743f69ed531e917c9eafb4fd8bc3e5f2e617" + integrity sha512-MqBisuxTkYvPFnEiu+dag3xG/NBUDzSbAFAWlzfkGnQkjVZ6by3h4atbBc+Ikqup1z5BfB4BN18gKWR1YyppNw== dependencies: - "@grpc/proto-loader" "^0.7.0" - "@types/node" ">=12.12.47" + "@grpc/proto-loader" "^0.7.10" + "@js-sdsl/ordered-map" "^4.4.2" -"@grpc/proto-loader@^0.7.0": - version "0.7.8" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.8.tgz#c050bbeae5f000a1919507f195a1b094e218036e" - integrity sha512-GU12e2c8dmdXb7XUlOgYWZ2o2i+z9/VeACkxTA/zzAe2IjclC5PnVL0lpgjhrqfpDYHzM8B1TF6pqWegMYAzlA== +"@grpc/proto-loader@^0.7.10": + version "0.7.12" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.12.tgz#787b58e3e3771df30b1567c057b6ab89e3a42911" + integrity sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q== dependencies: - "@types/long" "^4.0.1" lodash.camelcase "^4.3.0" - long "^4.0.0" + long "^5.0.0" protobufjs "^7.2.4" yargs "^17.7.2" +"@js-sdsl/ordered-map@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" + integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== + "@mapbox/node-pre-gyp@^1.0.11", "@mapbox/node-pre-gyp@^1.0.5": version "1.0.11" resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" @@ -94,12 +98,7 @@ resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.6.tgz#674a69493ef2c849b95eafe69167ea59079eb504" integrity sha512-pYVNNJ+winC4aek+lZp93sIKxnXt5qMkuKmaqS3WGuTq0Bw1ZDYNBgzG5kkdtwcv+GmYJGo3yEg6z2cKKAiEdw== -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/node@>=12.12.47", "@types/node@>=13.7.0": +"@types/node@>=13.7.0": version "20.4.8" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.8.tgz#b5dda19adaa473a9bf0ab5cbd8f30ec7d43f5c85" integrity sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg== @@ -314,11 +313,6 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - long@^5.0.0: version "5.2.3" resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" diff --git a/shell.nix b/shell.nix index d889574f..540c712f 100644 --- a/shell.nix +++ b/shell.nix @@ -11,8 +11,11 @@ pkgs.mkShell { pkgs.perl pkgs.cmake pkgs.clang - pkgs.postgresql # needed to build the diesel cli utility - pkgs.go # go api + pkgs.postgresql # needed to build the diesel cli utility + pkgs.go # go api + pkgs.nodejs # js api + ui + pkgs.yarn + pkgs.protoc-gen-grpc-web # grpc-web api ]; LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; BINDGEN_EXTRA_CLANG_ARGS = "-I${pkgs.llvmPackages.libclang.lib}/lib/clang/${pkgs.llvmPackages.libclang.version}/include"; diff --git a/ui/yarn.lock b/ui/yarn.lock index 6e252eff..ee3ec114 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -1258,9 +1258,9 @@ "@chirpstack/chirpstack-api-grpc-web@file:../api/grpc-web": version "4.7.0" dependencies: - "@types/google-protobuf" "^3.15.6" + "@types/google-protobuf" "^3.15.12" google-protobuf "^3.21.2" - grpc-web "^1.4.2" + grpc-web "^1.5.0" "@csstools/normalize.css@*": version "12.0.0" @@ -2260,7 +2260,7 @@ resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.13.tgz#e6e77ea9ecf36564980a861e24e62a095988775e" integrity sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ== -"@types/google-protobuf@^3.15.6": +"@types/google-protobuf@^3.15.12": version "3.15.12" resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.12.tgz#eb2ba0eddd65712211a2b455dc6071d665ccf49b" integrity sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ== @@ -5455,7 +5455,7 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -grpc-web@^1.4.2: +grpc-web@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/grpc-web/-/grpc-web-1.5.0.tgz#154e4007ab59a94bf7726b87ef6c5bd8815ecf6e" integrity sha512-y1tS3BBIoiVSzKTDF3Hm7E8hV2n7YY7pO0Uo7depfWJqKzWE+SKr0jvHNIJsJJYILQlpYShpi/DRJJMbosgDMQ==