Skip to content

Commit 87103f7

Browse files
chore(internal): minor client file refactoring (#59)
1 parent 972a9a9 commit 87103f7

File tree

4 files changed

+43
-47
lines changed

4 files changed

+43
-47
lines changed

Diff for: src/client.ts

+4-46
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

33
import type { RequestInit, RequestInfo, BodyInit } from './internal/builtin-types';
4-
import type { HTTPMethod, PromiseOrValue, MergedRequestInit } from './internal/types';
4+
import type { HTTPMethod, PromiseOrValue, MergedRequestInit, FinalizedRequestInit } from './internal/types';
55
import { uuid4 } from './internal/utils/uuid';
6-
import { validatePositiveInteger, isAbsoluteURL, hasOwn } from './internal/utils/values';
6+
import { validatePositiveInteger, isAbsoluteURL, safeJSON } from './internal/utils/values';
77
import { sleep } from './internal/utils/sleep';
8+
import { type Logger, type LogLevel, parseLogLevel } from './internal/utils/log';
9+
export type { Logger, LogLevel } from './internal/utils/log';
810
import { castToError, isAbortError } from './internal/errors';
911
import type { APIResponseProps } from './internal/parse';
1012
import { getPlatformHeaders } from './internal/detect-platform';
@@ -235,48 +237,6 @@ import {
235237
Users,
236238
} from './resources/users/users';
237239

238-
const safeJSON = (text: string) => {
239-
try {
240-
return JSON.parse(text);
241-
} catch (err) {
242-
return undefined;
243-
}
244-
};
245-
246-
type LogFn = (message: string, ...rest: unknown[]) => void;
247-
export type Logger = {
248-
error: LogFn;
249-
warn: LogFn;
250-
info: LogFn;
251-
debug: LogFn;
252-
};
253-
export type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug';
254-
const parseLogLevel = (
255-
maybeLevel: string | undefined,
256-
sourceName: string,
257-
client: Gitpod,
258-
): LogLevel | undefined => {
259-
if (!maybeLevel) {
260-
return undefined;
261-
}
262-
const levels: Record<LogLevel, true> = {
263-
off: true,
264-
error: true,
265-
warn: true,
266-
info: true,
267-
debug: true,
268-
};
269-
if (hasOwn(levels, maybeLevel)) {
270-
return maybeLevel;
271-
}
272-
loggerFor(client).warn(
273-
`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(
274-
Object.keys(levels),
275-
)}`,
276-
);
277-
return undefined;
278-
};
279-
280240
export interface ClientOptions {
281241
/**
282242
* Defaults to process.env['GITPOD_API_KEY'].
@@ -350,8 +310,6 @@ export interface ClientOptions {
350310
logger?: Logger | undefined;
351311
}
352312

353-
type FinalizedRequestInit = RequestInit & { headers: Headers };
354-
355313
/**
356314
* API Client for interfacing with the Gitpod API.
357315
*/

Diff for: src/internal/types.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ export type HTTPMethod = 'get' | 'post' | 'put' | 'patch' | 'delete';
55

66
export type KeysEnum<T> = { [P in keyof Required<T>]: true };
77

8+
export type FinalizedRequestInit = RequestInit & { headers: Headers };
9+
810
type NotAny<T> = [unknown] extends [T] ? never : T;
911

1012
/**

Diff for: src/internal/utils/log.ts

+29-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

3-
import type { LogLevel, Logger } from '../../client';
3+
import { hasOwn } from './values';
44
import { type Gitpod } from '../../client';
55
import { RequestOptions } from '../request-options';
66

7+
type LogFn = (message: string, ...rest: unknown[]) => void;
8+
export type Logger = {
9+
error: LogFn;
10+
warn: LogFn;
11+
info: LogFn;
12+
debug: LogFn;
13+
};
14+
export type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug';
15+
716
const levelNumbers = {
817
off: 0,
918
error: 200,
@@ -12,6 +21,25 @@ const levelNumbers = {
1221
debug: 500,
1322
};
1423

24+
export const parseLogLevel = (
25+
maybeLevel: string | undefined,
26+
sourceName: string,
27+
client: Gitpod,
28+
): LogLevel | undefined => {
29+
if (!maybeLevel) {
30+
return undefined;
31+
}
32+
if (hasOwn(levelNumbers, maybeLevel)) {
33+
return maybeLevel;
34+
}
35+
loggerFor(client).warn(
36+
`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(
37+
Object.keys(levelNumbers),
38+
)}`,
39+
);
40+
return undefined;
41+
};
42+
1543
function noop() {}
1644

1745
function makeLogFn(fnLevel: keyof Logger, logger: Logger | undefined, logLevel: LogLevel) {

Diff for: src/internal/utils/values.ts

+8
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,11 @@ export const maybeCoerceBoolean = (value: unknown): boolean | undefined => {
9292
}
9393
return coerceBoolean(value);
9494
};
95+
96+
export const safeJSON = (text: string) => {
97+
try {
98+
return JSON.parse(text);
99+
} catch (err) {
100+
return undefined;
101+
}
102+
};

0 commit comments

Comments
 (0)