@azure/communication-email 1.0.0-beta.1

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.
Files changed (42) hide show
  1. package/LICENSE.txt +21 -0
  2. package/README.md +183 -0
  3. package/dist/index.js +668 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist-esm/samples-dev/checkMessageStatus.js +46 -0
  6. package/dist-esm/samples-dev/checkMessageStatus.js.map +1 -0
  7. package/dist-esm/samples-dev/sendEmailMultipleRecipients.js +59 -0
  8. package/dist-esm/samples-dev/sendEmailMultipleRecipients.js.map +1 -0
  9. package/dist-esm/samples-dev/sendEmailSingleRecipient.js +43 -0
  10. package/dist-esm/samples-dev/sendEmailSingleRecipient.js.map +1 -0
  11. package/dist-esm/samples-dev/sendEmailWithAttachments.js +50 -0
  12. package/dist-esm/samples-dev/sendEmailWithAttachments.js.map +1 -0
  13. package/dist-esm/src/constants.js +4 -0
  14. package/dist-esm/src/constants.js.map +1 -0
  15. package/dist-esm/src/emailClient.js +64 -0
  16. package/dist-esm/src/emailClient.js.map +1 -0
  17. package/dist-esm/src/generated/src/emailRestApiClient.js +26 -0
  18. package/dist-esm/src/generated/src/emailRestApiClient.js.map +1 -0
  19. package/dist-esm/src/generated/src/emailRestApiClientContext.js +38 -0
  20. package/dist-esm/src/generated/src/emailRestApiClientContext.js.map +1 -0
  21. package/dist-esm/src/generated/src/models/index.js +9 -0
  22. package/dist-esm/src/generated/src/models/index.js.map +1 -0
  23. package/dist-esm/src/generated/src/models/mappers.js +331 -0
  24. package/dist-esm/src/generated/src/models/mappers.js.map +1 -0
  25. package/dist-esm/src/generated/src/models/parameters.js +76 -0
  26. package/dist-esm/src/generated/src/models/parameters.js.map +1 -0
  27. package/dist-esm/src/generated/src/operations/email.js +96 -0
  28. package/dist-esm/src/generated/src/operations/email.js.map +1 -0
  29. package/dist-esm/src/generated/src/operations/index.js +9 -0
  30. package/dist-esm/src/generated/src/operations/index.js.map +1 -0
  31. package/dist-esm/src/index.js +5 -0
  32. package/dist-esm/src/index.js.map +1 -0
  33. package/dist-esm/src/logger.js +8 -0
  34. package/dist-esm/src/logger.js.map +1 -0
  35. package/dist-esm/src/models.js +4 -0
  36. package/dist-esm/src/models.js.map +1 -0
  37. package/dist-esm/test/public/emailClient.spec.js +137 -0
  38. package/dist-esm/test/public/emailClient.spec.js.map +1 -0
  39. package/dist-esm/test/public/utils/recordedClient.js +46 -0
  40. package/dist-esm/test/public/utils/recordedClient.js.map +1 -0
  41. package/package.json +110 -0
  42. package/types/communication-email.d.ts +200 -0
