cdk-local-lambda 0.0.2

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 (53) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +94 -0
  3. package/lib/aspect/docker-function-hook.d.ts +18 -0
  4. package/lib/aspect/docker-function-hook.js +31 -0
  5. package/lib/aspect/live-lambda-aspect.d.ts +85 -0
  6. package/lib/aspect/live-lambda-aspect.js +277 -0
  7. package/lib/aspect/live-lambda-bootstrap.d.ts +17 -0
  8. package/lib/aspect/live-lambda-bootstrap.js +260 -0
  9. package/lib/aspect/nodejs-function-hook.d.ts +20 -0
  10. package/lib/aspect/nodejs-function-hook.js +27 -0
  11. package/lib/bootstrap-stack/bootstrap-stack.d.ts +60 -0
  12. package/lib/bootstrap-stack/bootstrap-stack.js +338 -0
  13. package/lib/cli/appsync/client.d.ts +30 -0
  14. package/lib/cli/appsync/client.js +227 -0
  15. package/lib/cli/cdk-app.d.ts +7 -0
  16. package/lib/cli/cdk-app.js +25 -0
  17. package/lib/cli/commands/bootstrap.d.ts +9 -0
  18. package/lib/cli/commands/bootstrap.js +50 -0
  19. package/lib/cli/commands/local.d.ts +40 -0
  20. package/lib/cli/commands/local.js +1172 -0
  21. package/lib/cli/daemon.d.ts +22 -0
  22. package/lib/cli/daemon.js +18 -0
  23. package/lib/cli/docker/container.d.ts +116 -0
  24. package/lib/cli/docker/container.js +414 -0
  25. package/lib/cli/docker/types.d.ts +71 -0
  26. package/lib/cli/docker/types.js +5 -0
  27. package/lib/cli/docker/watcher.d.ts +44 -0
  28. package/lib/cli/docker/watcher.js +115 -0
  29. package/lib/cli/index.d.ts +9 -0
  30. package/lib/cli/index.js +26 -0
  31. package/lib/cli/runtime-api/server.d.ts +102 -0
  32. package/lib/cli/runtime-api/server.js +396 -0
  33. package/lib/cli/runtime-api/types.d.ts +149 -0
  34. package/lib/cli/runtime-api/types.js +10 -0
  35. package/lib/cli/runtime-wrapper/nodejs-runtime.d.ts +16 -0
  36. package/lib/cli/runtime-wrapper/nodejs-runtime.js +248 -0
  37. package/lib/cli/watcher/file-watcher.d.ts +32 -0
  38. package/lib/cli/watcher/file-watcher.js +57 -0
  39. package/lib/functions/bridge/appsync-client.d.ts +73 -0
  40. package/lib/functions/bridge/appsync-client.js +345 -0
  41. package/lib/functions/bridge/handler.d.ts +17 -0
  42. package/lib/functions/bridge/handler.js +79 -0
  43. package/lib/functions/bridge/ssm-config.d.ts +19 -0
  44. package/lib/functions/bridge/ssm-config.js +45 -0
  45. package/lib/functions/bridge-builder/handler.d.ts +12 -0
  46. package/lib/functions/bridge-builder/handler.js +181 -0
  47. package/lib/functions/bridge-docker/runtime.d.ts +9 -0
  48. package/lib/functions/bridge-docker/runtime.js +127 -0
  49. package/lib/index.d.ts +24 -0
  50. package/lib/index.js +28 -0
  51. package/lib/shared/types.d.ts +102 -0
  52. package/lib/shared/types.js +125 -0
  53. package/package.json +111 -0
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Shared constants and types used by bootstrap stack, aspect, and CLI.
3
+ */
4
+ import { createHash } from "node:crypto";
5
+ /**
6
+ * SSM parameter paths for Live Lambda infrastructure
7
+ * Base path for all Live Lambda SSM parameters
8
+ */
9
+ export const SSM_BASE_PATH = "/cdk-local-lambda";
10
+ /**
11
+ * Tag key used to store the local handler path on Lambda functions
12
+ */
13
+ export const LIVE_LAMBDA_TAG = "live-lambda:handler";
14
+ /**
15
+ * Tag key used to store the local Docker context path on DockerImageFunction.
16
+ * The daemon uses this to build and run the container locally.
17
+ */
18
+ export const LIVE_LAMBDA_DOCKER_TAG = "live-lambda:docker-context";
19
+ /**
20
+ * Name of the CDK bootstrap stack
21
+ */
22
+ export const BOOTSTRAP_STACK_NAME = "CdkLocalLambdaBootstrapStack";
23
+ /**
24
+ * Current version of the bootstrap stack.
25
+ * Increment this when making breaking changes to the bootstrap infrastructure.
26
+ */
27
+ export const BOOTSTRAP_VERSION = "1";
28
+ /**
29
+ * Environment variable names used by the bridge handler
30
+ */
31
+ export const ENV_VARS = {
32
+ HTTP_ENDPOINT: "APPSYNC_HTTP_ENDPOINT",
33
+ REALTIME_ENDPOINT: "APPSYNC_REALTIME_ENDPOINT",
34
+ };
35
+ /**
36
+ * Environment variables that are set locally by the daemon.
37
+ * These override any values from the bridge Lambda and are excluded from forwarding.
38
+ * Note: AWS_LAMBDA_FUNCTION_MEMORY_SIZE is also set locally but isn't in EXCLUDED_ENV_VARS
39
+ * because it doesn't come from the bridge Lambda's process.env (it's in the context).
40
+ */
41
+ export const LOCAL_OVERRIDE_ENV_VARS = new Set([
42
+ // Set by daemon to point to local Runtime API server
43
+ "AWS_LAMBDA_RUNTIME_API",
44
+ // Local handler path (different from deployed handler)
45
+ "_HANDLER",
46
+ // Local project root
47
+ "LAMBDA_TASK_ROOT",
48
+ ]);
49
+ /**
50
+ * Environment variables to exclude when forwarding from Lambda.
51
+ * These are either Lambda internals or should use local values instead.
52
+ */
53
+ export const EXCLUDED_ENV_VARS = new Set([
54
+ // Set locally by the daemon
55
+ "_HANDLER",
56
+ "LAMBDA_TASK_ROOT",
57
+ // Lambda runtime internals
58
+ "AWS_LAMBDA_RUNTIME_API",
59
+ "AWS_LAMBDA_INITIALIZATION_TYPE",
60
+ "AWS_EXECUTION_ENV",
61
+ "LAMBDA_RUNTIME_DIR",
62
+ // Internal sockets
63
+ "_LAMBDA_CONSOLE_SOCKET",
64
+ "_LAMBDA_CONTROL_SOCKET",
65
+ "_LAMBDA_LOG_FD",
66
+ "_LAMBDA_SHARED_MEM_FD",
67
+ "_LAMBDA_RUNTIME_LOAD_TIME",
68
+ "_LAMBDA_SB_ID",
69
+ "_LAMBDA_SERVER_PORT",
70
+ // X-Ray not available locally
71
+ "AWS_XRAY_DAEMON_ADDRESS",
72
+ "AWS_XRAY_CONTEXT_MISSING",
73
+ "_X_AMZN_TRACE_ID",
74
+ // System vars - use local values
75
+ "PATH",
76
+ "PWD",
77
+ "HOME",
78
+ "USER",
79
+ "SHELL",
80
+ "SHLVL",
81
+ "TERM",
82
+ "LANG",
83
+ "LC_ALL",
84
+ "LD_LIBRARY_PATH",
85
+ "TZ",
86
+ ]);
87
+ /**
88
+ * Filter environment variables for forwarding to local execution.
89
+ * Removes Lambda internals and system variables that should use local values.
90
+ */
91
+ export function filterEnvVars(env) {
92
+ const result = {};
93
+ for (const [key, value] of Object.entries(env)) {
94
+ if (value !== undefined && !EXCLUDED_ENV_VARS.has(key)) {
95
+ result[key] = value;
96
+ }
97
+ }
98
+ return result;
99
+ }
100
+ /**
101
+ * Hash a function name for use in channel paths.
102
+ * Uses first 16 hex chars of SHA256 to stay within AppSync limits.
103
+ */
104
+ export function hashFunctionName(functionName) {
105
+ return createHash("sha256")
106
+ .update(functionName)
107
+ .digest("hex")
108
+ .substring(0, 16);
109
+ }
110
+ /**
111
+ * Channel name builders for AppSync Events
112
+ */
113
+ export const buildChannelName = {
114
+ /**
115
+ * Channel for sending invocations to the daemon
116
+ * Bridge -> Daemon
117
+ */
118
+ invocation: (functionName) => `/live/${hashFunctionName(functionName)}/in`,
119
+ /**
120
+ * Channel for receiving responses from the daemon
121
+ * Daemon -> Bridge
122
+ */
123
+ response: (functionName) => `/live/${hashFunctionName(functionName)}/out`,
124
+ };
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV4Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUE7QUFFaEQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUE7QUFFcEQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsNEJBQTRCLENBQUE7QUFFbEU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyw4QkFBOEIsQ0FBQTtBQUVsRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUE7QUFFcEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEIsYUFBYSxFQUFFLHVCQUF1QjtJQUN0QyxpQkFBaUIsRUFBRSwyQkFBMkI7Q0FDdEMsQ0FBQTtBQWNWOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDN0MscURBQXFEO0lBQ3JELHdCQUF3QjtJQUN4Qix1REFBdUQ7SUFDdkQsVUFBVTtJQUNWLHFCQUFxQjtJQUNyQixrQkFBa0I7Q0FDbkIsQ0FBQyxDQUFBO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDdkMsNEJBQTRCO0lBQzVCLFVBQVU7SUFDVixrQkFBa0I7SUFDbEIsMkJBQTJCO0lBQzNCLHdCQUF3QjtJQUN4QixnQ0FBZ0M7SUFDaEMsbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsd0JBQXdCO0lBQ3hCLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLDJCQUEyQjtJQUMzQixlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLDhCQUE4QjtJQUM5Qix5QkFBeUI7SUFDekIsMEJBQTBCO0lBQzFCLGtCQUFrQjtJQUNsQixpQ0FBaUM7SUFDakMsTUFBTTtJQUNOLEtBQUs7SUFDTCxNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87SUFDUCxPQUFPO0lBQ1AsTUFBTTtJQUNOLE1BQU07SUFDTixRQUFRO0lBQ1IsaUJBQWlCO0lBQ2pCLElBQUk7Q0FDTCxDQUFDLENBQUE7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQXNCO0lBQ2xELE1BQU0sTUFBTSxHQUEyQixFQUFFLENBQUE7SUFDekMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBMEJEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxZQUFvQjtJQUNuRCxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDeEIsTUFBTSxDQUFDLFlBQVksQ0FBQztTQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ2IsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUNyQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5Qjs7O09BR0c7SUFDSCxVQUFVLEVBQUUsQ0FBQyxZQUFvQixFQUFFLEVBQUUsQ0FDbkMsU0FBUyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSztJQUU5Qzs7O09BR0c7SUFDSCxRQUFRLEVBQUUsQ0FBQyxZQUFvQixFQUFFLEVBQUUsQ0FDakMsU0FBUyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsTUFBTTtDQUN2QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgY29uc3RhbnRzIGFuZCB0eXBlcyB1c2VkIGJ5IGJvb3RzdHJhcCBzdGFjaywgYXNwZWN0LCBhbmQgQ0xJLlxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuXG4vKipcbiAqIFNTTSBwYXJhbWV0ZXIgcGF0aHMgZm9yIExpdmUgTGFtYmRhIGluZnJhc3RydWN0dXJlXG4gKiBCYXNlIHBhdGggZm9yIGFsbCBMaXZlIExhbWJkYSBTU00gcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY29uc3QgU1NNX0JBU0VfUEFUSCA9IFwiL2Nkay1sb2NhbC1sYW1iZGFcIlxuXG4vKipcbiAqIFRhZyBrZXkgdXNlZCB0byBzdG9yZSB0aGUgbG9jYWwgaGFuZGxlciBwYXRoIG9uIExhbWJkYSBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IExJVkVfTEFNQkRBX1RBRyA9IFwibGl2ZS1sYW1iZGE6aGFuZGxlclwiXG5cbi8qKlxuICogVGFnIGtleSB1c2VkIHRvIHN0b3JlIHRoZSBsb2NhbCBEb2NrZXIgY29udGV4dCBwYXRoIG9uIERvY2tlckltYWdlRnVuY3Rpb24uXG4gKiBUaGUgZGFlbW9uIHVzZXMgdGhpcyB0byBidWlsZCBhbmQgcnVuIHRoZSBjb250YWluZXIgbG9jYWxseS5cbiAqL1xuZXhwb3J0IGNvbnN0IExJVkVfTEFNQkRBX0RPQ0tFUl9UQUcgPSBcImxpdmUtbGFtYmRhOmRvY2tlci1jb250ZXh0XCJcblxuLyoqXG4gKiBOYW1lIG9mIHRoZSBDREsgYm9vdHN0cmFwIHN0YWNrXG4gKi9cbmV4cG9ydCBjb25zdCBCT09UU1RSQVBfU1RBQ0tfTkFNRSA9IFwiQ2RrTG9jYWxMYW1iZGFCb290c3RyYXBTdGFja1wiXG5cbi8qKlxuICogQ3VycmVudCB2ZXJzaW9uIG9mIHRoZSBib290c3RyYXAgc3RhY2suXG4gKiBJbmNyZW1lbnQgdGhpcyB3aGVuIG1ha2luZyBicmVha2luZyBjaGFuZ2VzIHRvIHRoZSBib290c3RyYXAgaW5mcmFzdHJ1Y3R1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBCT09UU1RSQVBfVkVSU0lPTiA9IFwiMVwiXG5cbi8qKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMgdXNlZCBieSB0aGUgYnJpZGdlIGhhbmRsZXJcbiAqL1xuZXhwb3J0IGNvbnN0IEVOVl9WQVJTID0ge1xuICBIVFRQX0VORFBPSU5UOiBcIkFQUFNZTkNfSFRUUF9FTkRQT0lOVFwiLFxuICBSRUFMVElNRV9FTkRQT0lOVDogXCJBUFBTWU5DX1JFQUxUSU1FX0VORFBPSU5UXCIsXG59IGFzIGNvbnN0XG5cbi8qKlxuICogTWVzc2FnZSB0eXBlcyBmb3IgQXBwU3luYyBFdmVudHMgY29tbXVuaWNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludm9jYXRpb25NZXNzYWdlIHtcbiAgdHlwZTogXCJpbnZvY2F0aW9uXCJcbiAgcmVxdWVzdElkOiBzdHJpbmdcbiAgZXZlbnQ6IHVua25vd25cbiAgY29udGV4dDogTGFtYmRhQ29udGV4dFxuICAvKiogTGFtYmRhIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yd2FyZGVkIGZyb20gYnJpZGdlIG9uIGZpcnN0IGludm9jYXRpb24pICovXG4gIGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbn1cblxuLyoqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBhcmUgc2V0IGxvY2FsbHkgYnkgdGhlIGRhZW1vbi5cbiAqIFRoZXNlIG92ZXJyaWRlIGFueSB2YWx1ZXMgZnJvbSB0aGUgYnJpZGdlIExhbWJkYSBhbmQgYXJlIGV4Y2x1ZGVkIGZyb20gZm9yd2FyZGluZy5cbiAqIE5vdGU6IEFXU19MQU1CREFfRlVOQ1RJT05fTUVNT1JZX1NJWkUgaXMgYWxzbyBzZXQgbG9jYWxseSBidXQgaXNuJ3QgaW4gRVhDTFVERURfRU5WX1ZBUlNcbiAqIGJlY2F1c2UgaXQgZG9lc24ndCBjb21lIGZyb20gdGhlIGJyaWRnZSBMYW1iZGEncyBwcm9jZXNzLmVudiAoaXQncyBpbiB0aGUgY29udGV4dCkuXG4gKi9cbmV4cG9ydCBjb25zdCBMT0NBTF9PVkVSUklERV9FTlZfVkFSUyA9IG5ldyBTZXQoW1xuICAvLyBTZXQgYnkgZGFlbW9uIHRvIHBvaW50IHRvIGxvY2FsIFJ1bnRpbWUgQVBJIHNlcnZlclxuICBcIkFXU19MQU1CREFfUlVOVElNRV9BUElcIixcbiAgLy8gTG9jYWwgaGFuZGxlciBwYXRoIChkaWZmZXJlbnQgZnJvbSBkZXBsb3llZCBoYW5kbGVyKVxuICBcIl9IQU5ETEVSXCIsXG4gIC8vIExvY2FsIHByb2plY3Qgcm9vdFxuICBcIkxBTUJEQV9UQVNLX1JPT1RcIixcbl0pXG5cbi8qKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGV4Y2x1ZGUgd2hlbiBmb3J3YXJkaW5nIGZyb20gTGFtYmRhLlxuICogVGhlc2UgYXJlIGVpdGhlciBMYW1iZGEgaW50ZXJuYWxzIG9yIHNob3VsZCB1c2UgbG9jYWwgdmFsdWVzIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBFWENMVURFRF9FTlZfVkFSUyA9IG5ldyBTZXQoW1xuICAvLyBTZXQgbG9jYWxseSBieSB0aGUgZGFlbW9uXG4gIFwiX0hBTkRMRVJcIixcbiAgXCJMQU1CREFfVEFTS19ST09UXCIsXG4gIC8vIExhbWJkYSBydW50aW1lIGludGVybmFsc1xuICBcIkFXU19MQU1CREFfUlVOVElNRV9BUElcIixcbiAgXCJBV1NfTEFNQkRBX0lOSVRJQUxJWkFUSU9OX1RZUEVcIixcbiAgXCJBV1NfRVhFQ1VUSU9OX0VOVlwiLFxuICBcIkxBTUJEQV9SVU5USU1FX0RJUlwiLFxuICAvLyBJbnRlcm5hbCBzb2NrZXRzXG4gIFwiX0xBTUJEQV9DT05TT0xFX1NPQ0tFVFwiLFxuICBcIl9MQU1CREFfQ09OVFJPTF9TT0NLRVRcIixcbiAgXCJfTEFNQkRBX0xPR19GRFwiLFxuICBcIl9MQU1CREFfU0hBUkVEX01FTV9GRFwiLFxuICBcIl9MQU1CREFfUlVOVElNRV9MT0FEX1RJTUVcIixcbiAgXCJfTEFNQkRBX1NCX0lEXCIsXG4gIFwiX0xBTUJEQV9TRVJWRVJfUE9SVFwiLFxuICAvLyBYLVJheSBub3QgYXZhaWxhYmxlIGxvY2FsbHlcbiAgXCJBV1NfWFJBWV9EQUVNT05fQUREUkVTU1wiLFxuICBcIkFXU19YUkFZX0NPTlRFWFRfTUlTU0lOR1wiLFxuICBcIl9YX0FNWk5fVFJBQ0VfSURcIixcbiAgLy8gU3lzdGVtIHZhcnMgLSB1c2UgbG9jYWwgdmFsdWVzXG4gIFwiUEFUSFwiLFxuICBcIlBXRFwiLFxuICBcIkhPTUVcIixcbiAgXCJVU0VSXCIsXG4gIFwiU0hFTExcIixcbiAgXCJTSExWTFwiLFxuICBcIlRFUk1cIixcbiAgXCJMQU5HXCIsXG4gIFwiTENfQUxMXCIsXG4gIFwiTERfTElCUkFSWV9QQVRIXCIsXG4gIFwiVFpcIixcbl0pXG5cbi8qKlxuICogRmlsdGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgZm9yd2FyZGluZyB0byBsb2NhbCBleGVjdXRpb24uXG4gKiBSZW1vdmVzIExhbWJkYSBpbnRlcm5hbHMgYW5kIHN5c3RlbSB2YXJpYWJsZXMgdGhhdCBzaG91bGQgdXNlIGxvY2FsIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckVudlZhcnMoZW52OiBOb2RlSlMuUHJvY2Vzc0Vudik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhlbnYpKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIUVYQ0xVREVEX0VOVl9WQVJTLmhhcyhrZXkpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbHVlXG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNwb25zZU1lc3NhZ2Uge1xuICB0eXBlOiBcInJlc3BvbnNlXCJcbiAgcmVxdWVzdElkOiBzdHJpbmdcbiAgcmVzdWx0PzogdW5rbm93blxuICBlcnJvcj86IEVycm9yUGF5bG9hZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yUGF5bG9hZCB7XG4gIGVycm9yVHlwZTogc3RyaW5nXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nXG4gIHN0YWNrVHJhY2U/OiBzdHJpbmdbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUNvbnRleHQge1xuICBmdW5jdGlvbk5hbWU6IHN0cmluZ1xuICBmdW5jdGlvblZlcnNpb246IHN0cmluZ1xuICBpbnZva2VkRnVuY3Rpb25Bcm46IHN0cmluZ1xuICBtZW1vcnlMaW1pdEluTUI6IHN0cmluZ1xuICBhd3NSZXF1ZXN0SWQ6IHN0cmluZ1xuICBsb2dHcm91cE5hbWU6IHN0cmluZ1xuICBsb2dTdHJlYW1OYW1lOiBzdHJpbmdcbiAgZ2V0UmVtYWluaW5nVGltZUluTWlsbGlzOiBudW1iZXJcbn1cblxuLyoqXG4gKiBIYXNoIGEgZnVuY3Rpb24gbmFtZSBmb3IgdXNlIGluIGNoYW5uZWwgcGF0aHMuXG4gKiBVc2VzIGZpcnN0IDE2IGhleCBjaGFycyBvZiBTSEEyNTYgdG8gc3RheSB3aXRoaW4gQXBwU3luYyBsaW1pdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNoRnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goXCJzaGEyNTZcIilcbiAgICAudXBkYXRlKGZ1bmN0aW9uTmFtZSlcbiAgICAuZGlnZXN0KFwiaGV4XCIpXG4gICAgLnN1YnN0cmluZygwLCAxNilcbn1cblxuLyoqXG4gKiBDaGFubmVsIG5hbWUgYnVpbGRlcnMgZm9yIEFwcFN5bmMgRXZlbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZENoYW5uZWxOYW1lID0ge1xuICAvKipcbiAgICogQ2hhbm5lbCBmb3Igc2VuZGluZyBpbnZvY2F0aW9ucyB0byB0aGUgZGFlbW9uXG4gICAqIEJyaWRnZSAtPiBEYWVtb25cbiAgICovXG4gIGludm9jYXRpb246IChmdW5jdGlvbk5hbWU6IHN0cmluZykgPT5cbiAgICBgL2xpdmUvJHtoYXNoRnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSl9L2luYCxcblxuICAvKipcbiAgICogQ2hhbm5lbCBmb3IgcmVjZWl2aW5nIHJlc3BvbnNlcyBmcm9tIHRoZSBkYWVtb25cbiAgICogRGFlbW9uIC0+IEJyaWRnZVxuICAgKi9cbiAgcmVzcG9uc2U6IChmdW5jdGlvbk5hbWU6IHN0cmluZykgPT5cbiAgICBgL2xpdmUvJHtoYXNoRnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSl9L291dGAsXG59IGFzIGNvbnN0XG4iXX0=
package/package.json ADDED
@@ -0,0 +1,111 @@
1
+ {
2
+ "name": "cdk-local-lambda",
3
+ "description": "Run lambdas in CDK stack locally to speed up debugging and improve your DX",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/processfocus/cdk-local-lambda.git"
7
+ },
8
+ "bin": {
9
+ "cdk-local-lambda": "lib/cli/index.js"
10
+ },
11
+ "scripts": {
12
+ "build": "npx projen build",
13
+ "bump": "npx projen bump",
14
+ "clobber": "npx projen clobber",
15
+ "compile": "npx projen compile",
16
+ "default": "npx projen default",
17
+ "eject": "npx projen eject",
18
+ "format": "npx projen format",
19
+ "lint": "npx projen lint",
20
+ "lint:fix": "npx projen lint:fix",
21
+ "package": "npx projen package",
22
+ "post-compile": "npx projen post-compile",
23
+ "post-upgrade": "npx projen post-upgrade",
24
+ "pre-compile": "npx projen pre-compile",
25
+ "release:trunk": "npx projen release:trunk",
26
+ "test": "npx projen test",
27
+ "test:integration": "npx projen test:integration",
28
+ "test:watch": "npx projen test:watch",
29
+ "unbump": "npx projen unbump",
30
+ "upgrade": "npx projen upgrade",
31
+ "watch": "npx projen watch",
32
+ "projen": "npx projen",
33
+ "prepare": "husky"
34
+ },
35
+ "author": {
36
+ "name": "Berend de Boer",
37
+ "organization": false
38
+ },
39
+ "devDependencies": {
40
+ "@biomejs/biome": "^2.3.13",
41
+ "@effect/language-service": "^0.72.0",
42
+ "@types/aws-lambda": "^8.10.160",
43
+ "@types/bun": "^1.3.8",
44
+ "@types/node": "24",
45
+ "@types/ws": "^8.18.1",
46
+ "aws-cdk": "^2.1104.0",
47
+ "commit-and-tag-version": "^12",
48
+ "constructs": "^10.0.0",
49
+ "husky": "^9.1.7",
50
+ "projen": "^0.99.9",
51
+ "ts-node": "^10.9.2",
52
+ "tsx": "^4.21.0",
53
+ "typescript": "^5.9.3"
54
+ },
55
+ "dependencies": {
56
+ "@aws-crypto/sha256-js": "^5.2.0",
57
+ "@aws-sdk/client-lambda": "^3.978.0",
58
+ "@aws-sdk/client-s3": "^3.978.0",
59
+ "@aws-sdk/client-ssm": "^3.978.0",
60
+ "@aws-sdk/credential-provider-node": "^3.972.3",
61
+ "@aws-sdk/protocol-http": "^3.374.0",
62
+ "@aws-sdk/signature-v4": "^3.374.0",
63
+ "@effect/cli": "^0.73.1",
64
+ "@effect/platform": "^0.94.2",
65
+ "@effect/platform-bun": "^0.87.1",
66
+ "aws-cdk-lib": "^2.236.0",
67
+ "chokidar": "^5.0.0",
68
+ "effect": "^3.19.15",
69
+ "ws": "^8.19.0"
70
+ },
71
+ "keywords": [
72
+ "appsync",
73
+ "aws",
74
+ "aws-cdk",
75
+ "cdk",
76
+ "docker",
77
+ "lambda",
78
+ "local-development",
79
+ "serverless",
80
+ "typescript"
81
+ ],
82
+ "main": "lib/index.js",
83
+ "license": "Apache-2.0",
84
+ "homepage": "https://github.com/processfocus/cdk-local-lambda#readme",
85
+ "publishConfig": {
86
+ "access": "public"
87
+ },
88
+ "version": "0.0.2",
89
+ "bugs": {
90
+ "url": "https://github.com/processfocus/cdk-local-lambda/issues"
91
+ },
92
+ "types": "lib/index.d.ts",
93
+ "type": "module",
94
+ "files": [
95
+ "lib",
96
+ "LICENSE",
97
+ "README.md"
98
+ ],
99
+ "exports": {
100
+ ".": {
101
+ "types": "./lib/index.d.ts",
102
+ "import": "./lib/index.js"
103
+ },
104
+ "./bootstrap": {
105
+ "types": "./lib/aspect/live-lambda-bootstrap.d.ts",
106
+ "import": "./lib/aspect/live-lambda-bootstrap.js"
107
+ },
108
+ "./package.json": "./package.json"
109
+ },
110
+ "//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\"."
111
+ }