@mavogel/cdk-vscode-server 0.0.59 → 0.0.61

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 (55) hide show
  1. package/.claude/hooks/file_checker.sh +3 -0
  2. package/.jsii +453 -30
  3. package/API.md +514 -0
  4. package/README.md +57 -0
  5. package/assets/idle-monitor/idle-monitor.lambda/index.js +110 -0
  6. package/assets/status-check/status-check.lambda/index.js +123 -0
  7. package/examples/auto-stop/main.ts +75 -0
  8. package/integ-tests/functions/idle-test-handler.ts +178 -0
  9. package/integ-tests/functions/login-handler.ts +62 -33
  10. package/integ-tests/integ.al2023.ts.snapshot/read.13497.1.lock +1 -0
  11. package/integ-tests/integ.custom-domain.ts.snapshot/read.13497.1.lock +1 -0
  12. package/integ-tests/integ.stop-on-idle.ts +175 -0
  13. package/integ-tests/integ.stop-on-idle.ts.snapshot/IntegStopOnIdleFunctionalityDefaultTestDeployAssertEECF3FC0.assets.json +33 -0
  14. package/integ-tests/integ.stop-on-idle.ts.snapshot/IntegStopOnIdleFunctionalityDefaultTestDeployAssertEECF3FC0.template.json +692 -0
  15. package/integ-tests/integ.stop-on-idle.ts.snapshot/IntegTestStackStopOnIdle.assets.json +146 -0
  16. package/integ-tests/integ.stop-on-idle.ts.snapshot/IntegTestStackStopOnIdle.template.json +3077 -0
  17. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
  18. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.33da23274e25bd9f43638c5d83dad26e3931cbe78d462ffd9a9f565e948b4f5f.lambda/index.js +143 -0
  19. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.530055f7515b3f0a47900f5df37e729ba40ca977b2d07b952bdefa2b8f883f42.bundle/index.js +30676 -0
  20. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.781ab0ab74634cdaf61539ab208ab777829ef07097ac21f95b9e15a3b1eedc1b.lambda/index.js +57 -0
  21. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/__entrypoint__.js +1 -0
  22. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/index.js +1 -0
  23. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.8dd4be31c5a6cd8750dc55c07c1e2f19596f8a27b032d02c18554ed44eabe065.lambda/index.js +110 -0
  24. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.9d043014be736e8162bcc7ec5590cc6d2ff24fd0d9c73a5c5d595151c5fdad00/index.js +1 -0
  25. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/cfn-response.js +1 -0
  26. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/consts.js +1 -0
  27. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/framework.js +3 -0
  28. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/outbound.js +1 -0
  29. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/util.js +1 -0
  30. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.d061a1ca61c6339fcb77bb6fc19194a60c96bb16531eaf1e4e733b50089512ca/index.js +118 -0
  31. package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.efac30c7091c58fed492058fa6403c14f7e58aab8cf4fd595d838b8d5eeec2b9/index.js +6017 -0
  32. package/integ-tests/integ.stop-on-idle.ts.snapshot/integ.json +20 -0
  33. package/integ-tests/integ.stop-on-idle.ts.snapshot/manifest.json +1942 -0
  34. package/integ-tests/integ.stop-on-idle.ts.snapshot/tree.json +1 -0
  35. package/integ-tests/integ.ubuntu.ts.snapshot/read.13497.1.lock +1 -0
  36. package/lib/idle-monitor/idle-monitor-function.d.ts +13 -0
  37. package/lib/idle-monitor/idle-monitor-function.js +22 -0
  38. package/lib/idle-monitor/idle-monitor.d.ts +53 -0
  39. package/lib/idle-monitor/idle-monitor.js +84 -0
  40. package/lib/idle-monitor/idle-monitor.lambda.d.ts +2 -0
  41. package/lib/idle-monitor/idle-monitor.lambda.js +97 -0
  42. package/lib/index.d.ts +2 -0
  43. package/lib/index.js +3 -1
  44. package/lib/status-check/status-check-function.d.ts +13 -0
  45. package/lib/status-check/status-check-function.js +22 -0
  46. package/lib/status-check/status-check.d.ts +36 -0
  47. package/lib/status-check/status-check.js +109 -0
  48. package/lib/status-check/status-check.lambda.d.ts +2 -0
  49. package/lib/status-check/status-check.lambda.js +104 -0
  50. package/lib/vscode-server.d.ts +42 -0
  51. package/lib/vscode-server.js +51 -7
  52. package/mavogelcdkvscodeserver/go.mod +2 -2
  53. package/mavogelcdkvscodeserver/jsii/jsii.go +2 -2
  54. package/mavogelcdkvscodeserver/version +1 -1
  55. package/package.json +21 -16
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // integ-tests/functions/idle-test-handler.ts
21
+ var idle_test_handler_exports = {};
22
+ __export(idle_test_handler_exports, {
23
+ handler: () => handler
24
+ });
25
+ module.exports = __toCommonJS(idle_test_handler_exports);
26
+ var import_client_ec2 = require("@aws-sdk/client-ec2");
27
+ var import_client_eventbridge = require("@aws-sdk/client-eventbridge");
28
+ var ec2 = new import_client_ec2.EC2Client({});
29
+ var eventBridge = new import_client_eventbridge.EventBridgeClient({});
30
+ var handler = async (event) => {
31
+ console.log("Idle test event:", JSON.stringify(event, null, 2));
32
+ const { testPhase, instanceId, idleTimeoutMinutes = 5, idleMonitorRuleName } = event;
33
+ try {
34
+ if (testPhase === "verify-auto-stop") {
35
+ if (!instanceId) throw new Error("instanceId is required for verify-auto-stop");
36
+ return await verifyAutoStop(instanceId, idleTimeoutMinutes);
37
+ } else if (testPhase === "disable-idle-monitor") {
38
+ if (!idleMonitorRuleName) throw new Error("idleMonitorRuleName is required for disable-idle-monitor");
39
+ return await disableIdleMonitor(idleMonitorRuleName);
40
+ } else if (testPhase === "start-instance") {
41
+ if (!instanceId) throw new Error("instanceId is required for start-instance");
42
+ return await startInstance(instanceId);
43
+ } else {
44
+ throw new Error(`Unknown test phase: ${testPhase}`);
45
+ }
46
+ } catch (error) {
47
+ console.error("Test failed:", error);
48
+ throw error;
49
+ }
50
+ };
51
+ async function verifyAutoStop(instanceId, idleTimeoutMinutes) {
52
+ console.log(`Starting auto-stop verification for instance ${instanceId}`);
53
+ console.log(`Idle timeout: ${idleTimeoutMinutes} minutes`);
54
+ console.log("Step 2: Polling for stopped state (IdleMonitor should stop it within 100s with skipStatusChecks)...");
55
+ await waitForInstanceState(instanceId, "stopped", 100);
56
+ console.log("\u2705 Auto-stop verification successful: instance stopped after idle timeout");
57
+ return "STOPPED";
58
+ }
59
+ async function getInstanceState(instanceId) {
60
+ const command = new import_client_ec2.DescribeInstancesCommand({
61
+ InstanceIds: [instanceId]
62
+ });
63
+ const response = await ec2.send(command);
64
+ const instance = response.Reservations?.[0]?.Instances?.[0];
65
+ if (!instance) {
66
+ throw new Error(`Instance ${instanceId} not found`);
67
+ }
68
+ const state = instance.State?.Name || "unknown";
69
+ console.log(`Instance ${instanceId} state: ${state}`);
70
+ return state;
71
+ }
72
+ async function waitForInstanceState(instanceId, targetState, maxWaitSeconds) {
73
+ const pollIntervalMs = 3e4;
74
+ const maxAttempts = Math.ceil(maxWaitSeconds / (pollIntervalMs / 1e3));
75
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
76
+ console.log(`Polling attempt ${attempt}/${maxAttempts}...`);
77
+ const currentState = await getInstanceState(instanceId);
78
+ if (currentState === targetState) {
79
+ console.log(`\u2705 Instance reached target state: ${targetState}`);
80
+ return;
81
+ }
82
+ console.log(`Instance state is ${currentState}, waiting for ${targetState}...`);
83
+ if (attempt < maxAttempts) {
84
+ await sleep(pollIntervalMs);
85
+ }
86
+ }
87
+ throw new Error(
88
+ `Timeout: Instance did not reach state '${targetState}' within ${maxWaitSeconds} seconds`
89
+ );
90
+ }
91
+ function sleep(ms) {
92
+ return new Promise((resolve) => setTimeout(resolve, ms));
93
+ }
94
+ async function disableIdleMonitor(ruleName) {
95
+ console.log(`Disabling IdleMonitor EventBridge rule: ${ruleName}`);
96
+ const command = new import_client_eventbridge.DisableRuleCommand({
97
+ Name: ruleName
98
+ });
99
+ await eventBridge.send(command);
100
+ console.log("\u2705 IdleMonitor EventBridge rule disabled successfully");
101
+ return "DISABLED";
102
+ }
103
+ async function startInstance(instanceId) {
104
+ console.log(`Starting instance: ${instanceId}`);
105
+ const startCommand = new import_client_ec2.StartInstancesCommand({
106
+ InstanceIds: [instanceId]
107
+ });
108
+ await ec2.send(startCommand);
109
+ console.log("Instance start command sent");
110
+ console.log("Waiting for instance to be running...");
111
+ await waitForInstanceState(instanceId, "running", 120);
112
+ console.log("\u2705 Instance started successfully and is running");
113
+ return "RUNNING";
114
+ }
115
+ // Annotate the CommonJS export names for ESM import in node:
116
+ 0 && (module.exports = {
117
+ handler
118
+ });