mailgun.js 4.1.2 → 4.1.6

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/.eslintrc +3 -1
  2. package/CHANGELOG.md +24 -0
  3. package/README.md +1 -1
  4. package/dist/lib/domains.d.ts +6 -2
  5. package/dist/lib/domainsTemplates.d.ts +35 -0
  6. package/dist/lib/interfaces/DomainTemplates.d.ts +194 -0
  7. package/dist/mailgun.node.js +2 -2
  8. package/dist/mailgun.node.js.LICENSE.txt +1 -1
  9. package/dist/mailgun.web.js +2 -2
  10. package/dist/mailgun.web.js.LICENSE.txt +1 -1
  11. package/docs/.nojekyll +1 -0
  12. package/docs/assets/highlight.css +127 -0
  13. package/docs/assets/icons.css +1043 -0
  14. package/docs/assets/{images/icons.png → icons.png} +0 -0
  15. package/docs/assets/{images/icons@2x.png → icons@2x.png} +0 -0
  16. package/docs/assets/main.js +52 -0
  17. package/docs/assets/search.js +1 -0
  18. package/docs/assets/style.css +1413 -0
  19. package/docs/assets/{images/widgets.png → widgets.png} +0 -0
  20. package/docs/assets/{images/widgets@2x.png → widgets@2x.png} +0 -0
  21. package/docs/classes/client.default.html +1 -0
  22. package/docs/classes/domains.Domain.html +1 -0
  23. package/docs/classes/domains.default.html +1 -0
  24. package/docs/classes/domainsCredentials.default.html +1 -0
  25. package/docs/classes/domainsTemplates.DomainTemplateItem.html +1 -0
  26. package/docs/classes/domainsTemplates.default.html +1 -0
  27. package/docs/classes/error.default.html +6 -0
  28. package/docs/classes/events.default.html +1 -0
  29. package/docs/classes/ip_pools.default.html +1 -0
  30. package/docs/classes/ips.default.html +1 -0
  31. package/docs/classes/lists.default.html +1 -0
  32. package/docs/classes/mailListMembers.default.html +1 -0
  33. package/docs/classes/messages.default.html +1 -0
  34. package/docs/classes/multipleValidation.default.html +1 -0
  35. package/docs/classes/request.default.html +1 -0
  36. package/docs/classes/routes.default.html +1 -0
  37. package/docs/classes/stats.default.html +1 -0
  38. package/docs/classes/suppressions.default.html +1 -0
  39. package/docs/classes/validate.default.html +1 -0
  40. package/docs/classes/webhooks.default.html +1 -0
  41. package/docs/enums/interfaces_DomainTemplates.Pages.html +1 -0
  42. package/docs/enums/interfaces_DomainTemplates.YesNo.html +1 -0
  43. package/docs/index.html +1140 -1308
  44. package/docs/interfaces/interfaces_APIErrorOptions.default.html +1 -0
  45. package/docs/interfaces/interfaces_ApiResponse.default.html +1 -0
  46. package/docs/interfaces/interfaces_DomainCredentials.CreatedUpdatedDomainCredentialsResponse.html +1 -0
  47. package/docs/interfaces/interfaces_DomainCredentials.DeletedDomainCredentialsResponse.html +1 -0
  48. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentials.html +1 -0
  49. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsItem.html +1 -0
  50. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsList.html +1 -0
  51. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsQuery.html +1 -0
  52. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResponseData.html +1 -0
  53. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResult.html +1 -0
  54. package/docs/interfaces/interfaces_DomainCredentials.IDomainCredentials.html +1 -0
  55. package/docs/interfaces/interfaces_DomainCredentials.UpdateDomainCredentialsData.html +1 -0
  56. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateAPIResponse.html +1 -0
  57. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionAPIResponse.html +1 -0
  58. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionResult.html +1 -0
  59. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplate.html +1 -0
  60. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateData.html +1 -0
  61. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateData.html +1 -0
  62. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateVersionData.html +1 -0
  63. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateVersionData.html +1 -0
  64. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplatesQuery.html +1 -0
  65. package/docs/interfaces/interfaces_DomainTemplates.GetDomainTemplateAPIResponse.html +1 -0
  66. package/docs/interfaces/interfaces_DomainTemplates.IDomainTemplatesClient.html +1 -0
  67. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsAPIResponse.html +1 -0
  68. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsResult.html +1 -0
  69. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesAPIResponse.html +1 -0
  70. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesResult.html +1 -0
  71. package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionAPIResponse.html +1 -0
  72. package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionResult.html +1 -0
  73. package/docs/interfaces/interfaces_DomainTemplates.NotificationAPIResponse.html +1 -0
  74. package/docs/interfaces/interfaces_DomainTemplates.NotificationResult.html +1 -0
  75. package/docs/interfaces/interfaces_DomainTemplates.ShortTemplateVersion.html +1 -0
  76. package/docs/interfaces/interfaces_DomainTemplates.TemplateQuery.html +1 -0
  77. package/docs/interfaces/interfaces_DomainTemplates.TemplateVersion.html +1 -0
  78. package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateAPIResponse.html +1 -0
  79. package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateResult.html +1 -0
  80. package/docs/interfaces/interfaces_DomainTracking.ClickTrackingInfo.html +1 -0
  81. package/docs/interfaces/interfaces_DomainTracking.DomainTrackingData.html +1 -0
  82. package/docs/interfaces/interfaces_DomainTracking.DomainTrackingResponse.html +1 -0
  83. package/docs/interfaces/interfaces_DomainTracking.OpenTrackingInfo.html +1 -0
  84. package/docs/interfaces/interfaces_DomainTracking.UnsubscribeTrackingInfo.html +1 -0
  85. package/docs/interfaces/interfaces_DomainTracking.UpdateDomainTrackingResponse.html +1 -0
  86. package/docs/interfaces/interfaces_DomainTracking.UpdatedOpenTracking.html +1 -0
  87. package/docs/interfaces/interfaces_Domains.ConnectionSettings.html +1 -0
  88. package/docs/interfaces/interfaces_Domains.ConnectionSettingsResponse.html +1 -0
  89. package/docs/interfaces/interfaces_Domains.DKIMAuthorityInfo.html +1 -0
  90. package/docs/interfaces/interfaces_Domains.DKIMSelectorInfo.html +1 -0
  91. package/docs/interfaces/interfaces_Domains.DNSRecord.html +1 -0
  92. package/docs/interfaces/interfaces_Domains.DestroyedDomainResponse.html +1 -0
  93. package/docs/interfaces/interfaces_Domains.DomainData.html +1 -0
  94. package/docs/interfaces/interfaces_Domains.DomainInfo.html +1 -0
  95. package/docs/interfaces/interfaces_Domains.DomainListResponseData.html +1 -0
  96. package/docs/interfaces/interfaces_Domains.DomainResponseData.html +1 -0
  97. package/docs/interfaces/interfaces_Domains.DomainShortData.html +1 -0
  98. package/docs/interfaces/interfaces_Domains.DomainsListItem.html +1 -0
  99. package/docs/interfaces/interfaces_Domains.DomainsQuery.html +1 -0
  100. package/docs/interfaces/interfaces_Domains.MessageResponse.html +1 -0
  101. package/docs/interfaces/interfaces_Domains.ReplacementForPool.html +1 -0
  102. package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettings.html +1 -0
  103. package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettingsRes.html +1 -0
  104. package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthority.html +1 -0
  105. package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthorityResponse.html +1 -0
  106. package/docs/interfaces/interfaces_Domains.UpdatedDKIMSelectorResponse.html +1 -0
  107. package/docs/interfaces/interfaces_Domains.UpdatedWebPrefix.html +1 -0
  108. package/docs/interfaces/interfaces_Domains.UpdatedWebPrefixResponse.html +1 -0
  109. package/docs/interfaces/interfaces_Domains.WebPrefixInfo.html +1 -0
  110. package/docs/interfaces/interfaces_Events.DomainEvent.html +1 -0
  111. package/docs/interfaces/interfaces_Events.EventsList.html +1 -0
  112. package/docs/interfaces/interfaces_Events.EventsPage.html +1 -0
  113. package/docs/interfaces/interfaces_Events.EventsResponse.html +1 -0
  114. package/docs/interfaces/interfaces_Events.PagesList.html +1 -0
  115. package/docs/interfaces/interfaces_Events.PagesListAccumulator.html +1 -0
  116. package/docs/interfaces/interfaces_Events.ParsedPage.html +1 -0
  117. package/docs/interfaces/interfaces_Events.ParsedPagesList.html +1 -0
  118. package/docs/interfaces/interfaces_IFormData.IFormDataOptions.html +1 -0
  119. package/docs/interfaces/interfaces_IFormData.InputFormData.html +1 -0
  120. package/docs/interfaces/interfaces_IpPools.IpPool.html +1 -0
  121. package/docs/interfaces/interfaces_IpPools.IpPoolListResponse.html +1 -0
  122. package/docs/interfaces/interfaces_IpPools.IpPoolUpdateData.html +1 -0
  123. package/docs/interfaces/interfaces_Ips.IpData.html +1 -0
  124. package/docs/interfaces/interfaces_Ips.IpsListResponseBody.html +1 -0
  125. package/docs/interfaces/interfaces_MultipleValidation.CanceledMultipleValidationJob.html +1 -0
  126. package/docs/interfaces/interfaces_MultipleValidation.CreatedMultipleValidationJob.html +1 -0
  127. package/docs/interfaces/interfaces_MultipleValidation.IMultipleValidationClient.html +1 -0
  128. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJob.html +1 -0
  129. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResponse.html +1 -0
  130. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResult.html +1 -0
  131. package/docs/interfaces/interfaces_MultipleValidation.PagesList.html +1 -0
  132. package/docs/interfaces/interfaces_Options.default.html +1 -0
  133. package/docs/interfaces/interfaces_RequestOptions.default.html +1 -0
  134. package/docs/interfaces/interfaces_StatsOptions.Stat.html +1 -0
  135. package/docs/interfaces/interfaces_StatsOptions.StatsOptions.html +1 -0
  136. package/docs/interfaces/interfaces_StatsOptions.StatsQuery.html +1 -0
  137. package/docs/interfaces/interfaces_Supressions.BounceData.html +1 -0
  138. package/docs/interfaces/interfaces_Supressions.ComplaintData.html +1 -0
  139. package/docs/interfaces/interfaces_Supressions.UnsubscribeData.html +1 -0
  140. package/docs/interfaces/interfaces_Supressions.WhiteListData.html +1 -0
  141. package/docs/interfaces/interfaces_Validate.ValidationResponse.html +1 -0
  142. package/docs/interfaces/interfaces_Validate.ValidationResult.html +1 -0
  143. package/docs/interfaces/interfaces_Webhooks.APIWebhook.html +1 -0
  144. package/docs/interfaces/interfaces_Webhooks.ValidationResponse.html +1 -0
  145. package/docs/interfaces/interfaces_Webhooks.WebhookList.html +1 -0
  146. package/docs/interfaces/interfaces_Webhooks.WebhookResponse.html +1 -0
  147. package/docs/interfaces/interfaces_Webhooks.WebhookResponseBody.html +1 -0
  148. package/docs/interfaces/interfaces_Webhooks.WebhooksQuery.html +1 -0
  149. package/docs/interfaces/interfaces_lists.CreateUpdateList.html +1 -0
  150. package/docs/interfaces/interfaces_lists.DestroyedList.html +1 -0
  151. package/docs/interfaces/interfaces_lists.ListsQuery.html +1 -0
  152. package/docs/interfaces/interfaces_lists.MailingList.html +1 -0
  153. package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembers.html +1 -0
  154. package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembersReq.html +1 -0
  155. package/docs/interfaces/interfaces_mailListMembers.DeletedMember.html +1 -0
  156. package/docs/interfaces/interfaces_mailListMembers.IMailListsMembers.html +1 -0
  157. package/docs/interfaces/interfaces_mailListMembers.MailListMember.html +1 -0
  158. package/docs/interfaces/interfaces_mailListMembers.MailListMembersQuery.html +1 -0
  159. package/docs/interfaces/interfaces_mailListMembers.MultipleMembersData.html +1 -0
  160. package/docs/interfaces/interfaces_mailListMembers.MultipleMembersReqData.html +1 -0
  161. package/docs/interfaces/interfaces_mailListMembers.NewMultipleMembersResponse.html +1 -0
  162. package/docs/interfaces/interfaces_routes.CreateUpdateRouteData.html +1 -0
  163. package/docs/interfaces/interfaces_routes.DestroyRouteResponse.html +1 -0
  164. package/docs/interfaces/interfaces_routes.Route.html +1 -0
  165. package/docs/interfaces/interfaces_routes.RoutesListQuery.html +1 -0
  166. package/docs/interfaces/interfaces_routes.UpdateRouteResponse.html +1 -0
  167. package/docs/modules/client.html +1 -0
  168. package/docs/modules/domains.html +1 -0
  169. package/docs/modules/domainsCredentials.html +1 -0
  170. package/docs/modules/domainsTemplates.html +1 -0
  171. package/docs/modules/error.html +1 -0
  172. package/docs/modules/events.html +1 -0
  173. package/docs/modules/interfaces_APIErrorOptions.html +1 -0
  174. package/docs/modules/interfaces_ApiResponse.html +1 -0
  175. package/docs/modules/interfaces_DomainCredentials.html +1 -0
  176. package/docs/modules/interfaces_DomainTemplates.html +1 -0
  177. package/docs/modules/interfaces_DomainTracking.html +1 -0
  178. package/docs/modules/interfaces_Domains.html +1 -0
  179. package/docs/modules/interfaces_Events.html +1 -0
  180. package/docs/modules/interfaces_IFormData.html +1 -0
  181. package/docs/modules/interfaces_IpPools.html +1 -0
  182. package/docs/modules/interfaces_Ips.html +1 -0
  183. package/docs/modules/interfaces_MultipleValidation.html +1 -0
  184. package/docs/modules/interfaces_Options.html +1 -0
  185. package/docs/modules/interfaces_RequestOptions.html +1 -0
  186. package/docs/modules/interfaces_StatsOptions.html +1 -0
  187. package/docs/modules/interfaces_Supressions.html +1 -0
  188. package/docs/modules/interfaces_Validate.html +1 -0
  189. package/docs/modules/interfaces_Webhooks.html +1 -0
  190. package/docs/modules/interfaces_lists.html +1 -0
  191. package/docs/modules/interfaces_mailListMembers.html +1 -0
  192. package/docs/modules/interfaces_routes.html +1 -0
  193. package/docs/modules/ip_pools.html +1 -0
  194. package/docs/modules/ips.html +1 -0
  195. package/docs/modules/lists.html +1 -0
  196. package/docs/modules/mailListMembers.html +1 -0
  197. package/docs/modules/messages.html +1 -0
  198. package/docs/modules/multipleValidation.html +1 -0
  199. package/docs/modules/request.html +1 -0
  200. package/docs/modules/routes.html +1 -0
  201. package/docs/modules/stats.html +1 -0
  202. package/docs/modules/suppressions.html +1 -0
  203. package/docs/modules/validate.html +1 -0
  204. package/docs/modules/webhooks.html +1 -0
  205. package/docs/modules.html +1 -0
  206. package/lib/client.ts +3 -1
  207. package/lib/domains.ts +12 -3
  208. package/lib/domainsTemplates.ts +235 -0
  209. package/lib/interfaces/DomainTemplates.ts +238 -0
  210. package/package.json +5 -4
  211. package/test/domains.test.ts +3 -1
  212. package/test/domainsTemplates.test.ts +392 -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
