From 959503ec94aa08a6942780d7b7cd80847dbd4be6 Mon Sep 17 00:00:00 2001 From: Robert Date: Mon, 25 Oct 2021 19:14:01 -0700 Subject: [PATCH] rewrite CompressionAlgorithms to use numeric keys and export it --- packages/grpc-js/src/compression-filter.ts | 14 +++++++------- packages/grpc-js/src/index.ts | 2 ++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/grpc-js/src/compression-filter.ts b/packages/grpc-js/src/compression-filter.ts index 6c613612..eabb7a85 100644 --- a/packages/grpc-js/src/compression-filter.ts +++ b/packages/grpc-js/src/compression-filter.ts @@ -23,16 +23,16 @@ import { BaseFilter, Filter, FilterFactory } from './filter'; import { Metadata, MetadataValue } from './metadata'; import { ChannelOptions } from './channel-options'; -const CompressionAlgorithms = { - '0': 'identity', - '1': 'deflate', - '2': 'gzip' +export const CompressionAlgorithms = { + 0: 'identity', + 1: 'deflate', + 2: 'gzip' } as const; const CompressionAlgorithKeys = new Set(Object.keys(CompressionAlgorithms)); -const isCompressionAlgorithmKey = (key: string | undefined): key is keyof typeof CompressionAlgorithms => { - return typeof key === 'string' && CompressionAlgorithKeys.has(key); +const isCompressionAlgorithmKey = (key: number | undefined): key is keyof typeof CompressionAlgorithms => { + return typeof key === 'number' && CompressionAlgorithKeys.has(key.toString()); } type CompressionAlgorithm = (typeof CompressionAlgorithms)[keyof typeof CompressionAlgorithms]; @@ -187,7 +187,7 @@ export class CompressionFilter extends BaseFilter implements Filter { constructor(channelOptions: ChannelOptions) { super(); - const compressionAlgorithmKey = channelOptions['grpc.default_compression_algorithm']?.toString(); + const compressionAlgorithmKey = channelOptions['grpc.default_compression_algorithm']; if (isCompressionAlgorithmKey(compressionAlgorithmKey)) { this.defaultCompressionAlgorithm = CompressionAlgorithms[compressionAlgorithmKey]; this.sendCompression = getCompressionHandler(this.defaultCompressionAlgorithm); diff --git a/packages/grpc-js/src/index.ts b/packages/grpc-js/src/index.ts index 4b7967be..7e1ed7a5 100644 --- a/packages/grpc-js/src/index.ts +++ b/packages/grpc-js/src/index.ts @@ -25,6 +25,7 @@ import { import { CallCredentials, OAuth2Client } from './call-credentials'; import { Deadline, StatusObject } from './call-stream'; import { Channel, ChannelImplementation } from './channel'; +import { CompressionAlgorithms } from './compression-filter'; import { ConnectivityState } from './connectivity-state'; import { ChannelCredentials } from './channel-credentials'; import { @@ -124,6 +125,7 @@ export { Status as status, ConnectivityState as connectivityState, Propagate as propagate, + CompressionAlgorithms as compressionAlgorithms // TODO: Other constants as well };