refactor(data): establish API contract guardrails
CI / Quality and Bundle Budgets (push) Has been cancelled

This commit is contained in:
2026-07-16 20:09:30 +08:00
parent cc06ed034d
commit 19d36ed5bf
24 changed files with 498 additions and 230 deletions
@@ -3,26 +3,15 @@
*/
import {
FacebookIdentityRequestSchema,
type FacebookIdentityRequestInput,
type FacebookIdentityRequestData,
} from "@/data/schemas/auth/request/facebook_identity_request";
import {
createSchemaDto,
type SchemaDto,
} from "@/data/dto/schema_dto";
export class FacebookIdentityRequest {
private constructor(input: FacebookIdentityRequestInput) {
const data = FacebookIdentityRequestSchema.parse(input);
Object.assign(this, data);
Object.freeze(this);
}
static from(input: FacebookIdentityRequestInput): FacebookIdentityRequest {
return new FacebookIdentityRequest(input);
}
static fromJson(json: unknown): FacebookIdentityRequest {
return FacebookIdentityRequest.from(json as FacebookIdentityRequestInput);
}
toJson(): FacebookIdentityRequestData {
return FacebookIdentityRequestSchema.parse(this);
}
}
export type FacebookIdentityRequest = SchemaDto<
typeof FacebookIdentityRequestSchema
>;
export const FacebookIdentityRequest = createSchemaDto(
FacebookIdentityRequestSchema,
);
@@ -3,28 +3,15 @@
*/
import {
FacebookPsidLoginRequestSchema,
type FacebookPsidLoginRequestInput,
type FacebookPsidLoginRequestData,
} from "@/data/schemas/auth/request/facebook_psid_login_request";
import {
createSchemaDto,
type SchemaDto,
} from "@/data/dto/schema_dto";
export class FacebookPsidLoginRequest {
private constructor(input: FacebookPsidLoginRequestInput) {
const data = FacebookPsidLoginRequestSchema.parse(input);
Object.assign(this, data);
Object.freeze(this);
}
static from(input: FacebookPsidLoginRequestInput): FacebookPsidLoginRequest {
return new FacebookPsidLoginRequest(input);
}
static fromJson(json: unknown): FacebookPsidLoginRequest {
return FacebookPsidLoginRequest.from(
json as FacebookPsidLoginRequestInput,
);
}
toJson(): FacebookPsidLoginRequestData {
return FacebookPsidLoginRequestSchema.parse(this);
}
}
export type FacebookPsidLoginRequest = SchemaDto<
typeof FacebookPsidLoginRequestSchema
>;
export const FacebookPsidLoginRequest = createSchemaDto(
FacebookPsidLoginRequestSchema,
);
@@ -3,28 +3,17 @@
*/
import {
RefreshTokenRequestSchema,
type RefreshTokenRequestInput,
type RefreshTokenRequestData,
} from "@/data/schemas/auth/request/refresh_token_request";
import {
createSchemaDto,
type SchemaDto,
} from "@/data/dto/schema_dto";
export class RefreshTokenRequest {
declare readonly refreshToken: string;
private constructor(input: RefreshTokenRequestInput) {
const data = RefreshTokenRequestSchema.parse(input);
Object.assign(this, data);
Object.freeze(this);
}
static from(input: RefreshTokenRequestInput): RefreshTokenRequest {
return new RefreshTokenRequest(input);
}
static fromJson(json: unknown): RefreshTokenRequest {
return RefreshTokenRequest.from(json as RefreshTokenRequestInput);
}
toJson(): RefreshTokenRequestData {
return RefreshTokenRequestSchema.parse(this);
}
}
export type RefreshTokenRequest = SchemaDto<
typeof RefreshTokenRequestSchema,
"refreshToken"
>;
export const RefreshTokenRequest = createSchemaDto<
typeof RefreshTokenRequestSchema,
"refreshToken"
>(RefreshTokenRequestSchema);
@@ -3,28 +3,15 @@
*/
import {
FacebookIdentityResponseSchema,
type FacebookIdentityResponseInput,
type FacebookIdentityResponseData,
} from "@/data/schemas/auth/response/facebook_identity_response";
import {
createSchemaDto,
type SchemaDto,
} from "@/data/dto/schema_dto";
export class FacebookIdentityResponse {
private constructor(input: FacebookIdentityResponseInput) {
const data = FacebookIdentityResponseSchema.parse(input);
Object.assign(this, data);
Object.freeze(this);
}
static from(input: FacebookIdentityResponseInput): FacebookIdentityResponse {
return new FacebookIdentityResponse(input);
}
static fromJson(json: unknown): FacebookIdentityResponse {
return FacebookIdentityResponse.from(
json as FacebookIdentityResponseInput,
);
}
toJson(): FacebookIdentityResponseData {
return FacebookIdentityResponseSchema.parse(this);
}
}
export type FacebookIdentityResponse = SchemaDto<
typeof FacebookIdentityResponseSchema
>;
export const FacebookIdentityResponse = createSchemaDto(
FacebookIdentityResponseSchema,
);
+12 -23
View File
@@ -3,28 +3,17 @@
*/
import {
LogoutResponseSchema,
type LogoutResponseInput,
type LogoutResponseData,
} from "@/data/schemas/auth/response/logout_response";
import {
createSchemaDto,
type SchemaDto,
} from "@/data/dto/schema_dto";
export class LogoutResponse {
declare readonly success: boolean;
private constructor(input: LogoutResponseInput) {
const data = LogoutResponseSchema.parse(input);
Object.assign(this, data);
Object.freeze(this);
}
static from(input: LogoutResponseInput): LogoutResponse {
return new LogoutResponse(input);
}
static fromJson(json: unknown): LogoutResponse {
return LogoutResponse.from(json as LogoutResponseInput);
}
toJson(): LogoutResponseData {
return LogoutResponseSchema.parse(this);
}
}
export type LogoutResponse = SchemaDto<
typeof LogoutResponseSchema,
"success"
>;
export const LogoutResponse = createSchemaDto<
typeof LogoutResponseSchema,
"success"
>(LogoutResponseSchema);