@@ -18,6 +18,7 @@ import MailListsMembers from './mailListMembers';
18
18
  import { InputFormData } from './interfaces/IFormData';
19
19
  import DomainCredentialsClient from './domainsCredentials';
20
20
  import MultipleValidationClient from './multipleValidation';
21
+ import DomainTemplatesClient from './domainsTemplates';
21
22
 
22
23
  export default class Client {
23
24
  private request;
@@ -53,9 +54,10 @@ export default class Client {
53
54
  this.request = new Request(config, formData);
54
55
  const mailListsMembers = new MailListsMembers(this.request);
55
56
  const domainCredentialsClient = new DomainCredentialsClient(this.request);
57
+ const domainTemplatesClient = new DomainTemplatesClient(this.request);
56
58
  const multipleValidationClient = new MultipleValidationClient(this.request);
57
59
 
58
- this.domains = new DomainClient(this.request, domainCredentialsClient);
60
+ this.domains = new DomainClient(this.request, domainCredentialsClient, domainTemplatesClient);
59
61
  this.webhooks = new WebhookClient(this.request);
60
62
  this.events = new EventClient(this.request);
61
63
  this.stats = new StatsClient(this.request);
package/lib/domains.ts CHANGED
@@ -37,7 +37,10 @@ import {
37
37
  UpdateDomainTrackingResponse,
38
38
  UpdatedOpenTracking
39
39
  } from './interfaces/DomainTracking';
40
+ import { IDomainCredentials } from './interfaces/DomainCredentials';
41
+ import { IDomainTemplatesClient } from './interfaces/DomainTemplates';
40
42
  import DomainCredentialsClient from './domainsCredentials';
43
+ import DomainTemplatesClient from './domainsTemplates';
41
44
 
42
45
  export class Domain {
43
46
  name: string;
@@ -72,11 +75,17 @@ export class Domain {
72
75
 
73
76
  export default class DomainClient {
74
77
  request: Request;
75
- public domainCredentials: DomainCredentialsClient;
76
-
77
- constructor(request: Request, domainCredentialsClient: DomainCredentialsClient) {
78
+ public domainCredentials: IDomainCredentials;
79
+ public domainTemplates: IDomainTemplatesClient
80
+
81
+ constructor(
82
+ request: Request,
83
+ domainCredentialsClient: DomainCredentialsClient,
84
+ domainTemplatesClient: DomainTemplatesClient
85
+ ) {
78
86
  this.request = request;
79
87
  this.domainCredentials = domainCredentialsClient;
88
+ this.domainTemplates = domainTemplatesClient;
80
89
  }
81
90
 
82
91
  private _parseMessage(response: DestroyedDomainResponse) : MessageResponse {
@@ -0,0 +1,235 @@
1
+ import urljoin from 'url-join';
2
+ import APIResponse from './interfaces/ApiResponse';
3
+ import Request from './request';
4
+
5
+ import {
6
+ CreateDomainTemplateAPIResponse,
7
+ CreateDomainTemplateVersionAPIResponse,
8
+ CreateDomainTemplateVersionResult,
9
+ DomainTemplate, DomainTemplateData,
10
+ DomainTemplatesQuery,
11
+ DomainTemplateUpdateData,
12
+ DomainTemplateUpdateVersionData,
13
+ DomainTemplateVersionData,
14
+ GetDomainTemplateAPIResponse,
15
+ IDomainTemplatesClient,
16
+ ListDomainTemplatesAPIResponse,
17
+ ListDomainTemplatesResult,
18
+ ListDomainTemplateVersionsAPIResponse,
19
+ ListDomainTemplateVersionsResult,
20
+ MutateDomainTemplateVersionAPIResponse,
21
+ MutateDomainTemplateVersionResult,
22
+ NotificationAPIResponse,
23
+ NotificationResult,
24
+ ShortTemplateVersion,
25
+ TemplateQuery,
26
+ TemplateVersion,
27
+ UpdateOrDeleteDomainTemplateAPIResponse,
28
+ UpdateOrDeleteDomainTemplateResult
29
+ } from './interfaces/DomainTemplates';
30
+
31
+ export class DomainTemplateItem implements DomainTemplate {
32
+ name : string;
33
+ description : string;
34
+ createdAt : Date | '';
35
+ createdBy : string;
36
+ id : string;
37
+ version?: TemplateVersion;
38
+ versions?: ShortTemplateVersion[];
39
+
40
+ constructor(domainTemplateFromAPI: DomainTemplate) {
41
+ this.name = domainTemplateFromAPI.name;
42
+ this.description = domainTemplateFromAPI.description;
43
+ this.createdAt = domainTemplateFromAPI.createdAt ? new Date(domainTemplateFromAPI.createdAt) : '';
44
+ this.createdBy = domainTemplateFromAPI.createdBy;
45
+ this.id = domainTemplateFromAPI.id;
46
+
47
+ if (domainTemplateFromAPI.version) {
48
+ this.version = domainTemplateFromAPI.version;
49
+ if (domainTemplateFromAPI.version.createdAt) {
50
+ this.version.createdAt = new Date(domainTemplateFromAPI.version.createdAt);
51
+ }
52
+ }
53
+
54
+ if (domainTemplateFromAPI.versions && domainTemplateFromAPI.versions.length) {
55
+ this.versions = domainTemplateFromAPI.versions.map((version) => {
56
+ const result = { ...version };
57
+ result.createdAt = new Date(version.createdAt);
58
+ return result;
59
+ });
60
+ }
61
+ }
62
+ }
63
+
64
+ export default class DomainTemplatesClient implements IDomainTemplatesClient {
65
+ baseRoute: string;
66
+ request: Request;
67
+
68
+ constructor(request: Request) {
69
+ this.request = request;
70
+ this.baseRoute = '/v3/';
71
+ }
72
+
73
+ private parseCreationResponse(data: CreateDomainTemplateAPIResponse): DomainTemplateItem {
74
+ return new DomainTemplateItem(data.body.template);
75
+ }
76
+
77
+ private parseCreationVersionResponse(
78
+ data: CreateDomainTemplateVersionAPIResponse
79
+ ): CreateDomainTemplateVersionResult {
80
+ const result: CreateDomainTemplateVersionResult = {} as CreateDomainTemplateVersionResult;
81
+ result.status = data.status;
82
+ result.message = data.body.message;
83
+ if (data.body && data.body.template) {
84
+ result.template = new DomainTemplateItem(data.body.template);
85
+ }
86
+ return result;
87
+ }
88
+
89
+ private parseMutationResponse(
90
+ data: UpdateOrDeleteDomainTemplateAPIResponse
91
+ ): UpdateOrDeleteDomainTemplateResult {
92
+ const result: UpdateOrDeleteDomainTemplateResult = {} as UpdateOrDeleteDomainTemplateResult;
93
+ result.status = data.status;
94
+ result.message = data.body.message;
95
+ if (data.body && data.body.template) {
96
+ result.templateName = data.body.template.name;
97
+ }
98
+ return result;
99
+ }
100
+
101
+ private parseNotificationResponse(data: NotificationAPIResponse): NotificationResult {
102
+ const result: NotificationResult = {} as NotificationResult;
103
+ result.status = data.status;
104
+ result.message = data.body.message;
105
+ return result;
106
+ }
107
+
108
+ private parseMutateTemplateVersionResponse(
109
+ data: MutateDomainTemplateVersionAPIResponse
110
+ ): MutateDomainTemplateVersionResult {
111
+ const result: MutateDomainTemplateVersionResult = {} as MutateDomainTemplateVersionResult;
112
+ result.status = data.status;
113
+ result.message = data.body.message;
114
+ if (data.body.template) {
115
+ result.templateName = data.body.template.name;
116
+ result.templateVersion = { tag: data.body.template.version.tag };
117
+ }
118
+ return result;
119
+ }
120
+
121
+ private parseList(response: ListDomainTemplatesAPIResponse): ListDomainTemplatesResult {
122
+ const data = {} as ListDomainTemplatesResult;
123
+
124
+ data.items = response.body.items.map((d: DomainTemplate) => new DomainTemplateItem(d));
125
+
126
+ data.pages = response.body.paging;
127
+
128
+ return data;
129
+ }
130
+
131
+ private parseListTemplateVersions(
132
+ response: ListDomainTemplateVersionsAPIResponse
133
+ ): ListDomainTemplateVersionsResult {
134
+ const data = {} as ListDomainTemplateVersionsResult;
135
+
136
+ data.template = new DomainTemplateItem(response.body.template);
137
+
138
+ data.pages = response.body.paging;
139
+
140
+ return data;
141
+ }
142
+
143
+ list(domain: string, query?: DomainTemplatesQuery): Promise<ListDomainTemplatesResult> {
144
+ return this.request.get(urljoin(this.baseRoute, domain, '/templates'), query)
145
+ .then(
146
+ (res: APIResponse) => this.parseList(res)
147
+ );
148
+ }
149
+
150
+ get(domain: string, templateName: string, query?: TemplateQuery): Promise<DomainTemplateItem> {
151
+ return this.request.get(urljoin(this.baseRoute, domain, '/templates/', templateName), query)
152
+ .then(
153
+ (res: GetDomainTemplateAPIResponse) => new DomainTemplateItem(res.body.template)
154
+ );
155
+ }
156
+
157
+ create(
158
+ domain: string,
159
+ data: DomainTemplateData
160
+ ): Promise<DomainTemplateItem> {
161
+ return this.request.postWithFD(urljoin(this.baseRoute, domain, '/templates'), data)
162
+ .then((res: CreateDomainTemplateAPIResponse) => this.parseCreationResponse(res));
163
+ }
164
+
165
+ update(
166
+ domain: string,
167
+ templateName: string,
168
+ data: DomainTemplateUpdateData
169
+ ): Promise<UpdateOrDeleteDomainTemplateResult> {
170
+ return this.request.putWithFD(urljoin(this.baseRoute, domain, '/templates/', templateName), data)
171
+ .then((res: UpdateOrDeleteDomainTemplateAPIResponse) => this.parseMutationResponse(res));
172
+ }
173
+
174
+ destroy(domain: string, templateName: string): Promise<UpdateOrDeleteDomainTemplateResult> {
175
+ return this.request.delete(urljoin(this.baseRoute, domain, '/templates/', templateName))
176
+ .then((res: UpdateOrDeleteDomainTemplateAPIResponse) => this.parseMutationResponse(res));
177
+ }
178
+
179
+ destroyAll(domain: string): Promise<NotificationResult> {
180
+ return this.request.delete(urljoin(this.baseRoute, domain, '/templates'))
181
+ .then((res: NotificationAPIResponse) => this.parseNotificationResponse(res));
182
+ }
183
+
184
+ createVersion(
185
+ domain: string,
186
+ templateName: string,
187
+ data: DomainTemplateVersionData
188
+ ): Promise<CreateDomainTemplateVersionResult> {
189
+ return this.request.postWithFD(urljoin(this.baseRoute, domain, '/templates/', templateName, '/versions'), data)
190
+ .then(
191
+ (res: CreateDomainTemplateVersionAPIResponse) => this.parseCreationVersionResponse(res)
192
+ );
193
+ }
194
+
195
+ getVersion(domain: string, templateName: string, tag: string): Promise<DomainTemplateItem> {
196
+ return this.request.get(urljoin(this.baseRoute, domain, '/templates/', templateName, '/versions/', tag))
197
+ .then(
198
+ (res: GetDomainTemplateAPIResponse) => new DomainTemplateItem(res.body.template)
199
+ );
200
+ }
201
+
202
+ updateVersion(
203
+ domain: string,
204
+ templateName: string,
205
+ tag: string,
206
+ data: DomainTemplateUpdateVersionData
207
+ ): Promise<MutateDomainTemplateVersionResult> {
208
+ return this.request.putWithFD(urljoin(this.baseRoute, domain, '/templates/', templateName, '/versions/', tag), data)
209
+ .then(
210
+ // eslint-disable-next-line max-len
211
+ (res: MutateDomainTemplateVersionAPIResponse) => this.parseMutateTemplateVersionResponse(res)
212
+ );
213
+ }
214
+
215
+ destroyVersion(
216
+ domain: string,
217
+ templateName: string,
218
+ tag: string
219
+ ): Promise<MutateDomainTemplateVersionResult> {
220
+ return this.request.delete(urljoin(this.baseRoute, domain, '/templates/', templateName, '/versions/', tag))
221
+ // eslint-disable-next-line max-len
222
+ .then((res: MutateDomainTemplateVersionAPIResponse) => this.parseMutateTemplateVersionResponse(res));
223
+ }
224
+
225
+ listVersions(
226
+ domain: string,
227
+ templateName: string,
228
+ query?: DomainTemplatesQuery
229
+ ): Promise<ListDomainTemplateVersionsResult> {
230
+ return this.request.get(urljoin(this.baseRoute, domain, '/templates', templateName, '/versions'), query)
231
+ .then(
232
+ (res: ListDomainTemplateVersionsAPIResponse) => this.parseListTemplateVersions(res)
233
+ );
234
+ }
235
+ }
@@ -0,0 +1,238 @@
1
+ import { DomainTemplateItem } from '../domainsTemplates';
2
+
3
+ export enum YesNo {
4
+ YES = 'yes',
5
+ NO = 'no'
6
+ }
7
+
8
+ export enum Pages {
9
+ FIRST = 'first',
10
+ LAST = 'last',
11
+ NEXT = 'next',
12
+ PREV = 'prev'
13
+ }
14
+ /* eslint-disable camelcase */
15
+ export interface DomainTemplateData {
16
+ name: string;
17
+ description: string;
18
+ template: string;
19
+ tag?: string;
20
+ engine?: string;
21
+ comment?: string;
22
+ }
23
+
24
+ export interface DomainTemplateVersionData {
25
+ template: string;
26
+ tag: string;
27
+ engine?: string;
28
+ comment?: string;
29
+ active?: YesNo;
30
+ }
31
+
32
+ export interface DomainTemplateUpdateData {
33
+ description: string;
34
+ }
35
+
36
+ export interface DomainTemplateUpdateVersionData {
37
+ template?: string;
38
+ comment?: string;
39
+ active?: YesNo;
40
+ }
41
+
42
+ export interface DomainTemplatesQuery {
43
+ page: Pages;
44
+ limit: number;
45
+ p: string;
46
+ }
47
+
48
+ export interface TemplateQuery {
49
+ active: YesNo;
50
+ }
51
+
52
+ export interface ShortTemplateVersion {
53
+ tag: string;
54
+ engine: string;
55
+ mjml: string;
56
+ createdAt: string | Date;
57
+ comment: string;
58
+ active: boolean;
59
+ id: string;
60
+ }
61
+
62
+ export interface TemplateVersion extends ShortTemplateVersion{
63
+ template: string;
64
+ }
65
+ export interface DomainTemplate {
66
+ name: string;
67
+ description: string;
68
+ createdAt: string | Date;
69
+ createdBy: string;
70
+ id: string;
71
+ version?: TemplateVersion;
72
+ versions?: ShortTemplateVersion[];
73
+ }
74
+
75
+ export interface CreateDomainTemplateAPIResponse {
76
+ status: number;
77
+ body: {
78
+ message: string;
79
+ template: DomainTemplate;
80
+ };
81
+ }
82
+
83
+ export interface ListDomainTemplatesAPIResponse {
84
+ status: number;
85
+ body: {
86
+ items: DomainTemplate[];
87
+ paging: {
88
+ first: string;
89
+ last: string;
90
+ next: string;
91
+ previous: string;
92
+ };
93
+ };
94
+ }
95
+
96
+ export interface ListDomainTemplatesResult {
97
+ items: DomainTemplate[];
98
+ pages: {
99
+ first: string;
100
+ last: string;
101
+ next: string;
102
+ previous: string;
103
+ };
104
+ }
105
+
106
+ export interface GetDomainTemplateAPIResponse {
107
+ status: number;
108
+ body: {
109
+ template: DomainTemplate;
110
+ };
111
+ }
112
+
113
+ export interface UpdateOrDeleteDomainTemplateAPIResponse {
114
+ status: number;
115
+ body: {
116
+ message: string;
117
+ template: {
118
+ name: string
119
+ }
120
+ };
121
+ }
122
+
123
+ export interface UpdateOrDeleteDomainTemplateResult {
124
+ status: number;
125
+ message: string;
126
+ templateName?: string;
127
+ }
128
+
129
+ export interface NotificationAPIResponse {
130
+ status: number;
131
+ body: {
132
+ message: string;
133
+ };
134
+ }
135
+
136
+ export interface NotificationResult {
137
+ status: number;
138
+ message: string;
139
+ }
140
+
141
+ export interface CreateDomainTemplateVersionAPIResponse {
142
+ status: number;
143
+ body: {
144
+ message: string;
145
+ template: DomainTemplate;
146
+ };
147
+ }
148
+
149
+ export interface CreateDomainTemplateVersionResult {
150
+ status: number;
151
+ message: string;
152
+ template: DomainTemplate;
153
+ }
154
+
155
+ export interface MutateDomainTemplateVersionAPIResponse {
156
+ status: number;
157
+ body: {
158
+ message: string;
159
+ template: {
160
+ name: string;
161
+ version: {
162
+ tag: string;
163
+ }
164
+ };
165
+ };
166
+ }
167
+
168
+ export interface MutateDomainTemplateVersionResult {
169
+ status: number;
170
+ message: string;
171
+ templateName: string;
172
+ templateVersion: {
173
+ tag: string;
174
+ }
175
+ }
176
+
177
+ export interface ListDomainTemplateVersionsAPIResponse {
178
+ status: number;
179
+ body: {
180
+ template: {
181
+ name: string;
182
+ description: string;
183
+ createdAt: string;
184
+ createdBy: string;
185
+ id: string;
186
+ versions: ShortTemplateVersion[]
187
+ }
188
+ paging: {
189
+ first: string;
190
+ last: string;
191
+ next: string;
192
+ previous: string;
193
+ };
194
+ };
195
+ }
196
+
197
+ export interface ListDomainTemplateVersionsResult {
198
+ template: DomainTemplateItem;
199
+ pages: {
200
+ first: string;
201
+ last: string;
202
+ next: string;
203
+ previous: string;
204
+ };
205
+ }
206
+
207
+ export interface IDomainTemplatesClient {
208
+ list(domain: string, query?: DomainTemplatesQuery): Promise<ListDomainTemplatesResult>
209
+ get(domain: string, templateName: string, query: TemplateQuery): Promise<DomainTemplateItem>
210
+ create(domain: string, data: DomainTemplateData): Promise<DomainTemplateItem>
211
+ update(
212
+ domain: string,
213
+ templateName: string,
214
+ data: DomainTemplateUpdateData
215
+ ): Promise<UpdateOrDeleteDomainTemplateResult>
216
+ destroy(domain: string, templateName: string): Promise<UpdateOrDeleteDomainTemplateResult>
217
+ destroyAll(domain: string): Promise<NotificationResult>
218
+ createVersion(
219
+ domain: string,
220
+ templateName: string,
221
+ data: DomainTemplateVersionData
222
+ ) : Promise<CreateDomainTemplateVersionResult>
223
+ getVersion(domain: string, templateName: string, tag: string): Promise<DomainTemplateItem>
224
+ updateVersion(
225
+ domain: string,
226
+ templateName: string,
227
+ tag: string,
228
+ data: DomainTemplateUpdateVersionData
229
+ ): Promise<MutateDomainTemplateVersionResult>
230
+ destroyVersion(
231
+ domain: string,
232
+ templateName: string,
233
+ tag: string): Promise<MutateDomainTemplateVersionResult>
234
+ listVersions(
235
+ domain: string,
236
+ templateName: string,
237
+ query?: DomainTemplatesQuery): Promise<ListDomainTemplateVersionsResult>
238
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mailgun.js",
3
- "version": "4.1.2",
3
+ "version": "4.1.6",
4
4
  "main": "dist/mailgun.node.js",
5
5
  "browser": "dist/mailgun.web.js",
6
6
  "types": "dist/index.d.ts",
@@ -23,7 +23,7 @@
23
23
  "build:release": "webpack --config ./webpack/webpack.release.config.js --progress --color",
24
24
  "start": "webpack --watch --config ./webpack/webpack.dev.config.js --progress --color",
25
25
  "release": "standard-version -a",
26
- "test": "multi='dot=- xunit=./results.xml' mocha -t 10000 -R mocha-multi -r ts-node/register test/*.test.ts",
26
+ "test": "multi='dot=- xunit=./results.xml' nyc mocha -t 10000 -R mocha-multi -r ts-node/register test/*.test.ts",
27
27
  "test-watch": "mocha -r ts-node/register -w -R dot test/*.test.ts",
28
28
  "docs": "typedoc --tsconfig ./tsconfig.json",
29
29
  "lint": "eslint . && eslint . --ext .ts",
@@ -60,15 +60,16 @@
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
+ "nyc": "^15.1.0",
66
67
  "path-browserify": "^1.0.1",
67
68
  "standard-version": "^9.3.1",
68
69
  "terser-webpack-plugin": "^5.2.0",
69
70
  "ts-loader": "^8.0.12",
70
71
  "ts-node": "^9.1.1",
71
- "typedoc": "^0.20.36",
72
+ "typedoc": "^0.22.11",
72
73
  "typescript": "^4.1.3",
73
74
  "webpack": "^5.3.2",
74
75
  "webpack-cli": "^4.1.0"
@@ -14,6 +14,7 @@ import {
14
14
  UpdatedDKIMAuthority,
15
15
  UpdatedDKIMSelectorResponse, UpdatedWebPrefixResponse
16
16
  } from '../lib/interfaces/Domains';
17
+ import DomainTemplatesClient from '../lib/domainsTemplates';
17
18
 
18
19
  // TODO: fix types
19
20
  describe('DomainClient', function () {
@@ -23,7 +24,8 @@ describe('DomainClient', function () {
23
24
  beforeEach(function () {
24
25
  const reqObject = new Request({ url: 'https://api.mailgun.net' } as RequestOptions, formData as InputFormData);
25
26
  const domainCredentialsClient = new DomainCredentialsClient(reqObject);
26
- client = new DomainClient(reqObject, domainCredentialsClient);
27
+ const domainTemplatesClient = new DomainTemplatesClient(reqObject);
28
+ client = new DomainClient(reqObject, domainCredentialsClient, domainTemplatesClient);
27
29
  api = nock('https://api.mailgun.net');
28
30
  });
29
31