diff --git a/package-lock.json b/package-lock.json index 44be0c3..d4c80dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aws-lambda-stream", - "version": "1.1.19", + "version": "1.1.20", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aws-lambda-stream", - "version": "1.1.19", + "version": "1.1.20", "license": "MIT", "dependencies": { "object-sizeof": "^2.6.0" diff --git a/src/flavors/update.js b/src/flavors/update.js index 3464d50..db34fe0 100644 --- a/src/flavors/update.js +++ b/src/flavors/update.js @@ -12,12 +12,13 @@ import { updateDynamoDB, } from '../sinks/dynamodb'; -import { filterOnEventType, filterOnContent } from '../filters'; +import { filterOnEventType, filterOnContent, outLatched } from '../filters'; import { normalize } from './correlate'; export const update = (rule) => (s) => s // eslint-disable-line import/prefer-default-export // reacting to collected events vs change events + .filter(outLatched) .map((uow) => (uow.record.eventName === 'INSERT' && uow.record.dynamodb.Keys.sk.S === 'EVENT' ? /* istanbul ignore next */ normalize(uow) : uow)) .filter(onEventType(rule)) diff --git a/test/unit/flavors/update.test.js b/test/unit/flavors/update.test.js index b88c31b..c7a93bd 100644 --- a/test/unit/flavors/update.test.js +++ b/test/unit/flavors/update.test.js @@ -287,6 +287,40 @@ describe('flavors/update.js', () => { }) .done(done); }); + + it('should skip processing if latched', (done) => { + const events = toDynamodbRecords([ + { + timestamp: 1572832690, + keys: { + pk: '1', + sk: 'thing', + }, + newImage: { + pk: '1', + sk: 'thing', + discriminator: 'thing', + name: 'Thing One', + description: 'This is thing one', + otherThing: 'thing|2', + latched: true, + ttl: 1549053422, + timestamp: 1548967022000, + }, + }, + ]); + + initialize({ + ...initializeFrom(rules), + }, { ...defaultOptions, AES: false }) + .assemble(fromDynamodb(events), false) + .collect() + // .tap((collected) => console.log(JSON.stringify(collected, null, 2))) + .tap((collected) => { + expect(collected.length).to.equal(0); + }) + .done(done); + }); }); const toUpdateRequest = (uow) => ({