package/dist/index.js ADDED
@@ -0,0 +1,668 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var coreHttp = require('@azure/core-http');
6
+ var communicationCommon = require('@azure/communication-common');
7
+ var logger$1 = require('@azure/logger');
8
+ var uuid = require('uuid');
9
+
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n["default"] = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var coreHttp__namespace = /*#__PURE__*/_interopNamespace(coreHttp);
29
+
30
+ /*
31
+ * Copyright (c) Microsoft Corporation.
32
+ * Licensed under the MIT License.
33
+ *
34
+ * Code generated by Microsoft (R) AutoRest Code Generator.
35
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
36
+ */
37
+ const SendStatusResult = {
38
+ type: {
39
+ name: "Composite",
40
+ className: "SendStatusResult",
41
+ modelProperties: {
42
+ messageId: {
43
+ serializedName: "messageId",
44
+ required: true,
45
+ type: {
46
+ name: "String"
47
+ }
48
+ },
49
+ status: {
50
+ serializedName: "status",
51
+ required: true,
52
+ type: {
53
+ name: "String"
54
+ }
55
+ }
56
+ }
57
+ }
58
+ };
59
+ const CommunicationErrorResponse = {
60
+ type: {
61
+ name: "Composite",
62
+ className: "CommunicationErrorResponse",
63
+ modelProperties: {
64
+ error: {
65
+ serializedName: "error",
66
+ type: {
67
+ name: "Composite",
68
+ className: "CommunicationError"
69
+ }
70
+ }
71
+ }
72
+ }
73
+ };
74
+ const CommunicationError = {
75
+ type: {
76
+ name: "Composite",
77
+ className: "CommunicationError",
78
+ modelProperties: {
79
+ code: {
80
+ serializedName: "code",
81
+ required: true,
82
+ type: {
83
+ name: "String"
84
+ }
85
+ },
86
+ message: {
87
+ serializedName: "message",
88
+ required: true,
89
+ type: {
90
+ name: "String"
91
+ }
92
+ },
93
+ target: {
94
+ serializedName: "target",
95
+ readOnly: true,
96
+ type: {
97
+ name: "String"
98
+ }
99
+ },
100
+ details: {
101
+ serializedName: "details",
102
+ readOnly: true,
103
+ type: {
104
+ name: "Sequence",
105
+ element: {
106
+ type: { name: "Composite", className: "CommunicationError" }
107
+ }
108
+ }
109
+ },
110
+ innerError: {
111
+ serializedName: "innererror",
112
+ type: {
113
+ name: "Composite",
114
+ className: "CommunicationError"
115
+ }
116
+ }
117
+ }
118
+ }
119
+ };
120
+ const EmailMessage = {
121
+ type: {
122
+ name: "Composite",
123
+ className: "EmailMessage",
124
+ modelProperties: {
125
+ customHeaders: {
126
+ serializedName: "headers",
127
+ type: {
128
+ name: "Sequence",
129
+ element: {
130
+ type: { name: "Composite", className: "EmailCustomHeader" }
131
+ }
132
+ }
133
+ },
134
+ sender: {
135
+ serializedName: "sender",
136
+ required: true,
137
+ type: {
138
+ name: "String"
139
+ }
140
+ },
141
+ content: {
142
+ serializedName: "content",
143
+ type: {
144
+ name: "Composite",
145
+ className: "EmailContent"
146
+ }
147
+ },
148
+ importance: {
149
+ defaultValue: "normal",
150
+ serializedName: "importance",
151
+ type: {
152
+ name: "String"
153
+ }
154
+ },
155
+ recipients: {
156
+ serializedName: "recipients",
157
+ type: {
158
+ name: "Composite",
159
+ className: "EmailRecipients"
160
+ }
161
+ },
162
+ attachments: {
163
+ serializedName: "attachments",
164
+ type: {
165
+ name: "Sequence",
166
+ element: { type: { name: "Composite", className: "EmailAttachment" } }
167
+ }
168
+ },
169
+ replyTo: {
170
+ serializedName: "replyTo",
171
+ type: {
172
+ name: "Sequence",
173
+ element: { type: { name: "Composite", className: "EmailAddress" } }
174
+ }
175
+ },
176
+ disableUserEngagementTracking: {
177
+ serializedName: "disableUserEngagementTracking",
178
+ type: {
179
+ name: "Boolean"
180
+ }
181
+ }
182
+ }
183
+ }
184
+ };
185
+ const EmailCustomHeader = {
186
+ type: {
187
+ name: "Composite",
188
+ className: "EmailCustomHeader",
189
+ modelProperties: {
190
+ name: {
191
+ serializedName: "name",
192
+ required: true,
193
+ type: {
194
+ name: "String"
195
+ }
196
+ },
197
+ value: {
198
+ serializedName: "value",
199
+ required: true,
200
+ type: {
201
+ name: "String"
202
+ }
203
+ }
204
+ }
205
+ }
206
+ };
207
+ const EmailContent = {
208
+ type: {
209
+ name: "Composite",
210
+ className: "EmailContent",
211
+ modelProperties: {
212
+ subject: {
213
+ serializedName: "subject",
214
+ required: true,
215
+ type: {
216
+ name: "String"
217
+ }
218
+ },
219
+ plainText: {
220
+ serializedName: "plainText",
221
+ type: {
222
+ name: "String"
223
+ }
224
+ },
225
+ html: {
226
+ serializedName: "html",
227
+ type: {
228
+ name: "String"
229
+ }
230
+ }
231
+ }
232
+ }
233
+ };
234
+ const EmailRecipients = {
235
+ type: {
236
+ name: "Composite",
237
+ className: "EmailRecipients",
238
+ modelProperties: {
239
+ to: {
240
+ serializedName: "to",
241
+ required: true,
242
+ type: {
243
+ name: "Sequence",
244
+ element: { type: { name: "Composite", className: "EmailAddress" } }
245
+ }
246
+ },
247
+ cC: {
248
+ serializedName: "cC",
249
+ type: {
250
+ name: "Sequence",
251
+ element: { type: { name: "Composite", className: "EmailAddress" } }
252
+ }
253
+ },
254
+ bCC: {
255
+ serializedName: "bCC",
256
+ type: {
257
+ name: "Sequence",
258
+ element: { type: { name: "Composite", className: "EmailAddress" } }
259
+ }
260
+ }
261
+ }
262
+ }
263
+ };
264
+ const EmailAddress = {
265
+ type: {
266
+ name: "Composite",
267
+ className: "EmailAddress",
268
+ modelProperties: {
269
+ email: {
270
+ serializedName: "email",
271
+ required: true,
272
+ type: {
273
+ name: "String"
274
+ }
275
+ },
276
+ displayName: {
277
+ serializedName: "displayName",
278
+ type: {
279
+ name: "String"
280
+ }
281
+ }
282
+ }
283
+ }
284
+ };
285
+ const EmailAttachment = {
286
+ type: {
287
+ name: "Composite",
288
+ className: "EmailAttachment",
289
+ modelProperties: {
290
+ name: {
291
+ serializedName: "name",
292
+ required: true,
293
+ type: {
294
+ name: "String"
295
+ }
296
+ },
297
+ attachmentType: {
298
+ serializedName: "attachmentType",
299
+ required: true,
300
+ type: {
301
+ name: "String"
302
+ }
303
+ },
304
+ contentBytesBase64: {
305
+ serializedName: "contentBytesBase64",
306
+ required: true,
307
+ type: {
308
+ name: "String"
309
+ }
310
+ }
311
+ }
312
+ }
313
+ };
314
+ const EmailGetSendStatusHeaders = {
315
+ type: {
316
+ name: "Composite",
317
+ className: "EmailGetSendStatusHeaders",
318
+ modelProperties: {
319
+ retryAfter: {
320
+ serializedName: "retry-after",
321
+ type: {
322
+ name: "Number"
323
+ }
324
+ }
325
+ }
326
+ }
327
+ };
328
+ const EmailSendHeaders = {
329
+ type: {
330
+ name: "Composite",
331
+ className: "EmailSendHeaders",
332
+ modelProperties: {
333
+ repeatabilityResult: {
334
+ serializedName: "repeatability-result",
335
+ type: {
336
+ name: "String"
337
+ }
338
+ },
339
+ operationLocation: {
340
+ serializedName: "operation-location",
341
+ type: {
342
+ name: "String"
343
+ }
344
+ },
345
+ retryAfter: {
346
+ serializedName: "retry-after",
347
+ type: {
348
+ name: "Number"
349
+ }
350
+ },
351
+ xMsRequestId: {
352
+ serializedName: "x-ms-request-id",
353
+ type: {
354
+ name: "String"
355
+ }
356
+ }
357
+ }
358
+ }
359
+ };
360
+
361
+ var Mappers = /*#__PURE__*/Object.freeze({
362
+ __proto__: null,
363
+ SendStatusResult: SendStatusResult,
364
+ CommunicationErrorResponse: CommunicationErrorResponse,
365
+ CommunicationError: CommunicationError,
366
+ EmailMessage: EmailMessage,
367
+ EmailCustomHeader: EmailCustomHeader,
368
+ EmailContent: EmailContent,
369
+ EmailRecipients: EmailRecipients,
370
+ EmailAddress: EmailAddress,
371
+ EmailAttachment: EmailAttachment,
372
+ EmailGetSendStatusHeaders: EmailGetSendStatusHeaders,
373
+ EmailSendHeaders: EmailSendHeaders
374
+ });
375
+
376
+ /*
377
+ * Copyright (c) Microsoft Corporation.
378
+ * Licensed under the MIT License.
379
+ *
380
+ * Code generated by Microsoft (R) AutoRest Code Generator.
381
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
382
+ */
383
+ const endpoint = {
384
+ parameterPath: "endpoint",
385
+ mapper: {
386
+ serializedName: "endpoint",
387
+ required: true,
388
+ type: {
389
+ name: "String"
390
+ }
391
+ },
392
+ skipEncoding: true
393
+ };
394
+ const messageId = {
395
+ parameterPath: "messageId",
396
+ mapper: {
397
+ serializedName: "messageId",
398
+ required: true,
399
+ type: {
400
+ name: "String"
401
+ }
402
+ }
403
+ };
404
+ const apiVersion = {
405
+ parameterPath: "apiVersion",
406
+ mapper: {
407
+ defaultValue: "2021-10-01-preview",
408
+ isConstant: true,
409
+ serializedName: "api-version",
410
+ type: {
411
+ name: "String"
412
+ }
413
+ }
414
+ };
415
+ const contentType = {
416
+ parameterPath: ["options", "contentType"],
417
+ mapper: {
418
+ defaultValue: "application/json",
419
+ isConstant: true,
420
+ serializedName: "Content-Type",
421
+ type: {
422
+ name: "String"
423
+ }
424
+ }
425
+ };
426
+ const emailMessage = {
427
+ parameterPath: "emailMessage",
428
+ mapper: EmailMessage
429
+ };
430
+ const repeatabilityRequestId = {
431
+ parameterPath: "repeatabilityRequestId",
432
+ mapper: {
433
+ serializedName: "repeatability-request-id",
434
+ required: true,
435
+ type: {
436
+ name: "String"
437
+ }
438
+ }
439
+ };
440
+ const repeatabilityFirstSent = {
441
+ parameterPath: "repeatabilityFirstSent",
442
+ mapper: {
443
+ serializedName: "repeatability-first-sent",
444
+ required: true,
445
+ type: {
446
+ name: "String"
447
+ }
448
+ }
449
+ };
450
+
451
+ /*
452
+ * Copyright (c) Microsoft Corporation.
453
+ * Licensed under the MIT License.
454
+ *
455
+ * Code generated by Microsoft (R) AutoRest Code Generator.
456
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
457
+ */
458
+ /**
459
+ * Class representing a Email.
460
+ */
461
+ class Email {
462
+ /**
463
+ * Initialize a new instance of the class Email class.
464
+ * @param client Reference to the service client
465
+ */
466
+ constructor(client) {
467
+ this.client = client;
468
+ }
469
+ /**
470
+ * Gets the status of a message sent previously.
471
+ * @param messageId System generated message id (GUID) returned from a previous call to send email
472
+ * @param options The options parameters.
473
+ */
474
+ getSendStatus(messageId, options) {
475
+ const operationOptions = coreHttp__namespace.operationOptionsToRequestOptionsBase(options || {});
476
+ return this.client.sendOperationRequest({ messageId, options: operationOptions }, getSendStatusOperationSpec);
477
+ }
478
+ /**
479
+ * Queues an email message to be sent to one or more recipients
480
+ * @param repeatabilityRequestId If specified, the client directs that the request is repeatable; that
481
+ * is, that the client can make the request multiple times with the same Repeatability-Request-Id and
482
+ * get back an appropriate response without the server executing the request multiple times. The value
483
+ * of the Repeatability-Request-Id is an opaque string representing a client-generated, globally unique
484
+ * for all time, identifier for the request. It is recommended to use version 4 (random) UUIDs.
485
+ * @param repeatabilityFirstSent Must be sent by clients to specify that a request is repeatable.
486
+ * Repeatability-First-Sent is used to specify the date and time at which the request was first created
487
+ * in the IMF-fix date form of HTTP-date as defined in RFC7231. eg- Tue, 26 Mar 2019 16:06:51 GMT
488
+ * @param emailMessage Message payload for sending an email
489
+ * @param options The options parameters.
490
+ */
491
+ send(repeatabilityRequestId, repeatabilityFirstSent, emailMessage, options) {
492
+ const operationOptions = coreHttp__namespace.operationOptionsToRequestOptionsBase(options || {});
493
+ return this.client.sendOperationRequest({
494
+ repeatabilityRequestId,
495
+ repeatabilityFirstSent,
496
+ emailMessage,
497
+ options: operationOptions
498
+ }, sendOperationSpec);
499
+ }
500
+ }
501
+ // Operation Specifications
502
+ const serializer = new coreHttp__namespace.Serializer(Mappers, /* isXml */ false);
503
+ const getSendStatusOperationSpec = {
504
+ path: "/emails/{messageId}/status",
505
+ httpMethod: "GET",
506
+ responses: {
507
+ 200: {
508
+ bodyMapper: SendStatusResult,
509
+ headersMapper: EmailGetSendStatusHeaders
510
+ },
511
+ default: {
512
+ bodyMapper: CommunicationErrorResponse,
513
+ headersMapper: EmailGetSendStatusHeaders
514
+ }
515
+ },
516
+ queryParameters: [apiVersion],
517
+ urlParameters: [endpoint, messageId],
518
+ serializer
519
+ };
520
+ const sendOperationSpec = {
521
+ path: "/emails:send",
522
+ httpMethod: "POST",
523
+ responses: {
524
+ 202: {
525
+ headersMapper: EmailSendHeaders
526
+ },
527
+ default: {
528
+ bodyMapper: CommunicationErrorResponse,
529
+ headersMapper: EmailSendHeaders
530
+ }
531
+ },
532
+ requestBody: emailMessage,
533
+ queryParameters: [apiVersion],
534
+ urlParameters: [endpoint],
535
+ headerParameters: [
536
+ contentType,
537
+ repeatabilityRequestId,
538
+ repeatabilityFirstSent
539
+ ],
540
+ mediaType: "json",
541
+ serializer
542
+ };
543
+
544
+ /*
545
+ * Copyright (c) Microsoft Corporation.
546
+ * Licensed under the MIT License.
547
+ *
548
+ * Code generated by Microsoft (R) AutoRest Code Generator.
549
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
550
+ */
551
+ const packageName = "@azure/communication-email";
552
+ const packageVersion = "1.0.0-beta.1";
553
+ class EmailRestApiClientContext extends coreHttp__namespace.ServiceClient {
554
+ /**
555
+ * Initializes a new instance of the EmailRestApiClientContext class.
556
+ * @param endpoint The communication resource, for example https://my-resource.communication.azure.com
557
+ * @param options The parameter options
558
+ */
559
+ constructor(endpoint, options) {
560
+ if (endpoint === undefined) {
561
+ throw new Error("'endpoint' cannot be null");
562
+ }
563
+ // Initializing default values for options
564
+ if (!options) {
565
+ options = {};
566
+ }
567
+ if (!options.userAgent) {
568
+ const defaultUserAgent = coreHttp__namespace.getDefaultUserAgentValue();
569
+ options.userAgent = `${packageName}/${packageVersion} ${defaultUserAgent}`;
570
+ }
571
+ super(undefined, options);
572
+ this.requestContentType = "application/json; charset=utf-8";
573
+ this.baseUri = options.endpoint || "{endpoint}";
574
+ // Parameter assignments
575
+ this.endpoint = endpoint;
576
+ // Assigning values to Constant parameters
577
+ this.apiVersion = options.apiVersion || "2021-10-01-preview";
578
+ }
579
+ }
580
+
581
+ /*
582
+ * Copyright (c) Microsoft Corporation.
583
+ * Licensed under the MIT License.
584
+ *
585
+ * Code generated by Microsoft (R) AutoRest Code Generator.
586
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
587
+ */
588
+ class EmailRestApiClient extends EmailRestApiClientContext {
589
+ /**
590
+ * Initializes a new instance of the EmailRestApiClient class.
591
+ * @param endpoint The communication resource, for example https://my-resource.communication.azure.com
592
+ * @param options The parameter options
593
+ */
594
+ constructor(endpoint, options) {
595
+ super(endpoint, options);
596
+ this.email = new Email(this);
597
+ }
598
+ }
599
+
600
+ // Copyright (c) Microsoft Corporation.
601
+ // Licensed under the MIT license.
602
+ const SDK_VERSION = "1.0.0-beta.1";
603
+
604
+ // Copyright (c) Microsoft Corporation.
605
+ /**
606
+ * The \@azure/logger configuration for this package.
607
+ */
608
+ const logger = logger$1.createClientLogger("communication-email");
609
+
610
+ // Copyright (c) Microsoft Corporation.
611
+ /**
612
+ * Checks whether the type of a value is EmailClientOptions or not.
613
+ *
614
+ * @param options - The value being checked.
615
+ */
616
+ const isEmailClientOptions = (options) => !!options && !communicationCommon.isKeyCredential(options);
617
+ /**
618
+ * The Email service client.
619
+ */
620
+ class EmailClient {
621
+ constructor(connectionStringOrUrl, credentialOrOptions, maybeOptions = {}) {
622
+ const { url, credential } = communicationCommon.parseClientArguments(connectionStringOrUrl, credentialOrOptions);
623
+ const options = isEmailClientOptions(credentialOrOptions) ? credentialOrOptions : maybeOptions;
624
+ const libInfo = `azsdk-js-communication-email/${SDK_VERSION}`;
625
+ if (!options.userAgentOptions) {
626
+ options.userAgentOptions = {};
627
+ }
628
+ if (options.userAgentOptions.userAgentPrefix) {
629
+ options.userAgentOptions.userAgentPrefix = `${options.userAgentOptions.userAgentPrefix} ${libInfo}`;
630
+ }
631
+ else {
632
+ options.userAgentOptions.userAgentPrefix = libInfo;
633
+ }
634
+ const internalPipelineOptions = Object.assign(Object.assign({}, options), {
635
+ loggingOptions: {
636
+ logger: logger.info,
637
+ },
638
+ });
639
+ const authPolicy = communicationCommon.createCommunicationAuthPolicy(credential);
640
+ const pipeline = coreHttp.createPipelineFromOptions(internalPipelineOptions, authPolicy);
641
+ this.api = new EmailRestApiClient(url, pipeline);
642
+ }
643
+ /**
644
+ * Queues an email message to be sent to one or more recipients
645
+ * @param emailMessage - Message payload for sending an email
646
+ */
647
+ async send(emailMessage) {
648
+ var _a;
649
+ const response = await this.api.email.send(uuid.v4(), new Date().toUTCString(), emailMessage);
650
+ return {
651
+ messageId: (_a = response.xMsRequestId) !== null && _a !== void 0 ? _a : "",
652
+ };
653
+ }
654
+ /**
655
+ * Gets the status of a message sent previously.
656
+ * @param messageId - System generated message id (GUID) returned from a previous call to send email
657
+ */
658
+ async getSendStatus(messageId) {
659
+ const response = await this.api.email.getSendStatus(messageId);
660
+ return {
661
+ messageId: response.messageId,
662
+ status: response.status,
663
+ };
664
+ }
665
+ }
666
+
667
+ exports.EmailClient = EmailClient;
668
+ //# sourceMappingURL=index.js.map