lesgo 1.0.0 → 2.1.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 (315) hide show
  1. package/README.md +5 -4
  2. package/bin/lesgo-scripts.sh +4 -4
  3. package/dist/config/app.d.ts +7 -0
  4. package/dist/config/app.js +9 -0
  5. package/dist/config/aws.d.ts +5 -0
  6. package/dist/config/aws.js +4 -0
  7. package/dist/config/basicAuth.d.ts +7 -0
  8. package/dist/config/basicAuth.js +8 -0
  9. package/dist/config/crypto.d.ts +10 -0
  10. package/dist/config/crypto.js +9 -0
  11. package/dist/config/dynamodb.d.ts +8 -0
  12. package/dist/config/dynamodb.js +14 -0
  13. package/dist/config/elasticache.d.ts +7 -0
  14. package/dist/config/elasticache.js +6 -0
  15. package/dist/config/index.d.ts +11 -0
  16. package/dist/config/index.js +11 -0
  17. package/dist/config/jwt.d.ts +12 -0
  18. package/dist/config/jwt.js +16 -0
  19. package/dist/config/rds.d.ts +12 -0
  20. package/dist/config/rds.js +13 -0
  21. package/dist/config/s3.d.ts +5 -0
  22. package/dist/config/s3.js +5 -0
  23. package/dist/config/secretsManager.d.ts +4 -0
  24. package/dist/config/secretsManager.js +4 -0
  25. package/dist/config/sqs.d.ts +9 -0
  26. package/dist/config/sqs.js +18 -0
  27. package/dist/exceptions/LesgoException.d.ts +6 -0
  28. package/{src → dist}/exceptions/LesgoException.js +5 -4
  29. package/dist/exceptions/index.d.ts +1 -0
  30. package/dist/exceptions/index.js +1 -0
  31. package/dist/middlewares/disconnectMiddleware.d.ts +8 -0
  32. package/dist/middlewares/disconnectMiddleware.js +78 -0
  33. package/dist/middlewares/httpMiddleware.d.ts +12 -0
  34. package/dist/middlewares/httpMiddleware.js +74 -0
  35. package/dist/middlewares/httpResponseMiddleware.d.ts +7 -0
  36. package/dist/middlewares/httpResponseMiddleware.js +128 -0
  37. package/dist/middlewares/index.d.ts +7 -0
  38. package/dist/middlewares/index.js +7 -0
  39. package/dist/middlewares/invokeCommandMiddleware.d.ts +12 -0
  40. package/dist/middlewares/invokeCommandMiddleware.js +70 -0
  41. package/dist/middlewares/sqsMiddleware.d.ts +10 -0
  42. package/dist/middlewares/sqsMiddleware.js +70 -0
  43. package/dist/middlewares/verifyBasicAuthMiddleware.d.ts +8 -0
  44. package/dist/middlewares/verifyBasicAuthMiddleware.js +59 -0
  45. package/dist/middlewares/verifyJwtMiddleware.d.ts +6 -0
  46. package/dist/middlewares/verifyJwtMiddleware.js +37 -0
  47. package/dist/services/DynamoDbService/deleteRecord.d.ts +8 -0
  48. package/dist/services/DynamoDbService/deleteRecord.js +69 -0
  49. package/dist/services/DynamoDbService/getClient.d.ts +7 -0
  50. package/dist/services/DynamoDbService/getClient.js +30 -0
  51. package/dist/services/DynamoDbService/getTableName.d.ts +2 -0
  52. package/dist/services/DynamoDbService/getTableName.js +15 -0
  53. package/dist/services/DynamoDbService/index.d.ts +6 -0
  54. package/dist/services/DynamoDbService/index.js +6 -0
  55. package/dist/services/DynamoDbService/putRecord.d.ts +8 -0
  56. package/dist/services/DynamoDbService/putRecord.js +64 -0
  57. package/dist/services/DynamoDbService/query.d.ts +7 -0
  58. package/dist/services/DynamoDbService/query.js +78 -0
  59. package/dist/services/DynamoDbService/scan.d.ts +7 -0
  60. package/dist/services/DynamoDbService/scan.js +60 -0
  61. package/dist/services/DynamoDbService/updateRecord.d.ts +9 -0
  62. package/dist/services/DynamoDbService/updateRecord.js +89 -0
  63. package/dist/services/ElastiCacheRedisService/deleteRedisCache.d.ts +3 -0
  64. package/dist/services/ElastiCacheRedisService/deleteRedisCache.js +62 -0
  65. package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.d.ts +11 -0
  66. package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.js +69 -0
  67. package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.d.ts +12 -0
  68. package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.js +114 -0
  69. package/dist/services/ElastiCacheRedisService/getRedisCache.d.ts +3 -0
  70. package/dist/services/ElastiCacheRedisService/getRedisCache.js +70 -0
  71. package/dist/services/ElastiCacheRedisService/index.d.ts +5 -0
  72. package/dist/services/ElastiCacheRedisService/index.js +5 -0
  73. package/dist/services/ElastiCacheRedisService/setRedisCache.d.ts +6 -0
  74. package/dist/services/ElastiCacheRedisService/setRedisCache.js +77 -0
  75. package/dist/services/JWTService/decodeJwt.d.ts +7 -0
  76. package/dist/services/JWTService/decodeJwt.js +9 -0
  77. package/dist/services/JWTService/getJwtSecret.d.ts +13 -0
  78. package/dist/services/JWTService/getJwtSecret.js +54 -0
  79. package/dist/services/JWTService/index.d.ts +2 -0
  80. package/dist/services/JWTService/index.js +2 -0
  81. package/dist/services/JWTService/sign.d.ts +3 -0
  82. package/dist/services/JWTService/sign.js +31 -0
  83. package/dist/services/JWTService/verify.d.ts +7 -0
  84. package/dist/services/JWTService/verify.js +61 -0
  85. package/dist/services/LoggerService.d.ts +46 -0
  86. package/{src → dist}/services/LoggerService.js +29 -60
  87. package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.d.ts +2 -0
  88. package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.js +60 -0
  89. package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.d.ts +8 -0
  90. package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.js +87 -0
  91. package/dist/services/RDSAuroraMySQLProxyService/index.d.ts +3 -0
  92. package/dist/services/RDSAuroraMySQLProxyService/index.js +3 -0
  93. package/dist/services/RDSAuroraMySQLProxyService/query.d.ts +4 -0
  94. package/dist/services/RDSAuroraMySQLProxyService/query.js +63 -0
  95. package/dist/services/S3Service/getClient.d.ts +4 -0
  96. package/dist/services/S3Service/getClient.js +28 -0
  97. package/dist/services/S3Service/getDownloadSignedUrl.d.ts +7 -0
  98. package/dist/services/S3Service/getDownloadSignedUrl.js +58 -0
  99. package/dist/services/S3Service/getHeadObject.d.ts +13 -0
  100. package/dist/services/S3Service/getHeadObject.js +83 -0
  101. package/dist/services/S3Service/getObject.d.ts +10 -0
  102. package/dist/services/S3Service/getObject.js +89 -0
  103. package/dist/services/S3Service/getUploadSignedUrl.d.ts +7 -0
  104. package/dist/services/S3Service/getUploadSignedUrl.js +61 -0
  105. package/dist/services/S3Service/index.d.ts +6 -0
  106. package/dist/services/S3Service/index.js +6 -0
  107. package/dist/services/S3Service/putObject.d.ts +9 -0
  108. package/dist/services/S3Service/putObject.js +77 -0
  109. package/dist/services/SQSService/deleteMessage.d.ts +9 -0
  110. package/dist/services/SQSService/deleteMessage.js +69 -0
  111. package/dist/services/SQSService/dispatch.d.ts +9 -0
  112. package/dist/services/SQSService/dispatch.js +71 -0
  113. package/dist/services/SQSService/getClient.d.ts +4 -0
  114. package/dist/services/SQSService/getClient.js +28 -0
  115. package/dist/services/SQSService/getQueueUrl.d.ts +7 -0
  116. package/dist/services/SQSService/getQueueUrl.js +25 -0
  117. package/dist/services/SQSService/index.d.ts +4 -0
  118. package/dist/services/SQSService/index.js +4 -0
  119. package/dist/services/SQSService/receiveMessages.d.ts +8 -0
  120. package/dist/services/SQSService/receiveMessages.js +65 -0
  121. package/dist/services/SecretsManagerService/getClient.d.ts +7 -0
  122. package/dist/services/SecretsManagerService/getClient.js +28 -0
  123. package/dist/services/SecretsManagerService/getSecretValue.d.ts +7 -0
  124. package/dist/services/SecretsManagerService/getSecretValue.js +65 -0
  125. package/dist/services/SecretsManagerService/index.d.ts +2 -0
  126. package/dist/services/SecretsManagerService/index.js +2 -0
  127. package/dist/services/index.d.ts +1 -0
  128. package/dist/services/index.js +1 -0
  129. package/dist/types/aws.d.ts +8 -0
  130. package/dist/types/aws.js +1 -0
  131. package/dist/utils/cache/redis/deleteCache.d.ts +19 -0
  132. package/dist/utils/cache/redis/deleteCache.js +21 -0
  133. package/dist/utils/cache/redis/getCache.d.ts +22 -0
  134. package/dist/utils/cache/redis/getCache.js +24 -0
  135. package/dist/utils/cache/redis/getClient.d.ts +30 -0
  136. package/dist/utils/cache/redis/getClient.js +32 -0
  137. package/dist/utils/cache/redis/index.d.ts +4 -0
  138. package/dist/utils/cache/redis/index.js +4 -0
  139. package/dist/utils/cache/redis/setCache.d.ts +25 -0
  140. package/dist/utils/cache/redis/setCache.js +26 -0
  141. package/dist/utils/crypto/decrypt.d.ts +33 -0
  142. package/dist/utils/crypto/decrypt.js +59 -0
  143. package/dist/utils/crypto/encrypt.d.ts +31 -0
  144. package/dist/utils/crypto/encrypt.js +41 -0
  145. package/dist/utils/crypto/hash.d.ts +31 -0
  146. package/dist/utils/crypto/hash.js +56 -0
  147. package/dist/utils/crypto/index.d.ts +3 -0
  148. package/dist/utils/crypto/index.js +3 -0
  149. package/dist/utils/crypto/validateEncryptionFields.d.ts +19 -0
  150. package/dist/utils/crypto/validateEncryptionFields.js +71 -0
  151. package/dist/utils/db/mysql/proxy/disconnect.d.ts +2 -0
  152. package/dist/utils/db/mysql/proxy/disconnect.js +5 -0
  153. package/dist/utils/db/mysql/proxy/disconnectDb.d.ts +2 -0
  154. package/dist/utils/db/mysql/proxy/disconnectDb.js +5 -0
  155. package/dist/utils/db/mysql/proxy/getClient.d.ts +4 -0
  156. package/dist/utils/db/mysql/proxy/getClient.js +5 -0
  157. package/dist/utils/db/mysql/proxy/index.d.ts +3 -0
  158. package/dist/utils/db/mysql/proxy/index.js +3 -0
  159. package/dist/utils/db/mysql/proxy/query.d.ts +4 -0
  160. package/dist/utils/db/mysql/proxy/query.js +45 -0
  161. package/dist/utils/dynamodb/deleteRecord.d.ts +5 -0
  162. package/dist/utils/dynamodb/deleteRecord.js +39 -0
  163. package/dist/utils/dynamodb/getClient.d.ts +3 -0
  164. package/dist/utils/dynamodb/getClient.js +5 -0
  165. package/dist/utils/dynamodb/index.d.ts +6 -0
  166. package/dist/utils/dynamodb/index.js +6 -0
  167. package/dist/utils/dynamodb/putRecord.d.ts +4 -0
  168. package/dist/utils/dynamodb/putRecord.js +39 -0
  169. package/dist/utils/dynamodb/query.d.ts +5 -0
  170. package/dist/utils/dynamodb/query.js +52 -0
  171. package/dist/utils/dynamodb/scan.d.ts +4 -0
  172. package/dist/utils/dynamodb/scan.js +40 -0
  173. package/dist/utils/dynamodb/updateRecord.d.ts +5 -0
  174. package/dist/utils/dynamodb/updateRecord.js +53 -0
  175. package/dist/utils/formatUnixTimestamp.d.ts +8 -0
  176. package/dist/utils/formatUnixTimestamp.js +17 -0
  177. package/dist/utils/generateUid.d.ts +13 -0
  178. package/{src → dist}/utils/generateUid.js +9 -4
  179. package/dist/utils/getCurrentDatetime.d.ts +2 -0
  180. package/dist/utils/getCurrentDatetime.js +4 -0
  181. package/dist/utils/getCurrentTimestamp.d.ts +7 -0
  182. package/dist/utils/getCurrentTimestamp.js +9 -0
  183. package/dist/utils/getJwtSubFromAuthHeader.d.ts +9 -0
  184. package/dist/utils/getJwtSubFromAuthHeader.js +24 -0
  185. package/dist/utils/index.d.ts +9 -0
  186. package/dist/utils/index.js +9 -0
  187. package/dist/utils/isDecimal.d.ts +8 -0
  188. package/dist/utils/isDecimal.js +9 -0
  189. package/dist/utils/isEmail.d.ts +9 -0
  190. package/{src → dist}/utils/isEmail.js +9 -4
  191. package/dist/utils/isEmpty.d.ts +8 -0
  192. package/dist/utils/isEmpty.js +19 -0
  193. package/dist/utils/jwt/index.d.ts +2 -0
  194. package/dist/utils/jwt/index.js +2 -0
  195. package/dist/utils/jwt/sign.d.ts +3 -0
  196. package/dist/utils/jwt/sign.js +5 -0
  197. package/dist/utils/jwt/verify.d.ts +3 -0
  198. package/dist/utils/jwt/verify.js +12 -0
  199. package/dist/utils/logger.d.ts +20 -0
  200. package/dist/utils/logger.js +38 -0
  201. package/dist/utils/s3/getClient.d.ts +3 -0
  202. package/dist/utils/s3/getClient.js +5 -0
  203. package/dist/utils/s3/getDownloadSignedUrl.d.ts +5 -0
  204. package/dist/utils/s3/getDownloadSignedUrl.js +39 -0
  205. package/dist/utils/s3/getHeadObject.d.ts +10 -0
  206. package/dist/utils/s3/getHeadObject.js +39 -0
  207. package/dist/utils/s3/getObject.d.ts +13 -0
  208. package/dist/utils/s3/getObject.js +51 -0
  209. package/dist/utils/s3/getUploadSignedUrl.d.ts +5 -0
  210. package/dist/utils/s3/getUploadSignedUrl.js +39 -0
  211. package/dist/utils/s3/index.d.ts +6 -0
  212. package/dist/utils/s3/index.js +6 -0
  213. package/dist/utils/s3/putObject.d.ts +5 -0
  214. package/dist/utils/s3/putObject.js +39 -0
  215. package/dist/utils/secretsmanager/getClient.d.ts +3 -0
  216. package/dist/utils/secretsmanager/getClient.js +5 -0
  217. package/dist/utils/secretsmanager/getSecretValue.d.ts +4 -0
  218. package/dist/utils/secretsmanager/getSecretValue.js +68 -0
  219. package/dist/utils/secretsmanager/index.d.ts +2 -0
  220. package/dist/utils/secretsmanager/index.js +2 -0
  221. package/dist/utils/sqs/deleteMessage.d.ts +5 -0
  222. package/dist/utils/sqs/deleteMessage.js +39 -0
  223. package/dist/utils/sqs/dispatch.d.ts +5 -0
  224. package/dist/utils/sqs/dispatch.js +39 -0
  225. package/dist/utils/sqs/getClient.d.ts +3 -0
  226. package/dist/utils/sqs/getClient.js +5 -0
  227. package/dist/utils/sqs/index.d.ts +4 -0
  228. package/dist/utils/sqs/index.js +4 -0
  229. package/dist/utils/sqs/receiveMessages.d.ts +5 -0
  230. package/dist/utils/sqs/receiveMessages.js +39 -0
  231. package/dist/utils/validateFields.d.ts +22 -0
  232. package/{src → dist}/utils/validateFields.js +13 -19
  233. package/package.json +145 -34
  234. package/src/exceptions/__tests__/LesgoException.spec.js +0 -24
  235. package/src/exceptions/index.js +0 -4
  236. package/src/index.js +0 -4
  237. package/src/middlewares/__mocks__/ValidationErrorException.js +0 -18
  238. package/src/middlewares/__tests__/basicAuthMiddleware.spec.js +0 -264
  239. package/src/middlewares/__tests__/clientAuthMiddleware.spec.js +0 -235
  240. package/src/middlewares/__tests__/errorHttpResponseMiddleware.spec.js +0 -203
  241. package/src/middlewares/__tests__/gzipHttpResponse.spec.js +0 -185
  242. package/src/middlewares/__tests__/httpNoOutputMiddleware.spec.js +0 -201
  243. package/src/middlewares/__tests__/normalizeHttpRequestMiddleware.spec.js +0 -181
  244. package/src/middlewares/__tests__/normalizeSQSMessageMiddleware.spec.js +0 -120
  245. package/src/middlewares/__tests__/successHttpResponseMiddleware.spec.js +0 -172
  246. package/src/middlewares/__tests__/verifyJwtMiddleware.spec.js +0 -297
  247. package/src/middlewares/basicAuthMiddleware.js +0 -125
  248. package/src/middlewares/clientAuthMiddleware.js +0 -103
  249. package/src/middlewares/errorHttpResponseMiddleware.js +0 -101
  250. package/src/middlewares/gzipHttpResponse.js +0 -98
  251. package/src/middlewares/httpMiddleware.js +0 -19
  252. package/src/middlewares/httpNoOutputMiddleware.js +0 -91
  253. package/src/middlewares/index.js +0 -19
  254. package/src/middlewares/normalizeHttpRequestMiddleware.js +0 -101
  255. package/src/middlewares/normalizeSQSMessageMiddleware.js +0 -67
  256. package/src/middlewares/successHttpResponseMiddleware.js +0 -85
  257. package/src/middlewares/verifyJwtMiddleware.js +0 -73
  258. package/src/services/AuroraDbRDSProxyService.js +0 -182
  259. package/src/services/AuroraDbService.js +0 -111
  260. package/src/services/DynamoDbService.js +0 -177
  261. package/src/services/ElastiCacheService.js +0 -17
  262. package/src/services/ElasticsearchService.js +0 -181
  263. package/src/services/FirebaseAdminService.js +0 -108
  264. package/src/services/JwtService.js +0 -52
  265. package/src/services/S3Service.js +0 -59
  266. package/src/services/SQSService.js +0 -65
  267. package/src/services/__tests__/AuroraDbRDSProxyService.spec.js +0 -278
  268. package/src/services/__tests__/AuroraDbService.spec.js +0 -211
  269. package/src/services/__tests__/AwsElasticsearchConnection.spec.js +0 -89
  270. package/src/services/__tests__/DynamoDbService.spec.js +0 -314
  271. package/src/services/__tests__/ElasticsearchService.spec.js +0 -201
  272. package/src/services/__tests__/FirebaseAdminService.spec.js +0 -356
  273. package/src/services/__tests__/JwtService.spec.js +0 -35
  274. package/src/services/__tests__/LengthAwarePaginator.spec.js +0 -223
  275. package/src/services/__tests__/LoggerService.spec.js +0 -267
  276. package/src/services/__tests__/Paginator.spec.js +0 -383
  277. package/src/services/__tests__/S3Service.spec.js +0 -55
  278. package/src/services/__tests__/SQSService.spec.js +0 -47
  279. package/src/services/__tests__/SignedRequest.spec.js +0 -103
  280. package/src/services/aws/AwsElasticsearchConnection.js +0 -59
  281. package/src/services/aws/SignedRequest.js +0 -158
  282. package/src/services/index.js +0 -19
  283. package/src/services/pagination/LengthAwarePaginator.js +0 -49
  284. package/src/services/pagination/Paginator.js +0 -260
  285. package/src/utils/__mocks__/db.js +0 -109
  286. package/src/utils/__tests__/cache.spec.js +0 -131
  287. package/src/utils/__tests__/crypto.spec.js +0 -122
  288. package/src/utils/__tests__/db.spec.js +0 -70
  289. package/src/utils/__tests__/dynamodb.spec.js +0 -27
  290. package/src/utils/__tests__/elasticsearch.spec.js +0 -43
  291. package/src/utils/__tests__/generateUid.spec.js +0 -36
  292. package/src/utils/__tests__/getJwtSubFromAuthHeader.spec.js +0 -20
  293. package/src/utils/__tests__/isDecimal.spec.js +0 -12
  294. package/src/utils/__tests__/isEmail.spec.js +0 -28
  295. package/src/utils/__tests__/isEmpty.spec.js +0 -31
  296. package/src/utils/__tests__/logger.spec.js +0 -11
  297. package/src/utils/__tests__/objectStore.spec.js +0 -67
  298. package/src/utils/__tests__/prepSQLInsertParams.spec.js +0 -46
  299. package/src/utils/__tests__/prepSQLUpdateParams.spec.js +0 -36
  300. package/src/utils/__tests__/queue.spec.js +0 -54
  301. package/src/utils/__tests__/validateFields.spec.js +0 -374
  302. package/src/utils/cache.js +0 -215
  303. package/src/utils/crypto.js +0 -77
  304. package/src/utils/db.js +0 -17
  305. package/src/utils/dynamodb.js +0 -6
  306. package/src/utils/elasticsearch.js +0 -20
  307. package/src/utils/getJwtSubFromAuthHeader.js +0 -18
  308. package/src/utils/index.js +0 -26
  309. package/src/utils/isDecimal.js +0 -2
  310. package/src/utils/isEmpty.js +0 -6
  311. package/src/utils/logger.js +0 -25
  312. package/src/utils/objectStore.js +0 -11
  313. package/src/utils/prepSQLInsertParams.js +0 -21
  314. package/src/utils/prepSQLUpdateParams.js +0 -25
  315. package/src/utils/queue.js +0 -11
