local-serverless-stack 0.0.1 → 0.0.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 (31) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +18 -0
  3. package/bin/cli.js +91 -10
  4. package/dist/server/index.js +9 -7
  5. package/dist/server/index.js.map +1 -1
  6. package/dist/server/routes/example.d.ts +3 -0
  7. package/dist/server/routes/example.d.ts.map +1 -0
  8. package/dist/server/routes/example.js +125 -0
  9. package/dist/server/routes/example.js.map +1 -0
  10. package/dist/server/routes/services.d.ts.map +1 -1
  11. package/dist/server/routes/services.js +35 -4
  12. package/dist/server/routes/services.js.map +1 -1
  13. package/dist/server/services/cache-manager.d.ts +1 -0
  14. package/dist/server/services/cache-manager.d.ts.map +1 -1
  15. package/dist/server/services/cache-manager.js.map +1 -1
  16. package/dist/server/services/config-manager.d.ts +38 -0
  17. package/dist/server/services/config-manager.d.ts.map +1 -0
  18. package/dist/server/services/config-manager.js +150 -0
  19. package/dist/server/services/config-manager.js.map +1 -0
  20. package/dist/server/services/localstack-manager.d.ts +1 -0
  21. package/dist/server/services/localstack-manager.d.ts.map +1 -1
  22. package/dist/server/services/localstack-manager.js +16 -7
  23. package/dist/server/services/localstack-manager.js.map +1 -1
  24. package/dist/server/services/resource-provisioner.d.ts +3 -0
  25. package/dist/server/services/resource-provisioner.d.ts.map +1 -1
  26. package/dist/server/services/resource-provisioner.js +18 -4
  27. package/dist/server/services/resource-provisioner.js.map +1 -1
  28. package/package.json +7 -3
  29. package/packages/serverless-plugin/README.md +2 -0
  30. package/packages/serverless-plugin/dist/index.js +8 -1
  31. package/packages/serverless-plugin/dist/index.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,52 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.0.4] - 2026-02-02
9
+
10
+ ### Added
11
+ - **Region Priority System**: Plugin now respects region configuration from Serverless Framework with intelligent fallback
12
+ - Priority 1: Region from `provider.region` in Serverless Framework configuration
13
+ - Priority 2: Region from `lss.config.json` configuration
14
+ - Priority 3: Default `us-east-1` if no region is specified
15
+ - Detailed logging showing which region source is being used during service registration
16
+ - `region` field to `ServiceMetadata` interface for tracking region per service
17
+
18
+ ### Changed
19
+ - Serverless plugin now only sends region to orchestrator when explicitly defined in `serverless.yml`
20
+ - Orchestrator intelligently applies region priorities when provisioning resources
21
+ - Enhanced console output with region source indicators
22
+
23
+ ### Fixed
24
+ - AWS SDK clients now properly recreate with correct region when provisioning services in different regions
25
+
26
+ ## [0.0.3] - 2026-02-01
27
+
28
+ ### Fixed
29
+ - Removed `postinstall` script that caused installation errors in consuming projects
30
+ - The script attempted to access `src/ui` directory which doesn't exist in published package
31
+
32
+ ### Changed
33
+ - Simplified Lambda proxy code (removed verbose logging)
34
+ - Updated CI workflow to skip Docker-dependent tests in GitHub Actions
35
+ - CI now properly checks version changes for both root and plugin packages independently
36
+
37
+ ### Added
38
+ - Development guide (DEVELOPMENT.md)
39
+ - awpaki dependency for future use in JSON parsing and parameter validation
40
+
41
+ ## [0.0.2] - 2026-02-01
42
+
43
+ ### Added
44
+ - TypeScript support with tsx for development mode
45
+ - Lint and build check in CI workflow
46
+ - NPM badges in README
47
+ - Plugin documentation reference in main README
48
+
49
+ ### Fixed
50
+ - Top-level await issue in routes/services.ts (lazy cache initialization)
51
+ - ESLint warnings (unused variables, empty blocks)
52
+ - TypeScript compilation errors
53
+
8
54
  ## [0.0.1] - 2026-01-23
