local-serverless-stack 0.3.0 → 0.5.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 (102) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/client/index.d.ts +7 -0
  3. package/dist/client/index.d.ts.map +1 -1
  4. package/dist/client/index.js +6 -0
  5. package/dist/client/index.js.map +1 -1
  6. package/dist/client/namespaces/apis.d.ts +48 -0
  7. package/dist/client/namespaces/apis.d.ts.map +1 -0
  8. package/dist/client/namespaces/apis.js +12 -0
  9. package/dist/client/namespaces/apis.js.map +1 -0
  10. package/dist/client/namespaces/lambdas.d.ts +61 -0
  11. package/dist/client/namespaces/lambdas.d.ts.map +1 -0
  12. package/dist/client/namespaces/lambdas.js +13 -0
  13. package/dist/client/namespaces/lambdas.js.map +1 -0
  14. package/dist/client/namespaces/services.d.ts +40 -0
  15. package/dist/client/namespaces/services.d.ts.map +1 -1
  16. package/dist/client/namespaces/services.js +3 -0
  17. package/dist/client/namespaces/services.js.map +1 -1
  18. package/dist/client/types.d.ts +2 -0
  19. package/dist/client/types.d.ts.map +1 -1
  20. package/dist/server/index.js +25 -2
  21. package/dist/server/index.js.map +1 -1
  22. package/dist/server/routes/apis.d.ts +3 -0
  23. package/dist/server/routes/apis.d.ts.map +1 -0
  24. package/dist/server/routes/apis.js +54 -0
  25. package/dist/server/routes/apis.js.map +1 -0
  26. package/dist/server/routes/lambdas.d.ts +3 -0
  27. package/dist/server/routes/lambdas.d.ts.map +1 -0
  28. package/dist/server/routes/lambdas.js +85 -0
  29. package/dist/server/routes/lambdas.js.map +1 -0
  30. package/dist/server/routes/services.d.ts.map +1 -1
  31. package/dist/server/routes/services.js +91 -78
  32. package/dist/server/routes/services.js.map +1 -1
  33. package/dist/server/runtime/runtime-worker.d.ts +2 -0
  34. package/dist/server/runtime/runtime-worker.d.ts.map +1 -0
  35. package/dist/server/runtime/runtime-worker.js +207 -0
  36. package/dist/server/runtime/runtime-worker.js.map +1 -0
  37. package/dist/server/services/api-gateway-events.d.ts +44 -0
  38. package/dist/server/services/api-gateway-events.d.ts.map +1 -0
  39. package/dist/server/services/api-gateway-events.js +299 -0
  40. package/dist/server/services/api-gateway-events.js.map +1 -0
  41. package/dist/server/services/authorizer-service.d.ts +25 -0
  42. package/dist/server/services/authorizer-service.d.ts.map +1 -0
  43. package/dist/server/services/authorizer-service.js +0 -0
  44. package/dist/server/services/authorizer-service.js.map +1 -0
  45. package/dist/server/services/cache-manager.d.ts +6 -0
  46. package/dist/server/services/cache-manager.d.ts.map +1 -1
  47. package/dist/server/services/cache-manager.js.map +1 -1
  48. package/dist/server/services/config-manager.d.ts +57 -0
  49. package/dist/server/services/config-manager.d.ts.map +1 -1
  50. package/dist/server/services/config-manager.js +78 -0
  51. package/dist/server/services/config-manager.js.map +1 -1
  52. package/dist/server/services/function-registry.d.ts +33 -0
  53. package/dist/server/services/function-registry.d.ts.map +1 -0
  54. package/dist/server/services/function-registry.js +100 -0
  55. package/dist/server/services/function-registry.js.map +1 -0
  56. package/dist/server/services/gateway-manager.d.ts +31 -0
  57. package/dist/server/services/gateway-manager.d.ts.map +1 -0
  58. package/dist/server/services/gateway-manager.js +292 -0
  59. package/dist/server/services/gateway-manager.js.map +1 -0
  60. package/dist/server/services/lambda-runtime-manager.d.ts +52 -0
  61. package/dist/server/services/lambda-runtime-manager.d.ts.map +1 -0
  62. package/dist/server/services/lambda-runtime-manager.js +326 -0
  63. package/dist/server/services/lambda-runtime-manager.js.map +1 -0
  64. package/dist/server/services/localstack-manager.d.ts.map +1 -1
  65. package/dist/server/services/localstack-manager.js +9 -0
  66. package/dist/server/services/localstack-manager.js.map +1 -1
  67. package/dist/server/services/serverless-packager.d.ts +1 -0
  68. package/dist/server/services/serverless-packager.d.ts.map +1 -1
  69. package/dist/server/services/serverless-packager.js +12 -5
  70. package/dist/server/services/serverless-packager.js.map +1 -1
  71. package/dist/server/services/serverless-state-parser.d.ts +86 -0
  72. package/dist/server/services/serverless-state-parser.d.ts.map +1 -0
  73. package/dist/server/services/serverless-state-parser.js +245 -0
  74. package/dist/server/services/serverless-state-parser.js.map +1 -0
  75. package/dist/server/services/service-registrar.d.ts +34 -0
  76. package/dist/server/services/service-registrar.d.ts.map +1 -0
  77. package/dist/server/services/service-registrar.js +262 -0
  78. package/dist/server/services/service-registrar.js.map +1 -0
  79. package/dist/server/services/source-watcher.d.ts +24 -0
  80. package/dist/server/services/source-watcher.d.ts.map +1 -0
  81. package/dist/server/services/source-watcher.js +101 -0
  82. package/dist/server/services/source-watcher.js.map +1 -0
  83. package/dist/ui/assets/ApisPage-DdgKjEdS.js +1 -0
  84. package/dist/ui/assets/{BucketDetailPage-Hg4Gg3jC.js → BucketDetailPage-DZQGxm0y.js} +1 -1
  85. package/dist/ui/assets/{BucketsPage-BHkg7TQp.js → BucketsPage-xYXzxCvd.js} +1 -1
  86. package/dist/ui/assets/{DynamoPage-CH_TgPh_.js → DynamoPage-B1__Rjr2.js} +1 -1
  87. package/dist/ui/assets/{DynamoTablePage-BPvl5y6_.js → DynamoTablePage-BCoxPdXW.js} +1 -1
  88. package/dist/ui/assets/LambdaDetailPage-B85CA8tb.js +4 -0
  89. package/dist/ui/assets/LambdasPage-_TtxQMT_.js +1 -0
  90. package/dist/ui/assets/{OverviewPage-CwLnw4VW.css → OverviewPage-6jDXV1jr.css} +1 -1
  91. package/dist/ui/assets/OverviewPage-CqTKTY64.js +1 -0
  92. package/dist/ui/assets/{QueueDetailPage-DHDPgRDc.js → QueueDetailPage-BOr_sImA.js} +1 -1
  93. package/dist/ui/assets/{QueuesPage-D5YcEbUU.js → QueuesPage-DpByfcM5.js} +1 -1
  94. package/dist/ui/assets/{ServiceDetailPage-DxJ0t7HQ.js → ServiceDetailPage-DsWgV-ad.js} +1 -1
  95. package/dist/ui/assets/{ServicesPage-DWDaaOz9.js → ServicesPage-CGlpsj98.js} +1 -1
  96. package/dist/ui/assets/{index-D3WwZ4lY.js → index-BWlB542w.js} +11 -11
  97. package/dist/ui/index.html +1 -1
  98. package/package.json +2 -2
  99. package/packages/serverless-plugin/README.md +21 -3
  100. package/packages/serverless-plugin/dist/index.js +8 -3
  101. package/packages/serverless-plugin/dist/index.js.map +1 -1
  102. package/dist/ui/assets/OverviewPage-nhomNDqx.js +0 -1
