Skip to content

Commit de9f56d

Browse files
authored
fix: Cloud trigger type errors for void returns and subclass constructors (#2904)
1 parent 6d953f7 commit de9f56d

File tree

3 files changed

+71
-42
lines changed

3 files changed

+71
-42
lines changed

src/CloudCode.ts

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
/* eslint-disable @typescript-eslint/no-invalid-void-type -- Cloud trigger handlers legitimately return void | T */
2+
13
import type ParseObject from './ParseObject';
24
import type ParseUser from './ParseUser';
35
import type ParseFile from './ParseFile';
46
import type ParseQuery from './ParseQuery';
57

8+
type ParseObjectConstructor<T extends ParseObject = ParseObject> = new (...args: any[]) => T;
9+
610
/**
711
* @typedef Parse.Cloud.FunctionRequest
812
* @property {string} installationId If set, the installationId triggering the request.
@@ -282,8 +286,8 @@ export declare function job(name: string, handler: (request: JobRequest) => any)
282286
* @param validator An optional function to validate the request
283287
*/
284288
export declare function beforeSave<T extends ParseObject = ParseObject>(
285-
className: string | (new () => T),
286-
handler: (request: BeforeSaveRequest<T>) => T | undefined | Promise<T | undefined>,
289+
className: string | ParseObjectConstructor<T>,
290+
handler: (request: BeforeSaveRequest<T>) => void | T | undefined | Promise<void | T | undefined>,
287291
validator?: ValidatorObject | ((request: BeforeSaveRequest<T>) => any)
288292
): void;
289293

@@ -310,8 +314,8 @@ export declare function beforeSave<T extends ParseObject = ParseObject>(
310314
* @param validator An optional function to validate the request
311315
*/
312316
export declare function afterSave<T extends ParseObject = ParseObject>(
313-
className: string | (new () => T),
314-
handler: (request: AfterSaveRequest<T>) => Promise<void> | undefined,
317+
className: string | ParseObjectConstructor<T>,
318+
handler: (request: AfterSaveRequest<T>) => void | Promise<void> | undefined,
315319
validator?: ValidatorObject | ((request: AfterSaveRequest<T>) => any)
316320
): void;
317321

@@ -338,8 +342,8 @@ export declare function afterSave<T extends ParseObject = ParseObject>(
338342
* @param validator An optional function to validate the request
339343
*/
340344
export declare function beforeDelete<T extends ParseObject = ParseObject>(
341-
className: string | (new () => T),
342-
handler: (request: BeforeDeleteRequest<T>) => Promise<void> | undefined,
345+
className: string | ParseObjectConstructor<T>,
346+
handler: (request: BeforeDeleteRequest<T>) => void | Promise<void> | undefined,
343347
validator?: ValidatorObject | ((request: BeforeDeleteRequest<T>) => any)
344348
): void;
345349

@@ -366,8 +370,8 @@ export declare function beforeDelete<T extends ParseObject = ParseObject>(
366370
* @param validator An optional function to validate the request
367371
*/
368372
export declare function afterDelete<T extends ParseObject = ParseObject>(
369-
className: string | (new () => T),
370-
handler: (request: AfterDeleteRequest<T>) => Promise<void> | undefined,
373+
className: string | ParseObjectConstructor<T>,
374+
handler: (request: AfterDeleteRequest<T>) => void | Promise<void> | undefined,
371375
validator?: ValidatorObject | ((request: AfterDeleteRequest<T>) => any)
372376
): void;
373377

@@ -381,8 +385,12 @@ export declare function afterDelete<T extends ParseObject = ParseObject>(
381385
* @param validator An optional function to validate the request
382386
*/
383387
export declare function beforeFind<T extends ParseObject = ParseObject>(
384-
className: string | (new () => T),
385-
handler: (request: BeforeFindRequest<T>) => ParseQuery<T> | undefined | Promise<ParseQuery<T> | undefined>,
388+
className: string | ParseObjectConstructor<T>,
389+
handler: (request: BeforeFindRequest<T>) =>
390+
| void
391+
| ParseQuery<T>
392+
| undefined
393+
| Promise<void | ParseQuery<T> | undefined>,
386394
validator?: ValidatorObject | ((request: BeforeFindRequest<T>) => any)
387395
): void;
388396

@@ -396,8 +404,8 @@ export declare function beforeFind<T extends ParseObject = ParseObject>(
396404
* @param validator An optional function to validate the request
397405
*/
398406
export declare function afterFind<T extends ParseObject = ParseObject>(
399-
className: string | (new () => T),
400-
handler: (request: AfterFindRequest<T>) => T[] | undefined | Promise<T[] | undefined>,
407+
className: string | ParseObjectConstructor<T>,
408+
handler: (request: AfterFindRequest<T>) => void | T[] | undefined | Promise<void | T[] | undefined>,
401409
validator?: ValidatorObject | ((request: AfterFindRequest<T>) => any)
402410
): void;
403411

@@ -410,7 +418,7 @@ export declare function afterFind<T extends ParseObject = ParseObject>(
410418
* @param validator An optional function to validate the request
411419
*/
412420
export declare function beforeLogin(
413-
handler: (request: TriggerRequest<ParseUser>) => Promise<void> | undefined,
421+
handler: (request: TriggerRequest<ParseUser>) => void | Promise<void> | undefined,
414422
validator?: ValidatorObject | ((request: TriggerRequest<ParseUser>) => any)
415423
): void;
416424

@@ -422,7 +430,7 @@ export declare function beforeLogin(
422430
* @param handler The function to run after a login.
423431
*/
424432
export declare function afterLogin(
425-
handler: (request: TriggerRequest<ParseUser>) => Promise<void> | undefined
433+
handler: (request: TriggerRequest<ParseUser>) => void | Promise<void> | undefined
426434
): void;
427435

428436
/**
@@ -433,7 +441,7 @@ export declare function afterLogin(
433441
* @param handler The function to run after a logout.
434442
*/
435443
export declare function afterLogout(
436-
handler: (request: TriggerRequest) => Promise<void> | undefined
444+
handler: (request: TriggerRequest) => void | Promise<void> | undefined
437445
): void;
438446

439447
/**
@@ -445,7 +453,7 @@ export declare function afterLogout(
445453
* @param validator An optional function to validate the request
446454
*/
447455
export declare function beforePasswordResetRequest(
448-
handler: (request: TriggerRequest<ParseUser>) => Promise<void> | undefined,
456+
handler: (request: TriggerRequest<ParseUser>) => void | Promise<void> | undefined,
449457
validator?: ValidatorObject | ((request: TriggerRequest<ParseUser>) => any)
450458
): void;
451459

@@ -466,7 +474,11 @@ export declare function beforePasswordResetRequest(
466474
* @param handler The function to run before a file saves.
467475
*/
468476
export declare function beforeSaveFile(
469-
handler: (request: FileTriggerRequest) => ParseFile | undefined | Promise<ParseFile | undefined>
477+
handler: (request: FileTriggerRequest) =>
478+
| void
479+
| ParseFile
480+
| undefined
481+
| Promise<void | ParseFile | undefined>
470482
): void;
471483

472484
/**
@@ -486,7 +498,7 @@ export declare function beforeSaveFile(
486498
* @param handler The function to run after a file saves.
487499
*/
488500
export declare function afterSaveFile(
489-
handler: (request: FileTriggerRequest) => Promise<void> | undefined
501+
handler: (request: FileTriggerRequest) => void | Promise<void> | undefined
490502
): void;
491503

492504
/**
@@ -497,7 +509,7 @@ export declare function afterSaveFile(
497509
* @param handler The function to run before a file is deleted.
498510
*/
499511
export declare function beforeDeleteFile(
500-
handler: (request: FileTriggerRequest) => Promise<void> | undefined
512+
handler: (request: FileTriggerRequest) => void | Promise<void> | undefined
501513
): void;
502514

503515
/**
@@ -508,7 +520,7 @@ export declare function beforeDeleteFile(
508520
* @param handler The function to run after a file is deleted.
509521
*/
510522
export declare function afterDeleteFile(
511-
handler: (request: FileTriggerRequest) => Promise<void> | undefined
523+
handler: (request: FileTriggerRequest) => void | Promise<void> | undefined
512524
): void;
513525

514526
/**
@@ -528,7 +540,7 @@ export declare function afterDeleteFile(
528540
* @param validator An optional function to validate the request
529541
*/
530542
export declare function beforeConnect(
531-
handler: (request: ConnectTriggerRequest) => Promise<void> | undefined,
543+
handler: (request: ConnectTriggerRequest) => void | Promise<void> | undefined,
532544
validator?: ValidatorObject | ((request: ConnectTriggerRequest) => any)
533545
): void;
534546

@@ -552,8 +564,8 @@ export declare function beforeConnect(
552564
* @param validator An optional function to validate the request
553565
*/
554566
export declare function beforeSubscribe<T extends ParseObject = ParseObject>(
555-
className: string | (new () => T),
556-
handler: (request: TriggerRequest<T>) => Promise<void> | undefined,
567+
className: string | ParseObjectConstructor<T>,
568+
handler: (request: TriggerRequest<T>) => void | Promise<void> | undefined,
557569
validator?: ValidatorObject | ((request: TriggerRequest<T>) => any)
558570
): void;
559571

@@ -567,8 +579,8 @@ export declare function beforeSubscribe<T extends ParseObject = ParseObject>(
567579
* @param validator An optional function to validate the request
568580
*/
569581
export declare function afterLiveQueryEvent<T extends ParseObject = ParseObject>(
570-
className: string | (new () => T),
571-
handler: (request: LiveQueryEventTrigger<T>) => Promise<void> | undefined,
582+
className: string | ParseObjectConstructor<T>,
583+
handler: (request: LiveQueryEventTrigger<T>) => void | Promise<void> | undefined,
572584
validator?: ValidatorObject | ((request: LiveQueryEventTrigger<T>) => any)
573585
): void;
574586

0 commit comments

Comments
 (0)