From 058cdfe55028acd647ad64a82796e981d45a4503 Mon Sep 17 00:00:00 2001 From: LucHeart Date: Fri, 29 May 2026 02:19:12 +0200 Subject: [PATCH 1/7] feat: live logs, pagination --- openapi-ts.config.ts | 4 +- openapitools.json | 41 --- src/lib/api/internal/v1/client/client.gen.ts | 5 +- src/lib/api/internal/v1/client/utils.gen.ts | 14 +- src/lib/api/internal/v1/index.ts | 2 +- src/lib/api/internal/v1/sdk.gen.ts | 164 ++++----- src/lib/api/internal/v1/transformers.gen.ts | 82 ++--- src/lib/api/internal/v1/types.gen.ts | 333 +++++++++--------- src/lib/api/internal/v2/client/client.gen.ts | 5 +- src/lib/api/internal/v2/client/utils.gen.ts | 14 +- src/routes/(app)/shockers/logs/+page.svelte | 70 +++- .../logs/[shockerId=guid]/+page.svelte | 102 ------ 12 files changed, 371 insertions(+), 465 deletions(-) delete mode 100644 openapitools.json delete mode 100644 src/routes/(app)/shockers/logs/[shockerId=guid]/+page.svelte diff --git a/openapi-ts.config.ts b/openapi-ts.config.ts index 98dcf9fd..7998588e 100644 --- a/openapi-ts.config.ts +++ b/openapi-ts.config.ts @@ -25,7 +25,7 @@ const sharedPlugins = [ export default defineConfig([ { - input: 'https://api.openshock.dev/swagger/1/swagger.json', + input: 'http://localhost/swagger/1/swagger.json', output: { path: 'src/lib/api/internal/v1', postProcess: ['prettier'], @@ -33,7 +33,7 @@ export default defineConfig([ plugins: sharedPlugins, }, { - input: 'https://api.openshock.dev/swagger/2/swagger.json', + input: 'http://localhost/swagger/2/swagger.json', output: { path: 'src/lib/api/internal/v2', postProcess: ['prettier'], diff --git a/openapitools.json b/openapitools.json deleted file mode 100644 index cafe5f96..00000000 --- a/openapitools.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", - "spaces": 2, - "generator-cli": { - "version": "7.22.0", - "generators": { - "v1": { - "inputSpec": "https://api.openshock.dev/swagger/1/swagger.json", - "generatorName": "typescript-fetch", - "output": "src/lib/api/internal/v1", - "additionalProperties": { - "supportsES6": true, - "stringEnums": true, - "withInterfaces": true, - "withRequestOptsInInterface": false, - "paramNaming": "camelCase", - "enumPropertyNaming": "PascalCase", - "modelPropertyNaming": "camelCase", - "enumUnknownDefaultCase": false, - "useSingleRequestParameter": false - } - }, - "v2": { - "inputSpec": "https://api.openshock.dev/swagger/2/swagger.json", - "generatorName": "typescript-fetch", - "output": "src/lib/api/internal/v2", - "additionalProperties": { - "supportsES6": true, - "stringEnums": true, - "withInterfaces": true, - "withRequestOptsInInterface": false, - "paramNaming": "camelCase", - "enumPropertyNaming": "PascalCase", - "modelPropertyNaming": "camelCase", - "enumUnknownDefaultCase": false, - "useSingleRequestParameter": false - } - } - } - } -} diff --git a/src/lib/api/internal/v1/client/client.gen.ts b/src/lib/api/internal/v1/client/client.gen.ts index 377b6c9e..fc3f037f 100644 --- a/src/lib/api/internal/v1/client/client.gen.ts +++ b/src/lib/api/internal/v1/client/client.gen.ts @@ -48,10 +48,7 @@ export const createClient = (config: Config = {}): Client => { }; if (opts.security) { - await setAuthParams({ - ...opts, - security: opts.security, - }); + await setAuthParams(opts); } if (opts.requestValidator) { diff --git a/src/lib/api/internal/v1/client/utils.gen.ts b/src/lib/api/internal/v1/client/utils.gen.ts index eb0164fa..7800fe4b 100644 --- a/src/lib/api/internal/v1/client/utils.gen.ts +++ b/src/lib/api/internal/v1/client/utils.gen.ts @@ -118,14 +118,12 @@ const checkForExistence = ( return false; }; -export const setAuthParams = async ({ - security, - ...options -}: Pick, 'security'> & - Pick & { +export async function setAuthParams( + options: Pick & { headers: Headers; - }) => { - for (const auth of security) { + }, +): Promise { + for (const auth of options.security ?? []) { if (checkForExistence(options, auth.name)) { continue; } @@ -154,7 +152,7 @@ export const setAuthParams = async ({ break; } } -}; +} export const buildUrl: Client['buildUrl'] = (options) => getUrl({ diff --git a/src/lib/api/internal/v1/index.ts b/src/lib/api/internal/v1/index.ts index b1e2d354..0ed87e57 100644 --- a/src/lib/api/internal/v1/index.ts +++ b/src/lib/api/internal/v1/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts export { accountActivate, accountCheckUsername, accountEmailVerify, accountEmailVerifyLegacy, accountLogin, accountLogout, accountPasswordResetCheckValid, accountPasswordResetCheckValidLegacy, accountPasswordResetComplete, accountPasswordResetCompleteLegacy, accountPasswordResetInitiate, accountSignUp, adminAddEmailProviderBlacklist, adminAddUsernameBlacklist, adminAddWebhook, adminConfigurationAdd, adminConfigurationDelete, adminConfigurationList, adminConfigurationUpdate, adminDeactivateUser, adminDeleteUser, adminGetOnlineDevices, adminGetUsers, adminListEmailProviderBlacklist, adminListUsernameBlacklist, adminListWebhooks, adminModifyUser, adminReactivateUser, adminRemoveEmailProviderBlacklist, adminRemoveUsernameBlacklist, adminRemoveWebhook, authenticatedAccountChangeEmail, authenticatedAccountChangePassword, authenticatedAccountChangeUsername, authenticatedAccountDeactivate, authenticatedAccountListOAuthConnections, authenticatedAccountRemoveOAuthConnection, deviceGetLiveControlGateway, deviceGetSelf, devicePair, devicesCreateDevice, devicesEditDevice, devicesGetDeviceById, devicesGetLiveControlGatewayInfo, devicesGetPairCode, devicesGetShockers, devicesListDevices, devicesOtaGetOtaUpdateHistory, devicesRegenerateDeviceToken, devicesRemoveDevice, type Options, publicGetOnlineDevicesStatistics, publicGetPublicShare, sessionsDeleteSession, sessionsGetSelfSession, sessionsListSessions, shareLinksAddShocker, shareLinksCreatePublicShare, shareLinksDeletePublicShare, shareLinksEditShocker, shareLinksList, shareLinksPauseShocker, shareLinksRemoveShocker, sharesDeleteShareCode, sharesLinkShareCode, shockerEditShocker, shockerGetAllShockerLogs, shockerGetShockerById, shockerGetShockerLogs, shockerGetUserShares, shockerListSharedShockers, shockerListShockers, shockerPauseShocker, shockerRegisterShocker, shockerRemoveShocker, shockerSendControlDeprecated, shockerShockerShareCodeCreate, shockerShockerShareCodeList, shockerShockerShareCodePause, shockerShockerShareCodeUpdate, shockerShockerShareRemove, tokenDeleteDeleteToken, tokensCreateToken, tokensEditToken, tokensGetTokenById, tokensListTokens, tokensReportTokens, tokensSelfGetSelfToken, usersGetByName, usersGetSelf, versionGetBackendInfo } from './sdk.gen'; -export { type AccountActivateData, type AccountActivateError, type AccountActivateErrors, type AccountActivateResponses, type AccountCheckUsernameData, type AccountCheckUsernameResponse, type AccountCheckUsernameResponses, type AccountEmailVerifyData, type AccountEmailVerifyError, type AccountEmailVerifyErrors, type AccountEmailVerifyLegacyData, type AccountEmailVerifyLegacyError, type AccountEmailVerifyLegacyErrors, type AccountEmailVerifyLegacyResponses, type AccountEmailVerifyResponses, type AccountLoginData, type AccountLoginError, type AccountLoginErrors, type AccountLoginResponse, type AccountLoginResponses, type AccountLogoutData, type AccountLogoutResponses, type AccountPasswordResetCheckValidData, type AccountPasswordResetCheckValidError, type AccountPasswordResetCheckValidErrors, type AccountPasswordResetCheckValidLegacyData, type AccountPasswordResetCheckValidLegacyError, type AccountPasswordResetCheckValidLegacyErrors, type AccountPasswordResetCheckValidLegacyResponse, type AccountPasswordResetCheckValidLegacyResponses, type AccountPasswordResetCheckValidResponse, type AccountPasswordResetCheckValidResponses, type AccountPasswordResetCompleteData, type AccountPasswordResetCompleteError, type AccountPasswordResetCompleteErrors, type AccountPasswordResetCompleteLegacyData, type AccountPasswordResetCompleteLegacyError, type AccountPasswordResetCompleteLegacyErrors, type AccountPasswordResetCompleteLegacyResponse, type AccountPasswordResetCompleteLegacyResponses, type AccountPasswordResetCompleteResponse, type AccountPasswordResetCompleteResponses, type AccountPasswordResetInitiateData, type AccountPasswordResetInitiateResponse, type AccountPasswordResetInitiateResponses, type AccountSignUpData, type AccountSignUpError, type AccountSignUpErrors, type AccountSignUpResponse, type AccountSignUpResponses, type AddEmailProviderBlacklistDto, type AddUsernameBlacklistDto, type AddWebhookDto, type AdminAddEmailProviderBlacklistData, type AdminAddEmailProviderBlacklistResponses, type AdminAddUsernameBlacklistData, type AdminAddUsernameBlacklistResponses, type AdminAddWebhookData, type AdminAddWebhookError, type AdminAddWebhookErrors, type AdminAddWebhookResponses, type AdminConfigurationAddData, type AdminConfigurationAddError, type AdminConfigurationAddErrors, type AdminConfigurationAddResponses, type AdminConfigurationDeleteData, type AdminConfigurationDeleteError, type AdminConfigurationDeleteErrors, type AdminConfigurationDeleteResponses, type AdminConfigurationListData, type AdminConfigurationListErrors, type AdminConfigurationListResponse, type AdminConfigurationListResponses, type AdminConfigurationUpdateData, type AdminConfigurationUpdateError, type AdminConfigurationUpdateErrors, type AdminConfigurationUpdateResponses, type AdminDeactivateUserData, type AdminDeactivateUserErrors, type AdminDeactivateUserResponses, type AdminDeleteUserData, type AdminDeleteUserErrors, type AdminDeleteUserResponses, type AdminGetOnlineDevicesData, type AdminGetOnlineDevicesErrors, type AdminGetOnlineDevicesResponse, type AdminGetOnlineDevicesResponses, type AdminGetUsersData, type AdminGetUsersErrors, type AdminGetUsersResponse, type AdminGetUsersResponses, type AdminListEmailProviderBlacklistData, type AdminListEmailProviderBlacklistResponse, type AdminListEmailProviderBlacklistResponses, type AdminListUsernameBlacklistData, type AdminListUsernameBlacklistResponse, type AdminListUsernameBlacklistResponses, type AdminListWebhooksData, type AdminListWebhooksErrors, type AdminListWebhooksResponse, type AdminListWebhooksResponses, type AdminModifyUserData, type AdminModifyUserErrors, type AdminModifyUserResponses, type AdminOnlineDeviceResponse, type AdminOnlineDeviceResponseArrayLegacyDataResponse, type AdminReactivateUserData, type AdminReactivateUserErrors, type AdminReactivateUserResponses, type AdminRemoveEmailProviderBlacklistData, type AdminRemoveEmailProviderBlacklistError, type AdminRemoveEmailProviderBlacklistErrors, type AdminRemoveEmailProviderBlacklistResponses, type AdminRemoveUsernameBlacklistData, type AdminRemoveUsernameBlacklistError, type AdminRemoveUsernameBlacklistErrors, type AdminRemoveUsernameBlacklistResponses, type AdminRemoveWebhookData, type AdminRemoveWebhookError, type AdminRemoveWebhookErrors, type AdminRemoveWebhookResponses, type AdminUsersView, type AdminUsersViewPaginated, type AuthenticatedAccountChangeEmailData, type AuthenticatedAccountChangeEmailError, type AuthenticatedAccountChangeEmailErrors, type AuthenticatedAccountChangeEmailResponses, type AuthenticatedAccountChangePasswordData, type AuthenticatedAccountChangePasswordError, type AuthenticatedAccountChangePasswordErrors, type AuthenticatedAccountChangePasswordResponses, type AuthenticatedAccountChangeUsernameData, type AuthenticatedAccountChangeUsernameError, type AuthenticatedAccountChangeUsernameErrors, type AuthenticatedAccountChangeUsernameResponses, type AuthenticatedAccountDeactivateData, type AuthenticatedAccountDeactivateError, type AuthenticatedAccountDeactivateErrors, type AuthenticatedAccountDeactivateResponse, type AuthenticatedAccountDeactivateResponses, type AuthenticatedAccountListOAuthConnectionsData, type AuthenticatedAccountListOAuthConnectionsResponse, type AuthenticatedAccountListOAuthConnectionsResponses, type AuthenticatedAccountRemoveOAuthConnectionData, type AuthenticatedAccountRemoveOAuthConnectionError, type AuthenticatedAccountRemoveOAuthConnectionErrors, type AuthenticatedAccountRemoveOAuthConnectionResponse, type AuthenticatedAccountRemoveOAuthConnectionResponses, type BackendInfoResponse, type BackendInfoResponseLegacyDataResponse, type BasicUserInfo, type BooleanLegacyDataResponse, type ChangeEmailRequest, type ChangePasswordRequest, type ChangeUsernameRequest, type ClientOptions, type ConfigurationAddItemRequest, type ConfigurationItemDto, type ConfigurationUpdateItemRequest, ConfigurationValueType, type Control, type ControlLogSenderLight, ControlType, type CreateTokenRequest, type DeviceGetLiveControlGatewayData, type DeviceGetLiveControlGatewayError, type DeviceGetLiveControlGatewayErrors, type DeviceGetLiveControlGatewayResponse, type DeviceGetLiveControlGatewayResponses, type DeviceGetSelfData, type DeviceGetSelfResponse, type DeviceGetSelfResponses, type DevicePairData, type DevicePairError, type DevicePairErrors, type DevicePairResponse, type DevicePairResponses, type DeviceResponse, type DeviceResponseArrayLegacyDataResponse, type DevicesCreateDeviceData, type DevicesCreateDeviceResponse, type DevicesCreateDeviceResponses, type DevicesEditDeviceData, type DevicesEditDeviceError, type DevicesEditDeviceErrors, type DevicesEditDeviceResponses, type DeviceSelfResponse, type DeviceSelfResponseLegacyDataResponse, type DevicesGetDeviceByIdData, type DevicesGetDeviceByIdError, type DevicesGetDeviceByIdErrors, type DevicesGetDeviceByIdResponse, type DevicesGetDeviceByIdResponses, type DevicesGetLiveControlGatewayInfoData, type DevicesGetLiveControlGatewayInfoError, type DevicesGetLiveControlGatewayInfoErrors, type DevicesGetLiveControlGatewayInfoResponse, type DevicesGetLiveControlGatewayInfoResponses, type DevicesGetPairCodeData, type DevicesGetPairCodeError, type DevicesGetPairCodeErrors, type DevicesGetPairCodeResponse, type DevicesGetPairCodeResponses, type DevicesGetShockersData, type DevicesGetShockersError, type DevicesGetShockersErrors, type DevicesGetShockersResponse, type DevicesGetShockersResponses, type DevicesListDevicesData, type DevicesListDevicesResponse, type DevicesListDevicesResponses, type DevicesOtaGetOtaUpdateHistoryData, type DevicesOtaGetOtaUpdateHistoryError, type DevicesOtaGetOtaUpdateHistoryErrors, type DevicesOtaGetOtaUpdateHistoryResponse, type DevicesOtaGetOtaUpdateHistoryResponses, type DevicesRegenerateDeviceTokenData, type DevicesRegenerateDeviceTokenError, type DevicesRegenerateDeviceTokenErrors, type DevicesRegenerateDeviceTokenResponse, type DevicesRegenerateDeviceTokenResponses, type DevicesRemoveDeviceData, type DevicesRemoveDeviceError, type DevicesRemoveDeviceErrors, type DevicesRemoveDeviceResponses, type DeviceWithShockersResponse, type DeviceWithShockersResponseArrayLegacyDataResponse, type DeviceWithTokenResponse, type DeviceWithTokenResponseLegacyDataResponse, type EditTokenRequest, type EmailProviderBlacklistDto, type GuidLegacyDataResponse, type HubEditRequest, type LcgNodeResponse, type LcgNodeResponseLegacyDataResponse, type LcgResponse, type LcgResponseLegacyDataResponse, type LegacyEmptyResponse, type LogEntry, type LogEntryArrayLegacyDataResponse, type LogEntryWithHub, type Login, type LoginSessionResponse, MatchTypeEnum, type MinimalShocker, type NewShocker, type OAuthConnectionResponse, type OpenShockProblem, type OpenShockProblemWritable, type OtaItem, type OtaItemIReadOnlyCollectionLegacyDataResponse, OtaUpdateStatus, type OwnerShockerResponse, type OwnerShockerResponseArrayLegacyDataResponse, type OwnPublicShareResponse, type OwnPublicShareResponseArrayLegacyDataResponse, PasswordHashingAlgorithm, type PasswordResetProcessData, type PauseReasonLegacyDataResponse, type PauseRequest, PermissionType, type ProblemDetails, type PublicGetOnlineDevicesStatisticsData, type PublicGetOnlineDevicesStatisticsResponse, type PublicGetOnlineDevicesStatisticsResponses, type PublicGetPublicShareData, type PublicGetPublicShareError, type PublicGetPublicShareErrors, type PublicGetPublicShareResponse, type PublicGetPublicShareResponses, type PublicShareCreate, type PublicShareDevice, type PublicShareEditShocker, type PublicShareResponse, type PublicShareResponseLegacyDataResponse, type PublicShareShocker, type ReportTokensRequest, type ResetRequest, RoleType, type SessionsDeleteSessionData, type SessionsDeleteSessionError, type SessionsDeleteSessionErrors, type SessionsDeleteSessionResponses, type SessionsGetSelfSessionData, type SessionsGetSelfSessionResponse, type SessionsGetSelfSessionResponses, type SessionsListSessionsData, type SessionsListSessionsResponse, type SessionsListSessionsResponses, type ShareCodeInfo, type ShareCodeInfoArrayLegacyDataResponse, type SharedDevice, type SharedShocker, type ShareInfo, type ShareInfoArrayLegacyDataResponse, type ShareLinksAddShockerData, type ShareLinksAddShockerError, type ShareLinksAddShockerErrors, type ShareLinksAddShockerResponse, type ShareLinksAddShockerResponses, type ShareLinksCreatePublicShareData, type ShareLinksCreatePublicShareResponse, type ShareLinksCreatePublicShareResponses, type ShareLinksDeletePublicShareData, type ShareLinksDeletePublicShareError, type ShareLinksDeletePublicShareErrors, type ShareLinksDeletePublicShareResponse, type ShareLinksDeletePublicShareResponses, type ShareLinksEditShockerData, type ShareLinksEditShockerError, type ShareLinksEditShockerErrors, type ShareLinksEditShockerResponse, type ShareLinksEditShockerResponses, type ShareLinksListData, type ShareLinksListResponse, type ShareLinksListResponses, type ShareLinksPauseShockerData, type ShareLinksPauseShockerError, type ShareLinksPauseShockerErrors, type ShareLinksPauseShockerResponse, type ShareLinksPauseShockerResponses, type ShareLinksRemoveShockerData, type ShareLinksRemoveShockerError, type ShareLinksRemoveShockerErrors, type ShareLinksRemoveShockerResponse, type ShareLinksRemoveShockerResponses, type SharesDeleteShareCodeData, type SharesDeleteShareCodeError, type SharesDeleteShareCodeErrors, type SharesDeleteShareCodeResponse, type SharesDeleteShareCodeResponses, type SharesLinkShareCodeData, type SharesLinkShareCodeError, type SharesLinkShareCodeErrors, type SharesLinkShareCodeResponse, type SharesLinkShareCodeResponses, type ShockerEditShockerData, type ShockerEditShockerError, type ShockerEditShockerErrors, type ShockerEditShockerResponse, type ShockerEditShockerResponses, type ShockerGetAllShockerLogsData, type ShockerGetAllShockerLogsError, type ShockerGetAllShockerLogsErrors, type ShockerGetAllShockerLogsResponse, type ShockerGetAllShockerLogsResponses, type ShockerGetShockerByIdData, type ShockerGetShockerByIdError, type ShockerGetShockerByIdErrors, type ShockerGetShockerByIdResponse, type ShockerGetShockerByIdResponses, type ShockerGetShockerLogsData, type ShockerGetShockerLogsError, type ShockerGetShockerLogsErrors, type ShockerGetShockerLogsResponse, type ShockerGetShockerLogsResponses, type ShockerGetUserSharesData, type ShockerGetUserSharesError, type ShockerGetUserSharesErrors, type ShockerGetUserSharesResponse, type ShockerGetUserSharesResponses, type ShockerLimits, type ShockerListSharedShockersData, type ShockerListSharedShockersResponse, type ShockerListSharedShockersResponses, type ShockerListShockersData, type ShockerListShockersResponse, type ShockerListShockersResponses, type ShockerLogsResponse, ShockerModelType, type ShockerPauseShockerData, type ShockerPauseShockerError, type ShockerPauseShockerErrors, type ShockerPauseShockerResponse, type ShockerPauseShockerResponses, type ShockerPermissions, type ShockerPermLimitPair, type ShockerRegisterShockerData, type ShockerRegisterShockerError, type ShockerRegisterShockerErrors, type ShockerRegisterShockerResponse, type ShockerRegisterShockerResponses, type ShockerRemoveShockerData, type ShockerRemoveShockerError, type ShockerRemoveShockerErrors, type ShockerRemoveShockerResponse, type ShockerRemoveShockerResponses, type ShockerResponse, type ShockerResponseArrayLegacyDataResponse, type ShockerSendControlDeprecatedData, type ShockerSendControlDeprecatedError, type ShockerSendControlDeprecatedErrors, type ShockerSendControlDeprecatedResponse, type ShockerSendControlDeprecatedResponses, type ShockerShockerShareCodeCreateData, type ShockerShockerShareCodeCreateError, type ShockerShockerShareCodeCreateErrors, type ShockerShockerShareCodeCreateResponse, type ShockerShockerShareCodeCreateResponses, type ShockerShockerShareCodeListData, type ShockerShockerShareCodeListError, type ShockerShockerShareCodeListErrors, type ShockerShockerShareCodeListResponse, type ShockerShockerShareCodeListResponses, type ShockerShockerShareCodePauseData, type ShockerShockerShareCodePauseError, type ShockerShockerShareCodePauseErrors, type ShockerShockerShareCodePauseResponse, type ShockerShockerShareCodePauseResponses, type ShockerShockerShareCodeUpdateData, type ShockerShockerShareCodeUpdateError, type ShockerShockerShareCodeUpdateErrors, type ShockerShockerShareCodeUpdateResponses, type ShockerShockerShareRemoveData, type ShockerShockerShareRemoveError, type ShockerShockerShareRemoveErrors, type ShockerShockerShareRemoveResponses, type ShockerWithDevice, type ShockerWithDeviceLegacyDataResponse, type SignUp, type StatsResponse, type StatsResponseLegacyDataResponse, type StringLegacyDataResponse, type TokenCreatedResponse, type TokenDeleteDeleteTokenData, type TokenDeleteDeleteTokenError, type TokenDeleteDeleteTokenErrors, type TokenDeleteDeleteTokenResponses, type TokenResponse, type TokensCreateTokenData, type TokensCreateTokenResponse, type TokensCreateTokenResponses, type TokensEditTokenData, type TokensEditTokenError, type TokensEditTokenErrors, type TokensEditTokenResponses, type TokensGetTokenByIdData, type TokensGetTokenByIdError, type TokensGetTokenByIdErrors, type TokensGetTokenByIdResponse, type TokensGetTokenByIdResponses, type TokensListTokensData, type TokensListTokensResponse, type TokensListTokensResponses, type TokensReportTokensData, type TokensReportTokensResponses, type TokensSelfGetSelfTokenData, type TokensSelfGetSelfTokenResponse, type TokensSelfGetSelfTokenResponses, UsernameAvailability, type UserNameBlacklistDto, type UsernameCheckResponse, type UsernameError, UsernameErrorType, type UserPatchDto, type UserSelfResponse, type UserSelfResponseLegacyDataResponse, type UsersGetByNameData, type UsersGetByNameError, type UsersGetByNameErrors, type UsersGetByNameResponse, type UsersGetByNameResponses, type UsersGetSelfData, type UsersGetSelfResponse, type UsersGetSelfResponses, type VersionGetBackendInfoData, type VersionGetBackendInfoResponse, type VersionGetBackendInfoResponses, type WebhookDto } from './types.gen'; +export { type AccountActivateData, type AccountActivateError, type AccountActivateErrors, type AccountActivateResponses, type AccountCheckUsernameData, type AccountCheckUsernameResponse, type AccountCheckUsernameResponses, type AccountEmailVerifyData, type AccountEmailVerifyError, type AccountEmailVerifyErrors, type AccountEmailVerifyLegacyData, type AccountEmailVerifyLegacyError, type AccountEmailVerifyLegacyErrors, type AccountEmailVerifyLegacyResponses, type AccountEmailVerifyResponses, type AccountLoginData, type AccountLoginError, type AccountLoginErrors, type AccountLoginResponse, type AccountLoginResponses, type AccountLogoutData, type AccountLogoutResponses, type AccountPasswordResetCheckValidData, type AccountPasswordResetCheckValidError, type AccountPasswordResetCheckValidErrors, type AccountPasswordResetCheckValidLegacyData, type AccountPasswordResetCheckValidLegacyError, type AccountPasswordResetCheckValidLegacyErrors, type AccountPasswordResetCheckValidLegacyResponse, type AccountPasswordResetCheckValidLegacyResponses, type AccountPasswordResetCheckValidResponse, type AccountPasswordResetCheckValidResponses, type AccountPasswordResetCompleteData, type AccountPasswordResetCompleteError, type AccountPasswordResetCompleteErrors, type AccountPasswordResetCompleteLegacyData, type AccountPasswordResetCompleteLegacyError, type AccountPasswordResetCompleteLegacyErrors, type AccountPasswordResetCompleteLegacyResponse, type AccountPasswordResetCompleteLegacyResponses, type AccountPasswordResetCompleteResponse, type AccountPasswordResetCompleteResponses, type AccountPasswordResetInitiateData, type AccountPasswordResetInitiateResponse, type AccountPasswordResetInitiateResponses, type AccountSignUpData, type AccountSignUpError, type AccountSignUpErrors, type AccountSignUpResponse, type AccountSignUpResponses, type AddEmailProviderBlacklistDto, type AddUsernameBlacklistDto, type AddWebhookDto, type AdminAddEmailProviderBlacklistData, type AdminAddEmailProviderBlacklistResponses, type AdminAddUsernameBlacklistData, type AdminAddUsernameBlacklistResponses, type AdminAddWebhookData, type AdminAddWebhookError, type AdminAddWebhookErrors, type AdminAddWebhookResponses, type AdminConfigurationAddData, type AdminConfigurationAddError, type AdminConfigurationAddErrors, type AdminConfigurationAddResponses, type AdminConfigurationDeleteData, type AdminConfigurationDeleteError, type AdminConfigurationDeleteErrors, type AdminConfigurationDeleteResponses, type AdminConfigurationListData, type AdminConfigurationListErrors, type AdminConfigurationListResponse, type AdminConfigurationListResponses, type AdminConfigurationUpdateData, type AdminConfigurationUpdateError, type AdminConfigurationUpdateErrors, type AdminConfigurationUpdateResponses, type AdminDeactivateUserData, type AdminDeactivateUserErrors, type AdminDeactivateUserResponses, type AdminDeleteUserData, type AdminDeleteUserErrors, type AdminDeleteUserResponses, type AdminGetOnlineDevicesData, type AdminGetOnlineDevicesErrors, type AdminGetOnlineDevicesResponse, type AdminGetOnlineDevicesResponses, type AdminGetUsersData, type AdminGetUsersErrors, type AdminGetUsersResponse, type AdminGetUsersResponses, type AdminListEmailProviderBlacklistData, type AdminListEmailProviderBlacklistResponse, type AdminListEmailProviderBlacklistResponses, type AdminListUsernameBlacklistData, type AdminListUsernameBlacklistResponse, type AdminListUsernameBlacklistResponses, type AdminListWebhooksData, type AdminListWebhooksErrors, type AdminListWebhooksResponse, type AdminListWebhooksResponses, type AdminModifyUserData, type AdminModifyUserErrors, type AdminModifyUserResponses, type AdminOnlineDeviceResponse, type AdminOnlineDeviceResponseArrayLegacyDataResponse, type AdminReactivateUserData, type AdminReactivateUserErrors, type AdminReactivateUserResponses, type AdminRemoveEmailProviderBlacklistData, type AdminRemoveEmailProviderBlacklistError, type AdminRemoveEmailProviderBlacklistErrors, type AdminRemoveEmailProviderBlacklistResponses, type AdminRemoveUsernameBlacklistData, type AdminRemoveUsernameBlacklistError, type AdminRemoveUsernameBlacklistErrors, type AdminRemoveUsernameBlacklistResponses, type AdminRemoveWebhookData, type AdminRemoveWebhookError, type AdminRemoveWebhookErrors, type AdminRemoveWebhookResponses, type AdminUsersView, type AdminUsersViewPaginated, type AuthenticatedAccountChangeEmailData, type AuthenticatedAccountChangeEmailError, type AuthenticatedAccountChangeEmailErrors, type AuthenticatedAccountChangeEmailResponses, type AuthenticatedAccountChangePasswordData, type AuthenticatedAccountChangePasswordError, type AuthenticatedAccountChangePasswordErrors, type AuthenticatedAccountChangePasswordResponses, type AuthenticatedAccountChangeUsernameData, type AuthenticatedAccountChangeUsernameError, type AuthenticatedAccountChangeUsernameErrors, type AuthenticatedAccountChangeUsernameResponses, type AuthenticatedAccountDeactivateData, type AuthenticatedAccountDeactivateError, type AuthenticatedAccountDeactivateErrors, type AuthenticatedAccountDeactivateResponse, type AuthenticatedAccountDeactivateResponses, type AuthenticatedAccountListOAuthConnectionsData, type AuthenticatedAccountListOAuthConnectionsResponse, type AuthenticatedAccountListOAuthConnectionsResponses, type AuthenticatedAccountRemoveOAuthConnectionData, type AuthenticatedAccountRemoveOAuthConnectionError, type AuthenticatedAccountRemoveOAuthConnectionErrors, type AuthenticatedAccountRemoveOAuthConnectionResponse, type AuthenticatedAccountRemoveOAuthConnectionResponses, type BackendInfoResponse, type BackendInfoResponseLegacyDataResponse, type BasicUserInfo, type BooleanLegacyDataResponse, type ChangeEmailRequest, type ChangePasswordRequest, type ChangeUsernameRequest, type ClientOptions, type ConfigurationAddItemRequest, type ConfigurationItemDto, type ConfigurationUpdateItemRequest, ConfigurationValueType, type Control, type ControlLogSenderLight, ControlType, type CreateTokenRequest, type DeviceGetLiveControlGatewayData, type DeviceGetLiveControlGatewayError, type DeviceGetLiveControlGatewayErrors, type DeviceGetLiveControlGatewayResponse, type DeviceGetLiveControlGatewayResponses, type DeviceGetSelfData, type DeviceGetSelfResponse, type DeviceGetSelfResponses, type DevicePairData, type DevicePairError, type DevicePairErrors, type DevicePairResponse, type DevicePairResponses, type DeviceResponse, type DeviceResponseArrayLegacyDataResponse, type DevicesCreateDeviceData, type DevicesCreateDeviceResponse, type DevicesCreateDeviceResponses, type DevicesEditDeviceData, type DevicesEditDeviceError, type DevicesEditDeviceErrors, type DevicesEditDeviceResponses, type DeviceSelfResponse, type DeviceSelfResponseLegacyDataResponse, type DevicesGetDeviceByIdData, type DevicesGetDeviceByIdError, type DevicesGetDeviceByIdErrors, type DevicesGetDeviceByIdResponse, type DevicesGetDeviceByIdResponses, type DevicesGetLiveControlGatewayInfoData, type DevicesGetLiveControlGatewayInfoError, type DevicesGetLiveControlGatewayInfoErrors, type DevicesGetLiveControlGatewayInfoResponse, type DevicesGetLiveControlGatewayInfoResponses, type DevicesGetPairCodeData, type DevicesGetPairCodeError, type DevicesGetPairCodeErrors, type DevicesGetPairCodeResponse, type DevicesGetPairCodeResponses, type DevicesGetShockersData, type DevicesGetShockersError, type DevicesGetShockersErrors, type DevicesGetShockersResponse, type DevicesGetShockersResponses, type DevicesListDevicesData, type DevicesListDevicesResponse, type DevicesListDevicesResponses, type DevicesOtaGetOtaUpdateHistoryData, type DevicesOtaGetOtaUpdateHistoryError, type DevicesOtaGetOtaUpdateHistoryErrors, type DevicesOtaGetOtaUpdateHistoryResponse, type DevicesOtaGetOtaUpdateHistoryResponses, type DevicesRegenerateDeviceTokenData, type DevicesRegenerateDeviceTokenError, type DevicesRegenerateDeviceTokenErrors, type DevicesRegenerateDeviceTokenResponse, type DevicesRegenerateDeviceTokenResponses, type DevicesRemoveDeviceData, type DevicesRemoveDeviceError, type DevicesRemoveDeviceErrors, type DevicesRemoveDeviceResponses, type DeviceWithShockersResponse, type DeviceWithShockersResponseArrayLegacyDataResponse, type DeviceWithTokenResponse, type DeviceWithTokenResponseLegacyDataResponse, type EditTokenRequest, type EmailProviderBlacklistDto, type GuidLegacyDataResponse, type HubEditRequest, type LcgNodeResponse, type LcgNodeResponseLegacyDataResponse, type LcgResponse, type LcgResponseLegacyDataResponse, type LegacyEmptyResponse, type LogEntry, type LogEntryArrayLegacyDataResponse, type LogEntryWithHub, type LogEntryWithHubPagedResult, type LogEntryWithHubPagedResultWritable, type Login, type LoginSessionResponse, MatchTypeEnum, type MinimalShocker, type NewShocker, type OAuthConnectionResponse, type OpenShockProblem, type OpenShockProblemWritable, type OtaItem, type OtaItemIReadOnlyCollectionLegacyDataResponse, OtaUpdateStatus, type OwnerShockerResponse, type OwnerShockerResponseArrayLegacyDataResponse, type OwnPublicShareResponse, type OwnPublicShareResponseArrayLegacyDataResponse, PasswordHashingAlgorithm, type PasswordResetProcessData, type PauseReasonLegacyDataResponse, type PauseRequest, PermissionType, type ProblemDetails, type PublicGetOnlineDevicesStatisticsData, type PublicGetOnlineDevicesStatisticsResponse, type PublicGetOnlineDevicesStatisticsResponses, type PublicGetPublicShareData, type PublicGetPublicShareError, type PublicGetPublicShareErrors, type PublicGetPublicShareResponse, type PublicGetPublicShareResponses, type PublicShareCreate, type PublicShareDevice, type PublicShareEditShocker, type PublicShareResponse, type PublicShareResponseLegacyDataResponse, type PublicShareShocker, type ReportTokensRequest, type ResetRequest, RoleType, type SessionsDeleteSessionData, type SessionsDeleteSessionError, type SessionsDeleteSessionErrors, type SessionsDeleteSessionResponses, type SessionsGetSelfSessionData, type SessionsGetSelfSessionResponse, type SessionsGetSelfSessionResponses, type SessionsListSessionsData, type SessionsListSessionsResponse, type SessionsListSessionsResponses, type ShareCodeInfo, type ShareCodeInfoArrayLegacyDataResponse, type SharedDevice, type SharedShocker, type ShareInfo, type ShareInfoArrayLegacyDataResponse, type ShareLinksAddShockerData, type ShareLinksAddShockerError, type ShareLinksAddShockerErrors, type ShareLinksAddShockerResponse, type ShareLinksAddShockerResponses, type ShareLinksCreatePublicShareData, type ShareLinksCreatePublicShareResponse, type ShareLinksCreatePublicShareResponses, type ShareLinksDeletePublicShareData, type ShareLinksDeletePublicShareError, type ShareLinksDeletePublicShareErrors, type ShareLinksDeletePublicShareResponse, type ShareLinksDeletePublicShareResponses, type ShareLinksEditShockerData, type ShareLinksEditShockerError, type ShareLinksEditShockerErrors, type ShareLinksEditShockerResponse, type ShareLinksEditShockerResponses, type ShareLinksListData, type ShareLinksListResponse, type ShareLinksListResponses, type ShareLinksPauseShockerData, type ShareLinksPauseShockerError, type ShareLinksPauseShockerErrors, type ShareLinksPauseShockerResponse, type ShareLinksPauseShockerResponses, type ShareLinksRemoveShockerData, type ShareLinksRemoveShockerError, type ShareLinksRemoveShockerErrors, type ShareLinksRemoveShockerResponse, type ShareLinksRemoveShockerResponses, type SharesDeleteShareCodeData, type SharesDeleteShareCodeError, type SharesDeleteShareCodeErrors, type SharesDeleteShareCodeResponse, type SharesDeleteShareCodeResponses, type SharesLinkShareCodeData, type SharesLinkShareCodeError, type SharesLinkShareCodeErrors, type SharesLinkShareCodeResponse, type SharesLinkShareCodeResponses, type ShockerEditShockerData, type ShockerEditShockerError, type ShockerEditShockerErrors, type ShockerEditShockerResponse, type ShockerEditShockerResponses, type ShockerGetAllShockerLogsData, type ShockerGetAllShockerLogsResponse, type ShockerGetAllShockerLogsResponses, type ShockerGetShockerByIdData, type ShockerGetShockerByIdError, type ShockerGetShockerByIdErrors, type ShockerGetShockerByIdResponse, type ShockerGetShockerByIdResponses, type ShockerGetShockerLogsData, type ShockerGetShockerLogsError, type ShockerGetShockerLogsErrors, type ShockerGetShockerLogsResponse, type ShockerGetShockerLogsResponses, type ShockerGetUserSharesData, type ShockerGetUserSharesError, type ShockerGetUserSharesErrors, type ShockerGetUserSharesResponse, type ShockerGetUserSharesResponses, type ShockerLimits, type ShockerListSharedShockersData, type ShockerListSharedShockersResponse, type ShockerListSharedShockersResponses, type ShockerListShockersData, type ShockerListShockersResponse, type ShockerListShockersResponses, ShockerModelType, type ShockerPauseShockerData, type ShockerPauseShockerError, type ShockerPauseShockerErrors, type ShockerPauseShockerResponse, type ShockerPauseShockerResponses, type ShockerPermissions, type ShockerPermLimitPair, type ShockerRegisterShockerData, type ShockerRegisterShockerError, type ShockerRegisterShockerErrors, type ShockerRegisterShockerResponse, type ShockerRegisterShockerResponses, type ShockerRemoveShockerData, type ShockerRemoveShockerError, type ShockerRemoveShockerErrors, type ShockerRemoveShockerResponse, type ShockerRemoveShockerResponses, type ShockerResponse, type ShockerResponseArrayLegacyDataResponse, type ShockerSendControlDeprecatedData, type ShockerSendControlDeprecatedError, type ShockerSendControlDeprecatedErrors, type ShockerSendControlDeprecatedResponse, type ShockerSendControlDeprecatedResponses, type ShockerShockerShareCodeCreateData, type ShockerShockerShareCodeCreateError, type ShockerShockerShareCodeCreateErrors, type ShockerShockerShareCodeCreateResponse, type ShockerShockerShareCodeCreateResponses, type ShockerShockerShareCodeListData, type ShockerShockerShareCodeListError, type ShockerShockerShareCodeListErrors, type ShockerShockerShareCodeListResponse, type ShockerShockerShareCodeListResponses, type ShockerShockerShareCodePauseData, type ShockerShockerShareCodePauseError, type ShockerShockerShareCodePauseErrors, type ShockerShockerShareCodePauseResponse, type ShockerShockerShareCodePauseResponses, type ShockerShockerShareCodeUpdateData, type ShockerShockerShareCodeUpdateError, type ShockerShockerShareCodeUpdateErrors, type ShockerShockerShareCodeUpdateResponses, type ShockerShockerShareRemoveData, type ShockerShockerShareRemoveError, type ShockerShockerShareRemoveErrors, type ShockerShockerShareRemoveResponses, type ShockerWithDevice, type ShockerWithDeviceLegacyDataResponse, type SignUp, SortDirection, type StatsResponse, type StatsResponseLegacyDataResponse, type StringLegacyDataResponse, type TokenCreatedResponse, type TokenDeleteDeleteTokenData, type TokenDeleteDeleteTokenError, type TokenDeleteDeleteTokenErrors, type TokenDeleteDeleteTokenResponses, type TokenResponse, type TokensCreateTokenData, type TokensCreateTokenResponse, type TokensCreateTokenResponses, type TokensEditTokenData, type TokensEditTokenError, type TokensEditTokenErrors, type TokensEditTokenResponses, type TokensGetTokenByIdData, type TokensGetTokenByIdError, type TokensGetTokenByIdErrors, type TokensGetTokenByIdResponse, type TokensGetTokenByIdResponses, type TokensListTokensData, type TokensListTokensResponse, type TokensListTokensResponses, type TokensReportTokensData, type TokensReportTokensResponses, type TokensSelfGetSelfTokenData, type TokensSelfGetSelfTokenResponse, type TokensSelfGetSelfTokenResponses, UsernameAvailability, type UserNameBlacklistDto, type UsernameCheckResponse, type UsernameError, UsernameErrorType, type UserPatchDto, type UserSelfResponse, type UserSelfResponseLegacyDataResponse, type UsersGetByNameData, type UsersGetByNameError, type UsersGetByNameErrors, type UsersGetByNameResponse, type UsersGetByNameResponses, type UsersGetSelfData, type UsersGetSelfResponse, type UsersGetSelfResponses, type VersionGetBackendInfoData, type VersionGetBackendInfoResponse, type VersionGetBackendInfoResponses, type WebhookDto } from './types.gen'; diff --git a/src/lib/api/internal/v1/sdk.gen.ts b/src/lib/api/internal/v1/sdk.gen.ts index 2875a96b..719c1199 100644 --- a/src/lib/api/internal/v1/sdk.gen.ts +++ b/src/lib/api/internal/v1/sdk.gen.ts @@ -3,7 +3,7 @@ import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; import { adminConfigurationListResponseTransformer, adminGetOnlineDevicesResponseTransformer, adminGetUsersResponseTransformer, adminListEmailProviderBlacklistResponseTransformer, adminListUsernameBlacklistResponseTransformer, adminListWebhooksResponseTransformer, authenticatedAccountListOAuthConnectionsResponseTransformer, devicesGetDeviceByIdResponseTransformer, devicesGetShockersResponseTransformer, devicesListDevicesResponseTransformer, devicesOtaGetOtaUpdateHistoryResponseTransformer, publicGetOnlineDevicesStatisticsResponseTransformer, publicGetPublicShareResponseTransformer, sessionsGetSelfSessionResponseTransformer, sessionsListSessionsResponseTransformer, shareLinksListResponseTransformer, shockerGetAllShockerLogsResponseTransformer, shockerGetShockerByIdResponseTransformer, shockerGetShockerLogsResponseTransformer, shockerGetUserSharesResponseTransformer, shockerListShockersResponseTransformer, shockerShockerShareCodeListResponseTransformer, tokensCreateTokenResponseTransformer, tokensGetTokenByIdResponseTransformer, tokensListTokensResponseTransformer, tokensSelfGetSelfTokenResponseTransformer, versionGetBackendInfoResponseTransformer } from './transformers.gen'; -import type { AccountActivateData, AccountActivateErrors, AccountActivateResponses, AccountCheckUsernameData, AccountCheckUsernameResponses, AccountEmailVerifyData, AccountEmailVerifyErrors, AccountEmailVerifyLegacyData, AccountEmailVerifyLegacyErrors, AccountEmailVerifyLegacyResponses, AccountEmailVerifyResponses, AccountLoginData, AccountLoginErrors, AccountLoginResponses, AccountLogoutData, AccountLogoutResponses, AccountPasswordResetCheckValidData, AccountPasswordResetCheckValidErrors, AccountPasswordResetCheckValidLegacyData, AccountPasswordResetCheckValidLegacyErrors, AccountPasswordResetCheckValidLegacyResponses, AccountPasswordResetCheckValidResponses, AccountPasswordResetCompleteData, AccountPasswordResetCompleteErrors, AccountPasswordResetCompleteLegacyData, AccountPasswordResetCompleteLegacyErrors, AccountPasswordResetCompleteLegacyResponses, AccountPasswordResetCompleteResponses, AccountPasswordResetInitiateData, AccountPasswordResetInitiateResponses, AccountSignUpData, AccountSignUpErrors, AccountSignUpResponses, AdminAddEmailProviderBlacklistData, AdminAddEmailProviderBlacklistResponses, AdminAddUsernameBlacklistData, AdminAddUsernameBlacklistResponses, AdminAddWebhookData, AdminAddWebhookErrors, AdminAddWebhookResponses, AdminConfigurationAddData, AdminConfigurationAddErrors, AdminConfigurationAddResponses, AdminConfigurationDeleteData, AdminConfigurationDeleteErrors, AdminConfigurationDeleteResponses, AdminConfigurationListData, AdminConfigurationListErrors, AdminConfigurationListResponses, AdminConfigurationUpdateData, AdminConfigurationUpdateErrors, AdminConfigurationUpdateResponses, AdminDeactivateUserData, AdminDeactivateUserErrors, AdminDeactivateUserResponses, AdminDeleteUserData, AdminDeleteUserErrors, AdminDeleteUserResponses, AdminGetOnlineDevicesData, AdminGetOnlineDevicesErrors, AdminGetOnlineDevicesResponses, AdminGetUsersData, AdminGetUsersErrors, AdminGetUsersResponses, AdminListEmailProviderBlacklistData, AdminListEmailProviderBlacklistResponses, AdminListUsernameBlacklistData, AdminListUsernameBlacklistResponses, AdminListWebhooksData, AdminListWebhooksErrors, AdminListWebhooksResponses, AdminModifyUserData, AdminModifyUserErrors, AdminModifyUserResponses, AdminReactivateUserData, AdminReactivateUserErrors, AdminReactivateUserResponses, AdminRemoveEmailProviderBlacklistData, AdminRemoveEmailProviderBlacklistErrors, AdminRemoveEmailProviderBlacklistResponses, AdminRemoveUsernameBlacklistData, AdminRemoveUsernameBlacklistErrors, AdminRemoveUsernameBlacklistResponses, AdminRemoveWebhookData, AdminRemoveWebhookErrors, AdminRemoveWebhookResponses, AuthenticatedAccountChangeEmailData, AuthenticatedAccountChangeEmailErrors, AuthenticatedAccountChangeEmailResponses, AuthenticatedAccountChangePasswordData, AuthenticatedAccountChangePasswordErrors, AuthenticatedAccountChangePasswordResponses, AuthenticatedAccountChangeUsernameData, AuthenticatedAccountChangeUsernameErrors, AuthenticatedAccountChangeUsernameResponses, AuthenticatedAccountDeactivateData, AuthenticatedAccountDeactivateErrors, AuthenticatedAccountDeactivateResponses, AuthenticatedAccountListOAuthConnectionsData, AuthenticatedAccountListOAuthConnectionsResponses, AuthenticatedAccountRemoveOAuthConnectionData, AuthenticatedAccountRemoveOAuthConnectionErrors, AuthenticatedAccountRemoveOAuthConnectionResponses, DeviceGetLiveControlGatewayData, DeviceGetLiveControlGatewayErrors, DeviceGetLiveControlGatewayResponses, DeviceGetSelfData, DeviceGetSelfResponses, DevicePairData, DevicePairErrors, DevicePairResponses, DevicesCreateDeviceData, DevicesCreateDeviceResponses, DevicesEditDeviceData, DevicesEditDeviceErrors, DevicesEditDeviceResponses, DevicesGetDeviceByIdData, DevicesGetDeviceByIdErrors, DevicesGetDeviceByIdResponses, DevicesGetLiveControlGatewayInfoData, DevicesGetLiveControlGatewayInfoErrors, DevicesGetLiveControlGatewayInfoResponses, DevicesGetPairCodeData, DevicesGetPairCodeErrors, DevicesGetPairCodeResponses, DevicesGetShockersData, DevicesGetShockersErrors, DevicesGetShockersResponses, DevicesListDevicesData, DevicesListDevicesResponses, DevicesOtaGetOtaUpdateHistoryData, DevicesOtaGetOtaUpdateHistoryErrors, DevicesOtaGetOtaUpdateHistoryResponses, DevicesRegenerateDeviceTokenData, DevicesRegenerateDeviceTokenErrors, DevicesRegenerateDeviceTokenResponses, DevicesRemoveDeviceData, DevicesRemoveDeviceErrors, DevicesRemoveDeviceResponses, PublicGetOnlineDevicesStatisticsData, PublicGetOnlineDevicesStatisticsResponses, PublicGetPublicShareData, PublicGetPublicShareErrors, PublicGetPublicShareResponses, SessionsDeleteSessionData, SessionsDeleteSessionErrors, SessionsDeleteSessionResponses, SessionsGetSelfSessionData, SessionsGetSelfSessionResponses, SessionsListSessionsData, SessionsListSessionsResponses, ShareLinksAddShockerData, ShareLinksAddShockerErrors, ShareLinksAddShockerResponses, ShareLinksCreatePublicShareData, ShareLinksCreatePublicShareResponses, ShareLinksDeletePublicShareData, ShareLinksDeletePublicShareErrors, ShareLinksDeletePublicShareResponses, ShareLinksEditShockerData, ShareLinksEditShockerErrors, ShareLinksEditShockerResponses, ShareLinksListData, ShareLinksListResponses, ShareLinksPauseShockerData, ShareLinksPauseShockerErrors, ShareLinksPauseShockerResponses, ShareLinksRemoveShockerData, ShareLinksRemoveShockerErrors, ShareLinksRemoveShockerResponses, SharesDeleteShareCodeData, SharesDeleteShareCodeErrors, SharesDeleteShareCodeResponses, SharesLinkShareCodeData, SharesLinkShareCodeErrors, SharesLinkShareCodeResponses, ShockerEditShockerData, ShockerEditShockerErrors, ShockerEditShockerResponses, ShockerGetAllShockerLogsData, ShockerGetAllShockerLogsErrors, ShockerGetAllShockerLogsResponses, ShockerGetShockerByIdData, ShockerGetShockerByIdErrors, ShockerGetShockerByIdResponses, ShockerGetShockerLogsData, ShockerGetShockerLogsErrors, ShockerGetShockerLogsResponses, ShockerGetUserSharesData, ShockerGetUserSharesErrors, ShockerGetUserSharesResponses, ShockerListSharedShockersData, ShockerListSharedShockersResponses, ShockerListShockersData, ShockerListShockersResponses, ShockerPauseShockerData, ShockerPauseShockerErrors, ShockerPauseShockerResponses, ShockerRegisterShockerData, ShockerRegisterShockerErrors, ShockerRegisterShockerResponses, ShockerRemoveShockerData, ShockerRemoveShockerErrors, ShockerRemoveShockerResponses, ShockerSendControlDeprecatedData, ShockerSendControlDeprecatedErrors, ShockerSendControlDeprecatedResponses, ShockerShockerShareCodeCreateData, ShockerShockerShareCodeCreateErrors, ShockerShockerShareCodeCreateResponses, ShockerShockerShareCodeListData, ShockerShockerShareCodeListErrors, ShockerShockerShareCodeListResponses, ShockerShockerShareCodePauseData, ShockerShockerShareCodePauseErrors, ShockerShockerShareCodePauseResponses, ShockerShockerShareCodeUpdateData, ShockerShockerShareCodeUpdateErrors, ShockerShockerShareCodeUpdateResponses, ShockerShockerShareRemoveData, ShockerShockerShareRemoveErrors, ShockerShockerShareRemoveResponses, TokenDeleteDeleteTokenData, TokenDeleteDeleteTokenErrors, TokenDeleteDeleteTokenResponses, TokensCreateTokenData, TokensCreateTokenResponses, TokensEditTokenData, TokensEditTokenErrors, TokensEditTokenResponses, TokensGetTokenByIdData, TokensGetTokenByIdErrors, TokensGetTokenByIdResponses, TokensListTokensData, TokensListTokensResponses, TokensReportTokensData, TokensReportTokensResponses, TokensSelfGetSelfTokenData, TokensSelfGetSelfTokenResponses, UsersGetByNameData, UsersGetByNameErrors, UsersGetByNameResponses, UsersGetSelfData, UsersGetSelfResponses, VersionGetBackendInfoData, VersionGetBackendInfoResponses } from './types.gen'; +import type { AccountActivateData, AccountActivateErrors, AccountActivateResponses, AccountCheckUsernameData, AccountCheckUsernameResponses, AccountEmailVerifyData, AccountEmailVerifyErrors, AccountEmailVerifyLegacyData, AccountEmailVerifyLegacyErrors, AccountEmailVerifyLegacyResponses, AccountEmailVerifyResponses, AccountLoginData, AccountLoginErrors, AccountLoginResponses, AccountLogoutData, AccountLogoutResponses, AccountPasswordResetCheckValidData, AccountPasswordResetCheckValidErrors, AccountPasswordResetCheckValidLegacyData, AccountPasswordResetCheckValidLegacyErrors, AccountPasswordResetCheckValidLegacyResponses, AccountPasswordResetCheckValidResponses, AccountPasswordResetCompleteData, AccountPasswordResetCompleteErrors, AccountPasswordResetCompleteLegacyData, AccountPasswordResetCompleteLegacyErrors, AccountPasswordResetCompleteLegacyResponses, AccountPasswordResetCompleteResponses, AccountPasswordResetInitiateData, AccountPasswordResetInitiateResponses, AccountSignUpData, AccountSignUpErrors, AccountSignUpResponses, AdminAddEmailProviderBlacklistData, AdminAddEmailProviderBlacklistResponses, AdminAddUsernameBlacklistData, AdminAddUsernameBlacklistResponses, AdminAddWebhookData, AdminAddWebhookErrors, AdminAddWebhookResponses, AdminConfigurationAddData, AdminConfigurationAddErrors, AdminConfigurationAddResponses, AdminConfigurationDeleteData, AdminConfigurationDeleteErrors, AdminConfigurationDeleteResponses, AdminConfigurationListData, AdminConfigurationListErrors, AdminConfigurationListResponses, AdminConfigurationUpdateData, AdminConfigurationUpdateErrors, AdminConfigurationUpdateResponses, AdminDeactivateUserData, AdminDeactivateUserErrors, AdminDeactivateUserResponses, AdminDeleteUserData, AdminDeleteUserErrors, AdminDeleteUserResponses, AdminGetOnlineDevicesData, AdminGetOnlineDevicesErrors, AdminGetOnlineDevicesResponses, AdminGetUsersData, AdminGetUsersErrors, AdminGetUsersResponses, AdminListEmailProviderBlacklistData, AdminListEmailProviderBlacklistResponses, AdminListUsernameBlacklistData, AdminListUsernameBlacklistResponses, AdminListWebhooksData, AdminListWebhooksErrors, AdminListWebhooksResponses, AdminModifyUserData, AdminModifyUserErrors, AdminModifyUserResponses, AdminReactivateUserData, AdminReactivateUserErrors, AdminReactivateUserResponses, AdminRemoveEmailProviderBlacklistData, AdminRemoveEmailProviderBlacklistErrors, AdminRemoveEmailProviderBlacklistResponses, AdminRemoveUsernameBlacklistData, AdminRemoveUsernameBlacklistErrors, AdminRemoveUsernameBlacklistResponses, AdminRemoveWebhookData, AdminRemoveWebhookErrors, AdminRemoveWebhookResponses, AuthenticatedAccountChangeEmailData, AuthenticatedAccountChangeEmailErrors, AuthenticatedAccountChangeEmailResponses, AuthenticatedAccountChangePasswordData, AuthenticatedAccountChangePasswordErrors, AuthenticatedAccountChangePasswordResponses, AuthenticatedAccountChangeUsernameData, AuthenticatedAccountChangeUsernameErrors, AuthenticatedAccountChangeUsernameResponses, AuthenticatedAccountDeactivateData, AuthenticatedAccountDeactivateErrors, AuthenticatedAccountDeactivateResponses, AuthenticatedAccountListOAuthConnectionsData, AuthenticatedAccountListOAuthConnectionsResponses, AuthenticatedAccountRemoveOAuthConnectionData, AuthenticatedAccountRemoveOAuthConnectionErrors, AuthenticatedAccountRemoveOAuthConnectionResponses, DeviceGetLiveControlGatewayData, DeviceGetLiveControlGatewayErrors, DeviceGetLiveControlGatewayResponses, DeviceGetSelfData, DeviceGetSelfResponses, DevicePairData, DevicePairErrors, DevicePairResponses, DevicesCreateDeviceData, DevicesCreateDeviceResponses, DevicesEditDeviceData, DevicesEditDeviceErrors, DevicesEditDeviceResponses, DevicesGetDeviceByIdData, DevicesGetDeviceByIdErrors, DevicesGetDeviceByIdResponses, DevicesGetLiveControlGatewayInfoData, DevicesGetLiveControlGatewayInfoErrors, DevicesGetLiveControlGatewayInfoResponses, DevicesGetPairCodeData, DevicesGetPairCodeErrors, DevicesGetPairCodeResponses, DevicesGetShockersData, DevicesGetShockersErrors, DevicesGetShockersResponses, DevicesListDevicesData, DevicesListDevicesResponses, DevicesOtaGetOtaUpdateHistoryData, DevicesOtaGetOtaUpdateHistoryErrors, DevicesOtaGetOtaUpdateHistoryResponses, DevicesRegenerateDeviceTokenData, DevicesRegenerateDeviceTokenErrors, DevicesRegenerateDeviceTokenResponses, DevicesRemoveDeviceData, DevicesRemoveDeviceErrors, DevicesRemoveDeviceResponses, PublicGetOnlineDevicesStatisticsData, PublicGetOnlineDevicesStatisticsResponses, PublicGetPublicShareData, PublicGetPublicShareErrors, PublicGetPublicShareResponses, SessionsDeleteSessionData, SessionsDeleteSessionErrors, SessionsDeleteSessionResponses, SessionsGetSelfSessionData, SessionsGetSelfSessionResponses, SessionsListSessionsData, SessionsListSessionsResponses, ShareLinksAddShockerData, ShareLinksAddShockerErrors, ShareLinksAddShockerResponses, ShareLinksCreatePublicShareData, ShareLinksCreatePublicShareResponses, ShareLinksDeletePublicShareData, ShareLinksDeletePublicShareErrors, ShareLinksDeletePublicShareResponses, ShareLinksEditShockerData, ShareLinksEditShockerErrors, ShareLinksEditShockerResponses, ShareLinksListData, ShareLinksListResponses, ShareLinksPauseShockerData, ShareLinksPauseShockerErrors, ShareLinksPauseShockerResponses, ShareLinksRemoveShockerData, ShareLinksRemoveShockerErrors, ShareLinksRemoveShockerResponses, SharesDeleteShareCodeData, SharesDeleteShareCodeErrors, SharesDeleteShareCodeResponses, SharesLinkShareCodeData, SharesLinkShareCodeErrors, SharesLinkShareCodeResponses, ShockerEditShockerData, ShockerEditShockerErrors, ShockerEditShockerResponses, ShockerGetAllShockerLogsData, ShockerGetAllShockerLogsResponses, ShockerGetShockerByIdData, ShockerGetShockerByIdErrors, ShockerGetShockerByIdResponses, ShockerGetShockerLogsData, ShockerGetShockerLogsErrors, ShockerGetShockerLogsResponses, ShockerGetUserSharesData, ShockerGetUserSharesErrors, ShockerGetUserSharesResponses, ShockerListSharedShockersData, ShockerListSharedShockersResponses, ShockerListShockersData, ShockerListShockersResponses, ShockerPauseShockerData, ShockerPauseShockerErrors, ShockerPauseShockerResponses, ShockerRegisterShockerData, ShockerRegisterShockerErrors, ShockerRegisterShockerResponses, ShockerRemoveShockerData, ShockerRemoveShockerErrors, ShockerRemoveShockerResponses, ShockerSendControlDeprecatedData, ShockerSendControlDeprecatedErrors, ShockerSendControlDeprecatedResponses, ShockerShockerShareCodeCreateData, ShockerShockerShareCodeCreateErrors, ShockerShockerShareCodeCreateResponses, ShockerShockerShareCodeListData, ShockerShockerShareCodeListErrors, ShockerShockerShareCodeListResponses, ShockerShockerShareCodePauseData, ShockerShockerShareCodePauseErrors, ShockerShockerShareCodePauseResponses, ShockerShockerShareCodeUpdateData, ShockerShockerShareCodeUpdateErrors, ShockerShockerShareCodeUpdateResponses, ShockerShockerShareRemoveData, ShockerShockerShareRemoveErrors, ShockerShockerShareRemoveResponses, TokenDeleteDeleteTokenData, TokenDeleteDeleteTokenErrors, TokenDeleteDeleteTokenResponses, TokensCreateTokenData, TokensCreateTokenResponses, TokensEditTokenData, TokensEditTokenErrors, TokensEditTokenResponses, TokensGetTokenByIdData, TokensGetTokenByIdErrors, TokensGetTokenByIdResponses, TokensListTokensData, TokensListTokensResponses, TokensReportTokensData, TokensReportTokensResponses, TokensSelfGetSelfTokenData, TokensSelfGetSelfTokenResponses, UsersGetByNameData, UsersGetByNameErrors, UsersGetByNameResponses, UsersGetSelfData, UsersGetSelfResponses, VersionGetBackendInfoData, VersionGetBackendInfoResponses } from './types.gen'; export type Options = Options2 & { /** @@ -19,85 +19,6 @@ export type Options; }; -/** - * Revoke a token - */ -export const tokenDeleteDeleteToken = (options: Options) => (options.client ?? client).delete({ - responseStyle: 'data', - url: '/1/tokens/{tokenId}', - ...options -}); - -/** - * Get a token by id - */ -export const tokensGetTokenById = (options: Options) => (options.client ?? client).get({ - responseTransformer: tokensGetTokenByIdResponseTransformer, - responseStyle: 'data', - url: '/1/tokens/{tokenId}', - ...options -}); - -/** - * Edit a token - */ -export const tokensEditToken = (options: Options) => (options.client ?? client).patch({ - responseStyle: 'data', - url: '/1/tokens/{tokenId}', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options.headers - } -}); - -/** - * Gets information about the current token used to access this endpoint - */ -export const tokensSelfGetSelfToken = (options?: Options) => (options?.client ?? client).get({ - responseTransformer: tokensSelfGetSelfTokenResponseTransformer, - responseStyle: 'data', - url: '/1/tokens/self', - ...options -}); - -/** - * Endpoint to delete potentially compromised api tokens - */ -export const tokensReportTokens = (options?: Options) => (options?.client ?? client).post({ - responseStyle: 'data', - url: '/1/tokens/report', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options?.headers - } -}); - -/** - * List all tokens for the current user - */ -export const tokensListTokens = (options?: Options) => (options?.client ?? client).get({ - responseTransformer: tokensListTokensResponseTransformer, - responseStyle: 'data', - url: '/1/tokens', - ...options -}); - -/** - * Create a new token - */ -export const tokensCreateToken = (options?: Options) => (options?.client ?? client).post({ - responseTransformer: tokensCreateTokenResponseTransformer, - responseStyle: 'data', - url: '/1/tokens', - ...options, - headers: { - 'Content-Type': 'application/json', - ...options?.headers - } -}); - /** * Activate account */ @@ -484,6 +405,85 @@ export const adminRemoveWebhook = (options: ...options }); +/** + * Revoke a token + */ +export const tokenDeleteDeleteToken = (options: Options) => (options.client ?? client).delete({ + responseStyle: 'data', + url: '/1/tokens/{tokenId}', + ...options +}); + +/** + * Get a token by id + */ +export const tokensGetTokenById = (options: Options) => (options.client ?? client).get({ + responseTransformer: tokensGetTokenByIdResponseTransformer, + responseStyle: 'data', + url: '/1/tokens/{tokenId}', + ...options +}); + +/** + * Edit a token + */ +export const tokensEditToken = (options: Options) => (options.client ?? client).patch({ + responseStyle: 'data', + url: '/1/tokens/{tokenId}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Gets information about the current token used to access this endpoint + */ +export const tokensSelfGetSelfToken = (options?: Options) => (options?.client ?? client).get({ + responseTransformer: tokensSelfGetSelfTokenResponseTransformer, + responseStyle: 'data', + url: '/1/tokens/self', + ...options +}); + +/** + * Endpoint to delete potentially compromised api tokens + */ +export const tokensReportTokens = (options?: Options) => (options?.client ?? client).post({ + responseStyle: 'data', + url: '/1/tokens/report', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options?.headers + } +}); + +/** + * List all tokens for the current user + */ +export const tokensListTokens = (options?: Options) => (options?.client ?? client).get({ + responseTransformer: tokensListTokensResponseTransformer, + responseStyle: 'data', + url: '/1/tokens', + ...options +}); + +/** + * Create a new token + */ +export const tokensCreateToken = (options?: Options) => (options?.client ?? client).post({ + responseTransformer: tokensCreateTokenResponseTransformer, + responseStyle: 'data', + url: '/1/tokens', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options?.headers + } +}); + /** * Gets the best suited LCG node for the client */ @@ -799,9 +799,9 @@ export const shockerGetShockerLogs = (optio }); /** - * Get the logs for all shockers + * Get a paged set of control logs across the caller's shockers. */ -export const shockerGetAllShockerLogs = (options?: Options) => (options?.client ?? client).get({ +export const shockerGetAllShockerLogs = (options?: Options) => (options?.client ?? client).get({ responseTransformer: shockerGetAllShockerLogsResponseTransformer, responseStyle: 'data', url: '/1/shockers/logs', diff --git a/src/lib/api/internal/v1/transformers.gen.ts b/src/lib/api/internal/v1/transformers.gen.ts index bea32b51..c5a95740 100644 --- a/src/lib/api/internal/v1/transformers.gen.ts +++ b/src/lib/api/internal/v1/transformers.gen.ts @@ -2,44 +2,6 @@ import type { AdminConfigurationListResponse, AdminGetOnlineDevicesResponse, AdminGetUsersResponse, AdminListEmailProviderBlacklistResponse, AdminListUsernameBlacklistResponse, AdminListWebhooksResponse, AuthenticatedAccountListOAuthConnectionsResponse, DevicesGetDeviceByIdResponse, DevicesGetShockersResponse, DevicesListDevicesResponse, DevicesOtaGetOtaUpdateHistoryResponse, PublicGetOnlineDevicesStatisticsResponse, PublicGetPublicShareResponse, SessionsGetSelfSessionResponse, SessionsListSessionsResponse, ShareLinksListResponse, ShockerGetAllShockerLogsResponse, ShockerGetShockerByIdResponse, ShockerGetShockerLogsResponse, ShockerGetUserSharesResponse, ShockerListShockersResponse, ShockerShockerShareCodeListResponse, TokensCreateTokenResponse, TokensGetTokenByIdResponse, TokensListTokensResponse, TokensSelfGetSelfTokenResponse, VersionGetBackendInfoResponse } from './types.gen'; -const tokenResponseSchemaResponseTransformer = (data: any) => { - data.createdOn = Temporal.Instant.from(data.createdOn); - if (data.validUntil) { - data.validUntil = Temporal.Instant.from(data.validUntil); - } - data.lastUsed = Temporal.Instant.from(data.lastUsed); - return data; -}; - -export const tokensGetTokenByIdResponseTransformer = async (data: any): Promise => { - data = tokenResponseSchemaResponseTransformer(data); - return data; -}; - -export const tokensSelfGetSelfTokenResponseTransformer = async (data: any): Promise => { - data = tokenResponseSchemaResponseTransformer(data); - return data; -}; - -export const tokensListTokensResponseTransformer = async (data: any): Promise => { - data = data.map((item: any) => tokenResponseSchemaResponseTransformer(item)); - return data; -}; - -const tokenCreatedResponseSchemaResponseTransformer = (data: any) => { - data.createdAt = Temporal.Instant.from(data.createdAt); - if (data.validUntil) { - data.validUntil = Temporal.Instant.from(data.validUntil); - } - data.lastUsed = Temporal.Instant.from(data.lastUsed); - return data; -}; - -export const tokensCreateTokenResponseTransformer = async (data: any): Promise => { - data = tokenCreatedResponseSchemaResponseTransformer(data); - return data; -}; - const oAuthConnectionResponseSchemaResponseTransformer = (data: any) => { data.linkedAt = Temporal.Instant.from(data.linkedAt); return data; @@ -131,6 +93,44 @@ export const adminListWebhooksResponseTransformer = async (data: any): Promise { + data.createdOn = Temporal.Instant.from(data.createdOn); + if (data.validUntil) { + data.validUntil = Temporal.Instant.from(data.validUntil); + } + data.lastUsed = Temporal.Instant.from(data.lastUsed); + return data; +}; + +export const tokensGetTokenByIdResponseTransformer = async (data: any): Promise => { + data = tokenResponseSchemaResponseTransformer(data); + return data; +}; + +export const tokensSelfGetSelfTokenResponseTransformer = async (data: any): Promise => { + data = tokenResponseSchemaResponseTransformer(data); + return data; +}; + +export const tokensListTokensResponseTransformer = async (data: any): Promise => { + data = data.map((item: any) => tokenResponseSchemaResponseTransformer(item)); + return data; +}; + +const tokenCreatedResponseSchemaResponseTransformer = (data: any) => { + data.createdAt = Temporal.Instant.from(data.createdAt); + if (data.validUntil) { + data.validUntil = Temporal.Instant.from(data.validUntil); + } + data.lastUsed = Temporal.Instant.from(data.lastUsed); + return data; +}; + +export const tokensCreateTokenResponseTransformer = async (data: any): Promise => { + data = tokenCreatedResponseSchemaResponseTransformer(data); + return data; +}; + const otaItemSchemaResponseTransformer = (data: any) => { data.startedAt = Temporal.Instant.from(data.startedAt); return data; @@ -321,13 +321,13 @@ const logEntryWithHubSchemaResponseTransformer = (data: any) => { return data; }; -const shockerLogsResponseSchemaResponseTransformer = (data: any) => { - data.logs = data.logs.map((item: any) => logEntryWithHubSchemaResponseTransformer(item)); +const logEntryWithHubPagedResultSchemaResponseTransformer = (data: any) => { + data.items = data.items.map((item: any) => logEntryWithHubSchemaResponseTransformer(item)); return data; }; export const shockerGetAllShockerLogsResponseTransformer = async (data: any): Promise => { - data = shockerLogsResponseSchemaResponseTransformer(data); + data = logEntryWithHubPagedResultSchemaResponseTransformer(data); return data; }; diff --git a/src/lib/api/internal/v1/types.gen.ts b/src/lib/api/internal/v1/types.gen.ts index cc145a2c..24b6f68e 100644 --- a/src/lib/api/internal/v1/types.gen.ts +++ b/src/lib/api/internal/v1/types.gen.ts @@ -336,6 +336,14 @@ export type LogEntryWithHub = { duration: number; }; +export type LogEntryWithHubPagedResult = { + items: Array; + page: number; + pageSize: number; + totalCount: number; + readonly totalPages?: number; +}; + export type Login = { password: string; email: string; @@ -605,10 +613,6 @@ export type ShockerLimits = { duration: number | null; }; -export type ShockerLogsResponse = { - logs: Array; -}; - export const ShockerModelType = { CaiXianlin: 'CaiXianlin', PetTrainer: 'PetTrainer', @@ -665,6 +669,10 @@ export type SignUp = { email: string; }; +export const SortDirection = { Asc: 'Asc', Desc: 'Desc' } as const; + +export type SortDirection = typeof SortDirection[keyof typeof SortDirection]; + export type StatsResponse = { devicesOnline: bigint; }; @@ -761,6 +769,13 @@ export type WebhookDto = { createdAt: Temporal.Instant; }; +export type LogEntryWithHubPagedResultWritable = { + items: Array; + page: number; + pageSize: number; + totalCount: number; +}; + export type OpenShockProblemWritable = { type?: string | null; title?: string | null; @@ -770,149 +785,6 @@ export type OpenShockProblemWritable = { [key: string]: unknown; }; -export type TokenDeleteDeleteTokenData = { - body?: never; - path: { - tokenId: string; - }; - query?: never; - url: '/1/tokens/{tokenId}'; -}; - -export type TokenDeleteDeleteTokenErrors = { - /** - * Api Token is not allowed to delete other Api Tokens - */ - 403: ProblemDetails; - /** - * The token does not exist, or you do not have access to it - */ - 404: OpenShockProblem; -}; - -export type TokenDeleteDeleteTokenError = TokenDeleteDeleteTokenErrors[keyof TokenDeleteDeleteTokenErrors]; - -export type TokenDeleteDeleteTokenResponses = { - /** - * Successfully deleted token - */ - 200: unknown; -}; - -export type TokensGetTokenByIdData = { - body?: never; - path: { - tokenId: string; - }; - query?: never; - url: '/1/tokens/{tokenId}'; -}; - -export type TokensGetTokenByIdErrors = { - /** - * The token does not exist or you do not have access to it. - */ - 404: OpenShockProblem; -}; - -export type TokensGetTokenByIdError = TokensGetTokenByIdErrors[keyof TokensGetTokenByIdErrors]; - -export type TokensGetTokenByIdResponses = { - /** - * The token - */ - 200: TokenResponse; -}; - -export type TokensGetTokenByIdResponse = TokensGetTokenByIdResponses[keyof TokensGetTokenByIdResponses]; - -export type TokensEditTokenData = { - body?: EditTokenRequest; - path: { - tokenId: string; - }; - query?: never; - url: '/1/tokens/{tokenId}'; -}; - -export type TokensEditTokenErrors = { - /** - * The token does not exist or you do not have access to it. - */ - 404: OpenShockProblem; -}; - -export type TokensEditTokenError = TokensEditTokenErrors[keyof TokensEditTokenErrors]; - -export type TokensEditTokenResponses = { - /** - * The edited token - */ - 200: unknown; -}; - -export type TokensSelfGetSelfTokenData = { - body?: never; - path?: never; - query?: never; - url: '/1/tokens/self'; -}; - -export type TokensSelfGetSelfTokenResponses = { - /** - * OK - */ - 200: TokenResponse; -}; - -export type TokensSelfGetSelfTokenResponse = TokensSelfGetSelfTokenResponses[keyof TokensSelfGetSelfTokenResponses]; - -export type TokensReportTokensData = { - body?: ReportTokensRequest; - path?: never; - query?: never; - url: '/1/tokens/report'; -}; - -export type TokensReportTokensResponses = { - /** - * The tokens were deleted if found - */ - 200: unknown; -}; - -export type TokensListTokensData = { - body?: never; - path?: never; - query?: never; - url: '/1/tokens'; -}; - -export type TokensListTokensResponses = { - /** - * All tokens for the current user - */ - 200: Array; -}; - -export type TokensListTokensResponse = TokensListTokensResponses[keyof TokensListTokensResponses]; - -export type TokensCreateTokenData = { - body?: CreateTokenRequest; - path?: never; - query?: never; - url: '/1/tokens'; -}; - -export type TokensCreateTokenResponses = { - /** - * The created token - */ - 200: TokenCreatedResponse; -}; - -export type TokensCreateTokenResponse = TokensCreateTokenResponses[keyof TokensCreateTokenResponses]; - export type AccountActivateData = { body?: never; path?: never; @@ -1858,6 +1730,149 @@ export type AdminRemoveWebhookResponses = { 200: unknown; }; +export type TokenDeleteDeleteTokenData = { + body?: never; + path: { + tokenId: string; + }; + query?: never; + url: '/1/tokens/{tokenId}'; +}; + +export type TokenDeleteDeleteTokenErrors = { + /** + * Api Token is not allowed to delete other Api Tokens + */ + 403: ProblemDetails; + /** + * The token does not exist, or you do not have access to it + */ + 404: OpenShockProblem; +}; + +export type TokenDeleteDeleteTokenError = TokenDeleteDeleteTokenErrors[keyof TokenDeleteDeleteTokenErrors]; + +export type TokenDeleteDeleteTokenResponses = { + /** + * Successfully deleted token + */ + 200: unknown; +}; + +export type TokensGetTokenByIdData = { + body?: never; + path: { + tokenId: string; + }; + query?: never; + url: '/1/tokens/{tokenId}'; +}; + +export type TokensGetTokenByIdErrors = { + /** + * The token does not exist or you do not have access to it. + */ + 404: OpenShockProblem; +}; + +export type TokensGetTokenByIdError = TokensGetTokenByIdErrors[keyof TokensGetTokenByIdErrors]; + +export type TokensGetTokenByIdResponses = { + /** + * The token + */ + 200: TokenResponse; +}; + +export type TokensGetTokenByIdResponse = TokensGetTokenByIdResponses[keyof TokensGetTokenByIdResponses]; + +export type TokensEditTokenData = { + body?: EditTokenRequest; + path: { + tokenId: string; + }; + query?: never; + url: '/1/tokens/{tokenId}'; +}; + +export type TokensEditTokenErrors = { + /** + * The token does not exist or you do not have access to it. + */ + 404: OpenShockProblem; +}; + +export type TokensEditTokenError = TokensEditTokenErrors[keyof TokensEditTokenErrors]; + +export type TokensEditTokenResponses = { + /** + * The edited token + */ + 200: unknown; +}; + +export type TokensSelfGetSelfTokenData = { + body?: never; + path?: never; + query?: never; + url: '/1/tokens/self'; +}; + +export type TokensSelfGetSelfTokenResponses = { + /** + * OK + */ + 200: TokenResponse; +}; + +export type TokensSelfGetSelfTokenResponse = TokensSelfGetSelfTokenResponses[keyof TokensSelfGetSelfTokenResponses]; + +export type TokensReportTokensData = { + body?: ReportTokensRequest; + path?: never; + query?: never; + url: '/1/tokens/report'; +}; + +export type TokensReportTokensResponses = { + /** + * The tokens were deleted if found + */ + 200: unknown; +}; + +export type TokensListTokensData = { + body?: never; + path?: never; + query?: never; + url: '/1/tokens'; +}; + +export type TokensListTokensResponses = { + /** + * All tokens for the current user + */ + 200: Array; +}; + +export type TokensListTokensResponse = TokensListTokensResponses[keyof TokensListTokensResponses]; + +export type TokensCreateTokenData = { + body?: CreateTokenRequest; + path?: never; + query?: never; + url: '/1/tokens'; +}; + +export type TokensCreateTokenResponses = { + /** + * The created token + */ + 200: TokenCreatedResponse; +}; + +export type TokensCreateTokenResponse = TokensCreateTokenResponses[keyof TokensCreateTokenResponses]; + export type DeviceGetLiveControlGatewayData = { body?: never; path?: never; @@ -2677,26 +2692,24 @@ export type ShockerGetAllShockerLogsData = { body?: never; path?: never; query?: { - offset?: number; - limit?: number; + page?: number; + pageSize?: number; + search?: string; + sort?: string; + sortDir?: SortDirection; + /** + * Optional shocker ID filter. When omitted or empty, logs for all of the caller's shockers are returned. + */ + shockerIds?: Array; }; url: '/1/shockers/logs'; }; -export type ShockerGetAllShockerLogsErrors = { - /** - * Shocker does not exist - */ - 404: OpenShockProblem; -}; - -export type ShockerGetAllShockerLogsError = ShockerGetAllShockerLogsErrors[keyof ShockerGetAllShockerLogsErrors]; - export type ShockerGetAllShockerLogsResponses = { /** - * The logs + * A page of logs. */ - 200: ShockerLogsResponse; + 200: LogEntryWithHubPagedResult; }; export type ShockerGetAllShockerLogsResponse = ShockerGetAllShockerLogsResponses[keyof ShockerGetAllShockerLogsResponses]; diff --git a/src/lib/api/internal/v2/client/client.gen.ts b/src/lib/api/internal/v2/client/client.gen.ts index 377b6c9e..fc3f037f 100644 --- a/src/lib/api/internal/v2/client/client.gen.ts +++ b/src/lib/api/internal/v2/client/client.gen.ts @@ -48,10 +48,7 @@ export const createClient = (config: Config = {}): Client => { }; if (opts.security) { - await setAuthParams({ - ...opts, - security: opts.security, - }); + await setAuthParams(opts); } if (opts.requestValidator) { diff --git a/src/lib/api/internal/v2/client/utils.gen.ts b/src/lib/api/internal/v2/client/utils.gen.ts index eb0164fa..7800fe4b 100644 --- a/src/lib/api/internal/v2/client/utils.gen.ts +++ b/src/lib/api/internal/v2/client/utils.gen.ts @@ -118,14 +118,12 @@ const checkForExistence = ( return false; }; -export const setAuthParams = async ({ - security, - ...options -}: Pick, 'security'> & - Pick & { +export async function setAuthParams( + options: Pick & { headers: Headers; - }) => { - for (const auth of security) { + }, +): Promise { + for (const auth of options.security ?? []) { if (checkForExistence(options, auth.name)) { continue; } @@ -154,7 +152,7 @@ export const setAuthParams = async ({ break; } } -}; +} export const buildUrl: Client['buildUrl'] = (options) => getUrl({ diff --git a/src/routes/(app)/shockers/logs/+page.svelte b/src/routes/(app)/shockers/logs/+page.svelte index 8b0d459c..8bb42efb 100644 --- a/src/routes/(app)/shockers/logs/+page.svelte +++ b/src/routes/(app)/shockers/logs/+page.svelte @@ -12,30 +12,69 @@ RenderCell, } from '$lib/components/Table/ColumnUtils'; import DataTable from '$lib/components/Table/DataTableTemplate.svelte'; + import PaginationFooter from '$lib/components/Table/PaginationFooter.svelte'; import * as Card from '$lib/components/ui/card'; import { registerBreadcrumbs } from '$lib/state/breadcrumbs-state.svelte'; import { addShockEventListener, removeShockEventListener } from '$lib/signalr/handlers/Log'; import { ControlType } from '$lib/signalr/models/ControlType'; import { ownHubs, refreshOwnHubs } from '$lib/state/hubs-state.svelte'; - registerBreadcrumbs(() => [{ label: 'Shocker Logs' }]); + + registerBreadcrumbs(() => [ + { label: 'Shockers', href: '/shockers/own' }, + { label: 'Shocker Logs' }, + ]); + + const DEFAULT_SORT_ID = 'createdOn'; let logs = $state([]); - let sorting = $state([{ id: 'createdOn', desc: true }]); + let sorting = $state([{ id: DEFAULT_SORT_ID, desc: true }]); + + let isFetching = $state(false); + let requestedPage = $state(1); + let pageSize = $state(100); + let page = $state(1); + let total = $state(0); + + const sortQuery = $derived(sorting.length > 0 ? sorting[0] : undefined); + // Live updates only make sense on page 1 with the default newest-first sort, + // otherwise prepending breaks the user's chosen ordering / page slice. + const liveUpdatesActive = $derived( + page === 1 && (!sortQuery || (sortQuery.id === DEFAULT_SORT_ID && sortQuery.desc)) + ); + + $effect(() => { + const requested = requestedPage; + const sort = sortQuery; + const size = pageSize; + + isFetching = true; + shockerGetAllShockerLogs({ + query: { + page: requested, + pageSize: size, + sort: sort?.id, + sortDir: sort ? (sort.desc ? 'Desc' : 'Asc') : undefined, + }, + }) + .then((res) => { + logs = res.items; + page = res.page; + pageSize = res.pageSize; + total = res.totalCount; + }) + .catch(handleApiError) + .finally(() => (isFetching = false)); + }); onMount(() => { const listenerId = crypto.randomUUID(); - (async () => { - try { - const [res] = await Promise.all([shockerGetAllShockerLogs(), refreshOwnHubs()]); - logs = res.logs ?? []; - } catch (error) { - await handleApiError(error); - } - })(); + refreshOwnHubs().catch(handleApiError); addShockEventListener(listenerId, null, (sender, log) => { + if (!liveUpdatesActive) return; + let hubId = ''; let hubName = ''; for (const [id, hub] of ownHubs) { @@ -63,7 +102,8 @@ intensity: log.intensity, duration: log.duration, }; - logs = [entry, ...logs]; + logs = [entry, ...logs.slice(0, pageSize - 1)]; + total += 1; }); return () => { @@ -93,5 +133,11 @@
+ page, (p) => (requestedPage = p)} + disabled={isFetching} + />
- + \ No newline at end of file diff --git a/src/routes/(app)/shockers/logs/[shockerId=guid]/+page.svelte b/src/routes/(app)/shockers/logs/[shockerId=guid]/+page.svelte deleted file mode 100644 index c397a255..00000000 --- a/src/routes/(app)/shockers/logs/[shockerId=guid]/+page.svelte +++ /dev/null @@ -1,102 +0,0 @@ - - - - - -
- Shocker Logs -
-
- - These are the logs for {shocker?.name}. - -
-
- -
-
From 49d7cb1a02e876bb53641588cf8e92944ab85046 Mon Sep 17 00:00:00 2001 From: LucHeart Date: Fri, 29 May 2026 02:21:51 +0200 Subject: [PATCH 2/7] add shocker select --- src/routes/(app)/shockers/logs/+page.svelte | 56 +++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/routes/(app)/shockers/logs/+page.svelte b/src/routes/(app)/shockers/logs/+page.svelte index 8bb42efb..ab4db604 100644 --- a/src/routes/(app)/shockers/logs/+page.svelte +++ b/src/routes/(app)/shockers/logs/+page.svelte @@ -13,7 +13,9 @@ } from '$lib/components/Table/ColumnUtils'; import DataTable from '$lib/components/Table/DataTableTemplate.svelte'; import PaginationFooter from '$lib/components/Table/PaginationFooter.svelte'; + import Button from '$lib/components/ui/button/button.svelte'; import * as Card from '$lib/components/ui/card'; + import * as Select from '$lib/components/ui/select'; import { registerBreadcrumbs } from '$lib/state/breadcrumbs-state.svelte'; import { addShockEventListener, removeShockEventListener } from '$lib/signalr/handlers/Log'; import { ControlType } from '$lib/signalr/models/ControlType'; @@ -36,6 +38,27 @@ let page = $state(1); let total = $state(0); + // Empty = no filter (logs for all of the caller's shockers). + let selectedShockerIds = $state([]); + + const filterLabel = $derived.by(() => { + if (selectedShockerIds.length === 0) return 'All shockers'; + if (selectedShockerIds.length === 1) { + for (const hub of ownHubs.values()) { + const shocker = hub.shockers.find((s) => s.id === selectedShockerIds[0]); + if (shocker) return shocker.name; + } + return '1 shocker'; + } + return `${selectedShockerIds.length} shockers`; + }); + + // Reset to the first page whenever the filter changes so we never land on an + // out-of-range page for the narrowed result set. + function onFilterChange() { + requestedPage = 1; + } + const sortQuery = $derived(sorting.length > 0 ? sorting[0] : undefined); // Live updates only make sense on page 1 with the default newest-first sort, // otherwise prepending breaks the user's chosen ordering / page slice. @@ -47,6 +70,7 @@ const requested = requestedPage; const sort = sortQuery; const size = pageSize; + const shockerIds = selectedShockerIds; isFetching = true; shockerGetAllShockerLogs({ @@ -55,6 +79,7 @@ pageSize: size, sort: sort?.id, sortDir: sort ? (sort.desc ? 'Desc' : 'Asc') : undefined, + shockerIds: shockerIds.length > 0 ? shockerIds : undefined, }, }) .then((res) => { @@ -74,6 +99,8 @@ addShockEventListener(listenerId, null, (sender, log) => { if (!liveUpdatesActive) return; + // Honour the active shocker filter for live entries too. + if (selectedShockerIds.length > 0 && !selectedShockerIds.includes(log.shocker.id)) return; let hubId = ''; let hubName = ''; @@ -132,6 +159,35 @@ These are the logs for all shockers.
+
+ + {filterLabel} + + {#each [...ownHubs.values()] as hub (hub.id)} + {#if hub.shockers.length > 0} + + {hub.name} + {#each hub.shockers as shocker (shocker.id)} + {shocker.name} + {/each} + + {/if} + {/each} + + + {#if selectedShockerIds.length > 0} + + {/if} +
Date: Sat, 30 May 2026 01:52:01 +0200 Subject: [PATCH 3/7] make look better :) --- .../ControlModules/impl/ShockerMenu.svelte | 2 +- .../components/Table/DataTableTemplate.svelte | 5 +- src/lib/utils/urlFilters.svelte.ts | 146 ++++++++++++++++++ src/routes/(app)/shockers/logs/+page.svelte | 139 +++++++++++------ 4 files changed, 239 insertions(+), 53 deletions(-) create mode 100644 src/lib/utils/urlFilters.svelte.ts diff --git a/src/lib/components/ControlModules/impl/ShockerMenu.svelte b/src/lib/components/ControlModules/impl/ShockerMenu.svelte index 16ba9fe9..bddbfdc0 100644 --- a/src/lib/components/ControlModules/impl/ShockerMenu.svelte +++ b/src/lib/components/ControlModules/impl/ShockerMenu.svelte @@ -20,7 +20,7 @@ let pauseLoading = $state(false); function viewLogs() { - goto(resolve(`/shockers/logs/${shocker.id}`)); + goto(resolve(`/shockers/logs?shockerId=${shocker.id}`)); } function editShocker() { diff --git a/src/lib/components/Table/DataTableTemplate.svelte b/src/lib/components/Table/DataTableTemplate.svelte index bc0d374d..d37bf0f8 100644 --- a/src/lib/components/Table/DataTableTemplate.svelte +++ b/src/lib/components/Table/DataTableTemplate.svelte @@ -11,6 +11,7 @@ } from '@tanstack/table-core'; import { FlexRender, createSvelteTable } from '$lib/components/ui/data-table'; import * as Table from '$lib/components/ui/table'; + import { cn } from '$lib/utils'; interface Props { data: TData[]; @@ -19,6 +20,7 @@ filters?: ColumnFiltersState; pagination?: PaginationState; onRowClick?: (row: TData) => void; + class?: string; } let { @@ -28,6 +30,7 @@ filters = $bindable(), pagination = $bindable(), onRowClick, + class: className, }: Props = $props(); const table = createSvelteTable({ @@ -78,7 +81,7 @@ }); -
+
{#each table.getHeaderGroups() as headerGroup (headerGroup.id)} diff --git a/src/lib/utils/urlFilters.svelte.ts b/src/lib/utils/urlFilters.svelte.ts new file mode 100644 index 00000000..42bb4d75 --- /dev/null +++ b/src/lib/utils/urlFilters.svelte.ts @@ -0,0 +1,146 @@ +import { goto } from '$app/navigation'; +import { page } from '$app/state'; +import { untrack } from 'svelte'; + +type ParamTypeMap = { + number: number; + string: string; +}; + +export type ParamDef = { + [K in keyof ParamTypeMap]: { + type: K; + default?: ParamTypeMap[K] | null; + }; +}[keyof ParamTypeMap]; + +// Resolved value type for a single param definition: +// - `{ type: 'number' }` → number | undefined +// - `{ type: 'number', default: null }` → number | null | undefined +// - `{ type: 'string' }` → string | undefined +type FilterValueFor = null extends D['default'] + ? ParamTypeMap[D['type']] | null | undefined + : ParamTypeMap[D['type']] | undefined; + +export type FilterState> = { + -readonly [K in keyof T]: FilterValueFor; +}; + +// Internal broadest value type used in records that mix all param kinds +type FilterValue = string | number | null | undefined; + +// Sentinel used to represent null in URL params and localStorage +const NULL_SENTINEL = '__null__'; + +function parseValue( + type: ParamDef['type'], + raw: string | null, + defaultValue?: FilterValue +): FilterValue { + if (raw === null || raw === '') return defaultValue; + if (raw === NULL_SENTINEL) return null; + + if (type === 'number') { + const n = Number(raw); + return isNaN(n) ? defaultValue : n; + } + + return raw; +} + +/** + * Creates a reactive filter state object that syncs bidirectionally with URL query parameters. + * + * Must be called at component initialisation time (top-level in a
diff --git a/src/routes/(app)/shockers/own/+page.svelte b/src/routes/(app)/shockers/own/+page.svelte index 006b7eca..3538555d 100644 --- a/src/routes/(app)/shockers/own/+page.svelte +++ b/src/routes/(app)/shockers/own/+page.svelte @@ -157,6 +157,7 @@ {showHubBadge} isPaused={shocker.isPaused} resume={() => ownResume(shocker.id)} + class="w-full" > {#snippet live()} @@ -314,11 +315,11 @@ {#if !isTruthy(PUBLIC_DISABLE_SHOCKER_MAP) && moduleType === ModuleType.MapControlModule} {:else if groupByHub.value} -
+
{#each Array.from(ownHubs) as [hubId, hub] (hubId)} {@const online = onlineHubs.get(hubId)?.isOnline ?? false} {@const shockerCount = hub.shockers.length} -
+
-
+
{#each hub.shockers as shocker (shocker.id)} {@render shockerCard(shocker, hubId, false)} {/each} @@ -338,7 +339,7 @@ {/each}
{:else} -
+
{#each flatShockers as { shocker, hubId } (shocker.id)} {@render shockerCard(shocker, hubId, true)} {/each} From 06de9646d563410bc34b8670af36885b151e6e24 Mon Sep 17 00:00:00 2001 From: LucHeart Date: Mon, 1 Jun 2026 00:20:03 +0200 Subject: [PATCH 5/7] fix potential issue --- src/routes/(app)/shockers/logs/+page.svelte | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/routes/(app)/shockers/logs/+page.svelte b/src/routes/(app)/shockers/logs/+page.svelte index ffec3e2e..ce6cfe95 100644 --- a/src/routes/(app)/shockers/logs/+page.svelte +++ b/src/routes/(app)/shockers/logs/+page.svelte @@ -38,6 +38,10 @@ let page = $state(1); let total = $state(0); + // Monotonic token so out-of-order responses are discarded: only the most + // recently issued request is allowed to apply its result. + let fetchToken = 0; + // Row metrics — rows are single-line (whitespace-nowrap), so heights are // stable and we can size pages off them without measuring each row. const HEADER_HEIGHT = 40; // Table.Head (h-10) @@ -101,6 +105,7 @@ const size = pageSize; const shockerIds = selectedShockerIds; + const token = ++fetchToken; isFetching = true; shockerGetAllShockerLogs({ query: { @@ -112,12 +117,19 @@ }, }) .then((res) => { + // Discard responses superseded by a newer request. + if (token !== fetchToken) return; logs = res.items; page = res.page; total = res.totalCount; }) - .catch(handleApiError) - .finally(() => (isFetching = false)); + .catch((err) => { + if (token !== fetchToken) return; + handleApiError(err); + }) + .finally(() => { + if (token === fetchToken) isFetching = false; + }); }); onMount(() => { From 9d9b345f57128bc8561a556ee04f150ab7b1b649 Mon Sep 17 00:00:00 2001 From: LucHeart Date: Mon, 1 Jun 2026 01:16:23 +0200 Subject: [PATCH 6/7] fix logs page --- src/lib/components/Container.svelte | 2 +- src/routes/(app)/shockers/logs/+page.svelte | 40 +++++++++++++++------ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/lib/components/Container.svelte b/src/lib/components/Container.svelte index c024c96a..d8a15ad6 100644 --- a/src/lib/components/Container.svelte +++ b/src/lib/components/Container.svelte @@ -12,7 +12,7 @@
diff --git a/src/routes/(app)/shockers/logs/+page.svelte b/src/routes/(app)/shockers/logs/+page.svelte index ce6cfe95..357d99f1 100644 --- a/src/routes/(app)/shockers/logs/+page.svelte +++ b/src/routes/(app)/shockers/logs/+page.svelte @@ -46,17 +46,37 @@ // stable and we can size pages off them without measuring each row. const HEADER_HEIGHT = 40; // Table.Head (h-10) const ROW_HEIGHT = 37; // td p-2 (16) + text-sm line (20) + border-b (1) + // The pagination footer and the gap above it share the measured area with the + // table, so subtract them when working out how many rows actually fit. + const FOOTER_ALLOWANCE = 64; // pagination footer (~40) + gap-6 (24) const MIN_PAGE_SIZE = 10; const DEFAULT_PAGE_SIZE = 25; // used before the viewport has been measured // Height available to the table, measured from the DOM (see markup binding). + // The raw value updates continuously while resizing; we debounce it into + // `settledViewportHeight` so pageSize (and the fetch it drives) only reacts + // once the resize settles, instead of firing a request per pixel. let tableViewportHeight = $state(0); + let settledViewportHeight = $state(0); + + $effect(() => { + const height = tableViewportHeight; + if (settledViewportHeight === 0) { + // Apply the first real measurement immediately so we don't sit on the + // default page size for a debounce interval on initial load. + settledViewportHeight = height; + return; + } + const timeout = setTimeout(() => (settledViewportHeight = height), 150); + return () => clearTimeout(timeout); + }); // Fit as many rows as the viewport allows (clamped to a sane minimum) so the // table fills the screen and we request exactly the page size we can show. const pageSize = $derived.by(() => { - if (tableViewportHeight <= 0) return DEFAULT_PAGE_SIZE; - const rows = Math.floor((tableViewportHeight - HEADER_HEIGHT) / ROW_HEIGHT); + if (settledViewportHeight <= 0) return DEFAULT_PAGE_SIZE; + const usable = settledViewportHeight - HEADER_HEIGHT - FOOTER_ALLOWANCE; + const rows = Math.floor(usable / ROW_HEIGHT); return Math.max(MIN_PAGE_SIZE, rows); }); @@ -235,14 +255,14 @@ {/if}
-
- +
+ + page, (p) => (requestedPage = p)} + disabled={isFetching} + />
- page, (p) => (requestedPage = p)} - disabled={isFetching} - />
From 7f79d8daf4e43e9193328654f45306396a2925ea Mon Sep 17 00:00:00 2001 From: LucHeart Date: Mon, 1 Jun 2026 01:16:39 +0200 Subject: [PATCH 7/7] oops --- src/routes/(app)/shockers/logs/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(app)/shockers/logs/+page.svelte b/src/routes/(app)/shockers/logs/+page.svelte index 357d99f1..a73e0153 100644 --- a/src/routes/(app)/shockers/logs/+page.svelte +++ b/src/routes/(app)/shockers/logs/+page.svelte @@ -256,7 +256,7 @@ {/if}
- +