package/README.md CHANGED
@@ -5,13 +5,13 @@
5
5
 
6
6
  Bootstrap your next microservice with a lightweight node.js serverless framework.
7
7
 
8
- > Note: This repository contains the core code of the Lesgo! framework. If you want to build an application using Lesgo!, visit the main Lesgo! repository.
8
+ > Note: This repository contains the core code of the Lesgo! framework. If you want to build an application using Lesgo!, visit the [docs](https://reflex-media.github.io/lesgo-docs).
9
9
 
10
10
  ## Unit Test
11
11
 
12
12
  This framework uses Jest test framework for unit testing.
13
13
 
14
- All test files exist in the respective `src/__tests__/` directory.
14
+ All test files exist in the respective `src/**/__tests__/*.test.ts` directory.
15
15
 
16
16
  **Install dependencies**
17
17
 
@@ -35,8 +35,9 @@ View the generated html report in `coverage/index.html`.
35
35
 
36
36
  ### Testing environment
37
37
 
38
- Declare testing environment configurations in `tests/config` directory.
38
+ Declare testing environment configurations in `jest.setup.ts` directory.
39
39
 
40
40
  ## Contributing
41
41
 
42
- You may contribute to the core framework by submitting a PR to the `develop` branch. Refer to the official [Docs](https://reflex-media.github.io/lesgo-docs/contributing/) for more information.
42
+ You may contribute to the core framework by submitting a PR to the `develop` branch. Refer to the official [Docs](https://reflex-media.github.io/lesgo-docs/stable/prologue/contribution-guide/) for more information.
43
+
@@ -125,7 +125,7 @@ function deploy_func ()
125
125
  if [ ${SERVERLESS_VERSION_NUMBER} -ge ${LATEST_SERVERLESS_VERSION_NUMBER} ]; then
126
126
  sls deploy function -f ${FUNCTION} --stage ${STAGE} --param="env=${ENVFILE}" --config ${CONFIG}
127
127
  else
128
- sls deploy -f ${FUNCTION} --stage ${STAGE} --env ${ENVFILE} --config ${CONFIG}
128
+ sls deploy -f ${FUNCTION} --stage ${STAGE} --env ${ENVFILE} --config ${CONFIG}
129
129
  fi
130
130
  }
131
131
 
@@ -172,14 +172,14 @@ function invoke_func ()
172
172
  echo -e "${YELLOW}Invoking function ${FUNCTION} on ${STAGE}${NC} using ${CONFIG}"
173
173
  if [ ${INVOKE_LOCAL} == 1 ]; then
174
174
  if [ ${SERVERLESS_VERSION_NUMBER} -ge ${LATEST_SERVERLESS_VERSION_NUMBER} ]; then
175
- sls invoke local function -f ${FUNCTION} --stage ${STAGE} --param="env=${ENVFILE}" -d ${DATA} -l --config ${CONFIG}
175
+ sls invoke local -f ${FUNCTION} --stage ${STAGE} --param="env=${ENVFILE}" -d ${DATA} -l --config ${CONFIG}
176
176
  else
177
177
  sls invoke local -f ${FUNCTION} --stage ${STAGE} --env ${ENVFILE} -d ${DATA} -l --config ${CONFIG}
178
178
  fi
179
179
 
180
180
  else
181
181
  if [ ${SERVERLESS_VERSION_NUMBER} -ge ${LATEST_SERVERLESS_VERSION_NUMBER} ]; then
182
- sls invoke function -f ${FUNCTION} --stage ${STAGE} --param="env=${ENVFILE}" -d ${DATA} -l --config ${CONFIG}
182
+ sls invoke -f ${FUNCTION} --stage ${STAGE} --param="env=${ENVFILE}" -d ${DATA} -l --config ${CONFIG}
183
183
  else
184
184
  sls invoke -f ${FUNCTION} --stage ${STAGE} --env ${ENVFILE} -d ${DATA} -l --config ${CONFIG}
185
185
  fi
@@ -190,7 +190,7 @@ function log_stream_func ()
190
190
  {
191
191
  echo -e "${YELLOW}Log Streaming function ${FUNCTION} on ${STAGE}${NC} using ${CONFIG}"
192
192
  if [ ${SERVERLESS_VERSION_NUMBER} -ge ${LATEST_SERVERLESS_VERSION_NUMBER} ]; then
193
- sls logs function -f ${FUNCTION} --stage ${STAGE} --param="env=${ENVFILE}" -t --config ${CONFIG}
193
+ sls logs -f ${FUNCTION} --stage ${STAGE} --param="env=${ENVFILE}" -t --config ${CONFIG}
194
194
  else
195
195
  sls logs -f ${FUNCTION} --stage ${STAGE} --env ${ENVFILE} -t --config ${CONFIG}
196
196
  fi
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ name: string;
3
+ stackName: string;
4
+ env: string;
5
+ debug: boolean;
6
+ };
7
+ export default _default;
@@ -0,0 +1,9 @@
1
+ const appName = process.env.APP_NAME || 'lesgo';
2
+ const env = process.env.APP_ENV || 'dev';
3
+ const stackName = `${appName}-${env}`;
4
+ export default {
5
+ name: appName,
6
+ stackName,
7
+ env,
8
+ debug: process.env.APP_DEBUG === 'true',
9
+ };
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ accountId: string | undefined;
3
+ region: string;
4
+ };
5
+ export default _default;
@@ -0,0 +1,4 @@
1
+ export default {
2
+ accountId: process.env.AWS_ACCOUNT_ID,
3
+ region: process.env.AWS_REGION || 'ap-southeast-1',
4
+ };
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ authorizedList: {
3
+ username: string;
4
+ password: string;
5
+ }[];
6
+ };
7
+ export default _default;
@@ -0,0 +1,8 @@
1
+ const basicAuthList = process.env.LESGO_BASIC_AUTH_LIST || '';
2
+ const authorizedList = basicAuthList.split(',').map(key => {
3
+ const [username, password] = key.split(':');
4
+ return { username, password };
5
+ });
6
+ export default {
7
+ authorizedList,
8
+ };
@@ -0,0 +1,10 @@
1
+ declare const _default: {
2
+ hash: {
3
+ algorithm: string;
4
+ };
5
+ encryption: {
6
+ algorithm: string;
7
+ secretKey: string | undefined;
8
+ };
9
+ };
10
+ export default _default;
@@ -0,0 +1,9 @@
1
+ export default {
2
+ hash: {
3
+ algorithm: process.env.LESGO_CRYPTO_HASH_ALG || 'sha256',
4
+ },
5
+ encryption: {
6
+ algorithm: process.env.LESGO_CRYPTO_ENCRYPTION_ALG || 'aes-256-cbc',
7
+ secretKey: process.env.LESGO_CRYPTO_ENCRYPTION_SEC,
8
+ },
9
+ };
@@ -0,0 +1,8 @@
1
+ declare const _default: {
2
+ region: string;
3
+ tables: {
4
+ alias: string;
5
+ name: string;
6
+ }[];
7
+ };
8
+ export default _default;
@@ -0,0 +1,14 @@
1
+ var _a;
2
+ import appConfig from './app';
3
+ import awsConfig from './aws';
4
+ const dynamodbTableAliases =
5
+ ((_a = process.env.LESGO_AWS_DYNAMODB_TABLE_ALIASES) === null || _a === void 0
6
+ ? void 0
7
+ : _a.split(',')) || [];
8
+ export default {
9
+ region: process.env.LESGO_AWS_DYNAMODB_REGION || awsConfig.region,
10
+ tables: dynamodbTableAliases.map(t => ({
11
+ alias: t,
12
+ name: `${appConfig.stackName}-${t}`,
13
+ })),
14
+ };
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ redis: {
3
+ endpoint: string | undefined;
4
+ port: number;
5
+ };
6
+ };
7
+ export default _default;
@@ -0,0 +1,6 @@
1
+ export default {
2
+ redis: {
3
+ endpoint: process.env.LESGO_AWS_ELASTICACHE_REDIS_ENDPOINT,
4
+ port: Number(process.env.LESGO_AWS_ELASTICACHE_REDIS_PORT || 6379),
5
+ },
6
+ };
@@ -0,0 +1,11 @@
1
+ export { default as app } from './app';
2
+ export { default as aws } from './aws';
3
+ export { default as basicAuth } from './basicAuth';
4
+ export { default as crypto } from './crypto';
5
+ export { default as dynamodb } from './dynamodb';
6
+ export { default as elasticache } from './elasticache';
7
+ export { default as jwt } from './jwt';
8
+ export { default as rds } from './rds';
9
+ export { default as s3 } from './s3';
10
+ export { default as secretsmanager } from './secretsmanager';
11
+ export { default as sqs } from './sqs';
@@ -0,0 +1,11 @@
1
+ export { default as app } from './app';
2
+ export { default as aws } from './aws';
3
+ export { default as basicAuth } from './basicAuth';
4
+ export { default as crypto } from './crypto';
5
+ export { default as dynamodb } from './dynamodb';
6
+ export { default as elasticache } from './elasticache';
7
+ export { default as jwt } from './jwt';
8
+ export { default as rds } from './rds';
9
+ export { default as s3 } from './s3';
10
+ export { default as secretsmanager } from './secretsmanager';
11
+ export { default as sqs } from './sqs';
@@ -0,0 +1,12 @@
1
+ declare const _default: {
2
+ algorithm: string;
3
+ secrets: {
4
+ keyid: string;
5
+ secret: string;
6
+ }[];
7
+ expiresIn: string;
8
+ issuer: string | undefined;
9
+ audience: string | undefined;
10
+ validateClaims: boolean;
11
+ };
12
+ export default _default;
@@ -0,0 +1,16 @@
1
+ const secretKeys = process.env.LESGO_JWT_SECRET_KEYS || '';
2
+ const secrets = secretKeys.split(',').map(key => {
3
+ if (!key.includes(':')) {
4
+ return { keyid: '0', secret: key };
5
+ }
6
+ const [keyid, secret] = key.split(':');
7
+ return { keyid, secret };
8
+ });
9
+ export default {
10
+ algorithm: process.env.LESGO_JWT_ALGORITHM || 'HS256',
11
+ secrets,
12
+ expiresIn: process.env.LESGO_JWT_EXPIRES_IN || '1h',
13
+ issuer: process.env.LESGO_JWT_ISSUER,
14
+ audience: process.env.LESGO_JWT_AUDIENCE,
15
+ validateClaims: process.env.LESGO_JWT_VALIDATE_CLAIMS !== 'false',
16
+ };
@@ -0,0 +1,12 @@
1
+ declare const _default: {
2
+ aurora: {
3
+ mysql: {
4
+ region: string;
5
+ databaseName: string | undefined;
6
+ proxy: {
7
+ dbCredentialsSecretId: string | undefined;
8
+ };
9
+ };
10
+ };
11
+ };
12
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import awsConfig from './aws';
2
+ export default {
3
+ aurora: {
4
+ mysql: {
5
+ region: process.env.LESGO_AWS_RDS_AURORA_MYSQL_REGION || awsConfig.region,
6
+ databaseName: process.env.LESGO_AWS_RDS_AURORA_MYSQL_DB_NAME,
7
+ proxy: {
8
+ dbCredentialsSecretId:
9
+ process.env.LESGO_AWS_RDS_AURORA_MYSQL_PROXY_DB_CREDENTIALS_SECRET_ID,
10
+ },
11
+ },
12
+ },
13
+ };
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ region: string;
3
+ bucket: string;
4
+ };
5
+ export default _default;
@@ -0,0 +1,5 @@
1
+ import awsConfig from './aws';
2
+ export default {
3
+ region: process.env.LESGO_AWS_S3_REGION || awsConfig.region,
4
+ bucket: process.env.LESGO_AWS_S3_BUCKET || 'lesgo-dev',
5
+ };
@@ -0,0 +1,4 @@
1
+ declare const _default: {
2
+ region: string;
3
+ };
4
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import awsConfig from './aws';
2
+ export default {
3
+ region: process.env.LESGO_AWS_SECRETS_MANAGER_REGION || awsConfig.region,
4
+ };
@@ -0,0 +1,9 @@
1
+ declare const _default: {
2
+ region: string;
3
+ queues: {
4
+ alias: string;
5
+ name: string;
6
+ url: string;
7
+ }[];
8
+ };
9
+ export default _default;
@@ -0,0 +1,18 @@
1
+ var _a;
2
+ import awsConfig from './aws';
3
+ import appConfig from './app';
4
+ const sqsQueueAliases =
5
+ ((_a = process.env.LESGO_AWS_SQS_QUEUE_ALIASES) === null || _a === void 0
6
+ ? void 0
7
+ : _a.split(',')) || [];
8
+ const region = process.env.LESGO_AWS_SQS_REGION || awsConfig.region;
9
+ export default {
10
+ region: process.env.LESGO_AWS_SQS_REGION || awsConfig.region,
11
+ queues: sqsQueueAliases.map(q => ({
12
+ alias: q,
13
+ name: `${appConfig.stackName}-${q}`,
14
+ url: `https://sqs.${region}.amazonaws.com/${
15
+ awsConfig.accountId
16
+ }/${`${appConfig.stackName}-${q}`}`,
17
+ })),
18
+ };
@@ -0,0 +1,6 @@
1
+ export default class LesgoException extends Error {
2
+ statusCode: number;
3
+ code: string;
4
+ extra: any;
5
+ constructor(message: string, errorCode?: string, httpStatusCode?: number, extra?: any);
6
+ }
@@ -1,18 +1,19 @@
1
+ import isEmpty from '../utils/isEmpty';
1
2
  export default class LesgoException extends Error {
2
3
  constructor(
3
4
  message,
4
5
  errorCode = 'LESGO_EXCEPTION',
5
6
  httpStatusCode = 500,
6
- extra
7
+ extra = {}
7
8
  ) {
8
9
  super();
9
10
  this.name = 'LesgoException';
10
11
  this.message = message;
11
12
  this.statusCode = httpStatusCode;
12
13
  this.code = errorCode;
13
-
14
14
  Error.captureStackTrace(this, this.constructor);
15
-
16
- if (extra) this.extra = extra;
15
+ if (!isEmpty(extra)) {
16
+ this.extra = extra;
17
+ }
17
18
  }
18
19
  }
