Skip to content

Commit d1aa00a

Browse files
stainless-app[bot]RobertCraigie
authored andcommitted
chore(internal): minor client file refactoring
1 parent a06deb8 commit d1aa00a

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';
@@ -148,48 +150,6 @@ import {
148150
ChatCompletionsPage,
149151
} from './resources/chat/completions/completions';
150152

151-
const safeJSON = (text: string) => {
152-
try {
153-
return JSON.parse(text);
154-
} catch (err) {
155-
return undefined;
156-
}
157-
};
158-
159-
type LogFn = (message: string, ...rest: unknown[]) => void;
160-
export type Logger = {
161-
error: LogFn;
162-
warn: LogFn;
163-
info: LogFn;
164-
debug: LogFn;
165-
};
166-
export type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug';
167-
const parseLogLevel = (
168-
maybeLevel: string | undefined,
169-
sourceName: string,
170-
client: OpenAI,
171-
): LogLevel | undefined => {
172-
if (!maybeLevel) {
173-
return undefined;
174-
}
175-
const levels: Record<LogLevel, true> = {
176-
off: true,
177-
error: true,
178-
warn: true,
179-
info: true,
180-
debug: true,
181-
};
182-
if (hasOwn(levels, maybeLevel)) {
183-
return maybeLevel;
184-
}
185-
loggerFor(client).warn(
186-
`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(
187-
Object.keys(levels),
188-
)}`,
189-
);
190-
return undefined;
191-
};
192-
193153
export interface ClientOptions {
194154
/**
195155
* Defaults to process.env['OPENAI_API_KEY'].
@@ -279,8 +239,6 @@ export interface ClientOptions {
279239
logger?: Logger | undefined;
280240
}
281241

282-
type FinalizedRequestInit = RequestInit & { headers: Headers };
283-
284242
/**
285243
* API Client for interfacing with the OpenAI API.
286244
*/

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 OpenAI } 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: OpenAI,
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)