From d3daabecc578bf0054d369ca4dd0cdde6dad9c84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20=C5=81=C4=85giewka?= Date: Tue, 7 Jul 2026 17:28:49 +0200 Subject: [PATCH 1/3] proto-loader: Update protobufjs dependency to 8.x --- packages/proto-loader/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/proto-loader/package.json b/packages/proto-loader/package.json index 7b748e175..672e1dffd 100644 --- a/packages/proto-loader/package.json +++ b/packages/proto-loader/package.json @@ -1,6 +1,6 @@ { "name": "@grpc/proto-loader", - "version": "0.8.1", + "version": "0.9.0", "author": "Google Inc.", "contributors": [ { @@ -47,7 +47,7 @@ "dependencies": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", - "protobufjs": "^7.5.5", + "protobufjs": "^8.7.0", "yargs": "^17.7.2" }, "devDependencies": { From 778e4810d1a6bda3e2020a6645353960fbc7efd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20=C5=81=C4=85giewka?= Date: Thu, 9 Jul 2026 21:51:52 +0200 Subject: [PATCH 2/3] proto-loader: use pbjs TS declarations Instead of keeping internal "declare module" override, use the upstream version added in https://github.com/protobufjs/protobuf.js/pull/2232 and released in v8.2.0. --- packages/proto-loader/src/index.ts | 40 +++--------------------------- 1 file changed, 3 insertions(+), 37 deletions(-) diff --git a/packages/proto-loader/src/index.ts b/packages/proto-loader/src/index.ts index c56b29215..d7e68d4e9 100644 --- a/packages/proto-loader/src/index.ts +++ b/packages/proto-loader/src/index.ts @@ -59,40 +59,6 @@ export function isAnyExtension(obj: object): obj is AnyExtension { return ('@type' in obj) && (typeof (obj as AnyExtension)['@type'] === 'string'); } -declare module 'protobufjs' { - interface Type { - toDescriptor( - protoVersion: string - ): Protobuf.Message & - descriptor.IDescriptorProto; - } - - interface RootConstructor { - new (options?: Options): Root; - fromDescriptor( - descriptorSet: - | descriptor.IFileDescriptorSet - | Protobuf.Reader - | Uint8Array - ): Root; - fromJSON(json: Protobuf.INamespace, root?: Root): Root; - } - - interface Root { - toDescriptor( - protoVersion: string - ): Protobuf.Message & - descriptor.IFileDescriptorSet; - } - - interface Enum { - toDescriptor( - protoVersion: string - ): Protobuf.Message & - descriptor.IEnumDescriptorProto; - } -} - export interface Serialize { (value: T): Buffer; } @@ -342,7 +308,7 @@ function createEnumDefinition( ): EnumTypeDefinition { const enumDescriptor: protobuf.Message< descriptor.IEnumDescriptorProto - > = enumType.toDescriptor('proto3'); + > = enumType.toDescriptor(); return { format: 'Protocol Buffer 3 EnumDescriptorProto', type: enumDescriptor.$type.toObject(enumDescriptor, descriptorOptions), @@ -398,8 +364,8 @@ function createPackageDefinitionFromDescriptorSet( ) { options = options || {}; - const root = (Protobuf.Root as Protobuf.RootConstructor).fromDescriptor( - decodedDescriptorSet + const root = Protobuf.Root.fromDescriptor( + decodedDescriptorSet, ); root.resolveAll(); return createPackageDefinition(root, options); From 4f1da30fe377fe63a1a4a1ab66dfede5427426dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20=C5=81=C4=85giewka?= Date: Thu, 9 Jul 2026 21:58:19 +0200 Subject: [PATCH 3/3] proto-loader: pass keepCase to Root.fromDescriptor As per the note in https://github.com/grpc/grpc-node/issues/3062#issuecomment-4691045295 --- packages/proto-loader/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/proto-loader/src/index.ts b/packages/proto-loader/src/index.ts index d7e68d4e9..110f9db86 100644 --- a/packages/proto-loader/src/index.ts +++ b/packages/proto-loader/src/index.ts @@ -366,6 +366,7 @@ function createPackageDefinitionFromDescriptorSet( const root = Protobuf.Root.fromDescriptor( decodedDescriptorSet, + {keepCase: options.keepCase} ); root.resolveAll(); return createPackageDefinition(root, options);