mailgun.js 4.1.1 → 4.1.5

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.
@@ -4,4 +4,4 @@
4
4
 
5
5
  /*! https://mths.be/punycode v1.3.2 by @mathias */
6
6
 
7
- /*! mailgun.js v4.1.0 */
7
+ /*! mailgun.js v4.1.4 */
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
+ }
@@ -1,15 +1,23 @@
1
- interface StatsOptions {
1
+ export interface Stat {
2
+ time: string | Date,
3
+ delivered: {
4
+ smtp: number,
5
+ http: number,
6
+ total: number
7
+ }
8
+ }
9
+
10
+ export interface StatsOptions {
2
11
  start: string | Date;
3
12
  end: string | Date;
4
13
  resolution: string;
5
- stats: {
6
- time: string | Date,
7
- delivered: {
8
- smtp: number,
9
- http: number,
10
- total: number
11
- }
12
- }[];
14
+ stats: Stat[];
13
15
  }
14
16
 
15
- export default StatsOptions;
17
+ export interface StatsQuery {
18
+ event: string | string[];
19
+ start: string | Date;
20
+ end: string | Date;
21
+ resolution: 'hour'| 'day' | 'month';
22
+ duration: string;
23
+ }
package/lib/stats.ts CHANGED
@@ -1,18 +1,18 @@
1
1
  import urljoin from 'url-join';
2
2
  import Request from './request';
3
- import StatsOptions from './interfaces/StatsOptions';
3
+ import { StatsQuery, StatsOptions, Stat } from './interfaces/StatsOptions';
4
4
 
5
5
  class Stats {
6
6
  start: Date;
7
7
  end: Date;
8
8
  resolution: string;
9
- stats: any;
9
+ stats: Stat[];
10
10
 
11
11
  constructor(data: StatsOptions) {
12
12
  this.start = new Date(data.start);
13
13
  this.end = new Date(data.end);
14
14
  this.resolution = data.resolution;
15
- this.stats = data.stats.map(function (stat: { time: string | Date }) {
15
+ this.stats = data.stats.map(function (stat: Stat) {
16
16
  const res = { ...stat };
17
17
  res.time = new Date(stat.time);
18
18
  return res;
@@ -27,17 +27,36 @@ export default class StatsClient {
27
27
  this.request = request;
28
28
  }
29
29
 
30
- _parseStats(response: { body: StatsOptions }) {
30
+ private prepareSearchParams(query: StatsQuery): Array<Array<string>> {
31
+ let searchParams = [];
32
+ if (typeof query === 'object' && Object.keys(query).length) {
33
+ searchParams = Object.entries(query).reduce((arrayWithPairs, currentPair) => {
34
+ const [key, value] = currentPair;
35
+ if (Array.isArray(value) && value.length) {
36
+ const repeatedProperty = value.map((item) => [key, item]);
37
+ return [...arrayWithPairs, ...repeatedProperty];
38
+ }
39
+ arrayWithPairs.push([key, value]);
40
+ return arrayWithPairs;
41
+ }, []);
42
+ }
43
+
44
+ return searchParams;
45
+ }
46
+
47
+ _parseStats(response: { body: StatsOptions }): Stats {
31
48
  return new Stats(response.body);
32
49
  }
33
50
 
34
- getDomain(domain: string, query: any) {
35
- return this.request.get(urljoin('/v3', domain, 'stats/total'), query)
51
+ getDomain(domain: string, query?: StatsQuery): Promise<Stats> {
52
+ const searchParams = this.prepareSearchParams(query);
53
+ return this.request.get(urljoin('/v3', domain, 'stats/total'), searchParams)
36
54
  .then(this._parseStats);
37
55
  }
38
56
 
39
- getAccount(query: any) {
40
- return this.request.get('/v3/stats/total', query)
57
+ getAccount(query?: StatsQuery): Promise<Stats> {
58
+ const searchParams = this.prepareSearchParams(query);
59
+ return this.request.get('/v3/stats/total', searchParams)
41
60
  .then(this._parseStats);
42
61
  }
43
62
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mailgun.js",
3
- "version": "4.1.1",
3
+ "version": "4.1.5",
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",
@@ -63,6 +63,7 @@
63
63
  "mocha": "^9.1.3",
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",
@@ -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