From f3f08c70b2d7bd88c79a65e6cf3ec2090d32bb9a Mon Sep 17 00:00:00 2001 From: Cole Rogers Date: Wed, 23 Feb 2022 09:31:53 -0500 Subject: [PATCH] creating EventFilter object and updating all references --- package.json | 2 +- spec/runtime/loader.spec.ts | 7 +- spec/v1/cloud-functions.spec.ts | 36 +- spec/v1/providers/analytics.spec.ts | 9 +- spec/v1/providers/auth.spec.ts | 9 +- spec/v1/providers/database.spec.ts | 9 +- spec/v1/providers/firestore.spec.ts | 9 +- spec/v1/providers/pubsub.spec.ts | 9 +- spec/v1/providers/remoteConfig.spec.ts | 9 +- spec/v1/providers/storage.spec.ts | 9 +- spec/v1/providers/testLab.spec.ts | 9 +- spec/v2/providers/alerts/alerts.spec.ts | 69 ++-- .../providers/alerts/appDistribution.spec.ts | 46 ++- spec/v2/providers/alerts/billing.spec.ts | 54 ++- spec/v2/providers/alerts/crashlytics.spec.ts | 322 ++++++++++++------ spec/v2/providers/pubsub.spec.ts | 9 +- spec/v2/providers/storage.spec.ts | 162 ++++++--- src/cloud-functions.ts | 9 +- src/runtime/manifest.ts | 16 +- src/v2/providers/alerts/alerts.ts | 14 +- src/v2/providers/pubsub.ts | 7 +- src/v2/providers/storage.ts | 9 +- 22 files changed, 576 insertions(+), 258 deletions(-) diff --git a/package.json b/package.json index 86163fc08..07ee2ccf5 100644 --- a/package.json +++ b/package.json @@ -149,7 +149,7 @@ "format:fix": "prettier --write '**/*.{json,md,ts,yml,yaml}'", "lint": "tslint --config tslint.json --project tsconfig.json ", "lint:fix": "tslint --config tslint.json --fix --project tsconfig.json", - "test": "mocha --file ./mocha/setup.ts spec/**/*.spec.ts ", + "test": "mocha --file ./mocha/setup.ts \"spec/**/*.spec.ts\"", "test:bin": "./scripts/bin-test/run.sh" }, "dependencies": { diff --git a/spec/runtime/loader.spec.ts b/spec/runtime/loader.spec.ts index 436d3ea62..11acb583f 100644 --- a/spec/runtime/loader.spec.ts +++ b/spec/runtime/loader.spec.ts @@ -122,7 +122,12 @@ describe('extractStack', () => { platform: 'gcfv1', eventTrigger: { eventType: 'google.pubsub.topic.publish', - eventFilters: { resource: 'projects/my-project/topics/my-topic' }, + eventFilters: [ + { + attribute: 'resource', + value: 'projects/my-project/topics/my-topic', + }, + ], retry: false, }, labels: {}, diff --git a/spec/v1/cloud-functions.spec.ts b/spec/v1/cloud-functions.spec.ts index 5dd0a8941..3405af695 100644 --- a/spec/v1/cloud-functions.spec.ts +++ b/spec/v1/cloud-functions.spec.ts @@ -62,9 +62,12 @@ describe('makeCloudFunction', () => { platform: 'gcfv1', eventTrigger: { eventType: 'mock.provider.mock.event', - eventFilters: { - resource: 'resource', - }, + eventFilters: [ + { + attribute: 'resource', + value: 'resource', + }, + ], retry: false, }, labels: {}, @@ -86,9 +89,12 @@ describe('makeCloudFunction', () => { platform: 'gcfv1', eventTrigger: { eventType: 'providers/provider/eventTypes/event', - eventFilters: { - resource: 'resource', - }, + eventFilters: [ + { + attribute: 'resource', + value: 'resource', + }, + ], retry: false, }, labels: {}, @@ -119,9 +125,12 @@ describe('makeCloudFunction', () => { serviceAccountEmail: 'foo@google.com', eventTrigger: { eventType: 'mock.provider.mock.event', - eventFilters: { - resource: 'resource', - }, + eventFilters: [ + { + attribute: 'resource', + value: 'resource', + }, + ], retry: false, }, secretEnvironmentVariables: [{ secret: 'MY_SECRET', key: 'MY_SECRET' }], @@ -143,9 +152,12 @@ describe('makeCloudFunction', () => { platform: 'gcfv1', eventTrigger: { eventType: 'mock.provider.mock.event', - eventFilters: { - resource: 'resource', - }, + eventFilters: [ + { + attribute: 'resource', + value: 'resource', + }, + ], retry: true, }, labels: {}, diff --git a/spec/v1/providers/analytics.spec.ts b/spec/v1/providers/analytics.spec.ts index ead39554f..1603fc280 100644 --- a/spec/v1/providers/analytics.spec.ts +++ b/spec/v1/providers/analytics.spec.ts @@ -72,9 +72,12 @@ describe('Analytics Functions', () => { expect(cloudFunction.__endpoint).to.deep.equal({ platform: 'gcfv1', eventTrigger: { - eventFilters: { - resource: 'projects/project1/events/first_open', - }, + eventFilters: [ + { + attribute: 'resource', + value: 'projects/project1/events/first_open', + }, + ], eventType: 'providers/google.firebase.analytics/eventTypes/event.log', retry: false, diff --git a/spec/v1/providers/auth.spec.ts b/spec/v1/providers/auth.spec.ts index 8659a1967..3f5913d2b 100644 --- a/spec/v1/providers/auth.spec.ts +++ b/spec/v1/providers/auth.spec.ts @@ -64,9 +64,12 @@ describe('Auth Functions', () => { return { platform: 'gcfv1', eventTrigger: { - eventFilters: { - resource: `projects/${project}`, - }, + eventFilters: [ + { + attribute: 'resource', + value: `projects/${project}`, + }, + ], eventType: `providers/firebase.auth/eventTypes/${eventType}`, retry: false, }, diff --git a/spec/v1/providers/database.spec.ts b/spec/v1/providers/database.spec.ts index f932dd871..21706b2d5 100644 --- a/spec/v1/providers/database.spec.ts +++ b/spec/v1/providers/database.spec.ts @@ -45,9 +45,12 @@ describe('Database Functions', () => { return { platform: 'gcfv1', eventTrigger: { - eventFilters: { - resource, - }, + eventFilters: [ + { + attribute: 'resource', + value: resource, + }, + ], eventType: `providers/google.firebase.database/eventTypes/${eventType}`, retry: false, }, diff --git a/spec/v1/providers/firestore.spec.ts b/spec/v1/providers/firestore.spec.ts index 3f9f07fbe..0317e69f0 100644 --- a/spec/v1/providers/firestore.spec.ts +++ b/spec/v1/providers/firestore.spec.ts @@ -107,9 +107,12 @@ describe('Firestore Functions', () => { return { platform: 'gcfv1', eventTrigger: { - eventFilters: { - resource, - }, + eventFilters: [ + { + attribute: 'resource', + value: resource, + }, + ], eventType: `providers/cloud.firestore/eventTypes/${eventType}`, retry: false, }, diff --git a/spec/v1/providers/pubsub.spec.ts b/spec/v1/providers/pubsub.spec.ts index 5547515ab..eddf6533c 100644 --- a/spec/v1/providers/pubsub.spec.ts +++ b/spec/v1/providers/pubsub.spec.ts @@ -108,9 +108,12 @@ describe('Pubsub Functions', () => { platform: 'gcfv1', eventTrigger: { eventType: 'google.pubsub.topic.publish', - eventFilters: { - resource: 'projects/project1/topics/toppy', - }, + eventFilters: [ + { + attribute: 'resource', + value: 'projects/project1/topics/toppy', + }, + ], retry: false, }, labels: {}, diff --git a/spec/v1/providers/remoteConfig.spec.ts b/spec/v1/providers/remoteConfig.spec.ts index f3fde2043..8dc310a7b 100644 --- a/spec/v1/providers/remoteConfig.spec.ts +++ b/spec/v1/providers/remoteConfig.spec.ts @@ -68,9 +68,12 @@ describe('RemoteConfig Functions', () => { platform: 'gcfv1', eventTrigger: { eventType: 'google.firebase.remoteconfig.update', - eventFilters: { - resource: 'projects/project1', - }, + eventFilters: [ + { + attribute: 'resource', + value: 'projects/project1', + }, + ], retry: false, }, labels: {}, diff --git a/spec/v1/providers/storage.spec.ts b/spec/v1/providers/storage.spec.ts index d96b131b9..d99a14baa 100644 --- a/spec/v1/providers/storage.spec.ts +++ b/spec/v1/providers/storage.spec.ts @@ -42,9 +42,12 @@ describe('Storage Functions', () => { return { platform: 'gcfv1', eventTrigger: { - eventFilters: { - resource: `projects/_/buckets/${bucket}`, - }, + eventFilters: [ + { + attribute: 'resource', + value: `projects/_/buckets/${bucket}`, + }, + ], eventType: `google.storage.object.${eventType}`, retry: false, }, diff --git a/spec/v1/providers/testLab.spec.ts b/spec/v1/providers/testLab.spec.ts index b3ba22d7f..968ccb079 100644 --- a/spec/v1/providers/testLab.spec.ts +++ b/spec/v1/providers/testLab.spec.ts @@ -50,9 +50,12 @@ describe('Test Lab Functions', () => { platform: 'gcfv1', eventTrigger: { eventType: 'google.testing.testMatrix.complete', - eventFilters: { - resource: 'projects/project1/testMatrices/{matrix}', - }, + eventFilters: [ + { + attribute: 'resource', + value: 'projects/project1/testMatrices/{matrix}', + }, + ], retry: false, }, labels: {}, diff --git a/spec/v2/providers/alerts/alerts.spec.ts b/spec/v2/providers/alerts/alerts.spec.ts index b63f567aa..4f53c41d2 100644 --- a/spec/v2/providers/alerts/alerts.spec.ts +++ b/spec/v2/providers/alerts/alerts.spec.ts @@ -16,9 +16,12 @@ describe('alerts', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + ], retry: false, }, }); @@ -38,10 +41,16 @@ describe('alerts', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -72,9 +81,12 @@ describe('alerts', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + ], retry: false, }, }); @@ -87,9 +99,12 @@ describe('alerts', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + ], retry: false, }, }); @@ -102,10 +117,16 @@ describe('alerts', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -132,10 +153,16 @@ describe('alerts', () => { minInstances: 3, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); diff --git a/spec/v2/providers/alerts/appDistribution.spec.ts b/spec/v2/providers/alerts/appDistribution.spec.ts index 52fdfd3b9..2f8ea5c5a 100644 --- a/spec/v2/providers/alerts/appDistribution.spec.ts +++ b/spec/v2/providers/alerts/appDistribution.spec.ts @@ -19,10 +19,16 @@ describe('appDistribution', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: appDistribution.newTesterIosDeviceAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: appDistribution.newTesterIosDeviceAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -38,9 +44,12 @@ describe('appDistribution', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: appDistribution.newTesterIosDeviceAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: appDistribution.newTesterIosDeviceAlert, + }, + ], retry: false, }, }); @@ -56,10 +65,16 @@ describe('appDistribution', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: appDistribution.newTesterIosDeviceAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: appDistribution.newTesterIosDeviceAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -73,9 +88,12 @@ describe('appDistribution', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: appDistribution.newTesterIosDeviceAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: appDistribution.newTesterIosDeviceAlert, + }, + ], retry: false, }, }); diff --git a/spec/v2/providers/alerts/billing.spec.ts b/spec/v2/providers/alerts/billing.spec.ts index a9e4e173d..5076807ff 100644 --- a/spec/v2/providers/alerts/billing.spec.ts +++ b/spec/v2/providers/alerts/billing.spec.ts @@ -16,9 +16,12 @@ describe('billing', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: billing.planUpdateAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: billing.planUpdateAlert, + }, + ], retry: false, }, }); @@ -34,9 +37,12 @@ describe('billing', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: billing.planUpdateAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: billing.planUpdateAlert, + }, + ], retry: false, }, }); @@ -52,9 +58,12 @@ describe('billing', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: billing.automatedPlanUpdateAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: billing.automatedPlanUpdateAlert, + }, + ], retry: false, }, }); @@ -70,9 +79,12 @@ describe('billing', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: billing.automatedPlanUpdateAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: billing.automatedPlanUpdateAlert, + }, + ], retry: false, }, }); @@ -88,9 +100,12 @@ describe('billing', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + ], retry: false, }, }); @@ -107,9 +122,12 @@ describe('billing', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + ], retry: false, }, }); diff --git a/spec/v2/providers/alerts/crashlytics.spec.ts b/spec/v2/providers/alerts/crashlytics.spec.ts index 1d5c1a8b6..60bacbcdb 100644 --- a/spec/v2/providers/alerts/crashlytics.spec.ts +++ b/spec/v2/providers/alerts/crashlytics.spec.ts @@ -17,9 +17,12 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newFatalIssueAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newFatalIssueAlert, + }, + ], retry: false, }, }); @@ -33,10 +36,16 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newFatalIssueAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newFatalIssueAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -52,9 +61,12 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newFatalIssueAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newFatalIssueAlert, + }, + ], retry: false, }, }); @@ -70,10 +82,16 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newFatalIssueAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newFatalIssueAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -89,9 +107,12 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newNonfatalIssueAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newNonfatalIssueAlert, + }, + ], retry: false, }, }); @@ -105,10 +126,16 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newNonfatalIssueAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newNonfatalIssueAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -124,9 +151,12 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newNonfatalIssueAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newNonfatalIssueAlert, + }, + ], retry: false, }, }); @@ -142,10 +172,16 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newNonfatalIssueAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newNonfatalIssueAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -161,9 +197,12 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.regressionAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.regressionAlert, + }, + ], retry: false, }, }); @@ -177,10 +216,16 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.regressionAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.regressionAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -196,9 +241,12 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.regressionAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.regressionAlert, + }, + ], retry: false, }, }); @@ -214,10 +262,16 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.regressionAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.regressionAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -233,9 +287,12 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.stabilityDigestAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.stabilityDigestAlert, + }, + ], retry: false, }, }); @@ -249,10 +306,16 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.stabilityDigestAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.stabilityDigestAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -268,9 +331,12 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.stabilityDigestAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.stabilityDigestAlert, + }, + ], retry: false, }, }); @@ -286,10 +352,16 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.stabilityDigestAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.stabilityDigestAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -305,9 +377,12 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.velocityAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.velocityAlert, + }, + ], retry: false, }, }); @@ -321,10 +396,16 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.velocityAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.velocityAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -340,9 +421,12 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.velocityAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.velocityAlert, + }, + ], retry: false, }, }); @@ -358,10 +442,16 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.velocityAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.velocityAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -377,9 +467,12 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newAnrIssueAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newAnrIssueAlert, + }, + ], retry: false, }, }); @@ -393,10 +486,16 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newAnrIssueAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newAnrIssueAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -412,9 +511,12 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newAnrIssueAlert, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newAnrIssueAlert, + }, + ], retry: false, }, }); @@ -430,10 +532,16 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: crashlytics.newAnrIssueAlert, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: crashlytics.newAnrIssueAlert, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -449,9 +557,12 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + ], retry: false, }, }); @@ -465,10 +576,16 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); @@ -485,9 +602,12 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + ], retry: false, }, }); @@ -504,10 +624,16 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: { - alertType: ALERT_TYPE, - appId: APPID, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: ALERT_TYPE, + }, + { + attribute: 'appid', + value: APPID, + }, + ], retry: false, }, }); diff --git a/spec/v2/providers/pubsub.spec.ts b/spec/v2/providers/pubsub.spec.ts index f48e10f72..303ffa1d7 100644 --- a/spec/v2/providers/pubsub.spec.ts +++ b/spec/v2/providers/pubsub.spec.ts @@ -12,9 +12,12 @@ const EVENT_TRIGGER = { const ENDPOINT_EVENT_TRIGGER = { eventType: 'google.cloud.pubsub.topic.v1.messagePublished', - eventFilters: { - topic: 'topic', - }, + eventFilters: [ + { + attribute: 'topic', + value: 'topic', + }, + ], retry: false, }; diff --git a/spec/v2/providers/storage.spec.ts b/spec/v2/providers/storage.spec.ts index 8c2e25576..cb612e561 100644 --- a/spec/v2/providers/storage.spec.ts +++ b/spec/v2/providers/storage.spec.ts @@ -12,9 +12,12 @@ const EVENT_TRIGGER = { const ENDPOINT_EVENT_TRIGGER = { eventType: 'event-type', - eventFilters: { - bucket: 'some-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'some-bucket', + }, + ], retry: false, }; @@ -116,9 +119,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_EVENT_TRIGGER, - eventFilters: { - bucket: 'default-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'default-bucket', + }, + ], }, region: ['us-west1'], }); @@ -268,9 +274,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_ARCHIVED_TRIGGER, - eventFilters: { - bucket: 'default-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'default-bucket', + }, + ], }, }); }); @@ -292,9 +301,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_ARCHIVED_TRIGGER, - eventFilters: { - bucket: 'my-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'my-bucket', + }, + ], }, }); }); @@ -320,9 +332,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_ARCHIVED_TRIGGER, - eventFilters: { - bucket: 'my-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'my-bucket', + }, + ], }, region: ['us-west1'], }); @@ -348,9 +363,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_ARCHIVED_TRIGGER, - eventFilters: { - bucket: 'default-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'default-bucket', + }, + ], }, region: ['us-west1'], }); @@ -395,9 +413,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_FINALIZED_TRIGGER, - eventFilters: { - bucket: 'default-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'default-bucket', + }, + ], }, }); }); @@ -419,9 +440,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_FINALIZED_TRIGGER, - eventFilters: { - bucket: 'my-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'my-bucket', + }, + ], }, }); }); @@ -447,9 +471,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_FINALIZED_TRIGGER, - eventFilters: { - bucket: 'my-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'my-bucket', + }, + ], }, region: ['us-west1'], }); @@ -478,9 +505,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_FINALIZED_TRIGGER, - eventFilters: { - bucket: 'default-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'default-bucket', + }, + ], }, region: ['us-west1'], }); @@ -525,9 +555,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_DELETED_TRIGGER, - eventFilters: { - bucket: 'default-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'default-bucket', + }, + ], }, }); @@ -551,9 +584,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_DELETED_TRIGGER, - eventFilters: { - bucket: 'my-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'my-bucket', + }, + ], }, }); }); @@ -579,9 +615,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_DELETED_TRIGGER, - eventFilters: { - bucket: 'my-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'my-bucket', + }, + ], }, region: ['us-west1'], }); @@ -607,9 +646,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_DELETED_TRIGGER, - eventFilters: { - bucket: 'default-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'default-bucket', + }, + ], }, region: ['us-west1'], }); @@ -654,9 +696,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_METADATA_TRIGGER, - eventFilters: { - bucket: 'default-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'default-bucket', + }, + ], }, }); @@ -680,9 +725,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_METADATA_TRIGGER, - eventFilters: { - bucket: 'my-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'my-bucket', + }, + ], }, }); }); @@ -708,9 +756,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_METADATA_TRIGGER, - eventFilters: { - bucket: 'my-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'my-bucket', + }, + ], }, region: ['us-west1'], }); @@ -739,9 +790,12 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_METADATA_TRIGGER, - eventFilters: { - bucket: 'default-bucket', - }, + eventFilters: [ + { + attribute: 'bucket', + value: 'default-bucket', + }, + ], }, region: ['us-west1'], }); diff --git a/src/cloud-functions.ts b/src/cloud-functions.ts index ffe94e031..ab6fdb120 100644 --- a/src/cloud-functions.ts +++ b/src/cloud-functions.ts @@ -461,9 +461,12 @@ export function makeCloudFunction({ } else { endpoint.eventTrigger = { eventType: legacyEventType || provider + '.' + eventType, - eventFilters: { - resource: triggerResource(), - }, + eventFilters: [ + { + attribute: 'resource', + value: triggerResource(), + }, + ], retry: !!options.failurePolicy, }; } diff --git a/src/runtime/manifest.ts b/src/runtime/manifest.ts index aaaf87761..f2e112752 100644 --- a/src/runtime/manifest.ts +++ b/src/runtime/manifest.ts @@ -19,6 +19,20 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. + +/** An Expression type for use with manifest parameters */ +type Expression = string; + +/** + * One or more event filters restrict the set of events delivered to an EventTrigger. + */ +interface EventFilter { + attribute: string; + value: string | Expression; + // if left unspecified, equality is used. + operator?: string; +} + /** * An definition of a function as appears in the Manifest. */ @@ -48,7 +62,7 @@ export interface ManifestEndpoint { callableTrigger?: {}; eventTrigger?: { - eventFilters: Record; + eventFilters: Array; eventType: string; retry: boolean; region?: string; diff --git a/src/v2/providers/alerts/alerts.ts b/src/v2/providers/alerts/alerts.ts index b1501ed0e..902bd4232 100644 --- a/src/v2/providers/alerts/alerts.ts +++ b/src/v2/providers/alerts/alerts.ts @@ -91,14 +91,20 @@ export function getEndpointAnnotation( }, eventTrigger: { eventType, - eventFilters: { - alertType, - }, + eventFilters: [ + { + attribute: 'alerttype', + value: alertType, + }, + ], retry: !!opts.retry, }, }; if (appId) { - endpoint.eventTrigger.eventFilters.appId = appId; + endpoint.eventTrigger.eventFilters.push({ + attribute: 'appid', + value: appId, + }); } return endpoint; } diff --git a/src/v2/providers/pubsub.ts b/src/v2/providers/pubsub.ts index 2964af42d..3c2077ffd 100644 --- a/src/v2/providers/pubsub.ts +++ b/src/v2/providers/pubsub.ts @@ -174,7 +174,12 @@ export function onMessagePublished( }, eventTrigger: { eventType: 'google.cloud.pubsub.topic.v1.messagePublished', - eventFilters: { topic }, + eventFilters: [ + { + attribute: 'topic', + value: topic, + }, + ], retry: false, }, }; diff --git a/src/v2/providers/storage.ts b/src/v2/providers/storage.ts index d5490317d..e2a560f0a 100644 --- a/src/v2/providers/storage.ts +++ b/src/v2/providers/storage.ts @@ -360,9 +360,12 @@ export function onOperation( }, eventTrigger: { eventType, - eventFilters: { - bucket, - }, + eventFilters: [ + { + attribute: 'bucket', + value: bucket, + }, + ], retry: false, }, };