zudello-integration-sdk 1.0.82 → 1.0.84

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 (53) hide show
  1. package/package.json +1 -1
  2. package/src/index.js +0 -2
  3. package/src/sdk/Airwallex.js +1 -7
  4. package/src/sdk/Base.js +22 -33
  5. package/src/sdk/BusinessCentral.js +2 -8
  6. package/src/sdk/Dear.js +1 -7
  7. package/src/sdk/Dynamics365.js +1 -7
  8. package/src/sdk/EDI.js +19 -25
  9. package/src/sdk/Fo.js +1 -7
  10. package/src/sdk/GP.js +27 -33
  11. package/src/sdk/InspHire.js +1 -7
  12. package/src/sdk/Intacct.js +95 -101
  13. package/src/sdk/JobReady.js +1 -7
  14. package/src/sdk/JobReadyLive.js +1 -7
  15. package/src/sdk/MAM.js +19 -25
  16. package/src/sdk/MSSQL.js +1 -7
  17. package/src/sdk/MYOBAccountRight.js +1 -7
  18. package/src/sdk/MYOBAcumatica.js +1 -7
  19. package/src/sdk/Navision.js +1 -7
  20. package/src/sdk/Netsuite.js +1 -7
  21. package/src/sdk/NetsuiteSOAP.js +81 -87
  22. package/src/sdk/Nexvia.js +1 -7
  23. package/src/sdk/RetailExpress.js +1 -7
  24. package/src/sdk/S4.js +9 -22
  25. package/src/sdk/SAPB1.js +1 -7
  26. package/src/sdk/SFTP.js +1 -7
  27. package/src/sdk/Sharepoint.js +1 -7
  28. package/src/sdk/Skript.js +1 -7
  29. package/src/sdk/SunSystems.js +1 -7
  30. package/src/sdk/Sybiz.js +1 -7
  31. package/src/sdk/X3.js +19 -25
  32. package/src/sdk/Xero.js +19 -25
  33. package/src/sdk/Zenoti.js +1 -7
  34. package/src/sdk/Zudello.js +123 -130
  35. package/src/sdk/ZudelloAuth.js +2 -6
  36. package/src/sdk/ZudelloStore.js +7 -12
  37. package/src/sdk/submodules/mssql/Universal.js +3 -4
  38. package/src/utils/ai.js +10 -5
  39. package/src/utils/apiInstance.js +5 -12
  40. package/src/utils/bucket.js +20 -11
  41. package/src/utils/config.js +48 -28
  42. package/src/utils/datasetHelper.js +6 -4
  43. package/src/utils/ediBucket.js +2 -2
  44. package/src/utils/fileBucket.js +2 -2
  45. package/src/utils/formHelper.js +12 -9
  46. package/src/utils/logger.js +4 -2
  47. package/src/utils/message.js +10 -5
  48. package/src/utils/modelHelper.js +6 -4
  49. package/src/utils/responseHandler.js +23 -23
  50. package/src/utils/responseHelper.js +10 -7
  51. package/src/utils/s3Client.js +4 -3
  52. package/src/utils/trigger.js +10 -5
  53. package/src/sdk/Auth.js +0 -42
@@ -1,9 +1,15 @@
1
1
  'use strict'
2
2
 
