mailgun.js 4.1.4 → 4.2.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 (264) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +129 -28
  3. package/dist/lib/domains.d.ts +4 -1
  4. package/dist/lib/domainsTags.d.ts +34 -0
  5. package/dist/lib/interfaces/DomainTags.d.ts +228 -0
  6. package/dist/mailgun.node.js +2 -2
  7. package/dist/mailgun.node.js.LICENSE.txt +1 -1
  8. package/dist/mailgun.web.js +2 -2
  9. package/dist/mailgun.web.js.LICENSE.txt +1 -1
  10. package/docs/.nojekyll +1 -0
  11. package/docs/assets/highlight.css +127 -0
  12. package/docs/assets/icons.css +1043 -0
  13. package/docs/assets/{images/icons.png → icons.png} +0 -0
  14. package/docs/assets/{images/icons@2x.png → icons@2x.png} +0 -0
  15. package/docs/assets/main.js +52 -0
  16. package/docs/assets/search.js +1 -0
  17. package/docs/assets/style.css +1413 -0
  18. package/docs/assets/{images/widgets.png → widgets.png} +0 -0
  19. package/docs/assets/{images/widgets@2x.png → widgets@2x.png} +0 -0
  20. package/docs/classes/client.default.html +1 -0
  21. package/docs/classes/domains.Domain.html +1 -0
  22. package/docs/classes/domains.default.html +1 -0
  23. package/docs/classes/domainsCredentials.default.html +1 -0
  24. package/docs/classes/domainsTemplates.DomainTemplateItem.html +1 -0
  25. package/docs/classes/domainsTemplates.default.html +1 -0
  26. package/docs/classes/error.default.html +6 -0
  27. package/docs/classes/events.default.html +1 -0
  28. package/docs/classes/ip_pools.default.html +1 -0
  29. package/docs/classes/ips.default.html +1 -0
  30. package/docs/classes/lists.default.html +1 -0
  31. package/docs/classes/mailListMembers.default.html +1 -0
  32. package/docs/classes/messages.default.html +1 -0
  33. package/docs/classes/multipleValidation.default.html +1 -0
  34. package/docs/classes/request.default.html +1 -0
  35. package/docs/classes/routes.default.html +1 -0
  36. package/docs/classes/stats.default.html +1 -0
  37. package/docs/classes/suppressions.default.html +1 -0
  38. package/docs/classes/validate.default.html +1 -0
  39. package/docs/classes/webhooks.default.html +1 -0
  40. package/docs/enums/interfaces_DomainTemplates.Pages.html +1 -0
  41. package/docs/enums/interfaces_DomainTemplates.YesNo.html +1 -0
  42. package/docs/index.html +1140 -1308
  43. package/docs/interfaces/interfaces_APIErrorOptions.default.html +1 -0
  44. package/docs/interfaces/interfaces_ApiResponse.default.html +1 -0
  45. package/docs/interfaces/interfaces_DomainCredentials.CreatedUpdatedDomainCredentialsResponse.html +1 -0
  46. package/docs/interfaces/interfaces_DomainCredentials.DeletedDomainCredentialsResponse.html +1 -0
  47. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentials.html +1 -0
  48. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsItem.html +1 -0
  49. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsList.html +1 -0
  50. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsQuery.html +1 -0
  51. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResponseData.html +1 -0
  52. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResult.html +1 -0
  53. package/docs/interfaces/interfaces_DomainCredentials.IDomainCredentials.html +1 -0
  54. package/docs/interfaces/interfaces_DomainCredentials.UpdateDomainCredentialsData.html +1 -0
  55. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateAPIResponse.html +1 -0
  56. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionAPIResponse.html +1 -0
  57. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionResult.html +1 -0
  58. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplate.html +1 -0
  59. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateData.html +1 -0
  60. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateData.html +1 -0
  61. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateVersionData.html +1 -0
  62. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateVersionData.html +1 -0
  63. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplatesQuery.html +1 -0
  64. package/docs/interfaces/interfaces_DomainTemplates.GetDomainTemplateAPIResponse.html +1 -0
  65. package/docs/interfaces/interfaces_DomainTemplates.IDomainTemplatesClient.html +1 -0
  66. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsAPIResponse.html +1 -0
  67. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsResult.html +1 -0
  68. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesAPIResponse.html +1 -0
  69. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesResult.html +1 -0
  70. package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionAPIResponse.html +1 -0
  71. package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionResult.html +1 -0
  72. package/docs/interfaces/interfaces_DomainTemplates.NotificationAPIResponse.html +1 -0
  73. package/docs/interfaces/interfaces_DomainTemplates.NotificationResult.html +1 -0
  74. package/docs/interfaces/interfaces_DomainTemplates.ShortTemplateVersion.html +1 -0
  75. package/docs/interfaces/interfaces_DomainTemplates.TemplateQuery.html +1 -0
  76. package/docs/interfaces/interfaces_DomainTemplates.TemplateVersion.html +1 -0
  77. package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateAPIResponse.html +1 -0
  78. package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateResult.html +1 -0
  79. package/docs/interfaces/interfaces_DomainTracking.ClickTrackingInfo.html +1 -0
  80. package/docs/interfaces/interfaces_DomainTracking.DomainTrackingData.html +1 -0
  81. package/docs/interfaces/interfaces_DomainTracking.DomainTrackingResponse.html +1 -0
  82. package/docs/interfaces/interfaces_DomainTracking.OpenTrackingInfo.html +1 -0
  83. package/docs/interfaces/interfaces_DomainTracking.UnsubscribeTrackingInfo.html +1 -0
  84. package/docs/interfaces/interfaces_DomainTracking.UpdateDomainTrackingResponse.html +1 -0
  85. package/docs/interfaces/interfaces_DomainTracking.UpdatedOpenTracking.html +1 -0
  86. package/docs/interfaces/interfaces_Domains.ConnectionSettings.html +1 -0
  87. package/docs/interfaces/interfaces_Domains.ConnectionSettingsResponse.html +1 -0
  88. package/docs/interfaces/interfaces_Domains.DKIMAuthorityInfo.html +1 -0
  89. package/docs/interfaces/interfaces_Domains.DKIMSelectorInfo.html +1 -0
  90. package/docs/interfaces/interfaces_Domains.DNSRecord.html +1 -0
  91. package/docs/interfaces/interfaces_Domains.DestroyedDomainResponse.html +1 -0
  92. package/docs/interfaces/interfaces_Domains.DomainData.html +1 -0
  93. package/docs/interfaces/interfaces_Domains.DomainInfo.html +1 -0
  94. package/docs/interfaces/interfaces_Domains.DomainListResponseData.html +1 -0
  95. package/docs/interfaces/interfaces_Domains.DomainResponseData.html +1 -0
  96. package/docs/interfaces/interfaces_Domains.DomainShortData.html +1 -0
  97. package/docs/interfaces/interfaces_Domains.DomainsListItem.html +1 -0
  98. package/docs/interfaces/interfaces_Domains.DomainsQuery.html +1 -0
  99. package/docs/interfaces/interfaces_Domains.MessageResponse.html +1 -0
  100. package/docs/interfaces/interfaces_Domains.ReplacementForPool.html +1 -0
  101. package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettings.html +1 -0
  102. package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettingsRes.html +1 -0
  103. package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthority.html +1 -0
  104. package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthorityResponse.html +1 -0
  105. package/docs/interfaces/interfaces_Domains.UpdatedDKIMSelectorResponse.html +1 -0
  106. package/docs/interfaces/interfaces_Domains.UpdatedWebPrefix.html +1 -0
  107. package/docs/interfaces/interfaces_Domains.UpdatedWebPrefixResponse.html +1 -0
  108. package/docs/interfaces/interfaces_Domains.WebPrefixInfo.html +1 -0
  109. package/docs/interfaces/interfaces_Events.DomainEvent.html +1 -0
  110. package/docs/interfaces/interfaces_Events.EventsList.html +1 -0
  111. package/docs/interfaces/interfaces_Events.EventsPage.html +1 -0
  112. package/docs/interfaces/interfaces_Events.EventsResponse.html +1 -0
  113. package/docs/interfaces/interfaces_Events.PagesList.html +1 -0
  114. package/docs/interfaces/interfaces_Events.PagesListAccumulator.html +1 -0
  115. package/docs/interfaces/interfaces_Events.ParsedPage.html +1 -0
  116. package/docs/interfaces/interfaces_Events.ParsedPagesList.html +1 -0
  117. package/docs/interfaces/interfaces_IFormData.IFormDataOptions.html +1 -0
  118. package/docs/interfaces/interfaces_IFormData.InputFormData.html +1 -0
  119. package/docs/interfaces/interfaces_IpPools.IpPool.html +1 -0
  120. package/docs/interfaces/interfaces_IpPools.IpPoolListResponse.html +1 -0
  121. package/docs/interfaces/interfaces_IpPools.IpPoolUpdateData.html +1 -0
  122. package/docs/interfaces/interfaces_Ips.IpData.html +1 -0
  123. package/docs/interfaces/interfaces_Ips.IpsListResponseBody.html +1 -0
  124. package/docs/interfaces/interfaces_MultipleValidation.CanceledMultipleValidationJob.html +1 -0
  125. package/docs/interfaces/interfaces_MultipleValidation.CreatedMultipleValidationJob.html +1 -0
  126. package/docs/interfaces/interfaces_MultipleValidation.IMultipleValidationClient.html +1 -0
  127. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJob.html +1 -0
  128. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResponse.html +1 -0
  129. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResult.html +1 -0
  130. package/docs/interfaces/interfaces_MultipleValidation.PagesList.html +1 -0
  131. package/docs/interfaces/interfaces_Options.default.html +1 -0
  132. package/docs/interfaces/interfaces_RequestOptions.default.html +1 -0
  133. package/docs/interfaces/interfaces_StatsOptions.Stat.html +1 -0
  134. package/docs/interfaces/interfaces_StatsOptions.StatsOptions.html +1 -0
  135. package/docs/interfaces/interfaces_StatsOptions.StatsQuery.html +1 -0
  136. package/docs/interfaces/interfaces_Supressions.BounceData.html +1 -0
  137. package/docs/interfaces/interfaces_Supressions.ComplaintData.html +1 -0
  138. package/docs/interfaces/interfaces_Supressions.UnsubscribeData.html +1 -0
  139. package/docs/interfaces/interfaces_Supressions.WhiteListData.html +1 -0
  140. package/docs/interfaces/interfaces_Validate.ValidationResponse.html +1 -0
  141. package/docs/interfaces/interfaces_Validate.ValidationResult.html +1 -0
  142. package/docs/interfaces/interfaces_Webhooks.APIWebhook.html +1 -0
  143. package/docs/interfaces/interfaces_Webhooks.ValidationResponse.html +1 -0
  144. package/docs/interfaces/interfaces_Webhooks.WebhookList.html +1 -0
  145. package/docs/interfaces/interfaces_Webhooks.WebhookResponse.html +1 -0
  146. package/docs/interfaces/interfaces_Webhooks.WebhookResponseBody.html +1 -0
  147. package/docs/interfaces/interfaces_Webhooks.WebhooksQuery.html +1 -0
  148. package/docs/interfaces/interfaces_lists.CreateUpdateList.html +1 -0
  149. package/docs/interfaces/interfaces_lists.DestroyedList.html +1 -0
  150. package/docs/interfaces/interfaces_lists.ListsQuery.html +1 -0
  151. package/docs/interfaces/interfaces_lists.MailingList.html +1 -0
  152. package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembers.html +1 -0
  153. package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembersReq.html +1 -0
  154. package/docs/interfaces/interfaces_mailListMembers.DeletedMember.html +1 -0
  155. package/docs/interfaces/interfaces_mailListMembers.IMailListsMembers.html +1 -0
  156. package/docs/interfaces/interfaces_mailListMembers.MailListMember.html +1 -0
  157. package/docs/interfaces/interfaces_mailListMembers.MailListMembersQuery.html +1 -0
  158. package/docs/interfaces/interfaces_mailListMembers.MultipleMembersData.html +1 -0
  159. package/docs/interfaces/interfaces_mailListMembers.MultipleMembersReqData.html +1 -0
  160. package/docs/interfaces/interfaces_mailListMembers.NewMultipleMembersResponse.html +1 -0
  161. package/docs/interfaces/interfaces_routes.CreateUpdateRouteData.html +1 -0
  162. package/docs/interfaces/interfaces_routes.DestroyRouteResponse.html +1 -0
  163. package/docs/interfaces/interfaces_routes.Route.html +1 -0
  164. package/docs/interfaces/interfaces_routes.RoutesListQuery.html +1 -0
  165. package/docs/interfaces/interfaces_routes.UpdateRouteResponse.html +1 -0
  166. package/docs/modules/client.html +1 -0
  167. package/docs/modules/domains.html +1 -0
  168. package/docs/modules/domainsCredentials.html +1 -0
  169. package/docs/modules/domainsTemplates.html +1 -0
  170. package/docs/modules/error.html +1 -0
  171. package/docs/modules/events.html +1 -0
  172. package/docs/modules/interfaces_APIErrorOptions.html +1 -0
  173. package/docs/modules/interfaces_ApiResponse.html +1 -0
  174. package/docs/modules/interfaces_DomainCredentials.html +1 -0
  175. package/docs/modules/interfaces_DomainTemplates.html +1 -0
  176. package/docs/modules/interfaces_DomainTracking.html +1 -0
  177. package/docs/modules/interfaces_Domains.html +1 -0
  178. package/docs/modules/interfaces_Events.html +1 -0
  179. package/docs/modules/interfaces_IFormData.html +1 -0
  180. package/docs/modules/interfaces_IpPools.html +1 -0
  181. package/docs/modules/interfaces_Ips.html +1 -0
  182. package/docs/modules/interfaces_MultipleValidation.html +1 -0
  183. package/docs/modules/interfaces_Options.html +1 -0
  184. package/docs/modules/interfaces_RequestOptions.html +1 -0
  185. package/docs/modules/interfaces_StatsOptions.html +1 -0
  186. package/docs/modules/interfaces_Supressions.html +1 -0
  187. package/docs/modules/interfaces_Validate.html +1 -0
  188. package/docs/modules/interfaces_Webhooks.html +1 -0
  189. package/docs/modules/interfaces_lists.html +1 -0
  190. package/docs/modules/interfaces_mailListMembers.html +1 -0
  191. package/docs/modules/interfaces_routes.html +1 -0
  192. package/docs/modules/ip_pools.html +1 -0
  193. package/docs/modules/ips.html +1 -0
  194. package/docs/modules/lists.html +1 -0
  195. package/docs/modules/mailListMembers.html +1 -0
  196. package/docs/modules/messages.html +1 -0
  197. package/docs/modules/multipleValidation.html +1 -0
  198. package/docs/modules/request.html +1 -0
  199. package/docs/modules/routes.html +1 -0
  200. package/docs/modules/stats.html +1 -0
  201. package/docs/modules/suppressions.html +1 -0
  202. package/docs/modules/validate.html +1 -0
  203. package/docs/modules/webhooks.html +1 -0
  204. package/docs/modules.html +1 -0
  205. package/lib/client.ts +8 -1
  206. package/lib/domains.ts +7 -2
  207. package/lib/domainsTags.ts +165 -0
  208. package/lib/interfaces/DomainTags.ts +262 -0
  209. package/lib/request.ts +1 -1
  210. package/package.json +3 -3
  211. package/test/domains.test.ts +8 -1
  212. package/test/domainsTags.test.ts +345 -0
  213. package/tsconfig.json +2 -2
  214. package/docs/assets/css/main.css +0 -1
  215. package/docs/assets/js/main.js +0 -51
  216. package/docs/assets/js/search.json +0 -1
  217. package/docs/classes/_index_.mailgun.html +0 -294
  218. package/docs/classes/_lib_client_.client.html +0 -405
  219. package/docs/classes/_lib_domains_.domain.html +0 -422
  220. package/docs/classes/_lib_domains_.domainclient.html +0 -620
  221. package/docs/classes/_lib_error_.apierror.html +0 -362
  222. package/docs/classes/_lib_events_.eventclient.html +0 -465
  223. package/docs/classes/_lib_messages_.messagesclient.html +0 -327
  224. package/docs/classes/_lib_parse_.parseclient.html +0 -295
  225. package/docs/classes/_lib_request_.request.html +0 -698
  226. package/docs/classes/_lib_routes_.routesclient.html +0 -403
  227. package/docs/classes/_lib_stats_.stats.html +0 -301
  228. package/docs/classes/_lib_stats_.statsclient.html +0 -357
  229. package/docs/classes/_lib_suppressions_.bounce.html +0 -327
  230. package/docs/classes/_lib_suppressions_.complaint.html +0 -299
  231. package/docs/classes/_lib_suppressions_.suppressionclient.html +0 -599
  232. package/docs/classes/_lib_suppressions_.unsubscribe.html +0 -313
  233. package/docs/classes/_lib_validate_.validateclient.html +0 -292
  234. package/docs/classes/_lib_webhooks_.webhook.html +0 -281
  235. package/docs/classes/_lib_webhooks_.webhookclient.html +0 -539
  236. package/docs/globals.html +0 -199
  237. package/docs/interfaces/_lib_domains_.domaindata.html +0 -352
  238. package/docs/interfaces/_lib_interfaces_apierroroptions_.apierroroptions.html +0 -284
  239. package/docs/interfaces/_lib_interfaces_options_.options.html +0 -267
  240. package/docs/interfaces/_lib_interfaces_requestoptions_.requestoptions.html +0 -285
  241. package/docs/interfaces/_lib_interfaces_statsoptions_.statsoptions.html +0 -262
  242. package/docs/interfaces/_lib_interfaces_supressions_.bouncedata.html +0 -268
  243. package/docs/interfaces/_lib_interfaces_supressions_.complaintdata.html +0 -240
  244. package/docs/interfaces/_lib_interfaces_supressions_.unsubscribedata.html +0 -254
  245. package/docs/modules/_index_.html +0 -186
  246. package/docs/modules/_lib_client_.html +0 -208
  247. package/docs/modules/_lib_domains_.html +0 -199
  248. package/docs/modules/_lib_error_.html +0 -186
  249. package/docs/modules/_lib_events_.html +0 -250
  250. package/docs/modules/_lib_interfaces_apierroroptions_.html +0 -186
  251. package/docs/modules/_lib_interfaces_options_.html +0 -186
  252. package/docs/modules/_lib_interfaces_requestoptions_.html +0 -186
  253. package/docs/modules/_lib_interfaces_statsoptions_.html +0 -186
  254. package/docs/modules/_lib_interfaces_supressions_.html +0 -194
  255. package/docs/modules/_lib_messages_.html +0 -186
  256. package/docs/modules/_lib_parse_.html +0 -186
  257. package/docs/modules/_lib_request_.html +0 -259
  258. package/docs/modules/_lib_routes_.html +0 -186
  259. package/docs/modules/_lib_stats_.html +0 -190
  260. package/docs/modules/_lib_suppressions_.html +0 -262
  261. package/docs/modules/_lib_validate_.html +0 -186
  262. package/docs/modules/_lib_webhooks_.html +0 -190
  263. package/docs/modules/_webpack_config_.html +0 -227
  264. package/docs/modules/_webpack_release_config_.html +0 -227
