@venturekit/infra 0.0.0-dev.20260522121047 → 0.0.0-dev.20260602192622

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.
@@ -71,6 +71,7 @@ import * as apigatewayv2 from 'aws-cdk-lib/aws-apigatewayv2';
71
71
  import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
72
72
  import { Construct } from 'constructs';
73
73
  import { type EnvConfig, type VentureIntent } from '@venturekit/core';
74
+ import { type WebSocketAttachment } from './shared/websocket-construct.js';
74
75
  /**
75
76
  * Imported cross-stack refs the CLI generator passes in. Every field
76
77
  * is optional because not every project declares every tier — a free-
@@ -231,6 +232,16 @@ export interface VentureAppStackProps extends cdk.StackProps {
231
232
  * before the intent declaration.
232
233
  */
233
234
  functionsDir?: string;
235
+ /**
236
+ * WebSocket handlers directory. Defaults to `src/ws`. Discovered files
237
+ * (`connect.ts` / `disconnect.ts` / `default.ts`) become the
238
+ * `$connect` / `$disconnect` / `$default` integrations on a managed
239
+ * API Gateway WebSocket API. Only consulted when
240
+ * `envConfig.websocket.enabled` is true; otherwise the directory is
241
+ * ignored even if it exists. See `shared/websocket-construct.ts` for
242
+ * the full wiring.
243
+ */
244
+ wsDir?: string;
234
245
  /**
235
246
  * @internal Test-only flag: when true, every Lambda uses an inline
236
247
  * stub instead of Docker bundling. Cuts test runtimes from minutes
@@ -291,12 +302,32 @@ export declare class VentureAppStack extends cdk.Stack {
291
302
  readonly notifyDispatcherLambdas: Map<string, lambda.Function>;
292
303
  /** Notify bounce-handler Lambdas keyed by notify intent id. */
293
304
  readonly notifyBounceLambdas: Map<string, lambda.Function>;
305
+ /**
306
+ * WebSocket attachment when `envConfig.websocket.enabled` is true
307
+ * AND `src/ws/` contains at least one handler. Undefined otherwise.
308
+ * Exposed publicly so tests and observability tooling can inspect
309
+ * the connections table / WS API without re-discovering them.
310
+ */
311
+ readonly websocket?: WebSocketAttachment;
294
312
  private readonly isStrictRetain;
295
313
  private readonly projectName;
296
314
  private readonly stage;
297
315
  private readonly envConfig;
298
316
  private readonly skipBundling;
299
317
  private readonly projectDir;
318
+ /**
319
+ * Wall-clock synth time (ISO-8601, seconds precision), stamped once
320
+ * and shared by every route Lambda this stack creates. Surfaced as
321
+ * a `deployedAt` tag (function + LogGroup) and a `(deployed ...)`
322
+ * suffix on each route Lambda's description, so "when did this last
323
+ * ship?" reads straight off the console. Deliberately NEVER part of
324
+ * a physical name: a timestamped name forces CFN to REPLACE every
325
+ * function + LogGroup on every deploy (new ARNs, fleet-wide cold
326
+ * starts, a brand-new LogGroup per route per deploy that scatters
327
+ * history). Keeping it as metadata leaves names stable, logs in one
328
+ * place per route, and code deploys surgical.
329
+ */
330
+ private readonly deployedAt;
300
331
  constructor(scope: Construct, id: string, props: VentureAppStackProps);
301
332
  /**
302
333
  * Build the Lambda code asset for a handler file. Production path:
@@ -1 +1 @@
1
- {"version":3,"file":"app-stack.d.ts","sourceRoot":"","sources":["../../src/cdk/app-stack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-stack.d.ts","sourceRoot":"","sources":["../../src/cdk/app-stack.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,8 @@ import { readSsmString } from './shared/cross-stack-refs.js';
86
86
  import { networkKeys, edgeKeys } from './shared/ssm-keys.js';
87
87
  import { bundleHandlerCodeWithEsbuild, inlineStubLambdaCode, toLambdaArchitecture, toLambdaRuntime, toLogRetention, clampLambdaFunctionName, discoverFunctionFiles, } from './shared/lambda-helpers.js';
88
88
  import { discoverRouteFiles, } from './shared/route-discovery.js';
89
+ import { discoverWsRoutes } from './shared/ws-discovery.js';
90
+ import { attachWebSocketApi, } from './shared/websocket-construct.js';
89
91
  /**
90
92
  * Convert an intent id (e.g. `user-uploads`) to upper-snake-case
91
93
  * (`USER_UPLOADS`) suitable for use in env-var names. Without this,
@@ -169,12 +171,32 @@ export class VentureAppStack extends cdk.Stack {
169
171
  notifyDispatcherLambdas = new Map();
170
172
  /** Notify bounce-handler Lambdas keyed by notify intent id. */
171
173
  notifyBounceLambdas = new Map();
174
+ /**
175
+ * WebSocket attachment when `envConfig.websocket.enabled` is true
176
+ * AND `src/ws/` contains at least one handler. Undefined otherwise.
177
+ * Exposed publicly so tests and observability tooling can inspect
178
+ * the connections table / WS API without re-discovering them.
179
+ */
180
+ websocket;
172
181
  isStrictRetain;
173
182
  projectName;
174
183
  stage;
175
184
  envConfig;
176
185
  skipBundling;
177
186
  projectDir;
