@venturekit/core 0.0.0-dev.20260307234057

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.
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * API Gateway Environment Configuration
4
+ *
5
+ * Controls rate limiting and API behavior per environment.
6
+ * All fields are REQUIRED - no implicit defaults at the type level.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFQSSBHYXRld2F5IEVudmlyb25tZW50IENvbmZpZ3VyYXRpb25cbiAqIFxuICogQ29udHJvbHMgcmF0ZSBsaW1pdGluZyBhbmQgQVBJIGJlaGF2aW9yIHBlciBlbnZpcm9ubWVudC5cbiAqIEFsbCBmaWVsZHMgYXJlIFJFUVVJUkVEIC0gbm8gaW1wbGljaXQgZGVmYXVsdHMgYXQgdGhlIHR5cGUgbGV2ZWwuXG4gKi9cblxuLyoqXG4gKiBDT1JTIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3JzQ29uZmlnIHtcbiAgLyoqIEFsbG93ZWQgb3JpZ2lucyAoZS5nLiwgWydodHRwczovL2FwcC5leGFtcGxlLmNvbSddKSAqL1xuICBhbGxvd09yaWdpbnM6IHN0cmluZ1tdO1xuICAvKiogQWxsb3dlZCBIVFRQIG1ldGhvZHMgKi9cbiAgYWxsb3dNZXRob2RzOiBzdHJpbmdbXTtcbiAgLyoqIEFsbG93ZWQgaGVhZGVycyAqL1xuICBhbGxvd0hlYWRlcnM6IHN0cmluZ1tdO1xuICAvKiogQWxsb3cgY3JlZGVudGlhbHMgKi9cbiAgYWxsb3dDcmVkZW50aWFsczogYm9vbGVhbjtcbiAgLyoqIE1heCBhZ2UgaW4gc2Vjb25kcyBmb3IgcHJlZmxpZ2h0IGNhY2hlICovXG4gIG1heEFnZVNlYzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEN1c3RvbSBkb21haW4gY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbURvbWFpbkNvbmZpZyB7XG4gIC8qKiBEb21haW4gbmFtZSAoZS5nLiwgJ2FwaS5leGFtcGxlLmNvbScpICovXG4gIGRvbWFpbk5hbWU6IHN0cmluZztcbiAgLyoqIEFDTSBjZXJ0aWZpY2F0ZSBBUk4gKi9cbiAgY2VydGlmaWNhdGVBcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBBUEkgR2F0ZXdheSBjb25maWd1cmF0aW9uXG4gKiBcbiAqIEFsbCBmaWVsZHMgcmVxdWlyZWQgLSB1c2UgcHJlc2V0cyBvciBleHBsaWNpdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpRW52Q29uZmlnIHtcbiAgLyoqIFN0ZWFkeS1zdGF0ZSByZXF1ZXN0IHJhdGUgbGltaXQgKHJlcXVlc3RzIHBlciBzZWNvbmQpICovXG4gIHRocm90dGxlUmF0ZUxpbWl0OiBudW1iZXI7XG4gIFxuICAvKiogQnVyc3QgY2FwYWNpdHkgKGNvbmN1cnJlbnQgcmVxdWVzdHMpICovXG4gIHRocm90dGxlQnVyc3RMaW1pdDogbnVtYmVyO1xuICBcbiAgLyoqIEVuYWJsZSBkZXRhaWxlZCBDbG91ZFdhdGNoIG1ldHJpY3MgKi9cbiAgZGV0YWlsZWRNZXRyaWNzRW5hYmxlZDogYm9vbGVhbjtcbiAgXG4gIC8qKiBDT1JTIGNvbmZpZ3VyYXRpb24gKHVuZGVmaW5lZCA9IG5vIENPUlMpICovXG4gIGNvcnM6IENvcnNDb25maWcgfCB1bmRlZmluZWQ7XG4gIFxuICAvKiogQ3VzdG9tIGRvbWFpbiAodW5kZWZpbmVkID0gdXNlIGRlZmF1bHQgQVBJIEdhdGV3YXkgZG9tYWluKSAqL1xuICBjdXN0b21Eb21haW46IEN1c3RvbURvbWFpbkNvbmZpZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBBUEkgY29uZmlndXJhdGlvbiBpbnB1dCAoZm9yIHVzZXIgb3ZlcnJpZGVzKVxuICovXG5leHBvcnQgdHlwZSBBcGlFbnZDb25maWdJbnB1dCA9IFBhcnRpYWw8T21pdDxBcGlFbnZDb25maWcsICdjb3JzJyB8ICdjdXN0b21Eb21haW4nPj4gJiB7XG4gIGNvcnM/OiBQYXJ0aWFsPENvcnNDb25maWc+O1xuICBjdXN0b21Eb21haW4/OiBDdXN0b21Eb21haW5Db25maWc7XG59O1xuIl19
@@ -0,0 +1,21 @@
1
+ /**
2
+ * VentureKit Base Configuration Types
3
+ *
4
+ * Project identity that NEVER changes between environments.
5
+ * Keep this minimal - security config is in security.ts.
6
+ */
7
+ /**
8
+ * Base configuration - project identity constant across all environments
9
+ *
10
+ * This configuration is defined ONCE and shared across dev/stage/prod.
11
+ * Environment-specific settings (capacity, scaling) go in EnvConfig.
12
+ * Security settings (scopes, clients) go in SecurityConfig.
13
+ */
14
+ export interface BaseConfig {
15
+ /** Project name (lowercase, no spaces, used in resource naming) */
16
+ name: string;
17
+ /** Display name for UI/logs */
18
+ displayName: string;
19
+ /** AWS region (same for all environments) */
20
+ region: string;
21
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * VentureKit Base Configuration Types
4
+ *
5
+ * Project identity that NEVER changes between environments.
6
+ * Keep this minimal - security config is in security.ts.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmVudHVyZUtpdCBCYXNlIENvbmZpZ3VyYXRpb24gVHlwZXNcbiAqIFxuICogUHJvamVjdCBpZGVudGl0eSB0aGF0IE5FVkVSIGNoYW5nZXMgYmV0d2VlbiBlbnZpcm9ubWVudHMuXG4gKiBLZWVwIHRoaXMgbWluaW1hbCAtIHNlY3VyaXR5IGNvbmZpZyBpcyBpbiBzZWN1cml0eS50cy5cbiAqL1xuXG4vKipcbiAqIEJhc2UgY29uZmlndXJhdGlvbiAtIHByb2plY3QgaWRlbnRpdHkgY29uc3RhbnQgYWNyb3NzIGFsbCBlbnZpcm9ubWVudHNcbiAqIFxuICogVGhpcyBjb25maWd1cmF0aW9uIGlzIGRlZmluZWQgT05DRSBhbmQgc2hhcmVkIGFjcm9zcyBkZXYvc3RhZ2UvcHJvZC5cbiAqIEVudmlyb25tZW50LXNwZWNpZmljIHNldHRpbmdzIChjYXBhY2l0eSwgc2NhbGluZykgZ28gaW4gRW52Q29uZmlnLlxuICogU2VjdXJpdHkgc2V0dGluZ3MgKHNjb3BlcywgY2xpZW50cykgZ28gaW4gU2VjdXJpdHlDb25maWcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNvbmZpZyB7XG4gIC8qKiBQcm9qZWN0IG5hbWUgKGxvd2VyY2FzZSwgbm8gc3BhY2VzLCB1c2VkIGluIHJlc291cmNlIG5hbWluZykgKi9cbiAgbmFtZTogc3RyaW5nO1xuICBcbiAgLyoqIERpc3BsYXkgbmFtZSBmb3IgVUkvbG9ncyAqL1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBcbiAgLyoqIEFXUyByZWdpb24gKHNhbWUgZm9yIGFsbCBlbnZpcm9ubWVudHMpICovXG4gIHJlZ2lvbjogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,74 @@
1
+ /**
2
+ * VentureKit Environment Configuration
3
+ *
4
+ * Resource sizing that CHANGES between environments:
5
+ * - Instance types and memory
6
+ * - Throttle limits
7
+ * - Retention periods
8
+ * - Monitoring settings
9
+ *
10
+ * MUST NOT CONTAIN: scopes, app clients, project name (those are in BaseConfig)
11
+ */
12
+ import { LambdaEnvConfig, LambdaEnvConfigInput } from './lambda';
13
+ import { ApiEnvConfig, ApiEnvConfigInput } from './api';
14
+ import { VpcEnvConfig, VpcEnvConfigInput } from './vpc';
15
+ import { ObservabilityEnvConfig, ObservabilityEnvConfigInput } from './observability';
16
+ import { WebSocketEnvConfig, WebSocketEnvConfigInput } from './websocket';
17
+ /**
18
+ * Environment name
19
+ */
20
+ export type Environment = 'dev' | 'stage' | 'prod';
21
+ /**
22
+ * Preset sizes (AWS-like naming)
23
+ */
24
+ export type Preset = 'nano' | 'micro' | 'medium' | 'large';
25
+ /**
26
+ * Data safety level - controls removal policies and deletion protection
27
+ */
28
+ export type DataSafety = 'strict' | 'standard' | 'relaxed';
29
+ /**
30
+ * Fully resolved environment configuration
31
+ *
32
+ * All fields are REQUIRED - this is what infra constructs receive.
33
+ * No undefined values except where explicitly typed as `T | undefined`.
34
+ */
35
+ export interface EnvConfig {
36
+ /** Environment name */
37
+ env: Environment;
38
+ /** Data safety level */
39
+ dataSafety: DataSafety;
40
+ /** Lambda configuration */
41
+ lambda: LambdaEnvConfig;
42
+ /** API Gateway configuration */
43
+ api: ApiEnvConfig;
44
+ /** VPC configuration */
45
+ vpc: VpcEnvConfig;
46
+ /** Observability configuration */
47
+ observability: ObservabilityEnvConfig;
48
+ /** WebSocket configuration */
49
+ websocket: WebSocketEnvConfig;
50
+ }
51
+ /**
52
+ * Environment configuration input (what users provide)
53
+ *
54
+ * Users can:
55
+ * 1. Use a preset: { preset: 'micro' }
56
+ * 2. Override specific fields: { preset: 'micro', lambda: { memoryMb: 512 } }
57
+ * 3. Go fully explicit: { lambda: {...}, api: {...}, ... }
58
+ */
59
+ export interface EnvConfigInput {
60
+ /** Preset to use as base (optional - can go fully explicit) */
61
+ preset?: Preset;
62
+ /** Data safety level (defaults based on environment if not specified) */
63
+ dataSafety?: DataSafety;
64
+ /** Lambda overrides */
65
+ lambda?: LambdaEnvConfigInput;
66
+ /** API Gateway overrides */
67
+ api?: ApiEnvConfigInput;
68
+ /** VPC overrides */
69
+ vpc?: VpcEnvConfigInput;
70
+ /** Observability overrides */
71
+ observability?: ObservabilityEnvConfigInput;
72
+ /** WebSocket overrides */
73
+ websocket?: WebSocketEnvConfigInput;
74
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * VentureKit Environment Configuration
4
+ *
5
+ * Resource sizing that CHANGES between environments:
6
+ * - Instance types and memory
7
+ * - Throttle limits
8
+ * - Retention periods
9
+ * - Monitoring settings
10
+ *
11
+ * MUST NOT CONTAIN: scopes, app clients, project name (those are in BaseConfig)
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7R0FVRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmVudHVyZUtpdCBFbnZpcm9ubWVudCBDb25maWd1cmF0aW9uXG4gKiBcbiAqIFJlc291cmNlIHNpemluZyB0aGF0IENIQU5HRVMgYmV0d2VlbiBlbnZpcm9ubWVudHM6XG4gKiAtIEluc3RhbmNlIHR5cGVzIGFuZCBtZW1vcnlcbiAqIC0gVGhyb3R0bGUgbGltaXRzXG4gKiAtIFJldGVudGlvbiBwZXJpb2RzXG4gKiAtIE1vbml0b3Jpbmcgc2V0dGluZ3NcbiAqIFxuICogTVVTVCBOT1QgQ09OVEFJTjogc2NvcGVzLCBhcHAgY2xpZW50cywgcHJvamVjdCBuYW1lICh0aG9zZSBhcmUgaW4gQmFzZUNvbmZpZylcbiAqL1xuXG5pbXBvcnQgeyBMYW1iZGFFbnZDb25maWcsIExhbWJkYUVudkNvbmZpZ0lucHV0IH0gZnJvbSAnLi9sYW1iZGEnO1xuaW1wb3J0IHsgQXBpRW52Q29uZmlnLCBBcGlFbnZDb25maWdJbnB1dCB9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7IFZwY0VudkNvbmZpZywgVnBjRW52Q29uZmlnSW5wdXQgfSBmcm9tICcuL3ZwYyc7XG5pbXBvcnQgeyBPYnNlcnZhYmlsaXR5RW52Q29uZmlnLCBPYnNlcnZhYmlsaXR5RW52Q29uZmlnSW5wdXQgfSBmcm9tICcuL29ic2VydmFiaWxpdHknO1xuaW1wb3J0IHsgV2ViU29ja2V0RW52Q29uZmlnLCBXZWJTb2NrZXRFbnZDb25maWdJbnB1dCB9IGZyb20gJy4vd2Vic29ja2V0JztcblxuLyoqXG4gKiBFbnZpcm9ubWVudCBuYW1lXG4gKi9cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50ID0gJ2RldicgfCAnc3RhZ2UnIHwgJ3Byb2QnO1xuXG4vKipcbiAqIFByZXNldCBzaXplcyAoQVdTLWxpa2UgbmFtaW5nKVxuICovXG5leHBvcnQgdHlwZSBQcmVzZXQgPSAnbmFubycgfCAnbWljcm8nIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuXG4vKipcbiAqIERhdGEgc2FmZXR5IGxldmVsIC0gY29udHJvbHMgcmVtb3ZhbCBwb2xpY2llcyBhbmQgZGVsZXRpb24gcHJvdGVjdGlvblxuICovXG5leHBvcnQgdHlwZSBEYXRhU2FmZXR5ID0gJ3N0cmljdCcgfCAnc3RhbmRhcmQnIHwgJ3JlbGF4ZWQnO1xuXG4vKipcbiAqIEZ1bGx5IHJlc29sdmVkIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25cbiAqIFxuICogQWxsIGZpZWxkcyBhcmUgUkVRVUlSRUQgLSB0aGlzIGlzIHdoYXQgaW5mcmEgY29uc3RydWN0cyByZWNlaXZlLlxuICogTm8gdW5kZWZpbmVkIHZhbHVlcyBleGNlcHQgd2hlcmUgZXhwbGljaXRseSB0eXBlZCBhcyBgVCB8IHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW52Q29uZmlnIHtcbiAgLyoqIEVudmlyb25tZW50IG5hbWUgKi9cbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgXG4gIC8qKiBEYXRhIHNhZmV0eSBsZXZlbCAqL1xuICBkYXRhU2FmZXR5OiBEYXRhU2FmZXR5O1xuICBcbiAgLyoqIExhbWJkYSBjb25maWd1cmF0aW9uICovXG4gIGxhbWJkYTogTGFtYmRhRW52Q29uZmlnO1xuICBcbiAgLyoqIEFQSSBHYXRld2F5IGNvbmZpZ3VyYXRpb24gKi9cbiAgYXBpOiBBcGlFbnZDb25maWc7XG4gIFxuICAvKiogVlBDIGNvbmZpZ3VyYXRpb24gKi9cbiAgdnBjOiBWcGNFbnZDb25maWc7XG4gIFxuICAvKiogT2JzZXJ2YWJpbGl0eSBjb25maWd1cmF0aW9uICovXG4gIG9ic2VydmFiaWxpdHk6IE9ic2VydmFiaWxpdHlFbnZDb25maWc7XG4gIFxuICAvKiogV2ViU29ja2V0IGNvbmZpZ3VyYXRpb24gKi9cbiAgd2Vic29ja2V0OiBXZWJTb2NrZXRFbnZDb25maWc7XG59XG5cbi8qKlxuICogRW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiBpbnB1dCAod2hhdCB1c2VycyBwcm92aWRlKVxuICogXG4gKiBVc2VycyBjYW46XG4gKiAxLiBVc2UgYSBwcmVzZXQ6IHsgcHJlc2V0OiAnbWljcm8nIH1cbiAqIDIuIE92ZXJyaWRlIHNwZWNpZmljIGZpZWxkczogeyBwcmVzZXQ6ICdtaWNybycsIGxhbWJkYTogeyBtZW1vcnlNYjogNTEyIH0gfVxuICogMy4gR28gZnVsbHkgZXhwbGljaXQ6IHsgbGFtYmRhOiB7Li4ufSwgYXBpOiB7Li4ufSwgLi4uIH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnZDb25maWdJbnB1dCB7XG4gIC8qKiBQcmVzZXQgdG8gdXNlIGFzIGJhc2UgKG9wdGlvbmFsIC0gY2FuIGdvIGZ1bGx5IGV4cGxpY2l0KSAqL1xuICBwcmVzZXQ/OiBQcmVzZXQ7XG4gIFxuICAvKiogRGF0YSBzYWZldHkgbGV2ZWwgKGRlZmF1bHRzIGJhc2VkIG9uIGVudmlyb25tZW50IGlmIG5vdCBzcGVjaWZpZWQpICovXG4gIGRhdGFTYWZldHk/OiBEYXRhU2FmZXR5O1xuICBcbiAgLyoqIExhbWJkYSBvdmVycmlkZXMgKi9cbiAgbGFtYmRhPzogTGFtYmRhRW52Q29uZmlnSW5wdXQ7XG4gIFxuICAvKiogQVBJIEdhdGV3YXkgb3ZlcnJpZGVzICovXG4gIGFwaT86IEFwaUVudkNvbmZpZ0lucHV0O1xuICBcbiAgLyoqIFZQQyBvdmVycmlkZXMgKi9cbiAgdnBjPzogVnBjRW52Q29uZmlnSW5wdXQ7XG4gIFxuICAvKiogT2JzZXJ2YWJpbGl0eSBvdmVycmlkZXMgKi9cbiAgb2JzZXJ2YWJpbGl0eT86IE9ic2VydmFiaWxpdHlFbnZDb25maWdJbnB1dDtcbiAgXG4gIC8qKiBXZWJTb2NrZXQgb3ZlcnJpZGVzICovXG4gIHdlYnNvY2tldD86IFdlYlNvY2tldEVudkNvbmZpZ0lucHV0O1xufVxuIl19
@@ -0,0 +1,15 @@
1
+ /**
2
+ * VentureKit Core Types
3
+ *
4
+ * Re-exports all configuration types.
5
+ */
6
+ export type { BaseConfig } from './base';
7
+ export type { SecurityConfig, OAuthScope, AppClient } from './security';
8
+ export type { EnvConfig, EnvConfigInput, Environment, Preset, DataSafety } from './env';
9
+ export type { LambdaEnvConfig, LambdaEnvConfigInput, LambdaRuntime, LambdaArchitecture, LambdaIamConfig, IamPolicyStatement, } from './lambda';
10
+ export type { ApiEnvConfig, ApiEnvConfigInput, CorsConfig, CustomDomainConfig } from './api';
11
+ export type { VpcEnvConfig, VpcEnvConfigInput, SubnetConfig, SecurityGroupRule, } from './vpc';
12
+ export type { ObservabilityEnvConfig, ObservabilityEnvConfigInput, LogGroupConfig, MetricsConfig, AlarmConfig, TracingConfig, } from './observability';
13
+ export type { WebSocketEnvConfig, WebSocketEnvConfigInput } from './websocket';
14
+ export type { ResolvedConfig } from './resolved';
15
+ export type { ResourceSize, DatabaseIntent, StorageIntent, AuthIntent, QueueIntent, CacheIntent, ScheduleIntent, VentureIntent, IntentOutputs, } from './intents';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * VentureKit Core Types
4
+ *
5
+ * Re-exports all configuration types.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZlbnR1cmVLaXQgQ29yZSBUeXBlc1xuICogXG4gKiBSZS1leHBvcnRzIGFsbCBjb25maWd1cmF0aW9uIHR5cGVzLlxuICovXG5cbi8vIEJhc2UgY29uZmlndXJhdGlvbiAocHJvamVjdCBpZGVudGl0eSlcbmV4cG9ydCB0eXBlIHsgQmFzZUNvbmZpZyB9IGZyb20gJy4vYmFzZSc7XG5cbi8vIFNlY3VyaXR5IGNvbmZpZ3VyYXRpb24gKHNjb3BlcywgY2xpZW50cywgYXV0aClcbmV4cG9ydCB0eXBlIHsgU2VjdXJpdHlDb25maWcsIE9BdXRoU2NvcGUsIEFwcENsaWVudCB9IGZyb20gJy4vc2VjdXJpdHknO1xuXG4vLyBFbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIChyZXNvdXJjZSBzaXppbmcpXG5leHBvcnQgdHlwZSB7IEVudkNvbmZpZywgRW52Q29uZmlnSW5wdXQsIEVudmlyb25tZW50LCBQcmVzZXQsIERhdGFTYWZldHkgfSBmcm9tICcuL2Vudic7XG5cbi8vIExhbWJkYSBjb25maWd1cmF0aW9uXG5leHBvcnQgdHlwZSB7IFxuICBMYW1iZGFFbnZDb25maWcsIFxuICBMYW1iZGFFbnZDb25maWdJbnB1dCwgXG4gIExhbWJkYVJ1bnRpbWUsIFxuICBMYW1iZGFBcmNoaXRlY3R1cmUsXG4gIExhbWJkYUlhbUNvbmZpZyxcbiAgSWFtUG9saWN5U3RhdGVtZW50LFxufSBmcm9tICcuL2xhbWJkYSc7XG5cbi8vIEFQSSBHYXRld2F5IGNvbmZpZ3VyYXRpb25cbmV4cG9ydCB0eXBlIHsgQXBpRW52Q29uZmlnLCBBcGlFbnZDb25maWdJbnB1dCwgQ29yc0NvbmZpZywgQ3VzdG9tRG9tYWluQ29uZmlnIH0gZnJvbSAnLi9hcGknO1xuXG4vLyBWUEMgY29uZmlndXJhdGlvblxuZXhwb3J0IHR5cGUgeyBcbiAgVnBjRW52Q29uZmlnLCBcbiAgVnBjRW52Q29uZmlnSW5wdXQsIFxuICBTdWJuZXRDb25maWcsIFxuICBTZWN1cml0eUdyb3VwUnVsZSxcbn0gZnJvbSAnLi92cGMnO1xuXG4vLyBPYnNlcnZhYmlsaXR5IGNvbmZpZ3VyYXRpb25cbmV4cG9ydCB0eXBlIHsgXG4gIE9ic2VydmFiaWxpdHlFbnZDb25maWcsIFxuICBPYnNlcnZhYmlsaXR5RW52Q29uZmlnSW5wdXQsXG4gIExvZ0dyb3VwQ29uZmlnLFxuICBNZXRyaWNzQ29uZmlnLFxuICBBbGFybUNvbmZpZyxcbiAgVHJhY2luZ0NvbmZpZyxcbn0gZnJvbSAnLi9vYnNlcnZhYmlsaXR5JztcblxuLy8gV2ViU29ja2V0IGNvbmZpZ3VyYXRpb25cbmV4cG9ydCB0eXBlIHsgV2ViU29ja2V0RW52Q29uZmlnLCBXZWJTb2NrZXRFbnZDb25maWdJbnB1dCB9IGZyb20gJy4vd2Vic29ja2V0JztcblxuLy8gUmVzb2x2ZWQgY29uZmlndXJhdGlvblxuZXhwb3J0IHR5cGUgeyBSZXNvbHZlZENvbmZpZyB9IGZyb20gJy4vcmVzb2x2ZWQnO1xuXG4vLyBJbnRlbnQtYmFzZWQgaW5mcmFzdHJ1Y3R1cmVcbmV4cG9ydCB0eXBlIHtcbiAgUmVzb3VyY2VTaXplLFxuICBEYXRhYmFzZUludGVudCxcbiAgU3RvcmFnZUludGVudCxcbiAgQXV0aEludGVudCxcbiAgUXVldWVJbnRlbnQsXG4gIENhY2hlSW50ZW50LFxuICBTY2hlZHVsZUludGVudCxcbiAgVmVudHVyZUludGVudCxcbiAgSW50ZW50T3V0cHV0cyxcbn0gZnJvbSAnLi9pbnRlbnRzJztcbiJdfQ==
@@ -0,0 +1,192 @@
1
+ /**
2
+ * VentureKit Intent Types
3
+ *
4
+ * Intents define WHAT you want, not HOW to build it.
5
+ * The infra package translates intents to provider-specific resources.
6
+ *
7
+ * This abstraction layer insulates consuming projects from:
8
+ * - SST version changes
9
+ * - AWS SDK updates
10
+ * - Provider-specific naming conventions
11
+ */
12
+ /**
13
+ * Size presets for resources
14
+ * Maps to provider-specific instance types internally
15
+ */
16
+ export type ResourceSize = 'small' | 'medium' | 'large' | 'xlarge';
17
+ /**
18
+ * Database Intent
19
+ *
20
+ * Declares the need for a relational database without
21
+ * exposing RDS-specific configuration.
22
+ */
23
+ export interface DatabaseIntent {
24
+ /** Unique identifier for this database */
25
+ id: string;
26
+ /** Database engine */
27
+ type: 'postgres' | 'mysql';
28
+ /** Size preset - maps to instance class internally */
29
+ size: ResourceSize;
30
+ /** Database name */
31
+ name: string;
32
+ /** Enable high availability (multi-AZ) */
33
+ highAvailability?: boolean;
34
+ /** Enable automatic backups */
35
+ backups?: boolean;
36
+ /** Backup retention in days (default: 7) */
37
+ backupRetentionDays?: number;
38
+ /** Enable encryption at rest */
39
+ encrypted?: boolean;
40
+ /** Enable performance insights */
41
+ performanceInsights?: boolean;
42
+ }
43
+ /**
44
+ * Storage Intent
45
+ *
46
+ * Declares the need for object storage without
47
+ * exposing S3-specific configuration.
48
+ */
49
+ export interface StorageIntent {
50
+ /** Unique identifier for this storage bucket */
51
+ id: string;
52
+ /** Purpose of the storage (affects defaults) */
53
+ purpose: 'uploads' | 'assets' | 'backups' | 'logs';
54
+ /** Enable versioning */
55
+ versioned?: boolean;
56
+ /** Enable CDN for public assets */
57
+ cdn?: boolean;
58
+ /** Custom domain for CDN */
59
+ cdnDomain?: string;
60
+ /** Allowed origins for CORS (empty = no CORS) */
61
+ corsOrigins?: string[];
62
+ }
63
+ /**
64
+ * Auth Intent
65
+ *
66
+ * Declares authentication requirements without
67
+ * exposing Cognito-specific configuration.
68
+ */
69
+ export interface AuthIntent {
70
+ /** Unique identifier for this auth pool */
71
+ id: string;
72
+ /** Sign-in methods */
73
+ signInWith: Array<'email' | 'phone' | 'username'>;
74
+ /** Allow self-registration */
75
+ allowSignUp?: boolean;
76
+ /** Require MFA */
77
+ mfa?: 'off' | 'optional' | 'required';
78
+ /** Password strength */
79
+ passwordStrength?: 'standard' | 'strong';
80
+ /** OAuth scopes to define */
81
+ scopes?: Array<{
82
+ name: string;
83
+ description: string;
84
+ }>;
85
+ /** App clients to create */
86
+ clients?: Array<{
87
+ name: string;
88
+ scopes: string[];
89
+ }>;
90
+ }
91
+ /**
92
+ * Queue Intent
93
+ *
94
+ * Declares the need for a message queue without
95
+ * exposing SQS-specific configuration.
96
+ */
97
+ export interface QueueIntent {
98
+ /** Unique identifier for this queue */
99
+ id: string;
100
+ /** Queue type */
101
+ type: 'standard' | 'fifo';
102
+ /** Enable dead-letter queue */
103
+ deadLetterQueue?: boolean;
104
+ /** Message retention in days (default: 4) */
105
+ retentionDays?: number;
106
+ /** Visibility timeout in seconds (default: 30) */
107
+ visibilityTimeoutSeconds?: number;
108
+ }
109
+ /**
110
+ * Cache Intent
111
+ *
112
+ * Declares the need for a cache without
113
+ * exposing ElastiCache-specific configuration.
114
+ */
115
+ export interface CacheIntent {
116
+ /** Unique identifier for this cache */
117
+ id: string;
118
+ /** Cache engine */
119
+ type: 'redis' | 'memcached';
120
+ /** Size preset */
121
+ size: ResourceSize;
122
+ /** Enable cluster mode (Redis only) */
123
+ clustered?: boolean;
124
+ }
125
+ /**
126
+ * Scheduled Task Intent
127
+ *
128
+ * Declares a scheduled task without exposing
129
+ * EventBridge/CloudWatch-specific configuration.
130
+ */
131
+ export interface ScheduleIntent {
132
+ /** Unique identifier for this schedule */
133
+ id: string;
134
+ /** Handler function path */
135
+ handler: string;
136
+ /** Schedule expression */
137
+ schedule: {
138
+ rate: string;
139
+ } | {
140
+ cron: string;
141
+ };
142
+ /** Enable/disable the schedule */
143
+ enabled?: boolean;
144
+ }
145
+ /**
146
+ * Complete VentureKit Infrastructure Intent
147
+ *
148
+ * This is the top-level intent that defines all
149
+ * infrastructure needs for a VentureKit application.
150
+ */
151
+ export interface VentureIntent {
152
+ /** Databases needed */
153
+ databases?: DatabaseIntent[];
154
+ /** Storage buckets needed */
155
+ storage?: StorageIntent[];
156
+ /** Authentication pools needed */
157
+ auth?: AuthIntent[];
158
+ /** Message queues needed */
159
+ queues?: QueueIntent[];
160
+ /** Caches needed */
161
+ caches?: CacheIntent[];
162
+ /** Scheduled tasks */
163
+ schedules?: ScheduleIntent[];
164
+ }
165
+ /**
166
+ * Intent output references
167
+ *
168
+ * After infrastructure is created, these references
169
+ * allow handlers to access the created resources.
170
+ */
171
+ export interface IntentOutputs {
172
+ databases: Record<string, {
173
+ endpoint: string;
174
+ port: number;
175
+ secretArn: string;
176
+ }>;
177
+ storage: Record<string, {
178
+ bucketName: string;
179
+ cdnUrl?: string;
180
+ }>;
181
+ auth: Record<string, {
182
+ userPoolId: string;
183
+ clientId: string;
184
+ }>;
185
+ queues: Record<string, {
186
+ queueUrl: string;
187
+ }>;
188
+ caches: Record<string, {
189
+ endpoint: string;
190
+ port: number;
191
+ }>;
192
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * VentureKit Intent Types
4
+ *
5
+ * Intents define WHAT you want, not HOW to build it.
6
+ * The infra package translates intents to provider-specific resources.
7
+ *
8
+ * This abstraction layer insulates consuming projects from:
9
+ * - SST version changes
10
+ * - AWS SDK updates
11
+ * - Provider-specific naming conventions
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbnRlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7OztHQVVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWZW50dXJlS2l0IEludGVudCBUeXBlc1xuICogXG4gKiBJbnRlbnRzIGRlZmluZSBXSEFUIHlvdSB3YW50LCBub3QgSE9XIHRvIGJ1aWxkIGl0LlxuICogVGhlIGluZnJhIHBhY2thZ2UgdHJhbnNsYXRlcyBpbnRlbnRzIHRvIHByb3ZpZGVyLXNwZWNpZmljIHJlc291cmNlcy5cbiAqIFxuICogVGhpcyBhYnN0cmFjdGlvbiBsYXllciBpbnN1bGF0ZXMgY29uc3VtaW5nIHByb2plY3RzIGZyb206XG4gKiAtIFNTVCB2ZXJzaW9uIGNoYW5nZXNcbiAqIC0gQVdTIFNESyB1cGRhdGVzXG4gKiAtIFByb3ZpZGVyLXNwZWNpZmljIG5hbWluZyBjb252ZW50aW9uc1xuICovXG5cbi8qKlxuICogU2l6ZSBwcmVzZXRzIGZvciByZXNvdXJjZXNcbiAqIE1hcHMgdG8gcHJvdmlkZXItc3BlY2lmaWMgaW5zdGFuY2UgdHlwZXMgaW50ZXJuYWxseVxuICovXG5leHBvcnQgdHlwZSBSZXNvdXJjZVNpemUgPSAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJ3hsYXJnZSc7XG5cbi8qKlxuICogRGF0YWJhc2UgSW50ZW50XG4gKiBcbiAqIERlY2xhcmVzIHRoZSBuZWVkIGZvciBhIHJlbGF0aW9uYWwgZGF0YWJhc2Ugd2l0aG91dFxuICogZXhwb3NpbmcgUkRTLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VJbnRlbnQge1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgZGF0YWJhc2UgKi9cbiAgaWQ6IHN0cmluZztcbiAgXG4gIC8qKiBEYXRhYmFzZSBlbmdpbmUgKi9cbiAgdHlwZTogJ3Bvc3RncmVzJyB8ICdteXNxbCc7XG4gIFxuICAvKiogU2l6ZSBwcmVzZXQgLSBtYXBzIHRvIGluc3RhbmNlIGNsYXNzIGludGVybmFsbHkgKi9cbiAgc2l6ZTogUmVzb3VyY2VTaXplO1xuICBcbiAgLyoqIERhdGFiYXNlIG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICBcbiAgLyoqIEVuYWJsZSBoaWdoIGF2YWlsYWJpbGl0eSAobXVsdGktQVopICovXG4gIGhpZ2hBdmFpbGFiaWxpdHk/OiBib29sZWFuO1xuICBcbiAgLyoqIEVuYWJsZSBhdXRvbWF0aWMgYmFja3VwcyAqL1xuICBiYWNrdXBzPzogYm9vbGVhbjtcbiAgXG4gIC8qKiBCYWNrdXAgcmV0ZW50aW9uIGluIGRheXMgKGRlZmF1bHQ6IDcpICovXG4gIGJhY2t1cFJldGVudGlvbkRheXM/OiBudW1iZXI7XG4gIFxuICAvKiogRW5hYmxlIGVuY3J5cHRpb24gYXQgcmVzdCAqL1xuICBlbmNyeXB0ZWQ/OiBib29sZWFuO1xuICBcbiAgLyoqIEVuYWJsZSBwZXJmb3JtYW5jZSBpbnNpZ2h0cyAqL1xuICBwZXJmb3JtYW5jZUluc2lnaHRzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTdG9yYWdlIEludGVudFxuICogXG4gKiBEZWNsYXJlcyB0aGUgbmVlZCBmb3Igb2JqZWN0IHN0b3JhZ2Ugd2l0aG91dFxuICogZXhwb3NpbmcgUzMtc3BlY2lmaWMgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlSW50ZW50IHtcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIHN0b3JhZ2UgYnVja2V0ICovXG4gIGlkOiBzdHJpbmc7XG4gIFxuICAvKiogUHVycG9zZSBvZiB0aGUgc3RvcmFnZSAoYWZmZWN0cyBkZWZhdWx0cykgKi9cbiAgcHVycG9zZTogJ3VwbG9hZHMnIHwgJ2Fzc2V0cycgfCAnYmFja3VwcycgfCAnbG9ncyc7XG4gIFxuICAvKiogRW5hYmxlIHZlcnNpb25pbmcgKi9cbiAgdmVyc2lvbmVkPzogYm9vbGVhbjtcbiAgXG4gIC8qKiBFbmFibGUgQ0ROIGZvciBwdWJsaWMgYXNzZXRzICovXG4gIGNkbj86IGJvb2xlYW47XG4gIFxuICAvKiogQ3VzdG9tIGRvbWFpbiBmb3IgQ0ROICovXG4gIGNkbkRvbWFpbj86IHN0cmluZztcbiAgXG4gIC8qKiBBbGxvd2VkIG9yaWdpbnMgZm9yIENPUlMgKGVtcHR5ID0gbm8gQ09SUykgKi9cbiAgY29yc09yaWdpbnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBdXRoIEludGVudFxuICogXG4gKiBEZWNsYXJlcyBhdXRoZW50aWNhdGlvbiByZXF1aXJlbWVudHMgd2l0aG91dFxuICogZXhwb3NpbmcgQ29nbml0by1zcGVjaWZpYyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhJbnRlbnQge1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgYXV0aCBwb29sICovXG4gIGlkOiBzdHJpbmc7XG4gIFxuICAvKiogU2lnbi1pbiBtZXRob2RzICovXG4gIHNpZ25JbldpdGg6IEFycmF5PCdlbWFpbCcgfCAncGhvbmUnIHwgJ3VzZXJuYW1lJz47XG4gIFxuICAvKiogQWxsb3cgc2VsZi1yZWdpc3RyYXRpb24gKi9cbiAgYWxsb3dTaWduVXA/OiBib29sZWFuO1xuICBcbiAgLyoqIFJlcXVpcmUgTUZBICovXG4gIG1mYT86ICdvZmYnIHwgJ29wdGlvbmFsJyB8ICdyZXF1aXJlZCc7XG4gIFxuICAvKiogUGFzc3dvcmQgc3RyZW5ndGggKi9cbiAgcGFzc3dvcmRTdHJlbmd0aD86ICdzdGFuZGFyZCcgfCAnc3Ryb25nJztcbiAgXG4gIC8qKiBPQXV0aCBzY29wZXMgdG8gZGVmaW5lICovXG4gIHNjb3Blcz86IEFycmF5PHsgbmFtZTogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nIH0+O1xuICBcbiAgLyoqIEFwcCBjbGllbnRzIHRvIGNyZWF0ZSAqL1xuICBjbGllbnRzPzogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzY29wZXM6IHN0cmluZ1tdO1xuICB9Pjtcbn1cblxuLyoqXG4gKiBRdWV1ZSBJbnRlbnRcbiAqIFxuICogRGVjbGFyZXMgdGhlIG5lZWQgZm9yIGEgbWVzc2FnZSBxdWV1ZSB3aXRob3V0XG4gKiBleHBvc2luZyBTUVMtc3BlY2lmaWMgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWV1ZUludGVudCB7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBxdWV1ZSAqL1xuICBpZDogc3RyaW5nO1xuICBcbiAgLyoqIFF1ZXVlIHR5cGUgKi9cbiAgdHlwZTogJ3N0YW5kYXJkJyB8ICdmaWZvJztcbiAgXG4gIC8qKiBFbmFibGUgZGVhZC1sZXR0ZXIgcXVldWUgKi9cbiAgZGVhZExldHRlclF1ZXVlPzogYm9vbGVhbjtcbiAgXG4gIC8qKiBNZXNzYWdlIHJldGVudGlvbiBpbiBkYXlzIChkZWZhdWx0OiA0KSAqL1xuICByZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICBcbiAgLyoqIFZpc2liaWxpdHkgdGltZW91dCBpbiBzZWNvbmRzIChkZWZhdWx0OiAzMCkgKi9cbiAgdmlzaWJpbGl0eVRpbWVvdXRTZWNvbmRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENhY2hlIEludGVudFxuICogXG4gKiBEZWNsYXJlcyB0aGUgbmVlZCBmb3IgYSBjYWNoZSB3aXRob3V0XG4gKiBleHBvc2luZyBFbGFzdGlDYWNoZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlSW50ZW50IHtcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGNhY2hlICovXG4gIGlkOiBzdHJpbmc7XG4gIFxuICAvKiogQ2FjaGUgZW5naW5lICovXG4gIHR5cGU6ICdyZWRpcycgfCAnbWVtY2FjaGVkJztcbiAgXG4gIC8qKiBTaXplIHByZXNldCAqL1xuICBzaXplOiBSZXNvdXJjZVNpemU7XG4gIFxuICAvKiogRW5hYmxlIGNsdXN0ZXIgbW9kZSAoUmVkaXMgb25seSkgKi9cbiAgY2x1c3RlcmVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTY2hlZHVsZWQgVGFzayBJbnRlbnRcbiAqIFxuICogRGVjbGFyZXMgYSBzY2hlZHVsZWQgdGFzayB3aXRob3V0IGV4cG9zaW5nXG4gKiBFdmVudEJyaWRnZS9DbG91ZFdhdGNoLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVJbnRlbnQge1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgc2NoZWR1bGUgKi9cbiAgaWQ6IHN0cmluZztcbiAgXG4gIC8qKiBIYW5kbGVyIGZ1bmN0aW9uIHBhdGggKi9cbiAgaGFuZGxlcjogc3RyaW5nO1xuICBcbiAgLyoqIFNjaGVkdWxlIGV4cHJlc3Npb24gKi9cbiAgc2NoZWR1bGU6IFxuICAgIHwgeyByYXRlOiBzdHJpbmcgfSAgICAgICAgICAgLy8gZS5nLiwgXCIxIGhvdXJcIiwgXCI1IG1pbnV0ZXNcIlxuICAgIHwgeyBjcm9uOiBzdHJpbmcgfTsgICAgICAgICAgLy8gZS5nLiwgXCIwIDggKiAqID8gKlwiXG4gIFxuICAvKiogRW5hYmxlL2Rpc2FibGUgdGhlIHNjaGVkdWxlICovXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbXBsZXRlIFZlbnR1cmVLaXQgSW5mcmFzdHJ1Y3R1cmUgSW50ZW50XG4gKiBcbiAqIFRoaXMgaXMgdGhlIHRvcC1sZXZlbCBpbnRlbnQgdGhhdCBkZWZpbmVzIGFsbFxuICogaW5mcmFzdHJ1Y3R1cmUgbmVlZHMgZm9yIGEgVmVudHVyZUtpdCBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZW50dXJlSW50ZW50IHtcbiAgLyoqIERhdGFiYXNlcyBuZWVkZWQgKi9cbiAgZGF0YWJhc2VzPzogRGF0YWJhc2VJbnRlbnRbXTtcbiAgXG4gIC8qKiBTdG9yYWdlIGJ1Y2tldHMgbmVlZGVkICovXG4gIHN0b3JhZ2U/OiBTdG9yYWdlSW50ZW50W107XG4gIFxuICAvKiogQXV0aGVudGljYXRpb24gcG9vbHMgbmVlZGVkICovXG4gIGF1dGg/OiBBdXRoSW50ZW50W107XG4gIFxuICAvKiogTWVzc2FnZSBxdWV1ZXMgbmVlZGVkICovXG4gIHF1ZXVlcz86IFF1ZXVlSW50ZW50W107XG4gIFxuICAvKiogQ2FjaGVzIG5lZWRlZCAqL1xuICBjYWNoZXM/OiBDYWNoZUludGVudFtdO1xuICBcbiAgLyoqIFNjaGVkdWxlZCB0YXNrcyAqL1xuICBzY2hlZHVsZXM/OiBTY2hlZHVsZUludGVudFtdO1xufVxuXG4vKipcbiAqIEludGVudCBvdXRwdXQgcmVmZXJlbmNlc1xuICogXG4gKiBBZnRlciBpbmZyYXN0cnVjdHVyZSBpcyBjcmVhdGVkLCB0aGVzZSByZWZlcmVuY2VzXG4gKiBhbGxvdyBoYW5kbGVycyB0byBhY2Nlc3MgdGhlIGNyZWF0ZWQgcmVzb3VyY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVudE91dHB1dHMge1xuICBkYXRhYmFzZXM6IFJlY29yZDxzdHJpbmcsIHtcbiAgICBlbmRwb2ludDogc3RyaW5nO1xuICAgIHBvcnQ6IG51bWJlcjtcbiAgICBzZWNyZXRBcm46IHN0cmluZztcbiAgfT47XG4gIFxuICBzdG9yYWdlOiBSZWNvcmQ8c3RyaW5nLCB7XG4gICAgYnVja2V0TmFtZTogc3RyaW5nO1xuICAgIGNkblVybD86IHN0cmluZztcbiAgfT47XG4gIFxuICBhdXRoOiBSZWNvcmQ8c3RyaW5nLCB7XG4gICAgdXNlclBvb2xJZDogc3RyaW5nO1xuICAgIGNsaWVudElkOiBzdHJpbmc7XG4gIH0+O1xuICBcbiAgcXVldWVzOiBSZWNvcmQ8c3RyaW5nLCB7XG4gICAgcXVldWVVcmw6IHN0cmluZztcbiAgfT47XG4gIFxuICBjYWNoZXM6IFJlY29yZDxzdHJpbmcsIHtcbiAgICBlbmRwb2ludDogc3RyaW5nO1xuICAgIHBvcnQ6IG51bWJlcjtcbiAgfT47XG59XG4iXX0=
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Lambda Environment Configuration
3
+ *
4
+ * Controls Lambda capacity and behavior per environment.
5
+ * All fields are REQUIRED - no implicit defaults at the type level.
6
+ */
7
+ export type LambdaRuntime = 'nodejs18.x' | 'nodejs20.x' | 'nodejs22.x';
8
+ export type LambdaArchitecture = 'arm64' | 'x86_64';
9
+ /**
10
+ * IAM policy statement
11
+ */
12
+ export interface IamPolicyStatement {
13
+ /** Effect: Allow or Deny */
14
+ effect: 'Allow' | 'Deny';
15
+ /** Actions (e.g., 's3:GetObject', 'dynamodb:Query') */
16
+ actions: string[];
17
+ /** Resource ARNs (use '*' for all) */
18
+ resources: string[];
19
+ /** Optional condition */
20
+ condition?: Record<string, Record<string, string>>;
21
+ }
22
+ /**
23
+ * Lambda IAM configuration
24
+ */
25
+ export interface LambdaIamConfig {
26
+ /** Additional managed policy ARNs to attach */
27
+ managedPolicyArns: string[];
28
+ /** Additional inline policy statements */
29
+ inlineStatements: IamPolicyStatement[];
30
+ }
31
+ /**
32
+ * Lambda function configuration
33
+ *
34
+ * All fields required - use presets or explicit values.
35
+ */
36
+ export interface LambdaEnvConfig {
37
+ /** Memory allocation in MB (128-10240) */
38
+ memoryMb: number;
39
+ /** Timeout in seconds (1-900) */
40
+ timeoutSec: number;
41
+ /** CloudWatch log retention in days */
42
+ logRetentionDays: number;
43
+ /** Reserved concurrency (undefined = no reservation, scale on demand) */
44
+ reservedConcurrency: number | undefined;
45
+ /** Provisioned concurrency (undefined = no provisioned capacity) */
46
+ provisionedConcurrency: number | undefined;
47
+ /** Enable X-Ray tracing */
48
+ tracingEnabled: boolean;
49
+ /** Run Lambdas inside VPC for network isolation */
50
+ vpcEnabled: boolean;
51
+ /** Node.js runtime version */
52
+ runtime: LambdaRuntime;
53
+ /** CPU architecture */
54
+ architecture: LambdaArchitecture;
55
+ /** IAM configuration */
56
+ iam: LambdaIamConfig;
57
+ /** Environment variables to inject */
58
+ environmentVariables: Record<string, string>;
59
+ /** Layers ARNs to attach */
60
+ layers: string[];
61
+ }
62
+ /**
63
+ * Lambda configuration input (for user overrides)
64
+ * All fields optional - merged with preset/defaults
65
+ */
66
+ export type LambdaEnvConfigInput = Partial<Omit<LambdaEnvConfig, 'iam'>> & {
67
+ iam?: Partial<LambdaIamConfig>;
68
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Lambda Environment Configuration
4
+ *
5
+ * Controls Lambda capacity and behavior per environment.
6
+ * All fields are REQUIRED - no implicit defaults at the type level.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2xhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExhbWJkYSBFbnZpcm9ubWVudCBDb25maWd1cmF0aW9uXG4gKiBcbiAqIENvbnRyb2xzIExhbWJkYSBjYXBhY2l0eSBhbmQgYmVoYXZpb3IgcGVyIGVudmlyb25tZW50LlxuICogQWxsIGZpZWxkcyBhcmUgUkVRVUlSRUQgLSBubyBpbXBsaWNpdCBkZWZhdWx0cyBhdCB0aGUgdHlwZSBsZXZlbC5cbiAqL1xuXG5leHBvcnQgdHlwZSBMYW1iZGFSdW50aW1lID0gJ25vZGVqczE4LngnIHwgJ25vZGVqczIwLngnIHwgJ25vZGVqczIyLngnO1xuZXhwb3J0IHR5cGUgTGFtYmRhQXJjaGl0ZWN0dXJlID0gJ2FybTY0JyB8ICd4ODZfNjQnO1xuXG4vKipcbiAqIElBTSBwb2xpY3kgc3RhdGVtZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWFtUG9saWN5U3RhdGVtZW50IHtcbiAgLyoqIEVmZmVjdDogQWxsb3cgb3IgRGVueSAqL1xuICBlZmZlY3Q6ICdBbGxvdycgfCAnRGVueSc7XG4gIC8qKiBBY3Rpb25zIChlLmcuLCAnczM6R2V0T2JqZWN0JywgJ2R5bmFtb2RiOlF1ZXJ5JykgKi9cbiAgYWN0aW9uczogc3RyaW5nW107XG4gIC8qKiBSZXNvdXJjZSBBUk5zICh1c2UgJyonIGZvciBhbGwpICovXG4gIHJlc291cmNlczogc3RyaW5nW107XG4gIC8qKiBPcHRpb25hbCBjb25kaXRpb24gKi9cbiAgY29uZGl0aW9uPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG59XG5cbi8qKlxuICogTGFtYmRhIElBTSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhSWFtQ29uZmlnIHtcbiAgLyoqIEFkZGl0aW9uYWwgbWFuYWdlZCBwb2xpY3kgQVJOcyB0byBhdHRhY2ggKi9cbiAgbWFuYWdlZFBvbGljeUFybnM6IHN0cmluZ1tdO1xuICAvKiogQWRkaXRpb25hbCBpbmxpbmUgcG9saWN5IHN0YXRlbWVudHMgKi9cbiAgaW5saW5lU3RhdGVtZW50czogSWFtUG9saWN5U3RhdGVtZW50W107XG59XG5cbi8qKlxuICogTGFtYmRhIGZ1bmN0aW9uIGNvbmZpZ3VyYXRpb25cbiAqIFxuICogQWxsIGZpZWxkcyByZXF1aXJlZCAtIHVzZSBwcmVzZXRzIG9yIGV4cGxpY2l0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFFbnZDb25maWcge1xuICAvKiogTWVtb3J5IGFsbG9jYXRpb24gaW4gTUIgKDEyOC0xMDI0MCkgKi9cbiAgbWVtb3J5TWI6IG51bWJlcjtcbiAgXG4gIC8qKiBUaW1lb3V0IGluIHNlY29uZHMgKDEtOTAwKSAqL1xuICB0aW1lb3V0U2VjOiBudW1iZXI7XG4gIFxuICAvKiogQ2xvdWRXYXRjaCBsb2cgcmV0ZW50aW9uIGluIGRheXMgKi9cbiAgbG9nUmV0ZW50aW9uRGF5czogbnVtYmVyO1xuICBcbiAgLyoqIFJlc2VydmVkIGNvbmN1cnJlbmN5ICh1bmRlZmluZWQgPSBubyByZXNlcnZhdGlvbiwgc2NhbGUgb24gZGVtYW5kKSAqL1xuICByZXNlcnZlZENvbmN1cnJlbmN5OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIFxuICAvKiogUHJvdmlzaW9uZWQgY29uY3VycmVuY3kgKHVuZGVmaW5lZCA9IG5vIHByb3Zpc2lvbmVkIGNhcGFjaXR5KSAqL1xuICBwcm92aXNpb25lZENvbmN1cnJlbmN5OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIFxuICAvKiogRW5hYmxlIFgtUmF5IHRyYWNpbmcgKi9cbiAgdHJhY2luZ0VuYWJsZWQ6IGJvb2xlYW47XG4gIFxuICAvKiogUnVuIExhbWJkYXMgaW5zaWRlIFZQQyBmb3IgbmV0d29yayBpc29sYXRpb24gKi9cbiAgdnBjRW5hYmxlZDogYm9vbGVhbjtcbiAgXG4gIC8qKiBOb2RlLmpzIHJ1bnRpbWUgdmVyc2lvbiAqL1xuICBydW50aW1lOiBMYW1iZGFSdW50aW1lO1xuICBcbiAgLyoqIENQVSBhcmNoaXRlY3R1cmUgKi9cbiAgYXJjaGl0ZWN0dXJlOiBMYW1iZGFBcmNoaXRlY3R1cmU7XG4gIFxuICAvKiogSUFNIGNvbmZpZ3VyYXRpb24gKi9cbiAgaWFtOiBMYW1iZGFJYW1Db25maWc7XG4gIFxuICAvKiogRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGluamVjdCAqL1xuICBlbnZpcm9ubWVudFZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgXG4gIC8qKiBMYXllcnMgQVJOcyB0byBhdHRhY2ggKi9cbiAgbGF5ZXJzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBMYW1iZGEgY29uZmlndXJhdGlvbiBpbnB1dCAoZm9yIHVzZXIgb3ZlcnJpZGVzKVxuICogQWxsIGZpZWxkcyBvcHRpb25hbCAtIG1lcmdlZCB3aXRoIHByZXNldC9kZWZhdWx0c1xuICovXG5leHBvcnQgdHlwZSBMYW1iZGFFbnZDb25maWdJbnB1dCA9IFBhcnRpYWw8T21pdDxMYW1iZGFFbnZDb25maWcsICdpYW0nPj4gJiB7XG4gIGlhbT86IFBhcnRpYWw8TGFtYmRhSWFtQ29uZmlnPjtcbn07XG4iXX0=
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Observability Environment Configuration
3
+ *
4
+ * Controls monitoring, logging, and alerting per environment.
5
+ * All fields are REQUIRED - no implicit defaults at the type level.
6
+ */
7
+ /**
8
+ * Log group configuration
9
+ */
10
+ export interface LogGroupConfig {
11
+ /** Log group name pattern (supports {name}, {env}, {function} placeholders) */
12
+ namePattern: string;
13
+ /** Log stream name pattern */
14
+ streamNamePattern: string;
15
+ /** Retention in days */
16
+ retentionDays: number;
17
+ }
18
+ /**
19
+ * Metrics configuration
20
+ */
21
+ export interface MetricsConfig {
22
+ /** CloudWatch namespace for custom metrics */
23
+ namespace: string;
24
+ /** Enable detailed metrics */
25
+ detailedMetricsEnabled: boolean;
26
+ /** Default dimensions to add to all metrics */
27
+ defaultDimensions: Record<string, string>;
28
+ }
29
+ /**
30
+ * Alarm configuration
31
+ */
32
+ export interface AlarmConfig {
33
+ /** Enable CloudWatch alarms */
34
+ enabled: boolean;
35
+ /** SNS topic ARN for alarm notifications (undefined = no notifications) */
36
+ topicArn: string | undefined;
37
+ /** Evaluation periods for alarms */
38
+ evaluationPeriods: number;
39
+ /** Period in seconds */
40
+ periodSec: number;
41
+ }
42
+ /**
43
+ * Tracing configuration
44
+ */
45
+ export interface TracingConfig {
46
+ /** Enable X-Ray tracing */
47
+ enabled: boolean;
48
+ /** Sampling rate (0.0 to 1.0) */
49
+ samplingRate: number;
50
+ }
51
+ /**
52
+ * Observability configuration
53
+ *
54
+ * All fields required - use presets or explicit values.
55
+ */
56
+ export interface ObservabilityEnvConfig {
57
+ /** Log group configuration */
58
+ logs: LogGroupConfig;
59
+ /** Metrics configuration */
60
+ metrics: MetricsConfig;
61
+ /** Alarm configuration */
62
+ alarms: AlarmConfig;
63
+ /** Tracing configuration */
64
+ tracing: TracingConfig;
65
+ }
66
+ /**
67
+ * Observability configuration input (for user overrides)
68
+ */
69
+ export type ObservabilityEnvConfigInput = {
70
+ logs?: Partial<LogGroupConfig>;
71
+ metrics?: Partial<MetricsConfig>;
72
+ alarms?: Partial<AlarmConfig>;
73
+ tracing?: Partial<TracingConfig>;
74
+ /** Shorthand: Enable alarms */
75
+ alarmsEnabled?: boolean;
76
+ /** Shorthand: Enable tracing */
77
+ tracingEnabled?: boolean;
78
+ /** Shorthand: Log retention days */
79
+ logRetentionDays?: number;
80
+ /** Shorthand: Detailed metrics */
81
+ detailedMetricsEnabled?: boolean;
82
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Observability Environment Configuration
4
+ *
5
+ * Controls monitoring, logging, and alerting per environment.
6
+ * All fields are REQUIRED - no implicit defaults at the type level.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9vYnNlcnZhYmlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT2JzZXJ2YWJpbGl0eSBFbnZpcm9ubWVudCBDb25maWd1cmF0aW9uXG4gKiBcbiAqIENvbnRyb2xzIG1vbml0b3JpbmcsIGxvZ2dpbmcsIGFuZCBhbGVydGluZyBwZXIgZW52aXJvbm1lbnQuXG4gKiBBbGwgZmllbGRzIGFyZSBSRVFVSVJFRCAtIG5vIGltcGxpY2l0IGRlZmF1bHRzIGF0IHRoZSB0eXBlIGxldmVsLlxuICovXG5cbi8qKlxuICogTG9nIGdyb3VwIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dHcm91cENvbmZpZyB7XG4gIC8qKiBMb2cgZ3JvdXAgbmFtZSBwYXR0ZXJuIChzdXBwb3J0cyB7bmFtZX0sIHtlbnZ9LCB7ZnVuY3Rpb259IHBsYWNlaG9sZGVycykgKi9cbiAgbmFtZVBhdHRlcm46IHN0cmluZztcbiAgLyoqIExvZyBzdHJlYW0gbmFtZSBwYXR0ZXJuICovXG4gIHN0cmVhbU5hbWVQYXR0ZXJuOiBzdHJpbmc7XG4gIC8qKiBSZXRlbnRpb24gaW4gZGF5cyAqL1xuICByZXRlbnRpb25EYXlzOiBudW1iZXI7XG59XG5cbi8qKlxuICogTWV0cmljcyBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cmljc0NvbmZpZyB7XG4gIC8qKiBDbG91ZFdhdGNoIG5hbWVzcGFjZSBmb3IgY3VzdG9tIG1ldHJpY3MgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIC8qKiBFbmFibGUgZGV0YWlsZWQgbWV0cmljcyAqL1xuICBkZXRhaWxlZE1ldHJpY3NFbmFibGVkOiBib29sZWFuO1xuICAvKiogRGVmYXVsdCBkaW1lbnNpb25zIHRvIGFkZCB0byBhbGwgbWV0cmljcyAqL1xuICBkZWZhdWx0RGltZW5zaW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBBbGFybSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxhcm1Db25maWcge1xuICAvKiogRW5hYmxlIENsb3VkV2F0Y2ggYWxhcm1zICovXG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIC8qKiBTTlMgdG9waWMgQVJOIGZvciBhbGFybSBub3RpZmljYXRpb25zICh1bmRlZmluZWQgPSBubyBub3RpZmljYXRpb25zKSAqL1xuICB0b3BpY0Fybjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKiogRXZhbHVhdGlvbiBwZXJpb2RzIGZvciBhbGFybXMgKi9cbiAgZXZhbHVhdGlvblBlcmlvZHM6IG51bWJlcjtcbiAgLyoqIFBlcmlvZCBpbiBzZWNvbmRzICovXG4gIHBlcmlvZFNlYzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRyYWNpbmcgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNpbmdDb25maWcge1xuICAvKiogRW5hYmxlIFgtUmF5IHRyYWNpbmcgKi9cbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqIFNhbXBsaW5nIHJhdGUgKDAuMCB0byAxLjApICovXG4gIHNhbXBsaW5nUmF0ZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIE9ic2VydmFiaWxpdHkgY29uZmlndXJhdGlvblxuICogXG4gKiBBbGwgZmllbGRzIHJlcXVpcmVkIC0gdXNlIHByZXNldHMgb3IgZXhwbGljaXQgdmFsdWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlFbnZDb25maWcge1xuICAvKiogTG9nIGdyb3VwIGNvbmZpZ3VyYXRpb24gKi9cbiAgbG9nczogTG9nR3JvdXBDb25maWc7XG4gIFxuICAvKiogTWV0cmljcyBjb25maWd1cmF0aW9uICovXG4gIG1ldHJpY3M6IE1ldHJpY3NDb25maWc7XG4gIFxuICAvKiogQWxhcm0gY29uZmlndXJhdGlvbiAqL1xuICBhbGFybXM6IEFsYXJtQ29uZmlnO1xuICBcbiAgLyoqIFRyYWNpbmcgY29uZmlndXJhdGlvbiAqL1xuICB0cmFjaW5nOiBUcmFjaW5nQ29uZmlnO1xufVxuXG4vKipcbiAqIE9ic2VydmFiaWxpdHkgY29uZmlndXJhdGlvbiBpbnB1dCAoZm9yIHVzZXIgb3ZlcnJpZGVzKVxuICovXG5leHBvcnQgdHlwZSBPYnNlcnZhYmlsaXR5RW52Q29uZmlnSW5wdXQgPSB7XG4gIGxvZ3M/OiBQYXJ0aWFsPExvZ0dyb3VwQ29uZmlnPjtcbiAgbWV0cmljcz86IFBhcnRpYWw8TWV0cmljc0NvbmZpZz47XG4gIGFsYXJtcz86IFBhcnRpYWw8QWxhcm1Db25maWc+O1xuICB0cmFjaW5nPzogUGFydGlhbDxUcmFjaW5nQ29uZmlnPjtcbiAgLyoqIFNob3J0aGFuZDogRW5hYmxlIGFsYXJtcyAqL1xuICBhbGFybXNFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIFNob3J0aGFuZDogRW5hYmxlIHRyYWNpbmcgKi9cbiAgdHJhY2luZ0VuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogU2hvcnRoYW5kOiBMb2cgcmV0ZW50aW9uIGRheXMgKi9cbiAgbG9nUmV0ZW50aW9uRGF5cz86IG51bWJlcjtcbiAgLyoqIFNob3J0aGFuZDogRGV0YWlsZWQgbWV0cmljcyAqL1xuICBkZXRhaWxlZE1ldHJpY3NFbmFibGVkPzogYm9vbGVhbjtcbn07XG4iXX0=
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Resolved VentureKit Configuration
3
+ *
4
+ * Complete configuration after merging base + security + environment.
5
+ * This is what infra constructs receive and consume.
6
+ */
7
+ import { OAuthScope, AppClient } from './security';
8
+ import { Environment, DataSafety } from './env';
9
+ import { LambdaEnvConfig } from './lambda';
10
+ import { ApiEnvConfig } from './api';
11
+ import { VpcEnvConfig } from './vpc';
12
+ import { ObservabilityEnvConfig } from './observability';
13
+ import { WebSocketEnvConfig } from './websocket';
14
+ /**
15
+ * Fully resolved configuration
16
+ *
17
+ * All fields are populated - no optionals, no undefined (except where explicitly typed).
18
+ * This is the contract between config resolution and infra constructs.
19
+ */
20
+ export interface ResolvedConfig {
21
+ /** Project name (from base) */
22
+ name: string;
23
+ /** Display name (from base) */
24
+ displayName: string;
25
+ /** Environment (from env config) */
26
+ env: Environment;
27
+ /** AWS region (from base) */
28
+ region: string;
29
+ /** Resource tags (auto-generated) */
30
+ tags: Record<string, string>;
31
+ /** Data safety level (from env config) */
32
+ dataSafety: DataSafety;
33
+ /** All OAuth scopes (from security) */
34
+ scopes: OAuthScope[];
35
+ /** App clients (from security) */
36
+ appClients: AppClient[];
37
+ /** Lambda configuration (resolved) */
38
+ lambda: LambdaEnvConfig;
39
+ /** API Gateway configuration (resolved) */
40
+ api: ApiEnvConfig;
41
+ /** VPC configuration (resolved) */
42
+ vpc: VpcEnvConfig;
43
+ /** Observability configuration (resolved) */
44
+ observability: ObservabilityEnvConfig;
45
+ /** WebSocket configuration (resolved) */
46
+ websocket: WebSocketEnvConfig;
47
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Resolved VentureKit Configuration
4
+ *
5
+ * Complete configuration after merging base + security + environment.
6
+ * This is what infra constructs receive and consume.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb2x2ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXNvbHZlZCBWZW50dXJlS2l0IENvbmZpZ3VyYXRpb25cbiAqIFxuICogQ29tcGxldGUgY29uZmlndXJhdGlvbiBhZnRlciBtZXJnaW5nIGJhc2UgKyBzZWN1cml0eSArIGVudmlyb25tZW50LlxuICogVGhpcyBpcyB3aGF0IGluZnJhIGNvbnN0cnVjdHMgcmVjZWl2ZSBhbmQgY29uc3VtZS5cbiAqL1xuXG5pbXBvcnQgeyBPQXV0aFNjb3BlLCBBcHBDbGllbnQgfSBmcm9tICcuL3NlY3VyaXR5JztcbmltcG9ydCB7IEVudmlyb25tZW50LCBEYXRhU2FmZXR5IH0gZnJvbSAnLi9lbnYnO1xuaW1wb3J0IHsgTGFtYmRhRW52Q29uZmlnIH0gZnJvbSAnLi9sYW1iZGEnO1xuaW1wb3J0IHsgQXBpRW52Q29uZmlnIH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgVnBjRW52Q29uZmlnIH0gZnJvbSAnLi92cGMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJpbGl0eUVudkNvbmZpZyB9IGZyb20gJy4vb2JzZXJ2YWJpbGl0eSc7XG5pbXBvcnQgeyBXZWJTb2NrZXRFbnZDb25maWcgfSBmcm9tICcuL3dlYnNvY2tldCc7XG5cbi8qKlxuICogRnVsbHkgcmVzb2x2ZWQgY29uZmlndXJhdGlvblxuICogXG4gKiBBbGwgZmllbGRzIGFyZSBwb3B1bGF0ZWQgLSBubyBvcHRpb25hbHMsIG5vIHVuZGVmaW5lZCAoZXhjZXB0IHdoZXJlIGV4cGxpY2l0bHkgdHlwZWQpLlxuICogVGhpcyBpcyB0aGUgY29udHJhY3QgYmV0d2VlbiBjb25maWcgcmVzb2x1dGlvbiBhbmQgaW5mcmEgY29uc3RydWN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZENvbmZpZyB7XG4gIC8qKiBQcm9qZWN0IG5hbWUgKGZyb20gYmFzZSkgKi9cbiAgbmFtZTogc3RyaW5nO1xuICBcbiAgLyoqIERpc3BsYXkgbmFtZSAoZnJvbSBiYXNlKSAqL1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBcbiAgLyoqIEVudmlyb25tZW50IChmcm9tIGVudiBjb25maWcpICovXG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIFxuICAvKiogQVdTIHJlZ2lvbiAoZnJvbSBiYXNlKSAqL1xuICByZWdpb246IHN0cmluZztcbiAgXG4gIC8qKiBSZXNvdXJjZSB0YWdzIChhdXRvLWdlbmVyYXRlZCkgKi9cbiAgdGFnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgXG4gIC8qKiBEYXRhIHNhZmV0eSBsZXZlbCAoZnJvbSBlbnYgY29uZmlnKSAqL1xuICBkYXRhU2FmZXR5OiBEYXRhU2FmZXR5O1xuICBcbiAgLyoqIEFsbCBPQXV0aCBzY29wZXMgKGZyb20gc2VjdXJpdHkpICovXG4gIHNjb3BlczogT0F1dGhTY29wZVtdO1xuICBcbiAgLyoqIEFwcCBjbGllbnRzIChmcm9tIHNlY3VyaXR5KSAqL1xuICBhcHBDbGllbnRzOiBBcHBDbGllbnRbXTtcbiAgXG4gIC8qKiBMYW1iZGEgY29uZmlndXJhdGlvbiAocmVzb2x2ZWQpICovXG4gIGxhbWJkYTogTGFtYmRhRW52Q29uZmlnO1xuICBcbiAgLyoqIEFQSSBHYXRld2F5IGNvbmZpZ3VyYXRpb24gKHJlc29sdmVkKSAqL1xuICBhcGk6IEFwaUVudkNvbmZpZztcbiAgXG4gIC8qKiBWUEMgY29uZmlndXJhdGlvbiAocmVzb2x2ZWQpICovXG4gIHZwYzogVnBjRW52Q29uZmlnO1xuICBcbiAgLyoqIE9ic2VydmFiaWxpdHkgY29uZmlndXJhdGlvbiAocmVzb2x2ZWQpICovXG4gIG9ic2VydmFiaWxpdHk6IE9ic2VydmFiaWxpdHlFbnZDb25maWc7XG4gIFxuICAvKiogV2ViU29ja2V0IGNvbmZpZ3VyYXRpb24gKHJlc29sdmVkKSAqL1xuICB3ZWJzb2NrZXQ6IFdlYlNvY2tldEVudkNvbmZpZztcbn1cbiJdfQ==