diff --git a/packages/shared-types/index.ts b/packages/shared-types/index.ts new file mode 100644 index 0000000..a2818b5 --- /dev/null +++ b/packages/shared-types/index.ts @@ -0,0 +1,103 @@ +export type Visibility = 'public' | 'link'; + +export interface User { + id: string; + email: string; + name: string; + image: string | null; + emailVerified: boolean; + createdAt: Date; + updatedAt: Date; +} + +export interface Save { + id: number; + name: string; + type: string; + description: string; + tags: string[]; + visibility: Visibility; + shareUrl?: string; + userId: string; + url: string; + s3Key: string; + fileSize: number; + mimeType: string; + createdAt: Date; + updatedAt: Date; +} + +export interface SaveListItem extends Omit {} + +export interface ApiResponse { + success: boolean; + data?: T; + error?: string; +} + +export interface PaginatedResponse { + items: T[]; + total: number; + page: number; + limit: number; +} + +export interface SignUpResponse { + token: string | null; + user: User; +} + +export interface SignInResponse { + redirect: boolean; + token: string; + url: null; + user: User; +} + +export interface SignOutResponse { + success: boolean; +} + +export interface SaveResponse { + id: number; + name: string; + type: string; + url: string; + visibility: Visibility; + shareUrl?: string; + createdAt: string; +} + +export interface SaveDetailResponse extends Save {} + +export interface SaveUpdateResponse { + id: number; + name: string; + type: string; + description: string; + tags: string[]; + visibility: Visibility; + shareUrl?: string; + updatedAt: string; +} + +export interface DeleteSaveResponse { + success: boolean; + message: string; +} + +export interface CreateSaveFromUrlRequest { + url: string; + name?: string; + description?: string; + tags?: string[]; + visibility?: Visibility; +} + +export interface UpdateSaveRequest { + name?: string; + description?: string; + tags?: string[]; + visibility?: Visibility; +} + diff --git a/packages/shared-types/package.json b/packages/shared-types/package.json new file mode 100644 index 0000000..ace87ee --- /dev/null +++ b/packages/shared-types/package.json @@ -0,0 +1,9 @@ +{ + "name": "@p1ctos4ve/shared-types", + "version": "1.0.0", + "main": "./index.ts", + "types": "./index.ts", + "exports": { + ".": "./index.ts" + } +}