ts-mailcow-api 1.0.0 → 1.2.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.
@@ -32,6 +32,22 @@ function wrapPromiseToArray(promise) {
32
32
  .catch((err) => reject(err instanceof Error ? err : new Error(String(err))));
33
33
  });
34
34
  }
35
+ function isErrorType(type) {
36
+ return type === 'danger' || type === 'error';
37
+ }
38
+ /**
39
+ * Checks if a Mailcow API response indicates an error.
40
+ * Throws a MailcowException if a definite error is detected.
41
+ */
42
+ function checkMailcowResponse(res) {
43
+ // Accepts either a single object or an array
44
+ const arr = Array.isArray(res) ? res : [res];
45
+ for (const item of arr) {
46
+ if (isErrorType(item.type)) {
47
+ throw new types_1.MailcowException(Array.isArray(item.msg) ? item.msg.join(', ') : item.msg);
48
+ }
49
+ }
50
+ }
35
51
  /**
36
52
  * Factory method patterns for creating Axios Requests.
37
53
  * @internal
@@ -47,19 +63,22 @@ class RequestFactory {
47
63
  */
48
64
  post(route, payload) {
49
65
  return __awaiter(this, void 0, void 0, function* () {
50
- return new Promise((resolve, reject) => {
51
- axios_1.default
52
- .post(this.ctx.BASE_URL + route, payload, this.ctx.AXIOS_CONFIG)
53
- // On succes
54
- .then((res) => {
55
- resolve(res.data);
56
- })
57
- // On error
58
- .catch((e) => {
59
- const { msg } = e.response.data;
60
- reject(new types_1.MailcowException(msg));
61
- });
62
- });
66
+ var _a;
67
+ try {
68
+ const res = yield axios_1.default.post(this.ctx.BASE_URL + route, payload, this.ctx.AXIOS_CONFIG);
69
+ // Only throws if response has danger or error type
70
+ checkMailcowResponse(res.data);
71
+ return res.data;
72
+ }
73
+ catch (e) {
74
+ if (axios_1.default.isAxiosError(e) && ((_a = e.response) === null || _a === void 0 ? void 0 : _a.data)) {
75
+ // Check if the response *itself* is an error type
76
+ checkMailcowResponse(e.response.data);
77
+ // If no definite error, throw generic
78
+ throw new types_1.MailcowException('Unknown Mailcow error');
79
+ }
80
+ throw e;
81
+ }
63
82
  });
64
83
  }
65
84
  /**
@@ -68,19 +87,19 @@ class RequestFactory {
68
87
  */
69
88
  get(route) {
70
89
  return __awaiter(this, void 0, void 0, function* () {
71
- return new Promise((resolve, reject) => {
72
- axios_1.default
73
- .get(this.ctx.BASE_URL + route, this.ctx.AXIOS_CONFIG)
74
- // On succes
75
- .then((res) => {
76
- resolve(res.data);
77
- })
78
- // On error
79
- .catch((e) => {
80
- const { msg } = e.response.data;
81
- reject(new types_1.MailcowException(msg));
82
- });
83
- });
90
+ var _a;
91
+ try {
92
+ const res = yield axios_1.default.get(this.ctx.BASE_URL + route, this.ctx.AXIOS_CONFIG);
93
+ checkMailcowResponse(res.data);
94
+ return res.data;
95
+ }
96
+ catch (e) {
97
+ if (axios_1.default.isAxiosError(e) && ((_a = e.response) === null || _a === void 0 ? void 0 : _a.data)) {
98
+ checkMailcowResponse(e.response.data);
99
+ throw new types_1.MailcowException('Unknown Mailcow error');
100
+ }
101
+ throw e;
102
+ }
84
103
  });
85
104
  }
86
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request-factory.js","sourceRoot":"","sources":["../src/request-factory.ts"],"names":[],"mappings":";;;;;;;;;;;AAkBA,gDAMC;AAxBD,iCAAyD;AACzD,mCAAiE;AAGjE;;;;GAIG;AACH,SAAS,WAAW,CAAI,IAAa;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAI,OAAyB;IAC7D,OAAO,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO;aACJ,IAAI,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;aACjD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAqB,cAAc;IAGjC,YAAY,GAAkB;QAC5B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACG,IAAI,CAAsB,KAAa,EAAE,OAAU;;YACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,eAAK;qBACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;oBAChE,YAAY;qBACX,IAAI,CAAC,CAAC,GAAqB,EAAE,EAAE;oBAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC,CAAC;oBACF,WAAW;qBACV,KAAK,CAAC,CAAC,CAAmC,EAAE,EAAE;oBAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAChC,MAAM,CAAC,IAAI,wBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAED;;;OAGG;IACG,GAAG,CAAI,KAAa;;YACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,eAAK;qBACF,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;oBACtD,YAAY;qBACX,IAAI,CAAC,CAAC,GAAqB,EAAE,EAAE;oBAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC,CAAC;oBACF,WAAW;qBACV,KAAK,CAAC,CAAC,CAAmC,EAAE,EAAE;oBAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAChC,MAAM,CAAC,IAAI,wBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;CACF;AA/CD,iCA+CC"}
1
+ {"version":3,"file":"request-factory.js","sourceRoot":"","sources":["../src/request-factory.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -315,6 +315,10 @@ export interface BaseMailboxAttributes {
315
315
  * The mailbox quota.
316
316
  */
317
317
  quota: number;
318
+ /**
319
+ * The authentication source for this mailbox.
320
+ */
321
+ authsource: 'mailcow' | 'ldap' | 'keycloack' | 'generic-oidc';
318
322
  }
319
323
  /**
320
324
  * Mailbox creation request.
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAi7CA;;GAEG;AACH,MAAa,gBAAiB,SAAQ,KAAK;CAK1C;AALD,4CAKC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAq7CA;;GAEG;AACH,MAAa,gBAAiB,SAAQ,KAAK;CAK1C;AALD,4CAKC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-mailcow-api",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "TypeScript wrapper for the mailcow API.",
5
5
  "scripts": {
6
6
  "test": "mocha -r ts-node/register --extensions ts \"test/**/*.test.ts\"",