@seamapi/http 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +212 -1
- package/dist/connect.cjs +643 -4
- package/dist/connect.cjs.map +1 -1
- package/dist/connect.d.cts +84 -2
- package/lib/seam/connect/api-error-type.d.ts +8 -0
- package/lib/seam/connect/api-error-type.js +3 -0
- package/lib/seam/connect/api-error-type.js.map +1 -0
- package/lib/seam/connect/auth.js +55 -4
- package/lib/seam/connect/auth.js.map +1 -1
- package/lib/seam/connect/client.js +5 -0
- package/lib/seam/connect/client.js.map +1 -1
- package/lib/seam/connect/error-interceptor.d.ts +1 -0
- package/lib/seam/connect/error-interceptor.js +43 -0
- package/lib/seam/connect/error-interceptor.js.map +1 -0
- package/lib/seam/connect/index.d.ts +3 -1
- package/lib/seam/connect/index.js +3 -1
- package/lib/seam/connect/index.js.map +1 -1
- package/lib/seam/connect/options.d.ts +11 -1
- package/lib/seam/connect/options.js +51 -1
- package/lib/seam/connect/options.js.map +1 -1
- package/lib/seam/connect/routes/access-codes-unmanaged.d.ts +3 -1
- package/lib/seam/connect/routes/access-codes-unmanaged.js +15 -1
- package/lib/seam/connect/routes/access-codes-unmanaged.js.map +1 -1
- package/lib/seam/connect/routes/access-codes.d.ts +3 -1
- package/lib/seam/connect/routes/access-codes.js +15 -1
- package/lib/seam/connect/routes/access-codes.js.map +1 -1
- package/lib/seam/connect/routes/acs-access-groups.d.ts +3 -1
- package/lib/seam/connect/routes/acs-access-groups.js +15 -1
- package/lib/seam/connect/routes/acs-access-groups.js.map +1 -1
- package/lib/seam/connect/routes/acs-credentials.d.ts +3 -1
- package/lib/seam/connect/routes/acs-credentials.js +15 -1
- package/lib/seam/connect/routes/acs-credentials.js.map +1 -1
- package/lib/seam/connect/routes/acs-systems.d.ts +3 -1
- package/lib/seam/connect/routes/acs-systems.js +15 -1
- package/lib/seam/connect/routes/acs-systems.js.map +1 -1
- package/lib/seam/connect/routes/acs-users.d.ts +3 -1
- package/lib/seam/connect/routes/acs-users.js +15 -1
- package/lib/seam/connect/routes/acs-users.js.map +1 -1
- package/lib/seam/connect/routes/acs.d.ts +3 -1
- package/lib/seam/connect/routes/acs.js +15 -1
- package/lib/seam/connect/routes/acs.js.map +1 -1
- package/lib/seam/connect/routes/action-attempts.d.ts +3 -1
- package/lib/seam/connect/routes/action-attempts.js +15 -1
- package/lib/seam/connect/routes/action-attempts.js.map +1 -1
- package/lib/seam/connect/routes/client-sessions.d.ts +3 -1
- package/lib/seam/connect/routes/client-sessions.js +15 -1
- package/lib/seam/connect/routes/client-sessions.js.map +1 -1
- package/lib/seam/connect/routes/connect-webviews.d.ts +3 -1
- package/lib/seam/connect/routes/connect-webviews.js +15 -1
- package/lib/seam/connect/routes/connect-webviews.js.map +1 -1
- package/lib/seam/connect/routes/connected-accounts.d.ts +3 -1
- package/lib/seam/connect/routes/connected-accounts.js +15 -1
- package/lib/seam/connect/routes/connected-accounts.js.map +1 -1
- package/lib/seam/connect/routes/devices-unmanaged.d.ts +3 -1
- package/lib/seam/connect/routes/devices-unmanaged.js +15 -1
- package/lib/seam/connect/routes/devices-unmanaged.js.map +1 -1
- package/lib/seam/connect/routes/devices.d.ts +3 -1
- package/lib/seam/connect/routes/devices.js +15 -1
- package/lib/seam/connect/routes/devices.js.map +1 -1
- package/lib/seam/connect/routes/events.d.ts +3 -1
- package/lib/seam/connect/routes/events.js +15 -1
- package/lib/seam/connect/routes/events.js.map +1 -1
- package/lib/seam/connect/routes/locks.d.ts +3 -1
- package/lib/seam/connect/routes/locks.js +15 -1
- package/lib/seam/connect/routes/locks.js.map +1 -1
- package/lib/seam/connect/routes/noise-sensors-noise-thresholds.d.ts +3 -1
- package/lib/seam/connect/routes/noise-sensors-noise-thresholds.js +15 -1
- package/lib/seam/connect/routes/noise-sensors-noise-thresholds.js.map +1 -1
- package/lib/seam/connect/routes/noise-sensors.d.ts +3 -1
- package/lib/seam/connect/routes/noise-sensors.js +15 -1
- package/lib/seam/connect/routes/noise-sensors.js.map +1 -1
- package/lib/seam/connect/routes/thermostats-climate-setting-schedules.d.ts +3 -1
- package/lib/seam/connect/routes/thermostats-climate-setting-schedules.js +15 -1
- package/lib/seam/connect/routes/thermostats-climate-setting-schedules.js.map +1 -1
- package/lib/seam/connect/routes/thermostats.d.ts +3 -1
- package/lib/seam/connect/routes/thermostats.js +15 -1
- package/lib/seam/connect/routes/thermostats.js.map +1 -1
- package/lib/seam/connect/routes/webhooks.d.ts +3 -1
- package/lib/seam/connect/routes/webhooks.js +15 -1
- package/lib/seam/connect/routes/webhooks.js.map +1 -1
- package/lib/seam/connect/routes/workspaces.d.ts +3 -1
- package/lib/seam/connect/routes/workspaces.js +15 -1
- package/lib/seam/connect/routes/workspaces.js.map +1 -1
- package/lib/seam/connect/seam-http-error.d.ts +20 -0
- package/lib/seam/connect/seam-http-error.js +43 -0
- package/lib/seam/connect/seam-http-error.js.map +1 -0
- package/lib/seam/connect/seam-http.d.ts +3 -1
- package/lib/seam/connect/seam-http.js +15 -1
- package/lib/seam/connect/seam-http.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +3 -2
- package/src/lib/seam/connect/api-error-type.ts +11 -0
- package/src/lib/seam/connect/auth.ts +95 -3
- package/src/lib/seam/connect/client.ts +8 -0
- package/src/lib/seam/connect/error-interceptor.ts +61 -0
- package/src/lib/seam/connect/index.ts +3 -1
- package/src/lib/seam/connect/options.ts +105 -1
- package/src/lib/seam/connect/routes/access-codes-unmanaged.ts +38 -0
- package/src/lib/seam/connect/routes/access-codes.ts +38 -0
- package/src/lib/seam/connect/routes/acs-access-groups.ts +38 -0
- package/src/lib/seam/connect/routes/acs-credentials.ts +38 -0
- package/src/lib/seam/connect/routes/acs-systems.ts +38 -0
- package/src/lib/seam/connect/routes/acs-users.ts +38 -0
- package/src/lib/seam/connect/routes/acs.ts +38 -0
- package/src/lib/seam/connect/routes/action-attempts.ts +38 -0
- package/src/lib/seam/connect/routes/client-sessions.ts +38 -0
- package/src/lib/seam/connect/routes/connect-webviews.ts +38 -0
- package/src/lib/seam/connect/routes/connected-accounts.ts +38 -0
- package/src/lib/seam/connect/routes/devices-unmanaged.ts +38 -0
- package/src/lib/seam/connect/routes/devices.ts +38 -0
- package/src/lib/seam/connect/routes/events.ts +38 -0
- package/src/lib/seam/connect/routes/locks.ts +38 -0
- package/src/lib/seam/connect/routes/noise-sensors-noise-thresholds.ts +38 -0
- package/src/lib/seam/connect/routes/noise-sensors.ts +38 -0
- package/src/lib/seam/connect/routes/thermostats-climate-setting-schedules.ts +38 -0
- package/src/lib/seam/connect/routes/thermostats.ts +38 -0
- package/src/lib/seam/connect/routes/webhooks.ts +38 -0
- package/src/lib/seam/connect/routes/workspaces.ts +38 -0
- package/src/lib/seam/connect/seam-http-error.ts +64 -0
- package/src/lib/seam/connect/seam-http.ts +38 -0
- package/src/lib/version.ts +1 -1
|
@@ -9,12 +9,16 @@ import {
|
|
|
9
9
|
isSeamHttpOptionsWithApiKey,
|
|
10
10
|
isSeamHttpOptionsWithClient,
|
|
11
11
|
isSeamHttpOptionsWithClientSessionToken,
|
|
12
|
+
isSeamHttpOptionsWithConsoleSessionToken,
|
|
13
|
+
isSeamHttpOptionsWithPersonalAccessToken,
|
|
12
14
|
type SeamHttpFromPublishableKeyOptions,
|
|
13
15
|
SeamHttpInvalidOptionsError,
|
|
14
16
|
type SeamHttpOptions,
|
|
15
17
|
type SeamHttpOptionsWithApiKey,
|
|
16
18
|
type SeamHttpOptionsWithClient,
|
|
17
19
|
type SeamHttpOptionsWithClientSessionToken,
|
|
20
|
+
type SeamHttpOptionsWithConsoleSessionToken,
|
|
21
|
+
type SeamHttpOptionsWithPersonalAccessToken,
|
|
18
22
|
} from 'lib/seam/connect/options.js'
|
|
19
23
|
import { parseOptions } from 'lib/seam/connect/parse-options.js'
|
|
20
24
|
|
|
@@ -80,6 +84,40 @@ export class SeamHttpNoiseSensors {
|
|
|
80
84
|
return SeamHttpNoiseSensors.fromClientSessionToken(token, options)
|
|
81
85
|
}
|
|
82
86
|
|
|
87
|
+
static fromConsoleSessionToken(
|
|
88
|
+
consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
|
|
89
|
+
workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
|
|
90
|
+
options: Omit<
|
|
91
|
+
SeamHttpOptionsWithConsoleSessionToken,
|
|
92
|
+
'consoleSessionToken' | 'workspaceId'
|
|
93
|
+
> = {},
|
|
94
|
+
): SeamHttpNoiseSensors {
|
|
95
|
+
const constructorOptions = { ...options, consoleSessionToken, workspaceId }
|
|
96
|
+
if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
|
|
97
|
+
throw new SeamHttpInvalidOptionsError(
|
|
98
|
+
'Missing consoleSessionToken or workspaceId',
|
|
99
|
+
)
|
|
100
|
+
}
|
|
101
|
+
return new SeamHttpNoiseSensors(constructorOptions)
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
static fromPersonalAccessToken(
|
|
105
|
+
personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
|
|
106
|
+
workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
|
|
107
|
+
options: Omit<
|
|
108
|
+
SeamHttpOptionsWithPersonalAccessToken,
|
|
109
|
+
'personalAccessToken' | 'workspaceId'
|
|
110
|
+
> = {},
|
|
111
|
+
): SeamHttpNoiseSensors {
|
|
112
|
+
const constructorOptions = { ...options, personalAccessToken, workspaceId }
|
|
113
|
+
if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
|
|
114
|
+
throw new SeamHttpInvalidOptionsError(
|
|
115
|
+
'Missing personalAccessToken or workspaceId',
|
|
116
|
+
)
|
|
117
|
+
}
|
|
118
|
+
return new SeamHttpNoiseSensors(constructorOptions)
|
|
119
|
+
}
|
|
120
|
+
|
|
83
121
|
get noiseThresholds(): SeamHttpNoiseSensorsNoiseThresholds {
|
|
84
122
|
return SeamHttpNoiseSensorsNoiseThresholds.fromClient(this.client)
|
|
85
123
|
}
|
|
@@ -12,12 +12,16 @@ import {
|
|
|
12
12
|
isSeamHttpOptionsWithApiKey,
|
|
13
13
|
isSeamHttpOptionsWithClient,
|
|
14
14
|
isSeamHttpOptionsWithClientSessionToken,
|
|
15
|
+
isSeamHttpOptionsWithConsoleSessionToken,
|
|
16
|
+
isSeamHttpOptionsWithPersonalAccessToken,
|
|
15
17
|
type SeamHttpFromPublishableKeyOptions,
|
|
16
18
|
SeamHttpInvalidOptionsError,
|
|
17
19
|
type SeamHttpOptions,
|
|
18
20
|
type SeamHttpOptionsWithApiKey,
|
|
19
21
|
type SeamHttpOptionsWithClient,
|
|
20
22
|
type SeamHttpOptionsWithClientSessionToken,
|
|
23
|
+
type SeamHttpOptionsWithConsoleSessionToken,
|
|
24
|
+
type SeamHttpOptionsWithPersonalAccessToken,
|
|
21
25
|
} from 'lib/seam/connect/options.js'
|
|
22
26
|
import { parseOptions } from 'lib/seam/connect/parse-options.js'
|
|
23
27
|
|
|
@@ -85,6 +89,40 @@ export class SeamHttpThermostatsClimateSettingSchedules {
|
|
|
85
89
|
)
|
|
86
90
|
}
|
|
87
91
|
|
|
92
|
+
static fromConsoleSessionToken(
|
|
93
|
+
consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
|
|
94
|
+
workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
|
|
95
|
+
options: Omit<
|
|
96
|
+
SeamHttpOptionsWithConsoleSessionToken,
|
|
97
|
+
'consoleSessionToken' | 'workspaceId'
|
|
98
|
+
> = {},
|
|
99
|
+
): SeamHttpThermostatsClimateSettingSchedules {
|
|
100
|
+
const constructorOptions = { ...options, consoleSessionToken, workspaceId }
|
|
101
|
+
if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
|
|
102
|
+
throw new SeamHttpInvalidOptionsError(
|
|
103
|
+
'Missing consoleSessionToken or workspaceId',
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
return new SeamHttpThermostatsClimateSettingSchedules(constructorOptions)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
static fromPersonalAccessToken(
|
|
110
|
+
personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
|
|
111
|
+
workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
|
|
112
|
+
options: Omit<
|
|
113
|
+
SeamHttpOptionsWithPersonalAccessToken,
|
|
114
|
+
'personalAccessToken' | 'workspaceId'
|
|
115
|
+
> = {},
|
|
116
|
+
): SeamHttpThermostatsClimateSettingSchedules {
|
|
117
|
+
const constructorOptions = { ...options, personalAccessToken, workspaceId }
|
|
118
|
+
if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
|
|
119
|
+
throw new SeamHttpInvalidOptionsError(
|
|
120
|
+
'Missing personalAccessToken or workspaceId',
|
|
121
|
+
)
|
|
122
|
+
}
|
|
123
|
+
return new SeamHttpThermostatsClimateSettingSchedules(constructorOptions)
|
|
124
|
+
}
|
|
125
|
+
|
|
88
126
|
async create(
|
|
89
127
|
body?: ThermostatsClimateSettingSchedulesCreateBody,
|
|
90
128
|
): Promise<
|
|
@@ -12,12 +12,16 @@ import {
|
|
|
12
12
|
isSeamHttpOptionsWithApiKey,
|
|
13
13
|
isSeamHttpOptionsWithClient,
|
|
14
14
|
isSeamHttpOptionsWithClientSessionToken,
|
|
15
|
+
isSeamHttpOptionsWithConsoleSessionToken,
|
|
16
|
+
isSeamHttpOptionsWithPersonalAccessToken,
|
|
15
17
|
type SeamHttpFromPublishableKeyOptions,
|
|
16
18
|
SeamHttpInvalidOptionsError,
|
|
17
19
|
type SeamHttpOptions,
|
|
18
20
|
type SeamHttpOptionsWithApiKey,
|
|
19
21
|
type SeamHttpOptionsWithClient,
|
|
20
22
|
type SeamHttpOptionsWithClientSessionToken,
|
|
23
|
+
type SeamHttpOptionsWithConsoleSessionToken,
|
|
24
|
+
type SeamHttpOptionsWithPersonalAccessToken,
|
|
21
25
|
} from 'lib/seam/connect/options.js'
|
|
22
26
|
import { parseOptions } from 'lib/seam/connect/parse-options.js'
|
|
23
27
|
|
|
@@ -83,6 +87,40 @@ export class SeamHttpThermostats {
|
|
|
83
87
|
return SeamHttpThermostats.fromClientSessionToken(token, options)
|
|
84
88
|
}
|
|
85
89
|
|
|
90
|
+
static fromConsoleSessionToken(
|
|
91
|
+
consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
|
|
92
|
+
workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
|
|
93
|
+
options: Omit<
|
|
94
|
+
SeamHttpOptionsWithConsoleSessionToken,
|
|
95
|
+
'consoleSessionToken' | 'workspaceId'
|
|
96
|
+
> = {},
|
|
97
|
+
): SeamHttpThermostats {
|
|
98
|
+
const constructorOptions = { ...options, consoleSessionToken, workspaceId }
|
|
99
|
+
if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
|
|
100
|
+
throw new SeamHttpInvalidOptionsError(
|
|
101
|
+
'Missing consoleSessionToken or workspaceId',
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
return new SeamHttpThermostats(constructorOptions)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
static fromPersonalAccessToken(
|
|
108
|
+
personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
|
|
109
|
+
workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
|
|
110
|
+
options: Omit<
|
|
111
|
+
SeamHttpOptionsWithPersonalAccessToken,
|
|
112
|
+
'personalAccessToken' | 'workspaceId'
|
|
113
|
+
> = {},
|
|
114
|
+
): SeamHttpThermostats {
|
|
115
|
+
const constructorOptions = { ...options, personalAccessToken, workspaceId }
|
|
116
|
+
if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
|
|
117
|
+
throw new SeamHttpInvalidOptionsError(
|
|
118
|
+
'Missing personalAccessToken or workspaceId',
|
|
119
|
+
)
|
|
120
|
+
}
|
|
121
|
+
return new SeamHttpThermostats(constructorOptions)
|
|
122
|
+
}
|
|
123
|
+
|
|
86
124
|
get climateSettingSchedules(): SeamHttpThermostatsClimateSettingSchedules {
|
|
87
125
|
return SeamHttpThermostatsClimateSettingSchedules.fromClient(this.client)
|
|
88
126
|
}
|
|
@@ -16,12 +16,16 @@ import {
|
|
|
16
16
|
isSeamHttpOptionsWithApiKey,
|
|
17
17
|
isSeamHttpOptionsWithClient,
|
|
18
18
|
isSeamHttpOptionsWithClientSessionToken,
|
|
19
|
+
isSeamHttpOptionsWithConsoleSessionToken,
|
|
20
|
+
isSeamHttpOptionsWithPersonalAccessToken,
|
|
19
21
|
type SeamHttpFromPublishableKeyOptions,
|
|
20
22
|
SeamHttpInvalidOptionsError,
|
|
21
23
|
type SeamHttpOptions,
|
|
22
24
|
type SeamHttpOptionsWithApiKey,
|
|
23
25
|
type SeamHttpOptionsWithClient,
|
|
24
26
|
type SeamHttpOptionsWithClientSessionToken,
|
|
27
|
+
type SeamHttpOptionsWithConsoleSessionToken,
|
|
28
|
+
type SeamHttpOptionsWithPersonalAccessToken,
|
|
25
29
|
} from 'lib/seam/connect/options.js'
|
|
26
30
|
import { parseOptions } from 'lib/seam/connect/parse-options.js'
|
|
27
31
|
|
|
@@ -86,6 +90,40 @@ export class SeamHttpWebhooks {
|
|
|
86
90
|
return SeamHttpWebhooks.fromClientSessionToken(token, options)
|
|
87
91
|
}
|
|
88
92
|
|
|
93
|
+
static fromConsoleSessionToken(
|
|
94
|
+
consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
|
|
95
|
+
workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
|
|
96
|
+
options: Omit<
|
|
97
|
+
SeamHttpOptionsWithConsoleSessionToken,
|
|
98
|
+
'consoleSessionToken' | 'workspaceId'
|
|
99
|
+
> = {},
|
|
100
|
+
): SeamHttpWebhooks {
|
|
101
|
+
const constructorOptions = { ...options, consoleSessionToken, workspaceId }
|
|
102
|
+
if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
|
|
103
|
+
throw new SeamHttpInvalidOptionsError(
|
|
104
|
+
'Missing consoleSessionToken or workspaceId',
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
return new SeamHttpWebhooks(constructorOptions)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
static fromPersonalAccessToken(
|
|
111
|
+
personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
|
|
112
|
+
workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
|
|
113
|
+
options: Omit<
|
|
114
|
+
SeamHttpOptionsWithPersonalAccessToken,
|
|
115
|
+
'personalAccessToken' | 'workspaceId'
|
|
116
|
+
> = {},
|
|
117
|
+
): SeamHttpWebhooks {
|
|
118
|
+
const constructorOptions = { ...options, personalAccessToken, workspaceId }
|
|
119
|
+
if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
|
|
120
|
+
throw new SeamHttpInvalidOptionsError(
|
|
121
|
+
'Missing personalAccessToken or workspaceId',
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
return new SeamHttpWebhooks(constructorOptions)
|
|
125
|
+
}
|
|
126
|
+
|
|
89
127
|
async create(
|
|
90
128
|
body?: WebhooksCreateBody,
|
|
91
129
|
): Promise<WebhooksCreateResponse['webhook']> {
|
|
@@ -16,12 +16,16 @@ import {
|
|
|
16
16
|
isSeamHttpOptionsWithApiKey,
|
|
17
17
|
isSeamHttpOptionsWithClient,
|
|
18
18
|
isSeamHttpOptionsWithClientSessionToken,
|
|
19
|
+
isSeamHttpOptionsWithConsoleSessionToken,
|
|
20
|
+
isSeamHttpOptionsWithPersonalAccessToken,
|
|
19
21
|
type SeamHttpFromPublishableKeyOptions,
|
|
20
22
|
SeamHttpInvalidOptionsError,
|
|
21
23
|
type SeamHttpOptions,
|
|
22
24
|
type SeamHttpOptionsWithApiKey,
|
|
23
25
|
type SeamHttpOptionsWithClient,
|
|
24
26
|
type SeamHttpOptionsWithClientSessionToken,
|
|
27
|
+
type SeamHttpOptionsWithConsoleSessionToken,
|
|
28
|
+
type SeamHttpOptionsWithPersonalAccessToken,
|
|
25
29
|
} from 'lib/seam/connect/options.js'
|
|
26
30
|
import { parseOptions } from 'lib/seam/connect/parse-options.js'
|
|
27
31
|
|
|
@@ -86,6 +90,40 @@ export class SeamHttpWorkspaces {
|
|
|
86
90
|
return SeamHttpWorkspaces.fromClientSessionToken(token, options)
|
|
87
91
|
}
|
|
88
92
|
|
|
93
|
+
static fromConsoleSessionToken(
|
|
94
|
+
consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
|
|
95
|
+
workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
|
|
96
|
+
options: Omit<
|
|
97
|
+
SeamHttpOptionsWithConsoleSessionToken,
|
|
98
|
+
'consoleSessionToken' | 'workspaceId'
|
|
99
|
+
> = {},
|
|
100
|
+
): SeamHttpWorkspaces {
|
|
101
|
+
const constructorOptions = { ...options, consoleSessionToken, workspaceId }
|
|
102
|
+
if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
|
|
103
|
+
throw new SeamHttpInvalidOptionsError(
|
|
104
|
+
'Missing consoleSessionToken or workspaceId',
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
return new SeamHttpWorkspaces(constructorOptions)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
static fromPersonalAccessToken(
|
|
111
|
+
personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
|
|
112
|
+
workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
|
|
113
|
+
options: Omit<
|
|
114
|
+
SeamHttpOptionsWithPersonalAccessToken,
|
|
115
|
+
'personalAccessToken' | 'workspaceId'
|
|
116
|
+
> = {},
|
|
117
|
+
): SeamHttpWorkspaces {
|
|
118
|
+
const constructorOptions = { ...options, personalAccessToken, workspaceId }
|
|
119
|
+
if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
|
|
120
|
+
throw new SeamHttpInvalidOptionsError(
|
|
121
|
+
'Missing personalAccessToken or workspaceId',
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
return new SeamHttpWorkspaces(constructorOptions)
|
|
125
|
+
}
|
|
126
|
+
|
|
89
127
|
async get(
|
|
90
128
|
params?: WorkspacesGetParams,
|
|
91
129
|
): Promise<WorkspacesGetResponse['workspace']> {
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { ApiError } from './api-error-type.js'
|
|
2
|
+
|
|
3
|
+
export class SeamHttpApiError extends Error {
|
|
4
|
+
code: string
|
|
5
|
+
statusCode: number
|
|
6
|
+
requestId: string
|
|
7
|
+
data?: unknown
|
|
8
|
+
|
|
9
|
+
constructor(error: ApiError, statusCode: number, requestId: string) {
|
|
10
|
+
const { type, message, data } = error
|
|
11
|
+
super(message)
|
|
12
|
+
this.name = this.constructor.name
|
|
13
|
+
Error.captureStackTrace(this, this.constructor)
|
|
14
|
+
this.code = type
|
|
15
|
+
this.statusCode = statusCode
|
|
16
|
+
this.requestId = requestId
|
|
17
|
+
if (data != null) this.data = data
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const isSeamHttpApiError = (
|
|
22
|
+
error: unknown,
|
|
23
|
+
): error is SeamHttpApiError => {
|
|
24
|
+
return error instanceof SeamHttpApiError
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export class SeamHttpUnauthorizedError extends SeamHttpApiError {
|
|
28
|
+
override code: 'unauthorized'
|
|
29
|
+
override statusCode: 401
|
|
30
|
+
|
|
31
|
+
constructor(requestId: string) {
|
|
32
|
+
const type = 'unauthorized'
|
|
33
|
+
const status = 401
|
|
34
|
+
super({ type, message: 'Unauthorized' }, status, requestId)
|
|
35
|
+
this.name = this.constructor.name
|
|
36
|
+
Error.captureStackTrace(this, this.constructor)
|
|
37
|
+
this.code = type
|
|
38
|
+
this.statusCode = status
|
|
39
|
+
this.requestId = requestId
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const isSeamHttpUnauthorizedError = (
|
|
44
|
+
error: unknown,
|
|
45
|
+
): error is SeamHttpUnauthorizedError => {
|
|
46
|
+
return error instanceof SeamHttpUnauthorizedError
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export class SeamHttpInvalidInputError extends SeamHttpApiError {
|
|
50
|
+
override code: 'invalid_input'
|
|
51
|
+
|
|
52
|
+
constructor(error: ApiError, statusCode: number, requestId: string) {
|
|
53
|
+
super(error, statusCode, requestId)
|
|
54
|
+
this.name = this.constructor.name
|
|
55
|
+
Error.captureStackTrace(this, this.constructor)
|
|
56
|
+
this.code = 'invalid_input'
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export const isSeamHttpInvalidInputError = (
|
|
61
|
+
error: unknown,
|
|
62
|
+
): error is SeamHttpInvalidInputError => {
|
|
63
|
+
return error instanceof SeamHttpInvalidInputError
|
|
64
|
+
}
|
|
@@ -4,12 +4,16 @@ import {
|
|
|
4
4
|
isSeamHttpOptionsWithApiKey,
|
|
5
5
|
isSeamHttpOptionsWithClient,
|
|
6
6
|
isSeamHttpOptionsWithClientSessionToken,
|
|
7
|
+
isSeamHttpOptionsWithConsoleSessionToken,
|
|
8
|
+
isSeamHttpOptionsWithPersonalAccessToken,
|
|
7
9
|
type SeamHttpFromPublishableKeyOptions,
|
|
8
10
|
SeamHttpInvalidOptionsError,
|
|
9
11
|
type SeamHttpOptions,
|
|
10
12
|
type SeamHttpOptionsWithApiKey,
|
|
11
13
|
type SeamHttpOptionsWithClient,
|
|
12
14
|
type SeamHttpOptionsWithClientSessionToken,
|
|
15
|
+
type SeamHttpOptionsWithConsoleSessionToken,
|
|
16
|
+
type SeamHttpOptionsWithPersonalAccessToken,
|
|
13
17
|
} from './options.js'
|
|
14
18
|
import { parseOptions } from './parse-options.js'
|
|
15
19
|
import {
|
|
@@ -87,6 +91,40 @@ export class SeamHttp {
|
|
|
87
91
|
return SeamHttp.fromClientSessionToken(token, options)
|
|
88
92
|
}
|
|
89
93
|
|
|
94
|
+
static fromConsoleSessionToken(
|
|
95
|
+
consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
|
|
96
|
+
workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
|
|
97
|
+
options: Omit<
|
|
98
|
+
SeamHttpOptionsWithConsoleSessionToken,
|
|
99
|
+
'consoleSessionToken' | 'workspaceId'
|
|
100
|
+
> = {},
|
|
101
|
+
): SeamHttp {
|
|
102
|
+
const constructorOptions = { ...options, consoleSessionToken, workspaceId }
|
|
103
|
+
if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
|
|
104
|
+
throw new SeamHttpInvalidOptionsError(
|
|
105
|
+
'Missing consoleSessionToken or workspaceId',
|
|
106
|
+
)
|
|
107
|
+
}
|
|
108
|
+
return new SeamHttp(constructorOptions)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static fromPersonalAccessToken(
|
|
112
|
+
personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
|
|
113
|
+
workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
|
|
114
|
+
options: Omit<
|
|
115
|
+
SeamHttpOptionsWithPersonalAccessToken,
|
|
116
|
+
'personalAccessToken' | 'workspaceId'
|
|
117
|
+
> = {},
|
|
118
|
+
): SeamHttp {
|
|
119
|
+
const constructorOptions = { ...options, personalAccessToken, workspaceId }
|
|
120
|
+
if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
|
|
121
|
+
throw new SeamHttpInvalidOptionsError(
|
|
122
|
+
'Missing personalAccessToken or workspaceId',
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
return new SeamHttp(constructorOptions)
|
|
126
|
+
}
|
|
127
|
+
|
|
90
128
|
get accessCodes(): SeamHttpAccessCodes {
|
|
91
129
|
return SeamHttpAccessCodes.fromClient(this.client)
|
|
92
130
|
}
|
package/src/lib/version.ts
CHANGED