Initial commit
This commit is contained in:
243
app/types/pocketbase.types.ts
Normal file
243
app/types/pocketbase.types.ts
Normal file
@@ -0,0 +1,243 @@
|
||||
/**
|
||||
* This file was @generated using pocketbase-typegen
|
||||
*/
|
||||
|
||||
import type PocketBase from 'pocketbase'
|
||||
import type { RecordService } from 'pocketbase'
|
||||
|
||||
export enum Collections {
|
||||
Authorigins = "_authOrigins",
|
||||
Externalauths = "_externalAuths",
|
||||
Mfas = "_mfas",
|
||||
Otps = "_otps",
|
||||
Superusers = "_superusers",
|
||||
Counters = "counters",
|
||||
FcmTokens = "fcm_tokens",
|
||||
Notifications = "notifications",
|
||||
Users = "users",
|
||||
}
|
||||
|
||||
// Alias types for improved usability
|
||||
export type IsoDateString = string
|
||||
export type IsoAutoDateString = string & { readonly autodate: unique symbol }
|
||||
export type RecordIdString = string
|
||||
export type FileNameString = string & { readonly filename: unique symbol }
|
||||
export type HTMLString = string
|
||||
|
||||
type ExpandType<T> = unknown extends T
|
||||
? T extends unknown
|
||||
? { expand?: unknown }
|
||||
: { expand: T }
|
||||
: { expand: T }
|
||||
|
||||
// System fields
|
||||
export type BaseSystemFields<T = unknown> = {
|
||||
id: RecordIdString
|
||||
collectionId: string
|
||||
collectionName: Collections
|
||||
} & ExpandType<T>
|
||||
|
||||
export type AuthSystemFields<T = unknown> = {
|
||||
email: string
|
||||
emailVisibility: boolean
|
||||
username: string
|
||||
verified: boolean
|
||||
} & BaseSystemFields<T>
|
||||
|
||||
// Record types for each collection
|
||||
|
||||
export type AuthoriginsRecord = {
|
||||
collectionRef: string
|
||||
created: IsoAutoDateString
|
||||
fingerprint: string
|
||||
id: string
|
||||
recordRef: string
|
||||
updated: IsoAutoDateString
|
||||
}
|
||||
|
||||
export type ExternalauthsRecord = {
|
||||
collectionRef: string
|
||||
created: IsoAutoDateString
|
||||
id: string
|
||||
provider: string
|
||||
providerId: string
|
||||
recordRef: string
|
||||
updated: IsoAutoDateString
|
||||
}
|
||||
|
||||
export type MfasRecord = {
|
||||
collectionRef: string
|
||||
created: IsoAutoDateString
|
||||
id: string
|
||||
method: string
|
||||
recordRef: string
|
||||
updated: IsoAutoDateString
|
||||
}
|
||||
|
||||
export type OtpsRecord = {
|
||||
collectionRef: string
|
||||
created: IsoAutoDateString
|
||||
id: string
|
||||
password: string
|
||||
recordRef: string
|
||||
sentTo?: string
|
||||
updated: IsoAutoDateString
|
||||
}
|
||||
|
||||
export type SuperusersRecord = {
|
||||
created: IsoAutoDateString
|
||||
email: string
|
||||
emailVisibility?: boolean
|
||||
id: string
|
||||
password: string
|
||||
tokenKey: string
|
||||
updated: IsoAutoDateString
|
||||
verified?: boolean
|
||||
}
|
||||
|
||||
export type CountersRecord = {
|
||||
count?: number
|
||||
created: IsoAutoDateString
|
||||
id: string
|
||||
updated: IsoAutoDateString
|
||||
userId?: RecordIdString
|
||||
}
|
||||
|
||||
export type FcmTokensRecord = {
|
||||
created: IsoAutoDateString
|
||||
id: string
|
||||
token?: string
|
||||
updated: IsoAutoDateString
|
||||
userId?: RecordIdString
|
||||
}
|
||||
|
||||
export type NotificationsRecord = {
|
||||
body?: string
|
||||
created: IsoAutoDateString
|
||||
id: string
|
||||
isRead?: boolean
|
||||
title?: string
|
||||
updated: IsoAutoDateString
|
||||
userId?: RecordIdString
|
||||
}
|
||||
|
||||
export enum UsersLanguageOptions {
|
||||
"de" = "de",
|
||||
"en" = "en",
|
||||
}
|
||||
export type UsersRecord = {
|
||||
avatar?: FileNameString
|
||||
created: IsoAutoDateString
|
||||
email: string
|
||||
emailVisibility?: boolean
|
||||
id: string
|
||||
language?: UsersLanguageOptions
|
||||
name?: string
|
||||
password: string
|
||||
tokenKey: string
|
||||
updated: IsoAutoDateString
|
||||
verified?: boolean
|
||||
}
|
||||
|
||||
// Response types include system fields and match responses from the PocketBase API
|
||||
export type AuthoriginsResponse<Texpand = unknown> = Required<AuthoriginsRecord> & BaseSystemFields<Texpand>
|
||||
export type ExternalauthsResponse<Texpand = unknown> = Required<ExternalauthsRecord> & BaseSystemFields<Texpand>
|
||||
export type MfasResponse<Texpand = unknown> = Required<MfasRecord> & BaseSystemFields<Texpand>
|
||||
export type OtpsResponse<Texpand = unknown> = Required<OtpsRecord> & BaseSystemFields<Texpand>
|
||||
export type SuperusersResponse<Texpand = unknown> = Required<SuperusersRecord> & AuthSystemFields<Texpand>
|
||||
export type CountersResponse<Texpand = unknown> = Required<CountersRecord> & BaseSystemFields<Texpand>
|
||||
export type FcmTokensResponse<Texpand = unknown> = Required<FcmTokensRecord> & BaseSystemFields<Texpand>
|
||||
export type NotificationsResponse<Texpand = unknown> = Required<NotificationsRecord> & BaseSystemFields<Texpand>
|
||||
export type UsersResponse<Texpand = unknown> = Required<UsersRecord> & AuthSystemFields<Texpand>
|
||||
|
||||
// Types containing all Records and Responses, useful for creating typing helper functions
|
||||
|
||||
export type CollectionRecords = {
|
||||
_authOrigins: AuthoriginsRecord
|
||||
_externalAuths: ExternalauthsRecord
|
||||
_mfas: MfasRecord
|
||||
_otps: OtpsRecord
|
||||
_superusers: SuperusersRecord
|
||||
counters: CountersRecord
|
||||
fcm_tokens: FcmTokensRecord
|
||||
notifications: NotificationsRecord
|
||||
users: UsersRecord
|
||||
}
|
||||
|
||||
export type CollectionResponses = {
|
||||
_authOrigins: AuthoriginsResponse
|
||||
_externalAuths: ExternalauthsResponse
|
||||
_mfas: MfasResponse
|
||||
_otps: OtpsResponse
|
||||
_superusers: SuperusersResponse
|
||||
counters: CountersResponse
|
||||
fcm_tokens: FcmTokensResponse
|
||||
notifications: NotificationsResponse
|
||||
users: UsersResponse
|
||||
}
|
||||
|
||||
// Utility types for create/update operations
|
||||
|
||||
type ProcessCreateAndUpdateFields<T> = Omit<{
|
||||
// Omit AutoDate fields
|
||||
[K in keyof T as Extract<T[K], IsoAutoDateString> extends never ? K : never]:
|
||||
// Convert FileNameString to File
|
||||
T[K] extends infer U ?
|
||||
U extends (FileNameString | FileNameString[]) ?
|
||||
U extends any[] ? File[] : File
|
||||
: U
|
||||
: never
|
||||
}, 'id'>
|
||||
|
||||
// Create type for Auth collections
|
||||
export type CreateAuth<T> = {
|
||||
id?: RecordIdString
|
||||
email: string
|
||||
emailVisibility?: boolean
|
||||
password: string
|
||||
passwordConfirm: string
|
||||
verified?: boolean
|
||||
} & ProcessCreateAndUpdateFields<T>
|
||||
|
||||
// Create type for Base collections
|
||||
export type CreateBase<T> = {
|
||||
id?: RecordIdString
|
||||
} & ProcessCreateAndUpdateFields<T>
|
||||
|
||||
// Update type for Auth collections
|
||||
export type UpdateAuth<T> = Partial<
|
||||
Omit<ProcessCreateAndUpdateFields<T>, keyof AuthSystemFields>
|
||||
> & {
|
||||
email?: string
|
||||
emailVisibility?: boolean
|
||||
oldPassword?: string
|
||||
password?: string
|
||||
passwordConfirm?: string
|
||||
verified?: boolean
|
||||
}
|
||||
|
||||
// Update type for Base collections
|
||||
export type UpdateBase<T> = Partial<
|
||||
Omit<ProcessCreateAndUpdateFields<T>, keyof BaseSystemFields>
|
||||
>
|
||||
|
||||
// Get the correct create type for any collection
|
||||
export type Create<T extends keyof CollectionResponses> =
|
||||
CollectionResponses[T] extends AuthSystemFields
|
||||
? CreateAuth<CollectionRecords[T]>
|
||||
: CreateBase<CollectionRecords[T]>
|
||||
|
||||
// Get the correct update type for any collection
|
||||
export type Update<T extends keyof CollectionResponses> =
|
||||
CollectionResponses[T] extends AuthSystemFields
|
||||
? UpdateAuth<CollectionRecords[T]>
|
||||
: UpdateBase<CollectionRecords[T]>
|
||||
|
||||
// Type for usage with type asserted PocketBase instance
|
||||
// https://github.com/pocketbase/js-sdk#specify-typescript-definitions
|
||||
|
||||
export type TypedPocketBase = {
|
||||
collection<T extends keyof CollectionResponses>(
|
||||
idOrName: T
|
||||
): RecordService<CollectionResponses[T]>
|
||||
} & PocketBase
|
||||
Reference in New Issue
Block a user