UNPKG

torotask

Version:

Task queue processing in NodeJS based on BullMQ and Redis

43 lines 2.01 kB
import type { Job } from 'bullmq'; export type ExtractDataType<DataTypeOrJob, Default> = DataTypeOrJob extends Job<infer D, any, any> ? D : Default; export type ExtractResultType<DataTypeOrJob, Default> = DataTypeOrJob extends Job<any, infer R, any> ? R : Default; export type ExtractNameType<DataTypeOrJob, Default extends string> = DataTypeOrJob extends Job<any, any, infer N> ? N : Default; export type IsStrictlyUnknown<T> = [T] extends [unknown] ? unknown extends T ? keyof T extends never ? true : false : false : false; /** * Returns generic as either itself or an array of itself. */ export type SingleOrArray<T> = T | T[]; export type UnpackList<Item> = Item extends any[] ? Item[number] : Item; /** * With type `T`, return it as an array even if not already an array. */ export type AsArray<T> = T extends any[] ? T : [T]; /** * Tests and fallbacks */ export type NeverToUnknown<T> = IfNever<T, unknown>; export type IfNever<T, Y, N = T> = [T] extends [never] ? Y : N; export type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N; export type IsAny<T> = IfAny<T, true, never>; export type IsDefault<T, D> = T extends D ? (D extends T ? true : false) : false; export type IsUnknown<T> = unknown extends T ? (T extends unknown ? true : false) : false; export type IsNullable<T, Y = true, N = never> = T | null extends T ? Y : N; export type IsDateTime<T, Y, N> = T extends 'datetime' ? Y : N; export type IsNumber<T, Y, N> = T extends number ? Y : N; export type IsString<T, Y, N> = T extends string ? Y : N; /** * Reduces a complex object type to make it readable in IDEs. */ export type Prettify<T> = { [K in keyof T]: T[K]; } & unknown; /** * Enforces that T has no properties beyond those in Expected. * Use this in generic constraints to get compile-time errors for excess properties. * * Usage: `<T extends NoExcessProperties<T, Expected>>` */ export type NoExcessProperties<T, Expected> = T & { [K in Exclude<keyof T, keyof Expected>]: never; }; //# sourceMappingURL=utils.d.ts.map