@@ -0,0 +1,85 @@
1
+ import { Router } from 'express';
2
+ import { FunctionRegistry } from '../services/function-registry.js';
3
+ import { LambdaRuntimeManager } from '../services/lambda-runtime-manager.js';
4
+ const router = Router();
5
+ function describeFunction(ref) {
6
+ const runtimeManager = LambdaRuntimeManager.getInstance();
7
+ const info = runtimeManager.getRuntimeInfo(ref.service.name);
8
+ const history = runtimeManager.getHistory(ref.service.name, ref.fn.name);
9
+ const last = history[history.length - 1];
10
+ return {
11
+ name: ref.fn.name,
12
+ fullName: ref.fn.fullName,
13
+ service: ref.service.name,
14
+ handler: ref.fn.handler,
15
+ runtime: ref.fn.runtime,
16
+ memorySize: ref.fn.memorySize,
17
+ timeout: ref.fn.timeout,
18
+ triggers: ref.fn.triggers,
19
+ invokePort: ref.service.invokePort,
20
+ status: info.status,
21
+ executionMode: info.resolvedMode,
22
+ invocations: history.length,
23
+ errors: history.filter(h => !h.ok).length,
24
+ lastInvokedAt: last?.at,
25
+ lastDurationMs: last?.durationMs,
26
+ lastOk: last?.ok,
27
+ };
28
+ }
29
+ // List every registered function across services, with runtime status.
30
+ router.get('/', (_req, res) => {
31
+ const refs = FunctionRegistry.getInstance().listFunctions();
32
+ return res.json(refs.map(describeFunction));
33
+ });
34
+ // Function detail — accepts the short or fully qualified name.
35
+ router.get('/:name', (req, res) => {
36
+ const ref = FunctionRegistry.getInstance().resolve(String(req.params.name));
37
+ if (!ref) {
38
+ return res.status(404).json({ error: `Function not found: ${req.params.name}` });
39
+ }
40
+ return res.json({
41
+ ...describeFunction(ref),
42
+ environment: ref.fn.environment,
43
+ routes: ref.service.routes
44
+ .filter(r => r.functionName === ref.fn.name)
45
+ .map(r => ({ method: r.method, path: r.path, eventType: r.eventType, authorizerName: r.authorizerName })),
46
+ });
47
+ });
48
+ // Invoke any registered function (UI / LssClient / tests). The AWS-compatible
49
+ // channel is the per-service invoke port; this one returns logs and duration.
50
+ router.post('/:name/invoke', async (req, res) => {
51
+ try {
52
+ const ref = FunctionRegistry.getInstance().resolve(String(req.params.name));
53
+ if (!ref) {
54
+ return res.status(404).json({ error: `Function not found: ${req.params.name}` });
55
+ }
56
+ const { payload, invocationType } = req.body || {};
57
+ if (invocationType === 'Event') {
58
+ void LambdaRuntimeManager.getInstance().invoke(ref.service.name, ref.fn, payload ?? {});
59
+ return res.status(202).json({ accepted: true });
60
+ }
61
+ const result = await LambdaRuntimeManager.getInstance().invoke(ref.service.name, ref.fn, payload ?? {});
62
+ return res.json({
63
+ ok: result.ok,
64
+ payload: result.payload,
65
+ functionError: result.ok ? undefined : { errorType: result.errorType, errorMessage: result.errorMessage, trace: result.trace },
66
+ logs: result.logs,
67
+ durationMs: result.durationMs,
68
+ });
69
+ }
70
+ catch (error) {
71
+ console.error('Error invoking function:', error);
72
+ return res.status(500).json({ error: 'Failed to invoke function' });
73
+ }
74
+ });
75
+ // Recent invocations (with captured console output) for one function.
76
+ router.get('/:name/logs', (req, res) => {
77
+ const ref = FunctionRegistry.getInstance().resolve(String(req.params.name));
78
+ if (!ref) {
79
+ return res.status(404).json({ error: `Function not found: ${req.params.name}` });
80
+ }
81
+ const history = LambdaRuntimeManager.getInstance().getHistory(ref.service.name, ref.fn.name);
82
+ return res.json({ invocations: history });
83
+ });
84
+ export { router as lambdasRouter };
85
+ //# sourceMappingURL=lambdas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambdas.js","sourceRoot":"","sources":["../../../src/server/routes/lambdas.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;AAIhE,QAAA,MAAM,MAAM,4CAAW,CAAC;AAIxB,QAAA,MAAM,cAAc,gBAAuB,CAAC;AAwU5C,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":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAOhE,QAAA,MAAM,MAAM,4CAAW,CAAC;AAIxB,QAAA,MAAM,cAAc,gBAAuB,CAAC;AAkV5C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,cAAc,EAAE,CAAC"}
@@ -1,12 +1,14 @@
1
1
  import { Router } from 'express';
