@gugananuvem/aws-local-simulator 1.0.12 → 1.0.15

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 (77) hide show
  1. package/README.md +594 -257
  2. package/bin/aws-local-simulator.js +63 -63
  3. package/package.json +21 -10
  4. package/src/config/config-loader.js +114 -114
  5. package/src/config/default-config.js +68 -67
  6. package/src/config/env-loader.js +68 -68
  7. package/src/index.js +146 -130
  8. package/src/index.mjs +123 -123
  9. package/src/server.js +227 -223
  10. package/src/services/apigateway/index.js +73 -68
  11. package/src/services/apigateway/server.js +507 -487
  12. package/src/services/apigateway/simulator.js +1261 -1251
  13. package/src/services/athena/index.js +75 -0
  14. package/src/services/athena/server.js +101 -0
  15. package/src/services/athena/simulador.js +998 -0
  16. package/src/services/athena/simulator.js +346 -0
  17. package/src/services/cloudformation/index.js +106 -0
  18. package/src/services/cloudformation/server.js +417 -0
  19. package/src/services/cloudformation/simulador.js +1045 -0
  20. package/src/services/cloudtrail/index.js +84 -0
  21. package/src/services/cloudtrail/server.js +235 -0
  22. package/src/services/cloudtrail/simulador.js +719 -0
  23. package/src/services/cloudwatch/index.js +84 -0
  24. package/src/services/cloudwatch/server.js +366 -0
  25. package/src/services/cloudwatch/simulador.js +1173 -0
  26. package/src/services/cognito/index.js +79 -65
  27. package/src/services/cognito/server.js +301 -279
  28. package/src/services/cognito/simulator.js +1655 -1115
  29. package/src/services/config/index.js +96 -0
  30. package/src/services/config/server.js +215 -0
  31. package/src/services/config/simulador.js +1260 -0
  32. package/src/services/dynamodb/index.js +74 -70
  33. package/src/services/dynamodb/server.js +125 -121
  34. package/src/services/dynamodb/simulator.js +630 -620
  35. package/src/services/ecs/index.js +65 -65
  36. package/src/services/ecs/server.js +235 -233
  37. package/src/services/ecs/simulator.js +844 -844
  38. package/src/services/eventbridge/index.js +89 -85
  39. package/src/services/eventbridge/server.js +209 -0
  40. package/src/services/eventbridge/simulator.js +684 -0
  41. package/src/services/index.js +45 -19
  42. package/src/services/kms/index.js +75 -0
  43. package/src/services/kms/server.js +67 -0
  44. package/src/services/kms/simulator.js +324 -0
  45. package/src/services/lambda/handler-loader.js +183 -183
  46. package/src/services/lambda/index.js +78 -73
  47. package/src/services/lambda/route-registry.js +274 -274
  48. package/src/services/lambda/server.js +145 -145
  49. package/src/services/lambda/simulator.js +199 -172
  50. package/src/services/parameter-store/index.js +80 -0
  51. package/src/services/parameter-store/server.js +50 -0
  52. package/src/services/parameter-store/simulator.js +201 -0
  53. package/src/services/s3/index.js +73 -69
  54. package/src/services/s3/server.js +329 -238
  55. package/src/services/s3/simulator.js +565 -740
  56. package/src/services/secret-manager/index.js +80 -0
  57. package/src/services/secret-manager/server.js +50 -0
  58. package/src/services/secret-manager/simulator.js +171 -0
  59. package/src/services/sns/index.js +89 -76
  60. package/src/services/sns/server.js +580 -0
  61. package/src/services/sns/simulator.js +1482 -0
  62. package/src/services/sqs/index.js +93 -95
  63. package/src/services/sqs/server.js +349 -345
  64. package/src/services/sqs/simulator.js +441 -441
  65. package/src/services/sts/index.js +37 -37
  66. package/src/services/sts/server.js +144 -142
  67. package/src/services/sts/simulator.js +69 -69
  68. package/src/services/xray/index.js +83 -0
  69. package/src/services/xray/server.js +308 -0
  70. package/src/services/xray/simulador.js +994 -0
  71. package/src/template/aws-config-template.js +87 -87
  72. package/src/template/aws-config-template.mjs +90 -90
  73. package/src/template/config-template.json +203 -203
  74. package/src/utils/aws-config.js +91 -91
  75. package/src/utils/cloudtrail-audit.js +129 -0
  76. package/src/utils/local-store.js +83 -67
  77. package/src/utils/logger.js +59 -59
