Handle the results of Cloud Functions like http status code.
npm install event-response





When you use Cloud Functions's Background Functions, have you ever wanted to record success / failure respond to the client side that it succeeded?
event-response is easy to understand like success status of HTTP and can record success / failure. It is also possible to handle it on the client side using the recorded status.
```
yarn install event-response
When Cloud Functions completes successfully, call setOK().
It is 200 in http.
`ts`
new EventResponse.Result(user, 'prefix').setOK()

When Cloud Functions fails on client side problems such as invalid parameters, call setBadRequest(). And you can set id, error.
It is 400 in http.
`ts`
new EventResponse.Result(user, 'prefix').setBadRequest('error_id', 'error reason')

If an error occurs on the server side, call setInternalError. And you can set id, error.
It is 500 in http.
`ts`
new EventResponse.Result(user, 'prefix').setInternalError('error_id', 'error reason')

This sample is written in TypeScript.
Initialize event-response in your index.ts.
`ts
import * as EventResponse from 'event-response'
import * as functions from 'firebase-functions'
EventResponse.initialize(functions.config().firebase)
`
You can set 3 pattens.
* OK
* BadRequest
* InternalError
`ts
exports.updateUser = functions.firestore.document('users/{userId}')
.onCreate(async event => {
if (!event.data.data().name) {
return new EventResponse.Result(event.data.ref, 'updateUser').setBadRequest('NameNotFound', 'User.name not found')
}
try {
await event.data.ref.update({name: 'new name'})
await new EventResponse.Result(event.data.ref, 'updateUser').setOK()
} catch (error) {
await new EventResponse.Result(event.data.ref, 'updateUser').setInternalError('NameUpdateFailed', error.toString())
return Promise.reject(error)
}
return undefined
})
`
The result can be got as follows.
`ts``
admin.firestore().doc('user/1000').get().then(s => {
const user = s.data())
const status = user.updateUserResult.status
const id = user.updateUserResult.id
const error = user.updateUserResult.error
}
TODO