mailgun.js 3.6.1 → 3.7.0

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 (59) hide show
  1. package/.eslintrc +8 -6
  2. package/CHANGELOG.md +7 -0
  3. package/dist/index.d.ts +1 -1
  4. package/dist/lib/client.d.ts +1 -1
  5. package/dist/lib/events.d.ts +9 -25
  6. package/dist/lib/interfaces/APIErrorOptions.d.ts +2 -1
  7. package/dist/lib/interfaces/ApiResponse.d.ts +2 -1
  8. package/dist/lib/interfaces/Events.d.ts +24 -0
  9. package/dist/lib/interfaces/IpPools.d.ts +12 -0
  10. package/dist/lib/interfaces/Options.d.ts +2 -1
  11. package/dist/lib/interfaces/RequestOptions.d.ts +2 -1
  12. package/dist/lib/interfaces/StatsOptions.d.ts +2 -1
  13. package/dist/lib/interfaces/mailListMembers.d.ts +6 -6
  14. package/dist/lib/ip-pools.d.ts +11 -14
  15. package/dist/lib/ips.d.ts +6 -6
  16. package/dist/lib/messages.d.ts +1 -1
  17. package/dist/lib/suppressions.d.ts +1 -1
  18. package/dist/mailgun.node.js +2 -2
  19. package/dist/mailgun.node.js.LICENSE.txt +1 -1
  20. package/dist/mailgun.web.js +2 -2
  21. package/dist/mailgun.web.js.LICENSE.txt +1 -1
  22. package/examples/addresses.js +1 -0
  23. package/examples/list-domains.js +1 -0
  24. package/examples/send-email.js +1 -0
  25. package/index.ts +1 -1
  26. package/lib/client.ts +3 -2
  27. package/lib/events.ts +21 -19
  28. package/lib/interfaces/APIErrorOptions.ts +3 -1
  29. package/lib/interfaces/ApiResponse.ts +3 -1
  30. package/lib/interfaces/Events.ts +25 -0
  31. package/lib/interfaces/IFormData.ts +4 -3
  32. package/lib/interfaces/IpPools.ts +16 -1
  33. package/lib/interfaces/Ips.ts +1 -0
  34. package/lib/interfaces/Options.ts +5 -2
  35. package/lib/interfaces/RequestOptions.ts +4 -2
  36. package/lib/interfaces/StatsOptions.ts +4 -2
  37. package/lib/interfaces/Supressions.ts +1 -1
  38. package/lib/interfaces/lists.ts +1 -0
  39. package/lib/interfaces/mailListMembers.ts +18 -12
  40. package/lib/interfaces/routes.ts +1 -0
  41. package/lib/ip-pools.ts +8 -7
  42. package/lib/ips.ts +3 -3
  43. package/lib/lists.ts +1 -1
  44. package/lib/messages.ts +1 -1
  45. package/lib/parse.ts +4 -3
  46. package/lib/stats.ts +3 -2
  47. package/lib/suppressions.ts +16 -11
  48. package/lib/validate.ts +0 -1
  49. package/package.json +1 -1
  50. package/test/client.test.ts +7 -2
  51. package/test/events.test.ts +1 -1
  52. package/test/ips.test.ts +1 -1
  53. package/test/lists.test.ts +5 -6
  54. package/test/mailListMembers.test.ts +47 -42
  55. package/test/messageAttachment.test.ts +3 -3
  56. package/test/messages.test.ts +1 -1
  57. package/test/parse.test.ts +1 -1
  58. package/test/routes.test.ts +1 -0
  59. package/test/suppressions.test.ts +4 -3
@@ -1,9 +1,9 @@
1
1
  import nock from 'nock';
2
+ import formData from 'form-data';
2
3
  import Request from '../lib/request';
3
4
  import RequestOptions from '../lib/interfaces/RequestOptions';
4
5
  import MailListMembers from '../lib/mailListMembers';
5
6
  import { DeletedMember, MailListMember, NewMultipleMembersResponse } from '../lib/interfaces/mailListMembers';
6
- import formData from 'form-data';
7
7
 
8
8
  describe('mailListsMembersClient', function () {
9
9
  let client: any;
@@ -19,7 +19,7 @@ describe('mailListsMembersClient', function () {
19
19
  name: 'test name',
20
20
  subscribed: true,
21
21
  vars: { gender: 'female', age: 0 }
22
- } as MailListMember
22
+ } as MailListMember;
23
23
  });
24
24
 
