@azure/eventgrid 5.1.0-alpha.20240116.2 → 5.1.0-alpha.20240117.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +241 -564
- package/dist/index.js.map +1 -1
- package/dist-esm/src/consumer.js +1 -1
- package/dist-esm/src/consumer.js.map +1 -1
- package/dist-esm/src/eventGridClient.js +8 -14
- package/dist-esm/src/eventGridClient.js.map +1 -1
- package/dist-esm/src/generateSharedAccessSignature.js +1 -1
- package/dist-esm/src/generateSharedAccessSignature.js.map +1 -1
- package/dist-esm/src/generated/generatedClientContext.js +2 -7
- package/dist-esm/src/generated/generatedClientContext.js.map +1 -1
- package/dist-esm/src/generated/models/mappers.js +229 -541
- package/dist-esm/src/generated/models/mappers.js.map +1 -1
- package/package.json +1 -1
package/dist-esm/src/consumer.js
CHANGED
@@ -67,7 +67,7 @@ export class EventGridDeserializer {
|
|
67
67
|
modelEvent.data = deserialized.dataBase64;
|
68
68
|
}
|
69
69
|
// Build the "extensionsAttributes" property bag by removing all known top level properties.
|
70
|
-
const extensionAttributes = {
|
70
|
+
const extensionAttributes = Object.assign({}, deserialized);
|
71
71
|
for (const propName of cloudEventReservedPropertyNames) {
|
72
72
|
delete extensionAttributes[propName];
|
73
73
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../src/consumer.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAA8B,+BAA+B,EAAE,MAAM,UAAU,CAAC;AACvF,OAAO,EACL,cAAc,IAAI,oBAAoB,EACtC,UAAU,IAAI,gBAAgB,GAC/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAEvF,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;AAEtC;;;;;;;;;;GAUG;AACH,MAAM,OAAO,qBAAqB;IAmBzB,KAAK,CAAC,0BAA0B,CACrC,aAA+C;QAE/C,MAAM,YAAY,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;QAEjD,MAAM,MAAM,GAA8B,EAAE,CAAC;QAE7C,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;YAC5B,sBAAsB,CAAC,CAAC,CAAC,CAAC;YAE1B,MAAM,YAAY,GAAwB,UAAU,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAE9F,MAAM,CAAC,IAAI,CAAC,YAAuC,CAAC,CAAC;SACtD;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAkBM,KAAK,CAAC,sBAAsB,CACjC,aAA+C;QAE/C,MAAM,YAAY,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;QAEjD,MAAM,MAAM,GAA0B,EAAE,CAAC;QAEzC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;YAC5B,uBAAuB,CAAC,CAAC,CAAC,CAAC;YAE3B,yGAAyG;YACzG,0BAA0B;YAE1B,MAAM,YAAY,GAAmB,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrF,MAAM,UAAU,GAAwB;gBACtC,WAAW,EAAE,YAAY,CAAC,WAAW;gBACrC,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,IAAI,EAAE,YAAY,CAAC,IAAI;aACxB,CAAC;YAEF,IAAI,YAAY,CAAC,eAAe,KAAK,SAAS,EAAE;gBAC9C,UAAU,CAAC,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;aAC3D;YAED,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE;gBACzC,UAAU,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;aACjD;YAED,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE;gBACtC,UAAU,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;aAC3C;YAED,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE;gBACnC,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;aACrC;YAED,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE;gBACnC,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;aACrC;YAED,0IAA0I;YAC1I,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE;gBACzC,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE;oBACnC,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;iBACzE;gBAED,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,YAAY,UAAU,CAAC,EAAE;oBACpD,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,CAAC;iBACpF;gBAED,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;aAC3C;YAED,4FAA4F;YAC5F,MAAM,mBAAmB,
|
1
|
+
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../src/consumer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createSerializer } from \"@azure/core-client\";\nimport { CloudEvent as WireCloudEvent } from \"./generated/models\";\nimport { CloudEvent, EventGridEvent, cloudEventReservedPropertyNames } from \"./models\";\nimport {\n EventGridEvent as EventGridEventMapper,\n CloudEvent as CloudEventMapper,\n} from \"./generated/models/mappers\";\nimport { parseAndWrap, validateEventGridEvent, validateCloudEventEvent } from \"./util\";\n\nconst serializer = createSerializer();\n\n/**\n * EventGridDeserializer is used to aid in processing events delivered by EventGrid. It can deserialize a JSON encoded payload\n * of either a single event or batch of events as well as be used to convert the result of `JSON.parse` into an\n * `EventGridEvent` or `CloudEvent` like object.\n *\n * Unlike normal JSON deseralization, EventGridDeserializer does some additional conversions:\n *\n * - The consumer parses the event time property into a `Date` object, for ease of use.\n * - When deserializing an event in the CloudEvent schema, if the event contains binary data, it is base64 decoded\n * and returned as an instance of the `Uint8Array` type.\n */\nexport class EventGridDeserializer {\n /**\n * Deserializes events encoded in the Event Grid schema.\n *\n * @param encodedEvents - the JSON encoded representation of either a single event or an array of\n * events, encoded in the Event Grid Schema.\n */\n public async deserializeEventGridEvents(\n encodedEvents: string,\n ): Promise<EventGridEvent<unknown>[]>;\n\n /**\n * Deserializes events encoded in the Event Grid schema.\n *\n * @param encodedEvents - an object representing a single event, encoded in the Event Grid schema.\n */\n public async deserializeEventGridEvents(\n encodedEvents: Record<string, unknown>,\n ): Promise<EventGridEvent<unknown>[]>;\n public async deserializeEventGridEvents(\n encodedEvents: string | Record<string, unknown>,\n ): Promise<EventGridEvent<unknown>[]> {\n const decodedArray = parseAndWrap(encodedEvents);\n\n const events: EventGridEvent<unknown>[] = [];\n\n for (const o of decodedArray) {\n validateEventGridEvent(o);\n\n const deserialized: EventGridEvent<any> = serializer.deserialize(EventGridEventMapper, o, \"\");\n\n events.push(deserialized as EventGridEvent<unknown>);\n }\n\n return events;\n }\n\n /**\n * Deserializes events encoded in the Cloud Events 1.0 schema.\n *\n * @param encodedEvents - the JSON encoded representation of either a single event or an array of\n * events, encoded in the Cloud Events 1.0 Schema.\n */\n public async deserializeCloudEvents(encodedEvents: string): Promise<CloudEvent<unknown>[]>;\n\n /**\n * Deserializes events encoded in the Cloud Events 1.0 schema.\n *\n * @param encodedEvents - an object representing a single event, encoded in the Cloud Events 1.0 schema.\n */\n public async deserializeCloudEvents(\n encodedEvents: Record<string, unknown>,\n ): Promise<CloudEvent<unknown>[]>;\n public async deserializeCloudEvents(\n encodedEvents: string | Record<string, unknown>,\n ): Promise<CloudEvent<unknown>[]> {\n const decodedArray = parseAndWrap(encodedEvents);\n\n const events: CloudEvent<unknown>[] = [];\n\n for (const o of decodedArray) {\n validateCloudEventEvent(o);\n\n // Check that the required fields are present and of the correct type and the optional fields are missing\n // or of the correct type.\n\n const deserialized: WireCloudEvent = serializer.deserialize(CloudEventMapper, o, \"\");\n const modelEvent: Record<string, any> = {\n specversion: deserialized.specversion,\n id: deserialized.id,\n source: deserialized.source,\n type: deserialized.type,\n };\n\n if (deserialized.datacontenttype !== undefined) {\n modelEvent.datacontenttype = deserialized.datacontenttype;\n }\n\n if (deserialized.dataschema !== undefined) {\n modelEvent.dataschema = deserialized.dataschema;\n }\n\n if (deserialized.subject !== undefined) {\n modelEvent.subject = deserialized.subject;\n }\n\n if (deserialized.time !== undefined) {\n modelEvent.time = deserialized.time;\n }\n\n if (deserialized.data !== undefined) {\n modelEvent.data = deserialized.data;\n }\n\n // If the data the event represents binary, it is encoded as base64 text in a different property on the event and we need to transform it.\n if (deserialized.dataBase64 !== undefined) {\n if (deserialized.data !== undefined) {\n throw new TypeError(\"event contains both a data and data_base64 field\");\n }\n\n if (!(deserialized.dataBase64 instanceof Uint8Array)) {\n throw new TypeError(\"event data_base64 property is not an instance of Uint8Array\");\n }\n\n modelEvent.data = deserialized.dataBase64;\n }\n\n // Build the \"extensionsAttributes\" property bag by removing all known top level properties.\n const extensionAttributes = { ...deserialized };\n for (const propName of cloudEventReservedPropertyNames) {\n delete extensionAttributes[propName];\n }\n delete extensionAttributes.dataBase64;\n\n // If any properties remain, copy them to the model.\n if (Object.keys(extensionAttributes).length > 0) {\n modelEvent.extensionAttributes = extensionAttributes;\n }\n\n events.push(modelEvent as CloudEvent<unknown>);\n }\n\n return events;\n }\n}\n"]}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
2
2
|
// Licensed under the MIT license.
|
3
|
+
import { __rest } from "tslib";
|
3
4
|
import { isTokenCredential } from "@azure/core-auth";
|
4
5
|
import { eventGridCredentialPolicy } from "./eventGridAuthenticationPolicy";
|
5
6
|
import { DEFAULT_EVENTGRID_SCOPE } from "./constants";
|
@@ -61,7 +62,7 @@ export class EventGridPublisherClient {
|
|
61
62
|
// The underlying REST API expects a header named `aeg-channel-name`, and so the generated client
|
62
63
|
// expects that options bag has a property called `aegChannelName`, where as we expose it with the
|
63
64
|
// friendlier name "channelName". Fix up the impedence mismatch here
|
64
|
-
const { channelName,
|
65
|
+
const _a = updatedOptions, { channelName } = _a, sendOptions = __rest(_a, ["channelName"]);
|
65
66
|
if (channelName) {
|
66
67
|
sendOptions.aegChannelName = channelName;
|
67
68
|
}
|
@@ -81,10 +82,11 @@ export class EventGridPublisherClient {
|
|
81
82
|
* @internal
|
82
83
|
*/
|
83
84
|
export function convertEventGridEventToModelType(event) {
|
85
|
+
var _a, _b;
|
84
86
|
return {
|
85
87
|
eventType: event.eventType,
|
86
|
-
eventTime: event.eventTime
|
87
|
-
id: event.id
|
88
|
+
eventTime: (_a = event.eventTime) !== null && _a !== void 0 ? _a : new Date(),
|
89
|
+
id: (_b = event.id) !== null && _b !== void 0 ? _b : uuidv4(),
|
88
90
|
subject: event.subject,
|
89
91
|
topic: event.topic,
|
90
92
|
data: event.data,
|
@@ -95,6 +97,7 @@ export function convertEventGridEventToModelType(event) {
|
|
95
97
|
* @internal
|
96
98
|
*/
|
97
99
|
export function convertCloudEventToModelType(event) {
|
100
|
+
var _a, _b, _c, _d;
|
98
101
|
if (event.extensionAttributes) {
|
99
102
|
for (const propName in event.extensionAttributes) {
|
100
103
|
// Per the cloud events spec: "CloudEvents attribute names MUST consist of lower-case letters ('a' to 'z') or digits ('0' to '9') from the ASCII character set"
|
@@ -105,16 +108,7 @@ export function convertCloudEventToModelType(event) {
|
|
105
108
|
}
|
106
109
|
}
|
107
110
|
}
|
108
|
-
const converted = {
|
109
|
-
specversion: "1.0",
|
110
|
-
type: event.type,
|
111
|
-
source: event.source,
|
112
|
-
id: event.id ?? uuidv4(),
|
113
|
-
time: event.time ?? new Date(),
|
114
|
-
subject: event.subject,
|
115
|
-
dataschema: event.dataschema,
|
116
|
-
...(event.extensionAttributes ?? []),
|
117
|
-
};
|
111
|
+
const converted = Object.assign({ specversion: "1.0", type: event.type, source: event.source, id: (_a = event.id) !== null && _a !== void 0 ? _a : uuidv4(), time: (_b = event.time) !== null && _b !== void 0 ? _b : new Date(), subject: event.subject, dataschema: event.dataschema }, ((_c = event.extensionAttributes) !== null && _c !== void 0 ? _c : []));
|
118
112
|
if (event.data instanceof Uint8Array) {
|
119
113
|
if (!event.datacontenttype) {
|
120
114
|
throw new Error("a data content type must be provided when sending an event with binary data");
|
@@ -123,7 +117,7 @@ export function convertCloudEventToModelType(event) {
|
|
123
117
|
converted.dataBase64 = event.data;
|
124
118
|
}
|
125
119
|
else {
|
126
|
-
converted.datacontenttype = event.datacontenttype
|
120
|
+
converted.datacontenttype = (_d = event.datacontenttype) !== null && _d !== void 0 ? _d : "application/json";
|
127
121
|
converted.data = event.data;
|
128
122
|
}
|
129
123
|
return converted;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"eventGridClient.js","sourceRoot":"","sources":["../../src/eventGridClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { isTokenCredential, KeyCredential, SASCredential } from \"@azure/core-auth\";\nimport { OperationOptions, CommonClientOptions } from \"@azure/core-client\";\n\nimport { eventGridCredentialPolicy } from \"./eventGridAuthenticationPolicy\";\nimport { DEFAULT_EVENTGRID_SCOPE } from \"./constants\";\nimport {\n SendCloudEventInput,\n SendEventGridEventInput,\n cloudEventReservedPropertyNames,\n} from \"./models\";\nimport { GeneratedClient } from \"./generated/generatedClient\";\nimport {\n CloudEvent as CloudEventWireModel,\n EventGridEvent as EventGridEventWireModel,\n GeneratedClientPublishCloudEventEventsOptionalParams,\n} from \"./generated/models\";\nimport { cloudEventDistributedTracingEnricherPolicy } from \"./cloudEventDistrubtedTracingEnricherPolicy\";\nimport { tracingClient } from \"./tracing\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { bearerTokenAuthenticationPolicy, tracingPolicyName } from \"@azure/core-rest-pipeline\";\n\n/**\n * Options for the Event Grid Client.\n */\nexport type EventGridPublisherClientOptions = CommonClientOptions;\n\n/**\n * Options for the send events operation.\n */\nexport type SendOptions = OperationOptions;\n\n/**\n * Options for the send events operation, when the input schema is cloud event.\n */\nexport interface CloudEventSendOptions extends SendOptions {\n /**\n * The name of the channel to send the event to (only valid for Partner Namespaces and Topics).\n */\n channelName?: string;\n}\n\n/**\n * A map of input schema names to shapes of the input for the send method on EventGridPublisherClient.\n */\nexport interface InputSchemaToInputTypeMap {\n /**\n * The shape of the input to `send` when the client is configured to send events using the Event Grid schema.\n */\n EventGrid: SendEventGridEventInput<unknown>;\n /**\n * The shape of the input to `send` when the client is configured to send events using the Cloud Event schema.\n */\n CloudEvent: SendCloudEventInput<unknown>;\n /**\n * The shape of the input to `send` when the client is configured to send events using a custom schema.\n */\n Custom: Record<string, unknown>;\n}\n\n/**\n * A map of input schema names to shapes of the options bag for the send method on EventGridPublisherClient.\n */\nexport interface InputSchemaToOptionsTypeMap {\n /**\n * The shape of the options parameter for `send` when the client is configured to send events using the Event Grid schema.\n */\n EventGrid: SendOptions;\n /**\n * The shape of the options parameter for `send` when the client is configured to send events using the Cloud Event schema.\n */\n CloudEvent: CloudEventSendOptions;\n /**\n * The shape of the options parameter for `send` when the client is configured to send events using a custom schema.\n */\n Custom: SendOptions;\n}\n\n/**\n * Allowed schema types, to be used when constructing the EventGridPublisherClient.\n */\nexport type InputSchema = keyof InputSchemaToInputTypeMap;\n\n/**\n * Client class for publishing events to the Event Grid Service.\n */\nexport class EventGridPublisherClient<T extends InputSchema> {\n /**\n * The URL to the Event Grid endpoint.\n */\n public readonly endpointUrl: string;\n\n /**\n * The version of the Even Grid service.\n */\n public readonly apiVersion: string;\n\n /**\n * The AutoRest generated client for the EventGrid dataplane.\n */\n private readonly client: GeneratedClient;\n\n /**\n * The schema that will be used when sending events.\n */\n private readonly inputSchema: InputSchema;\n\n /**\n * Creates an instance of EventGridPublisherClient which sends events using the Event Grid Schema.\n *\n * Example usage:\n * ```ts\n * import { EventGridPublisherClient, AzureKeyCredential } from \"@azure/eventgrid\";\n *\n * const client = new EventGridPublisherClient(\n * \"<service endpoint>\",\n * \"EventGrid\",\n * new AzureKeyCredential(\"<api key>\")\n * );\n * ```\n *\n * @param endpointUrl - The URL to the Event Grid endpoint, e.g. https://eg-topic.westus2-1.eventgrid.azure.net/api/events.\n * @param inputSchema - The schema that the Event Grid endpoint is configured to accept. One of \"EventGrid\", \"CloudEvent\", or \"Custom\".\n * @param credential - Used to authenticate requests to the service.\n * @param options - Used to configure the Event Grid Client.\n */\n constructor(\n endpointUrl: string,\n inputSchema: T,\n credential: KeyCredential | SASCredential | TokenCredential,\n options: EventGridPublisherClientOptions = {},\n ) {\n this.endpointUrl = endpointUrl;\n this.inputSchema = inputSchema;\n\n this.client = new GeneratedClient(options);\n\n const authPolicy = isTokenCredential(credential)\n ? bearerTokenAuthenticationPolicy({ credential, scopes: DEFAULT_EVENTGRID_SCOPE })\n : eventGridCredentialPolicy(credential);\n\n this.client.pipeline.addPolicy(authPolicy);\n this.client.pipeline.addPolicy(cloudEventDistributedTracingEnricherPolicy(), {\n afterPolicies: [tracingPolicyName],\n });\n this.apiVersion = this.client.apiVersion;\n }\n\n /**\n * Sends events to a topic.\n *\n * @param events - The events to send. The events should be in the schema used when constructing the client.\n * @param options - Options to control the underlying operation.\n */\n send(\n events: InputSchemaToInputTypeMap[T][],\n options: InputSchemaToOptionsTypeMap[T] = {},\n ): Promise<void> {\n return tracingClient.withSpan(\"EventGridPublisherClient.send\", options, (updatedOptions) => {\n switch (this.inputSchema) {\n case \"EventGrid\": {\n return this.client.publishEventGridEvents(\n this.endpointUrl,\n (events as InputSchemaToInputTypeMap[\"EventGrid\"][]).map(\n convertEventGridEventToModelType,\n ),\n updatedOptions,\n );\n }\n case \"CloudEvent\": {\n // The underlying REST API expects a header named `aeg-channel-name`, and so the generated client\n // expects that options bag has a property called `aegChannelName`, where as we expose it with the\n // friendlier name \"channelName\". Fix up the impedence mismatch here\n const {\n channelName,\n ...sendOptions\n }: { channelName?: string } & GeneratedClientPublishCloudEventEventsOptionalParams =\n updatedOptions as CloudEventSendOptions;\n\n if (channelName) {\n sendOptions.aegChannelName = channelName;\n }\n\n return this.client.publishCloudEventEvents(\n this.endpointUrl,\n (events as InputSchemaToInputTypeMap[\"CloudEvent\"][]).map(convertCloudEventToModelType),\n sendOptions,\n );\n }\n case \"Custom\": {\n return this.client.publishCustomEventEvents(\n this.endpointUrl,\n events as InputSchemaToInputTypeMap[\"Custom\"][],\n updatedOptions,\n );\n }\n default: {\n throw new Error(`Unknown input schema type '${this.inputSchema}'`);\n }\n }\n });\n }\n}\n\n/**\n * @internal\n */\nexport function convertEventGridEventToModelType(\n event: SendEventGridEventInput<any>,\n): EventGridEventWireModel {\n return {\n eventType: event.eventType,\n eventTime: event.eventTime ?? new Date(),\n id: event.id ?? uuidv4(),\n subject: event.subject,\n topic: event.topic,\n data: event.data,\n dataVersion: event.dataVersion,\n };\n}\n\n/**\n * @internal\n */\nexport function convertCloudEventToModelType(event: SendCloudEventInput<any>): CloudEventWireModel {\n if (event.extensionAttributes) {\n for (const propName in event.extensionAttributes) {\n // Per the cloud events spec: \"CloudEvents attribute names MUST consist of lower-case letters ('a' to 'z') or digits ('0' to '9') from the ASCII character set\"\n // they also can not match an existing defined property name.\n\n if (\n !/^[a-z0-9]*$/.test(propName) ||\n cloudEventReservedPropertyNames.indexOf(propName) !== -1\n ) {\n throw new Error(`invalid extension attribute name: ${propName}`);\n }\n }\n }\n\n const converted: CloudEventWireModel = {\n specversion: \"1.0\",\n type: event.type,\n source: event.source,\n id: event.id ?? uuidv4(),\n time: event.time ?? new Date(),\n subject: event.subject,\n dataschema: event.dataschema,\n ...(event.extensionAttributes ?? []),\n };\n\n if (event.data instanceof Uint8Array) {\n if (!event.datacontenttype) {\n throw new Error(\n \"a data content type must be provided when sending an event with binary data\",\n );\n }\n\n converted.datacontenttype = event.datacontenttype;\n converted.dataBase64 = event.data;\n } else {\n converted.datacontenttype = event.datacontenttype ?? \"application/json\";\n converted.data = event.data;\n }\n\n return converted;\n}\n"]}
|
1
|
+
{"version":3,"file":"eventGridClient.js","sourceRoot":"","sources":["../../src/eventGridClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { isTokenCredential, KeyCredential, SASCredential } from \"@azure/core-auth\";\nimport { OperationOptions, CommonClientOptions } from \"@azure/core-client\";\n\nimport { eventGridCredentialPolicy } from \"./eventGridAuthenticationPolicy\";\nimport { DEFAULT_EVENTGRID_SCOPE } from \"./constants\";\nimport {\n SendCloudEventInput,\n SendEventGridEventInput,\n cloudEventReservedPropertyNames,\n} from \"./models\";\nimport { GeneratedClient } from \"./generated/generatedClient\";\nimport {\n CloudEvent as CloudEventWireModel,\n EventGridEvent as EventGridEventWireModel,\n GeneratedClientPublishCloudEventEventsOptionalParams,\n} from \"./generated/models\";\nimport { cloudEventDistributedTracingEnricherPolicy } from \"./cloudEventDistrubtedTracingEnricherPolicy\";\nimport { tracingClient } from \"./tracing\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { bearerTokenAuthenticationPolicy, tracingPolicyName } from \"@azure/core-rest-pipeline\";\n\n/**\n * Options for the Event Grid Client.\n */\nexport type EventGridPublisherClientOptions = CommonClientOptions;\n\n/**\n * Options for the send events operation.\n */\nexport type SendOptions = OperationOptions;\n\n/**\n * Options for the send events operation, when the input schema is cloud event.\n */\nexport interface CloudEventSendOptions extends SendOptions {\n /**\n * The name of the channel to send the event to (only valid for Partner Namespaces and Topics).\n */\n channelName?: string;\n}\n\n/**\n * A map of input schema names to shapes of the input for the send method on EventGridPublisherClient.\n */\nexport interface InputSchemaToInputTypeMap {\n /**\n * The shape of the input to `send` when the client is configured to send events using the Event Grid schema.\n */\n EventGrid: SendEventGridEventInput<unknown>;\n /**\n * The shape of the input to `send` when the client is configured to send events using the Cloud Event schema.\n */\n CloudEvent: SendCloudEventInput<unknown>;\n /**\n * The shape of the input to `send` when the client is configured to send events using a custom schema.\n */\n Custom: Record<string, unknown>;\n}\n\n/**\n * A map of input schema names to shapes of the options bag for the send method on EventGridPublisherClient.\n */\nexport interface InputSchemaToOptionsTypeMap {\n /**\n * The shape of the options parameter for `send` when the client is configured to send events using the Event Grid schema.\n */\n EventGrid: SendOptions;\n /**\n * The shape of the options parameter for `send` when the client is configured to send events using the Cloud Event schema.\n */\n CloudEvent: CloudEventSendOptions;\n /**\n * The shape of the options parameter for `send` when the client is configured to send events using a custom schema.\n */\n Custom: SendOptions;\n}\n\n/**\n * Allowed schema types, to be used when constructing the EventGridPublisherClient.\n */\nexport type InputSchema = keyof InputSchemaToInputTypeMap;\n\n/**\n * Client class for publishing events to the Event Grid Service.\n */\nexport class EventGridPublisherClient<T extends InputSchema> {\n /**\n * The URL to the Event Grid endpoint.\n */\n public readonly endpointUrl: string;\n\n /**\n * The version of the Even Grid service.\n */\n public readonly apiVersion: string;\n\n /**\n * The AutoRest generated client for the EventGrid dataplane.\n */\n private readonly client: GeneratedClient;\n\n /**\n * The schema that will be used when sending events.\n */\n private readonly inputSchema: InputSchema;\n\n /**\n * Creates an instance of EventGridPublisherClient which sends events using the Event Grid Schema.\n *\n * Example usage:\n * ```ts\n * import { EventGridPublisherClient, AzureKeyCredential } from \"@azure/eventgrid\";\n *\n * const client = new EventGridPublisherClient(\n * \"<service endpoint>\",\n * \"EventGrid\",\n * new AzureKeyCredential(\"<api key>\")\n * );\n * ```\n *\n * @param endpointUrl - The URL to the Event Grid endpoint, e.g. https://eg-topic.westus2-1.eventgrid.azure.net/api/events.\n * @param inputSchema - The schema that the Event Grid endpoint is configured to accept. One of \"EventGrid\", \"CloudEvent\", or \"Custom\".\n * @param credential - Used to authenticate requests to the service.\n * @param options - Used to configure the Event Grid Client.\n */\n constructor(\n endpointUrl: string,\n inputSchema: T,\n credential: KeyCredential | SASCredential | TokenCredential,\n options: EventGridPublisherClientOptions = {},\n ) {\n this.endpointUrl = endpointUrl;\n this.inputSchema = inputSchema;\n\n this.client = new GeneratedClient(options);\n\n const authPolicy = isTokenCredential(credential)\n ? bearerTokenAuthenticationPolicy({ credential, scopes: DEFAULT_EVENTGRID_SCOPE })\n : eventGridCredentialPolicy(credential);\n\n this.client.pipeline.addPolicy(authPolicy);\n this.client.pipeline.addPolicy(cloudEventDistributedTracingEnricherPolicy(), {\n afterPolicies: [tracingPolicyName],\n });\n this.apiVersion = this.client.apiVersion;\n }\n\n /**\n * Sends events to a topic.\n *\n * @param events - The events to send. The events should be in the schema used when constructing the client.\n * @param options - Options to control the underlying operation.\n */\n send(\n events: InputSchemaToInputTypeMap[T][],\n options: InputSchemaToOptionsTypeMap[T] = {},\n ): Promise<void> {\n return tracingClient.withSpan(\"EventGridPublisherClient.send\", options, (updatedOptions) => {\n switch (this.inputSchema) {\n case \"EventGrid\": {\n return this.client.publishEventGridEvents(\n this.endpointUrl,\n (events as InputSchemaToInputTypeMap[\"EventGrid\"][]).map(\n convertEventGridEventToModelType,\n ),\n updatedOptions,\n );\n }\n case \"CloudEvent\": {\n // The underlying REST API expects a header named `aeg-channel-name`, and so the generated client\n // expects that options bag has a property called `aegChannelName`, where as we expose it with the\n // friendlier name \"channelName\". Fix up the impedence mismatch here\n const {\n channelName,\n ...sendOptions\n }: { channelName?: string } & GeneratedClientPublishCloudEventEventsOptionalParams =\n updatedOptions as CloudEventSendOptions;\n\n if (channelName) {\n sendOptions.aegChannelName = channelName;\n }\n\n return this.client.publishCloudEventEvents(\n this.endpointUrl,\n (events as InputSchemaToInputTypeMap[\"CloudEvent\"][]).map(convertCloudEventToModelType),\n sendOptions,\n );\n }\n case \"Custom\": {\n return this.client.publishCustomEventEvents(\n this.endpointUrl,\n events as InputSchemaToInputTypeMap[\"Custom\"][],\n updatedOptions,\n );\n }\n default: {\n throw new Error(`Unknown input schema type '${this.inputSchema}'`);\n }\n }\n });\n }\n}\n\n/**\n * @internal\n */\nexport function convertEventGridEventToModelType(\n event: SendEventGridEventInput<any>,\n): EventGridEventWireModel {\n return {\n eventType: event.eventType,\n eventTime: event.eventTime ?? new Date(),\n id: event.id ?? uuidv4(),\n subject: event.subject,\n topic: event.topic,\n data: event.data,\n dataVersion: event.dataVersion,\n };\n}\n\n/**\n * @internal\n */\nexport function convertCloudEventToModelType(event: SendCloudEventInput<any>): CloudEventWireModel {\n if (event.extensionAttributes) {\n for (const propName in event.extensionAttributes) {\n // Per the cloud events spec: \"CloudEvents attribute names MUST consist of lower-case letters ('a' to 'z') or digits ('0' to '9') from the ASCII character set\"\n // they also can not match an existing defined property name.\n\n if (\n !/^[a-z0-9]*$/.test(propName) ||\n cloudEventReservedPropertyNames.indexOf(propName) !== -1\n ) {\n throw new Error(`invalid extension attribute name: ${propName}`);\n }\n }\n }\n\n const converted: CloudEventWireModel = {\n specversion: \"1.0\",\n type: event.type,\n source: event.source,\n id: event.id ?? uuidv4(),\n time: event.time ?? new Date(),\n subject: event.subject,\n dataschema: event.dataschema,\n ...(event.extensionAttributes ?? []),\n };\n\n if (event.data instanceof Uint8Array) {\n if (!event.datacontenttype) {\n throw new Error(\n \"a data content type must be provided when sending an event with binary data\",\n );\n }\n\n converted.datacontenttype = event.datacontenttype;\n converted.dataBase64 = event.data;\n } else {\n converted.datacontenttype = event.datacontenttype ?? \"application/json\";\n converted.data = event.data;\n }\n\n return converted;\n}\n"]}
|
@@ -14,7 +14,7 @@ import { dateToServiceTimeString } from "./util";
|
|
14
14
|
*/
|
15
15
|
export async function generateSharedAccessSignature(endpointUrl, credential, expiresOnUtc, options) {
|
16
16
|
const expiresOnString = dateToServiceTimeString(expiresOnUtc);
|
17
|
-
const unsignedSas = `r=${encodeURIComponent(`${endpointUrl}?apiVersion=${options
|
17
|
+
const unsignedSas = `r=${encodeURIComponent(`${endpointUrl}?apiVersion=${(options === null || options === void 0 ? void 0 : options.apiVersion) || DEFAULT_API_VERSION}`)}&e=${encodeURIComponent(expiresOnString)}`;
|
18
18
|
return sha256Hmac(credential.key, unsignedSas).then((digest) => `${unsignedSas}&s=${encodeURIComponent(digest)}`);
|
19
19
|
}
|
20
20
|
//# sourceMappingURL=generateSharedAccessSignature.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generateSharedAccessSignature.js","sourceRoot":"","sources":["../../src/generateSharedAccessSignature.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAUjD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,WAAmB,EACnB,UAAyB,EACzB,YAAkB,EAClB,OAA8C;IAE9C,MAAM,eAAe,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,KAAK,kBAAkB,CACzC,GAAG,WAAW,eAAe,OAAO,
|
1
|
+
{"version":3,"file":"generateSharedAccessSignature.js","sourceRoot":"","sources":["../../src/generateSharedAccessSignature.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAUjD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,WAAmB,EACnB,UAAyB,EACzB,YAAkB,EAClB,OAA8C;IAE9C,MAAM,eAAe,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,KAAK,kBAAkB,CACzC,GAAG,WAAW,eAAe,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,KAAI,mBAAmB,EAAE,CAC1E,MAAM,kBAAkB,CAAC,eAAe,CAAC,EAAE,CAAC;IAC7C,OAAO,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,IAAI,CACjD,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,WAAW,MAAM,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAC7D,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { KeyCredential } from \"@azure/core-auth\";\nimport { DEFAULT_API_VERSION } from \"./constants\";\nimport { sha256Hmac } from \"./cryptoHelpers\";\nimport { dateToServiceTimeString } from \"./util\";\n\nexport interface GenerateSharedAccessSignatureOptions {\n /**\n * The API Version to include in the signature. If not provided, the default\n * API version will be used.\n */\n apiVersion?: string;\n}\n\n/**\n * Generate a shared access signature, which allows a client to send events to an Event Grid Topic or Domain for a limited period of time. This\n * function may only be called when the EventGridPublisherClient was constructed with a KeyCredential instance.\n *\n * @param endpointUrl - The endpoint for the topic or domain you wish to generate a shared access signature for.\n * @param credential - The credential to use when generating the shared access signatrue.\n * @param expiresOn - The time at which the shared access signature is no longer valid.\n * @param options - Options to control how the signature is generated.\n */\nexport async function generateSharedAccessSignature(\n endpointUrl: string,\n credential: KeyCredential,\n expiresOnUtc: Date,\n options?: GenerateSharedAccessSignatureOptions,\n): Promise<string> {\n const expiresOnString = dateToServiceTimeString(expiresOnUtc);\n const unsignedSas = `r=${encodeURIComponent(\n `${endpointUrl}?apiVersion=${options?.apiVersion || DEFAULT_API_VERSION}`,\n )}&e=${encodeURIComponent(expiresOnString)}`;\n return sha256Hmac(credential.key, unsignedSas).then(\n (digest) => `${unsignedSas}&s=${encodeURIComponent(digest)}`,\n );\n}\n"]}
|
@@ -24,14 +24,9 @@ export class GeneratedClientContext extends coreClient.ServiceClient {
|
|
24
24
|
const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
25
25
|
? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
|
26
26
|
: `${packageDetails}`;
|
27
|
-
const optionsWithDefaults = {
|
28
|
-
...defaults,
|
29
|
-
...options,
|
30
|
-
userAgentOptions: {
|
27
|
+
const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {
|
31
28
|
userAgentPrefix
|
32
|
-
},
|
33
|
-
baseUri: options.endpoint || "{topicHostname}"
|
34
|
-
};
|
29
|
+
}, baseUri: options.endpoint || "{topicHostname}" });
|
35
30
|
super(optionsWithDefaults);
|
36
31
|
// Assigning values to Constant parameters
|
37
32
|
this.apiVersion = options.apiVersion || "2018-01-01";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generatedClientContext.js","sourceRoot":"","sources":["../../../src/generated/generatedClientContext.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AAGjD,gBAAgB;AAChB,MAAM,OAAO,sBAAuB,SAAQ,UAAU,CAAC,aAAa;IAGlE;;;OAGG;IACH,YAAY,OAAuC;QACjD,0CAA0C;QAC1C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,EAAE,CAAC;SACd;QACD,MAAM,QAAQ,GAAkC;YAC9C,kBAAkB,EAAE,iCAAiC;SACtD,CAAC;QAEF,MAAM,cAAc,GAAG,0BAA0B,CAAC;QAClD,MAAM,eAAe,GACnB,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe;YAClE,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,IAAI,cAAc,EAAE;YACjE,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC;QAE1B,MAAM,mBAAmB,
|
1
|
+
{"version":3,"file":"generatedClientContext.js","sourceRoot":"","sources":["../../../src/generated/generatedClientContext.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AAGjD,gBAAgB;AAChB,MAAM,OAAO,sBAAuB,SAAQ,UAAU,CAAC,aAAa;IAGlE;;;OAGG;IACH,YAAY,OAAuC;QACjD,0CAA0C;QAC1C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,EAAE,CAAC;SACd;QACD,MAAM,QAAQ,GAAkC;YAC9C,kBAAkB,EAAE,iCAAiC;SACtD,CAAC;QAEF,MAAM,cAAc,GAAG,0BAA0B,CAAC;QAClD,MAAM,eAAe,GACnB,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,eAAe;YAClE,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,IAAI,cAAc,EAAE;YACjE,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC;QAE1B,MAAM,mBAAmB,iDACpB,QAAQ,GACR,OAAO,KACV,gBAAgB,EAAE;gBAChB,eAAe;aAChB,EACD,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,iBAAiB,GAC/C,CAAC;QACF,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE3B,0CAA0C;QAC1C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC;IACvD,CAAC;CACF","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport { GeneratedClientOptionalParams } from \"./models\";\n\n/** @internal */\nexport class GeneratedClientContext extends coreClient.ServiceClient {\n apiVersion: string;\n\n /**\n * Initializes a new instance of the GeneratedClientContext class.\n * @param options The parameter options\n */\n constructor(options?: GeneratedClientOptionalParams) {\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: GeneratedClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-eventgrid/5.1.0`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint || \"{topicHostname}\"\n };\n super(optionsWithDefaults);\n\n // Assigning values to Constant parameters\n this.apiVersion = options.apiVersion || \"2018-01-01\";\n }\n}\n"]}
|