File size: 762 Bytes
4e23b01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import { z } from 'zod';
export const envelopeSchema = <T extends z.ZodTypeAny>(data: T) =>
z.object({
code: z.number().int(),
msg: z.string(),
data: data.nullable(),
request_id: z.string(),
details: z.unknown().optional(),
stack: z.string().optional(),
});
export interface Envelope<T> {
code: number;
msg: string;
data: T | null;
request_id: string;
details?: unknown;
stack?: string;
}
export function okEnvelope<T>(data: T, requestId: string): Envelope<T> {
return { code: 0, msg: 'success', data, request_id: requestId };
}
export function errEnvelope(
code: number,
msg: string,
requestId: string,
stack?: string,
): Envelope<null> {
return { code, msg, data: null, request_id: requestId, stack };
}
|