187
+ /**
188
+ * Wall-clock synth time (ISO-8601, seconds precision), stamped once
189
+ * and shared by every route Lambda this stack creates. Surfaced as
190
+ * a `deployedAt` tag (function + LogGroup) and a `(deployed ...)`
191
+ * suffix on each route Lambda's description, so "when did this last
192
+ * ship?" reads straight off the console. Deliberately NEVER part of
193
+ * a physical name: a timestamped name forces CFN to REPLACE every
194
+ * function + LogGroup on every deploy (new ARNs, fleet-wide cold
195
+ * starts, a brand-new LogGroup per route per deploy that scatters
196
+ * history). Keeping it as metadata leaves names stable, logs in one
197
+ * place per route, and code deploys surgical.
198
+ */
199
+ deployedAt;
178
200
  constructor(scope, id, props) {
179
201
  super(scope, id, props);
180
202
  const { projectName, stage, envConfig, infrastructure, imports } = props;
@@ -187,6 +209,9 @@ export class VentureAppStack extends cdk.Stack {
187
209
  this.envConfig = envConfig;
188
210
  this.skipBundling = props.skipBundling ?? false;
189
211
  this.projectDir = props.projectDir;
212
+ // Stamp once per synth so every route Lambda in this deploy reports
213
+ // the SAME deploy time. Seconds precision — millis are just noise.
214
+ this.deployedAt = new Date().toISOString().replace(/\.\d{3}Z$/, 'Z');
190
215
  // ─── Lambda count probe ────────────────────────────────────
191
216
  // Detect whether this deployment includes any Lambda-bearing
192
217
  // intent. If not, we still create the role + secret + base env
@@ -410,6 +435,40 @@ export class VentureAppStack extends cdk.Stack {
410
435
  // because the alternative (one role per Lambda) blows past
411
436
  // CFN's 500-resource limit on large projects.
412
437
  this.applyImportedGrants(imports);
438
+ // ─── WebSocket API (optional) ─────────────────────────────
439
+ // Wired BEFORE the baseEnvVars freeze so the env vars
440
+ // returned by attachWebSocketApi (`CONNECTIONS_TABLE`,
441
+ // `VENTURE_WS_*`) reach every HTTP-route / queue-consumer /
442
+ // cron Lambda created later. Gated on
443
+ // `envConfig.websocket.enabled` AND a non-empty `src/ws/`
444
+ // directory; either being absent skips wiring entirely so
445
+ // legacy projects pay zero cost.
446
+ if (envConfig.websocket.enabled && props.projectDir) {
447
+ const resolvedWsDir = path.resolve(props.projectDir, props.wsDir ?? 'src/ws');
448
+ const wsRoutes = discoverWsRoutes(resolvedWsDir);
449
+ if (wsRoutes.length > 0) {
450
+ this.websocket = attachWebSocketApi(this, {
451
+ projectName,
452
+ stage,
453
+ envConfig,
454
+ lambdaRole: this.lambdaRole,
455
+ lambdaSecurityGroup: this.lambdaSecurityGroup,
456
+ vpc: this.vpc,
457
+ baseEnvVars: this.baseEnvVars,
458
+ skipBundling: this.skipBundling,
459
+ bundleHandlerCode: (file) => this.bundleHandlerCode(file),
460
+ routes: wsRoutes,
461
+ isStrictRetain: this.isStrictRetain,
462
+ });
463
+ // Merge ws env vars into baseEnvVars so EVERY other Lambda
464
+ // (HTTP routes, queue consumers, crons) sees them — not just
465
+ // the ws Lambdas themselves. This is what enables a regular
466
+ // POST /messages handler to call `sendToUser(domain, stage, …)`.
467
+ for (const [key, value] of Object.entries(this.websocket.envVars)) {
468
+ this.baseEnvVars[key] = value;
469
+ }
470
+ }
471
+ }
413
472
  // Freeze base env-vars after all per-intent injection. Any
414
473
  // post-construct mutation by a third-party extender (or a
415
474
  // future sub-step that forgets to run before freeze) throws
@@ -463,45 +522,59 @@ export class VentureAppStack extends cdk.Stack {
463
522
  // alphabetically before existing ones — hash bucketing
464
523
  // survives any addition.
465
524
  //
466
- // `bucketCount` is the smallest power-of-two large enough to
467
- // hold every route at the per-stack target capacity, clamped
468
- // to `MAX_BUCKETS`. Power-of-two means doubling only happens
469
- // at sharp thresholds; between doublings, adding routes never
470
- // changes any other route's bucket. A doubling DOES reshuffle
471
- // (`hash % 2N` `hash % N` for half the slugs) — that's a
472
- // documented disruptive event, expected to be rare for any
473
- // single project's lifetime (16 buckets × 80 routes = 1280
474
- // routes of headroom before the first doubling beyond
475
- // default).
525
+ // That stability holds ONLY if the modulus is constant. A
526
+ // `hash % N` assignment relocates ~half of all slugs whenever
527
+ // `N` changes, so deriving the bucket count from the route
528
+ // count (the old `nextPow2(ceil(routes / 80))`) silently moved
529
+ // existing routes to a different NestedStack the moment the
530
+ // project crossed a threshold (160 routes -> 4 buckets, 320 ->
531
+ // 8, ...). With explicit physical names that move is fatal: the
532
+ // next deploy dies with `... already exists` because the slug's
533
+ // prior bucket still owns the name (groupi-prod, Jun 2026).
534
+ //
535
+ // We therefore pin a FIXED modulus (`ROUTE_BUCKETS`): a slug's
536
+ // bucket is the same at 100, 200 or 320 routes, so existing
537
+ // routes NEVER move -- growth only fills buckets with brand-new
538
+ // slugs that never had a prior home.
539
+ //
540
+ // Why 4: this is exactly `nextPow2(ceil(routes / 80))` for a
541
+ // project in the 161-320 route band -- i.e. the value the OLD
542
+ // count-derived scheme ALREADY resolved to at today's scale.
543
+ // Pinning the modulus to the count it currently produces is
544
+ // what makes adopting the fixed scheme a ZERO-RESHUFFLE change
545
+ // for a live stack: every slug's `fnv1a(slug) % 4` is
546
+ // unchanged, so no route moves NestedStacks -- and moving an
547
+ // explicitly named, RETAIN-LogGroup route between stacks is
548
+ // precisely what dies with `... already exists`. 4 buckets x
549
+ // ~100 routes/bucket (the ~500-resource per-stack ceiling) is
550
+ // ~400 routes of headroom. Past that a project does ONE
551
+ // deliberate, scheduled reshard to a larger modulus (an
552
+ // import-based cutover, never a surprise mid-deploy). Only
553
+ // non-empty buckets are materialised, and incremental deploys
554
+ // touch only the buckets whose contents changed.
476
555
  const ROUTES_PER_NESTED = 80;
477
- const MAX_BUCKETS = 64;
556
+ const ROUTE_BUCKETS = 4;
478
557
  if (discoveredRoutes.length <= ROUTES_PER_NESTED) {
479
558
  for (const route of discoveredRoutes) {
480
559
  this.createRouteFunction(route);
481
560
  }
482
561
  }
483
562
  else {
484
- const minBuckets = Math.ceil(discoveredRoutes.length / ROUTES_PER_NESTED);
485
- let bucketCount = 1;
486
- while (bucketCount < minBuckets)
487
- bucketCount *= 2;
488
- if (bucketCount > MAX_BUCKETS)
489
- bucketCount = MAX_BUCKETS;
490
- const buckets = Array.from({ length: bucketCount }, () => []);
563
+ const buckets = Array.from({ length: ROUTE_BUCKETS }, () => []);
491
564
  for (const route of discoveredRoutes) {
492
- const idx = fnv1a32(route.slug) % bucketCount;
565
+ const idx = fnv1a32(route.slug) % ROUTE_BUCKETS;
493
566
  buckets[idx].push(route);
494
567
  }
495
- for (let i = 0; i < bucketCount; i++) {
568
+ for (let i = 0; i < ROUTE_BUCKETS; i++) {
496
569
  const chunk = buckets[i];
497
570
  if (chunk.length === 0)
498
571
  continue;
499
572
  const nested = new cdk.NestedStack(this, `routes-${i}`, {
500
- description: `Route handlers bucket ${i}/${bucketCount} ` +
573
+ description: `Route handlers bucket ${i}/${ROUTE_BUCKETS} ` +
501
574
  `(${chunk.length} of ${discoveredRoutes.length}). ` +
502
- `Hash-stable assignment: bucket = fnv1a(slug) % ` +
503
- `${bucketCount}. Chunked to stay under CFN's ` +
504
- `500-resource per-stack limit.`,
575
+ `Count-independent assignment: bucket = fnv1a(slug) % ` +
576
+ `${ROUTE_BUCKETS} (never reshuffles as routes grow). ` +
577
+ `Chunked to stay under CFN's 500-resource per-stack limit.`,
505
578
  });
506
579
  for (const route of chunk) {
507
580
  this.createRouteFunction(route, nested);
@@ -601,6 +674,33 @@ export class VentureAppStack extends cdk.Stack {
601
674
  const lambdaConfig = this.envConfig.lambda;
602
675
  const functionName = clampLambdaFunctionName(`${this.projectName}-${this.stage}-route-${route.slug}`);
603
676
  const resourceId = `route-${route.slug}`;
677
+ // Explicit LogGroup, NOT the deprecated `logRetention` prop.
678
+ // `logRetention` provisions a stack-wide custom-resource Lambda
679
+ // (+ its own IAM role) that calls `PutRetentionPolicy` after
680
+ // every deploy — that helper Lambda counts toward the project's
681
+ // function quota AND is created lazily on first cold-start
682
+ // failure of any handler, which is exactly when you DON'T want
683
+ // a CFN custom-resource invocation. Pre-creating the LogGroup
684
+ // fixes the retention at synth time and lets us apply RETAIN
685
+ // under strict dataSafety the same way the rest of this stack
686
+ // does.
687
+ //
688
+ // The NAME is stable (`/aws/lambda/<functionName>`): one LogGroup
689
+ // per route, so an operator jumps to a route's logs by a
690
+ // predictable name and all of its history stays in one place. The
691
+ // deploy time rides along as a `deployedAt` tag (set below), never
692
+ // in the name — a timestamped name would mint a fresh LogGroup
693
+ // every deploy and scatter a route's history across dozens of
694
+ // them. Old log DATA is bounded by `logRetentionDays` (e.g. 180);
695
+ // with stable names there's exactly one group per route, so
696
+ // nothing piles up to sweep.
697
+ const logGroup = new logs.LogGroup(scope, `${resourceId}-logs`, {
698
+ logGroupName: `/aws/lambda/${functionName}`,
699
+ retention: toLogRetention(lambdaConfig.logRetentionDays),
700
+ removalPolicy: this.isStrictRetain
701
+ ? cdk.RemovalPolicy.RETAIN
702
+ : cdk.RemovalPolicy.DESTROY,
703
+ });
604
704
  const fn = new lambda.Function(scope, resourceId, {
605
705
  functionName,
606
706
  runtime: toLambdaRuntime(this.envConfig),
@@ -609,28 +709,15 @@ export class VentureAppStack extends cdk.Stack {
609
709
  code: this.bundleHandlerCode(route.handlerFile),
610
710
  memorySize: lambdaConfig.memoryMb,
611
711
  timeout: cdk.Duration.seconds(lambdaConfig.timeoutSec),
612
- description: `${route.method} ${route.apiPath}`,
712
+ // Deploy time is appended as metadata, NOT baked into the
713
+ // physical name — the name stays stable so a code change updates
714
+ // this function in place instead of replacing the whole fleet.
715
+ description: `${route.method} ${route.apiPath} (deployed ${this.deployedAt})`,
613
716
  environment: {
614
717
  ...this.baseEnvVars,
615
718
  ...lambdaConfig.environmentVariables,
616
719
  },
617
- // Explicit LogGroup, NOT the deprecated `logRetention` prop.
618
- // `logRetention` provisions a stack-wide custom-resource Lambda
619
- // (+ its own IAM role) that calls `PutRetentionPolicy` after
620
- // every deploy — that helper Lambda counts toward the project's
621
- // function quota AND is created lazily on first cold-start
622
- // failure of any handler, which is exactly when you DON'T want
623
- // a CFN custom-resource invocation. Pre-creating the LogGroup
624
- // fixes the retention at synth time and lets us apply RETAIN
625
- // under strict dataSafety the same way the rest of this stack
626
- // does.
627
- logGroup: new logs.LogGroup(scope, `${resourceId}-logs`, {
628
- logGroupName: `/aws/lambda/${functionName}`,
629
- retention: toLogRetention(lambdaConfig.logRetentionDays),
630
- removalPolicy: this.isStrictRetain
631
- ? cdk.RemovalPolicy.RETAIN
632
- : cdk.RemovalPolicy.DESTROY,
633
- }),
720
+ logGroup,
634
721
  tracing: lambdaConfig.tracingEnabled
635
722
  ? lambda.Tracing.ACTIVE
636
723
  : lambda.Tracing.DISABLED,
@@ -648,6 +735,12 @@ export class VentureAppStack extends cdk.Stack {
648
735
  }
649
736
  : {}),
650
737
  });
738
+ // Deploy time as a tag on the function AND its LogGroup. Tags are
739
+ // mutable (in-place update, never a replace), so this annotates
740
+ // "when did this last ship?" on both the function list and the
741
+ // LogGroup list without the churn a name suffix would cause.
742
+ cdk.Tags.of(fn).add('deployedAt', this.deployedAt);
743
+ cdk.Tags.of(logGroup).add('deployedAt', this.deployedAt);
651
744
  this.routeLambdas.set(route.slug, fn);
652
745
  // Add the HttpRoute on the imported API. `HttpRouteKey.with`
653
746
  // builds the canonical `${METHOD} ${path}` string AWS uses
@@ -1 +1 @@
1
- {"version":3,"file":"app-stack.js","sourceRoot":"","sources":["../../src/cdk/app-stack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-stack.js","sourceRoot":"","sources":["../../src/cdk/app-stack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * WebSocket API construct — wires the three resources every realtime
3
+ * VentureKit app needs:
4
+ *
5
+ * 1. A DynamoDB `Connections` table (TTL-driven, two GSIs:
6
+ * `userId-index` and `tenantId-index`) backing
7
+ * `@venturekit/runtime/ws`'s `connectionStore`.
8
+ *
9
+ * 2. An API Gateway WebSocket API with `$connect`, `$disconnect`,
10
+ * and `$default` Lambda integrations bundled from the project's
11
+ * `src/ws/` directory via {@link DiscoveredWsRoute}s.
12
+ *
13
+ * 3. IAM grants on the caller's shared Lambda role:
14
+ * - DynamoDB CRUD on the connections table.
15
+ * - `execute-api:ManageConnections` on the WebSocket API so any
16
+ * HTTP-route Lambda can post to a connection via
17
+ * `connectionStore.postToConnection()`.
18
+ *
19
+ * # Why a separate construct (not inlined in app-stack)
20
+ *
21
+ * The app stack is already 1500+ lines; the websocket wiring is
22
+ * self-contained and stable (no per-intent merging, no cross-tier
23
+ * imports). Keeping it in its own module makes the surface auditable
24
+ * and lets the test suite assert the contract in isolation.
25
+ *
26
+ * # Lifecycle
27
+ *
28
+ * Every resource here is **app-tier** (DESTROY-on-delete). The
29
+ * connections table is intentionally ephemeral — rows carry a TTL
30
+ * (≤ 2h, set by the runtime) and the operator never queries this
31
+ * table for post-mortems. Retaining it across stack deletes would
32
+ * leak orphan rows + cost.
33
+ *
34
+ * # What this construct does NOT do
35
+ *
36
+ * - **No custom routes.** Only `$connect`, `$disconnect`, `$default`
37
+ * are wired. Custom action routes (`{ "action": "subscribe", … }`)
38
+ * are dispatched by the project's `$default` handler in user
39
+ * code — the runtime's two-phase auth model assumes this.
40
+ *
41
+ * - **No domain mapping.** API Gateway WebSocket custom domains exist
42
+ * but require a separate `WebSocketApiMapping` + ACM cert in
43
+ * `us-east-1`-or-region-local depending on the edge mode. Out of
44
+ * scope for v1 — the default `wss://<api-id>.execute-api.<region>.amazonaws.com/<stage>`
45
+ * endpoint is exposed via `VENTURE_WS_*` env vars on every Lambda.
46
+ */
47
+ import * as iam from 'aws-cdk-lib/aws-iam';
48
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
49
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
50
+ import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
51
+ import * as apigatewayv2 from 'aws-cdk-lib/aws-apigatewayv2';
52
+ import { Construct } from 'constructs';
53
+ import type { EnvConfig } from '@venturekit/core';
54
+ import { type DiscoveredWsRoute } from './ws-discovery.js';
55
+ /**
56
+ * Result returned by {@link attachWebSocketApi} so the caller can
57
+ * inject env vars into other Lambdas (HTTP routes, queue consumers)
58
+ * that need to post to ws connections.
59
+ */
60
+ export interface WebSocketAttachment {
61
+ /** The DynamoDB table backing the connection store. */
62
+ table: dynamodb.Table;
63
+ /** The API Gateway WebSocket API. */
64
+ api: apigatewayv2.WebSocketApi;
65
+ /** Stage exposed at `wss://<api>.execute-api.<region>.amazonaws.com/<stageName>`. */
66
+ stage: apigatewayv2.WebSocketStage;
67
+ /**
68
+ * Env vars to merge into every Lambda's environment block so the
69
+ * runtime's `connectionStore` can resolve the table name and so
70
+ * application code can post via `postToConnection()`. Keys:
71
+ *
72
+ * - `CONNECTIONS_TABLE` — table name (read by `connectionStore`).
73
+ * - `VENTURE_WS_API_ID` — API Gateway WS API id.
74
+ * - `VENTURE_WS_STAGE` — stage name (e.g. 'dev', 'prod').
75
+ * - `VENTURE_WS_DOMAIN` — management-API hostname,
76
+ * `<api-id>.execute-api.<region>.amazonaws.com`.
77
+ * - `VENTURE_WS_CALLBACK_URL` — `https://<domain>/<stage>` — full
78
+ * URL `ApiGatewayManagementApiClient` needs as `endpoint`.
79
+ */
80
+ envVars: Record<string, string>;
81
+ /** The three Lambda functions, keyed by `routeKey`. */
82
+ lambdasByRouteKey: Map<string, lambda.Function>;
83
+ }
84
+ /**
85
+ * Inputs to {@link attachWebSocketApi}. The caller owns the shared
86
+ * Lambda role + (optional) SG + the env-config; this construct only
87
+ * borrows them to build the ws Lambdas with the same identity / VPC
88
+ * attachment as the rest of the app-stack's Lambdas.
89
+ */
90
+ export interface AttachWebSocketApiProps {
91
+ /** Project name used in physical resource names. */
92
+ projectName: string;
93
+ /** Deploy stage (e.g. `dev`, `prod`) used in physical resource names. */
94
+ stage: string;
95
+ /**
96
+ * Resolved env config — supplies Lambda runtime / arch / memory /
97
+ * log retention. The caller has already validated
98
+ * `envConfig.websocket.enabled === true` before invoking this fn;
99
+ * we don't re-check here.
100
+ */
101
+ envConfig: EnvConfig;
102
+ /** Shared Lambda execution role. The ws Lambdas attach to this. */
103
+ lambdaRole: iam.Role;
104
+ /** Shared Lambda SG when a VPC is imported; otherwise undefined. */
105
+ lambdaSecurityGroup?: ec2.ISecurityGroup;
106
+ /** Imported VPC; ws Lambdas attach to the same private subnets. */
107
+ vpc?: ec2.IVpc;
108
+ /**
109
+ * Frozen base env vars from the parent app-stack — merged into each
110
+ * ws Lambda's environment block. Frozen by the time this runs, so
111
+ * the caller must have decided env-var injection order before
112
+ * calling.
113
+ */
114
+ baseEnvVars: Record<string, string>;
115
+ /**
116
+ * Whether to wrap Lambda code in an inline stub instead of esbuild
117
+ * bundling. Test-only flag forwarded from app-stack.
118
+ */
119
+ skipBundling: boolean;
120
+ /**
121
+ * Bundler used to turn each ws handler file into a `lambda.Code`.
122
+ * Defaults to esbuild on the production path; tests inject the
123
+ * inline-stub bundler. Passed in (vs imported) so the caller's
124
+ * project-dir resolution stays in one place.
125
+ */
126
+ bundleHandlerCode: (handlerFile: string) => lambda.Code;
127
+ /**
128
+ * Discovered ws handlers from `discoverWsRoutes(wsDir)`. Must
129
+ * include at least one of `$connect` / `$disconnect` / `$default`
130
+ * — passing an empty list throws because a websocket API with zero
131
+ * routes can't accept any traffic.
132
+ */
133
+ routes: DiscoveredWsRoute[];
134
+ /**
135
+ * Whether the env config's `dataSafety` is `'strict'`. Controls
136
+ * LogGroup removal policy for the ws Lambdas. The connections
137
+ * table itself is always DESTROY (see file header).
138
+ */
139
+ isStrictRetain: boolean;
140
+ }
141
+ /**
142
+ * Attach a WebSocket API + connections table + 3 ws Lambdas to the
143
+ * caller's stack. Returns the env vars the caller should merge into
144
+ * every Lambda's environment.
145
+ *
146
+ * **Call site invariant.** Must be invoked BEFORE the caller freezes
147
+ * its `baseEnvVars`, otherwise the env vars this returns won't reach
148
+ * the HTTP-route Lambdas created later.
149
+ */
150
+ export declare function attachWebSocketApi(scope: Construct, props: AttachWebSocketApiProps): WebSocketAttachment;
151
+ //# sourceMappingURL=websocket-construct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-construct.d.ts","sourceRoot":"","sources":["../../../src/cdk/shared/websocket-construct.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AAEjD,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,YAAY,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAOlD,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE7E;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;IAEtB,qCAAqC;IACrC,GAAG,EAAE,YAAY,CAAC,YAAY,CAAC;IAE/B,qFAAqF;IACrF,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC;IAEnC;;;;;;;;;;;;OAYG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC,uDAAuD;IACvD,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;CACjD;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IAEpB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;OAKG;IACH,SAAS,EAAE,SAAS,CAAC;IAErB,mEAAmE;IACnE,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC;IAErB,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;IAEzC,mEAAmE;IACnE,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;IAEf;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEpC;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,iBAAiB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC;IAExD;;;;;OAKG;IACH,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAE5B;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,uBAAuB,GAC7B,mBAAmB,CAuMrB"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * WebSocket API construct — wires the three resources every realtime
3
+ * VentureKit app needs:
4
+ *
5
+ * 1. A DynamoDB `Connections` table (TTL-driven, two GSIs:
6
+ * `userId-index` and `tenantId-index`) backing
7
+ * `@venturekit/runtime/ws`'s `connectionStore`.
8
+ *
9
+ * 2. An API Gateway WebSocket API with `$connect`, `$disconnect`,
10
+ * and `$default` Lambda integrations bundled from the project's
11
+ * `src/ws/` directory via {@link DiscoveredWsRoute}s.
12
+ *
13
+ * 3. IAM grants on the caller's shared Lambda role:
14
+ * - DynamoDB CRUD on the connections table.
15
+ * - `execute-api:ManageConnections` on the WebSocket API so any
16
+ * HTTP-route Lambda can post to a connection via
17
+ * `connectionStore.postToConnection()`.
18
+ *
19
+ * # Why a separate construct (not inlined in app-stack)
20
+ *
21
+ * The app stack is already 1500+ lines; the websocket wiring is
22
+ * self-contained and stable (no per-intent merging, no cross-tier
23
+ * imports). Keeping it in its own module makes the surface auditable
24
+ * and lets the test suite assert the contract in isolation.
25
+ *
26
+ * # Lifecycle
27
+ *
28
+ * Every resource here is **app-tier** (DESTROY-on-delete). The
29
+ * connections table is intentionally ephemeral — rows carry a TTL
30
+ * (≤ 2h, set by the runtime) and the operator never queries this
31
+ * table for post-mortems. Retaining it across stack deletes would
32
+ * leak orphan rows + cost.
33
+ *
34
+ * # What this construct does NOT do
35
+ *
36
+ * - **No custom routes.** Only `$connect`, `$disconnect`, `$default`
37
+ * are wired. Custom action routes (`{ "action": "subscribe", … }`)
38
+ * are dispatched by the project's `$default` handler in user
39
+ * code — the runtime's two-phase auth model assumes this.
40
+ *
41
+ * - **No domain mapping.** API Gateway WebSocket custom domains exist
42
+ * but require a separate `WebSocketApiMapping` + ACM cert in
43
+ * `us-east-1`-or-region-local depending on the edge mode. Out of
44
+ * scope for v1 — the default `wss://<api-id>.execute-api.<region>.amazonaws.com/<stage>`
45
+ * endpoint is exposed via `VENTURE_WS_*` env vars on every Lambda.
46
+ */
47
+ import * as cdk from 'aws-cdk-lib';
48
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
49
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
50
+ import * as logs from 'aws-cdk-lib/aws-logs';
51
+ import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
52
+ import * as apigatewayv2 from 'aws-cdk-lib/aws-apigatewayv2';
53
+ import * as apigatewayv2Integrations from 'aws-cdk-lib/aws-apigatewayv2-integrations';
54
+ import { toLambdaArchitecture, toLambdaRuntime, toLogRetention, clampLambdaFunctionName, } from './lambda-helpers.js';
55
+ /**
56
+ * Attach a WebSocket API + connections table + 3 ws Lambdas to the
57
+ * caller's stack. Returns the env vars the caller should merge into
58
+ * every Lambda's environment.
59
+ *
60
+ * **Call site invariant.** Must be invoked BEFORE the caller freezes
61
+ * its `baseEnvVars`, otherwise the env vars this returns won't reach
62
+ * the HTTP-route Lambdas created later.
63
+ */
64
+ export function attachWebSocketApi(scope, props) {
65
+ const { projectName, stage, envConfig, lambdaRole, lambdaSecurityGroup, vpc, baseEnvVars, bundleHandlerCode, routes, isStrictRetain, } = props;
66
+ if (routes.length === 0) {
67
+ throw new Error(`[venturekit] websocket: envConfig.websocket.enabled is true but no ` +
68
+ `handlers were discovered under src/ws/. Create at least one of ` +
69
+ `src/ws/connect.ts, src/ws/disconnect.ts, src/ws/default.ts.`);
70
+ }
71
+ // ─── Connections DynamoDB table ────────────────────────────────
72
+ // Partition key: connectionId — every read path keys off this.
73
+ // GSI userId-index: drives `connectionStore.getByUser` / `sendToUser`.
74
+ // GSI tenantId-index: drives `connectionStore.sendToTenant` for
75
+ // multi-tenant broadcast. Projection: ALL so the consumer doesn't
76
+ // need a follow-up GetItem to read `connectionId` for the post call.
77
+ //
78
+ // Billing: PAY_PER_REQUEST. Connection load is bursty (every page
79
+ // navigation opens a fresh connection on reload) and the per-month
80
+ // baseline is far below provisioned capacity's break-even. Operators
81
+ // who outgrow this can flip to provisioned in their own follow-up.
82
+ //
83
+ // TTL attribute: `ttl` — matches the runtime's `connectionStore.save()`
84
+ // which sets `ttl = floor(now/1000) + 30s` for unauthenticated
85
+ // connections and 2h for authenticated ones. Without the TTL
86
+ // attribute set, dead rows would accumulate forever.
87
+ const table = new dynamodb.Table(scope, 'WsConnectionsTable', {
88
+ tableName: `${projectName}-${stage}-ws-connections`,
89
+ partitionKey: {
90
+ name: 'connectionId',
91
+ type: dynamodb.AttributeType.STRING,
92
+ },
93
+ billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
94
+ timeToLiveAttribute: 'ttl',
95
+ // Connections table is INTENTIONALLY ephemeral — see file header.
96
+ // Even under strict dataSafety we destroy on stack delete because
97
+ // the rows are TTL-driven (≤ 2h lifetime) and never queried for
98
+ // audit purposes. Retaining would leak orphan rows + cost.
99
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
100
+ // Point-in-time recovery would be wasted: every row dies within
101
+ // hours anyway. Saves the 25% PITR markup.
102
+ pointInTimeRecovery: false,
103
+ });
104
+ table.addGlobalSecondaryIndex({
105
+ indexName: 'userId-index',
106
+ partitionKey: { name: 'userId', type: dynamodb.AttributeType.STRING },
107
+ // ALL projection: `connectionStore.sendToUser` reads the whole
108
+ // record (connectionId + authenticated flag) without a follow-up
109
+ // GetItem. KEYS_ONLY would force a second round-trip per
110
+ // connection on every send — 2× the DDB cost.
111
+ projectionType: dynamodb.ProjectionType.ALL,
112
+ });
113
+ table.addGlobalSecondaryIndex({
114
+ indexName: 'tenantId-index',
115
+ partitionKey: { name: 'tenantId', type: dynamodb.AttributeType.STRING },
116
+ projectionType: dynamodb.ProjectionType.ALL,
117
+ });
118
+ // Grant the shared Lambda role full CRUD on the connections table.
119
+ // Every ws handler (connect/disconnect/default) AND every HTTP
120
+ // handler that calls `connectionStore.sendToUser(...)` needs this.
121
+ // No way to scope tighter without per-Lambda roles — same trade-off
122
+ // documented in app-stack.ts's `applyImportedGrants`.
123
+ table.grantReadWriteData(lambdaRole);
124
+ // ─── WebSocket API + stage ─────────────────────────────────────
125
+ // routeSelectionExpression is fixed at `$request.body.action` —
126
+ // matches the runtime's two-phase auth contract where the client
127
+ // sends `{ action: "auth", token: "<jwt>" }` over the encrypted
128
+ // channel. Custom action dispatch (e.g. `{ action: "subscribe" }`)
129
+ // is handled by the project's `$default` Lambda in user code.
130
+ const api = new apigatewayv2.WebSocketApi(scope, 'WsApi', {
131
+ apiName: `${projectName}-${stage}-ws`,
132
+ description: `${projectName} ${stage} realtime WebSocket API`,
133
+ routeSelectionExpression: envConfig.websocket.routeSelectionExpression,
134
+ });
135
+ const wsStage = new apigatewayv2.WebSocketStage(scope, 'WsStage', {
136
+ webSocketApi: api,
137
+ stageName: stage,
138
+ autoDeploy: true,
139
+ // No throttle override here — API Gateway's account-level limits
140
+ // are picked up by default, and per-stage throttling lives in
141
+ // `envConfig.websocket.throttleRateLimit/throttleBurstLimit` which
142
+ // a future enhancement can wire via CFN escape hatch (the L2
143
+ // construct doesn't expose `defaultRouteSettings` yet).
144
+ });
145
+ // Grant ManageConnections so any Lambda on the shared role can
146
+ // post to a connection via the API Gateway Management API. This is
147
+ // what `connectionStore.postToConnection()` needs at runtime.
148
+ api.grantManageConnections(lambdaRole);
149
+ // ─── Per-route Lambdas + WebSocketRoute integrations ──────────
150
+ const lambdasByRouteKey = new Map();
151
+ const lambdaConfig = envConfig.lambda;
152
+ for (const route of routes) {
153
+ const resourceId = route.slug;
154
+ const functionName = clampLambdaFunctionName(`${projectName}-${stage}-${route.slug}`);
155
+ const fn = new lambda.Function(scope, resourceId, {
156
+ functionName,
157
+ runtime: toLambdaRuntime(envConfig),
158
+ architecture: toLambdaArchitecture(envConfig),
159
+ handler: 'index.main',
160
+ code: bundleHandlerCode(route.handlerFile),
161
+ memorySize: lambdaConfig.memoryMb,
162
+ timeout: cdk.Duration.seconds(lambdaConfig.timeoutSec),
163
+ description: `WebSocket ${route.routeKey} handler`,
164
+ environment: {
165
+ ...baseEnvVars,
166
+ ...lambdaConfig.environmentVariables,
167
+ // baseEnvVars at this call site MAY not yet contain
168
+ // CONNECTIONS_TABLE etc. — those keys are merged in by the
169
+ // caller AFTER attachWebSocketApi returns. Explicitly set
170
+ // them on the ws Lambdas so they boot even if the caller
171
+ // doesn't merge (they always need it).
172
+ CONNECTIONS_TABLE: table.tableName,
173
+ VENTURE_WS_API_ID: api.apiId,
174
+ VENTURE_WS_STAGE: wsStage.stageName,
175
+ },
176
+ logGroup: new logs.LogGroup(scope, `${resourceId}-logs`, {
177
+ logGroupName: `/aws/lambda/${functionName}`,
178
+ retention: toLogRetention(lambdaConfig.logRetentionDays),
179
+ removalPolicy: isStrictRetain
180
+ ? cdk.RemovalPolicy.RETAIN
181
+ : cdk.RemovalPolicy.DESTROY,
182
+ }),
183
+ tracing: lambdaConfig.tracingEnabled
184
+ ? lambda.Tracing.ACTIVE
185
+ : lambda.Tracing.DISABLED,
186
+ reservedConcurrentExecutions: lambdaConfig.reservedConcurrency,
187
+ role: lambdaRole,
188
+ ...(vpc && lambdaSecurityGroup
189
+ ? {
190
+ vpc,
191
+ vpcSubnets: { subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS },
192
+ securityGroups: [lambdaSecurityGroup],
193
+ }
194
+ : {}),
195
+ });
196
+ lambdasByRouteKey.set(route.routeKey, fn);
197
+ // `WebSocketLambdaIntegration` automatically adds the
198
+ // `lambda:InvokeFunction` resource policy granting the WS API
199
+ // permission to invoke this Lambda — same model as the HTTP API
200
+ // Gateway integration on routes.
201
+ const integration = new apigatewayv2Integrations.WebSocketLambdaIntegration(`${resourceId}-integration`, fn);
202
+ // Map reserved route keys to the L2 construct's slot names.
203
+ // Each `addRoute(routeKey, options)` returns a `WebSocketRoute`
204
+ // — we don't keep the reference; CDK tracks it via the parent
205
+ // WebSocketApi.
206
+ api.addRoute(route.routeKey, { integration });
207
+ }
208
+ // ─── Env vars to forward to every other Lambda ────────────────
209
+ // The runtime's `connectionStore.postToConnection(domain, stage, ...)`
210
+ // takes `domain` + `stage` separately, so we expose both. The
211
+ // CALLBACK_URL convenience var matches the format expected by
212
+ // `ApiGatewayManagementApiClient`'s `endpoint` config.
213
+ const region = cdk.Stack.of(scope).region;
214
+ const domain = `${api.apiId}.execute-api.${region}.amazonaws.com`;
215
+ const envVars = {
216
+ CONNECTIONS_TABLE: table.tableName,
217
+ VENTURE_WS_API_ID: api.apiId,
218
+ VENTURE_WS_STAGE: wsStage.stageName,
219
+ VENTURE_WS_DOMAIN: domain,
220
+ VENTURE_WS_CALLBACK_URL: `https://${domain}/${wsStage.stageName}`,
221
+ };
222
+ return {
223
+ table,
224
+ api,
225
+ stage: wsStage,
226
+ envVars,
227
+ lambdasByRouteKey,
228
+ };
229
+ }
230
+ //# sourceMappingURL=websocket-construct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-construct.js","sourceRoot":"","sources":["../../../src/cdk/shared/websocket-construct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * WebSocket handler discovery — walks `src/ws/` and produces one
3
+ * `DiscoveredWsRoute` per API Gateway WebSocket route. The convention
4
+ * mirrors `route-discovery.ts` for HTTP routes:
5
+ *
6
+ * src/ws/connect.ts → $connect
7
+ * src/ws/disconnect.ts → $disconnect
8
+ * src/ws/default.ts → $default
9
+ *
10
+ * No custom routes (e.g. `src/ws/subscribe.ts` → `subscribe` action) in
11
+ * this version: the runtime's two-phase auth flow funnels every client
12
+ * message through `$default` which dispatches by `body.action` itself.
13
+ * Adding custom-route discovery is a strict superset of the current
14
+ * convention and can land later without breaking existing projects.
15
+ *
16
+ * Shared between the app-tier stack (which materialises each route as
17
+ * a Lambda + WebSocketRoute) and any other consumer that needs to
18
+ * enumerate ws handlers without spinning up the full CDK app (CLI dev
19
+ * server, tests, external tooling).
20
+ */
21
+ /**
22
+ * One discovered WebSocket route, ready to be wired to a Lambda +
23
+ * WebSocketRoute integration.
24
+ */
25
+ export interface DiscoveredWsRoute {
26
+ /**
27
+ * The route key as understood by API Gateway WebSocket APIs. One of
28
+ * the three reserved keys (`$connect`, `$disconnect`, `$default`).
29
+ * Reserved keys carry the `$` sigil verbatim — API Gateway rejects
30
+ * unprefixed names like `connect` for these slots.
31
+ */
32
+ routeKey: '$connect' | '$disconnect' | '$default';
33
+ /**
34
+ * Stable slug used for the Lambda's function name and CDK construct
35
+ * id. The `$` is stripped because CFN logical ids can't contain it,
36
+ * and `connect`/`disconnect`/`default` collide with no other route
37
+ * shape in the venture (HTTP routes always carry a method suffix
38
+ * like `health-get`).
39
+ *
40
+ * $connect → 'ws-connect'
41
+ * $disconnect → 'ws-disconnect'
42
+ * $default → 'ws-default'
43
+ */
44
+ slug: string;
45
+ /** Absolute path to the route handler file (.ts or .js). */
46
+ handlerFile: string;
47
+ }
48
+ /**
49
+ * Discover WebSocket handlers under `src/ws/`. Non-recursive on purpose:
50
+ * the three reserved keys are the only handlers the convention
51
+ * supports, and a subfolder would imply nested routing API Gateway WS
52
+ * doesn't have. Files whose basename doesn't match a reserved key
53
+ * (`helpers.ts`, `auth.ts`, `_middleware.ts`, …) are silently skipped
54
+ * and remain available as colocated implementation detail.
55
+ *
56
+ * Returns an empty array when `wsDir` doesn't exist — projects without
57
+ * realtime features have no `src/ws/` directory and the app stack just
58
+ * skips the websocket section.
59
+ */
60
+ export declare function discoverWsRoutes(wsDir: string): DiscoveredWsRoute[];
61
+ //# sourceMappingURL=ws-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-discovery.d.ts","sourceRoot":"","sources":["../../../src/cdk/shared/ws-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,QAAQ,EAAE,UAAU,GAAG,aAAa,GAAG,UAAU,CAAC;IAElD;;;;;;;;;;OAUG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;CACrB;AAgBD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,EAAE,CA0BnE"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * WebSocket handler discovery — walks `src/ws/` and produces one
3
+ * `DiscoveredWsRoute` per API Gateway WebSocket route. The convention
4
+ * mirrors `route-discovery.ts` for HTTP routes:
5
+ *
6
+ * src/ws/connect.ts → $connect
7
+ * src/ws/disconnect.ts → $disconnect
8
+ * src/ws/default.ts → $default
9
+ *
10
+ * No custom routes (e.g. `src/ws/subscribe.ts` → `subscribe` action) in
11
+ * this version: the runtime's two-phase auth flow funnels every client
12
+ * message through `$default` which dispatches by `body.action` itself.
13
+ * Adding custom-route discovery is a strict superset of the current
14
+ * convention and can land later without breaking existing projects.
15
+ *
16
+ * Shared between the app-tier stack (which materialises each route as
17
+ * a Lambda + WebSocketRoute) and any other consumer that needs to
18
+ * enumerate ws handlers without spinning up the full CDK app (CLI dev
19
+ * server, tests, external tooling).
20
+ */
21
+ import * as fs from 'fs';
22
+ import * as path from 'path';
23
+ /**
24
+ * Filename → WebSocket route key mapping. Symmetric with
25
+ * `ROUTE_FILENAME_TO_METHOD` in `route-discovery.ts` — the local dev
26
+ * server and the deploy synth pick up the same files.
27
+ */
28
+ const WS_FILENAME_TO_ROUTE_KEY = {
29
+ connect: '$connect',
30
+ disconnect: '$disconnect',
31
+ default: '$default',
32
+ };
33
+ /**
34
+ * Discover WebSocket handlers under `src/ws/`. Non-recursive on purpose:
35
+ * the three reserved keys are the only handlers the convention
36
+ * supports, and a subfolder would imply nested routing API Gateway WS
37
+ * doesn't have. Files whose basename doesn't match a reserved key
38
+ * (`helpers.ts`, `auth.ts`, `_middleware.ts`, …) are silently skipped
39
+ * and remain available as colocated implementation detail.
40
+ *
41
+ * Returns an empty array when `wsDir` doesn't exist — projects without
42
+ * realtime features have no `src/ws/` directory and the app stack just
43
+ * skips the websocket section.
44
+ */
45
+ export function discoverWsRoutes(wsDir) {
46
+ if (!fs.existsSync(wsDir))
47
+ return [];
48
+ const routes = [];
49
+ for (const entry of fs.readdirSync(wsDir, { withFileTypes: true })) {
50
+ if (!entry.isFile())
51
+ continue;
52
+ if (!/\.(ts|js)$/.test(entry.name))
53
+ continue;
54
+ if (entry.name.endsWith('.d.ts'))
55
+ continue;
56
+ const baseName = entry.name.replace(/\.(ts|js)$/, '');
57
+ if (baseName.endsWith('.test') || baseName.endsWith('.spec'))
58
+ continue;
59
+ const routeKey = WS_FILENAME_TO_ROUTE_KEY[baseName.toLowerCase()];
60
+ if (!routeKey)
61
+ continue;
62
+ routes.push({
63
+ routeKey,
64
+ slug: `ws-${baseName.toLowerCase()}`,
65
+ handlerFile: path.join(wsDir, entry.name),
66
+ });
67
+ }
68
+ // Sort by slug for deterministic synth order — matches the HTTP
69
+ // route convention so CDK construct ids land in the same order on
70
+ // every machine regardless of `readdirSync` ordering.
71
+ routes.sort((a, b) => (a.slug < b.slug ? -1 : a.slug > b.slug ? 1 : 0));
72
+ return routes;
73
+ }
74
+ //# sourceMappingURL=ws-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-discovery.js","sourceRoot":"","sources":["../../../src/cdk/shared/ws-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAgC7B;;;;GAIG;AACH,MAAM,wBAAwB,GAG1B;IACF,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,aAAa;IACzB,OAAO,EAAE,UAAU;CACpB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAS;QAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QAC7C,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QAEvE,MAAM,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ;YACR,IAAI,EAAE,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE;YACpC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,gEAAgE;IAChE,kEAAkE;IAClE,sDAAsD;IACtD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/venture.d.ts CHANGED
@@ -40,6 +40,12 @@ export interface VentureDefinition {
40
40
  queuesDir?: string;
41
41
  /** Path to cron/scheduled task handlers directory (relative to project root) - default: 'src/crons' */
42
42
  cronsDir?: string;
43
+ /**
44
+ * Path to WebSocket handler files (relative to project root) — default: 'src/ws'.
45
+ * Only consulted when at least one env's `websocket.enabled` is true. See
46
+ * `@venturekit/infra`'s `shared/websocket-construct.ts` for the wiring.
47
+ */
48
+ wsDir?: string;
43
49
  /** Databases — shared definitions (name, type) */
44
50
  databases?: DatabaseIntent[];
45
51
  /** Storage buckets — shared definitions (purpose, id) */
@@ -87,6 +93,7 @@ export declare function defineVenture(definition: VentureDefinition): {
87
93
  _functionsDir: string;
88
94
  _queuesDir: string;
89
95
  _cronsDir: string;
96
+ _wsDir: string;
90
97
  _resolveInfrastructure: (stage: string) => VentureIntent | undefined;
91
98
  _definition: VentureDefinition;
92
99
  app(input: {
@@ -1 +1 @@
1
- {"version":3,"file":"venture.d.ts","sourceRoot":"","sources":["../src/venture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EAEd,cAAc,EAKf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,IAAI,EAAE,UAAU,CAAC;IAEjB,+CAA+C;IAC/C,QAAQ,EAAE,cAAc,CAAC;IAEzB;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG;QACrC,GAAG,CAAC,EAAE,cAAc,CAAC;QACrB,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,IAAI,CAAC,EAAE,cAAc,CAAC;KACvB,CAAC;IAEF,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mGAAmG;IACnG,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uGAAuG;IACvG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAKlB,kDAAkD;IAClD,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAE7B,yDAAyD;IACzD,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B,gDAAgD;IAChD,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IAEpB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IAEvB,kCAAkC;IAClC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IAEvB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAE7B,uDAAuD;IACvD,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAE7B,sCAAsC;IACtC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEhC,mCAAmC;IACnC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B,qDAAqD;IACrD,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAEzB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAEzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE;QACT,GAAG,EAAE;YACH,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;CACH;AAmDD,wBAAgB,aAAa,CAAC,UAAU,EAAE,iBAAiB;;;;;oCAY5B,MAAM,KAAG,aAAa,GAAG,SAAS;;eAqClD;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;;;;;;;;;EAY/B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,GACvB,cAAc,CAMhB"}
1
+ {"version":3,"file":"venture.d.ts","sourceRoot":"","sources":["../src/venture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EAEd,cAAc,EAKf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,IAAI,EAAE,UAAU,CAAC;IAEjB,+CAA+C;IAC/C,QAAQ,EAAE,cAAc,CAAC;IAEzB;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG;QACrC,GAAG,CAAC,EAAE,cAAc,CAAC;QACrB,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,IAAI,CAAC,EAAE,cAAc,CAAC;KACvB,CAAC;IAEF,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mGAAmG;IACnG,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uGAAuG;IACvG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAKf,kDAAkD;IAClD,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAE7B,yDAAyD;IACzD,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B,gDAAgD;IAChD,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IAEpB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IAEvB,kCAAkC;IAClC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IAEvB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAE7B,uDAAuD;IACvD,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAE7B,sCAAsC;IACtC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEhC,mCAAmC;IACnC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B,qDAAqD;IACrD,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAEzB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAEzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE;QACT,GAAG,EAAE;YACH,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;CACH;AAmDD,wBAAgB,aAAa,CAAC,UAAU,EAAE,iBAAiB;;;;;;oCAY5B,MAAM,KAAG,aAAa,GAAG,SAAS;;eAsClD;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;;;;;;;;;EAY/B;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,GACvB,cAAc,CAMhB"}
package/dist/venture.js CHANGED
@@ -103,6 +103,7 @@ export function defineVenture(definition) {
103
103
  _functionsDir: definition.functionsDir || 'src/functions',
104
104
  _queuesDir: definition.queuesDir || 'src/queues',
105
105
  _cronsDir: definition.cronsDir || 'src/crons',
106
+ _wsDir: definition.wsDir || 'src/ws',
106
107
  _resolveInfrastructure: resolveInfra,
107
108
  _definition: definition,
108
109
  app(input) {
@@ -1 +1 @@
1
- {"version":3,"file":"venture.js","sourceRoot":"","sources":["../src/venture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"venture.js","sourceRoot":"","sources":["../src/venture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAML,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAsH1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;;;GAGG;AACH,SAAS,SAAS,CAChB,MAAuB,EACvB,SAAwD;IAExD,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,SAAgB,CAAC;IACrC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAA6B;IACzD,mBAAmB;IACnB,MAAM,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3D,WAAW,CAAC,cAAc,CAAC,CAAC;IAE5B,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEhC,0EAA0E;IAC1E,qEAAqE;IACrE,iEAAiE;IACjE,wEAAwE;IACxE,MAAM,YAAY,GAAG,CAAC,KAAa,EAA6B,EAAE;QAChE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,MAAM,MAAM,GAAG,CAAgC,GAAM,EAAE,GAAiC,EAAE,EAAE;YAC1F,IAAI,GAAG,IAAK,GAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC;QAC7E,CAAC,CAAC;QAEF,MAAM,CAAC,WAAW,EAAG,SAAS,CAAC,UAAU,CAAC,SAAS,EAAG,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,SAAS,EAAK,SAAS,CAAC,UAAU,CAAC,OAAO,EAAK,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,EAAQ,SAAS,CAAC,UAAU,CAAC,IAAI,EAAQ,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,QAAQ,EAAM,SAAS,CAAC,UAAU,CAAC,MAAM,EAAM,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,MAAM,CAAC,QAAQ,EAAM,SAAS,CAAC,UAAU,CAAC,MAAM,EAAM,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,MAAM,CAAC,WAAW,EAAG,SAAS,CAAC,UAAU,CAAC,SAAS,EAAG,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,WAAW,EAAG,SAAS,CAAC,UAAU,CAAC,SAAS,EAAI,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC9E,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,UAAU,EAAG,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QAC/E,MAAM,CAAC,SAAS,EAAK,SAAS,CAAC,UAAU,CAAC,OAAO,EAAM,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,SAAS,EAAK,SAAS,CAAC,UAAU,CAAC,OAAO,EAAM,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,QAAQ,EAAM,SAAS,CAAC,UAAU,CAAC,MAAM,EAAO,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAE3E,yDAAyD;QACzD,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAClF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC;QAAC,CAAC;QAE1E,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACrC,CAAC,CAAC;IAEF,OAAO;QACL,6DAA6D;QAC7D,UAAU,EAAE,UAAU,CAAC,SAAS,IAAI,YAAY;QAChD,aAAa,EAAE,UAAU,CAAC,YAAY,IAAI,eAAe;QACzD,UAAU,EAAE,UAAU,CAAC,SAAS,IAAI,YAAY;QAChD,SAAS,EAAE,UAAU,CAAC,QAAQ,IAAI,WAAW;QAC7C,MAAM,EAAE,UAAU,CAAC,KAAK,IAAI,QAAQ;QACpC,sBAAsB,EAAE,YAAY;QACpC,WAAW,EAAE,UAAU;QAEvB,GAAG,CAAC,KAAwB;YAC1B,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI;gBAC1B,IAAI,EAAE,KAAc;gBACpB,SAAS,EAAE;oBACT,GAAG,EAAE;wBACH,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM;qBAC/B;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAgB,EAChB,QAAwB,EACxB,QAAwB;IAExB,iEAAiE;IACjE,oEAAoE;IACpE,+CAA+C;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,KAAK,CAAC;IACjD,OAAO,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAoB,EAAE,QAAQ,CAAC,CAAC;AACvE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@venturekit/infra",
3
- "version": "0.0.0-dev.20260522121047",
3
+ "version": "0.0.0-dev.20260602192622",
4
4
  "description": "VentureKit infrastructure - AWS CDK constructs",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -37,7 +37,7 @@
37
37
  ],
38
38
  "license": "Apache-2.0",
39
39
  "dependencies": {
40
- "@venturekit/core": "0.0.0-dev.20260522121047",
40
+ "@venturekit/core": "0.0.0-dev.20260602192622",
41
41
  "aws-cdk-lib": "^2.251.0",
42
42
  "constructs": "^10.6.0",
43
43
  "esbuild": "^0.24.0"