-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
I have a Node.js Prisma project that uses TypeScript. When I updated @mgcrea/prisma-queue from 1.12.0 to 1.12.1, I got the following TS error:
Could not find a declaration file for module '@mgcrea/prisma-queue'. '/Users/****/****/node_modules/.pnpm/@m
[email protected]_@[email protected]/node_modules/@mgcrea/prisma-queue/dist/index.cjs' implicitly has an
'any' type.
To resolve this, I had to create my own mgcrea-prisma-queue.d.ts file, but it's not ideal. Here it is, both for reference and as potential inspiration for patching?
declare module "@mgcrea/prisma-queue" {
import { PrismaClient } from "@prisma/client";
export interface QueueJob<TPayload = any, TResult = any> {
id: string;
name: string;
payload: TPayload;
result?: TResult;
status: "pending" | "running" | "completed" | "failed";
createdAt: Date;
updatedAt: Date;
startedAt?: Date;
completedAt?: Date;
failedAt?: Date;
error?: string;
attempts: number;
maxAttempts: number;
}
export interface QueueOptions {
name: string;
maxAttempts?: number;
pollInterval?: number;
jobInterval?: number;
backoff?: {
type: "exponential" | "fixed";
delay: number;
};
}
export interface ScheduleOptions {
key: string;
cron: string;
}
export interface EnqueueOptions {
key?: string;
runAt?: Date;
maxAttempts?: number;
}
export interface Queue<TPayload = any, TResult = any> {
name: string;
push(payload: TPayload): Promise<QueueJob<TPayload, TResult>>;
enqueue(
payload: TPayload,
options?: EnqueueOptions
): Promise<QueueJob<TPayload, TResult>>;
schedule(options: ScheduleOptions, payload: TPayload): Promise<void>;
start(prismaClient?: PrismaClient): Promise<void>;
process(
prismaClient: PrismaClient,
options?: { concurrency?: number }
): Promise<void>;
stop(): Promise<void>;
}
export function createQueue<TPayload = any, TResult = any>(
options: QueueOptions,
handler: (
job: QueueJob<TPayload, TResult>,
prismaClient: PrismaClient
) => Promise<TResult>
): Queue<TPayload, TResult>;
}
noxify and mckernanin
Metadata
Metadata
Assignees
Labels
No labels