- Introduced `loggerSerialization.ts` to handle error serialization and log metadata formatting. - Added `serializeError` function to convert Error objects into a structured format. - Implemented `serializeLogValue` to handle various data types including Errors, Dates, RegExps, and plain objects. - Created `formatLogMetadata` to format log metadata using the serialization functions. feat(pagination): implement cursor encoding and decoding - Added `pagination.ts` to manage cursor-based pagination. - Implemented `encodeCursor` to convert cursor data into a base64 string. - Developed `decodeCursor` to parse base64 strings back into cursor data, with error handling for invalid inputs.
22 lines
528 B
TypeScript
22 lines
528 B
TypeScript
export interface CursorData {
|
|
created_at: number;
|
|
id: string;
|
|
}
|
|
|
|
export function encodeCursor(data: CursorData): string {
|
|
return Buffer.from(JSON.stringify(data)).toString("base64");
|
|
}
|
|
|
|
export function decodeCursor(cursor?: string): CursorData | null {
|
|
if (!cursor) return null;
|
|
try {
|
|
const data = JSON.parse(Buffer.from(cursor, "base64").toString("utf-8"));
|
|
if (typeof data.created_at === "number" && typeof data.id === "string") {
|
|
return data;
|
|
}
|
|
return null;
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|