flora is a fast and secure runtime that lets you write discord bots for your servers, with a rich TypeScript SDK, without worrying about running infrastructure. [mirror]
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: use `@hey-api/openapi-ts` for api-client codegen

+7306 -7211
-1
apps/frontend/package.json
··· 49 49 "lucide-react": "^0.562.0", 50 50 "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@28.0.1", 51 51 "motion": "12.35.0", 52 - "openapi-react-query": "^0.5.1", 53 52 "react": "^19.2.0", 54 53 "react-dom": "^19.2.0", 55 54 "react-grab": "0.1.25",
+8 -1
apps/frontend/src/components/features/DeploymentHistory.tsx
··· 223 223 variant='outline' 224 224 disabled={rollbackMutation.isPending || selectedRevision.status !== 'success'} 225 225 onClick={() => { 226 - if (selectedRevision.id) rollbackMutation.mutate(selectedRevision.id) 226 + if (selectedRevision.id) { 227 + rollbackMutation.mutate({ 228 + path: { 229 + guild_id: guildId, 230 + revision_id: selectedRevision.id 231 + } 232 + }) 233 + } 227 234 }} 228 235 > 229 236 {rollbackMutation.isPending ? (
+10 -17
apps/frontend/src/components/features/KvManager.tsx
··· 18 18 } from '@/data/mutations' 19 19 import { useKvKeysQuery, useKvStoresQuery, useKvValueQuery } from '@/data/queries' 20 20 import { cn } from '@/lib/utils' 21 - import type { components } from '@uwu/flora-api-client' 21 + import type { KvStore, RawKvKeyInfo } from '@uwu/flora-api-client' 22 22 import { Database, KeyRound, Plus, RefreshCw, Trash2 } from 'lucide-react' 23 23 import { useMemo, useState } from 'react' 24 - 25 - type KvStore = components['schemas']['KvStore'] 26 - type RawKvKeyInfo = components['schemas']['RawKvKeyInfo'] 27 24 28 25 function formatExpiration(expiration?: number | null) { 29 26 if (!expiration) return 'never' ··· 168 165 setError(null) 169 166 if (!confirm(`Delete store ${store.store_name}? This removes all keys.`)) return 170 167 void deleteStoreMutation.mutateAsync({ 171 - params: { path: { guild_id: store.guild_id, store_name: store.store_name } } 168 + path: { guild_id: store.guild_id, store_name: store.store_name } 172 169 }) 173 170 } 174 171 ··· 217 214 } 218 215 219 216 void setKeyMutation.mutateAsync({ 220 - params: { 221 - path: { 222 - guild_id: guildId, 223 - store_name: activeStore, 224 - key: name 225 - } 217 + path: { 218 + guild_id: guildId, 219 + store_name: activeStore, 220 + key: name 226 221 }, 227 222 body: { 228 223 value: resolvedKeyValue, ··· 237 232 if (!activeStore) return 238 233 if (!confirm(`Delete key ${keyInfo.name}?`)) return 239 234 void deleteKeyMutation.mutateAsync({ 240 - params: { 241 - path: { 242 - guild_id: guildId, 243 - store_name: activeStore, 244 - key: keyInfo.name 245 - } 235 + path: { 236 + guild_id: guildId, 237 + store_name: activeStore, 238 + key: keyInfo.name 246 239 } 247 240 }) 248 241 }
+1 -1
apps/frontend/src/components/features/TokenManager.tsx
··· 70 70 71 71 const handleDeleteToken = (tokenId: string) => { 72 72 setError(null) 73 - return deleteTokenMutation.mutateAsync({ params: { path: { token_id: tokenId } } }) 73 + return deleteTokenMutation.mutateAsync({ path: { token_id: tokenId } }) 74 74 } 75 75 76 76 return (
+1 -3
apps/frontend/src/components/sidebar/nav-user.tsx
··· 17 17 useSidebar 18 18 } from '@/components/ui/sidebar' 19 19 import { useTheme } from '@/lib/theme' 20 - import type { components } from '@uwu/flora-api-client' 20 + import type { AuthUser } from '@uwu/flora-api-client' 21 21 import { ChevronsUpDown, LogOut, Moon, Settings, Sun } from 'lucide-react' 22 - 23 - type AuthUser = components['schemas']['AuthUser'] 24 22 25 23 interface NavUserProps { 26 24 user: AuthUser
+9 -5
apps/frontend/src/contexts/AppContext.tsx
··· 1 1 import { authSessionQueryOptions, guildsQueryOptions, tokensQueryOptions } from '@/data/queries' 2 2 import { queryClient } from '@/lib/openapi-client' 3 - import type { components } from '@uwu/flora-api-client' 3 + import type { 4 + AuthUser, 5 + DeploymentResponse, 6 + GuildResponse, 7 + TokenResponse 8 + } from '@uwu/flora-api-client' 4 9 import { createContext, type ReactNode, useCallback, useContext, useEffect, useState } from 'react' 5 10 6 - type AuthUser = components['schemas']['AuthUser'] 7 - type Deployment = components['schemas']['DeploymentResponse'] 8 - type Guild = components['schemas']['GuildResponse'] 9 - type Token = components['schemas']['TokenResponse'] 11 + type Deployment = DeploymentResponse 12 + type Guild = GuildResponse 13 + type Token = TokenResponse 10 14 11 15 type LoadState<T> = { 12 16 data: T | null
+4 -23
apps/frontend/src/data/deployments/types.ts
··· 1 - export type DeploymentChangeSummary = { 2 - added_files: number 3 - removed_files: number 4 - modified_files: number 5 - } 1 + import type { DeploymentChangeSummary, DeploymentRevisionResponse } from '@uwu/flora-api-client' 6 2 7 - export type DeploymentRevision = { 8 - id: string 9 - guild_id: string 10 - entry: string 11 - status: string 12 - deployed_at: string 13 - deploy_source: string 14 - actor: { 15 - user_id?: string | null 16 - username?: string | null 17 - actor_type: string 18 - } 19 - error_message?: string | null 20 - build_id?: string | null 21 - base_revision_id?: string | null 22 - change_summary?: DeploymentChangeSummary | null 23 - files?: Array<{ path: string; contents: string }> | null 24 - } 3 + export type { DeploymentChangeSummary } 4 + 5 + export type DeploymentRevision = DeploymentRevisionResponse
+28 -12
apps/frontend/src/data/mutations/deployment-history.ts
··· 1 1 import { useMutation, useQueryClient } from '@tanstack/react-query' 2 + import { 3 + rollbackDeploymentHandlerMutation, 4 + type RollbackDeploymentHandlerResponse 5 + } from '@uwu/flora-api-client' 2 6 3 - import { requestJson } from '@/data/api/request' 4 - import type { DeploymentRevision } from '@/data/deployments/types' 7 + type ApiQueryKey = { 8 + _id?: string 9 + path?: { 10 + guild_id?: string 11 + } 12 + } 13 + 14 + function isApiQueryKey(value: unknown): value is ApiQueryKey { 15 + return typeof value === 'object' && value !== null 16 + } 5 17 6 18 export const useRollbackDeploymentMutation = ( 7 19 guildId: string, 8 - onSuccess?: (revision: DeploymentRevision) => void 20 + onSuccess?: (revision: RollbackDeploymentHandlerResponse) => void 9 21 ) => { 10 22 const queryClient = useQueryClient() 11 23 12 24 return useMutation({ 13 - mutationFn: async (revisionId: string) => 14 - requestJson<DeploymentRevision>( 15 - `/deployments/${encodeURIComponent(guildId)}/rollback/${revisionId}`, 16 - { 17 - method: 'POST' 18 - } 19 - ), 25 + ...rollbackDeploymentHandlerMutation(), 20 26 onSuccess: async (revision) => { 21 27 onSuccess?.(revision) 22 - await queryClient.invalidateQueries({ queryKey: ['deployment-history', guildId] }) 23 - await queryClient.invalidateQueries({ queryKey: ['deployment-revision', guildId] }) 28 + 29 + await queryClient.invalidateQueries({ 30 + predicate: (query) => { 31 + const queryKey = query.queryKey[0] 32 + if (!isApiQueryKey(queryKey)) return false 33 + if (queryKey.path?.guild_id !== guildId) return false 34 + return ( 35 + queryKey._id === 'listDeploymentHistoryHandler' || 36 + queryKey._id === 'getDeploymentRevisionHandler' 37 + ) 38 + } 39 + }) 24 40 } 25 41 }) 26 42 }
+9 -2
apps/frontend/src/data/mutations/deployments.ts
··· 1 - import { $api } from '@/lib/openapi-client' 1 + import { useMutation } from '@tanstack/react-query' 2 + import { upsertDeploymentHandlerMutation } from '@uwu/flora-api-client' 2 3 3 - export const useDeployMutation = () => $api.useMutation('post', '/deployments/{guild_id}') 4 + type DeployMutationOptions = Omit<ReturnType<typeof upsertDeploymentHandlerMutation>, 'mutationFn'> 5 + 6 + export const useDeployMutation = (options?: DeployMutationOptions) => 7 + useMutation({ 8 + ...upsertDeploymentHandlerMutation(), 9 + ...options 10 + })
+38 -9
apps/frontend/src/data/mutations/kv.ts
··· 1 - import { $api } from '@/lib/openapi-client' 1 + import { useMutation } from '@tanstack/react-query' 2 + import { 3 + createStoreHandlerMutation, 4 + deleteKeyHandlerMutation, 5 + deleteStoreHandlerMutation, 6 + setValueHandlerMutation 7 + } from '@uwu/flora-api-client' 2 8 3 - export const useCreateKvStoreMutation = (options?: any) => 4 - $api.useMutation('post', '/kv/stores', options as any) 9 + type CreateKvStoreMutationOptions = Omit< 10 + ReturnType<typeof createStoreHandlerMutation>, 11 + 'mutationFn' 12 + > 13 + type DeleteKvStoreMutationOptions = Omit< 14 + ReturnType<typeof deleteStoreHandlerMutation>, 15 + 'mutationFn' 16 + > 17 + type SetKvKeyMutationOptions = Omit<ReturnType<typeof setValueHandlerMutation>, 'mutationFn'> 18 + type DeleteKvKeyMutationOptions = Omit<ReturnType<typeof deleteKeyHandlerMutation>, 'mutationFn'> 19 + 20 + export const useCreateKvStoreMutation = (options?: CreateKvStoreMutationOptions) => 21 + useMutation({ 22 + ...createStoreHandlerMutation(), 23 + ...options 24 + }) 5 25 6 - export const useDeleteKvStoreMutation = (options?: any) => 7 - $api.useMutation('delete', '/kv/stores/{guild_id}/{store_name}', options as any) 26 + export const useDeleteKvStoreMutation = (options?: DeleteKvStoreMutationOptions) => 27 + useMutation({ 28 + ...deleteStoreHandlerMutation(), 29 + ...options 30 + }) 8 31 9 - export const useSetKvKeyMutation = (options?: any) => 10 - $api.useMutation('put', '/kv/{guild_id}/{store_name}/{key}', options as any) 32 + export const useSetKvKeyMutation = (options?: SetKvKeyMutationOptions) => 33 + useMutation({ 34 + ...setValueHandlerMutation(), 35 + ...options 36 + }) 11 37 12 - export const useDeleteKvKeyMutation = (options?: any) => 13 - $api.useMutation('delete', '/kv/{guild_id}/{store_name}/{key}', options as any) 38 + export const useDeleteKvKeyMutation = (options?: DeleteKvKeyMutationOptions) => 39 + useMutation({ 40 + ...deleteKeyHandlerMutation(), 41 + ...options 42 + })
+15 -5
apps/frontend/src/data/mutations/tokens.ts
··· 1 - import { $api } from '@/lib/openapi-client' 1 + import { useMutation } from '@tanstack/react-query' 2 + import { createTokenHandlerMutation, deleteTokenHandlerMutation } from '@uwu/flora-api-client' 2 3 3 - export const useCreateTokenMutation = (options?: any) => 4 - $api.useMutation('post', '/tokens/', options as any) 4 + type CreateTokenMutationOptions = Omit<ReturnType<typeof createTokenHandlerMutation>, 'mutationFn'> 5 + type DeleteTokenMutationOptions = Omit<ReturnType<typeof deleteTokenHandlerMutation>, 'mutationFn'> 5 6 6 - export const useDeleteTokenMutation = (options?: any) => 7 - $api.useMutation('delete', '/tokens/{token_id}', options as any) 7 + export const useCreateTokenMutation = (options?: CreateTokenMutationOptions) => 8 + useMutation({ 9 + ...createTokenHandlerMutation(), 10 + ...options 11 + }) 12 + 13 + export const useDeleteTokenMutation = (options?: DeleteTokenMutationOptions) => 14 + useMutation({ 15 + ...deleteTokenHandlerMutation(), 16 + ...options 17 + })
+2 -2
apps/frontend/src/data/queries/auth.ts
··· 1 - import { $api } from '@/lib/openapi-client' 1 + import { meHandlerOptions } from '@uwu/flora-api-client' 2 2 3 - export const authSessionQueryOptions = () => $api.queryOptions('get', '/auth/me', {}) 3 + export const authSessionQueryOptions = () => meHandlerOptions()
+22 -13
apps/frontend/src/data/queries/deployment-history.ts
··· 1 1 import { useQuery } from '@tanstack/react-query' 2 + import { 3 + getDeploymentRevisionHandlerOptions, 4 + listDeploymentHistoryHandlerOptions 5 + } from '@uwu/flora-api-client' 2 6 3 - import { requestJson } from '@/data/api/request' 4 - import type { DeploymentRevision } from '@/data/deployments/types' 7 + const HISTORY_LIMIT = 100 5 8 6 9 export const useDeploymentHistoryQuery = (guildId: string) => 7 10 useQuery({ 8 - queryKey: ['deployment-history', guildId], 9 - queryFn: () => 10 - requestJson<DeploymentRevision[]>( 11 - `/deployments/${encodeURIComponent(guildId)}/history?limit=100` 12 - ) 11 + ...listDeploymentHistoryHandlerOptions({ 12 + path: { 13 + guild_id: guildId 14 + }, 15 + query: { 16 + limit: HISTORY_LIMIT 17 + } 18 + }), 19 + enabled: !!guildId 13 20 }) 14 21 15 22 export const useDeploymentRevisionQuery = ( ··· 18 25 enabled: boolean 19 26 ) => { 20 27 const resolvedRevisionId = revisionId ?? '' 28 + 21 29 return useQuery({ 22 - queryKey: ['deployment-revision', guildId, revisionId], 23 - enabled, 24 - queryFn: () => 25 - requestJson<DeploymentRevision>( 26 - `/deployments/${encodeURIComponent(guildId)}/revisions/${resolvedRevisionId}` 27 - ) 30 + ...getDeploymentRevisionHandlerOptions({ 31 + path: { 32 + guild_id: guildId, 33 + revision_id: resolvedRevisionId 34 + } 35 + }), 36 + enabled 28 37 }) 29 38 }
+17 -28
apps/frontend/src/data/queries/editor.ts
··· 1 - import { $api } from '@/lib/openapi-client' 1 + import { useQuery } from '@tanstack/react-query' 2 + import { getDeploymentHandlerOptions, getGuildLogsOptions } from '@uwu/flora-api-client' 2 3 3 4 export const useDeploymentQuery = (guildId?: string) => 4 - $api.useQuery( 5 - 'get', 6 - '/deployments/{guild_id}', 7 - { 8 - params: { 9 - path: { guild_id: guildId ?? '' }, 10 - query: { include_bundle: true } 11 - } 12 - }, 13 - { 14 - enabled: !!guildId 15 - } 16 - ) 5 + useQuery({ 6 + ...getDeploymentHandlerOptions({ 7 + path: { guild_id: guildId ?? '' }, 8 + query: { include_bundle: true } 9 + }), 10 + enabled: !!guildId 11 + }) 17 12 18 13 export const useLogsQuery = (guildId?: string) => 19 - $api.useQuery( 20 - 'get', 21 - '/logs/{guild_id}', 22 - { 23 - params: { 24 - path: { guild_id: guildId ?? '' }, 25 - query: { limit: 100 } 26 - } 27 - }, 28 - { 29 - enabled: !!guildId, 30 - refetchInterval: 3000 31 - } 32 - ) 14 + useQuery({ 15 + ...getGuildLogsOptions({ 16 + path: { guild_id: guildId ?? '' }, 17 + query: { limit: 100 } 18 + }), 19 + enabled: !!guildId, 20 + refetchInterval: 3000 21 + })
+2 -2
apps/frontend/src/data/queries/guilds.ts
··· 1 - import { $api } from '@/lib/openapi-client' 1 + import { listGuildsHandlerOptions } from '@uwu/flora-api-client' 2 2 3 - export const guildsQueryOptions = () => $api.queryOptions('get', '/guilds/', {}) 3 + export const guildsQueryOptions = () => listGuildsHandlerOptions()
+34 -47
apps/frontend/src/data/queries/kv.ts
··· 1 - import { $api } from '@/lib/openapi-client' 1 + import { useQuery } from '@tanstack/react-query' 2 + import { 3 + getValueHandlerOptions, 4 + listKeysHandlerOptions, 5 + listStoresHandlerOptions 6 + } from '@uwu/flora-api-client' 2 7 3 8 const KEY_LIMIT = 200 4 9 5 10 export const useKvStoresQuery = (guildId: string) => 6 - $api.useQuery( 7 - 'get', 8 - '/kv/stores', 9 - { 10 - params: { 11 - query: { 12 - guild_id: guildId 13 - } 11 + useQuery({ 12 + ...listStoresHandlerOptions({ 13 + query: { 14 + guild_id: guildId 14 15 } 15 - }, 16 - { 17 - enabled: !!guildId, 18 - refetchOnWindowFocus: false 19 - } 20 - ) 16 + }), 17 + enabled: !!guildId, 18 + refetchOnWindowFocus: false 19 + }) 21 20 22 21 export const useKvKeysQuery = (guildId: string, selectedStore: string, keyPrefix: string) => 23 - $api.useQuery( 24 - 'get', 25 - '/kv/{guild_id}/{store_name}', 26 - { 27 - params: { 28 - path: { guild_id: guildId, store_name: selectedStore }, 29 - query: { 30 - prefix: keyPrefix.trim() ? keyPrefix.trim() : undefined, 31 - limit: KEY_LIMIT 32 - } 22 + useQuery({ 23 + ...listKeysHandlerOptions({ 24 + path: { guild_id: guildId, store_name: selectedStore }, 25 + query: { 26 + prefix: keyPrefix.trim() ? keyPrefix.trim() : undefined, 27 + limit: KEY_LIMIT 33 28 } 34 - }, 35 - { 36 - enabled: !!guildId && !!selectedStore, 37 - refetchOnWindowFocus: false 38 - } 39 - ) 29 + }), 30 + enabled: !!guildId && !!selectedStore, 31 + refetchOnWindowFocus: false 32 + }) 40 33 41 34 export const useKvValueQuery = (guildId: string, selectedStore: string, keyName: string | null) => 42 - $api.useQuery( 43 - 'get', 44 - '/kv/{guild_id}/{store_name}/{key}', 45 - { 46 - params: { 47 - path: { 48 - guild_id: guildId, 49 - store_name: selectedStore, 50 - key: keyName ?? '' 51 - } 35 + useQuery({ 36 + ...getValueHandlerOptions({ 37 + path: { 38 + guild_id: guildId, 39 + store_name: selectedStore, 40 + key: keyName ?? '' 52 41 } 53 - }, 54 - { 55 - enabled: !!guildId && !!selectedStore && !!keyName, 56 - refetchOnWindowFocus: false 57 - } 58 - ) 42 + }), 43 + enabled: !!guildId && !!selectedStore && !!keyName, 44 + refetchOnWindowFocus: false 45 + })
+2 -2
apps/frontend/src/data/queries/tokens.ts
··· 1 - import { $api } from '@/lib/openapi-client' 1 + import { listTokensHandlerOptions } from '@uwu/flora-api-client' 2 2 3 - export const tokensQueryOptions = () => $api.queryOptions('get', '/tokens/', {}) 3 + export const tokensQueryOptions = () => listTokensHandlerOptions()
+45 -8
apps/frontend/src/lib/openapi-client.ts
··· 1 1 import { QueryClient } from '@tanstack/react-query' 2 - import { type $defs, createApiClient, type webhooks } from '@uwu/flora-api-client' 3 - import createRQClient from 'openapi-react-query' 2 + import { client, configureOpenApiClient } from '@uwu/flora-api-client' 3 + 4 + type ApiError = Error & { 5 + cause?: unknown 6 + status?: number 7 + } 8 + 9 + type ClientWithErrorInterceptorFlag = typeof client & { 10 + __floraErrorInterceptorInstalled?: boolean 11 + } 4 12 5 13 // Use Vite env override when present; default to the dev proxy at /api. 6 14 const baseUrl = import.meta.env.VITE_API_BASE ?? '/api' ··· 25 33 return normalizedUrl === input.url ? input : new Request(normalizedUrl, input) 26 34 } 27 35 36 + function toApiError(error: unknown, status?: number): ApiError { 37 + if (error instanceof Error) { 38 + const apiError = error as ApiError 39 + apiError.status = status 40 + return apiError 41 + } 42 + 43 + const message = 44 + typeof error === 'string' 45 + ? error 46 + : typeof error === 'object' && 47 + error !== null && 48 + 'message' in error && 49 + typeof error.message === 'string' 50 + ? error.message 51 + : status 52 + ? `Request failed (${status})` 53 + : 'Request failed' 54 + 55 + const apiError = new Error(message) as ApiError 56 + apiError.status = status 57 + apiError.cause = error 58 + return apiError 59 + } 60 + 28 61 const fetchWithCreds: typeof fetch = (input, init) => 29 62 fetch(normalizeInput(input), { credentials: 'include', ...init }) 30 63 31 - type _OpenApiRootTypes = webhooks | $defs 32 - const _openApiTypeMarker: _OpenApiRootTypes | null = null 33 - void _openApiTypeMarker 64 + configureOpenApiClient({ 65 + baseUrl, 66 + fetch: fetchWithCreds 67 + }) 34 68 35 - export const queryClient = new QueryClient() 69 + const clientWithFlags = client as ClientWithErrorInterceptorFlag 36 70 37 - const fetchClient = createApiClient({ apiUrl: baseUrl, fetch: fetchWithCreds }) 71 + if (!clientWithFlags.__floraErrorInterceptorInstalled) { 72 + client.interceptors.error.use((error, response) => toApiError(error, response?.status)) 73 + clientWithFlags.__floraErrorInterceptorInstalled = true 74 + } 38 75 39 - export const $api = createRQClient(fetchClient) 76 + export const queryClient = new QueryClient()
-3329
apps/frontend/src/lib/openapi-schema.ts
··· 1 - /** 2 - * This file was auto-generated by openapi-typescript. 3 - * Do not make direct changes to the file. 4 - */ 5 - 6 - export interface paths { 7 - '/auth/callback': { 8 - parameters: { 9 - query?: never 10 - header?: never 11 - path?: never 12 - cookie?: never 13 - } 14 - /** Handle Discord OAuth callback, mint a session cookie, and redirect to the frontend dashboard. */ 15 - get: operations['callback_handler'] 16 - put?: never 17 - post?: never 18 - delete?: never 19 - options?: never 20 - head?: never 21 - patch?: never 22 - trace?: never 23 - } 24 - '/auth/login': { 25 - parameters: { 26 - query?: never 27 - header?: never 28 - path?: never 29 - cookie?: never 30 - } 31 - /** Begin Discord OAuth flow and set a short-lived state cookie. */ 32 - get: operations['login_handler'] 33 - put?: never 34 - post?: never 35 - delete?: never 36 - options?: never 37 - head?: never 38 - patch?: never 39 - trace?: never 40 - } 41 - '/auth/me': { 42 - parameters: { 43 - query?: never 44 - header?: never 45 - path?: never 46 - cookie?: never 47 - } 48 - /** Return the currently authenticated user. */ 49 - get: operations['me_handler'] 50 - put?: never 51 - post?: never 52 - delete?: never 53 - options?: never 54 - head?: never 55 - patch?: never 56 - trace?: never 57 - } 58 - '/builds/': { 59 - parameters: { 60 - query?: never 61 - header?: never 62 - path?: never 63 - cookie?: never 64 - } 65 - get?: never 66 - put?: never 67 - post: operations['create_build_handler'] 68 - delete?: never 69 - options?: never 70 - head?: never 71 - patch?: never 72 - trace?: never 73 - } 74 - '/builds/{build_id}': { 75 - parameters: { 76 - query?: never 77 - header?: never 78 - path?: never 79 - cookie?: never 80 - } 81 - get: operations['get_build_handler'] 82 - put?: never 83 - post?: never 84 - delete?: never 85 - options?: never 86 - head?: never 87 - patch?: never 88 - trace?: never 89 - } 90 - '/deployments/{guild_id}': { 91 - parameters: { 92 - query?: never 93 - header?: never 94 - path?: never 95 - cookie?: never 96 - } 97 - get: operations['get_deployment_handler'] 98 - put?: never 99 - post: operations['upsert_deployment_handler'] 100 - delete?: never 101 - options?: never 102 - head?: never 103 - patch?: never 104 - trace?: never 105 - } 106 - '/deployments/{guild_id}/history': { 107 - parameters: { 108 - query?: never 109 - header?: never 110 - path?: never 111 - cookie?: never 112 - } 113 - get: operations['list_deployment_history_handler'] 114 - put?: never 115 - post?: never 116 - delete?: never 117 - options?: never 118 - head?: never 119 - patch?: never 120 - trace?: never 121 - } 122 - '/deployments/{guild_id}/revisions/{revision_id}': { 123 - parameters: { 124 - query?: never 125 - header?: never 126 - path?: never 127 - cookie?: never 128 - } 129 - get: operations['get_deployment_revision_handler'] 130 - put?: never 131 - post?: never 132 - delete?: never 133 - options?: never 134 - head?: never 135 - patch?: never 136 - trace?: never 137 - } 138 - '/deployments/{guild_id}/rollback/{revision_id}': { 139 - parameters: { 140 - query?: never 141 - header?: never 142 - path?: never 143 - cookie?: never 144 - } 145 - get?: never 146 - put?: never 147 - post: operations['rollback_deployment_handler'] 148 - delete?: never 149 - options?: never 150 - head?: never 151 - patch?: never 152 - trace?: never 153 - } 154 - '/guilds/': { 155 - parameters: { 156 - query?: never 157 - header?: never 158 - path?: never 159 - cookie?: never 160 - } 161 - /** List guilds where the user is an admin and the bot is present. */ 162 - get: operations['list_guilds_handler'] 163 - put?: never 164 - post?: never 165 - delete?: never 166 - options?: never 167 - head?: never 168 - patch?: never 169 - trace?: never 170 - } 171 - '/health/': { 172 - parameters: { 173 - query?: never 174 - header?: never 175 - path?: never 176 - cookie?: never 177 - } 178 - /** Check API liveness. */ 179 - get: operations['health_check'] 180 - put?: never 181 - post?: never 182 - delete?: never 183 - options?: never 184 - head?: never 185 - patch?: never 186 - trace?: never 187 - } 188 - '/kv/export/{guild_id}': { 189 - parameters: { 190 - query?: never 191 - header?: never 192 - path?: never 193 - cookie?: never 194 - } 195 - get?: never 196 - put?: never 197 - /** 198 - * Export all KV stores for a guild 199 - * @description Creates a backup of all stores using RocksDB data files. 200 - * Returns a backup ID for later retrieval. 201 - */ 202 - post: operations['export_guild_handler'] 203 - delete?: never 204 - options?: never 205 - head?: never 206 - patch?: never 207 - trace?: never 208 - } 209 - '/kv/stores': { 210 - parameters: { 211 - query?: never 212 - header?: never 213 - path?: never 214 - cookie?: never 215 - } 216 - /** List all KV stores for a guild */ 217 - get: operations['list_stores_handler'] 218 - put?: never 219 - /** Create a new KV store for a guild */ 220 - post: operations['create_store_handler'] 221 - delete?: never 222 - options?: never 223 - head?: never 224 - patch?: never 225 - trace?: never 226 - } 227 - '/kv/stores/{guild_id}/{store_name}': { 228 - parameters: { 229 - query?: never 230 - header?: never 231 - path?: never 232 - cookie?: never 233 - } 234 - get?: never 235 - put?: never 236 - post?: never 237 - /** Delete a KV store and all its data */ 238 - delete: operations['delete_store_handler'] 239 - options?: never 240 - head?: never 241 - patch?: never 242 - trace?: never 243 - } 244 - '/kv/{guild_id}/{store_name}': { 245 - parameters: { 246 - query?: never 247 - header?: never 248 - path?: never 249 - cookie?: never 250 - } 251 - get: operations['list_keys_handler'] 252 - put?: never 253 - post?: never 254 - delete?: never 255 - options?: never 256 - head?: never 257 - patch?: never 258 - trace?: never 259 - } 260 - '/kv/{guild_id}/{store_name}/{key}': { 261 - parameters: { 262 - query?: never 263 - header?: never 264 - path?: never 265 - cookie?: never 266 - } 267 - /** Get a value from a KV store */ 268 - get: operations['get_value_handler'] 269 - put: operations['set_value_handler'] 270 - post?: never 271 - /** Delete a key from a KV store */ 272 - delete: operations['delete_key_handler'] 273 - options?: never 274 - head?: never 275 - patch?: never 276 - trace?: never 277 - } 278 - '/logs': { 279 - parameters: { 280 - query?: never 281 - header?: never 282 - path?: never 283 - cookie?: never 284 - } 285 - /** Get recent logs. */ 286 - get: operations['get_logs'] 287 - put?: never 288 - post?: never 289 - delete?: never 290 - options?: never 291 - head?: never 292 - patch?: never 293 - trace?: never 294 - } 295 - '/logs/{guild_id}': { 296 - parameters: { 297 - query?: never 298 - header?: never 299 - path?: never 300 - cookie?: never 301 - } 302 - /** Get recent logs for a specific guild. */ 303 - get: operations['get_guild_logs'] 304 - put?: never 305 - post?: never 306 - delete?: never 307 - options?: never 308 - head?: never 309 - patch?: never 310 - trace?: never 311 - } 312 - '/metrics': { 313 - parameters: { 314 - query?: never 315 - header?: never 316 - path?: never 317 - cookie?: never 318 - } 319 - /** Get metrics in Prometheus exposition format. */ 320 - get: operations['get_metrics'] 321 - put?: never 322 - post?: never 323 - delete?: never 324 - options?: never 325 - head?: never 326 - patch?: never 327 - trace?: never 328 - } 329 - '/metrics/json': { 330 - parameters: { 331 - query?: never 332 - header?: never 333 - path?: never 334 - cookie?: never 335 - } 336 - /** Get metrics as JSON. */ 337 - get: operations['get_metrics_json'] 338 - put?: never 339 - post?: never 340 - delete?: never 341 - options?: never 342 - head?: never 343 - patch?: never 344 - trace?: never 345 - } 346 - '/secrets/{guild_id}': { 347 - parameters: { 348 - query?: never 349 - header?: never 350 - path?: never 351 - cookie?: never 352 - } 353 - get: operations['list_secrets_handler'] 354 - put?: never 355 - post?: never 356 - delete?: never 357 - options?: never 358 - head?: never 359 - patch?: never 360 - trace?: never 361 - } 362 - '/secrets/{guild_id}/{name}': { 363 - parameters: { 364 - query?: never 365 - header?: never 366 - path?: never 367 - cookie?: never 368 - } 369 - get?: never 370 - put: operations['upsert_secret_handler'] 371 - post?: never 372 - delete: operations['delete_secret_handler'] 373 - options?: never 374 - head?: never 375 - patch?: never 376 - trace?: never 377 - } 378 - '/tokens/': { 379 - parameters: { 380 - query?: never 381 - header?: never 382 - path?: never 383 - cookie?: never 384 - } 385 - /** List tokens for the authenticated user. */ 386 - get: operations['list_tokens_handler'] 387 - put?: never 388 - /** Mint a new API token for the authenticated user. */ 389 - post: operations['create_token_handler'] 390 - delete?: never 391 - options?: never 392 - head?: never 393 - patch?: never 394 - trace?: never 395 - } 396 - '/tokens/{token_id}': { 397 - parameters: { 398 - query?: never 399 - header?: never 400 - path?: never 401 - cookie?: never 402 - } 403 - get?: never 404 - put?: never 405 - post?: never 406 - /** Delete a token by id. */ 407 - delete: operations['delete_token_handler'] 408 - options?: never 409 - head?: never 410 - patch?: never 411 - trace?: never 412 - } 413 - } 414 - export type webhooks = Record<string, never> 415 - export interface components { 416 - schemas: { 417 - /** @description Response envelope for /auth/me. */ 418 - AuthResponse: { 419 - user: components['schemas']['AuthUser'] 420 - } 421 - /** @description API representation of the authenticated user. */ 422 - AuthUser: { 423 - avatar?: string | null 424 - global_name?: string | null 425 - id: string 426 - username: string 427 - } 428 - BuildArtifactResponse: { 429 - bundle: string 430 - source_map: string 431 - } 432 - BuildStatusResponse: { 433 - artifact?: null | components['schemas']['BuildArtifactResponse'] 434 - build_id: string 435 - entry: string 436 - error?: string | null 437 - finished_at?: string | null 438 - guild_id: string 439 - logs: string[] 440 - started_at?: string | null 441 - status: string 442 - } 443 - CreateBuildResponse: { 444 - build_id: string 445 - status: string 446 - } 447 - CreateStoreRequest: { 448 - guild_id: string 449 - store_name: string 450 - } 451 - CreateStoreResponse: { 452 - store: components['schemas']['KvStore'] 453 - } 454 - /** @description Create-token payload. */ 455 - CreateTokenRequest: { 456 - label?: string | null 457 - } 458 - /** @description Token creation response (includes plaintext token). */ 459 - CreateTokenResponse: { 460 - token: string 461 - } 462 - DeleteKeyParams: { 463 - guild_id: string 464 - key: string 465 - store_name: string 466 - } 467 - DeleteSecretResponse: { 468 - deleted: boolean 469 - } 470 - DeleteStoreParams: { 471 - guild_id: string 472 - store_name: string 473 - } 474 - DeploymentActorResponse: { 475 - actor_type: components['schemas']['DeploymentActorType'] 476 - user_id?: string | null 477 - username?: string | null 478 - } 479 - /** @enum {string} */ 480 - DeploymentActorType: 'session' | 'token' | 'system' 481 - DeploymentChangeSummary: { 482 - added_files: number 483 - modified_files: number 484 - removed_files: number 485 - } 486 - DeploymentFile: { 487 - contents: string 488 - path: string 489 - } 490 - DeploymentRequest: { 491 - build_id?: string | null 492 - bundle?: string | null 493 - entry: string 494 - files?: components['schemas']['DeploymentFile'][] | null 495 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 496 - } 497 - DeploymentResponse: { 498 - bundle?: string | null 499 - created_at: string 500 - entry: string 501 - files?: components['schemas']['DeploymentFile'][] | null 502 - guild_id: string 503 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 504 - updated_at: string 505 - } 506 - DeploymentRevisionResponse: { 507 - actor: components['schemas']['DeploymentActorResponse'] 508 - base_revision_id?: string | null 509 - build_id?: string | null 510 - bundle?: string | null 511 - change_summary?: null | components['schemas']['DeploymentChangeSummary'] 512 - deploy_source: components['schemas']['DeploymentSource'] 513 - deployed_at: string 514 - entry: string 515 - error_message?: string | null 516 - files?: components['schemas']['DeploymentFile'][] | null 517 - guild_id: string 518 - id: string 519 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 520 - status: components['schemas']['DeploymentRevisionStatus'] 521 - } 522 - /** @enum {string} */ 523 - DeploymentRevisionStatus: 'success' | 'failed' 524 - /** @enum {string} */ 525 - DeploymentSource: 'cli' | 'webui' | 'bootstrap' | 'api' | 'unknown' 526 - DeploymentSourceMapFile: { 527 - contents: string 528 - path: string 529 - } 530 - /** @description Canonical error envelope returned by the HTTP API. */ 531 - ErrorResponse: { 532 - /** @description Human readable error message. */ 533 - message: string 534 - } 535 - ExportGuildParams: { 536 - guild_id: string 537 - } 538 - ExportGuildResponse: { 539 - backup_id: string 540 - } 541 - GetValueParams: { 542 - guild_id: string 543 - key: string 544 - store_name: string 545 - } 546 - GetValueResponse: { 547 - value?: string | null 548 - } 549 - /** @description Guild info exposed by the API. */ 550 - GuildResponse: { 551 - icon?: string | null 552 - id: string 553 - name: string 554 - /** Format: int64 */ 555 - permissions: number 556 - } 557 - KvStore: { 558 - /** Format: date-time */ 559 - created_at: string 560 - guild_id: string 561 - id: string 562 - store_name: string 563 - /** Format: date-time */ 564 - updated_at: string 565 - } 566 - ListKeysParams: { 567 - guild_id: string 568 - store_name: string 569 - } 570 - ListKeysQuery: { 571 - cursor?: string | null 572 - /** Format: int32 */ 573 - limit?: number | null 574 - prefix?: string | null 575 - } 576 - ListKeysResponse: { 577 - cursor?: string | null 578 - keys: components['schemas']['RawKvKeyInfo'][] 579 - list_complete: boolean 580 - } 581 - ListStoresQuery: { 582 - guild_id: string 583 - } 584 - /** @description A log entry captured from the runtime. */ 585 - LogEntry: { 586 - /** @description Guild ID if applicable. */ 587 - guild_id?: string | null 588 - /** @description Log level (trace, debug, info, warn, error). */ 589 - level: string 590 - /** @description Log message. */ 591 - message: string 592 - /** @description Target/module that produced the log. */ 593 - target: string 594 - /** 595 - * Format: int64 596 - * @description Timestamp in milliseconds since Unix epoch. 597 - */ 598 - timestamp: number 599 - } 600 - LogsQuery: { 601 - /** @description Maximum number of log entries to return (default 100, max 1000). */ 602 - limit?: number 603 - } 604 - /** @description Snapshot of metrics at a point in time. */ 605 - MetricsSnapshot: { 606 - /** Format: int64 */ 607 - avg_latency_us: number 608 - /** Format: int64 */ 609 - dispatch_errors: number 610 - /** Format: int64 */ 611 - dispatch_total: number 612 - /** Format: int64 */ 613 - isolate_count: number 614 - /** Format: int64 */ 615 - isolate_restarts: number 616 - /** Format: int64 */ 617 - migration_quiesce_duration_us: number 618 - /** Format: int64 */ 619 - migration_success: number 620 - /** Format: int64 */ 621 - migration_timeout: number 622 - /** Format: int64 */ 623 - oom_errors: number 624 - /** Format: int64 */ 625 - p50_latency_us: number 626 - /** Format: int64 */ 627 - p95_latency_us: number 628 - /** Format: int64 */ 629 - p99_latency_us: number 630 - /** Format: int64 */ 631 - runtime_restarts: number 632 - /** Format: int64 */ 633 - timeout_errors: number 634 - } 635 - /** @description Information about a single KV key. */ 636 - RawKvKeyInfo: { 637 - /** 638 - * Format: int64 639 - * @description Unix timestamp (seconds) when this key expires. 640 - */ 641 - expiration?: number | null 642 - /** @description Arbitrary JSON metadata attached to the key. */ 643 - metadata?: unknown 644 - /** @description The key's name. */ 645 - name: string 646 - } 647 - /** @description Metadata response; values are never returned. */ 648 - SecretMetadataResponse: { 649 - allowed_hosts: string[] 650 - name: string 651 - } 652 - SetValueParams: { 653 - guild_id: string 654 - key: string 655 - store_name: string 656 - } 657 - SetValueRequest: { 658 - /** Format: int64 */ 659 - expiration?: number | null 660 - metadata?: unknown 661 - value: string 662 - } 663 - SetValueResponse: { 664 - success: boolean 665 - } 666 - /** @description Token list item. */ 667 - TokenResponse: { 668 - created_at: string 669 - label?: string | null 670 - last_used_at?: string | null 671 - token_id: string 672 - } 673 - UpsertSecretRequest: { 674 - allowed_hosts?: string[] 675 - value: string 676 - } 677 - } 678 - responses: never 679 - parameters: never 680 - requestBodies: never 681 - headers: never 682 - pathItems: never 683 - } 684 - export type $defs = Record<string, never> 685 - export interface operations { 686 - callback_handler: { 687 - parameters: { 688 - query: { 689 - /** @description Discord authorization code */ 690 - code: string 691 - /** @description Opaque state value returned by Discord */ 692 - state: string 693 - } 694 - header?: never 695 - path?: never 696 - cookie?: never 697 - } 698 - requestBody?: never 699 - responses: { 700 - /** @description Redirect response with cookies */ 701 - 302: { 702 - headers: { 703 - [name: string]: unknown 704 - } 705 - content?: never 706 - } 707 - /** @description Bad request */ 708 - 400: { 709 - headers: { 710 - [name: string]: unknown 711 - } 712 - content: { 713 - 'application/json': { 714 - /** @description Human readable error message. */ 715 - message: string 716 - } 717 - } 718 - } 719 - /** @description Authentication required */ 720 - 401: { 721 - headers: { 722 - [name: string]: unknown 723 - } 724 - content: { 725 - 'application/json': { 726 - /** @description Human readable error message. */ 727 - message: string 728 - } 729 - } 730 - } 731 - /** @description Forbidden */ 732 - 403: { 733 - headers: { 734 - [name: string]: unknown 735 - } 736 - content: { 737 - 'application/json': { 738 - /** @description Human readable error message. */ 739 - message: string 740 - } 741 - } 742 - } 743 - /** @description Resource not found */ 744 - 404: { 745 - headers: { 746 - [name: string]: unknown 747 - } 748 - content: { 749 - 'application/json': { 750 - /** @description Human readable error message. */ 751 - message: string 752 - } 753 - } 754 - } 755 - /** @description Internal server error */ 756 - 500: { 757 - headers: { 758 - [name: string]: unknown 759 - } 760 - content: { 761 - 'application/json': { 762 - /** @description Human readable error message. */ 763 - message: string 764 - } 765 - } 766 - } 767 - } 768 - } 769 - login_handler: { 770 - parameters: { 771 - query?: never 772 - header?: never 773 - path?: never 774 - cookie?: never 775 - } 776 - requestBody?: never 777 - responses: { 778 - /** @description Redirect response */ 779 - 302: { 780 - headers: { 781 - [name: string]: unknown 782 - } 783 - content?: never 784 - } 785 - /** @description Bad request */ 786 - 400: { 787 - headers: { 788 - [name: string]: unknown 789 - } 790 - content: { 791 - 'application/json': { 792 - /** @description Human readable error message. */ 793 - message: string 794 - } 795 - } 796 - } 797 - /** @description Authentication required */ 798 - 401: { 799 - headers: { 800 - [name: string]: unknown 801 - } 802 - content: { 803 - 'application/json': { 804 - /** @description Human readable error message. */ 805 - message: string 806 - } 807 - } 808 - } 809 - /** @description Forbidden */ 810 - 403: { 811 - headers: { 812 - [name: string]: unknown 813 - } 814 - content: { 815 - 'application/json': { 816 - /** @description Human readable error message. */ 817 - message: string 818 - } 819 - } 820 - } 821 - /** @description Resource not found */ 822 - 404: { 823 - headers: { 824 - [name: string]: unknown 825 - } 826 - content: { 827 - 'application/json': { 828 - /** @description Human readable error message. */ 829 - message: string 830 - } 831 - } 832 - } 833 - /** @description Internal server error */ 834 - 500: { 835 - headers: { 836 - [name: string]: unknown 837 - } 838 - content: { 839 - 'application/json': { 840 - /** @description Human readable error message. */ 841 - message: string 842 - } 843 - } 844 - } 845 - } 846 - } 847 - me_handler: { 848 - parameters: { 849 - query?: never 850 - header?: never 851 - path?: never 852 - cookie?: never 853 - } 854 - requestBody?: never 855 - responses: { 856 - /** @description Successful response */ 857 - 200: { 858 - headers: { 859 - [name: string]: unknown 860 - } 861 - content: { 862 - 'application/json': { 863 - user: components['schemas']['AuthUser'] 864 - } 865 - } 866 - } 867 - /** @description Bad request */ 868 - 400: { 869 - headers: { 870 - [name: string]: unknown 871 - } 872 - content: { 873 - 'application/json': { 874 - /** @description Human readable error message. */ 875 - message: string 876 - } 877 - } 878 - } 879 - /** @description Authentication required */ 880 - 401: { 881 - headers: { 882 - [name: string]: unknown 883 - } 884 - content: { 885 - 'application/json': { 886 - /** @description Human readable error message. */ 887 - message: string 888 - } 889 - } 890 - } 891 - /** @description Forbidden */ 892 - 403: { 893 - headers: { 894 - [name: string]: unknown 895 - } 896 - content: { 897 - 'application/json': { 898 - /** @description Human readable error message. */ 899 - message: string 900 - } 901 - } 902 - } 903 - /** @description Resource not found */ 904 - 404: { 905 - headers: { 906 - [name: string]: unknown 907 - } 908 - content: { 909 - 'application/json': { 910 - /** @description Human readable error message. */ 911 - message: string 912 - } 913 - } 914 - } 915 - /** @description Internal server error */ 916 - 500: { 917 - headers: { 918 - [name: string]: unknown 919 - } 920 - content: { 921 - 'application/json': { 922 - /** @description Human readable error message. */ 923 - message: string 924 - } 925 - } 926 - } 927 - } 928 - } 929 - create_build_handler: { 930 - parameters: { 931 - query?: never 932 - header?: never 933 - path?: never 934 - cookie?: never 935 - } 936 - requestBody?: never 937 - responses: { 938 - /** @description Successful response */ 939 - 200: { 940 - headers: { 941 - [name: string]: unknown 942 - } 943 - content: { 944 - 'application/json': { 945 - build_id: string 946 - status: string 947 - } 948 - } 949 - } 950 - /** @description Bad request */ 951 - 400: { 952 - headers: { 953 - [name: string]: unknown 954 - } 955 - content: { 956 - 'application/json': { 957 - /** @description Human readable error message. */ 958 - message: string 959 - } 960 - } 961 - } 962 - /** @description Authentication required */ 963 - 401: { 964 - headers: { 965 - [name: string]: unknown 966 - } 967 - content: { 968 - 'application/json': { 969 - /** @description Human readable error message. */ 970 - message: string 971 - } 972 - } 973 - } 974 - /** @description Forbidden */ 975 - 403: { 976 - headers: { 977 - [name: string]: unknown 978 - } 979 - content: { 980 - 'application/json': { 981 - /** @description Human readable error message. */ 982 - message: string 983 - } 984 - } 985 - } 986 - /** @description Resource not found */ 987 - 404: { 988 - headers: { 989 - [name: string]: unknown 990 - } 991 - content: { 992 - 'application/json': { 993 - /** @description Human readable error message. */ 994 - message: string 995 - } 996 - } 997 - } 998 - /** @description Internal server error */ 999 - 500: { 1000 - headers: { 1001 - [name: string]: unknown 1002 - } 1003 - content: { 1004 - 'application/json': { 1005 - /** @description Human readable error message. */ 1006 - message: string 1007 - } 1008 - } 1009 - } 1010 - } 1011 - } 1012 - get_build_handler: { 1013 - parameters: { 1014 - query?: never 1015 - header?: never 1016 - path: { 1017 - /** @description Build ID */ 1018 - build_id: string 1019 - } 1020 - cookie?: never 1021 - } 1022 - requestBody?: never 1023 - responses: { 1024 - /** @description Successful response */ 1025 - 200: { 1026 - headers: { 1027 - [name: string]: unknown 1028 - } 1029 - content: { 1030 - 'application/json': { 1031 - artifact?: null | components['schemas']['BuildArtifactResponse'] 1032 - build_id: string 1033 - entry: string 1034 - error?: string | null 1035 - finished_at?: string | null 1036 - guild_id: string 1037 - logs: string[] 1038 - started_at?: string | null 1039 - status: string 1040 - } 1041 - } 1042 - } 1043 - /** @description Bad request */ 1044 - 400: { 1045 - headers: { 1046 - [name: string]: unknown 1047 - } 1048 - content: { 1049 - 'application/json': { 1050 - /** @description Human readable error message. */ 1051 - message: string 1052 - } 1053 - } 1054 - } 1055 - /** @description Authentication required */ 1056 - 401: { 1057 - headers: { 1058 - [name: string]: unknown 1059 - } 1060 - content: { 1061 - 'application/json': { 1062 - /** @description Human readable error message. */ 1063 - message: string 1064 - } 1065 - } 1066 - } 1067 - /** @description Forbidden */ 1068 - 403: { 1069 - headers: { 1070 - [name: string]: unknown 1071 - } 1072 - content: { 1073 - 'application/json': { 1074 - /** @description Human readable error message. */ 1075 - message: string 1076 - } 1077 - } 1078 - } 1079 - /** @description Resource not found */ 1080 - 404: { 1081 - headers: { 1082 - [name: string]: unknown 1083 - } 1084 - content: { 1085 - 'application/json': { 1086 - /** @description Human readable error message. */ 1087 - message: string 1088 - } 1089 - } 1090 - } 1091 - /** @description Internal server error */ 1092 - 500: { 1093 - headers: { 1094 - [name: string]: unknown 1095 - } 1096 - content: { 1097 - 'application/json': { 1098 - /** @description Human readable error message. */ 1099 - message: string 1100 - } 1101 - } 1102 - } 1103 - } 1104 - } 1105 - get_deployment_handler: { 1106 - parameters: { 1107 - query?: { 1108 - /** @description Include bundled output in response */ 1109 - include_bundle?: boolean 1110 - } 1111 - header?: never 1112 - path: { 1113 - /** @description Discord guild id */ 1114 - guild_id: string 1115 - } 1116 - cookie?: never 1117 - } 1118 - requestBody?: never 1119 - responses: { 1120 - /** @description Successful response */ 1121 - 200: { 1122 - headers: { 1123 - [name: string]: unknown 1124 - } 1125 - content: { 1126 - 'application/json': { 1127 - bundle?: string | null 1128 - created_at: string 1129 - entry: string 1130 - files?: components['schemas']['DeploymentFile'][] | null 1131 - guild_id: string 1132 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 1133 - updated_at: string 1134 - } 1135 - } 1136 - } 1137 - /** @description Bad request */ 1138 - 400: { 1139 - headers: { 1140 - [name: string]: unknown 1141 - } 1142 - content: { 1143 - 'application/json': { 1144 - /** @description Human readable error message. */ 1145 - message: string 1146 - } 1147 - } 1148 - } 1149 - /** @description Authentication required */ 1150 - 401: { 1151 - headers: { 1152 - [name: string]: unknown 1153 - } 1154 - content: { 1155 - 'application/json': { 1156 - /** @description Human readable error message. */ 1157 - message: string 1158 - } 1159 - } 1160 - } 1161 - /** @description Forbidden */ 1162 - 403: { 1163 - headers: { 1164 - [name: string]: unknown 1165 - } 1166 - content: { 1167 - 'application/json': { 1168 - /** @description Human readable error message. */ 1169 - message: string 1170 - } 1171 - } 1172 - } 1173 - /** @description Resource not found */ 1174 - 404: { 1175 - headers: { 1176 - [name: string]: unknown 1177 - } 1178 - content: { 1179 - 'application/json': { 1180 - /** @description Human readable error message. */ 1181 - message: string 1182 - } 1183 - } 1184 - } 1185 - /** @description Internal server error */ 1186 - 500: { 1187 - headers: { 1188 - [name: string]: unknown 1189 - } 1190 - content: { 1191 - 'application/json': { 1192 - /** @description Human readable error message. */ 1193 - message: string 1194 - } 1195 - } 1196 - } 1197 - } 1198 - } 1199 - upsert_deployment_handler: { 1200 - parameters: { 1201 - query?: never 1202 - header?: never 1203 - path: { 1204 - /** @description Discord guild id */ 1205 - guild_id: string 1206 - } 1207 - cookie?: never 1208 - } 1209 - requestBody: { 1210 - content: { 1211 - 'application/json': components['schemas']['DeploymentRequest'] 1212 - } 1213 - } 1214 - responses: { 1215 - /** @description Successful response */ 1216 - 200: { 1217 - headers: { 1218 - [name: string]: unknown 1219 - } 1220 - content: { 1221 - 'application/json': { 1222 - bundle?: string | null 1223 - created_at: string 1224 - entry: string 1225 - files?: components['schemas']['DeploymentFile'][] | null 1226 - guild_id: string 1227 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 1228 - updated_at: string 1229 - } 1230 - } 1231 - } 1232 - /** @description Bad request */ 1233 - 400: { 1234 - headers: { 1235 - [name: string]: unknown 1236 - } 1237 - content: { 1238 - 'application/json': { 1239 - /** @description Human readable error message. */ 1240 - message: string 1241 - } 1242 - } 1243 - } 1244 - /** @description Authentication required */ 1245 - 401: { 1246 - headers: { 1247 - [name: string]: unknown 1248 - } 1249 - content: { 1250 - 'application/json': { 1251 - /** @description Human readable error message. */ 1252 - message: string 1253 - } 1254 - } 1255 - } 1256 - /** @description Forbidden */ 1257 - 403: { 1258 - headers: { 1259 - [name: string]: unknown 1260 - } 1261 - content: { 1262 - 'application/json': { 1263 - /** @description Human readable error message. */ 1264 - message: string 1265 - } 1266 - } 1267 - } 1268 - /** @description Resource not found */ 1269 - 404: { 1270 - headers: { 1271 - [name: string]: unknown 1272 - } 1273 - content: { 1274 - 'application/json': { 1275 - /** @description Human readable error message. */ 1276 - message: string 1277 - } 1278 - } 1279 - } 1280 - /** @description Internal server error */ 1281 - 500: { 1282 - headers: { 1283 - [name: string]: unknown 1284 - } 1285 - content: { 1286 - 'application/json': { 1287 - /** @description Human readable error message. */ 1288 - message: string 1289 - } 1290 - } 1291 - } 1292 - } 1293 - } 1294 - list_deployment_history_handler: { 1295 - parameters: { 1296 - query?: { 1297 - /** @description Page size, max 100 */ 1298 - limit?: number 1299 - /** @description RFC3339 deployed_at cursor */ 1300 - cursor_deployed_at?: string 1301 - /** @description Revision id cursor */ 1302 - cursor_id?: string 1303 - /** @description Include bundled output in response */ 1304 - include_bundle?: boolean 1305 - } 1306 - header?: never 1307 - path: { 1308 - /** @description Discord guild id */ 1309 - guild_id: string 1310 - } 1311 - cookie?: never 1312 - } 1313 - requestBody?: never 1314 - responses: { 1315 - /** @description Successful response */ 1316 - 200: { 1317 - headers: { 1318 - [name: string]: unknown 1319 - } 1320 - content: { 1321 - 'application/json': { 1322 - actor: components['schemas']['DeploymentActorResponse'] 1323 - base_revision_id?: string | null 1324 - build_id?: string | null 1325 - bundle?: string | null 1326 - change_summary?: null | components['schemas']['DeploymentChangeSummary'] 1327 - deploy_source: components['schemas']['DeploymentSource'] 1328 - deployed_at: string 1329 - entry: string 1330 - error_message?: string | null 1331 - files?: components['schemas']['DeploymentFile'][] | null 1332 - guild_id: string 1333 - id: string 1334 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 1335 - status: components['schemas']['DeploymentRevisionStatus'] 1336 - }[] 1337 - } 1338 - } 1339 - /** @description Bad request */ 1340 - 400: { 1341 - headers: { 1342 - [name: string]: unknown 1343 - } 1344 - content: { 1345 - 'application/json': { 1346 - /** @description Human readable error message. */ 1347 - message: string 1348 - } 1349 - } 1350 - } 1351 - /** @description Authentication required */ 1352 - 401: { 1353 - headers: { 1354 - [name: string]: unknown 1355 - } 1356 - content: { 1357 - 'application/json': { 1358 - /** @description Human readable error message. */ 1359 - message: string 1360 - } 1361 - } 1362 - } 1363 - /** @description Forbidden */ 1364 - 403: { 1365 - headers: { 1366 - [name: string]: unknown 1367 - } 1368 - content: { 1369 - 'application/json': { 1370 - /** @description Human readable error message. */ 1371 - message: string 1372 - } 1373 - } 1374 - } 1375 - /** @description Resource not found */ 1376 - 404: { 1377 - headers: { 1378 - [name: string]: unknown 1379 - } 1380 - content: { 1381 - 'application/json': { 1382 - /** @description Human readable error message. */ 1383 - message: string 1384 - } 1385 - } 1386 - } 1387 - /** @description Internal server error */ 1388 - 500: { 1389 - headers: { 1390 - [name: string]: unknown 1391 - } 1392 - content: { 1393 - 'application/json': { 1394 - /** @description Human readable error message. */ 1395 - message: string 1396 - } 1397 - } 1398 - } 1399 - } 1400 - } 1401 - get_deployment_revision_handler: { 1402 - parameters: { 1403 - query?: { 1404 - /** @description Include bundled output in response */ 1405 - include_bundle?: boolean 1406 - } 1407 - header?: never 1408 - path: { 1409 - /** @description Discord guild id */ 1410 - guild_id: string 1411 - /** @description Revision id */ 1412 - revision_id: string 1413 - } 1414 - cookie?: never 1415 - } 1416 - requestBody?: never 1417 - responses: { 1418 - /** @description Successful response */ 1419 - 200: { 1420 - headers: { 1421 - [name: string]: unknown 1422 - } 1423 - content: { 1424 - 'application/json': { 1425 - actor: components['schemas']['DeploymentActorResponse'] 1426 - base_revision_id?: string | null 1427 - build_id?: string | null 1428 - bundle?: string | null 1429 - change_summary?: null | components['schemas']['DeploymentChangeSummary'] 1430 - deploy_source: components['schemas']['DeploymentSource'] 1431 - deployed_at: string 1432 - entry: string 1433 - error_message?: string | null 1434 - files?: components['schemas']['DeploymentFile'][] | null 1435 - guild_id: string 1436 - id: string 1437 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 1438 - status: components['schemas']['DeploymentRevisionStatus'] 1439 - } 1440 - } 1441 - } 1442 - /** @description Bad request */ 1443 - 400: { 1444 - headers: { 1445 - [name: string]: unknown 1446 - } 1447 - content: { 1448 - 'application/json': { 1449 - /** @description Human readable error message. */ 1450 - message: string 1451 - } 1452 - } 1453 - } 1454 - /** @description Authentication required */ 1455 - 401: { 1456 - headers: { 1457 - [name: string]: unknown 1458 - } 1459 - content: { 1460 - 'application/json': { 1461 - /** @description Human readable error message. */ 1462 - message: string 1463 - } 1464 - } 1465 - } 1466 - /** @description Forbidden */ 1467 - 403: { 1468 - headers: { 1469 - [name: string]: unknown 1470 - } 1471 - content: { 1472 - 'application/json': { 1473 - /** @description Human readable error message. */ 1474 - message: string 1475 - } 1476 - } 1477 - } 1478 - /** @description Resource not found */ 1479 - 404: { 1480 - headers: { 1481 - [name: string]: unknown 1482 - } 1483 - content: { 1484 - 'application/json': { 1485 - /** @description Human readable error message. */ 1486 - message: string 1487 - } 1488 - } 1489 - } 1490 - /** @description Internal server error */ 1491 - 500: { 1492 - headers: { 1493 - [name: string]: unknown 1494 - } 1495 - content: { 1496 - 'application/json': { 1497 - /** @description Human readable error message. */ 1498 - message: string 1499 - } 1500 - } 1501 - } 1502 - } 1503 - } 1504 - rollback_deployment_handler: { 1505 - parameters: { 1506 - query?: never 1507 - header?: never 1508 - path: { 1509 - /** @description Discord guild id */ 1510 - guild_id: string 1511 - /** @description Successful revision id to rollback to */ 1512 - revision_id: string 1513 - } 1514 - cookie?: never 1515 - } 1516 - requestBody?: never 1517 - responses: { 1518 - /** @description Successful response */ 1519 - 200: { 1520 - headers: { 1521 - [name: string]: unknown 1522 - } 1523 - content: { 1524 - 'application/json': { 1525 - actor: components['schemas']['DeploymentActorResponse'] 1526 - base_revision_id?: string | null 1527 - build_id?: string | null 1528 - bundle?: string | null 1529 - change_summary?: null | components['schemas']['DeploymentChangeSummary'] 1530 - deploy_source: components['schemas']['DeploymentSource'] 1531 - deployed_at: string 1532 - entry: string 1533 - error_message?: string | null 1534 - files?: components['schemas']['DeploymentFile'][] | null 1535 - guild_id: string 1536 - id: string 1537 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 1538 - status: components['schemas']['DeploymentRevisionStatus'] 1539 - } 1540 - } 1541 - } 1542 - /** @description Bad request */ 1543 - 400: { 1544 - headers: { 1545 - [name: string]: unknown 1546 - } 1547 - content: { 1548 - 'application/json': { 1549 - /** @description Human readable error message. */ 1550 - message: string 1551 - } 1552 - } 1553 - } 1554 - /** @description Authentication required */ 1555 - 401: { 1556 - headers: { 1557 - [name: string]: unknown 1558 - } 1559 - content: { 1560 - 'application/json': { 1561 - /** @description Human readable error message. */ 1562 - message: string 1563 - } 1564 - } 1565 - } 1566 - /** @description Forbidden */ 1567 - 403: { 1568 - headers: { 1569 - [name: string]: unknown 1570 - } 1571 - content: { 1572 - 'application/json': { 1573 - /** @description Human readable error message. */ 1574 - message: string 1575 - } 1576 - } 1577 - } 1578 - /** @description Resource not found */ 1579 - 404: { 1580 - headers: { 1581 - [name: string]: unknown 1582 - } 1583 - content: { 1584 - 'application/json': { 1585 - /** @description Human readable error message. */ 1586 - message: string 1587 - } 1588 - } 1589 - } 1590 - /** @description Internal server error */ 1591 - 500: { 1592 - headers: { 1593 - [name: string]: unknown 1594 - } 1595 - content: { 1596 - 'application/json': { 1597 - /** @description Human readable error message. */ 1598 - message: string 1599 - } 1600 - } 1601 - } 1602 - } 1603 - } 1604 - list_guilds_handler: { 1605 - parameters: { 1606 - query?: never 1607 - header?: never 1608 - path?: never 1609 - cookie?: never 1610 - } 1611 - requestBody?: never 1612 - responses: { 1613 - /** @description Successful response */ 1614 - 200: { 1615 - headers: { 1616 - [name: string]: unknown 1617 - } 1618 - content: { 1619 - 'application/json': { 1620 - icon?: string | null 1621 - id: string 1622 - name: string 1623 - /** Format: int64 */ 1624 - permissions: number 1625 - }[] 1626 - } 1627 - } 1628 - /** @description Bad request */ 1629 - 400: { 1630 - headers: { 1631 - [name: string]: unknown 1632 - } 1633 - content: { 1634 - 'application/json': { 1635 - /** @description Human readable error message. */ 1636 - message: string 1637 - } 1638 - } 1639 - } 1640 - /** @description Authentication required */ 1641 - 401: { 1642 - headers: { 1643 - [name: string]: unknown 1644 - } 1645 - content: { 1646 - 'application/json': { 1647 - /** @description Human readable error message. */ 1648 - message: string 1649 - } 1650 - } 1651 - } 1652 - /** @description Forbidden */ 1653 - 403: { 1654 - headers: { 1655 - [name: string]: unknown 1656 - } 1657 - content: { 1658 - 'application/json': { 1659 - /** @description Human readable error message. */ 1660 - message: string 1661 - } 1662 - } 1663 - } 1664 - /** @description Resource not found */ 1665 - 404: { 1666 - headers: { 1667 - [name: string]: unknown 1668 - } 1669 - content: { 1670 - 'application/json': { 1671 - /** @description Human readable error message. */ 1672 - message: string 1673 - } 1674 - } 1675 - } 1676 - /** @description Internal server error */ 1677 - 500: { 1678 - headers: { 1679 - [name: string]: unknown 1680 - } 1681 - content: { 1682 - 'application/json': { 1683 - /** @description Human readable error message. */ 1684 - message: string 1685 - } 1686 - } 1687 - } 1688 - } 1689 - } 1690 - health_check: { 1691 - parameters: { 1692 - query?: never 1693 - header?: never 1694 - path?: never 1695 - cookie?: never 1696 - } 1697 - requestBody?: never 1698 - responses: { 1699 - /** @description API is healthy */ 1700 - 200: { 1701 - headers: { 1702 - [name: string]: unknown 1703 - } 1704 - content: { 1705 - 'text/plain': string 1706 - } 1707 - } 1708 - } 1709 - } 1710 - export_guild_handler: { 1711 - parameters: { 1712 - query?: never 1713 - header?: never 1714 - path: { 1715 - /** @description Guild ID */ 1716 - guild_id: string 1717 - } 1718 - cookie?: never 1719 - } 1720 - requestBody?: never 1721 - responses: { 1722 - /** @description Successful response */ 1723 - 200: { 1724 - headers: { 1725 - [name: string]: unknown 1726 - } 1727 - content: { 1728 - 'application/json': { 1729 - backup_id: string 1730 - } 1731 - } 1732 - } 1733 - /** @description Bad request */ 1734 - 400: { 1735 - headers: { 1736 - [name: string]: unknown 1737 - } 1738 - content: { 1739 - 'application/json': { 1740 - /** @description Human readable error message. */ 1741 - message: string 1742 - } 1743 - } 1744 - } 1745 - /** @description Authentication required */ 1746 - 401: { 1747 - headers: { 1748 - [name: string]: unknown 1749 - } 1750 - content: { 1751 - 'application/json': { 1752 - /** @description Human readable error message. */ 1753 - message: string 1754 - } 1755 - } 1756 - } 1757 - /** @description Forbidden */ 1758 - 403: { 1759 - headers: { 1760 - [name: string]: unknown 1761 - } 1762 - content: { 1763 - 'application/json': { 1764 - /** @description Human readable error message. */ 1765 - message: string 1766 - } 1767 - } 1768 - } 1769 - /** @description Resource not found */ 1770 - 404: { 1771 - headers: { 1772 - [name: string]: unknown 1773 - } 1774 - content: { 1775 - 'application/json': { 1776 - /** @description Human readable error message. */ 1777 - message: string 1778 - } 1779 - } 1780 - } 1781 - /** @description Internal server error */ 1782 - 500: { 1783 - headers: { 1784 - [name: string]: unknown 1785 - } 1786 - content: { 1787 - 'application/json': { 1788 - /** @description Human readable error message. */ 1789 - message: string 1790 - } 1791 - } 1792 - } 1793 - } 1794 - } 1795 - list_stores_handler: { 1796 - parameters: { 1797 - query: { 1798 - guild_id: string 1799 - } 1800 - header?: never 1801 - path?: never 1802 - cookie?: never 1803 - } 1804 - requestBody?: never 1805 - responses: { 1806 - /** @description Successful response */ 1807 - 200: { 1808 - headers: { 1809 - [name: string]: unknown 1810 - } 1811 - content: { 1812 - 'application/json': { 1813 - /** Format: date-time */ 1814 - created_at: string 1815 - guild_id: string 1816 - id: string 1817 - store_name: string 1818 - /** Format: date-time */ 1819 - updated_at: string 1820 - }[] 1821 - } 1822 - } 1823 - /** @description Bad request */ 1824 - 400: { 1825 - headers: { 1826 - [name: string]: unknown 1827 - } 1828 - content: { 1829 - 'application/json': { 1830 - /** @description Human readable error message. */ 1831 - message: string 1832 - } 1833 - } 1834 - } 1835 - /** @description Authentication required */ 1836 - 401: { 1837 - headers: { 1838 - [name: string]: unknown 1839 - } 1840 - content: { 1841 - 'application/json': { 1842 - /** @description Human readable error message. */ 1843 - message: string 1844 - } 1845 - } 1846 - } 1847 - /** @description Forbidden */ 1848 - 403: { 1849 - headers: { 1850 - [name: string]: unknown 1851 - } 1852 - content: { 1853 - 'application/json': { 1854 - /** @description Human readable error message. */ 1855 - message: string 1856 - } 1857 - } 1858 - } 1859 - /** @description Resource not found */ 1860 - 404: { 1861 - headers: { 1862 - [name: string]: unknown 1863 - } 1864 - content: { 1865 - 'application/json': { 1866 - /** @description Human readable error message. */ 1867 - message: string 1868 - } 1869 - } 1870 - } 1871 - /** @description Internal server error */ 1872 - 500: { 1873 - headers: { 1874 - [name: string]: unknown 1875 - } 1876 - content: { 1877 - 'application/json': { 1878 - /** @description Human readable error message. */ 1879 - message: string 1880 - } 1881 - } 1882 - } 1883 - } 1884 - } 1885 - create_store_handler: { 1886 - parameters: { 1887 - query?: never 1888 - header?: never 1889 - path?: never 1890 - cookie?: never 1891 - } 1892 - requestBody: { 1893 - content: { 1894 - 'application/json': components['schemas']['CreateStoreRequest'] 1895 - } 1896 - } 1897 - responses: { 1898 - /** @description Successful response */ 1899 - 200: { 1900 - headers: { 1901 - [name: string]: unknown 1902 - } 1903 - content: { 1904 - 'application/json': { 1905 - store: components['schemas']['KvStore'] 1906 - } 1907 - } 1908 - } 1909 - /** @description Bad request */ 1910 - 400: { 1911 - headers: { 1912 - [name: string]: unknown 1913 - } 1914 - content: { 1915 - 'application/json': { 1916 - /** @description Human readable error message. */ 1917 - message: string 1918 - } 1919 - } 1920 - } 1921 - /** @description Authentication required */ 1922 - 401: { 1923 - headers: { 1924 - [name: string]: unknown 1925 - } 1926 - content: { 1927 - 'application/json': { 1928 - /** @description Human readable error message. */ 1929 - message: string 1930 - } 1931 - } 1932 - } 1933 - /** @description Forbidden */ 1934 - 403: { 1935 - headers: { 1936 - [name: string]: unknown 1937 - } 1938 - content: { 1939 - 'application/json': { 1940 - /** @description Human readable error message. */ 1941 - message: string 1942 - } 1943 - } 1944 - } 1945 - /** @description Resource not found */ 1946 - 404: { 1947 - headers: { 1948 - [name: string]: unknown 1949 - } 1950 - content: { 1951 - 'application/json': { 1952 - /** @description Human readable error message. */ 1953 - message: string 1954 - } 1955 - } 1956 - } 1957 - /** @description Internal server error */ 1958 - 500: { 1959 - headers: { 1960 - [name: string]: unknown 1961 - } 1962 - content: { 1963 - 'application/json': { 1964 - /** @description Human readable error message. */ 1965 - message: string 1966 - } 1967 - } 1968 - } 1969 - } 1970 - } 1971 - delete_store_handler: { 1972 - parameters: { 1973 - query?: never 1974 - header?: never 1975 - path: { 1976 - /** @description Guild ID */ 1977 - guild_id: string 1978 - /** @description Store name */ 1979 - store_name: string 1980 - } 1981 - cookie?: never 1982 - } 1983 - requestBody?: never 1984 - responses: { 1985 - /** @description Store deleted successfully */ 1986 - 200: { 1987 - headers: { 1988 - [name: string]: unknown 1989 - } 1990 - content?: never 1991 - } 1992 - /** @description Bad request */ 1993 - 400: { 1994 - headers: { 1995 - [name: string]: unknown 1996 - } 1997 - content: { 1998 - 'application/json': { 1999 - /** @description Human readable error message. */ 2000 - message: string 2001 - } 2002 - } 2003 - } 2004 - /** @description Authentication required */ 2005 - 401: { 2006 - headers: { 2007 - [name: string]: unknown 2008 - } 2009 - content: { 2010 - 'application/json': { 2011 - /** @description Human readable error message. */ 2012 - message: string 2013 - } 2014 - } 2015 - } 2016 - /** @description Forbidden */ 2017 - 403: { 2018 - headers: { 2019 - [name: string]: unknown 2020 - } 2021 - content: { 2022 - 'application/json': { 2023 - /** @description Human readable error message. */ 2024 - message: string 2025 - } 2026 - } 2027 - } 2028 - /** @description Resource not found */ 2029 - 404: { 2030 - headers: { 2031 - [name: string]: unknown 2032 - } 2033 - content: { 2034 - 'application/json': { 2035 - /** @description Human readable error message. */ 2036 - message: string 2037 - } 2038 - } 2039 - } 2040 - /** @description Internal server error */ 2041 - 500: { 2042 - headers: { 2043 - [name: string]: unknown 2044 - } 2045 - content: { 2046 - 'application/json': { 2047 - /** @description Human readable error message. */ 2048 - message: string 2049 - } 2050 - } 2051 - } 2052 - } 2053 - } 2054 - list_keys_handler: { 2055 - parameters: { 2056 - query?: { 2057 - prefix?: string | null 2058 - limit?: number | null 2059 - cursor?: string | null 2060 - } 2061 - header?: never 2062 - path: { 2063 - /** @description Guild ID */ 2064 - guild_id: string 2065 - /** @description Store name */ 2066 - store_name: string 2067 - } 2068 - cookie?: never 2069 - } 2070 - requestBody?: never 2071 - responses: { 2072 - /** @description Successful response */ 2073 - 200: { 2074 - headers: { 2075 - [name: string]: unknown 2076 - } 2077 - content: { 2078 - 'application/json': { 2079 - /** @description Cursor for fetching the next page of results. */ 2080 - cursor?: string | null 2081 - /** @description The keys returned by this list operation. */ 2082 - keys: components['schemas']['RawKvKeyInfo'][] 2083 - /** @description Whether all matching keys have been returned. */ 2084 - listComplete: boolean 2085 - } 2086 - } 2087 - } 2088 - /** @description Bad request */ 2089 - 400: { 2090 - headers: { 2091 - [name: string]: unknown 2092 - } 2093 - content: { 2094 - 'application/json': { 2095 - /** @description Human readable error message. */ 2096 - message: string 2097 - } 2098 - } 2099 - } 2100 - /** @description Authentication required */ 2101 - 401: { 2102 - headers: { 2103 - [name: string]: unknown 2104 - } 2105 - content: { 2106 - 'application/json': { 2107 - /** @description Human readable error message. */ 2108 - message: string 2109 - } 2110 - } 2111 - } 2112 - /** @description Forbidden */ 2113 - 403: { 2114 - headers: { 2115 - [name: string]: unknown 2116 - } 2117 - content: { 2118 - 'application/json': { 2119 - /** @description Human readable error message. */ 2120 - message: string 2121 - } 2122 - } 2123 - } 2124 - /** @description Resource not found */ 2125 - 404: { 2126 - headers: { 2127 - [name: string]: unknown 2128 - } 2129 - content: { 2130 - 'application/json': { 2131 - /** @description Human readable error message. */ 2132 - message: string 2133 - } 2134 - } 2135 - } 2136 - /** @description Internal server error */ 2137 - 500: { 2138 - headers: { 2139 - [name: string]: unknown 2140 - } 2141 - content: { 2142 - 'application/json': { 2143 - /** @description Human readable error message. */ 2144 - message: string 2145 - } 2146 - } 2147 - } 2148 - } 2149 - } 2150 - get_value_handler: { 2151 - parameters: { 2152 - query?: never 2153 - header?: never 2154 - path: { 2155 - /** @description Guild ID */ 2156 - guild_id: string 2157 - /** @description Store name */ 2158 - store_name: string 2159 - /** @description Key to retrieve */ 2160 - key: string 2161 - } 2162 - cookie?: never 2163 - } 2164 - requestBody?: never 2165 - responses: { 2166 - /** @description Successful response */ 2167 - 200: { 2168 - headers: { 2169 - [name: string]: unknown 2170 - } 2171 - content: { 2172 - 'application/json': { 2173 - value?: string | null 2174 - } 2175 - } 2176 - } 2177 - /** @description Bad request */ 2178 - 400: { 2179 - headers: { 2180 - [name: string]: unknown 2181 - } 2182 - content: { 2183 - 'application/json': { 2184 - /** @description Human readable error message. */ 2185 - message: string 2186 - } 2187 - } 2188 - } 2189 - /** @description Authentication required */ 2190 - 401: { 2191 - headers: { 2192 - [name: string]: unknown 2193 - } 2194 - content: { 2195 - 'application/json': { 2196 - /** @description Human readable error message. */ 2197 - message: string 2198 - } 2199 - } 2200 - } 2201 - /** @description Forbidden */ 2202 - 403: { 2203 - headers: { 2204 - [name: string]: unknown 2205 - } 2206 - content: { 2207 - 'application/json': { 2208 - /** @description Human readable error message. */ 2209 - message: string 2210 - } 2211 - } 2212 - } 2213 - /** @description Resource not found */ 2214 - 404: { 2215 - headers: { 2216 - [name: string]: unknown 2217 - } 2218 - content: { 2219 - 'application/json': { 2220 - /** @description Human readable error message. */ 2221 - message: string 2222 - } 2223 - } 2224 - } 2225 - /** @description Internal server error */ 2226 - 500: { 2227 - headers: { 2228 - [name: string]: unknown 2229 - } 2230 - content: { 2231 - 'application/json': { 2232 - /** @description Human readable error message. */ 2233 - message: string 2234 - } 2235 - } 2236 - } 2237 - } 2238 - } 2239 - set_value_handler: { 2240 - parameters: { 2241 - query?: never 2242 - header?: never 2243 - path: { 2244 - /** @description Guild ID */ 2245 - guild_id: string 2246 - /** @description Store name */ 2247 - store_name: string 2248 - /** @description Key to set */ 2249 - key: string 2250 - } 2251 - cookie?: never 2252 - } 2253 - requestBody: { 2254 - content: { 2255 - 'application/json': components['schemas']['SetValueRequest'] 2256 - } 2257 - } 2258 - responses: { 2259 - /** @description Successful response */ 2260 - 200: { 2261 - headers: { 2262 - [name: string]: unknown 2263 - } 2264 - content: { 2265 - 'application/json': { 2266 - success: boolean 2267 - } 2268 - } 2269 - } 2270 - /** @description Bad request */ 2271 - 400: { 2272 - headers: { 2273 - [name: string]: unknown 2274 - } 2275 - content: { 2276 - 'application/json': { 2277 - /** @description Human readable error message. */ 2278 - message: string 2279 - } 2280 - } 2281 - } 2282 - /** @description Authentication required */ 2283 - 401: { 2284 - headers: { 2285 - [name: string]: unknown 2286 - } 2287 - content: { 2288 - 'application/json': { 2289 - /** @description Human readable error message. */ 2290 - message: string 2291 - } 2292 - } 2293 - } 2294 - /** @description Forbidden */ 2295 - 403: { 2296 - headers: { 2297 - [name: string]: unknown 2298 - } 2299 - content: { 2300 - 'application/json': { 2301 - /** @description Human readable error message. */ 2302 - message: string 2303 - } 2304 - } 2305 - } 2306 - /** @description Resource not found */ 2307 - 404: { 2308 - headers: { 2309 - [name: string]: unknown 2310 - } 2311 - content: { 2312 - 'application/json': { 2313 - /** @description Human readable error message. */ 2314 - message: string 2315 - } 2316 - } 2317 - } 2318 - /** @description Internal server error */ 2319 - 500: { 2320 - headers: { 2321 - [name: string]: unknown 2322 - } 2323 - content: { 2324 - 'application/json': { 2325 - /** @description Human readable error message. */ 2326 - message: string 2327 - } 2328 - } 2329 - } 2330 - } 2331 - } 2332 - delete_key_handler: { 2333 - parameters: { 2334 - query?: never 2335 - header?: never 2336 - path: { 2337 - /** @description Guild ID */ 2338 - guild_id: string 2339 - /** @description Store name */ 2340 - store_name: string 2341 - /** @description Key to delete */ 2342 - key: string 2343 - } 2344 - cookie?: never 2345 - } 2346 - requestBody?: never 2347 - responses: { 2348 - /** @description Key deleted successfully */ 2349 - 200: { 2350 - headers: { 2351 - [name: string]: unknown 2352 - } 2353 - content?: never 2354 - } 2355 - /** @description Bad request */ 2356 - 400: { 2357 - headers: { 2358 - [name: string]: unknown 2359 - } 2360 - content: { 2361 - 'application/json': { 2362 - /** @description Human readable error message. */ 2363 - message: string 2364 - } 2365 - } 2366 - } 2367 - /** @description Authentication required */ 2368 - 401: { 2369 - headers: { 2370 - [name: string]: unknown 2371 - } 2372 - content: { 2373 - 'application/json': { 2374 - /** @description Human readable error message. */ 2375 - message: string 2376 - } 2377 - } 2378 - } 2379 - /** @description Forbidden */ 2380 - 403: { 2381 - headers: { 2382 - [name: string]: unknown 2383 - } 2384 - content: { 2385 - 'application/json': { 2386 - /** @description Human readable error message. */ 2387 - message: string 2388 - } 2389 - } 2390 - } 2391 - /** @description Resource not found */ 2392 - 404: { 2393 - headers: { 2394 - [name: string]: unknown 2395 - } 2396 - content: { 2397 - 'application/json': { 2398 - /** @description Human readable error message. */ 2399 - message: string 2400 - } 2401 - } 2402 - } 2403 - /** @description Internal server error */ 2404 - 500: { 2405 - headers: { 2406 - [name: string]: unknown 2407 - } 2408 - content: { 2409 - 'application/json': { 2410 - /** @description Human readable error message. */ 2411 - message: string 2412 - } 2413 - } 2414 - } 2415 - } 2416 - } 2417 - get_logs: { 2418 - parameters: { 2419 - query?: { 2420 - /** @description Maximum number of log entries to return (default 100, max 1000). */ 2421 - limit?: number 2422 - } 2423 - header?: never 2424 - path?: never 2425 - cookie?: never 2426 - } 2427 - requestBody?: never 2428 - responses: { 2429 - /** @description Successful response */ 2430 - 200: { 2431 - headers: { 2432 - [name: string]: unknown 2433 - } 2434 - content: { 2435 - 'application/json': { 2436 - /** @description Guild ID if applicable. */ 2437 - guild_id?: string | null 2438 - /** @description Log level (trace, debug, info, warn, error). */ 2439 - level: string 2440 - /** @description Log message. */ 2441 - message: string 2442 - /** @description Target/module that produced the log. */ 2443 - target: string 2444 - /** 2445 - * Format: int64 2446 - * @description Timestamp in milliseconds since Unix epoch. 2447 - */ 2448 - timestamp: number 2449 - }[] 2450 - } 2451 - } 2452 - /** @description Bad request */ 2453 - 400: { 2454 - headers: { 2455 - [name: string]: unknown 2456 - } 2457 - content: { 2458 - 'application/json': { 2459 - /** @description Human readable error message. */ 2460 - message: string 2461 - } 2462 - } 2463 - } 2464 - /** @description Authentication required */ 2465 - 401: { 2466 - headers: { 2467 - [name: string]: unknown 2468 - } 2469 - content: { 2470 - 'application/json': { 2471 - /** @description Human readable error message. */ 2472 - message: string 2473 - } 2474 - } 2475 - } 2476 - /** @description Forbidden */ 2477 - 403: { 2478 - headers: { 2479 - [name: string]: unknown 2480 - } 2481 - content: { 2482 - 'application/json': { 2483 - /** @description Human readable error message. */ 2484 - message: string 2485 - } 2486 - } 2487 - } 2488 - /** @description Resource not found */ 2489 - 404: { 2490 - headers: { 2491 - [name: string]: unknown 2492 - } 2493 - content: { 2494 - 'application/json': { 2495 - /** @description Human readable error message. */ 2496 - message: string 2497 - } 2498 - } 2499 - } 2500 - /** @description Internal server error */ 2501 - 500: { 2502 - headers: { 2503 - [name: string]: unknown 2504 - } 2505 - content: { 2506 - 'application/json': { 2507 - /** @description Human readable error message. */ 2508 - message: string 2509 - } 2510 - } 2511 - } 2512 - } 2513 - } 2514 - get_guild_logs: { 2515 - parameters: { 2516 - query?: { 2517 - /** @description Maximum number of log entries to return (default 100, max 1000). */ 2518 - limit?: number 2519 - } 2520 - header?: never 2521 - path: { 2522 - /** @description Discord guild ID */ 2523 - guild_id: string 2524 - } 2525 - cookie?: never 2526 - } 2527 - requestBody?: never 2528 - responses: { 2529 - /** @description Successful response */ 2530 - 200: { 2531 - headers: { 2532 - [name: string]: unknown 2533 - } 2534 - content: { 2535 - 'application/json': { 2536 - /** @description Guild ID if applicable. */ 2537 - guild_id?: string | null 2538 - /** @description Log level (trace, debug, info, warn, error). */ 2539 - level: string 2540 - /** @description Log message. */ 2541 - message: string 2542 - /** @description Target/module that produced the log. */ 2543 - target: string 2544 - /** 2545 - * Format: int64 2546 - * @description Timestamp in milliseconds since Unix epoch. 2547 - */ 2548 - timestamp: number 2549 - }[] 2550 - } 2551 - } 2552 - /** @description Bad request */ 2553 - 400: { 2554 - headers: { 2555 - [name: string]: unknown 2556 - } 2557 - content: { 2558 - 'application/json': { 2559 - /** @description Human readable error message. */ 2560 - message: string 2561 - } 2562 - } 2563 - } 2564 - /** @description Authentication required */ 2565 - 401: { 2566 - headers: { 2567 - [name: string]: unknown 2568 - } 2569 - content: { 2570 - 'application/json': { 2571 - /** @description Human readable error message. */ 2572 - message: string 2573 - } 2574 - } 2575 - } 2576 - /** @description Forbidden */ 2577 - 403: { 2578 - headers: { 2579 - [name: string]: unknown 2580 - } 2581 - content: { 2582 - 'application/json': { 2583 - /** @description Human readable error message. */ 2584 - message: string 2585 - } 2586 - } 2587 - } 2588 - /** @description Resource not found */ 2589 - 404: { 2590 - headers: { 2591 - [name: string]: unknown 2592 - } 2593 - content: { 2594 - 'application/json': { 2595 - /** @description Human readable error message. */ 2596 - message: string 2597 - } 2598 - } 2599 - } 2600 - /** @description Internal server error */ 2601 - 500: { 2602 - headers: { 2603 - [name: string]: unknown 2604 - } 2605 - content: { 2606 - 'application/json': { 2607 - /** @description Human readable error message. */ 2608 - message: string 2609 - } 2610 - } 2611 - } 2612 - } 2613 - } 2614 - get_metrics: { 2615 - parameters: { 2616 - query?: never 2617 - header?: never 2618 - path?: never 2619 - cookie?: never 2620 - } 2621 - requestBody?: never 2622 - responses: { 2623 - /** @description Successful response */ 2624 - 200: { 2625 - headers: { 2626 - [name: string]: unknown 2627 - } 2628 - content: { 2629 - 'text/plain': unknown 2630 - } 2631 - } 2632 - /** @description Bad request */ 2633 - 400: { 2634 - headers: { 2635 - [name: string]: unknown 2636 - } 2637 - content: { 2638 - 'application/json': { 2639 - /** @description Human readable error message. */ 2640 - message: string 2641 - } 2642 - } 2643 - } 2644 - /** @description Authentication required */ 2645 - 401: { 2646 - headers: { 2647 - [name: string]: unknown 2648 - } 2649 - content: { 2650 - 'application/json': { 2651 - /** @description Human readable error message. */ 2652 - message: string 2653 - } 2654 - } 2655 - } 2656 - /** @description Forbidden */ 2657 - 403: { 2658 - headers: { 2659 - [name: string]: unknown 2660 - } 2661 - content: { 2662 - 'application/json': { 2663 - /** @description Human readable error message. */ 2664 - message: string 2665 - } 2666 - } 2667 - } 2668 - /** @description Resource not found */ 2669 - 404: { 2670 - headers: { 2671 - [name: string]: unknown 2672 - } 2673 - content: { 2674 - 'application/json': { 2675 - /** @description Human readable error message. */ 2676 - message: string 2677 - } 2678 - } 2679 - } 2680 - /** @description Internal server error */ 2681 - 500: { 2682 - headers: { 2683 - [name: string]: unknown 2684 - } 2685 - content: { 2686 - 'application/json': { 2687 - /** @description Human readable error message. */ 2688 - message: string 2689 - } 2690 - } 2691 - } 2692 - } 2693 - } 2694 - get_metrics_json: { 2695 - parameters: { 2696 - query?: never 2697 - header?: never 2698 - path?: never 2699 - cookie?: never 2700 - } 2701 - requestBody?: never 2702 - responses: { 2703 - /** @description Successful response */ 2704 - 200: { 2705 - headers: { 2706 - [name: string]: unknown 2707 - } 2708 - content: { 2709 - 'application/json': { 2710 - /** Format: int64 */ 2711 - avg_latency_us: number 2712 - /** Format: int64 */ 2713 - dispatch_errors: number 2714 - /** Format: int64 */ 2715 - dispatch_total: number 2716 - /** Format: int64 */ 2717 - isolate_count: number 2718 - /** Format: int64 */ 2719 - isolate_restarts: number 2720 - /** Format: int64 */ 2721 - migration_quiesce_duration_us: number 2722 - /** Format: int64 */ 2723 - migration_success: number 2724 - /** Format: int64 */ 2725 - migration_timeout: number 2726 - /** Format: int64 */ 2727 - oom_errors: number 2728 - /** Format: int64 */ 2729 - p50_latency_us: number 2730 - /** Format: int64 */ 2731 - p95_latency_us: number 2732 - /** Format: int64 */ 2733 - p99_latency_us: number 2734 - /** Format: int64 */ 2735 - runtime_restarts: number 2736 - /** Format: int64 */ 2737 - timeout_errors: number 2738 - } 2739 - } 2740 - } 2741 - /** @description Bad request */ 2742 - 400: { 2743 - headers: { 2744 - [name: string]: unknown 2745 - } 2746 - content: { 2747 - 'application/json': { 2748 - /** @description Human readable error message. */ 2749 - message: string 2750 - } 2751 - } 2752 - } 2753 - /** @description Authentication required */ 2754 - 401: { 2755 - headers: { 2756 - [name: string]: unknown 2757 - } 2758 - content: { 2759 - 'application/json': { 2760 - /** @description Human readable error message. */ 2761 - message: string 2762 - } 2763 - } 2764 - } 2765 - /** @description Forbidden */ 2766 - 403: { 2767 - headers: { 2768 - [name: string]: unknown 2769 - } 2770 - content: { 2771 - 'application/json': { 2772 - /** @description Human readable error message. */ 2773 - message: string 2774 - } 2775 - } 2776 - } 2777 - /** @description Resource not found */ 2778 - 404: { 2779 - headers: { 2780 - [name: string]: unknown 2781 - } 2782 - content: { 2783 - 'application/json': { 2784 - /** @description Human readable error message. */ 2785 - message: string 2786 - } 2787 - } 2788 - } 2789 - /** @description Internal server error */ 2790 - 500: { 2791 - headers: { 2792 - [name: string]: unknown 2793 - } 2794 - content: { 2795 - 'application/json': { 2796 - /** @description Human readable error message. */ 2797 - message: string 2798 - } 2799 - } 2800 - } 2801 - } 2802 - } 2803 - list_secrets_handler: { 2804 - parameters: { 2805 - query?: never 2806 - header?: never 2807 - path: { 2808 - /** @description Discord guild id */ 2809 - guild_id: string 2810 - } 2811 - cookie?: never 2812 - } 2813 - requestBody?: never 2814 - responses: { 2815 - /** @description Successful response */ 2816 - 200: { 2817 - headers: { 2818 - [name: string]: unknown 2819 - } 2820 - content: { 2821 - 'application/json': { 2822 - allowed_hosts: string[] 2823 - name: string 2824 - }[] 2825 - } 2826 - } 2827 - /** @description Bad request */ 2828 - 400: { 2829 - headers: { 2830 - [name: string]: unknown 2831 - } 2832 - content: { 2833 - 'application/json': { 2834 - /** @description Human readable error message. */ 2835 - message: string 2836 - } 2837 - } 2838 - } 2839 - /** @description Authentication required */ 2840 - 401: { 2841 - headers: { 2842 - [name: string]: unknown 2843 - } 2844 - content: { 2845 - 'application/json': { 2846 - /** @description Human readable error message. */ 2847 - message: string 2848 - } 2849 - } 2850 - } 2851 - /** @description Forbidden */ 2852 - 403: { 2853 - headers: { 2854 - [name: string]: unknown 2855 - } 2856 - content: { 2857 - 'application/json': { 2858 - /** @description Human readable error message. */ 2859 - message: string 2860 - } 2861 - } 2862 - } 2863 - /** @description Resource not found */ 2864 - 404: { 2865 - headers: { 2866 - [name: string]: unknown 2867 - } 2868 - content: { 2869 - 'application/json': { 2870 - /** @description Human readable error message. */ 2871 - message: string 2872 - } 2873 - } 2874 - } 2875 - /** @description Internal server error */ 2876 - 500: { 2877 - headers: { 2878 - [name: string]: unknown 2879 - } 2880 - content: { 2881 - 'application/json': { 2882 - /** @description Human readable error message. */ 2883 - message: string 2884 - } 2885 - } 2886 - } 2887 - } 2888 - } 2889 - upsert_secret_handler: { 2890 - parameters: { 2891 - query?: never 2892 - header?: never 2893 - path: { 2894 - /** @description Discord guild id */ 2895 - guild_id: string 2896 - /** @description Secret name */ 2897 - name: string 2898 - } 2899 - cookie?: never 2900 - } 2901 - requestBody: { 2902 - content: { 2903 - 'application/json': components['schemas']['UpsertSecretRequest'] 2904 - } 2905 - } 2906 - responses: { 2907 - /** @description Successful response */ 2908 - 200: { 2909 - headers: { 2910 - [name: string]: unknown 2911 - } 2912 - content: { 2913 - 'application/json': { 2914 - allowed_hosts: string[] 2915 - name: string 2916 - } 2917 - } 2918 - } 2919 - /** @description Bad request */ 2920 - 400: { 2921 - headers: { 2922 - [name: string]: unknown 2923 - } 2924 - content: { 2925 - 'application/json': { 2926 - /** @description Human readable error message. */ 2927 - message: string 2928 - } 2929 - } 2930 - } 2931 - /** @description Authentication required */ 2932 - 401: { 2933 - headers: { 2934 - [name: string]: unknown 2935 - } 2936 - content: { 2937 - 'application/json': { 2938 - /** @description Human readable error message. */ 2939 - message: string 2940 - } 2941 - } 2942 - } 2943 - /** @description Forbidden */ 2944 - 403: { 2945 - headers: { 2946 - [name: string]: unknown 2947 - } 2948 - content: { 2949 - 'application/json': { 2950 - /** @description Human readable error message. */ 2951 - message: string 2952 - } 2953 - } 2954 - } 2955 - /** @description Resource not found */ 2956 - 404: { 2957 - headers: { 2958 - [name: string]: unknown 2959 - } 2960 - content: { 2961 - 'application/json': { 2962 - /** @description Human readable error message. */ 2963 - message: string 2964 - } 2965 - } 2966 - } 2967 - /** @description Internal server error */ 2968 - 500: { 2969 - headers: { 2970 - [name: string]: unknown 2971 - } 2972 - content: { 2973 - 'application/json': { 2974 - /** @description Human readable error message. */ 2975 - message: string 2976 - } 2977 - } 2978 - } 2979 - } 2980 - } 2981 - delete_secret_handler: { 2982 - parameters: { 2983 - query?: never 2984 - header?: never 2985 - path: { 2986 - /** @description Discord guild id */ 2987 - guild_id: string 2988 - /** @description Secret name */ 2989 - name: string 2990 - } 2991 - cookie?: never 2992 - } 2993 - requestBody?: never 2994 - responses: { 2995 - /** @description Successful response */ 2996 - 200: { 2997 - headers: { 2998 - [name: string]: unknown 2999 - } 3000 - content: { 3001 - 'application/json': { 3002 - deleted: boolean 3003 - } 3004 - } 3005 - } 3006 - /** @description Bad request */ 3007 - 400: { 3008 - headers: { 3009 - [name: string]: unknown 3010 - } 3011 - content: { 3012 - 'application/json': { 3013 - /** @description Human readable error message. */ 3014 - message: string 3015 - } 3016 - } 3017 - } 3018 - /** @description Authentication required */ 3019 - 401: { 3020 - headers: { 3021 - [name: string]: unknown 3022 - } 3023 - content: { 3024 - 'application/json': { 3025 - /** @description Human readable error message. */ 3026 - message: string 3027 - } 3028 - } 3029 - } 3030 - /** @description Forbidden */ 3031 - 403: { 3032 - headers: { 3033 - [name: string]: unknown 3034 - } 3035 - content: { 3036 - 'application/json': { 3037 - /** @description Human readable error message. */ 3038 - message: string 3039 - } 3040 - } 3041 - } 3042 - /** @description Resource not found */ 3043 - 404: { 3044 - headers: { 3045 - [name: string]: unknown 3046 - } 3047 - content: { 3048 - 'application/json': { 3049 - /** @description Human readable error message. */ 3050 - message: string 3051 - } 3052 - } 3053 - } 3054 - /** @description Internal server error */ 3055 - 500: { 3056 - headers: { 3057 - [name: string]: unknown 3058 - } 3059 - content: { 3060 - 'application/json': { 3061 - /** @description Human readable error message. */ 3062 - message: string 3063 - } 3064 - } 3065 - } 3066 - } 3067 - } 3068 - list_tokens_handler: { 3069 - parameters: { 3070 - query?: never 3071 - header?: never 3072 - path?: never 3073 - cookie?: never 3074 - } 3075 - requestBody?: never 3076 - responses: { 3077 - /** @description Successful response */ 3078 - 200: { 3079 - headers: { 3080 - [name: string]: unknown 3081 - } 3082 - content: { 3083 - 'application/json': { 3084 - created_at: string 3085 - label?: string | null 3086 - last_used_at?: string | null 3087 - token_id: string 3088 - }[] 3089 - } 3090 - } 3091 - /** @description Bad request */ 3092 - 400: { 3093 - headers: { 3094 - [name: string]: unknown 3095 - } 3096 - content: { 3097 - 'application/json': { 3098 - /** @description Human readable error message. */ 3099 - message: string 3100 - } 3101 - } 3102 - } 3103 - /** @description Authentication required */ 3104 - 401: { 3105 - headers: { 3106 - [name: string]: unknown 3107 - } 3108 - content: { 3109 - 'application/json': { 3110 - /** @description Human readable error message. */ 3111 - message: string 3112 - } 3113 - } 3114 - } 3115 - /** @description Forbidden */ 3116 - 403: { 3117 - headers: { 3118 - [name: string]: unknown 3119 - } 3120 - content: { 3121 - 'application/json': { 3122 - /** @description Human readable error message. */ 3123 - message: string 3124 - } 3125 - } 3126 - } 3127 - /** @description Resource not found */ 3128 - 404: { 3129 - headers: { 3130 - [name: string]: unknown 3131 - } 3132 - content: { 3133 - 'application/json': { 3134 - /** @description Human readable error message. */ 3135 - message: string 3136 - } 3137 - } 3138 - } 3139 - /** @description Internal server error */ 3140 - 500: { 3141 - headers: { 3142 - [name: string]: unknown 3143 - } 3144 - content: { 3145 - 'application/json': { 3146 - /** @description Human readable error message. */ 3147 - message: string 3148 - } 3149 - } 3150 - } 3151 - } 3152 - } 3153 - create_token_handler: { 3154 - parameters: { 3155 - query?: never 3156 - header?: never 3157 - path?: never 3158 - cookie?: never 3159 - } 3160 - requestBody: { 3161 - content: { 3162 - 'application/json': components['schemas']['CreateTokenRequest'] 3163 - } 3164 - } 3165 - responses: { 3166 - /** @description Successful response */ 3167 - 200: { 3168 - headers: { 3169 - [name: string]: unknown 3170 - } 3171 - content: { 3172 - 'application/json': { 3173 - token: string 3174 - } 3175 - } 3176 - } 3177 - /** @description Bad request */ 3178 - 400: { 3179 - headers: { 3180 - [name: string]: unknown 3181 - } 3182 - content: { 3183 - 'application/json': { 3184 - /** @description Human readable error message. */ 3185 - message: string 3186 - } 3187 - } 3188 - } 3189 - /** @description Authentication required */ 3190 - 401: { 3191 - headers: { 3192 - [name: string]: unknown 3193 - } 3194 - content: { 3195 - 'application/json': { 3196 - /** @description Human readable error message. */ 3197 - message: string 3198 - } 3199 - } 3200 - } 3201 - /** @description Forbidden */ 3202 - 403: { 3203 - headers: { 3204 - [name: string]: unknown 3205 - } 3206 - content: { 3207 - 'application/json': { 3208 - /** @description Human readable error message. */ 3209 - message: string 3210 - } 3211 - } 3212 - } 3213 - /** @description Resource not found */ 3214 - 404: { 3215 - headers: { 3216 - [name: string]: unknown 3217 - } 3218 - content: { 3219 - 'application/json': { 3220 - /** @description Human readable error message. */ 3221 - message: string 3222 - } 3223 - } 3224 - } 3225 - /** @description Internal server error */ 3226 - 500: { 3227 - headers: { 3228 - [name: string]: unknown 3229 - } 3230 - content: { 3231 - 'application/json': { 3232 - /** @description Human readable error message. */ 3233 - message: string 3234 - } 3235 - } 3236 - } 3237 - } 3238 - } 3239 - delete_token_handler: { 3240 - parameters: { 3241 - query?: never 3242 - header?: never 3243 - path: { 3244 - /** @description Token identifier */ 3245 - token_id: string 3246 - } 3247 - cookie?: never 3248 - } 3249 - requestBody?: never 3250 - responses: { 3251 - /** @description Successful response */ 3252 - 200: { 3253 - headers: { 3254 - [name: string]: unknown 3255 - } 3256 - content: { 3257 - 'application/json': unknown 3258 - } 3259 - } 3260 - /** @description Token deleted */ 3261 - 204: { 3262 - headers: { 3263 - [name: string]: unknown 3264 - } 3265 - content?: never 3266 - } 3267 - /** @description Bad request */ 3268 - 400: { 3269 - headers: { 3270 - [name: string]: unknown 3271 - } 3272 - content: { 3273 - 'application/json': { 3274 - /** @description Human readable error message. */ 3275 - message: string 3276 - } 3277 - } 3278 - } 3279 - /** @description Authentication required */ 3280 - 401: { 3281 - headers: { 3282 - [name: string]: unknown 3283 - } 3284 - content: { 3285 - 'application/json': { 3286 - /** @description Human readable error message. */ 3287 - message: string 3288 - } 3289 - } 3290 - } 3291 - /** @description Forbidden */ 3292 - 403: { 3293 - headers: { 3294 - [name: string]: unknown 3295 - } 3296 - content: { 3297 - 'application/json': { 3298 - /** @description Human readable error message. */ 3299 - message: string 3300 - } 3301 - } 3302 - } 3303 - /** @description Resource not found */ 3304 - 404: { 3305 - headers: { 3306 - [name: string]: unknown 3307 - } 3308 - content: { 3309 - 'application/json': { 3310 - /** @description Human readable error message. */ 3311 - message: string 3312 - } 3313 - } 3314 - } 3315 - /** @description Internal server error */ 3316 - 500: { 3317 - headers: { 3318 - [name: string]: unknown 3319 - } 3320 - content: { 3321 - 'application/json': { 3322 - /** @description Human readable error message. */ 3323 - message: string 3324 - } 3325 - } 3326 - } 3327 - } 3328 - } 3329 - }
+1 -1
apps/frontend/src/pages/editor-page.tsx
··· 135 135 .sort((a, b) => a.path.localeCompare(b.path)) 136 136 137 137 await deployMutation.mutateAsync({ 138 - params: { path: { guild_id: buildResult.build.guild_id } }, 138 + path: { guild_id: buildResult.build.guild_id }, 139 139 headers: { 'x-flora-deploy-source': 'webui' }, 140 140 body: { 141 141 entry: buildResult.build.entry,
+7
packages/api-client/openapi-ts.config.ts
··· 1 + import { defineConfig } from '@hey-api/openapi-ts' 2 + 3 + export default defineConfig({ 4 + input: 'http://localhost:3000/api-docs/openapi.json', 5 + output: 'src/generated', 6 + plugins: ['@tanstack/react-query'] 7 + })
+4 -4
packages/api-client/package.json
··· 32 32 "test": "vp test", 33 33 "typecheck": "tsgo --noEmit", 34 34 "release": "bumpp", 35 - "prepublishOnly": "pnpm run build", 36 - "generate:api": "openapi-typescript http://localhost:3000/api-docs/openapi.json -o src/generated/openapi-schema.ts" 35 + "prepublishOnly": "vp run build", 36 + "generate": "openapi-ts" 37 37 }, 38 38 "dependencies": { 39 - "openapi-fetch": "^0.17.0" 39 + "@tanstack/react-query": "catalog:" 40 40 }, 41 41 "devDependencies": { 42 + "@hey-api/openapi-ts": "catalog:", 42 43 "@typescript/native-preview": "catalog:", 43 44 "bumpp": "^11.0.0", 44 - "openapi-typescript": "^7.13.0", 45 45 "typescript": "catalog:", 46 46 "vite-plus": "catalog:", 47 47 "vitest": "catalog:"
+1079
packages/api-client/src/generated/@tanstack/react-query.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import { 4 + type DefaultError, 5 + type InfiniteData, 6 + infiniteQueryOptions, 7 + queryOptions, 8 + type UseMutationOptions 9 + } from '@tanstack/react-query' 10 + 11 + import { client } from '../client.gen' 12 + import { 13 + callbackHandler, 14 + createBuildHandler, 15 + createStoreHandler, 16 + createTokenHandler, 17 + deleteKeyHandler, 18 + deleteSecretHandler, 19 + deleteStoreHandler, 20 + deleteTokenHandler, 21 + exportGuildHandler, 22 + getBuildHandler, 23 + getDeploymentHandler, 24 + getDeploymentRevisionHandler, 25 + getGuildLogs, 26 + getLogs, 27 + getMetrics, 28 + getMetricsJson, 29 + getValueHandler, 30 + healthCheck, 31 + listDeploymentHistoryHandler, 32 + listDeploymentsHandler, 33 + listGuildsHandler, 34 + listKeysHandler, 35 + listSecretsHandler, 36 + listStoresHandler, 37 + listTokensHandler, 38 + loginHandler, 39 + meHandler, 40 + type Options, 41 + rollbackDeploymentHandler, 42 + setValueHandler, 43 + upsertDeploymentHandler, 44 + upsertSecretHandler 45 + } from '../sdk.gen' 46 + import type { 47 + CallbackHandlerData, 48 + CallbackHandlerError, 49 + CreateBuildHandlerData, 50 + CreateBuildHandlerError, 51 + CreateBuildHandlerResponse, 52 + CreateStoreHandlerData, 53 + CreateStoreHandlerError, 54 + CreateStoreHandlerResponse, 55 + CreateTokenHandlerData, 56 + CreateTokenHandlerError, 57 + CreateTokenHandlerResponse, 58 + DeleteKeyHandlerData, 59 + DeleteKeyHandlerError, 60 + DeleteSecretHandlerData, 61 + DeleteSecretHandlerError, 62 + DeleteSecretHandlerResponse, 63 + DeleteStoreHandlerData, 64 + DeleteStoreHandlerError, 65 + DeleteTokenHandlerData, 66 + DeleteTokenHandlerError, 67 + DeleteTokenHandlerResponse, 68 + ExportGuildHandlerData, 69 + ExportGuildHandlerError, 70 + ExportGuildHandlerResponse, 71 + GetBuildHandlerData, 72 + GetBuildHandlerError, 73 + GetBuildHandlerResponse, 74 + GetDeploymentHandlerData, 75 + GetDeploymentHandlerError, 76 + GetDeploymentHandlerResponse, 77 + GetDeploymentRevisionHandlerData, 78 + GetDeploymentRevisionHandlerError, 79 + GetDeploymentRevisionHandlerResponse, 80 + GetGuildLogsData, 81 + GetGuildLogsError, 82 + GetGuildLogsResponse, 83 + GetLogsData, 84 + GetLogsError, 85 + GetLogsResponse, 86 + GetMetricsData, 87 + GetMetricsError, 88 + GetMetricsJsonData, 89 + GetMetricsJsonError, 90 + GetMetricsJsonResponse, 91 + GetValueHandlerData, 92 + GetValueHandlerError, 93 + GetValueHandlerResponse, 94 + HealthCheckData, 95 + HealthCheckResponse, 96 + ListDeploymentHistoryHandlerData, 97 + ListDeploymentHistoryHandlerError, 98 + ListDeploymentHistoryHandlerResponse, 99 + ListDeploymentsHandlerData, 100 + ListDeploymentsHandlerError, 101 + ListDeploymentsHandlerResponse, 102 + ListGuildsHandlerData, 103 + ListGuildsHandlerError, 104 + ListGuildsHandlerResponse, 105 + ListKeysHandlerData, 106 + ListKeysHandlerError, 107 + ListKeysHandlerResponse, 108 + ListSecretsHandlerData, 109 + ListSecretsHandlerError, 110 + ListSecretsHandlerResponse, 111 + ListStoresHandlerData, 112 + ListStoresHandlerError, 113 + ListStoresHandlerResponse, 114 + ListTokensHandlerData, 115 + ListTokensHandlerError, 116 + ListTokensHandlerResponse, 117 + LoginHandlerData, 118 + LoginHandlerError, 119 + MeHandlerData, 120 + MeHandlerError, 121 + MeHandlerResponse, 122 + RollbackDeploymentHandlerData, 123 + RollbackDeploymentHandlerError, 124 + RollbackDeploymentHandlerResponse, 125 + SetValueHandlerData, 126 + SetValueHandlerError, 127 + SetValueHandlerResponse, 128 + UpsertDeploymentHandlerData, 129 + UpsertDeploymentHandlerError, 130 + UpsertDeploymentHandlerResponse, 131 + UpsertSecretHandlerData, 132 + UpsertSecretHandlerError, 133 + UpsertSecretHandlerResponse 134 + } from '../types.gen' 135 + 136 + export type QueryKey<TOptions extends Options> = [ 137 + Pick<TOptions, 'baseUrl' | 'body' | 'headers' | 'path' | 'query'> & { 138 + _id: string 139 + _infinite?: boolean 140 + tags?: ReadonlyArray<string> 141 + } 142 + ] 143 + 144 + const createQueryKey = <TOptions extends Options>( 145 + id: string, 146 + options?: TOptions, 147 + infinite?: boolean, 148 + tags?: ReadonlyArray<string> 149 + ): [QueryKey<TOptions>[0]] => { 150 + const params: QueryKey<TOptions>[0] = { 151 + _id: id, 152 + baseUrl: options?.baseUrl || (options?.client ?? client).getConfig().baseUrl 153 + } as QueryKey<TOptions>[0] 154 + if (infinite) { 155 + params._infinite = infinite 156 + } 157 + if (tags) { 158 + params.tags = tags 159 + } 160 + if (options?.body) { 161 + params.body = options.body 162 + } 163 + if (options?.headers) { 164 + params.headers = options.headers 165 + } 166 + if (options?.path) { 167 + params.path = options.path 168 + } 169 + if (options?.query) { 170 + params.query = options.query 171 + } 172 + return [params] 173 + } 174 + 175 + export const callbackHandlerQueryKey = (options: Options<CallbackHandlerData>) => 176 + createQueryKey('callbackHandler', options) 177 + 178 + /** 179 + * Handle Discord OAuth callback, mint a session cookie, and redirect to the frontend dashboard. 180 + */ 181 + export const callbackHandlerOptions = (options: Options<CallbackHandlerData>) => 182 + queryOptions<unknown, CallbackHandlerError, unknown, ReturnType<typeof callbackHandlerQueryKey>>({ 183 + queryFn: async ({ queryKey, signal }) => { 184 + const { data } = await callbackHandler({ 185 + ...options, 186 + ...queryKey[0], 187 + signal, 188 + throwOnError: true 189 + }) 190 + return data 191 + }, 192 + queryKey: callbackHandlerQueryKey(options) 193 + }) 194 + 195 + export const loginHandlerQueryKey = (options?: Options<LoginHandlerData>) => 196 + createQueryKey('loginHandler', options) 197 + 198 + /** 199 + * Begin Discord OAuth flow and set a short-lived state cookie. 200 + */ 201 + export const loginHandlerOptions = (options?: Options<LoginHandlerData>) => 202 + queryOptions<unknown, LoginHandlerError, unknown, ReturnType<typeof loginHandlerQueryKey>>({ 203 + queryFn: async ({ queryKey, signal }) => { 204 + const { data } = await loginHandler({ 205 + ...options, 206 + ...queryKey[0], 207 + signal, 208 + throwOnError: true 209 + }) 210 + return data 211 + }, 212 + queryKey: loginHandlerQueryKey(options) 213 + }) 214 + 215 + export const meHandlerQueryKey = (options?: Options<MeHandlerData>) => 216 + createQueryKey('meHandler', options) 217 + 218 + /** 219 + * Return the currently authenticated user. 220 + */ 221 + export const meHandlerOptions = (options?: Options<MeHandlerData>) => 222 + queryOptions< 223 + MeHandlerResponse, 224 + MeHandlerError, 225 + MeHandlerResponse, 226 + ReturnType<typeof meHandlerQueryKey> 227 + >({ 228 + queryFn: async ({ queryKey, signal }) => { 229 + const { data } = await meHandler({ 230 + ...options, 231 + ...queryKey[0], 232 + signal, 233 + throwOnError: true 234 + }) 235 + return data 236 + }, 237 + queryKey: meHandlerQueryKey(options) 238 + }) 239 + 240 + /** 241 + * Create a build 242 + * 243 + * Queues a server-side build for the provided project archive. 244 + */ 245 + export const createBuildHandlerMutation = ( 246 + options?: Partial<Options<CreateBuildHandlerData>> 247 + ): UseMutationOptions< 248 + CreateBuildHandlerResponse, 249 + CreateBuildHandlerError, 250 + Options<CreateBuildHandlerData> 251 + > => { 252 + const mutationOptions: UseMutationOptions< 253 + CreateBuildHandlerResponse, 254 + CreateBuildHandlerError, 255 + Options<CreateBuildHandlerData> 256 + > = { 257 + mutationFn: async (fnOptions) => { 258 + const { data } = await createBuildHandler({ 259 + ...options, 260 + ...fnOptions, 261 + throwOnError: true 262 + }) 263 + return data 264 + } 265 + } 266 + return mutationOptions 267 + } 268 + 269 + export const getBuildHandlerQueryKey = (options: Options<GetBuildHandlerData>) => 270 + createQueryKey('getBuildHandler', options) 271 + 272 + /** 273 + * Get build status 274 + * 275 + * Returns the current status, logs, and artifacts for a build. 276 + */ 277 + export const getBuildHandlerOptions = (options: Options<GetBuildHandlerData>) => 278 + queryOptions< 279 + GetBuildHandlerResponse, 280 + GetBuildHandlerError, 281 + GetBuildHandlerResponse, 282 + ReturnType<typeof getBuildHandlerQueryKey> 283 + >({ 284 + queryFn: async ({ queryKey, signal }) => { 285 + const { data } = await getBuildHandler({ 286 + ...options, 287 + ...queryKey[0], 288 + signal, 289 + throwOnError: true 290 + }) 291 + return data 292 + }, 293 + queryKey: getBuildHandlerQueryKey(options) 294 + }) 295 + 296 + export const listDeploymentsHandlerQueryKey = (options?: Options<ListDeploymentsHandlerData>) => 297 + createQueryKey('listDeploymentsHandler', options) 298 + 299 + /** 300 + * List deployments 301 + * 302 + * Returns all deployment snapshots the authenticated user has access to. 303 + */ 304 + export const listDeploymentsHandlerOptions = (options?: Options<ListDeploymentsHandlerData>) => 305 + queryOptions< 306 + ListDeploymentsHandlerResponse, 307 + ListDeploymentsHandlerError, 308 + ListDeploymentsHandlerResponse, 309 + ReturnType<typeof listDeploymentsHandlerQueryKey> 310 + >({ 311 + queryFn: async ({ queryKey, signal }) => { 312 + const { data } = await listDeploymentsHandler({ 313 + ...options, 314 + ...queryKey[0], 315 + signal, 316 + throwOnError: true 317 + }) 318 + return data 319 + }, 320 + queryKey: listDeploymentsHandlerQueryKey(options) 321 + }) 322 + 323 + export const getDeploymentHandlerQueryKey = (options: Options<GetDeploymentHandlerData>) => 324 + createQueryKey('getDeploymentHandler', options) 325 + 326 + /** 327 + * Get deployment 328 + * 329 + * Returns the latest successful deployment snapshot for a guild. 330 + */ 331 + export const getDeploymentHandlerOptions = (options: Options<GetDeploymentHandlerData>) => 332 + queryOptions< 333 + GetDeploymentHandlerResponse, 334 + GetDeploymentHandlerError, 335 + GetDeploymentHandlerResponse, 336 + ReturnType<typeof getDeploymentHandlerQueryKey> 337 + >({ 338 + queryFn: async ({ queryKey, signal }) => { 339 + const { data } = await getDeploymentHandler({ 340 + ...options, 341 + ...queryKey[0], 342 + signal, 343 + throwOnError: true 344 + }) 345 + return data 346 + }, 347 + queryKey: getDeploymentHandlerQueryKey(options) 348 + }) 349 + 350 + /** 351 + * Deploy a guild 352 + * 353 + * Creates or updates the active deployment for a guild, then records a revision. 354 + */ 355 + export const upsertDeploymentHandlerMutation = ( 356 + options?: Partial<Options<UpsertDeploymentHandlerData>> 357 + ): UseMutationOptions< 358 + UpsertDeploymentHandlerResponse, 359 + UpsertDeploymentHandlerError, 360 + Options<UpsertDeploymentHandlerData> 361 + > => { 362 + const mutationOptions: UseMutationOptions< 363 + UpsertDeploymentHandlerResponse, 364 + UpsertDeploymentHandlerError, 365 + Options<UpsertDeploymentHandlerData> 366 + > = { 367 + mutationFn: async (fnOptions) => { 368 + const { data } = await upsertDeploymentHandler({ 369 + ...options, 370 + ...fnOptions, 371 + throwOnError: true 372 + }) 373 + return data 374 + } 375 + } 376 + return mutationOptions 377 + } 378 + 379 + export const listDeploymentHistoryHandlerQueryKey = ( 380 + options: Options<ListDeploymentHistoryHandlerData> 381 + ) => createQueryKey('listDeploymentHistoryHandler', options) 382 + 383 + /** 384 + * List deployment history 385 + * 386 + * Returns deployment revisions for a guild in reverse chronological order. 387 + */ 388 + export const listDeploymentHistoryHandlerOptions = ( 389 + options: Options<ListDeploymentHistoryHandlerData> 390 + ) => 391 + queryOptions< 392 + ListDeploymentHistoryHandlerResponse, 393 + ListDeploymentHistoryHandlerError, 394 + ListDeploymentHistoryHandlerResponse, 395 + ReturnType<typeof listDeploymentHistoryHandlerQueryKey> 396 + >({ 397 + queryFn: async ({ queryKey, signal }) => { 398 + const { data } = await listDeploymentHistoryHandler({ 399 + ...options, 400 + ...queryKey[0], 401 + signal, 402 + throwOnError: true 403 + }) 404 + return data 405 + }, 406 + queryKey: listDeploymentHistoryHandlerQueryKey(options) 407 + }) 408 + 409 + export const getDeploymentRevisionHandlerQueryKey = ( 410 + options: Options<GetDeploymentRevisionHandlerData> 411 + ) => createQueryKey('getDeploymentRevisionHandler', options) 412 + 413 + /** 414 + * Get deployment revision 415 + * 416 + * Returns details for a specific deployment revision. 417 + */ 418 + export const getDeploymentRevisionHandlerOptions = ( 419 + options: Options<GetDeploymentRevisionHandlerData> 420 + ) => 421 + queryOptions< 422 + GetDeploymentRevisionHandlerResponse, 423 + GetDeploymentRevisionHandlerError, 424 + GetDeploymentRevisionHandlerResponse, 425 + ReturnType<typeof getDeploymentRevisionHandlerQueryKey> 426 + >({ 427 + queryFn: async ({ queryKey, signal }) => { 428 + const { data } = await getDeploymentRevisionHandler({ 429 + ...options, 430 + ...queryKey[0], 431 + signal, 432 + throwOnError: true 433 + }) 434 + return data 435 + }, 436 + queryKey: getDeploymentRevisionHandlerQueryKey(options) 437 + }) 438 + 439 + /** 440 + * Rollback deployment 441 + * 442 + * Deploys a previous successful revision and records a new rollback revision. 443 + */ 444 + export const rollbackDeploymentHandlerMutation = ( 445 + options?: Partial<Options<RollbackDeploymentHandlerData>> 446 + ): UseMutationOptions< 447 + RollbackDeploymentHandlerResponse, 448 + RollbackDeploymentHandlerError, 449 + Options<RollbackDeploymentHandlerData> 450 + > => { 451 + const mutationOptions: UseMutationOptions< 452 + RollbackDeploymentHandlerResponse, 453 + RollbackDeploymentHandlerError, 454 + Options<RollbackDeploymentHandlerData> 455 + > = { 456 + mutationFn: async (fnOptions) => { 457 + const { data } = await rollbackDeploymentHandler({ 458 + ...options, 459 + ...fnOptions, 460 + throwOnError: true 461 + }) 462 + return data 463 + } 464 + } 465 + return mutationOptions 466 + } 467 + 468 + export const listGuildsHandlerQueryKey = (options?: Options<ListGuildsHandlerData>) => 469 + createQueryKey('listGuildsHandler', options) 470 + 471 + /** 472 + * List guilds where the user is an admin and the bot is present. 473 + */ 474 + export const listGuildsHandlerOptions = (options?: Options<ListGuildsHandlerData>) => 475 + queryOptions< 476 + ListGuildsHandlerResponse, 477 + ListGuildsHandlerError, 478 + ListGuildsHandlerResponse, 479 + ReturnType<typeof listGuildsHandlerQueryKey> 480 + >({ 481 + queryFn: async ({ queryKey, signal }) => { 482 + const { data } = await listGuildsHandler({ 483 + ...options, 484 + ...queryKey[0], 485 + signal, 486 + throwOnError: true 487 + }) 488 + return data 489 + }, 490 + queryKey: listGuildsHandlerQueryKey(options) 491 + }) 492 + 493 + export const healthCheckQueryKey = (options?: Options<HealthCheckData>) => 494 + createQueryKey('healthCheck', options) 495 + 496 + /** 497 + * Check API liveness. 498 + */ 499 + export const healthCheckOptions = (options?: Options<HealthCheckData>) => 500 + queryOptions< 501 + HealthCheckResponse, 502 + DefaultError, 503 + HealthCheckResponse, 504 + ReturnType<typeof healthCheckQueryKey> 505 + >({ 506 + queryFn: async ({ queryKey, signal }) => { 507 + const { data } = await healthCheck({ 508 + ...options, 509 + ...queryKey[0], 510 + signal, 511 + throwOnError: true 512 + }) 513 + return data 514 + }, 515 + queryKey: healthCheckQueryKey(options) 516 + }) 517 + 518 + /** 519 + * Export guild stores 520 + * 521 + * Creates a backup of all stores for a guild and returns a backup id. 522 + */ 523 + export const exportGuildHandlerMutation = ( 524 + options?: Partial<Options<ExportGuildHandlerData>> 525 + ): UseMutationOptions< 526 + ExportGuildHandlerResponse, 527 + ExportGuildHandlerError, 528 + Options<ExportGuildHandlerData> 529 + > => { 530 + const mutationOptions: UseMutationOptions< 531 + ExportGuildHandlerResponse, 532 + ExportGuildHandlerError, 533 + Options<ExportGuildHandlerData> 534 + > = { 535 + mutationFn: async (fnOptions) => { 536 + const { data } = await exportGuildHandler({ 537 + ...options, 538 + ...fnOptions, 539 + throwOnError: true 540 + }) 541 + return data 542 + } 543 + } 544 + return mutationOptions 545 + } 546 + 547 + export const listStoresHandlerQueryKey = (options: Options<ListStoresHandlerData>) => 548 + createQueryKey('listStoresHandler', options) 549 + 550 + /** 551 + * List stores 552 + * 553 + * Returns all key-value stores for the specified guild. 554 + */ 555 + export const listStoresHandlerOptions = (options: Options<ListStoresHandlerData>) => 556 + queryOptions< 557 + ListStoresHandlerResponse, 558 + ListStoresHandlerError, 559 + ListStoresHandlerResponse, 560 + ReturnType<typeof listStoresHandlerQueryKey> 561 + >({ 562 + queryFn: async ({ queryKey, signal }) => { 563 + const { data } = await listStoresHandler({ 564 + ...options, 565 + ...queryKey[0], 566 + signal, 567 + throwOnError: true 568 + }) 569 + return data 570 + }, 571 + queryKey: listStoresHandlerQueryKey(options) 572 + }) 573 + 574 + /** 575 + * Create a store 576 + * 577 + * Creates a new key-value store for the specified guild. 578 + */ 579 + export const createStoreHandlerMutation = ( 580 + options?: Partial<Options<CreateStoreHandlerData>> 581 + ): UseMutationOptions< 582 + CreateStoreHandlerResponse, 583 + CreateStoreHandlerError, 584 + Options<CreateStoreHandlerData> 585 + > => { 586 + const mutationOptions: UseMutationOptions< 587 + CreateStoreHandlerResponse, 588 + CreateStoreHandlerError, 589 + Options<CreateStoreHandlerData> 590 + > = { 591 + mutationFn: async (fnOptions) => { 592 + const { data } = await createStoreHandler({ 593 + ...options, 594 + ...fnOptions, 595 + throwOnError: true 596 + }) 597 + return data 598 + } 599 + } 600 + return mutationOptions 601 + } 602 + 603 + /** 604 + * Delete a store 605 + * 606 + * Deletes a store and all stored keys. 607 + */ 608 + export const deleteStoreHandlerMutation = ( 609 + options?: Partial<Options<DeleteStoreHandlerData>> 610 + ): UseMutationOptions<unknown, DeleteStoreHandlerError, Options<DeleteStoreHandlerData>> => { 611 + const mutationOptions: UseMutationOptions< 612 + unknown, 613 + DeleteStoreHandlerError, 614 + Options<DeleteStoreHandlerData> 615 + > = { 616 + mutationFn: async (fnOptions) => { 617 + const { data } = await deleteStoreHandler({ 618 + ...options, 619 + ...fnOptions, 620 + throwOnError: true 621 + }) 622 + return data 623 + } 624 + } 625 + return mutationOptions 626 + } 627 + 628 + export const listKeysHandlerQueryKey = (options: Options<ListKeysHandlerData>) => 629 + createQueryKey('listKeysHandler', options) 630 + 631 + /** 632 + * List keys 633 + * 634 + * Returns keys in a store. Use cursor for pagination when list_complete is false. 635 + */ 636 + export const listKeysHandlerOptions = (options: Options<ListKeysHandlerData>) => 637 + queryOptions< 638 + ListKeysHandlerResponse, 639 + ListKeysHandlerError, 640 + ListKeysHandlerResponse, 641 + ReturnType<typeof listKeysHandlerQueryKey> 642 + >({ 643 + queryFn: async ({ queryKey, signal }) => { 644 + const { data } = await listKeysHandler({ 645 + ...options, 646 + ...queryKey[0], 647 + signal, 648 + throwOnError: true 649 + }) 650 + return data 651 + }, 652 + queryKey: listKeysHandlerQueryKey(options) 653 + }) 654 + 655 + const createInfiniteParams = < 656 + K extends Pick<QueryKey<Options>[0], 'body' | 'headers' | 'path' | 'query'> 657 + >( 658 + queryKey: QueryKey<Options>, 659 + page: K 660 + ) => { 661 + const params = { ...queryKey[0] } 662 + if (page.body) { 663 + params.body = { 664 + ...(queryKey[0].body as any), 665 + ...(page.body as any) 666 + } 667 + } 668 + if (page.headers) { 669 + params.headers = { 670 + ...queryKey[0].headers, 671 + ...page.headers 672 + } 673 + } 674 + if (page.path) { 675 + params.path = { 676 + ...(queryKey[0].path as any), 677 + ...(page.path as any) 678 + } 679 + } 680 + if (page.query) { 681 + params.query = { 682 + ...(queryKey[0].query as any), 683 + ...(page.query as any) 684 + } 685 + } 686 + return params as unknown as typeof page 687 + } 688 + 689 + export const listKeysHandlerInfiniteQueryKey = ( 690 + options: Options<ListKeysHandlerData> 691 + ): QueryKey<Options<ListKeysHandlerData>> => createQueryKey('listKeysHandler', options, true) 692 + 693 + /** 694 + * List keys 695 + * 696 + * Returns keys in a store. Use cursor for pagination when list_complete is false. 697 + */ 698 + export const listKeysHandlerInfiniteOptions = (options: Options<ListKeysHandlerData>) => 699 + infiniteQueryOptions< 700 + ListKeysHandlerResponse, 701 + ListKeysHandlerError, 702 + InfiniteData<ListKeysHandlerResponse>, 703 + QueryKey<Options<ListKeysHandlerData>>, 704 + | string 705 + | null 706 + | Pick<QueryKey<Options<ListKeysHandlerData>>[0], 'body' | 'headers' | 'path' | 'query'> 707 + >( 708 + // @ts-ignore 709 + { 710 + queryFn: async ({ pageParam, queryKey, signal }) => { 711 + // @ts-ignore 712 + const page: Pick< 713 + QueryKey<Options<ListKeysHandlerData>>[0], 714 + 'body' | 'headers' | 'path' | 'query' 715 + > = 716 + typeof pageParam === 'object' 717 + ? pageParam 718 + : { 719 + query: { 720 + cursor: pageParam 721 + } 722 + } 723 + const params = createInfiniteParams(queryKey, page) 724 + const { data } = await listKeysHandler({ 725 + ...options, 726 + ...params, 727 + signal, 728 + throwOnError: true 729 + }) 730 + return data 731 + }, 732 + queryKey: listKeysHandlerInfiniteQueryKey(options) 733 + } 734 + ) 735 + 736 + /** 737 + * Delete a key 738 + * 739 + * Deletes a key from the store if it exists. 740 + */ 741 + export const deleteKeyHandlerMutation = ( 742 + options?: Partial<Options<DeleteKeyHandlerData>> 743 + ): UseMutationOptions<unknown, DeleteKeyHandlerError, Options<DeleteKeyHandlerData>> => { 744 + const mutationOptions: UseMutationOptions< 745 + unknown, 746 + DeleteKeyHandlerError, 747 + Options<DeleteKeyHandlerData> 748 + > = { 749 + mutationFn: async (fnOptions) => { 750 + const { data } = await deleteKeyHandler({ 751 + ...options, 752 + ...fnOptions, 753 + throwOnError: true 754 + }) 755 + return data 756 + } 757 + } 758 + return mutationOptions 759 + } 760 + 761 + export const getValueHandlerQueryKey = (options: Options<GetValueHandlerData>) => 762 + createQueryKey('getValueHandler', options) 763 + 764 + /** 765 + * Get a value 766 + * 767 + * Returns the stored value or null when the key is missing. 768 + */ 769 + export const getValueHandlerOptions = (options: Options<GetValueHandlerData>) => 770 + queryOptions< 771 + GetValueHandlerResponse, 772 + GetValueHandlerError, 773 + GetValueHandlerResponse, 774 + ReturnType<typeof getValueHandlerQueryKey> 775 + >({ 776 + queryFn: async ({ queryKey, signal }) => { 777 + const { data } = await getValueHandler({ 778 + ...options, 779 + ...queryKey[0], 780 + signal, 781 + throwOnError: true 782 + }) 783 + return data 784 + }, 785 + queryKey: getValueHandlerQueryKey(options) 786 + }) 787 + 788 + /** 789 + * Set a value 790 + * 791 + * Creates or replaces a value in the store. Optional expiration controls TTL. 792 + */ 793 + export const setValueHandlerMutation = ( 794 + options?: Partial<Options<SetValueHandlerData>> 795 + ): UseMutationOptions< 796 + SetValueHandlerResponse, 797 + SetValueHandlerError, 798 + Options<SetValueHandlerData> 799 + > => { 800 + const mutationOptions: UseMutationOptions< 801 + SetValueHandlerResponse, 802 + SetValueHandlerError, 803 + Options<SetValueHandlerData> 804 + > = { 805 + mutationFn: async (fnOptions) => { 806 + const { data } = await setValueHandler({ 807 + ...options, 808 + ...fnOptions, 809 + throwOnError: true 810 + }) 811 + return data 812 + } 813 + } 814 + return mutationOptions 815 + } 816 + 817 + export const getLogsQueryKey = (options?: Options<GetLogsData>) => 818 + createQueryKey('getLogs', options) 819 + 820 + /** 821 + * List logs 822 + * 823 + * Returns recent log entries visible to the authenticated user. 824 + */ 825 + export const getLogsOptions = (options?: Options<GetLogsData>) => 826 + queryOptions<GetLogsResponse, GetLogsError, GetLogsResponse, ReturnType<typeof getLogsQueryKey>>({ 827 + queryFn: async ({ queryKey, signal }) => { 828 + const { data } = await getLogs({ 829 + ...options, 830 + ...queryKey[0], 831 + signal, 832 + throwOnError: true 833 + }) 834 + return data 835 + }, 836 + queryKey: getLogsQueryKey(options) 837 + }) 838 + 839 + export const getGuildLogsQueryKey = (options: Options<GetGuildLogsData>) => 840 + createQueryKey('getGuildLogs', options) 841 + 842 + /** 843 + * List guild logs 844 + * 845 + * Returns recent log entries for a specific guild. 846 + */ 847 + export const getGuildLogsOptions = (options: Options<GetGuildLogsData>) => 848 + queryOptions< 849 + GetGuildLogsResponse, 850 + GetGuildLogsError, 851 + GetGuildLogsResponse, 852 + ReturnType<typeof getGuildLogsQueryKey> 853 + >({ 854 + queryFn: async ({ queryKey, signal }) => { 855 + const { data } = await getGuildLogs({ 856 + ...options, 857 + ...queryKey[0], 858 + signal, 859 + throwOnError: true 860 + }) 861 + return data 862 + }, 863 + queryKey: getGuildLogsQueryKey(options) 864 + }) 865 + 866 + export const getMetricsQueryKey = (options?: Options<GetMetricsData>) => 867 + createQueryKey('getMetrics', options) 868 + 869 + /** 870 + * Get metrics in Prometheus exposition format. 871 + */ 872 + export const getMetricsOptions = (options?: Options<GetMetricsData>) => 873 + queryOptions<unknown, GetMetricsError, unknown, ReturnType<typeof getMetricsQueryKey>>({ 874 + queryFn: async ({ queryKey, signal }) => { 875 + const { data } = await getMetrics({ 876 + ...options, 877 + ...queryKey[0], 878 + signal, 879 + throwOnError: true 880 + }) 881 + return data 882 + }, 883 + queryKey: getMetricsQueryKey(options) 884 + }) 885 + 886 + export const getMetricsJsonQueryKey = (options?: Options<GetMetricsJsonData>) => 887 + createQueryKey('getMetricsJson', options) 888 + 889 + /** 890 + * Get metrics as JSON. 891 + */ 892 + export const getMetricsJsonOptions = (options?: Options<GetMetricsJsonData>) => 893 + queryOptions< 894 + GetMetricsJsonResponse, 895 + GetMetricsJsonError, 896 + GetMetricsJsonResponse, 897 + ReturnType<typeof getMetricsJsonQueryKey> 898 + >({ 899 + queryFn: async ({ queryKey, signal }) => { 900 + const { data } = await getMetricsJson({ 901 + ...options, 902 + ...queryKey[0], 903 + signal, 904 + throwOnError: true 905 + }) 906 + return data 907 + }, 908 + queryKey: getMetricsJsonQueryKey(options) 909 + }) 910 + 911 + export const listSecretsHandlerQueryKey = (options: Options<ListSecretsHandlerData>) => 912 + createQueryKey('listSecretsHandler', options) 913 + 914 + /** 915 + * List secrets 916 + * 917 + * Returns metadata for all secrets stored for a guild. Values are never returned. 918 + */ 919 + export const listSecretsHandlerOptions = (options: Options<ListSecretsHandlerData>) => 920 + queryOptions< 921 + ListSecretsHandlerResponse, 922 + ListSecretsHandlerError, 923 + ListSecretsHandlerResponse, 924 + ReturnType<typeof listSecretsHandlerQueryKey> 925 + >({ 926 + queryFn: async ({ queryKey, signal }) => { 927 + const { data } = await listSecretsHandler({ 928 + ...options, 929 + ...queryKey[0], 930 + signal, 931 + throwOnError: true 932 + }) 933 + return data 934 + }, 935 + queryKey: listSecretsHandlerQueryKey(options) 936 + }) 937 + 938 + /** 939 + * Delete a secret 940 + * 941 + * Deletes a secret and refreshes the runtime to remove it. 942 + */ 943 + export const deleteSecretHandlerMutation = ( 944 + options?: Partial<Options<DeleteSecretHandlerData>> 945 + ): UseMutationOptions< 946 + DeleteSecretHandlerResponse, 947 + DeleteSecretHandlerError, 948 + Options<DeleteSecretHandlerData> 949 + > => { 950 + const mutationOptions: UseMutationOptions< 951 + DeleteSecretHandlerResponse, 952 + DeleteSecretHandlerError, 953 + Options<DeleteSecretHandlerData> 954 + > = { 955 + mutationFn: async (fnOptions) => { 956 + const { data } = await deleteSecretHandler({ 957 + ...options, 958 + ...fnOptions, 959 + throwOnError: true 960 + }) 961 + return data 962 + } 963 + } 964 + return mutationOptions 965 + } 966 + 967 + /** 968 + * Upsert a secret 969 + * 970 + * Creates or updates a secret value for a guild and refreshes the runtime. 971 + */ 972 + export const upsertSecretHandlerMutation = ( 973 + options?: Partial<Options<UpsertSecretHandlerData>> 974 + ): UseMutationOptions< 975 + UpsertSecretHandlerResponse, 976 + UpsertSecretHandlerError, 977 + Options<UpsertSecretHandlerData> 978 + > => { 979 + const mutationOptions: UseMutationOptions< 980 + UpsertSecretHandlerResponse, 981 + UpsertSecretHandlerError, 982 + Options<UpsertSecretHandlerData> 983 + > = { 984 + mutationFn: async (fnOptions) => { 985 + const { data } = await upsertSecretHandler({ 986 + ...options, 987 + ...fnOptions, 988 + throwOnError: true 989 + }) 990 + return data 991 + } 992 + } 993 + return mutationOptions 994 + } 995 + 996 + export const listTokensHandlerQueryKey = (options?: Options<ListTokensHandlerData>) => 997 + createQueryKey('listTokensHandler', options) 998 + 999 + /** 1000 + * List tokens 1001 + * 1002 + * Returns metadata for all API tokens owned by the authenticated user. 1003 + */ 1004 + export const listTokensHandlerOptions = (options?: Options<ListTokensHandlerData>) => 1005 + queryOptions< 1006 + ListTokensHandlerResponse, 1007 + ListTokensHandlerError, 1008 + ListTokensHandlerResponse, 1009 + ReturnType<typeof listTokensHandlerQueryKey> 1010 + >({ 1011 + queryFn: async ({ queryKey, signal }) => { 1012 + const { data } = await listTokensHandler({ 1013 + ...options, 1014 + ...queryKey[0], 1015 + signal, 1016 + throwOnError: true 1017 + }) 1018 + return data 1019 + }, 1020 + queryKey: listTokensHandlerQueryKey(options) 1021 + }) 1022 + 1023 + /** 1024 + * Create a token 1025 + * 1026 + * Creates a new API token for the authenticated user. The plaintext token is returned only once. 1027 + */ 1028 + export const createTokenHandlerMutation = ( 1029 + options?: Partial<Options<CreateTokenHandlerData>> 1030 + ): UseMutationOptions< 1031 + CreateTokenHandlerResponse, 1032 + CreateTokenHandlerError, 1033 + Options<CreateTokenHandlerData> 1034 + > => { 1035 + const mutationOptions: UseMutationOptions< 1036 + CreateTokenHandlerResponse, 1037 + CreateTokenHandlerError, 1038 + Options<CreateTokenHandlerData> 1039 + > = { 1040 + mutationFn: async (fnOptions) => { 1041 + const { data } = await createTokenHandler({ 1042 + ...options, 1043 + ...fnOptions, 1044 + throwOnError: true 1045 + }) 1046 + return data 1047 + } 1048 + } 1049 + return mutationOptions 1050 + } 1051 + 1052 + /** 1053 + * Delete a token 1054 + * 1055 + * Deletes the specified token. Requests using this token stop authenticating immediately. 1056 + */ 1057 + export const deleteTokenHandlerMutation = ( 1058 + options?: Partial<Options<DeleteTokenHandlerData>> 1059 + ): UseMutationOptions< 1060 + DeleteTokenHandlerResponse, 1061 + DeleteTokenHandlerError, 1062 + Options<DeleteTokenHandlerData> 1063 + > => { 1064 + const mutationOptions: UseMutationOptions< 1065 + DeleteTokenHandlerResponse, 1066 + DeleteTokenHandlerError, 1067 + Options<DeleteTokenHandlerData> 1068 + > = { 1069 + mutationFn: async (fnOptions) => { 1070 + const { data } = await deleteTokenHandler({ 1071 + ...options, 1072 + ...fnOptions, 1073 + throwOnError: true 1074 + }) 1075 + return data 1076 + } 1077 + } 1078 + return mutationOptions 1079 + }
+18
packages/api-client/src/generated/client.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import { type ClientOptions, type Config, createClient, createConfig } from './client' 4 + import type { ClientOptions as ClientOptions2 } from './types.gen' 5 + 6 + /** 7 + * The `createClientConfig()` function will be called on client initialization 8 + * and the returned object will become the client's initial configuration. 9 + * 10 + * You may want to initialize your client this way instead of calling 11 + * `setConfig()`. This is useful for example if you're using Next.js 12 + * to ensure your client always has the correct values. 13 + */ 14 + export type CreateClientConfig<T extends ClientOptions = ClientOptions2> = ( 15 + override?: Config<ClientOptions & T> 16 + ) => Config<Required<ClientOptions> & T> 17 + 18 + export const client = createClient(createConfig<ClientOptions2>({ baseUrl: '/api' }))
+298
packages/api-client/src/generated/client/client.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import { createSseClient } from '../core/serverSentEvents.gen' 4 + import type { HttpMethod } from '../core/types.gen' 5 + import { getValidRequestBody } from '../core/utils.gen' 6 + import type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen' 7 + import { 8 + buildUrl, 9 + createConfig, 10 + createInterceptors, 11 + getParseAs, 12 + mergeConfigs, 13 + mergeHeaders, 14 + setAuthParams 15 + } from './utils.gen' 16 + 17 + type ReqInit = Omit<RequestInit, 'body' | 'headers'> & { 18 + body?: any 19 + headers: ReturnType<typeof mergeHeaders> 20 + } 21 + 22 + export const createClient = (config: Config = {}): Client => { 23 + let _config = mergeConfigs(createConfig(), config) 24 + 25 + const getConfig = (): Config => ({ ..._config }) 26 + 27 + const setConfig = (config: Config): Config => { 28 + _config = mergeConfigs(_config, config) 29 + return getConfig() 30 + } 31 + 32 + const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>() 33 + 34 + const beforeRequest = async < 35 + TData = unknown, 36 + TResponseStyle extends 'data' | 'fields' = 'fields', 37 + ThrowOnError extends boolean = boolean, 38 + Url extends string = string 39 + >( 40 + options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url> 41 + ) => { 42 + const opts = { 43 + ..._config, 44 + ...options, 45 + fetch: options.fetch ?? _config.fetch ?? globalThis.fetch, 46 + headers: mergeHeaders(_config.headers, options.headers), 47 + serializedBody: undefined as string | undefined 48 + } 49 + 50 + if (opts.security) { 51 + await setAuthParams({ 52 + ...opts, 53 + security: opts.security 54 + }) 55 + } 56 + 57 + if (opts.requestValidator) { 58 + await opts.requestValidator(opts) 59 + } 60 + 61 + if (opts.body !== undefined && opts.bodySerializer) { 62 + opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined 63 + } 64 + 65 + // remove Content-Type header if body is empty to avoid sending invalid requests 66 + if (opts.body === undefined || opts.serializedBody === '') { 67 + opts.headers.delete('Content-Type') 68 + } 69 + 70 + const resolvedOpts = opts as typeof opts & 71 + ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url> 72 + const url = buildUrl(resolvedOpts) 73 + 74 + return { opts: resolvedOpts, url } 75 + } 76 + 77 + const request: Client['request'] = async (options) => { 78 + const { opts, url } = await beforeRequest(options) 79 + const requestInit: ReqInit = { 80 + redirect: 'follow', 81 + ...opts, 82 + body: getValidRequestBody(opts) 83 + } 84 + 85 + let request = new Request(url, requestInit) 86 + 87 + for (const fn of interceptors.request.fns) { 88 + if (fn) { 89 + request = await fn(request, opts) 90 + } 91 + } 92 + 93 + // fetch must be assigned here, otherwise it would throw the error: 94 + // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation 95 + const _fetch = opts.fetch! 96 + let response: Response 97 + 98 + try { 99 + response = await _fetch(request) 100 + } catch (error) { 101 + // Handle fetch exceptions (AbortError, network errors, etc.) 102 + let finalError = error 103 + 104 + for (const fn of interceptors.error.fns) { 105 + if (fn) { 106 + finalError = (await fn(error, undefined as any, request, opts)) as unknown 107 + } 108 + } 109 + 110 + finalError = finalError || ({} as unknown) 111 + 112 + if (opts.throwOnError) { 113 + throw finalError 114 + } 115 + 116 + // Return error response 117 + return opts.responseStyle === 'data' 118 + ? undefined 119 + : { 120 + error: finalError, 121 + request, 122 + response: undefined as any 123 + } 124 + } 125 + 126 + for (const fn of interceptors.response.fns) { 127 + if (fn) { 128 + response = await fn(response, request, opts) 129 + } 130 + } 131 + 132 + const result = { 133 + request, 134 + response 135 + } 136 + 137 + if (response.ok) { 138 + const parseAs = 139 + (opts.parseAs === 'auto' 140 + ? getParseAs(response.headers.get('Content-Type')) 141 + : opts.parseAs) ?? 'json' 142 + 143 + if (response.status === 204 || response.headers.get('Content-Length') === '0') { 144 + let emptyData: any 145 + switch (parseAs) { 146 + case 'arrayBuffer': 147 + case 'blob': 148 + case 'text': 149 + emptyData = await response[parseAs]() 150 + break 151 + case 'formData': 152 + emptyData = new FormData() 153 + break 154 + case 'stream': 155 + emptyData = response.body 156 + break 157 + case 'json': 158 + default: 159 + emptyData = {} 160 + break 161 + } 162 + return opts.responseStyle === 'data' 163 + ? emptyData 164 + : { 165 + data: emptyData, 166 + ...result 167 + } 168 + } 169 + 170 + let data: any 171 + switch (parseAs) { 172 + case 'arrayBuffer': 173 + case 'blob': 174 + case 'formData': 175 + case 'text': 176 + data = await response[parseAs]() 177 + break 178 + case 'json': { 179 + // Some servers return 200 with no Content-Length and empty body. 180 + // response.json() would throw; read as text and parse if non-empty. 181 + const text = await response.text() 182 + data = text ? JSON.parse(text) : {} 183 + break 184 + } 185 + case 'stream': 186 + return opts.responseStyle === 'data' 187 + ? response.body 188 + : { 189 + data: response.body, 190 + ...result 191 + } 192 + } 193 + 194 + if (parseAs === 'json') { 195 + if (opts.responseValidator) { 196 + await opts.responseValidator(data) 197 + } 198 + 199 + if (opts.responseTransformer) { 200 + data = await opts.responseTransformer(data) 201 + } 202 + } 203 + 204 + return opts.responseStyle === 'data' 205 + ? data 206 + : { 207 + data, 208 + ...result 209 + } 210 + } 211 + 212 + const textError = await response.text() 213 + let jsonError: unknown 214 + 215 + try { 216 + jsonError = JSON.parse(textError) 217 + } catch { 218 + // noop 219 + } 220 + 221 + const error = jsonError ?? textError 222 + let finalError = error 223 + 224 + for (const fn of interceptors.error.fns) { 225 + if (fn) { 226 + finalError = (await fn(error, response, request, opts)) as string 227 + } 228 + } 229 + 230 + finalError = finalError || ({} as string) 231 + 232 + if (opts.throwOnError) { 233 + throw finalError 234 + } 235 + 236 + // TODO: we probably want to return error and improve types 237 + return opts.responseStyle === 'data' 238 + ? undefined 239 + : { 240 + error: finalError, 241 + ...result 242 + } 243 + } 244 + 245 + const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) => 246 + request({ ...options, method }) 247 + 248 + const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => { 249 + const { opts, url } = await beforeRequest(options) 250 + return createSseClient({ 251 + ...opts, 252 + body: opts.body as BodyInit | null | undefined, 253 + headers: opts.headers as unknown as Record<string, string>, 254 + method, 255 + onRequest: async (url, init) => { 256 + let request = new Request(url, init) 257 + for (const fn of interceptors.request.fns) { 258 + if (fn) { 259 + request = await fn(request, opts) 260 + } 261 + } 262 + return request 263 + }, 264 + serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined, 265 + url 266 + }) 267 + } 268 + 269 + const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options }) 270 + 271 + return { 272 + buildUrl: _buildUrl, 273 + connect: makeMethodFn('CONNECT'), 274 + delete: makeMethodFn('DELETE'), 275 + get: makeMethodFn('GET'), 276 + getConfig, 277 + head: makeMethodFn('HEAD'), 278 + interceptors, 279 + options: makeMethodFn('OPTIONS'), 280 + patch: makeMethodFn('PATCH'), 281 + post: makeMethodFn('POST'), 282 + put: makeMethodFn('PUT'), 283 + request, 284 + setConfig, 285 + sse: { 286 + connect: makeSseFn('CONNECT'), 287 + delete: makeSseFn('DELETE'), 288 + get: makeSseFn('GET'), 289 + head: makeSseFn('HEAD'), 290 + options: makeSseFn('OPTIONS'), 291 + patch: makeSseFn('PATCH'), 292 + post: makeSseFn('POST'), 293 + put: makeSseFn('PUT'), 294 + trace: makeSseFn('TRACE') 295 + }, 296 + trace: makeMethodFn('TRACE') 297 + } as Client 298 + }
+25
packages/api-client/src/generated/client/index.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type { Auth } from '../core/auth.gen' 4 + export type { QuerySerializerOptions } from '../core/bodySerializer.gen' 5 + export { 6 + formDataBodySerializer, 7 + jsonBodySerializer, 8 + urlSearchParamsBodySerializer 9 + } from '../core/bodySerializer.gen' 10 + export { buildClientParams } from '../core/params.gen' 11 + export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen' 12 + export { createClient } from './client.gen' 13 + export type { 14 + Client, 15 + ClientOptions, 16 + Config, 17 + CreateClientConfig, 18 + Options, 19 + RequestOptions, 20 + RequestResult, 21 + ResolvedRequestOptions, 22 + ResponseStyle, 23 + TDataShape 24 + } from './types.gen' 25 + export { createConfig, mergeHeaders } from './utils.gen'
+211
packages/api-client/src/generated/client/types.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { Auth } from '../core/auth.gen' 4 + import type { ServerSentEventsOptions, ServerSentEventsResult } from '../core/serverSentEvents.gen' 5 + import type { Client as CoreClient, Config as CoreConfig } from '../core/types.gen' 6 + import type { Middleware } from './utils.gen' 7 + 8 + export type ResponseStyle = 'data' | 'fields' 9 + 10 + export interface Config<T extends ClientOptions = ClientOptions> 11 + extends Omit<RequestInit, 'body' | 'headers' | 'method'>, CoreConfig { 12 + /** 13 + * Base URL for all requests made by this client. 14 + */ 15 + baseUrl?: T['baseUrl'] 16 + /** 17 + * Fetch API implementation. You can use this option to provide a custom 18 + * fetch instance. 19 + * 20 + * @default globalThis.fetch 21 + */ 22 + fetch?: typeof fetch 23 + /** 24 + * Please don't use the Fetch client for Next.js applications. The `next` 25 + * options won't have any effect. 26 + * 27 + * Install {@link https://www.npmjs.com/package/@hey-api/client-next `@hey-api/client-next`} instead. 28 + */ 29 + next?: never 30 + /** 31 + * Return the response data parsed in a specified format. By default, `auto` 32 + * will infer the appropriate method from the `Content-Type` response header. 33 + * You can override this behavior with any of the {@link Body} methods. 34 + * Select `stream` if you don't want to parse response data at all. 35 + * 36 + * @default 'auto' 37 + */ 38 + parseAs?: 'arrayBuffer' | 'auto' | 'blob' | 'formData' | 'json' | 'stream' | 'text' 39 + /** 40 + * Should we return only data or multiple fields (data, error, response, etc.)? 41 + * 42 + * @default 'fields' 43 + */ 44 + responseStyle?: ResponseStyle 45 + /** 46 + * Throw an error instead of returning it in the response? 47 + * 48 + * @default false 49 + */ 50 + throwOnError?: T['throwOnError'] 51 + } 52 + 53 + export interface RequestOptions< 54 + TData = unknown, 55 + TResponseStyle extends ResponseStyle = 'fields', 56 + ThrowOnError extends boolean = boolean, 57 + Url extends string = string 58 + > 59 + extends 60 + Config<{ 61 + responseStyle: TResponseStyle 62 + throwOnError: ThrowOnError 63 + }>, 64 + Pick< 65 + ServerSentEventsOptions<TData>, 66 + | 'onRequest' 67 + | 'onSseError' 68 + | 'onSseEvent' 69 + | 'sseDefaultRetryDelay' 70 + | 'sseMaxRetryAttempts' 71 + | 'sseMaxRetryDelay' 72 + > { 73 + /** 74 + * Any body that you want to add to your request. 75 + * 76 + * {@link https://developer.mozilla.org/docs/Web/API/fetch#body} 77 + */ 78 + body?: unknown 79 + path?: Record<string, unknown> 80 + query?: Record<string, unknown> 81 + /** 82 + * Security mechanism(s) to use for the request. 83 + */ 84 + security?: ReadonlyArray<Auth> 85 + url: Url 86 + } 87 + 88 + export interface ResolvedRequestOptions< 89 + TResponseStyle extends ResponseStyle = 'fields', 90 + ThrowOnError extends boolean = boolean, 91 + Url extends string = string 92 + > extends RequestOptions<unknown, TResponseStyle, ThrowOnError, Url> { 93 + serializedBody?: string 94 + } 95 + 96 + export type RequestResult< 97 + TData = unknown, 98 + TError = unknown, 99 + ThrowOnError extends boolean = boolean, 100 + TResponseStyle extends ResponseStyle = 'fields' 101 + > = ThrowOnError extends true 102 + ? Promise< 103 + TResponseStyle extends 'data' 104 + ? TData extends Record<string, unknown> 105 + ? TData[keyof TData] 106 + : TData 107 + : { 108 + data: TData extends Record<string, unknown> ? TData[keyof TData] : TData 109 + request: Request 110 + response: Response 111 + } 112 + > 113 + : Promise< 114 + TResponseStyle extends 'data' 115 + ? (TData extends Record<string, unknown> ? TData[keyof TData] : TData) | undefined 116 + : ( 117 + | { 118 + data: TData extends Record<string, unknown> ? TData[keyof TData] : TData 119 + error: undefined 120 + } 121 + | { 122 + data: undefined 123 + error: TError extends Record<string, unknown> ? TError[keyof TError] : TError 124 + } 125 + ) & { 126 + request: Request 127 + response: Response 128 + } 129 + > 130 + 131 + export interface ClientOptions { 132 + baseUrl?: string 133 + responseStyle?: ResponseStyle 134 + throwOnError?: boolean 135 + } 136 + 137 + type MethodFn = < 138 + TData = unknown, 139 + TError = unknown, 140 + ThrowOnError extends boolean = false, 141 + TResponseStyle extends ResponseStyle = 'fields' 142 + >( 143 + options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, 'method'> 144 + ) => RequestResult<TData, TError, ThrowOnError, TResponseStyle> 145 + 146 + type SseFn = < 147 + TData = unknown, 148 + TError = unknown, 149 + ThrowOnError extends boolean = false, 150 + TResponseStyle extends ResponseStyle = 'fields' 151 + >( 152 + options: Omit<RequestOptions<never, TResponseStyle, ThrowOnError>, 'method'> 153 + ) => Promise<ServerSentEventsResult<TData, TError>> 154 + 155 + type RequestFn = < 156 + TData = unknown, 157 + TError = unknown, 158 + ThrowOnError extends boolean = false, 159 + TResponseStyle extends ResponseStyle = 'fields' 160 + >( 161 + options: Omit<RequestOptions<TData, TResponseStyle, ThrowOnError>, 'method'> & 162 + Pick<Required<RequestOptions<TData, TResponseStyle, ThrowOnError>>, 'method'> 163 + ) => RequestResult<TData, TError, ThrowOnError, TResponseStyle> 164 + 165 + type BuildUrlFn = < 166 + TData extends { 167 + body?: unknown 168 + path?: Record<string, unknown> 169 + query?: Record<string, unknown> 170 + url: string 171 + } 172 + >( 173 + options: TData & Options<TData> 174 + ) => string 175 + 176 + export type Client = CoreClient<RequestFn, Config, MethodFn, BuildUrlFn, SseFn> & { 177 + interceptors: Middleware<Request, Response, unknown, ResolvedRequestOptions> 178 + } 179 + 180 + /** 181 + * The `createClientConfig()` function will be called on client initialization 182 + * and the returned object will become the client's initial configuration. 183 + * 184 + * You may want to initialize your client this way instead of calling 185 + * `setConfig()`. This is useful for example if you're using Next.js 186 + * to ensure your client always has the correct values. 187 + */ 188 + export type CreateClientConfig<T extends ClientOptions = ClientOptions> = ( 189 + override?: Config<ClientOptions & T> 190 + ) => Config<Required<ClientOptions> & T> 191 + 192 + export interface TDataShape { 193 + body?: unknown 194 + headers?: unknown 195 + path?: unknown 196 + query?: unknown 197 + url: string 198 + } 199 + 200 + type OmitKeys<T, K> = Pick<T, Exclude<keyof T, K>> 201 + 202 + export type Options< 203 + TData extends TDataShape = TDataShape, 204 + ThrowOnError extends boolean = boolean, 205 + TResponse = unknown, 206 + TResponseStyle extends ResponseStyle = 'fields' 207 + > = OmitKeys< 208 + RequestOptions<TResponse, TResponseStyle, ThrowOnError>, 209 + 'body' | 'path' | 'query' | 'url' 210 + > & 211 + ([TData] extends [never] ? unknown : Omit<TData, 'url'>)
+316
packages/api-client/src/generated/client/utils.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import { getAuthToken } from '../core/auth.gen' 4 + import type { QuerySerializerOptions } from '../core/bodySerializer.gen' 5 + import { jsonBodySerializer } from '../core/bodySerializer.gen' 6 + import { 7 + serializeArrayParam, 8 + serializeObjectParam, 9 + serializePrimitiveParam 10 + } from '../core/pathSerializer.gen' 11 + import { getUrl } from '../core/utils.gen' 12 + import type { Client, ClientOptions, Config, RequestOptions } from './types.gen' 13 + 14 + export const createQuerySerializer = <T = unknown>({ 15 + parameters = {}, 16 + ...args 17 + }: QuerySerializerOptions = {}) => { 18 + const querySerializer = (queryParams: T) => { 19 + const search: string[] = [] 20 + if (queryParams && typeof queryParams === 'object') { 21 + for (const name in queryParams) { 22 + const value = queryParams[name] 23 + 24 + if (value === undefined || value === null) { 25 + continue 26 + } 27 + 28 + const options = parameters[name] || args 29 + 30 + if (Array.isArray(value)) { 31 + const serializedArray = serializeArrayParam({ 32 + allowReserved: options.allowReserved, 33 + explode: true, 34 + name, 35 + style: 'form', 36 + value, 37 + ...options.array 38 + }) 39 + if (serializedArray) search.push(serializedArray) 40 + } else if (typeof value === 'object') { 41 + const serializedObject = serializeObjectParam({ 42 + allowReserved: options.allowReserved, 43 + explode: true, 44 + name, 45 + style: 'deepObject', 46 + value: value as Record<string, unknown>, 47 + ...options.object 48 + }) 49 + if (serializedObject) search.push(serializedObject) 50 + } else { 51 + const serializedPrimitive = serializePrimitiveParam({ 52 + allowReserved: options.allowReserved, 53 + name, 54 + value: value as string 55 + }) 56 + if (serializedPrimitive) search.push(serializedPrimitive) 57 + } 58 + } 59 + } 60 + return search.join('&') 61 + } 62 + return querySerializer 63 + } 64 + 65 + /** 66 + * Infers parseAs value from provided Content-Type header. 67 + */ 68 + export const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => { 69 + if (!contentType) { 70 + // If no Content-Type header is provided, the best we can do is return the raw response body, 71 + // which is effectively the same as the 'stream' option. 72 + return 'stream' 73 + } 74 + 75 + const cleanContent = contentType.split(';')[0]?.trim() 76 + 77 + if (!cleanContent) { 78 + return 79 + } 80 + 81 + if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) { 82 + return 'json' 83 + } 84 + 85 + if (cleanContent === 'multipart/form-data') { 86 + return 'formData' 87 + } 88 + 89 + if ( 90 + ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type)) 91 + ) { 92 + return 'blob' 93 + } 94 + 95 + if (cleanContent.startsWith('text/')) { 96 + return 'text' 97 + } 98 + 99 + return 100 + } 101 + 102 + const checkForExistence = ( 103 + options: Pick<RequestOptions, 'auth' | 'query'> & { 104 + headers: Headers 105 + }, 106 + name?: string 107 + ): boolean => { 108 + if (!name) { 109 + return false 110 + } 111 + if ( 112 + options.headers.has(name) || 113 + options.query?.[name] || 114 + options.headers.get('Cookie')?.includes(`${name}=`) 115 + ) { 116 + return true 117 + } 118 + return false 119 + } 120 + 121 + export const setAuthParams = async ({ 122 + security, 123 + ...options 124 + }: Pick<Required<RequestOptions>, 'security'> & 125 + Pick<RequestOptions, 'auth' | 'query'> & { 126 + headers: Headers 127 + }) => { 128 + for (const auth of security) { 129 + if (checkForExistence(options, auth.name)) { 130 + continue 131 + } 132 + 133 + const token = await getAuthToken(auth, options.auth) 134 + 135 + if (!token) { 136 + continue 137 + } 138 + 139 + const name = auth.name ?? 'Authorization' 140 + 141 + switch (auth.in) { 142 + case 'query': 143 + if (!options.query) { 144 + options.query = {} 145 + } 146 + options.query[name] = token 147 + break 148 + case 'cookie': 149 + options.headers.append('Cookie', `${name}=${token}`) 150 + break 151 + case 'header': 152 + default: 153 + options.headers.set(name, token) 154 + break 155 + } 156 + } 157 + } 158 + 159 + export const buildUrl: Client['buildUrl'] = (options) => 160 + getUrl({ 161 + baseUrl: options.baseUrl as string, 162 + path: options.path, 163 + query: options.query, 164 + querySerializer: 165 + typeof options.querySerializer === 'function' 166 + ? options.querySerializer 167 + : createQuerySerializer(options.querySerializer), 168 + url: options.url 169 + }) 170 + 171 + export const mergeConfigs = (a: Config, b: Config): Config => { 172 + const config = { ...a, ...b } 173 + if (config.baseUrl?.endsWith('/')) { 174 + config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1) 175 + } 176 + config.headers = mergeHeaders(a.headers, b.headers) 177 + return config 178 + } 179 + 180 + const headersEntries = (headers: Headers): Array<[string, string]> => { 181 + const entries: Array<[string, string]> = [] 182 + headers.forEach((value, key) => { 183 + entries.push([key, value]) 184 + }) 185 + return entries 186 + } 187 + 188 + export const mergeHeaders = ( 189 + ...headers: Array<Required<Config>['headers'] | undefined> 190 + ): Headers => { 191 + const mergedHeaders = new Headers() 192 + for (const header of headers) { 193 + if (!header) { 194 + continue 195 + } 196 + 197 + const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header) 198 + 199 + for (const [key, value] of iterator) { 200 + if (value === null) { 201 + mergedHeaders.delete(key) 202 + } else if (Array.isArray(value)) { 203 + for (const v of value) { 204 + mergedHeaders.append(key, v as string) 205 + } 206 + } else if (value !== undefined) { 207 + // assume object headers are meant to be JSON stringified, i.e., their 208 + // content value in OpenAPI specification is 'application/json' 209 + mergedHeaders.set( 210 + key, 211 + typeof value === 'object' ? JSON.stringify(value) : (value as string) 212 + ) 213 + } 214 + } 215 + } 216 + return mergedHeaders 217 + } 218 + 219 + type ErrInterceptor<Err, Res, Req, Options> = ( 220 + error: Err, 221 + response: Res, 222 + request: Req, 223 + options: Options 224 + ) => Err | Promise<Err> 225 + 226 + type ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req> 227 + 228 + type ResInterceptor<Res, Req, Options> = ( 229 + response: Res, 230 + request: Req, 231 + options: Options 232 + ) => Res | Promise<Res> 233 + 234 + class Interceptors<Interceptor> { 235 + fns: Array<Interceptor | null> = [] 236 + 237 + clear(): void { 238 + this.fns = [] 239 + } 240 + 241 + eject(id: number | Interceptor): void { 242 + const index = this.getInterceptorIndex(id) 243 + if (this.fns[index]) { 244 + this.fns[index] = null 245 + } 246 + } 247 + 248 + exists(id: number | Interceptor): boolean { 249 + const index = this.getInterceptorIndex(id) 250 + return Boolean(this.fns[index]) 251 + } 252 + 253 + getInterceptorIndex(id: number | Interceptor): number { 254 + if (typeof id === 'number') { 255 + return this.fns[id] ? id : -1 256 + } 257 + return this.fns.indexOf(id) 258 + } 259 + 260 + update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false { 261 + const index = this.getInterceptorIndex(id) 262 + if (this.fns[index]) { 263 + this.fns[index] = fn 264 + return id 265 + } 266 + return false 267 + } 268 + 269 + use(fn: Interceptor): number { 270 + this.fns.push(fn) 271 + return this.fns.length - 1 272 + } 273 + } 274 + 275 + export interface Middleware<Req, Res, Err, Options> { 276 + error: Interceptors<ErrInterceptor<Err, Res, Req, Options>> 277 + request: Interceptors<ReqInterceptor<Req, Options>> 278 + response: Interceptors<ResInterceptor<Res, Req, Options>> 279 + } 280 + 281 + export const createInterceptors = <Req, Res, Err, Options>(): Middleware< 282 + Req, 283 + Res, 284 + Err, 285 + Options 286 + > => ({ 287 + error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(), 288 + request: new Interceptors<ReqInterceptor<Req, Options>>(), 289 + response: new Interceptors<ResInterceptor<Res, Req, Options>>() 290 + }) 291 + 292 + const defaultQuerySerializer = createQuerySerializer({ 293 + allowReserved: false, 294 + array: { 295 + explode: true, 296 + style: 'form' 297 + }, 298 + object: { 299 + explode: true, 300 + style: 'deepObject' 301 + } 302 + }) 303 + 304 + const defaultHeaders = { 305 + 'Content-Type': 'application/json' 306 + } 307 + 308 + export const createConfig = <T extends ClientOptions = ClientOptions>( 309 + override: Config<Omit<ClientOptions, keyof T> & T> = {} 310 + ): Config<Omit<ClientOptions, keyof T> & T> => ({ 311 + ...jsonBodySerializer, 312 + headers: defaultHeaders, 313 + parseAs: 'auto', 314 + querySerializer: defaultQuerySerializer, 315 + ...override 316 + })
+41
packages/api-client/src/generated/core/auth.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type AuthToken = string | undefined 4 + 5 + export interface Auth { 6 + /** 7 + * Which part of the request do we use to send the auth? 8 + * 9 + * @default 'header' 10 + */ 11 + in?: 'header' | 'query' | 'cookie' 12 + /** 13 + * Header or query parameter name. 14 + * 15 + * @default 'Authorization' 16 + */ 17 + name?: string 18 + scheme?: 'basic' | 'bearer' 19 + type: 'apiKey' | 'http' 20 + } 21 + 22 + export const getAuthToken = async ( 23 + auth: Auth, 24 + callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken 25 + ): Promise<string | undefined> => { 26 + const token = typeof callback === 'function' ? await callback(auth) : callback 27 + 28 + if (!token) { 29 + return 30 + } 31 + 32 + if (auth.scheme === 'bearer') { 33 + return `Bearer ${token}` 34 + } 35 + 36 + if (auth.scheme === 'basic') { 37 + return `Basic ${btoa(token)}` 38 + } 39 + 40 + return token 41 + }
+82
packages/api-client/src/generated/core/bodySerializer.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen' 4 + 5 + export type QuerySerializer = (query: Record<string, unknown>) => string 6 + 7 + export type BodySerializer = (body: unknown) => unknown 8 + 9 + type QuerySerializerOptionsObject = { 10 + allowReserved?: boolean 11 + array?: Partial<SerializerOptions<ArrayStyle>> 12 + object?: Partial<SerializerOptions<ObjectStyle>> 13 + } 14 + 15 + export type QuerySerializerOptions = QuerySerializerOptionsObject & { 16 + /** 17 + * Per-parameter serialization overrides. When provided, these settings 18 + * override the global array/object settings for specific parameter names. 19 + */ 20 + parameters?: Record<string, QuerySerializerOptionsObject> 21 + } 22 + 23 + const serializeFormDataPair = (data: FormData, key: string, value: unknown): void => { 24 + if (typeof value === 'string' || value instanceof Blob) { 25 + data.append(key, value) 26 + } else if (value instanceof Date) { 27 + data.append(key, value.toISOString()) 28 + } else { 29 + data.append(key, JSON.stringify(value)) 30 + } 31 + } 32 + 33 + const serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => { 34 + if (typeof value === 'string') { 35 + data.append(key, value) 36 + } else { 37 + data.append(key, JSON.stringify(value)) 38 + } 39 + } 40 + 41 + export const formDataBodySerializer = { 42 + bodySerializer: (body: unknown): FormData => { 43 + const data = new FormData() 44 + 45 + Object.entries(body as Record<string, unknown>).forEach(([key, value]) => { 46 + if (value === undefined || value === null) { 47 + return 48 + } 49 + if (Array.isArray(value)) { 50 + value.forEach((v) => serializeFormDataPair(data, key, v)) 51 + } else { 52 + serializeFormDataPair(data, key, value) 53 + } 54 + }) 55 + 56 + return data 57 + } 58 + } 59 + 60 + export const jsonBodySerializer = { 61 + bodySerializer: (body: unknown): string => 62 + JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)) 63 + } 64 + 65 + export const urlSearchParamsBodySerializer = { 66 + bodySerializer: (body: unknown): string => { 67 + const data = new URLSearchParams() 68 + 69 + Object.entries(body as Record<string, unknown>).forEach(([key, value]) => { 70 + if (value === undefined || value === null) { 71 + return 72 + } 73 + if (Array.isArray(value)) { 74 + value.forEach((v) => serializeUrlSearchParamsPair(data, key, v)) 75 + } else { 76 + serializeUrlSearchParamsPair(data, key, value) 77 + } 78 + }) 79 + 80 + return data.toString() 81 + } 82 + }
+169
packages/api-client/src/generated/core/params.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + type Slot = 'body' | 'headers' | 'path' | 'query' 4 + 5 + export type Field = 6 + | { 7 + in: Exclude<Slot, 'body'> 8 + /** 9 + * Field name. This is the name we want the user to see and use. 10 + */ 11 + key: string 12 + /** 13 + * Field mapped name. This is the name we want to use in the request. 14 + * If omitted, we use the same value as `key`. 15 + */ 16 + map?: string 17 + } 18 + | { 19 + in: Extract<Slot, 'body'> 20 + /** 21 + * Key isn't required for bodies. 22 + */ 23 + key?: string 24 + map?: string 25 + } 26 + | { 27 + /** 28 + * Field name. This is the name we want the user to see and use. 29 + */ 30 + key: string 31 + /** 32 + * Field mapped name. This is the name we want to use in the request. 33 + * If `in` is omitted, `map` aliases `key` to the transport layer. 34 + */ 35 + map: Slot 36 + } 37 + 38 + export interface Fields { 39 + allowExtra?: Partial<Record<Slot, boolean>> 40 + args?: ReadonlyArray<Field> 41 + } 42 + 43 + export type FieldsConfig = ReadonlyArray<Field | Fields> 44 + 45 + const extraPrefixesMap: Record<string, Slot> = { 46 + $body_: 'body', 47 + $headers_: 'headers', 48 + $path_: 'path', 49 + $query_: 'query' 50 + } 51 + const extraPrefixes = Object.entries(extraPrefixesMap) 52 + 53 + type KeyMap = Map< 54 + string, 55 + | { 56 + in: Slot 57 + map?: string 58 + } 59 + | { 60 + in?: never 61 + map: Slot 62 + } 63 + > 64 + 65 + const buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => { 66 + if (!map) { 67 + map = new Map() 68 + } 69 + 70 + for (const config of fields) { 71 + if ('in' in config) { 72 + if (config.key) { 73 + map.set(config.key, { 74 + in: config.in, 75 + map: config.map 76 + }) 77 + } 78 + } else if ('key' in config) { 79 + map.set(config.key, { 80 + map: config.map 81 + }) 82 + } else if (config.args) { 83 + buildKeyMap(config.args, map) 84 + } 85 + } 86 + 87 + return map 88 + } 89 + 90 + interface Params { 91 + body: unknown 92 + headers: Record<string, unknown> 93 + path: Record<string, unknown> 94 + query: Record<string, unknown> 95 + } 96 + 97 + const stripEmptySlots = (params: Params) => { 98 + for (const [slot, value] of Object.entries(params)) { 99 + if (value && typeof value === 'object' && !Array.isArray(value) && !Object.keys(value).length) { 100 + delete params[slot as Slot] 101 + } 102 + } 103 + } 104 + 105 + export const buildClientParams = (args: ReadonlyArray<unknown>, fields: FieldsConfig) => { 106 + const params: Params = { 107 + body: {}, 108 + headers: {}, 109 + path: {}, 110 + query: {} 111 + } 112 + 113 + const map = buildKeyMap(fields) 114 + 115 + let config: FieldsConfig[number] | undefined 116 + 117 + for (const [index, arg] of args.entries()) { 118 + if (fields[index]) { 119 + config = fields[index] 120 + } 121 + 122 + if (!config) { 123 + continue 124 + } 125 + 126 + if ('in' in config) { 127 + if (config.key) { 128 + const field = map.get(config.key)! 129 + const name = field.map || config.key 130 + if (field.in) { 131 + ;(params[field.in] as Record<string, unknown>)[name] = arg 132 + } 133 + } else { 134 + params.body = arg 135 + } 136 + } else { 137 + for (const [key, value] of Object.entries(arg ?? {})) { 138 + const field = map.get(key) 139 + 140 + if (field) { 141 + if (field.in) { 142 + const name = field.map || key 143 + ;(params[field.in] as Record<string, unknown>)[name] = value 144 + } else { 145 + params[field.map] = value 146 + } 147 + } else { 148 + const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix)) 149 + 150 + if (extra) { 151 + const [prefix, slot] = extra 152 + ;(params[slot] as Record<string, unknown>)[key.slice(prefix.length)] = value 153 + } else if ('allowExtra' in config && config.allowExtra) { 154 + for (const [slot, allowed] of Object.entries(config.allowExtra)) { 155 + if (allowed) { 156 + ;(params[slot as Slot] as Record<string, unknown>)[key] = value 157 + break 158 + } 159 + } 160 + } 161 + } 162 + } 163 + } 164 + } 165 + 166 + stripEmptySlots(params) 167 + 168 + return params 169 + }
+171
packages/api-client/src/generated/core/pathSerializer.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + interface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {} 4 + 5 + interface SerializePrimitiveOptions { 6 + allowReserved?: boolean 7 + name: string 8 + } 9 + 10 + export interface SerializerOptions<T> { 11 + /** 12 + * @default true 13 + */ 14 + explode: boolean 15 + style: T 16 + } 17 + 18 + export type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited' 19 + export type ArraySeparatorStyle = ArrayStyle | MatrixStyle 20 + type MatrixStyle = 'label' | 'matrix' | 'simple' 21 + export type ObjectStyle = 'form' | 'deepObject' 22 + type ObjectSeparatorStyle = ObjectStyle | MatrixStyle 23 + 24 + interface SerializePrimitiveParam extends SerializePrimitiveOptions { 25 + value: string 26 + } 27 + 28 + export const separatorArrayExplode = (style: ArraySeparatorStyle) => { 29 + switch (style) { 30 + case 'label': 31 + return '.' 32 + case 'matrix': 33 + return ';' 34 + case 'simple': 35 + return ',' 36 + default: 37 + return '&' 38 + } 39 + } 40 + 41 + export const separatorArrayNoExplode = (style: ArraySeparatorStyle) => { 42 + switch (style) { 43 + case 'form': 44 + return ',' 45 + case 'pipeDelimited': 46 + return '|' 47 + case 'spaceDelimited': 48 + return '%20' 49 + default: 50 + return ',' 51 + } 52 + } 53 + 54 + export const separatorObjectExplode = (style: ObjectSeparatorStyle) => { 55 + switch (style) { 56 + case 'label': 57 + return '.' 58 + case 'matrix': 59 + return ';' 60 + case 'simple': 61 + return ',' 62 + default: 63 + return '&' 64 + } 65 + } 66 + 67 + export const serializeArrayParam = ({ 68 + allowReserved, 69 + explode, 70 + name, 71 + style, 72 + value 73 + }: SerializeOptions<ArraySeparatorStyle> & { 74 + value: unknown[] 75 + }) => { 76 + if (!explode) { 77 + const joinedValues = ( 78 + allowReserved ? value : value.map((v) => encodeURIComponent(v as string)) 79 + ).join(separatorArrayNoExplode(style)) 80 + switch (style) { 81 + case 'label': 82 + return `.${joinedValues}` 83 + case 'matrix': 84 + return `;${name}=${joinedValues}` 85 + case 'simple': 86 + return joinedValues 87 + default: 88 + return `${name}=${joinedValues}` 89 + } 90 + } 91 + 92 + const separator = separatorArrayExplode(style) 93 + const joinedValues = value 94 + .map((v) => { 95 + if (style === 'label' || style === 'simple') { 96 + return allowReserved ? v : encodeURIComponent(v as string) 97 + } 98 + 99 + return serializePrimitiveParam({ 100 + allowReserved, 101 + name, 102 + value: v as string 103 + }) 104 + }) 105 + .join(separator) 106 + return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues 107 + } 108 + 109 + export const serializePrimitiveParam = ({ 110 + allowReserved, 111 + name, 112 + value 113 + }: SerializePrimitiveParam) => { 114 + if (value === undefined || value === null) { 115 + return '' 116 + } 117 + 118 + if (typeof value === 'object') { 119 + throw new Error( 120 + 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.' 121 + ) 122 + } 123 + 124 + return `${name}=${allowReserved ? value : encodeURIComponent(value)}` 125 + } 126 + 127 + export const serializeObjectParam = ({ 128 + allowReserved, 129 + explode, 130 + name, 131 + style, 132 + value, 133 + valueOnly 134 + }: SerializeOptions<ObjectSeparatorStyle> & { 135 + value: Record<string, unknown> | Date 136 + valueOnly?: boolean 137 + }) => { 138 + if (value instanceof Date) { 139 + return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}` 140 + } 141 + 142 + if (style !== 'deepObject' && !explode) { 143 + let values: string[] = [] 144 + Object.entries(value).forEach(([key, v]) => { 145 + values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)] 146 + }) 147 + const joinedValues = values.join(',') 148 + switch (style) { 149 + case 'form': 150 + return `${name}=${joinedValues}` 151 + case 'label': 152 + return `.${joinedValues}` 153 + case 'matrix': 154 + return `;${name}=${joinedValues}` 155 + default: 156 + return joinedValues 157 + } 158 + } 159 + 160 + const separator = separatorObjectExplode(style) 161 + const joinedValues = Object.entries(value) 162 + .map(([key, v]) => 163 + serializePrimitiveParam({ 164 + allowReserved, 165 + name: style === 'deepObject' ? `${name}[${key}]` : key, 166 + value: v as string 167 + }) 168 + ) 169 + .join(separator) 170 + return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues 171 + }
+117
packages/api-client/src/generated/core/queryKeySerializer.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + /** 4 + * JSON-friendly union that mirrors what Pinia Colada can hash. 5 + */ 6 + export type JsonValue = 7 + | null 8 + | string 9 + | number 10 + | boolean 11 + | JsonValue[] 12 + | { [key: string]: JsonValue } 13 + 14 + /** 15 + * Replacer that converts non-JSON values (bigint, Date, etc.) to safe substitutes. 16 + */ 17 + export const queryKeyJsonReplacer = (_key: string, value: unknown) => { 18 + if (value === undefined || typeof value === 'function' || typeof value === 'symbol') { 19 + return undefined 20 + } 21 + if (typeof value === 'bigint') { 22 + return value.toString() 23 + } 24 + if (value instanceof Date) { 25 + return value.toISOString() 26 + } 27 + return value 28 + } 29 + 30 + /** 31 + * Safely stringifies a value and parses it back into a JsonValue. 32 + */ 33 + export const stringifyToJsonValue = (input: unknown): JsonValue | undefined => { 34 + try { 35 + const json = JSON.stringify(input, queryKeyJsonReplacer) 36 + if (json === undefined) { 37 + return undefined 38 + } 39 + return JSON.parse(json) as JsonValue 40 + } catch { 41 + return undefined 42 + } 43 + } 44 + 45 + /** 46 + * Detects plain objects (including objects with a null prototype). 47 + */ 48 + const isPlainObject = (value: unknown): value is Record<string, unknown> => { 49 + if (value === null || typeof value !== 'object') { 50 + return false 51 + } 52 + const prototype = Object.getPrototypeOf(value as object) 53 + return prototype === Object.prototype || prototype === null 54 + } 55 + 56 + /** 57 + * Turns URLSearchParams into a sorted JSON object for deterministic keys. 58 + */ 59 + const serializeSearchParams = (params: URLSearchParams): JsonValue => { 60 + const entries = Array.from(params.entries()).sort(([a], [b]) => a.localeCompare(b)) 61 + const result: Record<string, JsonValue> = {} 62 + 63 + for (const [key, value] of entries) { 64 + const existing = result[key] 65 + if (existing === undefined) { 66 + result[key] = value 67 + continue 68 + } 69 + 70 + if (Array.isArray(existing)) { 71 + ;(existing as string[]).push(value) 72 + } else { 73 + result[key] = [existing, value] 74 + } 75 + } 76 + 77 + return result 78 + } 79 + 80 + /** 81 + * Normalizes any accepted value into a JSON-friendly shape for query keys. 82 + */ 83 + export const serializeQueryKeyValue = (value: unknown): JsonValue | undefined => { 84 + if (value === null) { 85 + return null 86 + } 87 + 88 + if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { 89 + return value 90 + } 91 + 92 + if (value === undefined || typeof value === 'function' || typeof value === 'symbol') { 93 + return undefined 94 + } 95 + 96 + if (typeof value === 'bigint') { 97 + return value.toString() 98 + } 99 + 100 + if (value instanceof Date) { 101 + return value.toISOString() 102 + } 103 + 104 + if (Array.isArray(value)) { 105 + return stringifyToJsonValue(value) 106 + } 107 + 108 + if (typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams) { 109 + return serializeSearchParams(value) 110 + } 111 + 112 + if (isPlainObject(value)) { 113 + return stringifyToJsonValue(value) 114 + } 115 + 116 + return undefined 117 + }
+242
packages/api-client/src/generated/core/serverSentEvents.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { Config } from './types.gen' 4 + 5 + export type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> & 6 + Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & { 7 + /** 8 + * Fetch API implementation. You can use this option to provide a custom 9 + * fetch instance. 10 + * 11 + * @default globalThis.fetch 12 + */ 13 + fetch?: typeof fetch 14 + /** 15 + * Implementing clients can call request interceptors inside this hook. 16 + */ 17 + onRequest?: (url: string, init: RequestInit) => Promise<Request> 18 + /** 19 + * Callback invoked when a network or parsing error occurs during streaming. 20 + * 21 + * This option applies only if the endpoint returns a stream of events. 22 + * 23 + * @param error The error that occurred. 24 + */ 25 + onSseError?: (error: unknown) => void 26 + /** 27 + * Callback invoked when an event is streamed from the server. 28 + * 29 + * This option applies only if the endpoint returns a stream of events. 30 + * 31 + * @param event Event streamed from the server. 32 + * @returns Nothing (void). 33 + */ 34 + onSseEvent?: (event: StreamEvent<TData>) => void 35 + serializedBody?: RequestInit['body'] 36 + /** 37 + * Default retry delay in milliseconds. 38 + * 39 + * This option applies only if the endpoint returns a stream of events. 40 + * 41 + * @default 3000 42 + */ 43 + sseDefaultRetryDelay?: number 44 + /** 45 + * Maximum number of retry attempts before giving up. 46 + */ 47 + sseMaxRetryAttempts?: number 48 + /** 49 + * Maximum retry delay in milliseconds. 50 + * 51 + * Applies only when exponential backoff is used. 52 + * 53 + * This option applies only if the endpoint returns a stream of events. 54 + * 55 + * @default 30000 56 + */ 57 + sseMaxRetryDelay?: number 58 + /** 59 + * Optional sleep function for retry backoff. 60 + * 61 + * Defaults to using `setTimeout`. 62 + */ 63 + sseSleepFn?: (ms: number) => Promise<void> 64 + url: string 65 + } 66 + 67 + export interface StreamEvent<TData = unknown> { 68 + data: TData 69 + event?: string 70 + id?: string 71 + retry?: number 72 + } 73 + 74 + export type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = { 75 + stream: AsyncGenerator< 76 + TData extends Record<string, unknown> ? TData[keyof TData] : TData, 77 + TReturn, 78 + TNext 79 + > 80 + } 81 + 82 + export function createSseClient<TData = unknown>({ 83 + onRequest, 84 + onSseError, 85 + onSseEvent, 86 + responseTransformer, 87 + responseValidator, 88 + sseDefaultRetryDelay, 89 + sseMaxRetryAttempts, 90 + sseMaxRetryDelay, 91 + sseSleepFn, 92 + url, 93 + ...options 94 + }: ServerSentEventsOptions): ServerSentEventsResult<TData> { 95 + let lastEventId: string | undefined 96 + 97 + const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms))) 98 + 99 + const createStream = async function* () { 100 + let retryDelay: number = sseDefaultRetryDelay ?? 3000 101 + let attempt = 0 102 + const signal = options.signal ?? new AbortController().signal 103 + 104 + while (true) { 105 + if (signal.aborted) break 106 + 107 + attempt++ 108 + 109 + const headers = 110 + options.headers instanceof Headers 111 + ? options.headers 112 + : new Headers(options.headers as Record<string, string> | undefined) 113 + 114 + if (lastEventId !== undefined) { 115 + headers.set('Last-Event-ID', lastEventId) 116 + } 117 + 118 + try { 119 + const requestInit: RequestInit = { 120 + redirect: 'follow', 121 + ...options, 122 + body: options.serializedBody, 123 + headers, 124 + signal 125 + } 126 + let request = new Request(url, requestInit) 127 + if (onRequest) { 128 + request = await onRequest(url, requestInit) 129 + } 130 + // fetch must be assigned here, otherwise it would throw the error: 131 + // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation 132 + const _fetch = options.fetch ?? globalThis.fetch 133 + const response = await _fetch(request) 134 + 135 + if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`) 136 + 137 + if (!response.body) throw new Error('No body in SSE response') 138 + 139 + const reader = response.body.pipeThrough(new TextDecoderStream()).getReader() 140 + 141 + let buffer = '' 142 + 143 + const abortHandler = () => { 144 + try { 145 + reader.cancel() 146 + } catch { 147 + // noop 148 + } 149 + } 150 + 151 + signal.addEventListener('abort', abortHandler) 152 + 153 + try { 154 + while (true) { 155 + const { done, value } = await reader.read() 156 + if (done) break 157 + buffer += value 158 + buffer = buffer.replace(/\r\n?/g, '\n') // normalize line endings 159 + 160 + const chunks = buffer.split('\n\n') 161 + buffer = chunks.pop() ?? '' 162 + 163 + for (const chunk of chunks) { 164 + const lines = chunk.split('\n') 165 + const dataLines: Array<string> = [] 166 + let eventName: string | undefined 167 + 168 + for (const line of lines) { 169 + if (line.startsWith('data:')) { 170 + dataLines.push(line.replace(/^data:\s*/, '')) 171 + } else if (line.startsWith('event:')) { 172 + eventName = line.replace(/^event:\s*/, '') 173 + } else if (line.startsWith('id:')) { 174 + lastEventId = line.replace(/^id:\s*/, '') 175 + } else if (line.startsWith('retry:')) { 176 + const parsed = Number.parseInt(line.replace(/^retry:\s*/, ''), 10) 177 + if (!Number.isNaN(parsed)) { 178 + retryDelay = parsed 179 + } 180 + } 181 + } 182 + 183 + let data: unknown 184 + let parsedJson = false 185 + 186 + if (dataLines.length) { 187 + const rawData = dataLines.join('\n') 188 + try { 189 + data = JSON.parse(rawData) 190 + parsedJson = true 191 + } catch { 192 + data = rawData 193 + } 194 + } 195 + 196 + if (parsedJson) { 197 + if (responseValidator) { 198 + await responseValidator(data) 199 + } 200 + 201 + if (responseTransformer) { 202 + data = await responseTransformer(data) 203 + } 204 + } 205 + 206 + onSseEvent?.({ 207 + data, 208 + event: eventName, 209 + id: lastEventId, 210 + retry: retryDelay 211 + }) 212 + 213 + if (dataLines.length) { 214 + yield data as any 215 + } 216 + } 217 + } 218 + } finally { 219 + signal.removeEventListener('abort', abortHandler) 220 + reader.releaseLock() 221 + } 222 + 223 + break // exit loop on normal completion 224 + } catch (error) { 225 + // connection failed or aborted; retry after delay 226 + onSseError?.(error) 227 + 228 + if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) { 229 + break // stop after firing error 230 + } 231 + 232 + // exponential backoff: double retry each attempt, cap at 30s 233 + const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000) 234 + await sleep(backoff) 235 + } 236 + } 237 + } 238 + 239 + const stream = createStream() 240 + 241 + return { stream } 242 + }
+104
packages/api-client/src/generated/core/types.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { Auth, AuthToken } from './auth.gen' 4 + import type { BodySerializer, QuerySerializer, QuerySerializerOptions } from './bodySerializer.gen' 5 + 6 + export type HttpMethod = 7 + | 'connect' 8 + | 'delete' 9 + | 'get' 10 + | 'head' 11 + | 'options' 12 + | 'patch' 13 + | 'post' 14 + | 'put' 15 + | 'trace' 16 + 17 + export type Client< 18 + RequestFn = never, 19 + Config = unknown, 20 + MethodFn = never, 21 + BuildUrlFn = never, 22 + SseFn = never 23 + > = { 24 + /** 25 + * Returns the final request URL. 26 + */ 27 + buildUrl: BuildUrlFn 28 + getConfig: () => Config 29 + request: RequestFn 30 + setConfig: (config: Config) => Config 31 + } & { 32 + [K in HttpMethod]: MethodFn 33 + } & ([SseFn] extends [never] ? { sse?: never } : { sse: { [K in HttpMethod]: SseFn } }) 34 + 35 + export interface Config { 36 + /** 37 + * Auth token or a function returning auth token. The resolved value will be 38 + * added to the request payload as defined by its `security` array. 39 + */ 40 + auth?: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken 41 + /** 42 + * A function for serializing request body parameter. By default, 43 + * {@link JSON.stringify()} will be used. 44 + */ 45 + bodySerializer?: BodySerializer | null 46 + /** 47 + * An object containing any HTTP headers that you want to pre-populate your 48 + * `Headers` object with. 49 + * 50 + * {@link https://developer.mozilla.org/docs/Web/API/Headers/Headers#init See more} 51 + */ 52 + headers?: 53 + | RequestInit['headers'] 54 + | Record< 55 + string, 56 + string | number | boolean | (string | number | boolean)[] | null | undefined | unknown 57 + > 58 + /** 59 + * The request method. 60 + * 61 + * {@link https://developer.mozilla.org/docs/Web/API/fetch#method See more} 62 + */ 63 + method?: Uppercase<HttpMethod> 64 + /** 65 + * A function for serializing request query parameters. By default, arrays 66 + * will be exploded in form style, objects will be exploded in deepObject 67 + * style, and reserved characters are percent-encoded. 68 + * 69 + * This method will have no effect if the native `paramsSerializer()` Axios 70 + * API function is used. 71 + * 72 + * {@link https://swagger.io/docs/specification/serialization/#query View examples} 73 + */ 74 + querySerializer?: QuerySerializer | QuerySerializerOptions 75 + /** 76 + * A function validating request data. This is useful if you want to ensure 77 + * the request conforms to the desired shape, so it can be safely sent to 78 + * the server. 79 + */ 80 + requestValidator?: (data: unknown) => Promise<unknown> 81 + /** 82 + * A function transforming response data before it's returned. This is useful 83 + * for post-processing data, e.g., converting ISO strings into Date objects. 84 + */ 85 + responseTransformer?: (data: unknown) => Promise<unknown> 86 + /** 87 + * A function validating response data. This is useful if you want to ensure 88 + * the response conforms to the desired shape, so it can be safely passed to 89 + * the transformers and returned to the user. 90 + */ 91 + responseValidator?: (data: unknown) => Promise<unknown> 92 + } 93 + 94 + type IsExactlyNeverOrNeverUndefined<T> = [T] extends [never] 95 + ? true 96 + : [T] extends [never | undefined] 97 + ? [undefined] extends [T] 98 + ? false 99 + : true 100 + : false 101 + 102 + export type OmitNever<T extends Record<string, unknown>> = { 103 + [K in keyof T as IsExactlyNeverOrNeverUndefined<T[K]> extends true ? never : K]: T[K] 104 + }
+140
packages/api-client/src/generated/core/utils.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { BodySerializer, QuerySerializer } from './bodySerializer.gen' 4 + import { 5 + type ArraySeparatorStyle, 6 + serializeArrayParam, 7 + serializeObjectParam, 8 + serializePrimitiveParam 9 + } from './pathSerializer.gen' 10 + 11 + export interface PathSerializer { 12 + path: Record<string, unknown> 13 + url: string 14 + } 15 + 16 + export const PATH_PARAM_RE = /\{[^{}]+\}/g 17 + 18 + export const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { 19 + let url = _url 20 + const matches = _url.match(PATH_PARAM_RE) 21 + if (matches) { 22 + for (const match of matches) { 23 + let explode = false 24 + let name = match.substring(1, match.length - 1) 25 + let style: ArraySeparatorStyle = 'simple' 26 + 27 + if (name.endsWith('*')) { 28 + explode = true 29 + name = name.substring(0, name.length - 1) 30 + } 31 + 32 + if (name.startsWith('.')) { 33 + name = name.substring(1) 34 + style = 'label' 35 + } else if (name.startsWith(';')) { 36 + name = name.substring(1) 37 + style = 'matrix' 38 + } 39 + 40 + const value = path[name] 41 + 42 + if (value === undefined || value === null) { 43 + continue 44 + } 45 + 46 + if (Array.isArray(value)) { 47 + url = url.replace(match, serializeArrayParam({ explode, name, style, value })) 48 + continue 49 + } 50 + 51 + if (typeof value === 'object') { 52 + url = url.replace( 53 + match, 54 + serializeObjectParam({ 55 + explode, 56 + name, 57 + style, 58 + value: value as Record<string, unknown>, 59 + valueOnly: true 60 + }) 61 + ) 62 + continue 63 + } 64 + 65 + if (style === 'matrix') { 66 + url = url.replace( 67 + match, 68 + `;${serializePrimitiveParam({ 69 + name, 70 + value: value as string 71 + })}` 72 + ) 73 + continue 74 + } 75 + 76 + const replaceValue = encodeURIComponent( 77 + style === 'label' ? `.${value as string}` : (value as string) 78 + ) 79 + url = url.replace(match, replaceValue) 80 + } 81 + } 82 + return url 83 + } 84 + 85 + export const getUrl = ({ 86 + baseUrl, 87 + path, 88 + query, 89 + querySerializer, 90 + url: _url 91 + }: { 92 + baseUrl?: string 93 + path?: Record<string, unknown> 94 + query?: Record<string, unknown> 95 + querySerializer: QuerySerializer 96 + url: string 97 + }) => { 98 + const pathUrl = _url.startsWith('/') ? _url : `/${_url}` 99 + let url = (baseUrl ?? '') + pathUrl 100 + if (path) { 101 + url = defaultPathSerializer({ path, url }) 102 + } 103 + let search = query ? querySerializer(query) : '' 104 + if (search.startsWith('?')) { 105 + search = search.substring(1) 106 + } 107 + if (search) { 108 + url += `?${search}` 109 + } 110 + return url 111 + } 112 + 113 + export function getValidRequestBody(options: { 114 + body?: unknown 115 + bodySerializer?: BodySerializer | null 116 + serializedBody?: unknown 117 + }) { 118 + const hasBody = options.body !== undefined 119 + const isSerializedBody = hasBody && options.bodySerializer 120 + 121 + if (isSerializedBody) { 122 + if ('serializedBody' in options) { 123 + const hasSerializedBody = 124 + options.serializedBody !== undefined && options.serializedBody !== '' 125 + 126 + return hasSerializedBody ? options.serializedBody : null 127 + } 128 + 129 + // not all clients implement a serializedBody property (i.e., client-axios) 130 + return options.body !== '' ? options.body : null 131 + } 132 + 133 + // plain/text body 134 + if (hasBody) { 135 + return options.body 136 + } 137 + 138 + // no body was provided 139 + return undefined 140 + }
+229
packages/api-client/src/generated/index.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export { 4 + callbackHandler, 5 + createBuildHandler, 6 + createStoreHandler, 7 + createTokenHandler, 8 + deleteKeyHandler, 9 + deleteSecretHandler, 10 + deleteStoreHandler, 11 + deleteTokenHandler, 12 + exportGuildHandler, 13 + getBuildHandler, 14 + getDeploymentHandler, 15 + getDeploymentRevisionHandler, 16 + getGuildLogs, 17 + getLogs, 18 + getMetrics, 19 + getMetricsJson, 20 + getValueHandler, 21 + healthCheck, 22 + listDeploymentHistoryHandler, 23 + listDeploymentsHandler, 24 + listGuildsHandler, 25 + listKeysHandler, 26 + listSecretsHandler, 27 + listStoresHandler, 28 + listTokensHandler, 29 + loginHandler, 30 + meHandler, 31 + type Options, 32 + rollbackDeploymentHandler, 33 + setValueHandler, 34 + upsertDeploymentHandler, 35 + upsertSecretHandler 36 + } from './sdk.gen' 37 + export type { 38 + AuthResponse, 39 + AuthUser, 40 + BuildArtifactResponse, 41 + BuildStatusResponse, 42 + CallbackHandlerData, 43 + CallbackHandlerError, 44 + CallbackHandlerErrors, 45 + ClientOptions, 46 + CreateBuildHandlerData, 47 + CreateBuildHandlerError, 48 + CreateBuildHandlerErrors, 49 + CreateBuildHandlerResponse, 50 + CreateBuildHandlerResponses, 51 + CreateBuildResponse, 52 + CreateStoreHandlerData, 53 + CreateStoreHandlerError, 54 + CreateStoreHandlerErrors, 55 + CreateStoreHandlerResponse, 56 + CreateStoreHandlerResponses, 57 + CreateStoreRequest, 58 + CreateStoreResponse, 59 + CreateTokenHandlerData, 60 + CreateTokenHandlerError, 61 + CreateTokenHandlerErrors, 62 + CreateTokenHandlerResponse, 63 + CreateTokenHandlerResponses, 64 + CreateTokenRequest, 65 + CreateTokenResponse, 66 + DeleteKeyHandlerData, 67 + DeleteKeyHandlerError, 68 + DeleteKeyHandlerErrors, 69 + DeleteKeyHandlerResponses, 70 + DeleteKeyParams, 71 + DeleteSecretHandlerData, 72 + DeleteSecretHandlerError, 73 + DeleteSecretHandlerErrors, 74 + DeleteSecretHandlerResponse, 75 + DeleteSecretHandlerResponses, 76 + DeleteSecretResponse, 77 + DeleteStoreHandlerData, 78 + DeleteStoreHandlerError, 79 + DeleteStoreHandlerErrors, 80 + DeleteStoreHandlerResponses, 81 + DeleteStoreParams, 82 + DeleteTokenHandlerData, 83 + DeleteTokenHandlerError, 84 + DeleteTokenHandlerErrors, 85 + DeleteTokenHandlerResponse, 86 + DeleteTokenHandlerResponses, 87 + DeploymentActorResponse, 88 + DeploymentActorType, 89 + DeploymentChangeSummary, 90 + DeploymentFile, 91 + DeploymentListItem, 92 + DeploymentRequest, 93 + DeploymentResponse, 94 + DeploymentRevisionResponse, 95 + DeploymentRevisionStatus, 96 + DeploymentSource, 97 + DeploymentSourceMapFile, 98 + ErrorResponse, 99 + ExportGuildHandlerData, 100 + ExportGuildHandlerError, 101 + ExportGuildHandlerErrors, 102 + ExportGuildHandlerResponse, 103 + ExportGuildHandlerResponses, 104 + ExportGuildParams, 105 + ExportGuildResponse, 106 + GetBuildHandlerData, 107 + GetBuildHandlerError, 108 + GetBuildHandlerErrors, 109 + GetBuildHandlerResponse, 110 + GetBuildHandlerResponses, 111 + GetDeploymentHandlerData, 112 + GetDeploymentHandlerError, 113 + GetDeploymentHandlerErrors, 114 + GetDeploymentHandlerResponse, 115 + GetDeploymentHandlerResponses, 116 + GetDeploymentRevisionHandlerData, 117 + GetDeploymentRevisionHandlerError, 118 + GetDeploymentRevisionHandlerErrors, 119 + GetDeploymentRevisionHandlerResponse, 120 + GetDeploymentRevisionHandlerResponses, 121 + GetGuildLogsData, 122 + GetGuildLogsError, 123 + GetGuildLogsErrors, 124 + GetGuildLogsResponse, 125 + GetGuildLogsResponses, 126 + GetLogsData, 127 + GetLogsError, 128 + GetLogsErrors, 129 + GetLogsResponse, 130 + GetLogsResponses, 131 + GetMetricsData, 132 + GetMetricsError, 133 + GetMetricsErrors, 134 + GetMetricsJsonData, 135 + GetMetricsJsonError, 136 + GetMetricsJsonErrors, 137 + GetMetricsJsonResponse, 138 + GetMetricsJsonResponses, 139 + GetMetricsResponses, 140 + GetValueHandlerData, 141 + GetValueHandlerError, 142 + GetValueHandlerErrors, 143 + GetValueHandlerResponse, 144 + GetValueHandlerResponses, 145 + GetValueParams, 146 + GetValueResponse, 147 + GuildResponse, 148 + HealthCheckData, 149 + HealthCheckResponse, 150 + HealthCheckResponses, 151 + KvStore, 152 + ListDeploymentHistoryHandlerData, 153 + ListDeploymentHistoryHandlerError, 154 + ListDeploymentHistoryHandlerErrors, 155 + ListDeploymentHistoryHandlerResponse, 156 + ListDeploymentHistoryHandlerResponses, 157 + ListDeploymentsHandlerData, 158 + ListDeploymentsHandlerError, 159 + ListDeploymentsHandlerErrors, 160 + ListDeploymentsHandlerResponse, 161 + ListDeploymentsHandlerResponses, 162 + ListGuildsHandlerData, 163 + ListGuildsHandlerError, 164 + ListGuildsHandlerErrors, 165 + ListGuildsHandlerResponse, 166 + ListGuildsHandlerResponses, 167 + ListKeysHandlerData, 168 + ListKeysHandlerError, 169 + ListKeysHandlerErrors, 170 + ListKeysHandlerResponse, 171 + ListKeysHandlerResponses, 172 + ListKeysParams, 173 + ListKeysQuery, 174 + ListKeysResponse, 175 + ListSecretsHandlerData, 176 + ListSecretsHandlerError, 177 + ListSecretsHandlerErrors, 178 + ListSecretsHandlerResponse, 179 + ListSecretsHandlerResponses, 180 + ListStoresHandlerData, 181 + ListStoresHandlerError, 182 + ListStoresHandlerErrors, 183 + ListStoresHandlerResponse, 184 + ListStoresHandlerResponses, 185 + ListStoresQuery, 186 + ListTokensHandlerData, 187 + ListTokensHandlerError, 188 + ListTokensHandlerErrors, 189 + ListTokensHandlerResponse, 190 + ListTokensHandlerResponses, 191 + LogEntry, 192 + LoginHandlerData, 193 + LoginHandlerError, 194 + LoginHandlerErrors, 195 + LogsQuery, 196 + MeHandlerData, 197 + MeHandlerError, 198 + MeHandlerErrors, 199 + MeHandlerResponse, 200 + MeHandlerResponses, 201 + MetricsSnapshot, 202 + RawKvKeyInfo, 203 + RollbackDeploymentHandlerData, 204 + RollbackDeploymentHandlerError, 205 + RollbackDeploymentHandlerErrors, 206 + RollbackDeploymentHandlerResponse, 207 + RollbackDeploymentHandlerResponses, 208 + SecretMetadataResponse, 209 + SetValueHandlerData, 210 + SetValueHandlerError, 211 + SetValueHandlerErrors, 212 + SetValueHandlerResponse, 213 + SetValueHandlerResponses, 214 + SetValueParams, 215 + SetValueRequest, 216 + SetValueResponse, 217 + TokenResponse, 218 + UpsertDeploymentHandlerData, 219 + UpsertDeploymentHandlerError, 220 + UpsertDeploymentHandlerErrors, 221 + UpsertDeploymentHandlerResponse, 222 + UpsertDeploymentHandlerResponses, 223 + UpsertSecretHandlerData, 224 + UpsertSecretHandlerError, 225 + UpsertSecretHandlerErrors, 226 + UpsertSecretHandlerResponse, 227 + UpsertSecretHandlerResponses, 228 + UpsertSecretRequest 229 + } from './types.gen'
-3431
packages/api-client/src/generated/openapi-schema.ts
··· 1 - /** 2 - * This file was auto-generated by openapi-typescript. 3 - * Do not make direct changes to the file. 4 - */ 5 - 6 - export interface paths { 7 - '/auth/callback': { 8 - parameters: { 9 - query?: never 10 - header?: never 11 - path?: never 12 - cookie?: never 13 - } 14 - /** Handle Discord OAuth callback, mint a session cookie, and redirect to the frontend dashboard. */ 15 - get: operations['callback_handler'] 16 - put?: never 17 - post?: never 18 - delete?: never 19 - options?: never 20 - head?: never 21 - patch?: never 22 - trace?: never 23 - } 24 - '/auth/login': { 25 - parameters: { 26 - query?: never 27 - header?: never 28 - path?: never 29 - cookie?: never 30 - } 31 - /** Begin Discord OAuth flow and set a short-lived state cookie. */ 32 - get: operations['login_handler'] 33 - put?: never 34 - post?: never 35 - delete?: never 36 - options?: never 37 - head?: never 38 - patch?: never 39 - trace?: never 40 - } 41 - '/auth/me': { 42 - parameters: { 43 - query?: never 44 - header?: never 45 - path?: never 46 - cookie?: never 47 - } 48 - /** Return the currently authenticated user. */ 49 - get: operations['me_handler'] 50 - put?: never 51 - post?: never 52 - delete?: never 53 - options?: never 54 - head?: never 55 - patch?: never 56 - trace?: never 57 - } 58 - '/builds/': { 59 - parameters: { 60 - query?: never 61 - header?: never 62 - path?: never 63 - cookie?: never 64 - } 65 - get?: never 66 - put?: never 67 - post: operations['create_build_handler'] 68 - delete?: never 69 - options?: never 70 - head?: never 71 - patch?: never 72 - trace?: never 73 - } 74 - '/builds/{build_id}': { 75 - parameters: { 76 - query?: never 77 - header?: never 78 - path?: never 79 - cookie?: never 80 - } 81 - get: operations['get_build_handler'] 82 - put?: never 83 - post?: never 84 - delete?: never 85 - options?: never 86 - head?: never 87 - patch?: never 88 - trace?: never 89 - } 90 - '/deployments': { 91 - parameters: { 92 - query?: never 93 - header?: never 94 - path?: never 95 - cookie?: never 96 - } 97 - get: operations['list_deployments_handler'] 98 - put?: never 99 - post?: never 100 - delete?: never 101 - options?: never 102 - head?: never 103 - patch?: never 104 - trace?: never 105 - } 106 - '/deployments/{guild_id}': { 107 - parameters: { 108 - query?: never 109 - header?: never 110 - path?: never 111 - cookie?: never 112 - } 113 - get: operations['get_deployment_handler'] 114 - put?: never 115 - post: operations['upsert_deployment_handler'] 116 - delete?: never 117 - options?: never 118 - head?: never 119 - patch?: never 120 - trace?: never 121 - } 122 - '/deployments/{guild_id}/history': { 123 - parameters: { 124 - query?: never 125 - header?: never 126 - path?: never 127 - cookie?: never 128 - } 129 - get: operations['list_deployment_history_handler'] 130 - put?: never 131 - post?: never 132 - delete?: never 133 - options?: never 134 - head?: never 135 - patch?: never 136 - trace?: never 137 - } 138 - '/deployments/{guild_id}/revisions/{revision_id}': { 139 - parameters: { 140 - query?: never 141 - header?: never 142 - path?: never 143 - cookie?: never 144 - } 145 - get: operations['get_deployment_revision_handler'] 146 - put?: never 147 - post?: never 148 - delete?: never 149 - options?: never 150 - head?: never 151 - patch?: never 152 - trace?: never 153 - } 154 - '/deployments/{guild_id}/rollback/{revision_id}': { 155 - parameters: { 156 - query?: never 157 - header?: never 158 - path?: never 159 - cookie?: never 160 - } 161 - get?: never 162 - put?: never 163 - post: operations['rollback_deployment_handler'] 164 - delete?: never 165 - options?: never 166 - head?: never 167 - patch?: never 168 - trace?: never 169 - } 170 - '/guilds/': { 171 - parameters: { 172 - query?: never 173 - header?: never 174 - path?: never 175 - cookie?: never 176 - } 177 - /** List guilds where the user is an admin and the bot is present. */ 178 - get: operations['list_guilds_handler'] 179 - put?: never 180 - post?: never 181 - delete?: never 182 - options?: never 183 - head?: never 184 - patch?: never 185 - trace?: never 186 - } 187 - '/health/': { 188 - parameters: { 189 - query?: never 190 - header?: never 191 - path?: never 192 - cookie?: never 193 - } 194 - /** Check API liveness. */ 195 - get: operations['health_check'] 196 - put?: never 197 - post?: never 198 - delete?: never 199 - options?: never 200 - head?: never 201 - patch?: never 202 - trace?: never 203 - } 204 - '/kv/export/{guild_id}': { 205 - parameters: { 206 - query?: never 207 - header?: never 208 - path?: never 209 - cookie?: never 210 - } 211 - get?: never 212 - put?: never 213 - /** 214 - * Export all KV stores for a guild 215 - * @description Creates a backup of all stores using RocksDB data files. 216 - * Returns a backup ID for later retrieval. 217 - */ 218 - post: operations['export_guild_handler'] 219 - delete?: never 220 - options?: never 221 - head?: never 222 - patch?: never 223 - trace?: never 224 - } 225 - '/kv/stores': { 226 - parameters: { 227 - query?: never 228 - header?: never 229 - path?: never 230 - cookie?: never 231 - } 232 - /** List all KV stores for a guild */ 233 - get: operations['list_stores_handler'] 234 - put?: never 235 - /** Create a new KV store for a guild */ 236 - post: operations['create_store_handler'] 237 - delete?: never 238 - options?: never 239 - head?: never 240 - patch?: never 241 - trace?: never 242 - } 243 - '/kv/stores/{guild_id}/{store_name}': { 244 - parameters: { 245 - query?: never 246 - header?: never 247 - path?: never 248 - cookie?: never 249 - } 250 - get?: never 251 - put?: never 252 - post?: never 253 - /** Delete a KV store and all its data */ 254 - delete: operations['delete_store_handler'] 255 - options?: never 256 - head?: never 257 - patch?: never 258 - trace?: never 259 - } 260 - '/kv/{guild_id}/{store_name}': { 261 - parameters: { 262 - query?: never 263 - header?: never 264 - path?: never 265 - cookie?: never 266 - } 267 - get: operations['list_keys_handler'] 268 - put?: never 269 - post?: never 270 - delete?: never 271 - options?: never 272 - head?: never 273 - patch?: never 274 - trace?: never 275 - } 276 - '/kv/{guild_id}/{store_name}/{key}': { 277 - parameters: { 278 - query?: never 279 - header?: never 280 - path?: never 281 - cookie?: never 282 - } 283 - /** Get a value from a KV store */ 284 - get: operations['get_value_handler'] 285 - put: operations['set_value_handler'] 286 - post?: never 287 - /** Delete a key from a KV store */ 288 - delete: operations['delete_key_handler'] 289 - options?: never 290 - head?: never 291 - patch?: never 292 - trace?: never 293 - } 294 - '/logs': { 295 - parameters: { 296 - query?: never 297 - header?: never 298 - path?: never 299 - cookie?: never 300 - } 301 - /** Get recent logs. */ 302 - get: operations['get_logs'] 303 - put?: never 304 - post?: never 305 - delete?: never 306 - options?: never 307 - head?: never 308 - patch?: never 309 - trace?: never 310 - } 311 - '/logs/{guild_id}': { 312 - parameters: { 313 - query?: never 314 - header?: never 315 - path?: never 316 - cookie?: never 317 - } 318 - /** Get recent logs for a specific guild. */ 319 - get: operations['get_guild_logs'] 320 - put?: never 321 - post?: never 322 - delete?: never 323 - options?: never 324 - head?: never 325 - patch?: never 326 - trace?: never 327 - } 328 - '/metrics': { 329 - parameters: { 330 - query?: never 331 - header?: never 332 - path?: never 333 - cookie?: never 334 - } 335 - /** Get metrics in Prometheus exposition format. */ 336 - get: operations['get_metrics'] 337 - put?: never 338 - post?: never 339 - delete?: never 340 - options?: never 341 - head?: never 342 - patch?: never 343 - trace?: never 344 - } 345 - '/metrics/json': { 346 - parameters: { 347 - query?: never 348 - header?: never 349 - path?: never 350 - cookie?: never 351 - } 352 - /** Get metrics as JSON. */ 353 - get: operations['get_metrics_json'] 354 - put?: never 355 - post?: never 356 - delete?: never 357 - options?: never 358 - head?: never 359 - patch?: never 360 - trace?: never 361 - } 362 - '/secrets/{guild_id}': { 363 - parameters: { 364 - query?: never 365 - header?: never 366 - path?: never 367 - cookie?: never 368 - } 369 - get: operations['list_secrets_handler'] 370 - put?: never 371 - post?: never 372 - delete?: never 373 - options?: never 374 - head?: never 375 - patch?: never 376 - trace?: never 377 - } 378 - '/secrets/{guild_id}/{name}': { 379 - parameters: { 380 - query?: never 381 - header?: never 382 - path?: never 383 - cookie?: never 384 - } 385 - get?: never 386 - put: operations['upsert_secret_handler'] 387 - post?: never 388 - delete: operations['delete_secret_handler'] 389 - options?: never 390 - head?: never 391 - patch?: never 392 - trace?: never 393 - } 394 - '/tokens/': { 395 - parameters: { 396 - query?: never 397 - header?: never 398 - path?: never 399 - cookie?: never 400 - } 401 - /** List tokens for the authenticated user. */ 402 - get: operations['list_tokens_handler'] 403 - put?: never 404 - /** Mint a new API token for the authenticated user. */ 405 - post: operations['create_token_handler'] 406 - delete?: never 407 - options?: never 408 - head?: never 409 - patch?: never 410 - trace?: never 411 - } 412 - '/tokens/{token_id}': { 413 - parameters: { 414 - query?: never 415 - header?: never 416 - path?: never 417 - cookie?: never 418 - } 419 - get?: never 420 - put?: never 421 - post?: never 422 - /** Delete a token by id. */ 423 - delete: operations['delete_token_handler'] 424 - options?: never 425 - head?: never 426 - patch?: never 427 - trace?: never 428 - } 429 - } 430 - export type webhooks = Record<string, never> 431 - export interface components { 432 - schemas: { 433 - /** @description Response envelope for /auth/me. */ 434 - AuthResponse: { 435 - user: components['schemas']['AuthUser'] 436 - } 437 - /** @description API representation of the authenticated user. */ 438 - AuthUser: { 439 - avatar?: string | null 440 - global_name?: string | null 441 - id: string 442 - username: string 443 - } 444 - BuildArtifactResponse: { 445 - bundle: string 446 - source_map: string 447 - } 448 - BuildStatusResponse: { 449 - artifact?: null | components['schemas']['BuildArtifactResponse'] 450 - build_id: string 451 - entry: string 452 - error?: string | null 453 - finished_at?: string | null 454 - guild_id: string 455 - logs: string[] 456 - started_at?: string | null 457 - status: string 458 - } 459 - CreateBuildResponse: { 460 - build_id: string 461 - status: string 462 - } 463 - CreateStoreRequest: { 464 - guild_id: string 465 - store_name: string 466 - } 467 - CreateStoreResponse: { 468 - store: components['schemas']['KvStore'] 469 - } 470 - /** @description Create-token payload. */ 471 - CreateTokenRequest: { 472 - label?: string | null 473 - } 474 - /** @description Token creation response (includes plaintext token). */ 475 - CreateTokenResponse: { 476 - token: string 477 - } 478 - DeleteKeyParams: { 479 - guild_id: string 480 - key: string 481 - store_name: string 482 - } 483 - DeleteSecretResponse: { 484 - deleted: boolean 485 - } 486 - DeleteStoreParams: { 487 - guild_id: string 488 - store_name: string 489 - } 490 - DeploymentActorResponse: { 491 - actor_type: components['schemas']['DeploymentActorType'] 492 - user_id?: string | null 493 - username?: string | null 494 - } 495 - /** @enum {string} */ 496 - DeploymentActorType: 'session' | 'token' | 'system' 497 - DeploymentChangeSummary: { 498 - added_files: number 499 - modified_files: number 500 - removed_files: number 501 - } 502 - DeploymentFile: { 503 - contents: string 504 - path: string 505 - } 506 - DeploymentListItem: { 507 - created_at: string 508 - entry: string 509 - guild_id: string 510 - updated_at: string 511 - } 512 - DeploymentRequest: { 513 - build_id?: string | null 514 - bundle?: string | null 515 - entry: string 516 - files?: components['schemas']['DeploymentFile'][] | null 517 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 518 - } 519 - DeploymentResponse: { 520 - bundle?: string | null 521 - created_at: string 522 - entry: string 523 - files?: components['schemas']['DeploymentFile'][] | null 524 - guild_id: string 525 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 526 - updated_at: string 527 - } 528 - DeploymentRevisionResponse: { 529 - actor: components['schemas']['DeploymentActorResponse'] 530 - base_revision_id?: string | null 531 - build_id?: string | null 532 - bundle?: string | null 533 - change_summary?: null | components['schemas']['DeploymentChangeSummary'] 534 - deploy_source: components['schemas']['DeploymentSource'] 535 - deployed_at: string 536 - entry: string 537 - error_message?: string | null 538 - files?: components['schemas']['DeploymentFile'][] | null 539 - guild_id: string 540 - id: string 541 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 542 - status: components['schemas']['DeploymentRevisionStatus'] 543 - } 544 - /** @enum {string} */ 545 - DeploymentRevisionStatus: 'success' | 'failed' 546 - /** @enum {string} */ 547 - DeploymentSource: 'cli' | 'webui' | 'bootstrap' | 'api' | 'unknown' 548 - DeploymentSourceMapFile: { 549 - contents: string 550 - path: string 551 - } 552 - /** @description Canonical error envelope returned by the HTTP API. */ 553 - ErrorResponse: { 554 - /** @description Human readable error message. */ 555 - message: string 556 - } 557 - ExportGuildParams: { 558 - guild_id: string 559 - } 560 - ExportGuildResponse: { 561 - backup_id: string 562 - } 563 - GetValueParams: { 564 - guild_id: string 565 - key: string 566 - store_name: string 567 - } 568 - GetValueResponse: { 569 - value?: string | null 570 - } 571 - /** @description Guild info exposed by the API. */ 572 - GuildResponse: { 573 - icon?: string | null 574 - id: string 575 - name: string 576 - /** Format: int64 */ 577 - permissions: number 578 - } 579 - KvStore: { 580 - /** Format: date-time */ 581 - created_at: string 582 - guild_id: string 583 - id: string 584 - store_name: string 585 - /** Format: date-time */ 586 - updated_at: string 587 - } 588 - ListKeysParams: { 589 - guild_id: string 590 - store_name: string 591 - } 592 - ListKeysQuery: { 593 - cursor?: string | null 594 - /** Format: int32 */ 595 - limit?: number | null 596 - prefix?: string | null 597 - } 598 - ListKeysResponse: { 599 - cursor?: string | null 600 - keys: components['schemas']['RawKvKeyInfo'][] 601 - list_complete: boolean 602 - } 603 - ListStoresQuery: { 604 - guild_id: string 605 - } 606 - /** @description A log entry captured from the runtime. */ 607 - LogEntry: { 608 - /** @description Guild ID if applicable. */ 609 - guild_id?: string | null 610 - /** @description Log level (trace, debug, info, warn, error). */ 611 - level: string 612 - /** @description Log message. */ 613 - message: string 614 - /** @description Target/module that produced the log. */ 615 - target: string 616 - /** 617 - * Format: int64 618 - * @description Timestamp in milliseconds since Unix epoch. 619 - */ 620 - timestamp: number 621 - } 622 - LogsQuery: { 623 - /** @description Maximum number of log entries to return (default 100, max 1000). */ 624 - limit?: number 625 - } 626 - /** @description Snapshot of metrics at a point in time. */ 627 - MetricsSnapshot: { 628 - /** Format: int64 */ 629 - avg_latency_us: number 630 - /** Format: int64 */ 631 - dispatch_errors: number 632 - /** Format: int64 */ 633 - dispatch_total: number 634 - /** Format: int64 */ 635 - isolate_count: number 636 - /** Format: int64 */ 637 - isolate_restarts: number 638 - /** Format: int64 */ 639 - migration_quiesce_duration_us: number 640 - /** Format: int64 */ 641 - migration_success: number 642 - /** Format: int64 */ 643 - migration_timeout: number 644 - /** Format: int64 */ 645 - oom_errors: number 646 - /** Format: int64 */ 647 - p50_latency_us: number 648 - /** Format: int64 */ 649 - p95_latency_us: number 650 - /** Format: int64 */ 651 - p99_latency_us: number 652 - /** Format: int64 */ 653 - runtime_restarts: number 654 - /** Format: int64 */ 655 - timeout_errors: number 656 - } 657 - /** @description Information about a single KV key. */ 658 - RawKvKeyInfo: { 659 - /** 660 - * Format: int64 661 - * @description Unix timestamp (seconds) when this key expires. 662 - */ 663 - expiration?: number | null 664 - /** @description Arbitrary JSON metadata attached to the key. */ 665 - metadata?: unknown 666 - /** @description The key's name. */ 667 - name: string 668 - } 669 - /** @description Metadata response; values are never returned. */ 670 - SecretMetadataResponse: { 671 - allowed_hosts: string[] 672 - name: string 673 - } 674 - SetValueParams: { 675 - guild_id: string 676 - key: string 677 - store_name: string 678 - } 679 - SetValueRequest: { 680 - /** Format: int64 */ 681 - expiration?: number | null 682 - metadata?: unknown 683 - value: string 684 - } 685 - SetValueResponse: { 686 - success: boolean 687 - } 688 - /** @description Token list item. */ 689 - TokenResponse: { 690 - created_at: string 691 - label?: string | null 692 - last_used_at?: string | null 693 - token_id: string 694 - } 695 - UpsertSecretRequest: { 696 - allowed_hosts?: string[] 697 - value: string 698 - } 699 - } 700 - responses: never 701 - parameters: never 702 - requestBodies: never 703 - headers: never 704 - pathItems: never 705 - } 706 - export type $defs = Record<string, never> 707 - export interface operations { 708 - callback_handler: { 709 - parameters: { 710 - query: { 711 - /** @description Discord authorization code */ 712 - code: string 713 - /** @description Opaque state value returned by Discord */ 714 - state: string 715 - } 716 - header?: never 717 - path?: never 718 - cookie?: never 719 - } 720 - requestBody?: never 721 - responses: { 722 - /** @description Redirect response with cookies */ 723 - 302: { 724 - headers: { 725 - [name: string]: unknown 726 - } 727 - content?: never 728 - } 729 - /** @description Bad request */ 730 - 400: { 731 - headers: { 732 - [name: string]: unknown 733 - } 734 - content: { 735 - 'application/json': { 736 - /** @description Human readable error message. */ 737 - message: string 738 - } 739 - } 740 - } 741 - /** @description Authentication required */ 742 - 401: { 743 - headers: { 744 - [name: string]: unknown 745 - } 746 - content: { 747 - 'application/json': { 748 - /** @description Human readable error message. */ 749 - message: string 750 - } 751 - } 752 - } 753 - /** @description Forbidden */ 754 - 403: { 755 - headers: { 756 - [name: string]: unknown 757 - } 758 - content: { 759 - 'application/json': { 760 - /** @description Human readable error message. */ 761 - message: string 762 - } 763 - } 764 - } 765 - /** @description Resource not found */ 766 - 404: { 767 - headers: { 768 - [name: string]: unknown 769 - } 770 - content: { 771 - 'application/json': { 772 - /** @description Human readable error message. */ 773 - message: string 774 - } 775 - } 776 - } 777 - /** @description Internal server error */ 778 - 500: { 779 - headers: { 780 - [name: string]: unknown 781 - } 782 - content: { 783 - 'application/json': { 784 - /** @description Human readable error message. */ 785 - message: string 786 - } 787 - } 788 - } 789 - } 790 - } 791 - login_handler: { 792 - parameters: { 793 - query?: never 794 - header?: never 795 - path?: never 796 - cookie?: never 797 - } 798 - requestBody?: never 799 - responses: { 800 - /** @description Redirect response */ 801 - 302: { 802 - headers: { 803 - [name: string]: unknown 804 - } 805 - content?: never 806 - } 807 - /** @description Bad request */ 808 - 400: { 809 - headers: { 810 - [name: string]: unknown 811 - } 812 - content: { 813 - 'application/json': { 814 - /** @description Human readable error message. */ 815 - message: string 816 - } 817 - } 818 - } 819 - /** @description Authentication required */ 820 - 401: { 821 - headers: { 822 - [name: string]: unknown 823 - } 824 - content: { 825 - 'application/json': { 826 - /** @description Human readable error message. */ 827 - message: string 828 - } 829 - } 830 - } 831 - /** @description Forbidden */ 832 - 403: { 833 - headers: { 834 - [name: string]: unknown 835 - } 836 - content: { 837 - 'application/json': { 838 - /** @description Human readable error message. */ 839 - message: string 840 - } 841 - } 842 - } 843 - /** @description Resource not found */ 844 - 404: { 845 - headers: { 846 - [name: string]: unknown 847 - } 848 - content: { 849 - 'application/json': { 850 - /** @description Human readable error message. */ 851 - message: string 852 - } 853 - } 854 - } 855 - /** @description Internal server error */ 856 - 500: { 857 - headers: { 858 - [name: string]: unknown 859 - } 860 - content: { 861 - 'application/json': { 862 - /** @description Human readable error message. */ 863 - message: string 864 - } 865 - } 866 - } 867 - } 868 - } 869 - me_handler: { 870 - parameters: { 871 - query?: never 872 - header?: never 873 - path?: never 874 - cookie?: never 875 - } 876 - requestBody?: never 877 - responses: { 878 - /** @description Successful response */ 879 - 200: { 880 - headers: { 881 - [name: string]: unknown 882 - } 883 - content: { 884 - 'application/json': { 885 - user: components['schemas']['AuthUser'] 886 - } 887 - } 888 - } 889 - /** @description Bad request */ 890 - 400: { 891 - headers: { 892 - [name: string]: unknown 893 - } 894 - content: { 895 - 'application/json': { 896 - /** @description Human readable error message. */ 897 - message: string 898 - } 899 - } 900 - } 901 - /** @description Authentication required */ 902 - 401: { 903 - headers: { 904 - [name: string]: unknown 905 - } 906 - content: { 907 - 'application/json': { 908 - /** @description Human readable error message. */ 909 - message: string 910 - } 911 - } 912 - } 913 - /** @description Forbidden */ 914 - 403: { 915 - headers: { 916 - [name: string]: unknown 917 - } 918 - content: { 919 - 'application/json': { 920 - /** @description Human readable error message. */ 921 - message: string 922 - } 923 - } 924 - } 925 - /** @description Resource not found */ 926 - 404: { 927 - headers: { 928 - [name: string]: unknown 929 - } 930 - content: { 931 - 'application/json': { 932 - /** @description Human readable error message. */ 933 - message: string 934 - } 935 - } 936 - } 937 - /** @description Internal server error */ 938 - 500: { 939 - headers: { 940 - [name: string]: unknown 941 - } 942 - content: { 943 - 'application/json': { 944 - /** @description Human readable error message. */ 945 - message: string 946 - } 947 - } 948 - } 949 - } 950 - } 951 - create_build_handler: { 952 - parameters: { 953 - query?: never 954 - header?: never 955 - path?: never 956 - cookie?: never 957 - } 958 - requestBody?: never 959 - responses: { 960 - /** @description Successful response */ 961 - 200: { 962 - headers: { 963 - [name: string]: unknown 964 - } 965 - content: { 966 - 'application/json': { 967 - build_id: string 968 - status: string 969 - } 970 - } 971 - } 972 - /** @description Bad request */ 973 - 400: { 974 - headers: { 975 - [name: string]: unknown 976 - } 977 - content: { 978 - 'application/json': { 979 - /** @description Human readable error message. */ 980 - message: string 981 - } 982 - } 983 - } 984 - /** @description Authentication required */ 985 - 401: { 986 - headers: { 987 - [name: string]: unknown 988 - } 989 - content: { 990 - 'application/json': { 991 - /** @description Human readable error message. */ 992 - message: string 993 - } 994 - } 995 - } 996 - /** @description Forbidden */ 997 - 403: { 998 - headers: { 999 - [name: string]: unknown 1000 - } 1001 - content: { 1002 - 'application/json': { 1003 - /** @description Human readable error message. */ 1004 - message: string 1005 - } 1006 - } 1007 - } 1008 - /** @description Resource not found */ 1009 - 404: { 1010 - headers: { 1011 - [name: string]: unknown 1012 - } 1013 - content: { 1014 - 'application/json': { 1015 - /** @description Human readable error message. */ 1016 - message: string 1017 - } 1018 - } 1019 - } 1020 - /** @description Internal server error */ 1021 - 500: { 1022 - headers: { 1023 - [name: string]: unknown 1024 - } 1025 - content: { 1026 - 'application/json': { 1027 - /** @description Human readable error message. */ 1028 - message: string 1029 - } 1030 - } 1031 - } 1032 - } 1033 - } 1034 - get_build_handler: { 1035 - parameters: { 1036 - query?: never 1037 - header?: never 1038 - path: { 1039 - /** @description Build ID */ 1040 - build_id: string 1041 - } 1042 - cookie?: never 1043 - } 1044 - requestBody?: never 1045 - responses: { 1046 - /** @description Successful response */ 1047 - 200: { 1048 - headers: { 1049 - [name: string]: unknown 1050 - } 1051 - content: { 1052 - 'application/json': { 1053 - artifact?: null | components['schemas']['BuildArtifactResponse'] 1054 - build_id: string 1055 - entry: string 1056 - error?: string | null 1057 - finished_at?: string | null 1058 - guild_id: string 1059 - logs: string[] 1060 - started_at?: string | null 1061 - status: string 1062 - } 1063 - } 1064 - } 1065 - /** @description Bad request */ 1066 - 400: { 1067 - headers: { 1068 - [name: string]: unknown 1069 - } 1070 - content: { 1071 - 'application/json': { 1072 - /** @description Human readable error message. */ 1073 - message: string 1074 - } 1075 - } 1076 - } 1077 - /** @description Authentication required */ 1078 - 401: { 1079 - headers: { 1080 - [name: string]: unknown 1081 - } 1082 - content: { 1083 - 'application/json': { 1084 - /** @description Human readable error message. */ 1085 - message: string 1086 - } 1087 - } 1088 - } 1089 - /** @description Forbidden */ 1090 - 403: { 1091 - headers: { 1092 - [name: string]: unknown 1093 - } 1094 - content: { 1095 - 'application/json': { 1096 - /** @description Human readable error message. */ 1097 - message: string 1098 - } 1099 - } 1100 - } 1101 - /** @description Resource not found */ 1102 - 404: { 1103 - headers: { 1104 - [name: string]: unknown 1105 - } 1106 - content: { 1107 - 'application/json': { 1108 - /** @description Human readable error message. */ 1109 - message: string 1110 - } 1111 - } 1112 - } 1113 - /** @description Internal server error */ 1114 - 500: { 1115 - headers: { 1116 - [name: string]: unknown 1117 - } 1118 - content: { 1119 - 'application/json': { 1120 - /** @description Human readable error message. */ 1121 - message: string 1122 - } 1123 - } 1124 - } 1125 - } 1126 - } 1127 - list_deployments_handler: { 1128 - parameters: { 1129 - query?: never 1130 - header?: never 1131 - path?: never 1132 - cookie?: never 1133 - } 1134 - requestBody?: never 1135 - responses: { 1136 - /** @description Successful response */ 1137 - 200: { 1138 - headers: { 1139 - [name: string]: unknown 1140 - } 1141 - content: { 1142 - 'application/json': components['schemas']['DeploymentListItem'][] 1143 - } 1144 - } 1145 - /** @description Bad request */ 1146 - 400: { 1147 - headers: { 1148 - [name: string]: unknown 1149 - } 1150 - content: { 1151 - 'application/json': { 1152 - /** @description Human readable error message. */ 1153 - message: string 1154 - } 1155 - } 1156 - } 1157 - /** @description Authentication required */ 1158 - 401: { 1159 - headers: { 1160 - [name: string]: unknown 1161 - } 1162 - content: { 1163 - 'application/json': { 1164 - /** @description Human readable error message. */ 1165 - message: string 1166 - } 1167 - } 1168 - } 1169 - /** @description Forbidden */ 1170 - 403: { 1171 - headers: { 1172 - [name: string]: unknown 1173 - } 1174 - content: { 1175 - 'application/json': { 1176 - /** @description Human readable error message. */ 1177 - message: string 1178 - } 1179 - } 1180 - } 1181 - /** @description Resource not found */ 1182 - 404: { 1183 - headers: { 1184 - [name: string]: unknown 1185 - } 1186 - content: { 1187 - 'application/json': { 1188 - /** @description Human readable error message. */ 1189 - message: string 1190 - } 1191 - } 1192 - } 1193 - /** @description Internal server error */ 1194 - 500: { 1195 - headers: { 1196 - [name: string]: unknown 1197 - } 1198 - content: { 1199 - 'application/json': { 1200 - /** @description Human readable error message. */ 1201 - message: string 1202 - } 1203 - } 1204 - } 1205 - } 1206 - } 1207 - get_deployment_handler: { 1208 - parameters: { 1209 - query?: { 1210 - /** @description Include bundled output in response */ 1211 - include_bundle?: boolean 1212 - } 1213 - header?: never 1214 - path: { 1215 - /** @description Discord guild id */ 1216 - guild_id: string 1217 - } 1218 - cookie?: never 1219 - } 1220 - requestBody?: never 1221 - responses: { 1222 - /** @description Successful response */ 1223 - 200: { 1224 - headers: { 1225 - [name: string]: unknown 1226 - } 1227 - content: { 1228 - 'application/json': { 1229 - bundle?: string | null 1230 - created_at: string 1231 - entry: string 1232 - files?: components['schemas']['DeploymentFile'][] | null 1233 - guild_id: string 1234 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 1235 - updated_at: string 1236 - } 1237 - } 1238 - } 1239 - /** @description Bad request */ 1240 - 400: { 1241 - headers: { 1242 - [name: string]: unknown 1243 - } 1244 - content: { 1245 - 'application/json': { 1246 - /** @description Human readable error message. */ 1247 - message: string 1248 - } 1249 - } 1250 - } 1251 - /** @description Authentication required */ 1252 - 401: { 1253 - headers: { 1254 - [name: string]: unknown 1255 - } 1256 - content: { 1257 - 'application/json': { 1258 - /** @description Human readable error message. */ 1259 - message: string 1260 - } 1261 - } 1262 - } 1263 - /** @description Forbidden */ 1264 - 403: { 1265 - headers: { 1266 - [name: string]: unknown 1267 - } 1268 - content: { 1269 - 'application/json': { 1270 - /** @description Human readable error message. */ 1271 - message: string 1272 - } 1273 - } 1274 - } 1275 - /** @description Resource not found */ 1276 - 404: { 1277 - headers: { 1278 - [name: string]: unknown 1279 - } 1280 - content: { 1281 - 'application/json': { 1282 - /** @description Human readable error message. */ 1283 - message: string 1284 - } 1285 - } 1286 - } 1287 - /** @description Internal server error */ 1288 - 500: { 1289 - headers: { 1290 - [name: string]: unknown 1291 - } 1292 - content: { 1293 - 'application/json': { 1294 - /** @description Human readable error message. */ 1295 - message: string 1296 - } 1297 - } 1298 - } 1299 - } 1300 - } 1301 - upsert_deployment_handler: { 1302 - parameters: { 1303 - query?: never 1304 - header?: never 1305 - path: { 1306 - /** @description Discord guild id */ 1307 - guild_id: string 1308 - } 1309 - cookie?: never 1310 - } 1311 - requestBody: { 1312 - content: { 1313 - 'application/json': components['schemas']['DeploymentRequest'] 1314 - } 1315 - } 1316 - responses: { 1317 - /** @description Successful response */ 1318 - 200: { 1319 - headers: { 1320 - [name: string]: unknown 1321 - } 1322 - content: { 1323 - 'application/json': { 1324 - bundle?: string | null 1325 - created_at: string 1326 - entry: string 1327 - files?: components['schemas']['DeploymentFile'][] | null 1328 - guild_id: string 1329 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 1330 - updated_at: string 1331 - } 1332 - } 1333 - } 1334 - /** @description Bad request */ 1335 - 400: { 1336 - headers: { 1337 - [name: string]: unknown 1338 - } 1339 - content: { 1340 - 'application/json': { 1341 - /** @description Human readable error message. */ 1342 - message: string 1343 - } 1344 - } 1345 - } 1346 - /** @description Authentication required */ 1347 - 401: { 1348 - headers: { 1349 - [name: string]: unknown 1350 - } 1351 - content: { 1352 - 'application/json': { 1353 - /** @description Human readable error message. */ 1354 - message: string 1355 - } 1356 - } 1357 - } 1358 - /** @description Forbidden */ 1359 - 403: { 1360 - headers: { 1361 - [name: string]: unknown 1362 - } 1363 - content: { 1364 - 'application/json': { 1365 - /** @description Human readable error message. */ 1366 - message: string 1367 - } 1368 - } 1369 - } 1370 - /** @description Resource not found */ 1371 - 404: { 1372 - headers: { 1373 - [name: string]: unknown 1374 - } 1375 - content: { 1376 - 'application/json': { 1377 - /** @description Human readable error message. */ 1378 - message: string 1379 - } 1380 - } 1381 - } 1382 - /** @description Internal server error */ 1383 - 500: { 1384 - headers: { 1385 - [name: string]: unknown 1386 - } 1387 - content: { 1388 - 'application/json': { 1389 - /** @description Human readable error message. */ 1390 - message: string 1391 - } 1392 - } 1393 - } 1394 - } 1395 - } 1396 - list_deployment_history_handler: { 1397 - parameters: { 1398 - query?: { 1399 - /** @description Page size, max 100 */ 1400 - limit?: number 1401 - /** @description RFC3339 deployed_at cursor */ 1402 - cursor_deployed_at?: string 1403 - /** @description Revision id cursor */ 1404 - cursor_id?: string 1405 - /** @description Include bundled output in response */ 1406 - include_bundle?: boolean 1407 - } 1408 - header?: never 1409 - path: { 1410 - /** @description Discord guild id */ 1411 - guild_id: string 1412 - } 1413 - cookie?: never 1414 - } 1415 - requestBody?: never 1416 - responses: { 1417 - /** @description Successful response */ 1418 - 200: { 1419 - headers: { 1420 - [name: string]: unknown 1421 - } 1422 - content: { 1423 - 'application/json': { 1424 - actor: components['schemas']['DeploymentActorResponse'] 1425 - base_revision_id?: string | null 1426 - build_id?: string | null 1427 - bundle?: string | null 1428 - change_summary?: null | components['schemas']['DeploymentChangeSummary'] 1429 - deploy_source: components['schemas']['DeploymentSource'] 1430 - deployed_at: string 1431 - entry: string 1432 - error_message?: string | null 1433 - files?: components['schemas']['DeploymentFile'][] | null 1434 - guild_id: string 1435 - id: string 1436 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 1437 - status: components['schemas']['DeploymentRevisionStatus'] 1438 - }[] 1439 - } 1440 - } 1441 - /** @description Bad request */ 1442 - 400: { 1443 - headers: { 1444 - [name: string]: unknown 1445 - } 1446 - content: { 1447 - 'application/json': { 1448 - /** @description Human readable error message. */ 1449 - message: string 1450 - } 1451 - } 1452 - } 1453 - /** @description Authentication required */ 1454 - 401: { 1455 - headers: { 1456 - [name: string]: unknown 1457 - } 1458 - content: { 1459 - 'application/json': { 1460 - /** @description Human readable error message. */ 1461 - message: string 1462 - } 1463 - } 1464 - } 1465 - /** @description Forbidden */ 1466 - 403: { 1467 - headers: { 1468 - [name: string]: unknown 1469 - } 1470 - content: { 1471 - 'application/json': { 1472 - /** @description Human readable error message. */ 1473 - message: string 1474 - } 1475 - } 1476 - } 1477 - /** @description Resource not found */ 1478 - 404: { 1479 - headers: { 1480 - [name: string]: unknown 1481 - } 1482 - content: { 1483 - 'application/json': { 1484 - /** @description Human readable error message. */ 1485 - message: string 1486 - } 1487 - } 1488 - } 1489 - /** @description Internal server error */ 1490 - 500: { 1491 - headers: { 1492 - [name: string]: unknown 1493 - } 1494 - content: { 1495 - 'application/json': { 1496 - /** @description Human readable error message. */ 1497 - message: string 1498 - } 1499 - } 1500 - } 1501 - } 1502 - } 1503 - get_deployment_revision_handler: { 1504 - parameters: { 1505 - query?: { 1506 - /** @description Include bundled output in response */ 1507 - include_bundle?: boolean 1508 - } 1509 - header?: never 1510 - path: { 1511 - /** @description Discord guild id */ 1512 - guild_id: string 1513 - /** @description Revision id */ 1514 - revision_id: string 1515 - } 1516 - cookie?: never 1517 - } 1518 - requestBody?: never 1519 - responses: { 1520 - /** @description Successful response */ 1521 - 200: { 1522 - headers: { 1523 - [name: string]: unknown 1524 - } 1525 - content: { 1526 - 'application/json': { 1527 - actor: components['schemas']['DeploymentActorResponse'] 1528 - base_revision_id?: string | null 1529 - build_id?: string | null 1530 - bundle?: string | null 1531 - change_summary?: null | components['schemas']['DeploymentChangeSummary'] 1532 - deploy_source: components['schemas']['DeploymentSource'] 1533 - deployed_at: string 1534 - entry: string 1535 - error_message?: string | null 1536 - files?: components['schemas']['DeploymentFile'][] | null 1537 - guild_id: string 1538 - id: string 1539 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 1540 - status: components['schemas']['DeploymentRevisionStatus'] 1541 - } 1542 - } 1543 - } 1544 - /** @description Bad request */ 1545 - 400: { 1546 - headers: { 1547 - [name: string]: unknown 1548 - } 1549 - content: { 1550 - 'application/json': { 1551 - /** @description Human readable error message. */ 1552 - message: string 1553 - } 1554 - } 1555 - } 1556 - /** @description Authentication required */ 1557 - 401: { 1558 - headers: { 1559 - [name: string]: unknown 1560 - } 1561 - content: { 1562 - 'application/json': { 1563 - /** @description Human readable error message. */ 1564 - message: string 1565 - } 1566 - } 1567 - } 1568 - /** @description Forbidden */ 1569 - 403: { 1570 - headers: { 1571 - [name: string]: unknown 1572 - } 1573 - content: { 1574 - 'application/json': { 1575 - /** @description Human readable error message. */ 1576 - message: string 1577 - } 1578 - } 1579 - } 1580 - /** @description Resource not found */ 1581 - 404: { 1582 - headers: { 1583 - [name: string]: unknown 1584 - } 1585 - content: { 1586 - 'application/json': { 1587 - /** @description Human readable error message. */ 1588 - message: string 1589 - } 1590 - } 1591 - } 1592 - /** @description Internal server error */ 1593 - 500: { 1594 - headers: { 1595 - [name: string]: unknown 1596 - } 1597 - content: { 1598 - 'application/json': { 1599 - /** @description Human readable error message. */ 1600 - message: string 1601 - } 1602 - } 1603 - } 1604 - } 1605 - } 1606 - rollback_deployment_handler: { 1607 - parameters: { 1608 - query?: never 1609 - header?: never 1610 - path: { 1611 - /** @description Discord guild id */ 1612 - guild_id: string 1613 - /** @description Successful revision id to rollback to */ 1614 - revision_id: string 1615 - } 1616 - cookie?: never 1617 - } 1618 - requestBody?: never 1619 - responses: { 1620 - /** @description Successful response */ 1621 - 200: { 1622 - headers: { 1623 - [name: string]: unknown 1624 - } 1625 - content: { 1626 - 'application/json': { 1627 - actor: components['schemas']['DeploymentActorResponse'] 1628 - base_revision_id?: string | null 1629 - build_id?: string | null 1630 - bundle?: string | null 1631 - change_summary?: null | components['schemas']['DeploymentChangeSummary'] 1632 - deploy_source: components['schemas']['DeploymentSource'] 1633 - deployed_at: string 1634 - entry: string 1635 - error_message?: string | null 1636 - files?: components['schemas']['DeploymentFile'][] | null 1637 - guild_id: string 1638 - id: string 1639 - source_map?: null | components['schemas']['DeploymentSourceMapFile'] 1640 - status: components['schemas']['DeploymentRevisionStatus'] 1641 - } 1642 - } 1643 - } 1644 - /** @description Bad request */ 1645 - 400: { 1646 - headers: { 1647 - [name: string]: unknown 1648 - } 1649 - content: { 1650 - 'application/json': { 1651 - /** @description Human readable error message. */ 1652 - message: string 1653 - } 1654 - } 1655 - } 1656 - /** @description Authentication required */ 1657 - 401: { 1658 - headers: { 1659 - [name: string]: unknown 1660 - } 1661 - content: { 1662 - 'application/json': { 1663 - /** @description Human readable error message. */ 1664 - message: string 1665 - } 1666 - } 1667 - } 1668 - /** @description Forbidden */ 1669 - 403: { 1670 - headers: { 1671 - [name: string]: unknown 1672 - } 1673 - content: { 1674 - 'application/json': { 1675 - /** @description Human readable error message. */ 1676 - message: string 1677 - } 1678 - } 1679 - } 1680 - /** @description Resource not found */ 1681 - 404: { 1682 - headers: { 1683 - [name: string]: unknown 1684 - } 1685 - content: { 1686 - 'application/json': { 1687 - /** @description Human readable error message. */ 1688 - message: string 1689 - } 1690 - } 1691 - } 1692 - /** @description Internal server error */ 1693 - 500: { 1694 - headers: { 1695 - [name: string]: unknown 1696 - } 1697 - content: { 1698 - 'application/json': { 1699 - /** @description Human readable error message. */ 1700 - message: string 1701 - } 1702 - } 1703 - } 1704 - } 1705 - } 1706 - list_guilds_handler: { 1707 - parameters: { 1708 - query?: never 1709 - header?: never 1710 - path?: never 1711 - cookie?: never 1712 - } 1713 - requestBody?: never 1714 - responses: { 1715 - /** @description Successful response */ 1716 - 200: { 1717 - headers: { 1718 - [name: string]: unknown 1719 - } 1720 - content: { 1721 - 'application/json': { 1722 - icon?: string | null 1723 - id: string 1724 - name: string 1725 - /** Format: int64 */ 1726 - permissions: number 1727 - }[] 1728 - } 1729 - } 1730 - /** @description Bad request */ 1731 - 400: { 1732 - headers: { 1733 - [name: string]: unknown 1734 - } 1735 - content: { 1736 - 'application/json': { 1737 - /** @description Human readable error message. */ 1738 - message: string 1739 - } 1740 - } 1741 - } 1742 - /** @description Authentication required */ 1743 - 401: { 1744 - headers: { 1745 - [name: string]: unknown 1746 - } 1747 - content: { 1748 - 'application/json': { 1749 - /** @description Human readable error message. */ 1750 - message: string 1751 - } 1752 - } 1753 - } 1754 - /** @description Forbidden */ 1755 - 403: { 1756 - headers: { 1757 - [name: string]: unknown 1758 - } 1759 - content: { 1760 - 'application/json': { 1761 - /** @description Human readable error message. */ 1762 - message: string 1763 - } 1764 - } 1765 - } 1766 - /** @description Resource not found */ 1767 - 404: { 1768 - headers: { 1769 - [name: string]: unknown 1770 - } 1771 - content: { 1772 - 'application/json': { 1773 - /** @description Human readable error message. */ 1774 - message: string 1775 - } 1776 - } 1777 - } 1778 - /** @description Internal server error */ 1779 - 500: { 1780 - headers: { 1781 - [name: string]: unknown 1782 - } 1783 - content: { 1784 - 'application/json': { 1785 - /** @description Human readable error message. */ 1786 - message: string 1787 - } 1788 - } 1789 - } 1790 - } 1791 - } 1792 - health_check: { 1793 - parameters: { 1794 - query?: never 1795 - header?: never 1796 - path?: never 1797 - cookie?: never 1798 - } 1799 - requestBody?: never 1800 - responses: { 1801 - /** @description API is healthy */ 1802 - 200: { 1803 - headers: { 1804 - [name: string]: unknown 1805 - } 1806 - content: { 1807 - 'text/plain': string 1808 - } 1809 - } 1810 - } 1811 - } 1812 - export_guild_handler: { 1813 - parameters: { 1814 - query?: never 1815 - header?: never 1816 - path: { 1817 - /** @description Guild ID */ 1818 - guild_id: string 1819 - } 1820 - cookie?: never 1821 - } 1822 - requestBody?: never 1823 - responses: { 1824 - /** @description Successful response */ 1825 - 200: { 1826 - headers: { 1827 - [name: string]: unknown 1828 - } 1829 - content: { 1830 - 'application/json': { 1831 - backup_id: string 1832 - } 1833 - } 1834 - } 1835 - /** @description Bad request */ 1836 - 400: { 1837 - headers: { 1838 - [name: string]: unknown 1839 - } 1840 - content: { 1841 - 'application/json': { 1842 - /** @description Human readable error message. */ 1843 - message: string 1844 - } 1845 - } 1846 - } 1847 - /** @description Authentication required */ 1848 - 401: { 1849 - headers: { 1850 - [name: string]: unknown 1851 - } 1852 - content: { 1853 - 'application/json': { 1854 - /** @description Human readable error message. */ 1855 - message: string 1856 - } 1857 - } 1858 - } 1859 - /** @description Forbidden */ 1860 - 403: { 1861 - headers: { 1862 - [name: string]: unknown 1863 - } 1864 - content: { 1865 - 'application/json': { 1866 - /** @description Human readable error message. */ 1867 - message: string 1868 - } 1869 - } 1870 - } 1871 - /** @description Resource not found */ 1872 - 404: { 1873 - headers: { 1874 - [name: string]: unknown 1875 - } 1876 - content: { 1877 - 'application/json': { 1878 - /** @description Human readable error message. */ 1879 - message: string 1880 - } 1881 - } 1882 - } 1883 - /** @description Internal server error */ 1884 - 500: { 1885 - headers: { 1886 - [name: string]: unknown 1887 - } 1888 - content: { 1889 - 'application/json': { 1890 - /** @description Human readable error message. */ 1891 - message: string 1892 - } 1893 - } 1894 - } 1895 - } 1896 - } 1897 - list_stores_handler: { 1898 - parameters: { 1899 - query: { 1900 - guild_id: string 1901 - } 1902 - header?: never 1903 - path?: never 1904 - cookie?: never 1905 - } 1906 - requestBody?: never 1907 - responses: { 1908 - /** @description Successful response */ 1909 - 200: { 1910 - headers: { 1911 - [name: string]: unknown 1912 - } 1913 - content: { 1914 - 'application/json': { 1915 - /** Format: date-time */ 1916 - created_at: string 1917 - guild_id: string 1918 - id: string 1919 - store_name: string 1920 - /** Format: date-time */ 1921 - updated_at: string 1922 - }[] 1923 - } 1924 - } 1925 - /** @description Bad request */ 1926 - 400: { 1927 - headers: { 1928 - [name: string]: unknown 1929 - } 1930 - content: { 1931 - 'application/json': { 1932 - /** @description Human readable error message. */ 1933 - message: string 1934 - } 1935 - } 1936 - } 1937 - /** @description Authentication required */ 1938 - 401: { 1939 - headers: { 1940 - [name: string]: unknown 1941 - } 1942 - content: { 1943 - 'application/json': { 1944 - /** @description Human readable error message. */ 1945 - message: string 1946 - } 1947 - } 1948 - } 1949 - /** @description Forbidden */ 1950 - 403: { 1951 - headers: { 1952 - [name: string]: unknown 1953 - } 1954 - content: { 1955 - 'application/json': { 1956 - /** @description Human readable error message. */ 1957 - message: string 1958 - } 1959 - } 1960 - } 1961 - /** @description Resource not found */ 1962 - 404: { 1963 - headers: { 1964 - [name: string]: unknown 1965 - } 1966 - content: { 1967 - 'application/json': { 1968 - /** @description Human readable error message. */ 1969 - message: string 1970 - } 1971 - } 1972 - } 1973 - /** @description Internal server error */ 1974 - 500: { 1975 - headers: { 1976 - [name: string]: unknown 1977 - } 1978 - content: { 1979 - 'application/json': { 1980 - /** @description Human readable error message. */ 1981 - message: string 1982 - } 1983 - } 1984 - } 1985 - } 1986 - } 1987 - create_store_handler: { 1988 - parameters: { 1989 - query?: never 1990 - header?: never 1991 - path?: never 1992 - cookie?: never 1993 - } 1994 - requestBody: { 1995 - content: { 1996 - 'application/json': components['schemas']['CreateStoreRequest'] 1997 - } 1998 - } 1999 - responses: { 2000 - /** @description Successful response */ 2001 - 200: { 2002 - headers: { 2003 - [name: string]: unknown 2004 - } 2005 - content: { 2006 - 'application/json': { 2007 - store: components['schemas']['KvStore'] 2008 - } 2009 - } 2010 - } 2011 - /** @description Bad request */ 2012 - 400: { 2013 - headers: { 2014 - [name: string]: unknown 2015 - } 2016 - content: { 2017 - 'application/json': { 2018 - /** @description Human readable error message. */ 2019 - message: string 2020 - } 2021 - } 2022 - } 2023 - /** @description Authentication required */ 2024 - 401: { 2025 - headers: { 2026 - [name: string]: unknown 2027 - } 2028 - content: { 2029 - 'application/json': { 2030 - /** @description Human readable error message. */ 2031 - message: string 2032 - } 2033 - } 2034 - } 2035 - /** @description Forbidden */ 2036 - 403: { 2037 - headers: { 2038 - [name: string]: unknown 2039 - } 2040 - content: { 2041 - 'application/json': { 2042 - /** @description Human readable error message. */ 2043 - message: string 2044 - } 2045 - } 2046 - } 2047 - /** @description Resource not found */ 2048 - 404: { 2049 - headers: { 2050 - [name: string]: unknown 2051 - } 2052 - content: { 2053 - 'application/json': { 2054 - /** @description Human readable error message. */ 2055 - message: string 2056 - } 2057 - } 2058 - } 2059 - /** @description Internal server error */ 2060 - 500: { 2061 - headers: { 2062 - [name: string]: unknown 2063 - } 2064 - content: { 2065 - 'application/json': { 2066 - /** @description Human readable error message. */ 2067 - message: string 2068 - } 2069 - } 2070 - } 2071 - } 2072 - } 2073 - delete_store_handler: { 2074 - parameters: { 2075 - query?: never 2076 - header?: never 2077 - path: { 2078 - /** @description Guild ID */ 2079 - guild_id: string 2080 - /** @description Store name */ 2081 - store_name: string 2082 - } 2083 - cookie?: never 2084 - } 2085 - requestBody?: never 2086 - responses: { 2087 - /** @description Store deleted successfully */ 2088 - 200: { 2089 - headers: { 2090 - [name: string]: unknown 2091 - } 2092 - content?: never 2093 - } 2094 - /** @description Bad request */ 2095 - 400: { 2096 - headers: { 2097 - [name: string]: unknown 2098 - } 2099 - content: { 2100 - 'application/json': { 2101 - /** @description Human readable error message. */ 2102 - message: string 2103 - } 2104 - } 2105 - } 2106 - /** @description Authentication required */ 2107 - 401: { 2108 - headers: { 2109 - [name: string]: unknown 2110 - } 2111 - content: { 2112 - 'application/json': { 2113 - /** @description Human readable error message. */ 2114 - message: string 2115 - } 2116 - } 2117 - } 2118 - /** @description Forbidden */ 2119 - 403: { 2120 - headers: { 2121 - [name: string]: unknown 2122 - } 2123 - content: { 2124 - 'application/json': { 2125 - /** @description Human readable error message. */ 2126 - message: string 2127 - } 2128 - } 2129 - } 2130 - /** @description Resource not found */ 2131 - 404: { 2132 - headers: { 2133 - [name: string]: unknown 2134 - } 2135 - content: { 2136 - 'application/json': { 2137 - /** @description Human readable error message. */ 2138 - message: string 2139 - } 2140 - } 2141 - } 2142 - /** @description Internal server error */ 2143 - 500: { 2144 - headers: { 2145 - [name: string]: unknown 2146 - } 2147 - content: { 2148 - 'application/json': { 2149 - /** @description Human readable error message. */ 2150 - message: string 2151 - } 2152 - } 2153 - } 2154 - } 2155 - } 2156 - list_keys_handler: { 2157 - parameters: { 2158 - query?: { 2159 - prefix?: string | null 2160 - limit?: number | null 2161 - cursor?: string | null 2162 - } 2163 - header?: never 2164 - path: { 2165 - /** @description Guild ID */ 2166 - guild_id: string 2167 - /** @description Store name */ 2168 - store_name: string 2169 - } 2170 - cookie?: never 2171 - } 2172 - requestBody?: never 2173 - responses: { 2174 - /** @description Successful response */ 2175 - 200: { 2176 - headers: { 2177 - [name: string]: unknown 2178 - } 2179 - content: { 2180 - 'application/json': { 2181 - /** @description Cursor for fetching the next page of results. */ 2182 - cursor?: string | null 2183 - /** @description The keys returned by this list operation. */ 2184 - keys: components['schemas']['RawKvKeyInfo'][] 2185 - /** @description Whether all matching keys have been returned. */ 2186 - listComplete: boolean 2187 - } 2188 - } 2189 - } 2190 - /** @description Bad request */ 2191 - 400: { 2192 - headers: { 2193 - [name: string]: unknown 2194 - } 2195 - content: { 2196 - 'application/json': { 2197 - /** @description Human readable error message. */ 2198 - message: string 2199 - } 2200 - } 2201 - } 2202 - /** @description Authentication required */ 2203 - 401: { 2204 - headers: { 2205 - [name: string]: unknown 2206 - } 2207 - content: { 2208 - 'application/json': { 2209 - /** @description Human readable error message. */ 2210 - message: string 2211 - } 2212 - } 2213 - } 2214 - /** @description Forbidden */ 2215 - 403: { 2216 - headers: { 2217 - [name: string]: unknown 2218 - } 2219 - content: { 2220 - 'application/json': { 2221 - /** @description Human readable error message. */ 2222 - message: string 2223 - } 2224 - } 2225 - } 2226 - /** @description Resource not found */ 2227 - 404: { 2228 - headers: { 2229 - [name: string]: unknown 2230 - } 2231 - content: { 2232 - 'application/json': { 2233 - /** @description Human readable error message. */ 2234 - message: string 2235 - } 2236 - } 2237 - } 2238 - /** @description Internal server error */ 2239 - 500: { 2240 - headers: { 2241 - [name: string]: unknown 2242 - } 2243 - content: { 2244 - 'application/json': { 2245 - /** @description Human readable error message. */ 2246 - message: string 2247 - } 2248 - } 2249 - } 2250 - } 2251 - } 2252 - get_value_handler: { 2253 - parameters: { 2254 - query?: never 2255 - header?: never 2256 - path: { 2257 - /** @description Guild ID */ 2258 - guild_id: string 2259 - /** @description Store name */ 2260 - store_name: string 2261 - /** @description Key to retrieve */ 2262 - key: string 2263 - } 2264 - cookie?: never 2265 - } 2266 - requestBody?: never 2267 - responses: { 2268 - /** @description Successful response */ 2269 - 200: { 2270 - headers: { 2271 - [name: string]: unknown 2272 - } 2273 - content: { 2274 - 'application/json': { 2275 - value?: string | null 2276 - } 2277 - } 2278 - } 2279 - /** @description Bad request */ 2280 - 400: { 2281 - headers: { 2282 - [name: string]: unknown 2283 - } 2284 - content: { 2285 - 'application/json': { 2286 - /** @description Human readable error message. */ 2287 - message: string 2288 - } 2289 - } 2290 - } 2291 - /** @description Authentication required */ 2292 - 401: { 2293 - headers: { 2294 - [name: string]: unknown 2295 - } 2296 - content: { 2297 - 'application/json': { 2298 - /** @description Human readable error message. */ 2299 - message: string 2300 - } 2301 - } 2302 - } 2303 - /** @description Forbidden */ 2304 - 403: { 2305 - headers: { 2306 - [name: string]: unknown 2307 - } 2308 - content: { 2309 - 'application/json': { 2310 - /** @description Human readable error message. */ 2311 - message: string 2312 - } 2313 - } 2314 - } 2315 - /** @description Resource not found */ 2316 - 404: { 2317 - headers: { 2318 - [name: string]: unknown 2319 - } 2320 - content: { 2321 - 'application/json': { 2322 - /** @description Human readable error message. */ 2323 - message: string 2324 - } 2325 - } 2326 - } 2327 - /** @description Internal server error */ 2328 - 500: { 2329 - headers: { 2330 - [name: string]: unknown 2331 - } 2332 - content: { 2333 - 'application/json': { 2334 - /** @description Human readable error message. */ 2335 - message: string 2336 - } 2337 - } 2338 - } 2339 - } 2340 - } 2341 - set_value_handler: { 2342 - parameters: { 2343 - query?: never 2344 - header?: never 2345 - path: { 2346 - /** @description Guild ID */ 2347 - guild_id: string 2348 - /** @description Store name */ 2349 - store_name: string 2350 - /** @description Key to set */ 2351 - key: string 2352 - } 2353 - cookie?: never 2354 - } 2355 - requestBody: { 2356 - content: { 2357 - 'application/json': components['schemas']['SetValueRequest'] 2358 - } 2359 - } 2360 - responses: { 2361 - /** @description Successful response */ 2362 - 200: { 2363 - headers: { 2364 - [name: string]: unknown 2365 - } 2366 - content: { 2367 - 'application/json': { 2368 - success: boolean 2369 - } 2370 - } 2371 - } 2372 - /** @description Bad request */ 2373 - 400: { 2374 - headers: { 2375 - [name: string]: unknown 2376 - } 2377 - content: { 2378 - 'application/json': { 2379 - /** @description Human readable error message. */ 2380 - message: string 2381 - } 2382 - } 2383 - } 2384 - /** @description Authentication required */ 2385 - 401: { 2386 - headers: { 2387 - [name: string]: unknown 2388 - } 2389 - content: { 2390 - 'application/json': { 2391 - /** @description Human readable error message. */ 2392 - message: string 2393 - } 2394 - } 2395 - } 2396 - /** @description Forbidden */ 2397 - 403: { 2398 - headers: { 2399 - [name: string]: unknown 2400 - } 2401 - content: { 2402 - 'application/json': { 2403 - /** @description Human readable error message. */ 2404 - message: string 2405 - } 2406 - } 2407 - } 2408 - /** @description Resource not found */ 2409 - 404: { 2410 - headers: { 2411 - [name: string]: unknown 2412 - } 2413 - content: { 2414 - 'application/json': { 2415 - /** @description Human readable error message. */ 2416 - message: string 2417 - } 2418 - } 2419 - } 2420 - /** @description Internal server error */ 2421 - 500: { 2422 - headers: { 2423 - [name: string]: unknown 2424 - } 2425 - content: { 2426 - 'application/json': { 2427 - /** @description Human readable error message. */ 2428 - message: string 2429 - } 2430 - } 2431 - } 2432 - } 2433 - } 2434 - delete_key_handler: { 2435 - parameters: { 2436 - query?: never 2437 - header?: never 2438 - path: { 2439 - /** @description Guild ID */ 2440 - guild_id: string 2441 - /** @description Store name */ 2442 - store_name: string 2443 - /** @description Key to delete */ 2444 - key: string 2445 - } 2446 - cookie?: never 2447 - } 2448 - requestBody?: never 2449 - responses: { 2450 - /** @description Key deleted successfully */ 2451 - 200: { 2452 - headers: { 2453 - [name: string]: unknown 2454 - } 2455 - content?: never 2456 - } 2457 - /** @description Bad request */ 2458 - 400: { 2459 - headers: { 2460 - [name: string]: unknown 2461 - } 2462 - content: { 2463 - 'application/json': { 2464 - /** @description Human readable error message. */ 2465 - message: string 2466 - } 2467 - } 2468 - } 2469 - /** @description Authentication required */ 2470 - 401: { 2471 - headers: { 2472 - [name: string]: unknown 2473 - } 2474 - content: { 2475 - 'application/json': { 2476 - /** @description Human readable error message. */ 2477 - message: string 2478 - } 2479 - } 2480 - } 2481 - /** @description Forbidden */ 2482 - 403: { 2483 - headers: { 2484 - [name: string]: unknown 2485 - } 2486 - content: { 2487 - 'application/json': { 2488 - /** @description Human readable error message. */ 2489 - message: string 2490 - } 2491 - } 2492 - } 2493 - /** @description Resource not found */ 2494 - 404: { 2495 - headers: { 2496 - [name: string]: unknown 2497 - } 2498 - content: { 2499 - 'application/json': { 2500 - /** @description Human readable error message. */ 2501 - message: string 2502 - } 2503 - } 2504 - } 2505 - /** @description Internal server error */ 2506 - 500: { 2507 - headers: { 2508 - [name: string]: unknown 2509 - } 2510 - content: { 2511 - 'application/json': { 2512 - /** @description Human readable error message. */ 2513 - message: string 2514 - } 2515 - } 2516 - } 2517 - } 2518 - } 2519 - get_logs: { 2520 - parameters: { 2521 - query?: { 2522 - /** @description Maximum number of log entries to return (default 100, max 1000). */ 2523 - limit?: number 2524 - } 2525 - header?: never 2526 - path?: never 2527 - cookie?: never 2528 - } 2529 - requestBody?: never 2530 - responses: { 2531 - /** @description Successful response */ 2532 - 200: { 2533 - headers: { 2534 - [name: string]: unknown 2535 - } 2536 - content: { 2537 - 'application/json': { 2538 - /** @description Guild ID if applicable. */ 2539 - guild_id?: string | null 2540 - /** @description Log level (trace, debug, info, warn, error). */ 2541 - level: string 2542 - /** @description Log message. */ 2543 - message: string 2544 - /** @description Target/module that produced the log. */ 2545 - target: string 2546 - /** 2547 - * Format: int64 2548 - * @description Timestamp in milliseconds since Unix epoch. 2549 - */ 2550 - timestamp: number 2551 - }[] 2552 - } 2553 - } 2554 - /** @description Bad request */ 2555 - 400: { 2556 - headers: { 2557 - [name: string]: unknown 2558 - } 2559 - content: { 2560 - 'application/json': { 2561 - /** @description Human readable error message. */ 2562 - message: string 2563 - } 2564 - } 2565 - } 2566 - /** @description Authentication required */ 2567 - 401: { 2568 - headers: { 2569 - [name: string]: unknown 2570 - } 2571 - content: { 2572 - 'application/json': { 2573 - /** @description Human readable error message. */ 2574 - message: string 2575 - } 2576 - } 2577 - } 2578 - /** @description Forbidden */ 2579 - 403: { 2580 - headers: { 2581 - [name: string]: unknown 2582 - } 2583 - content: { 2584 - 'application/json': { 2585 - /** @description Human readable error message. */ 2586 - message: string 2587 - } 2588 - } 2589 - } 2590 - /** @description Resource not found */ 2591 - 404: { 2592 - headers: { 2593 - [name: string]: unknown 2594 - } 2595 - content: { 2596 - 'application/json': { 2597 - /** @description Human readable error message. */ 2598 - message: string 2599 - } 2600 - } 2601 - } 2602 - /** @description Internal server error */ 2603 - 500: { 2604 - headers: { 2605 - [name: string]: unknown 2606 - } 2607 - content: { 2608 - 'application/json': { 2609 - /** @description Human readable error message. */ 2610 - message: string 2611 - } 2612 - } 2613 - } 2614 - } 2615 - } 2616 - get_guild_logs: { 2617 - parameters: { 2618 - query?: { 2619 - /** @description Maximum number of log entries to return (default 100, max 1000). */ 2620 - limit?: number 2621 - } 2622 - header?: never 2623 - path: { 2624 - /** @description Discord guild ID */ 2625 - guild_id: string 2626 - } 2627 - cookie?: never 2628 - } 2629 - requestBody?: never 2630 - responses: { 2631 - /** @description Successful response */ 2632 - 200: { 2633 - headers: { 2634 - [name: string]: unknown 2635 - } 2636 - content: { 2637 - 'application/json': { 2638 - /** @description Guild ID if applicable. */ 2639 - guild_id?: string | null 2640 - /** @description Log level (trace, debug, info, warn, error). */ 2641 - level: string 2642 - /** @description Log message. */ 2643 - message: string 2644 - /** @description Target/module that produced the log. */ 2645 - target: string 2646 - /** 2647 - * Format: int64 2648 - * @description Timestamp in milliseconds since Unix epoch. 2649 - */ 2650 - timestamp: number 2651 - }[] 2652 - } 2653 - } 2654 - /** @description Bad request */ 2655 - 400: { 2656 - headers: { 2657 - [name: string]: unknown 2658 - } 2659 - content: { 2660 - 'application/json': { 2661 - /** @description Human readable error message. */ 2662 - message: string 2663 - } 2664 - } 2665 - } 2666 - /** @description Authentication required */ 2667 - 401: { 2668 - headers: { 2669 - [name: string]: unknown 2670 - } 2671 - content: { 2672 - 'application/json': { 2673 - /** @description Human readable error message. */ 2674 - message: string 2675 - } 2676 - } 2677 - } 2678 - /** @description Forbidden */ 2679 - 403: { 2680 - headers: { 2681 - [name: string]: unknown 2682 - } 2683 - content: { 2684 - 'application/json': { 2685 - /** @description Human readable error message. */ 2686 - message: string 2687 - } 2688 - } 2689 - } 2690 - /** @description Resource not found */ 2691 - 404: { 2692 - headers: { 2693 - [name: string]: unknown 2694 - } 2695 - content: { 2696 - 'application/json': { 2697 - /** @description Human readable error message. */ 2698 - message: string 2699 - } 2700 - } 2701 - } 2702 - /** @description Internal server error */ 2703 - 500: { 2704 - headers: { 2705 - [name: string]: unknown 2706 - } 2707 - content: { 2708 - 'application/json': { 2709 - /** @description Human readable error message. */ 2710 - message: string 2711 - } 2712 - } 2713 - } 2714 - } 2715 - } 2716 - get_metrics: { 2717 - parameters: { 2718 - query?: never 2719 - header?: never 2720 - path?: never 2721 - cookie?: never 2722 - } 2723 - requestBody?: never 2724 - responses: { 2725 - /** @description Successful response */ 2726 - 200: { 2727 - headers: { 2728 - [name: string]: unknown 2729 - } 2730 - content: { 2731 - 'text/plain': unknown 2732 - } 2733 - } 2734 - /** @description Bad request */ 2735 - 400: { 2736 - headers: { 2737 - [name: string]: unknown 2738 - } 2739 - content: { 2740 - 'application/json': { 2741 - /** @description Human readable error message. */ 2742 - message: string 2743 - } 2744 - } 2745 - } 2746 - /** @description Authentication required */ 2747 - 401: { 2748 - headers: { 2749 - [name: string]: unknown 2750 - } 2751 - content: { 2752 - 'application/json': { 2753 - /** @description Human readable error message. */ 2754 - message: string 2755 - } 2756 - } 2757 - } 2758 - /** @description Forbidden */ 2759 - 403: { 2760 - headers: { 2761 - [name: string]: unknown 2762 - } 2763 - content: { 2764 - 'application/json': { 2765 - /** @description Human readable error message. */ 2766 - message: string 2767 - } 2768 - } 2769 - } 2770 - /** @description Resource not found */ 2771 - 404: { 2772 - headers: { 2773 - [name: string]: unknown 2774 - } 2775 - content: { 2776 - 'application/json': { 2777 - /** @description Human readable error message. */ 2778 - message: string 2779 - } 2780 - } 2781 - } 2782 - /** @description Internal server error */ 2783 - 500: { 2784 - headers: { 2785 - [name: string]: unknown 2786 - } 2787 - content: { 2788 - 'application/json': { 2789 - /** @description Human readable error message. */ 2790 - message: string 2791 - } 2792 - } 2793 - } 2794 - } 2795 - } 2796 - get_metrics_json: { 2797 - parameters: { 2798 - query?: never 2799 - header?: never 2800 - path?: never 2801 - cookie?: never 2802 - } 2803 - requestBody?: never 2804 - responses: { 2805 - /** @description Successful response */ 2806 - 200: { 2807 - headers: { 2808 - [name: string]: unknown 2809 - } 2810 - content: { 2811 - 'application/json': { 2812 - /** Format: int64 */ 2813 - avg_latency_us: number 2814 - /** Format: int64 */ 2815 - dispatch_errors: number 2816 - /** Format: int64 */ 2817 - dispatch_total: number 2818 - /** Format: int64 */ 2819 - isolate_count: number 2820 - /** Format: int64 */ 2821 - isolate_restarts: number 2822 - /** Format: int64 */ 2823 - migration_quiesce_duration_us: number 2824 - /** Format: int64 */ 2825 - migration_success: number 2826 - /** Format: int64 */ 2827 - migration_timeout: number 2828 - /** Format: int64 */ 2829 - oom_errors: number 2830 - /** Format: int64 */ 2831 - p50_latency_us: number 2832 - /** Format: int64 */ 2833 - p95_latency_us: number 2834 - /** Format: int64 */ 2835 - p99_latency_us: number 2836 - /** Format: int64 */ 2837 - runtime_restarts: number 2838 - /** Format: int64 */ 2839 - timeout_errors: number 2840 - } 2841 - } 2842 - } 2843 - /** @description Bad request */ 2844 - 400: { 2845 - headers: { 2846 - [name: string]: unknown 2847 - } 2848 - content: { 2849 - 'application/json': { 2850 - /** @description Human readable error message. */ 2851 - message: string 2852 - } 2853 - } 2854 - } 2855 - /** @description Authentication required */ 2856 - 401: { 2857 - headers: { 2858 - [name: string]: unknown 2859 - } 2860 - content: { 2861 - 'application/json': { 2862 - /** @description Human readable error message. */ 2863 - message: string 2864 - } 2865 - } 2866 - } 2867 - /** @description Forbidden */ 2868 - 403: { 2869 - headers: { 2870 - [name: string]: unknown 2871 - } 2872 - content: { 2873 - 'application/json': { 2874 - /** @description Human readable error message. */ 2875 - message: string 2876 - } 2877 - } 2878 - } 2879 - /** @description Resource not found */ 2880 - 404: { 2881 - headers: { 2882 - [name: string]: unknown 2883 - } 2884 - content: { 2885 - 'application/json': { 2886 - /** @description Human readable error message. */ 2887 - message: string 2888 - } 2889 - } 2890 - } 2891 - /** @description Internal server error */ 2892 - 500: { 2893 - headers: { 2894 - [name: string]: unknown 2895 - } 2896 - content: { 2897 - 'application/json': { 2898 - /** @description Human readable error message. */ 2899 - message: string 2900 - } 2901 - } 2902 - } 2903 - } 2904 - } 2905 - list_secrets_handler: { 2906 - parameters: { 2907 - query?: never 2908 - header?: never 2909 - path: { 2910 - /** @description Discord guild id */ 2911 - guild_id: string 2912 - } 2913 - cookie?: never 2914 - } 2915 - requestBody?: never 2916 - responses: { 2917 - /** @description Successful response */ 2918 - 200: { 2919 - headers: { 2920 - [name: string]: unknown 2921 - } 2922 - content: { 2923 - 'application/json': { 2924 - allowed_hosts: string[] 2925 - name: string 2926 - }[] 2927 - } 2928 - } 2929 - /** @description Bad request */ 2930 - 400: { 2931 - headers: { 2932 - [name: string]: unknown 2933 - } 2934 - content: { 2935 - 'application/json': { 2936 - /** @description Human readable error message. */ 2937 - message: string 2938 - } 2939 - } 2940 - } 2941 - /** @description Authentication required */ 2942 - 401: { 2943 - headers: { 2944 - [name: string]: unknown 2945 - } 2946 - content: { 2947 - 'application/json': { 2948 - /** @description Human readable error message. */ 2949 - message: string 2950 - } 2951 - } 2952 - } 2953 - /** @description Forbidden */ 2954 - 403: { 2955 - headers: { 2956 - [name: string]: unknown 2957 - } 2958 - content: { 2959 - 'application/json': { 2960 - /** @description Human readable error message. */ 2961 - message: string 2962 - } 2963 - } 2964 - } 2965 - /** @description Resource not found */ 2966 - 404: { 2967 - headers: { 2968 - [name: string]: unknown 2969 - } 2970 - content: { 2971 - 'application/json': { 2972 - /** @description Human readable error message. */ 2973 - message: string 2974 - } 2975 - } 2976 - } 2977 - /** @description Internal server error */ 2978 - 500: { 2979 - headers: { 2980 - [name: string]: unknown 2981 - } 2982 - content: { 2983 - 'application/json': { 2984 - /** @description Human readable error message. */ 2985 - message: string 2986 - } 2987 - } 2988 - } 2989 - } 2990 - } 2991 - upsert_secret_handler: { 2992 - parameters: { 2993 - query?: never 2994 - header?: never 2995 - path: { 2996 - /** @description Discord guild id */ 2997 - guild_id: string 2998 - /** @description Secret name */ 2999 - name: string 3000 - } 3001 - cookie?: never 3002 - } 3003 - requestBody: { 3004 - content: { 3005 - 'application/json': components['schemas']['UpsertSecretRequest'] 3006 - } 3007 - } 3008 - responses: { 3009 - /** @description Successful response */ 3010 - 200: { 3011 - headers: { 3012 - [name: string]: unknown 3013 - } 3014 - content: { 3015 - 'application/json': { 3016 - allowed_hosts: string[] 3017 - name: string 3018 - } 3019 - } 3020 - } 3021 - /** @description Bad request */ 3022 - 400: { 3023 - headers: { 3024 - [name: string]: unknown 3025 - } 3026 - content: { 3027 - 'application/json': { 3028 - /** @description Human readable error message. */ 3029 - message: string 3030 - } 3031 - } 3032 - } 3033 - /** @description Authentication required */ 3034 - 401: { 3035 - headers: { 3036 - [name: string]: unknown 3037 - } 3038 - content: { 3039 - 'application/json': { 3040 - /** @description Human readable error message. */ 3041 - message: string 3042 - } 3043 - } 3044 - } 3045 - /** @description Forbidden */ 3046 - 403: { 3047 - headers: { 3048 - [name: string]: unknown 3049 - } 3050 - content: { 3051 - 'application/json': { 3052 - /** @description Human readable error message. */ 3053 - message: string 3054 - } 3055 - } 3056 - } 3057 - /** @description Resource not found */ 3058 - 404: { 3059 - headers: { 3060 - [name: string]: unknown 3061 - } 3062 - content: { 3063 - 'application/json': { 3064 - /** @description Human readable error message. */ 3065 - message: string 3066 - } 3067 - } 3068 - } 3069 - /** @description Internal server error */ 3070 - 500: { 3071 - headers: { 3072 - [name: string]: unknown 3073 - } 3074 - content: { 3075 - 'application/json': { 3076 - /** @description Human readable error message. */ 3077 - message: string 3078 - } 3079 - } 3080 - } 3081 - } 3082 - } 3083 - delete_secret_handler: { 3084 - parameters: { 3085 - query?: never 3086 - header?: never 3087 - path: { 3088 - /** @description Discord guild id */ 3089 - guild_id: string 3090 - /** @description Secret name */ 3091 - name: string 3092 - } 3093 - cookie?: never 3094 - } 3095 - requestBody?: never 3096 - responses: { 3097 - /** @description Successful response */ 3098 - 200: { 3099 - headers: { 3100 - [name: string]: unknown 3101 - } 3102 - content: { 3103 - 'application/json': { 3104 - deleted: boolean 3105 - } 3106 - } 3107 - } 3108 - /** @description Bad request */ 3109 - 400: { 3110 - headers: { 3111 - [name: string]: unknown 3112 - } 3113 - content: { 3114 - 'application/json': { 3115 - /** @description Human readable error message. */ 3116 - message: string 3117 - } 3118 - } 3119 - } 3120 - /** @description Authentication required */ 3121 - 401: { 3122 - headers: { 3123 - [name: string]: unknown 3124 - } 3125 - content: { 3126 - 'application/json': { 3127 - /** @description Human readable error message. */ 3128 - message: string 3129 - } 3130 - } 3131 - } 3132 - /** @description Forbidden */ 3133 - 403: { 3134 - headers: { 3135 - [name: string]: unknown 3136 - } 3137 - content: { 3138 - 'application/json': { 3139 - /** @description Human readable error message. */ 3140 - message: string 3141 - } 3142 - } 3143 - } 3144 - /** @description Resource not found */ 3145 - 404: { 3146 - headers: { 3147 - [name: string]: unknown 3148 - } 3149 - content: { 3150 - 'application/json': { 3151 - /** @description Human readable error message. */ 3152 - message: string 3153 - } 3154 - } 3155 - } 3156 - /** @description Internal server error */ 3157 - 500: { 3158 - headers: { 3159 - [name: string]: unknown 3160 - } 3161 - content: { 3162 - 'application/json': { 3163 - /** @description Human readable error message. */ 3164 - message: string 3165 - } 3166 - } 3167 - } 3168 - } 3169 - } 3170 - list_tokens_handler: { 3171 - parameters: { 3172 - query?: never 3173 - header?: never 3174 - path?: never 3175 - cookie?: never 3176 - } 3177 - requestBody?: never 3178 - responses: { 3179 - /** @description Successful response */ 3180 - 200: { 3181 - headers: { 3182 - [name: string]: unknown 3183 - } 3184 - content: { 3185 - 'application/json': { 3186 - created_at: string 3187 - label?: string | null 3188 - last_used_at?: string | null 3189 - token_id: string 3190 - }[] 3191 - } 3192 - } 3193 - /** @description Bad request */ 3194 - 400: { 3195 - headers: { 3196 - [name: string]: unknown 3197 - } 3198 - content: { 3199 - 'application/json': { 3200 - /** @description Human readable error message. */ 3201 - message: string 3202 - } 3203 - } 3204 - } 3205 - /** @description Authentication required */ 3206 - 401: { 3207 - headers: { 3208 - [name: string]: unknown 3209 - } 3210 - content: { 3211 - 'application/json': { 3212 - /** @description Human readable error message. */ 3213 - message: string 3214 - } 3215 - } 3216 - } 3217 - /** @description Forbidden */ 3218 - 403: { 3219 - headers: { 3220 - [name: string]: unknown 3221 - } 3222 - content: { 3223 - 'application/json': { 3224 - /** @description Human readable error message. */ 3225 - message: string 3226 - } 3227 - } 3228 - } 3229 - /** @description Resource not found */ 3230 - 404: { 3231 - headers: { 3232 - [name: string]: unknown 3233 - } 3234 - content: { 3235 - 'application/json': { 3236 - /** @description Human readable error message. */ 3237 - message: string 3238 - } 3239 - } 3240 - } 3241 - /** @description Internal server error */ 3242 - 500: { 3243 - headers: { 3244 - [name: string]: unknown 3245 - } 3246 - content: { 3247 - 'application/json': { 3248 - /** @description Human readable error message. */ 3249 - message: string 3250 - } 3251 - } 3252 - } 3253 - } 3254 - } 3255 - create_token_handler: { 3256 - parameters: { 3257 - query?: never 3258 - header?: never 3259 - path?: never 3260 - cookie?: never 3261 - } 3262 - requestBody: { 3263 - content: { 3264 - 'application/json': components['schemas']['CreateTokenRequest'] 3265 - } 3266 - } 3267 - responses: { 3268 - /** @description Successful response */ 3269 - 200: { 3270 - headers: { 3271 - [name: string]: unknown 3272 - } 3273 - content: { 3274 - 'application/json': { 3275 - token: string 3276 - } 3277 - } 3278 - } 3279 - /** @description Bad request */ 3280 - 400: { 3281 - headers: { 3282 - [name: string]: unknown 3283 - } 3284 - content: { 3285 - 'application/json': { 3286 - /** @description Human readable error message. */ 3287 - message: string 3288 - } 3289 - } 3290 - } 3291 - /** @description Authentication required */ 3292 - 401: { 3293 - headers: { 3294 - [name: string]: unknown 3295 - } 3296 - content: { 3297 - 'application/json': { 3298 - /** @description Human readable error message. */ 3299 - message: string 3300 - } 3301 - } 3302 - } 3303 - /** @description Forbidden */ 3304 - 403: { 3305 - headers: { 3306 - [name: string]: unknown 3307 - } 3308 - content: { 3309 - 'application/json': { 3310 - /** @description Human readable error message. */ 3311 - message: string 3312 - } 3313 - } 3314 - } 3315 - /** @description Resource not found */ 3316 - 404: { 3317 - headers: { 3318 - [name: string]: unknown 3319 - } 3320 - content: { 3321 - 'application/json': { 3322 - /** @description Human readable error message. */ 3323 - message: string 3324 - } 3325 - } 3326 - } 3327 - /** @description Internal server error */ 3328 - 500: { 3329 - headers: { 3330 - [name: string]: unknown 3331 - } 3332 - content: { 3333 - 'application/json': { 3334 - /** @description Human readable error message. */ 3335 - message: string 3336 - } 3337 - } 3338 - } 3339 - } 3340 - } 3341 - delete_token_handler: { 3342 - parameters: { 3343 - query?: never 3344 - header?: never 3345 - path: { 3346 - /** @description Token identifier */ 3347 - token_id: string 3348 - } 3349 - cookie?: never 3350 - } 3351 - requestBody?: never 3352 - responses: { 3353 - /** @description Successful response */ 3354 - 200: { 3355 - headers: { 3356 - [name: string]: unknown 3357 - } 3358 - content: { 3359 - 'application/json': unknown 3360 - } 3361 - } 3362 - /** @description Token deleted */ 3363 - 204: { 3364 - headers: { 3365 - [name: string]: unknown 3366 - } 3367 - content?: never 3368 - } 3369 - /** @description Bad request */ 3370 - 400: { 3371 - headers: { 3372 - [name: string]: unknown 3373 - } 3374 - content: { 3375 - 'application/json': { 3376 - /** @description Human readable error message. */ 3377 - message: string 3378 - } 3379 - } 3380 - } 3381 - /** @description Authentication required */ 3382 - 401: { 3383 - headers: { 3384 - [name: string]: unknown 3385 - } 3386 - content: { 3387 - 'application/json': { 3388 - /** @description Human readable error message. */ 3389 - message: string 3390 - } 3391 - } 3392 - } 3393 - /** @description Forbidden */ 3394 - 403: { 3395 - headers: { 3396 - [name: string]: unknown 3397 - } 3398 - content: { 3399 - 'application/json': { 3400 - /** @description Human readable error message. */ 3401 - message: string 3402 - } 3403 - } 3404 - } 3405 - /** @description Resource not found */ 3406 - 404: { 3407 - headers: { 3408 - [name: string]: unknown 3409 - } 3410 - content: { 3411 - 'application/json': { 3412 - /** @description Human readable error message. */ 3413 - message: string 3414 - } 3415 - } 3416 - } 3417 - /** @description Internal server error */ 3418 - 500: { 3419 - headers: { 3420 - [name: string]: unknown 3421 - } 3422 - content: { 3423 - 'application/json': { 3424 - /** @description Human readable error message. */ 3425 - message: string 3426 - } 3427 - } 3428 - } 3429 - } 3430 - } 3431 - }
+552
packages/api-client/src/generated/sdk.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + import type { Client, Options as Options2, TDataShape } from './client' 4 + import { client } from './client.gen' 5 + import type { 6 + CallbackHandlerData, 7 + CallbackHandlerErrors, 8 + CreateBuildHandlerData, 9 + CreateBuildHandlerErrors, 10 + CreateBuildHandlerResponses, 11 + CreateStoreHandlerData, 12 + CreateStoreHandlerErrors, 13 + CreateStoreHandlerResponses, 14 + CreateTokenHandlerData, 15 + CreateTokenHandlerErrors, 16 + CreateTokenHandlerResponses, 17 + DeleteKeyHandlerData, 18 + DeleteKeyHandlerErrors, 19 + DeleteKeyHandlerResponses, 20 + DeleteSecretHandlerData, 21 + DeleteSecretHandlerErrors, 22 + DeleteSecretHandlerResponses, 23 + DeleteStoreHandlerData, 24 + DeleteStoreHandlerErrors, 25 + DeleteStoreHandlerResponses, 26 + DeleteTokenHandlerData, 27 + DeleteTokenHandlerErrors, 28 + DeleteTokenHandlerResponses, 29 + ExportGuildHandlerData, 30 + ExportGuildHandlerErrors, 31 + ExportGuildHandlerResponses, 32 + GetBuildHandlerData, 33 + GetBuildHandlerErrors, 34 + GetBuildHandlerResponses, 35 + GetDeploymentHandlerData, 36 + GetDeploymentHandlerErrors, 37 + GetDeploymentHandlerResponses, 38 + GetDeploymentRevisionHandlerData, 39 + GetDeploymentRevisionHandlerErrors, 40 + GetDeploymentRevisionHandlerResponses, 41 + GetGuildLogsData, 42 + GetGuildLogsErrors, 43 + GetGuildLogsResponses, 44 + GetLogsData, 45 + GetLogsErrors, 46 + GetLogsResponses, 47 + GetMetricsData, 48 + GetMetricsErrors, 49 + GetMetricsJsonData, 50 + GetMetricsJsonErrors, 51 + GetMetricsJsonResponses, 52 + GetMetricsResponses, 53 + GetValueHandlerData, 54 + GetValueHandlerErrors, 55 + GetValueHandlerResponses, 56 + HealthCheckData, 57 + HealthCheckResponses, 58 + ListDeploymentHistoryHandlerData, 59 + ListDeploymentHistoryHandlerErrors, 60 + ListDeploymentHistoryHandlerResponses, 61 + ListDeploymentsHandlerData, 62 + ListDeploymentsHandlerErrors, 63 + ListDeploymentsHandlerResponses, 64 + ListGuildsHandlerData, 65 + ListGuildsHandlerErrors, 66 + ListGuildsHandlerResponses, 67 + ListKeysHandlerData, 68 + ListKeysHandlerErrors, 69 + ListKeysHandlerResponses, 70 + ListSecretsHandlerData, 71 + ListSecretsHandlerErrors, 72 + ListSecretsHandlerResponses, 73 + ListStoresHandlerData, 74 + ListStoresHandlerErrors, 75 + ListStoresHandlerResponses, 76 + ListTokensHandlerData, 77 + ListTokensHandlerErrors, 78 + ListTokensHandlerResponses, 79 + LoginHandlerData, 80 + LoginHandlerErrors, 81 + MeHandlerData, 82 + MeHandlerErrors, 83 + MeHandlerResponses, 84 + RollbackDeploymentHandlerData, 85 + RollbackDeploymentHandlerErrors, 86 + RollbackDeploymentHandlerResponses, 87 + SetValueHandlerData, 88 + SetValueHandlerErrors, 89 + SetValueHandlerResponses, 90 + UpsertDeploymentHandlerData, 91 + UpsertDeploymentHandlerErrors, 92 + UpsertDeploymentHandlerResponses, 93 + UpsertSecretHandlerData, 94 + UpsertSecretHandlerErrors, 95 + UpsertSecretHandlerResponses 96 + } from './types.gen' 97 + 98 + export type Options< 99 + TData extends TDataShape = TDataShape, 100 + ThrowOnError extends boolean = boolean, 101 + TResponse = unknown 102 + > = Options2<TData, ThrowOnError, TResponse> & { 103 + /** 104 + * You can provide a client instance returned by `createClient()` instead of 105 + * individual options. This might be also useful if you want to implement a 106 + * custom client. 107 + */ 108 + client?: Client 109 + /** 110 + * You can pass arbitrary values through the `meta` object. This can be 111 + * used to access values that aren't defined as part of the SDK function. 112 + */ 113 + meta?: Record<string, unknown> 114 + } 115 + 116 + /** 117 + * Handle Discord OAuth callback, mint a session cookie, and redirect to the frontend dashboard. 118 + */ 119 + export const callbackHandler = <ThrowOnError extends boolean = false>( 120 + options: Options<CallbackHandlerData, ThrowOnError> 121 + ) => 122 + (options.client ?? client).get<unknown, CallbackHandlerErrors, ThrowOnError>({ 123 + url: '/auth/callback', 124 + ...options 125 + }) 126 + 127 + /** 128 + * Begin Discord OAuth flow and set a short-lived state cookie. 129 + */ 130 + export const loginHandler = <ThrowOnError extends boolean = false>( 131 + options?: Options<LoginHandlerData, ThrowOnError> 132 + ) => 133 + (options?.client ?? client).get<unknown, LoginHandlerErrors, ThrowOnError>({ 134 + url: '/auth/login', 135 + ...options 136 + }) 137 + 138 + /** 139 + * Return the currently authenticated user. 140 + */ 141 + export const meHandler = <ThrowOnError extends boolean = false>( 142 + options?: Options<MeHandlerData, ThrowOnError> 143 + ) => 144 + (options?.client ?? client).get<MeHandlerResponses, MeHandlerErrors, ThrowOnError>({ 145 + url: '/auth/me', 146 + ...options 147 + }) 148 + 149 + /** 150 + * Create a build 151 + * 152 + * Queues a server-side build for the provided project archive. 153 + */ 154 + export const createBuildHandler = <ThrowOnError extends boolean = false>( 155 + options?: Options<CreateBuildHandlerData, ThrowOnError> 156 + ) => 157 + (options?.client ?? client).post< 158 + CreateBuildHandlerResponses, 159 + CreateBuildHandlerErrors, 160 + ThrowOnError 161 + >({ url: '/builds/', ...options }) 162 + 163 + /** 164 + * Get build status 165 + * 166 + * Returns the current status, logs, and artifacts for a build. 167 + */ 168 + export const getBuildHandler = <ThrowOnError extends boolean = false>( 169 + options: Options<GetBuildHandlerData, ThrowOnError> 170 + ) => 171 + (options.client ?? client).get<GetBuildHandlerResponses, GetBuildHandlerErrors, ThrowOnError>({ 172 + url: '/builds/{build_id}', 173 + ...options 174 + }) 175 + 176 + /** 177 + * List deployments 178 + * 179 + * Returns all deployment snapshots the authenticated user has access to. 180 + */ 181 + export const listDeploymentsHandler = <ThrowOnError extends boolean = false>( 182 + options?: Options<ListDeploymentsHandlerData, ThrowOnError> 183 + ) => 184 + (options?.client ?? client).get< 185 + ListDeploymentsHandlerResponses, 186 + ListDeploymentsHandlerErrors, 187 + ThrowOnError 188 + >({ url: '/deployments/', ...options }) 189 + 190 + /** 191 + * Get deployment 192 + * 193 + * Returns the latest successful deployment snapshot for a guild. 194 + */ 195 + export const getDeploymentHandler = <ThrowOnError extends boolean = false>( 196 + options: Options<GetDeploymentHandlerData, ThrowOnError> 197 + ) => 198 + (options.client ?? client).get< 199 + GetDeploymentHandlerResponses, 200 + GetDeploymentHandlerErrors, 201 + ThrowOnError 202 + >({ url: '/deployments/{guild_id}', ...options }) 203 + 204 + /** 205 + * Deploy a guild 206 + * 207 + * Creates or updates the active deployment for a guild, then records a revision. 208 + */ 209 + export const upsertDeploymentHandler = <ThrowOnError extends boolean = false>( 210 + options: Options<UpsertDeploymentHandlerData, ThrowOnError> 211 + ) => 212 + (options.client ?? client).post< 213 + UpsertDeploymentHandlerResponses, 214 + UpsertDeploymentHandlerErrors, 215 + ThrowOnError 216 + >({ 217 + url: '/deployments/{guild_id}', 218 + ...options, 219 + headers: { 220 + 'Content-Type': 'application/json', 221 + ...options.headers 222 + } 223 + }) 224 + 225 + /** 226 + * List deployment history 227 + * 228 + * Returns deployment revisions for a guild in reverse chronological order. 229 + */ 230 + export const listDeploymentHistoryHandler = <ThrowOnError extends boolean = false>( 231 + options: Options<ListDeploymentHistoryHandlerData, ThrowOnError> 232 + ) => 233 + (options.client ?? client).get< 234 + ListDeploymentHistoryHandlerResponses, 235 + ListDeploymentHistoryHandlerErrors, 236 + ThrowOnError 237 + >({ url: '/deployments/{guild_id}/history', ...options }) 238 + 239 + /** 240 + * Get deployment revision 241 + * 242 + * Returns details for a specific deployment revision. 243 + */ 244 + export const getDeploymentRevisionHandler = <ThrowOnError extends boolean = false>( 245 + options: Options<GetDeploymentRevisionHandlerData, ThrowOnError> 246 + ) => 247 + (options.client ?? client).get< 248 + GetDeploymentRevisionHandlerResponses, 249 + GetDeploymentRevisionHandlerErrors, 250 + ThrowOnError 251 + >({ url: '/deployments/{guild_id}/revisions/{revision_id}', ...options }) 252 + 253 + /** 254 + * Rollback deployment 255 + * 256 + * Deploys a previous successful revision and records a new rollback revision. 257 + */ 258 + export const rollbackDeploymentHandler = <ThrowOnError extends boolean = false>( 259 + options: Options<RollbackDeploymentHandlerData, ThrowOnError> 260 + ) => 261 + (options.client ?? client).post< 262 + RollbackDeploymentHandlerResponses, 263 + RollbackDeploymentHandlerErrors, 264 + ThrowOnError 265 + >({ url: '/deployments/{guild_id}/rollback/{revision_id}', ...options }) 266 + 267 + /** 268 + * List guilds where the user is an admin and the bot is present. 269 + */ 270 + export const listGuildsHandler = <ThrowOnError extends boolean = false>( 271 + options?: Options<ListGuildsHandlerData, ThrowOnError> 272 + ) => 273 + (options?.client ?? client).get< 274 + ListGuildsHandlerResponses, 275 + ListGuildsHandlerErrors, 276 + ThrowOnError 277 + >({ url: '/guilds/', ...options }) 278 + 279 + /** 280 + * Check API liveness. 281 + */ 282 + export const healthCheck = <ThrowOnError extends boolean = false>( 283 + options?: Options<HealthCheckData, ThrowOnError> 284 + ) => 285 + (options?.client ?? client).get<HealthCheckResponses, unknown, ThrowOnError>({ 286 + url: '/health/', 287 + ...options 288 + }) 289 + 290 + /** 291 + * Export guild stores 292 + * 293 + * Creates a backup of all stores for a guild and returns a backup id. 294 + */ 295 + export const exportGuildHandler = <ThrowOnError extends boolean = false>( 296 + options: Options<ExportGuildHandlerData, ThrowOnError> 297 + ) => 298 + (options.client ?? client).post< 299 + ExportGuildHandlerResponses, 300 + ExportGuildHandlerErrors, 301 + ThrowOnError 302 + >({ url: '/kv/export/{guild_id}', ...options }) 303 + 304 + /** 305 + * List stores 306 + * 307 + * Returns all key-value stores for the specified guild. 308 + */ 309 + export const listStoresHandler = <ThrowOnError extends boolean = false>( 310 + options: Options<ListStoresHandlerData, ThrowOnError> 311 + ) => 312 + (options.client ?? client).get<ListStoresHandlerResponses, ListStoresHandlerErrors, ThrowOnError>( 313 + { url: '/kv/stores', ...options } 314 + ) 315 + 316 + /** 317 + * Create a store 318 + * 319 + * Creates a new key-value store for the specified guild. 320 + */ 321 + export const createStoreHandler = <ThrowOnError extends boolean = false>( 322 + options: Options<CreateStoreHandlerData, ThrowOnError> 323 + ) => 324 + (options.client ?? client).post< 325 + CreateStoreHandlerResponses, 326 + CreateStoreHandlerErrors, 327 + ThrowOnError 328 + >({ 329 + url: '/kv/stores', 330 + ...options, 331 + headers: { 332 + 'Content-Type': 'application/json', 333 + ...options.headers 334 + } 335 + }) 336 + 337 + /** 338 + * Delete a store 339 + * 340 + * Deletes a store and all stored keys. 341 + */ 342 + export const deleteStoreHandler = <ThrowOnError extends boolean = false>( 343 + options: Options<DeleteStoreHandlerData, ThrowOnError> 344 + ) => 345 + (options.client ?? client).delete< 346 + DeleteStoreHandlerResponses, 347 + DeleteStoreHandlerErrors, 348 + ThrowOnError 349 + >({ url: '/kv/stores/{guild_id}/{store_name}', ...options }) 350 + 351 + /** 352 + * List keys 353 + * 354 + * Returns keys in a store. Use cursor for pagination when list_complete is false. 355 + */ 356 + export const listKeysHandler = <ThrowOnError extends boolean = false>( 357 + options: Options<ListKeysHandlerData, ThrowOnError> 358 + ) => 359 + (options.client ?? client).get<ListKeysHandlerResponses, ListKeysHandlerErrors, ThrowOnError>({ 360 + url: '/kv/{guild_id}/{store_name}', 361 + ...options 362 + }) 363 + 364 + /** 365 + * Delete a key 366 + * 367 + * Deletes a key from the store if it exists. 368 + */ 369 + export const deleteKeyHandler = <ThrowOnError extends boolean = false>( 370 + options: Options<DeleteKeyHandlerData, ThrowOnError> 371 + ) => 372 + (options.client ?? client).delete< 373 + DeleteKeyHandlerResponses, 374 + DeleteKeyHandlerErrors, 375 + ThrowOnError 376 + >({ url: '/kv/{guild_id}/{store_name}/{key}', ...options }) 377 + 378 + /** 379 + * Get a value 380 + * 381 + * Returns the stored value or null when the key is missing. 382 + */ 383 + export const getValueHandler = <ThrowOnError extends boolean = false>( 384 + options: Options<GetValueHandlerData, ThrowOnError> 385 + ) => 386 + (options.client ?? client).get<GetValueHandlerResponses, GetValueHandlerErrors, ThrowOnError>({ 387 + url: '/kv/{guild_id}/{store_name}/{key}', 388 + ...options 389 + }) 390 + 391 + /** 392 + * Set a value 393 + * 394 + * Creates or replaces a value in the store. Optional expiration controls TTL. 395 + */ 396 + export const setValueHandler = <ThrowOnError extends boolean = false>( 397 + options: Options<SetValueHandlerData, ThrowOnError> 398 + ) => 399 + (options.client ?? client).put<SetValueHandlerResponses, SetValueHandlerErrors, ThrowOnError>({ 400 + url: '/kv/{guild_id}/{store_name}/{key}', 401 + ...options, 402 + headers: { 403 + 'Content-Type': 'application/json', 404 + ...options.headers 405 + } 406 + }) 407 + 408 + /** 409 + * List logs 410 + * 411 + * Returns recent log entries visible to the authenticated user. 412 + */ 413 + export const getLogs = <ThrowOnError extends boolean = false>( 414 + options?: Options<GetLogsData, ThrowOnError> 415 + ) => 416 + (options?.client ?? client).get<GetLogsResponses, GetLogsErrors, ThrowOnError>({ 417 + url: '/logs', 418 + ...options 419 + }) 420 + 421 + /** 422 + * List guild logs 423 + * 424 + * Returns recent log entries for a specific guild. 425 + */ 426 + export const getGuildLogs = <ThrowOnError extends boolean = false>( 427 + options: Options<GetGuildLogsData, ThrowOnError> 428 + ) => 429 + (options.client ?? client).get<GetGuildLogsResponses, GetGuildLogsErrors, ThrowOnError>({ 430 + url: '/logs/{guild_id}', 431 + ...options 432 + }) 433 + 434 + /** 435 + * Get metrics in Prometheus exposition format. 436 + */ 437 + export const getMetrics = <ThrowOnError extends boolean = false>( 438 + options?: Options<GetMetricsData, ThrowOnError> 439 + ) => 440 + (options?.client ?? client).get<GetMetricsResponses, GetMetricsErrors, ThrowOnError>({ 441 + url: '/metrics', 442 + ...options 443 + }) 444 + 445 + /** 446 + * Get metrics as JSON. 447 + */ 448 + export const getMetricsJson = <ThrowOnError extends boolean = false>( 449 + options?: Options<GetMetricsJsonData, ThrowOnError> 450 + ) => 451 + (options?.client ?? client).get<GetMetricsJsonResponses, GetMetricsJsonErrors, ThrowOnError>({ 452 + url: '/metrics/json', 453 + ...options 454 + }) 455 + 456 + /** 457 + * List secrets 458 + * 459 + * Returns metadata for all secrets stored for a guild. Values are never returned. 460 + */ 461 + export const listSecretsHandler = <ThrowOnError extends boolean = false>( 462 + options: Options<ListSecretsHandlerData, ThrowOnError> 463 + ) => 464 + (options.client ?? client).get< 465 + ListSecretsHandlerResponses, 466 + ListSecretsHandlerErrors, 467 + ThrowOnError 468 + >({ url: '/secrets/{guild_id}', ...options }) 469 + 470 + /** 471 + * Delete a secret 472 + * 473 + * Deletes a secret and refreshes the runtime to remove it. 474 + */ 475 + export const deleteSecretHandler = <ThrowOnError extends boolean = false>( 476 + options: Options<DeleteSecretHandlerData, ThrowOnError> 477 + ) => 478 + (options.client ?? client).delete< 479 + DeleteSecretHandlerResponses, 480 + DeleteSecretHandlerErrors, 481 + ThrowOnError 482 + >({ url: '/secrets/{guild_id}/{name}', ...options }) 483 + 484 + /** 485 + * Upsert a secret 486 + * 487 + * Creates or updates a secret value for a guild and refreshes the runtime. 488 + */ 489 + export const upsertSecretHandler = <ThrowOnError extends boolean = false>( 490 + options: Options<UpsertSecretHandlerData, ThrowOnError> 491 + ) => 492 + (options.client ?? client).put< 493 + UpsertSecretHandlerResponses, 494 + UpsertSecretHandlerErrors, 495 + ThrowOnError 496 + >({ 497 + url: '/secrets/{guild_id}/{name}', 498 + ...options, 499 + headers: { 500 + 'Content-Type': 'application/json', 501 + ...options.headers 502 + } 503 + }) 504 + 505 + /** 506 + * List tokens 507 + * 508 + * Returns metadata for all API tokens owned by the authenticated user. 509 + */ 510 + export const listTokensHandler = <ThrowOnError extends boolean = false>( 511 + options?: Options<ListTokensHandlerData, ThrowOnError> 512 + ) => 513 + (options?.client ?? client).get< 514 + ListTokensHandlerResponses, 515 + ListTokensHandlerErrors, 516 + ThrowOnError 517 + >({ url: '/tokens/', ...options }) 518 + 519 + /** 520 + * Create a token 521 + * 522 + * Creates a new API token for the authenticated user. The plaintext token is returned only once. 523 + */ 524 + export const createTokenHandler = <ThrowOnError extends boolean = false>( 525 + options: Options<CreateTokenHandlerData, ThrowOnError> 526 + ) => 527 + (options.client ?? client).post< 528 + CreateTokenHandlerResponses, 529 + CreateTokenHandlerErrors, 530 + ThrowOnError 531 + >({ 532 + url: '/tokens/', 533 + ...options, 534 + headers: { 535 + 'Content-Type': 'application/json', 536 + ...options.headers 537 + } 538 + }) 539 + 540 + /** 541 + * Delete a token 542 + * 543 + * Deletes the specified token. Requests using this token stop authenticating immediately. 544 + */ 545 + export const deleteTokenHandler = <ThrowOnError extends boolean = false>( 546 + options: Options<DeleteTokenHandlerData, ThrowOnError> 547 + ) => 548 + (options.client ?? client).delete< 549 + DeleteTokenHandlerResponses, 550 + DeleteTokenHandlerErrors, 551 + ThrowOnError 552 + >({ url: '/tokens/{token_id}', ...options })
+2871
packages/api-client/src/generated/types.gen.ts
··· 1 + // This file is auto-generated by @hey-api/openapi-ts 2 + 3 + export type ClientOptions = { 4 + baseUrl: `${string}://${string}/api` | (string & {}) 5 + } 6 + 7 + /** 8 + * Response envelope for /auth/me. 9 + */ 10 + export type AuthResponse = { 11 + user: AuthUser 12 + } 13 + 14 + /** 15 + * API representation of the authenticated user. 16 + */ 17 + export type AuthUser = { 18 + avatar?: string | null 19 + global_name?: string | null 20 + id: string 21 + username: string 22 + } 23 + 24 + /** 25 + * Build artifact output paths. 26 + */ 27 + export type BuildArtifactResponse = { 28 + /** 29 + * Bundled JavaScript output. 30 + */ 31 + bundle: string 32 + /** 33 + * Source map for the bundle. 34 + */ 35 + source_map: string 36 + } 37 + 38 + /** 39 + * Current build status and output. 40 + */ 41 + export type BuildStatusResponse = { 42 + artifact?: null | BuildArtifactResponse 43 + /** 44 + * Build identifier. 45 + */ 46 + build_id: string 47 + /** 48 + * Entry file path used for the build. 49 + */ 50 + entry: string 51 + /** 52 + * Error detail when the build fails. 53 + */ 54 + error?: string | null 55 + /** 56 + * Build completion time in RFC3339 (UTC). 57 + */ 58 + finished_at?: string | null 59 + /** 60 + * Guild ID the build targets. 61 + */ 62 + guild_id: string 63 + /** 64 + * Build logs, newest last. 65 + */ 66 + logs: Array<string> 67 + /** 68 + * Build start time in RFC3339 (UTC). 69 + */ 70 + started_at?: string | null 71 + /** 72 + * Current build status string. 73 + */ 74 + status: string 75 + } 76 + 77 + /** 78 + * Response returned when a build is created. 79 + */ 80 + export type CreateBuildResponse = { 81 + /** 82 + * Build identifier. 83 + */ 84 + build_id: string 85 + /** 86 + * Current build status string. 87 + */ 88 + status: string 89 + } 90 + 91 + export type CreateStoreRequest = { 92 + guild_id: string 93 + store_name: string 94 + } 95 + 96 + export type CreateStoreResponse = { 97 + store: KvStore 98 + } 99 + 100 + /** 101 + * Create-token payload. 102 + */ 103 + export type CreateTokenRequest = { 104 + label?: string | null 105 + } 106 + 107 + /** 108 + * Token creation response (includes plaintext token). 109 + */ 110 + export type CreateTokenResponse = { 111 + token: string 112 + } 113 + 114 + export type DeleteKeyParams = { 115 + guild_id: string 116 + key: string 117 + store_name: string 118 + } 119 + 120 + export type DeleteSecretResponse = { 121 + deleted: boolean 122 + } 123 + 124 + export type DeleteStoreParams = { 125 + guild_id: string 126 + store_name: string 127 + } 128 + 129 + export type DeploymentActorResponse = { 130 + actor_type: DeploymentActorType 131 + user_id?: string | null 132 + username?: string | null 133 + } 134 + 135 + export type DeploymentActorType = 'session' | 'token' | 'system' 136 + 137 + export type DeploymentChangeSummary = { 138 + added_files: number 139 + modified_files: number 140 + removed_files: number 141 + } 142 + 143 + export type DeploymentFile = { 144 + contents: string 145 + path: string 146 + } 147 + 148 + export type DeploymentListItem = { 149 + created_at: string 150 + entry: string 151 + guild_id: string 152 + updated_at: string 153 + } 154 + 155 + export type DeploymentRequest = { 156 + build_id?: string | null 157 + bundle?: string | null 158 + entry: string 159 + files?: Array<DeploymentFile> | null 160 + source_map?: null | DeploymentSourceMapFile 161 + } 162 + 163 + /** 164 + * Deployment snapshot stored for a guild. 165 + */ 166 + export type DeploymentResponse = { 167 + /** 168 + * Bundled output when stored, if included. 169 + */ 170 + bundle?: string | null 171 + /** 172 + * Snapshot creation time in RFC3339 (UTC). 173 + */ 174 + created_at: string 175 + /** 176 + * Entry file path used for the deployment. 177 + */ 178 + entry: string 179 + /** 180 + * Raw files when the deployment was uploaded as sources. 181 + */ 182 + files?: Array<DeploymentFile> | null 183 + /** 184 + * Guild ID for the deployment. 185 + */ 186 + guild_id: string 187 + source_map?: null | DeploymentSourceMapFile 188 + /** 189 + * Snapshot update time in RFC3339 (UTC). 190 + */ 191 + updated_at: string 192 + } 193 + 194 + export type DeploymentRevisionResponse = { 195 + actor: DeploymentActorResponse 196 + base_revision_id?: string | null 197 + build_id?: string | null 198 + bundle?: string | null 199 + change_summary?: null | DeploymentChangeSummary 200 + deploy_source: DeploymentSource 201 + /** 202 + * Deployment time in RFC3339 (UTC). 203 + */ 204 + deployed_at: string 205 + entry: string 206 + error_message?: string | null 207 + files?: Array<DeploymentFile> | null 208 + guild_id: string 209 + id: string 210 + source_map?: null | DeploymentSourceMapFile 211 + status: DeploymentRevisionStatus 212 + } 213 + 214 + export type DeploymentRevisionStatus = 'success' | 'failed' 215 + 216 + export type DeploymentSource = 'cli' | 'webui' | 'bootstrap' | 'api' | 'unknown' 217 + 218 + export type DeploymentSourceMapFile = { 219 + contents: string 220 + path: string 221 + } 222 + 223 + /** 224 + * Canonical error envelope returned by the HTTP API. 225 + */ 226 + export type ErrorResponse = { 227 + /** 228 + * Human readable error message. 229 + */ 230 + message: string 231 + } 232 + 233 + export type ExportGuildParams = { 234 + guild_id: string 235 + } 236 + 237 + export type ExportGuildResponse = { 238 + backup_id: string 239 + } 240 + 241 + export type GetValueParams = { 242 + guild_id: string 243 + key: string 244 + store_name: string 245 + } 246 + 247 + export type GetValueResponse = { 248 + value?: string | null 249 + } 250 + 251 + /** 252 + * Guild info exposed by the API. 253 + */ 254 + export type GuildResponse = { 255 + icon?: string | null 256 + id: string 257 + name: string 258 + permissions: number 259 + } 260 + 261 + export type KvStore = { 262 + created_at: string 263 + guild_id: string 264 + id: string 265 + store_name: string 266 + updated_at: string 267 + } 268 + 269 + export type ListKeysParams = { 270 + guild_id: string 271 + store_name: string 272 + } 273 + 274 + export type ListKeysQuery = { 275 + cursor?: string | null 276 + limit?: number | null 277 + prefix?: string | null 278 + } 279 + 280 + export type ListKeysResponse = { 281 + cursor?: string | null 282 + keys: Array<RawKvKeyInfo> 283 + list_complete: boolean 284 + } 285 + 286 + export type ListStoresQuery = { 287 + guild_id: string 288 + } 289 + 290 + /** 291 + * A log entry captured from the runtime. 292 + */ 293 + export type LogEntry = { 294 + /** 295 + * Guild ID if applicable. 296 + */ 297 + guild_id?: string | null 298 + /** 299 + * Log level (trace, debug, info, warn, error). 300 + */ 301 + level: string 302 + /** 303 + * Log message. 304 + */ 305 + message: string 306 + /** 307 + * Target/module that produced the log. 308 + */ 309 + target: string 310 + /** 311 + * Timestamp in milliseconds since Unix epoch. 312 + */ 313 + timestamp: number 314 + } 315 + 316 + export type LogsQuery = { 317 + /** 318 + * Maximum number of log entries to return (default 100, max 1000). 319 + */ 320 + limit?: number 321 + } 322 + 323 + /** 324 + * Snapshot of metrics at a point in time. 325 + */ 326 + export type MetricsSnapshot = { 327 + avg_latency_us: number 328 + dispatch_errors: number 329 + dispatch_total: number 330 + isolate_count: number 331 + isolate_restarts: number 332 + migration_quiesce_duration_us: number 333 + migration_success: number 334 + migration_timeout: number 335 + oom_errors: number 336 + p50_latency_us: number 337 + p95_latency_us: number 338 + p99_latency_us: number 339 + runtime_restarts: number 340 + timeout_errors: number 341 + } 342 + 343 + /** 344 + * Information about a single KV key. 345 + */ 346 + export type RawKvKeyInfo = { 347 + /** 348 + * Unix timestamp (seconds) when this key expires. 349 + */ 350 + expiration?: number | null 351 + /** 352 + * Arbitrary JSON metadata attached to the key. 353 + */ 354 + metadata?: unknown 355 + /** 356 + * The key's name. 357 + */ 358 + name: string 359 + } 360 + 361 + /** 362 + * Metadata response; values are never returned. 363 + */ 364 + export type SecretMetadataResponse = { 365 + allowed_hosts: Array<string> 366 + name: string 367 + } 368 + 369 + export type SetValueParams = { 370 + guild_id: string 371 + key: string 372 + store_name: string 373 + } 374 + 375 + export type SetValueRequest = { 376 + /** 377 + * Unix timestamp in seconds when the key expires, or null for no expiry. 378 + */ 379 + expiration?: number | null 380 + /** 381 + * Optional JSON metadata attached to the key. 382 + */ 383 + metadata?: unknown 384 + /** 385 + * Raw value to store. 386 + */ 387 + value: string 388 + } 389 + 390 + export type SetValueResponse = { 391 + success: boolean 392 + } 393 + 394 + /** 395 + * Token metadata returned for list endpoints. 396 + */ 397 + export type TokenResponse = { 398 + /** 399 + * Token creation time in RFC3339 (UTC). 400 + */ 401 + created_at: string 402 + /** 403 + * Optional user-facing label for the token. 404 + */ 405 + label?: string | null 406 + /** 407 + * Last usage time in RFC3339 (UTC), if available. 408 + */ 409 + last_used_at?: string | null 410 + /** 411 + * Token identifier. 412 + */ 413 + token_id: string 414 + } 415 + 416 + export type UpsertSecretRequest = { 417 + allowed_hosts?: Array<string> 418 + value: string 419 + } 420 + 421 + export type CallbackHandlerData = { 422 + body?: never 423 + path?: never 424 + query: { 425 + /** 426 + * Discord authorization code 427 + */ 428 + code: string 429 + /** 430 + * Opaque state value returned by Discord 431 + */ 432 + state: string 433 + } 434 + url: '/auth/callback' 435 + } 436 + 437 + export type CallbackHandlerErrors = { 438 + /** 439 + * Canonical error envelope returned by the HTTP API. 440 + */ 441 + 400: { 442 + /** 443 + * Human readable error message. 444 + */ 445 + message: string 446 + } 447 + /** 448 + * Canonical error envelope returned by the HTTP API. 449 + */ 450 + 401: { 451 + /** 452 + * Human readable error message. 453 + */ 454 + message: string 455 + } 456 + /** 457 + * Canonical error envelope returned by the HTTP API. 458 + */ 459 + 403: { 460 + /** 461 + * Human readable error message. 462 + */ 463 + message: string 464 + } 465 + /** 466 + * Canonical error envelope returned by the HTTP API. 467 + */ 468 + 404: { 469 + /** 470 + * Human readable error message. 471 + */ 472 + message: string 473 + } 474 + /** 475 + * Canonical error envelope returned by the HTTP API. 476 + */ 477 + 500: { 478 + /** 479 + * Human readable error message. 480 + */ 481 + message: string 482 + } 483 + } 484 + 485 + export type CallbackHandlerError = CallbackHandlerErrors[keyof CallbackHandlerErrors] 486 + 487 + export type LoginHandlerData = { 488 + body?: never 489 + path?: never 490 + query?: never 491 + url: '/auth/login' 492 + } 493 + 494 + export type LoginHandlerErrors = { 495 + /** 496 + * Canonical error envelope returned by the HTTP API. 497 + */ 498 + 400: { 499 + /** 500 + * Human readable error message. 501 + */ 502 + message: string 503 + } 504 + /** 505 + * Canonical error envelope returned by the HTTP API. 506 + */ 507 + 401: { 508 + /** 509 + * Human readable error message. 510 + */ 511 + message: string 512 + } 513 + /** 514 + * Canonical error envelope returned by the HTTP API. 515 + */ 516 + 403: { 517 + /** 518 + * Human readable error message. 519 + */ 520 + message: string 521 + } 522 + /** 523 + * Canonical error envelope returned by the HTTP API. 524 + */ 525 + 404: { 526 + /** 527 + * Human readable error message. 528 + */ 529 + message: string 530 + } 531 + /** 532 + * Canonical error envelope returned by the HTTP API. 533 + */ 534 + 500: { 535 + /** 536 + * Human readable error message. 537 + */ 538 + message: string 539 + } 540 + } 541 + 542 + export type LoginHandlerError = LoginHandlerErrors[keyof LoginHandlerErrors] 543 + 544 + export type MeHandlerData = { 545 + body?: never 546 + path?: never 547 + query?: never 548 + url: '/auth/me' 549 + } 550 + 551 + export type MeHandlerErrors = { 552 + /** 553 + * Canonical error envelope returned by the HTTP API. 554 + */ 555 + 400: { 556 + /** 557 + * Human readable error message. 558 + */ 559 + message: string 560 + } 561 + /** 562 + * Canonical error envelope returned by the HTTP API. 563 + */ 564 + 401: { 565 + /** 566 + * Human readable error message. 567 + */ 568 + message: string 569 + } 570 + /** 571 + * Canonical error envelope returned by the HTTP API. 572 + */ 573 + 403: { 574 + /** 575 + * Human readable error message. 576 + */ 577 + message: string 578 + } 579 + /** 580 + * Canonical error envelope returned by the HTTP API. 581 + */ 582 + 404: { 583 + /** 584 + * Human readable error message. 585 + */ 586 + message: string 587 + } 588 + /** 589 + * Canonical error envelope returned by the HTTP API. 590 + */ 591 + 500: { 592 + /** 593 + * Human readable error message. 594 + */ 595 + message: string 596 + } 597 + } 598 + 599 + export type MeHandlerError = MeHandlerErrors[keyof MeHandlerErrors] 600 + 601 + export type MeHandlerResponses = { 602 + /** 603 + * Response envelope for /auth/me. 604 + */ 605 + 200: { 606 + user: AuthUser 607 + } 608 + } 609 + 610 + export type MeHandlerResponse = MeHandlerResponses[keyof MeHandlerResponses] 611 + 612 + export type CreateBuildHandlerData = { 613 + body?: never 614 + path?: never 615 + query?: never 616 + url: '/builds/' 617 + } 618 + 619 + export type CreateBuildHandlerErrors = { 620 + /** 621 + * Canonical error envelope returned by the HTTP API. 622 + */ 623 + 400: { 624 + /** 625 + * Human readable error message. 626 + */ 627 + message: string 628 + } 629 + /** 630 + * Canonical error envelope returned by the HTTP API. 631 + */ 632 + 401: { 633 + /** 634 + * Human readable error message. 635 + */ 636 + message: string 637 + } 638 + /** 639 + * Canonical error envelope returned by the HTTP API. 640 + */ 641 + 403: { 642 + /** 643 + * Human readable error message. 644 + */ 645 + message: string 646 + } 647 + /** 648 + * Canonical error envelope returned by the HTTP API. 649 + */ 650 + 404: { 651 + /** 652 + * Human readable error message. 653 + */ 654 + message: string 655 + } 656 + /** 657 + * Canonical error envelope returned by the HTTP API. 658 + */ 659 + 500: { 660 + /** 661 + * Human readable error message. 662 + */ 663 + message: string 664 + } 665 + } 666 + 667 + export type CreateBuildHandlerError = CreateBuildHandlerErrors[keyof CreateBuildHandlerErrors] 668 + 669 + export type CreateBuildHandlerResponses = { 670 + /** 671 + * Response returned when a build is created. 672 + */ 673 + 200: { 674 + /** 675 + * Build identifier. 676 + */ 677 + build_id: string 678 + /** 679 + * Current build status string. 680 + */ 681 + status: string 682 + } 683 + } 684 + 685 + export type CreateBuildHandlerResponse = 686 + CreateBuildHandlerResponses[keyof CreateBuildHandlerResponses] 687 + 688 + export type GetBuildHandlerData = { 689 + body?: never 690 + path: { 691 + /** 692 + * Build ID 693 + */ 694 + build_id: string 695 + } 696 + query?: never 697 + url: '/builds/{build_id}' 698 + } 699 + 700 + export type GetBuildHandlerErrors = { 701 + /** 702 + * Canonical error envelope returned by the HTTP API. 703 + */ 704 + 400: { 705 + /** 706 + * Human readable error message. 707 + */ 708 + message: string 709 + } 710 + /** 711 + * Canonical error envelope returned by the HTTP API. 712 + */ 713 + 401: { 714 + /** 715 + * Human readable error message. 716 + */ 717 + message: string 718 + } 719 + /** 720 + * Canonical error envelope returned by the HTTP API. 721 + */ 722 + 403: { 723 + /** 724 + * Human readable error message. 725 + */ 726 + message: string 727 + } 728 + /** 729 + * Canonical error envelope returned by the HTTP API. 730 + */ 731 + 404: { 732 + /** 733 + * Human readable error message. 734 + */ 735 + message: string 736 + } 737 + /** 738 + * Canonical error envelope returned by the HTTP API. 739 + */ 740 + 500: { 741 + /** 742 + * Human readable error message. 743 + */ 744 + message: string 745 + } 746 + } 747 + 748 + export type GetBuildHandlerError = GetBuildHandlerErrors[keyof GetBuildHandlerErrors] 749 + 750 + export type GetBuildHandlerResponses = { 751 + /** 752 + * Current build status and output. 753 + */ 754 + 200: { 755 + artifact?: null | BuildArtifactResponse 756 + /** 757 + * Build identifier. 758 + */ 759 + build_id: string 760 + /** 761 + * Entry file path used for the build. 762 + */ 763 + entry: string 764 + /** 765 + * Error detail when the build fails. 766 + */ 767 + error?: string | null 768 + /** 769 + * Build completion time in RFC3339 (UTC). 770 + */ 771 + finished_at?: string | null 772 + /** 773 + * Guild ID the build targets. 774 + */ 775 + guild_id: string 776 + /** 777 + * Build logs, newest last. 778 + */ 779 + logs: Array<string> 780 + /** 781 + * Build start time in RFC3339 (UTC). 782 + */ 783 + started_at?: string | null 784 + /** 785 + * Current build status string. 786 + */ 787 + status: string 788 + } 789 + } 790 + 791 + export type GetBuildHandlerResponse = GetBuildHandlerResponses[keyof GetBuildHandlerResponses] 792 + 793 + export type ListDeploymentsHandlerData = { 794 + body?: never 795 + path?: never 796 + query?: never 797 + url: '/deployments/' 798 + } 799 + 800 + export type ListDeploymentsHandlerErrors = { 801 + /** 802 + * Canonical error envelope returned by the HTTP API. 803 + */ 804 + 400: { 805 + /** 806 + * Human readable error message. 807 + */ 808 + message: string 809 + } 810 + /** 811 + * Canonical error envelope returned by the HTTP API. 812 + */ 813 + 401: { 814 + /** 815 + * Human readable error message. 816 + */ 817 + message: string 818 + } 819 + /** 820 + * Canonical error envelope returned by the HTTP API. 821 + */ 822 + 403: { 823 + /** 824 + * Human readable error message. 825 + */ 826 + message: string 827 + } 828 + /** 829 + * Canonical error envelope returned by the HTTP API. 830 + */ 831 + 404: { 832 + /** 833 + * Human readable error message. 834 + */ 835 + message: string 836 + } 837 + /** 838 + * Canonical error envelope returned by the HTTP API. 839 + */ 840 + 500: { 841 + /** 842 + * Human readable error message. 843 + */ 844 + message: string 845 + } 846 + } 847 + 848 + export type ListDeploymentsHandlerError = 849 + ListDeploymentsHandlerErrors[keyof ListDeploymentsHandlerErrors] 850 + 851 + export type ListDeploymentsHandlerResponses = { 852 + /** 853 + * Successful response 854 + */ 855 + 200: Array<{ 856 + created_at: string 857 + entry: string 858 + guild_id: string 859 + updated_at: string 860 + }> 861 + } 862 + 863 + export type ListDeploymentsHandlerResponse = 864 + ListDeploymentsHandlerResponses[keyof ListDeploymentsHandlerResponses] 865 + 866 + export type GetDeploymentHandlerData = { 867 + body?: never 868 + path: { 869 + /** 870 + * Guild ID 871 + */ 872 + guild_id: string 873 + } 874 + query?: { 875 + /** 876 + * Include bundled output in response 877 + */ 878 + include_bundle?: boolean 879 + } 880 + url: '/deployments/{guild_id}' 881 + } 882 + 883 + export type GetDeploymentHandlerErrors = { 884 + /** 885 + * Canonical error envelope returned by the HTTP API. 886 + */ 887 + 400: { 888 + /** 889 + * Human readable error message. 890 + */ 891 + message: string 892 + } 893 + /** 894 + * Canonical error envelope returned by the HTTP API. 895 + */ 896 + 401: { 897 + /** 898 + * Human readable error message. 899 + */ 900 + message: string 901 + } 902 + /** 903 + * Canonical error envelope returned by the HTTP API. 904 + */ 905 + 403: { 906 + /** 907 + * Human readable error message. 908 + */ 909 + message: string 910 + } 911 + /** 912 + * Canonical error envelope returned by the HTTP API. 913 + */ 914 + 404: { 915 + /** 916 + * Human readable error message. 917 + */ 918 + message: string 919 + } 920 + /** 921 + * Canonical error envelope returned by the HTTP API. 922 + */ 923 + 500: { 924 + /** 925 + * Human readable error message. 926 + */ 927 + message: string 928 + } 929 + } 930 + 931 + export type GetDeploymentHandlerError = GetDeploymentHandlerErrors[keyof GetDeploymentHandlerErrors] 932 + 933 + export type GetDeploymentHandlerResponses = { 934 + /** 935 + * Deployment snapshot stored for a guild. 936 + */ 937 + 200: { 938 + /** 939 + * Bundled output when stored, if included. 940 + */ 941 + bundle?: string | null 942 + /** 943 + * Snapshot creation time in RFC3339 (UTC). 944 + */ 945 + created_at: string 946 + /** 947 + * Entry file path used for the deployment. 948 + */ 949 + entry: string 950 + /** 951 + * Raw files when the deployment was uploaded as sources. 952 + */ 953 + files?: Array<DeploymentFile> | null 954 + /** 955 + * Guild ID for the deployment. 956 + */ 957 + guild_id: string 958 + source_map?: null | DeploymentSourceMapFile 959 + /** 960 + * Snapshot update time in RFC3339 (UTC). 961 + */ 962 + updated_at: string 963 + } 964 + } 965 + 966 + export type GetDeploymentHandlerResponse = 967 + GetDeploymentHandlerResponses[keyof GetDeploymentHandlerResponses] 968 + 969 + export type UpsertDeploymentHandlerData = { 970 + body: DeploymentRequest 971 + path: { 972 + /** 973 + * Guild ID 974 + */ 975 + guild_id: string 976 + } 977 + query?: never 978 + url: '/deployments/{guild_id}' 979 + } 980 + 981 + export type UpsertDeploymentHandlerErrors = { 982 + /** 983 + * Canonical error envelope returned by the HTTP API. 984 + */ 985 + 400: { 986 + /** 987 + * Human readable error message. 988 + */ 989 + message: string 990 + } 991 + /** 992 + * Canonical error envelope returned by the HTTP API. 993 + */ 994 + 401: { 995 + /** 996 + * Human readable error message. 997 + */ 998 + message: string 999 + } 1000 + /** 1001 + * Canonical error envelope returned by the HTTP API. 1002 + */ 1003 + 403: { 1004 + /** 1005 + * Human readable error message. 1006 + */ 1007 + message: string 1008 + } 1009 + /** 1010 + * Canonical error envelope returned by the HTTP API. 1011 + */ 1012 + 404: { 1013 + /** 1014 + * Human readable error message. 1015 + */ 1016 + message: string 1017 + } 1018 + /** 1019 + * Canonical error envelope returned by the HTTP API. 1020 + */ 1021 + 500: { 1022 + /** 1023 + * Human readable error message. 1024 + */ 1025 + message: string 1026 + } 1027 + } 1028 + 1029 + export type UpsertDeploymentHandlerError = 1030 + UpsertDeploymentHandlerErrors[keyof UpsertDeploymentHandlerErrors] 1031 + 1032 + export type UpsertDeploymentHandlerResponses = { 1033 + /** 1034 + * Deployment snapshot stored for a guild. 1035 + */ 1036 + 200: { 1037 + /** 1038 + * Bundled output when stored, if included. 1039 + */ 1040 + bundle?: string | null 1041 + /** 1042 + * Snapshot creation time in RFC3339 (UTC). 1043 + */ 1044 + created_at: string 1045 + /** 1046 + * Entry file path used for the deployment. 1047 + */ 1048 + entry: string 1049 + /** 1050 + * Raw files when the deployment was uploaded as sources. 1051 + */ 1052 + files?: Array<DeploymentFile> | null 1053 + /** 1054 + * Guild ID for the deployment. 1055 + */ 1056 + guild_id: string 1057 + source_map?: null | DeploymentSourceMapFile 1058 + /** 1059 + * Snapshot update time in RFC3339 (UTC). 1060 + */ 1061 + updated_at: string 1062 + } 1063 + } 1064 + 1065 + export type UpsertDeploymentHandlerResponse = 1066 + UpsertDeploymentHandlerResponses[keyof UpsertDeploymentHandlerResponses] 1067 + 1068 + export type ListDeploymentHistoryHandlerData = { 1069 + body?: never 1070 + path: { 1071 + /** 1072 + * Guild ID 1073 + */ 1074 + guild_id: string 1075 + } 1076 + query?: { 1077 + /** 1078 + * Page size, max 100 1079 + */ 1080 + limit?: number 1081 + /** 1082 + * RFC3339 deployed_at cursor 1083 + */ 1084 + cursor_deployed_at?: string 1085 + /** 1086 + * Revision id cursor 1087 + */ 1088 + cursor_id?: string 1089 + /** 1090 + * Include bundled output in response 1091 + */ 1092 + include_bundle?: boolean 1093 + } 1094 + url: '/deployments/{guild_id}/history' 1095 + } 1096 + 1097 + export type ListDeploymentHistoryHandlerErrors = { 1098 + /** 1099 + * Canonical error envelope returned by the HTTP API. 1100 + */ 1101 + 400: { 1102 + /** 1103 + * Human readable error message. 1104 + */ 1105 + message: string 1106 + } 1107 + /** 1108 + * Canonical error envelope returned by the HTTP API. 1109 + */ 1110 + 401: { 1111 + /** 1112 + * Human readable error message. 1113 + */ 1114 + message: string 1115 + } 1116 + /** 1117 + * Canonical error envelope returned by the HTTP API. 1118 + */ 1119 + 403: { 1120 + /** 1121 + * Human readable error message. 1122 + */ 1123 + message: string 1124 + } 1125 + /** 1126 + * Canonical error envelope returned by the HTTP API. 1127 + */ 1128 + 404: { 1129 + /** 1130 + * Human readable error message. 1131 + */ 1132 + message: string 1133 + } 1134 + /** 1135 + * Canonical error envelope returned by the HTTP API. 1136 + */ 1137 + 500: { 1138 + /** 1139 + * Human readable error message. 1140 + */ 1141 + message: string 1142 + } 1143 + } 1144 + 1145 + export type ListDeploymentHistoryHandlerError = 1146 + ListDeploymentHistoryHandlerErrors[keyof ListDeploymentHistoryHandlerErrors] 1147 + 1148 + export type ListDeploymentHistoryHandlerResponses = { 1149 + /** 1150 + * Successful response 1151 + */ 1152 + 200: Array<{ 1153 + actor: DeploymentActorResponse 1154 + base_revision_id?: string | null 1155 + build_id?: string | null 1156 + bundle?: string | null 1157 + change_summary?: null | DeploymentChangeSummary 1158 + deploy_source: DeploymentSource 1159 + /** 1160 + * Deployment time in RFC3339 (UTC). 1161 + */ 1162 + deployed_at: string 1163 + entry: string 1164 + error_message?: string | null 1165 + files?: Array<DeploymentFile> | null 1166 + guild_id: string 1167 + id: string 1168 + source_map?: null | DeploymentSourceMapFile 1169 + status: DeploymentRevisionStatus 1170 + }> 1171 + } 1172 + 1173 + export type ListDeploymentHistoryHandlerResponse = 1174 + ListDeploymentHistoryHandlerResponses[keyof ListDeploymentHistoryHandlerResponses] 1175 + 1176 + export type GetDeploymentRevisionHandlerData = { 1177 + body?: never 1178 + path: { 1179 + /** 1180 + * Guild ID 1181 + */ 1182 + guild_id: string 1183 + /** 1184 + * Revision id 1185 + */ 1186 + revision_id: string 1187 + } 1188 + query?: { 1189 + /** 1190 + * Include bundled output in response 1191 + */ 1192 + include_bundle?: boolean 1193 + } 1194 + url: '/deployments/{guild_id}/revisions/{revision_id}' 1195 + } 1196 + 1197 + export type GetDeploymentRevisionHandlerErrors = { 1198 + /** 1199 + * Canonical error envelope returned by the HTTP API. 1200 + */ 1201 + 400: { 1202 + /** 1203 + * Human readable error message. 1204 + */ 1205 + message: string 1206 + } 1207 + /** 1208 + * Canonical error envelope returned by the HTTP API. 1209 + */ 1210 + 401: { 1211 + /** 1212 + * Human readable error message. 1213 + */ 1214 + message: string 1215 + } 1216 + /** 1217 + * Canonical error envelope returned by the HTTP API. 1218 + */ 1219 + 403: { 1220 + /** 1221 + * Human readable error message. 1222 + */ 1223 + message: string 1224 + } 1225 + /** 1226 + * Canonical error envelope returned by the HTTP API. 1227 + */ 1228 + 404: { 1229 + /** 1230 + * Human readable error message. 1231 + */ 1232 + message: string 1233 + } 1234 + /** 1235 + * Canonical error envelope returned by the HTTP API. 1236 + */ 1237 + 500: { 1238 + /** 1239 + * Human readable error message. 1240 + */ 1241 + message: string 1242 + } 1243 + } 1244 + 1245 + export type GetDeploymentRevisionHandlerError = 1246 + GetDeploymentRevisionHandlerErrors[keyof GetDeploymentRevisionHandlerErrors] 1247 + 1248 + export type GetDeploymentRevisionHandlerResponses = { 1249 + /** 1250 + * Successful response 1251 + */ 1252 + 200: { 1253 + actor: DeploymentActorResponse 1254 + base_revision_id?: string | null 1255 + build_id?: string | null 1256 + bundle?: string | null 1257 + change_summary?: null | DeploymentChangeSummary 1258 + deploy_source: DeploymentSource 1259 + /** 1260 + * Deployment time in RFC3339 (UTC). 1261 + */ 1262 + deployed_at: string 1263 + entry: string 1264 + error_message?: string | null 1265 + files?: Array<DeploymentFile> | null 1266 + guild_id: string 1267 + id: string 1268 + source_map?: null | DeploymentSourceMapFile 1269 + status: DeploymentRevisionStatus 1270 + } 1271 + } 1272 + 1273 + export type GetDeploymentRevisionHandlerResponse = 1274 + GetDeploymentRevisionHandlerResponses[keyof GetDeploymentRevisionHandlerResponses] 1275 + 1276 + export type RollbackDeploymentHandlerData = { 1277 + body?: never 1278 + path: { 1279 + /** 1280 + * Guild ID 1281 + */ 1282 + guild_id: string 1283 + /** 1284 + * Successful revision id to rollback to 1285 + */ 1286 + revision_id: string 1287 + } 1288 + query?: never 1289 + url: '/deployments/{guild_id}/rollback/{revision_id}' 1290 + } 1291 + 1292 + export type RollbackDeploymentHandlerErrors = { 1293 + /** 1294 + * Canonical error envelope returned by the HTTP API. 1295 + */ 1296 + 400: { 1297 + /** 1298 + * Human readable error message. 1299 + */ 1300 + message: string 1301 + } 1302 + /** 1303 + * Canonical error envelope returned by the HTTP API. 1304 + */ 1305 + 401: { 1306 + /** 1307 + * Human readable error message. 1308 + */ 1309 + message: string 1310 + } 1311 + /** 1312 + * Canonical error envelope returned by the HTTP API. 1313 + */ 1314 + 403: { 1315 + /** 1316 + * Human readable error message. 1317 + */ 1318 + message: string 1319 + } 1320 + /** 1321 + * Canonical error envelope returned by the HTTP API. 1322 + */ 1323 + 404: { 1324 + /** 1325 + * Human readable error message. 1326 + */ 1327 + message: string 1328 + } 1329 + /** 1330 + * Canonical error envelope returned by the HTTP API. 1331 + */ 1332 + 500: { 1333 + /** 1334 + * Human readable error message. 1335 + */ 1336 + message: string 1337 + } 1338 + } 1339 + 1340 + export type RollbackDeploymentHandlerError = 1341 + RollbackDeploymentHandlerErrors[keyof RollbackDeploymentHandlerErrors] 1342 + 1343 + export type RollbackDeploymentHandlerResponses = { 1344 + /** 1345 + * Successful response 1346 + */ 1347 + 200: { 1348 + actor: DeploymentActorResponse 1349 + base_revision_id?: string | null 1350 + build_id?: string | null 1351 + bundle?: string | null 1352 + change_summary?: null | DeploymentChangeSummary 1353 + deploy_source: DeploymentSource 1354 + /** 1355 + * Deployment time in RFC3339 (UTC). 1356 + */ 1357 + deployed_at: string 1358 + entry: string 1359 + error_message?: string | null 1360 + files?: Array<DeploymentFile> | null 1361 + guild_id: string 1362 + id: string 1363 + source_map?: null | DeploymentSourceMapFile 1364 + status: DeploymentRevisionStatus 1365 + } 1366 + } 1367 + 1368 + export type RollbackDeploymentHandlerResponse = 1369 + RollbackDeploymentHandlerResponses[keyof RollbackDeploymentHandlerResponses] 1370 + 1371 + export type ListGuildsHandlerData = { 1372 + body?: never 1373 + path?: never 1374 + query?: never 1375 + url: '/guilds/' 1376 + } 1377 + 1378 + export type ListGuildsHandlerErrors = { 1379 + /** 1380 + * Canonical error envelope returned by the HTTP API. 1381 + */ 1382 + 400: { 1383 + /** 1384 + * Human readable error message. 1385 + */ 1386 + message: string 1387 + } 1388 + /** 1389 + * Canonical error envelope returned by the HTTP API. 1390 + */ 1391 + 401: { 1392 + /** 1393 + * Human readable error message. 1394 + */ 1395 + message: string 1396 + } 1397 + /** 1398 + * Canonical error envelope returned by the HTTP API. 1399 + */ 1400 + 403: { 1401 + /** 1402 + * Human readable error message. 1403 + */ 1404 + message: string 1405 + } 1406 + /** 1407 + * Canonical error envelope returned by the HTTP API. 1408 + */ 1409 + 404: { 1410 + /** 1411 + * Human readable error message. 1412 + */ 1413 + message: string 1414 + } 1415 + /** 1416 + * Canonical error envelope returned by the HTTP API. 1417 + */ 1418 + 500: { 1419 + /** 1420 + * Human readable error message. 1421 + */ 1422 + message: string 1423 + } 1424 + } 1425 + 1426 + export type ListGuildsHandlerError = ListGuildsHandlerErrors[keyof ListGuildsHandlerErrors] 1427 + 1428 + export type ListGuildsHandlerResponses = { 1429 + /** 1430 + * Successful response 1431 + */ 1432 + 200: Array<{ 1433 + icon?: string | null 1434 + id: string 1435 + name: string 1436 + permissions: number 1437 + }> 1438 + } 1439 + 1440 + export type ListGuildsHandlerResponse = ListGuildsHandlerResponses[keyof ListGuildsHandlerResponses] 1441 + 1442 + export type HealthCheckData = { 1443 + body?: never 1444 + path?: never 1445 + query?: never 1446 + url: '/health/' 1447 + } 1448 + 1449 + export type HealthCheckResponses = { 1450 + /** 1451 + * API is healthy 1452 + */ 1453 + 200: string 1454 + } 1455 + 1456 + export type HealthCheckResponse = HealthCheckResponses[keyof HealthCheckResponses] 1457 + 1458 + export type ExportGuildHandlerData = { 1459 + body?: never 1460 + path: { 1461 + /** 1462 + * Guild ID 1463 + */ 1464 + guild_id: string 1465 + } 1466 + query?: never 1467 + url: '/kv/export/{guild_id}' 1468 + } 1469 + 1470 + export type ExportGuildHandlerErrors = { 1471 + /** 1472 + * Canonical error envelope returned by the HTTP API. 1473 + */ 1474 + 400: { 1475 + /** 1476 + * Human readable error message. 1477 + */ 1478 + message: string 1479 + } 1480 + /** 1481 + * Canonical error envelope returned by the HTTP API. 1482 + */ 1483 + 401: { 1484 + /** 1485 + * Human readable error message. 1486 + */ 1487 + message: string 1488 + } 1489 + /** 1490 + * Canonical error envelope returned by the HTTP API. 1491 + */ 1492 + 403: { 1493 + /** 1494 + * Human readable error message. 1495 + */ 1496 + message: string 1497 + } 1498 + /** 1499 + * Canonical error envelope returned by the HTTP API. 1500 + */ 1501 + 404: { 1502 + /** 1503 + * Human readable error message. 1504 + */ 1505 + message: string 1506 + } 1507 + /** 1508 + * Canonical error envelope returned by the HTTP API. 1509 + */ 1510 + 500: { 1511 + /** 1512 + * Human readable error message. 1513 + */ 1514 + message: string 1515 + } 1516 + } 1517 + 1518 + export type ExportGuildHandlerError = ExportGuildHandlerErrors[keyof ExportGuildHandlerErrors] 1519 + 1520 + export type ExportGuildHandlerResponses = { 1521 + /** 1522 + * Successful response 1523 + */ 1524 + 200: { 1525 + backup_id: string 1526 + } 1527 + } 1528 + 1529 + export type ExportGuildHandlerResponse = 1530 + ExportGuildHandlerResponses[keyof ExportGuildHandlerResponses] 1531 + 1532 + export type ListStoresHandlerData = { 1533 + body?: never 1534 + path?: never 1535 + query: { 1536 + guild_id: string 1537 + } 1538 + url: '/kv/stores' 1539 + } 1540 + 1541 + export type ListStoresHandlerErrors = { 1542 + /** 1543 + * Canonical error envelope returned by the HTTP API. 1544 + */ 1545 + 400: { 1546 + /** 1547 + * Human readable error message. 1548 + */ 1549 + message: string 1550 + } 1551 + /** 1552 + * Canonical error envelope returned by the HTTP API. 1553 + */ 1554 + 401: { 1555 + /** 1556 + * Human readable error message. 1557 + */ 1558 + message: string 1559 + } 1560 + /** 1561 + * Canonical error envelope returned by the HTTP API. 1562 + */ 1563 + 403: { 1564 + /** 1565 + * Human readable error message. 1566 + */ 1567 + message: string 1568 + } 1569 + /** 1570 + * Canonical error envelope returned by the HTTP API. 1571 + */ 1572 + 404: { 1573 + /** 1574 + * Human readable error message. 1575 + */ 1576 + message: string 1577 + } 1578 + /** 1579 + * Canonical error envelope returned by the HTTP API. 1580 + */ 1581 + 500: { 1582 + /** 1583 + * Human readable error message. 1584 + */ 1585 + message: string 1586 + } 1587 + } 1588 + 1589 + export type ListStoresHandlerError = ListStoresHandlerErrors[keyof ListStoresHandlerErrors] 1590 + 1591 + export type ListStoresHandlerResponses = { 1592 + /** 1593 + * Successful response 1594 + */ 1595 + 200: Array<{ 1596 + created_at: string 1597 + guild_id: string 1598 + id: string 1599 + store_name: string 1600 + updated_at: string 1601 + }> 1602 + } 1603 + 1604 + export type ListStoresHandlerResponse = ListStoresHandlerResponses[keyof ListStoresHandlerResponses] 1605 + 1606 + export type CreateStoreHandlerData = { 1607 + body: CreateStoreRequest 1608 + path?: never 1609 + query?: never 1610 + url: '/kv/stores' 1611 + } 1612 + 1613 + export type CreateStoreHandlerErrors = { 1614 + /** 1615 + * Canonical error envelope returned by the HTTP API. 1616 + */ 1617 + 400: { 1618 + /** 1619 + * Human readable error message. 1620 + */ 1621 + message: string 1622 + } 1623 + /** 1624 + * Canonical error envelope returned by the HTTP API. 1625 + */ 1626 + 401: { 1627 + /** 1628 + * Human readable error message. 1629 + */ 1630 + message: string 1631 + } 1632 + /** 1633 + * Canonical error envelope returned by the HTTP API. 1634 + */ 1635 + 403: { 1636 + /** 1637 + * Human readable error message. 1638 + */ 1639 + message: string 1640 + } 1641 + /** 1642 + * Canonical error envelope returned by the HTTP API. 1643 + */ 1644 + 404: { 1645 + /** 1646 + * Human readable error message. 1647 + */ 1648 + message: string 1649 + } 1650 + /** 1651 + * Canonical error envelope returned by the HTTP API. 1652 + */ 1653 + 500: { 1654 + /** 1655 + * Human readable error message. 1656 + */ 1657 + message: string 1658 + } 1659 + } 1660 + 1661 + export type CreateStoreHandlerError = CreateStoreHandlerErrors[keyof CreateStoreHandlerErrors] 1662 + 1663 + export type CreateStoreHandlerResponses = { 1664 + /** 1665 + * Successful response 1666 + */ 1667 + 200: { 1668 + store: KvStore 1669 + } 1670 + } 1671 + 1672 + export type CreateStoreHandlerResponse = 1673 + CreateStoreHandlerResponses[keyof CreateStoreHandlerResponses] 1674 + 1675 + export type DeleteStoreHandlerData = { 1676 + body?: never 1677 + path: { 1678 + /** 1679 + * Guild ID 1680 + */ 1681 + guild_id: string 1682 + /** 1683 + * Store name 1684 + */ 1685 + store_name: string 1686 + } 1687 + query?: never 1688 + url: '/kv/stores/{guild_id}/{store_name}' 1689 + } 1690 + 1691 + export type DeleteStoreHandlerErrors = { 1692 + /** 1693 + * Canonical error envelope returned by the HTTP API. 1694 + */ 1695 + 400: { 1696 + /** 1697 + * Human readable error message. 1698 + */ 1699 + message: string 1700 + } 1701 + /** 1702 + * Canonical error envelope returned by the HTTP API. 1703 + */ 1704 + 401: { 1705 + /** 1706 + * Human readable error message. 1707 + */ 1708 + message: string 1709 + } 1710 + /** 1711 + * Canonical error envelope returned by the HTTP API. 1712 + */ 1713 + 403: { 1714 + /** 1715 + * Human readable error message. 1716 + */ 1717 + message: string 1718 + } 1719 + /** 1720 + * Canonical error envelope returned by the HTTP API. 1721 + */ 1722 + 404: { 1723 + /** 1724 + * Human readable error message. 1725 + */ 1726 + message: string 1727 + } 1728 + /** 1729 + * Canonical error envelope returned by the HTTP API. 1730 + */ 1731 + 500: { 1732 + /** 1733 + * Human readable error message. 1734 + */ 1735 + message: string 1736 + } 1737 + } 1738 + 1739 + export type DeleteStoreHandlerError = DeleteStoreHandlerErrors[keyof DeleteStoreHandlerErrors] 1740 + 1741 + export type DeleteStoreHandlerResponses = { 1742 + /** 1743 + * Store deleted successfully 1744 + */ 1745 + 200: unknown 1746 + } 1747 + 1748 + export type ListKeysHandlerData = { 1749 + body?: never 1750 + path: { 1751 + /** 1752 + * Guild ID 1753 + */ 1754 + guild_id: string 1755 + /** 1756 + * Store name 1757 + */ 1758 + store_name: string 1759 + } 1760 + query?: { 1761 + prefix?: string | null 1762 + limit?: number | null 1763 + cursor?: string | null 1764 + } 1765 + url: '/kv/{guild_id}/{store_name}' 1766 + } 1767 + 1768 + export type ListKeysHandlerErrors = { 1769 + /** 1770 + * Canonical error envelope returned by the HTTP API. 1771 + */ 1772 + 400: { 1773 + /** 1774 + * Human readable error message. 1775 + */ 1776 + message: string 1777 + } 1778 + /** 1779 + * Canonical error envelope returned by the HTTP API. 1780 + */ 1781 + 401: { 1782 + /** 1783 + * Human readable error message. 1784 + */ 1785 + message: string 1786 + } 1787 + /** 1788 + * Canonical error envelope returned by the HTTP API. 1789 + */ 1790 + 403: { 1791 + /** 1792 + * Human readable error message. 1793 + */ 1794 + message: string 1795 + } 1796 + /** 1797 + * Canonical error envelope returned by the HTTP API. 1798 + */ 1799 + 404: { 1800 + /** 1801 + * Human readable error message. 1802 + */ 1803 + message: string 1804 + } 1805 + /** 1806 + * Canonical error envelope returned by the HTTP API. 1807 + */ 1808 + 500: { 1809 + /** 1810 + * Human readable error message. 1811 + */ 1812 + message: string 1813 + } 1814 + } 1815 + 1816 + export type ListKeysHandlerError = ListKeysHandlerErrors[keyof ListKeysHandlerErrors] 1817 + 1818 + export type ListKeysHandlerResponses = { 1819 + /** 1820 + * Result of listing keys in a KV store. 1821 + */ 1822 + 200: { 1823 + /** 1824 + * Cursor for fetching the next page of results. 1825 + */ 1826 + cursor?: string | null 1827 + /** 1828 + * The keys returned by this list operation. 1829 + */ 1830 + keys: Array<RawKvKeyInfo> 1831 + /** 1832 + * Whether all matching keys have been returned. 1833 + */ 1834 + listComplete: boolean 1835 + } 1836 + } 1837 + 1838 + export type ListKeysHandlerResponse = ListKeysHandlerResponses[keyof ListKeysHandlerResponses] 1839 + 1840 + export type DeleteKeyHandlerData = { 1841 + body?: never 1842 + path: { 1843 + /** 1844 + * Guild ID 1845 + */ 1846 + guild_id: string 1847 + /** 1848 + * Store name 1849 + */ 1850 + store_name: string 1851 + /** 1852 + * Key to delete 1853 + */ 1854 + key: string 1855 + } 1856 + query?: never 1857 + url: '/kv/{guild_id}/{store_name}/{key}' 1858 + } 1859 + 1860 + export type DeleteKeyHandlerErrors = { 1861 + /** 1862 + * Canonical error envelope returned by the HTTP API. 1863 + */ 1864 + 400: { 1865 + /** 1866 + * Human readable error message. 1867 + */ 1868 + message: string 1869 + } 1870 + /** 1871 + * Canonical error envelope returned by the HTTP API. 1872 + */ 1873 + 401: { 1874 + /** 1875 + * Human readable error message. 1876 + */ 1877 + message: string 1878 + } 1879 + /** 1880 + * Canonical error envelope returned by the HTTP API. 1881 + */ 1882 + 403: { 1883 + /** 1884 + * Human readable error message. 1885 + */ 1886 + message: string 1887 + } 1888 + /** 1889 + * Canonical error envelope returned by the HTTP API. 1890 + */ 1891 + 404: { 1892 + /** 1893 + * Human readable error message. 1894 + */ 1895 + message: string 1896 + } 1897 + /** 1898 + * Canonical error envelope returned by the HTTP API. 1899 + */ 1900 + 500: { 1901 + /** 1902 + * Human readable error message. 1903 + */ 1904 + message: string 1905 + } 1906 + } 1907 + 1908 + export type DeleteKeyHandlerError = DeleteKeyHandlerErrors[keyof DeleteKeyHandlerErrors] 1909 + 1910 + export type DeleteKeyHandlerResponses = { 1911 + /** 1912 + * Key deleted successfully 1913 + */ 1914 + 200: unknown 1915 + } 1916 + 1917 + export type GetValueHandlerData = { 1918 + body?: never 1919 + path: { 1920 + /** 1921 + * Guild ID 1922 + */ 1923 + guild_id: string 1924 + /** 1925 + * Store name 1926 + */ 1927 + store_name: string 1928 + /** 1929 + * Key to retrieve 1930 + */ 1931 + key: string 1932 + } 1933 + query?: never 1934 + url: '/kv/{guild_id}/{store_name}/{key}' 1935 + } 1936 + 1937 + export type GetValueHandlerErrors = { 1938 + /** 1939 + * Canonical error envelope returned by the HTTP API. 1940 + */ 1941 + 400: { 1942 + /** 1943 + * Human readable error message. 1944 + */ 1945 + message: string 1946 + } 1947 + /** 1948 + * Canonical error envelope returned by the HTTP API. 1949 + */ 1950 + 401: { 1951 + /** 1952 + * Human readable error message. 1953 + */ 1954 + message: string 1955 + } 1956 + /** 1957 + * Canonical error envelope returned by the HTTP API. 1958 + */ 1959 + 403: { 1960 + /** 1961 + * Human readable error message. 1962 + */ 1963 + message: string 1964 + } 1965 + /** 1966 + * Canonical error envelope returned by the HTTP API. 1967 + */ 1968 + 404: { 1969 + /** 1970 + * Human readable error message. 1971 + */ 1972 + message: string 1973 + } 1974 + /** 1975 + * Canonical error envelope returned by the HTTP API. 1976 + */ 1977 + 500: { 1978 + /** 1979 + * Human readable error message. 1980 + */ 1981 + message: string 1982 + } 1983 + } 1984 + 1985 + export type GetValueHandlerError = GetValueHandlerErrors[keyof GetValueHandlerErrors] 1986 + 1987 + export type GetValueHandlerResponses = { 1988 + /** 1989 + * Successful response 1990 + */ 1991 + 200: { 1992 + value?: string | null 1993 + } 1994 + } 1995 + 1996 + export type GetValueHandlerResponse = GetValueHandlerResponses[keyof GetValueHandlerResponses] 1997 + 1998 + export type SetValueHandlerData = { 1999 + body: SetValueRequest 2000 + path: { 2001 + /** 2002 + * Guild ID 2003 + */ 2004 + guild_id: string 2005 + /** 2006 + * Store name 2007 + */ 2008 + store_name: string 2009 + /** 2010 + * Key to set 2011 + */ 2012 + key: string 2013 + } 2014 + query?: never 2015 + url: '/kv/{guild_id}/{store_name}/{key}' 2016 + } 2017 + 2018 + export type SetValueHandlerErrors = { 2019 + /** 2020 + * Canonical error envelope returned by the HTTP API. 2021 + */ 2022 + 400: { 2023 + /** 2024 + * Human readable error message. 2025 + */ 2026 + message: string 2027 + } 2028 + /** 2029 + * Canonical error envelope returned by the HTTP API. 2030 + */ 2031 + 401: { 2032 + /** 2033 + * Human readable error message. 2034 + */ 2035 + message: string 2036 + } 2037 + /** 2038 + * Canonical error envelope returned by the HTTP API. 2039 + */ 2040 + 403: { 2041 + /** 2042 + * Human readable error message. 2043 + */ 2044 + message: string 2045 + } 2046 + /** 2047 + * Canonical error envelope returned by the HTTP API. 2048 + */ 2049 + 404: { 2050 + /** 2051 + * Human readable error message. 2052 + */ 2053 + message: string 2054 + } 2055 + /** 2056 + * Canonical error envelope returned by the HTTP API. 2057 + */ 2058 + 500: { 2059 + /** 2060 + * Human readable error message. 2061 + */ 2062 + message: string 2063 + } 2064 + } 2065 + 2066 + export type SetValueHandlerError = SetValueHandlerErrors[keyof SetValueHandlerErrors] 2067 + 2068 + export type SetValueHandlerResponses = { 2069 + /** 2070 + * Successful response 2071 + */ 2072 + 200: { 2073 + success: boolean 2074 + } 2075 + } 2076 + 2077 + export type SetValueHandlerResponse = SetValueHandlerResponses[keyof SetValueHandlerResponses] 2078 + 2079 + export type GetLogsData = { 2080 + body?: never 2081 + path?: never 2082 + query?: { 2083 + /** 2084 + * Maximum number of log entries to return (default 100, max 1000). 2085 + */ 2086 + limit?: number 2087 + } 2088 + url: '/logs' 2089 + } 2090 + 2091 + export type GetLogsErrors = { 2092 + /** 2093 + * Canonical error envelope returned by the HTTP API. 2094 + */ 2095 + 400: { 2096 + /** 2097 + * Human readable error message. 2098 + */ 2099 + message: string 2100 + } 2101 + /** 2102 + * Canonical error envelope returned by the HTTP API. 2103 + */ 2104 + 401: { 2105 + /** 2106 + * Human readable error message. 2107 + */ 2108 + message: string 2109 + } 2110 + /** 2111 + * Canonical error envelope returned by the HTTP API. 2112 + */ 2113 + 403: { 2114 + /** 2115 + * Human readable error message. 2116 + */ 2117 + message: string 2118 + } 2119 + /** 2120 + * Canonical error envelope returned by the HTTP API. 2121 + */ 2122 + 404: { 2123 + /** 2124 + * Human readable error message. 2125 + */ 2126 + message: string 2127 + } 2128 + /** 2129 + * Canonical error envelope returned by the HTTP API. 2130 + */ 2131 + 500: { 2132 + /** 2133 + * Human readable error message. 2134 + */ 2135 + message: string 2136 + } 2137 + } 2138 + 2139 + export type GetLogsError = GetLogsErrors[keyof GetLogsErrors] 2140 + 2141 + export type GetLogsResponses = { 2142 + /** 2143 + * Successful response 2144 + */ 2145 + 200: Array<{ 2146 + /** 2147 + * Guild ID if applicable. 2148 + */ 2149 + guild_id?: string | null 2150 + /** 2151 + * Log level (trace, debug, info, warn, error). 2152 + */ 2153 + level: string 2154 + /** 2155 + * Log message. 2156 + */ 2157 + message: string 2158 + /** 2159 + * Target/module that produced the log. 2160 + */ 2161 + target: string 2162 + /** 2163 + * Timestamp in milliseconds since Unix epoch. 2164 + */ 2165 + timestamp: number 2166 + }> 2167 + } 2168 + 2169 + export type GetLogsResponse = GetLogsResponses[keyof GetLogsResponses] 2170 + 2171 + export type GetGuildLogsData = { 2172 + body?: never 2173 + path: { 2174 + /** 2175 + * Guild ID 2176 + */ 2177 + guild_id: string 2178 + } 2179 + query?: { 2180 + /** 2181 + * Maximum number of log entries to return (default 100, max 1000). 2182 + */ 2183 + limit?: number 2184 + } 2185 + url: '/logs/{guild_id}' 2186 + } 2187 + 2188 + export type GetGuildLogsErrors = { 2189 + /** 2190 + * Canonical error envelope returned by the HTTP API. 2191 + */ 2192 + 400: { 2193 + /** 2194 + * Human readable error message. 2195 + */ 2196 + message: string 2197 + } 2198 + /** 2199 + * Canonical error envelope returned by the HTTP API. 2200 + */ 2201 + 401: { 2202 + /** 2203 + * Human readable error message. 2204 + */ 2205 + message: string 2206 + } 2207 + /** 2208 + * Canonical error envelope returned by the HTTP API. 2209 + */ 2210 + 403: { 2211 + /** 2212 + * Human readable error message. 2213 + */ 2214 + message: string 2215 + } 2216 + /** 2217 + * Canonical error envelope returned by the HTTP API. 2218 + */ 2219 + 404: { 2220 + /** 2221 + * Human readable error message. 2222 + */ 2223 + message: string 2224 + } 2225 + /** 2226 + * Canonical error envelope returned by the HTTP API. 2227 + */ 2228 + 500: { 2229 + /** 2230 + * Human readable error message. 2231 + */ 2232 + message: string 2233 + } 2234 + } 2235 + 2236 + export type GetGuildLogsError = GetGuildLogsErrors[keyof GetGuildLogsErrors] 2237 + 2238 + export type GetGuildLogsResponses = { 2239 + /** 2240 + * Successful response 2241 + */ 2242 + 200: Array<{ 2243 + /** 2244 + * Guild ID if applicable. 2245 + */ 2246 + guild_id?: string | null 2247 + /** 2248 + * Log level (trace, debug, info, warn, error). 2249 + */ 2250 + level: string 2251 + /** 2252 + * Log message. 2253 + */ 2254 + message: string 2255 + /** 2256 + * Target/module that produced the log. 2257 + */ 2258 + target: string 2259 + /** 2260 + * Timestamp in milliseconds since Unix epoch. 2261 + */ 2262 + timestamp: number 2263 + }> 2264 + } 2265 + 2266 + export type GetGuildLogsResponse = GetGuildLogsResponses[keyof GetGuildLogsResponses] 2267 + 2268 + export type GetMetricsData = { 2269 + body?: never 2270 + path?: never 2271 + query?: never 2272 + url: '/metrics' 2273 + } 2274 + 2275 + export type GetMetricsErrors = { 2276 + /** 2277 + * Canonical error envelope returned by the HTTP API. 2278 + */ 2279 + 400: { 2280 + /** 2281 + * Human readable error message. 2282 + */ 2283 + message: string 2284 + } 2285 + /** 2286 + * Canonical error envelope returned by the HTTP API. 2287 + */ 2288 + 401: { 2289 + /** 2290 + * Human readable error message. 2291 + */ 2292 + message: string 2293 + } 2294 + /** 2295 + * Canonical error envelope returned by the HTTP API. 2296 + */ 2297 + 403: { 2298 + /** 2299 + * Human readable error message. 2300 + */ 2301 + message: string 2302 + } 2303 + /** 2304 + * Canonical error envelope returned by the HTTP API. 2305 + */ 2306 + 404: { 2307 + /** 2308 + * Human readable error message. 2309 + */ 2310 + message: string 2311 + } 2312 + /** 2313 + * Canonical error envelope returned by the HTTP API. 2314 + */ 2315 + 500: { 2316 + /** 2317 + * Human readable error message. 2318 + */ 2319 + message: string 2320 + } 2321 + } 2322 + 2323 + export type GetMetricsError = GetMetricsErrors[keyof GetMetricsErrors] 2324 + 2325 + export type GetMetricsResponses = { 2326 + /** 2327 + * Successful response 2328 + */ 2329 + 200: unknown 2330 + } 2331 + 2332 + export type GetMetricsJsonData = { 2333 + body?: never 2334 + path?: never 2335 + query?: never 2336 + url: '/metrics/json' 2337 + } 2338 + 2339 + export type GetMetricsJsonErrors = { 2340 + /** 2341 + * Canonical error envelope returned by the HTTP API. 2342 + */ 2343 + 400: { 2344 + /** 2345 + * Human readable error message. 2346 + */ 2347 + message: string 2348 + } 2349 + /** 2350 + * Canonical error envelope returned by the HTTP API. 2351 + */ 2352 + 401: { 2353 + /** 2354 + * Human readable error message. 2355 + */ 2356 + message: string 2357 + } 2358 + /** 2359 + * Canonical error envelope returned by the HTTP API. 2360 + */ 2361 + 403: { 2362 + /** 2363 + * Human readable error message. 2364 + */ 2365 + message: string 2366 + } 2367 + /** 2368 + * Canonical error envelope returned by the HTTP API. 2369 + */ 2370 + 404: { 2371 + /** 2372 + * Human readable error message. 2373 + */ 2374 + message: string 2375 + } 2376 + /** 2377 + * Canonical error envelope returned by the HTTP API. 2378 + */ 2379 + 500: { 2380 + /** 2381 + * Human readable error message. 2382 + */ 2383 + message: string 2384 + } 2385 + } 2386 + 2387 + export type GetMetricsJsonError = GetMetricsJsonErrors[keyof GetMetricsJsonErrors] 2388 + 2389 + export type GetMetricsJsonResponses = { 2390 + /** 2391 + * Snapshot of metrics at a point in time. 2392 + */ 2393 + 200: { 2394 + avg_latency_us: number 2395 + dispatch_errors: number 2396 + dispatch_total: number 2397 + isolate_count: number 2398 + isolate_restarts: number 2399 + migration_quiesce_duration_us: number 2400 + migration_success: number 2401 + migration_timeout: number 2402 + oom_errors: number 2403 + p50_latency_us: number 2404 + p95_latency_us: number 2405 + p99_latency_us: number 2406 + runtime_restarts: number 2407 + timeout_errors: number 2408 + } 2409 + } 2410 + 2411 + export type GetMetricsJsonResponse = GetMetricsJsonResponses[keyof GetMetricsJsonResponses] 2412 + 2413 + export type ListSecretsHandlerData = { 2414 + body?: never 2415 + path: { 2416 + /** 2417 + * Guild ID 2418 + */ 2419 + guild_id: string 2420 + } 2421 + query?: never 2422 + url: '/secrets/{guild_id}' 2423 + } 2424 + 2425 + export type ListSecretsHandlerErrors = { 2426 + /** 2427 + * Canonical error envelope returned by the HTTP API. 2428 + */ 2429 + 400: { 2430 + /** 2431 + * Human readable error message. 2432 + */ 2433 + message: string 2434 + } 2435 + /** 2436 + * Canonical error envelope returned by the HTTP API. 2437 + */ 2438 + 401: { 2439 + /** 2440 + * Human readable error message. 2441 + */ 2442 + message: string 2443 + } 2444 + /** 2445 + * Canonical error envelope returned by the HTTP API. 2446 + */ 2447 + 403: { 2448 + /** 2449 + * Human readable error message. 2450 + */ 2451 + message: string 2452 + } 2453 + /** 2454 + * Canonical error envelope returned by the HTTP API. 2455 + */ 2456 + 404: { 2457 + /** 2458 + * Human readable error message. 2459 + */ 2460 + message: string 2461 + } 2462 + /** 2463 + * Canonical error envelope returned by the HTTP API. 2464 + */ 2465 + 500: { 2466 + /** 2467 + * Human readable error message. 2468 + */ 2469 + message: string 2470 + } 2471 + } 2472 + 2473 + export type ListSecretsHandlerError = ListSecretsHandlerErrors[keyof ListSecretsHandlerErrors] 2474 + 2475 + export type ListSecretsHandlerResponses = { 2476 + /** 2477 + * Successful response 2478 + */ 2479 + 200: Array<{ 2480 + allowed_hosts: Array<string> 2481 + name: string 2482 + }> 2483 + } 2484 + 2485 + export type ListSecretsHandlerResponse = 2486 + ListSecretsHandlerResponses[keyof ListSecretsHandlerResponses] 2487 + 2488 + export type DeleteSecretHandlerData = { 2489 + body?: never 2490 + path: { 2491 + /** 2492 + * Guild ID 2493 + */ 2494 + guild_id: string 2495 + /** 2496 + * Secret name 2497 + */ 2498 + name: string 2499 + } 2500 + query?: never 2501 + url: '/secrets/{guild_id}/{name}' 2502 + } 2503 + 2504 + export type DeleteSecretHandlerErrors = { 2505 + /** 2506 + * Canonical error envelope returned by the HTTP API. 2507 + */ 2508 + 400: { 2509 + /** 2510 + * Human readable error message. 2511 + */ 2512 + message: string 2513 + } 2514 + /** 2515 + * Canonical error envelope returned by the HTTP API. 2516 + */ 2517 + 401: { 2518 + /** 2519 + * Human readable error message. 2520 + */ 2521 + message: string 2522 + } 2523 + /** 2524 + * Canonical error envelope returned by the HTTP API. 2525 + */ 2526 + 403: { 2527 + /** 2528 + * Human readable error message. 2529 + */ 2530 + message: string 2531 + } 2532 + /** 2533 + * Canonical error envelope returned by the HTTP API. 2534 + */ 2535 + 404: { 2536 + /** 2537 + * Human readable error message. 2538 + */ 2539 + message: string 2540 + } 2541 + /** 2542 + * Canonical error envelope returned by the HTTP API. 2543 + */ 2544 + 500: { 2545 + /** 2546 + * Human readable error message. 2547 + */ 2548 + message: string 2549 + } 2550 + } 2551 + 2552 + export type DeleteSecretHandlerError = DeleteSecretHandlerErrors[keyof DeleteSecretHandlerErrors] 2553 + 2554 + export type DeleteSecretHandlerResponses = { 2555 + /** 2556 + * Successful response 2557 + */ 2558 + 200: { 2559 + deleted: boolean 2560 + } 2561 + } 2562 + 2563 + export type DeleteSecretHandlerResponse = 2564 + DeleteSecretHandlerResponses[keyof DeleteSecretHandlerResponses] 2565 + 2566 + export type UpsertSecretHandlerData = { 2567 + body: UpsertSecretRequest 2568 + path: { 2569 + /** 2570 + * Guild ID 2571 + */ 2572 + guild_id: string 2573 + /** 2574 + * Secret name 2575 + */ 2576 + name: string 2577 + } 2578 + query?: never 2579 + url: '/secrets/{guild_id}/{name}' 2580 + } 2581 + 2582 + export type UpsertSecretHandlerErrors = { 2583 + /** 2584 + * Canonical error envelope returned by the HTTP API. 2585 + */ 2586 + 400: { 2587 + /** 2588 + * Human readable error message. 2589 + */ 2590 + message: string 2591 + } 2592 + /** 2593 + * Canonical error envelope returned by the HTTP API. 2594 + */ 2595 + 401: { 2596 + /** 2597 + * Human readable error message. 2598 + */ 2599 + message: string 2600 + } 2601 + /** 2602 + * Canonical error envelope returned by the HTTP API. 2603 + */ 2604 + 403: { 2605 + /** 2606 + * Human readable error message. 2607 + */ 2608 + message: string 2609 + } 2610 + /** 2611 + * Canonical error envelope returned by the HTTP API. 2612 + */ 2613 + 404: { 2614 + /** 2615 + * Human readable error message. 2616 + */ 2617 + message: string 2618 + } 2619 + /** 2620 + * Canonical error envelope returned by the HTTP API. 2621 + */ 2622 + 500: { 2623 + /** 2624 + * Human readable error message. 2625 + */ 2626 + message: string 2627 + } 2628 + } 2629 + 2630 + export type UpsertSecretHandlerError = UpsertSecretHandlerErrors[keyof UpsertSecretHandlerErrors] 2631 + 2632 + export type UpsertSecretHandlerResponses = { 2633 + /** 2634 + * Metadata response; values are never returned. 2635 + */ 2636 + 200: { 2637 + allowed_hosts: Array<string> 2638 + name: string 2639 + } 2640 + } 2641 + 2642 + export type UpsertSecretHandlerResponse = 2643 + UpsertSecretHandlerResponses[keyof UpsertSecretHandlerResponses] 2644 + 2645 + export type ListTokensHandlerData = { 2646 + body?: never 2647 + path?: never 2648 + query?: never 2649 + url: '/tokens/' 2650 + } 2651 + 2652 + export type ListTokensHandlerErrors = { 2653 + /** 2654 + * Canonical error envelope returned by the HTTP API. 2655 + */ 2656 + 400: { 2657 + /** 2658 + * Human readable error message. 2659 + */ 2660 + message: string 2661 + } 2662 + /** 2663 + * Canonical error envelope returned by the HTTP API. 2664 + */ 2665 + 401: { 2666 + /** 2667 + * Human readable error message. 2668 + */ 2669 + message: string 2670 + } 2671 + /** 2672 + * Canonical error envelope returned by the HTTP API. 2673 + */ 2674 + 403: { 2675 + /** 2676 + * Human readable error message. 2677 + */ 2678 + message: string 2679 + } 2680 + /** 2681 + * Canonical error envelope returned by the HTTP API. 2682 + */ 2683 + 404: { 2684 + /** 2685 + * Human readable error message. 2686 + */ 2687 + message: string 2688 + } 2689 + /** 2690 + * Canonical error envelope returned by the HTTP API. 2691 + */ 2692 + 500: { 2693 + /** 2694 + * Human readable error message. 2695 + */ 2696 + message: string 2697 + } 2698 + } 2699 + 2700 + export type ListTokensHandlerError = ListTokensHandlerErrors[keyof ListTokensHandlerErrors] 2701 + 2702 + export type ListTokensHandlerResponses = { 2703 + /** 2704 + * Successful response 2705 + */ 2706 + 200: Array<{ 2707 + /** 2708 + * Token creation time in RFC3339 (UTC). 2709 + */ 2710 + created_at: string 2711 + /** 2712 + * Optional user-facing label for the token. 2713 + */ 2714 + label?: string | null 2715 + /** 2716 + * Last usage time in RFC3339 (UTC), if available. 2717 + */ 2718 + last_used_at?: string | null 2719 + /** 2720 + * Token identifier. 2721 + */ 2722 + token_id: string 2723 + }> 2724 + } 2725 + 2726 + export type ListTokensHandlerResponse = ListTokensHandlerResponses[keyof ListTokensHandlerResponses] 2727 + 2728 + export type CreateTokenHandlerData = { 2729 + body: CreateTokenRequest 2730 + path?: never 2731 + query?: never 2732 + url: '/tokens/' 2733 + } 2734 + 2735 + export type CreateTokenHandlerErrors = { 2736 + /** 2737 + * Canonical error envelope returned by the HTTP API. 2738 + */ 2739 + 400: { 2740 + /** 2741 + * Human readable error message. 2742 + */ 2743 + message: string 2744 + } 2745 + /** 2746 + * Canonical error envelope returned by the HTTP API. 2747 + */ 2748 + 401: { 2749 + /** 2750 + * Human readable error message. 2751 + */ 2752 + message: string 2753 + } 2754 + /** 2755 + * Canonical error envelope returned by the HTTP API. 2756 + */ 2757 + 403: { 2758 + /** 2759 + * Human readable error message. 2760 + */ 2761 + message: string 2762 + } 2763 + /** 2764 + * Canonical error envelope returned by the HTTP API. 2765 + */ 2766 + 404: { 2767 + /** 2768 + * Human readable error message. 2769 + */ 2770 + message: string 2771 + } 2772 + /** 2773 + * Canonical error envelope returned by the HTTP API. 2774 + */ 2775 + 500: { 2776 + /** 2777 + * Human readable error message. 2778 + */ 2779 + message: string 2780 + } 2781 + } 2782 + 2783 + export type CreateTokenHandlerError = CreateTokenHandlerErrors[keyof CreateTokenHandlerErrors] 2784 + 2785 + export type CreateTokenHandlerResponses = { 2786 + /** 2787 + * Token creation response (includes plaintext token). 2788 + */ 2789 + 200: { 2790 + token: string 2791 + } 2792 + } 2793 + 2794 + export type CreateTokenHandlerResponse = 2795 + CreateTokenHandlerResponses[keyof CreateTokenHandlerResponses] 2796 + 2797 + export type DeleteTokenHandlerData = { 2798 + body?: never 2799 + path: { 2800 + /** 2801 + * Token identifier 2802 + */ 2803 + token_id: string 2804 + } 2805 + query?: never 2806 + url: '/tokens/{token_id}' 2807 + } 2808 + 2809 + export type DeleteTokenHandlerErrors = { 2810 + /** 2811 + * Canonical error envelope returned by the HTTP API. 2812 + */ 2813 + 400: { 2814 + /** 2815 + * Human readable error message. 2816 + */ 2817 + message: string 2818 + } 2819 + /** 2820 + * Canonical error envelope returned by the HTTP API. 2821 + */ 2822 + 401: { 2823 + /** 2824 + * Human readable error message. 2825 + */ 2826 + message: string 2827 + } 2828 + /** 2829 + * Canonical error envelope returned by the HTTP API. 2830 + */ 2831 + 403: { 2832 + /** 2833 + * Human readable error message. 2834 + */ 2835 + message: string 2836 + } 2837 + /** 2838 + * Canonical error envelope returned by the HTTP API. 2839 + */ 2840 + 404: { 2841 + /** 2842 + * Human readable error message. 2843 + */ 2844 + message: string 2845 + } 2846 + /** 2847 + * Canonical error envelope returned by the HTTP API. 2848 + */ 2849 + 500: { 2850 + /** 2851 + * Human readable error message. 2852 + */ 2853 + message: string 2854 + } 2855 + } 2856 + 2857 + export type DeleteTokenHandlerError = DeleteTokenHandlerErrors[keyof DeleteTokenHandlerErrors] 2858 + 2859 + export type DeleteTokenHandlerResponses = { 2860 + /** 2861 + * Successful response 2862 + */ 2863 + 200: unknown 2864 + /** 2865 + * Token deleted 2866 + */ 2867 + 204: void 2868 + } 2869 + 2870 + export type DeleteTokenHandlerResponse = 2871 + DeleteTokenHandlerResponses[keyof DeleteTokenHandlerResponses]
+8 -14
packages/api-client/src/index.ts
··· 1 - import createClient from 'openapi-fetch' 1 + import { client as generatedClient } from './generated/client.gen' 2 + import type { Config as OpenApiTsClientConfig } from './generated/client' 3 + export * from './generated/index' 4 + export * from './generated/@tanstack/react-query.gen' 5 + export type { OpenApiTsClientConfig } 2 6 3 - import type { paths } from './generated/openapi-schema' 4 - 5 - export type { $defs, components, operations, paths, webhooks } from './generated/openapi-schema' 6 - 7 - export interface ApiClientConfig { 8 - apiUrl: string 9 - fetch?: typeof fetch 10 - } 7 + export const client = generatedClient 11 8 12 - export function createApiClient(config: ApiClientConfig) { 13 - return createClient<paths>({ 14 - baseUrl: config.apiUrl, 15 - fetch: config.fetch 16 - }) 9 + export function configureOpenApiClient(config: OpenApiTsClientConfig) { 10 + return client.setConfig(config) 17 11 }
+371 -251
pnpm-lock.yaml
··· 9 9 '@babel/core': 10 10 specifier: 7.29.0 11 11 version: 7.29.0 12 + '@hey-api/openapi-ts': 13 + specifier: 0.96.0 14 + version: 0.96.0 12 15 '@rolldown/plugin-babel': 13 16 specifier: 0.2.1 14 17 version: 0.2.1 ··· 21 24 '@shikijs/langs': 22 25 specifier: 4.0.2 23 26 version: 4.0.2 27 + '@tanstack/react-query': 28 + specifier: ^5.90.21 29 + version: 5.90.21 24 30 '@types/babel__core': 25 31 specifier: 7.20.5 26 32 version: 7.20.5 ··· 50 56 version: link:packages/cli 51 57 vite-plus: 52 58 specifier: 'catalog:' 53 - version: 0.1.16(@types/node@25.1.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 59 + version: 0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) 54 60 55 61 apps/build-service: 56 62 dependencies: ··· 75 81 version: 7.0.0-dev.20260313.1 76 82 vite-plus: 77 83 specifier: 'catalog:' 78 - version: 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) 84 + version: 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) 79 85 80 86 apps/frontend: 81 87 dependencies: ··· 156 162 version: 4.0.2 157 163 '@tailwindcss/vite': 158 164 specifier: ^4.1.18 159 - version: 4.2.1(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)) 165 + version: 4.2.1(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)) 160 166 '@tanstack/react-query': 161 167 specifier: ^5.90.12 162 168 version: 5.90.21(react@19.2.4) ··· 190 196 motion: 191 197 specifier: 12.35.0 192 198 version: 12.35.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) 193 - openapi-react-query: 194 - specifier: ^0.5.1 195 - version: 0.5.4(@tanstack/react-query@5.90.21(react@19.2.4))(openapi-fetch@0.17.0) 196 199 react: 197 200 specifier: ^19.2.0 198 201 version: 19.2.4 ··· 235 238 version: 0.1.25(@types/react@19.2.14)(react@19.2.4) 236 239 '@rolldown/plugin-babel': 237 240 specifier: 'catalog:' 238 - version: 0.2.1(@babel/core@7.29.0)(@babel/runtime@7.28.6)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(rolldown@1.0.0-rc.9) 241 + version: 0.2.1(@babel/core@7.29.0)(@babel/runtime@7.28.6)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(rolldown@1.0.0-rc.9) 239 242 '@types/babel__core': 240 243 specifier: 'catalog:' 241 244 version: 7.20.5 ··· 253 256 version: 7.0.0-dev.20260313.1 254 257 '@vitejs/plugin-react': 255 258 specifier: ^6.0.1 256 - version: 6.0.1(@rolldown/plugin-babel@0.2.1(@babel/core@7.29.0)(@babel/runtime@7.28.6)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(rolldown@1.0.0-rc.9))(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(babel-plugin-react-compiler@1.0.0) 259 + version: 6.0.1(@rolldown/plugin-babel@0.2.1(@babel/core@7.29.0)(@babel/runtime@7.28.6)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(rolldown@1.0.0-rc.9))(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(babel-plugin-react-compiler@1.0.0) 257 260 babel-plugin-react-compiler: 258 261 specifier: 1.0.0 259 262 version: 1.0.0 ··· 265 268 version: 5.9.3 266 269 vite: 267 270 specifier: npm:@voidzero-dev/vite-plus-core@0.1.16 268 - version: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 271 + version: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 269 272 vite-plus: 270 273 specifier: 'catalog:' 271 - version: 0.1.11(@types/node@24.12.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 274 + version: 0.1.11(@types/node@24.12.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 272 275 273 276 apps/frontend-new: 274 277 dependencies: ··· 284 287 version: 1.1.4 285 288 '@oxc-solid-js/vite': 286 289 specifier: 0.1.0-alpha.15 287 - version: 0.1.0-alpha.15(@oxc-solid-js/compiler@1.1.4)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(solid-js@1.9.11) 290 + version: 0.1.0-alpha.15(@oxc-solid-js/compiler@1.1.4)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(solid-js@1.9.11) 288 291 '@tailwindcss/vite': 289 292 specifier: ^4.1.13 290 - version: 4.2.1(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)) 293 + version: 4.2.1(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)) 291 294 solid-devtools: 292 295 specifier: ^0.34.3 293 - version: 0.34.5(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(solid-js@1.9.11) 296 + version: 0.34.5(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(solid-js@1.9.11) 294 297 tailwindcss: 295 298 specifier: ^4.1.13 296 299 version: 4.2.1 ··· 299 302 version: 5.9.3 300 303 vite: 301 304 specifier: npm:@voidzero-dev/vite-plus-core@0.1.16 302 - version: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 305 + version: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 303 306 vite-plugin-solid: 304 307 specifier: ^2.11.8 305 - version: 2.11.12(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(solid-js@1.9.11) 308 + version: 2.11.12(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(solid-js@1.9.11) 306 309 vite-plus: 307 310 specifier: 'catalog:' 308 - version: 0.1.16(@types/node@25.1.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 311 + version: 0.1.16(@types/node@25.1.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 309 312 310 313 apps/uwu.network: 311 314 dependencies: ··· 342 345 version: 0.1.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vue@3.5.30(typescript@5.9.3)) 343 346 vitepress: 344 347 specifier: 2.0.0-alpha.16 345 - version: 2.0.0-alpha.16(@types/node@24.12.0)(change-case@5.4.4)(jiti@2.6.1)(oxc-minify@0.116.0)(postcss@8.5.9)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 348 + version: 2.0.0-alpha.16(@types/node@24.12.0)(change-case@5.4.4)(jiti@2.6.1)(oxc-minify@0.116.0)(postcss@8.5.9)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 346 349 vue: 347 350 specifier: ^3.5.29 348 351 version: 3.5.30(typescript@5.9.3) ··· 364 367 version: 5.9.3 365 368 unocss: 366 369 specifier: ^66.5.12 367 - version: 66.6.6(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) 370 + version: 66.6.6(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3)) 368 371 wrangler: 369 372 specifier: ^4.58.0 370 373 version: 4.73.0 ··· 377 380 378 381 packages/api-client: 379 382 dependencies: 380 - openapi-fetch: 381 - specifier: ^0.17.0 382 - version: 0.17.0 383 + '@tanstack/react-query': 384 + specifier: 'catalog:' 385 + version: 5.90.21(react@19.2.4) 383 386 devDependencies: 387 + '@hey-api/openapi-ts': 388 + specifier: 'catalog:' 389 + version: 0.96.0(typescript@5.9.3) 384 390 '@typescript/native-preview': 385 391 specifier: 'catalog:' 386 392 version: 7.0.0-dev.20260313.1 387 393 bumpp: 388 394 specifier: ^11.0.0 389 395 version: 11.0.0 390 - openapi-typescript: 391 - specifier: ^7.13.0 392 - version: 7.13.0(typescript@5.9.3) 393 396 typescript: 394 397 specifier: 'catalog:' 395 398 version: 5.9.3 396 399 vite-plus: 397 400 specifier: 'catalog:' 398 - version: 0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) 401 + version: 0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) 399 402 vitest: 400 403 specifier: npm:@voidzero-dev/vite-plus-test@0.1.16 401 - version: '@voidzero-dev/vite-plus-test@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)' 404 + version: '@voidzero-dev/vite-plus-test@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3)' 402 405 403 406 packages/branding: {} 404 407 ··· 449 452 version: 5.9.3 450 453 vite-plus: 451 454 specifier: 'catalog:' 452 - version: 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) 455 + version: 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) 453 456 vitest: 454 457 specifier: npm:@voidzero-dev/vite-plus-test@0.1.16 455 - version: '@voidzero-dev/vite-plus-test@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)' 458 + version: '@voidzero-dev/vite-plus-test@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3)' 456 459 457 460 packages/sdk: 458 461 devDependencies: ··· 1303 1306 '@fontsource-variable/geist@5.2.8': 1304 1307 resolution: {integrity: sha512-cJ6m9e+8MQ5dCYJsLylfZrgBh6KkG4bOLckB35Tr9J/EqdkEM6QllH5PxqP1dhTvFup+HtMRPuz9xOjxXJggxw==} 1305 1308 1309 + '@hey-api/codegen-core@0.8.0': 1310 + resolution: {integrity: sha512-OuF/jenX9wz7AWHRBfb37v+jLkrfCt0FJXQuALNH2UsW6+bdZBmoibHl0K778SiHwneotJbAaEvX2S05wEqUQw==} 1311 + engines: {node: '>=22.13.0'} 1312 + 1313 + '@hey-api/json-schema-ref-parser@1.4.0': 1314 + resolution: {integrity: sha512-o7X03OSoQgSqMB9DkI8cx/8MizGzeFYhIUnWuASdBOFWTgJhkStdazi1P7Vd5GXFkOx8d2yX/eErEzrQddi2GA==} 1315 + engines: {node: '>=22.13.0'} 1316 + 1317 + '@hey-api/openapi-ts@0.96.0': 1318 + resolution: {integrity: sha512-KVEHhw02+wDokvMCmHn4PA230PEd8+gF8NGdUeX0Ucxdex9ws18GBP3JqxrDyxhqO2q0o7XJA0E1T7zsJVguKg==} 1319 + engines: {node: '>=22.13.0'} 1320 + hasBin: true 1321 + peerDependencies: 1322 + typescript: '>=5.5.3 || >=6.0.0 || 6.0.1-rc' 1323 + 1324 + '@hey-api/shared@0.4.0': 1325 + resolution: {integrity: sha512-kTAH703vFnS/W/U0DqdEh+2hXTNbq3JSrKG3jb1Es7kcV/N5vej2xMstHWHTYazn5q+UGkDa/BLJxBzS6bda8A==} 1326 + engines: {node: '>=22.13.0'} 1327 + 1328 + '@hey-api/spec-types@0.2.0': 1329 + resolution: {integrity: sha512-ibQ8Is7evMavzr8GNyJCcTg975d8DpaMUyLmOrQ85UBdy1l6t1KuRAwgChAbesJsIlNV6gjmlXruWyegDX18Fg==} 1330 + 1331 + '@hey-api/types@0.1.4': 1332 + resolution: {integrity: sha512-thWfawrDIP7wSI9ioT13I5soaaqB5vAPIiZmgD8PbeEVKNrkonc0N/Sjj97ezl7oQgusZmaNphGdMKipPO6IBg==} 1333 + 1306 1334 '@hono/node-server@1.19.11': 1307 1335 resolution: {integrity: sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==} 1308 1336 engines: {node: '>=18.14.1'} ··· 1527 1555 1528 1556 '@jridgewell/trace-mapping@0.3.9': 1529 1557 resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 1558 + 1559 + '@jsdevtools/ono@7.1.3': 1560 + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} 1530 1561 1531 1562 '@medv/finder@4.0.2': 1532 1563 resolution: {integrity: sha512-RraNY9SCcx4KZV0Dh6BEW6XEW2swkqYca74pkFFRw6hHItSHiy+O/xMnpbofjYbzXj0tSpBGthUF1hHTsr3vIQ==} ··· 2734 2765 resolution: {integrity: sha512-BUmEpkz001RT6tjGopb3ctbn20t5DPdo5QUSyc4GXZPizhO1LX/jsdMGj8f8A9ICff9V+fPTTWDsi3w4kh9Obg==} 2735 2766 hasBin: true 2736 2767 2737 - '@redocly/ajv@8.11.2': 2738 - resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==} 2739 - 2740 - '@redocly/config@0.22.0': 2741 - resolution: {integrity: sha512-gAy93Ddo01Z3bHuVdPWfCwzgfaYgMdaZPcfL7JZ7hWJoK9V0lXDbigTWkhiPFAaLWzbOJ+kbUQG1+XwIm0KRGQ==} 2742 - 2743 - '@redocly/openapi-core@1.34.10': 2744 - resolution: {integrity: sha512-XCBR/9WHJ0cpezuunHMZjuFMl4KqUo7eiFwzrQrvm7lTXt0EBd3No8UY+9OyzXpDfreGEMMtxmaLZ+ksVw378g==} 2745 - engines: {node: '>=18.17.0', npm: '>=9.5.0'} 2746 - 2747 2768 '@rolldown/binding-android-arm64@1.0.0-rc.6': 2748 2769 resolution: {integrity: sha512-kvjTSWGcrv+BaR2vge57rsKiYdVR8V8CoS0vgKrc570qRBfty4bT+1X0z3j2TaVV+kAYzA0PjeB9+mdZyqUZlg==} 2749 2770 engines: {node: ^20.19.0 || >=22.12.0} ··· 3289 3310 '@types/hast@3.0.4': 3290 3311 resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} 3291 3312 3313 + '@types/json-schema@7.0.15': 3314 + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 3315 + 3292 3316 '@types/linkify-it@5.0.0': 3293 3317 resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} 3294 3318 ··· 3910 3934 solid-js: 3911 3935 optional: true 3912 3936 3913 - balanced-match@1.0.2: 3914 - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 3915 - 3916 3937 balanced-match@4.0.4: 3917 3938 resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} 3918 3939 engines: {node: 18 || 20 || >=22} ··· 3936 3957 body-parser@2.2.2: 3937 3958 resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} 3938 3959 engines: {node: '>=18'} 3939 - 3940 - brace-expansion@2.0.2: 3941 - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 3942 3960 3943 3961 brace-expansion@5.0.4: 3944 3962 resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} ··· 3968 3986 3969 3987 c12@3.3.3: 3970 3988 resolution: {integrity: sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q==} 3989 + peerDependencies: 3990 + magicast: '*' 3991 + peerDependenciesMeta: 3992 + magicast: 3993 + optional: true 3994 + 3995 + c12@3.3.4: 3996 + resolution: {integrity: sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==} 3971 3997 peerDependencies: 3972 3998 magicast: '*' 3973 3999 peerDependenciesMeta: ··· 4064 4090 color-name@1.1.4: 4065 4091 resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 4066 4092 4067 - colorette@1.4.0: 4068 - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} 4093 + color-support@1.1.3: 4094 + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} 4095 + hasBin: true 4069 4096 4070 4097 colorette@2.0.20: 4071 4098 resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} ··· 4196 4223 4197 4224 defu@6.1.4: 4198 4225 resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 4226 + 4227 + defu@6.1.7: 4228 + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} 4199 4229 4200 4230 depd@2.0.0: 4201 4231 resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} ··· 4512 4542 resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} 4513 4543 hasBin: true 4514 4544 4545 + giget@3.2.0: 4546 + resolution: {integrity: sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==} 4547 + hasBin: true 4548 + 4515 4549 glob-parent@5.1.2: 4516 4550 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 4517 4551 engines: {node: '>= 6'} ··· 4621 4655 resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} 4622 4656 engines: {node: '>=12'} 4623 4657 4624 - index-to-position@1.2.0: 4625 - resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} 4626 - engines: {node: '>=18'} 4627 - 4628 4658 inherits@2.0.4: 4629 4659 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 4630 4660 ··· 4735 4765 4736 4766 jose@6.2.1: 4737 4767 resolution: {integrity: sha512-jUaKr1yrbfaImV7R2TN/b3IcZzsw38/chqMpo2XJ7i2F8AfM/lA4G1goC3JVEwg0H7UldTmSt3P68nt31W7/mw==} 4738 - 4739 - js-levenshtein@1.1.6: 4740 - resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} 4741 - engines: {node: '>=0.10.0'} 4742 4768 4743 4769 js-tokens@4.0.0: 4744 4770 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} ··· 5045 5071 resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} 5046 5072 engines: {node: 18 || 20 || >=22} 5047 5073 5048 - minimatch@5.1.9: 5049 - resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} 5050 - engines: {node: '>=10'} 5051 - 5052 5074 minimist@1.2.8: 5053 5075 resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 5054 5076 ··· 5201 5223 open@11.0.0: 5202 5224 resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} 5203 5225 engines: {node: '>=20'} 5204 - 5205 - openapi-fetch@0.17.0: 5206 - resolution: {integrity: sha512-PsbZR1wAPcG91eEthKhN+Zn92FMHxv+/faECIwjXdxfTODGSGegYv0sc1Olz+HYPvKOuoXfp+0pA2XVt2cI0Ig==} 5207 - 5208 - openapi-react-query@0.5.4: 5209 - resolution: {integrity: sha512-V9lRiozjHot19/BYSgXYoyznDxDJQhEBSdi26+SJ0UqjMANLQhkni4XG+Z7e3Ag7X46ZLMrL9VxYkghU3QvbWg==} 5210 - peerDependencies: 5211 - '@tanstack/react-query': ^5.80.0 5212 - openapi-fetch: ^0.17.0 5213 - 5214 - openapi-typescript-helpers@0.1.0: 5215 - resolution: {integrity: sha512-OKTGPthhivLw/fHz6c3OPtg72vi86qaMlqbJuVJ23qOvQ+53uw1n7HdmkJFibloF7QEjDrDkzJiOJuockM/ljw==} 5216 - 5217 - openapi-typescript@7.13.0: 5218 - resolution: {integrity: sha512-EFP392gcqXS7ntPvbhBzbF8TyBA+baIYEm791Hy5YkjDYKTnk/Tn5OQeKm5BIZvJihpp8Zzr4hzx0Irde1LNGQ==} 5219 - hasBin: true 5220 - peerDependencies: 5221 - typescript: ^5.x 5222 5226 5223 5227 ora@8.2.0: 5224 5228 resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} ··· 5289 5293 resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 5290 5294 engines: {node: '>=8'} 5291 5295 5292 - parse-json@8.3.0: 5293 - resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} 5294 - engines: {node: '>=18'} 5295 - 5296 5296 parse-ms@4.0.0: 5297 5297 resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} 5298 5298 engines: {node: '>=18'} ··· 5374 5374 pkg-types@2.3.0: 5375 5375 resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} 5376 5376 5377 - pluralize@8.0.0: 5378 - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 5379 - engines: {node: '>=4'} 5380 - 5381 5377 pngjs@7.0.0: 5382 5378 resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} 5383 5379 engines: {node: '>=14.19.0'} ··· 5449 5445 rc9@2.1.2: 5450 5446 resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} 5451 5447 5448 + rc9@3.0.1: 5449 + resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} 5450 + 5452 5451 react-dom@19.2.4: 5453 5452 resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} 5454 5453 peerDependencies: ··· 5869 5868 tw-animate-css@1.4.0: 5870 5869 resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} 5871 5870 5872 - type-fest@4.41.0: 5873 - resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} 5874 - engines: {node: '>=16'} 5875 - 5876 5871 type-fest@5.4.4: 5877 5872 resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==} 5878 5873 engines: {node: '>=20'} ··· 5977 5972 hasBin: true 5978 5973 peerDependencies: 5979 5974 browserslist: '>= 4.21.0' 5980 - 5981 - uri-js-replace@1.0.1: 5982 - resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==} 5983 5975 5984 5976 use-sync-external-store@1.6.0: 5985 5977 resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} ··· 6195 6187 yallist@3.1.1: 6196 6188 resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 6197 6189 6198 - yaml-ast-parser@0.0.43: 6199 - resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} 6200 - 6201 6190 yaml@2.8.2: 6202 6191 resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} 6192 + engines: {node: '>= 14.6'} 6193 + hasBin: true 6194 + 6195 + yaml@2.8.3: 6196 + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} 6203 6197 engines: {node: '>= 14.6'} 6204 6198 hasBin: true 6205 6199 ··· 6273 6267 '@babel/types': 7.29.0 6274 6268 '@jridgewell/remapping': 2.3.5 6275 6269 convert-source-map: 2.0.0 6276 - debug: 4.4.3(supports-color@10.2.2) 6270 + debug: 4.4.3 6277 6271 gensync: 1.0.0-beta.2 6278 6272 json5: 2.2.3 6279 6273 semver: 6.3.1 ··· 6439 6433 '@babel/parser': 7.29.0 6440 6434 '@babel/template': 7.28.6 6441 6435 '@babel/types': 7.29.0 6442 - debug: 4.4.3(supports-color@10.2.2) 6436 + debug: 4.4.3 6443 6437 transitivePeerDependencies: 6444 6438 - supports-color 6445 6439 ··· 6944 6938 6945 6939 '@fontsource-variable/geist@5.2.8': {} 6946 6940 6941 + '@hey-api/codegen-core@0.8.0': 6942 + dependencies: 6943 + '@hey-api/types': 0.1.4 6944 + ansi-colors: 4.1.3 6945 + c12: 3.3.4 6946 + color-support: 1.1.3 6947 + transitivePeerDependencies: 6948 + - magicast 6949 + 6950 + '@hey-api/json-schema-ref-parser@1.4.0': 6951 + dependencies: 6952 + '@jsdevtools/ono': 7.1.3 6953 + '@types/json-schema': 7.0.15 6954 + yaml: 2.8.3 6955 + 6956 + '@hey-api/openapi-ts@0.96.0(typescript@5.9.3)': 6957 + dependencies: 6958 + '@hey-api/codegen-core': 0.8.0 6959 + '@hey-api/json-schema-ref-parser': 1.4.0 6960 + '@hey-api/shared': 0.4.0 6961 + '@hey-api/spec-types': 0.2.0 6962 + '@hey-api/types': 0.1.4 6963 + ansi-colors: 4.1.3 6964 + color-support: 1.1.3 6965 + commander: 14.0.3 6966 + get-tsconfig: 4.13.7 6967 + typescript: 5.9.3 6968 + transitivePeerDependencies: 6969 + - magicast 6970 + 6971 + '@hey-api/shared@0.4.0': 6972 + dependencies: 6973 + '@hey-api/codegen-core': 0.8.0 6974 + '@hey-api/json-schema-ref-parser': 1.4.0 6975 + '@hey-api/spec-types': 0.2.0 6976 + '@hey-api/types': 0.1.4 6977 + ansi-colors: 4.1.3 6978 + cross-spawn: 7.0.6 6979 + open: 11.0.0 6980 + semver: 7.7.4 6981 + transitivePeerDependencies: 6982 + - magicast 6983 + 6984 + '@hey-api/spec-types@0.2.0': 6985 + dependencies: 6986 + '@hey-api/types': 0.1.4 6987 + 6988 + '@hey-api/types@0.1.4': {} 6989 + 6947 6990 '@hono/node-server@1.19.11(hono@4.12.7)': 6948 6991 dependencies: 6949 6992 hono: 4.12.7 ··· 7111 7154 dependencies: 7112 7155 '@jridgewell/resolve-uri': 3.1.2 7113 7156 '@jridgewell/sourcemap-codec': 1.5.5 7157 + 7158 + '@jsdevtools/ono@7.1.3': {} 7114 7159 7115 7160 '@medv/finder@4.0.2': {} 7116 7161 ··· 7348 7393 '@oxc-solid-js/compiler-linux-x64-gnu': 1.1.4 7349 7394 '@oxc-solid-js/compiler-win32-x64-msvc': 1.1.4 7350 7395 7351 - '@oxc-solid-js/vite@0.1.0-alpha.15(@oxc-solid-js/compiler@1.1.4)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(solid-js@1.9.11)': 7396 + '@oxc-solid-js/vite@0.1.0-alpha.15(@oxc-solid-js/compiler@1.1.4)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(solid-js@1.9.11)': 7352 7397 dependencies: 7353 7398 '@oxc-solid-js/compiler': 1.1.4 7354 7399 solid-refresh: 0.7.8(solid-js@1.9.11) 7355 - vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 7400 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 7356 7401 transitivePeerDependencies: 7357 7402 - solid-js 7358 7403 ··· 7885 7930 - react 7886 7931 - supports-color 7887 7932 7888 - '@redocly/ajv@8.11.2': 7889 - dependencies: 7890 - fast-deep-equal: 3.1.3 7891 - json-schema-traverse: 1.0.0 7892 - require-from-string: 2.0.2 7893 - uri-js-replace: 1.0.1 7894 - 7895 - '@redocly/config@0.22.0': {} 7896 - 7897 - '@redocly/openapi-core@1.34.10(supports-color@10.2.2)': 7898 - dependencies: 7899 - '@redocly/ajv': 8.11.2 7900 - '@redocly/config': 0.22.0 7901 - colorette: 1.4.0 7902 - https-proxy-agent: 7.0.6(supports-color@10.2.2) 7903 - js-levenshtein: 1.1.6 7904 - js-yaml: 4.1.1 7905 - minimatch: 5.1.9 7906 - pluralize: 8.0.0 7907 - yaml-ast-parser: 0.0.43 7908 - transitivePeerDependencies: 7909 - - supports-color 7910 - 7911 7933 '@rolldown/binding-android-arm64@1.0.0-rc.6': 7912 7934 optional: true 7913 7935 ··· 8037 8059 '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': 8038 8060 optional: true 8039 8061 8040 - '@rolldown/plugin-babel@0.2.1(@babel/core@7.29.0)(@babel/runtime@7.28.6)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(rolldown@1.0.0-rc.9)': 8062 + '@rolldown/plugin-babel@0.2.1(@babel/core@7.29.0)(@babel/runtime@7.28.6)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(rolldown@1.0.0-rc.9)': 8041 8063 dependencies: 8042 8064 '@babel/core': 7.29.0 8043 8065 picomatch: 4.0.3 8044 8066 rolldown: 1.0.0-rc.9 8045 8067 optionalDependencies: 8046 8068 '@babel/runtime': 7.28.6 8047 - vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 8069 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 8048 8070 8049 8071 '@rolldown/pluginutils@1.0.0-rc.2': {} 8050 8072 ··· 8289 8311 '@tailwindcss/oxide-win32-arm64-msvc': 4.2.1 8290 8312 '@tailwindcss/oxide-win32-x64-msvc': 4.2.1 8291 8313 8292 - '@tailwindcss/vite@4.2.1(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))': 8314 + '@tailwindcss/vite@4.2.1(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))': 8293 8315 dependencies: 8294 8316 '@tailwindcss/node': 4.2.1 8295 8317 '@tailwindcss/oxide': 4.2.1 8296 8318 tailwindcss: 4.2.1 8297 - vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 8319 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 8298 8320 8299 - '@tailwindcss/vite@4.2.1(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))': 8321 + '@tailwindcss/vite@4.2.1(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))': 8300 8322 dependencies: 8301 8323 '@tailwindcss/node': 4.2.1 8302 8324 '@tailwindcss/oxide': 4.2.1 8303 8325 tailwindcss: 4.2.1 8304 - vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 8326 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 8305 8327 8306 8328 '@tanstack/query-core@5.90.20': {} 8307 8329 ··· 8362 8384 '@types/hast@3.0.4': 8363 8385 dependencies: 8364 8386 '@types/unist': 3.0.3 8387 + 8388 + '@types/json-schema@7.0.15': {} 8365 8389 8366 8390 '@types/linkify-it@5.0.0': {} 8367 8391 ··· 8561 8585 dependencies: 8562 8586 '@unocss/core': 66.6.6 8563 8587 8564 - '@unocss/vite@66.6.6(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))': 8588 + '@unocss/vite@66.6.6(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))': 8565 8589 dependencies: 8566 8590 '@jridgewell/remapping': 2.3.5 8567 8591 '@unocss/config': 66.6.6 ··· 8572 8596 pathe: 2.0.3 8573 8597 tinyglobby: 0.2.15 8574 8598 unplugin-utils: 0.3.1 8575 - vite: 8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) 8599 + vite: 8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3) 8576 8600 8577 - '@vitejs/plugin-react@6.0.1(@rolldown/plugin-babel@0.2.1(@babel/core@7.29.0)(@babel/runtime@7.28.6)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(rolldown@1.0.0-rc.9))(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(babel-plugin-react-compiler@1.0.0)': 8601 + '@vitejs/plugin-react@6.0.1(@rolldown/plugin-babel@0.2.1(@babel/core@7.29.0)(@babel/runtime@7.28.6)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(rolldown@1.0.0-rc.9))(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(babel-plugin-react-compiler@1.0.0)': 8578 8602 dependencies: 8579 8603 '@rolldown/pluginutils': 1.0.0-rc.7 8580 - vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 8604 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 8581 8605 optionalDependencies: 8582 - '@rolldown/plugin-babel': 0.2.1(@babel/core@7.29.0)(@babel/runtime@7.28.6)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(rolldown@1.0.0-rc.9) 8606 + '@rolldown/plugin-babel': 0.2.1(@babel/core@7.29.0)(@babel/runtime@7.28.6)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(rolldown@1.0.0-rc.9) 8583 8607 babel-plugin-react-compiler: 1.0.0 8584 8608 8585 - '@vitejs/plugin-vue@6.0.5(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3))': 8609 + '@vitejs/plugin-vue@6.0.5(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(vue@3.5.30(typescript@5.9.3))': 8586 8610 dependencies: 8587 8611 '@rolldown/pluginutils': 1.0.0-rc.2 8588 - vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 8612 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 8589 8613 vue: 3.5.30(typescript@5.9.3) 8590 8614 8591 - '@voidzero-dev/vite-plus-core@0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)': 8615 + '@voidzero-dev/vite-plus-core@0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)': 8592 8616 dependencies: 8593 8617 '@oxc-project/runtime': 0.115.0 8594 8618 '@oxc-project/types': 0.115.0 ··· 8602 8626 sass: 1.97.3 8603 8627 tsx: 4.21.0 8604 8628 typescript: 5.9.3 8605 - yaml: 2.8.2 8629 + yaml: 2.8.3 8606 8630 8607 - '@voidzero-dev/vite-plus-core@0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)': 8631 + '@voidzero-dev/vite-plus-core@0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)': 8608 8632 dependencies: 8609 8633 '@oxc-project/runtime': 0.115.0 8610 8634 '@oxc-project/types': 0.115.0 ··· 8618 8642 sass: 1.97.3 8619 8643 tsx: 4.21.0 8620 8644 typescript: 5.9.3 8621 - yaml: 2.8.2 8645 + yaml: 2.8.3 8622 8646 8623 - '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)': 8647 + '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)': 8624 8648 dependencies: 8625 8649 '@oxc-project/runtime': 0.123.0 8626 8650 '@oxc-project/types': 0.123.0 ··· 8634 8658 sass: 1.97.3 8635 8659 tsx: 4.21.0 8636 8660 typescript: 5.9.3 8637 - yaml: 2.8.2 8661 + yaml: 2.8.3 8638 8662 8639 - '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)': 8663 + '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)': 8640 8664 dependencies: 8641 8665 '@oxc-project/runtime': 0.123.0 8642 8666 '@oxc-project/types': 0.123.0 ··· 8650 8674 sass: 1.97.3 8651 8675 tsx: 4.21.0 8652 8676 typescript: 5.9.3 8653 - yaml: 2.8.2 8677 + yaml: 2.8.3 8654 8678 8655 8679 '@voidzero-dev/vite-plus-darwin-arm64@0.1.11': 8656 8680 optional: true ··· 8682 8706 '@voidzero-dev/vite-plus-linux-x64-musl@0.1.16': 8683 8707 optional: true 8684 8708 8685 - '@voidzero-dev/vite-plus-test@0.1.11(@types/node@24.12.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)': 8709 + '@voidzero-dev/vite-plus-test@0.1.11(@types/node@24.12.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)': 8686 8710 dependencies: 8687 8711 '@standard-schema/spec': 1.1.0 8688 8712 '@types/chai': 5.2.3 8689 - '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 8713 + '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 8690 8714 es-module-lexer: 1.7.0 8691 8715 obug: 2.1.1 8692 8716 pixelmatch: 7.1.0 ··· 8696 8720 tinybench: 2.9.0 8697 8721 tinyexec: 1.0.2 8698 8722 tinyglobby: 0.2.15 8699 - vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 8723 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 8700 8724 ws: 8.19.0 8701 8725 optionalDependencies: 8702 8726 '@types/node': 24.12.0 ··· 8721 8745 - utf-8-validate 8722 8746 - yaml 8723 8747 8724 - '@voidzero-dev/vite-plus-test@0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)': 8748 + '@voidzero-dev/vite-plus-test@0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3)': 8725 8749 dependencies: 8726 8750 '@standard-schema/spec': 1.1.0 8727 8751 '@types/chai': 5.2.3 8728 - '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 8752 + '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 8729 8753 es-module-lexer: 1.7.0 8730 8754 obug: 2.1.1 8731 8755 pixelmatch: 7.1.0 ··· 8735 8759 tinybench: 2.9.0 8736 8760 tinyexec: 1.0.2 8737 8761 tinyglobby: 0.2.15 8738 - vite: 8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) 8762 + vite: 8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3) 8739 8763 ws: 8.19.0 8740 8764 optionalDependencies: 8741 8765 '@types/node': 24.12.0 ··· 8760 8784 - utf-8-validate 8761 8785 - yaml 8762 8786 8763 - '@voidzero-dev/vite-plus-test@0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)': 8787 + '@voidzero-dev/vite-plus-test@0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3)': 8764 8788 dependencies: 8765 8789 '@standard-schema/spec': 1.1.0 8766 8790 '@types/chai': 5.2.3 8767 - '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 8791 + '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 8768 8792 es-module-lexer: 1.7.0 8769 8793 obug: 2.1.1 8770 8794 pixelmatch: 7.1.0 ··· 8774 8798 tinybench: 2.9.0 8775 8799 tinyexec: 1.0.2 8776 8800 tinyglobby: 0.2.15 8777 - vite: 8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) 8801 + vite: 8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3) 8778 8802 ws: 8.19.0 8779 8803 optionalDependencies: 8780 8804 '@types/node': 25.1.0 ··· 8799 8823 - utf-8-validate 8800 8824 - yaml 8801 8825 8802 - '@voidzero-dev/vite-plus-test@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)': 8826 + '@voidzero-dev/vite-plus-test@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3)': 8803 8827 dependencies: 8804 8828 '@standard-schema/spec': 1.1.0 8805 8829 '@types/chai': 5.2.3 8806 - '@voidzero-dev/vite-plus-core': 0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 8830 + '@voidzero-dev/vite-plus-core': 0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 8807 8831 es-module-lexer: 1.7.0 8808 8832 obug: 2.1.1 8809 8833 pixelmatch: 7.1.0 ··· 8813 8837 tinybench: 2.9.0 8814 8838 tinyexec: 1.1.1 8815 8839 tinyglobby: 0.2.16 8816 - vite: 8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) 8840 + vite: 8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3) 8817 8841 ws: 8.20.0 8818 8842 optionalDependencies: 8819 8843 '@types/node': 24.12.0 ··· 8838 8862 - utf-8-validate 8839 8863 - yaml 8840 8864 8841 - '@voidzero-dev/vite-plus-test@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)': 8865 + '@voidzero-dev/vite-plus-test@0.1.16(@types/node@25.1.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)': 8842 8866 dependencies: 8843 8867 '@standard-schema/spec': 1.1.0 8844 8868 '@types/chai': 5.2.3 8845 - '@voidzero-dev/vite-plus-core': 0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 8869 + '@voidzero-dev/vite-plus-core': 0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 8846 8870 es-module-lexer: 1.7.0 8847 8871 obug: 2.1.1 8848 8872 pixelmatch: 7.1.0 ··· 8852 8876 tinybench: 2.9.0 8853 8877 tinyexec: 1.1.1 8854 8878 tinyglobby: 0.2.16 8855 - vite: 8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2) 8879 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 8880 + ws: 8.20.0 8881 + optionalDependencies: 8882 + '@types/node': 25.1.0 8883 + transitivePeerDependencies: 8884 + - '@arethetypeswrong/core' 8885 + - '@tsdown/css' 8886 + - '@tsdown/exe' 8887 + - '@vitejs/devtools' 8888 + - bufferutil 8889 + - esbuild 8890 + - jiti 8891 + - less 8892 + - publint 8893 + - sass 8894 + - sass-embedded 8895 + - stylus 8896 + - sugarss 8897 + - terser 8898 + - tsx 8899 + - typescript 8900 + - unplugin-unused 8901 + - utf-8-validate 8902 + - yaml 8903 + 8904 + '@voidzero-dev/vite-plus-test@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3)': 8905 + dependencies: 8906 + '@standard-schema/spec': 1.1.0 8907 + '@types/chai': 5.2.3 8908 + '@voidzero-dev/vite-plus-core': 0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 8909 + es-module-lexer: 1.7.0 8910 + obug: 2.1.1 8911 + pixelmatch: 7.1.0 8912 + pngjs: 7.0.0 8913 + sirv: 3.0.2 8914 + std-env: 4.0.0 8915 + tinybench: 2.9.0 8916 + tinyexec: 1.1.1 8917 + tinyglobby: 0.2.16 8918 + vite: 8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3) 8919 + ws: 8.20.0 8920 + optionalDependencies: 8921 + '@types/node': 25.1.0 8922 + transitivePeerDependencies: 8923 + - '@arethetypeswrong/core' 8924 + - '@tsdown/css' 8925 + - '@tsdown/exe' 8926 + - '@vitejs/devtools' 8927 + - bufferutil 8928 + - esbuild 8929 + - jiti 8930 + - less 8931 + - publint 8932 + - sass 8933 + - sass-embedded 8934 + - stylus 8935 + - sugarss 8936 + - terser 8937 + - tsx 8938 + - typescript 8939 + - unplugin-unused 8940 + - utf-8-validate 8941 + - yaml 8942 + 8943 + '@voidzero-dev/vite-plus-test@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3)': 8944 + dependencies: 8945 + '@standard-schema/spec': 1.1.0 8946 + '@types/chai': 5.2.3 8947 + '@voidzero-dev/vite-plus-core': 0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 8948 + es-module-lexer: 1.7.0 8949 + obug: 2.1.1 8950 + pixelmatch: 7.1.0 8951 + pngjs: 7.0.0 8952 + sirv: 3.0.2 8953 + std-env: 4.0.0 8954 + tinybench: 2.9.0 8955 + tinyexec: 1.1.1 8956 + tinyglobby: 0.2.16 8957 + vite: 8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3) 8856 8958 ws: 8.20.0 8857 8959 optionalDependencies: 8858 8960 '@types/node': 25.1.0 ··· 9054 9156 optionalDependencies: 9055 9157 solid-js: 1.9.11 9056 9158 9057 - balanced-match@1.0.2: {} 9058 - 9059 9159 balanced-match@4.0.4: {} 9060 9160 9061 9161 baseline-browser-mapping@2.10.7: {} ··· 9075 9175 dependencies: 9076 9176 bytes: 3.1.2 9077 9177 content-type: 1.0.5 9078 - debug: 4.4.3(supports-color@10.2.2) 9178 + debug: 4.4.3 9079 9179 http-errors: 2.0.1 9080 9180 iconv-lite: 0.7.2 9081 9181 on-finished: 2.4.1 ··· 9084 9184 type-is: 2.0.1 9085 9185 transitivePeerDependencies: 9086 9186 - supports-color 9087 - 9088 - brace-expansion@2.0.2: 9089 - dependencies: 9090 - balanced-match: 1.0.2 9091 9187 9092 9188 brace-expansion@5.0.4: 9093 9189 dependencies: ··· 9138 9234 pkg-types: 2.3.0 9139 9235 rc9: 2.1.2 9140 9236 9237 + c12@3.3.4: 9238 + dependencies: 9239 + chokidar: 5.0.0 9240 + confbox: 0.2.4 9241 + defu: 6.1.7 9242 + dotenv: 17.3.1 9243 + exsolve: 1.0.8 9244 + giget: 3.2.0 9245 + jiti: 2.6.1 9246 + ohash: 2.0.11 9247 + pathe: 2.0.3 9248 + perfect-debounce: 2.1.0 9249 + pkg-types: 2.3.0 9250 + rc9: 3.0.1 9251 + 9141 9252 cac@6.7.14: {} 9142 9253 9143 9254 cac@7.0.0: {} ··· 9160 9271 9161 9272 chalk@5.6.2: {} 9162 9273 9163 - change-case@5.4.4: {} 9274 + change-case@5.4.4: 9275 + optional: true 9164 9276 9165 9277 character-entities-html4@2.1.0: {} 9166 9278 ··· 9212 9324 9213 9325 color-name@1.1.4: {} 9214 9326 9215 - colorette@1.4.0: {} 9327 + color-support@1.1.3: {} 9216 9328 9217 9329 colorette@2.0.20: {} 9218 9330 ··· 9291 9403 dependencies: 9292 9404 mimic-function: 5.0.1 9293 9405 9294 - debug@4.4.3(supports-color@10.2.2): 9406 + debug@4.4.3: 9295 9407 dependencies: 9296 9408 ms: 2.1.3 9297 - optionalDependencies: 9298 - supports-color: 10.2.2 9299 9409 9300 9410 dedent@1.7.2: {} 9301 9411 ··· 9312 9422 9313 9423 defu@6.1.4: {} 9314 9424 9425 + defu@6.1.7: {} 9426 + 9315 9427 depd@2.0.0: {} 9316 9428 9317 9429 dequal@2.0.3: {} ··· 9564 9676 content-type: 1.0.5 9565 9677 cookie: 0.7.2 9566 9678 cookie-signature: 1.2.2 9567 - debug: 4.4.3(supports-color@10.2.2) 9679 + debug: 4.4.3 9568 9680 depd: 2.0.0 9569 9681 encodeurl: 2.0.0 9570 9682 escape-html: 1.0.3 ··· 9632 9744 9633 9745 finalhandler@2.1.1: 9634 9746 dependencies: 9635 - debug: 4.4.3(supports-color@10.2.2) 9747 + debug: 4.4.3 9636 9748 encodeurl: 2.0.0 9637 9749 escape-html: 1.0.3 9638 9750 on-finished: 2.4.1 ··· 9724 9836 get-tsconfig@4.13.7: 9725 9837 dependencies: 9726 9838 resolve-pkg-maps: 1.0.0 9727 - optional: true 9728 9839 9729 9840 giget@2.0.0: 9730 9841 dependencies: ··· 9734 9845 node-fetch-native: 1.6.7 9735 9846 nypm: 0.6.5 9736 9847 pathe: 2.0.3 9848 + 9849 + giget@3.2.0: {} 9737 9850 9738 9851 glob-parent@5.1.2: 9739 9852 dependencies: ··· 9798 9911 statuses: 2.0.2 9799 9912 toidentifier: 1.0.1 9800 9913 9801 - https-proxy-agent@7.0.6(supports-color@10.2.2): 9914 + https-proxy-agent@7.0.6: 9802 9915 dependencies: 9803 9916 agent-base: 7.1.4 9804 - debug: 4.4.3(supports-color@10.2.2) 9917 + debug: 4.4.3 9805 9918 transitivePeerDependencies: 9806 9919 - supports-color 9807 9920 ··· 9829 9942 resolve-from: 4.0.0 9830 9943 9831 9944 indent-string@5.0.0: {} 9832 - 9833 - index-to-position@1.2.0: {} 9834 9945 9835 9946 inherits@2.0.4: {} 9836 9947 ··· 9897 10008 jiti@2.6.1: {} 9898 10009 9899 10010 jose@6.2.1: {} 9900 - 9901 - js-levenshtein@1.1.6: {} 9902 10011 9903 10012 js-tokens@4.0.0: {} 9904 10013 ··· 10145 10254 dependencies: 10146 10255 brace-expansion: 5.0.4 10147 10256 10148 - minimatch@5.1.9: 10149 - dependencies: 10150 - brace-expansion: 2.0.2 10151 - 10152 10257 minimist@1.2.8: {} 10153 10258 10154 10259 minisearch@7.2.0: {} ··· 10311 10416 powershell-utils: 0.1.0 10312 10417 wsl-utils: 0.3.1 10313 10418 10314 - openapi-fetch@0.17.0: 10315 - dependencies: 10316 - openapi-typescript-helpers: 0.1.0 10317 - 10318 - openapi-react-query@0.5.4(@tanstack/react-query@5.90.21(react@19.2.4))(openapi-fetch@0.17.0): 10319 - dependencies: 10320 - '@tanstack/react-query': 5.90.21(react@19.2.4) 10321 - openapi-fetch: 0.17.0 10322 - openapi-typescript-helpers: 0.1.0 10323 - 10324 - openapi-typescript-helpers@0.1.0: {} 10325 - 10326 - openapi-typescript@7.13.0(typescript@5.9.3): 10327 - dependencies: 10328 - '@redocly/openapi-core': 1.34.10(supports-color@10.2.2) 10329 - ansi-colors: 4.1.3 10330 - change-case: 5.4.4 10331 - parse-json: 8.3.0 10332 - supports-color: 10.2.2 10333 - typescript: 5.9.3 10334 - yargs-parser: 21.1.1 10335 - 10336 10419 ora@8.2.0: 10337 10420 dependencies: 10338 10421 chalk: 5.6.2 ··· 10524 10607 error-ex: 1.3.4 10525 10608 json-parse-even-better-errors: 2.3.1 10526 10609 lines-and-columns: 1.2.4 10527 - 10528 - parse-json@8.3.0: 10529 - dependencies: 10530 - '@babel/code-frame': 7.29.0 10531 - index-to-position: 1.2.0 10532 - type-fest: 4.41.0 10533 10610 10534 10611 parse-ms@4.0.0: {} 10535 10612 ··· 10589 10666 exsolve: 1.0.8 10590 10667 pathe: 2.0.3 10591 10668 10592 - pluralize@8.0.0: {} 10593 - 10594 10669 pngjs@7.0.0: {} 10595 10670 10596 10671 postcss-selector-parser@7.1.1: ··· 10662 10737 rc9@2.1.2: 10663 10738 dependencies: 10664 10739 defu: 6.1.4 10740 + destr: 2.0.5 10741 + 10742 + rc9@3.0.1: 10743 + dependencies: 10744 + defu: 6.1.7 10665 10745 destr: 2.0.5 10666 10746 10667 10747 react-dom@19.2.4(react@19.2.4): ··· 10749 10829 10750 10830 resolve-from@4.0.0: {} 10751 10831 10752 - resolve-pkg-maps@1.0.0: 10753 - optional: true 10832 + resolve-pkg-maps@1.0.0: {} 10754 10833 10755 10834 restore-cursor@5.1.0: 10756 10835 dependencies: ··· 10826 10905 10827 10906 router@2.2.0: 10828 10907 dependencies: 10829 - debug: 4.4.3(supports-color@10.2.2) 10908 + debug: 4.4.3 10830 10909 depd: 2.0.0 10831 10910 is-promise: 4.0.0 10832 10911 parseurl: 1.3.3 ··· 10858 10937 10859 10938 send@1.2.1: 10860 10939 dependencies: 10861 - debug: 4.4.3(supports-color@10.2.2) 10940 + debug: 4.4.3 10862 10941 encodeurl: 2.0.0 10863 10942 escape-html: 1.0.3 10864 10943 etag: 1.8.1 ··· 10909 10988 fast-glob: 3.3.3 10910 10989 fs-extra: 11.3.4 10911 10990 fuzzysort: 3.1.0 10912 - https-proxy-agent: 7.0.6(supports-color@10.2.2) 10991 + https-proxy-agent: 7.0.6 10913 10992 kleur: 4.1.5 10914 10993 msw: 2.12.10(@types/node@24.12.0)(typescript@5.9.3) 10915 10994 node-fetch: 3.3.2 ··· 11025 11104 11026 11105 smol-toml@1.6.0: {} 11027 11106 11028 - solid-devtools@0.34.5(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(solid-js@1.9.11): 11107 + solid-devtools@0.34.5(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(solid-js@1.9.11): 11029 11108 dependencies: 11030 11109 '@babel/core': 7.29.0 11031 11110 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) ··· 11034 11113 '@solid-devtools/shared': 0.20.0(solid-js@1.9.11) 11035 11114 solid-js: 1.9.11 11036 11115 optionalDependencies: 11037 - vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 11116 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 11038 11117 transitivePeerDependencies: 11039 11118 - supports-color 11040 11119 ··· 11203 11282 11204 11283 tw-animate-css@1.4.0: {} 11205 11284 11206 - type-fest@4.41.0: {} 11207 - 11208 11285 type-fest@5.4.4: 11209 11286 dependencies: 11210 11287 tagged-tag: 1.0.0 ··· 11273 11350 11274 11351 universalify@2.0.1: {} 11275 11352 11276 - unocss@66.6.6(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)): 11353 + unocss@66.6.6(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3)): 11277 11354 dependencies: 11278 11355 '@unocss/cli': 66.6.6 11279 11356 '@unocss/core': 66.6.6 ··· 11291 11368 '@unocss/transformer-compile-class': 66.6.6 11292 11369 '@unocss/transformer-directives': 66.6.6 11293 11370 '@unocss/transformer-variant-group': 66.6.6 11294 - '@unocss/vite': 66.6.6(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2)) 11371 + '@unocss/vite': 66.6.6(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3)) 11295 11372 transitivePeerDependencies: 11296 11373 - vite 11297 11374 ··· 11323 11400 escalade: 3.2.0 11324 11401 picocolors: 1.1.1 11325 11402 11326 - uri-js-replace@1.0.1: {} 11327 - 11328 11403 use-sync-external-store@1.6.0(react@19.2.4): 11329 11404 dependencies: 11330 11405 react: 19.2.4 ··· 11345 11420 '@types/unist': 3.0.3 11346 11421 vfile-message: 4.0.3 11347 11422 11348 - vite-plugin-solid@2.11.12(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(solid-js@1.9.11): 11423 + vite-plugin-solid@2.11.12(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(solid-js@1.9.11): 11349 11424 dependencies: 11350 11425 '@babel/core': 7.29.0 11351 11426 '@types/babel__core': 7.20.5 ··· 11353 11428 merge-anything: 5.1.7 11354 11429 solid-js: 1.9.11 11355 11430 solid-refresh: 0.6.3(solid-js@1.9.11) 11356 - vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 11357 - vitefu: 1.1.3(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)) 11431 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 11432 + vitefu: 1.1.3(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)) 11358 11433 transitivePeerDependencies: 11359 11434 - supports-color 11360 11435 11361 - vite-plus@0.1.11(@types/node@24.12.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): 11436 + vite-plus@0.1.11(@types/node@24.12.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3): 11362 11437 dependencies: 11363 11438 '@oxc-project/types': 0.115.0 11364 - '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 11365 - '@voidzero-dev/vite-plus-test': 0.1.11(@types/node@24.12.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 11439 + '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 11440 + '@voidzero-dev/vite-plus-test': 0.1.11(@types/node@24.12.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 11366 11441 cac: 6.7.14 11367 11442 cross-spawn: 7.0.6 11368 11443 oxfmt: 0.40.0 ··· 11404 11479 - vite 11405 11480 - yaml 11406 11481 11407 - vite-plus@0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2): 11482 + vite-plus@0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3): 11408 11483 dependencies: 11409 11484 '@oxc-project/types': 0.115.0 11410 - '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 11411 - '@voidzero-dev/vite-plus-test': 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) 11485 + '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 11486 + '@voidzero-dev/vite-plus-test': 0.1.11(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) 11412 11487 cac: 6.7.14 11413 11488 cross-spawn: 7.0.6 11414 11489 oxfmt: 0.40.0 ··· 11450 11525 - vite 11451 11526 - yaml 11452 11527 11453 - vite-plus@0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2): 11528 + vite-plus@0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3): 11454 11529 dependencies: 11455 11530 '@oxc-project/types': 0.115.0 11456 - '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 11457 - '@voidzero-dev/vite-plus-test': 0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) 11531 + '@voidzero-dev/vite-plus-core': 0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 11532 + '@voidzero-dev/vite-plus-test': 0.1.11(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) 11458 11533 cac: 6.7.14 11459 11534 cross-spawn: 7.0.6 11460 11535 oxfmt: 0.40.0 ··· 11496 11571 - vite 11497 11572 - yaml 11498 11573 11499 - vite-plus@0.1.16(@types/node@25.1.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): 11574 + vite-plus@0.1.16(@types/node@25.1.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3): 11575 + dependencies: 11576 + '@oxc-project/types': 0.123.0 11577 + '@voidzero-dev/vite-plus-core': 0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 11578 + '@voidzero-dev/vite-plus-test': 0.1.16(@types/node@25.1.0)(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 11579 + oxfmt: 0.43.0 11580 + oxlint: 1.58.0(oxlint-tsgolint@0.20.0) 11581 + oxlint-tsgolint: 0.20.0 11582 + optionalDependencies: 11583 + '@voidzero-dev/vite-plus-darwin-arm64': 0.1.16 11584 + '@voidzero-dev/vite-plus-darwin-x64': 0.1.16 11585 + '@voidzero-dev/vite-plus-linux-arm64-gnu': 0.1.16 11586 + '@voidzero-dev/vite-plus-linux-arm64-musl': 0.1.16 11587 + '@voidzero-dev/vite-plus-linux-x64-gnu': 0.1.16 11588 + '@voidzero-dev/vite-plus-linux-x64-musl': 0.1.16 11589 + '@voidzero-dev/vite-plus-win32-arm64-msvc': 0.1.16 11590 + '@voidzero-dev/vite-plus-win32-x64-msvc': 0.1.16 11591 + transitivePeerDependencies: 11592 + - '@arethetypeswrong/core' 11593 + - '@edge-runtime/vm' 11594 + - '@opentelemetry/api' 11595 + - '@tsdown/css' 11596 + - '@tsdown/exe' 11597 + - '@types/node' 11598 + - '@vitejs/devtools' 11599 + - '@vitest/ui' 11600 + - bufferutil 11601 + - esbuild 11602 + - happy-dom 11603 + - jiti 11604 + - jsdom 11605 + - less 11606 + - publint 11607 + - sass 11608 + - sass-embedded 11609 + - stylus 11610 + - sugarss 11611 + - terser 11612 + - tsx 11613 + - typescript 11614 + - unplugin-unused 11615 + - utf-8-validate 11616 + - vite 11617 + - yaml 11618 + 11619 + vite-plus@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3): 11500 11620 dependencies: 11501 11621 '@oxc-project/types': 0.123.0 11502 - '@voidzero-dev/vite-plus-core': 0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) 11503 - '@voidzero-dev/vite-plus-test': 0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) 11622 + '@voidzero-dev/vite-plus-core': 0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) 11623 + '@voidzero-dev/vite-plus-test': 0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3))(yaml@2.8.3) 11504 11624 oxfmt: 0.43.0 11505 11625 oxlint: 1.58.0(oxlint-tsgolint@0.20.0) 11506 11626 oxlint-tsgolint: 0.20.0 ··· 11541 11661 - vite 11542 11662 - yaml 11543 11663 11544 - vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): 11664 + vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3): 11545 11665 dependencies: 11546 11666 '@oxc-project/runtime': 0.115.0 11547 11667 lightningcss: 1.32.0 ··· 11556 11676 jiti: 2.6.1 11557 11677 sass: 1.97.3 11558 11678 tsx: 4.21.0 11559 - yaml: 2.8.2 11679 + yaml: 2.8.3 11560 11680 transitivePeerDependencies: 11561 11681 - '@emnapi/core' 11562 11682 - '@emnapi/runtime' 11563 11683 11564 - vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.2): 11684 + vite@8.0.0-beta.16(@emnapi/core@1.8.1)(@emnapi/runtime@1.8.1)(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(yaml@2.8.3): 11565 11685 dependencies: 11566 11686 '@oxc-project/runtime': 0.115.0 11567 11687 lightningcss: 1.32.0 ··· 11576 11696 jiti: 2.6.1 11577 11697 sass: 1.97.3 11578 11698 tsx: 4.21.0 11579 - yaml: 2.8.2 11699 + yaml: 2.8.3 11580 11700 transitivePeerDependencies: 11581 11701 - '@emnapi/core' 11582 11702 - '@emnapi/runtime' 11583 11703 11584 - vitefu@1.1.3(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)): 11704 + vitefu@1.1.3(@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)): 11585 11705 optionalDependencies: 11586 - vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 11706 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@25.1.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 11587 11707 11588 - vitepress@2.0.0-alpha.16(@types/node@24.12.0)(change-case@5.4.4)(jiti@2.6.1)(oxc-minify@0.116.0)(postcss@8.5.9)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): 11708 + vitepress@2.0.0-alpha.16(@types/node@24.12.0)(change-case@5.4.4)(jiti@2.6.1)(oxc-minify@0.116.0)(postcss@8.5.9)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3): 11589 11709 dependencies: 11590 11710 '@docsearch/css': 4.6.0 11591 11711 '@docsearch/js': 4.6.0 ··· 11595 11715 '@shikijs/transformers': 3.23.0 11596 11716 '@shikijs/types': 3.23.0 11597 11717 '@types/markdown-it': 14.1.2 11598 - '@vitejs/plugin-vue': 6.0.5(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3)) 11718 + '@vitejs/plugin-vue': 6.0.5(@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))(vue@3.5.30(typescript@5.9.3)) 11599 11719 '@vue/devtools-api': 8.1.0 11600 11720 '@vue/shared': 3.5.27 11601 11721 '@vueuse/core': 14.2.1(vue@3.5.30(typescript@5.9.3)) ··· 11604 11724 mark.js: 8.11.1 11605 11725 minisearch: 7.2.0 11606 11726 shiki: 3.23.0 11607 - vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)' 11727 + vite: '@voidzero-dev/vite-plus-core@0.1.16(@types/node@24.12.0)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.97.3)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)' 11608 11728 vue: 3.5.30(typescript@5.9.3) 11609 11729 optionalDependencies: 11610 11730 oxc-minify: 0.116.0 ··· 11724 11844 11725 11845 yallist@3.1.1: {} 11726 11846 11727 - yaml-ast-parser@0.0.43: {} 11728 - 11729 11847 yaml@2.8.2: {} 11848 + 11849 + yaml@2.8.3: {} 11730 11850 11731 11851 yargs-parser@21.1.1: {} 11732 11852
+3
pnpm-workspace.yaml
··· 5 5 6 6 catalog: 7 7 '@babel/core': 7.29.0 8 + '@hey-api/openapi-ts': 0.96.0 9 + '@hey-api/vite-plugin': 0.3.0 8 10 '@oxc-solid-js/vite': 0.1.0-alpha.15 9 11 '@rolldown/plugin-babel': 0.2.1 10 12 '@shikijs/core': 4.0.2 11 13 '@shikijs/engine-javascript': 4.0.2 12 14 '@shikijs/langs': 4.0.2 15 + '@tanstack/react-query': ^5.90.21 13 16 '@types/babel__core': 7.20.5 14 17 '@types/node': ^24 15 18 '@typescript/native-preview': ^7.0.0-dev.20260105.1