Skip to content

Commit 9a5740b

Browse files
chore(internal): minor client file refactoring (#37)
1 parent 9861197 commit 9a5740b

File tree

4 files changed

+43
-47
lines changed

4 files changed

+43
-47
lines changed

src/client.ts

Lines changed: 4 additions & 46 deletions
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';
@@ -25,48 +27,6 @@ import { readEnv } from './internal/utils/env';
2527
import { formatRequestDetails, loggerFor } from './internal/utils/log';
2628
import { isEmptyObj } from './internal/utils/values';
2729

28-
const safeJSON = (text: string) => {
29-
try {
30-
return JSON.parse(text);
31-
} catch (err) {
32-
return undefined;
33-
}
34-
};
35-
36-
type LogFn = (message: string, ...rest: unknown[]) => void;
37-
export type Logger = {
38-
error: LogFn;
39-
warn: LogFn;
40-
info: LogFn;
41-
debug: LogFn;
42-
};
43-
export type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug';
44-
const parseLogLevel = (
45-
maybeLevel: string | undefined,
46-
sourceName: string,
47-
client: Lightswitch,
48-
): LogLevel | undefined => {
49-
if (!maybeLevel) {
50-
return undefined;
51-
}
52-
const levels: Record<LogLevel, true> = {
53-
off: true,
54-
error: true,
55-
warn: true,
56-
info: true,
57-
debug: true,
58-
};
59-
if (hasOwn(levels, maybeLevel)) {
60-
return maybeLevel;
61-
}
62-
loggerFor(client).warn(
63-
`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(
64-
Object.keys(levels),
65-
)}`,
66-
);
67-
return undefined;
68-
};
69-
7030
export interface ClientOptions {
7131
/**
7232
* Override the default base URL for the API, e.g., "https://api.example.com/v2/"
@@ -135,8 +95,6 @@ export interface ClientOptions {
13595
logger?: Logger | undefined;
13696
}
13797

138-
type FinalizedRequestInit = RequestInit & { headers: Headers };
139-
14098
/**
14199
* API Client for interfacing with the Lightswitch API.
142100
*/

src/internal/types.ts

Lines changed: 2 additions & 0 deletions
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
/**

src/internal/utils/log.ts

Lines changed: 29 additions & 1 deletion
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 Lightswitch } 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: Lightswitch,
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) {

src/internal/utils/values.ts

Lines changed: 8 additions & 0 deletions
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)