25
25
  afterEach(function () {
@@ -57,7 +57,7 @@ describe('mailListsMembersClient', function () {
57
57
 
58
58
  describe('createMember', function () {
59
59
  it('adds list member to the mailing list ', function () {
60
- const member:any = {...defaultListMember};
60
+ const member:any = { ...defaultListMember };
61
61
  member.subscribed = true;
62
62
  const mailingListAddress = 'testingMailingListAddress@example.com';
63
63
  api.post(`/v3/lists/${mailingListAddress}/members`).reply(200, {
@@ -66,12 +66,12 @@ describe('mailListsMembersClient', function () {
66
66
 
67
67
  return client.createMember(mailingListAddress, member).then(function (newListMember:any) {
68
68
  newListMember.should.eql(member);
69
- })
69
+ });
70
70
  });
71
71
 
72
72
  it('works with string value in subscribed field', function () {
73
- const member:any = {...defaultListMember};
74
- member.subscribed = "yes";
73
+ const member:any = { ...defaultListMember };
74
+ member.subscribed = 'yes';
75
75
  const mailingListAddress = 'testingMailingListAddress@example.com';
76
76
  api.post(`/v3/lists/${mailingListAddress}/members`).reply(200, {
77
77
  member
@@ -79,13 +79,13 @@ describe('mailListsMembersClient', function () {
79
79
 
80
80
  return client.createMember(mailingListAddress, member).then(function (newListMember:any) {
81
81
  newListMember.should.eql(member);
82
- })
82
+ });
83
83
  });
84
84
  });
85
85
 
86
86
  describe('createMembers', function () {
87
- const mailingListAddress : string = 'testingMailingListAddress@example.com';
88
- let response : NewMultipleMembersResponse;
87
+ const mailingListAddress = 'testingMailingListAddress@example.com';
88
+ let response : NewMultipleMembersResponse;
89
89
 
90
90
  beforeEach(function () {
91
91
  response = {
@@ -105,55 +105,55 @@ describe('mailListsMembersClient', function () {
105
105
 
106
106
  it('adds list of members to the mailing list', function () {
107
107
  const newMembersListPlaceholder = new Array(5).fill(0);
108
- const newMembersList = newMembersListPlaceholder.map((_, index)=>{
109
- return {
110
- address: `test${index}@example.com`,
111
- name: `test name ${index}`,
112
- vars: {gender:"female", age:index},
113
- subscribed: true,
114
- upsert: 'yes'
115
- };
116
- });
108
+ const newMembersList = newMembersListPlaceholder.map((_, index) => ({
109
+ address: `test${index}@example.com`,
110
+ name: `test name ${index}`,
111
+ vars: { gender: 'female', age: index },
112
+ subscribed: true,
113
+ upsert: 'yes'
114
+ }));
117
115
 
118
116
  api.post(`/v3/lists/${mailingListAddress}/members.json`).reply(200, response);
119
117
 
120
118
  return client.createMembers(mailingListAddress, {
121
119
  members: newMembersList,
122
- upsert: "yes"
120
+ upsert: 'yes'
123
121
  }).then(function (result: NewMultipleMembersResponse) {
124
122
  result.should.eql(response);
125
- })
123
+ });
126
124
  });
127
125
 
128
126
  it('works with string value in members field', function () {
129
127
  const newMembersListPlaceholder = new Array(5).fill(0);
130
- const newMembersList = newMembersListPlaceholder.map((_, index)=>{
131
- return {
132
- address: `test${index}@example.com`,
133
- name: `test name ${index}`,
134
- vars: JSON.stringify({gender:"female", age:index}),
135
- subscribed: true,
136
- upsert: 'yes'
137
- };
138
- });
128
+ const newMembersList = newMembersListPlaceholder.map((_, index) => ({
129
+ address: `test${index}@example.com`,
130
+ name: `test name ${index}`,
131
+ vars: JSON.stringify({ gender: 'female', age: index }),
132
+ subscribed: true,
133
+ upsert: 'yes'
134
+
135
+ }));
139
136
  api.post(`/v3/lists/${mailingListAddress}/members.json`).reply(200, response);
140
137
  return client.createMembers(mailingListAddress, {
141
138
  members: newMembersList,
142
- upsert: "yes"
139
+ upsert: 'yes'
143
140
  }).then(function (result: NewMultipleMembersResponse) {
144
141
  result.should.eql(response);
145
- })
142
+ });
146
143
  });
147
-
148
144
  });
149
145
 
150
146
  describe('updateMember', function () {
151
147
  it('updates list member in the mailing list ', function () {
152
148
  const mailingListAddress = 'testingMailingListAddress@example.com';
153
149
  const mailingListMemberAddress = 'testingMailingListMemberAddress@example.com';
154
- api.put(`/v3/lists/${mailingListAddress}/members/${mailingListMemberAddress}`).reply(200, {member: defaultListMember});
150
+ api.put(`/v3/lists/${mailingListAddress}/members/${mailingListMemberAddress}`).reply(200, { member: defaultListMember });
155
151
 
156
- return client.updateMember(mailingListAddress, mailingListMemberAddress, defaultListMember).then(function (res: MailListMember) {
152
+ return client.updateMember(
153
+ mailingListAddress,
154
+ mailingListMemberAddress,
155
+ defaultListMember
156
+ ).then(function (res: MailListMember) {
157
157
  res.should.eql(defaultListMember);
158
158
  });
159
159
  });
@@ -161,32 +161,37 @@ describe('mailListsMembersClient', function () {
161
161
  it('works with string value in subscribed field', function () {
162
162
  const mailingListAddress = 'testingMailingListAddress@example.com';
163
163
  const mailingListMemberAddress = 'testingMailingListMemberAddress@example.com';
164
- const member:any = {...defaultListMember};
165
- member.subscribed = "yes";
166
- api.put(`/v3/lists/${mailingListAddress}/members/${mailingListMemberAddress}`).reply(200, {member: defaultListMember});
164
+ const member: any = { ...defaultListMember };
165
+ member.subscribed = 'yes';
166
+ api.put(`/v3/lists/${mailingListAddress}/members/${mailingListMemberAddress}`).reply(200, { member: defaultListMember });
167
167
 
168
- return client.updateMember(mailingListAddress, mailingListMemberAddress, member).then(function (res: MailListMember) {
168
+ return client.updateMember(
169
+ mailingListAddress,
170
+ mailingListMemberAddress,
171
+ member
172
+ ).then(function (res: MailListMember) {
169
173
  res.should.eql(defaultListMember);
170
174
  });
171
175
  });
172
176
  });
173
177
 
174
178
  describe('destroyMember', function () {
175
-
176
179
  it('deletes member from the list ', function () {
177
180
  const mailingListAddress = 'testingMailingListAddress@example.com';
178
181
  const mailingListMemberAddress = 'testingMailingListMemberAddress@example.com';
179
182
  const res = {
180
183
  member: defaultListMember,
181
- message: "deleted"
184
+ message: 'deleted'
182
185
  } as DeletedMember;
183
186
 
184
187
  api.delete(`/v3/lists/${mailingListAddress}/members/${mailingListMemberAddress}`).reply(200, res);
185
188
 
186
- return client.destroyMember(mailingListAddress, mailingListMemberAddress).then(function (deletedMemberRes: DeletedMember) {
189
+ return client.destroyMember(
190
+ mailingListAddress,
191
+ mailingListMemberAddress
192
+ ).then(function (deletedMemberRes: DeletedMember) {
187
193
  deletedMemberRes.should.eql(res);
188
194
  });
189
195
  });
190
196
  });
191
-
192
197
  });
@@ -1,11 +1,11 @@
1
1
  import fs from 'fs';
2
2
  import nock from 'nock';
3
+ import { expect } from 'chai';
4
+ import formData from 'form-data';
3
5
 
4
6
  import Request from '../lib/request';
5
7
  import MessagesClient from '../lib/messages';
6
8
  import RequestOptions from '../lib/interfaces/RequestOptions';
7
- import { expect } from 'chai';
8
- import formData from 'form-data';
9
9
 
10
10
  const mailgunLogo = fs.createReadStream(`${__dirname}/img/mailgun.png`);
11
11
 
@@ -41,7 +41,7 @@ describe('MessagesClient', function () {
41
41
  filename: 'test-image',
42
42
  data: mailgunLogo
43
43
  }]
44
- })
44
+ });
45
45
 
46
46
  expect(res.message).to.eql('Queued. Thank you.');
47
47
  });
@@ -1,4 +1,4 @@
1
- const formData = require('form-data'); // importing this way to not have type error in line 13
1
+ import formData from 'form-data'; // importing this way to not have type error in line 13
2
2
 
3
3
  import fs from 'fs';
4
4
  import nock from 'nock';
@@ -10,7 +10,7 @@ import RequestOptions from '../lib/interfaces/RequestOptions';
10
10
  interface Data {
11
11
  parsed: string[],
12
12
  unparseable: string[]
13
- };
13
+ }
14
14
 
15
15
  describe('ParseClient', function () {
16
16
  let client: any;
@@ -1,3 +1,4 @@
1
+ /* eslint-disable camelcase */
1
2
  import formData from 'form-data';
2
3
  import nock from 'nock';
3
4
  import Request from '../lib/request';
@@ -1,12 +1,13 @@
1
1
  import chai, { expect } from 'chai';
2
- chai.should();
3
2
  import formData from 'form-data';
4
-
5
3
  import nock from 'nock';
4
+
6
5
  import Request from '../lib/request';
7
6
  import SuppressionClient from '../lib/suppressions';
8
7
  import RequestOptions from '../lib/interfaces/RequestOptions';
9
8
 
9
+ chai.should();
10
+
10
11
  describe('SuppressionsClient', function () {
11
12
  let client: any;
12
13
  let api: any;
@@ -81,7 +82,7 @@ describe('SuppressionsClient', function () {
81
82
  api.get('/v3/domain.com/unsubscribes').reply(200, response);
82
83
 
83
84
  return client.list('domain.com', 'unsubscribes')
84
- .then(function (unsubscribes: { items: any }) {
85
+ .then(function (unsubscribes: { items: any }) {
85
86
  let u;
86
87
 
87
88
  u = unsubscribes.items[0];