This commit is contained in:
commit
421043c9b5
67 changed files with 3455 additions and 0 deletions
32
types/config/auth.ts
Normal file
32
types/config/auth.ts
Normal file
|
@ -0,0 +1,32 @@
|
|||
type JWTConfig = {
|
||||
secret: string;
|
||||
expiration: string | number;
|
||||
issuer: string;
|
||||
algorithm: string;
|
||||
};
|
||||
|
||||
interface CookieOptions {
|
||||
secure?: boolean;
|
||||
httpOnly?: boolean;
|
||||
sameSite?: "Strict" | "Lax" | "None";
|
||||
path?: string;
|
||||
domain?: string;
|
||||
}
|
||||
|
||||
interface UserSession {
|
||||
id: string;
|
||||
username: string;
|
||||
email: string;
|
||||
isVerified: boolean;
|
||||
displayName: string | null;
|
||||
createdAt: string; // ISO date string
|
||||
updatedAt?: string; // ISO date string, optional
|
||||
iat?: number; // issued at (added by JWT libs)
|
||||
exp?: number; // expiration (added by JWT libs)
|
||||
}
|
||||
|
||||
interface SessionData extends UserSession {
|
||||
userAgent: string;
|
||||
}
|
||||
|
||||
export type { JWTConfig, CookieOptions, UserSession, SessionData };
|
25
types/config/database.ts
Normal file
25
types/config/database.ts
Normal file
|
@ -0,0 +1,25 @@
|
|||
type CassandraConfig = {
|
||||
host: string;
|
||||
port: number;
|
||||
keyspace: string;
|
||||
username: string;
|
||||
password: string;
|
||||
datacenter: string;
|
||||
contactPoints: string[];
|
||||
authEnabled: boolean;
|
||||
};
|
||||
|
||||
type SqlMigration = {
|
||||
id: string;
|
||||
name: string;
|
||||
upSql: string;
|
||||
downSql?: string | undefined;
|
||||
};
|
||||
|
||||
type ConnectionOptions = {
|
||||
withKeyspace?: boolean;
|
||||
timeout?: number;
|
||||
logging?: boolean;
|
||||
};
|
||||
|
||||
export type { CassandraConfig, SqlMigration, ConnectionOptions };
|
7
types/config/environment.ts
Normal file
7
types/config/environment.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
type Environment = {
|
||||
port: number;
|
||||
host: string;
|
||||
development: boolean;
|
||||
};
|
||||
|
||||
export type { Environment };
|
3
types/config/index.ts
Normal file
3
types/config/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
|||
export * from "./environment";
|
||||
export * from "./database";
|
||||
export * from "./auth";
|
3
types/index.ts
Normal file
3
types/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
|||
export * from "./server";
|
||||
export * from "./config";
|
||||
export * from "./lib";
|
1
types/lib/index.ts
Normal file
1
types/lib/index.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export * from "./validation";
|
13
types/lib/validation.ts
Normal file
13
types/lib/validation.ts
Normal file
|
@ -0,0 +1,13 @@
|
|||
type genericValidation = {
|
||||
length: { min: number; max: number };
|
||||
regex: RegExp;
|
||||
};
|
||||
|
||||
type validationResult = {
|
||||
valid: boolean;
|
||||
error?: string;
|
||||
username?: string;
|
||||
name?: string;
|
||||
};
|
||||
|
||||
export type { genericValidation, validationResult };
|
3
types/server/index.ts
Normal file
3
types/server/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
|||
export * from "./server";
|
||||
export * from "./routes";
|
||||
export * from "./requests";
|
1
types/server/requests/index.ts
Normal file
1
types/server/requests/index.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export * from "./user";
|
28
types/server/requests/user/base.ts
Normal file
28
types/server/requests/user/base.ts
Normal file
|
@ -0,0 +1,28 @@
|
|||
interface BaseResponse {
|
||||
code: number;
|
||||
success: boolean;
|
||||
error?: string;
|
||||
message?: string;
|
||||
}
|
||||
|
||||
interface UserResponse {
|
||||
id: string;
|
||||
username: string;
|
||||
email: string;
|
||||
isVerified: boolean;
|
||||
createdAt: string;
|
||||
displayName: string | null;
|
||||
}
|
||||
|
||||
interface UserRow {
|
||||
id: string;
|
||||
username: string;
|
||||
display_name: string | null;
|
||||
email: string;
|
||||
password: string;
|
||||
is_verified: boolean;
|
||||
created_at: Date;
|
||||
updated_at: Date;
|
||||
}
|
||||
|
||||
export type { BaseResponse, UserResponse, UserRow };
|
6
types/server/requests/user/index.ts
Normal file
6
types/server/requests/user/index.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
export * from "./base";
|
||||
export * from "./responses";
|
||||
export * from "./register";
|
||||
export * from "./login";
|
||||
|
||||
export * from "./update";
|
12
types/server/requests/user/login.ts
Normal file
12
types/server/requests/user/login.ts
Normal file
|
@ -0,0 +1,12 @@
|
|||
import type { BaseResponse, UserResponse } from "./base";
|
||||
|
||||
interface LoginRequest {
|
||||
identifier: string; // Username or email
|
||||
password: string;
|
||||
}
|
||||
|
||||
interface LoginResponse extends BaseResponse {
|
||||
user?: UserResponse;
|
||||
}
|
||||
|
||||
export type { LoginRequest, LoginResponse };
|
7
types/server/requests/user/password.ts
Normal file
7
types/server/requests/user/password.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
interface UpdatePasswordRequest {
|
||||
currentPassword: string;
|
||||
newPassword: string;
|
||||
logoutAllSessions?: boolean; // defaults to false
|
||||
}
|
||||
|
||||
export type { UpdatePasswordRequest };
|
14
types/server/requests/user/register.ts
Normal file
14
types/server/requests/user/register.ts
Normal file
|
@ -0,0 +1,14 @@
|
|||
import type { BaseResponse, UserResponse } from "./base";
|
||||
|
||||
interface RegisterRequest {
|
||||
username: string;
|
||||
displayName: string | null;
|
||||
email: string;
|
||||
password: string;
|
||||
}
|
||||
|
||||
interface RegisterResponse extends BaseResponse {
|
||||
user?: UserResponse;
|
||||
}
|
||||
|
||||
export type { RegisterRequest, RegisterResponse };
|
7
types/server/requests/user/responses.ts
Normal file
7
types/server/requests/user/responses.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
import type { BaseResponse, UserResponse } from "./base";
|
||||
|
||||
interface UserInfoResponse extends BaseResponse {
|
||||
user?: UserResponse;
|
||||
}
|
||||
|
||||
export type { UserInfoResponse };
|
2
types/server/requests/user/update/index.ts
Normal file
2
types/server/requests/user/update/index.ts
Normal file
|
@ -0,0 +1,2 @@
|
|||
export * from "./info";
|
||||
export * from "./password";
|
13
types/server/requests/user/update/info.ts
Normal file
13
types/server/requests/user/update/info.ts
Normal file
|
@ -0,0 +1,13 @@
|
|||
import type { BaseResponse, UserResponse } from "../base";
|
||||
|
||||
interface UpdateInfoRequest {
|
||||
username?: string;
|
||||
displayName?: string | null;
|
||||
email?: string;
|
||||
}
|
||||
|
||||
interface UpdateInfoResponse extends BaseResponse {
|
||||
user?: UserResponse;
|
||||
}
|
||||
|
||||
export type { UpdateInfoRequest, UpdateInfoResponse };
|
14
types/server/requests/user/update/password.ts
Normal file
14
types/server/requests/user/update/password.ts
Normal file
|
@ -0,0 +1,14 @@
|
|||
import type { BaseResponse, UserResponse } from "../base";
|
||||
|
||||
interface UpdatePasswordRequest {
|
||||
currentPassword: string;
|
||||
newPassword: string;
|
||||
logoutAllSessions?: boolean; // defaults to false
|
||||
}
|
||||
|
||||
interface UpdatePasswordResponse extends BaseResponse {
|
||||
user?: UserResponse;
|
||||
loggedOutSessions?: number;
|
||||
}
|
||||
|
||||
export type { UpdatePasswordRequest, UpdatePasswordResponse };
|
20
types/server/routes.ts
Normal file
20
types/server/routes.ts
Normal file
|
@ -0,0 +1,20 @@
|
|||
import type { Server } from "bun";
|
||||
import type { ExtendedRequest } from "./server";
|
||||
|
||||
type RouteDef = {
|
||||
method: string | string[];
|
||||
accepts: string | null | string[];
|
||||
returns: string;
|
||||
needsBody?: "multipart" | "json";
|
||||
};
|
||||
|
||||
type RouteModule = {
|
||||
handler: (
|
||||
request: Request | ExtendedRequest,
|
||||
requestBody: unknown,
|
||||
server: Server,
|
||||
) => Promise<Response> | Response;
|
||||
routeDef: RouteDef;
|
||||
};
|
||||
|
||||
export type { RouteDef, RouteModule };
|
10
types/server/server.ts
Normal file
10
types/server/server.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
type Query = Record<string, string>;
|
||||
type Params = Record<string, string>;
|
||||
|
||||
interface ExtendedRequest extends Request {
|
||||
startPerf: number;
|
||||
query: Query;
|
||||
params: Params;
|
||||
}
|
||||
|
||||
export type { ExtendedRequest, Query, Params };
|
Loading…
Add table
Add a link
Reference in a new issue