9
55
 
10
56
  ### Added
@@ -93,6 +139,51 @@ Not applicable (initial release)
93
139
 
94
140
  ---
95
141
 
142
+ ## [0.0.3] - 2026-02-01
143
+
144
+ ### Changed
145
+
146
+ - **Dependency Update**: Upgraded `awpaki` to version 1.3.2 for improved performance and compatibility
147
+ - **Enhanced CI/CD**: Improved version change logging in publish workflow for better release visibility
148
+ - **Workflow Optimization**: Simplified job dependencies in publish workflow for faster pipeline execution
149
+
150
+ ### Fixed
151
+
152
+ - Bug fixes and stability improvements
153
+
154
+ ---
155
+
156
+ ## [0.0.2] - 2026-02-01
157
+
158
+ ### Added
159
+
160
+ - **Lazy Cache Initialization**: Services router now implements lazy cache initialization for better resource management
161
+ - **ESLint Integration**: Added ESLint checks to CI pipeline for code quality assurance
162
+ - **TypeScript Validation**: Enhanced TypeScript type checking in CI/CD workflow
163
+ - **DevContainer Support**: Added .devcontainer configuration for consistent development environment
164
+ - **Dependabot Configuration**: Automated dependency updates and security patch management
165
+
166
+ ### Changed
167
+
168
+ - **Build Pipeline**: Updated build script for improved compilation process
169
+ - **TypeScript Configuration**: Adjusted TypeScript settings for stricter type checking
170
+ - **Error Handling**: Simplified error handling in resource provisioner for better debugging
171
+ - **Documentation**: Enhanced README and plugin documentation for clarity
172
+
173
+ ### Improved
174
+
175
+ - Project references and documentation clarity
176
+ - Integration test prerequisites documentation
177
+ - Overall code organization and maintainability
178
+
179
+ ### Refactored
180
+
181
+ - Removed unused imports throughout the codebase
182
+ - Simplified test setup for better maintainability
183
+ - Updated CI workflow configuration and naming
184
+
185
+ ---
186
+
96
187
  ## [Unreleased]
97
188
 
