Skip to content

Commit 97888a2

Browse files
committed
Use the Headers object for better typing
1 parent 10fa5b6 commit 97888a2

File tree

5 files changed

+22
-15
lines changed

5 files changed

+22
-15
lines changed

packages/telemetry/src/logging/appcheck-provider.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { DynamicHeaderProvider } from '../types';
18+
import { DynamicHeaderProvider, HttpHeader } from '../types';
1919
import { Provider } from '@firebase/component';
2020
import {
2121
FirebaseAppCheckInternal,
@@ -40,7 +40,7 @@ export class AppCheckProvider implements DynamicHeaderProvider {
4040
}
4141
}
4242

43-
async getHeader(): Promise<Record<string, string> | null> {
43+
async getHeader(): Promise<HttpHeader | null> {
4444
if (!this.appCheck) {
4545
return null;
4646
}
@@ -52,6 +52,6 @@ export class AppCheckProvider implements DynamicHeaderProvider {
5252
return null;
5353
}
5454

55-
return { 'X-Firebase-AppCheck': appCheckToken.token };
55+
return ['X-Firebase-AppCheck', appCheckToken.token];
5656
}
5757
}

packages/telemetry/src/logging/fetch-transport.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import {
3030

3131
const testTransportParameters = {
3232
url: 'http://example.test',
33-
headers: () => ({
33+
headers: new Headers({
3434
foo: 'foo-value',
3535
bar: 'bar-value',
3636
'Content-Type': 'application/json'
@@ -68,11 +68,11 @@ describe('FetchTransport', () => {
6868
testTransportParameters.url,
6969
{
7070
method: 'POST',
71-
headers: {
71+
headers: new Headers({
7272
foo: 'foo-value',
7373
bar: 'bar-value',
7474
'Content-Type': 'application/json'
75-
},
75+
}),
7676
body: testPayload
7777
}
7878
);
@@ -182,7 +182,7 @@ describe('FetchTransport', () => {
182182
.resolves(new Response('test response', { status: 200 }));
183183

184184
const dynamicProvider: DynamicHeaderProvider = {
185-
getHeader: sinon.stub().resolves({ 'dynamic-header': 'dynamic-value' })
185+
getHeader: sinon.stub().resolves(['dynamic-header', 'dynamic-value'])
186186
};
187187

188188
const transport = new FetchTransport({
@@ -200,12 +200,12 @@ describe('FetchTransport', () => {
200200
testTransportParameters.url,
201201
{
202202
method: 'POST',
203-
headers: {
203+
headers: new Headers({
204204
foo: 'foo-value',
205205
bar: 'bar-value',
206206
'Content-Type': 'application/json',
207207
'dynamic-header': 'dynamic-value'
208-
},
208+
}),
209209
body: testPayload
210210
}
211211
);
@@ -241,7 +241,7 @@ describe('FetchTransport', () => {
241241
testTransportParameters.url,
242242
{
243243
method: 'POST',
244-
headers: testTransportParameters.headers(),
244+
headers: testTransportParameters.headers,
245245
body: testPayload
246246
}
247247
);

packages/telemetry/src/logging/fetch-transport.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ function parseRetryAfterToMills(
5353
/** @internal */
5454
export interface FetchTransportParameters {
5555
url: string;
56-
headers: () => Record<string, string>;
56+
headers: Headers;
5757
dynamicHeaders?: DynamicHeaderProvider[];
5858
}
5959

@@ -70,7 +70,7 @@ export class FetchTransport implements IExporterTransport {
7070
const timeout = setTimeout(() => abortController.abort(), timeoutMillis);
7171
try {
7272
const url = new URL(this.parameters.url);
73-
const headers = this.parameters.headers();
73+
const headers = this.parameters.headers;
7474

7575
if (
7676
this.parameters.dynamicHeaders &&
@@ -83,7 +83,7 @@ export class FetchTransport implements IExporterTransport {
8383

8484
for (const header of resolvedHeaders) {
8585
if (header) {
86-
Object.assign(headers, header);
86+
headers.append(...header);
8787
}
8888
}
8989
}

packages/telemetry/src/logging/logger-provider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class OTLPLogExporter
7979
JsonLogsSerializer,
8080
new FetchTransport({
8181
url: config.url!,
82-
headers: () => ({
82+
headers: new Headers({
8383
'Content-Type': 'application/json'
8484
}),
8585
dynamicHeaders

packages/telemetry/src/types.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@
1515
* limitations under the License.
1616
*/
1717

18+
/**
19+
* A type for HTTP Headers
20+
*
21+
* @internal
22+
*/
23+
export type HttpHeader = [key: string, value: string];
24+
1825
/**
1926
* An interface for classes that provide dynamic headers.
2027
*
@@ -29,5 +36,5 @@ export interface DynamicHeaderProvider {
2936
* @returns A {@link Promise} that resolves to a {@link Record<string, string>} of header
3037
* key-value pairs, or null if no headers are to be added.
3138
*/
32-
getHeader(): Promise<Record<string, string> | null>;
39+
getHeader(): Promise<HttpHeader | null>;
3340
}

0 commit comments

Comments
 (0)