@gugananuvem/aws-local-simulator 1.0.2 → 1.0.5
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.
- package/bin/aws-local-simulator.js +1 -62
- package/package.json +8 -10
- package/src/index.js +1 -131
- package/src/config/config-loader.js +0 -113
- package/src/config/default-config.js +0 -65
- package/src/config/env-loader.js +0 -67
- package/src/index.mjs +0 -124
- package/src/server.js +0 -219
- package/src/services/apigateway/index.js +0 -67
- package/src/services/apigateway/server.js +0 -435
- package/src/services/apigateway/simulator.js +0 -1252
- package/src/services/cognito/index.js +0 -66
- package/src/services/cognito/server.js +0 -229
- package/src/services/cognito/simulator.js +0 -848
- package/src/services/dynamodb/index.js +0 -71
- package/src/services/dynamodb/server.js +0 -122
- package/src/services/dynamodb/simulator.js +0 -614
- package/src/services/eventbridge/index.js +0 -85
- package/src/services/index.js +0 -19
- package/src/services/lambda/handler-loader.js +0 -173
- package/src/services/lambda/index.js +0 -73
- package/src/services/lambda/route-registry.js +0 -275
- package/src/services/lambda/server.js +0 -153
- package/src/services/lambda/simulator.js +0 -278
- package/src/services/s3/index.js +0 -70
- package/src/services/s3/server.js +0 -239
- package/src/services/s3/simulator.js +0 -740
- package/src/services/sns/index.js +0 -76
- package/src/services/sqs/index.js +0 -96
- package/src/services/sqs/server.js +0 -274
- package/src/services/sqs/simulator.js +0 -660
- package/src/template/aws-config-template.js +0 -88
- package/src/template/aws-config-template.mjs +0 -91
- package/src/template/config-template.json +0 -165
- package/src/utils/aws-config.js +0 -92
- package/src/utils/local-store.js +0 -68
- package/src/utils/logger.js +0 -60
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DynamoDB Service - Ponto de entrada
|
|
3
|
-
* Exporta o serviço principal e seus componentes
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
const DynamoDBServer = require('./server');
|
|
7
|
-
const DynamoDBSimulator = require('./simulator');
|
|
8
|
-
const LocalStore = require('../../utils/local-store');
|
|
9
|
-
|
|
10
|
-
class DynamoDBService {
|
|
11
|
-
constructor(config) {
|
|
12
|
-
this.config = config;
|
|
13
|
-
this.name = 'dynamodb';
|
|
14
|
-
this.port = config.ports.dynamodb;
|
|
15
|
-
this.server = null;
|
|
16
|
-
this.simulator = null;
|
|
17
|
-
this.isRunning = false;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
async initialize() {
|
|
21
|
-
const logger = require('../../utils/logger');
|
|
22
|
-
logger.debug(`Inicializando DynamoDB Service na porta ${this.port}...`);
|
|
23
|
-
|
|
24
|
-
// Cria o simulador
|
|
25
|
-
this.simulator = new DynamoDBSimulator(this.config);
|
|
26
|
-
|
|
27
|
-
// Cria o servidor HTTP
|
|
28
|
-
this.server = new DynamoDBServer(this.port, this.config);
|
|
29
|
-
this.server.simulator = this.simulator;
|
|
30
|
-
|
|
31
|
-
await this.server.initialize();
|
|
32
|
-
|
|
33
|
-
logger.debug('DynamoDB Service inicializado');
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
async start() {
|
|
37
|
-
if (this.isRunning) return;
|
|
38
|
-
await this.server.start();
|
|
39
|
-
this.isRunning = true;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async stop() {
|
|
43
|
-
if (!this.isRunning) return;
|
|
44
|
-
await this.server.stop();
|
|
45
|
-
this.isRunning = false;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
async reset() {
|
|
49
|
-
await this.simulator.reset();
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
getStatus() {
|
|
53
|
-
return {
|
|
54
|
-
running: this.isRunning,
|
|
55
|
-
port: this.port,
|
|
56
|
-
endpoint: `http://localhost:${this.port}`,
|
|
57
|
-
tablesCount: this.simulator?.getTablesCount() || 0,
|
|
58
|
-
itemsCount: this.simulator?.getTotalItems() || 0
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
getSimulator() {
|
|
63
|
-
return this.simulator;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
getServer() {
|
|
67
|
-
return this.server;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
module.exports = DynamoDBService;
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DynamoDB Server - Servidor HTTP para DynamoDB
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const express = require('express');
|
|
6
|
-
const DynamoDBSimulator = require('./simulator');
|
|
7
|
-
const logger = require('../../utils/logger');
|
|
8
|
-
|
|
9
|
-
class DynamoDBServer {
|
|
10
|
-
constructor(port, config) {
|
|
11
|
-
this.port = port;
|
|
12
|
-
this.config = config;
|
|
13
|
-
this.app = express();
|
|
14
|
-
this.simulator = null;
|
|
15
|
-
this.server = null;
|
|
16
|
-
this.setupMiddlewares();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
setupMiddlewares() {
|
|
20
|
-
this.app.use(express.json({
|
|
21
|
-
type: 'application/x-amz-json-1.0'
|
|
22
|
-
}));
|
|
23
|
-
|
|
24
|
-
// Logging de requisições
|
|
25
|
-
if (logger.currentLogLevel === 'verboso') {
|
|
26
|
-
this.app.use((req, res, next) => {
|
|
27
|
-
const start = Date.now();
|
|
28
|
-
res.on('finish', () => {
|
|
29
|
-
const duration = Date.now() - start;
|
|
30
|
-
logger.verboso(`DynamoDB: ${req.headers['x-amz-target'] || req.method} - ${duration}ms`);
|
|
31
|
-
});
|
|
32
|
-
next();
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async initialize() {
|
|
38
|
-
this.simulator = new DynamoDBSimulator(this.config);
|
|
39
|
-
await this.simulator.initialize();
|
|
40
|
-
this.setupRoutes();
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
setupRoutes() {
|
|
44
|
-
// Endpoint principal
|
|
45
|
-
this.app.post('/', async (req, res) => {
|
|
46
|
-
const target = req.headers['x-amz-target'];
|
|
47
|
-
|
|
48
|
-
if (!target) {
|
|
49
|
-
return res.status(400).json({ message: 'Missing X-Amz-Target header' });
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
try {
|
|
53
|
-
const result = await this.simulator.handleRequest(target, req.body);
|
|
54
|
-
res.json(result);
|
|
55
|
-
} catch (error) {
|
|
56
|
-
logger.error('DynamoDB Error:', error);
|
|
57
|
-
res.status(400).json({
|
|
58
|
-
__type: error.code || 'InternalServerError',
|
|
59
|
-
message: error.message
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
// Admin endpoints
|
|
65
|
-
this.setupAdminRoutes();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
setupAdminRoutes() {
|
|
69
|
-
this.app.get('/__admin/tables', (req, res) => {
|
|
70
|
-
res.json(this.simulator.listTables());
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
this.app.get('/__admin/tables/:tableName', (req, res) => {
|
|
74
|
-
const table = this.simulator.describeTable(req.params.tableName);
|
|
75
|
-
res.json(table);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
this.app.get('/__admin/tables/:tableName/items', (req, res) => {
|
|
79
|
-
const items = this.simulator.scan({ TableName: req.params.tableName });
|
|
80
|
-
res.json(items);
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
this.app.delete('/__admin/tables/:tableName', (req, res) => {
|
|
84
|
-
this.simulator.truncateTable(req.params.tableName);
|
|
85
|
-
res.json({ message: `Table ${req.params.tableName} truncated` });
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
this.app.get('/__admin/stats', (req, res) => {
|
|
89
|
-
res.json(this.simulator.getStats());
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
start() {
|
|
94
|
-
return new Promise((resolve) => {
|
|
95
|
-
this.server = this.app.listen(this.port, () => {
|
|
96
|
-
logger.info(`🗄️ DynamoDB rodando em http://localhost:${this.port}`);
|
|
97
|
-
resolve();
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
stop() {
|
|
103
|
-
return new Promise((resolve) => {
|
|
104
|
-
if (this.server) {
|
|
105
|
-
this.server.close(() => resolve());
|
|
106
|
-
} else {
|
|
107
|
-
resolve();
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
getStatus() {
|
|
113
|
-
return {
|
|
114
|
-
running: !!this.server,
|
|
115
|
-
port: this.port,
|
|
116
|
-
endpoint: `http://localhost:${this.port}`,
|
|
117
|
-
tablesCount: this.simulator?.getTablesCount() || 0
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
module.exports = DynamoDBServer;
|