Skip to content

Commit e946ec3

Browse files
committed
Wrap client options and type inside client module
1 parent 1dcd7f3 commit e946ec3

25 files changed

+62
-85
lines changed

generate-routes.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,9 @@ ${renderExports(route)}
234234
const renderImports = ({ namespace, subresources }: Route): string =>
235235
`
236236
import type { RouteRequestParams, RouteResponse, RouteRequestBody } from '@seamapi/types/connect'
237-
import { Axios } from 'axios'
238237
import type { SetNonNullable } from 'type-fest'
239238
240-
import { createClient } from 'lib/seam/connect/client.js'
239+
import { type Client, createClient } from 'lib/seam/connect/client.js'
241240
import {
242241
isSeamHttpOptionsWithApiKey,
243242
isSeamHttpOptionsWithClient,
@@ -268,7 +267,7 @@ const renderClass = (
268267
): string =>
269268
`
270269
export class SeamHttp${pascalCase(namespace)} {
271-
client: Axios
270+
client: Client
272271
273272
${constructors
274273
.replaceAll(': SeamHttp ', `: SeamHttp${pascalCase(namespace)} `)

src/lib/seam/connect/client.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import axios, { type Axios } from 'axios'
2-
import axiosRetry, { exponentialDelay } from 'axios-retry'
1+
import axios, { type Axios, type AxiosRequestConfig } from 'axios'
2+
import axiosRetry, { type AxiosRetry, exponentialDelay } from 'axios-retry'
33

44
import { paramsSerializer } from 'lib/params-serializer.js'
55

@@ -10,6 +10,16 @@ import {
1010
type SeamHttpOptions,
1111
} from './options.js'
1212

13+
export type Client = Axios
14+
15+
export interface ClientOptions {
16+
endpoint?: string
17+
axiosOptions?: AxiosRequestConfig
18+
axiosRetryOptions?: AxiosRetryConfig
19+
}
20+
21+
type AxiosRetryConfig = Parameters<AxiosRetry>[1]
22+
1323
export const createClient = (options: Required<SeamHttpOptions>): Axios => {
1424
if (isSeamHttpOptionsWithClient(options)) return options.client
1525

src/lib/seam/connect/options.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,17 @@
1-
import type { Axios, AxiosRequestConfig } from 'axios'
2-
import type { AxiosRetry } from 'axios-retry'
1+
import type { Client, ClientOptions } from './client.js'
32

43
export type SeamHttpOptions =
54
| SeamHttpOptionsFromEnv
65
| SeamHttpOptionsWithClient
76
| SeamHttpOptionsWithApiKey
87
| SeamHttpOptionsWithClientSessionToken
98

10-
interface SeamHttpCommonOptions {
11-
endpoint?: string
12-
axiosOptions?: AxiosRequestConfig
13-
axiosRetryOptions?: AxiosRetryConfig
14-
}
15-
16-
type AxiosRetryConfig = Parameters<AxiosRetry>[1]
9+
type SeamHttpCommonOptions = ClientOptions
1710

1811
export type SeamHttpOptionsFromEnv = SeamHttpCommonOptions
1912

2013
export interface SeamHttpOptionsWithClient {
21-
client: Axios
14+
client: Client
2215
}
2316

2417
export const isSeamHttpOptionsWithClient = (
@@ -27,7 +20,7 @@ export const isSeamHttpOptionsWithClient = (
2720
if (!('client' in options)) return false
2821
if (options.client == null) return false
2922

30-
const keys = Object.keys(options)
23+
const keys = Object.keys(options).filter((k) => k !== 'client')
3124
if (keys.length > 0) {
3225
throw new SeamHttpInvalidOptionsError(
3326
`The client option cannot be used with any other option, but received: ${keys.join(

src/lib/seam/connect/routes/access-codes-unmanaged.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
*/
55

66
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'
7-
import type { Axios } from 'axios'
87
import type { SetNonNullable } from 'type-fest'
98

10-
import { createClient } from 'lib/seam/connect/client.js'
9+
import { type Client, createClient } from 'lib/seam/connect/client.js'
1110
import {
1211
isSeamHttpOptionsWithApiKey,
1312
isSeamHttpOptionsWithClient,
@@ -21,7 +20,7 @@ import {
2120
import { parseOptions } from 'lib/seam/connect/parse-options.js'
2221

2322
export class SeamHttpAccessCodesUnmanaged {
24-
client: Axios
23+
client: Client
2524

2625
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {
2726
const options = parseOptions(apiKeyOrOptions)

src/lib/seam/connect/routes/access-codes.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
*/
55

66
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'
7-
import type { Axios } from 'axios'
87
import type { SetNonNullable } from 'type-fest'
98

10-
import { createClient } from 'lib/seam/connect/client.js'
9+
import { type Client, createClient } from 'lib/seam/connect/client.js'
1110
import {
1211
isSeamHttpOptionsWithApiKey,
1312
isSeamHttpOptionsWithClient,
@@ -23,7 +22,7 @@ import { parseOptions } from 'lib/seam/connect/parse-options.js'
2322
import { SeamHttpAccessCodesUnmanaged } from './access-codes-unmanaged.js'
2423

2524
export class SeamHttpAccessCodes {
26-
client: Axios
25+
client: Client
2726

2827
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {
2928
const options = parseOptions(apiKeyOrOptions)

src/lib/seam/connect/routes/acs-access-groups.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
*/
55

66
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'
7-
import type { Axios } from 'axios'
87
import type { SetNonNullable } from 'type-fest'
98

10-
import { createClient } from 'lib/seam/connect/client.js'
9+
import { type Client, createClient } from 'lib/seam/connect/client.js'
1110
import {
1211
isSeamHttpOptionsWithApiKey,
1312
isSeamHttpOptionsWithClient,
@@ -21,7 +20,7 @@ import {
2120
import { parseOptions } from 'lib/seam/connect/parse-options.js'
2221

2322
export class SeamHttpAcsAccessGroups {
24-
client: Axios
23+
client: Client
2524

2625
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {
2726
const options = parseOptions(apiKeyOrOptions)

src/lib/seam/connect/routes/acs-credentials.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
*/
55

66
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'
7-
import type { Axios } from 'axios'
87
import type { SetNonNullable } from 'type-fest'
98

10-
import { createClient } from 'lib/seam/connect/client.js'
9+
import { type Client, createClient } from 'lib/seam/connect/client.js'
1110
import {
1211
isSeamHttpOptionsWithApiKey,
1312
isSeamHttpOptionsWithClient,
@@ -21,7 +20,7 @@ import {
2120
import { parseOptions } from 'lib/seam/connect/parse-options.js'
2221

2322
export class SeamHttpAcsCredentials {
24-
client: Axios
23+
client: Client
2524

2625
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {
2726
const options = parseOptions(apiKeyOrOptions)

src/lib/seam/connect/routes/acs-systems.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
*/
55

66
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'
7-
import type { Axios } from 'axios'
87
import type { SetNonNullable } from 'type-fest'
98

10-
import { createClient } from 'lib/seam/connect/client.js'
9+
import { type Client, createClient } from 'lib/seam/connect/client.js'
1110
import {
1211
isSeamHttpOptionsWithApiKey,
1312
isSeamHttpOptionsWithClient,
@@ -21,7 +20,7 @@ import {
2120
import { parseOptions } from 'lib/seam/connect/parse-options.js'
2221

2322
export class SeamHttpAcsSystems {
24-
client: Axios
23+
client: Client
2524

2625
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {
2726
const options = parseOptions(apiKeyOrOptions)

src/lib/seam/connect/routes/acs-users.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
*/
55

66
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'
7-
import type { Axios } from 'axios'
87
import type { SetNonNullable } from 'type-fest'
98

10-
import { createClient } from 'lib/seam/connect/client.js'
9+
import { type Client, createClient } from 'lib/seam/connect/client.js'
1110
import {
1211
isSeamHttpOptionsWithApiKey,
1312
isSeamHttpOptionsWithClient,
@@ -21,7 +20,7 @@ import {
2120
import { parseOptions } from 'lib/seam/connect/parse-options.js'
2221

2322
export class SeamHttpAcsUsers {
24-
client: Axios
23+
client: Client
2524

2625
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {
2726
const options = parseOptions(apiKeyOrOptions)

src/lib/seam/connect/routes/acs.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
* Do not edit this file or add other files to this directory.
44
*/
55

6-
import type { Axios } from 'axios'
7-
8-
import { createClient } from 'lib/seam/connect/client.js'
6+
import { type Client, createClient } from 'lib/seam/connect/client.js'
97
import {
108
isSeamHttpOptionsWithApiKey,
119
isSeamHttpOptionsWithClient,
@@ -24,7 +22,7 @@ import { SeamHttpAcsSystems } from './acs-systems.js'
2422
import { SeamHttpAcsUsers } from './acs-users.js'
2523

2624
export class SeamHttpAcs {
27-
client: Axios
25+
client: Client
2826

2927
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {
3028
const options = parseOptions(apiKeyOrOptions)

0 commit comments

Comments
 (0)