@creator.co/wapi 1.2.2 → 1.2.4

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 (135) hide show
  1. package/.eslintrc.cjs +29 -22
  2. package/.github/workflows/npmpublish.yml +2 -5
  3. package/.github/workflows/prs.yml +1 -1
  4. package/README.md +1 -3
  5. package/dist/index.d.ts +11 -0
  6. package/dist/index.js +24 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/jest.config.d.ts +3 -0
  9. package/dist/jest.config.js +34 -0
  10. package/dist/jest.config.js.map +1 -0
  11. package/dist/package.json +64 -0
  12. package/dist/src/API/Request.d.ts +140 -0
  13. package/dist/src/API/Request.js +182 -0
  14. package/dist/src/API/Request.js.map +1 -0
  15. package/dist/src/API/Response.d.ts +256 -0
  16. package/dist/src/API/Response.js +398 -0
  17. package/dist/src/API/Response.js.map +1 -0
  18. package/dist/src/API/Utils.d.ts +63 -0
  19. package/dist/src/API/Utils.js +104 -0
  20. package/dist/src/API/Utils.js.map +1 -0
  21. package/dist/src/BaseEvent/EventProcessor.d.ts +81 -0
  22. package/dist/src/BaseEvent/EventProcessor.js +182 -0
  23. package/dist/src/BaseEvent/EventProcessor.js.map +1 -0
  24. package/dist/src/BaseEvent/Process.d.ts +74 -0
  25. package/dist/src/BaseEvent/Process.js +142 -0
  26. package/dist/src/BaseEvent/Process.js.map +1 -0
  27. package/dist/src/BaseEvent/Transaction.d.ts +29 -0
  28. package/dist/src/BaseEvent/Transaction.js +244 -0
  29. package/dist/src/BaseEvent/Transaction.js.map +1 -0
  30. package/dist/src/Config/Configuration.d.ts +131 -0
  31. package/dist/src/Config/Configuration.js +153 -0
  32. package/dist/src/Config/Configuration.js.map +1 -0
  33. package/dist/src/Config/EnvironmentVar.d.ts +101 -0
  34. package/dist/src/Config/EnvironmentVar.js +213 -0
  35. package/dist/src/Config/EnvironmentVar.js.map +1 -0
  36. package/dist/src/Crypto/Crypto.d.ts +57 -0
  37. package/dist/src/Crypto/Crypto.js +126 -0
  38. package/dist/src/Crypto/Crypto.js.map +1 -0
  39. package/dist/src/Crypto/JWT.d.ts +64 -0
  40. package/dist/src/Crypto/JWT.js +74 -0
  41. package/dist/src/Crypto/JWT.js.map +1 -0
  42. package/dist/src/Globals.d.ts +161 -0
  43. package/dist/src/Globals.js +173 -0
  44. package/dist/src/Globals.js.map +1 -0
  45. package/dist/src/Logger/Logger.d.ts +180 -0
  46. package/dist/src/Logger/Logger.js +412 -0
  47. package/dist/src/Logger/Logger.js.map +1 -0
  48. package/dist/src/Mailer/Mailer.d.ts +107 -0
  49. package/dist/src/Mailer/Mailer.js +313 -0
  50. package/dist/src/Mailer/Mailer.js.map +1 -0
  51. package/dist/src/Publisher/Publisher.d.ts +47 -0
  52. package/dist/src/Publisher/Publisher.js +141 -0
  53. package/dist/src/Publisher/Publisher.js.map +1 -0
  54. package/dist/src/Server/RouteResolver.d.ts +41 -0
  55. package/dist/src/Server/RouteResolver.js +135 -0
  56. package/dist/src/Server/RouteResolver.js.map +1 -0
  57. package/dist/src/Server/Router.d.ts +104 -0
  58. package/dist/src/Server/Router.js +45 -0
  59. package/dist/src/Server/Router.js.map +1 -0
  60. package/dist/src/Server/lib/ContainerServer.d.ts +58 -0
  61. package/dist/src/Server/lib/ContainerServer.js +143 -0
  62. package/dist/src/Server/lib/ContainerServer.js.map +1 -0
  63. package/dist/src/Server/lib/Server.d.ts +60 -0
  64. package/dist/src/Server/lib/Server.js +137 -0
  65. package/dist/src/Server/lib/Server.js.map +1 -0
  66. package/dist/src/Server/lib/container/GenericHandler.d.ts +4 -0
  67. package/dist/src/Server/lib/container/GenericHandler.js +138 -0
  68. package/dist/src/Server/lib/container/GenericHandler.js.map +1 -0
  69. package/dist/src/Server/lib/container/GenericHandlerEvent.d.ts +67 -0
  70. package/dist/src/Server/lib/container/GenericHandlerEvent.js +189 -0
  71. package/dist/src/Server/lib/container/GenericHandlerEvent.js.map +1 -0
  72. package/dist/src/Server/lib/container/HealthHandler.d.ts +3 -0
  73. package/dist/src/Server/lib/container/HealthHandler.js +45 -0
  74. package/dist/src/Server/lib/container/HealthHandler.js.map +1 -0
  75. package/dist/src/Server/lib/container/Proxy.d.ts +95 -0
  76. package/dist/src/Server/lib/container/Proxy.js +201 -0
  77. package/dist/src/Server/lib/container/Proxy.js.map +1 -0
  78. package/dist/src/Server/lib/container/Utils.d.ts +18 -0
  79. package/dist/src/Server/lib/container/Utils.js +84 -0
  80. package/dist/src/Server/lib/container/Utils.js.map +1 -0
  81. package/dist/src/Validation/Validator.d.ts +21 -0
  82. package/dist/src/Validation/Validator.js +48 -0
  83. package/dist/src/Validation/Validator.js.map +1 -0
  84. package/index.ts +12 -10
  85. package/jest.config.ts +14 -21
  86. package/package.json +3 -3
  87. package/src/API/Request.ts +17 -35
  88. package/src/API/Response.ts +24 -42
  89. package/src/API/Utils.ts +5 -7
  90. package/src/BaseEvent/EventProcessor.ts +16 -24
  91. package/src/BaseEvent/Process.ts +7 -12
  92. package/src/BaseEvent/Transaction.ts +25 -43
  93. package/src/Config/Configuration.ts +8 -14
  94. package/src/Config/EnvironmentVar.ts +10 -20
  95. package/src/Crypto/Crypto.ts +10 -10
  96. package/src/Crypto/JWT.ts +4 -10
  97. package/src/Globals.ts +19 -25
  98. package/src/Logger/Logger.ts +36 -51
  99. package/src/Mailer/Mailer.ts +19 -31
  100. package/src/Publisher/Publisher.ts +7 -12
  101. package/src/Server/RouteResolver.ts +5 -6
  102. package/src/Server/Router.ts +7 -12
  103. package/src/Server/lib/ContainerServer.ts +5 -5
  104. package/src/Server/lib/Server.ts +26 -38
  105. package/src/Server/lib/container/GenericHandler.ts +8 -13
  106. package/src/Server/lib/container/GenericHandlerEvent.ts +21 -35
  107. package/src/Server/lib/container/HealthHandler.ts +2 -2
  108. package/src/Server/lib/container/Proxy.ts +26 -38
  109. package/src/Server/lib/container/Utils.ts +2 -2
  110. package/src/Validation/Validator.ts +6 -6
  111. package/tests/API/Request.test.ts +107 -111
  112. package/tests/API/Response.test.ts +86 -91
  113. package/tests/API/Utils.test.ts +64 -64
  114. package/tests/BaseEvent/EventProcessor.test.ts +68 -84
  115. package/tests/BaseEvent/Process.test.ts +11 -11
  116. package/tests/BaseEvent/Transaction.test.ts +44 -53
  117. package/tests/Config/Config.test.ts +50 -50
  118. package/tests/Config/EnvironmentVar.test.ts +50 -59
  119. package/tests/Crypto/Crypto.test.ts +20 -22
  120. package/tests/Crypto/JWT.test.ts +40 -40
  121. package/tests/Logger/Logger.test.ts +24 -36
  122. package/tests/Mailer/Mailer.test.ts +21 -29
  123. package/tests/Publisher/Publisher.test.ts +18 -18
  124. package/tests/Server/RouteResolver.test.ts +56 -59
  125. package/tests/Server/Router.test.ts +16 -16
  126. package/tests/Server/lib/ContainerServer.test.ts +83 -85
  127. package/tests/Server/lib/Server.test.ts +4 -4
  128. package/tests/Server/lib/container/GenericHandler.test.ts +31 -41
  129. package/tests/Server/lib/container/GenericHandlerEvent.test.ts +35 -36
  130. package/tests/Server/lib/container/HealthHandler.test.ts +7 -7
  131. package/tests/Server/lib/container/Proxy.test.ts +66 -79
  132. package/tests/Server/lib/container/Utils.test.ts +16 -17
  133. package/tests/Test.utils.ts +9 -9
  134. package/tests/Validation/Validator.test.ts +28 -40
  135. package/tests/main.test.ts +2 -2
