@seamapi/http
Advanced tools
Comparing version 0.8.1 to 0.9.0
@@ -7,3 +7,2 @@ import { type AxiosInstance, type AxiosRequestConfig } from 'axios'; | ||
axiosRetryOptions?: AxiosRetryConfig; | ||
client?: Client; | ||
} | ||
@@ -10,0 +9,0 @@ type AxiosRetryConfig = Parameters<AxiosRetry>[1]; |
@@ -8,4 +8,2 @@ import axios, {} from 'axios'; | ||
export const createClient = (options) => { | ||
if (options.client != null) | ||
return options.client; | ||
const client = axios.create({ | ||
@@ -12,0 +10,0 @@ paramsSerializer, |
import type { Client, ClientOptions } from './client.js'; | ||
import type { ResolveActionAttemptOptions } from './resolve-action-attempt.js'; | ||
export type SeamHttpMultiWorkspaceOptions = SeamHttpMultiWorkspaceOptionsWithClient | SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken | SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken; | ||
export type SeamHttpOptions = SeamHttpOptionsFromEnv | SeamHttpOptionsWithClient | SeamHttpOptionsWithApiKey | SeamHttpOptionsWithClientSessionToken | SeamHttpOptionsWithConsoleSessionToken | SeamHttpOptionsWithPersonalAccessToken; | ||
interface SeamHttpCommonOptions extends ClientOptions { | ||
interface SeamHttpCommonOptions extends ClientOptions, SeamHttpRequestOptions { | ||
endpoint?: string; | ||
} | ||
export interface SeamHttpRequestOptions { | ||
waitForActionAttempt?: boolean | ResolveActionAttemptOptions; | ||
} | ||
export interface SeamHttpFromPublishableKeyOptions extends SeamHttpCommonOptions { | ||
@@ -11,7 +15,7 @@ } | ||
} | ||
export interface SeamHttpMultiWorkspaceOptionsWithClient { | ||
export interface SeamHttpMultiWorkspaceOptionsWithClient extends SeamHttpRequestOptions { | ||
client: Client; | ||
} | ||
export declare const isSeamHttpMultiWorkspaceOptionsWithClient: (options: SeamHttpOptions) => options is SeamHttpMultiWorkspaceOptionsWithClient; | ||
export interface SeamHttpOptionsWithClient { | ||
export interface SeamHttpOptionsWithClient extends SeamHttpRequestOptions { | ||
client: Client; | ||
@@ -18,0 +22,0 @@ } |
@@ -0,1 +1,2 @@ | ||
import { isSeamHttpRequestOption } from './parse-options.js'; | ||
export const isSeamHttpMultiWorkspaceOptionsWithClient = (options) => isSeamHttpOptionsWithClient(options); | ||
@@ -8,3 +9,3 @@ export const isSeamHttpOptionsWithClient = (options) => { | ||
const keys = Object.keys(options).filter((k) => k !== 'client'); | ||
if (keys.length > 0) { | ||
if (keys.filter((k) => !isSeamHttpRequestOption(k)).length > 0) { | ||
throw new SeamHttpInvalidOptionsError(`The client option cannot be used with any other option, but received: ${keys.join(', ')}`); | ||
@@ -11,0 +12,0 @@ } |
@@ -1,6 +0,12 @@ | ||
import type { ClientOptions } from './client.js'; | ||
import { type SeamHttpMultiWorkspaceOptions, type SeamHttpOptions } from './options.js'; | ||
import type { Client, ClientOptions } from './client.js'; | ||
import { type SeamHttpMultiWorkspaceOptions, type SeamHttpOptions, type SeamHttpRequestOptions } from './options.js'; | ||
export type Options = SeamHttpMultiWorkspaceOptions | (SeamHttpOptions & { | ||
publishableKey?: string; | ||
}); | ||
export declare const parseOptions: (apiKeyOrOptions: string | Options) => ClientOptions; | ||
type ParsedOptions = Required<(ClientOptions | { | ||
client: Client; | ||
}) & SeamHttpRequestOptions>; | ||
export declare const parseOptions: (apiKeyOrOptions: string | Options) => ParsedOptions; | ||
export declare const limitToSeamHttpRequestOptions: (options: Required<SeamHttpRequestOptions>) => Required<SeamHttpRequestOptions>; | ||
export declare const isSeamHttpRequestOption: (key: string) => key is "waitForActionAttempt"; | ||
export {}; |
@@ -16,2 +16,3 @@ import version from '../../../lib/version.js'; | ||
return { | ||
...options, | ||
axiosOptions: { | ||
@@ -36,4 +37,11 @@ baseURL: options.endpoint ?? getEndpointFromEnv() ?? defaultEndpoint, | ||
: apiKeyOrOptions; | ||
if (isSeamHttpOptionsWithClient(options)) | ||
return options; | ||
const requestOptions = { | ||
waitForActionAttempt: options.waitForActionAttempt ?? false, | ||
}; | ||
if (isSeamHttpOptionsWithClient(options)) { | ||
return { | ||
...options, | ||
...requestOptions, | ||
}; | ||
} | ||
const apiKey = 'apiKey' in options ? options.apiKey : getApiKeyFromEnv(options); | ||
@@ -43,2 +51,3 @@ return { | ||
...(apiKey != null ? { apiKey } : {}), | ||
...requestOptions, | ||
}; | ||
@@ -56,2 +65,16 @@ }; | ||
}; | ||
export const limitToSeamHttpRequestOptions = (options) => { | ||
return Object.keys(options) | ||
.filter(isSeamHttpRequestOption) | ||
.reduce((obj, key) => ({ | ||
...obj, | ||
[key]: options[key], | ||
}), {}); | ||
}; | ||
export const isSeamHttpRequestOption = (key) => { | ||
const keys = { | ||
waitForActionAttempt: true, | ||
}; | ||
return Object.keys(keys).includes(key); | ||
}; | ||
//# sourceMappingURL=parse-options.js.map |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpAccessCodesUnmanaged { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpAccessCodesUnmanaged; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpAccessCodesUnmanaged { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
import { SeamHttpAccessCodesUnmanaged } from './access-codes-unmanaged.js'; | ||
export declare class SeamHttpAccessCodes { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -9,0 +10,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpAccessCodes; |
@@ -8,3 +8,3 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpAccessCodesUnmanaged } from './access-codes-unmanaged.js'; | ||
@@ -14,4 +14,5 @@ import { SeamHttpClientSessions } from './client-sessions.js'; | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -42,2 +43,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -65,3 +69,3 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); | ||
get unmanaged() { | ||
return SeamHttpAccessCodesUnmanaged.fromClient(this.client); | ||
return SeamHttpAccessCodesUnmanaged.fromClient(this.client, this.defaults); | ||
} | ||
@@ -68,0 +72,0 @@ async create(body) { |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpAcsAccessGroups { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpAcsAccessGroups; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpAcsAccessGroups { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpAcsCredentials { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpAcsCredentials; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpAcsCredentials { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpAcsSystems { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpAcsSystems; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpAcsSystems { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpAcsUsers { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpAcsUsers; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpAcsUsers { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
import { SeamHttpAcsAccessGroups } from './acs-access-groups.js'; | ||
@@ -9,2 +9,3 @@ import { SeamHttpAcsCredentials } from './acs-credentials.js'; | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -11,0 +12,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpAcs; |
@@ -8,3 +8,3 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpAcsAccessGroups } from './acs-access-groups.js'; | ||
@@ -17,4 +17,5 @@ import { SeamHttpAcsCredentials } from './acs-credentials.js'; | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -45,2 +46,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -68,14 +72,14 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); | ||
get accessGroups() { | ||
return SeamHttpAcsAccessGroups.fromClient(this.client); | ||
return SeamHttpAcsAccessGroups.fromClient(this.client, this.defaults); | ||
} | ||
get credentials() { | ||
return SeamHttpAcsCredentials.fromClient(this.client); | ||
return SeamHttpAcsCredentials.fromClient(this.client, this.defaults); | ||
} | ||
get systems() { | ||
return SeamHttpAcsSystems.fromClient(this.client); | ||
return SeamHttpAcsSystems.fromClient(this.client, this.defaults); | ||
} | ||
get users() { | ||
return SeamHttpAcsUsers.fromClient(this.client); | ||
return SeamHttpAcsUsers.fromClient(this.client, this.defaults); | ||
} | ||
} | ||
//# sourceMappingURL=acs.js.map |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type ResolveActionAttemptOptions } from '../../../../lib/seam/connect/resolve-action-attempt.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpActionAttempts { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -15,5 +15,3 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpActionAttempts; | ||
static fromPersonalAccessToken(personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'], workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'], options?: Omit<SeamHttpOptionsWithPersonalAccessToken, 'personalAccessToken' | 'workspaceId'>): SeamHttpActionAttempts; | ||
get(body?: ActionAttemptsGetParams, { waitForActionAttempt, }?: { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions>; | ||
}): Promise<ActionAttemptsGetResponse['action_attempt']>; | ||
get(body?: ActionAttemptsGetParams, options?: Pick<SeamHttpRequestOptions, 'waitForActionAttempt'>): Promise<ActionAttemptsGetResponse['action_attempt']>; | ||
list(body?: ActionAttemptsListParams): Promise<ActionAttemptsListResponse['action_attempts']>; | ||
@@ -23,7 +21,5 @@ } | ||
export type ActionAttemptsGetResponse = SetNonNullable<Required<RouteResponse<'/action_attempts/get'>>>; | ||
export interface ActionAttemptsGetOptions { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions>; | ||
} | ||
export type ActionAttemptsGetOptions = Pick<SeamHttpRequestOptions, 'waitForActionAttempt'>; | ||
export type ActionAttemptsListParams = RouteRequestBody<'/action_attempts/list'>; | ||
export type ActionAttemptsListResponse = SetNonNullable<Required<RouteResponse<'/action_attempts/list'>>>; | ||
export type ActionAttemptsListOptions = never; |
@@ -8,9 +8,10 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { resolveActionAttempt, } from '../../../../lib/seam/connect/resolve-action-attempt.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { resolveActionAttempt } from '../../../../lib/seam/connect/resolve-action-attempt.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpActionAttempts { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -41,2 +42,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -63,3 +67,3 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); | ||
} | ||
async get(body, { waitForActionAttempt = false, } = {}) { | ||
async get(body, options = {}) { | ||
const { data } = await this.client.request({ | ||
@@ -70,4 +74,8 @@ url: '/action_attempts/get', | ||
}); | ||
if (waitForActionAttempt != null && waitForActionAttempt !== false) { | ||
return await resolveActionAttempt(data.action_attempt, SeamHttpActionAttempts.fromClient(this.client), typeof waitForActionAttempt === 'boolean' ? {} : waitForActionAttempt); | ||
const waitForActionAttempt = options.waitForActionAttempt ?? this.defaults.waitForActionAttempt; | ||
if (waitForActionAttempt !== false) { | ||
return await resolveActionAttempt(data.action_attempt, SeamHttpActionAttempts.fromClient(this.client, { | ||
...this.defaults, | ||
waitForActionAttempt: false, | ||
}), typeof waitForActionAttempt === 'boolean' ? {} : waitForActionAttempt); | ||
} | ||
@@ -74,0 +82,0 @@ return data.action_attempt; |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpClientSessions { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpClientSessions; |
@@ -8,7 +8,8 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
export class SeamHttpClientSessions { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -39,2 +40,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -41,0 +45,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteRequestParams, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpConnectWebviews { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpConnectWebviews; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpConnectWebviews { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteRequestParams, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpConnectedAccounts { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpConnectedAccounts; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpConnectedAccounts { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpDevicesUnmanaged { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpDevicesUnmanaged; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpDevicesUnmanaged { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
import { SeamHttpDevicesUnmanaged } from './devices-unmanaged.js'; | ||
export declare class SeamHttpDevices { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -9,0 +10,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpDevices; |
@@ -8,3 +8,3 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
@@ -14,4 +14,5 @@ import { SeamHttpDevicesUnmanaged } from './devices-unmanaged.js'; | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -42,2 +43,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -65,3 +69,3 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); | ||
get unmanaged() { | ||
return SeamHttpDevicesUnmanaged.fromClient(this.client); | ||
return SeamHttpDevicesUnmanaged.fromClient(this.client, this.defaults); | ||
} | ||
@@ -68,0 +72,0 @@ async delete(body) { |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpEvents { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpEvents; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpEvents { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type ResolveActionAttemptOptions } from '../../../../lib/seam/connect/resolve-action-attempt.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpLocks { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -17,8 +17,4 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpLocks; | ||
list(body?: LocksListParams): Promise<LocksListResponse['devices']>; | ||
lockDoor(body?: LocksLockDoorBody, { waitForActionAttempt, }?: { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions>; | ||
}): Promise<LocksLockDoorResponse['action_attempt']>; | ||
unlockDoor(body?: LocksUnlockDoorBody, { waitForActionAttempt, }?: { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions>; | ||
}): Promise<LocksUnlockDoorResponse['action_attempt']>; | ||
lockDoor(body?: LocksLockDoorBody, options?: Pick<SeamHttpRequestOptions, 'waitForActionAttempt'>): Promise<LocksLockDoorResponse['action_attempt']>; | ||
unlockDoor(body?: LocksUnlockDoorBody, options?: Pick<SeamHttpRequestOptions, 'waitForActionAttempt'>): Promise<LocksUnlockDoorResponse['action_attempt']>; | ||
} | ||
@@ -33,9 +29,5 @@ export type LocksGetParams = RouteRequestBody<'/locks/get'>; | ||
export type LocksLockDoorResponse = SetNonNullable<Required<RouteResponse<'/locks/lock_door'>>>; | ||
export interface LocksLockDoorOptions { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions>; | ||
} | ||
export type LocksLockDoorOptions = Pick<SeamHttpRequestOptions, 'waitForActionAttempt'>; | ||
export type LocksUnlockDoorBody = RouteRequestBody<'/locks/unlock_door'>; | ||
export type LocksUnlockDoorResponse = SetNonNullable<Required<RouteResponse<'/locks/unlock_door'>>>; | ||
export interface LocksUnlockDoorOptions { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions>; | ||
} | ||
export type LocksUnlockDoorOptions = Pick<SeamHttpRequestOptions, 'waitForActionAttempt'>; |
@@ -8,4 +8,4 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { resolveActionAttempt, } from '../../../../lib/seam/connect/resolve-action-attempt.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { resolveActionAttempt } from '../../../../lib/seam/connect/resolve-action-attempt.js'; | ||
import { SeamHttpActionAttempts } from './action-attempts.js'; | ||
@@ -15,4 +15,5 @@ import { SeamHttpClientSessions } from './client-sessions.js'; | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -43,2 +44,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -81,3 +85,3 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); | ||
} | ||
async lockDoor(body, { waitForActionAttempt = false, } = {}) { | ||
async lockDoor(body, options = {}) { | ||
const { data } = await this.client.request({ | ||
@@ -88,8 +92,12 @@ url: '/locks/lock_door', | ||
}); | ||
if (waitForActionAttempt != null && waitForActionAttempt !== false) { | ||
return await resolveActionAttempt(data.action_attempt, SeamHttpActionAttempts.fromClient(this.client), typeof waitForActionAttempt === 'boolean' ? {} : waitForActionAttempt); | ||
const waitForActionAttempt = options.waitForActionAttempt ?? this.defaults.waitForActionAttempt; | ||
if (waitForActionAttempt !== false) { | ||
return await resolveActionAttempt(data.action_attempt, SeamHttpActionAttempts.fromClient(this.client, { | ||
...this.defaults, | ||
waitForActionAttempt: false, | ||
}), typeof waitForActionAttempt === 'boolean' ? {} : waitForActionAttempt); | ||
} | ||
return data.action_attempt; | ||
} | ||
async unlockDoor(body, { waitForActionAttempt = false, } = {}) { | ||
async unlockDoor(body, options = {}) { | ||
const { data } = await this.client.request({ | ||
@@ -100,4 +108,8 @@ url: '/locks/unlock_door', | ||
}); | ||
if (waitForActionAttempt != null && waitForActionAttempt !== false) { | ||
return await resolveActionAttempt(data.action_attempt, SeamHttpActionAttempts.fromClient(this.client), typeof waitForActionAttempt === 'boolean' ? {} : waitForActionAttempt); | ||
const waitForActionAttempt = options.waitForActionAttempt ?? this.defaults.waitForActionAttempt; | ||
if (waitForActionAttempt !== false) { | ||
return await resolveActionAttempt(data.action_attempt, SeamHttpActionAttempts.fromClient(this.client, { | ||
...this.defaults, | ||
waitForActionAttempt: false, | ||
}), typeof waitForActionAttempt === 'boolean' ? {} : waitForActionAttempt); | ||
} | ||
@@ -104,0 +116,0 @@ return data.action_attempt; |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpNoiseSensorsNoiseThresholds { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpNoiseSensorsNoiseThresholds; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpNoiseSensorsNoiseThresholds { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
import { SeamHttpNoiseSensorsNoiseThresholds } from './noise-sensors-noise-thresholds.js'; | ||
export declare class SeamHttpNoiseSensors { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -7,0 +8,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpNoiseSensors; |
@@ -8,3 +8,3 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
@@ -14,4 +14,5 @@ import { SeamHttpNoiseSensorsNoiseThresholds } from './noise-sensors-noise-thresholds.js'; | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -42,2 +43,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -65,5 +69,5 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); | ||
get noiseThresholds() { | ||
return SeamHttpNoiseSensorsNoiseThresholds.fromClient(this.client); | ||
return SeamHttpNoiseSensorsNoiseThresholds.fromClient(this.client, this.defaults); | ||
} | ||
} | ||
//# sourceMappingURL=noise-sensors.js.map |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpThermostatsClimateSettingSchedules { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpThermostatsClimateSettingSchedules; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpThermostatsClimateSettingSchedules { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
import { SeamHttpThermostatsClimateSettingSchedules } from './thermostats-climate-setting-schedules.js'; | ||
export declare class SeamHttpThermostats { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -9,0 +10,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpThermostats; |
@@ -8,3 +8,3 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
@@ -14,4 +14,5 @@ import { SeamHttpThermostatsClimateSettingSchedules } from './thermostats-climate-setting-schedules.js'; | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -42,2 +43,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -65,3 +69,3 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); | ||
get climateSettingSchedules() { | ||
return SeamHttpThermostatsClimateSettingSchedules.fromClient(this.client); | ||
return SeamHttpThermostatsClimateSettingSchedules.fromClient(this.client, this.defaults); | ||
} | ||
@@ -68,0 +72,0 @@ async cool(body) { |
import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpUserIdentities { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpUserIdentities; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpUserIdentities { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteRequestParams, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpWebhooks { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpWebhooks; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpWebhooks { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import type { RouteRequestBody, RouteRequestParams, RouteResponse } from '@seamapi/types/connect'; | ||
import type { SetNonNullable } from 'type-fest'; | ||
import { type Client } from '../../../../lib/seam/connect/client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from '../../../../lib/seam/connect/options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from '../../../../lib/seam/connect/options.js'; | ||
export declare class SeamHttpWorkspaces { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -8,0 +9,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttpWorkspaces; |
@@ -8,8 +8,9 @@ /* | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from '../../../../lib/seam/connect/options.js'; | ||
import { parseOptions } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions, } from '../../../../lib/seam/connect/parse-options.js'; | ||
import { SeamHttpClientSessions } from './client-sessions.js'; | ||
export class SeamHttpWorkspaces { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -40,2 +41,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -42,0 +46,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); |
import { type Client } from './client.js'; | ||
import { type SeamHttpMultiWorkspaceOptions, type SeamHttpMultiWorkspaceOptionsWithClient, type SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken, type SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken } from './options.js'; | ||
import { type SeamHttpMultiWorkspaceOptions, type SeamHttpMultiWorkspaceOptionsWithClient, type SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken, type SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from './options.js'; | ||
import { SeamHttpWorkspaces } from './routes/index.js'; | ||
export declare class SeamHttpMultiWorkspace { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(options: SeamHttpMultiWorkspaceOptions); | ||
@@ -7,0 +8,0 @@ static fromClient(client: SeamHttpMultiWorkspaceOptionsWithClient['client'], options?: Omit<SeamHttpMultiWorkspaceOptionsWithClient, 'client'>): SeamHttpMultiWorkspace; |
import { createClient } from './client.js'; | ||
import { isSeamHttpMultiWorkspaceOptionsWithClient, isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken, isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken, SeamHttpMultiWorkspaceInvalidOptionsError, } from './options.js'; | ||
import { parseOptions } from './parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions } from './parse-options.js'; | ||
import { SeamHttpWorkspaces } from './routes/index.js'; | ||
export class SeamHttpMultiWorkspace { | ||
constructor(options) { | ||
const clientOptions = parseOptions(options); | ||
this.client = createClient(clientOptions); | ||
const opts = parseOptions(options); | ||
this.client = 'client' in opts ? opts.client : createClient(opts); | ||
this.defaults = limitToSeamHttpRequestOptions(opts); | ||
} | ||
@@ -32,5 +33,5 @@ static fromClient(client, options = {}) { | ||
get workspaces() { | ||
return SeamHttpWorkspaces.fromClient(this.client); | ||
return SeamHttpWorkspaces.fromClient(this.client, this.defaults); | ||
} | ||
} | ||
//# sourceMappingURL=seam-http-multi-workspace.js.map |
import { type Client } from './client.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken } from './options.js'; | ||
import { type SeamHttpFromPublishableKeyOptions, type SeamHttpOptions, type SeamHttpOptionsWithApiKey, type SeamHttpOptionsWithClient, type SeamHttpOptionsWithClientSessionToken, type SeamHttpOptionsWithConsoleSessionToken, type SeamHttpOptionsWithPersonalAccessToken, type SeamHttpRequestOptions } from './options.js'; | ||
import { SeamHttpAccessCodes, SeamHttpAcs, SeamHttpActionAttempts, SeamHttpClientSessions, SeamHttpConnectedAccounts, SeamHttpConnectWebviews, SeamHttpDevices, SeamHttpEvents, SeamHttpLocks, SeamHttpNoiseSensors, SeamHttpThermostats, SeamHttpUserIdentities, SeamHttpWebhooks, SeamHttpWorkspaces } from './routes/index.js'; | ||
export declare class SeamHttp { | ||
client: Client; | ||
readonly defaults: Required<SeamHttpRequestOptions>; | ||
constructor(apiKeyOrOptions?: string | SeamHttpOptions); | ||
@@ -7,0 +8,0 @@ static fromClient(client: SeamHttpOptionsWithClient['client'], options?: Omit<SeamHttpOptionsWithClient, 'client'>): SeamHttp; |
import { warnOnInsecureuserIdentifierKey } from './auth.js'; | ||
import { createClient } from './client.js'; | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from './options.js'; | ||
import { parseOptions } from './parse-options.js'; | ||
import { limitToSeamHttpRequestOptions, parseOptions } from './parse-options.js'; | ||
import { SeamHttpAccessCodes, SeamHttpAcs, SeamHttpActionAttempts, SeamHttpClientSessions, SeamHttpConnectedAccounts, SeamHttpConnectWebviews, SeamHttpDevices, SeamHttpEvents, SeamHttpLocks, SeamHttpNoiseSensors, SeamHttpThermostats, SeamHttpUserIdentities, SeamHttpWebhooks, SeamHttpWorkspaces, } from './routes/index.js'; | ||
export class SeamHttp { | ||
constructor(apiKeyOrOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions); | ||
this.client = createClient(clientOptions); | ||
const options = parseOptions(apiKeyOrOptions); | ||
this.client = 'client' in options ? options.client : createClient(options); | ||
this.defaults = limitToSeamHttpRequestOptions(options); | ||
} | ||
@@ -35,2 +36,5 @@ static fromClient(client, options = {}) { | ||
const clientOptions = parseOptions({ ...options, publishableKey }); | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError('The client option cannot be used with SeamHttp.fromPublishableKey'); | ||
} | ||
const client = createClient(clientOptions); | ||
@@ -58,44 +62,44 @@ const clientSessions = SeamHttpClientSessions.fromClient(client); | ||
get accessCodes() { | ||
return SeamHttpAccessCodes.fromClient(this.client); | ||
return SeamHttpAccessCodes.fromClient(this.client, this.defaults); | ||
} | ||
get acs() { | ||
return SeamHttpAcs.fromClient(this.client); | ||
return SeamHttpAcs.fromClient(this.client, this.defaults); | ||
} | ||
get actionAttempts() { | ||
return SeamHttpActionAttempts.fromClient(this.client); | ||
return SeamHttpActionAttempts.fromClient(this.client, this.defaults); | ||
} | ||
get clientSessions() { | ||
return SeamHttpClientSessions.fromClient(this.client); | ||
return SeamHttpClientSessions.fromClient(this.client, this.defaults); | ||
} | ||
get connectedAccounts() { | ||
return SeamHttpConnectedAccounts.fromClient(this.client); | ||
return SeamHttpConnectedAccounts.fromClient(this.client, this.defaults); | ||
} | ||
get connectWebviews() { | ||
return SeamHttpConnectWebviews.fromClient(this.client); | ||
return SeamHttpConnectWebviews.fromClient(this.client, this.defaults); | ||
} | ||
get devices() { | ||
return SeamHttpDevices.fromClient(this.client); | ||
return SeamHttpDevices.fromClient(this.client, this.defaults); | ||
} | ||
get events() { | ||
return SeamHttpEvents.fromClient(this.client); | ||
return SeamHttpEvents.fromClient(this.client, this.defaults); | ||
} | ||
get locks() { | ||
return SeamHttpLocks.fromClient(this.client); | ||
return SeamHttpLocks.fromClient(this.client, this.defaults); | ||
} | ||
get noiseSensors() { | ||
return SeamHttpNoiseSensors.fromClient(this.client); | ||
return SeamHttpNoiseSensors.fromClient(this.client, this.defaults); | ||
} | ||
get thermostats() { | ||
return SeamHttpThermostats.fromClient(this.client); | ||
return SeamHttpThermostats.fromClient(this.client, this.defaults); | ||
} | ||
get userIdentities() { | ||
return SeamHttpUserIdentities.fromClient(this.client); | ||
return SeamHttpUserIdentities.fromClient(this.client, this.defaults); | ||
} | ||
get webhooks() { | ||
return SeamHttpWebhooks.fromClient(this.client); | ||
return SeamHttpWebhooks.fromClient(this.client, this.defaults); | ||
} | ||
get workspaces() { | ||
return SeamHttpWorkspaces.fromClient(this.client); | ||
return SeamHttpWorkspaces.fromClient(this.client, this.defaults); | ||
} | ||
} | ||
//# sourceMappingURL=seam-http.js.map |
@@ -1,2 +0,2 @@ | ||
declare const seamapiJavascriptHttpVersion = "0.8.1"; | ||
declare const seamapiJavascriptHttpVersion = "0.9.0"; | ||
export default seamapiJavascriptHttpVersion; |
@@ -1,3 +0,3 @@ | ||
const seamapiJavascriptHttpVersion = '0.8.1'; | ||
const seamapiJavascriptHttpVersion = '0.9.0'; | ||
export default seamapiJavascriptHttpVersion; | ||
//# sourceMappingURL=version.js.map |
{ | ||
"name": "@seamapi/http", | ||
"version": "0.8.1", | ||
"version": "0.9.0", | ||
"description": "JavaScript HTTP client for the Seam API written in TypeScript.", | ||
@@ -5,0 +5,0 @@ "type": "module", |
@@ -154,4 +154,6 @@ # Seam HTTP Client | ||
To make working with action attempts more convenient for applications, | ||
this library provides the `waitForActionAttempt` option: | ||
this library provides the `waitForActionAttempt` option. | ||
Pass the option per-request, | ||
```ts | ||
@@ -166,2 +168,13 @@ await seam.locks.unlockDoor( | ||
or set the default option for the client: | ||
```ts | ||
const seam = new SeamHttp({ | ||
apiKey: 'your-api-key', | ||
waitForActionAttempt: true, | ||
}) | ||
await seam.locks.unlockDoor({ device_id }) | ||
``` | ||
Using the `waitForActionAttempt` option: | ||
@@ -168,0 +181,0 @@ |
@@ -15,3 +15,2 @@ import axios, { type AxiosInstance, type AxiosRequestConfig } from 'axios' | ||
axiosRetryOptions?: AxiosRetryConfig | ||
client?: Client | ||
} | ||
@@ -22,4 +21,2 @@ | ||
export const createClient = (options: ClientOptions): AxiosInstance => { | ||
if (options.client != null) return options.client | ||
const client = axios.create({ | ||
@@ -26,0 +23,0 @@ paramsSerializer, |
import type { Client, ClientOptions } from './client.js' | ||
import { isSeamHttpRequestOption } from './parse-options.js' | ||
import type { ResolveActionAttemptOptions } from './resolve-action-attempt.js' | ||
@@ -16,6 +18,10 @@ export type SeamHttpMultiWorkspaceOptions = | ||
interface SeamHttpCommonOptions extends ClientOptions { | ||
interface SeamHttpCommonOptions extends ClientOptions, SeamHttpRequestOptions { | ||
endpoint?: string | ||
} | ||
export interface SeamHttpRequestOptions { | ||
waitForActionAttempt?: boolean | ResolveActionAttemptOptions | ||
} | ||
export interface SeamHttpFromPublishableKeyOptions | ||
@@ -26,3 +32,4 @@ extends SeamHttpCommonOptions {} | ||
export interface SeamHttpMultiWorkspaceOptionsWithClient { | ||
export interface SeamHttpMultiWorkspaceOptionsWithClient | ||
extends SeamHttpRequestOptions { | ||
client: Client | ||
@@ -36,3 +43,3 @@ } | ||
export interface SeamHttpOptionsWithClient { | ||
export interface SeamHttpOptionsWithClient extends SeamHttpRequestOptions { | ||
client: Client | ||
@@ -48,3 +55,3 @@ } | ||
const keys = Object.keys(options).filter((k) => k !== 'client') | ||
if (keys.length > 0) { | ||
if (keys.filter((k) => !isSeamHttpRequestOption(k)).length > 0) { | ||
throw new SeamHttpInvalidOptionsError( | ||
@@ -51,0 +58,0 @@ `The client option cannot be used with any other option, but received: ${keys.join( |
import version from 'lib/version.js' | ||
import { getAuthHeaders } from './auth.js' | ||
import type { ClientOptions } from './client.js' | ||
import type { Client, ClientOptions } from './client.js' | ||
import { | ||
@@ -11,2 +11,3 @@ isSeamHttpMultiWorkspaceOptionsWithClient, | ||
type SeamHttpOptions, | ||
type SeamHttpRequestOptions, | ||
} from './options.js' | ||
@@ -25,5 +26,9 @@ | ||
type ParsedOptions = Required< | ||
(ClientOptions | { client: Client }) & SeamHttpRequestOptions | ||
> | ||
export const parseOptions = ( | ||
apiKeyOrOptions: string | Options, | ||
): ClientOptions => { | ||
): ParsedOptions => { | ||
const options = getNormalizedOptions(apiKeyOrOptions) | ||
@@ -35,2 +40,3 @@ | ||
return { | ||
...options, | ||
axiosOptions: { | ||
@@ -54,3 +60,3 @@ baseURL: options.endpoint ?? getEndpointFromEnv() ?? defaultEndpoint, | ||
apiKeyOrOptions: string | Options, | ||
): SeamHttpOptions => { | ||
): SeamHttpOptions & Required<SeamHttpRequestOptions> => { | ||
const options = | ||
@@ -61,4 +67,13 @@ typeof apiKeyOrOptions === 'string' | ||
if (isSeamHttpOptionsWithClient(options)) return options | ||
const requestOptions = { | ||
waitForActionAttempt: options.waitForActionAttempt ?? false, | ||
} | ||
if (isSeamHttpOptionsWithClient(options)) { | ||
return { | ||
...options, | ||
...requestOptions, | ||
} | ||
} | ||
const apiKey = | ||
@@ -70,2 +85,3 @@ 'apiKey' in options ? options.apiKey : getApiKeyFromEnv(options) | ||
...(apiKey != null ? { apiKey } : {}), | ||
...requestOptions, | ||
} | ||
@@ -89,1 +105,24 @@ } | ||
} | ||
export const limitToSeamHttpRequestOptions = ( | ||
options: Required<SeamHttpRequestOptions>, | ||
): Required<SeamHttpRequestOptions> => { | ||
return Object.keys(options) | ||
.filter(isSeamHttpRequestOption) | ||
.reduce( | ||
(obj, key) => ({ | ||
...obj, | ||
[key]: options[key], | ||
}), | ||
{}, | ||
) as Required<SeamHttpRequestOptions> | ||
} | ||
export const isSeamHttpRequestOption = ( | ||
key: string, | ||
): key is keyof SeamHttpRequestOptions => { | ||
const keys: Record<keyof SeamHttpRequestOptions, true> = { | ||
waitForActionAttempt: true, | ||
} | ||
return Object.keys(keys).includes(key) | ||
} |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -33,6 +37,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -83,2 +89,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -85,0 +96,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -34,6 +38,8 @@ import { SeamHttpAccessCodesUnmanaged } from './access-codes-unmanaged.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -84,2 +90,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -128,3 +139,3 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) | ||
get unmanaged(): SeamHttpAccessCodesUnmanaged { | ||
return SeamHttpAccessCodesUnmanaged.fromClient(this.client) | ||
return SeamHttpAccessCodesUnmanaged.fromClient(this.client, this.defaults) | ||
} | ||
@@ -131,0 +142,0 @@ |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -33,6 +37,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -83,2 +89,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -85,0 +96,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -33,6 +37,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -83,2 +89,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -85,0 +96,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -33,6 +37,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -83,2 +89,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -85,0 +96,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -33,6 +37,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -83,2 +89,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -85,0 +96,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -22,4 +22,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -34,6 +38,8 @@ import { SeamHttpAcsAccessGroups } from './acs-access-groups.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -84,2 +90,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -128,16 +139,16 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) | ||
get accessGroups(): SeamHttpAcsAccessGroups { | ||
return SeamHttpAcsAccessGroups.fromClient(this.client) | ||
return SeamHttpAcsAccessGroups.fromClient(this.client, this.defaults) | ||
} | ||
get credentials(): SeamHttpAcsCredentials { | ||
return SeamHttpAcsCredentials.fromClient(this.client) | ||
return SeamHttpAcsCredentials.fromClient(this.client, this.defaults) | ||
} | ||
get systems(): SeamHttpAcsSystems { | ||
return SeamHttpAcsSystems.fromClient(this.client) | ||
return SeamHttpAcsSystems.fromClient(this.client, this.defaults) | ||
} | ||
get users(): SeamHttpAcsUsers { | ||
return SeamHttpAcsUsers.fromClient(this.client) | ||
return SeamHttpAcsUsers.fromClient(this.client, this.defaults) | ||
} | ||
} |
@@ -25,8 +25,9 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
resolveActionAttempt, | ||
type ResolveActionAttemptOptions, | ||
} from 'lib/seam/connect/resolve-action-attempt.js' | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
import { resolveActionAttempt } from 'lib/seam/connect/resolve-action-attempt.js' | ||
@@ -37,6 +38,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -87,2 +90,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -132,7 +140,3 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) | ||
body?: ActionAttemptsGetParams, | ||
{ | ||
waitForActionAttempt = false, | ||
}: { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions> | ||
} = {}, | ||
options: Pick<SeamHttpRequestOptions, 'waitForActionAttempt'> = {}, | ||
): Promise<ActionAttemptsGetResponse['action_attempt']> { | ||
@@ -144,6 +148,11 @@ const { data } = await this.client.request<ActionAttemptsGetResponse>({ | ||
}) | ||
if (waitForActionAttempt != null && waitForActionAttempt !== false) { | ||
const waitForActionAttempt = | ||
options.waitForActionAttempt ?? this.defaults.waitForActionAttempt | ||
if (waitForActionAttempt !== false) { | ||
return await resolveActionAttempt( | ||
data.action_attempt, | ||
SeamHttpActionAttempts.fromClient(this.client), | ||
SeamHttpActionAttempts.fromClient(this.client, { | ||
...this.defaults, | ||
waitForActionAttempt: false, | ||
}), | ||
typeof waitForActionAttempt === 'boolean' ? {} : waitForActionAttempt, | ||
@@ -174,5 +183,6 @@ ) | ||
export interface ActionAttemptsGetOptions { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions> | ||
} | ||
export type ActionAttemptsGetOptions = Pick< | ||
SeamHttpRequestOptions, | ||
'waitForActionAttempt' | ||
> | ||
@@ -179,0 +189,0 @@ export type ActionAttemptsListParams = RouteRequestBody<'/action_attempts/list'> |
@@ -25,11 +25,17 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
export class SeamHttpClientSessions { | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -80,2 +86,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -82,0 +93,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -29,4 +29,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -37,6 +41,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -87,2 +93,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -89,0 +100,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -29,4 +29,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -37,6 +41,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -87,2 +93,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -89,0 +100,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -33,6 +37,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -83,2 +89,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -85,0 +96,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -34,6 +38,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -84,2 +90,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -128,3 +139,3 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) | ||
get unmanaged(): SeamHttpDevicesUnmanaged { | ||
return SeamHttpDevicesUnmanaged.fromClient(this.client) | ||
return SeamHttpDevicesUnmanaged.fromClient(this.client, this.defaults) | ||
} | ||
@@ -131,0 +142,0 @@ |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -33,6 +37,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -83,2 +89,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -85,0 +96,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -25,8 +25,9 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
resolveActionAttempt, | ||
type ResolveActionAttemptOptions, | ||
} from 'lib/seam/connect/resolve-action-attempt.js' | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
import { resolveActionAttempt } from 'lib/seam/connect/resolve-action-attempt.js' | ||
@@ -38,6 +39,8 @@ import { SeamHttpActionAttempts } from './action-attempts.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -88,2 +91,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -153,7 +161,3 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) | ||
body?: LocksLockDoorBody, | ||
{ | ||
waitForActionAttempt = false, | ||
}: { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions> | ||
} = {}, | ||
options: Pick<SeamHttpRequestOptions, 'waitForActionAttempt'> = {}, | ||
): Promise<LocksLockDoorResponse['action_attempt']> { | ||
@@ -165,6 +169,11 @@ const { data } = await this.client.request<LocksLockDoorResponse>({ | ||
}) | ||
if (waitForActionAttempt != null && waitForActionAttempt !== false) { | ||
const waitForActionAttempt = | ||
options.waitForActionAttempt ?? this.defaults.waitForActionAttempt | ||
if (waitForActionAttempt !== false) { | ||
return await resolveActionAttempt( | ||
data.action_attempt, | ||
SeamHttpActionAttempts.fromClient(this.client), | ||
SeamHttpActionAttempts.fromClient(this.client, { | ||
...this.defaults, | ||
waitForActionAttempt: false, | ||
}), | ||
typeof waitForActionAttempt === 'boolean' ? {} : waitForActionAttempt, | ||
@@ -178,7 +187,3 @@ ) | ||
body?: LocksUnlockDoorBody, | ||
{ | ||
waitForActionAttempt = false, | ||
}: { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions> | ||
} = {}, | ||
options: Pick<SeamHttpRequestOptions, 'waitForActionAttempt'> = {}, | ||
): Promise<LocksUnlockDoorResponse['action_attempt']> { | ||
@@ -190,6 +195,11 @@ const { data } = await this.client.request<LocksUnlockDoorResponse>({ | ||
}) | ||
if (waitForActionAttempt != null && waitForActionAttempt !== false) { | ||
const waitForActionAttempt = | ||
options.waitForActionAttempt ?? this.defaults.waitForActionAttempt | ||
if (waitForActionAttempt !== false) { | ||
return await resolveActionAttempt( | ||
data.action_attempt, | ||
SeamHttpActionAttempts.fromClient(this.client), | ||
SeamHttpActionAttempts.fromClient(this.client, { | ||
...this.defaults, | ||
waitForActionAttempt: false, | ||
}), | ||
typeof waitForActionAttempt === 'boolean' ? {} : waitForActionAttempt, | ||
@@ -224,5 +234,6 @@ ) | ||
export interface LocksLockDoorOptions { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions> | ||
} | ||
export type LocksLockDoorOptions = Pick< | ||
SeamHttpRequestOptions, | ||
'waitForActionAttempt' | ||
> | ||
@@ -235,4 +246,5 @@ export type LocksUnlockDoorBody = RouteRequestBody<'/locks/unlock_door'> | ||
export interface LocksUnlockDoorOptions { | ||
waitForActionAttempt?: boolean | Partial<ResolveActionAttemptOptions> | ||
} | ||
export type LocksUnlockDoorOptions = Pick< | ||
SeamHttpRequestOptions, | ||
'waitForActionAttempt' | ||
> |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -33,6 +37,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -83,2 +89,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -85,0 +96,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -22,4 +22,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -31,6 +35,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -81,2 +87,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -125,4 +136,7 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) | ||
get noiseThresholds(): SeamHttpNoiseSensorsNoiseThresholds { | ||
return SeamHttpNoiseSensorsNoiseThresholds.fromClient(this.client) | ||
return SeamHttpNoiseSensorsNoiseThresholds.fromClient( | ||
this.client, | ||
this.defaults, | ||
) | ||
} | ||
} |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -33,6 +37,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -83,2 +89,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -85,0 +96,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -34,6 +38,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -84,2 +90,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -128,3 +139,6 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) | ||
get climateSettingSchedules(): SeamHttpThermostatsClimateSettingSchedules { | ||
return SeamHttpThermostatsClimateSettingSchedules.fromClient(this.client) | ||
return SeamHttpThermostatsClimateSettingSchedules.fromClient( | ||
this.client, | ||
this.defaults, | ||
) | ||
} | ||
@@ -131,0 +145,0 @@ |
@@ -25,4 +25,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -33,6 +37,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -83,2 +89,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -85,0 +96,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -29,4 +29,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -37,6 +41,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -87,2 +93,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -89,0 +100,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -29,4 +29,8 @@ /* | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from 'lib/seam/connect/options.js' | ||
import { parseOptions } from 'lib/seam/connect/parse-options.js' | ||
import { | ||
limitToSeamHttpRequestOptions, | ||
parseOptions, | ||
} from 'lib/seam/connect/parse-options.js' | ||
@@ -37,6 +41,8 @@ import { SeamHttpClientSessions } from './client-sessions.js' | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -87,2 +93,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -89,0 +100,0 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) |
@@ -11,4 +11,5 @@ import { type Client, createClient } from './client.js' | ||
type SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from './options.js' | ||
import { parseOptions } from './parse-options.js' | ||
import { limitToSeamHttpRequestOptions, parseOptions } from './parse-options.js' | ||
import { SeamHttpWorkspaces } from './routes/index.js' | ||
@@ -18,6 +19,8 @@ | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(options: SeamHttpMultiWorkspaceOptions) { | ||
const clientOptions = parseOptions(options) | ||
this.client = createClient(clientOptions) | ||
const opts = parseOptions(options) | ||
this.client = 'client' in opts ? opts.client : createClient(opts) | ||
this.defaults = limitToSeamHttpRequestOptions(opts) | ||
} | ||
@@ -77,4 +80,4 @@ | ||
get workspaces(): SeamHttpWorkspaces { | ||
return SeamHttpWorkspaces.fromClient(this.client) | ||
return SeamHttpWorkspaces.fromClient(this.client, this.defaults) | ||
} | ||
} |
@@ -17,4 +17,5 @@ import { warnOnInsecureuserIdentifierKey } from './auth.js' | ||
type SeamHttpOptionsWithPersonalAccessToken, | ||
type SeamHttpRequestOptions, | ||
} from './options.js' | ||
import { parseOptions } from './parse-options.js' | ||
import { limitToSeamHttpRequestOptions, parseOptions } from './parse-options.js' | ||
import { | ||
@@ -39,6 +40,8 @@ SeamHttpAccessCodes, | ||
client: Client | ||
readonly defaults: Required<SeamHttpRequestOptions> | ||
constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { | ||
const clientOptions = parseOptions(apiKeyOrOptions) | ||
this.client = createClient(clientOptions) | ||
const options = parseOptions(apiKeyOrOptions) | ||
this.client = 'client' in options ? options.client : createClient(options) | ||
this.defaults = limitToSeamHttpRequestOptions(options) | ||
} | ||
@@ -89,2 +92,7 @@ | ||
const clientOptions = parseOptions({ ...options, publishableKey }) | ||
if (isSeamHttpOptionsWithClient(clientOptions)) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'The client option cannot be used with SeamHttp.fromPublishableKey', | ||
) | ||
} | ||
const client = createClient(clientOptions) | ||
@@ -133,56 +141,56 @@ const clientSessions = SeamHttpClientSessions.fromClient(client) | ||
get accessCodes(): SeamHttpAccessCodes { | ||
return SeamHttpAccessCodes.fromClient(this.client) | ||
return SeamHttpAccessCodes.fromClient(this.client, this.defaults) | ||
} | ||
get acs(): SeamHttpAcs { | ||
return SeamHttpAcs.fromClient(this.client) | ||
return SeamHttpAcs.fromClient(this.client, this.defaults) | ||
} | ||
get actionAttempts(): SeamHttpActionAttempts { | ||
return SeamHttpActionAttempts.fromClient(this.client) | ||
return SeamHttpActionAttempts.fromClient(this.client, this.defaults) | ||
} | ||
get clientSessions(): SeamHttpClientSessions { | ||
return SeamHttpClientSessions.fromClient(this.client) | ||
return SeamHttpClientSessions.fromClient(this.client, this.defaults) | ||
} | ||
get connectedAccounts(): SeamHttpConnectedAccounts { | ||
return SeamHttpConnectedAccounts.fromClient(this.client) | ||
return SeamHttpConnectedAccounts.fromClient(this.client, this.defaults) | ||
} | ||
get connectWebviews(): SeamHttpConnectWebviews { | ||
return SeamHttpConnectWebviews.fromClient(this.client) | ||
return SeamHttpConnectWebviews.fromClient(this.client, this.defaults) | ||
} | ||
get devices(): SeamHttpDevices { | ||
return SeamHttpDevices.fromClient(this.client) | ||
return SeamHttpDevices.fromClient(this.client, this.defaults) | ||
} | ||
get events(): SeamHttpEvents { | ||
return SeamHttpEvents.fromClient(this.client) | ||
return SeamHttpEvents.fromClient(this.client, this.defaults) | ||
} | ||
get locks(): SeamHttpLocks { | ||
return SeamHttpLocks.fromClient(this.client) | ||
return SeamHttpLocks.fromClient(this.client, this.defaults) | ||
} | ||
get noiseSensors(): SeamHttpNoiseSensors { | ||
return SeamHttpNoiseSensors.fromClient(this.client) | ||
return SeamHttpNoiseSensors.fromClient(this.client, this.defaults) | ||
} | ||
get thermostats(): SeamHttpThermostats { | ||
return SeamHttpThermostats.fromClient(this.client) | ||
return SeamHttpThermostats.fromClient(this.client, this.defaults) | ||
} | ||
get userIdentities(): SeamHttpUserIdentities { | ||
return SeamHttpUserIdentities.fromClient(this.client) | ||
return SeamHttpUserIdentities.fromClient(this.client, this.defaults) | ||
} | ||
get webhooks(): SeamHttpWebhooks { | ||
return SeamHttpWebhooks.fromClient(this.client) | ||
return SeamHttpWebhooks.fromClient(this.client, this.defaults) | ||
} | ||
get workspaces(): SeamHttpWorkspaces { | ||
return SeamHttpWorkspaces.fromClient(this.client) | ||
return SeamHttpWorkspaces.fromClient(this.client, this.defaults) | ||
} | ||
} |
@@ -1,3 +0,3 @@ | ||
const seamapiJavascriptHttpVersion = '0.8.1' | ||
const seamapiJavascriptHttpVersion = '0.9.0' | ||
export default seamapiJavascriptHttpVersion |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
1029955
12409
426