@@ -1,69 +1,69 @@
1
- /**
2
- * Carrega configurações de variáveis de ambiente
3
- */
4
-
5
- const logger = require('../utils/logger');
6
-
7
- class EnvLoader {
8
- static load() {
9
- const config = {};
10
-
11
- // Carrega configuração de serviços
12
- config.services = {
13
- dynamodb: this.getEnvBool('AWS_LOCAL_SIMULATOR_DYNAMODB', true),
14
- s3: this.getEnvBool('AWS_LOCAL_SIMULATOR_S3', true),
15
- sqs: this.getEnvBool('AWS_LOCAL_SIMULATOR_SQS', true),
16
- sns: this.getEnvBool('AWS_LOCAL_SIMULATOR_SNS', false),
17
- lambda: this.getEnvBool('AWS_LOCAL_SIMULATOR_LAMBDA', true),
18
- apigateway: this.getEnvBool('AWS_LOCAL_SIMULATOR_APIGATEWAY', false),
19
- eventbridge: this.getEnvBool('AWS_LOCAL_SIMULATOR_EVENTBRIDGE', false)
20
- };
21
-
22
- // Carrega portas
23
- config.ports = {
24
- dynamodb: this.getEnvInt('AWS_LOCAL_SIMULATOR_DYNAMODB_PORT', 8000),
25
- s3: this.getEnvInt('AWS_LOCAL_SIMULATOR_S3_PORT', 4566),
26
- sqs: this.getEnvInt('AWS_LOCAL_SIMULATOR_SQS_PORT', 9324),
27
- lambda: this.getEnvInt('AWS_LOCAL_SIMULATOR_LAMBDA_PORT', 3001),
28
- sns: this.getEnvInt('AWS_LOCAL_SIMULATOR_SNS_PORT', 9911),
29
- apigateway: this.getEnvInt('AWS_LOCAL_SIMULATOR_APIGATEWAY_PORT', 4567),
30
- eventbridge: this.getEnvInt('AWS_LOCAL_SIMULATOR_EVENTBRIDGE_PORT', 4010)
31
- };
32
-
33
- // Carrega diretório de dados
34
- config.dataDir = process.env.AWS_LOCAL_SIMULATOR_DATA || './.aws-local-simulator-data';
35
-
36
- // Carrega nível de log
37
- config.logLevel = process.env.AWS_LOCAL_SIMULATOR_LOG || 'info';
38
-
39
- // Carrega CORS
40
- config.cors = this.getEnvBool('AWS_LOCAL_SIMULATOR_CORS', true);
41
-
42
- // Carrega auto-create
43
- config.autoCreateTables = this.getEnvBool('AWS_LOCAL_SIMULATOR_AUTO_CREATE_TABLES', true);
44
- config.autoCreateBuckets = this.getEnvBool('AWS_LOCAL_SIMULATOR_AUTO_CREATE_BUCKETS', true);
45
-
46
- logger.debug('Variáveis de ambiente carregadas:', config);
47
-
48
- return config;
49
- }
50
-
51
- static getEnvBool(key, defaultValue) {
52
- const value = process.env[key];
53
- if (value === undefined) return defaultValue;
54
- return value === 'true' || value === '1' || value === 'yes';
55
- }
56
-
57
- static getEnvInt(key, defaultValue) {
58
- const value = process.env[key];
59
- if (value === undefined) return defaultValue;
60
- const parsed = parseInt(value, 10);
61
- return isNaN(parsed) ? defaultValue : parsed;
62
- }
63
-
64
- static getEnvString(key, defaultValue) {
65
- return process.env[key] || defaultValue;
66
- }
67
- }
68
-
1
+ /**
2
+ * Carrega configurações de variáveis de ambiente
3
+ */
4
+
5
+ const logger = require('../utils/logger');
6
+
7
+ class EnvLoader {
8
+ static load() {
9
+ const config = {};
10
+
11
+ // Carrega configuração de serviços
12
+ config.services = {
13
+ dynamodb: this.getEnvBool('AWS_LOCAL_SIMULATOR_DYNAMODB', true),
14
+ s3: this.getEnvBool('AWS_LOCAL_SIMULATOR_S3', true),
15
+ sqs: this.getEnvBool('AWS_LOCAL_SIMULATOR_SQS', true),
16
+ sns: this.getEnvBool('AWS_LOCAL_SIMULATOR_SNS', false),
17
+ lambda: this.getEnvBool('AWS_LOCAL_SIMULATOR_LAMBDA', true),
18
+ apigateway: this.getEnvBool('AWS_LOCAL_SIMULATOR_APIGATEWAY', false),
19
+ eventbridge: this.getEnvBool('AWS_LOCAL_SIMULATOR_EVENTBRIDGE', false)
20
+ };
21
+
22
+ // Carrega portas
23
+ config.ports = {
24
+ dynamodb: this.getEnvInt('AWS_LOCAL_SIMULATOR_DYNAMODB_PORT', 8000),
25
+ s3: this.getEnvInt('AWS_LOCAL_SIMULATOR_S3_PORT', 4566),
26
+ sqs: this.getEnvInt('AWS_LOCAL_SIMULATOR_SQS_PORT', 9324),
27
+ lambda: this.getEnvInt('AWS_LOCAL_SIMULATOR_LAMBDA_PORT', 3001),
28
+ sns: this.getEnvInt('AWS_LOCAL_SIMULATOR_SNS_PORT', 9911),
29
+ apigateway: this.getEnvInt('AWS_LOCAL_SIMULATOR_APIGATEWAY_PORT', 4567),
30
+ eventbridge: this.getEnvInt('AWS_LOCAL_SIMULATOR_EVENTBRIDGE_PORT', 4010)
31
+ };
32
+
33
+ // Carrega diretório de dados
34
+ config.dataDir = process.env.AWS_LOCAL_SIMULATOR_DATA || './.aws-local-simulator-data';
35
+
36
+ // Carrega nível de log
37
+ config.logLevel = process.env.AWS_LOCAL_SIMULATOR_LOG || 'info';
38
+
39
+ // Carrega CORS
40
+ config.cors = this.getEnvBool('AWS_LOCAL_SIMULATOR_CORS', true);
41
+
42
+ // Carrega auto-create
43
+ config.autoCreateTables = this.getEnvBool('AWS_LOCAL_SIMULATOR_AUTO_CREATE_TABLES', true);
44
+ config.autoCreateBuckets = this.getEnvBool('AWS_LOCAL_SIMULATOR_AUTO_CREATE_BUCKETS', true);
45
+
46
+ logger.debug('Variáveis de ambiente carregadas:', config);
47
+
48
+ return config;
49
+ }
50
+
51
+ static getEnvBool(key, defaultValue) {
52
+ const value = process.env[key];
53
+ if (value === undefined) return defaultValue;
54
+ return value === 'true' || value === '1' || value === 'yes';
55
+ }
56
+
57
+ static getEnvInt(key, defaultValue) {
58
+ const value = process.env[key];
59
+ if (value === undefined) return defaultValue;
60
+ const parsed = parseInt(value, 10);
61
+ return isNaN(parsed) ? defaultValue : parsed;
62
+ }
63
+
64
+ static getEnvString(key, defaultValue) {
65
+ return process.env[key] || defaultValue;
66
+ }
67
+ }
68
+
69
69
  module.exports = EnvLoader;