@@ -1,91 +1,91 @@
1
- import { expect } from "chai"
1
+ import { expect } from 'chai'
2
2
 
3
- import JWT from "../../src/Crypto/JWT"
4
- import { foreignToken, privateKey } from "../Test.utils"
3
+ import JWT from '../../src/Crypto/JWT'
4
+ import { foreignToken, privateKey } from '../Test.utils'
5
5
 
6
- describe("Creates token", () => {
7
- const provider = new JWT(privateKey, "7d")
8
- test("Creates token without explicity expiration", () => {
6
+ describe('Creates token', () => {
7
+ const provider = new JWT(privateKey, '7d')
8
+ test('Creates token without explicity expiration', () => {
9
9
  const token = provider.createToken({ userID: 123 })
10
- expect(token).to.be.a("string")
10
+ expect(token).to.be.a('string')
11
11
  expect(token).is.not.null
12
12
  })
13
13
 
14
- test("Creates token with explicity expiration", () => {
15
- const token = provider.createToken({ userID: 123 }, "7d")
16
- expect(token).to.be.a("string")
14
+ test('Creates token with explicity expiration', () => {
15
+ const token = provider.createToken({ userID: 123 }, '7d')
16
+ expect(token).to.be.a('string')
17
17
  expect(token).is.not.null
18
18
  })
19
19
 
20
- test("Creates token with explicity token override", () => {
21
- const token = provider.createToken({ userID: 123 }, "7d", privateKey)
22
- expect(token).to.be.a("string")
20
+ test('Creates token with explicity token override', () => {
21
+ const token = provider.createToken({ userID: 123 }, '7d', privateKey)
22
+ expect(token).to.be.a('string')
23
23
  expect(token).is.not.null
24
24
  })
25
25
 
26
- test("Creates token with explicity token options", () => {
26
+ test('Creates token with explicity token options', () => {
27
27
  const token = provider.createToken({ userID: 123 }, undefined, undefined, {
28
- expiresIn: "7d",
28
+ expiresIn: '7d',
29
29
  })
30
- expect(token).to.be.a("string")
30
+ expect(token).to.be.a('string')
31
31
  expect(token).is.not.null
32
32
  })
33
33
 
34
- test("Creates token with no expiration", () => {
34
+ test('Creates token with no expiration', () => {
35
35
  const localProvider = new JWT(privateKey)
36
36
  const token = localProvider.createToken({ userID: 123 })
37
- expect(token).to.be.a("string")
37
+ expect(token).to.be.a('string')
38
38
  expect(token).is.not.null
39
39
  })
40
40
  })
41
41
 
42
- describe("Validates token", () => {
43
- const provider = new JWT(privateKey, "7d")
44
- test("Succeed to validate just created token", () => {
42
+ describe('Validates token', () => {
43
+ const provider = new JWT(privateKey, '7d')
44
+ test('Succeed to validate just created token', () => {
45
45
  // Creates token
46
- const token = provider.createToken({ userID: 123 }, "7d", privateKey)
47
- expect(token).to.be.a("string")
46
+ const token = provider.createToken({ userID: 123 }, '7d', privateKey)
47
+ expect(token).to.be.a('string')
48
48
  expect(token).is.not.null
49
49
  // Validates token
50
50
  const validationResp = provider.validateToken(token)
51
51
  expect(validationResp).is.not.null
52
52
  expect(validationResp.isValid).is.true
53
- expect(validationResp["isExpired"]).is.undefined
54
- expect(validationResp["decodedToken"]).is.not.null
55
- expect(validationResp["decodedToken"].userID).to.be.equals(123)
56
- expect(validationResp["decodedToken"].exp).to.be.a("number")
57
- expect(validationResp["decodedToken"].exp).to.be.above(Date.now() / 1000)
53
+ expect(validationResp['isExpired']).is.undefined
54
+ expect(validationResp['decodedToken']).is.not.null
55
+ expect(validationResp['decodedToken'].userID).to.be.equals(123)
56
+ expect(validationResp['decodedToken'].exp).to.be.a('number')
57
+ expect(validationResp['decodedToken'].exp).to.be.above(Date.now() / 1000)
58
58
  })
59
59
 
60
- test("Fails to validate invalid token", () => {
60
+ test('Fails to validate invalid token', () => {
61
61
  // Creates token
62
- const token = provider.createToken({ userID: 123 }, "7d", privateKey)
62
+ const token = provider.createToken({ userID: 123 }, '7d', privateKey)
63
63
  // Validates token
64
- const validationResp = provider.validateToken(token + "123")
64
+ const validationResp = provider.validateToken(token + '123')
65
65
  expect(validationResp).is.not.null
66
66
  expect(validationResp.isValid).is.false
67
- expect(validationResp["isExpired"]).is.undefined
68
- expect(validationResp["decodedToken"]).to.undefined
67
+ expect(validationResp['isExpired']).is.undefined
68
+ expect(validationResp['decodedToken']).to.undefined
69
69
  })
70
70
 
71
- test("Fails to validate expired token", () => {
71
+ test('Fails to validate expired token', () => {
72
72
  // Creates token
73
- const token = provider.createToken({ userID: 123 }, "-7d", privateKey)
73
+ const token = provider.createToken({ userID: 123 }, '-7d', privateKey)
74
74
  // Validates token
75
75
  const validationResp = provider.validateToken(token)
76
76
  expect(validationResp).is.not.null
77
77
  expect(validationResp.isValid).is.false
78
- expect(validationResp["isExpired"]).is.true
79
- expect(validationResp["decodedToken"]).to.undefined
78
+ expect(validationResp['isExpired']).is.true
79
+ expect(validationResp['decodedToken']).to.undefined
80
80
  })
81
81
 
82
- test("Fails to validate foreign token", () => {
82
+ test('Fails to validate foreign token', () => {
83
83
  // Validates token
84
84
  const validationResp = provider.validateToken(foreignToken)
85
85
  expect(validationResp).is.not.null
86
86
  expect(validationResp.isValid).is.false
87
- expect(validationResp["isExpired"]).is.undefined
88
- expect(validationResp["decodedToken"]).to.undefined
87
+ expect(validationResp['isExpired']).is.undefined
88
+ expect(validationResp['decodedToken']).to.undefined
89
89
  })
90
90
  })
91
91
 
@@ -1,70 +1,58 @@
1
1
  // get console ref and mock before logger import
2
2
  const consoleProxy = console
3
- const mock = jest.spyOn(consoleProxy, "log")
3
+ const mock = jest.spyOn(consoleProxy, 'log')
4
4
  // import logger after first ref
5
- import Logger from "../../src/Logger/Logger"
5
+ import Logger from '../../src/Logger/Logger'
6
6
  // get console reference after logger import
7
- const transactionID = "123-456"
7
+ const transactionID = '123-456'
8
8
 
9
9
  function setContainerFlag(isContainer: boolean) {
10
10
  if (isContainer) {
11
- process.env["HYBRIDLESS_RUNTIME"] = "true"
11
+ process.env['HYBRIDLESS_RUNTIME'] = 'true'
12
12
  } else {
13
- process.env["HYBRIDLESS_RUNTIME"] = undefined
13
+ process.env['HYBRIDLESS_RUNTIME'] = undefined
14
14
  }
15
15
  }
16
16
 
17
17
  function fixLogTypePrefix(logType: string) {
18
- if (logType == "exception") return "error"
19
- if (logType == "warning") return "warn"
20
- if (logType == "log") return "info"
18
+ if (logType == 'exception') return 'error'
19
+ if (logType == 'warning') return 'warn'
20
+ if (logType == 'log') return 'info'
21
21
  return logType
22
22
  }
23
23
 
24
24
  function testLogs(isContainer: boolean, provider?: Logger) {
25
- const type = isContainer ? "container" : "serverless"
26
- const loggerType = !provider ? "Console" : "Logger"
25
+ const type = isContainer ? 'container' : 'serverless'
26
+ const loggerType = !provider ? 'Console' : 'Logger'
27
27
  const localProvider = provider || console
28
28
 
29
29
  test(`${type} - ${loggerType} Log - Suppress sensitive info`, async () => {
30
30
  setContainerFlag(isContainer)
31
- localProvider.log("TEST", { password: "123" })
31
+ localProvider.log('TEST', { password: '123' })
32
32
  expect(consoleProxy.log).toHaveBeenNthCalledWith(
33
33
  1,
34
- expect.stringContaining(
35
- (isContainer ? `${transactionID} ` : "") + "[INFO] [Logger.test.ts:",
36
- ),
34
+ expect.stringContaining((isContainer ? `${transactionID} ` : '') + '[INFO] [Logger.test.ts:')
37
35
  )
38
36
  expect(consoleProxy.log).toHaveBeenNthCalledWith(
39
37
  1,
40
- expect.stringContaining("] TEST **SUPPRESSED_SENSITIVE_DATA**"),
38
+ expect.stringContaining('] TEST **SUPPRESSED_SENSITIVE_DATA**')
41
39
  )
42
40
  })
43
41
 
44
42
  test(`${type} - ${loggerType} Log - Suppress sensitive info (array)`, async () => {
45
43
  setContainerFlag(isContainer)
46
- localProvider.log("TEST2", [{ password: "123" }])
44
+ localProvider.log('TEST2', [{ password: '123' }])
47
45
  expect(consoleProxy.log).toHaveBeenNthCalledWith(
48
46
  1,
49
- expect.stringContaining(
50
- (isContainer ? `${transactionID} ` : "") + "[INFO] [Logger.test.ts:",
51
- ),
47
+ expect.stringContaining((isContainer ? `${transactionID} ` : '') + '[INFO] [Logger.test.ts:')
52
48
  )
53
49
  expect(consoleProxy.log).toHaveBeenNthCalledWith(
54
50
  1,
55
- expect.stringContaining("] TEST2 **SUPPRESSED_SENSITIVE_DATA**"),
51
+ expect.stringContaining('] TEST2 **SUPPRESSED_SENSITIVE_DATA**')
56
52
  )
57
53
  })
58
54
 
59
- for (const logType of [
60
- "log",
61
- "debug",
62
- "info",
63
- "warn",
64
- "warning",
65
- "error",
66
- "exception",
67
- ]) {
55
+ for (const logType of ['log', 'debug', 'info', 'warn', 'warning', 'error', 'exception']) {
68
56
  test(`${type} - ${loggerType} ${logType}`, async () => {
69
57
  setContainerFlag(isContainer)
70
58
  localProvider[logType](logType.toUpperCase())
@@ -73,28 +61,28 @@ function testLogs(isContainer: boolean, provider?: Logger) {
73
61
  expect(consoleProxy.log).toHaveBeenNthCalledWith(
74
62
  1,
75
63
  expect.stringContaining(
76
- (isContainer ? `${transactionID} ` : "") +
77
- `[${logTypePrefix.toUpperCase()}] [Logger.test.ts:`,
78
- ),
64
+ (isContainer ? `${transactionID} ` : '') +
65
+ `[${logTypePrefix.toUpperCase()}] [Logger.test.ts:`
66
+ )
79
67
  )
80
68
  expect(consoleProxy.log).toHaveBeenNthCalledWith(
81
69
  1,
82
- expect.stringContaining(`] ${logType.toUpperCase()}`),
70
+ expect.stringContaining(`] ${logType.toUpperCase()}`)
83
71
  )
84
72
  })
85
73
  }
86
74
  }
87
75
 
88
- describe("Logger", () => {
76
+ describe('Logger', () => {
89
77
  beforeEach(() => {
90
78
  mock.mockClear()
91
79
  })
92
80
  const provider = new Logger(
93
81
  {
94
- logLevel: "DEBUG",
82
+ logLevel: 'DEBUG',
95
83
  sensitiveFilteringKeywords: true,
96
84
  },
97
- transactionID,
85
+ transactionID
98
86
  )
99
87
  provider.notGlobalLogger()
100
88
  // Test serverless logs
@@ -1,41 +1,37 @@
1
- import { SESClient, SendRawEmailCommand } from "@aws-sdk/client-ses"
2
- import { mockClient } from "aws-sdk-client-mock"
3
- import { expect } from "chai"
1
+ import { SESClient, SendRawEmailCommand } from '@aws-sdk/client-ses'
2
+ import { mockClient } from 'aws-sdk-client-mock'
3
+ import { expect } from 'chai'
4
4
 
5
- import Mailer from "../../src/Mailer/Mailer"
5
+ import Mailer from '../../src/Mailer/Mailer'
6
6
 
7
7
  const SESMock = mockClient(SESClient)
8
8
 
9
- describe("SendRaw", () => {
9
+ describe('SendRaw', () => {
10
10
  // reset mock
11
11
  beforeEach(() => {
12
12
  SESMock.reset()
13
13
  })
14
14
 
15
- const provider = new Mailer("dev+tests@creator.co", "ca-central-1")
15
+ const provider = new Mailer('dev+tests@creator.co', 'ca-central-1')
16
16
 
17
- test("Send raw with success", async () => {
18
- const messageId = "id-123"
17
+ test('Send raw with success', async () => {
18
+ const messageId = 'id-123'
19
19
  SESMock.on(SendRawEmailCommand).resolves({
20
20
  MessageId: messageId,
21
21
  })
22
- const res = await provider.sendRawEmail(
23
- "test@test.com",
24
- "My message",
25
- "My subject",
26
- )
22
+ const res = await provider.sendRawEmail('test@test.com', 'My message', 'My subject')
27
23
  expect(res).is.not.null
28
24
  console.log(res)
29
25
  })
30
26
 
31
- test("Send raw with success", async () => {
32
- const messageId = "id-123"
33
- const from = "test@test.com"
34
- const to = "test@test2.com"
35
- const msg = "My message"
36
- const subject = "My subject"
37
- const cc = "test@test3.com"
38
- const replyTo = "test@test4.com"
27
+ test('Send raw with success', async () => {
28
+ const messageId = 'id-123'
29
+ const from = 'test@test.com'
30
+ const to = 'test@test2.com'
31
+ const msg = 'My message'
32
+ const subject = 'My subject'
33
+ const cc = 'test@test3.com'
34
+ const replyTo = 'test@test4.com'
39
35
  SESMock.on(SendRawEmailCommand).resolves({
40
36
  MessageId: messageId,
41
37
  })
@@ -44,21 +40,17 @@ describe("SendRaw", () => {
44
40
  console.log(res)
45
41
  })
46
42
 
47
- test("Send raw with failure", async () => {
48
- SESMock.on(SendRawEmailCommand).rejects(new Error("failed!"))
43
+ test('Send raw with failure', async () => {
44
+ SESMock.on(SendRawEmailCommand).rejects(new Error('failed!'))
49
45
  let res: any = null,
50
46
  err: any = null
51
47
  try {
52
- res = await provider.sendRawEmail(
53
- "test@test.com",
54
- "My message",
55
- "My subject",
56
- )
48
+ res = await provider.sendRawEmail('test@test.com', 'My message', 'My subject')
57
49
  } catch (e) {
58
50
  err = e
59
51
  }
60
52
  expect(res).is.null
61
- expect(err?.message).to.be.equals("failed!")
53
+ expect(err?.message).to.be.equals('failed!')
62
54
  expect(res).is.null
63
55
  console.log(res)
64
56
  })
@@ -1,25 +1,25 @@
1
- import { SNSClient, PublishCommand } from "@aws-sdk/client-sns"
2
- import { mockClient } from "aws-sdk-client-mock"
3
- import { expect } from "chai"
1
+ import { SNSClient, PublishCommand } from '@aws-sdk/client-sns'
2
+ import { mockClient } from 'aws-sdk-client-mock'
3
+ import { expect } from 'chai'
4
4
 
5
- import Publisher from "../../src/Publisher/Publisher"
5
+ import Publisher from '../../src/Publisher/Publisher'
6
6
 
7
7
  const SNSMock = mockClient(SNSClient)
8
8
 
9
- describe("Encryption", () => {
9
+ describe('Encryption', () => {
10
10
  // reset mock
11
11
  beforeEach(() => {
12
12
  SNSMock.reset()
13
13
  })
14
14
 
15
15
  const provider = new Publisher({
16
- region: "ca-central-1",
16
+ region: 'ca-central-1',
17
17
  })
18
18
 
19
- test("Publishes with success", async () => {
20
- const msg = { text: "123" }
21
- const topic = "123"
22
- const messageId = "id-123"
19
+ test('Publishes with success', async () => {
20
+ const msg = { text: '123' }
21
+ const topic = '123'
22
+ const messageId = 'id-123'
23
23
  SNSMock.on(PublishCommand, {
24
24
  Message: JSON.stringify(msg),
25
25
  TopicArn: topic,
@@ -31,10 +31,10 @@ describe("Encryption", () => {
31
31
  expect(res.MessageId).to.be.equals(messageId)
32
32
  })
33
33
 
34
- test("Publishes with success (additional props)", async () => {
35
- const msg = { text: "123" }
36
- const topic = "123"
37
- const messageId = "id-123"
34
+ test('Publishes with success (additional props)', async () => {
35
+ const msg = { text: '123' }
36
+ const topic = '123'
37
+ const messageId = 'id-123'
38
38
  SNSMock.on(PublishCommand, {
39
39
  Message: JSON.stringify(msg),
40
40
  TopicArn: topic,
@@ -48,10 +48,10 @@ describe("Encryption", () => {
48
48
  expect(res.MessageId).to.be.equals(messageId)
49
49
  })
50
50
 
51
- test("Publish failure", async () => {
52
- const msg = { text: "123" }
53
- const topic = "123"
54
- SNSMock.on(PublishCommand).rejects(new Error("failed!"))
51
+ test('Publish failure', async () => {
52
+ const msg = { text: '123' }
53
+ const topic = '123'
54
+ SNSMock.on(PublishCommand).rejects(new Error('failed!'))
55
55
  const res = await provider.publishOnTopic(msg, topic)
56
56
  expect(res).is.null
57
57
  })
@@ -1,5 +1,5 @@
1
- import { Route } from "../../src/Server/Router"
2
- import RouteResolver from "../../src/Server/RouteResolver"
1
+ import { Route } from '../../src/Server/Router'
2
+ import RouteResolver from '../../src/Server/RouteResolver'
3
3
 
4
4
  const mockRoute = (method: Method, path: string) =>
5
5
  ({
@@ -8,99 +8,96 @@ const mockRoute = (method: Method, path: string) =>
8
8
  }) as any as Route
9
9
 
10
10
  type Method =
11
- | Lowercase<"GET" | "POST" | "PUT" | "DELETE">
12
- | Uppercase<"GET" | "POST" | "PUT" | "DELETE">
11
+ | Lowercase<'GET' | 'POST' | 'PUT' | 'DELETE'>
12
+ | Uppercase<'GET' | 'POST' | 'PUT' | 'DELETE'>
13
13
 
14
- describe("RouteResolver", () => {
15
- test("no routes configured", () => {
14
+ describe('RouteResolver', () => {
15
+ test('no routes configured', () => {
16
16
  parameterizedTest({}, () => [
17
- ["GET", "/", undefined],
18
- ["GET", "", undefined],
19
- ["GET", "hjdah", undefined],
17
+ ['GET', '/', undefined],
18
+ ['GET', '', undefined],
19
+ ['GET', 'hjdah', undefined],
20
20
  ])
21
21
  })
22
22
 
23
- test("one route, case insensitive", () => {
23
+ test('one route, case insensitive', () => {
24
24
  parameterizedTest(
25
25
  {
26
- route: mockRoute("get", "/"),
26
+ route: mockRoute('get', '/'),
27
27
  },
28
- (routes) => [
29
- ["GET", "/", routes.route],
30
- ["get", "/", routes.route],
31
- ["GET", "", routes.route],
32
- ["GET", "hjdah", undefined],
33
- ["POST", "/", undefined],
34
- ["DELETE", "/", undefined],
35
- ],
28
+ routes => [
29
+ ['GET', '/', routes.route],
30
+ ['get', '/', routes.route],
31
+ ['GET', '', routes.route],
32
+ ['GET', 'hjdah', undefined],
33
+ ['POST', '/', undefined],
34
+ ['DELETE', '/', undefined],
35
+ ]
36
36
  )
37
37
  })
38
38
 
39
- test("basic matching", () => {
39
+ test('basic matching', () => {
40
40
  parameterizedTest(
41
41
  {
42
- getBase: mockRoute("GET", "/"),
43
- getA: mockRoute("GET", "/a"),
44
- getB: mockRoute("GET", "/b"),
45
- postBase: mockRoute("POST", "/"),
46
- postA: mockRoute("POST", "/a"),
47
- variable: mockRoute("GET", "/:a"),
48
- getAb: mockRoute("GET", "/a/b"),
42
+ getBase: mockRoute('GET', '/'),
43
+ getA: mockRoute('GET', '/a'),
44
+ getB: mockRoute('GET', '/b'),
45
+ postBase: mockRoute('POST', '/'),
46
+ postA: mockRoute('POST', '/a'),
47
+ variable: mockRoute('GET', '/:a'),
48
+ getAb: mockRoute('GET', '/a/b'),
49
49
  },
50
- (routes) => [
51
- ["GET", "/", routes.getBase],
52
- ["GET", "/a", routes.getA],
53
- ["GET", "/b", routes.getB],
54
- ["POST", "/", routes.postBase],
55
- ["POST", "/a", routes.postA],
56
- ["GET", "/c", routes.variable],
57
- ["GET", "/a/b", routes.getAb],
58
- ],
50
+ routes => [
51
+ ['GET', '/', routes.getBase],
52
+ ['GET', '/a', routes.getA],
53
+ ['GET', '/b', routes.getB],
54
+ ['POST', '/', routes.postBase],
55
+ ['POST', '/a', routes.postA],
56
+ ['GET', '/c', routes.variable],
57
+ ['GET', '/a/b', routes.getAb],
58
+ ]
59
59
  )
60
60
  })
61
61
 
62
- test("path variables", () => {
62
+ test('path variables', () => {
63
63
  parameterizedTest(
64
64
  {
65
- path_vars: mockRoute("get", "/base/:a/:b/:c"),
66
- abc: mockRoute("get", "/base/a/b/c"),
67
- abcd: mockRoute("get", "/base/a/b/c/d"),
68
- abc_path: mockRoute("get", "/base/a/b/c/:d"),
65
+ path_vars: mockRoute('get', '/base/:a/:b/:c'),
66
+ abc: mockRoute('get', '/base/a/b/c'),
67
+ abcd: mockRoute('get', '/base/a/b/c/d'),
68
+ abc_path: mockRoute('get', '/base/a/b/c/:d'),
69
69
  },
70
- (routes) => [
71
- ["GET", "/base/1/2/3", routes.path_vars],
72
- ["GET", "/base/a/b/c", routes.abc],
73
- ["GET", "/base/a/b/c/d", routes.abcd],
74
- ["GET", "/base/a/b/c/u", routes.abc_path],
75
- ["GET", "/base/a/b", undefined],
76
- ["GET", "/base/a/b/c/d/e", undefined],
77
- ["GET", "/base/a/b/c/d/e/f", undefined],
78
- ],
70
+ routes => [
71
+ ['GET', '/base/1/2/3', routes.path_vars],
72
+ ['GET', '/base/a/b/c', routes.abc],
73
+ ['GET', '/base/a/b/c/d', routes.abcd],
74
+ ['GET', '/base/a/b/c/u', routes.abc_path],
75
+ ['GET', '/base/a/b', undefined],
76
+ ['GET', '/base/a/b/c/d/e', undefined],
77
+ ['GET', '/base/a/b/c/d/e/f', undefined],
78
+ ]
79
79
  )
80
80
  })
81
81
 
82
- test("fails to construct with duplicate routes", () => {
82
+ test('fails to construct with duplicate routes', () => {
83
83
  expect(
84
84
  () =>
85
85
  new RouteResolver({
86
- routes: [
87
- mockRoute("GET", "/a/b/c/:d/:e/b"),
88
- mockRoute("GET", "/a/b/c/:jshj/:e/b"),
89
- ],
90
- }),
91
- ).toThrowError("Duplicate route: GET: /a/b/c/:jshj/:e/b")
86
+ routes: [mockRoute('GET', '/a/b/c/:d/:e/b'), mockRoute('GET', '/a/b/c/:jshj/:e/b')],
87
+ })
88
+ ).toThrowError('Duplicate route: GET: /a/b/c/:jshj/:e/b')
92
89
  })
93
90
  })
94
91
 
95
92
  const parameterizedTest = <T extends { [k: string]: Route }>(
96
93
  routes: T,
97
- tests: (routes: T) => [Method, string, Route?][],
94
+ tests: (routes: T) => [Method, string, Route?][]
98
95
  ) => {
99
96
  const underTest = new RouteResolver({
100
97
  routes: Object.values(routes),
101
98
  })
102
99
 
103
100
  tests(routes).forEach(([method, path, expected]) =>
104
- expect(underTest.resolveRoute(method, path)).toBe(expected),
101
+ expect(underTest.resolveRoute(method, path)).toBe(expected)
105
102
  )
106
103
  }
@@ -1,15 +1,15 @@
1
- import { expect } from "chai"
1
+ import { expect } from 'chai'
2
2
 
3
- import ContainerServer from "../../src/Server/lib/ContainerServer"
4
- import Server from "../../src/Server/lib/Server"
5
- import Router from "../../src/Server/Router"
3
+ import ContainerServer from '../../src/Server/lib/ContainerServer'
4
+ import Server from '../../src/Server/lib/Server'
5
+ import Router from '../../src/Server/Router'
6
6
 
7
- describe("Router basics", () => {
7
+ describe('Router basics', () => {
8
8
  // @ts-ignore
9
- let mockExit = jest.spyOn(process, "exit").mockImplementation(() => {})
9
+ let mockExit = jest.spyOn(process, 'exit').mockImplementation(() => {})
10
10
  beforeAll(() => {
11
11
  // @ts-ignore
12
- mockExit = jest.spyOn(process, "exit").mockImplementation(() => {})
12
+ mockExit = jest.spyOn(process, 'exit').mockImplementation(() => {})
13
13
  })
14
14
  afterAll(() => {
15
15
  mockExit.mockRestore()
@@ -18,20 +18,20 @@ describe("Router basics", () => {
18
18
  mockExit.mockReset()
19
19
  })
20
20
 
21
- test("Serverless server", async () => {
22
- process.env["HYBRIDLESS_RUNTIME"] = undefined
21
+ test('Serverless server', async () => {
22
+ process.env['HYBRIDLESS_RUNTIME'] = undefined
23
23
  const router = new Router({ routes: [] })
24
24
  expect(router.getExport()).to.not.be.undefined
25
- expect(router["server"]).to.be.an.instanceof(Server)
26
- expect(router["server"]).to.not.be.an.instanceof(ContainerServer)
25
+ expect(router['server']).to.be.an.instanceof(Server)
26
+ expect(router['server']).to.not.be.an.instanceof(ContainerServer)
27
27
  })
28
- test("Container server", async () => {
29
- process.env["HYBRIDLESS_RUNTIME"] = "true"
28
+ test('Container server', async () => {
29
+ process.env['HYBRIDLESS_RUNTIME'] = 'true'
30
30
  const router = new Router({ routes: [] })
31
31
  expect(router.getExport()).to.not.be.undefined
32
- expect(router["server"]).to.be.an.instanceof(Server)
33
- expect(router["server"]).to.be.an.instanceof(ContainerServer)
34
- await router["server"]["stop"]()
32
+ expect(router['server']).to.be.an.instanceof(Server)
33
+ expect(router['server']).to.be.an.instanceof(ContainerServer)
34
+ await router['server']['stop']()
35
35
  })
36
36
  })
37
37