98
189
  ### Planned Features
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Local Serverless Stack (LSS)
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/local-serverless-stack.svg)](https://www.npmjs.com/package/local-serverless-stack)
4
+
3
5
  **Local control plane for serverless development with LocalStack orchestration**
4
6
 
5
7
  LSS provides a unified local development environment for serverless microservices, eliminating the need to run separate LocalStack instances for each service.
@@ -52,6 +54,12 @@ local-serverless-stack/
52
54
 
53
55
  ### Installation
54
56
 
57
+ ```bash
58
+ npm install -g local-serverless-stack
59
+ ```
60
+
61
+ Or install locally:
62
+
55
63
  ```bash
56
64
  cd /path/to/local-serverless-stack
57
65
  npm install
@@ -61,6 +69,16 @@ npm link
61
69
 
62
70
  The `npm link` command makes the `lss` CLI available globally via `npx`.
63
71
 
72
+ ### Serverless Framework Plugin
73
+
74
+ To automatically register your microservices with LSS, install the Serverless plugin:
75
+
76
+ ```bash
77
+ npm install --save-dev lss-serverless-plugin
78
+ ```
79
+
80
+ See the [plugin documentation](packages/serverless-plugin/README.md) for configuration details.
81
+
64
82
  ## CLI Commands
65
83
 
66
84
  LSS provides a simple CLI to manage the orchestrator in background mode:
package/bin/cli.js CHANGED
@@ -8,6 +8,43 @@ const os = require('os');
8
8
  const PID_FILE = path.join(os.tmpdir(), 'lss-orchestrator.pid');
9
9
  const LOG_FILE = path.join(os.tmpdir(), 'lss-orchestrator.log');
10
10
 
11
+ /**
12
+ * Load configuration from lss.config.json or .lssrc
13
+ */
14
+ function loadConfig() {
15
+ const candidates = [
16
+ path.join(process.cwd(), 'lss.config.json'),
17
+ path.join(process.cwd(), '.lssrc'),
18
+ path.join(process.env.HOME || '~', 'lss.config.json'),
19
+ path.join(process.env.HOME || '~', '.lssrc'),
20
+ ];
21
+
22
+ for (const candidate of candidates) {
23
+ if (fs.existsSync(candidate)) {
24
+ try {
25
+ const content = fs.readFileSync(candidate, 'utf-8');
26
+ return JSON.parse(content);
27
+ } catch (error) {
28
+ console.warn(`⚠️ Failed to parse config file ${candidate}`);
29
+ }
30
+ }
31
+ }
32
+
33
+ return {};
34
+ }
35
+
36
+ /**
37
+ * Get configuration values with defaults
38
+ */
39
+ function getConfig(config) {
40
+ return {
41
+ serverPort: config.serverPort || 3100,
42
+ localstackPort: config.localstackPort || 4566,
43
+ enableDynamoProxy: config.enableDynamoProxy || false,
44
+ dynamoProxyPort: config.dynamoProxyPort || 8000,
45
+ };
46
+ }
47
+
11
48
  // Resolve orchestrator path - works both in development and when installed via npm
12
49
  function getOrchestratorPath() {
13
50
  // Try to find the orchestrator relative to this script
@@ -34,9 +71,14 @@ function startOrchestrator() {
34
71
  const pid = fs.readFileSync(PID_FILE, 'utf8').trim();
35
72
  try {
36
73
  process.kill(pid, 0);
74
+ const config = loadConfig();
75
+ const cfg = getConfig(config);
37
76
  console.log('✅ LSS Orchestrator already running (PID:', pid + ')');
38
- console.log('📊 Dashboard: http://localhost:3100');
39
- console.log('🔧 LocalStack: http://localhost:4566');
77
+ console.log(`📊 Server: http://localhost:${cfg.serverPort}`);
78
+ console.log(`🔧 LocalStack: http://localhost:${cfg.localstackPort}`);
79
+ if (cfg.enableDynamoProxy) {
80
+ console.log(`🔄 DynamoDB Proxy: http://localhost:${cfg.dynamoProxyPort} (enabled)`);
81
+ }
40
82
  return;
41
83
  } catch (e) {
42
84
  fs.unlinkSync(PID_FILE);
@@ -57,13 +99,26 @@ function startOrchestrator() {
57
99
 
58
100
  const logFd = fs.openSync(LOG_FILE, 'a');
59
101
 
102
+ // Load config
103
+ const config = loadConfig();
104
+ const cfg = getConfig(config);
105
+
60
106
  // Check for flags
61
- const enableDynamoProxy = process.argv.includes('--enable-dynamo-proxy');
107
+ const enableDynamoProxy = process.argv.includes('--enable-dynamo-proxy') || cfg.enableDynamoProxy;
62
108
 
63
- // Build environment variables
109
+ // Build environment variables from config
64
110
  const env = { ...process.env };
111
+ if (cfg.serverPort) {
112
+ env.PORT = cfg.serverPort;
113
+ }
114
+ if (cfg.localstackPort) {
115
+ env.LSS_LOCALSTACK_PORT = cfg.localstackPort;
116
+ }
65
117
  if (enableDynamoProxy) {
66
- env.ENABLE_DYNAMO_PROXY = 'true';
118
+ env.LSS_ENABLE_DYNAMO_PROXY = 'true';
119
+ }
120
+ if (cfg.dynamoProxyPort) {
121
+ env.LSS_DYNAMO_PROXY_PORT = cfg.dynamoProxyPort;
67
122
  }
68
123
 
69
124
  const child = spawn('node', [orchestratorPath], {
@@ -78,10 +133,10 @@ function startOrchestrator() {
78
133
  fs.writeFileSync(PID_FILE, child.pid.toString());
79
134
 
80
135
  console.log('🚀 LSS Orchestrator started (PID:', child.pid + ')');
81
- console.log('📊 Dashboard: http://localhost:3100');
82
- console.log('🔧 LocalStack: http://localhost:4566');
136
+ console.log(`📊 Server: http://localhost:${cfg.serverPort}`);
137
+ console.log(`🔧 LocalStack: http://localhost:${cfg.localstackPort}`);
83
138
  if (enableDynamoProxy) {
84
- console.log('🔄 DynamoDB Proxy: http://localhost:8000 (enabled)');
139
+ console.log(`🔄 DynamoDB Proxy: http://localhost:${cfg.dynamoProxyPort} (enabled)`);
85
140
  }
86
141
  console.log('📝 Logs:', LOG_FILE);
87
142
 
@@ -128,9 +183,14 @@ function showStatus() {
128
183
 
129
184
  try {
130
185
  process.kill(pid, 0);
186
+ const config = loadConfig();
187
+ const cfg = getConfig(config);
131
188
  console.log('🟢 LSS Orchestrator: RUNNING (PID:', pid + ')');
132
- console.log('📊 Dashboard: http://localhost:3100');
133
- console.log('🔧 LocalStack: http://localhost:4566');
189
+ console.log(`📊 Server: http://localhost:${cfg.serverPort}`);
190
+ console.log(`🔧 LocalStack: http://localhost:${cfg.localstackPort}`);
191
+ if (cfg.enableDynamoProxy) {
192
+ console.log(`🔄 DynamoDB Proxy: http://localhost:${cfg.dynamoProxyPort} (enabled)`);
193
+ }
134
194
  console.log('📝 Logs:', LOG_FILE);
135
195
  } catch (e) {
136
196
  console.log('⚪ LSS Orchestrator: NOT RUNNING (stale PID file)');
@@ -154,6 +214,27 @@ Commands:
154
214
  Options:
155
215
  --enable-dynamo-proxy Enable DynamoDB proxy on port 8000 (for start command)
156
216
 
217
+ Configuration:
218
+ Create a lss.config.json or .lssrc file in your project root to customize:
219
+
220
+ Example lss.config.json:
221
+ {
222
+ "serverPort": 3100,
223
+ "localstackPort": 4566,
224
+ "enableDynamoProxy": false,
225
+ "dynamoProxyPort": 8000,
226
+ "region": "us-east-1",
227
+ "services": ["dynamodb", "sqs", "sns", "lambda"],
228
+ "persistence": true,
229
+ "debug": false
230
+ }
231
+
232
+ For the Serverless Plugin, add to serverless.yml:
233
+ custom:
234
+ orchestrator:
235
+ enabled: true
236
+ orchestratorUrl: http://localhost:3100
237
+
157
238
  Examples:
158
239
  npx lss start # Start the orchestrator
159
240
  npx lss start --enable-dynamo-proxy # Start with DynamoDB proxy enabled
@@ -5,11 +5,13 @@ import { fileURLToPath } from 'url';
5
5
  import { servicesRouter, processManager } from './routes/services.js';
6
6
  import { resourcesRouter } from './routes/resources.js';
7
7
  import { LocalStackManager } from './services/localstack-manager.js';
8
+ import { ConfigManager } from './services/config-manager.js';
8
9
  import { startDynamoProxy } from './dev/dynamo-proxy.js';
9
10
  const __filename = fileURLToPath(import.meta.url);
10
11
  const __dirname = path.dirname(__filename);
11
12
  const app = express();
12
- const PORT = process.env.PORT || 3100;
13
+ const configManager = ConfigManager.getInstance();
14
+ const PORT = configManager.getDashboardPort();
13
15
  // Middleware
14
16
  app.use(cors());
15
17
  app.use(express.json());
@@ -41,13 +43,13 @@ async function start() {
41
43
  console.log(`✅ Server running on http://localhost:${PORT}`);
42
44
  console.log(`✅ LocalStack running on ${localstack.getEndpoint()}`);
43
45
  });
44
- // Optional temporary DynamoDB proxy (port 8000) -> LocalStack (4566)
45
- // Enable by setting ENABLE_DYNAMO_PROXY=true|1
46
- const DYNAMO_PROXY_ENABLED = String(process.env.ENABLE_DYNAMO_PROXY || '').toLowerCase() === 'true' || process.env.ENABLE_DYNAMO_PROXY === '1';
47
- if (DYNAMO_PROXY_ENABLED) {
48
- const port = Number(process.env.DYNAMO_PROXY_PORT || 8000);
49
- startDynamoProxy(localstack.getEndpoint(), port);
46
+ // Optional DynamoDB proxy
47
+ if (configManager.isEnableDynamoProxy()) {
48
+ const proxyPort = configManager.getDynamoProxyPort();
49
+ startDynamoProxy(localstack.getEndpoint(), proxyPort);
50
50
  }
51
+ // Print configuration summary
52
+ configManager.printSummary();
51
53
  }
52
54
  catch (error) {
53
55
  console.error('❌ Failed to start server:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../../src/server/routes/example.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAoIxB,eAAe,MAAM,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { Router } from 'express';
2
+ import { extractEventParams, ParameterType, handleApiGatewayError, HttpStatus, NotFound, BadRequest } from 'awpaki';
3
+ const router = Router();
4
+ /**
5
+ * Example endpoint showing awpaki integration
6
+ * POST /api/example/validate
7
+ *
8
+ * Demonstrates:
9
+ * - Parameter extraction and validation using awpaki
10
+ * - Error handling patterns
11
+ */
12
+ router.post('/validate', async (req, res) => {
13
+ try {
14
+ // Convert Express request to API Gateway-like event for awpaki
15
+ const mockEvent = {
16
+ body: JSON.stringify(req.body),
17
+ headers: req.headers,
18
+ pathParameters: req.params,
19
+ queryStringParameters: req.query,
20
+ };
21
+ // Extract and validate parameters using awpaki
22
+ const params = extractEventParams({
23
+ body: {
24
+ name: {
25
+ label: 'Name',
26
+ required: true,
27
+ expectedType: ParameterType.STRING,
28
+ },
29
+ email: {
30
+ label: 'Email',
31
+ required: true,
32
+ expectedType: ParameterType.STRING,
33
+ decoder: (value) => {
34
+ const email = String(value);
35
+ if (!email.includes('@')) {
36
+ throw new BadRequest('Invalid email format');
37
+ }
38
+ return email.toLowerCase();
39
+ },
40
+ },
41
+ age: {
42
+ label: 'Age',
43
+ expectedType: ParameterType.NUMBER,
44
+ default: 0,
45
+ },
46
+ tags: {
47
+ label: 'Tags',
48
+ expectedType: ParameterType.ARRAY,
49
+ default: [],
50
+ },
51
+ },
52
+ }, mockEvent);
53
+ // Success response
54
+ return res.status(HttpStatus.OK).json({
55
+ message: 'Validation successful with awpaki',
56
+ data: {
57
+ name: params.name,
58
+ email: params.email,
59
+ age: params.age,
60
+ tags: params.tags,
61
+ },
62
+ });
63
+ }
64
+ catch (error) {
65
+ // Use awpaki error handler
66
+ const apiGatewayError = handleApiGatewayError(error);
67
+ return res.status(apiGatewayError.statusCode).json({
68
+ error: JSON.parse(apiGatewayError.body),
69
+ });
70
+ }
71
+ });
72
+ /**
73
+ * Simple health check using awpaki patterns
74
+ * GET /api/example/health
75
+ */
76
+ router.get('/health', (_req, res) => {
77
+ return res.status(HttpStatus.OK).json({
78
+ status: 'healthy',
79
+ service: 'awpaki-integration-example',
80
+ timestamp: new Date().toISOString(),
81
+ awpaki: {
82
+ version: '1.3.1',
83
+ features: ['parameter-extraction', 'validation', 'error-handling'],
84
+ },
85
+ });
86
+ });
87
+ /**
88
+ * Example with path parameters
89
+ * GET /api/example/users/:userId
90
+ */
91
+ router.get('/users/:userId', async (req, res) => {
92
+ try {
93
+ const mockEvent = {
94
+ pathParameters: req.params,
95
+ };
96
+ const params = extractEventParams({
97
+ pathParameters: {
98
+ userId: {
99
+ label: 'User ID',
100
+ required: true,
101
+ expectedType: ParameterType.STRING,
102
+ },
103
+ },
104
+ }, mockEvent);
105
+ // Simulate user lookup
106
+ const user = {
107
+ id: params.userId,
108
+ name: 'Test User',
109
+ email: 'test@example.com',
110
+ validated: 'via awpaki',
111
+ };
112
+ if (!user) {
113
+ throw new NotFound(`User ${params.userId} not found`);
114
+ }
115
+ return res.status(HttpStatus.OK).json(user);
116
+ }
117
+ catch (error) {
118
+ const apiGatewayError = handleApiGatewayError(error);
119
+ return res.status(apiGatewayError.statusCode).json({
120
+ error: JSON.parse(apiGatewayError.body),
121
+ });
122
+ }
123
+ });
124
+ export default router;
125
+ //# sourceMappingURL=example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.js","sourceRoot":"","sources":["../../../src/server/routes/example.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../src/server/routes/services.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,QAAA,MAAM,MAAM,4CAAW,CAAC;AAIxB,QAAA,MAAM,cAAc,gBAAuB,CAAC;AA0O5C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../src/server/routes/services.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,QAAA,MAAM,MAAM,4CAAW,CAAC;AAIxB,QAAA,MAAM,cAAc,gBAAuB,CAAC;AAyQ5C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,cAAc,EAAE,CAAC"}
@@ -5,20 +5,43 @@ import { CloudFormationParser } from '../services/cloudformation-parser.js';
5
5
  import { CacheManager } from '../services/cache-manager.js';
6
6
  import { ResourceProvisioner } from '../services/resource-provisioner.js';
7
7
  import { ProcessManager } from '../services/process-manager.js';
8
+ import { ConfigManager } from '../services/config-manager.js';
8
9
  const router = Router();
9
10
  const parser = new CloudFormationParser();
10
11
  const cache = new CacheManager();
11
12
  const provisioner = new ResourceProvisioner();
12
13
  const processManager = new ProcessManager();
13
- // Initialize cache
14
- await cache.init();
14
+ const configManager = ConfigManager.getInstance();
15
+ // Initialize cache on first request (lazy init)
16
+ let cacheInitialized = false;
17
+ async function ensureCacheInit() {
18
+ if (!cacheInitialized) {
19
+ await cache.init();
20
+ cacheInitialized = true;
21
+ }
22
+ }
15
23
  // Register a service
16
24
  router.post('/register', async (req, res) => {
17
25
  try {
18
- const { servicePath, invokePort } = req.body;
26
+ await ensureCacheInit();
27
+ const { servicePath, invokePort, region } = req.body;
19
28
  if (!servicePath) {
20
29
  return res.status(400).json({ error: 'servicePath is required' });
21
30
  }
31
+ // Region priority: Serverless Framework > lss.config.json > default
32
+ const effectiveRegion = region || configManager.getConfig().region || 'us-east-1';
33
+ console.log(`📝 Registering service from ${servicePath}`);
34
+ console.log(` Invoke port: ${invokePort || 'not specified'}`);
35
+ console.log(` Region: ${effectiveRegion}`);
36
+ if (region) {
37
+ console.log(` Region source: Serverless Framework configuration`);
38
+ }
39
+ else if (configManager.getConfig().region) {
40
+ console.log(` Region source: lss.config.json`);
41
+ }
42
+ else {
43
+ console.log(` Region source: default`);
44
+ }
22
45
  // Validate servicePath to prevent path traversal
23
46
  const resolvedPath = path.resolve(servicePath);
24
47
  if (resolvedPath.includes('..') || !resolvedPath.startsWith('/')) {
@@ -44,10 +67,12 @@ router.post('/register', async (req, res) => {
44
67
  lastUpdated: Date.now(),
45
68
  status: 'registered',
46
69
  invokePort,
70
+ region: effectiveRegion,
47
71
  });
48
72
  // Provision resources to LocalStack
49
73
  await provisioner.provisionResources(serviceName, resources, {
50
74
  invokePort,
75
+ region: effectiveRegion,
51
76
  });
52
77
  return res.json({
53
78
  success: true,
@@ -61,13 +86,14 @@ router.post('/register', async (req, res) => {
61
86
  }
62
87
  catch (error) {
63
88
  console.error('Registration error:', error);
64
- const message = error instanceof Error ? 'Failed to register service' : 'Unknown error';
89
+ const message = error instanceof Error ? error.message : 'Unknown error';
65
90
  return res.status(500).json({ error: message });
66
91
  }
67
92
  });
68
93
  // List all services
69
94
  router.get('/', async (_req, res) => {
70
95
  try {
96
+ await ensureCacheInit();
71
97
  const services = await cache.listServices();
72
98
  return res.json(services);
73
99
  }
@@ -79,6 +105,7 @@ router.get('/', async (_req, res) => {
79
105
  // Get service details
80
106
  router.get('/:name', async (req, res) => {
81
107
  try {
108
+ await ensureCacheInit();
82
109
  const serviceName = req.params.name;
83
110
  if (!serviceName || typeof serviceName !== 'string' || serviceName.includes('/') || serviceName.includes('..')) {
84
111
  return res.status(400).json({ error: 'Invalid service name' });
@@ -106,6 +133,7 @@ router.get('/:name', async (req, res) => {
106
133
  // Delete service
107
134
  router.delete('/:name', async (req, res) => {
108
135
  try {
136
+ await ensureCacheInit();
109
137
  const serviceName = req.params.name;
110
138
  if (!serviceName || typeof serviceName !== 'string' || serviceName.includes('/') || serviceName.includes('..')) {
111
139
  return res.status(400).json({ error: 'Invalid service name' });
@@ -149,6 +177,7 @@ router.patch('/:name/status', async (req, res) => {
149
177
  // Start a service process (serverless offline / npm start)
150
178
  router.post('/:name/start', async (req, res) => {
151
179
  try {
180
+ await ensureCacheInit();
152
181
  const serviceName = req.params.name;
153
182
  if (!serviceName || typeof serviceName !== 'string' || serviceName.includes('/') || serviceName.includes('..')) {
154
183
  return res.status(400).json({ error: 'Invalid service name' });
@@ -181,6 +210,7 @@ router.post('/:name/start', async (req, res) => {
181
210
  // Stop a service process
182
211
  router.post('/:name/stop', async (req, res) => {
183
212
  try {
213
+ await ensureCacheInit();
184
214
  const serviceName = req.params.name;
185
215
  if (!serviceName || typeof serviceName !== 'string' || serviceName.includes('/') || serviceName.includes('..')) {
186
216
  return res.status(400).json({ error: 'Invalid service name' });
@@ -201,6 +231,7 @@ router.post('/:name/stop', async (req, res) => {
201
231
  // Fetch logs for a running service
202
232
  router.get('/:name/logs', async (req, res) => {
203
233
  try {
234
+ await ensureCacheInit();
204
235
  const serviceName = req.params.name;
205
236
  if (!serviceName || typeof serviceName !== 'string' || serviceName.includes('/') || serviceName.includes('..')) {
206
237
  return res.status(400).json({ error: 'Invalid service name' });
@@ -1 +1 @@
1
- {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../src/server/routes/services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../src/server/routes/services.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export interface ServiceMetadata {
6
6
  pid?: number;
7
7
  status: 'registered' | 'running' | 'stopped';
8
8
  invokePort?: number;
9
+ region?: string;
9
10
  }
10
11
  export declare class CacheManager {
11
12
  private cacheDir;