@@ -0,0 +1 @@
1
+ export { default as LesgoException } from './LesgoException';
@@ -0,0 +1 @@
1
+ export { default as LesgoException } from './LesgoException';
@@ -0,0 +1,8 @@
1
+ export interface DisconnectMiddlewareOptions {
2
+ clients?: any[];
3
+ }
4
+ declare const disconnectMiddleware: (opts?: DisconnectMiddlewareOptions) => {
5
+ after: () => Promise<void>;
6
+ onError: () => Promise<void>;
7
+ };
8
+ export default disconnectMiddleware;
@@ -0,0 +1,78 @@
1
+ var __awaiter =
2
+ (this && this.__awaiter) ||
3
+ function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P
6
+ ? value
7
+ : new P(function (resolve) {
8
+ resolve(value);
9
+ });
10
+ }
11
+ return new (P || (P = Promise))(function (resolve, reject) {
12
+ function fulfilled(value) {
13
+ try {
14
+ step(generator.next(value));
15
+ } catch (e) {
16
+ reject(e);
17
+ }
18
+ }
19
+ function rejected(value) {
20
+ try {
21
+ step(generator['throw'](value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ }
26
+ function step(result) {
27
+ result.done
28
+ ? resolve(result.value)
29
+ : adopt(result.value).then(fulfilled, rejected);
30
+ }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ import logger from '../utils/logger';
35
+ const FILE = 'lesgo.middlewares.disconnectMiddleware';
36
+ const disconnectMiddleware = opts => {
37
+ const disconnect = () =>
38
+ __awaiter(void 0, void 0, void 0, function* () {
39
+ var _a;
40
+ logger.debug(`${FILE}::PREPARING_TO_DISCONNECT`);
41
+ const disconnect = [];
42
+ if (
43
+ (opts === null || opts === void 0 ? void 0 : opts.clients) &&
44
+ ((_a = opts === null || opts === void 0 ? void 0 : opts.clients) ===
45
+ null || _a === void 0
46
+ ? void 0
47
+ : _a.length) > 0
48
+ ) {
49
+ opts.clients.forEach(client => {
50
+ disconnect.push(client());
51
+ });
52
+ }
53
+ if (disconnect.length > 0) {
54
+ const results = yield Promise.allSettled(disconnect);
55
+ results.forEach(result => {
56
+ if (result.status === 'fulfilled') {
57
+ logger.debug(`${FILE}::DISCONNECT_SUCCESS`, { result });
58
+ } else if (result.status === 'rejected') {
59
+ logger.error(`${FILE}::DISCONNECT_ERROR`, { result });
60
+ }
61
+ });
62
+ logger.debug(`${FILE}::DISCONNECT_COMPLETED`, opts);
63
+ }
64
+ });
65
+ const disconnectMiddlewareAfter = () =>
66
+ __awaiter(void 0, void 0, void 0, function* () {
67
+ yield disconnect();
68
+ });
69
+ const disconnectMiddlewareOnError = () =>
70
+ __awaiter(void 0, void 0, void 0, function* () {
71
+ yield disconnect();
72
+ });
73
+ return {
74
+ after: disconnectMiddlewareAfter,
75
+ onError: disconnectMiddlewareOnError,
76
+ };
77
+ };
78
+ export default disconnectMiddleware;
@@ -0,0 +1,12 @@
1
+ import middy from '@middy/core';
2
+ export interface HttpMiddlewareOptions {
3
+ debugMode?: boolean;
4
+ headers?: Record<string, string>;
5
+ isBase64Encoded?: boolean;
6
+ }
7
+ declare const httpMiddleware: (opts?: HttpMiddlewareOptions) => {
8
+ before: (handler: middy.Request) => Promise<void>;
9
+ after: (handler: middy.Request) => Promise<void>;
10
+ onError: (handler: middy.Request) => Promise<void>;
11
+ };
12
+ export default httpMiddleware;
@@ -0,0 +1,74 @@
1
+ var __awaiter =
2
+ (this && this.__awaiter) ||
3
+ function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P
6
+ ? value
7
+ : new P(function (resolve) {
8
+ resolve(value);
9
+ });
10
+ }
11
+ return new (P || (P = Promise))(function (resolve, reject) {
12
+ function fulfilled(value) {
13
+ try {
14
+ step(generator.next(value));
15
+ } catch (e) {
16
+ reject(e);
17
+ }
18
+ }
19
+ function rejected(value) {
20
+ try {
21
+ step(generator['throw'](value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ }
26
+ function step(result) {
27
+ result.done
28
+ ? resolve(result.value)
29
+ : adopt(result.value).then(fulfilled, rejected);
30
+ }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ import jsonBodyParser from '@middy/http-json-body-parser';
35
+ import eventNormalizer from '@middy/http-event-normalizer';
36
+ import doNotWaitForEmptyEventLoop from '@middy/do-not-wait-for-empty-event-loop';
37
+ import httpHeaderNormalizer from '@middy/http-header-normalizer';
38
+ import httpResponseMiddleware from './httpResponseMiddleware';
39
+ const httpMiddleware = (opts = {}) => {
40
+ const middlewarePackages = [
41
+ doNotWaitForEmptyEventLoop(),
42
+ eventNormalizer(),
43
+ httpHeaderNormalizer(),
44
+ jsonBodyParser({ disableContentTypeError: true }),
45
+ httpResponseMiddleware(opts),
46
+ ];
47
+ return {
48
+ before: handler =>
49
+ __awaiter(void 0, void 0, void 0, function* () {
50
+ for (const middleware of middlewarePackages) {
51
+ if (middleware.before) {
52
+ yield middleware.before(handler);
53
+ }
54
+ }
55
+ }),
56
+ after: handler =>
57
+ __awaiter(void 0, void 0, void 0, function* () {
58
+ for (const middleware of middlewarePackages) {
59
+ if (middleware.after) {
60
+ yield middleware.after(handler);
61
+ }
62
+ }
63
+ }),
64
+ onError: handler =>
65
+ __awaiter(void 0, void 0, void 0, function* () {
66
+ for (const middleware of middlewarePackages) {
67
+ if (middleware.onError) {
68
+ yield middleware.onError(handler);
69
+ }
70
+ }
71
+ }),
72
+ };
73
+ };
74
+ export default httpMiddleware;
@@ -0,0 +1,7 @@
1
+ import middy from '@middy/core';
2
+ import { HttpMiddlewareOptions } from './httpMiddleware';
3
+ declare const httpResponseMiddleware: (opts?: HttpMiddlewareOptions) => {
4
+ after: (request: middy.Request) => Promise<void>;
5
+ onError: (request: middy.Request) => Promise<void>;
6
+ };
7
+ export default httpResponseMiddleware;