package/src/index.js CHANGED
@@ -1,131 +1,147 @@
1
- /**
2
- * AWS Local Simulator - Entry Point Principal
3
- */
4
-
5
- const Server = require('./server');
6
- const { loadConfig } = require('./config/config-loader');
7
- const logger = require('./utils/logger');
8
-
9
- // Exporta serviços para uso programático
10
- const DynamoDBService = require('./services/dynamodb');
11
- const S3Service = require('./services/s3');
12
- const SQSService = require('./services/sqs');
13
- const LambdaService = require('./services/lambda');
14
- const SNSService = require('./services/sns');
15
- const EventBridgeService = require('./services/eventbridge');
16
-
17
- // Exporta utilitários
18
- const LocalStore = require('./utils/local-store');
19
- const HandlerLoader = require('./services/lambda/handler-loader');
20
- const RouteRegistry = require('./services/lambda/route-registry');
21
-
22
- class AWSLocalSimulator {
23
- constructor(options = {}) {
24
- this.options = options;
25
- this.server = null;
26
- this.isRunning = false;
27
- }
28
-
29
- async start() {
30
- if (this.isRunning) {
31
- logger.warn('Simulador está rodando');
32
- return this;
33
- }
34
-
35
- try {
36
- const config = await loadConfig(this.options.configPath);
37
- this.server = new Server(config);
38
- await this.server.start();
39
- this.isRunning = true;
40
- logger.success('✅ AWS Local Simulator iniciado com sucesso');
41
- return this;
42
- } catch (error) {
43
- logger.error('❌ Erro ao iniciar simulador:', error);
44
- throw error;
45
- }
46
- }
47
-
48
- async stop() {
49
- if (!this.isRunning || !this.server) {
50
- logger.warn('Simulador não está rodando');
51
- return this;
52
- }
53
-
54
- try {
55
- await this.server.stop();
56
- this.isRunning = false;
57
- logger.info('🛑 AWS Local Simulator parado');
58
- return this;
59
- } catch (error) {
60
- logger.error('❌ Erro ao parar simulador:', error);
61
- throw error;
62
- }
63
- }
64
-
65
- async restart() {
66
- await this.stop();
67
- await this.start();
68
- return this;
69
- }
70
-
71
- async reset() {
72
- if (!this.server) {
73
- throw new Error('Simulador não iniciado');
74
- }
75
- await this.server.reset();
76
- logger.success('🗑️ Todos os dados foram resetados');
77
- return this;
78
- }
79
-
80
- getStatus() {
81
- if (!this.server) {
82
- return { running: false };
83
- }
84
- return {
85
- running: this.isRunning,
86
- services: this.server.getStatus()
87
- };
88
- }
89
-
90
- getService(serviceName) {
91
- if (!this.server) {
92
- return null;
93
- }
94
- return this.server.getService(serviceName);
95
- }
96
-
97
- // Métodos de conveniência
98
- getDynamoDB() {
99
- return this.getService('dynamodb')?.getSimulator();
100
- }
101
-
102
- getS3() {
103
- return this.getService('s3')?.getSimulator();
104
- }
105
-
106
- getSQS() {
107
- return this.getService('sqs')?.getSimulator();
108
- }
109
-
110
- getLambda() {
111
- return this.getService('lambda')?.getSimulator();
112
- }
113
- }
114
-
115
- // Exporta classes e utilitários
116
- module.exports = {
117
- AWSLocalSimulator,
118
- Server,
119
- DynamoDBService,
120
- S3Service,
121
- SQSService,
122
- LambdaService,
123
- SNSService,
124
- EventBridgeService,
125
- LocalStore,
126
- HandlerLoader,
127
- RouteRegistry
128
- };
129
-
130
- // Exporta também como default para ES Modules compatibilidade
1
+ /**
2
+ * AWS Local Simulator - Entry Point Principal
3
+ */
4
+
5
+ const Server = require('./server');
6
+ const { loadConfig } = require('./config/config-loader');
7
+ const logger = require('./utils/logger');
8
+
9
+ // Exporta serviços para uso programático
10
+ const DynamoDBService = require('./services/dynamodb');
11
+ const S3Service = require('./services/s3');
12
+ const SQSService = require('./services/sqs');
13
+ const LambdaService = require('./services/lambda');
14
+ const { SNSService } = require('./services/sns');
15
+ const { EventBridgeService } = require('./services/eventbridge');
16
+ const { CloudWatchService } = require('./services/cloudwatch');
17
+ const CloudTrailService = require('./services/cloudtrail');
18
+ const { KMSService } = require('./services/kms');
19
+ const CloudFormationService = require('./services/cloudformation');
20
+ const { XRayService } = require('./services/xray');
21
+ const { SecretManagerService } = require('./services/secret-manager');
22
+ const { ParameterStoreService } = require('./services/parameter-store');
23
+ const { ConfigService } = require('./services/config');
24
+
25
+ // Exporta utilitários
26
+ const LocalStore = require('./utils/local-store');
27
+ const HandlerLoader = require('./services/lambda/handler-loader');
28
+ const RouteRegistry = require('./services/lambda/route-registry');
29
+
30
+ class AWSLocalSimulator {
31
+ constructor(options = {}) {
32
+ this.options = options;
33
+ this.server = null;
34
+ this.isRunning = false;
35
+ }
36
+
37
+ async start() {
38
+ if (this.isRunning) {
39
+ logger.warn('Simulador está rodando');
40
+ return this;
41
+ }
42
+
43
+ try {
44
+ const config = await loadConfig(this.options.configPath);
45
+ this.server = new Server(config);
46
+ await this.server.start();
47
+ this.isRunning = true;
48
+ logger.success('✅ AWS Local Simulator iniciado com sucesso');
49
+ return this;
50
+ } catch (error) {
51
+ logger.error('❌ Erro ao iniciar simulador:', error);
52
+ throw error;
53
+ }
54
+ }
55
+
56
+ async stop() {
57
+ if (!this.isRunning || !this.server) {
58
+ logger.warn('Simulador não está rodando');
59
+ return this;
60
+ }
61
+
62
+ try {
63
+ await this.server.stop();
64
+ this.isRunning = false;
65
+ logger.info('🛑 AWS Local Simulator parado');
66
+ return this;
67
+ } catch (error) {
68
+ logger.error('❌ Erro ao parar simulador:', error);
69
+ throw error;
70
+ }
71
+ }
72
+
73
+ async restart() {
74
+ await this.stop();
75
+ await this.start();
76
+ return this;
77
+ }
78
+
79
+ async reset() {
80
+ if (!this.server) {
81
+ throw new Error('Simulador não iniciado');
82
+ }
83
+ await this.server.reset();
84
+ logger.success('🗑️ Todos os dados foram resetados');
85
+ return this;
86
+ }
87
+
88
+ getStatus() {
89
+ if (!this.server) {
90
+ return { running: false };
91
+ }
92
+ return {
93
+ running: this.isRunning,
94
+ services: this.server.getStatus()
95
+ };
96
+ }
97
+
98
+ getService(serviceName) {
99
+ if (!this.server) {
100
+ return null;
101
+ }
102
+ return this.server.getService(serviceName);
103
+ }
104
+
105
+ // Métodos de conveniência
106
+ getDynamoDB() {
107
+ return this.getService('dynamodb')?.getSimulator();
108
+ }
109
+
110
+ getS3() {
111
+ return this.getService('s3')?.getSimulator();
112
+ }
113
+
114
+ getSQS() {
115
+ return this.getService('sqs')?.getSimulator();
116
+ }
117
+
118
+ getLambda() {
119
+ return this.getService('lambda')?.getSimulator();
120
+ }
121
+ }
122
+
123
+ // Exporta classes e utilitários
124
+ module.exports = {
125
+ AWSLocalSimulator,
126
+ Server,
127
+ DynamoDBService,
128
+ S3Service,
129
+ SQSService,
130
+ LambdaService,
131
+ SNSService,
132
+ EventBridgeService,
133
+ CloudWatchService,
134
+ CloudTrailService,
135
+ KMSService,
136
+ CloudFormationService,
137
+ XRayService,
138
+ SecretManagerService,
139
+ ParameterStoreService,
140
+ ConfigService,
141
+ LocalStore,
142
+ HandlerLoader,
143
+ RouteRegistry
144
+ };
145
+
146
+ // Exporta também como default para ES Modules compatibilidade
131
147
  module.exports.default = AWSLocalSimulator;
