diff --git a/codegen/layouts/partials/route-class-endpoint-export.hbs b/codegen/layouts/partials/route-class-endpoint-export.hbs index cf3ac9e3..a656d4eb 100644 --- a/codegen/layouts/partials/route-class-endpoint-export.hbs +++ b/codegen/layouts/partials/route-class-endpoint-export.hbs @@ -5,7 +5,7 @@ export type {{parametersTypeName}} = {{#if requiresAtLeastOneParameter}}RequireA */ export type {{responseTypeName}} = {{#if returnsVoid}}void{{else}}{ {{json responseKey}}: {{#if responseIsList}}Array<{{responseResourceTypeName}}>{{else}}{{responseResourceTypeName}}{{/if}} }{{/if}} -export type {{requestTypeName}} = SeamHttpRequest<{{#if returnsVoid}}void, undefined{{else}}{{responseTypeName}}, '{{responseKey}}'{{/if}}> +export type {{requestTypeName}} = {{#if hasPagination}}SeamPaginatedRequest<{{responseTypeName}}, '{{responseKey}}'>{{else}}SeamHttpRequest<{{#if returnsVoid}}void, undefined{{else}}{{responseTypeName}}, '{{responseKey}}'{{/if}}>{{/if}} {{#if returnsActionAttempt}} diff --git a/codegen/layouts/partials/route-class-methods.hbs b/codegen/layouts/partials/route-class-methods.hbs index 135b92bc..86ae6920 100644 --- a/codegen/layouts/partials/route-class-methods.hbs +++ b/codegen/layouts/partials/route-class-methods.hbs @@ -98,7 +98,7 @@ static fromPersonalAccessToken( } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/codegen/layouts/partials/route-imports.hbs b/codegen/layouts/partials/route-imports.hbs index f1b24bf1..88002012 100644 --- a/codegen/layouts/partials/route-imports.hbs +++ b/codegen/layouts/partials/route-imports.hbs @@ -31,7 +31,10 @@ import { limitToSeamHttpRequestOptions, parseOptions } from 'lib/parse-options.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + type SeamPaginatedRequest, + SeamHttpRequest +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' {{#if needsActionAttemptsImport}} diff --git a/src/lib/routes/access-codes/access-codes.ts b/src/lib/routes/access-codes/access-codes.ts index af59f74e..2bf13f18 100644 --- a/src/lib/routes/access-codes/access-codes.ts +++ b/src/lib/routes/access-codes/access-codes.ts @@ -31,7 +31,10 @@ import { import type { RequireAtLeastOne } from 'lib/request-parameters.js' import type { AccessCode } from 'lib/resources/access-code.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpAccessCodesSimulate } from './simulate/index.js' @@ -138,7 +141,7 @@ export class SeamHttpAccessCodes { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -694,7 +697,7 @@ export type AccessCodesListParameters = RequireAtLeastOne< */ export type AccessCodesListResponse = { access_codes: Array } -export type AccessCodesListRequest = SeamHttpRequest< +export type AccessCodesListRequest = SeamPaginatedRequest< AccessCodesListResponse, 'access_codes' > diff --git a/src/lib/routes/access-codes/simulate/simulate.ts b/src/lib/routes/access-codes/simulate/simulate.ts index fb4f85d9..fc2562a6 100644 --- a/src/lib/routes/access-codes/simulate/simulate.ts +++ b/src/lib/routes/access-codes/simulate/simulate.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { UnmanagedAccessCode } from 'lib/resources/unmanaged-access-code.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpAccessCodesSimulate { @@ -134,7 +137,7 @@ export class SeamHttpAccessCodesSimulate { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/access-codes/unmanaged/unmanaged.ts b/src/lib/routes/access-codes/unmanaged/unmanaged.ts index 8c9ea53d..5d94b0be 100644 --- a/src/lib/routes/access-codes/unmanaged/unmanaged.ts +++ b/src/lib/routes/access-codes/unmanaged/unmanaged.ts @@ -31,7 +31,10 @@ import { import type { RequireAtLeastOne } from 'lib/request-parameters.js' import type { UnmanagedAccessCode } from 'lib/resources/unmanaged-access-code.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpAccessCodesUnmanaged { @@ -135,7 +138,7 @@ export class SeamHttpAccessCodesUnmanaged { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -378,7 +381,7 @@ export type AccessCodesUnmanagedListResponse = { access_codes: Array } -export type AccessCodesUnmanagedListRequest = SeamHttpRequest< +export type AccessCodesUnmanagedListRequest = SeamPaginatedRequest< AccessCodesUnmanagedListResponse, 'access_codes' > diff --git a/src/lib/routes/access-grants/access-grants.ts b/src/lib/routes/access-grants/access-grants.ts index b77d9fac..d0c6fc3f 100644 --- a/src/lib/routes/access-grants/access-grants.ts +++ b/src/lib/routes/access-grants/access-grants.ts @@ -32,7 +32,10 @@ import type { RequireAtLeastOne } from 'lib/request-parameters.js' import type { AccessGrant } from 'lib/resources/access-grant.js' import type { Batch } from 'lib/resources/batch.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpAccessGrantsUnmanaged } from './unmanaged/index.js' @@ -138,7 +141,7 @@ export class SeamHttpAccessGrants { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -605,7 +608,7 @@ export type AccessGrantsListParameters = { */ export type AccessGrantsListResponse = { access_grants: Array } -export type AccessGrantsListRequest = SeamHttpRequest< +export type AccessGrantsListRequest = SeamPaginatedRequest< AccessGrantsListResponse, 'access_grants' > diff --git a/src/lib/routes/access-grants/unmanaged/unmanaged.ts b/src/lib/routes/access-grants/unmanaged/unmanaged.ts index bb9848f0..36ae3c06 100644 --- a/src/lib/routes/access-grants/unmanaged/unmanaged.ts +++ b/src/lib/routes/access-grants/unmanaged/unmanaged.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { UnmanagedAccessGrant } from 'lib/resources/unmanaged-access-grant.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpAccessGrantsUnmanaged { @@ -134,7 +137,7 @@ export class SeamHttpAccessGrantsUnmanaged { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -279,7 +282,7 @@ export type AccessGrantsUnmanagedListResponse = { access_grants: Array } -export type AccessGrantsUnmanagedListRequest = SeamHttpRequest< +export type AccessGrantsUnmanagedListRequest = SeamPaginatedRequest< AccessGrantsUnmanagedListResponse, 'access_grants' > diff --git a/src/lib/routes/access-methods/access-methods.ts b/src/lib/routes/access-methods/access-methods.ts index 33015138..899dda25 100644 --- a/src/lib/routes/access-methods/access-methods.ts +++ b/src/lib/routes/access-methods/access-methods.ts @@ -34,7 +34,10 @@ import type { ActionAttempt } from 'lib/resources/action-attempt.js' import type { Batch } from 'lib/resources/batch.js' import { SeamHttpActionAttempts } from 'lib/routes/action-attempts/index.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpAccessMethodsUnmanaged } from './unmanaged/index.js' @@ -140,7 +143,7 @@ export class SeamHttpAccessMethods { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -540,7 +543,7 @@ export type AccessMethodsListParameters = RequireAtLeastOne< */ export type AccessMethodsListResponse = { access_methods: Array } -export type AccessMethodsListRequest = SeamHttpRequest< +export type AccessMethodsListRequest = SeamPaginatedRequest< AccessMethodsListResponse, 'access_methods' > diff --git a/src/lib/routes/access-methods/unmanaged/unmanaged.ts b/src/lib/routes/access-methods/unmanaged/unmanaged.ts index e052490e..7c2712dc 100644 --- a/src/lib/routes/access-methods/unmanaged/unmanaged.ts +++ b/src/lib/routes/access-methods/unmanaged/unmanaged.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { UnmanagedAccessMethod } from 'lib/resources/unmanaged-access-method.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpAccessMethodsUnmanaged { @@ -134,7 +137,7 @@ export class SeamHttpAccessMethodsUnmanaged { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/acs/access-groups/access-groups.ts b/src/lib/routes/acs/access-groups/access-groups.ts index afa8b647..1fc9e2d2 100644 --- a/src/lib/routes/acs/access-groups/access-groups.ts +++ b/src/lib/routes/acs/access-groups/access-groups.ts @@ -32,7 +32,10 @@ import type { AcsAccessGroup } from 'lib/resources/acs-access-group.js' import type { AcsEntrance } from 'lib/resources/acs-entrance.js' import type { AcsUser } from 'lib/resources/acs-user.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpAcsAccessGroups { @@ -136,7 +139,7 @@ export class SeamHttpAcsAccessGroups { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/acs/acs.ts b/src/lib/routes/acs/acs.ts index b431297f..8100fb68 100644 --- a/src/lib/routes/acs/acs.ts +++ b/src/lib/routes/acs/acs.ts @@ -29,7 +29,7 @@ import { parseOptions, } from 'lib/parse-options.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import type { SeamHttpRequest } from 'lib/seam-http-request.js' +import type { SeamPaginatedRequest } from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpAcsAccessGroups } from './access-groups/index.js' @@ -140,7 +140,7 @@ export class SeamHttpAcs { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/acs/credentials/credentials.ts b/src/lib/routes/acs/credentials/credentials.ts index 453452b5..60bf5d85 100644 --- a/src/lib/routes/acs/credentials/credentials.ts +++ b/src/lib/routes/acs/credentials/credentials.ts @@ -31,7 +31,10 @@ import { import type { AcsCredential } from 'lib/resources/acs-credential.js' import type { AcsEntrance } from 'lib/resources/acs-entrance.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpAcsCredentials { @@ -135,7 +138,7 @@ export class SeamHttpAcsCredentials { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -520,7 +523,7 @@ export type AcsCredentialsListResponse = { acs_credentials: Array } -export type AcsCredentialsListRequest = SeamHttpRequest< +export type AcsCredentialsListRequest = SeamPaginatedRequest< AcsCredentialsListResponse, 'acs_credentials' > diff --git a/src/lib/routes/acs/encoders/encoders.ts b/src/lib/routes/acs/encoders/encoders.ts index 9ed28329..7e6156c0 100644 --- a/src/lib/routes/acs/encoders/encoders.ts +++ b/src/lib/routes/acs/encoders/encoders.ts @@ -32,7 +32,10 @@ import type { AcsEncoder } from 'lib/resources/acs-encoder.js' import type { ActionAttempt } from 'lib/resources/action-attempt.js' import { SeamHttpActionAttempts } from 'lib/routes/action-attempts/index.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpAcsEncodersSimulate } from './simulate/index.js' @@ -138,7 +141,7 @@ export class SeamHttpAcsEncoders { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -362,7 +365,7 @@ export type AcsEncodersListParameters = { */ export type AcsEncodersListResponse = { acs_encoders: Array } -export type AcsEncodersListRequest = SeamHttpRequest< +export type AcsEncodersListRequest = SeamPaginatedRequest< AcsEncodersListResponse, 'acs_encoders' > diff --git a/src/lib/routes/acs/encoders/simulate/simulate.ts b/src/lib/routes/acs/encoders/simulate/simulate.ts index 65209167..4e9bc9a0 100644 --- a/src/lib/routes/acs/encoders/simulate/simulate.ts +++ b/src/lib/routes/acs/encoders/simulate/simulate.ts @@ -29,7 +29,10 @@ import { parseOptions, } from 'lib/parse-options.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpAcsEncodersSimulate { @@ -133,7 +136,7 @@ export class SeamHttpAcsEncodersSimulate { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/acs/entrances/entrances.ts b/src/lib/routes/acs/entrances/entrances.ts index a0aedb4b..2b338982 100644 --- a/src/lib/routes/acs/entrances/entrances.ts +++ b/src/lib/routes/acs/entrances/entrances.ts @@ -33,7 +33,10 @@ import type { AcsEntrance } from 'lib/resources/acs-entrance.js' import type { ActionAttempt } from 'lib/resources/action-attempt.js' import { SeamHttpActionAttempts } from 'lib/routes/action-attempts/index.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpAcsEntrances { @@ -137,7 +140,7 @@ export class SeamHttpAcsEntrances { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -364,7 +367,7 @@ export type AcsEntrancesListParameters = { */ export type AcsEntrancesListResponse = { acs_entrances: Array } -export type AcsEntrancesListRequest = SeamHttpRequest< +export type AcsEntrancesListRequest = SeamPaginatedRequest< AcsEntrancesListResponse, 'acs_entrances' > diff --git a/src/lib/routes/acs/systems/systems.ts b/src/lib/routes/acs/systems/systems.ts index 9b61e497..b7041055 100644 --- a/src/lib/routes/acs/systems/systems.ts +++ b/src/lib/routes/acs/systems/systems.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { AcsSystem } from 'lib/resources/acs-system.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpAcsSystems { @@ -134,7 +137,7 @@ export class SeamHttpAcsSystems { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/acs/users/users.ts b/src/lib/routes/acs/users/users.ts index 1be1e347..9b6f9534 100644 --- a/src/lib/routes/acs/users/users.ts +++ b/src/lib/routes/acs/users/users.ts @@ -32,7 +32,10 @@ import type { RequireAtLeastOne } from 'lib/request-parameters.js' import type { AcsEntrance } from 'lib/resources/acs-entrance.js' import type { AcsUser } from 'lib/resources/acs-user.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpAcsUsers { @@ -136,7 +139,7 @@ export class SeamHttpAcsUsers { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -594,7 +597,7 @@ export type AcsUsersListParameters = { */ export type AcsUsersListResponse = { acs_users: Array } -export type AcsUsersListRequest = SeamHttpRequest< +export type AcsUsersListRequest = SeamPaginatedRequest< AcsUsersListResponse, 'acs_users' > diff --git a/src/lib/routes/action-attempts/action-attempts.ts b/src/lib/routes/action-attempts/action-attempts.ts index 19e8f430..e579ccc7 100644 --- a/src/lib/routes/action-attempts/action-attempts.ts +++ b/src/lib/routes/action-attempts/action-attempts.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { ActionAttempt } from 'lib/resources/action-attempt.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpActionAttempts { @@ -134,7 +137,7 @@ export class SeamHttpActionAttempts { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -253,7 +256,7 @@ export type ActionAttemptsListResponse = { action_attempts: Array } -export type ActionAttemptsListRequest = SeamHttpRequest< +export type ActionAttemptsListRequest = SeamPaginatedRequest< ActionAttemptsListResponse, 'action_attempts' > diff --git a/src/lib/routes/client-sessions/client-sessions.ts b/src/lib/routes/client-sessions/client-sessions.ts index 3c1ec6a3..80e33321 100644 --- a/src/lib/routes/client-sessions/client-sessions.ts +++ b/src/lib/routes/client-sessions/client-sessions.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { RequireAtLeastOne } from 'lib/request-parameters.js' import type { ClientSession } from 'lib/resources/client-session.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpClientSessions { @@ -134,7 +137,7 @@ export class SeamHttpClientSessions { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/connect-webviews/connect-webviews.ts b/src/lib/routes/connect-webviews/connect-webviews.ts index f9465830..65224da0 100644 --- a/src/lib/routes/connect-webviews/connect-webviews.ts +++ b/src/lib/routes/connect-webviews/connect-webviews.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { ConnectWebview } from 'lib/resources/connect-webview.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpConnectWebviews { @@ -134,7 +137,7 @@ export class SeamHttpConnectWebviews { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -459,7 +462,7 @@ export type ConnectWebviewsListResponse = { connect_webviews: Array } -export type ConnectWebviewsListRequest = SeamHttpRequest< +export type ConnectWebviewsListRequest = SeamPaginatedRequest< ConnectWebviewsListResponse, 'connect_webviews' > diff --git a/src/lib/routes/connected-accounts/connected-accounts.ts b/src/lib/routes/connected-accounts/connected-accounts.ts index 2892df77..06e1d803 100644 --- a/src/lib/routes/connected-accounts/connected-accounts.ts +++ b/src/lib/routes/connected-accounts/connected-accounts.ts @@ -31,7 +31,10 @@ import { import type { RequireAtLeastOne } from 'lib/request-parameters.js' import type { ConnectedAccount } from 'lib/resources/connected-account.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpConnectedAccountsSimulate } from './simulate/index.js' @@ -137,7 +140,7 @@ export class SeamHttpConnectedAccounts { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -356,7 +359,7 @@ export type ConnectedAccountsListResponse = { connected_accounts: Array } -export type ConnectedAccountsListRequest = SeamHttpRequest< +export type ConnectedAccountsListRequest = SeamPaginatedRequest< ConnectedAccountsListResponse, 'connected_accounts' > diff --git a/src/lib/routes/connected-accounts/simulate/simulate.ts b/src/lib/routes/connected-accounts/simulate/simulate.ts index 447ffb4b..ab88a85d 100644 --- a/src/lib/routes/connected-accounts/simulate/simulate.ts +++ b/src/lib/routes/connected-accounts/simulate/simulate.ts @@ -29,7 +29,10 @@ import { parseOptions, } from 'lib/parse-options.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpConnectedAccountsSimulate { @@ -136,7 +139,7 @@ export class SeamHttpConnectedAccountsSimulate { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/customers/customers.ts b/src/lib/routes/customers/customers.ts index 5006f3c1..d23fcb46 100644 --- a/src/lib/routes/customers/customers.ts +++ b/src/lib/routes/customers/customers.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { CustomerPortal } from 'lib/resources/customer-portal.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpCustomers { @@ -134,7 +137,7 @@ export class SeamHttpCustomers { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/devices/devices.ts b/src/lib/routes/devices/devices.ts index 052a9d3d..5914250e 100644 --- a/src/lib/routes/devices/devices.ts +++ b/src/lib/routes/devices/devices.ts @@ -32,7 +32,10 @@ import type { RequireAtLeastOne } from 'lib/request-parameters.js' import type { Device } from 'lib/resources/device.js' import type { DeviceProvider } from 'lib/resources/device-provider.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpDevicesSimulate } from './simulate/index.js' @@ -139,7 +142,7 @@ export class SeamHttpDevices { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -519,7 +522,10 @@ export type DevicesListParameters = { */ export type DevicesListResponse = { devices: Array } -export type DevicesListRequest = SeamHttpRequest +export type DevicesListRequest = SeamPaginatedRequest< + DevicesListResponse, + 'devices' +> export interface DevicesListOptions {} diff --git a/src/lib/routes/devices/simulate/simulate.ts b/src/lib/routes/devices/simulate/simulate.ts index 138ead92..b88e6c11 100644 --- a/src/lib/routes/devices/simulate/simulate.ts +++ b/src/lib/routes/devices/simulate/simulate.ts @@ -29,7 +29,10 @@ import { parseOptions, } from 'lib/parse-options.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpDevicesSimulate { @@ -133,7 +136,7 @@ export class SeamHttpDevicesSimulate { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/devices/unmanaged/unmanaged.ts b/src/lib/routes/devices/unmanaged/unmanaged.ts index ec863197..3cdc85e4 100644 --- a/src/lib/routes/devices/unmanaged/unmanaged.ts +++ b/src/lib/routes/devices/unmanaged/unmanaged.ts @@ -31,7 +31,10 @@ import { import type { RequireAtLeastOne } from 'lib/request-parameters.js' import type { UnmanagedDevice } from 'lib/resources/unmanaged-device.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpDevicesUnmanaged { @@ -135,7 +138,7 @@ export class SeamHttpDevicesUnmanaged { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -454,7 +457,7 @@ export type DevicesUnmanagedListParameters = { */ export type DevicesUnmanagedListResponse = { devices: Array } -export type DevicesUnmanagedListRequest = SeamHttpRequest< +export type DevicesUnmanagedListRequest = SeamPaginatedRequest< DevicesUnmanagedListResponse, 'devices' > diff --git a/src/lib/routes/events/events.ts b/src/lib/routes/events/events.ts index 559f42fe..3244123b 100644 --- a/src/lib/routes/events/events.ts +++ b/src/lib/routes/events/events.ts @@ -31,7 +31,10 @@ import { import type { RequireAtLeastOne } from 'lib/request-parameters.js' import type { SeamEvent } from 'lib/resources/event.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpEvents { @@ -135,7 +138,7 @@ export class SeamHttpEvents { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/instant-keys/instant-keys.ts b/src/lib/routes/instant-keys/instant-keys.ts index e53fa1b8..7a87abc0 100644 --- a/src/lib/routes/instant-keys/instant-keys.ts +++ b/src/lib/routes/instant-keys/instant-keys.ts @@ -31,7 +31,10 @@ import { import type { RequireAtLeastOne } from 'lib/request-parameters.js' import type { InstantKey } from 'lib/resources/instant-key.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpInstantKeys { @@ -135,7 +138,7 @@ export class SeamHttpInstantKeys { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/locks/locks.ts b/src/lib/routes/locks/locks.ts index 3d8629b3..411030f0 100644 --- a/src/lib/routes/locks/locks.ts +++ b/src/lib/routes/locks/locks.ts @@ -33,7 +33,10 @@ import type { ActionAttempt } from 'lib/resources/action-attempt.js' import type { Device } from 'lib/resources/device.js' import { SeamHttpActionAttempts } from 'lib/routes/action-attempts/index.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpLocksSimulate } from './simulate/index.js' @@ -139,7 +142,7 @@ export class SeamHttpLocks { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/locks/simulate/simulate.ts b/src/lib/routes/locks/simulate/simulate.ts index a55c585b..7daff30c 100644 --- a/src/lib/routes/locks/simulate/simulate.ts +++ b/src/lib/routes/locks/simulate/simulate.ts @@ -31,7 +31,10 @@ import { import type { ActionAttempt } from 'lib/resources/action-attempt.js' import { SeamHttpActionAttempts } from 'lib/routes/action-attempts/index.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpLocksSimulate { @@ -135,7 +138,7 @@ export class SeamHttpLocksSimulate { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/noise-sensors/noise-sensors.ts b/src/lib/routes/noise-sensors/noise-sensors.ts index ce857af3..9e37d6bf 100644 --- a/src/lib/routes/noise-sensors/noise-sensors.ts +++ b/src/lib/routes/noise-sensors/noise-sensors.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { Device } from 'lib/resources/device.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpNoiseSensorsNoiseThresholds } from './noise-thresholds/index.js' @@ -137,7 +140,7 @@ export class SeamHttpNoiseSensors { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/noise-sensors/noise-thresholds/noise-thresholds.ts b/src/lib/routes/noise-sensors/noise-thresholds/noise-thresholds.ts index 6794f180..2021281f 100644 --- a/src/lib/routes/noise-sensors/noise-thresholds/noise-thresholds.ts +++ b/src/lib/routes/noise-sensors/noise-thresholds/noise-thresholds.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { NoiseThreshold } from 'lib/resources/noise-threshold.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpNoiseSensorsNoiseThresholds { @@ -137,7 +140,7 @@ export class SeamHttpNoiseSensorsNoiseThresholds { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/noise-sensors/simulate/simulate.ts b/src/lib/routes/noise-sensors/simulate/simulate.ts index c37d1a4b..a3446676 100644 --- a/src/lib/routes/noise-sensors/simulate/simulate.ts +++ b/src/lib/routes/noise-sensors/simulate/simulate.ts @@ -29,7 +29,10 @@ import { parseOptions, } from 'lib/parse-options.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpNoiseSensorsSimulate { @@ -133,7 +136,7 @@ export class SeamHttpNoiseSensorsSimulate { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/phones/phones.ts b/src/lib/routes/phones/phones.ts index 4d1c224b..1a836d93 100644 --- a/src/lib/routes/phones/phones.ts +++ b/src/lib/routes/phones/phones.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { Phone } from 'lib/resources/phone.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpPhonesSimulate } from './simulate/index.js' @@ -136,7 +139,7 @@ export class SeamHttpPhones { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/phones/simulate/simulate.ts b/src/lib/routes/phones/simulate/simulate.ts index 633cade5..62d6ef23 100644 --- a/src/lib/routes/phones/simulate/simulate.ts +++ b/src/lib/routes/phones/simulate/simulate.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { Phone } from 'lib/resources/phone.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpPhonesSimulate { @@ -134,7 +137,7 @@ export class SeamHttpPhonesSimulate { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/seam-http-endpoints.ts b/src/lib/routes/seam-http-endpoints.ts index 960cf178..3d5b2f08 100644 --- a/src/lib/routes/seam-http-endpoints.ts +++ b/src/lib/routes/seam-http-endpoints.ts @@ -28,7 +28,7 @@ import { limitToSeamHttpRequestOptions, parseOptions, } from 'lib/parse-options.js' -import type { SeamHttpRequest } from 'lib/seam-http-request.js' +import type { SeamPaginatedRequest } from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { @@ -862,7 +862,7 @@ export class SeamHttpEndpoints { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/seam-http.ts b/src/lib/routes/seam-http.ts index 8aeda6cf..16d2311e 100644 --- a/src/lib/routes/seam-http.ts +++ b/src/lib/routes/seam-http.ts @@ -28,7 +28,7 @@ import { limitToSeamHttpRequestOptions, parseOptions, } from 'lib/parse-options.js' -import type { SeamHttpRequest } from 'lib/seam-http-request.js' +import type { SeamPaginatedRequest } from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpAccessCodes } from './access-codes/index.js' @@ -153,7 +153,7 @@ export class SeamHttp { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/spaces/spaces.ts b/src/lib/routes/spaces/spaces.ts index 993c85e5..d6249695 100644 --- a/src/lib/routes/spaces/spaces.ts +++ b/src/lib/routes/spaces/spaces.ts @@ -32,7 +32,10 @@ import type { RequireAtLeastOne } from 'lib/request-parameters.js' import type { Batch } from 'lib/resources/batch.js' import type { Space } from 'lib/resources/space.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpSpaces { @@ -136,7 +139,7 @@ export class SeamHttpSpaces { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -653,7 +656,10 @@ export type SpacesListParameters = { */ export type SpacesListResponse = { spaces: Array } -export type SpacesListRequest = SeamHttpRequest +export type SpacesListRequest = SeamPaginatedRequest< + SpacesListResponse, + 'spaces' +> export interface SpacesListOptions {} diff --git a/src/lib/routes/thermostats/daily-programs/daily-programs.ts b/src/lib/routes/thermostats/daily-programs/daily-programs.ts index 2f307420..c4155e7a 100644 --- a/src/lib/routes/thermostats/daily-programs/daily-programs.ts +++ b/src/lib/routes/thermostats/daily-programs/daily-programs.ts @@ -32,7 +32,10 @@ import type { ActionAttempt } from 'lib/resources/action-attempt.js' import type { ThermostatDailyProgram } from 'lib/resources/thermostat-daily-program.js' import { SeamHttpActionAttempts } from 'lib/routes/action-attempts/index.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpThermostatsDailyPrograms { @@ -139,7 +142,7 @@ export class SeamHttpThermostatsDailyPrograms { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/thermostats/schedules/schedules.ts b/src/lib/routes/thermostats/schedules/schedules.ts index c034e47e..c480bb6f 100644 --- a/src/lib/routes/thermostats/schedules/schedules.ts +++ b/src/lib/routes/thermostats/schedules/schedules.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { ThermostatSchedule } from 'lib/resources/thermostat-schedule.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpThermostatsSchedules { @@ -134,7 +137,7 @@ export class SeamHttpThermostatsSchedules { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/thermostats/simulate/simulate.ts b/src/lib/routes/thermostats/simulate/simulate.ts index ab598db9..b849bd99 100644 --- a/src/lib/routes/thermostats/simulate/simulate.ts +++ b/src/lib/routes/thermostats/simulate/simulate.ts @@ -29,7 +29,10 @@ import { parseOptions, } from 'lib/parse-options.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpThermostatsSimulate { @@ -133,7 +136,7 @@ export class SeamHttpThermostatsSimulate { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/thermostats/thermostats.ts b/src/lib/routes/thermostats/thermostats.ts index 76267218..b62889e8 100644 --- a/src/lib/routes/thermostats/thermostats.ts +++ b/src/lib/routes/thermostats/thermostats.ts @@ -32,7 +32,10 @@ import type { ActionAttempt } from 'lib/resources/action-attempt.js' import type { Device } from 'lib/resources/device.js' import { SeamHttpActionAttempts } from 'lib/routes/action-attempts/index.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpThermostatsDailyPrograms } from './daily-programs/index.js' @@ -140,7 +143,7 @@ export class SeamHttpThermostats { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/user-identities/unmanaged/unmanaged.ts b/src/lib/routes/user-identities/unmanaged/unmanaged.ts index f32231cc..f53dca21 100644 --- a/src/lib/routes/user-identities/unmanaged/unmanaged.ts +++ b/src/lib/routes/user-identities/unmanaged/unmanaged.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { UnmanagedUserIdentity } from 'lib/resources/unmanaged-user-identity.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpUserIdentitiesUnmanaged { @@ -137,7 +140,7 @@ export class SeamHttpUserIdentitiesUnmanaged { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -272,7 +275,7 @@ export type UserIdentitiesUnmanagedListResponse = { user_identities: Array } -export type UserIdentitiesUnmanagedListRequest = SeamHttpRequest< +export type UserIdentitiesUnmanagedListRequest = SeamPaginatedRequest< UserIdentitiesUnmanagedListResponse, 'user_identities' > diff --git a/src/lib/routes/user-identities/user-identities.ts b/src/lib/routes/user-identities/user-identities.ts index ede24992..b1e8c258 100644 --- a/src/lib/routes/user-identities/user-identities.ts +++ b/src/lib/routes/user-identities/user-identities.ts @@ -36,7 +36,10 @@ import type { Device } from 'lib/resources/device.js' import type { InstantKey } from 'lib/resources/instant-key.js' import type { UserIdentity } from 'lib/resources/user-identity.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' import { SeamHttpUserIdentitiesUnmanaged } from './unmanaged/index.js' @@ -142,7 +145,7 @@ export class SeamHttpUserIdentities { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } @@ -674,7 +677,7 @@ export type UserIdentitiesListResponse = { user_identities: Array } -export type UserIdentitiesListRequest = SeamHttpRequest< +export type UserIdentitiesListRequest = SeamPaginatedRequest< UserIdentitiesListResponse, 'user_identities' > diff --git a/src/lib/routes/webhooks/webhooks.ts b/src/lib/routes/webhooks/webhooks.ts index 9aa3d6fa..29c58618 100644 --- a/src/lib/routes/webhooks/webhooks.ts +++ b/src/lib/routes/webhooks/webhooks.ts @@ -30,7 +30,10 @@ import { } from 'lib/parse-options.js' import type { Webhook } from 'lib/resources/webhook.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpWebhooks { @@ -134,7 +137,7 @@ export class SeamHttpWebhooks { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/routes/workspaces/workspaces.ts b/src/lib/routes/workspaces/workspaces.ts index f883fb05..9ed00459 100644 --- a/src/lib/routes/workspaces/workspaces.ts +++ b/src/lib/routes/workspaces/workspaces.ts @@ -32,7 +32,10 @@ import type { ActionAttempt } from 'lib/resources/action-attempt.js' import type { Workspace } from 'lib/resources/workspace.js' import { SeamHttpActionAttempts } from 'lib/routes/action-attempts/index.js' import { SeamHttpClientSessions } from 'lib/routes/client-sessions/index.js' -import { SeamHttpRequest } from 'lib/seam-http-request.js' +import { + SeamHttpRequest, + type SeamPaginatedRequest, +} from 'lib/seam-http-request.js' import { SeamPaginator } from 'lib/seam-paginator.js' export class SeamHttpWorkspaces { @@ -136,7 +139,7 @@ export class SeamHttpWorkspaces { } createPaginator( - request: SeamHttpRequest, + request: SeamPaginatedRequest, ): SeamPaginator { return new SeamPaginator(this, request) } diff --git a/src/lib/seam-http-request.ts b/src/lib/seam-http-request.ts index 95604453..1ac1595d 100644 --- a/src/lib/seam-http-request.ts +++ b/src/lib/seam-http-request.ts @@ -53,6 +53,7 @@ interface SeamHttpRequestConfig { export class SeamHttpRequest< const TResponse, const TResponseKey extends keyof TResponse | undefined, + const THasPagination extends boolean = boolean, > implements Promise< TResponseKey extends keyof TResponse ? TResponse[TResponseKey] : undefined > { @@ -83,8 +84,8 @@ export class SeamHttpRequest< return this.#config.responseKey } - public get hasPagination(): boolean { - return this.#config.hasPagination ?? false + public get hasPagination(): THasPagination { + return (this.#config.hasPagination ?? false) as THasPagination } /** @@ -269,6 +270,14 @@ const getParamsSerializer = ( return serializeUrlSearchParams } +/** + * A SeamHttpRequest for an endpoint that supports pagination. + */ +export type SeamPaginatedRequest< + TResponse, + TResponseKey extends keyof TResponse | undefined, +> = SeamHttpRequest + /** * Reads the response data at the response key, * throwing a {@link SeamHttpInvalidResponseError} for a success response diff --git a/src/lib/seam-paginator.ts b/src/lib/seam-paginator.ts index 79fd3617..116365ab 100644 --- a/src/lib/seam-paginator.ts +++ b/src/lib/seam-paginator.ts @@ -1,7 +1,11 @@ import type { Client } from './client.js' import type { SeamHttpRequestOptions } from './options.js' import { SeamHttpInvalidResponseError } from './seam-http-error.js' -import { readResponseData, SeamHttpRequest } from './seam-http-request.js' +import { + readResponseData, + SeamHttpRequest, + type SeamPaginatedRequest, +} from './seam-http-request.js' interface SeamPaginatorParent { readonly client: Client @@ -34,12 +38,12 @@ export class SeamPaginator< const TResponse, const TResponseKey extends keyof TResponse, > implements AsyncIterable> { - readonly #request: SeamHttpRequest + readonly #request: SeamPaginatedRequest readonly #parent: SeamPaginatorParent constructor( parent: SeamPaginatorParent, - request: SeamHttpRequest, + request: SeamPaginatedRequest, ) { if (!request.hasPagination) { throw new Error( diff --git a/test/seam/connect/seam-paginator.test.ts b/test/seam/connect/seam-paginator.test.ts index 09459307..0f05e9ed 100644 --- a/test/seam/connect/seam-paginator.test.ts +++ b/test/seam/connect/seam-paginator.test.ts @@ -29,9 +29,32 @@ test('SeamPaginator: cannot paginate a request that does not return pagination d const { seed, endpoint } = await getTestServer(t) const seam = SeamHttp.fromApiKey(seed.seam_apikey1_token, { endpoint }) - t.throws(() => seam.createPaginator(seam.workspaces.list()), { - message: /does not support pagination/, - }) + t.throws( + () => + seam.createPaginator( + // @ts-expect-error Verify only paginated requests are accepted. + seam.workspaces.list(), + ), + { + message: /does not support pagination/, + }, + ) +}) + +test('SeamPaginator: only accepts paginated requests at the type level', async (t) => { + const { seed, endpoint } = await getTestServer(t) + const seam = SeamHttp.fromApiKey(seed.seam_apikey1_token, { endpoint }) + + const assertOnlyPaginatedRequestsAccepted = (): void => { + seam.createPaginator(seam.devices.list()) + + seam.createPaginator( + // @ts-expect-error A non-paginated request is rejected at compile time. + seam.devices.get({ device_id: 'device-id' }), + ) + } + + t.is(typeof assertOnlyPaginatedRequestsAccepted, 'function') }) test('SeamPaginator: firstPage returns the first page', async (t) => {