3
+ const ApiInstance = require('./apiInstance')
4
+ const config = require('./config')
5
+
3
6
  class Bucket {
4
- constructor(apiInstance = null, teamUUID = null, type = null) {
5
- this.apiInstance = apiInstance
6
- this.teamUUID = teamUUID
7
+ constructor(type = null) {
8
+ this.apiInstance = new ApiInstance()
9
+
10
+ this.teamUUID = config.envs.TEAM_UUID
11
+ this.apiURL = config.envs.ZUDELLO_API_URL
12
+
7
13
  this.type = type
8
14
  }
9
15
 
@@ -12,7 +18,7 @@ class Bucket {
12
18
  return
13
19
  }
14
20
 
15
- return await this.apiInstance.post(`${process.env.ZUDELLO_API_URL}/s3/${this.type}/list`, {
21
+ return await this.apiInstance.post(`${this.apiURL}/s3/${this.type}/list`, {
16
22
  path,
17
23
  recursive,
18
24
  page,
@@ -27,7 +33,7 @@ class Bucket {
27
33
  return
28
34
  }
29
35
 
30
- return await this.apiInstance.post(`${process.env.ZUDELLO_API_URL}/s3/${this.type}/get`, {
36
+ return await this.apiInstance.post(`${this.apiURL}/s3/${this.type}/get`, {
31
37
  path,
32
38
  fileName
33
39
  }, {
@@ -40,7 +46,7 @@ class Bucket {
40
46
  return
41
47
  }
42
48
 
43
- return await this.apiInstance.post(`${process.env.ZUDELLO_API_URL}/s3/${this.type}/signed`, {
49
+ return await this.apiInstance.post(`${this.apiURL}/s3/${this.type}/signed`, {
44
50
  path,
45
51
  fileName,
46
52
  expiresIn
@@ -54,7 +60,7 @@ class Bucket {
54
60
  return
55
61
  }
56
62
 
57
- return await this.apiInstance.post(`${process.env.ZUDELLO_API_URL}/s3/${this.type}/create`, {
63
+ return await this.apiInstance.post(`${this.apiURL}/s3/${this.type}/create`, {
58
64
  path,
59
65
  fileName,
60
66
  contents,
@@ -80,7 +86,7 @@ class Bucket {
80
86
  data.contentType = contentType
81
87
  }
82
88
 
83
- return await this.apiInstance.post(`${process.env.ZUDELLO_API_URL}/s3/${this.type}/update`, data, {
89
+ return await this.apiInstance.post(`${this.apiURL}/s3/${this.type}/update`, data, {
84
90
  'x-team': this.teamUUID
85
91
  })
86
92
  }
@@ -90,7 +96,7 @@ class Bucket {
90
96
  return
91
97
  }
92
98
 
93
- return await this.apiInstance.post(`${process.env.ZUDELLO_API_URL}/s3/${this.type}/delete-folder`, {
99
+ return await this.apiInstance.post(`${this.apiURL}/s3/${this.type}/delete-folder`, {
94
100
  path
95
101
  }, {
96
102
  'x-team': this.teamUUID
@@ -102,7 +108,7 @@ class Bucket {
102
108
  return
103
109
  }
104
110
 
105
- return await this.apiInstance.post(`${process.env.ZUDELLO_API_URL}/s3/${this.type}/delete-file`, {
111
+ return await this.apiInstance.post(`${this.apiURL}/s3/${this.type}/delete-file`, {
106
112
  path,
107
113
  fileName
108
114
  }, {
@@ -111,7 +117,10 @@ class Bucket {
111
117
  }
112
118
 
113
119
  _canPerformOperation() {
114
- return this.apiInstance && this.teamUUID && process.env.ZUDELLO_API_URL && this.type
120
+ console.log(this.teamUUID)
121
+ console.log(this.apiURL)
122
+ console.log(this.type)
123
+ return this.teamUUID && this.apiURL && this.type
115
124
  }
116
125
  }
117
126
 
@@ -1,30 +1,50 @@
1
- "use strict";
1
+ 'use strict'
2
2
 
3
3
  module.exports = {
4
- appUUIDs: {
5
- zudello: "c698c4a5-ee07-44cb-a0e0-a3a1d0e683ec",
6
- netsuite: "010d0262-fa01-43eb-9e35-1b49e131c1ba",
7
- intacct: "a8bbbc60-2409-49e8-adfb-72fc79658dd6",
8
- bc: "ee6f62f5-9dda-48aa-bb8d-44c8b8455472",
9
- dynamics365: "0d4161d5-5803-4cf9-8669-4d415a9be9f0",
10
- zenoti: "967a0844-6a9d-4979-a298-427259eafad8",
11
- dear: "0e456359-fe0d-4b01-9662-08bba1bdce63",
12
- nexvia: "5f693545-3be0-4798-bb3b-3af0b7ee2e96",
13
- fo: "524e1173-6d73-42ea-9d9c-0c728c6f24ea",
14
- navision: "",
15
- retailExpress: "49584664-65a5-4b76-ba62-a73f7b7b3885",
16
- myobAcumatica: "8fd5015c-a200-4675-9e03-2047807c5693",
17
- sharepoint: "30e57b25-4aa3-4b4e-9d9a-edc8932108da",
18
- sftp: "506bd61e-54b2-4f4d-9641-907ec679afc6",
19
- myobAccountRight: "",
20
- sybiz: "ead57add-301e-4b29-881b-1bc331c101a5",
21
- xero: "71648f29-7867-40d8-ac68-651b53cb3c49",
22
- jobready: "14d16371-3e56-40c8-9efa-8578a8f334fc",
23
- x3: "1e74dfc4-0067-4295-880c-bbdf425ef9e0",
24
- sapb1: "de1ee5bd-d3ec-41cf-83f9-dcd2f51fcccd",
25
- gp: "c1fb133b-73f6-4b85-9362-59c7c2d9017f",
26
- edi: "6b3a284f-ca06-435c-bdf1-ad59c577a6a7",
27
- mam: "acb7938a-06ba-4c6e-80e4-2bde7b0145a3",
28
- sunsystems: "",
29
- },
30
- };
4
+ appUUIDs: {
5
+ zudello: 'c698c4a5-ee07-44cb-a0e0-a3a1d0e683ec',
6
+ netsuite: '010d0262-fa01-43eb-9e35-1b49e131c1ba',
7
+ intacct: 'a8bbbc60-2409-49e8-adfb-72fc79658dd6',
8
+ bc: 'ee6f62f5-9dda-48aa-bb8d-44c8b8455472',
9
+ dynamics365: '0d4161d5-5803-4cf9-8669-4d415a9be9f0',
10
+ zenoti: '967a0844-6a9d-4979-a298-427259eafad8',
11
+ dear: '0e456359-fe0d-4b01-9662-08bba1bdce63',
12
+ nexvia: '5f693545-3be0-4798-bb3b-3af0b7ee2e96',
13
+ fo: '524e1173-6d73-42ea-9d9c-0c728c6f24ea',
14
+ navision: '',
15
+ retailExpress: '49584664-65a5-4b76-ba62-a73f7b7b3885',
16
+ myobAcumatica: '8fd5015c-a200-4675-9e03-2047807c5693',
17
+ sharepoint: '30e57b25-4aa3-4b4e-9d9a-edc8932108da',
18
+ sftp: '506bd61e-54b2-4f4d-9641-907ec679afc6',
19
+ myobAccountRight: '',
20
+ sybiz: 'ead57add-301e-4b29-881b-1bc331c101a5',
21
+ xero: '71648f29-7867-40d8-ac68-651b53cb3c49',
22
+ jobready: '14d16371-3e56-40c8-9efa-8578a8f334fc',
23
+ x3: '1e74dfc4-0067-4295-880c-bbdf425ef9e0',
24
+ sapb1: 'de1ee5bd-d3ec-41cf-83f9-dcd2f51fcccd',
25
+ gp: 'c1fb133b-73f6-4b85-9362-59c7c2d9017f',
26
+ edi: '6b3a284f-ca06-435c-bdf1-ad59c577a6a7',
27
+ mam: 'acb7938a-06ba-4c6e-80e4-2bde7b0145a3',
28
+ sunsystems: ''
29
+ },
30
+ envs: {
31
+ // TRIGGER ENVS
32
+ API_AUTH_TOKEN: process.env.API_AUTH_TOKEN,
33
+ API_VERSION: process.env.API_VERSION,
34
+ API_URL: process.env.API_URL,
35
+ EXTERNAL_API_URL: process.env.EXTERNAL_API_URL,
36
+ AUTH_API_URL: process.env.AUTH_API_URL,
37
+ ORGANIZATION_UUID: process.env.ORGANIZATION_UUID,
38
+ TEAM_UUID: process.env.TEAM_UUID,
39
+ EXECUTION_UUID: process.env.EXECUTION_UUID,
40
+ MODE: process.env.MODE,
41
+
42
+ // GLOBAL ENVS
43
+ ZUDELLO_API_URL: process.env.ZUDELLO_API_URL,
44
+
45
+ // AWS ENVS
46
+ AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID,
47
+ AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY,
48
+ AWS_REGION: process.env.AWS_REGION
49
+ }
50
+ }
@@ -1,11 +1,13 @@
1
1
  'use strict'
2
2
 
3
3
  const _ = require('lodash')
4
+ const Zudello = require('../sdk/Zudello')
5
+ const Logger = require('./logger')
4
6
 
5
7
  class DatasetHelper {
6
- constructor(zudello, logger, data = null, uuid = null) {
7
- this.zudello = zudello
8
- this.logger = logger
8
+ constructor(data = null, uuid = null) {
9
+ this.zudello = new Zudello()
10
+ this.logger = new Logger()
9
11
 
10
12
  this.data = data
11
13
  this.uuid = uuid
@@ -43,7 +45,7 @@ class DatasetHelper {
43
45
  const data = fetchedDataset.data?.data || null
44
46
 
45
47
  if (data) {
46
- return new DatasetHelper(this.zudello, this.logger, data, uuid)
48
+ return new DatasetHelper(data, uuid)
47
49
  }
48
50
  }
49
51
 
@@ -3,8 +3,8 @@
3
3
  const Bucket = require('./bucket')
4
4
 
5
5
  class EDIBucket extends Bucket {
6
- constructor(apiInstance = null, teamUUID = null) {
7
- super(apiInstance, teamUUID, 'edi')
6
+ constructor() {
7
+ super('edi')
8
8
  }
9
9
  }
10
10
 
@@ -3,8 +3,8 @@
3
3
  const Bucket = require('./bucket')
4
4
 
5
5
  class FileBucket extends Bucket {
6
- constructor(apiInstance = null, teamUUID = null) {
7
- super(apiInstance, teamUUID, 'file')
6
+ constructor() {
7
+ super('file')
8
8
  }
9
9
  }
10
10
 
@@ -1,15 +1,18 @@
1
1
  'use strict'
2
2
 
3
3
  const _ = require('lodash')
4
+ const Logger = require('./logger')
5
+ const ApiInstance = require('./apiInstance')
6
+ const config = require('./config')
4
7
 
5
8
  class FormHelper {
6
- constructor(apiInstance, apiUrl, logger, teamUUID, executionUUID, data) {
7
- this.apiInstance = apiInstance
8
- this.apiUrl = apiUrl
9
+ constructor(data) {
10
+ this.apiInstance = new ApiInstance()
11
+ this.logger = new Logger()
9
12
 
10
- this.logger = logger
11
- this.teamUUID = teamUUID
12
- this.executionUUID = executionUUID
13
+ this.teamUUID = config.envs.TEAM_UUID
14
+ this.apiURL = config.envs.ZUDELLO_API_URL
15
+ this.executionUUID = config.envs.EXECUTION_UUID
13
16
 
14
17
  this.data = data
15
18
  }
@@ -29,7 +32,7 @@ class FormHelper {
29
32
  return failCallback({ uuid })
30
33
  }
31
34
 
32
- const fetchedForm = await this.apiInstance.get(`${this.apiUrl}/form/${uuid}`, {}, {
35
+ const fetchedForm = await this.apiInstance.get(`${this.apiURL}/form/${uuid}`, {}, {
33
36
  'x-team': this.teamUUID
34
37
  })
35
38
 
@@ -39,7 +42,7 @@ class FormHelper {
39
42
  const data = fetchedForm.data?.data || null
40
43
 
41
44
  if (data) {
42
- return new FormHelper(this.apiInstance, this.apiUrl, this.logger, this.teamUUID, this.executionUUID, data)
45
+ return new FormHelper(data)
43
46
  }
44
47
  }
45
48
 
@@ -60,7 +63,7 @@ class FormHelper {
60
63
 
61
64
  this.logger.debug('Create Request Data', data)
62
65
 
63
- const request = await this.apiInstance.post(`${this.apiUrl}/request`, {
66
+ const request = await this.apiInstance.post(`${this.apiURL}/request`, {
64
67
  ...data,
65
68
  form_uuid: this.data.uuid,
66
69
  execution_uuid: this.executionUUID
@@ -1,11 +1,13 @@
1
1
  'use strict'
2
2
 
3
+ const config = require('./config')
4
+
3
5
  class Logger {
4
6
  /**
5
7
  * Constructor.
6
8
  */
7
- constructor(mode = 'PRODUCTION') {
8
- this.mode = mode
9
+ constructor() {
10
+ this.mode = config.envs.MODE || 'PRODUCTION'
9
11
  this.productionMode = 'PRODUCTION'
10
12
  this.logs = []
11
13
  }
@@ -1,17 +1,22 @@
1
1
  'use strict'
2
2
 
3
+ const ApiInstance = require('./apiInstance')
4
+ const config = require('./config')
5
+
3
6
  class Message {
4
- constructor(apiInstance = null, teamUUID = null) {
5
- this.apiInstance = apiInstance
6
- this.teamUUID = teamUUID
7
+ constructor() {
8
+ this.apiInstance = new ApiInstance()
9
+
10
+ this.teamUUID = config.envs.TEAM_UUID
11
+ this.apiURL = config.envs.ZUDELLO_API_URL
7
12
  }
8
13
 
9
14
  async send(data = {}) {
10
- if (!this.apiInstance || !this.teamUUID || !process.env.ZUDELLO_API_URL) {
15
+ if (!this.teamUUID || !this.apiURL) {
11
16
  return
12
17
  }
13
18
 
14
- return await this.apiInstance.post(`${process.env.ZUDELLO_API_URL}/message/proceed`, data, {
19
+ return await this.apiInstance.post(`${this.apiURL}/message/proceed`, data, {
15
20
  'x-team': this.teamUUID
16
21
  })
17
22
  }
@@ -1,11 +1,13 @@
1
1
  'use strict'
2
2
 
3
3
  const _ = require('lodash')
4
+ const Zudello = require('../sdk/Zudello')
5
+ const Logger = require('./logger')
4
6
 
5
7
  class ModelHelper {
6
- constructor(zudello, logger, data = null, model = null, uuid = null) {
7
- this.zudello = zudello
8
- this.logger = logger
8
+ constructor(data = null, model = null, uuid = null) {
9
+ this.zudello = new Zudello()
10
+ this.logger = new Logger()
9
11
 
10
12
  this.modelData = data
11
13
  this.model = model
@@ -41,7 +43,7 @@ class ModelHelper {
41
43
  const data = fetchedModel.data?.data || null
42
44
 
43
45
  if (data) {
44
- return new ModelHelper(this.zudello, this.logger, data, model, uuid)
46
+ return new ModelHelper(data, model, uuid)
45
47
  }
46
48
  }
47
49
 
@@ -1,28 +1,28 @@
1
- "use strict";
1
+ 'use strict'
2
2
 
3
3
  class ResponseHandler {
4
- /**
5
- * Handle success response.
6
- * @param {any} data Data to return.
7
- * @returns {object} Response Data.
8
- */
9
- success(data) {
10
- return { success: true, data };
11
- }
4
+ /**
5
+ * Handle success response.
6
+ * @param {any} data Data to return.
7
+ * @returns {object} Response Data.
8
+ */
9
+ success (data) {
10
+ return { success: true, data }
11
+ }
12
12
 
13
- /**
14
- * Handle error response.
15
- * @param {array} errors Errors to return.
16
- * @returns {object} Response Data.
17
- */
18
- error(errors) {
19
- return {
20
- success: false,
21
- error: {
22
- messages: errors,
23
- },
24
- };
25
- }
13
+ /**
14
+ * Handle error response.
15
+ * @param {array} errors Errors to return.
16
+ * @returns {object} Response Data.
17
+ */
18
+ error (errors) {
19
+ return {
20
+ success: false,
21
+ error: {
22
+ messages: errors
23
+ }
24
+ }
25
+ }
26
26
  }
27
27
 
28
- module.exports = ResponseHandler;
28
+ module.exports = ResponseHandler
@@ -1,14 +1,17 @@
1
1
  'use strict'
2
2
 
3
3
  const _ = require('lodash')
4
+ const Logger = require('./logger')
5
+ const ApiInstance = require('./apiInstance')
6
+ const config = require('./config')
4
7
 
5
8
  class ResponseHelper {
6
- constructor(apiInstance, apiUrl, logger, teamUUID, data) {
7
- this.apiInstance = apiInstance
8
- this.apiUrl = apiUrl
9
+ constructor(data) {
10
+ this.apiInstance = new ApiInstance()
11
+ this.logger = new Logger()
9
12
 
10
- this.logger = logger
11
- this.teamUUID = teamUUID
13
+ this.teamUUID = config.envs.TEAM_UUID
14
+ this.apiURL = config.envs.ZUDELLO_API_URL
12
15
 
13
16
  this.responseData = data
14
17
  }
@@ -28,7 +31,7 @@ class ResponseHelper {
28
31
  return failCallback({ uuid })
29
32
  }
30
33
 
31
- const fetchedResponse = await this.apiInstance.get(`${this.apiUrl}/response/${uuid}`, {}, {
34
+ const fetchedResponse = await this.apiInstance.get(`${this.apiURL}/response/${uuid}`, {}, {
32
35
  'x-team': this.teamUUID
33
36
  })
34
37
 
@@ -38,7 +41,7 @@ class ResponseHelper {
38
41
  const data = fetchedResponse.data?.data || null
39
42
 
40
43
  if (data) {
41
- return new ResponseHelper(this.apiInstance, this.apiUrl, this.logger, this.teamUUID, data)
44
+ return new ResponseHelper(data)
42
45
  }
43
46
  }
44
47
 
@@ -6,13 +6,14 @@ const {
6
6
  DeleteObjectCommand,
7
7
  DeleteObjectsCommand
8
8
  } = require('@aws-sdk/client-s3')
9
+ const config = require('./config')
9
10
 
10
11
  const s3 = new S3Client({
11
12
  credentials: {
12
- accessKeyId: process.env.AWS_ACCESS_KEY_ID,
13
- secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
13
+ accessKeyId: config.envs.AWS_ACCESS_KEY_ID,
14
+ secretAccessKey: config.envs.AWS_SECRET_ACCESS_KEY
14
15
  },
15
- region: process.env.AWS_REGION
16
+ region: config.envs.AWS_REGION
16
17
  })
17
18
 
18
19
  /**
@@ -1,17 +1,22 @@
1
1
  'use strict'
2
2
 
3
+ const ApiInstance = require('./apiInstance')
4
+ const config = require('./config')
5
+
3
6
  class Trigger {
4
- constructor(apiInstance = null, teamUUID = null) {
5
- this.apiInstance = apiInstance
6
- this.teamUUID = teamUUID
7
+ constructor() {
8
+ this.apiInstance = new ApiInstance()
9
+
10
+ this.teamUUID = config.envs.TEAM_UUID
11
+ this.apiURL = config.envs.ZUDELLO_API_URL
7
12
  }
8
13
 
9
14
  async run(uuid, data = {}, teamUUID = null) {
10
- if (!this.apiInstance || !this.teamUUID || !uuid || !process.env.ZUDELLO_API_URL) {
15
+ if (!this.teamUUID || !uuid || !this.apiURL) {
11
16
  return
12
17
  }
13
18
 
14
- return await this.apiInstance.post(`${process.env.ZUDELLO_API_URL}/trigger/run`, {
19
+ return await this.apiInstance.post(`${this.apiURL}/trigger/run`, {
15
20
  uuid,
16
21
  // callback: 'SENTENCES',
17
22
  payload: {
package/src/sdk/Auth.js DELETED
@@ -1,42 +0,0 @@
1
- 'use strict'
2
-
3
- const ApiInstance = require('../utils/apiInstance')
4
-
5
- class Auth {
6
- /**
7
- * Constructor.
8
- * @param {string} teamUUID The UUID of the Team we're working on.
9
- * @param {string|null} token JWT Token.
10
- */
11
- constructor ({ teamUUID, token }) {
12
- this.teamUUID = teamUUID
13
- this.token = token
14
-
15
- this.apiInstance = new ApiInstance()
16
- }
17
-
18
- /**
19
- * Getter function for teamUUID.
20
- * @returns {string} Team UUID.
21
- */
22
- getTeamUUID () {
23
- return this.teamUUID
24
- }
25
-
26
- /**
27
- * Getter function for apiInstance.
28
- * @returns {class} Api Instance Class Object.
29
- */
30
- getApiInstance () {
31
- return this.apiInstance
32
- }
33
-
34
- /**
35
- * Makes an auth based on provided keys and stores the Bearer Token.
36
- */
37
- async authenticate () {
38
- this.apiInstance.setBearerToken(this.token)
39
- }
40
- }
41
-
42
- module.exports = Auth