package/src/index.mjs CHANGED
@@ -1,124 +1,124 @@
1
- /**
2
- * AWS Local Simulator - ES Module Entry Point
3
- */
4
-
5
- import Server from './server.js';
6
- import { loadConfig } from './config/config-loader.js';
7
- import logger from './utils/logger.js';
8
- import DynamoDBService from './services/dynamodb/index.js';
9
- import S3Service from './services/s3/index.js';
10
- import SQSService from './services/sqs/index.js';
11
- import LambdaService from './services/lambda/index.js';
12
- import SNSService from './services/sns/index.js';
13
- import EventBridgeService from './services/eventbridge/index.js';
14
- import LocalStore from './utils/local-store.js';
15
- import HandlerLoader from './services/lambda/handler-loader.js';
16
- import RouteRegistry from './services/lambda/route-registry.js';
17
-
18
- export class AWSLocalSimulator {
19
- constructor(options = {}) {
20
- this.options = options;
21
- this.server = null;
22
- this.isRunning = false;
23
- }
24
-
25
- async start() {
26
- if (this.isRunning) {
27
- logger.warn('Simulador já está rodando');
28
- return this;
29
- }
30
-
31
- try {
32
- const config = await loadConfig(this.options.configPath);
33
- this.server = new Server(config);
34
- await this.server.start();
35
- this.isRunning = true;
36
- logger.success('✅ AWS Local Simulator iniciado com sucesso');
37
- return this;
38
- } catch (error) {
39
- logger.error('❌ Erro ao iniciar simulador:', error);
40
- throw error;
41
- }
42
- }
43
-
44
- async stop() {
45
- if (!this.isRunning || !this.server) {
46
- logger.warn('Simulador não está rodando');
47
- return this;
48
- }
49
-
50
- try {
51
- await this.server.stop();
52
- this.isRunning = false;
53
- logger.info('🛑 AWS Local Simulator parado');
54
- return this;
55
- } catch (error) {
56
- logger.error('❌ Erro ao parar simulador:', error);
57
- throw error;
58
- }
59
- }
60
-
61
- async restart() {
62
- await this.stop();
63
- await this.start();
64
- return this;
65
- }
66
-
67
- async reset() {
68
- if (!this.server) {
69
- throw new Error('Simulador não iniciado');
70
- }
71
- await this.server.reset();
72
- logger.success('🗑️ Todos os dados foram resetados');
73
- return this;
74
- }
75
-
76
- getStatus() {
77
- if (!this.server) {
78
- return { running: false };
79
- }
80
- return {
81
- running: this.isRunning,
82
- services: this.server.getStatus()
83
- };
84
- }
85
-
86
- getService(serviceName) {
87
- if (!this.server) {
88
- return null;
89
- }
90
- return this.server.getService(serviceName);
91
- }
92
-
93
- getDynamoDB() {
94
- return this.getService('dynamodb')?.getSimulator();
95
- }
96
-
97
- getS3() {
98
- return this.getService('s3')?.getSimulator();
99
- }
100
-
101
- getSQS() {
102
- return this.getService('sqs')?.getSimulator();
103
- }
104
-
105
- getLambda() {
106
- return this.getService('lambda')?.getSimulator();
107
- }
108
- }
109
-
110
- // Exporta classes e utilitários
111
- export {
112
- Server,
113
- DynamoDBService,
114
- S3Service,
115
- SQSService,
116
- LambdaService,
117
- SNSService,
118
- EventBridgeService,
119
- LocalStore,
120
- HandlerLoader,
121
- RouteRegistry
122
- };
123
-
1
+ /**
2
+ * AWS Local Simulator - ES Module Entry Point
3
+ */
4
+
5
+ import Server from './server.js';
6
+ import { loadConfig } from './config/config-loader.js';
7
+ import logger from './utils/logger.js';
8
+ import DynamoDBService from './services/dynamodb/index.js';
9
+ import S3Service from './services/s3/index.js';
10
+ import SQSService from './services/sqs/index.js';
11
+ import LambdaService from './services/lambda/index.js';
12
+ import SNSService from './services/sns/index.js';
13
+ import EventBridgeService from './services/eventbridge/index.js';
14
+ import LocalStore from './utils/local-store.js';
15
+ import HandlerLoader from './services/lambda/handler-loader.js';
16
+ import RouteRegistry from './services/lambda/route-registry.js';
17
+
18
+ export class AWSLocalSimulator {
19
+ constructor(options = {}) {
20
+ this.options = options;
21
+ this.server = null;
22
+ this.isRunning = false;
23
+ }
24
+
25
+ async start() {
26
+ if (this.isRunning) {
27
+ logger.warn('Simulador já está rodando');
28
+ return this;
29
+ }
30
+
31
+ try {
32
+ const config = await loadConfig(this.options.configPath);
33
+ this.server = new Server(config);
34
+ await this.server.start();
35
+ this.isRunning = true;
36
+ logger.success('✅ AWS Local Simulator iniciado com sucesso');
37
+ return this;
38
+ } catch (error) {
39
+ logger.error('❌ Erro ao iniciar simulador:', error);
40
+ throw error;
41
+ }
42
+ }
43
+
44
+ async stop() {
45
+ if (!this.isRunning || !this.server) {
46
+ logger.warn('Simulador não está rodando');
47
+ return this;
48
+ }
49
+
50
+ try {
51
+ await this.server.stop();
52
+ this.isRunning = false;
53
+ logger.info('🛑 AWS Local Simulator parado');
54
+ return this;
55
+ } catch (error) {
56
+ logger.error('❌ Erro ao parar simulador:', error);
57
+ throw error;
58
+ }
59
+ }
60
+
61
+ async restart() {
62
+ await this.stop();
63
+ await this.start();
64
+ return this;
65
+ }
66
+
67
+ async reset() {
68
+ if (!this.server) {
69
+ throw new Error('Simulador não iniciado');
70
+ }
71
+ await this.server.reset();
72
+ logger.success('🗑️ Todos os dados foram resetados');
73
+ return this;
74
+ }
75
+
76
+ getStatus() {
77
+ if (!this.server) {
78
+ return { running: false };
79
+ }
80
+ return {
81
+ running: this.isRunning,
82
+ services: this.server.getStatus()
83
+ };
84
+ }
85
+
86
+ getService(serviceName) {
87
+ if (!this.server) {
88
+ return null;
89
+ }
90
+ return this.server.getService(serviceName);
91
+ }
92
+
93
+ getDynamoDB() {
94
+ return this.getService('dynamodb')?.getSimulator();
95
+ }
96
+
97
+ getS3() {
98
+ return this.getService('s3')?.getSimulator();
99
+ }
100
+
101
+ getSQS() {
102
+ return this.getService('sqs')?.getSimulator();
103
+ }
104
+
105
+ getLambda() {
106
+ return this.getService('lambda')?.getSimulator();
107
+ }
108
+ }
109
+
110
+ // Exporta classes e utilitários
111
+ export {
112
+ Server,
113
+ DynamoDBService,
114
+ S3Service,
115
+ SQSService,
116
+ LambdaService,
117
+ SNSService,
118
+ EventBridgeService,
119
+ LocalStore,
120
+ HandlerLoader,
121
+ RouteRegistry
122
+ };
123
+
124
124
  export default AWSLocalSimulator;