diff --git a/package.json b/package.json index f151ef1..863b42e 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "prepare": "yarn run compile", "pretest": "yarn run compile && yarn run fix", "posttest": "yarn run check", - "protoc": "grpc_tools_node_protoc --js_out=import_style=commonjs,binary:./src --grpc_out=grpc_js:./src --ts_out=grpc_js:./src --plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts -I ./static/grpc/reflection/v1alpha reflection.proto", + "protoc": "node scripts/compile-protoc", "build": "yarn run compile && yarn run fix && yarn run check" }, "files": [ diff --git a/scripts/compile-protoc.js b/scripts/compile-protoc.js new file mode 100644 index 0000000..43973c6 --- /dev/null +++ b/scripts/compile-protoc.js @@ -0,0 +1,40 @@ +const fs = require('fs'); +const {execSync} = require('child_process'); + +const supportedProtocols = ['v1alpha', 'v1']; + +async function main() { + for (const protocol of supportedProtocols) { + if (fs.existsSync(`./src/reflection_providers/${protocol}`)) { + fs.rmdirSync(`./src/reflection_providers/${protocol}`, {recursive: true}); + } + + fs.mkdirSync(`./src/reflection_providers/${protocol}`); + + console.log( + `Compiling protocol buffers and building services + clients for protocol: ${protocol}...\n` + ); + + const command = [ + 'grpc_tools_node_protoc', + `--js_out=import_style=commonjs,binary:./src/reflection_providers/${protocol}`, + `--grpc_out=grpc_js:./src/reflection_providers/${protocol}`, + `--ts_out=grpc_js:./src/reflection_providers/${protocol}`, + '--plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts', + `-I ./static/grpc/reflection/${protocol}`, + 'reflection.proto', + ].join(' '); + + execSync(command, {stdio: 'inherit'}); + + console.log('Compilation done for', protocol, '\n'); + } + + console.log('Protocol buffers compilation completed.'); +} + +main().catch(err => { + console.error('Error during protocol buffers compilation:'); + + throw err; +}); diff --git a/src/client.ts b/src/client.ts index 5fa9676..eb10bf9 100644 --- a/src/client.ts +++ b/src/client.ts @@ -1,10 +1,10 @@ -import {ChannelCredentials, Metadata, ServiceError} from '@postman/grpc-js'; -import {getDescriptorRootFromDescriptorSet} from './descriptor'; -import * as services from './reflection_grpc_pb'; import { - ServerReflectionRequest, - ServerReflectionResponse, -} from './reflection_pb'; + ChannelCredentials, + Metadata, + ServiceError, + status as GrpcStatus, +} from '@postman/grpc-js'; +import {getDescriptorRootFromDescriptorSet} from './descriptor'; import {Root} from '@postman/protobufjs'; import { FileDescriptorSet, @@ -13,26 +13,191 @@ import { } from '@postman/protobufjs/ext/descriptor'; import set from 'lodash.set'; +// Static type definitions with common structures across all reflection providers +import type {ServerReflectionClient} from './reflection_providers/v1alpha/reflection_grpc_pb'; +import type { + ServerReflectionRequest, + ServerReflectionResponse, +} from './reflection_providers/v1alpha/reflection_pb'; + +const supportedReflectionAPIVersions = { + v1alpha: { + priority: 0, + serviceName: 'grpc.reflection.v1alpha.ServerReflection', + client: import('./reflection_providers/v1alpha/reflection_pb'), + service: import('./reflection_providers/v1alpha/reflection_grpc_pb'), + }, + v1: { + priority: 1, + serviceName: 'grpc.reflection.v1.ServerReflection', + client: import('./reflection_providers/v1/reflection_pb'), + service: import('./reflection_providers/v1/reflection_grpc_pb'), + }, +}; + export class Client { metadata: Metadata; - grpcClient: services.IServerReflectionClient; private fileDescriptorCache: Map = new Map(); + private url: string; + private credentials: ChannelCredentials; + private clientOptions: object | undefined; + + grpcClient: ServerReflectionClient | undefined; + compatibleReflectionVersion: string | undefined; + private reflectionResponseCache: ServerReflectionResponse | undefined; + private CompatibleServerReflectionRequest: + | (new ( + ...args: ConstructorParameters + ) => ServerReflectionRequest) + | undefined; + constructor( url: string, credentials: ChannelCredentials, options?: object, metadata?: Metadata ) { + this.url = url; + this.credentials = credentials; + this.clientOptions = options; this.fileDescriptorCache = new Map(); this.metadata = metadata || new Metadata(); - this.grpcClient = new services.ServerReflectionClient( - url, - credentials, - options - ); } - listServices(): Promise { + private async sendReflectionRequest( + request: ServerReflectionRequest | ServerReflectionRequest[], + client?: ServerReflectionClient + ): Promise { + return new Promise((resolve, reject) => { + const result: ServerReflectionResponse[] = []; + + const grpcCall = (client || this.grpcClient!).serverReflectionInfo( + this.metadata + ); + + grpcCall.on('data', (response: ServerReflectionResponse) => { + result.push(response); + }); + + grpcCall.on('error', (error: ServiceError) => { + reject(error); + }); + + grpcCall.on('end', () => resolve(result)); + + if (Array.isArray(request)) { + request.forEach(req => grpcCall.write(req)); + } else { + grpcCall.write(request); + } + + grpcCall.end(); + }); + } + + private async evaluateSupportedServerReflectionProtocol() { + const evaluationPromises = []; + + // Check version compatibility and initialize gRPC client based on that + for (const version of Object.keys(supportedReflectionAPIVersions)) { + type ReflectionCheckPromiseReturnType = { + successful: boolean; + priority: number; + effect?: () => void; + error?: ServiceError; + }; + + evaluationPromises.push( + // eslint-disable-next-line no-async-promise-executor + new Promise(async resolve => { + const protocolConfig = + supportedReflectionAPIVersions[ + version as keyof typeof supportedReflectionAPIVersions + ]; + const { + service: servicePromise, + client: clientPromise, + } = protocolConfig; + + const [protocolService, protocolClient] = await Promise.all([ + servicePromise, + clientPromise, + ]); + + const grpcClientForProtocol = new protocolService.ServerReflectionClient( + this.url, + this.credentials, + this.clientOptions + ); + + const request = new protocolClient.ServerReflectionRequest(); + + request.setListServices('*'); + + try { + const [reflectionResponse] = await this.sendReflectionRequest( + request, + grpcClientForProtocol + ); + + return resolve({ + successful: true, + priority: protocolConfig.priority, + effect: () => { + this.grpcClient = grpcClientForProtocol; + this.compatibleReflectionVersion = version; + this.CompatibleServerReflectionRequest = + protocolClient.ServerReflectionRequest; + this.reflectionResponseCache = reflectionResponse; + }, + }); + } catch (error) { + return resolve({ + successful: false, + priority: protocolConfig.priority, + error: error as ServiceError, + }); + } + }) + ); + } + + const evaluationResults = await Promise.all(evaluationPromises); + + const [successfulReflectionByPriority] = evaluationResults + .filter(res => res.successful) + .sort((res1, res2) => res2.priority - res1.priority); + + if (!successfulReflectionByPriority) { + const reflectionNotImplementedError = evaluationResults.find(res => { + return res.error && res.error.code === GrpcStatus.UNIMPLEMENTED; + }); + + const resultWithServiceError = evaluationResults.find(res => { + // Something is actually wrong with the gRPC service + return res.error && res.error.code !== GrpcStatus.UNIMPLEMENTED; + }); + + throw ( + resultWithServiceError?.error || + reflectionNotImplementedError?.error || + new Error('No compatible reflection API found.') + ); + } + + // Set grpc client and other properties based on highest priority successful version + successfulReflectionByPriority.effect!(); + } + + async initialize() { + if (this.grpcClient || this.compatibleReflectionVersion) return; + + await this.evaluateSupportedServerReflectionProtocol(); + } + + async listServices(): Promise { + await this.initialize(); + return new Promise((resolve, reject) => { function dataCallback(response: ServerReflectionResponse) { if (response.hasListServicesResponse()) { @@ -52,14 +217,16 @@ export class Client { reject(e); } - const request = new ServerReflectionRequest(); + if (this.reflectionResponseCache) { + return dataCallback(this.reflectionResponseCache); + } + + const request = new this.CompatibleServerReflectionRequest!(); request.setListServices('*'); - const grpcCall = this.grpcClient.serverReflectionInfo(this.metadata); - grpcCall.on('data', dataCallback); - grpcCall.on('error', errorCallback); - grpcCall.write(request); - grpcCall.end(); + this.sendReflectionRequest(request) + .then(([response]) => dataCallback(response)) + .catch(errorCallback); }); } @@ -120,9 +287,11 @@ export class Client { return fileDescriptorMap; } - private getFileContainingSymbol( + private async getFileContainingSymbol( symbol: string ): Promise | undefined> { + await this.initialize(); + const fileDescriptorCache = this.fileDescriptorCache; return new Promise((resolve, reject) => { function dataCallback(response: ServerReflectionResponse) { @@ -154,20 +323,20 @@ export class Client { reject(e); } - const request = new ServerReflectionRequest(); + const request = new this.CompatibleServerReflectionRequest!(); request.setFileContainingSymbol(symbol); - const grpcCall = this.grpcClient.serverReflectionInfo(this.metadata); - grpcCall.on('data', dataCallback); - grpcCall.on('error', errorCallback); - grpcCall.write(request); - grpcCall.end(); + this.sendReflectionRequest(request) + .then(([response]) => dataCallback(response)) + .catch(errorCallback); }); } - private getFilesByFilenames( + private async getFilesByFilenames( symbols: string[] ): Promise | undefined> { + await this.initialize(); + const result: Array = []; const fileDescriptorCache = this.fileDescriptorCache; const symbolsToFetch = symbols.filter(symbol => { @@ -203,6 +372,13 @@ export class Client { result.push(fileDescriptorProto); } }); + } else if (response.hasErrorResponse()) { + const err = response.getErrorResponse(); + reject( + new Error( + `Error: ${err?.getErrorCode()}: ${err?.getErrorMessage()}` + ) + ); } else { reject(Error()); } @@ -212,19 +388,17 @@ export class Client { reject(e); } - const grpcCall = this.grpcClient.serverReflectionInfo(this.metadata); - grpcCall.on('data', dataCallback); - grpcCall.on('error', errorCallback); - grpcCall.on('end', () => { - resolve(result); + const requests = symbolsToFetch.map(symbol => { + const request = new this.CompatibleServerReflectionRequest!(); + return request.setFileByFilename(symbol); }); - symbolsToFetch.forEach(symbol => { - const request = new ServerReflectionRequest(); - grpcCall.write(request.setFileByFilename(symbol)); - }); - - grpcCall.end(); + this.sendReflectionRequest(requests) + .then(responses => { + for (const dataBit of responses) dataCallback(dataBit); + resolve(result); + }) + .catch(errorCallback); }); } } diff --git a/src/reflection_providers/v1/reflection_grpc_pb.d.ts b/src/reflection_providers/v1/reflection_grpc_pb.d.ts new file mode 100644 index 0000000..b541f9b --- /dev/null +++ b/src/reflection_providers/v1/reflection_grpc_pb.d.ts @@ -0,0 +1,40 @@ +// package: grpc.reflection.v1 +// file: reflection.proto + +/* tslint:disable */ +/* eslint-disable */ + +import * as grpc from "@postman/grpc-js"; +import * as reflection_pb from "./reflection_pb"; + +interface IServerReflectionService extends grpc.ServiceDefinition { + serverReflectionInfo: IServerReflectionService_IServerReflectionInfo; +} + +interface IServerReflectionService_IServerReflectionInfo extends grpc.MethodDefinition { + path: "/grpc.reflection.v1.ServerReflection/ServerReflectionInfo"; + requestStream: true; + responseStream: true; + requestSerialize: grpc.serialize; + requestDeserialize: grpc.deserialize; + responseSerialize: grpc.serialize; + responseDeserialize: grpc.deserialize; +} + +export const ServerReflectionService: IServerReflectionService; + +export interface IServerReflectionServer extends grpc.UntypedServiceImplementation { + serverReflectionInfo: grpc.handleBidiStreamingCall; +} + +export interface IServerReflectionClient { + serverReflectionInfo(): grpc.ClientDuplexStream; + serverReflectionInfo(options: Partial): grpc.ClientDuplexStream; + serverReflectionInfo(metadata: grpc.Metadata, options?: Partial): grpc.ClientDuplexStream; +} + +export class ServerReflectionClient extends grpc.Client implements IServerReflectionClient { + constructor(address: string, credentials: grpc.ChannelCredentials, options?: Partial); + public serverReflectionInfo(options?: Partial): grpc.ClientDuplexStream; + public serverReflectionInfo(metadata?: grpc.Metadata, options?: Partial): grpc.ClientDuplexStream; +} diff --git a/src/reflection_providers/v1/reflection_grpc_pb.js b/src/reflection_providers/v1/reflection_grpc_pb.js new file mode 100644 index 0000000..89844c6 --- /dev/null +++ b/src/reflection_providers/v1/reflection_grpc_pb.js @@ -0,0 +1,68 @@ +// GENERATED CODE -- DO NOT EDIT! + +// Original file comments: +// Copyright 2016 The gRPC Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Service exported by server reflection. A more complete description of how +// server reflection works can be found at +// https://github.com/grpc/grpc/blob/master/doc/server-reflection.md +// +// The canonical version of this proto can be found at +// https://github.com/grpc/grpc-proto/blob/master/grpc/reflection/v1/reflection.proto +// +'use strict'; +var grpc = require('@postman/grpc-js'); +var reflection_pb = require('./reflection_pb.js'); + +function serialize_grpc_reflection_v1_ServerReflectionRequest(arg) { + if (!(arg instanceof reflection_pb.ServerReflectionRequest)) { + throw new Error('Expected argument of type grpc.reflection.v1.ServerReflectionRequest'); + } + return Buffer.from(arg.serializeBinary()); +} + +function deserialize_grpc_reflection_v1_ServerReflectionRequest(buffer_arg) { + return reflection_pb.ServerReflectionRequest.deserializeBinary(new Uint8Array(buffer_arg)); +} + +function serialize_grpc_reflection_v1_ServerReflectionResponse(arg) { + if (!(arg instanceof reflection_pb.ServerReflectionResponse)) { + throw new Error('Expected argument of type grpc.reflection.v1.ServerReflectionResponse'); + } + return Buffer.from(arg.serializeBinary()); +} + +function deserialize_grpc_reflection_v1_ServerReflectionResponse(buffer_arg) { + return reflection_pb.ServerReflectionResponse.deserializeBinary(new Uint8Array(buffer_arg)); +} + + +var ServerReflectionService = exports.ServerReflectionService = { + // The reflection service is structured as a bidirectional stream, ensuring +// all related requests go to a single server. +serverReflectionInfo: { + path: '/grpc.reflection.v1.ServerReflection/ServerReflectionInfo', + requestStream: true, + responseStream: true, + requestType: reflection_pb.ServerReflectionRequest, + responseType: reflection_pb.ServerReflectionResponse, + requestSerialize: serialize_grpc_reflection_v1_ServerReflectionRequest, + requestDeserialize: deserialize_grpc_reflection_v1_ServerReflectionRequest, + responseSerialize: serialize_grpc_reflection_v1_ServerReflectionResponse, + responseDeserialize: deserialize_grpc_reflection_v1_ServerReflectionResponse, + }, +}; + +exports.ServerReflectionClient = grpc.makeGenericClientConstructor(ServerReflectionService, 'ServerReflection'); diff --git a/src/reflection_providers/v1/reflection_pb.d.ts b/src/reflection_providers/v1/reflection_pb.d.ts new file mode 100644 index 0000000..c890046 --- /dev/null +++ b/src/reflection_providers/v1/reflection_pb.d.ts @@ -0,0 +1,267 @@ +// package: grpc.reflection.v1 +// file: reflection.proto + +/* tslint:disable */ +/* eslint-disable */ + +import * as jspb from "google-protobuf"; + +export class ServerReflectionRequest extends jspb.Message { + getHost(): string; + setHost(value: string): ServerReflectionRequest; + + hasFileByFilename(): boolean; + clearFileByFilename(): void; + getFileByFilename(): string; + setFileByFilename(value: string): ServerReflectionRequest; + + hasFileContainingSymbol(): boolean; + clearFileContainingSymbol(): void; + getFileContainingSymbol(): string; + setFileContainingSymbol(value: string): ServerReflectionRequest; + + hasFileContainingExtension(): boolean; + clearFileContainingExtension(): void; + getFileContainingExtension(): ExtensionRequest | undefined; + setFileContainingExtension(value?: ExtensionRequest): ServerReflectionRequest; + + hasAllExtensionNumbersOfType(): boolean; + clearAllExtensionNumbersOfType(): void; + getAllExtensionNumbersOfType(): string; + setAllExtensionNumbersOfType(value: string): ServerReflectionRequest; + + hasListServices(): boolean; + clearListServices(): void; + getListServices(): string; + setListServices(value: string): ServerReflectionRequest; + + getMessageRequestCase(): ServerReflectionRequest.MessageRequestCase; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ServerReflectionRequest.AsObject; + static toObject(includeInstance: boolean, msg: ServerReflectionRequest): ServerReflectionRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ServerReflectionRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ServerReflectionRequest; + static deserializeBinaryFromReader(message: ServerReflectionRequest, reader: jspb.BinaryReader): ServerReflectionRequest; +} + +export namespace ServerReflectionRequest { + export type AsObject = { + host: string, + fileByFilename: string, + fileContainingSymbol: string, + fileContainingExtension?: ExtensionRequest.AsObject, + allExtensionNumbersOfType: string, + listServices: string, + } + + export enum MessageRequestCase { + MESSAGE_REQUEST_NOT_SET = 0, + FILE_BY_FILENAME = 3, + FILE_CONTAINING_SYMBOL = 4, + FILE_CONTAINING_EXTENSION = 5, + ALL_EXTENSION_NUMBERS_OF_TYPE = 6, + LIST_SERVICES = 7, + } + +} + +export class ExtensionRequest extends jspb.Message { + getContainingType(): string; + setContainingType(value: string): ExtensionRequest; + getExtensionNumber(): number; + setExtensionNumber(value: number): ExtensionRequest; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ExtensionRequest.AsObject; + static toObject(includeInstance: boolean, msg: ExtensionRequest): ExtensionRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ExtensionRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ExtensionRequest; + static deserializeBinaryFromReader(message: ExtensionRequest, reader: jspb.BinaryReader): ExtensionRequest; +} + +export namespace ExtensionRequest { + export type AsObject = { + containingType: string, + extensionNumber: number, + } +} + +export class ServerReflectionResponse extends jspb.Message { + getValidHost(): string; + setValidHost(value: string): ServerReflectionResponse; + + hasOriginalRequest(): boolean; + clearOriginalRequest(): void; + getOriginalRequest(): ServerReflectionRequest | undefined; + setOriginalRequest(value?: ServerReflectionRequest): ServerReflectionResponse; + + hasFileDescriptorResponse(): boolean; + clearFileDescriptorResponse(): void; + getFileDescriptorResponse(): FileDescriptorResponse | undefined; + setFileDescriptorResponse(value?: FileDescriptorResponse): ServerReflectionResponse; + + hasAllExtensionNumbersResponse(): boolean; + clearAllExtensionNumbersResponse(): void; + getAllExtensionNumbersResponse(): ExtensionNumberResponse | undefined; + setAllExtensionNumbersResponse(value?: ExtensionNumberResponse): ServerReflectionResponse; + + hasListServicesResponse(): boolean; + clearListServicesResponse(): void; + getListServicesResponse(): ListServiceResponse | undefined; + setListServicesResponse(value?: ListServiceResponse): ServerReflectionResponse; + + hasErrorResponse(): boolean; + clearErrorResponse(): void; + getErrorResponse(): ErrorResponse | undefined; + setErrorResponse(value?: ErrorResponse): ServerReflectionResponse; + + getMessageResponseCase(): ServerReflectionResponse.MessageResponseCase; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ServerReflectionResponse.AsObject; + static toObject(includeInstance: boolean, msg: ServerReflectionResponse): ServerReflectionResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ServerReflectionResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ServerReflectionResponse; + static deserializeBinaryFromReader(message: ServerReflectionResponse, reader: jspb.BinaryReader): ServerReflectionResponse; +} + +export namespace ServerReflectionResponse { + export type AsObject = { + validHost: string, + originalRequest?: ServerReflectionRequest.AsObject, + fileDescriptorResponse?: FileDescriptorResponse.AsObject, + allExtensionNumbersResponse?: ExtensionNumberResponse.AsObject, + listServicesResponse?: ListServiceResponse.AsObject, + errorResponse?: ErrorResponse.AsObject, + } + + export enum MessageResponseCase { + MESSAGE_RESPONSE_NOT_SET = 0, + FILE_DESCRIPTOR_RESPONSE = 4, + ALL_EXTENSION_NUMBERS_RESPONSE = 5, + LIST_SERVICES_RESPONSE = 6, + ERROR_RESPONSE = 7, + } + +} + +export class FileDescriptorResponse extends jspb.Message { + clearFileDescriptorProtoList(): void; + getFileDescriptorProtoList(): Array; + getFileDescriptorProtoList_asU8(): Array; + getFileDescriptorProtoList_asB64(): Array; + setFileDescriptorProtoList(value: Array): FileDescriptorResponse; + addFileDescriptorProto(value: Uint8Array | string, index?: number): Uint8Array | string; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): FileDescriptorResponse.AsObject; + static toObject(includeInstance: boolean, msg: FileDescriptorResponse): FileDescriptorResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: FileDescriptorResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): FileDescriptorResponse; + static deserializeBinaryFromReader(message: FileDescriptorResponse, reader: jspb.BinaryReader): FileDescriptorResponse; +} + +export namespace FileDescriptorResponse { + export type AsObject = { + fileDescriptorProtoList: Array, + } +} + +export class ExtensionNumberResponse extends jspb.Message { + getBaseTypeName(): string; + setBaseTypeName(value: string): ExtensionNumberResponse; + clearExtensionNumberList(): void; + getExtensionNumberList(): Array; + setExtensionNumberList(value: Array): ExtensionNumberResponse; + addExtensionNumber(value: number, index?: number): number; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ExtensionNumberResponse.AsObject; + static toObject(includeInstance: boolean, msg: ExtensionNumberResponse): ExtensionNumberResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ExtensionNumberResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ExtensionNumberResponse; + static deserializeBinaryFromReader(message: ExtensionNumberResponse, reader: jspb.BinaryReader): ExtensionNumberResponse; +} + +export namespace ExtensionNumberResponse { + export type AsObject = { + baseTypeName: string, + extensionNumberList: Array, + } +} + +export class ListServiceResponse extends jspb.Message { + clearServiceList(): void; + getServiceList(): Array; + setServiceList(value: Array): ListServiceResponse; + addService(value?: ServiceResponse, index?: number): ServiceResponse; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ListServiceResponse.AsObject; + static toObject(includeInstance: boolean, msg: ListServiceResponse): ListServiceResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ListServiceResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ListServiceResponse; + static deserializeBinaryFromReader(message: ListServiceResponse, reader: jspb.BinaryReader): ListServiceResponse; +} + +export namespace ListServiceResponse { + export type AsObject = { + serviceList: Array, + } +} + +export class ServiceResponse extends jspb.Message { + getName(): string; + setName(value: string): ServiceResponse; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ServiceResponse.AsObject; + static toObject(includeInstance: boolean, msg: ServiceResponse): ServiceResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ServiceResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ServiceResponse; + static deserializeBinaryFromReader(message: ServiceResponse, reader: jspb.BinaryReader): ServiceResponse; +} + +export namespace ServiceResponse { + export type AsObject = { + name: string, + } +} + +export class ErrorResponse extends jspb.Message { + getErrorCode(): number; + setErrorCode(value: number): ErrorResponse; + getErrorMessage(): string; + setErrorMessage(value: string): ErrorResponse; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ErrorResponse.AsObject; + static toObject(includeInstance: boolean, msg: ErrorResponse): ErrorResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ErrorResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ErrorResponse; + static deserializeBinaryFromReader(message: ErrorResponse, reader: jspb.BinaryReader): ErrorResponse; +} + +export namespace ErrorResponse { + export type AsObject = { + errorCode: number, + errorMessage: string, + } +} diff --git a/src/reflection_providers/v1/reflection_pb.js b/src/reflection_providers/v1/reflection_pb.js new file mode 100644 index 0000000..d4f5e1b --- /dev/null +++ b/src/reflection_providers/v1/reflection_pb.js @@ -0,0 +1,1995 @@ +// source: reflection.proto +/** + * @fileoverview + * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. + * @suppress {messageConventions} JS Compiler reports an error if a variable or + * field starts with 'MSG_' and isn't a translatable message. + * @public + */ +// GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck + +var jspb = require('google-protobuf'); +var goog = jspb; +var global = (function() { + if (this) { return this; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + if (typeof self !== 'undefined') { return self; } + return Function('return this')(); +}.call(null)); + +goog.exportSymbol('proto.grpc.reflection.v1.ErrorResponse', null, global); +goog.exportSymbol('proto.grpc.reflection.v1.ExtensionNumberResponse', null, global); +goog.exportSymbol('proto.grpc.reflection.v1.ExtensionRequest', null, global); +goog.exportSymbol('proto.grpc.reflection.v1.FileDescriptorResponse', null, global); +goog.exportSymbol('proto.grpc.reflection.v1.ListServiceResponse', null, global); +goog.exportSymbol('proto.grpc.reflection.v1.ServerReflectionRequest', null, global); +goog.exportSymbol('proto.grpc.reflection.v1.ServerReflectionRequest.MessageRequestCase', null, global); +goog.exportSymbol('proto.grpc.reflection.v1.ServerReflectionResponse', null, global); +goog.exportSymbol('proto.grpc.reflection.v1.ServerReflectionResponse.MessageResponseCase', null, global); +goog.exportSymbol('proto.grpc.reflection.v1.ServiceResponse', null, global); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.reflection.v1.ServerReflectionRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_); +}; +goog.inherits(proto.grpc.reflection.v1.ServerReflectionRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.reflection.v1.ServerReflectionRequest.displayName = 'proto.grpc.reflection.v1.ServerReflectionRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.reflection.v1.ExtensionRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.grpc.reflection.v1.ExtensionRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.reflection.v1.ExtensionRequest.displayName = 'proto.grpc.reflection.v1.ExtensionRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.reflection.v1.ServerReflectionResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.grpc.reflection.v1.ServerReflectionResponse.oneofGroups_); +}; +goog.inherits(proto.grpc.reflection.v1.ServerReflectionResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.reflection.v1.ServerReflectionResponse.displayName = 'proto.grpc.reflection.v1.ServerReflectionResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.reflection.v1.FileDescriptorResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.reflection.v1.FileDescriptorResponse.repeatedFields_, null); +}; +goog.inherits(proto.grpc.reflection.v1.FileDescriptorResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.reflection.v1.FileDescriptorResponse.displayName = 'proto.grpc.reflection.v1.FileDescriptorResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.reflection.v1.ExtensionNumberResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.reflection.v1.ExtensionNumberResponse.repeatedFields_, null); +}; +goog.inherits(proto.grpc.reflection.v1.ExtensionNumberResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.reflection.v1.ExtensionNumberResponse.displayName = 'proto.grpc.reflection.v1.ExtensionNumberResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.reflection.v1.ListServiceResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.reflection.v1.ListServiceResponse.repeatedFields_, null); +}; +goog.inherits(proto.grpc.reflection.v1.ListServiceResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.reflection.v1.ListServiceResponse.displayName = 'proto.grpc.reflection.v1.ListServiceResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.reflection.v1.ServiceResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.grpc.reflection.v1.ServiceResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.reflection.v1.ServiceResponse.displayName = 'proto.grpc.reflection.v1.ServiceResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.grpc.reflection.v1.ErrorResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.grpc.reflection.v1.ErrorResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.grpc.reflection.v1.ErrorResponse.displayName = 'proto.grpc.reflection.v1.ErrorResponse'; +} + +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_ = [[3,4,5,6,7]]; + +/** + * @enum {number} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.MessageRequestCase = { + MESSAGE_REQUEST_NOT_SET: 0, + FILE_BY_FILENAME: 3, + FILE_CONTAINING_SYMBOL: 4, + FILE_CONTAINING_EXTENSION: 5, + ALL_EXTENSION_NUMBERS_OF_TYPE: 6, + LIST_SERVICES: 7 +}; + +/** + * @return {proto.grpc.reflection.v1.ServerReflectionRequest.MessageRequestCase} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.getMessageRequestCase = function() { + return /** @type {proto.grpc.reflection.v1.ServerReflectionRequest.MessageRequestCase} */(jspb.Message.computeOneofCase(this, proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_[0])); +}; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.reflection.v1.ServerReflectionRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.reflection.v1.ServerReflectionRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ServerReflectionRequest.toObject = function(includeInstance, msg) { + var f, obj = { + host: jspb.Message.getFieldWithDefault(msg, 1, ""), + fileByFilename: jspb.Message.getFieldWithDefault(msg, 3, ""), + fileContainingSymbol: jspb.Message.getFieldWithDefault(msg, 4, ""), + fileContainingExtension: (f = msg.getFileContainingExtension()) && proto.grpc.reflection.v1.ExtensionRequest.toObject(includeInstance, f), + allExtensionNumbersOfType: jspb.Message.getFieldWithDefault(msg, 6, ""), + listServices: jspb.Message.getFieldWithDefault(msg, 7, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.reflection.v1.ServerReflectionRequest; + return proto.grpc.reflection.v1.ServerReflectionRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.reflection.v1.ServerReflectionRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setHost(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setFileByFilename(value); + break; + case 4: + var value = /** @type {string} */ (reader.readString()); + msg.setFileContainingSymbol(value); + break; + case 5: + var value = new proto.grpc.reflection.v1.ExtensionRequest; + reader.readMessage(value,proto.grpc.reflection.v1.ExtensionRequest.deserializeBinaryFromReader); + msg.setFileContainingExtension(value); + break; + case 6: + var value = /** @type {string} */ (reader.readString()); + msg.setAllExtensionNumbersOfType(value); + break; + case 7: + var value = /** @type {string} */ (reader.readString()); + msg.setListServices(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.reflection.v1.ServerReflectionRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.reflection.v1.ServerReflectionRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ServerReflectionRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getHost(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = /** @type {string} */ (jspb.Message.getField(message, 3)); + if (f != null) { + writer.writeString( + 3, + f + ); + } + f = /** @type {string} */ (jspb.Message.getField(message, 4)); + if (f != null) { + writer.writeString( + 4, + f + ); + } + f = message.getFileContainingExtension(); + if (f != null) { + writer.writeMessage( + 5, + f, + proto.grpc.reflection.v1.ExtensionRequest.serializeBinaryToWriter + ); + } + f = /** @type {string} */ (jspb.Message.getField(message, 6)); + if (f != null) { + writer.writeString( + 6, + f + ); + } + f = /** @type {string} */ (jspb.Message.getField(message, 7)); + if (f != null) { + writer.writeString( + 7, + f + ); + } +}; + + +/** + * optional string host = 1; + * @return {string} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.getHost = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} returns this + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.setHost = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string file_by_filename = 3; + * @return {string} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.getFileByFilename = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} returns this + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.setFileByFilename = function(value) { + return jspb.Message.setOneofField(this, 3, proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_[0], value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} returns this + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.clearFileByFilename = function() { + return jspb.Message.setOneofField(this, 3, proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_[0], undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.hasFileByFilename = function() { + return jspb.Message.getField(this, 3) != null; +}; + + +/** + * optional string file_containing_symbol = 4; + * @return {string} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.getFileContainingSymbol = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} returns this + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.setFileContainingSymbol = function(value) { + return jspb.Message.setOneofField(this, 4, proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_[0], value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} returns this + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.clearFileContainingSymbol = function() { + return jspb.Message.setOneofField(this, 4, proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_[0], undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.hasFileContainingSymbol = function() { + return jspb.Message.getField(this, 4) != null; +}; + + +/** + * optional ExtensionRequest file_containing_extension = 5; + * @return {?proto.grpc.reflection.v1.ExtensionRequest} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.getFileContainingExtension = function() { + return /** @type{?proto.grpc.reflection.v1.ExtensionRequest} */ ( + jspb.Message.getWrapperField(this, proto.grpc.reflection.v1.ExtensionRequest, 5)); +}; + + +/** + * @param {?proto.grpc.reflection.v1.ExtensionRequest|undefined} value + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} returns this +*/ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.setFileContainingExtension = function(value) { + return jspb.Message.setOneofWrapperField(this, 5, proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} returns this + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.clearFileContainingExtension = function() { + return this.setFileContainingExtension(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.hasFileContainingExtension = function() { + return jspb.Message.getField(this, 5) != null; +}; + + +/** + * optional string all_extension_numbers_of_type = 6; + * @return {string} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.getAllExtensionNumbersOfType = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} returns this + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.setAllExtensionNumbersOfType = function(value) { + return jspb.Message.setOneofField(this, 6, proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_[0], value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} returns this + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.clearAllExtensionNumbersOfType = function() { + return jspb.Message.setOneofField(this, 6, proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_[0], undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.hasAllExtensionNumbersOfType = function() { + return jspb.Message.getField(this, 6) != null; +}; + + +/** + * optional string list_services = 7; + * @return {string} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.getListServices = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} returns this + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.setListServices = function(value) { + return jspb.Message.setOneofField(this, 7, proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_[0], value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.grpc.reflection.v1.ServerReflectionRequest} returns this + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.clearListServices = function() { + return jspb.Message.setOneofField(this, 7, proto.grpc.reflection.v1.ServerReflectionRequest.oneofGroups_[0], undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.reflection.v1.ServerReflectionRequest.prototype.hasListServices = function() { + return jspb.Message.getField(this, 7) != null; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.reflection.v1.ExtensionRequest.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.reflection.v1.ExtensionRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.reflection.v1.ExtensionRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ExtensionRequest.toObject = function(includeInstance, msg) { + var f, obj = { + containingType: jspb.Message.getFieldWithDefault(msg, 1, ""), + extensionNumber: jspb.Message.getFieldWithDefault(msg, 2, 0) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.reflection.v1.ExtensionRequest} + */ +proto.grpc.reflection.v1.ExtensionRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.reflection.v1.ExtensionRequest; + return proto.grpc.reflection.v1.ExtensionRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.reflection.v1.ExtensionRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.reflection.v1.ExtensionRequest} + */ +proto.grpc.reflection.v1.ExtensionRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setContainingType(value); + break; + case 2: + var value = /** @type {number} */ (reader.readInt32()); + msg.setExtensionNumber(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.reflection.v1.ExtensionRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.reflection.v1.ExtensionRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.reflection.v1.ExtensionRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ExtensionRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getContainingType(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getExtensionNumber(); + if (f !== 0) { + writer.writeInt32( + 2, + f + ); + } +}; + + +/** + * optional string containing_type = 1; + * @return {string} + */ +proto.grpc.reflection.v1.ExtensionRequest.prototype.getContainingType = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.reflection.v1.ExtensionRequest} returns this + */ +proto.grpc.reflection.v1.ExtensionRequest.prototype.setContainingType = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional int32 extension_number = 2; + * @return {number} + */ +proto.grpc.reflection.v1.ExtensionRequest.prototype.getExtensionNumber = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.grpc.reflection.v1.ExtensionRequest} returns this + */ +proto.grpc.reflection.v1.ExtensionRequest.prototype.setExtensionNumber = function(value) { + return jspb.Message.setProto3IntField(this, 2, value); +}; + + + +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.grpc.reflection.v1.ServerReflectionResponse.oneofGroups_ = [[4,5,6,7]]; + +/** + * @enum {number} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.MessageResponseCase = { + MESSAGE_RESPONSE_NOT_SET: 0, + FILE_DESCRIPTOR_RESPONSE: 4, + ALL_EXTENSION_NUMBERS_RESPONSE: 5, + LIST_SERVICES_RESPONSE: 6, + ERROR_RESPONSE: 7 +}; + +/** + * @return {proto.grpc.reflection.v1.ServerReflectionResponse.MessageResponseCase} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.getMessageResponseCase = function() { + return /** @type {proto.grpc.reflection.v1.ServerReflectionResponse.MessageResponseCase} */(jspb.Message.computeOneofCase(this, proto.grpc.reflection.v1.ServerReflectionResponse.oneofGroups_[0])); +}; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.reflection.v1.ServerReflectionResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.reflection.v1.ServerReflectionResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ServerReflectionResponse.toObject = function(includeInstance, msg) { + var f, obj = { + validHost: jspb.Message.getFieldWithDefault(msg, 1, ""), + originalRequest: (f = msg.getOriginalRequest()) && proto.grpc.reflection.v1.ServerReflectionRequest.toObject(includeInstance, f), + fileDescriptorResponse: (f = msg.getFileDescriptorResponse()) && proto.grpc.reflection.v1.FileDescriptorResponse.toObject(includeInstance, f), + allExtensionNumbersResponse: (f = msg.getAllExtensionNumbersResponse()) && proto.grpc.reflection.v1.ExtensionNumberResponse.toObject(includeInstance, f), + listServicesResponse: (f = msg.getListServicesResponse()) && proto.grpc.reflection.v1.ListServiceResponse.toObject(includeInstance, f), + errorResponse: (f = msg.getErrorResponse()) && proto.grpc.reflection.v1.ErrorResponse.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.reflection.v1.ServerReflectionResponse; + return proto.grpc.reflection.v1.ServerReflectionResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.reflection.v1.ServerReflectionResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setValidHost(value); + break; + case 2: + var value = new proto.grpc.reflection.v1.ServerReflectionRequest; + reader.readMessage(value,proto.grpc.reflection.v1.ServerReflectionRequest.deserializeBinaryFromReader); + msg.setOriginalRequest(value); + break; + case 4: + var value = new proto.grpc.reflection.v1.FileDescriptorResponse; + reader.readMessage(value,proto.grpc.reflection.v1.FileDescriptorResponse.deserializeBinaryFromReader); + msg.setFileDescriptorResponse(value); + break; + case 5: + var value = new proto.grpc.reflection.v1.ExtensionNumberResponse; + reader.readMessage(value,proto.grpc.reflection.v1.ExtensionNumberResponse.deserializeBinaryFromReader); + msg.setAllExtensionNumbersResponse(value); + break; + case 6: + var value = new proto.grpc.reflection.v1.ListServiceResponse; + reader.readMessage(value,proto.grpc.reflection.v1.ListServiceResponse.deserializeBinaryFromReader); + msg.setListServicesResponse(value); + break; + case 7: + var value = new proto.grpc.reflection.v1.ErrorResponse; + reader.readMessage(value,proto.grpc.reflection.v1.ErrorResponse.deserializeBinaryFromReader); + msg.setErrorResponse(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.reflection.v1.ServerReflectionResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.reflection.v1.ServerReflectionResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ServerReflectionResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getValidHost(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getOriginalRequest(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.grpc.reflection.v1.ServerReflectionRequest.serializeBinaryToWriter + ); + } + f = message.getFileDescriptorResponse(); + if (f != null) { + writer.writeMessage( + 4, + f, + proto.grpc.reflection.v1.FileDescriptorResponse.serializeBinaryToWriter + ); + } + f = message.getAllExtensionNumbersResponse(); + if (f != null) { + writer.writeMessage( + 5, + f, + proto.grpc.reflection.v1.ExtensionNumberResponse.serializeBinaryToWriter + ); + } + f = message.getListServicesResponse(); + if (f != null) { + writer.writeMessage( + 6, + f, + proto.grpc.reflection.v1.ListServiceResponse.serializeBinaryToWriter + ); + } + f = message.getErrorResponse(); + if (f != null) { + writer.writeMessage( + 7, + f, + proto.grpc.reflection.v1.ErrorResponse.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string valid_host = 1; + * @return {string} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.getValidHost = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} returns this + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.setValidHost = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional ServerReflectionRequest original_request = 2; + * @return {?proto.grpc.reflection.v1.ServerReflectionRequest} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.getOriginalRequest = function() { + return /** @type{?proto.grpc.reflection.v1.ServerReflectionRequest} */ ( + jspb.Message.getWrapperField(this, proto.grpc.reflection.v1.ServerReflectionRequest, 2)); +}; + + +/** + * @param {?proto.grpc.reflection.v1.ServerReflectionRequest|undefined} value + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} returns this +*/ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.setOriginalRequest = function(value) { + return jspb.Message.setWrapperField(this, 2, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} returns this + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.clearOriginalRequest = function() { + return this.setOriginalRequest(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.hasOriginalRequest = function() { + return jspb.Message.getField(this, 2) != null; +}; + + +/** + * optional FileDescriptorResponse file_descriptor_response = 4; + * @return {?proto.grpc.reflection.v1.FileDescriptorResponse} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.getFileDescriptorResponse = function() { + return /** @type{?proto.grpc.reflection.v1.FileDescriptorResponse} */ ( + jspb.Message.getWrapperField(this, proto.grpc.reflection.v1.FileDescriptorResponse, 4)); +}; + + +/** + * @param {?proto.grpc.reflection.v1.FileDescriptorResponse|undefined} value + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} returns this +*/ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.setFileDescriptorResponse = function(value) { + return jspb.Message.setOneofWrapperField(this, 4, proto.grpc.reflection.v1.ServerReflectionResponse.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} returns this + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.clearFileDescriptorResponse = function() { + return this.setFileDescriptorResponse(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.hasFileDescriptorResponse = function() { + return jspb.Message.getField(this, 4) != null; +}; + + +/** + * optional ExtensionNumberResponse all_extension_numbers_response = 5; + * @return {?proto.grpc.reflection.v1.ExtensionNumberResponse} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.getAllExtensionNumbersResponse = function() { + return /** @type{?proto.grpc.reflection.v1.ExtensionNumberResponse} */ ( + jspb.Message.getWrapperField(this, proto.grpc.reflection.v1.ExtensionNumberResponse, 5)); +}; + + +/** + * @param {?proto.grpc.reflection.v1.ExtensionNumberResponse|undefined} value + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} returns this +*/ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.setAllExtensionNumbersResponse = function(value) { + return jspb.Message.setOneofWrapperField(this, 5, proto.grpc.reflection.v1.ServerReflectionResponse.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} returns this + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.clearAllExtensionNumbersResponse = function() { + return this.setAllExtensionNumbersResponse(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.hasAllExtensionNumbersResponse = function() { + return jspb.Message.getField(this, 5) != null; +}; + + +/** + * optional ListServiceResponse list_services_response = 6; + * @return {?proto.grpc.reflection.v1.ListServiceResponse} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.getListServicesResponse = function() { + return /** @type{?proto.grpc.reflection.v1.ListServiceResponse} */ ( + jspb.Message.getWrapperField(this, proto.grpc.reflection.v1.ListServiceResponse, 6)); +}; + + +/** + * @param {?proto.grpc.reflection.v1.ListServiceResponse|undefined} value + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} returns this +*/ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.setListServicesResponse = function(value) { + return jspb.Message.setOneofWrapperField(this, 6, proto.grpc.reflection.v1.ServerReflectionResponse.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} returns this + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.clearListServicesResponse = function() { + return this.setListServicesResponse(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.hasListServicesResponse = function() { + return jspb.Message.getField(this, 6) != null; +}; + + +/** + * optional ErrorResponse error_response = 7; + * @return {?proto.grpc.reflection.v1.ErrorResponse} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.getErrorResponse = function() { + return /** @type{?proto.grpc.reflection.v1.ErrorResponse} */ ( + jspb.Message.getWrapperField(this, proto.grpc.reflection.v1.ErrorResponse, 7)); +}; + + +/** + * @param {?proto.grpc.reflection.v1.ErrorResponse|undefined} value + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} returns this +*/ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.setErrorResponse = function(value) { + return jspb.Message.setOneofWrapperField(this, 7, proto.grpc.reflection.v1.ServerReflectionResponse.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.grpc.reflection.v1.ServerReflectionResponse} returns this + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.clearErrorResponse = function() { + return this.setErrorResponse(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.grpc.reflection.v1.ServerReflectionResponse.prototype.hasErrorResponse = function() { + return jspb.Message.getField(this, 7) != null; +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.grpc.reflection.v1.FileDescriptorResponse.repeatedFields_ = [1]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.reflection.v1.FileDescriptorResponse.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.reflection.v1.FileDescriptorResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.reflection.v1.FileDescriptorResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.FileDescriptorResponse.toObject = function(includeInstance, msg) { + var f, obj = { + fileDescriptorProtoList: msg.getFileDescriptorProtoList_asB64() + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.reflection.v1.FileDescriptorResponse} + */ +proto.grpc.reflection.v1.FileDescriptorResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.reflection.v1.FileDescriptorResponse; + return proto.grpc.reflection.v1.FileDescriptorResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.reflection.v1.FileDescriptorResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.reflection.v1.FileDescriptorResponse} + */ +proto.grpc.reflection.v1.FileDescriptorResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!Uint8Array} */ (reader.readBytes()); + msg.addFileDescriptorProto(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.reflection.v1.FileDescriptorResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.reflection.v1.FileDescriptorResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.reflection.v1.FileDescriptorResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.FileDescriptorResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getFileDescriptorProtoList_asU8(); + if (f.length > 0) { + writer.writeRepeatedBytes( + 1, + f + ); + } +}; + + +/** + * repeated bytes file_descriptor_proto = 1; + * @return {!(Array|Array)} + */ +proto.grpc.reflection.v1.FileDescriptorResponse.prototype.getFileDescriptorProtoList = function() { + return /** @type {!(Array|Array)} */ (jspb.Message.getRepeatedField(this, 1)); +}; + + +/** + * repeated bytes file_descriptor_proto = 1; + * This is a type-conversion wrapper around `getFileDescriptorProtoList()` + * @return {!Array} + */ +proto.grpc.reflection.v1.FileDescriptorResponse.prototype.getFileDescriptorProtoList_asB64 = function() { + return /** @type {!Array} */ (jspb.Message.bytesListAsB64( + this.getFileDescriptorProtoList())); +}; + + +/** + * repeated bytes file_descriptor_proto = 1; + * Note that Uint8Array is not supported on all browsers. + * @see http://caniuse.com/Uint8Array + * This is a type-conversion wrapper around `getFileDescriptorProtoList()` + * @return {!Array} + */ +proto.grpc.reflection.v1.FileDescriptorResponse.prototype.getFileDescriptorProtoList_asU8 = function() { + return /** @type {!Array} */ (jspb.Message.bytesListAsU8( + this.getFileDescriptorProtoList())); +}; + + +/** + * @param {!(Array|Array)} value + * @return {!proto.grpc.reflection.v1.FileDescriptorResponse} returns this + */ +proto.grpc.reflection.v1.FileDescriptorResponse.prototype.setFileDescriptorProtoList = function(value) { + return jspb.Message.setField(this, 1, value || []); +}; + + +/** + * @param {!(string|Uint8Array)} value + * @param {number=} opt_index + * @return {!proto.grpc.reflection.v1.FileDescriptorResponse} returns this + */ +proto.grpc.reflection.v1.FileDescriptorResponse.prototype.addFileDescriptorProto = function(value, opt_index) { + return jspb.Message.addToRepeatedField(this, 1, value, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.grpc.reflection.v1.FileDescriptorResponse} returns this + */ +proto.grpc.reflection.v1.FileDescriptorResponse.prototype.clearFileDescriptorProtoList = function() { + return this.setFileDescriptorProtoList([]); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.repeatedFields_ = [2]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.reflection.v1.ExtensionNumberResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.reflection.v1.ExtensionNumberResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.toObject = function(includeInstance, msg) { + var f, obj = { + baseTypeName: jspb.Message.getFieldWithDefault(msg, 1, ""), + extensionNumberList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.reflection.v1.ExtensionNumberResponse} + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.reflection.v1.ExtensionNumberResponse; + return proto.grpc.reflection.v1.ExtensionNumberResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.reflection.v1.ExtensionNumberResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.reflection.v1.ExtensionNumberResponse} + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setBaseTypeName(value); + break; + case 2: + var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]); + for (var i = 0; i < values.length; i++) { + msg.addExtensionNumber(values[i]); + } + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.reflection.v1.ExtensionNumberResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.reflection.v1.ExtensionNumberResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getBaseTypeName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getExtensionNumberList(); + if (f.length > 0) { + writer.writePackedInt32( + 2, + f + ); + } +}; + + +/** + * optional string base_type_name = 1; + * @return {string} + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.prototype.getBaseTypeName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.reflection.v1.ExtensionNumberResponse} returns this + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.prototype.setBaseTypeName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * repeated int32 extension_number = 2; + * @return {!Array} + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.prototype.getExtensionNumberList = function() { + return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 2)); +}; + + +/** + * @param {!Array} value + * @return {!proto.grpc.reflection.v1.ExtensionNumberResponse} returns this + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.prototype.setExtensionNumberList = function(value) { + return jspb.Message.setField(this, 2, value || []); +}; + + +/** + * @param {number} value + * @param {number=} opt_index + * @return {!proto.grpc.reflection.v1.ExtensionNumberResponse} returns this + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.prototype.addExtensionNumber = function(value, opt_index) { + return jspb.Message.addToRepeatedField(this, 2, value, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.grpc.reflection.v1.ExtensionNumberResponse} returns this + */ +proto.grpc.reflection.v1.ExtensionNumberResponse.prototype.clearExtensionNumberList = function() { + return this.setExtensionNumberList([]); +}; + + + +/** + * List of repeated fields within this message type. + * @private {!Array} + * @const + */ +proto.grpc.reflection.v1.ListServiceResponse.repeatedFields_ = [1]; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.reflection.v1.ListServiceResponse.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.reflection.v1.ListServiceResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.reflection.v1.ListServiceResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ListServiceResponse.toObject = function(includeInstance, msg) { + var f, obj = { + serviceList: jspb.Message.toObjectList(msg.getServiceList(), + proto.grpc.reflection.v1.ServiceResponse.toObject, includeInstance) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.reflection.v1.ListServiceResponse} + */ +proto.grpc.reflection.v1.ListServiceResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.reflection.v1.ListServiceResponse; + return proto.grpc.reflection.v1.ListServiceResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.reflection.v1.ListServiceResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.reflection.v1.ListServiceResponse} + */ +proto.grpc.reflection.v1.ListServiceResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.grpc.reflection.v1.ServiceResponse; + reader.readMessage(value,proto.grpc.reflection.v1.ServiceResponse.deserializeBinaryFromReader); + msg.addService(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.reflection.v1.ListServiceResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.reflection.v1.ListServiceResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.reflection.v1.ListServiceResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ListServiceResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getServiceList(); + if (f.length > 0) { + writer.writeRepeatedMessage( + 1, + f, + proto.grpc.reflection.v1.ServiceResponse.serializeBinaryToWriter + ); + } +}; + + +/** + * repeated ServiceResponse service = 1; + * @return {!Array} + */ +proto.grpc.reflection.v1.ListServiceResponse.prototype.getServiceList = function() { + return /** @type{!Array} */ ( + jspb.Message.getRepeatedWrapperField(this, proto.grpc.reflection.v1.ServiceResponse, 1)); +}; + + +/** + * @param {!Array} value + * @return {!proto.grpc.reflection.v1.ListServiceResponse} returns this +*/ +proto.grpc.reflection.v1.ListServiceResponse.prototype.setServiceList = function(value) { + return jspb.Message.setRepeatedWrapperField(this, 1, value); +}; + + +/** + * @param {!proto.grpc.reflection.v1.ServiceResponse=} opt_value + * @param {number=} opt_index + * @return {!proto.grpc.reflection.v1.ServiceResponse} + */ +proto.grpc.reflection.v1.ListServiceResponse.prototype.addService = function(opt_value, opt_index) { + return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.grpc.reflection.v1.ServiceResponse, opt_index); +}; + + +/** + * Clears the list making it empty but non-null. + * @return {!proto.grpc.reflection.v1.ListServiceResponse} returns this + */ +proto.grpc.reflection.v1.ListServiceResponse.prototype.clearServiceList = function() { + return this.setServiceList([]); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.reflection.v1.ServiceResponse.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.reflection.v1.ServiceResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.reflection.v1.ServiceResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ServiceResponse.toObject = function(includeInstance, msg) { + var f, obj = { + name: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.reflection.v1.ServiceResponse} + */ +proto.grpc.reflection.v1.ServiceResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.reflection.v1.ServiceResponse; + return proto.grpc.reflection.v1.ServiceResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.reflection.v1.ServiceResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.reflection.v1.ServiceResponse} + */ +proto.grpc.reflection.v1.ServiceResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setName(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.reflection.v1.ServiceResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.reflection.v1.ServiceResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.reflection.v1.ServiceResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ServiceResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getName(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string name = 1; + * @return {string} + */ +proto.grpc.reflection.v1.ServiceResponse.prototype.getName = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.reflection.v1.ServiceResponse} returns this + */ +proto.grpc.reflection.v1.ServiceResponse.prototype.setName = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.grpc.reflection.v1.ErrorResponse.prototype.toObject = function(opt_includeInstance) { + return proto.grpc.reflection.v1.ErrorResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.grpc.reflection.v1.ErrorResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ErrorResponse.toObject = function(includeInstance, msg) { + var f, obj = { + errorCode: jspb.Message.getFieldWithDefault(msg, 1, 0), + errorMessage: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.grpc.reflection.v1.ErrorResponse} + */ +proto.grpc.reflection.v1.ErrorResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.grpc.reflection.v1.ErrorResponse; + return proto.grpc.reflection.v1.ErrorResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.grpc.reflection.v1.ErrorResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.grpc.reflection.v1.ErrorResponse} + */ +proto.grpc.reflection.v1.ErrorResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {number} */ (reader.readInt32()); + msg.setErrorCode(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setErrorMessage(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.grpc.reflection.v1.ErrorResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.grpc.reflection.v1.ErrorResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.grpc.reflection.v1.ErrorResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.grpc.reflection.v1.ErrorResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getErrorCode(); + if (f !== 0) { + writer.writeInt32( + 1, + f + ); + } + f = message.getErrorMessage(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * optional int32 error_code = 1; + * @return {number} + */ +proto.grpc.reflection.v1.ErrorResponse.prototype.getErrorCode = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.grpc.reflection.v1.ErrorResponse} returns this + */ +proto.grpc.reflection.v1.ErrorResponse.prototype.setErrorCode = function(value) { + return jspb.Message.setProto3IntField(this, 1, value); +}; + + +/** + * optional string error_message = 2; + * @return {string} + */ +proto.grpc.reflection.v1.ErrorResponse.prototype.getErrorMessage = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.grpc.reflection.v1.ErrorResponse} returns this + */ +proto.grpc.reflection.v1.ErrorResponse.prototype.setErrorMessage = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + +goog.object.extend(exports, proto.grpc.reflection.v1); diff --git a/src/reflection_grpc_pb.d.ts b/src/reflection_providers/v1alpha/reflection_grpc_pb.d.ts similarity index 96% rename from src/reflection_grpc_pb.d.ts rename to src/reflection_providers/v1alpha/reflection_grpc_pb.d.ts index 6329b8c..7fc436f 100644 --- a/src/reflection_grpc_pb.d.ts +++ b/src/reflection_providers/v1alpha/reflection_grpc_pb.d.ts @@ -23,7 +23,7 @@ interface IServerReflectionService_IServerReflectionInfo extends grpc.MethodDefi export const ServerReflectionService: IServerReflectionService; -export interface IServerReflectionServer { +export interface IServerReflectionServer extends grpc.UntypedServiceImplementation { serverReflectionInfo: grpc.handleBidiStreamingCall; } diff --git a/src/reflection_grpc_pb.js b/src/reflection_providers/v1alpha/reflection_grpc_pb.js similarity index 98% rename from src/reflection_grpc_pb.js rename to src/reflection_providers/v1alpha/reflection_grpc_pb.js index 4fc6bb2..86be5e2 100644 --- a/src/reflection_grpc_pb.js +++ b/src/reflection_providers/v1alpha/reflection_grpc_pb.js @@ -60,4 +60,4 @@ serverReflectionInfo: { }, }; -exports.ServerReflectionClient = grpc.makeGenericClientConstructor(ServerReflectionService); +exports.ServerReflectionClient = grpc.makeGenericClientConstructor(ServerReflectionService, 'ServerReflection'); diff --git a/src/reflection_pb.d.ts b/src/reflection_providers/v1alpha/reflection_pb.d.ts similarity index 97% rename from src/reflection_pb.d.ts rename to src/reflection_providers/v1alpha/reflection_pb.d.ts index 9ef8551..f8c3b8b 100644 --- a/src/reflection_pb.d.ts +++ b/src/reflection_providers/v1alpha/reflection_pb.d.ts @@ -10,37 +10,31 @@ export class ServerReflectionRequest extends jspb.Message { getHost(): string; setHost(value: string): ServerReflectionRequest; - hasFileByFilename(): boolean; clearFileByFilename(): void; getFileByFilename(): string; setFileByFilename(value: string): ServerReflectionRequest; - hasFileContainingSymbol(): boolean; clearFileContainingSymbol(): void; getFileContainingSymbol(): string; setFileContainingSymbol(value: string): ServerReflectionRequest; - hasFileContainingExtension(): boolean; clearFileContainingExtension(): void; getFileContainingExtension(): ExtensionRequest | undefined; setFileContainingExtension(value?: ExtensionRequest): ServerReflectionRequest; - hasAllExtensionNumbersOfType(): boolean; clearAllExtensionNumbersOfType(): void; getAllExtensionNumbersOfType(): string; setAllExtensionNumbersOfType(value: string): ServerReflectionRequest; - hasListServices(): boolean; clearListServices(): void; getListServices(): string; setListServices(value: string): ServerReflectionRequest; - getMessageRequestCase(): ServerReflectionRequest.MessageRequestCase; serializeBinary(): Uint8Array; @@ -65,17 +59,11 @@ export namespace ServerReflectionRequest { export enum MessageRequestCase { MESSAGE_REQUEST_NOT_SET = 0, - - FILE_BY_FILENAME = 3, - - FILE_CONTAINING_SYMBOL = 4, - - FILE_CONTAINING_EXTENSION = 5, - - ALL_EXTENSION_NUMBERS_OF_TYPE = 6, - - LIST_SERVICES = 7, - + FILE_BY_FILENAME = 3, + FILE_CONTAINING_SYMBOL = 4, + FILE_CONTAINING_EXTENSION = 5, + ALL_EXTENSION_NUMBERS_OF_TYPE = 6, + LIST_SERVICES = 7, } } @@ -83,11 +71,9 @@ export namespace ServerReflectionRequest { export class ExtensionRequest extends jspb.Message { getContainingType(): string; setContainingType(value: string): ExtensionRequest; - getExtensionNumber(): number; setExtensionNumber(value: number): ExtensionRequest; - serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ExtensionRequest.AsObject; static toObject(includeInstance: boolean, msg: ExtensionRequest): ExtensionRequest.AsObject; @@ -109,37 +95,31 @@ export class ServerReflectionResponse extends jspb.Message { getValidHost(): string; setValidHost(value: string): ServerReflectionResponse; - hasOriginalRequest(): boolean; clearOriginalRequest(): void; getOriginalRequest(): ServerReflectionRequest | undefined; setOriginalRequest(value?: ServerReflectionRequest): ServerReflectionResponse; - hasFileDescriptorResponse(): boolean; clearFileDescriptorResponse(): void; getFileDescriptorResponse(): FileDescriptorResponse | undefined; setFileDescriptorResponse(value?: FileDescriptorResponse): ServerReflectionResponse; - hasAllExtensionNumbersResponse(): boolean; clearAllExtensionNumbersResponse(): void; getAllExtensionNumbersResponse(): ExtensionNumberResponse | undefined; setAllExtensionNumbersResponse(value?: ExtensionNumberResponse): ServerReflectionResponse; - hasListServicesResponse(): boolean; clearListServicesResponse(): void; getListServicesResponse(): ListServiceResponse | undefined; setListServicesResponse(value?: ListServiceResponse): ServerReflectionResponse; - hasErrorResponse(): boolean; clearErrorResponse(): void; getErrorResponse(): ErrorResponse | undefined; setErrorResponse(value?: ErrorResponse): ServerReflectionResponse; - getMessageResponseCase(): ServerReflectionResponse.MessageResponseCase; serializeBinary(): Uint8Array; @@ -164,15 +144,10 @@ export namespace ServerReflectionResponse { export enum MessageResponseCase { MESSAGE_RESPONSE_NOT_SET = 0, - - FILE_DESCRIPTOR_RESPONSE = 4, - - ALL_EXTENSION_NUMBERS_RESPONSE = 5, - - LIST_SERVICES_RESPONSE = 6, - - ERROR_RESPONSE = 7, - + FILE_DESCRIPTOR_RESPONSE = 4, + ALL_EXTENSION_NUMBERS_RESPONSE = 5, + LIST_SERVICES_RESPONSE = 6, + ERROR_RESPONSE = 7, } } @@ -185,7 +160,6 @@ export class FileDescriptorResponse extends jspb.Message { setFileDescriptorProtoList(value: Array): FileDescriptorResponse; addFileDescriptorProto(value: Uint8Array | string, index?: number): Uint8Array | string; - serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): FileDescriptorResponse.AsObject; static toObject(includeInstance: boolean, msg: FileDescriptorResponse): FileDescriptorResponse.AsObject; @@ -205,13 +179,11 @@ export namespace FileDescriptorResponse { export class ExtensionNumberResponse extends jspb.Message { getBaseTypeName(): string; setBaseTypeName(value: string): ExtensionNumberResponse; - clearExtensionNumberList(): void; getExtensionNumberList(): Array; setExtensionNumberList(value: Array): ExtensionNumberResponse; addExtensionNumber(value: number, index?: number): number; - serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ExtensionNumberResponse.AsObject; static toObject(includeInstance: boolean, msg: ExtensionNumberResponse): ExtensionNumberResponse.AsObject; @@ -235,7 +207,6 @@ export class ListServiceResponse extends jspb.Message { setServiceList(value: Array): ListServiceResponse; addService(value?: ServiceResponse, index?: number): ServiceResponse; - serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ListServiceResponse.AsObject; static toObject(includeInstance: boolean, msg: ListServiceResponse): ListServiceResponse.AsObject; @@ -256,7 +227,6 @@ export class ServiceResponse extends jspb.Message { getName(): string; setName(value: string): ServiceResponse; - serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ServiceResponse.AsObject; static toObject(includeInstance: boolean, msg: ServiceResponse): ServiceResponse.AsObject; @@ -276,11 +246,9 @@ export namespace ServiceResponse { export class ErrorResponse extends jspb.Message { getErrorCode(): number; setErrorCode(value: number): ErrorResponse; - getErrorMessage(): string; setErrorMessage(value: string): ErrorResponse; - serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): ErrorResponse.AsObject; static toObject(includeInstance: boolean, msg: ErrorResponse): ErrorResponse.AsObject; diff --git a/src/reflection_pb.js b/src/reflection_providers/v1alpha/reflection_pb.js similarity index 99% rename from src/reflection_pb.js rename to src/reflection_providers/v1alpha/reflection_pb.js index 1410488..bdbea4f 100644 --- a/src/reflection_pb.js +++ b/src/reflection_providers/v1alpha/reflection_pb.js @@ -2,15 +2,24 @@ /** * @fileoverview * @enhanceable + * @suppress {missingRequire} reports error on implicit type usages. * @suppress {messageConventions} JS Compiler reports an error if a variable or * field starts with 'MSG_' and isn't a translatable message. * @public */ // GENERATED CODE -- DO NOT EDIT! +/* eslint-disable */ +// @ts-nocheck var jspb = require('google-protobuf'); var goog = jspb; -var global = Function('return this')(); +var global = (function() { + if (this) { return this; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + if (typeof self !== 'undefined') { return self; } + return Function('return this')(); +}.call(null)); goog.exportSymbol('proto.grpc.reflection.v1alpha.ErrorResponse', null, global); goog.exportSymbol('proto.grpc.reflection.v1alpha.ExtensionNumberResponse', null, global); @@ -1427,8 +1436,10 @@ proto.grpc.reflection.v1alpha.ExtensionNumberResponse.deserializeBinaryFromReade msg.setBaseTypeName(value); break; case 2: - var value = /** @type {!Array} */ (reader.readPackedInt32()); - msg.setExtensionNumberList(value); + var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]); + for (var i = 0; i < values.length; i++) { + msg.addExtensionNumber(values[i]); + } break; default: reader.skipField(); diff --git a/static/grpc/reflection/v1/reflection.proto b/static/grpc/reflection/v1/reflection.proto new file mode 100644 index 0000000..ef8f268 --- /dev/null +++ b/static/grpc/reflection/v1/reflection.proto @@ -0,0 +1,146 @@ +// Copyright 2016 The gRPC Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Service exported by server reflection. A more complete description of how +// server reflection works can be found at +// https://github.com/grpc/grpc/blob/master/doc/server-reflection.md +// +// The canonical version of this proto can be found at +// https://github.com/grpc/grpc-proto/blob/master/grpc/reflection/v1/reflection.proto + +syntax = "proto3"; + +package grpc.reflection.v1; + +option go_package = "google.golang.org/grpc/reflection/grpc_reflection_v1"; +option java_multiple_files = true; +option java_package = "io.grpc.reflection.v1"; +option java_outer_classname = "ServerReflectionProto"; + +service ServerReflection { + // The reflection service is structured as a bidirectional stream, ensuring + // all related requests go to a single server. + rpc ServerReflectionInfo(stream ServerReflectionRequest) + returns (stream ServerReflectionResponse); +} + +// The message sent by the client when calling ServerReflectionInfo method. +message ServerReflectionRequest { + string host = 1; + // To use reflection service, the client should set one of the following + // fields in message_request. The server distinguishes requests by their + // defined field and then handles them using corresponding methods. + oneof message_request { + // Find a proto file by the file name. + string file_by_filename = 3; + + // Find the proto file that declares the given fully-qualified symbol name. + // This field should be a fully-qualified symbol name + // (e.g. .[.] or .). + string file_containing_symbol = 4; + + // Find the proto file which defines an extension extending the given + // message type with the given field number. + ExtensionRequest file_containing_extension = 5; + + // Finds the tag numbers used by all known extensions of the given message + // type, and appends them to ExtensionNumberResponse in an undefined order. + // Its corresponding method is best-effort: it's not guaranteed that the + // reflection service will implement this method, and it's not guaranteed + // that this method will provide all extensions. Returns + // StatusCode::UNIMPLEMENTED if it's not implemented. + // This field should be a fully-qualified type name. The format is + // . + string all_extension_numbers_of_type = 6; + + // List the full names of registered services. The content will not be + // checked. + string list_services = 7; + } +} + +// The type name and extension number sent by the client when requesting +// file_containing_extension. +message ExtensionRequest { + // Fully-qualified type name. The format should be . + string containing_type = 1; + int32 extension_number = 2; +} + +// The message sent by the server to answer ServerReflectionInfo method. +message ServerReflectionResponse { + string valid_host = 1; + ServerReflectionRequest original_request = 2; + // The server sets one of the following fields according to the message_request + // in the request. + oneof message_response { + // This message is used to answer file_by_filename, file_containing_symbol, + // file_containing_extension requests with transitive dependencies. + // As the repeated label is not allowed in oneof fields, we use a + // FileDescriptorResponse message to encapsulate the repeated fields. + // The reflection service is allowed to avoid sending FileDescriptorProtos + // that were previously sent in response to earlier requests in the stream. + FileDescriptorResponse file_descriptor_response = 4; + + // This message is used to answer all_extension_numbers_of_type requests. + ExtensionNumberResponse all_extension_numbers_response = 5; + + // This message is used to answer list_services requests. + ListServiceResponse list_services_response = 6; + + // This message is used when an error occurs. + ErrorResponse error_response = 7; + } +} + +// Serialized FileDescriptorProto messages sent by the server answering +// a file_by_filename, file_containing_symbol, or file_containing_extension +// request. +message FileDescriptorResponse { + // Serialized FileDescriptorProto messages. We avoid taking a dependency on + // descriptor.proto, which uses proto2 only features, by making them opaque + // bytes instead. + repeated bytes file_descriptor_proto = 1; +} + +// A list of extension numbers sent by the server answering +// all_extension_numbers_of_type request. +message ExtensionNumberResponse { + // Full name of the base type, including the package name. The format + // is . + string base_type_name = 1; + repeated int32 extension_number = 2; +} + +// A list of ServiceResponse sent by the server answering list_services request. +message ListServiceResponse { + // The information of each service may be expanded in the future, so we use + // ServiceResponse message to encapsulate it. + repeated ServiceResponse service = 1; +} + +// The information of a single service used by ListServiceResponse to answer +// list_services request. +message ServiceResponse { + // Full name of a registered service, including its package name. The format + // is . + string name = 1; +} + +// The error code and error message sent by the server when an error occurs. +message ErrorResponse { + // This field uses the error codes defined in grpc::StatusCode. + int32 error_code = 1; + string error_message = 2; +} \ No newline at end of file diff --git a/test/client.test.ts b/test/client.test.ts index c6f7aaa..84a0ba4 100644 --- a/test/client.test.ts +++ b/test/client.test.ts @@ -8,7 +8,7 @@ import { ListServiceResponse, ServiceResponse, FileDescriptorResponse, -} from '../src/reflection_pb'; +} from '../src/reflection_providers/v1/reflection_pb'; // eslint-disable-next-line no-undef describe('listServices', () => {