From a83c92480195e5eed980204540bd3fb460c8d847 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Wed, 24 Oct 2018 12:09:57 -0400 Subject: [PATCH] grpc-js-core: simplify Metadata clone() This commit inlines the only use of cloneMetadataObject(). It also eliminates an extra MetadataObject - the result of cloneMetadataObject() was allocating a new MetadataObject to replace the internal representation of the newly allocated Metadata object in clone(). --- packages/grpc-js-core/src/metadata.ts | 32 ++++++++++++--------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/packages/grpc-js-core/src/metadata.ts b/packages/grpc-js-core/src/metadata.ts index b836bb1a..09a6f883 100644 --- a/packages/grpc-js-core/src/metadata.ts +++ b/packages/grpc-js-core/src/metadata.ts @@ -5,23 +5,6 @@ const LEGAL_NON_BINARY_VALUE_REGEX = /^[ -~]*$/; export type MetadataValue = string|Buffer; export type MetadataObject = Map; -function cloneMetadataObject(repr: MetadataObject): MetadataObject { - const result: MetadataObject = new Map(); - - repr.forEach((value, key) => { - const clonedValue: MetadataValue[] = value.map(v => { - if (v instanceof Buffer) { - return Buffer.from(v); - } else { - return v; - } - }); - - result.set(key, clonedValue); - }); - return result; -} - function isLegalKey(key: string): boolean { return LEGAL_KEY_REGEX.test(key); } @@ -144,7 +127,20 @@ export class Metadata { */ clone(): Metadata { const newMetadata = new Metadata(); - newMetadata.internalRepr = cloneMetadataObject(this.internalRepr); + const newInternalRepr = newMetadata.internalRepr; + + this.internalRepr.forEach((value, key) => { + const clonedValue: MetadataValue[] = value.map(v => { + if (v instanceof Buffer) { + return Buffer.from(v); + } else { + return v; + } + }); + + newInternalRepr.set(key, clonedValue); + }); + return newMetadata; }