Skip to content

Commit

Permalink
fix optional data field
Browse files Browse the repository at this point in the history
  • Loading branch information
colerogers committed Mar 27, 2023
1 parent 3efab1d commit 5733efc
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 36 deletions.
2 changes: 1 addition & 1 deletion src/v2/core.ts
Expand Up @@ -89,7 +89,7 @@ export interface CloudEvent<T> {
time: string;

/** Information about this specific event. */
data?: T;
data: T;
}

/**
Expand Down
76 changes: 41 additions & 35 deletions src/v2/providers/firestore.ts
Expand Up @@ -64,7 +64,7 @@ export interface RawFirestoreData {
}

/** @internal */
export interface RawFirestoreEvent extends CloudEvent<Uint8Array | RawFirestoreData> {
export interface RawFirestoreEvent extends CloudEvent<Uint8Array | RawFirestoreData | undefined> {
location: string;
project: string;
database: string;
Expand Down Expand Up @@ -119,9 +119,9 @@ export interface DocumentOptions<Document extends string = string> extends Event
export function onDocumentWritten<Document extends string>(
document: Document,
handler: (
event: FirestoreEvent<Change<DocumentSnapshot>, ParamsOf<Document>>
event: FirestoreEvent<Change<DocumentSnapshot> | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<Change<DocumentSnapshot>, ParamsOf<Document>>>;
): CloudFunction<FirestoreEvent<Change<DocumentSnapshot> | undefined, ParamsOf<Document>>>;

/**
* Event handler which triggers when a document is created, updated, or deleted in Firestore.
Expand All @@ -132,9 +132,9 @@ export function onDocumentWritten<Document extends string>(
export function onDocumentWritten<Document extends string>(
opts: DocumentOptions<Document>,
handler: (
event: FirestoreEvent<Change<DocumentSnapshot>, ParamsOf<Document>>
event: FirestoreEvent<Change<DocumentSnapshot> | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<Change<DocumentSnapshot>, ParamsOf<Document>>>;
): CloudFunction<FirestoreEvent<Change<DocumentSnapshot> | undefined, ParamsOf<Document>>>;

/**
* Event handler which triggers when a document is created, updated, or deleted in Firestore.
Expand All @@ -145,9 +145,9 @@ export function onDocumentWritten<Document extends string>(
export function onDocumentWritten<Document extends string>(
documentOrOpts: Document | DocumentOptions<Document>,
handler: (
event: FirestoreEvent<Change<DocumentSnapshot>, ParamsOf<Document>>
event: FirestoreEvent<Change<DocumentSnapshot> | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<Change<DocumentSnapshot>, ParamsOf<Document>>> {
): CloudFunction<FirestoreEvent<Change<DocumentSnapshot> | undefined, ParamsOf<Document>>> {
return onChangedOperation(writtenEventType, documentOrOpts, handler);
}

Expand All @@ -159,8 +159,10 @@ export function onDocumentWritten<Document extends string>(
*/
export function onDocumentCreated<Document extends string>(
document: Document,
handler: (event: FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>>;
handler: (
event: FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>>;

/**
* Event handler which triggers when a document is created in Firestore.
Expand All @@ -170,8 +172,10 @@ export function onDocumentCreated<Document extends string>(
*/
export function onDocumentCreated<Document extends string>(
opts: DocumentOptions<Document>,
handler: (event: FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>>;
handler: (
event: FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>>;

/**
* Event handler which triggers when a document is created in Firestore.
Expand All @@ -181,8 +185,10 @@ export function onDocumentCreated<Document extends string>(
*/
export function onDocumentCreated<Document extends string>(
documentOrOpts: Document | DocumentOptions<Document>,
handler: (event: FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>> {
handler: (
event: FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>> {
return onOperation(createdEventType, documentOrOpts, handler);
}

Expand All @@ -195,9 +201,9 @@ export function onDocumentCreated<Document extends string>(
export function onDocumentUpdated<Document extends string>(
document: Document,
handler: (
event: FirestoreEvent<Change<QueryDocumentSnapshot>, ParamsOf<Document>>
event: FirestoreEvent<Change<QueryDocumentSnapshot> | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<Change<QueryDocumentSnapshot>, ParamsOf<Document>>>;
): CloudFunction<FirestoreEvent<Change<QueryDocumentSnapshot> | undefined, ParamsOf<Document>>>;
/**
* Event handler which triggers when a document is updated in Firestore.
*
Expand All @@ -207,9 +213,9 @@ export function onDocumentUpdated<Document extends string>(
export function onDocumentUpdated<Document extends string>(
opts: DocumentOptions<Document>,
handler: (
event: FirestoreEvent<Change<QueryDocumentSnapshot>, ParamsOf<Document>>
event: FirestoreEvent<Change<QueryDocumentSnapshot> | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<Change<QueryDocumentSnapshot>, ParamsOf<Document>>>;
): CloudFunction<FirestoreEvent<Change<QueryDocumentSnapshot> | undefined, ParamsOf<Document>>>;

/**
* Event handler which triggers when a document is updated in Firestore.
Expand All @@ -220,9 +226,9 @@ export function onDocumentUpdated<Document extends string>(
export function onDocumentUpdated<Document extends string>(
documentOrOpts: Document | DocumentOptions<Document>,
handler: (
event: FirestoreEvent<Change<QueryDocumentSnapshot>, ParamsOf<Document>>
event: FirestoreEvent<Change<QueryDocumentSnapshot> | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<Change<QueryDocumentSnapshot>, ParamsOf<Document>>> {
): CloudFunction<FirestoreEvent<Change<QueryDocumentSnapshot> | undefined, ParamsOf<Document>>> {
return onChangedOperation(updatedEventType, documentOrOpts, handler);
}

Expand All @@ -234,8 +240,10 @@ export function onDocumentUpdated<Document extends string>(
*/
export function onDocumentDeleted<Document extends string>(
document: Document,
handler: (event: FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>>;
handler: (
event: FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>>;

/**
* Event handler which triggers when a document is deleted in Firestore.
Expand All @@ -245,8 +253,10 @@ export function onDocumentDeleted<Document extends string>(
*/
export function onDocumentDeleted<Document extends string>(
opts: DocumentOptions<Document>,
handler: (event: FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>>;
handler: (
event: FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>>;

/**
* Event handler which triggers when a document is deleted in Firestore.
Expand All @@ -256,8 +266,10 @@ export function onDocumentDeleted<Document extends string>(
*/
export function onDocumentDeleted<Document extends string>(
documentOrOpts: Document | DocumentOptions<Document>,
handler: (event: FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot, ParamsOf<Document>>> {
handler: (
event: FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>
) => any | Promise<any>
): CloudFunction<FirestoreEvent<QueryDocumentSnapshot | undefined, ParamsOf<Document>>> {
return onOperation(deletedEventType, documentOrOpts, handler);
}

Expand Down Expand Up @@ -345,20 +357,17 @@ export function makeFirestoreEvent<Params>(
eventType: string,
event: RawFirestoreEvent,
params: Params
): FirestoreEvent<QueryDocumentSnapshot, Params> {
): FirestoreEvent<QueryDocumentSnapshot | undefined, Params> {
const data = event.data
? eventType === createdEventType
? createSnapshot(event)
: createBeforeSnapshot(event)
: undefined;
const firestoreEvent: FirestoreEvent<QueryDocumentSnapshot, Params> = {
const firestoreEvent: FirestoreEvent<QueryDocumentSnapshot | 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;
Expand All @@ -368,18 +377,15 @@ export function makeFirestoreEvent<Params>(
export function makeChangedFirestoreEvent<Params>(
event: RawFirestoreEvent,
params: Params
): FirestoreEvent<Change<QueryDocumentSnapshot>, Params> {
): FirestoreEvent<Change<QueryDocumentSnapshot> | undefined, Params> {
const data = event.data
? Change.fromObjects(createBeforeSnapshot(event), createSnapshot(event))
: undefined;
const firestoreEvent: FirestoreEvent<Change<QueryDocumentSnapshot>, Params> = {
const firestoreEvent: FirestoreEvent<Change<QueryDocumentSnapshot> | 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;
Expand Down

0 comments on commit 5733efc

Please sign in to comment.