From 05a0527871052a915320d3e288e63565e7003528 Mon Sep 17 00:00:00 2001 From: Matthew Robertson Date: Sat, 6 Nov 2021 01:01:41 +0000 Subject: [PATCH] refactor!: use snake case for generated cloudevent files (#382) This is consistent with other filenames in the project. --- docs/generated/api.d.ts | 28 ++++----- docs/generated/api.json | 29 ++++----- docs/generated/api.md | 10 +-- experimental/generate_cloud_events/README.md | 2 +- .../generate_cloud_events/package.json | 2 +- .../generate_cloud_events/src/generate.ts | 13 ++-- .../generate_cloud_events/src/utils.ts | 8 ++- src/cloud_event_types/CloudEvent.ts | 54 ---------------- .../v1/{LogEntryData.ts => log_entry_data.ts} | 0 ...{BuildEventData.ts => build_event_data.ts} | 0 ...entEventData.ts => document_event_data.ts} | 0 ...ishedData.ts => message_published_data.ts} | 0 ...edulerJobData.ts => scheduler_job_data.ts} | 0 ...geObjectData.ts => storage_object_data.ts} | 0 src/cloud_event_types/cloud_events_context.ts | 63 +++++++++++++++++++ ...lyticsLogData.ts => analytics_log_data.ts} | 0 .../{AuthEventData.ts => auth_event_data.ts} | 0 ...ceEventData.ts => reference_event_data.ts} | 0 ...entData.ts => remote_config_event_data.ts} | 0 ...EventData.ts => test_matrix_event_data.ts} | 0 ...gleCloudEvent.ts => google_cloud_event.ts} | 46 +++++++------- src/cloud_events.ts | 2 +- src/functions.ts | 61 ++---------------- 23 files changed, 141 insertions(+), 177 deletions(-) delete mode 100644 src/cloud_event_types/CloudEvent.ts rename src/cloud_event_types/cloud/audit/v1/{LogEntryData.ts => log_entry_data.ts} (100%) rename src/cloud_event_types/cloud/cloudbuild/v1/{BuildEventData.ts => build_event_data.ts} (100%) rename src/cloud_event_types/cloud/firestore/v1/{DocumentEventData.ts => document_event_data.ts} (100%) rename src/cloud_event_types/cloud/pubsub/v1/{MessagePublishedData.ts => message_published_data.ts} (100%) rename src/cloud_event_types/cloud/scheduler/v1/{SchedulerJobData.ts => scheduler_job_data.ts} (100%) rename src/cloud_event_types/cloud/storage/v1/{StorageObjectData.ts => storage_object_data.ts} (100%) create mode 100644 src/cloud_event_types/cloud_events_context.ts rename src/cloud_event_types/firebase/analytics/v1/{AnalyticsLogData.ts => analytics_log_data.ts} (100%) rename src/cloud_event_types/firebase/auth/v1/{AuthEventData.ts => auth_event_data.ts} (100%) rename src/cloud_event_types/firebase/database/v1/{ReferenceEventData.ts => reference_event_data.ts} (100%) rename src/cloud_event_types/firebase/remoteconfig/v1/{RemoteConfigEventData.ts => remote_config_event_data.ts} (100%) rename src/cloud_event_types/firebase/testlab/v1/{TestMatrixEventData.ts => test_matrix_event_data.ts} (100%) rename src/cloud_event_types/{GoogleCloudEvent.ts => google_cloud_event.ts} (68%) diff --git a/docs/generated/api.d.ts b/docs/generated/api.d.ts index c8f188ab..0eb86680 100644 --- a/docs/generated/api.d.ts +++ b/docs/generated/api.d.ts @@ -27,27 +27,27 @@ export declare interface CloudEventFunctionWithCallback { } /** - * The CloudEvents v1.0 context object for the event. - * {@link https://github.com/cloudevents/spec/blob/master/spec.md#context-attributes} + * The CloudEvents v1.0 context attributes. + * {@link https://github.com/cloudevents/spec/blob/v1.0.1/spec.md#context-attributes} * @public */ export declare interface CloudEventsContext { /** - * Type of occurrence which has happened. + * ID of the event. */ - type?: string; + id: string; /** - * The version of the CloudEvents specification which the event uses. + * The event producer. */ - specversion?: string; + source: string; /** - * The event producer. + * The version of the CloudEvents specification which the event uses. */ - source?: string; + specversion: string; /** - * ID of the event. + * Type of occurrence which has happened. */ - id?: string; + type: string; /** * Timestamp of when the event happened. */ @@ -64,15 +64,15 @@ export declare interface CloudEventsContext { * Content type of the event data. */ datacontenttype?: string; - /** - * The event data. - */ - data?: Record | string | number | boolean | null | unknown; /** * The traceparent string, containing a trace version, trace ID, span ID, and trace options. * @see https://github.com/cloudevents/spec/blob/master/extensions/distributed-tracing.md */ traceparent?: string; + /** + * The event payload. + */ + data?: any; } /** diff --git a/docs/generated/api.json b/docs/generated/api.json index e91daecc..500d1837 100644 --- a/docs/generated/api.json +++ b/docs/generated/api.json @@ -336,7 +336,7 @@ { "kind": "Interface", "canonicalReference": "@google-cloud/functions-framework!CloudEventsContext:interface", - "docComment": "/**\n * The CloudEvents v1.0 context object for the event. {@link https://github.com/cloudevents/spec/blob/master/spec.md#context-attributes}\n *\n * @public\n */\n", + "docComment": "/**\n * The CloudEvents v1.0 context attributes. {@link https://github.com/cloudevents/spec/blob/v1.0.1/spec.md#context-attributes}\n *\n * @public\n */\n", "excerptTokens": [ { "kind": "Content", @@ -349,20 +349,15 @@ { "kind": "PropertySignature", "canonicalReference": "@google-cloud/functions-framework!CloudEventsContext#data:member", - "docComment": "/**\n * The event data.\n */\n", + "docComment": "/**\n * The event payload.\n */\n", "excerptTokens": [ { "kind": "Content", "text": "data?: " }, - { - "kind": "Reference", - "text": "Record", - "canonicalReference": "!Record:type" - }, { "kind": "Content", - "text": " | string | number | boolean | null | unknown" + "text": "any" }, { "kind": "Content", @@ -374,7 +369,7 @@ "name": "data", "propertyTypeTokenRange": { "startIndex": 1, - "endIndex": 3 + "endIndex": 2 } }, { @@ -436,7 +431,7 @@ "excerptTokens": [ { "kind": "Content", - "text": "id?: " + "text": "id: " }, { "kind": "Content", @@ -447,7 +442,7 @@ "text": ";" } ], - "isOptional": true, + "isOptional": false, "releaseTag": "Public", "name": "id", "propertyTypeTokenRange": { @@ -462,7 +457,7 @@ "excerptTokens": [ { "kind": "Content", - "text": "source?: " + "text": "source: " }, { "kind": "Content", @@ -473,7 +468,7 @@ "text": ";" } ], - "isOptional": true, + "isOptional": false, "releaseTag": "Public", "name": "source", "propertyTypeTokenRange": { @@ -488,7 +483,7 @@ "excerptTokens": [ { "kind": "Content", - "text": "specversion?: " + "text": "specversion: " }, { "kind": "Content", @@ -499,7 +494,7 @@ "text": ";" } ], - "isOptional": true, + "isOptional": false, "releaseTag": "Public", "name": "specversion", "propertyTypeTokenRange": { @@ -592,7 +587,7 @@ "excerptTokens": [ { "kind": "Content", - "text": "type?: " + "text": "type: " }, { "kind": "Content", @@ -603,7 +598,7 @@ "text": ";" } ], - "isOptional": true, + "isOptional": false, "releaseTag": "Public", "name": "type", "propertyTypeTokenRange": { diff --git a/docs/generated/api.md b/docs/generated/api.md index e879a483..62d90ee2 100644 --- a/docs/generated/api.md +++ b/docs/generated/api.md @@ -25,16 +25,16 @@ export interface CloudEventFunctionWithCallback { // @public export interface CloudEventsContext { - data?: Record | string | number | boolean | null | unknown; + data?: any; datacontenttype?: string; dataschema?: string; - id?: string; - source?: string; - specversion?: string; + id: string; + source: string; + specversion: string; subject?: string; time?: string; traceparent?: string; - type?: string; + type: string; } // @public diff --git a/experimental/generate_cloud_events/README.md b/experimental/generate_cloud_events/README.md index b4f100e3..077281f7 100644 --- a/experimental/generate_cloud_events/README.md +++ b/experimental/generate_cloud_events/README.md @@ -8,4 +8,4 @@ It can be run via the following command: npm run generate_cloudevents ``` -This will regenerate all known CloudEvent type interfaces in the `src/cloudevent_types` directory of this repository. \ No newline at end of file +This will regenerate all known CloudEvent type interfaces in the `src/cloud_event_types` directory of this repository. \ No newline at end of file diff --git a/experimental/generate_cloud_events/package.json b/experimental/generate_cloud_events/package.json index d66cf292..be78af0c 100644 --- a/experimental/generate_cloud_events/package.json +++ b/experimental/generate_cloud_events/package.json @@ -5,7 +5,7 @@ "main": "build/src/index.js", "dependencies": {}, "scripts": { - "generate_cloudevents": "ts-node ./src/generate.ts && gts fix ../../src/cloudevent_types/**/*.ts" + "generate_cloudevents": "ts-node ./src/generate.ts && gts fix ../../src/cloud_event_types/**/*.ts" }, "files": [ "build/src/**/*.js", diff --git a/experimental/generate_cloud_events/src/generate.ts b/experimental/generate_cloud_events/src/generate.ts index f5f4d176..07223a0b 100644 --- a/experimental/generate_cloud_events/src/generate.ts +++ b/experimental/generate_cloud_events/src/generate.ts @@ -116,8 +116,13 @@ const generateInterfaceBody = (properties: { */ const generateCloudEventImport = (): t.Statement => { return t.importDeclaration( - [t.importSpecifier(t.identifier('CloudEvent'), t.identifier('CloudEvent'))], - t.stringLiteral('./CloudEvent') + [ + t.importSpecifier( + t.identifier('CloudEventsContext'), + t.identifier('CloudEventsContext') + ), + ], + t.stringLiteral('./cloud_events_context') ); }; @@ -156,7 +161,7 @@ const generateCloudEventInterface = (schema: TypeSchema): t.Statement => { t.tsInterfaceDeclaration( t.identifier(schema.name.replace(/Data$/, 'CloudEvent')), null, - [t.tsExpressionWithTypeArguments(t.identifier('CloudEvent'))], + [t.tsExpressionWithTypeArguments(t.identifier('CloudEventsContext'))], t.tsInterfaceBody([ t.tsPropertySignature( t.identifier('type'), @@ -248,6 +253,6 @@ utils.fetch(ROOT_TYPE_CATALOG_URL).then(catalog => { utils.addCopyright(ast); const {code} = generate(ast); - fs.writeFileSync(utils.RELATIVE_SRC_DIR + '/GoogleCloudEvent.ts', code); + fs.writeFileSync(utils.RELATIVE_SRC_DIR + '/google_cloud_event.ts', code); }); }); diff --git a/experimental/generate_cloud_events/src/utils.ts b/experimental/generate_cloud_events/src/utils.ts index a80103d5..03b241f1 100644 --- a/experimental/generate_cloud_events/src/utils.ts +++ b/experimental/generate_cloud_events/src/utils.ts @@ -19,7 +19,7 @@ import * as https from 'https'; /** * Relative path of src dictory to write the TS files ts. */ -export const RELATIVE_SRC_DIR = '../../src/cloudevent_types'; +export const RELATIVE_SRC_DIR = '../../src/cloud_event_types'; /** * Add a JSDoc comment to an AST node @@ -72,7 +72,11 @@ export const fetch = (url: string): Promise<{[key: string]: any}> => { export const getDataFilePath = (url: string): string => { return ( RELATIVE_SRC_DIR + - url.split('jsonschema/google/events')[1].replace('.json', '.ts') + url + .split('jsonschema/google/events')[1] + .replace('.json', '.ts') + .replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`) + .replace('/_', '/') ); }; diff --git a/src/cloud_event_types/CloudEvent.ts b/src/cloud_event_types/CloudEvent.ts deleted file mode 100644 index ed99c0f0..00000000 --- a/src/cloud_event_types/CloudEvent.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * The CloudEvents v1.0 context object for the event. - * {@link https://github.com/cloudevents/spec/blob/master/spec.md#context-attributes} - * @public - */ -export interface CloudEvent { - /** - * Type of occurrence which has happened. - */ - type?: string; - /** - * The version of the CloudEvents specification which the event uses. - */ - specversion?: string; - /** - * The event producer. - */ - source?: string; - /** - * ID of the event. - */ - id?: string; - /** - * Timestamp of when the event happened. - */ - time?: string; - /** - * Describes the subject of the event in the context of the event producer. - */ - subject?: string; - /** - * A link to the schema that the event data adheres to. - */ - dataschema?: string; - /** - * Content type of the event data. - */ - datacontenttype?: string; - /** - * The event data. - */ - data?: - | Record - | string - | number - | boolean - | null - | unknown; - /** - * The traceparent string, containing a trace version, trace ID, span ID, and trace options. - * @see https://github.com/cloudevents/spec/blob/master/extensions/distributed-tracing.md - */ - traceparent?: string; -} diff --git a/src/cloud_event_types/cloud/audit/v1/LogEntryData.ts b/src/cloud_event_types/cloud/audit/v1/log_entry_data.ts similarity index 100% rename from src/cloud_event_types/cloud/audit/v1/LogEntryData.ts rename to src/cloud_event_types/cloud/audit/v1/log_entry_data.ts diff --git a/src/cloud_event_types/cloud/cloudbuild/v1/BuildEventData.ts b/src/cloud_event_types/cloud/cloudbuild/v1/build_event_data.ts similarity index 100% rename from src/cloud_event_types/cloud/cloudbuild/v1/BuildEventData.ts rename to src/cloud_event_types/cloud/cloudbuild/v1/build_event_data.ts diff --git a/src/cloud_event_types/cloud/firestore/v1/DocumentEventData.ts b/src/cloud_event_types/cloud/firestore/v1/document_event_data.ts similarity index 100% rename from src/cloud_event_types/cloud/firestore/v1/DocumentEventData.ts rename to src/cloud_event_types/cloud/firestore/v1/document_event_data.ts diff --git a/src/cloud_event_types/cloud/pubsub/v1/MessagePublishedData.ts b/src/cloud_event_types/cloud/pubsub/v1/message_published_data.ts similarity index 100% rename from src/cloud_event_types/cloud/pubsub/v1/MessagePublishedData.ts rename to src/cloud_event_types/cloud/pubsub/v1/message_published_data.ts diff --git a/src/cloud_event_types/cloud/scheduler/v1/SchedulerJobData.ts b/src/cloud_event_types/cloud/scheduler/v1/scheduler_job_data.ts similarity index 100% rename from src/cloud_event_types/cloud/scheduler/v1/SchedulerJobData.ts rename to src/cloud_event_types/cloud/scheduler/v1/scheduler_job_data.ts diff --git a/src/cloud_event_types/cloud/storage/v1/StorageObjectData.ts b/src/cloud_event_types/cloud/storage/v1/storage_object_data.ts similarity index 100% rename from src/cloud_event_types/cloud/storage/v1/StorageObjectData.ts rename to src/cloud_event_types/cloud/storage/v1/storage_object_data.ts diff --git a/src/cloud_event_types/cloud_events_context.ts b/src/cloud_event_types/cloud_events_context.ts new file mode 100644 index 00000000..4685d1f1 --- /dev/null +++ b/src/cloud_event_types/cloud_events_context.ts @@ -0,0 +1,63 @@ +// Copyright 2021 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * The CloudEvents v1.0 context attributes. + * {@link https://github.com/cloudevents/spec/blob/v1.0.1/spec.md#context-attributes} + * @public + */ +export interface CloudEventsContext { + /** + * ID of the event. + */ + id: string; + /** + * The event producer. + */ + source: string; + /** + * The version of the CloudEvents specification which the event uses. + */ + specversion: string; + /** + * Type of occurrence which has happened. + */ + type: string; + /** + * Timestamp of when the event happened. + */ + time?: string; + /** + * Describes the subject of the event in the context of the event producer. + */ + subject?: string; + /** + * A link to the schema that the event data adheres to. + */ + dataschema?: string; + /** + * Content type of the event data. + */ + datacontenttype?: string; + /** + * The traceparent string, containing a trace version, trace ID, span ID, and trace options. + * @see https://github.com/cloudevents/spec/blob/master/extensions/distributed-tracing.md + */ + traceparent?: string; + /** + * The event payload. + */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + data?: any; +} diff --git a/src/cloud_event_types/firebase/analytics/v1/AnalyticsLogData.ts b/src/cloud_event_types/firebase/analytics/v1/analytics_log_data.ts similarity index 100% rename from src/cloud_event_types/firebase/analytics/v1/AnalyticsLogData.ts rename to src/cloud_event_types/firebase/analytics/v1/analytics_log_data.ts diff --git a/src/cloud_event_types/firebase/auth/v1/AuthEventData.ts b/src/cloud_event_types/firebase/auth/v1/auth_event_data.ts similarity index 100% rename from src/cloud_event_types/firebase/auth/v1/AuthEventData.ts rename to src/cloud_event_types/firebase/auth/v1/auth_event_data.ts diff --git a/src/cloud_event_types/firebase/database/v1/ReferenceEventData.ts b/src/cloud_event_types/firebase/database/v1/reference_event_data.ts similarity index 100% rename from src/cloud_event_types/firebase/database/v1/ReferenceEventData.ts rename to src/cloud_event_types/firebase/database/v1/reference_event_data.ts diff --git a/src/cloud_event_types/firebase/remoteconfig/v1/RemoteConfigEventData.ts b/src/cloud_event_types/firebase/remoteconfig/v1/remote_config_event_data.ts similarity index 100% rename from src/cloud_event_types/firebase/remoteconfig/v1/RemoteConfigEventData.ts rename to src/cloud_event_types/firebase/remoteconfig/v1/remote_config_event_data.ts diff --git a/src/cloud_event_types/firebase/testlab/v1/TestMatrixEventData.ts b/src/cloud_event_types/firebase/testlab/v1/test_matrix_event_data.ts similarity index 100% rename from src/cloud_event_types/firebase/testlab/v1/TestMatrixEventData.ts rename to src/cloud_event_types/firebase/testlab/v1/test_matrix_event_data.ts diff --git a/src/cloud_event_types/GoogleCloudEvent.ts b/src/cloud_event_types/google_cloud_event.ts similarity index 68% rename from src/cloud_event_types/GoogleCloudEvent.ts rename to src/cloud_event_types/google_cloud_event.ts index 648aa790..8affdef2 100644 --- a/src/cloud_event_types/GoogleCloudEvent.ts +++ b/src/cloud_event_types/google_cloud_event.ts @@ -13,25 +13,25 @@ // limitations under the License. /* eslint-disable @typescript-eslint/no-explicit-any*/ -import {LogEntryData} from './cloud/audit/v1/LogEntryData'; -import {BuildEventData} from './cloud/cloudbuild/v1/BuildEventData'; -import {DocumentEventData} from './cloud/firestore/v1/DocumentEventData'; -import {MessagePublishedData} from './cloud/pubsub/v1/MessagePublishedData'; -import {SchedulerJobData} from './cloud/scheduler/v1/SchedulerJobData'; -import {StorageObjectData} from './cloud/storage/v1/StorageObjectData'; -import {AnalyticsLogData} from './firebase/analytics/v1/AnalyticsLogData'; -import {AuthEventData} from './firebase/auth/v1/AuthEventData'; -import {ReferenceEventData} from './firebase/database/v1/ReferenceEventData'; -import {RemoteConfigEventData} from './firebase/remoteconfig/v1/RemoteConfigEventData'; -import {TestMatrixEventData} from './firebase/testlab/v1/TestMatrixEventData'; -import {CloudEvent} from './CloudEvent'; +import {LogEntryData} from './cloud/audit/v1/log_entry_data'; +import {BuildEventData} from './cloud/cloudbuild/v1/build_event_data'; +import {DocumentEventData} from './cloud/firestore/v1/document_event_data'; +import {MessagePublishedData} from './cloud/pubsub/v1/message_published_data'; +import {SchedulerJobData} from './cloud/scheduler/v1/scheduler_job_data'; +import {StorageObjectData} from './cloud/storage/v1/storage_object_data'; +import {AnalyticsLogData} from './firebase/analytics/v1/analytics_log_data'; +import {AuthEventData} from './firebase/auth/v1/auth_event_data'; +import {ReferenceEventData} from './firebase/database/v1/reference_event_data'; +import {RemoteConfigEventData} from './firebase/remoteconfig/v1/remote_config_event_data'; +import {TestMatrixEventData} from './firebase/testlab/v1/test_matrix_event_data'; +import {CloudEventsContext} from './cloud_events_context'; /** * The schema of CloudEvents emmitted by Cloud Audit Logs. * * @public */ -export interface LogEntryCloudEvent extends CloudEvent { +export interface LogEntryCloudEvent extends CloudEventsContext { type: 'google.cloud.audit.log.v1.written'; data: LogEntryData; } @@ -41,7 +41,7 @@ export interface LogEntryCloudEvent extends CloudEvent { * * @public */ -export interface BuildEventCloudEvent extends CloudEvent { +export interface BuildEventCloudEvent extends CloudEventsContext { type: 'google.cloud.cloudbuild.build.v1.statusChanged'; data: BuildEventData; } @@ -51,7 +51,7 @@ export interface BuildEventCloudEvent extends CloudEvent { * * @public */ -export interface DocumentEventCloudEvent extends CloudEvent { +export interface DocumentEventCloudEvent extends CloudEventsContext { type: | 'google.cloud.firestore.document.v1.created' | 'google.cloud.firestore.document.v1.updated' @@ -65,7 +65,7 @@ export interface DocumentEventCloudEvent extends CloudEvent { * * @public */ -export interface MessagePublishedCloudEvent extends CloudEvent { +export interface MessagePublishedCloudEvent extends CloudEventsContext { type: 'google.cloud.pubsub.topic.v1.messagePublished'; data: MessagePublishedData; } @@ -75,7 +75,7 @@ export interface MessagePublishedCloudEvent extends CloudEvent { * * @public */ -export interface SchedulerJobCloudEvent extends CloudEvent { +export interface SchedulerJobCloudEvent extends CloudEventsContext { type: 'google.cloud.scheduler.job.v1.executed'; data: SchedulerJobData; } @@ -85,7 +85,7 @@ export interface SchedulerJobCloudEvent extends CloudEvent { * * @public */ -export interface StorageObjectCloudEvent extends CloudEvent { +export interface StorageObjectCloudEvent extends CloudEventsContext { type: | 'google.cloud.storage.object.v1.finalized' | 'google.cloud.storage.object.v1.archived' @@ -99,7 +99,7 @@ export interface StorageObjectCloudEvent extends CloudEvent { * * @public */ -export interface AnalyticsLogCloudEvent extends CloudEvent { +export interface AnalyticsLogCloudEvent extends CloudEventsContext { type: 'google.firebase.analytics.log.v1.written'; data: AnalyticsLogData; } @@ -109,7 +109,7 @@ export interface AnalyticsLogCloudEvent extends CloudEvent { * * @public */ -export interface AuthEventCloudEvent extends CloudEvent { +export interface AuthEventCloudEvent extends CloudEventsContext { type: | 'google.firebase.auth.user.v1.created' | 'google.firebase.auth.user.v1.deleted'; @@ -121,7 +121,7 @@ export interface AuthEventCloudEvent extends CloudEvent { * * @public */ -export interface ReferenceEventCloudEvent extends CloudEvent { +export interface ReferenceEventCloudEvent extends CloudEventsContext { type: | 'google.firebase.database.ref.v1.created' | 'google.firebase.database.ref.v1.updated' @@ -135,7 +135,7 @@ export interface ReferenceEventCloudEvent extends CloudEvent { * * @public */ -export interface RemoteConfigEventCloudEvent extends CloudEvent { +export interface RemoteConfigEventCloudEvent extends CloudEventsContext { type: 'google.firebase.remoteconfig.remoteConfig.v1.updated'; data: RemoteConfigEventData; } @@ -145,7 +145,7 @@ export interface RemoteConfigEventCloudEvent extends CloudEvent { * * @public */ -export interface TestMatrixEventCloudEvent extends CloudEvent { +export interface TestMatrixEventCloudEvent extends CloudEventsContext { type: 'google.firebase.testlab.testMatrix.v1.completed'; data: TestMatrixEventData; } diff --git a/src/cloud_events.ts b/src/cloud_events.ts index d6a8c802..e1b1364c 100644 --- a/src/cloud_events.ts +++ b/src/cloud_events.ts @@ -59,7 +59,7 @@ export function isBinaryCloudEvent(req: express.Request): boolean { export function getBinaryCloudEventContext( req: express.Request ): CloudEventsContext { - const context: CloudEventsContext = {}; + const context = {} as CloudEventsContext; for (const name in req.headers) { if (name.startsWith('ce-')) { const attributeName = name.substr( diff --git a/src/functions.ts b/src/functions.ts index c696e63c..6b0a1d6b 100644 --- a/src/functions.ts +++ b/src/functions.ts @@ -17,6 +17,12 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import * as express from 'express'; +import {CloudEventsContext} from './cloud_event_types/cloud_events_context'; + +/** + * @public + */ +export {CloudEventsContext}; /** * @public @@ -126,61 +132,6 @@ export interface CloudFunctionsContext { resource?: string | {[key: string]: string}; } -/** - * The CloudEvents v1.0 context object for the event. - * {@link https://github.com/cloudevents/spec/blob/master/spec.md#context-attributes} - * @public - */ -export interface CloudEventsContext { - /** - * Type of occurrence which has happened. - */ - type?: string; - /** - * The version of the CloudEvents specification which the event uses. - */ - specversion?: string; - /** - * The event producer. - */ - source?: string; - /** - * ID of the event. - */ - id?: string; - /** - * Timestamp of when the event happened. - */ - time?: string; - /** - * Describes the subject of the event in the context of the event producer. - */ - subject?: string; - /** - * A link to the schema that the event data adheres to. - */ - dataschema?: string; - /** - * Content type of the event data. - */ - datacontenttype?: string; - /** - * The event data. - */ - data?: - | Record - | string - | number - | boolean - | null - | unknown; - /** - * The traceparent string, containing a trace version, trace ID, span ID, and trace options. - * @see https://github.com/cloudevents/spec/blob/master/extensions/distributed-tracing.md - */ - traceparent?: string; -} - /** * The function's context. * @public