package/lib/client.ts CHANGED
@@ -19,6 +19,7 @@ import { InputFormData } from './interfaces/IFormData';
19
19
  import DomainCredentialsClient from './domainsCredentials';
20
20
  import MultipleValidationClient from './multipleValidation';
21
21
  import DomainTemplatesClient from './domainsTemplates';
22
+ import DomainTagsClient from './domainsTags';
22
23
 
23
24
  export default class Client {
24
25
  private request;
@@ -55,9 +56,15 @@ export default class Client {
55
56
  const mailListsMembers = new MailListsMembers(this.request);
56
57
  const domainCredentialsClient = new DomainCredentialsClient(this.request);
57
58
  const domainTemplatesClient = new DomainTemplatesClient(this.request);
59
+ const domainTagsClient = new DomainTagsClient(this.request);
58
60
  const multipleValidationClient = new MultipleValidationClient(this.request);
59
61
 
60
- this.domains = new DomainClient(this.request, domainCredentialsClient, domainTemplatesClient);
62
+ this.domains = new DomainClient(
63
+ this.request,
64
+ domainCredentialsClient,
65
+ domainTemplatesClient,
66
+ domainTagsClient
67
+ );
61
68
  this.webhooks = new WebhookClient(this.request);
62
69
  this.events = new EventClient(this.request);
63
70
  this.stats = new StatsClient(this.request);
package/lib/domains.ts CHANGED
@@ -41,6 +41,8 @@ import { IDomainCredentials } from './interfaces/DomainCredentials';
41
41
  import { IDomainTemplatesClient } from './interfaces/DomainTemplates';
42
42
  import DomainCredentialsClient from './domainsCredentials';
43
43
  import DomainTemplatesClient from './domainsTemplates';
44
+ import { IDomainTagsClient } from './interfaces/DomainTags';
45
+ import DomainTagsClient from './domainsTags';
44
46
 
45
47
  export class Domain {
46
48
  name: string;
@@ -76,16 +78,19 @@ export class Domain {
76
78
  export default class DomainClient {
77
79
  request: Request;
78
80
  public domainCredentials: IDomainCredentials;
79
- public domainTemplates: IDomainTemplatesClient
81
+ public domainTemplates: IDomainTemplatesClient;
82
+ public domainTags: IDomainTagsClient;
80
83
 
81
84
  constructor(
82
85
  request: Request,
83
86
  domainCredentialsClient: DomainCredentialsClient,
84
- domainTemplatesClient: DomainTemplatesClient
87
+ domainTemplatesClient: DomainTemplatesClient,
88
+ domainTagsClient: DomainTagsClient
85
89
  ) {
86
90
  this.request = request;
87
91
  this.domainCredentials = domainCredentialsClient;
88
92
  this.domainTemplates = domainTemplatesClient;
93
+ this.domainTags = domainTagsClient;
89
94
  }
90
95
 
91
96
  private _parseMessage(response: DestroyedDomainResponse) : MessageResponse {
@@ -0,0 +1,165 @@
1
+ import urljoin from 'url-join';
2
+ import APIResponse from './interfaces/ApiResponse';
3
+ import Request from './request';
4
+
5
+ import {
6
+ DomainTagAPIResponseStatsItem,
7
+ DomainTagCountriesAggregation,
8
+ DomainTagCountriesAPIResponse,
9
+ DomainTagDevicesAggregation,
10
+ DomainTagDevicesAPIResponse,
11
+ DomainTagProvidersAggregation,
12
+ DomainTagProvidersAPIResponse,
13
+ DomainTagsItem,
14
+ DomainTagsItemInfo,
15
+ DomainTagsList,
16
+ DomainTagsMessageRes,
17
+ DomainTagsQuery,
18
+ DomainTagsResponseData,
19
+ DomainTagsStatisticQuery,
20
+ DomainTagStatAPIResponse,
21
+ DomainTagStatisticItem,
22
+ DomainTagStatisticResult,
23
+ IDomainTagsClient,
24
+ PagesList,
25
+ PagesListAccumulator,
26
+ ParsedPagesList,
27
+ Resolution
28
+ } from './interfaces/DomainTags';
29
+
30
+ export class DomainTag implements DomainTagsItem {
31
+ tag: string;
32
+ description: string;
33
+ 'first-seen': Date;
34
+ 'last-seen': Date;
35
+
36
+ constructor(tagInfo: DomainTagsItemInfo) {
37
+ this.tag = tagInfo.tag;
38
+ this.description = tagInfo.description;
39
+ this['first-seen'] = new Date(tagInfo['first-seen']);
40
+ this['last-seen'] = new Date(tagInfo['last-seen']);
41
+ }
42
+ }
43
+
44
+ export class DomainTagStatistic implements DomainTagStatisticResult {
45
+ tag: string;
46
+ description: string;
47
+ start: Date;
48
+ end: Date;
49
+ resolution: Resolution;
50
+ stats: DomainTagStatisticItem[];
51
+
52
+ constructor(tagStatisticInfo: DomainTagStatAPIResponse) {
53
+ this.tag = tagStatisticInfo.body.tag;
54
+ this.description = tagStatisticInfo.body.description;
55
+ this.start = new Date(tagStatisticInfo.body.start);
56
+ this.end = new Date(tagStatisticInfo.body.end);
57
+ this.resolution = tagStatisticInfo.body.resolution;
58
+ this.stats = tagStatisticInfo.body.stats.map(function (stat: DomainTagAPIResponseStatsItem) {
59
+ const res = { ...stat, time: new Date(stat.time) };
60
+ return res;
61
+ });
62
+ }
63
+ }
64
+
65
+ export default class DomainTagsClient implements IDomainTagsClient {
66
+ baseRoute: string;
67
+ request: Request;
68
+
69
+ constructor(request: Request) {
70
+ this.request = request;
71
+ this.baseRoute = '/v3/';
72
+ }
73
+
74
+ private _parsePageLinks(response: DomainTagsResponseData): ParsedPagesList {
75
+ const pages = Object.entries(response.body.paging as PagesList);
76
+ return pages.reduce(
77
+ (acc: PagesListAccumulator, entrie: [url: string, id: string]) => {
78
+ const id = entrie[0];
79
+ const url = entrie[1];
80
+ acc[id] = {
81
+ id,
82
+ url
83
+ };
84
+ return acc;
85
+ }, {}
86
+ ) as unknown as ParsedPagesList;
87
+ }
88
+
89
+ private _parseDomainTagsList(
90
+ response: DomainTagsResponseData
91
+ ): DomainTagsList {
92
+ return {
93
+ items: response.body.items.map((tagInfo) => new DomainTag(tagInfo)),
94
+ pages: this._parsePageLinks(response)
95
+ };
96
+ }
97
+
98
+ private _parseTagStatistic(
99
+ response: DomainTagStatAPIResponse
100
+ ): DomainTagStatistic {
101
+ return new DomainTagStatistic(response);
102
+ }
103
+
104
+ list(domain: string, query?: DomainTagsQuery): Promise<DomainTagsList> {
105
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags'), query)
106
+ .then(
107
+ (res: APIResponse) => this._parseDomainTagsList(res as DomainTagsResponseData)
108
+ );
109
+ }
110
+
111
+ get(domain: string, tag: string): Promise<DomainTagsItem> {
112
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags', tag))
113
+ .then(
114
+ (res: APIResponse) => new DomainTag(res.body)
115
+ );
116
+ }
117
+
118
+ update(domain: string, tag: string, description: string): Promise<DomainTagsMessageRes> {
119
+ return this.request.put(urljoin(this.baseRoute, domain, '/tags', tag), description)
120
+ .then(
121
+ (res: APIResponse) => res.body as DomainTagsMessageRes
122
+ );
123
+ }
124
+
125
+ destroy(
126
+ domain: string,
127
+ tag: string
128
+ ): Promise<DomainTagsMessageRes> {
129
+ return this.request.delete(`${this.baseRoute}${domain}/tags/${tag}`)
130
+ .then((res: APIResponse) => (
131
+ {
132
+ message: res.body.message,
133
+ status: res.status
134
+ } as DomainTagsMessageRes));
135
+ }
136
+
137
+ statistic(domain: string, tag: string, query: DomainTagsStatisticQuery)
138
+ : Promise<DomainTagStatistic> {
139
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags', tag, 'stats'), query)
140
+ .then(
141
+ (res: APIResponse) => this._parseTagStatistic(res)
142
+ );
143
+ }
144
+
145
+ countries(domain: string, tag: string): Promise<DomainTagCountriesAggregation> {
146
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags', tag, 'stats/aggregates/countries'))
147
+ .then(
148
+ (res: DomainTagCountriesAPIResponse) => res.body as DomainTagCountriesAggregation
149
+ );
150
+ }
151
+
152
+ providers(domain: string, tag: string): Promise<DomainTagProvidersAggregation> {
153
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags', tag, 'stats/aggregates/providers'))
154
+ .then(
155
+ (res: DomainTagProvidersAPIResponse) => res.body as DomainTagProvidersAggregation
156
+ );
157
+ }
158
+
159
+ devices(domain: string, tag: string): Promise<DomainTagDevicesAggregation> {
160
+ return this.request.get(urljoin(this.baseRoute, domain, '/tags', tag, 'stats/aggregates/devices'))
161
+ .then(
162
+ (res: DomainTagDevicesAPIResponse) => res.body as DomainTagDevicesAggregation
163
+ );
164
+ }
165
+ }
@@ -0,0 +1,262 @@
1
+ /* eslint-disable camelcase */
2
+ import { DomainTagStatistic } from '../domainsTags';
3
+
4
+ export enum Resolution {
5
+ HOUR = 'hour',
6
+ DAY = 'day',
7
+ MONTH = 'month'
8
+ }
9
+ export interface DomainTagsQuery {
10
+ limit: number;
11
+ }
12
+
13
+ export interface DomainTagsStatisticQuery {
14
+ event: string;
15
+ start?: number;
16
+ end?: number;
17
+ resolution?: Resolution;
18
+ duration?: string;
19
+ }
20
+
21
+ export interface DomainTagsItemInfo {
22
+ tag: string,
23
+ description: string,
24
+ 'first-seen': string,
25
+ 'last-seen': string
26
+ }
27
+
28
+ export interface DomainTagsItem {
29
+ tag: string,
30
+ description: string,
31
+ 'first-seen': Date,
32
+ 'last-seen': Date
33
+ }
34
+
35
+ export interface PagesList {
36
+ previous: string;
37
+ first: string;
38
+ last: string;
39
+ next: string;
40
+ }
41
+
42
+ export interface ParsedPage{
43
+ id: string;
44
+ url: string
45
+ }
46
+ export interface ParsedPagesList {
47
+ previous: ParsedPage;
48
+ first: ParsedPage;
49
+ last: ParsedPage;
50
+ next: ParsedPage;
51
+ }
52
+
53
+ export interface TagsPage {
54
+ id: string;
55
+ url: string;
56
+ }
57
+
58
+ export interface PagesListAccumulator {
59
+ [index: string]: TagsPage
60
+ }
61
+ export interface DomainTagsResponseData {
62
+ status: number;
63
+ body: {
64
+ items: DomainTagsItemInfo[];
65
+ paging: PagesList
66
+ }
67
+ }
68
+
69
+ export interface DomainTagsList {
70
+ items: DomainTagsItem[];
71
+ pages: ParsedPagesList;
72
+ }
73
+
74
+ export interface DomainTagsMessageRes {
75
+ message: string;
76
+ status?: number;
77
+ }
78
+
79
+ export interface DomainTagAPIResponseStatsItem {
80
+ time:string
81
+ accepted?: {
82
+ incoming: number;
83
+ outgoing: number;
84
+ total: number
85
+ }
86
+ delivered?: {
87
+ smtp: number;
88
+ http: number;
89
+ optimized: number;
90
+ total: number;
91
+ };
92
+ opened?: {
93
+ total: number;
94
+ };
95
+ failed?: {
96
+ temporary:{
97
+ espblock: number;
98
+ total: number;
99
+ };
100
+ permanent: {
101
+ 'suppress-bounce': number;
102
+ 'suppress-unsubscribe': number;
103
+ 'suppress-complaint': number;
104
+ bounce: number;
105
+ 'delayed-bounce': number;
106
+ webhook: number;
107
+ optimized: number;
108
+ total: number;
109
+ };
110
+ },
111
+ clicked?: {
112
+ total: number;
113
+ };
114
+ unsubscribed?: {
115
+ total: number;
116
+ };
117
+ complained?: {
118
+ total: number;
119
+ };
120
+ stored?: {
121
+ total: number;
122
+ }
123
+ }
124
+ export interface DomainTagStatAPIResponse {
125
+ body:{
126
+ tag: string;
127
+ description: string;
128
+ start: string;
129
+ end: string;
130
+ resolution: Resolution;
131
+ stats: DomainTagAPIResponseStatsItem[];
132
+ }
133
+ }
134
+ export interface DomainTagStatisticItem extends Omit <DomainTagAPIResponseStatsItem, 'time'>{
135
+ time: Date
136
+ }
137
+
138
+ export interface DomainTagStatisticResult {
139
+ tag: string;
140
+ description: string;
141
+ start: Date;
142
+ end: Date;
143
+ resolution: Resolution;
144
+ stats: DomainTagStatisticItem[];
145
+ }
146
+
147
+ export interface DomainTagCountriesAPIResponse {
148
+ body: {
149
+ tag:string;
150
+ country: {
151
+ [key:string]: {
152
+ clicked: number;
153
+ complained: number;
154
+ opened: number;
155
+ unique_clicked: number;
156
+ unique_opened: number;
157
+ unsubscribed: number;
158
+ }
159
+ };
160
+ }
161
+ }
162
+
163
+ export interface DomainTagCountriesAggregation {
164
+ tag:string;
165
+ country: {
166
+ [key: string]: {
167
+ clicked: number;
168
+ complained: number;
169
+ opened: number;
170
+ unique_clicked: number;
171
+ unique_opened: number;
172
+ unsubscribed: number;
173
+ }
174
+ }
175
+ }
176
+
177
+ export interface DomainTagProvidersAPIResponse {
178
+ body: {
179
+ tag:string;
180
+ provider: {
181
+ [key:string]: {
182
+ accepted: number;
183
+ clicked: number;
184
+ complained: number;
185
+ delivered: number;
186
+ opened: number;
187
+ unique_clicked: number;
188
+ unique_opened: number;
189
+ unsubscribed: number;
190
+ }
191
+ };
192
+ }
193
+ status: number;
194
+ }
195
+
196
+ export interface DomainTagProvidersAggregation {
197
+ tag: string;
198
+ provider: {
199
+ [key: string]: {
200
+ accepted: number;
201
+ clicked: number;
202
+ complained: number;
203
+ delivered: number;
204
+ opened: number;
205
+ unique_clicked: number;
206
+ unique_opened: number;
207
+ unsubscribed: number;
208
+ }
209
+ };
210
+ }
211
+
212
+ export interface DeviceStatistic {
213
+ clicked: number;
214
+ complained: number;
215
+ opened: number;
216
+ unique_clicked: number;
217
+ unique_opened: number;
218
+ unsubscribed: number;
219
+ }
220
+
221
+ export interface DevicesTypes {
222
+ desktop: DeviceStatistic;
223
+ mobile: DeviceStatistic;
224
+ tablet: DeviceStatistic;
225
+ unknown: DeviceStatistic;
226
+ }
227
+
228
+ export interface DomainTagDevicesAPIResponse {
229
+ body: {
230
+ tag:string;
231
+ device: DevicesTypes;
232
+ }
233
+ status: number;
234
+ }
235
+
236
+ export interface DomainTagDevicesAggregation {
237
+ tag: string;
238
+ device: DevicesTypes;
239
+ }
240
+
241
+
242
+ export interface IDomainTagsClient {
243
+ list(domain: string): Promise<DomainTagsList>
244
+ get(domain: string, tag: string): Promise<DomainTagsItem>
245
+ update(
246
+ domain: string,
247
+ tag: string,
248
+ description: string
249
+ ): Promise<DomainTagsMessageRes>
250
+ destroy(
251
+ domain: string,
252
+ tag: string
253
+ ): Promise<DomainTagsMessageRes>
254
+ statistic(
255
+ domain: string,
256
+ tag: string,
257
+ query: DomainTagsStatisticQuery
258
+ ): Promise<DomainTagStatistic>
259
+ countries(domain: string, tag: string): Promise<DomainTagCountriesAggregation>
260
+ providers(domain: string, tag: string): Promise<DomainTagProvidersAggregation>
261
+ devices(domain: string, tag: string): Promise<DomainTagDevicesAggregation>
262
+ }
package/lib/request.ts CHANGED
@@ -111,7 +111,7 @@ class Request {
111
111
  body: await response?.json(),
112
112
  status: response?.status
113
113
  };
114
-
114
+ console.log('res ------------->', res);
115
115
  return res;
116
116
  }
117
117
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mailgun.js",
3
- "version": "4.1.4",
3
+ "version": "4.2.1",
4
4
  "main": "dist/mailgun.node.js",
5
5
  "browser": "dist/mailgun.web.js",
6
6
  "types": "dist/index.d.ts",
@@ -60,7 +60,7 @@
60
60
  "form-data": "^3.0.1",
61
61
  "husky": "^7.0.1",
62
62
  "json-loader": "^0.5.7",
63
- "mocha": "^9.1.3",
63
+ "mocha": "^9.2.0",
64
64
  "mocha-multi": "^1.1.3",
65
65
  "nock": "^13.0.4",
66
66
  "nyc": "^15.1.0",
@@ -69,7 +69,7 @@
69
69
  "terser-webpack-plugin": "^5.2.0",
70
70
  "ts-loader": "^8.0.12",
71
71
  "ts-node": "^9.1.1",
72
- "typedoc": "^0.20.36",
72
+ "typedoc": "^0.22.11",
73
73
  "typescript": "^4.1.3",
74
74
  "webpack": "^5.3.2",
75
75
  "webpack-cli": "^4.1.0"
@@ -15,6 +15,7 @@ import {
15
15
  UpdatedDKIMSelectorResponse, UpdatedWebPrefixResponse
16
16
  } from '../lib/interfaces/Domains';
17
17
  import DomainTemplatesClient from '../lib/domainsTemplates';
18
+ import DomainTagsClient from '../lib/domainsTags';
18
19
 
19
20
  // TODO: fix types
20
21
  describe('DomainClient', function () {
@@ -25,7 +26,13 @@ describe('DomainClient', function () {
25
26
  const reqObject = new Request({ url: 'https://api.mailgun.net' } as RequestOptions, formData as InputFormData);
26
27
  const domainCredentialsClient = new DomainCredentialsClient(reqObject);
27
28
  const domainTemplatesClient = new DomainTemplatesClient(reqObject);
28
- client = new DomainClient(reqObject, domainCredentialsClient, domainTemplatesClient);
29
+ const domainTagsClient = new DomainTagsClient(reqObject);
30
+ client = new DomainClient(
31
+ reqObject,
32
+ domainCredentialsClient,
33
+ domainTemplatesClient,
34
+ domainTagsClient
35
+ );
29
36
  api = nock('https://api.mailgun.net');
30
37
  });
31
38