From a6f3417958b9bdad1dd4df1dbb832c45cdb7bd1c Mon Sep 17 00:00:00 2001 From: Cole Rogers Date: Thu, 31 Mar 2022 08:12:01 -0700 Subject: [PATCH 1/2] changing to a map --- spec/runtime/loader.spec.ts | 9 +- 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 | 63 ++------ .../providers/alerts/appDistribution.spec.ts | 50 +++---- spec/v2/providers/alerts/billing.spec.ts | 54 +++---- spec/v2/providers/alerts/crashlytics.spec.ts | 90 ++++-------- spec/v2/providers/pubsub.spec.ts | 9 +- spec/v2/providers/storage.spec.ts | 136 ++++-------------- src/cloud-functions.ts | 9 +- src/runtime/manifest.ts | 12 +- src/v2/providers/alerts/alerts.ts | 14 +- src/v2/providers/pubsub.ts | 2 +- src/v2/providers/storage.ts | 2 +- 21 files changed, 158 insertions(+), 400 deletions(-) diff --git a/spec/runtime/loader.spec.ts b/spec/runtime/loader.spec.ts index 11acb583f..6db4370fd 100644 --- a/spec/runtime/loader.spec.ts +++ b/spec/runtime/loader.spec.ts @@ -122,12 +122,9 @@ describe('extractStack', () => { platform: 'gcfv1', eventTrigger: { eventType: 'google.pubsub.topic.publish', - eventFilters: [ - { - attribute: 'resource', - value: 'projects/my-project/topics/my-topic', - }, - ], + eventFilters: { + resource: '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 3405af695..5dd0a8941 100644 --- a/spec/v1/cloud-functions.spec.ts +++ b/spec/v1/cloud-functions.spec.ts @@ -62,12 +62,9 @@ describe('makeCloudFunction', () => { platform: 'gcfv1', eventTrigger: { eventType: 'mock.provider.mock.event', - eventFilters: [ - { - attribute: 'resource', - value: 'resource', - }, - ], + eventFilters: { + resource: 'resource', + }, retry: false, }, labels: {}, @@ -89,12 +86,9 @@ describe('makeCloudFunction', () => { platform: 'gcfv1', eventTrigger: { eventType: 'providers/provider/eventTypes/event', - eventFilters: [ - { - attribute: 'resource', - value: 'resource', - }, - ], + eventFilters: { + resource: 'resource', + }, retry: false, }, labels: {}, @@ -125,12 +119,9 @@ describe('makeCloudFunction', () => { serviceAccountEmail: 'foo@google.com', eventTrigger: { eventType: 'mock.provider.mock.event', - eventFilters: [ - { - attribute: 'resource', - value: 'resource', - }, - ], + eventFilters: { + resource: 'resource', + }, retry: false, }, secretEnvironmentVariables: [{ secret: 'MY_SECRET', key: 'MY_SECRET' }], @@ -152,12 +143,9 @@ describe('makeCloudFunction', () => { platform: 'gcfv1', eventTrigger: { eventType: 'mock.provider.mock.event', - eventFilters: [ - { - attribute: 'resource', - value: 'resource', - }, - ], + eventFilters: { + resource: 'resource', + }, retry: true, }, labels: {}, diff --git a/spec/v1/providers/analytics.spec.ts b/spec/v1/providers/analytics.spec.ts index 1603fc280..ead39554f 100644 --- a/spec/v1/providers/analytics.spec.ts +++ b/spec/v1/providers/analytics.spec.ts @@ -72,12 +72,9 @@ describe('Analytics Functions', () => { expect(cloudFunction.__endpoint).to.deep.equal({ platform: 'gcfv1', eventTrigger: { - eventFilters: [ - { - attribute: 'resource', - value: 'projects/project1/events/first_open', - }, - ], + eventFilters: { + resource: '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 3f5913d2b..8659a1967 100644 --- a/spec/v1/providers/auth.spec.ts +++ b/spec/v1/providers/auth.spec.ts @@ -64,12 +64,9 @@ describe('Auth Functions', () => { return { platform: 'gcfv1', eventTrigger: { - eventFilters: [ - { - attribute: 'resource', - value: `projects/${project}`, - }, - ], + eventFilters: { + resource: `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 2ea1022e3..304c1d1fd 100644 --- a/spec/v1/providers/database.spec.ts +++ b/spec/v1/providers/database.spec.ts @@ -45,12 +45,9 @@ describe('Database Functions', () => { return { platform: 'gcfv1', eventTrigger: { - eventFilters: [ - { - attribute: 'resource', - value: resource, - }, - ], + eventFilters: { + 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 0317e69f0..3f9f07fbe 100644 --- a/spec/v1/providers/firestore.spec.ts +++ b/spec/v1/providers/firestore.spec.ts @@ -107,12 +107,9 @@ describe('Firestore Functions', () => { return { platform: 'gcfv1', eventTrigger: { - eventFilters: [ - { - attribute: 'resource', - value: resource, - }, - ], + eventFilters: { + 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 eddf6533c..5547515ab 100644 --- a/spec/v1/providers/pubsub.spec.ts +++ b/spec/v1/providers/pubsub.spec.ts @@ -108,12 +108,9 @@ describe('Pubsub Functions', () => { platform: 'gcfv1', eventTrigger: { eventType: 'google.pubsub.topic.publish', - eventFilters: [ - { - attribute: 'resource', - value: 'projects/project1/topics/toppy', - }, - ], + eventFilters: { + resource: 'projects/project1/topics/toppy', + }, retry: false, }, labels: {}, diff --git a/spec/v1/providers/remoteConfig.spec.ts b/spec/v1/providers/remoteConfig.spec.ts index 8dc310a7b..f3fde2043 100644 --- a/spec/v1/providers/remoteConfig.spec.ts +++ b/spec/v1/providers/remoteConfig.spec.ts @@ -68,12 +68,9 @@ describe('RemoteConfig Functions', () => { platform: 'gcfv1', eventTrigger: { eventType: 'google.firebase.remoteconfig.update', - eventFilters: [ - { - attribute: 'resource', - value: 'projects/project1', - }, - ], + eventFilters: { + resource: 'projects/project1', + }, retry: false, }, labels: {}, diff --git a/spec/v1/providers/storage.spec.ts b/spec/v1/providers/storage.spec.ts index d99a14baa..d96b131b9 100644 --- a/spec/v1/providers/storage.spec.ts +++ b/spec/v1/providers/storage.spec.ts @@ -42,12 +42,9 @@ describe('Storage Functions', () => { return { platform: 'gcfv1', eventTrigger: { - eventFilters: [ - { - attribute: 'resource', - value: `projects/_/buckets/${bucket}`, - }, - ], + eventFilters: { + resource: `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 968ccb079..b3ba22d7f 100644 --- a/spec/v1/providers/testLab.spec.ts +++ b/spec/v1/providers/testLab.spec.ts @@ -50,12 +50,9 @@ describe('Test Lab Functions', () => { platform: 'gcfv1', eventTrigger: { eventType: 'google.testing.testMatrix.complete', - eventFilters: [ - { - attribute: 'resource', - value: 'projects/project1/testMatrices/{matrix}', - }, - ], + eventFilters: { + resource: '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 4f53c41d2..6ad78a811 100644 --- a/spec/v2/providers/alerts/alerts.spec.ts +++ b/spec/v2/providers/alerts/alerts.spec.ts @@ -6,6 +6,15 @@ import { FULL_ENDPOINT, FULL_OPTIONS } from '../helpers'; const ALERT_TYPE = 'new-alert-type'; const APPID = '123456789'; +const ALERT_EVENT_FILTER = { + alerttype: ALERT_TYPE, +}; + +const ALERT_APP_EVENT_FILTER = { + alerttype: ALERT_TYPE, + appid: APPID, +}; + describe('alerts', () => { describe('onAlertPublished', () => { it('should create the function without opts', () => { @@ -16,12 +25,7 @@ describe('alerts', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - ], + eventFilters: ALERT_EVENT_FILTER, retry: false, }, }); @@ -41,16 +45,7 @@ describe('alerts', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - { - attribute: 'appid', - value: APPID, - }, - ], + eventFilters: ALERT_APP_EVENT_FILTER, retry: false, }, }); @@ -81,12 +76,7 @@ describe('alerts', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - ], + eventFilters: ALERT_EVENT_FILTER, retry: false, }, }); @@ -99,12 +89,7 @@ describe('alerts', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - ], + eventFilters: ALERT_EVENT_FILTER, retry: false, }, }); @@ -117,16 +102,7 @@ describe('alerts', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - { - attribute: 'appid', - value: APPID, - }, - ], + eventFilters: ALERT_APP_EVENT_FILTER, retry: false, }, }); @@ -153,16 +129,7 @@ describe('alerts', () => { minInstances: 3, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - { - attribute: 'appid', - value: APPID, - }, - ], + eventFilters: ALERT_APP_EVENT_FILTER, retry: false, }, }); diff --git a/spec/v2/providers/alerts/appDistribution.spec.ts b/spec/v2/providers/alerts/appDistribution.spec.ts index 2f8ea5c5a..3242c7e07 100644 --- a/spec/v2/providers/alerts/appDistribution.spec.ts +++ b/spec/v2/providers/alerts/appDistribution.spec.ts @@ -6,6 +6,10 @@ import { FULL_ENDPOINT, FULL_OPTIONS } from '../helpers'; const APPID = '123456789'; const myHandler = () => 42; +const APP_EVENT_FILTER = { + appid: APPID, +}; + describe('appDistribution', () => { describe('onNewTesterIosDevicePublished', () => { it('should create a function with alertType & appId', () => { @@ -19,16 +23,10 @@ describe('appDistribution', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: appDistribution.newTesterIosDeviceAlert, - }, - { - attribute: 'appid', - value: APPID, - }, - ], + eventFilters: { + ...APP_EVENT_FILTER, + alerttype: appDistribution.newTesterIosDeviceAlert, + }, retry: false, }, }); @@ -44,12 +42,9 @@ describe('appDistribution', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: appDistribution.newTesterIosDeviceAlert, - }, - ], + eventFilters: { + alerttype: appDistribution.newTesterIosDeviceAlert, + }, retry: false, }, }); @@ -65,16 +60,10 @@ describe('appDistribution', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: appDistribution.newTesterIosDeviceAlert, - }, - { - attribute: 'appid', - value: APPID, - }, - ], + eventFilters: { + ...APP_EVENT_FILTER, + alerttype: appDistribution.newTesterIosDeviceAlert, + }, retry: false, }, }); @@ -88,12 +77,9 @@ describe('appDistribution', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: appDistribution.newTesterIosDeviceAlert, - }, - ], + eventFilters: { + alerttype: appDistribution.newTesterIosDeviceAlert, + }, retry: false, }, }); diff --git a/spec/v2/providers/alerts/billing.spec.ts b/spec/v2/providers/alerts/billing.spec.ts index bc3fa6a9a..f8e0eeebb 100644 --- a/spec/v2/providers/alerts/billing.spec.ts +++ b/spec/v2/providers/alerts/billing.spec.ts @@ -16,12 +16,9 @@ describe('billing', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: billing.planUpdateAlert, - }, - ], + eventFilters: { + alerttype: billing.planUpdateAlert, + }, retry: false, }, }); @@ -37,12 +34,9 @@ describe('billing', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: billing.planUpdateAlert, - }, - ], + eventFilters: { + alerttype: billing.planUpdateAlert, + }, retry: false, }, }); @@ -58,12 +52,9 @@ describe('billing', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: billing.planAutomatedUpdateAlert, - }, - ], + eventFilters: { + alerttype: billing.planAutomatedUpdateAlert, + }, retry: false, }, }); @@ -79,12 +70,9 @@ describe('billing', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: billing.planAutomatedUpdateAlert, - }, - ], + eventFilters: { + alerttype: billing.planAutomatedUpdateAlert, + }, retry: false, }, }); @@ -100,12 +88,9 @@ describe('billing', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - ], + eventFilters: { + alerttype: ALERT_TYPE, + }, retry: false, }, }); @@ -122,12 +107,9 @@ describe('billing', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - ], + eventFilters: { + alerttype: ALERT_TYPE, + }, retry: false, }, }); diff --git a/spec/v2/providers/alerts/crashlytics.spec.ts b/spec/v2/providers/alerts/crashlytics.spec.ts index 0ac00c5e0..1ea1c4f0e 100644 --- a/spec/v2/providers/alerts/crashlytics.spec.ts +++ b/spec/v2/providers/alerts/crashlytics.spec.ts @@ -36,6 +36,15 @@ describe('crashlytics', () => { ]; for (const { method, event } of testcases) { + const ALERT_EVENT_FILTER = { + alerttype: event, + }; + + const ALERT_APP_EVENT_FILTER = { + ...ALERT_EVENT_FILTER, + appid: APPID, + }; + describe(method, () => { it('should create a function only handler', () => { const func = crashlytics[method](myHandler); @@ -45,12 +54,7 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: event, - }, - ], + eventFilters: ALERT_EVENT_FILTER, retry: false, }, }); @@ -64,16 +68,7 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: event, - }, - { - attribute: 'appid', - value: APPID, - }, - ], + eventFilters: ALERT_APP_EVENT_FILTER, retry: false, }, }); @@ -86,12 +81,7 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: event, - }, - ], + eventFilters: ALERT_EVENT_FILTER, retry: false, }, }); @@ -107,16 +97,7 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: event, - }, - { - attribute: 'appid', - value: APPID, - }, - ], + eventFilters: ALERT_APP_EVENT_FILTER, retry: false, }, }); @@ -124,6 +105,15 @@ describe('crashlytics', () => { }); } + const ALERT_EVENT_FILTER = { + alerttype: ALERT_TYPE, + }; + + const ALERT_APP_EVENT_FILTER = { + ...ALERT_EVENT_FILTER, + appid: APPID, + }; + describe('onOperation', () => { it('should create a function with alertType only', () => { const func = crashlytics.onOperation(ALERT_TYPE, myHandler, undefined); @@ -133,12 +123,7 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - ], + eventFilters: ALERT_EVENT_FILTER, retry: false, }, }); @@ -152,16 +137,7 @@ describe('crashlytics', () => { labels: {}, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - { - attribute: 'appid', - value: APPID, - }, - ], + eventFilters: ALERT_APP_EVENT_FILTER, retry: false, }, }); @@ -178,12 +154,7 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - ], + eventFilters: ALERT_EVENT_FILTER, retry: false, }, }); @@ -200,16 +171,7 @@ describe('crashlytics', () => { ...FULL_ENDPOINT, eventTrigger: { eventType: alerts.eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: ALERT_TYPE, - }, - { - attribute: 'appid', - value: APPID, - }, - ], + eventFilters: ALERT_APP_EVENT_FILTER, retry: false, }, }); diff --git a/spec/v2/providers/pubsub.spec.ts b/spec/v2/providers/pubsub.spec.ts index 303ffa1d7..f48e10f72 100644 --- a/spec/v2/providers/pubsub.spec.ts +++ b/spec/v2/providers/pubsub.spec.ts @@ -12,12 +12,9 @@ const EVENT_TRIGGER = { const ENDPOINT_EVENT_TRIGGER = { eventType: 'google.cloud.pubsub.topic.v1.messagePublished', - eventFilters: [ - { - attribute: 'topic', - value: 'topic', - }, - ], + eventFilters: { + topic: 'topic', + }, retry: false, }; diff --git a/spec/v2/providers/storage.spec.ts b/spec/v2/providers/storage.spec.ts index cb612e561..0471b6931 100644 --- a/spec/v2/providers/storage.spec.ts +++ b/spec/v2/providers/storage.spec.ts @@ -12,15 +12,20 @@ const EVENT_TRIGGER = { const ENDPOINT_EVENT_TRIGGER = { eventType: 'event-type', - eventFilters: [ - { - attribute: 'bucket', - value: 'some-bucket', - }, - ], + eventFilters: { + bucket: 'some-bucket', + }, retry: false, }; +const DEFAULT_BUCKET_EVENT_FILTER = { + bucket: 'default-bucket', +}; + +const SPECIFIC_BUCKET_EVENT_FILTER = { + bucket: 'my-bucket', +}; + describe('v2/storage', () => { describe('getOptsAndBucket', () => { it('should return the default bucket with empty opts', () => { @@ -119,12 +124,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_EVENT_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'default-bucket', - }, - ], + eventFilters: DEFAULT_BUCKET_EVENT_FILTER, }, region: ['us-west1'], }); @@ -274,12 +274,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_ARCHIVED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'default-bucket', - }, - ], + eventFilters: DEFAULT_BUCKET_EVENT_FILTER, }, }); }); @@ -301,12 +296,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_ARCHIVED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'my-bucket', - }, - ], + eventFilters: SPECIFIC_BUCKET_EVENT_FILTER, }, }); }); @@ -332,12 +322,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_ARCHIVED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'my-bucket', - }, - ], + eventFilters: SPECIFIC_BUCKET_EVENT_FILTER, }, region: ['us-west1'], }); @@ -363,12 +348,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_ARCHIVED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'default-bucket', - }, - ], + eventFilters: DEFAULT_BUCKET_EVENT_FILTER, }, region: ['us-west1'], }); @@ -413,12 +393,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_FINALIZED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'default-bucket', - }, - ], + eventFilters: DEFAULT_BUCKET_EVENT_FILTER, }, }); }); @@ -440,12 +415,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_FINALIZED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'my-bucket', - }, - ], + eventFilters: SPECIFIC_BUCKET_EVENT_FILTER, }, }); }); @@ -471,12 +441,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_FINALIZED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'my-bucket', - }, - ], + eventFilters: SPECIFIC_BUCKET_EVENT_FILTER, }, region: ['us-west1'], }); @@ -505,12 +470,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_FINALIZED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'default-bucket', - }, - ], + eventFilters: DEFAULT_BUCKET_EVENT_FILTER, }, region: ['us-west1'], }); @@ -555,12 +515,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_DELETED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'default-bucket', - }, - ], + eventFilters: DEFAULT_BUCKET_EVENT_FILTER, }, }); @@ -584,12 +539,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_DELETED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'my-bucket', - }, - ], + eventFilters: SPECIFIC_BUCKET_EVENT_FILTER, }, }); }); @@ -615,12 +565,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_DELETED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'my-bucket', - }, - ], + eventFilters: SPECIFIC_BUCKET_EVENT_FILTER, }, region: ['us-west1'], }); @@ -646,12 +591,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_DELETED_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'default-bucket', - }, - ], + eventFilters: DEFAULT_BUCKET_EVENT_FILTER, }, region: ['us-west1'], }); @@ -696,12 +636,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_METADATA_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'default-bucket', - }, - ], + eventFilters: DEFAULT_BUCKET_EVENT_FILTER, }, }); @@ -725,12 +660,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_METADATA_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'my-bucket', - }, - ], + eventFilters: SPECIFIC_BUCKET_EVENT_FILTER, }, }); }); @@ -756,12 +686,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_METADATA_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'my-bucket', - }, - ], + eventFilters: SPECIFIC_BUCKET_EVENT_FILTER, }, region: ['us-west1'], }); @@ -790,12 +715,7 @@ describe('v2/storage', () => { labels: {}, eventTrigger: { ...ENDPOINT_METADATA_TRIGGER, - eventFilters: [ - { - attribute: 'bucket', - value: 'default-bucket', - }, - ], + eventFilters: DEFAULT_BUCKET_EVENT_FILTER, }, region: ['us-west1'], }); diff --git a/src/cloud-functions.ts b/src/cloud-functions.ts index ab6fdb120..ffe94e031 100644 --- a/src/cloud-functions.ts +++ b/src/cloud-functions.ts @@ -461,12 +461,9 @@ export function makeCloudFunction({ } else { endpoint.eventTrigger = { eventType: legacyEventType || provider + '.' + eventType, - eventFilters: [ - { - attribute: 'resource', - value: triggerResource(), - }, - ], + eventFilters: { + resource: triggerResource(), + }, retry: !!options.failurePolicy, }; } diff --git a/src/runtime/manifest.ts b/src/runtime/manifest.ts index 2b08385d5..4da9b5018 100644 --- a/src/runtime/manifest.ts +++ b/src/runtime/manifest.ts @@ -19,15 +19,6 @@ // 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. -/** - * One or more event filters restrict the set of events delivered to an EventTrigger. - */ -interface EventFilter { - attribute: string; - value: string; - // if left unspecified, equality is used. - operator?: string; -} /** * An definition of a function as appears in the Manifest. @@ -58,7 +49,8 @@ export interface ManifestEndpoint { callableTrigger?: {}; eventTrigger?: { - eventFilters: EventFilter[]; + eventFilters: Record; + eventFilterPathPatterns?: Record; eventType: string; retry: boolean; region?: string; diff --git a/src/v2/providers/alerts/alerts.ts b/src/v2/providers/alerts/alerts.ts index 902bd4232..173267422 100644 --- a/src/v2/providers/alerts/alerts.ts +++ b/src/v2/providers/alerts/alerts.ts @@ -91,20 +91,14 @@ export function getEndpointAnnotation( }, eventTrigger: { eventType, - eventFilters: [ - { - attribute: 'alerttype', - value: alertType, - }, - ], + eventFilters: { + alerttype: alertType, + }, retry: !!opts.retry, }, }; if (appId) { - endpoint.eventTrigger.eventFilters.push({ - attribute: 'appid', - value: appId, - }); + endpoint.eventTrigger.eventFilters.appid = appId; } return endpoint; } diff --git a/src/v2/providers/pubsub.ts b/src/v2/providers/pubsub.ts index 01b731ccb..2964af42d 100644 --- a/src/v2/providers/pubsub.ts +++ b/src/v2/providers/pubsub.ts @@ -174,7 +174,7 @@ export function onMessagePublished( }, eventTrigger: { eventType: 'google.cloud.pubsub.topic.v1.messagePublished', - eventFilters: [{ attribute: 'topic', value: topic }], + eventFilters: { topic }, retry: false, }, }; diff --git a/src/v2/providers/storage.ts b/src/v2/providers/storage.ts index 8e63ea45e..bc9d26653 100644 --- a/src/v2/providers/storage.ts +++ b/src/v2/providers/storage.ts @@ -360,7 +360,7 @@ export function onOperation( }, eventTrigger: { eventType, - eventFilters: [{ attribute: 'bucket', value: bucket }], + eventFilters: { bucket }, retry: false, }, }; From a352562bd30e8f1374ee3c280ac4901bf324e842 Mon Sep 17 00:00:00 2001 From: Cole Rogers Date: Thu, 31 Mar 2022 16:50:07 -0700 Subject: [PATCH 2/2] adding channel & changelog --- CHANGELOG.md | 1 + src/runtime/manifest.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e69de29bb..4ccafa8c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -0,0 +1 @@ +- Changes internal structure to be more flexible (#1070). diff --git a/src/runtime/manifest.ts b/src/runtime/manifest.ts index 4da9b5018..caece4ee5 100644 --- a/src/runtime/manifest.ts +++ b/src/runtime/manifest.ts @@ -51,6 +51,7 @@ export interface ManifestEndpoint { eventTrigger?: { eventFilters: Record; eventFilterPathPatterns?: Record; + channel?: string; eventType: string; retry: boolean; region?: string;