From edfd74351e0a24d217ef3727e295eca5925949db Mon Sep 17 00:00:00 2001 From: Colin Laws Date: Tue, 12 Apr 2022 09:34:18 -0400 Subject: [PATCH 1/5] Added boolean option 'disable_service_types' to InternalOptions, with a corresponding option parser. --- packages/plugin/src/our-options.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/plugin/src/our-options.ts b/packages/plugin/src/our-options.ts index 6c3893b3..bca26581 100644 --- a/packages/plugin/src/our-options.ts +++ b/packages/plugin/src/our-options.ts @@ -201,6 +201,7 @@ export interface InternalOptions { readonly esLintDisable: boolean; readonly transpileTarget: ts.ScriptTarget | undefined, readonly transpileModule: ts.ModuleKind, + readonly disableServiceTypes: boolean; readonly addPbSuffix: boolean; } @@ -227,6 +228,7 @@ export function makeInternalOptions( client_none: boolean, client_grpc1: boolean, add_pb_suffix: boolean, + disable_service_types: boolean; output_typescript: boolean, output_javascript: boolean, output_javascript_es2015: boolean, @@ -265,6 +267,7 @@ export function makeInternalOptions( esLintDisable: false, transpileTarget: undefined, transpileModule: ts.ModuleKind.ES2015, + disableServiceTypes: false, addPbSuffix: false, }, ) as Writeable; @@ -328,6 +331,9 @@ export function makeInternalOptions( if (params?.add_pb_suffix) { o.addPbSuffix = true; } + if (params?.disable_service_types) { + o.disableServiceTypes = true; + } if (params?.output_javascript) { o.transpileTarget = ts.ScriptTarget.ES2020; } From 485d414dd33f701962a4ebf1521c6c00289f1625 Mon Sep 17 00:00:00 2001 From: Colin Laws Date: Tue, 12 Apr 2022 09:37:30 -0400 Subject: [PATCH 2/5] Added 'disable_service_types' to Plugin parameters. Added check to disable service metadata generation. --- packages/plugin/src/protobufts-plugin.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/plugin/src/protobufts-plugin.ts b/packages/plugin/src/protobufts-plugin.ts index 5001162c..7ae89c25 100644 --- a/packages/plugin/src/protobufts-plugin.ts +++ b/packages/plugin/src/protobufts-plugin.ts @@ -94,6 +94,9 @@ export class ProtobuftsPlugin extends PluginBase { "the default behaviour, this option has no effect.", excludes: ['eslint_disable'], }, + disable_service_types: { + description: 'Prevents the generation of service metadata.', + }, add_pb_suffix: { description: "Adds the suffix `_pb` to the names of all generated files. This will become the \n" + "default behaviour in the next major release.", @@ -309,10 +312,12 @@ export class ProtobuftsPlugin extends PluginBase { if (DescriptorProto.is(descriptor)) { genMessageType.generateMessageType(outMain, descriptor, optionResolver.getOptimizeMode(fileDescriptor)); } - if (ServiceDescriptorProto.is(descriptor)) { - // service type - genServiceType.generateServiceType(outMain, descriptor) + if (ServiceDescriptorProto.is(descriptor)) { + if (!options.disableServiceTypes) { + // service type + genServiceType.generateServiceType(outMain, descriptor); + } // clients const clientStyles = optionResolver.getClientStyles(descriptor); From 0350cb4e07d0165728f3b2dc9d2e797a9ae975fd Mon Sep 17 00:00:00 2001 From: Colin Laws Date: Mon, 6 Jun 2022 10:34:37 -0400 Subject: [PATCH 3/5] Renamed disable_service_types opt to force_disable_services, which now disables generation of services, clients, and server interfaces. --- packages/plugin/src/our-options.ts | 10 ++-- packages/plugin/src/protobufts-plugin.ts | 59 ++++++++++++------------ 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/packages/plugin/src/our-options.ts b/packages/plugin/src/our-options.ts index bca26581..b1aba511 100644 --- a/packages/plugin/src/our-options.ts +++ b/packages/plugin/src/our-options.ts @@ -201,7 +201,7 @@ export interface InternalOptions { readonly esLintDisable: boolean; readonly transpileTarget: ts.ScriptTarget | undefined, readonly transpileModule: ts.ModuleKind, - readonly disableServiceTypes: boolean; + readonly forceDisableServices: boolean; readonly addPbSuffix: boolean; } @@ -228,7 +228,7 @@ export function makeInternalOptions( client_none: boolean, client_grpc1: boolean, add_pb_suffix: boolean, - disable_service_types: boolean; + force_disable_services: boolean; output_typescript: boolean, output_javascript: boolean, output_javascript_es2015: boolean, @@ -267,7 +267,7 @@ export function makeInternalOptions( esLintDisable: false, transpileTarget: undefined, transpileModule: ts.ModuleKind.ES2015, - disableServiceTypes: false, + forceDisableServices: false, addPbSuffix: false, }, ) as Writeable; @@ -331,8 +331,8 @@ export function makeInternalOptions( if (params?.add_pb_suffix) { o.addPbSuffix = true; } - if (params?.disable_service_types) { - o.disableServiceTypes = true; + if (params?.force_disable_services) { + o.forceDisableServices = true; } if (params?.output_javascript) { o.transpileTarget = ts.ScriptTarget.ES2020; diff --git a/packages/plugin/src/protobufts-plugin.ts b/packages/plugin/src/protobufts-plugin.ts index 393f2420..b6a7fe2c 100644 --- a/packages/plugin/src/protobufts-plugin.ts +++ b/packages/plugin/src/protobufts-plugin.ts @@ -97,8 +97,9 @@ export class ProtobuftsPlugin extends PluginBase { "the default behaviour, this option has no effect.", excludes: ['eslint_disable'], }, - disable_service_types: { - description: 'Prevents the generation of service metadata.', + force_disable_services: { + description: 'Prevents the generation of GRPC services and clients.', + excludes: ['client_generic', 'client_grpc1', 'server_generic', 'server_grpc1'] }, add_pb_suffix: { description: "Adds the suffix `_pb` to the names of all generated files. This will become the \n" + @@ -155,12 +156,12 @@ export class ProtobuftsPlugin extends PluginBase { client_generic: { description: "Only applies to services that do *not* use the option `ts.client`. \n" + "Since GENERIC_CLIENT is the default, this option has no effect.", - excludes: ['client_none', 'client_grpc1', 'force_client_none'], + excludes: ['client_none', 'client_grpc1', 'force_client_none', 'force_disable_services'], }, client_grpc1: { description: "Generate a client using @grpc/grpc-js (major version 1). \n" + "Only applies to services that do *not* use the option `ts.client`." , - excludes: ['client_none', 'client_generic', 'force_client_none'], + excludes: ['client_none', 'client_generic', 'force_client_none', 'force_disable_services'], }, force_client_none: { description: "Do not generate rpc clients, ignore options in proto files.", @@ -187,13 +188,13 @@ export class ProtobuftsPlugin extends PluginBase { "for example @protobuf-ts/grpc-backend for gRPC. \n" + "Note that this is an experimental feature and may change with a minor release. \n" + "Only applies to services that do *not* use the option `ts.server`.", - excludes: ['server_none', 'force_server_none'], + excludes: ['server_none', 'force_server_none', 'force_disable_services'], }, server_grpc1: { description: "Generate a server interface and definition for use with @grpc/grpc-js \n" + "(major version 1). \n" + "Only applies to services that do *not* use the option `ts.server`.", - excludes: ['server_none', 'force_server_none'], + excludes: ['server_none', 'force_server_none', 'force_disable_services'], }, force_server_none: { description: "Do not generate rpc servers, ignore options in proto files.", @@ -316,31 +317,31 @@ export class ProtobuftsPlugin extends PluginBase { genMessageType.generateMessageType(outMain, descriptor, optionResolver.getOptimizeMode(fileDescriptor)); } - if (ServiceDescriptorProto.is(descriptor)) { - if (!options.disableServiceTypes) { + if (!options.forceDisableServices) { + if (ServiceDescriptorProto.is(descriptor)) { // service type genServiceType.generateServiceType(outMain, descriptor); - } - - // clients - const clientStyles = optionResolver.getClientStyles(descriptor); - if (clientStyles.includes(ClientStyle.GENERIC_CLIENT)) { - genClientGeneric.generateInterface(outClientCall, descriptor); - genClientGeneric.generateImplementationClass(outClientCall, descriptor); - } - if (clientStyles.includes(ClientStyle.GRPC1_CLIENT)) { - genClientGrpc.generateInterface(outClientGrpc, descriptor); - genClientGrpc.generateImplementationClass(outClientGrpc, descriptor); - } - - // servers - const serverStyles = optionResolver.getServerStyles(descriptor); - if (serverStyles.includes(ServerStyle.GENERIC_SERVER)) { - genServerGeneric.generateInterface(outServerGeneric, descriptor); - } - if (serverStyles.includes(ServerStyle.GRPC1_SERVER)) { - genServerGrpc.generateInterface(outServerGrpc, descriptor); - genServerGrpc.generateDefinition(outServerGrpc, descriptor); + + // clients + const clientStyles = optionResolver.getClientStyles(descriptor); + if (clientStyles.includes(ClientStyle.GENERIC_CLIENT)) { + genClientGeneric.generateInterface(outClientCall, descriptor); + genClientGeneric.generateImplementationClass(outClientCall, descriptor); + } + if (clientStyles.includes(ClientStyle.GRPC1_CLIENT)) { + genClientGrpc.generateInterface(outClientGrpc, descriptor); + genClientGrpc.generateImplementationClass(outClientGrpc, descriptor); + } + + // servers + const serverStyles = optionResolver.getServerStyles(descriptor); + if (serverStyles.includes(ServerStyle.GENERIC_SERVER)) { + genServerGeneric.generateInterface(outServerGeneric, descriptor); + } + if (serverStyles.includes(ServerStyle.GRPC1_SERVER)) { + genServerGrpc.generateInterface(outServerGrpc, descriptor); + genServerGrpc.generateDefinition(outServerGrpc, descriptor); + } } } }); From e380ea294c56f7db71fa6a625771456b0d792c39 Mon Sep 17 00:00:00 2001 From: Colin Laws Date: Mon, 6 Jun 2022 10:37:18 -0400 Subject: [PATCH 4/5] Adjusted the description of the force_disable_services opt. --- packages/plugin/src/protobufts-plugin.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin/src/protobufts-plugin.ts b/packages/plugin/src/protobufts-plugin.ts index b6a7fe2c..b7205b18 100644 --- a/packages/plugin/src/protobufts-plugin.ts +++ b/packages/plugin/src/protobufts-plugin.ts @@ -98,7 +98,7 @@ export class ProtobuftsPlugin extends PluginBase { excludes: ['eslint_disable'], }, force_disable_services: { - description: 'Prevents the generation of GRPC services and clients.', + description: 'Do not generate GRPC services, clients, or servers.', excludes: ['client_generic', 'client_grpc1', 'server_generic', 'server_grpc1'] }, add_pb_suffix: { From fe03435d519d3d7b3365ad3b9632c544b58d0c8f Mon Sep 17 00:00:00 2001 From: Timo Stamm Date: Thu, 16 Jun 2022 10:18:56 +0200 Subject: [PATCH 5/5] Update packages/plugin/src/protobufts-plugin.ts - hope you don't mind me --- packages/plugin/src/protobufts-plugin.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/plugin/src/protobufts-plugin.ts b/packages/plugin/src/protobufts-plugin.ts index b7205b18..04047380 100644 --- a/packages/plugin/src/protobufts-plugin.ts +++ b/packages/plugin/src/protobufts-plugin.ts @@ -98,7 +98,10 @@ export class ProtobuftsPlugin extends PluginBase { excludes: ['eslint_disable'], }, force_disable_services: { - description: 'Do not generate GRPC services, clients, or servers.', + description: "Do not generate anything for service definitions, and \n" + + "ignore options in proto files. This is the same as setting both \n" + + "`force_server_none` and `force_client_none`, but also stops \n" + + "generating service metadata." excludes: ['client_generic', 'client_grpc1', 'server_generic', 'server_grpc1'] }, add_pb_suffix: {