Skip to content

Commit b3f912c

Browse files
authored
Added disable_service_types option to protobuf-ts/plugin for disabling service metadata generation (#268)
1 parent dffaada commit b3f912c

File tree

2 files changed

+42
-27
lines changed

2 files changed

+42
-27
lines changed

packages/plugin/src/our-options.ts

+6
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ export interface InternalOptions {
201201
readonly esLintDisable: boolean;
202202
readonly transpileTarget: ts.ScriptTarget | undefined,
203203
readonly transpileModule: ts.ModuleKind,
204+
readonly forceDisableServices: boolean;
204205
readonly addPbSuffix: boolean;
205206
}
206207

@@ -227,6 +228,7 @@ export function makeInternalOptions(
227228
client_none: boolean,
228229
client_grpc1: boolean,
229230
add_pb_suffix: boolean,
231+
force_disable_services: boolean;
230232
output_typescript: boolean,
231233
output_javascript: boolean,
232234
output_javascript_es2015: boolean,
@@ -265,6 +267,7 @@ export function makeInternalOptions(
265267
esLintDisable: false,
266268
transpileTarget: undefined,
267269
transpileModule: ts.ModuleKind.ES2015,
270+
forceDisableServices: false,
268271
addPbSuffix: false,
269272
},
270273
) as Writeable<InternalOptions>;
@@ -328,6 +331,9 @@ export function makeInternalOptions(
328331
if (params?.add_pb_suffix) {
329332
o.addPbSuffix = true;
330333
}
334+
if (params?.force_disable_services) {
335+
o.forceDisableServices = true;
336+
}
331337
if (params?.output_javascript) {
332338
o.transpileTarget = ts.ScriptTarget.ES2020;
333339
}

packages/plugin/src/protobufts-plugin.ts

+36-27
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ export class ProtobuftsPlugin extends PluginBase {
9797
"the default behaviour, this option has no effect.",
9898
excludes: ['eslint_disable'],
9999
},
100+
force_disable_services: {
101+
description: "Do not generate anything for service definitions, and \n" +
102+
"ignore options in proto files. This is the same as setting both \n" +
103+
"`force_server_none` and `force_client_none`, but also stops \n" +
104+
"generating service metadata."
105+
excludes: ['client_generic', 'client_grpc1', 'server_generic', 'server_grpc1']
106+
},
100107
add_pb_suffix: {
101108
description: "Adds the suffix `_pb` to the names of all generated files. This will become the \n" +
102109
"default behaviour in the next major release.",
@@ -152,12 +159,12 @@ export class ProtobuftsPlugin extends PluginBase {
152159
client_generic: {
153160
description: "Only applies to services that do *not* use the option `ts.client`. \n" +
154161
"Since GENERIC_CLIENT is the default, this option has no effect.",
155-
excludes: ['client_none', 'client_grpc1', 'force_client_none'],
162+
excludes: ['client_none', 'client_grpc1', 'force_client_none', 'force_disable_services'],
156163
},
157164
client_grpc1: {
158165
description: "Generate a client using @grpc/grpc-js (major version 1). \n" +
159166
"Only applies to services that do *not* use the option `ts.client`." ,
160-
excludes: ['client_none', 'client_generic', 'force_client_none'],
167+
excludes: ['client_none', 'client_generic', 'force_client_none', 'force_disable_services'],
161168
},
162169
force_client_none: {
163170
description: "Do not generate rpc clients, ignore options in proto files.",
@@ -184,13 +191,13 @@ export class ProtobuftsPlugin extends PluginBase {
184191
"for example @protobuf-ts/grpc-backend for gRPC. \n" +
185192
"Note that this is an experimental feature and may change with a minor release. \n" +
186193
"Only applies to services that do *not* use the option `ts.server`.",
187-
excludes: ['server_none', 'force_server_none'],
194+
excludes: ['server_none', 'force_server_none', 'force_disable_services'],
188195
},
189196
server_grpc1: {
190197
description: "Generate a server interface and definition for use with @grpc/grpc-js \n" +
191198
"(major version 1). \n" +
192199
"Only applies to services that do *not* use the option `ts.server`.",
193-
excludes: ['server_none', 'force_server_none'],
200+
excludes: ['server_none', 'force_server_none', 'force_disable_services'],
194201
},
195202
force_server_none: {
196203
description: "Do not generate rpc servers, ignore options in proto files.",
@@ -312,30 +319,32 @@ export class ProtobuftsPlugin extends PluginBase {
312319
if (DescriptorProto.is(descriptor)) {
313320
genMessageType.generateMessageType(outMain, descriptor, optionResolver.getOptimizeMode(fileDescriptor));
314321
}
315-
if (ServiceDescriptorProto.is(descriptor)) {
316322

317-
// service type
318-
genServiceType.generateServiceType(outMain, descriptor)
319-
320-
// clients
321-
const clientStyles = optionResolver.getClientStyles(descriptor);
322-
if (clientStyles.includes(ClientStyle.GENERIC_CLIENT)) {
323-
genClientGeneric.generateInterface(outClientCall, descriptor);
324-
genClientGeneric.generateImplementationClass(outClientCall, descriptor);
325-
}
326-
if (clientStyles.includes(ClientStyle.GRPC1_CLIENT)) {
327-
genClientGrpc.generateInterface(outClientGrpc, descriptor);
328-
genClientGrpc.generateImplementationClass(outClientGrpc, descriptor);
329-
}
330-
331-
// servers
332-
const serverStyles = optionResolver.getServerStyles(descriptor);
333-
if (serverStyles.includes(ServerStyle.GENERIC_SERVER)) {
334-
genServerGeneric.generateInterface(outServerGeneric, descriptor);
335-
}
336-
if (serverStyles.includes(ServerStyle.GRPC1_SERVER)) {
337-
genServerGrpc.generateInterface(outServerGrpc, descriptor);
338-
genServerGrpc.generateDefinition(outServerGrpc, descriptor);
323+
if (!options.forceDisableServices) {
324+
if (ServiceDescriptorProto.is(descriptor)) {
325+
// service type
326+
genServiceType.generateServiceType(outMain, descriptor);
327+
328+
// clients
329+
const clientStyles = optionResolver.getClientStyles(descriptor);
330+
if (clientStyles.includes(ClientStyle.GENERIC_CLIENT)) {
331+
genClientGeneric.generateInterface(outClientCall, descriptor);
332+
genClientGeneric.generateImplementationClass(outClientCall, descriptor);
333+
}
334+
if (clientStyles.includes(ClientStyle.GRPC1_CLIENT)) {
335+
genClientGrpc.generateInterface(outClientGrpc, descriptor);
336+
genClientGrpc.generateImplementationClass(outClientGrpc, descriptor);
337+
}
338+
339+
// servers
340+
const serverStyles = optionResolver.getServerStyles(descriptor);
341+
if (serverStyles.includes(ServerStyle.GENERIC_SERVER)) {
342+
genServerGeneric.generateInterface(outServerGeneric, descriptor);
343+
}
344+
if (serverStyles.includes(ServerStyle.GRPC1_SERVER)) {
345+
genServerGrpc.generateInterface(outServerGrpc, descriptor);
346+
genServerGrpc.generateDefinition(outServerGrpc, descriptor);
347+
}
339348
}
340349
}
341350
});

0 commit comments

Comments
 (0)