@seamapi/http
Advanced tools
Comparing version 0.6.0 to 0.7.0
@@ -1,2 +0,2 @@ | ||
import { isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from './options.js'; | ||
import { isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken, isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken, isSeamHttpOptionsWithApiKey, isSeamHttpOptionsWithClientSessionToken, isSeamHttpOptionsWithConsoleSessionToken, isSeamHttpOptionsWithPersonalAccessToken, SeamHttpInvalidOptionsError, } from './options.js'; | ||
export const getAuthHeaders = (options) => { | ||
@@ -12,6 +12,8 @@ if ('publishableKey' in options) { | ||
} | ||
if (isSeamHttpOptionsWithConsoleSessionToken(options)) { | ||
if (isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken(options) || | ||
isSeamHttpOptionsWithConsoleSessionToken(options)) { | ||
return getAuthHeadersForConsoleSessionToken(options); | ||
} | ||
if (isSeamHttpOptionsWithPersonalAccessToken(options)) { | ||
if (isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken(options) || | ||
isSeamHttpOptionsWithPersonalAccessToken(options)) { | ||
return getAuthHeadersForPersonalAccessToken(options); | ||
@@ -24,4 +26,4 @@ } | ||
'publishableKey,', | ||
'consoleSessionToken with a workspaceId', | ||
'or personalAccessToken with a workspaceId', | ||
'consoleSessionToken', | ||
'or personalAccessToken', | ||
].join(' ')); | ||
@@ -67,3 +69,4 @@ }; | ||
}; | ||
const getAuthHeadersForConsoleSessionToken = ({ consoleSessionToken, workspaceId, }) => { | ||
const getAuthHeadersForConsoleSessionToken = ({ consoleSessionToken, ...options }) => { | ||
const workspaceId = 'workspaceId' in options ? options.workspaceId : undefined; | ||
if (isAccessToken(consoleSessionToken)) { | ||
@@ -83,6 +86,7 @@ throw new SeamHttpInvalidTokenError('An Access Token cannot be used as a consoleSessionToken'); | ||
authorization: `Bearer ${consoleSessionToken}`, | ||
'seam-workspace-id': workspaceId, | ||
...(workspaceId != null ? { 'seam-workspace-id': workspaceId } : {}), | ||
}; | ||
}; | ||
const getAuthHeadersForPersonalAccessToken = ({ personalAccessToken, workspaceId, }) => { | ||
const getAuthHeadersForPersonalAccessToken = ({ personalAccessToken, ...options }) => { | ||
const workspaceId = 'workspaceId' in options ? options.workspaceId : undefined; | ||
if (isJwt(personalAccessToken)) { | ||
@@ -102,3 +106,3 @@ throw new SeamHttpInvalidTokenError('A JWT cannot be used as a personalAccessToken'); | ||
authorization: `Bearer ${personalAccessToken}`, | ||
'seam-workspace-id': workspaceId, | ||
...(workspaceId != null ? { 'seam-workspace-id': workspaceId } : {}), | ||
}; | ||
@@ -105,0 +109,0 @@ }; |
@@ -0,1 +1,2 @@ | ||
export { SeamHttpInvalidTokenError } from './auth.js'; | ||
export * from './error-interceptor.js'; | ||
@@ -6,2 +7,3 @@ export * from './options.js'; | ||
export * from './seam-http-error.js'; | ||
export * from './seam-http-multi-workspace.js'; | ||
export * from '../../../lib/params-serializer.js'; |
@@ -0,1 +1,2 @@ | ||
export { SeamHttpInvalidTokenError } from './auth.js'; | ||
export * from './error-interceptor.js'; | ||
@@ -6,3 +7,4 @@ export * from './options.js'; | ||
export * from './seam-http-error.js'; | ||
export * from './seam-http-multi-workspace.js'; | ||
export * from '../../../lib/params-serializer.js'; | ||
//# sourceMappingURL=index.js.map |
import type { Client, ClientOptions } from './client.js'; | ||
export type SeamHttpMultiWorkspaceOptions = SeamHttpMultiWorkspaceOptionsWithClient | SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken | SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken; | ||
export type SeamHttpOptions = SeamHttpOptionsFromEnv | SeamHttpOptionsWithClient | SeamHttpOptionsWithApiKey | SeamHttpOptionsWithClientSessionToken | SeamHttpOptionsWithConsoleSessionToken | SeamHttpOptionsWithPersonalAccessToken; | ||
@@ -10,2 +11,6 @@ interface SeamHttpCommonOptions extends ClientOptions { | ||
} | ||
export interface SeamHttpMultiWorkspaceOptionsWithClient { | ||
client: Client; | ||
} | ||
export declare const isSeamHttpMultiWorkspaceOptionsWithClient: (options: SeamHttpOptions) => options is SeamHttpMultiWorkspaceOptionsWithClient; | ||
export interface SeamHttpOptionsWithClient { | ||
@@ -23,2 +28,6 @@ client: Client; | ||
export declare const isSeamHttpOptionsWithClientSessionToken: (options: SeamHttpOptions) => options is SeamHttpOptionsWithClientSessionToken; | ||
export interface SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken extends SeamHttpCommonOptions { | ||
consoleSessionToken: string; | ||
} | ||
export declare const isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken: (options: SeamHttpOptions) => options is SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken; | ||
export interface SeamHttpOptionsWithConsoleSessionToken extends SeamHttpCommonOptions { | ||
@@ -29,2 +38,6 @@ consoleSessionToken: string; | ||
export declare const isSeamHttpOptionsWithConsoleSessionToken: (options: SeamHttpOptions) => options is SeamHttpOptionsWithConsoleSessionToken; | ||
export interface SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken extends SeamHttpCommonOptions { | ||
personalAccessToken: string; | ||
} | ||
export declare const isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken: (options: SeamHttpOptions) => options is SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken; | ||
export interface SeamHttpOptionsWithPersonalAccessToken extends SeamHttpCommonOptions { | ||
@@ -38,2 +51,4 @@ personalAccessToken: string; | ||
} | ||
export declare class SeamHttpMultiWorkspaceInvalidOptionsError extends SeamHttpInvalidOptionsError { | ||
} | ||
export {}; |
@@ -0,1 +1,2 @@ | ||
export const isSeamHttpMultiWorkspaceOptionsWithClient = (options) => isSeamHttpOptionsWithClient(options); | ||
export const isSeamHttpOptionsWithClient = (options) => { | ||
@@ -44,3 +45,3 @@ if (!('client' in options)) | ||
}; | ||
export const isSeamHttpOptionsWithConsoleSessionToken = (options) => { | ||
export const isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken = (options) => { | ||
if (!('consoleSessionToken' in options)) | ||
@@ -50,5 +51,2 @@ return false; | ||
return false; | ||
if (!('workspaceId' in options) || options.workspaceId == null) { | ||
throw new SeamHttpInvalidOptionsError('Must pass a workspaceId when using a consoleSessionToken'); | ||
} | ||
if ('apiKey' in options && options.apiKey != null) { | ||
@@ -65,3 +63,12 @@ throw new SeamHttpInvalidOptionsError('The apiKey option cannot be used with the consoleSessionToken option'); | ||
}; | ||
export const isSeamHttpOptionsWithPersonalAccessToken = (options) => { | ||
export const isSeamHttpOptionsWithConsoleSessionToken = (options) => { | ||
if (!isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken(options)) { | ||
return false; | ||
} | ||
if (!('workspaceId' in options) || options.workspaceId == null) { | ||
throw new SeamHttpInvalidOptionsError('Must pass a workspaceId when using a consoleSessionToken'); | ||
} | ||
return true; | ||
}; | ||
export const isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken = (options) => { | ||
if (!('personalAccessToken' in options)) | ||
@@ -71,5 +78,2 @@ return false; | ||
return false; | ||
if (!('workspaceId' in options) || options.workspaceId == null) { | ||
throw new SeamHttpInvalidOptionsError('Must pass a workspaceId when using a personalAccessToken'); | ||
} | ||
if ('apiKey' in options && options.apiKey != null) { | ||
@@ -86,2 +90,11 @@ throw new SeamHttpInvalidOptionsError('The apiKey option cannot be used with the personalAccessToken option'); | ||
}; | ||
export const isSeamHttpOptionsWithPersonalAccessToken = (options) => { | ||
if (!isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken(options)) { | ||
return false; | ||
} | ||
if (!('workspaceId' in options) || options.workspaceId == null) { | ||
throw new SeamHttpInvalidOptionsError('Must pass a workspaceId when using a personalAccessToken'); | ||
} | ||
return true; | ||
}; | ||
export class SeamHttpInvalidOptionsError extends Error { | ||
@@ -94,2 +107,4 @@ constructor(message) { | ||
} | ||
export class SeamHttpMultiWorkspaceInvalidOptionsError extends SeamHttpInvalidOptionsError { | ||
} | ||
//# sourceMappingURL=options.js.map |
import type { ClientOptions } from './client.js'; | ||
import { type SeamHttpOptions } from './options.js'; | ||
export type Options = SeamHttpOptions & { | ||
import { type SeamHttpMultiWorkspaceOptions, type SeamHttpOptions } from './options.js'; | ||
export type Options = SeamHttpMultiWorkspaceOptions | (SeamHttpOptions & { | ||
publishableKey?: string; | ||
}; | ||
}); | ||
export declare const parseOptions: (apiKeyOrOptions: string | Options) => ClientOptions; |
import version from '../../../lib/version.js'; | ||
import { getAuthHeaders } from './auth.js'; | ||
import { isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, } from './options.js'; | ||
import { isSeamHttpMultiWorkspaceOptionsWithClient, isSeamHttpOptionsWithClient, isSeamHttpOptionsWithClientSessionToken, } from './options.js'; | ||
const defaultEndpoint = 'https://connect.getseam.com'; | ||
@@ -13,2 +13,4 @@ const sdkHeaders = { | ||
return options; | ||
if (isSeamHttpMultiWorkspaceOptionsWithClient(options)) | ||
return options; | ||
return { | ||
@@ -15,0 +17,0 @@ axiosOptions: { |
@@ -1,2 +0,2 @@ | ||
declare const seamapiJavascriptHttpVersion = "0.6.0"; | ||
declare const seamapiJavascriptHttpVersion = "0.7.0"; | ||
export default seamapiJavascriptHttpVersion; |
@@ -1,3 +0,3 @@ | ||
const seamapiJavascriptHttpVersion = '0.6.0'; | ||
const seamapiJavascriptHttpVersion = '0.7.0'; | ||
export default seamapiJavascriptHttpVersion; | ||
//# sourceMappingURL=version.js.map |
{ | ||
"name": "@seamapi/http", | ||
"version": "0.6.0", | ||
"version": "0.7.0", | ||
"description": "JavaScript HTTP client for the Seam API written in TypeScript.", | ||
@@ -5,0 +5,0 @@ "type": "module", |
@@ -41,3 +41,3 @@ # Seam HTTP client. | ||
```ts | ||
import { SeamHttp } from '@seamapi/http' | ||
import { SeamHttp } from '@seamapi/http/connect' | ||
@@ -217,3 +217,3 @@ const seam = new SeamHttp('your-api-key') | ||
```ts | ||
import { SeamHttp, DevicesListResponse } from '@seamapi/http' | ||
import { SeamHttp, DevicesListResponse } from '@seamapi/http/connect' | ||
@@ -220,0 +220,0 @@ const seam = new SeamHttp() |
import { | ||
isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken, | ||
isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken, | ||
isSeamHttpOptionsWithApiKey, | ||
@@ -7,2 +9,4 @@ isSeamHttpOptionsWithClientSessionToken, | ||
SeamHttpInvalidOptionsError, | ||
type SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken, | ||
type SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken, | ||
type SeamHttpOptionsWithApiKey, | ||
@@ -30,7 +34,13 @@ type SeamHttpOptionsWithClientSessionToken, | ||
if (isSeamHttpOptionsWithConsoleSessionToken(options)) { | ||
if ( | ||
isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken(options) || | ||
isSeamHttpOptionsWithConsoleSessionToken(options) | ||
) { | ||
return getAuthHeadersForConsoleSessionToken(options) | ||
} | ||
if (isSeamHttpOptionsWithPersonalAccessToken(options)) { | ||
if ( | ||
isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken(options) || | ||
isSeamHttpOptionsWithPersonalAccessToken(options) | ||
) { | ||
return getAuthHeadersForPersonalAccessToken(options) | ||
@@ -45,4 +55,4 @@ } | ||
'publishableKey,', | ||
'consoleSessionToken with a workspaceId', | ||
'or personalAccessToken with a workspaceId', | ||
'consoleSessionToken', | ||
'or personalAccessToken', | ||
].join(' '), | ||
@@ -123,4 +133,8 @@ ) | ||
consoleSessionToken, | ||
workspaceId, | ||
}: SeamHttpOptionsWithConsoleSessionToken): Headers => { | ||
...options | ||
}: | ||
| SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken | ||
| SeamHttpOptionsWithConsoleSessionToken): Headers => { | ||
const workspaceId = 'workspaceId' in options ? options.workspaceId : undefined | ||
if (isAccessToken(consoleSessionToken)) { | ||
@@ -152,3 +166,3 @@ throw new SeamHttpInvalidTokenError( | ||
authorization: `Bearer ${consoleSessionToken}`, | ||
'seam-workspace-id': workspaceId, | ||
...(workspaceId != null ? { 'seam-workspace-id': workspaceId } : {}), | ||
} | ||
@@ -159,4 +173,8 @@ } | ||
personalAccessToken, | ||
workspaceId, | ||
}: SeamHttpOptionsWithPersonalAccessToken): Headers => { | ||
...options | ||
}: | ||
| SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken | ||
| SeamHttpOptionsWithPersonalAccessToken): Headers => { | ||
const workspaceId = 'workspaceId' in options ? options.workspaceId : undefined | ||
if (isJwt(personalAccessToken)) { | ||
@@ -188,3 +206,3 @@ throw new SeamHttpInvalidTokenError( | ||
authorization: `Bearer ${personalAccessToken}`, | ||
'seam-workspace-id': workspaceId, | ||
...(workspaceId != null ? { 'seam-workspace-id': workspaceId } : {}), | ||
} | ||
@@ -191,0 +209,0 @@ } |
@@ -0,1 +1,2 @@ | ||
export { SeamHttpInvalidTokenError } from './auth.js' | ||
export * from './error-interceptor.js' | ||
@@ -6,2 +7,3 @@ export * from './options.js' | ||
export * from './seam-http-error.js' | ||
export * from './seam-http-multi-workspace.js' | ||
export * from 'lib/params-serializer.js' |
import type { Client, ClientOptions } from './client.js' | ||
export type SeamHttpMultiWorkspaceOptions = | ||
| SeamHttpMultiWorkspaceOptionsWithClient | ||
| SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken | ||
| SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken | ||
export type SeamHttpOptions = | ||
@@ -20,2 +25,11 @@ | SeamHttpOptionsFromEnv | ||
export interface SeamHttpMultiWorkspaceOptionsWithClient { | ||
client: Client | ||
} | ||
export const isSeamHttpMultiWorkspaceOptionsWithClient = ( | ||
options: SeamHttpOptions, | ||
): options is SeamHttpMultiWorkspaceOptionsWithClient => | ||
isSeamHttpOptionsWithClient(options) | ||
export interface SeamHttpOptionsWithClient { | ||
@@ -106,20 +120,13 @@ client: Client | ||
export interface SeamHttpOptionsWithConsoleSessionToken | ||
export interface SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken | ||
extends SeamHttpCommonOptions { | ||
consoleSessionToken: string | ||
workspaceId: string | ||
} | ||
export const isSeamHttpOptionsWithConsoleSessionToken = ( | ||
export const isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken = ( | ||
options: SeamHttpOptions, | ||
): options is SeamHttpOptionsWithConsoleSessionToken => { | ||
): options is SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken => { | ||
if (!('consoleSessionToken' in options)) return false | ||
if (options.consoleSessionToken == null) return false | ||
if (!('workspaceId' in options) || options.workspaceId == null) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'Must pass a workspaceId when using a consoleSessionToken', | ||
) | ||
} | ||
if ('apiKey' in options && options.apiKey != null) { | ||
@@ -146,20 +153,35 @@ throw new SeamHttpInvalidOptionsError( | ||
export interface SeamHttpOptionsWithPersonalAccessToken | ||
export interface SeamHttpOptionsWithConsoleSessionToken | ||
extends SeamHttpCommonOptions { | ||
personalAccessToken: string | ||
consoleSessionToken: string | ||
workspaceId: string | ||
} | ||
export const isSeamHttpOptionsWithPersonalAccessToken = ( | ||
export const isSeamHttpOptionsWithConsoleSessionToken = ( | ||
options: SeamHttpOptions, | ||
): options is SeamHttpOptionsWithPersonalAccessToken => { | ||
if (!('personalAccessToken' in options)) return false | ||
if (options.personalAccessToken == null) return false | ||
): options is SeamHttpOptionsWithConsoleSessionToken => { | ||
if (!isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken(options)) { | ||
return false | ||
} | ||
if (!('workspaceId' in options) || options.workspaceId == null) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'Must pass a workspaceId when using a personalAccessToken', | ||
'Must pass a workspaceId when using a consoleSessionToken', | ||
) | ||
} | ||
return true | ||
} | ||
export interface SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken | ||
extends SeamHttpCommonOptions { | ||
personalAccessToken: string | ||
} | ||
export const isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken = ( | ||
options: SeamHttpOptions, | ||
): options is SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken => { | ||
if (!('personalAccessToken' in options)) return false | ||
if (options.personalAccessToken == null) return false | ||
if ('apiKey' in options && options.apiKey != null) { | ||
@@ -186,2 +208,24 @@ throw new SeamHttpInvalidOptionsError( | ||
export interface SeamHttpOptionsWithPersonalAccessToken | ||
extends SeamHttpCommonOptions { | ||
personalAccessToken: string | ||
workspaceId: string | ||
} | ||
export const isSeamHttpOptionsWithPersonalAccessToken = ( | ||
options: SeamHttpOptions, | ||
): options is SeamHttpOptionsWithPersonalAccessToken => { | ||
if (!isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken(options)) { | ||
return false | ||
} | ||
if (!('workspaceId' in options) || options.workspaceId == null) { | ||
throw new SeamHttpInvalidOptionsError( | ||
'Must pass a workspaceId when using a personalAccessToken', | ||
) | ||
} | ||
return true | ||
} | ||
export class SeamHttpInvalidOptionsError extends Error { | ||
@@ -194,1 +238,3 @@ constructor(message: string) { | ||
} | ||
export class SeamHttpMultiWorkspaceInvalidOptionsError extends SeamHttpInvalidOptionsError {} |
@@ -6,4 +6,6 @@ import version from 'lib/version.js' | ||
import { | ||
isSeamHttpMultiWorkspaceOptionsWithClient, | ||
isSeamHttpOptionsWithClient, | ||
isSeamHttpOptionsWithClientSessionToken, | ||
type SeamHttpMultiWorkspaceOptions, | ||
type SeamHttpOptions, | ||
@@ -19,3 +21,5 @@ } from './options.js' | ||
export type Options = SeamHttpOptions & { publishableKey?: string } | ||
export type Options = | ||
| SeamHttpMultiWorkspaceOptions | ||
| (SeamHttpOptions & { publishableKey?: string }) | ||
@@ -28,2 +32,3 @@ export const parseOptions = ( | ||
if (isSeamHttpOptionsWithClient(options)) return options | ||
if (isSeamHttpMultiWorkspaceOptionsWithClient(options)) return options | ||
@@ -30,0 +35,0 @@ return { |
@@ -1,3 +0,3 @@ | ||
const seamapiJavascriptHttpVersion = '0.6.0' | ||
const seamapiJavascriptHttpVersion = '0.7.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
922212
158
11170