@gugananuvem/aws-local-simulator 1.0.11 → 1.0.14

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 (65) hide show
  1. package/README.md +349 -72
  2. package/package.json +12 -2
  3. package/src/config/config-loader.js +2 -0
  4. package/src/config/default-config.js +3 -0
  5. package/src/index.js +18 -2
  6. package/src/server.js +37 -31
  7. package/src/services/apigateway/index.js +10 -3
  8. package/src/services/apigateway/server.js +73 -0
  9. package/src/services/apigateway/simulator.js +13 -3
  10. package/src/services/athena/index.js +75 -0
  11. package/src/services/athena/server.js +101 -0
  12. package/src/services/athena/simulador.js +998 -0
  13. package/src/services/athena/simulator.js +346 -0
  14. package/src/services/cloudformation/index.js +106 -0
  15. package/src/services/cloudformation/server.js +417 -0
  16. package/src/services/cloudformation/simulador.js +1045 -0
  17. package/src/services/cloudtrail/index.js +84 -0
  18. package/src/services/cloudtrail/server.js +235 -0
  19. package/src/services/cloudtrail/simulador.js +719 -0
  20. package/src/services/cloudwatch/index.js +84 -0
  21. package/src/services/cloudwatch/server.js +366 -0
  22. package/src/services/cloudwatch/simulador.js +1173 -0
  23. package/src/services/cognito/index.js +5 -0
  24. package/src/services/cognito/server.js +54 -3
  25. package/src/services/cognito/simulator.js +273 -2
  26. package/src/services/config/index.js +96 -0
  27. package/src/services/config/server.js +215 -0
  28. package/src/services/config/simulador.js +1260 -0
  29. package/src/services/dynamodb/index.js +7 -3
  30. package/src/services/dynamodb/server.js +4 -2
  31. package/src/services/dynamodb/simulator.js +39 -29
  32. package/src/services/eventbridge/index.js +55 -51
  33. package/src/services/eventbridge/server.js +209 -0
  34. package/src/services/eventbridge/simulator.js +684 -0
  35. package/src/services/index.js +30 -4
  36. package/src/services/kms/index.js +75 -0
  37. package/src/services/kms/server.js +67 -0
  38. package/src/services/kms/simulator.js +324 -0
  39. package/src/services/lambda/handler-loader.js +13 -2
  40. package/src/services/lambda/index.js +7 -1
  41. package/src/services/lambda/server.js +32 -39
  42. package/src/services/lambda/simulator.js +78 -181
  43. package/src/services/parameter-store/index.js +80 -0
  44. package/src/services/parameter-store/server.js +50 -0
  45. package/src/services/parameter-store/simulator.js +201 -0
  46. package/src/services/s3/index.js +7 -3
  47. package/src/services/s3/server.js +20 -13
  48. package/src/services/s3/simulator.js +163 -407
  49. package/src/services/secret-manager/index.js +80 -0
  50. package/src/services/secret-manager/server.js +50 -0
  51. package/src/services/secret-manager/simulator.js +171 -0
  52. package/src/services/sns/index.js +55 -42
  53. package/src/services/sns/server.js +580 -0
  54. package/src/services/sns/simulator.js +1482 -0
  55. package/src/services/sqs/index.js +2 -4
  56. package/src/services/sqs/server.js +92 -18
  57. package/src/services/sqs/simulator.js +79 -298
  58. package/src/services/sts/index.js +37 -0
  59. package/src/services/sts/server.js +142 -0
  60. package/src/services/sts/simulator.js +69 -0
  61. package/src/services/xray/index.js +83 -0
  62. package/src/services/xray/server.js +308 -0
  63. package/src/services/xray/simulador.js +994 -0
  64. package/src/utils/cloudtrail-audit.js +129 -0
  65. package/src/utils/local-store.js +18 -2
@@ -20,10 +20,9 @@ class S3Service {
20
20
  const logger = require('../../utils/logger');
21
21
  logger.debug(`Inicializando S3 Service na porta ${this.port}...`);
22
22
 
23
- // Cria o simulador
24
23
  this.simulator = new S3Simulator(this.config);
25
-
26
- // Cria o servidor HTTP
24
+ await this.simulator.initialize();
25
+
27
26
  this.server = new S3Server(this.port, this.config);
28
27
  this.server.simulator = this.simulator;
29
28
 
@@ -32,6 +31,11 @@ class S3Service {
32
31
  logger.debug('S3 Service inicializado');
33
32
  }
34
33
 
34
+ injectDependencies(server) {
35
+ const ct = server.getService('cloudtrail');
36
+ if (ct?.simulator) this.simulator.audit.setTrail(ct.simulator);
37
+ }
38
+
35
39
  async start() {
36
40
  if (this.isRunning) return;
37
41
  await this.server.start();
@@ -17,8 +17,8 @@ class S3Server {
17
17
  }
18
18
 
19
19
  setupMiddlewares() {
20
- this.app.use(express.json({ limit: '100mb' }));
21
- this.app.use(express.raw({ type: 'application/octet-stream', limit: '100mb' }));
20
+ // Captura raw body como Buffer para qualquer content-type
21
+ this.app.use(express.raw({ type: () => true, limit: '100mb' }));
22
22
  this.app.use(express.text({ limit: '100mb' }));
23
23
 
24
24
  // Logging de requisições
@@ -35,8 +35,10 @@ class S3Server {
35
35
  }
36
36
 
37
37
  async initialize() {
38
- this.simulator = new S3Simulator(this.config);
39
- await this.simulator.initialize();
38
+ if (!this.simulator) {
39
+ this.simulator = new S3Simulator(this.config);
40
+ await this.simulator.initialize();
41
+ }
40
42
  this.setupRoutes();
41
43
  }
42
44
 
@@ -80,15 +82,20 @@ class S3Server {
80
82
 
81
83
  // Upload object
82
84
  this.app.put('/:bucket/*', (req, res) => {
83
- const bucket = req.params.bucket;
84
- const key = req.params[0];
85
- const result = this.simulator.putObject(bucket, key, req.body, req.headers);
86
-
87
- if (result.error) {
88
- res.status(result.status).send(this.simulator.generateErrorResponse(result.error.code, result.error.message));
89
- } else {
90
- res.set('ETag', `"${result.etag}"`);
91
- res.status(200).send();
85
+ try {
86
+ const bucket = req.params.bucket;
87
+ const key = req.params[0];
88
+ const result = this.simulator.putObject(bucket, key, req.body, req.headers);
89
+
90
+ if (result.error) {
91
+ res.status(result.status).send(this.simulator.generateErrorResponse(result.error.code, result.error.message));
92
+ } else {
93
+ res.set('ETag', `"${result.etag}"`);
94
+ res.status(200).send();
95
+ }
96
+ } catch (err) {
97
+ logger.error('S3 putObject error:', err);
98
+ res.status(500).send(this.simulator.generateErrorResponse('InternalError', err.message));
92
99
  }
93
100
  });
94
101