11import type { Client , ClientOptions } from './client.js'
22
3+ export type SeamHttpMultiWorkspaceOptions =
4+ | SeamHttpMultiWorkspaceOptionsWithClient
5+ | SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken
6+ | SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken
7+
38export type SeamHttpOptions =
49 | SeamHttpOptionsFromEnv
510 | SeamHttpOptionsWithClient
@@ -17,6 +22,15 @@ export interface SeamHttpFromPublishableKeyOptions
1722
1823export interface SeamHttpOptionsFromEnv extends SeamHttpCommonOptions { }
1924
25+ export interface SeamHttpMultiWorkspaceOptionsWithClient {
26+ client : Client
27+ }
28+
29+ export const isSeamHttpMultiWorkspaceOptionsWithClient = (
30+ options : SeamHttpOptions ,
31+ ) : options is SeamHttpMultiWorkspaceOptionsWithClient =>
32+ isSeamHttpOptionsWithClient ( options )
33+
2034export interface SeamHttpOptionsWithClient {
2135 client : Client
2236}
@@ -102,24 +116,17 @@ export const isSeamHttpOptionsWithClientSessionToken = (
102116 return true
103117}
104118
105- export interface SeamHttpOptionsWithConsoleSessionToken
119+ export interface SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken
106120 extends SeamHttpCommonOptions {
107121 consoleSessionToken : string
108- workspaceId : string
109122}
110123
111- export const isSeamHttpOptionsWithConsoleSessionToken = (
124+ export const isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken = (
112125 options : SeamHttpOptions ,
113- ) : options is SeamHttpOptionsWithConsoleSessionToken => {
126+ ) : options is SeamHttpMultiWorkspaceOptionsWithConsoleSessionToken => {
114127 if ( ! ( 'consoleSessionToken' in options ) ) return false
115128 if ( options . consoleSessionToken == null ) return false
116129
117- if ( ! ( 'workspaceId' in options ) || options . workspaceId == null ) {
118- throw new SeamHttpInvalidOptionsError (
119- 'Must pass a workspaceId when using a consoleSessionToken' ,
120- )
121- }
122-
123130 if ( 'apiKey' in options && options . apiKey != null ) {
124131 throw new SeamHttpInvalidOptionsError (
125132 'The apiKey option cannot be used with the consoleSessionToken option' ,
@@ -141,24 +148,39 @@ export const isSeamHttpOptionsWithConsoleSessionToken = (
141148 return true
142149}
143150
144- export interface SeamHttpOptionsWithPersonalAccessToken
151+ export interface SeamHttpOptionsWithConsoleSessionToken
145152 extends SeamHttpCommonOptions {
146- personalAccessToken : string
153+ consoleSessionToken : string
147154 workspaceId : string
148155}
149156
150- export const isSeamHttpOptionsWithPersonalAccessToken = (
157+ export const isSeamHttpOptionsWithConsoleSessionToken = (
151158 options : SeamHttpOptions ,
152- ) : options is SeamHttpOptionsWithPersonalAccessToken => {
153- if ( ! ( 'personalAccessToken' in options ) ) return false
154- if ( options . personalAccessToken == null ) return false
159+ ) : options is SeamHttpOptionsWithConsoleSessionToken => {
160+ if ( ! isSeamHttpMultiWorkspaceOptionsWithConsoleSessionToken ( options ) ) {
161+ return false
162+ }
155163
156164 if ( ! ( 'workspaceId' in options ) || options . workspaceId == null ) {
157165 throw new SeamHttpInvalidOptionsError (
158- 'Must pass a workspaceId when using a personalAccessToken ' ,
166+ 'Must pass a workspaceId when using a consoleSessionToken ' ,
159167 )
160168 }
161169
170+ return true
171+ }
172+
173+ export interface SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken
174+ extends SeamHttpCommonOptions {
175+ personalAccessToken : string
176+ }
177+
178+ export const isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken = (
179+ options : SeamHttpOptions ,
180+ ) : options is SeamHttpMultiWorkspaceOptionsWithPersonalAccessToken => {
181+ if ( ! ( 'personalAccessToken' in options ) ) return false
182+ if ( options . personalAccessToken == null ) return false
183+
162184 if ( 'apiKey' in options && options . apiKey != null ) {
163185 throw new SeamHttpInvalidOptionsError (
164186 'The apiKey option cannot be used with the personalAccessToken option' ,
@@ -180,10 +202,34 @@ export const isSeamHttpOptionsWithPersonalAccessToken = (
180202 return true
181203}
182204
205+ export interface SeamHttpOptionsWithPersonalAccessToken
206+ extends SeamHttpCommonOptions {
207+ personalAccessToken : string
208+ workspaceId : string
209+ }
210+
211+ export const isSeamHttpOptionsWithPersonalAccessToken = (
212+ options : SeamHttpOptions ,
213+ ) : options is SeamHttpOptionsWithPersonalAccessToken => {
214+ if ( ! isSeamHttpMultiWorkspaceOptionsWithPersonalAccessToken ( options ) ) {
215+ return false
216+ }
217+
218+ if ( ! ( 'workspaceId' in options ) || options . workspaceId == null ) {
219+ throw new SeamHttpInvalidOptionsError (
220+ 'Must pass a workspaceId when using a personalAccessToken' ,
221+ )
222+ }
223+
224+ return true
225+ }
226+
183227export class SeamHttpInvalidOptionsError extends Error {
184228 constructor ( message : string ) {
185229 super ( `SeamHttp received invalid options: ${ message } ` )
186230 this . name = this . constructor . name
187231 Error . captureStackTrace ( this , this . constructor )
188232 }
189233}
234+
235+ export class SeamHttpMultiWorkspaceInvalidOptionsError extends SeamHttpInvalidOptionsError { }
0 commit comments