From 6b386382dd309eab6c8a2743c3681fe7bb21a550 Mon Sep 17 00:00:00 2001 From: Cole Rogers Date: Tue, 28 Mar 2023 12:31:26 -0400 Subject: [PATCH] fix optional data field (#1370) --- src/v2/core.ts | 2 +- src/v2/providers/firestore.ts | 76 +++++++++++++++++++---------------- 2 files changed, 42 insertions(+), 36 deletions(-) diff --git a/src/v2/core.ts b/src/v2/core.ts index b76dbdfc0..72c7e8e7d 100644 --- a/src/v2/core.ts +++ b/src/v2/core.ts @@ -89,7 +89,7 @@ export interface CloudEvent { time: string; /** Information about this specific event. */ - data?: T; + data: T; } /** diff --git a/src/v2/providers/firestore.ts b/src/v2/providers/firestore.ts index 1d90962d7..cb3700c1a 100644 --- a/src/v2/providers/firestore.ts +++ b/src/v2/providers/firestore.ts @@ -64,7 +64,7 @@ export interface RawFirestoreData { } /** @internal */ -export interface RawFirestoreEvent extends CloudEvent { +export interface RawFirestoreEvent extends CloudEvent { location: string; project: string; database: string; @@ -119,9 +119,9 @@ export interface DocumentOptions extends Event export function onDocumentWritten( document: Document, handler: ( - event: FirestoreEvent, ParamsOf> + event: FirestoreEvent | undefined, ParamsOf> ) => any | Promise -): CloudFunction, ParamsOf>>; +): CloudFunction | undefined, ParamsOf>>; /** * Event handler which triggers when a document is created, updated, or deleted in Firestore. @@ -132,9 +132,9 @@ export function onDocumentWritten( export function onDocumentWritten( opts: DocumentOptions, handler: ( - event: FirestoreEvent, ParamsOf> + event: FirestoreEvent | undefined, ParamsOf> ) => any | Promise -): CloudFunction, ParamsOf>>; +): CloudFunction | undefined, ParamsOf>>; /** * Event handler which triggers when a document is created, updated, or deleted in Firestore. @@ -145,9 +145,9 @@ export function onDocumentWritten( export function onDocumentWritten( documentOrOpts: Document | DocumentOptions, handler: ( - event: FirestoreEvent, ParamsOf> + event: FirestoreEvent | undefined, ParamsOf> ) => any | Promise -): CloudFunction, ParamsOf>> { +): CloudFunction | undefined, ParamsOf>> { return onChangedOperation(writtenEventType, documentOrOpts, handler); } @@ -159,8 +159,10 @@ export function onDocumentWritten( */ export function onDocumentCreated( document: Document, - handler: (event: FirestoreEvent>) => any | Promise -): CloudFunction>>; + handler: ( + event: FirestoreEvent> + ) => any | Promise +): CloudFunction>>; /** * Event handler which triggers when a document is created in Firestore. @@ -170,8 +172,10 @@ export function onDocumentCreated( */ export function onDocumentCreated( opts: DocumentOptions, - handler: (event: FirestoreEvent>) => any | Promise -): CloudFunction>>; + handler: ( + event: FirestoreEvent> + ) => any | Promise +): CloudFunction>>; /** * Event handler which triggers when a document is created in Firestore. @@ -181,8 +185,10 @@ export function onDocumentCreated( */ export function onDocumentCreated( documentOrOpts: Document | DocumentOptions, - handler: (event: FirestoreEvent>) => any | Promise -): CloudFunction>> { + handler: ( + event: FirestoreEvent> + ) => any | Promise +): CloudFunction>> { return onOperation(createdEventType, documentOrOpts, handler); } @@ -195,9 +201,9 @@ export function onDocumentCreated( export function onDocumentUpdated( document: Document, handler: ( - event: FirestoreEvent, ParamsOf> + event: FirestoreEvent | undefined, ParamsOf> ) => any | Promise -): CloudFunction, ParamsOf>>; +): CloudFunction | undefined, ParamsOf>>; /** * Event handler which triggers when a document is updated in Firestore. * @@ -207,9 +213,9 @@ export function onDocumentUpdated( export function onDocumentUpdated( opts: DocumentOptions, handler: ( - event: FirestoreEvent, ParamsOf> + event: FirestoreEvent | undefined, ParamsOf> ) => any | Promise -): CloudFunction, ParamsOf>>; +): CloudFunction | undefined, ParamsOf>>; /** * Event handler which triggers when a document is updated in Firestore. @@ -220,9 +226,9 @@ export function onDocumentUpdated( export function onDocumentUpdated( documentOrOpts: Document | DocumentOptions, handler: ( - event: FirestoreEvent, ParamsOf> + event: FirestoreEvent | undefined, ParamsOf> ) => any | Promise -): CloudFunction, ParamsOf>> { +): CloudFunction | undefined, ParamsOf>> { return onChangedOperation(updatedEventType, documentOrOpts, handler); } @@ -234,8 +240,10 @@ export function onDocumentUpdated( */ export function onDocumentDeleted( document: Document, - handler: (event: FirestoreEvent>) => any | Promise -): CloudFunction>>; + handler: ( + event: FirestoreEvent> + ) => any | Promise +): CloudFunction>>; /** * Event handler which triggers when a document is deleted in Firestore. @@ -245,8 +253,10 @@ export function onDocumentDeleted( */ export function onDocumentDeleted( opts: DocumentOptions, - handler: (event: FirestoreEvent>) => any | Promise -): CloudFunction>>; + handler: ( + event: FirestoreEvent> + ) => any | Promise +): CloudFunction>>; /** * Event handler which triggers when a document is deleted in Firestore. @@ -256,8 +266,10 @@ export function onDocumentDeleted( */ export function onDocumentDeleted( documentOrOpts: Document | DocumentOptions, - handler: (event: FirestoreEvent>) => any | Promise -): CloudFunction>> { + handler: ( + event: FirestoreEvent> + ) => any | Promise +): CloudFunction>> { return onOperation(deletedEventType, documentOrOpts, handler); } @@ -345,20 +357,17 @@ export function makeFirestoreEvent( eventType: string, event: RawFirestoreEvent, params: Params -): FirestoreEvent { +): FirestoreEvent { const data = event.data ? eventType === createdEventType ? createSnapshot(event) : createBeforeSnapshot(event) : undefined; - const firestoreEvent: FirestoreEvent = { + const firestoreEvent: FirestoreEvent = { ...event, params, data, }; - if (firestoreEvent.data === undefined) { - delete (firestoreEvent as any).data; - } delete (firestoreEvent as any).datacontenttype; delete (firestoreEvent as any).dataschema; return firestoreEvent; @@ -368,18 +377,15 @@ export function makeFirestoreEvent( export function makeChangedFirestoreEvent( event: RawFirestoreEvent, params: Params -): FirestoreEvent, Params> { +): FirestoreEvent | undefined, Params> { const data = event.data ? Change.fromObjects(createBeforeSnapshot(event), createSnapshot(event)) : undefined; - const firestoreEvent: FirestoreEvent, Params> = { + const firestoreEvent: FirestoreEvent | undefined, Params> = { ...event, params, data, }; - if (firestoreEvent.data === undefined) { - delete (firestoreEvent as any).data; - } delete (firestoreEvent as any).datacontenttype; delete (firestoreEvent as any).dataschema; return firestoreEvent;