2
- import fs from 'fs/promises';
3
2
  import path from 'path';
4
3
  import { CloudFormationParser } from '../services/cloudformation-parser.js';
5
4
  import { CacheManager } from '../services/cache-manager.js';
6
5
  import { ResourceProvisioner } from '../services/resource-provisioner.js';
7
6
  import { ProcessManager } from '../services/process-manager.js';
8
7
  import { ConfigManager } from '../services/config-manager.js';
9
- import { runServerlessPackage, ServerlessPackageError } from '../services/serverless-packager.js';
8
+ import { ServiceRegistrar, RegistrationError } from '../services/service-registrar.js';
9
+ import { LambdaRuntimeManager } from '../services/lambda-runtime-manager.js';
10
+ import { GatewayManager } from '../services/gateway-manager.js';
11
+ import { SourceWatcher } from '../services/source-watcher.js';
10
12
  const router = Router();
11
13
  const parser = new CloudFormationParser();
12
14
  const cache = new CacheManager();
@@ -25,7 +27,7 @@ async function ensureCacheInit() {
25
27
  router.post('/register', async (req, res) => {
26
28
  try {
27
29
  await ensureCacheInit();
28
- const { servicePath, invokePort, region } = req.body;
30
+ const { servicePath, invokePort, apiPort, region } = req.body;
29
31
  if (!servicePath) {
30
32
  return res.status(400).json({ error: 'servicePath is required' });
31
33
  }
@@ -33,6 +35,7 @@ router.post('/register', async (req, res) => {
33
35
  const effectiveRegion = region || configManager.getConfig().region || 'us-east-1';
34
36
  console.log(`📝 Registering service from ${servicePath}`);
35
37
  console.log(` Invoke port: ${invokePort || 'not specified'}`);
38
+ console.log(` API port: ${apiPort || 'not specified'}`);
36
39
  console.log(` Region: ${effectiveRegion}`);
37
40
  if (region) {
38
41
  console.log(` Region source: Serverless Framework configuration`);
@@ -48,92 +51,34 @@ router.post('/register', async (req, res) => {
48
51
  if (resolvedPath.includes('..') || !resolvedPath.startsWith('/')) {
49
52
  return res.status(400).json({ error: 'Invalid service path' });
50
53
  }
51
- // Validate invokePort
52
- if (invokePort && (typeof invokePort !== 'number' || invokePort < 1024 || invokePort > 65535)) {
53
- return res.status(400).json({ error: 'Invalid invokePort, must be between 1024-65535' });
54
- }
55
- // Read CloudFormation template. If missing and autoPackage is enabled, run
56
- // the configured package command and retry once.
57
- const templatePath = path.join(resolvedPath, '.serverless', 'cloudformation-template-update-stack.json');
58
- let templateContent;
59
- try {
60
- templateContent = await fs.readFile(templatePath, 'utf-8');
61
- }
62
- catch (err) {
63
- const isENOENT = err?.code === 'ENOENT';
64
- if (!isENOENT)
65
- throw err;
66
- if (!configManager.isAutoPackage()) {
67
- return res.status(400).json({
68
- error: `CloudFormation template not found at ${templatePath}. Run 'serverless package' in the service directory, or enable autoPackage in lss.config.json.`,
69
- });
70
- }
71
- const packageCommand = configManager.getPackageCommand();
72
- console.log(`📦 Template missing — running '${packageCommand}' in ${resolvedPath}`);
73
- try {
74
- const result = await runServerlessPackage({
75
- command: packageCommand,
76
- cwd: resolvedPath,
77
- timeoutMs: configManager.getPackageTimeoutMs(),
78
- });
79
- console.log(`✅ Auto-package finished for ${resolvedPath} (exit 0)`);
80
- if (result.stdout.trim()) {
81
- console.log(`--- ${packageCommand} stdout ---\n${result.stdout.trimEnd()}\n--- end ---`);
82
- }
54
+ for (const [label, value] of [['invokePort', invokePort], ['apiPort', apiPort]]) {
55
+ if (value && (typeof value !== 'number' || value < 1024 || value > 65535)) {
56
+ return res.status(400).json({ error: `Invalid ${label}, must be between 1024-65535` });
83
57
  }
84
- catch (packageErr) {
85
- if (packageErr instanceof ServerlessPackageError) {
86
- console.error(`❌ Auto-package failed for ${resolvedPath}: ${packageErr.message}`);
87
- if (packageErr.result.stdout.trim()) {
88
- console.error(`--- ${packageCommand} stdout ---\n${packageErr.result.stdout.trimEnd()}\n--- end ---`);
89
- }
90
- if (packageErr.result.stderr.trim()) {
91
- console.error(`--- ${packageCommand} stderr ---\n${packageErr.result.stderr.trimEnd()}\n--- end ---`);
92
- }
93
- }
94
- else {
95
- console.error(`❌ Auto-package failed for ${resolvedPath}:`, packageErr);
96
- }
97
- const detail = packageErr instanceof ServerlessPackageError
98
- ? `${packageErr.message}\n${packageErr.result.stderr || packageErr.result.stdout}`.trim()
99
- : packageErr instanceof Error ? packageErr.message : 'Unknown error';
100
- return res.status(500).json({
101
- error: `Auto-package failed for ${resolvedPath}: ${detail}. Full stderr/stdout is in the orchestrator log (/tmp/lss-orchestrator.log).`,
102
- });
103
- }
104
- templateContent = await fs.readFile(templatePath, 'utf-8');
105
58
  }
106
- const template = JSON.parse(templateContent);
107
- // Parse resources
108
- const resources = parser.parse(template);
109
- const templateHash = parser.calculateHash(template);
110
- // Extract service name
111
- const serviceName = path.basename(servicePath);
112
- // Save to cache
113
- await cache.saveTemplate(serviceName, template, {
114
- root: servicePath,
115
- templateHash,
116
- lastUpdated: Date.now(),
117
- status: 'registered',
59
+ const result = await ServiceRegistrar.getInstance().register({
60
+ servicePath: resolvedPath,
118
61
  invokePort,
119
- region: effectiveRegion,
120
- });
121
- // Provision resources to LocalStack
122
- await provisioner.provisionResources(serviceName, resources, {
123
- invokePort,
124
- region: effectiveRegion,
62
+ apiPort,
63
+ region,
125
64
  });
126
65
  return res.json({
127
66
  success: true,
128
- serviceName,
129
- resourcesCount: resources.length,
130
- resources: resources.map(r => ({
67
+ serviceName: result.serviceName,
68
+ resourcesCount: result.resources.length,
69
+ functionsCount: result.functionsCount,
70
+ routesCount: result.routesCount,
71
+ warnings: result.warnings,
72
+ resources: result.resources.map(r => ({
131
73
  type: r.type,
132
74
  name: 'name' in r ? r.name : r.functionName,
133
75
  })),
134
76
  });
135
77
  }
136
78
  catch (error) {
79
+ if (error instanceof RegistrationError) {
80
+ return res.status(error.statusCode).json({ error: error.message });
81
+ }
137
82
  console.error('Registration error:', error);
138
83
  const message = error instanceof Error ? error.message : 'Unknown error';
139
84
  return res.status(500).json({ error: message });
@@ -154,7 +99,17 @@ router.get('/', async (_req, res) => {
154
99
  topics: resources.filter(r => r.type === 'sns').length,
155
100
  buckets: resources.filter(r => r.type === 's3').length,
156
101
  };
157
- return { ...s, resourcesCount: resources.length, resourceBreakdown };
102
+ const runtime = LambdaRuntimeManager.getInstance().getRuntimeInfo(s.name);
103
+ const gateway = GatewayManager.getInstance().getInfo(s.name);
104
+ return {
105
+ ...s,
106
+ resourcesCount: resources.length,
107
+ resourceBreakdown,
108
+ functionsCount: s.functions?.length ?? 0,
109
+ routesCount: s.routes?.length ?? 0,
110
+ runtimeStatus: runtime.status,
111
+ gateway,
112
+ };
158
113
  }));
159
114
  return res.json(withCount);
160
115
  }
@@ -199,6 +154,8 @@ router.delete('/:name', async (req, res) => {
199
154
  if (!serviceName || typeof serviceName !== 'string' || serviceName.includes('/') || serviceName.includes('..')) {
200
155
  return res.status(400).json({ error: 'Invalid service name' });
201
156
  }
157
+ // Tear down the data plane first (worker, listeners, watcher, registry).
158
+ await ServiceRegistrar.getInstance().deactivate(serviceName);
202
159
  // Clean up resources from LocalStack — re-parse the cached template so the cleanup
203
160
  // works even after an orchestrator restart (no in-memory state).
204
161
  const template = await cache.getTemplate(serviceName);
@@ -292,6 +249,62 @@ router.post('/:name/stop', async (req, res) => {
292
249
  return res.status(500).json({ error: 'Failed to stop service' });
293
250
  }
294
251
  });
252
+ // Lambda runtime status for a service (worker + gateway/invoke listeners).
253
+ router.get('/:name/runtime', async (req, res) => {
254
+ try {
255
+ const serviceName = req.params.name;
256
+ if (!serviceName || typeof serviceName !== 'string' || serviceName.includes('/') || serviceName.includes('..')) {
257
+ return res.status(400).json({ error: 'Invalid service name' });
258
+ }
259
+ const runtime = LambdaRuntimeManager.getInstance().getRuntimeInfo(serviceName);
260
+ const gateway = GatewayManager.getInstance().getInfo(serviceName);
261
+ const watch = SourceWatcher.getInstance().getStatus(serviceName);
262
+ return res.json({ runtime, gateway, watch });
263
+ }
264
+ catch (error) {
265
+ console.error('Error fetching runtime status:', error);
266
+ return res.status(500).json({ error: 'Failed to fetch runtime status' });
267
+ }
268
+ });
269
+ // Start (or restart) the Lambda runtime for a service.
270
+ router.post('/:name/runtime/start', async (req, res) => {
271
+ try {
272
+ await ensureCacheInit();
273
+ const serviceName = req.params.name;
274
+ if (!serviceName || typeof serviceName !== 'string' || serviceName.includes('/') || serviceName.includes('..')) {
275
+ return res.status(400).json({ error: 'Invalid service name' });
276
+ }
277
+ const metadata = await cache.getMetadata(serviceName);
278
+ if (!metadata) {
279
+ return res.status(404).json({ error: 'Service not found' });
280
+ }
281
+ await ServiceRegistrar.getInstance().activate(metadata);
282
+ const runtime = LambdaRuntimeManager.getInstance().getRuntimeInfo(serviceName);
283
+ const gateway = GatewayManager.getInstance().getInfo(serviceName);
284
+ return res.json({ success: true, runtime, gateway });
285
+ }
286
+ catch (error) {
287
+ console.error('Error starting runtime:', error);
288
+ return res.status(500).json({ error: 'Failed to start runtime' });
289
+ }
290
+ });
291
+ // Stop the Lambda runtime (worker + listeners) for a service.
292
+ router.post('/:name/runtime/stop', async (req, res) => {
293
+ try {
294
+ const serviceName = req.params.name;
295
+ if (!serviceName || typeof serviceName !== 'string' || serviceName.includes('/') || serviceName.includes('..')) {
296
+ return res.status(400).json({ error: 'Invalid service name' });
297
+ }
298
+ SourceWatcher.getInstance().unwatch(serviceName);
299
+ await LambdaRuntimeManager.getInstance().stopRuntime(serviceName);
300
+ await GatewayManager.getInstance().stopService(serviceName);
301
+ return res.json({ success: true });
302
+ }
303
+ catch (error) {
304
+ console.error('Error stopping runtime:', error);
305
+ return res.status(500).json({ error: 'Failed to stop runtime' });
306
+ }
307
+ });
295
308
  // Fetch logs for a running service
296
309
  router.get('/:name/logs', async (req, res) => {
297
310
  try {
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runtime-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-worker.d.ts","sourceRoot":"","sources":["../../../src/server/runtime/runtime-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,207 @@
1
+ // Lambda runtime worker — one forked process per registered service. Loads
2
+ // handlers (compiled artifact or source, JS or TS) on demand, executes them with
3
+ // a Lambda-shaped context/timeout, and reports results over IPC. Keeping this in
4
+ // a child process isolates handler env vars and crashes from the orchestrator,
5
+ // while module caching between invocations gives "warm start" behavior.
6
+ import path from 'path';
7
+ import fs from 'fs';
8
+ import util from 'util';
9
+ import { createRequire } from 'module';
10
+ import { pathToFileURL } from 'url';
11
+ import { AsyncLocalStorage } from 'async_hooks';
12
+ import crypto from 'crypto';
13
+ const handlerCache = new Map();
14
+ const logStorage = new AsyncLocalStorage();
15
+ let tsLoaderRegistered = false;
16
+ // Capture console output per invocation without breaking interleaved async
17
+ // handlers — AsyncLocalStorage routes each log line to the invocation that
18
+ // emitted it.
19
+ for (const level of ['log', 'info', 'warn', 'error', 'debug']) {
20
+ const original = console[level].bind(console);
21
+ console[level] = (...args) => {
22
+ const sink = logStorage.getStore();
23
+ if (sink) {
24
+ sink.push(`${level.toUpperCase()} ${util.format(...args)}`);
25
+ }
26
+ original(...args);
27
+ };
28
+ }
29
+ function resolveHandlerFile(root, filePart) {
30
+ const base = path.resolve(root, filePart);
31
+ const extensions = ['.js', '.cjs', '.mjs', '.ts', '.cts', '.mts'];
32
+ for (const ext of extensions) {
33
+ if (fs.existsSync(base + ext))
34
+ return base + ext;
35
+ }
36
+ // Handler may point at a directory with an index file.
37
+ for (const ext of extensions) {
38
+ const indexFile = path.join(base, `index${ext}`);
39
+ if (fs.existsSync(indexFile))
40
+ return indexFile;
41
+ }
42
+ return null;
43
+ }
44
+ // Register a TypeScript require hook, resolving the loader from the service's
45
+ // own node_modules first (its version wins), then from LSS's dependencies.
46
+ function ensureTsLoader(serviceRoot) {
47
+ if (tsLoaderRegistered)
48
+ return;
49
+ const resolvers = [
50
+ createRequire(path.join(serviceRoot, 'noop.js')),
51
+ createRequire(import.meta.url),
52
+ ];
53
+ const candidates = [
54
+ { id: 'esbuild-register/dist/node', register: true },
55
+ { id: 'tsx/cjs', register: false },
56
+ { id: 'ts-node/register/transpile-only', register: false },
57
+ ];
58
+ for (const resolver of resolvers) {
59
+ for (const candidate of candidates) {
60
+ try {
61
+ const mod = resolver(candidate.id);
62
+ if (candidate.register && typeof mod.register === 'function') {
63
+ mod.register();
64
+ }
65
+ tsLoaderRegistered = true;
66
+ return;
67
+ }
68
+ catch {
69
+ // Try the next loader/resolver.
70
+ }
71
+ }
72
+ }
73
+ throw new Error('TypeScript handler found but no TS loader is available. Install "esbuild-register" (or tsx/ts-node) ' +
74
+ 'in the service, or use execution mode "artifact" so LSS loads the compiled bundle instead.');
75
+ }
76
+ async function loadHandler(msg) {
77
+ const cacheKey = `${msg.handlerRoot}::${msg.handler}`;
78
+ const cached = handlerCache.get(cacheKey);
79
+ if (cached)
80
+ return cached;
81
+ const lastDot = msg.handler.lastIndexOf('.');
82
+ if (lastDot <= 0) {
83
+ throw new Error(`Invalid handler reference "${msg.handler}" (expected "path/to/file.exportName")`);
84
+ }
85
+ const filePart = msg.handler.slice(0, lastDot);
86
+ const exportName = msg.handler.slice(lastDot + 1);
87
+ const file = resolveHandlerFile(msg.handlerRoot, filePart);
88
+ if (!file) {
89
+ throw new Error(`Handler file not found for "${msg.handler}" under ${msg.handlerRoot}`);
90
+ }
91
+ if (/\.(ts|cts|mts)$/.test(file)) {
92
+ ensureTsLoader(msg.serviceRoot);
93
+ }
94
+ // Resolve like a module sitting inside the service, so relative requires and
95
+ // the service's node_modules work; fall back to dynamic import for ESM files.
96
+ const serviceRequire = createRequire(path.join(msg.handlerRoot, 'noop.js'));
97
+ let mod;
98
+ try {
99
+ mod = serviceRequire(file);
100
+ }
101
+ catch (err) {
102
+ const code = err?.code;
103
+ if (code === 'ERR_REQUIRE_ESM' || /\.mjs$/.test(file)) {
104
+ mod = (await import(pathToFileURL(file).href));
105
+ }
106
+ else {
107
+ throw err;
108
+ }
109
+ }
110
+ const candidate = mod[exportName]
111
+ ?? mod.default?.[exportName];
112
+ if (typeof candidate !== 'function') {
113
+ throw new Error(`Export "${exportName}" not found (or not a function) in ${file}`);
114
+ }
115
+ const handler = candidate;
116
+ handlerCache.set(cacheKey, handler);
117
+ return handler;
118
+ }
119
+ function buildContext(msg, deadline, requestId) {
120
+ return {
121
+ functionName: msg.fullName,
122
+ functionVersion: '$LATEST',
123
+ invokedFunctionArn: `arn:aws:lambda:${msg.region}:000000000000:function:${msg.fullName}`,
124
+ memoryLimitInMB: String(msg.memorySize),
125
+ awsRequestId: requestId,
126
+ logGroupName: `/aws/lambda/${msg.fullName}`,
127
+ logStreamName: `${new Date().toISOString().slice(0, 10)}/[$LATEST]${requestId}`,
128
+ callbackWaitsForEmptyEventLoop: true,
129
+ getRemainingTimeInMillis: () => Math.max(0, deadline - Date.now()),
130
+ };
131
+ }
132
+ async function runHandler(handler, event, context) {
133
+ if (handler.length >= 3) {
134
+ return new Promise((resolve, reject) => {
135
+ const maybe = handler(event, context, (err, res) => (err ? reject(err) : resolve(res)));
136
+ if (maybe && typeof maybe.then === 'function') {
137
+ maybe.then(resolve, reject);
138
+ }
139
+ });
140
+ }
141
+ return handler(event, context);
142
+ }
143
+ async function handleInvoke(msg) {
144
+ const logs = [];
145
+ const startedAt = Date.now();
146
+ const requestId = crypto.randomUUID();
147
+ const deadline = startedAt + msg.timeoutSeconds * 1000;
148
+ // Function env is applied to the shared process env (functions of one service
149
+ // share a worker, mirroring how serverless-offline behaves).
150
+ Object.assign(process.env, msg.env, {
151
+ AWS_REGION: msg.region,
152
+ AWS_DEFAULT_REGION: msg.region,
153
+ AWS_LAMBDA_FUNCTION_NAME: msg.fullName,
154
+ AWS_LAMBDA_FUNCTION_MEMORY_SIZE: String(msg.memorySize),
155
+ });
156
+ if (!process.env.AWS_ACCESS_KEY_ID)
157
+ process.env.AWS_ACCESS_KEY_ID = 'test';
158
+ if (!process.env.AWS_SECRET_ACCESS_KEY)
159
+ process.env.AWS_SECRET_ACCESS_KEY = 'test';
160
+ const reply = (result) => {
161
+ const message = {
162
+ type: 'result',
163
+ invokeId: msg.invokeId,
164
+ logs,
165
+ durationMs: Date.now() - startedAt,
166
+ ...result,
167
+ };
168
+ process.send?.(message);
169
+ };
170
+ try {
171
+ const handler = await loadHandler(msg);
172
+ const context = buildContext(msg, deadline, requestId);
173
+ const timeout = new Promise((_, reject) => {
174
+ const timer = setTimeout(() => {
175
+ reject(Object.assign(new Error(`${new Date().toISOString()} ${requestId} Task timed out after ${msg.timeoutSeconds.toFixed(2)} seconds`), {
176
+ name: 'TimeoutError',
177
+ }));
178
+ }, deadline - Date.now());
179
+ timer.unref();
180
+ });
181
+ const payload = await logStorage.run(logs, () => Promise.race([runHandler(handler, msg.event, context), timeout]));
182
+ reply({ ok: true, payload: payload === undefined ? null : payload });
183
+ }
184
+ catch (err) {
185
+ const error = err instanceof Error ? err : new Error(String(err));
186
+ reply({
187
+ ok: false,
188
+ error: {
189
+ errorType: error.name || 'Error',
190
+ errorMessage: error.message,
191
+ trace: error.stack ? error.stack.split('\n') : undefined,
192
+ },
193
+ });
194
+ }
195
+ }
196
+ process.on('message', (msg) => {
197
+ if (msg && msg.type === 'invoke') {
198
+ void handleInvoke(msg);
199
+ }
200
+ });
201
+ // A handler's stray rejection must not kill the worker (and every in-flight
202
+ // invocation with it).
203
+ process.on('unhandledRejection', (reason) => {
204
+ console.error('Unhandled rejection in lambda worker:', reason);
205
+ });
206
+ process.send?.({ type: 'ready' });
207
+ //# sourceMappingURL=runtime-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-worker.js","sourceRoot":"","sources":["../../../src/server/runtime/runtime-worker.ts"],"names":[],"mappings":"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"}