diff --git a/codegen/layouts/partials/route-class-endpoint-export.hbs b/codegen/layouts/partials/route-class-endpoint-export.hbs index 3ecd1069..83a55437 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 f619c116..fc7627a1 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) } @@ -662,7 +665,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 57e4dc34..6fb9335a 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 5c5d9070..8a685851 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) } @@ -370,7 +373,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 9e65b024..be3600b0 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) } @@ -581,7 +584,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 b3353dfd..50e2d5dd 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) } @@ -276,7 +279,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 cdc051d4..5e3c5b26 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) } @@ -508,7 +511,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 b3b521a8..1c9ee9ff 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 e05b5349..bffc647b 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 46eca4e8..4746c517 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) } @@ -512,7 +515,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 97f33585..82aa8f96 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) } @@ -354,7 +357,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 2671dd2a..2df2425c 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 5e288720..c41eaf36 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) } @@ -358,7 +361,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 8201bda4..5132a746 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 368b37b3..e8040362 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) } @@ -543,7 +546,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 d7042d46..93dbe9d2 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) } @@ -250,7 +253,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 dc6ad406..98fe5669 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 c05d77a8..10e67704 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) } @@ -455,7 +458,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 3149660f..aef895d8 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) } @@ -348,7 +351,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 6aa5e929..a1aea11c 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 d640b8e5..47e862fc 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 8fc3b6d0..38f6b4fc 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) } @@ -511,7 +514,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 a803418c..0db900e8 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 6e4dc33d..a6e4647b 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) } @@ -448,7 +451,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 1823cd96..def01ec6 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 e1d3d779..fa7d85b9 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 ceb03dbb..74270b34 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 b4042216..d77fb40a 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 f73db2da..bdd8486c 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 b9d7358e..27841382 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 eb44fb30..6c3cc527 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 956149ea..2aa4aa51 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 0f70c79b..5c9a716e 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 59d91f02..de0c7472 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) } @@ -630,7 +633,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 357bfcd1..419a1e24 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 a31c6c7c..e974ef40 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 487a9819..8d937156 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 c68f67d0..2bee9ad2 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 133b5ac7..da8df4f2 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) } @@ -269,7 +272,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 ec6e8cba..8ce9a999 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) } @@ -651,7 +654,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 8201638e..8695a64d 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 0fa4b559..b47cf225 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 7f10e0cd..e0b0ea4e 100644 --- a/src/lib/seam-http-request.ts +++ b/src/lib/seam-http-request.ts @@ -52,6 +52,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 > { @@ -82,8 +83,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 } /** @@ -256,6 +257,14 @@ export class SeamHttpRequest< } } +/** + * 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 cf2526ce..9f4f1dd5 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 60ba69a6..89f0c22c 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) => {