Skip to content

Instantly share code, notes, and snippets.

// new Date(Date.now() - Duration({ minutes: 5 }).toMilliseconds())
// redis.set('key', Duration({ hours: 6 }).toMinutes('round'), 'value')
type Options = { days?: number; minutes?: number; hours?: number; seconds?: number; milliseconds?: number };
const multiplies: Record<keyof Options, number> = {
days: 24 * 60 * 60_000,
hours: 60 * 60_000,
minutes: 60_000,
seconds: 1_000,
@papalardo
papalardo / either.ts
Created January 14, 2025 16:47
Trabalhar sem usos de try/catch e melhor legibilidade do fluxo
export type Either<A, B> = { result: A, error: undefined? } | { result: undefined, error: B };
export const either = async <R, L>(getter: () => Promise<R>): Promise<Either<R, L>> => {
try {
return { result: await getter() };
} catch (error) {
return { error };
}
};
export const blank = <T>(
value: T,
): value is Extract<T, null | undefined | '' | [] | Record<string, never>> => {
if (value === undefined || value === null) {
return true
}
if (typeof value === 'boolean') {
return value === false
}