@@ -92,7 +92,7 @@ function _makeParams(event: Event<any>, triggerResource: string): { [option: str
9292 }
9393
9494 return params ;
95- } ;
95+ }
9696
9797/** @internal */
9898export function makeCloudFunction < EventData > ( {
@@ -101,25 +101,27 @@ export function makeCloudFunction<EventData>({
101101 resource,
102102 dataConstructor = ( raw : Event < any > ) => raw . data ,
103103 handler,
104- before,
105- after,
104+ before = ( ) => { return ; } ,
105+ after = ( ) => { return ; } ,
106106} : MakeCloudFunctionArgs < EventData > ) : CloudFunction < EventData > {
107- let cloudFunction : any = ( event : Event < any > ) => {
108- return Promise . resolve ( event )
109- . then ( before )
110- . then ( ( ) => {
111- let typedEvent : Event < EventData > = _ . cloneDeep ( event ) ;
112- typedEvent . data = dataConstructor ( event ) ;
113- typedEvent . params = _makeParams ( event , resource ) || { } ;
114- return handler ( typedEvent ) ;
115- } ) . then ( result => {
116- if ( after ) { after ( event ) ; }
117- return result ;
118- } , err => {
119- if ( after ) { after ( event ) ; }
120- return Promise . reject ( err ) ;
121- } ) ;
107+ let cloudFunction : any = async ( event : Event < any > ) => {
108+ try {
109+ before ( event ) ;
110+
111+ let typedEvent : Event < EventData > = _ . cloneDeep ( event ) ;
112+ typedEvent . data = dataConstructor ( event ) ;
113+ typedEvent . params = _makeParams ( event , resource ) || { } ;
114+
115+ let promise = handler ( typedEvent ) ;
116+ if ( typeof promise === 'undefined' ) {
117+ console . warn ( 'Function returned undefined, expected Promise or value' ) ;
118+ }
119+ return await promise ;
120+ } finally {
121+ after ( event ) ;
122+ }
122123 } ;
124+
123125 cloudFunction . __trigger = {
124126 eventTrigger : {
125127 resource,
0 commit comments