diff --git a/src/logger/index.ts b/src/logger/index.ts index 13e77696d..deb7c1762 100644 --- a/src/logger/index.ts +++ b/src/logger/index.ts @@ -36,7 +36,7 @@ function removeCircular(obj: any, refs: any[] = []): any { return obj; } // If the object defines its own toJSON, prefer that. - if (obj['toJSON']) { + if (obj.toJSON) { return obj.toJSON(); } if (refs.includes(obj)) { diff --git a/src/v1/providers/firestore.ts b/src/v1/providers/firestore.ts index 58a6de925..5554f6e3b 100644 --- a/src/v1/providers/firestore.ts +++ b/src/v1/providers/firestore.ts @@ -22,7 +22,9 @@ import * as firebase from 'firebase-admin'; import * as _ from 'lodash'; + import { posix } from 'path'; +import * as logger from '../../logger'; import { apps } from '../apps'; import { Change, @@ -155,9 +157,15 @@ export function snapshotConstructor(event: Event): DocumentSnapshot { event.context.resource.name, 'value' ); - const timeString = + let timeString = _.get(event, 'data.value.readTime') ?? _.get(event, 'data.value.updateTime'); + + if (!timeString) { + logger.warn('Snapshot has no readTime. Using now()'); + timeString = new Date().toISOString(); + } + const readTime = dateToTimestampProto(timeString); return firestoreInstance.snapshot_(valueProto, readTime, 'json'); } diff --git a/src/v2/index.ts b/src/v2/index.ts index a41333a3d..c850c54dd 100644 --- a/src/v2/index.ts +++ b/src/v2/index.ts @@ -20,8 +20,8 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -import * as https from './providers/https'; import * as logger from '../logger'; +import * as https from './providers/https'; export { https, logger }; diff --git a/src/v2/options.ts b/src/v2/options.ts index d2382a8e7..e3c16ff84 100644 --- a/src/v2/options.ts +++ b/src/v2/options.ts @@ -24,9 +24,9 @@ import { durationFromSeconds, serviceAccountFromShorthand, } from '../common/encoding'; +import { convertIfPresent, copyIfPresent } from '../common/encoding'; import * as logger from '../logger'; import { TriggerAnnotation } from './base'; -import { copyIfPresent, convertIfPresent } from '../common/encoding'; /** * List of all regions supported by Cloud Functions v2