@fjall/generator 0.96.0 → 0.99.3
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.
- package/dist/.minified +1 -1
- package/dist/src/ast/astClickHouseParser.d.ts +25 -0
- package/dist/src/ast/astClickHouseParser.js +1 -0
- package/dist/src/ast/astComputeParser.js +1 -1
- package/dist/src/ast/astComputeParserHelpers.js +1 -1
- package/dist/src/ast/astDatabaseParser.d.ts +5 -2
- package/dist/src/ast/astDatabaseParser.js +1 -1
- package/dist/src/ast/astInfrastructureParser.d.ts +6 -0
- package/dist/src/ast/astInfrastructureParser.js +1 -1
- package/dist/src/ast/astPlanConverter.js +2 -2
- package/dist/src/ast/astScheduleParser.d.ts +18 -0
- package/dist/src/ast/astScheduleParser.js +1 -0
- package/dist/src/ast/astTestHelpers.d.ts +40 -6
- package/dist/src/codemod/edits/crossPlanConnection.d.ts +2 -6
- package/dist/src/codemod/edits/vpcPeer.d.ts +2 -6
- package/dist/src/codemod/edits/vpcPeerAccepter.d.ts +2 -5
- package/dist/src/codemod/edits/vpcPeerAccepter.js +1 -1
- package/dist/src/codemod/index.d.ts +1 -1
- package/dist/src/codemod/llmFallback/prompt.js +13 -13
- package/dist/src/codemod/llmFallback/tierRunner.js +1 -1
- package/dist/src/codemod/types.d.ts +5 -0
- package/dist/src/detection/index.d.ts +148 -0
- package/dist/src/detection/index.js +1 -0
- package/dist/src/generation/common.d.ts +22 -0
- package/dist/src/generation/common.js +5 -4
- package/dist/src/generation/compute/ec2.d.ts +2 -0
- package/dist/src/generation/compute/ec2.js +4 -0
- package/dist/src/generation/compute/ecs.d.ts +2 -0
- package/dist/src/generation/compute/ecs.js +42 -0
- package/dist/src/generation/compute/lambda.d.ts +3 -0
- package/dist/src/generation/compute/lambda.js +26 -0
- package/dist/src/generation/compute/shared.d.ts +22 -0
- package/dist/src/generation/compute/shared.js +4 -0
- package/dist/src/generation/compute.d.ts +4 -5
- package/dist/src/generation/compute.js +6 -86
- package/dist/src/generation/database.d.ts +11 -0
- package/dist/src/generation/database.js +23 -12
- package/dist/src/generation/index.d.ts +1 -1
- package/dist/src/generation/index.js +1 -1
- package/dist/src/generation/infrastructure.js +5 -5
- package/dist/src/generation/storage.js +30 -30
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/planning/resourceAddition.d.ts +5 -1
- package/dist/src/planning/resourceAddition.js +1 -1
- package/dist/src/planning/resourcePlanning.js +1 -1
- package/dist/src/presets/clickhouseTierPreset.d.ts +35 -0
- package/dist/src/presets/clickhouseTierPreset.js +0 -0
- package/dist/src/presets/tierPresets.d.ts +5 -12
- package/dist/src/presets/tierPresets.js +1 -1
- package/dist/src/presets/tierTypes.d.ts +9 -19
- package/dist/src/schemas/applicationSchemas.d.ts +51 -8
- package/dist/src/schemas/applicationSchemas.js +1 -1
- package/dist/src/schemas/baseSchemas.d.ts +16 -0
- package/dist/src/schemas/baseSchemas.js +2 -2
- package/dist/src/schemas/computeSchemas.d.ts +108 -14
- package/dist/src/schemas/computeSchemas.js +1 -1
- package/dist/src/schemas/constants.d.ts +14 -0
- package/dist/src/schemas/constants.js +1 -1
- package/dist/src/schemas/databaseSchemas.d.ts +80 -0
- package/dist/src/schemas/databaseSchemas.js +1 -1
- package/dist/src/schemas/networkSchemas.d.ts +7 -6
- package/dist/src/schemas/networkSchemas.js +1 -1
- package/dist/src/schemas/patternSchemas.js +1 -1
- package/dist/src/schemas/sharedTypes.d.ts +1 -1
- package/dist/src/schemas/sharedTypes.js +1 -1
- package/dist/src/validation/patterns.d.ts +1 -1
- package/dist/src/validation/patterns.js +1 -1
- package/dist/src/validation/validationMessages.d.ts +5 -4
- package/dist/src/validation/validationMessages.js +1 -1
- package/dist/src/validation/validationPatterns.d.ts +14 -0
- package/dist/src/validation/validationPatterns.js +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +19 -13
- package/dist/src/codemod/drift/__tests__/fixtures.d.ts +0 -55
- package/dist/src/codemod/drift/__tests__/fixtures.js +0 -2
- package/dist/src/codemod/llmFallback/__tests__/fixtures.d.ts +0 -5
- package/dist/src/codemod/llmFallback/__tests__/fixtures.js +0 -7
- package/dist/src/codemod/telemetry/__tests__/errorKinds.fixture.d.ts +0 -1
- package/dist/src/codemod/telemetry/__tests__/errorKinds.fixture.js +0 -1
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
export type { ComputeType, EcsCapacityProvider } from "./constants.js";
|
|
2
3
|
/** Reusable Lambda memory validation with multiple-of-64 constraint. */
|
|
3
4
|
export declare const LambdaMemorySchema: z.ZodNumber;
|
|
5
|
+
/**
|
|
6
|
+
* Reusable Lambda runtime validator. Two consumer schemas
|
|
7
|
+
* (`ComputeResourcePlanSchema`, `LambdaComputeGeneratorSchema`) must enforce
|
|
8
|
+
* the same regex — drift would silently let one accept a runtime the other
|
|
9
|
+
* rejects. See `.claude/rules/code-quality.md § "Coupled Numeric Defaults
|
|
10
|
+
* Need a Shared Source at 2 Occurrences"` (extends to coupled regex
|
|
11
|
+
* validators).
|
|
12
|
+
*/
|
|
13
|
+
export declare const LambdaRuntimeSchema: z.ZodString;
|
|
14
|
+
export type LambdaRuntime = z.infer<typeof LambdaRuntimeSchema>;
|
|
4
15
|
export declare const WarmPoolSchema: z.ZodObject<{
|
|
5
16
|
minSize: z.ZodOptional<z.ZodNumber>;
|
|
6
17
|
reuseOnScaleIn: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -18,6 +29,10 @@ export declare const Ec2ConfigSchema: z.ZodObject<{
|
|
|
18
29
|
minSize: z.ZodOptional<z.ZodNumber>;
|
|
19
30
|
reuseOnScaleIn: z.ZodOptional<z.ZodBoolean>;
|
|
20
31
|
}, z.core.$strict>>;
|
|
32
|
+
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
33
|
+
key: z.ZodString;
|
|
34
|
+
sourceText: z.ZodString;
|
|
35
|
+
}, z.core.$strict>>>;
|
|
21
36
|
}, z.core.$strict>;
|
|
22
37
|
export declare const ComputeTypeSchema: z.ZodEnum<{
|
|
23
38
|
ecs: "ecs";
|
|
@@ -94,8 +109,15 @@ export declare const EcsServiceNameSchema: z.ZodString;
|
|
|
94
109
|
*/
|
|
95
110
|
export declare const EcsClusterConfigSchema: z.ZodObject<{
|
|
96
111
|
domain: z.ZodOptional<z.ZodString>;
|
|
97
|
-
loadBalancer: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.
|
|
112
|
+
loadBalancer: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodEnum<{
|
|
113
|
+
public: "public";
|
|
114
|
+
internal: "internal";
|
|
115
|
+
}>]>>;
|
|
98
116
|
directAccess: z.ZodOptional<z.ZodBoolean>;
|
|
117
|
+
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
118
|
+
key: z.ZodString;
|
|
119
|
+
sourceText: z.ZodString;
|
|
120
|
+
}, z.core.$strict>>>;
|
|
99
121
|
}, z.core.$strict>;
|
|
100
122
|
/**
|
|
101
123
|
* Routing configuration for path/host-based routing on the ALB.
|
|
@@ -125,8 +147,12 @@ export declare const EcsScalingConfigSchema: z.ZodObject<{
|
|
|
125
147
|
*/
|
|
126
148
|
export declare const EcsServiceConfigSchema: z.ZodObject<{
|
|
127
149
|
name: z.ZodString;
|
|
128
|
-
|
|
129
|
-
|
|
150
|
+
docker: z.ZodOptional<z.ZodObject<{
|
|
151
|
+
path: z.ZodString;
|
|
152
|
+
context: z.ZodOptional<z.ZodString>;
|
|
153
|
+
target: z.ZodOptional<z.ZodString>;
|
|
154
|
+
buildArgs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
155
|
+
}, z.core.$strict>>;
|
|
130
156
|
needsDatabaseConnection: z.ZodOptional<z.ZodBoolean>;
|
|
131
157
|
needsStorageConnection: z.ZodOptional<z.ZodBoolean>;
|
|
132
158
|
needsMessagingConnection: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -204,6 +230,10 @@ export declare const EcsServiceConfigSchema: z.ZodObject<{
|
|
|
204
230
|
minSize: z.ZodOptional<z.ZodNumber>;
|
|
205
231
|
reuseOnScaleIn: z.ZodOptional<z.ZodBoolean>;
|
|
206
232
|
}, z.core.$strict>>;
|
|
233
|
+
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
234
|
+
key: z.ZodString;
|
|
235
|
+
sourceText: z.ZodString;
|
|
236
|
+
}, z.core.$strict>>>;
|
|
207
237
|
}, z.core.$strict>>;
|
|
208
238
|
ssmSecretsPath: z.ZodOptional<z.ZodString>;
|
|
209
239
|
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -234,13 +264,24 @@ export declare const ComputeResourcePlanSchema: z.ZodObject<{
|
|
|
234
264
|
connectedMessaging: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
235
265
|
cluster: z.ZodOptional<z.ZodObject<{
|
|
236
266
|
domain: z.ZodOptional<z.ZodString>;
|
|
237
|
-
loadBalancer: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.
|
|
267
|
+
loadBalancer: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodEnum<{
|
|
268
|
+
public: "public";
|
|
269
|
+
internal: "internal";
|
|
270
|
+
}>]>>;
|
|
238
271
|
directAccess: z.ZodOptional<z.ZodBoolean>;
|
|
272
|
+
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
273
|
+
key: z.ZodString;
|
|
274
|
+
sourceText: z.ZodString;
|
|
275
|
+
}, z.core.$strict>>>;
|
|
239
276
|
}, z.core.$strict>>;
|
|
240
277
|
services: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
241
278
|
name: z.ZodString;
|
|
242
|
-
|
|
243
|
-
|
|
279
|
+
docker: z.ZodOptional<z.ZodObject<{
|
|
280
|
+
path: z.ZodString;
|
|
281
|
+
context: z.ZodOptional<z.ZodString>;
|
|
282
|
+
target: z.ZodOptional<z.ZodString>;
|
|
283
|
+
buildArgs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
284
|
+
}, z.core.$strict>>;
|
|
244
285
|
needsDatabaseConnection: z.ZodOptional<z.ZodBoolean>;
|
|
245
286
|
needsStorageConnection: z.ZodOptional<z.ZodBoolean>;
|
|
246
287
|
needsMessagingConnection: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -318,6 +359,10 @@ export declare const ComputeResourcePlanSchema: z.ZodObject<{
|
|
|
318
359
|
minSize: z.ZodOptional<z.ZodNumber>;
|
|
319
360
|
reuseOnScaleIn: z.ZodOptional<z.ZodBoolean>;
|
|
320
361
|
}, z.core.$strict>>;
|
|
362
|
+
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
363
|
+
key: z.ZodString;
|
|
364
|
+
sourceText: z.ZodString;
|
|
365
|
+
}, z.core.$strict>>>;
|
|
321
366
|
}, z.core.$strict>>;
|
|
322
367
|
ssmSecretsPath: z.ZodOptional<z.ZodString>;
|
|
323
368
|
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -331,7 +376,12 @@ export declare const ComputeResourcePlanSchema: z.ZodObject<{
|
|
|
331
376
|
http5xxThreshold: z.ZodOptional<z.ZodNumber>;
|
|
332
377
|
}, z.core.$strict>]>>;
|
|
333
378
|
}, z.core.$strict>>>;
|
|
334
|
-
|
|
379
|
+
docker: z.ZodOptional<z.ZodObject<{
|
|
380
|
+
path: z.ZodOptional<z.ZodString>;
|
|
381
|
+
context: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
382
|
+
target: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
383
|
+
buildArgs: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
384
|
+
}, z.core.$strict>>;
|
|
335
385
|
deployment: z.ZodOptional<z.ZodEnum<{
|
|
336
386
|
code: "code";
|
|
337
387
|
container: "container";
|
|
@@ -431,6 +481,10 @@ export declare const ECSGeneratorSchema: z.ZodObject<{
|
|
|
431
481
|
minSize: z.ZodOptional<z.ZodNumber>;
|
|
432
482
|
reuseOnScaleIn: z.ZodOptional<z.ZodBoolean>;
|
|
433
483
|
}, z.core.$strict>>;
|
|
484
|
+
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
485
|
+
key: z.ZodString;
|
|
486
|
+
sourceText: z.ZodString;
|
|
487
|
+
}, z.core.$strict>>>;
|
|
434
488
|
}, z.core.$strict>>;
|
|
435
489
|
connectionConfig: z.ZodOptional<z.ZodObject<{
|
|
436
490
|
connectToDatabase: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -509,6 +563,10 @@ export declare const AddServiceGeneratorSchema: z.ZodObject<{
|
|
|
509
563
|
minSize: z.ZodOptional<z.ZodNumber>;
|
|
510
564
|
reuseOnScaleIn: z.ZodOptional<z.ZodBoolean>;
|
|
511
565
|
}, z.core.$strict>>;
|
|
566
|
+
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
567
|
+
key: z.ZodString;
|
|
568
|
+
sourceText: z.ZodString;
|
|
569
|
+
}, z.core.$strict>>>;
|
|
512
570
|
}, z.core.$strict>>;
|
|
513
571
|
routing: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
514
572
|
path: z.ZodOptional<z.ZodString>;
|
|
@@ -521,8 +579,12 @@ export declare const AddServiceGeneratorSchema: z.ZodObject<{
|
|
|
521
579
|
priority: z.ZodOptional<z.ZodNumber>;
|
|
522
580
|
healthCheckPath: z.ZodOptional<z.ZodString>;
|
|
523
581
|
}, z.core.$strict>>]>>;
|
|
524
|
-
|
|
525
|
-
|
|
582
|
+
docker: z.ZodOptional<z.ZodObject<{
|
|
583
|
+
path: z.ZodOptional<z.ZodString>;
|
|
584
|
+
context: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
585
|
+
target: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
586
|
+
buildArgs: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
587
|
+
}, z.core.$strict>>;
|
|
526
588
|
nameProvidedByFlag: z.ZodOptional<z.ZodBoolean>;
|
|
527
589
|
connectionConfig: z.ZodOptional<z.ZodObject<{
|
|
528
590
|
connectToDatabase: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -543,13 +605,24 @@ export declare const ComputeGeneratorSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
543
605
|
type: z.ZodLiteral<"ecs">;
|
|
544
606
|
cluster: z.ZodOptional<z.ZodObject<{
|
|
545
607
|
domain: z.ZodOptional<z.ZodString>;
|
|
546
|
-
loadBalancer: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.
|
|
608
|
+
loadBalancer: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodEnum<{
|
|
609
|
+
public: "public";
|
|
610
|
+
internal: "internal";
|
|
611
|
+
}>]>>;
|
|
547
612
|
directAccess: z.ZodOptional<z.ZodBoolean>;
|
|
613
|
+
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
614
|
+
key: z.ZodString;
|
|
615
|
+
sourceText: z.ZodString;
|
|
616
|
+
}, z.core.$strict>>>;
|
|
548
617
|
}, z.core.$strict>>;
|
|
549
618
|
services: z.ZodArray<z.ZodObject<{
|
|
550
619
|
name: z.ZodString;
|
|
551
|
-
|
|
552
|
-
|
|
620
|
+
docker: z.ZodOptional<z.ZodObject<{
|
|
621
|
+
path: z.ZodString;
|
|
622
|
+
context: z.ZodOptional<z.ZodString>;
|
|
623
|
+
target: z.ZodOptional<z.ZodString>;
|
|
624
|
+
buildArgs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
625
|
+
}, z.core.$strict>>;
|
|
553
626
|
needsDatabaseConnection: z.ZodOptional<z.ZodBoolean>;
|
|
554
627
|
needsStorageConnection: z.ZodOptional<z.ZodBoolean>;
|
|
555
628
|
needsMessagingConnection: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -627,6 +700,10 @@ export declare const ComputeGeneratorSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
627
700
|
minSize: z.ZodOptional<z.ZodNumber>;
|
|
628
701
|
reuseOnScaleIn: z.ZodOptional<z.ZodBoolean>;
|
|
629
702
|
}, z.core.$strict>>;
|
|
703
|
+
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
704
|
+
key: z.ZodString;
|
|
705
|
+
sourceText: z.ZodString;
|
|
706
|
+
}, z.core.$strict>>>;
|
|
630
707
|
}, z.core.$strict>>;
|
|
631
708
|
ssmSecretsPath: z.ZodOptional<z.ZodString>;
|
|
632
709
|
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -640,7 +717,12 @@ export declare const ComputeGeneratorSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
640
717
|
http5xxThreshold: z.ZodOptional<z.ZodNumber>;
|
|
641
718
|
}, z.core.$strict>]>>;
|
|
642
719
|
}, z.core.$strict>>;
|
|
643
|
-
|
|
720
|
+
docker: z.ZodOptional<z.ZodObject<{
|
|
721
|
+
path: z.ZodOptional<z.ZodString>;
|
|
722
|
+
context: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
723
|
+
target: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
724
|
+
buildArgs: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
725
|
+
}, z.core.$strict>>;
|
|
644
726
|
}, z.core.$strict>, z.ZodObject<{
|
|
645
727
|
appName: z.ZodString;
|
|
646
728
|
computeName: z.ZodString;
|
|
@@ -717,7 +799,12 @@ export declare const ApplicationServiceRoutingSchema: z.ZodObject<{
|
|
|
717
799
|
*/
|
|
718
800
|
export declare const ApplicationServiceConfigSchema: z.ZodObject<{
|
|
719
801
|
name: z.ZodString;
|
|
720
|
-
|
|
802
|
+
docker: z.ZodOptional<z.ZodObject<{
|
|
803
|
+
path: z.ZodOptional<z.ZodString>;
|
|
804
|
+
context: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
805
|
+
target: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
806
|
+
buildArgs: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
807
|
+
}, z.core.$strict>>;
|
|
721
808
|
containerPort: z.ZodOptional<z.ZodNumber>;
|
|
722
809
|
needsDatabaseConnection: z.ZodOptional<z.ZodBoolean>;
|
|
723
810
|
routing: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -743,3 +830,10 @@ export type ComputeGeneratorOptions = z.infer<typeof ComputeGeneratorSchema>;
|
|
|
743
830
|
export type TunnelGeneratorOptions = z.infer<typeof TunnelGeneratorSchema>;
|
|
744
831
|
export type WarmPool = z.infer<typeof WarmPoolSchema>;
|
|
745
832
|
export type Ec2Config = z.infer<typeof Ec2ConfigSchema>;
|
|
833
|
+
export type LambdaMemory = z.infer<typeof LambdaMemorySchema>;
|
|
834
|
+
export type InstanceType = z.infer<typeof InstanceTypeSchema>;
|
|
835
|
+
export type EcsServiceName = z.infer<typeof EcsServiceNameSchema>;
|
|
836
|
+
export type ECSGenerator = z.infer<typeof ECSGeneratorSchema>;
|
|
837
|
+
export type LambdaGenerator = z.infer<typeof LambdaGeneratorSchema>;
|
|
838
|
+
export type EC2Generator = z.infer<typeof EC2GeneratorSchema>;
|
|
839
|
+
export type ApplicationServiceRouting = z.infer<typeof ApplicationServiceRoutingSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as e}from"zod";import{VALIDATION_PATTERNS as l,VALIDATION_MESSAGES as o}from"../validation/patterns.js";import{COMPUTE_TYPES as _,ECS_CAPACITY_PROVIDERS as P,EC2_INSTANCE_TYPES as v,HTTP_METHODS as U,MIN_LAMBDA_MEMORY as X,MAX_LAMBDA_MEMORY as B,MIN_LAMBDA_TIMEOUT as M,MAX_LAMBDA_TIMEOUT as u,MIN_ECS_CAPACITY as h,MAX_ECS_CAPACITY as f,MAX_SCALING_CAPACITY as p,MAX_WARM_POOL_SIZE as j,constIncludes as W,COMPUTE_ARCHITECTURES as k}from"./constants.js";import{validateArchitectureMatch as w,getArchitectureForInstanceType as V}from"./instanceTypeArchitecture.js";import{optionalOrDisabled as K,CAPACITY_REFINEMENT as r,memoryLimitMiBSchema as E,ResourceNameSchema as c,AppNameSchema as s,PortSchema as A,ExtraPropertySchema as g,EnvironmentRecordSchema as m,SecretsImportRecordSchema as F}from"./baseSchemas.js";import{EcsServiceAlarmConfigSchema as Z,LambdaAlarmConfigSchema as z}from"./alarmSchemas.js";const O=e.number().int(o.CAPACITY.MIN.INTEGER).min(h,o.GENERATOR_CAPACITY.MIN.MIN).max(f,o.GENERATOR_CAPACITY.MIN.MAX),x=e.number().int(o.CAPACITY.MAX.INTEGER).min(h,o.GENERATOR_CAPACITY.MAX.MIN).max(f,o.GENERATOR_CAPACITY.MAX.MAX),R=e.number().int(o.LAMBDA.MEMORY.INTEGER).min(X,o.LAMBDA.MEMORY.MIN).max(B,o.LAMBDA.MEMORY.MAX).refine(t=>t===128||t%64===0,o.LAMBDA.MEMORY.MULTIPLE),S=e.number().int(o.CPU.INTEGER).min(256,o.CPU.MIN).max(4096,o.CPU.MAX),C=e.number().int(o.CAPACITY.DESIRED.INTEGER).min(0,o.CAPACITY.DESIRED.MIN).max(p,o.CAPACITY.DESIRED.MAX),Q=e.object({minSize:e.number().int(o.CAPACITY.WARM_POOL.MIN_SIZE.INTEGER).min(0,o.CAPACITY.WARM_POOL.MIN_SIZE.MIN).max(j,o.CAPACITY.WARM_POOL.MIN_SIZE.MAX).optional(),reuseOnScaleIn:e.boolean().optional()}).strict(),N=e.object({instanceType:e.string().optional(),amiHardwareType:e.enum(["ARM","STANDARD"]).optional(),minCapacity:e.number().int(o.CAPACITY.MIN.INTEGER).min(0,o.CAPACITY.MIN.MIN_0).max(p,o.CAPACITY.MIN.MAX).optional(),maxCapacity:e.number().int(o.CAPACITY.MAX.INTEGER).min(1,o.CAPACITY.MAX.MIN_1).max(p,o.CAPACITY.MAX.MAX).optional(),memoryLimitMiB:E(128).optional(),warmPool:Q.optional()}).strict().superRefine((t,i)=>{if(!t.instanceType||!t.amiHardwareType)return;const n=w(t.instanceType,t.amiHardwareType);n.valid||i.addIssue({code:"custom",message:n.message??o.ARCHITECTURE_MISMATCH,path:["instanceType"]})}).superRefine((t,i)=>{t.minCapacity===0&&!t.warmPool&&i.addIssue({code:"custom",message:o.CAPACITY.WARM_POOL_REQUIRED,path:["minCapacity"]}),t.warmPool?.minSize!==void 0&&t.maxCapacity!==void 0&&t.warmPool.minSize>t.maxCapacity&&i.addIssue({code:"custom",message:o.CAPACITY.WARM_POOL.MIN_SIZE_EXCEEDS_MAX_CAPACITY,path:["warmPool","minSize"]})}),$=e.enum(_).describe(`Compute type must be one of: ${_.join(", ")}`),d=e.enum(P).describe(`ECS capacity provider must be one of: ${P.join(", ")}`),b=e.string().refine(t=>W(v,t),{message:o.INSTANCE_TYPE}),H=e.object({sourceType:e.enum(["sqs","dynamodb","eventbridge"]),sourceRef:e.string().describe("Name of the source resource"),batchSize:e.number().int(o.BATCH_SIZE.INTEGER).min(1,o.BATCH_SIZE.MIN).max(1e4,o.BATCH_SIZE.MAX).optional(),startingPosition:e.enum(["TRIM_HORIZON","LATEST"]).optional(),maxBatchingWindow:e.number().int(o.BATCHING_WINDOW.INTEGER).min(0,o.BATCHING_WINDOW.MIN).max(300,o.BATCHING_WINDOW.MAX).optional(),reportBatchItemFailures:e.boolean().optional()}).strict(),q=e.object({name:e.string().min(1,o.REQUIRED.CONTAINER_NAME).optional(),image:e.string().optional(),port:A.optional(),environment:m.optional(),secretsImport:F.optional(),command:e.array(e.string()).optional(),entryPoint:e.array(e.string()).optional(),essential:e.boolean().optional(),healthCheck:e.object({command:e.array(e.string()),interval:e.number().int(o.HEALTH_CHECK.INTERVAL.INTEGER).min(5,o.HEALTH_CHECK.INTERVAL.MIN).max(300,o.HEALTH_CHECK.INTERVAL.MAX).optional(),timeout:e.number().int(o.HEALTH_CHECK.TIMEOUT.INTEGER).min(2,o.HEALTH_CHECK.TIMEOUT.MIN).max(60,o.HEALTH_CHECK.TIMEOUT.MAX).optional(),retries:e.number().int(o.HEALTH_CHECK.RETRIES.INTEGER).min(1,o.HEALTH_CHECK.RETRIES.MIN).max(10,o.HEALTH_CHECK.RETRIES.MAX).optional(),startPeriod:e.number().int(o.HEALTH_CHECK.START_PERIOD.INTEGER).min(0,o.HEALTH_CHECK.START_PERIOD.MIN).max(300,o.HEALTH_CHECK.START_PERIOD.MAX).optional()}).strict().optional(),ssmSecrets:e.array(e.string().regex(l.SECRET_NAME,o.SECRET_NAME)).optional(),extraProperties:e.array(g).optional()}).strict(),L=e.string().min(1,o.REQUIRED.SERVICE_NAME).max(255,o.MAX_LENGTH.SERVICE_NAME).regex(l.ECS_SERVICE_NAME,o.ECS_SERVICE_NAME),D=e.object({domain:e.string().optional(),loadBalancer:e.union([e.literal(!1),e.literal("public"),e.literal("internal")]).optional(),directAccess:e.boolean().optional()}).strict().refine(t=>!(t.directAccess&&t.domain),{message:o.DIRECT_ACCESS.NO_DOMAIN,path:["directAccess"]}).refine(t=>!(t.directAccess&&typeof t.loadBalancer=="string"),{message:o.DIRECT_ACCESS.NO_LOAD_BALANCER}).describe("Cluster-level configuration"),I=e.object({path:e.string().optional(),host:e.string().optional(),priority:e.number().int(o.PRIORITY.INTEGER).min(1,o.PRIORITY.MIN).max(5e4,o.PRIORITY.MAX).optional(),healthCheckPath:e.string().optional()}).strict().describe("Path/host-based routing configuration"),J=e.object({desiredCount:C.optional(),minCapacity:e.number().int(o.CAPACITY.MIN.INTEGER).min(0,o.CAPACITY.MIN.MIN_0).max(p,o.CAPACITY.MIN.MAX).optional(),maxCapacity:e.number().int(o.CAPACITY.MAX.INTEGER).min(1,o.CAPACITY.MAX.MIN_1).max(p,o.CAPACITY.MAX.MAX).optional(),scalingType:e.enum(["CPU","MEMORY"]).optional()}).strict().refine(r.check,r.params).describe("ECS service scaling configuration"),G=e.object({name:L,dockerfilePath:e.string().optional(),dockerTarget:e.string().optional(),needsDatabaseConnection:e.boolean().optional(),needsStorageConnection:e.boolean().optional(),needsMessagingConnection:e.boolean().optional(),image:e.string().optional(),containers:e.array(q).optional(),routing:e.union([I,e.array(I).min(1)]).optional(),cpu:S.optional(),memoryLimitMiB:E(512).optional(),desiredCount:C.optional(),scaling:K(J).optional(),capacityProvider:d,ec2Config:N.optional(),ssmSecretsPath:e.string().regex(l.SSM_PATH,o.SSM_PATH).optional(),extraProperties:e.array(g).optional(),alarms:Z.optional()}).strict().describe("Configuration for a service in an ECS cluster"),pe=e.object({name:c,type:$,needsConnection:e.boolean(),connectedDatabase:e.array(e.string()).optional(),connectedStorage:e.array(e.string()).optional(),connectedMessaging:e.array(e.string()).optional(),cluster:D.optional(),services:e.array(G).optional(),dockerfilePath:e.string().optional(),deployment:e.enum(["container","code"]).optional(),codePath:e.string().optional(),timeout:e.number().int(o.LAMBDA.TIMEOUT.INTEGER).min(M,o.LAMBDA.TIMEOUT.MIN).max(u,o.LAMBDA.TIMEOUT.MAX).optional(),memory:R.optional(),handler:e.string().optional(),runtime:e.string().optional(),environment:m.optional(),secrets:m.optional(),eventSources:e.array(H).optional(),functionUrl:e.object({authType:e.enum(["NONE","AWS_IAM"])}).strict().optional(),description:e.string().optional(),scheduleExpression:e.string().optional(),architecture:e.enum(k).optional(),ephemeralStorageSize:e.number().int(o.EPHEMERAL_STORAGE.INTEGER).min(512,o.EPHEMERAL_STORAGE.MIN).max(10240,o.EPHEMERAL_STORAGE.MAX).optional(),functionName:e.string().optional(),ssmSecrets:e.array(e.string()).optional(),ssmSecretsPath:e.string().optional(),alarms:z.optional(),instanceType:b.optional(),enableSSH:e.boolean().optional(),keyName:e.string().optional(),userData:e.string().optional(),securityGroups:e.array(e.string()).optional(),variableName:e.string().optional(),extraProperties:e.array(g).optional()}).strict().superRefine((t,i)=>{if(t.type==="ecs"&&t.services)for(let n=0;n<t.services.length;n++){const a=t.services[n];a?.ec2Config?.instanceType&&!a.ec2Config.amiHardwareType&&V(a.ec2Config.instanceType)!=="ARM"&&i.addIssue({code:"custom",message:`Service '${a.name??n}' uses instance type '${a.ec2Config.instanceType}' (x86), which requires Docker images built for linux/amd64. The default build targets linux/arm64 (Graviton). Use a Graviton instance type (t4g, c6g, r6g, m6g, etc.) or set amiHardwareType: "STANDARD" to acknowledge x86.`,path:["services",n,"ec2Config","instanceType"]})}t.type==="lambda"&&t.deployment==="container"&&t.architecture==="X86_64"&&i.addIssue({code:"custom",message:"Lambda architecture 'X86_64' requires Docker images built for linux/amd64, but the default build targets linux/arm64. Use 'ARM_64' for Graviton Lambdas (recommended) or ensure your build pipeline targets linux/amd64.",path:["architecture"]})}),me=e.object({appName:s,clusterName:c,containerPort:A,nameProvidedByFlag:e.boolean().optional(),ecrRepository:e.string().optional(),capacityProvider:d.optional(),useAppEcr:e.boolean().optional(),desiredCount:C.optional(),cpu:S.optional(),memoryLimitMiB:E(512).optional(),minCapacity:O.optional(),maxCapacity:x.optional(),ec2Config:N.optional(),connectionConfig:e.object({connectToDatabase:e.array(e.string()).optional()}).strict().optional()}).strict().refine(r.check,r.params),le=e.object({appName:s,functionName:c,nameProvidedByFlag:e.boolean().optional(),lambdaType:e.enum(["basic","web","custom"]).optional(),ecrRepository:e.string().optional(),timeout:e.number().int(o.LAMBDA.TIMEOUT.INTEGER).min(M,o.LAMBDA.TIMEOUT.MIN).max(u,o.LAMBDA.TIMEOUT.MAX).optional(),memory:R.optional(),enableFunctionUrl:e.boolean().optional(),description:e.string().optional(),enableCors:e.boolean().optional(),corsOrigins:e.string().optional(),corsHeaders:e.string().optional(),corsMethods:e.array(e.enum(U)).optional(),corsCredentials:e.boolean().optional(),connectionConfig:e.object({connectToDatabase:e.array(e.string()).optional()}).strict().optional()}).strict(),Ee=e.object({appName:s,instanceName:c,nameProvidedByFlag:e.boolean().optional(),instanceType:b.optional(),enableSSH:e.boolean().optional(),minCapacity:O.optional(),maxCapacity:x.optional(),connectionConfig:e.object({connectToDatabase:e.array(e.string()).optional()}).strict().optional()}).strict().refine(r.check,r.params),Ae=e.object({appName:s,clusterName:c,serviceName:L,capacityProvider:d,containerPort:A.optional(),cpu:S.optional(),memoryLimitMiB:E(512).optional(),desiredCount:C.optional(),ec2Config:N.optional(),routing:e.union([I,e.array(I).min(1)]).optional(),dockerfilePath:e.string().optional(),dockerTarget:e.string().optional(),nameProvidedByFlag:e.boolean().optional(),connectionConfig:e.object({connectToDatabase:e.array(e.string()).optional()}).strict().optional()}).strict(),y=e.object({appName:s,computeName:c,nameProvidedByFlag:e.boolean().optional(),connectionConfig:e.object({connectToDatabase:e.array(e.string()).optional()}).strict().optional()}).strict(),ee=y.extend({type:e.literal("ecs"),cluster:D.optional(),services:e.array(G).min(1,o.SERVICE.MIN_REQUIRED),dockerfilePath:e.string().optional()}).strict().refine(t=>{const i=t.services.filter(n=>n.containers?.some(a=>a.port));return i.length>1?i.every(n=>(Array.isArray(n.routing)?n.routing:n.routing?[n.routing]:[]).some(T=>T.path||T.host)):!0},{message:o.SERVICE.ROUTING_REQUIRED}).refine(t=>{const i=t.services.map(n=>n.name);return new Set(i).size===i.length},{message:o.SERVICE.UNIQUE_WITHIN_CLUSTER}),oe=y.extend({type:e.literal("lambda"),timeout:e.number().int(o.LAMBDA.TIMEOUT.INTEGER).min(M,o.LAMBDA.TIMEOUT.MIN).max(u,o.LAMBDA.TIMEOUT.MAX).optional(),memory:R.optional(),handler:e.string().optional(),runtime:e.string().optional(),environment:m.optional(),secrets:m.optional(),description:e.string().optional(),functionUrl:e.union([e.object({authType:e.enum(["AWS_IAM","NONE"]).optional()}).strict(),e.literal(!1)]).optional(),eventSources:e.array(H).optional()}).strict(),te=y.extend({type:e.literal("ec2"),instanceType:b.optional(),enableSSH:e.boolean().optional(),keyName:e.string().optional(),userData:e.string().optional(),securityGroups:e.array(e.string()).optional()}).strict(),Ce=e.discriminatedUnion("type",[ee,oe,te]),Y=e.object({path:e.string().min(1,o.REQUIRED.ROUTING_PATH),priority:e.number().int(o.PRIORITY.INTEGER).min(1,o.PRIORITY.MIN).max(5e4,o.PRIORITY.MAX).optional()}).strict(),Ie=e.object({name:e.string().min(1,o.REQUIRED.SERVICE_NAME).max(255,o.MAX_LENGTH.SERVICE_NAME).regex(l.RESOURCE_NAME,o.RESOURCE_NAME),dockerfilePath:e.string().optional(),containerPort:A.optional(),needsDatabaseConnection:e.boolean().optional(),routing:e.union([Y,e.array(Y).min(1)]).optional()}).strict(),Te=e.object({appName:s,instanceType:e.string().optional()}).strict();export{Ae as AddServiceGeneratorSchema,Ie as ApplicationServiceConfigSchema,Y as ApplicationServiceRoutingSchema,Ce as ComputeGeneratorSchema,pe as ComputeResourcePlanSchema,$ as ComputeTypeSchema,q as ContainerConfigSchema,Ee as EC2GeneratorSchema,me as ECSGeneratorSchema,N as Ec2ConfigSchema,d as EcsCapacityProviderSchema,D as EcsClusterConfigSchema,I as EcsRoutingConfigSchema,J as EcsScalingConfigSchema,G as EcsServiceConfigSchema,L as EcsServiceNameSchema,b as InstanceTypeSchema,H as LambdaEventSourceSchema,le as LambdaGeneratorSchema,R as LambdaMemorySchema,Te as TunnelGeneratorSchema,Q as WarmPoolSchema};
|
|
1
|
+
import{z as e}from"zod";import{VALIDATION_PATTERNS as m,VALIDATION_MESSAGES as o}from"../validation/patterns.js";import{COMPUTE_TYPES as h,ECS_CAPACITY_PROVIDERS as f,EC2_INSTANCE_TYPES as j,HTTP_METHODS as k,MIN_LAMBDA_MEMORY as W,MAX_LAMBDA_MEMORY as w,MIN_LAMBDA_TIMEOUT as S,MAX_LAMBDA_TIMEOUT as g,MIN_ECS_CAPACITY as x,MAX_ECS_CAPACITY as O,MAX_SCALING_CAPACITY as p,MAX_WARM_POOL_SIZE as V,constIncludes as K,COMPUTE_ARCHITECTURES as F,FUNCTION_URL_AUTH_TYPES as L,DEPLOYMENT_TYPES as Z,AMI_HARDWARE_TYPES as z,LOAD_BALANCER_TYPES as Q,SCALING_TYPES as $}from"./constants.js";import{validateArchitectureMatch as q,getArchitectureForInstanceType as J}from"./instanceTypeArchitecture.js";import{optionalOrDisabled as ee,CAPACITY_REFINEMENT as r,memoryLimitMiBSchema as I,ResourceNameSchema as c,AppNameSchema as s,PortSchema as T,ExtraPropertySchema as l,EnvironmentRecordSchema as E,SecretsImportRecordSchema as oe}from"./baseSchemas.js";import{DockerBuildSchema as A}from"@fjall/util/manifest/schemas";import{EcsServiceAlarmConfigSchema as ne,LambdaAlarmConfigSchema as te}from"./alarmSchemas.js";function ie(n){return!(n.image!==void 0&&n.docker!==void 0)}const H=e.number().int(o.CAPACITY.MIN.INTEGER).min(x,o.GENERATOR_CAPACITY.MIN.MIN).max(O,o.GENERATOR_CAPACITY.MIN.MAX),D=e.number().int(o.CAPACITY.MAX.INTEGER).min(x,o.GENERATOR_CAPACITY.MAX.MIN).max(O,o.GENERATOR_CAPACITY.MAX.MAX),N=e.number().int(o.LAMBDA.MEMORY.INTEGER).min(W,o.LAMBDA.MEMORY.MIN).max(w,o.LAMBDA.MEMORY.MAX).refine(n=>n===128||n%64===0,o.LAMBDA.MEMORY.MULTIPLE),G=e.string().regex(m.LAMBDA_RUNTIME_IDENTIFIER,o.LAMBDA.RUNTIME),d=e.number().int(o.CPU.INTEGER).min(256,o.CPU.MIN).max(4096,o.CPU.MAX),M=e.number().int(o.CAPACITY.DESIRED.INTEGER).min(0,o.CAPACITY.DESIRED.MIN).max(p,o.CAPACITY.DESIRED.MAX),C=e.object({connectToDatabase:e.array(e.string()).optional()}).strict(),ae=e.object({minSize:e.number().int(o.CAPACITY.WARM_POOL.MIN_SIZE.INTEGER).min(0,o.CAPACITY.WARM_POOL.MIN_SIZE.MIN).max(V,o.CAPACITY.WARM_POOL.MIN_SIZE.MAX).optional(),reuseOnScaleIn:e.boolean().optional()}).strict(),_=e.object({instanceType:e.string().optional(),amiHardwareType:e.enum(z).optional(),minCapacity:e.number().int(o.CAPACITY.MIN.INTEGER).min(0,o.CAPACITY.MIN.MIN_0).max(p,o.CAPACITY.MIN.MAX).optional(),maxCapacity:e.number().int(o.CAPACITY.MAX.INTEGER).min(1,o.CAPACITY.MAX.MIN_1).max(p,o.CAPACITY.MAX.MAX).optional(),memoryLimitMiB:I(128).optional(),warmPool:ae.optional(),extraProperties:e.array(l).optional()}).strict().superRefine((n,i)=>{if(!n.instanceType||!n.amiHardwareType)return;const t=q(n.instanceType,n.amiHardwareType);t.valid||i.addIssue({code:"custom",message:t.message??o.ARCHITECTURE_MISMATCH,path:["instanceType"]})}).superRefine((n,i)=>{n.minCapacity===0&&!n.warmPool&&i.addIssue({code:"custom",message:o.CAPACITY.WARM_POOL_REQUIRED,path:["minCapacity"]}),n.warmPool?.minSize!==void 0&&n.maxCapacity!==void 0&&n.warmPool.minSize>n.maxCapacity&&i.addIssue({code:"custom",message:o.CAPACITY.WARM_POOL.MIN_SIZE_EXCEEDS_MAX_CAPACITY,path:["warmPool","minSize"]})}),re=e.enum(h).describe(`Compute type must be one of: ${h.join(", ")}`),y=e.enum(f).describe(`ECS capacity provider must be one of: ${f.join(", ")}`),b=e.string().refine(n=>K(j,n),{message:o.INSTANCE_TYPE}),Y=e.object({sourceType:e.enum(["sqs","dynamodb","eventbridge"]),sourceRef:e.string().describe("Name of the source resource"),batchSize:e.number().int(o.BATCH_SIZE.INTEGER).min(1,o.BATCH_SIZE.MIN).max(1e4,o.BATCH_SIZE.MAX).optional(),startingPosition:e.enum(["TRIM_HORIZON","LATEST"]).optional(),maxBatchingWindow:e.number().int(o.BATCHING_WINDOW.INTEGER).min(0,o.BATCHING_WINDOW.MIN).max(300,o.BATCHING_WINDOW.MAX).optional(),reportBatchItemFailures:e.boolean().optional()}).strict(),ce=e.object({name:e.string().min(1,o.REQUIRED.CONTAINER_NAME).optional(),image:e.string().optional(),port:T.optional(),environment:E.optional(),secretsImport:oe.optional(),command:e.array(e.string()).optional(),entryPoint:e.array(e.string()).optional(),essential:e.boolean().optional(),healthCheck:e.object({command:e.array(e.string()),interval:e.number().int(o.HEALTH_CHECK.INTERVAL.INTEGER).min(5,o.HEALTH_CHECK.INTERVAL.MIN).max(300,o.HEALTH_CHECK.INTERVAL.MAX).optional(),timeout:e.number().int(o.HEALTH_CHECK.TIMEOUT.INTEGER).min(2,o.HEALTH_CHECK.TIMEOUT.MIN).max(60,o.HEALTH_CHECK.TIMEOUT.MAX).optional(),retries:e.number().int(o.HEALTH_CHECK.RETRIES.INTEGER).min(1,o.HEALTH_CHECK.RETRIES.MIN).max(10,o.HEALTH_CHECK.RETRIES.MAX).optional(),startPeriod:e.number().int(o.HEALTH_CHECK.START_PERIOD.INTEGER).min(0,o.HEALTH_CHECK.START_PERIOD.MIN).max(300,o.HEALTH_CHECK.START_PERIOD.MAX).optional()}).strict().optional(),ssmSecrets:e.array(e.string().regex(m.SECRET_NAME,o.SECRET_NAME)).optional(),extraProperties:e.array(l).optional()}).strict(),U=e.string().min(1,o.REQUIRED.SERVICE_NAME).max(255,o.MAX_LENGTH.SERVICE_NAME).regex(m.ECS_SERVICE_NAME,o.ECS_SERVICE_NAME),v=e.object({domain:e.string().optional(),loadBalancer:e.union([e.literal(!1),e.enum(Q)]).optional(),directAccess:e.boolean().optional(),extraProperties:e.array(l).optional()}).strict().refine(n=>!(n.directAccess&&n.domain),{message:o.DIRECT_ACCESS.NO_DOMAIN,path:["directAccess"]}).refine(n=>!(n.directAccess&&typeof n.loadBalancer=="string"),{message:o.DIRECT_ACCESS.NO_LOAD_BALANCER}).describe("Cluster-level configuration"),u=e.object({path:e.string().optional(),host:e.string().optional(),priority:e.number().int(o.PRIORITY.INTEGER).min(1,o.PRIORITY.MIN).max(5e4,o.PRIORITY.MAX).optional(),healthCheckPath:e.string().optional()}).strict().describe("Path/host-based routing configuration"),se=e.object({desiredCount:M.optional(),minCapacity:e.number().int(o.CAPACITY.MIN.INTEGER).min(0,o.CAPACITY.MIN.MIN_0).max(p,o.CAPACITY.MIN.MAX).optional(),maxCapacity:e.number().int(o.CAPACITY.MAX.INTEGER).min(1,o.CAPACITY.MAX.MIN_1).max(p,o.CAPACITY.MAX.MAX).optional(),scalingType:e.enum($).optional()}).strict().refine(r.check,r.params).describe("ECS service scaling configuration"),B=e.object({name:U,docker:A.optional(),needsDatabaseConnection:e.boolean().optional(),needsStorageConnection:e.boolean().optional(),needsMessagingConnection:e.boolean().optional(),image:e.string().optional(),containers:e.array(ce).optional(),routing:e.union([u,e.array(u).min(1)]).optional(),cpu:d.optional(),memoryLimitMiB:I(512).optional(),desiredCount:M.optional(),scaling:ee(se).optional(),capacityProvider:y,ec2Config:_.optional(),ssmSecretsPath:e.string().regex(m.SSM_PATH,o.SSM_PATH).optional(),extraProperties:e.array(l).optional(),alarms:ne.optional()}).strict().superRefine((n,i)=>{ie(n)||i.addIssue({code:"custom",path:["docker"],message:o.IMAGE_DOCKER_MUTEX})}).describe("Configuration for a service in an ECS cluster"),Re=e.object({name:c,type:re,needsConnection:e.boolean(),connectedDatabase:e.array(e.string()).optional(),connectedStorage:e.array(e.string()).optional(),connectedMessaging:e.array(e.string()).optional(),cluster:v.optional(),services:e.array(B).optional(),docker:A.partial().optional(),deployment:e.enum(Z).optional(),codePath:e.string().optional(),timeout:e.number().int(o.LAMBDA.TIMEOUT.INTEGER).min(S,o.LAMBDA.TIMEOUT.MIN).max(g,o.LAMBDA.TIMEOUT.MAX).optional(),memory:N.optional(),handler:e.string().optional(),runtime:G.optional(),environment:E.optional(),secrets:E.optional(),eventSources:e.array(Y).optional(),functionUrl:e.object({authType:e.enum(L)}).strict().optional(),description:e.string().optional(),scheduleExpression:e.string().optional(),architecture:e.enum(F).optional(),ephemeralStorageSize:e.number().int(o.EPHEMERAL_STORAGE.INTEGER).min(512,o.EPHEMERAL_STORAGE.MIN).max(10240,o.EPHEMERAL_STORAGE.MAX).optional(),functionName:e.string().optional(),ssmSecrets:e.array(e.string()).optional(),ssmSecretsPath:e.string().optional(),alarms:te.optional(),instanceType:b.optional(),enableSSH:e.boolean().optional(),keyName:e.string().optional(),userData:e.string().optional(),securityGroups:e.array(e.string()).optional(),variableName:e.string().optional(),extraProperties:e.array(l).optional()}).strict().superRefine((n,i)=>{if(n.type==="ecs"&&n.services)for(let t=0;t<n.services.length;t++){const a=n.services[t];a?.ec2Config?.instanceType&&!a.ec2Config.amiHardwareType&&J(a.ec2Config.instanceType)!=="ARM"&&i.addIssue({code:"custom",message:`Service '${a.name??t}' uses instance type '${a.ec2Config.instanceType}' (x86), which requires Docker images built for linux/amd64. The default build targets linux/arm64 (Graviton). Use a Graviton instance type (t4g, c6g, r6g, m6g, etc.) or set amiHardwareType: "STANDARD" to acknowledge x86.`,path:["services",t,"ec2Config","instanceType"]})}n.type==="lambda"&&n.deployment==="container"&&n.architecture==="X86_64"&&i.addIssue({code:"custom",message:"Lambda architecture 'X86_64' requires Docker images built for linux/amd64, but the default build targets linux/arm64. Use 'ARM_64' for Graviton Lambdas (recommended) or ensure your build pipeline targets linux/amd64.",path:["architecture"]})}),Se=e.object({appName:s,clusterName:c,containerPort:T,nameProvidedByFlag:e.boolean().optional(),ecrRepository:e.string().optional(),capacityProvider:y.optional(),useAppEcr:e.boolean().optional(),desiredCount:M.optional(),cpu:d.optional(),memoryLimitMiB:I(512).optional(),minCapacity:H.optional(),maxCapacity:D.optional(),ec2Config:_.optional(),connectionConfig:C.optional()}).strict().refine(r.check,r.params),ge=e.object({appName:s,functionName:c,nameProvidedByFlag:e.boolean().optional(),lambdaType:e.enum(["basic","web","custom"]).optional(),ecrRepository:e.string().optional(),timeout:e.number().int(o.LAMBDA.TIMEOUT.INTEGER).min(S,o.LAMBDA.TIMEOUT.MIN).max(g,o.LAMBDA.TIMEOUT.MAX).optional(),memory:N.optional(),enableFunctionUrl:e.boolean().optional(),description:e.string().optional(),enableCors:e.boolean().optional(),corsOrigins:e.string().optional(),corsHeaders:e.string().optional(),corsMethods:e.array(e.enum(k)).optional(),corsCredentials:e.boolean().optional(),connectionConfig:C.optional()}).strict(),Ne=e.object({appName:s,instanceName:c,nameProvidedByFlag:e.boolean().optional(),instanceType:b.optional(),enableSSH:e.boolean().optional(),minCapacity:H.optional(),maxCapacity:D.optional(),connectionConfig:C.optional()}).strict().refine(r.check,r.params),de=e.object({appName:s,clusterName:c,serviceName:U,capacityProvider:y,containerPort:T.optional(),cpu:d.optional(),memoryLimitMiB:I(512).optional(),desiredCount:M.optional(),ec2Config:_.optional(),routing:e.union([u,e.array(u).min(1)]).optional(),docker:A.partial().optional(),nameProvidedByFlag:e.boolean().optional(),connectionConfig:C.optional()}).strict(),P=e.object({appName:s,computeName:c,nameProvidedByFlag:e.boolean().optional(),connectionConfig:C.optional()}).strict(),me=P.extend({type:e.literal("ecs"),cluster:v.optional(),services:e.array(B).min(1,o.SERVICE.MIN_REQUIRED),docker:A.partial().optional()}).strict().refine(n=>{const i=n.services.filter(t=>t.containers?.some(a=>a.port));return i.length>1?i.every(t=>(Array.isArray(t.routing)?t.routing:t.routing?[t.routing]:[]).some(R=>R.path||R.host)):!0},{message:o.SERVICE.ROUTING_REQUIRED}).refine(n=>{const i=n.services.map(t=>t.name);return new Set(i).size===i.length},{message:o.SERVICE.UNIQUE_WITHIN_CLUSTER}),pe=P.extend({type:e.literal("lambda"),timeout:e.number().int(o.LAMBDA.TIMEOUT.INTEGER).min(S,o.LAMBDA.TIMEOUT.MIN).max(g,o.LAMBDA.TIMEOUT.MAX).optional(),memory:N.optional(),handler:e.string().optional(),runtime:G.optional(),environment:E.optional(),secrets:E.optional(),description:e.string().optional(),functionUrl:e.union([e.object({authType:e.enum(L).optional()}).strict(),e.literal(!1)]).optional(),eventSources:e.array(Y).optional()}).strict(),le=P.extend({type:e.literal("ec2"),instanceType:b.optional(),enableSSH:e.boolean().optional(),keyName:e.string().optional(),userData:e.string().optional(),securityGroups:e.array(e.string()).optional()}).strict(),_e=e.discriminatedUnion("type",[me,pe,le]),X=e.object({path:e.string().min(1,o.REQUIRED.ROUTING_PATH),priority:e.number().int(o.PRIORITY.INTEGER).min(1,o.PRIORITY.MIN).max(5e4,o.PRIORITY.MAX).optional()}).strict(),ye=e.object({name:e.string().min(1,o.REQUIRED.SERVICE_NAME).max(255,o.MAX_LENGTH.SERVICE_NAME).regex(m.RESOURCE_NAME,o.RESOURCE_NAME),docker:A.partial().optional(),containerPort:T.optional(),needsDatabaseConnection:e.boolean().optional(),routing:e.union([X,e.array(X).min(1)]).optional()}).strict(),be=e.object({appName:s,instanceType:e.string().optional()}).strict();export{de as AddServiceGeneratorSchema,ye as ApplicationServiceConfigSchema,X as ApplicationServiceRoutingSchema,_e as ComputeGeneratorSchema,Re as ComputeResourcePlanSchema,re as ComputeTypeSchema,ce as ContainerConfigSchema,Ne as EC2GeneratorSchema,Se as ECSGeneratorSchema,_ as Ec2ConfigSchema,y as EcsCapacityProviderSchema,v as EcsClusterConfigSchema,u as EcsRoutingConfigSchema,se as EcsScalingConfigSchema,B as EcsServiceConfigSchema,U as EcsServiceNameSchema,b as InstanceTypeSchema,Y as LambdaEventSourceSchema,ge as LambdaGeneratorSchema,N as LambdaMemorySchema,G as LambdaRuntimeSchema,be as TunnelGeneratorSchema,ae as WarmPoolSchema};
|
|
@@ -29,6 +29,20 @@ export declare const DEPLOYMENT_TYPE: Readonly<{
|
|
|
29
29
|
export declare const COMPUTE_ARCHITECTURES: readonly ["ARM_64", "X86_64"];
|
|
30
30
|
export type ComputeArchitecture = (typeof COMPUTE_ARCHITECTURES)[number];
|
|
31
31
|
export declare const DEFAULT_COMPUTE_ARCHITECTURE: ComputeArchitecture;
|
|
32
|
+
export declare const FUNCTION_URL_AUTH_TYPES: readonly ["NONE", "AWS_IAM"];
|
|
33
|
+
export type FunctionUrlAuthType = (typeof FUNCTION_URL_AUTH_TYPES)[number];
|
|
34
|
+
export declare const LOAD_BALANCER_TYPES: readonly ["public", "internal"];
|
|
35
|
+
export type LoadBalancerType = (typeof LOAD_BALANCER_TYPES)[number];
|
|
36
|
+
export declare const SCALING_TYPES: readonly ["CPU", "MEMORY"];
|
|
37
|
+
export type ScalingType = (typeof SCALING_TYPES)[number];
|
|
38
|
+
export declare const AMI_HARDWARE_TYPES: readonly ["ARM", "STANDARD"];
|
|
39
|
+
export type AmiHardwareType = (typeof AMI_HARDWARE_TYPES)[number];
|
|
40
|
+
export declare const PATTERN_DATABASE_TYPES: readonly ["Instance", "Aurora"];
|
|
41
|
+
export type PatternDatabaseType = (typeof PATTERN_DATABASE_TYPES)[number];
|
|
42
|
+
export declare const DATABASE_ENGINES: readonly ["postgresql", "mysql"];
|
|
43
|
+
export type DatabaseEngine = (typeof DATABASE_ENGINES)[number];
|
|
44
|
+
export declare const GOVERNANCE_PRESETS: readonly ["foundation", "compliance", "hardened"];
|
|
45
|
+
export type GovernancePreset = (typeof GOVERNANCE_PRESETS)[number];
|
|
32
46
|
export { ECS_CAPACITY_PROVIDERS, type EcsCapacityProvider, } from "./sharedTypes.js";
|
|
33
47
|
import type { EcsCapacityProvider } from "./sharedTypes.js";
|
|
34
48
|
export declare const DEFAULT_CAPACITY_PROVIDER: EcsCapacityProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const t=Object.freeze({RESOURCE_SUFFIXES:Object.freeze({storage:"Storage",database:"Database",cluster:"Cluster",function:"Function",instance:"Instance",compute:"Compute"})});import{DATABASE_TYPES as q}from"./sharedTypes.js";const g=["ecs","lambda","ec2"],x=Object.freeze({ECS:"ecs",LAMBDA:"lambda",EC2:"ec2"}),o=["code","container"],l=Object.freeze({CODE:"code",CONTAINER:"container"}),E=["ARM_64","X86_64"],c="ARM_64",A=["NONE","AWS_IAM"],T=["public","internal"],_=["CPU","MEMORY"],n=["ARM","STANDARD"],s=["Instance","Aurora"],S=["postgresql","mysql"],p=["foundation","compliance","hardened"];import{ECS_CAPACITY_PROVIDERS as y}from"./sharedTypes.js";const P="FARGATE",a=["payload","nextjs"],O=new Set(a);import{APP_TYPES as Z,CUSTOM_TIER as h}from"./sharedTypes.js";const R=["t3.nano","t3.micro","t3.small","t3.medium","t3.large","t3.xlarge","t3.2xlarge","t3a.nano","t3a.micro","t3a.small","t3a.medium","t3a.large","t3a.xlarge","t3a.2xlarge","t4g.nano","t4g.micro","t4g.small","t4g.medium","t4g.large","t4g.xlarge","t4g.2xlarge","c5.large","c5.xlarge","c5.2xlarge","c5.4xlarge","c5.9xlarge","c5.12xlarge","c5.18xlarge","c5.24xlarge","c5a.large","c5a.xlarge","c5a.2xlarge","c5a.4xlarge","c5a.8xlarge","c5a.12xlarge","c5a.16xlarge","c5a.24xlarge","c6g.medium","c6g.large","c6g.xlarge","c6g.2xlarge","c6g.4xlarge","c6g.8xlarge","c6g.12xlarge","c6g.16xlarge","r5.large","r5.xlarge","r5.2xlarge","r5.4xlarge","r5.8xlarge","r5.12xlarge","r5.16xlarge","r5.24xlarge","r5a.large","r5a.xlarge","r5a.2xlarge","r5a.4xlarge","r5a.8xlarge","r5a.12xlarge","r5a.16xlarge","r5a.24xlarge","r6g.medium","r6g.large","r6g.xlarge","r6g.2xlarge","r6g.4xlarge","r6g.8xlarge","r6g.12xlarge","r6g.16xlarge","i3.large","i3.xlarge","i3.2xlarge","i3.4xlarge","i3.8xlarge","i3.16xlarge","p3.2xlarge","p3.8xlarge","p3.16xlarge","g4dn.xlarge","g4dn.2xlarge","g4dn.4xlarge","g4dn.8xlarge","g4dn.12xlarge","g4dn.16xlarge","m5.large","m5.xlarge","m5.2xlarge","m5.4xlarge","m5.8xlarge","m5.12xlarge","m5.16xlarge","m5.24xlarge","m5a.large","m5a.xlarge","m5a.2xlarge","m5a.4xlarge","m5a.8xlarge","m5a.12xlarge","m5a.16xlarge","m5a.24xlarge"],C=[0,1,5,10,15,30,60];function m(e,r){return e.includes(r)}const I=1,M=65535,N=35255,D=128,L=10240,U=1,Y=900,i=1,d=1e3,u=100,F=100,f=1,B=!0,b=3e3,G="t4g.micro",H=30,X=["GET","POST","PUT","DELETE","HEAD","OPTIONS","PATCH"],V=["standard","assets","upload","website"],j=["AES256","KMS"];import{BACKUP_VAULT_TIERS as v}from"./sharedTypes.js";export{n as AMI_HARDWARE_TYPES,Z as APP_TYPES,v as BACKUP_VAULT_TIERS,E as COMPUTE_ARCHITECTURES,x as COMPUTE_TYPE,g as COMPUTE_TYPES,h as CUSTOM_TIER,S as DATABASE_ENGINES,q as DATABASE_TYPES,t as DEFAULTS,P as DEFAULT_CAPACITY_PROVIDER,c as DEFAULT_COMPUTE_ARCHITECTURE,b as DEFAULT_CONTAINER_PORT,N as DEFAULT_DATABASE_PORT,G as DEFAULT_EC2_INSTANCE_TYPE,H as DEFAULT_SECRET_ROTATION_DAYS,f as DEFAULT_WARM_POOL_MIN_SIZE,B as DEFAULT_WARM_POOL_REUSE_ON_SCALE_IN,l as DEPLOYMENT_TYPE,o as DEPLOYMENT_TYPES,R as EC2_INSTANCE_TYPES,y as ECS_CAPACITY_PROVIDERS,A as FUNCTION_URL_AUTH_TYPES,p as GOVERNANCE_PRESETS,X as HTTP_METHODS,T as LOAD_BALANCER_TYPES,d as MAX_ECS_CAPACITY,L as MAX_LAMBDA_MEMORY,Y as MAX_LAMBDA_TIMEOUT,M as MAX_PORT,u as MAX_SCALING_CAPACITY,F as MAX_WARM_POOL_SIZE,i as MIN_ECS_CAPACITY,D as MIN_LAMBDA_MEMORY,U as MIN_LAMBDA_TIMEOUT,I as MIN_PORT,s as PATTERN_DATABASE_TYPES,O as PATTERN_TYPES,a as PATTERN_TYPE_VALUES,j as S3_ENCRYPTION_TYPES,_ as SCALING_TYPES,V as STORAGE_PRESET_TYPES,C as VALID_MONITORING_INTERVALS,m as constIncludes};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
export type { DatabaseType } from "./constants.js";
|
|
2
3
|
/** Reusable backup retention validation. Range: 1-35 days. */
|
|
3
4
|
export declare const BackupRetentionSchema: z.ZodNumber;
|
|
4
5
|
/** Reusable monitoring interval validation. Must be one of: 0, 1, 5, 10, 15, 30, 60. */
|
|
@@ -9,6 +10,7 @@ export declare const DatabaseTypeSchema: z.ZodEnum<{
|
|
|
9
10
|
Aurora: "Aurora";
|
|
10
11
|
Instance: "Instance";
|
|
11
12
|
GlobalAurora: "GlobalAurora";
|
|
13
|
+
ClickHouse: "ClickHouse";
|
|
12
14
|
}>;
|
|
13
15
|
export declare const ProxyConfigSchema: z.ZodObject<{
|
|
14
16
|
maxConnections: z.ZodOptional<z.ZodNumber>;
|
|
@@ -116,6 +118,7 @@ export declare const DatabaseResourcePlanSchema: z.ZodObject<{
|
|
|
116
118
|
Aurora: "Aurora";
|
|
117
119
|
Instance: "Instance";
|
|
118
120
|
GlobalAurora: "GlobalAurora";
|
|
121
|
+
ClickHouse: "ClickHouse";
|
|
119
122
|
}>;
|
|
120
123
|
databaseName: z.ZodString;
|
|
121
124
|
instanceType: z.ZodOptional<z.ZodString>;
|
|
@@ -204,6 +207,7 @@ export declare const DatabaseResourcePlanSchema: z.ZodObject<{
|
|
|
204
207
|
* - Instance: instanceType, multiAz, readReplica
|
|
205
208
|
* - Aurora: writer, readers, backupRetention
|
|
206
209
|
* - GlobalAurora: primaryRegion (required!), secondaryRegions, enableGlobalWriteForwarding
|
|
210
|
+
* - ClickHouse: instanceType, coldTier, optimiseSchedule, backupSchedule, backupRetentionDays
|
|
207
211
|
*/
|
|
208
212
|
export declare const DatabaseGeneratorSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
209
213
|
appName: z.ZodString;
|
|
@@ -386,6 +390,23 @@ export declare const DatabaseGeneratorSchema: z.ZodDiscriminatedUnion<[z.ZodObje
|
|
|
386
390
|
monitoringInterval: z.ZodOptional<z.ZodNumber>;
|
|
387
391
|
snapshotIdentifier: z.ZodOptional<z.ZodString>;
|
|
388
392
|
snapshotUsername: z.ZodOptional<z.ZodString>;
|
|
393
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
394
|
+
appName: z.ZodString;
|
|
395
|
+
nameProvidedByFlag: z.ZodOptional<z.ZodBoolean>;
|
|
396
|
+
databaseName: z.ZodString;
|
|
397
|
+
resourceName: z.ZodOptional<z.ZodString>;
|
|
398
|
+
connectionConfig: z.ZodOptional<z.ZodObject<{
|
|
399
|
+
connectToCompute: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
400
|
+
connectToServices: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
401
|
+
}, z.core.$strict>>;
|
|
402
|
+
databaseType: z.ZodLiteral<"ClickHouse">;
|
|
403
|
+
instanceType: z.ZodOptional<z.ZodString>;
|
|
404
|
+
coldTier: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
405
|
+
mode: z.ZodLiteral<"s3">;
|
|
406
|
+
}, z.core.$strict>, z.ZodLiteral<false>]>>;
|
|
407
|
+
optimiseSchedule: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
|
|
408
|
+
backupSchedule: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
|
|
409
|
+
backupRetentionDays: z.ZodOptional<z.ZodNumber>;
|
|
389
410
|
}, z.core.$strict>], "databaseType">;
|
|
390
411
|
export declare const DatabaseGeneratorSchemaFromUI: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
391
412
|
appName: z.ZodString;
|
|
@@ -568,6 +589,23 @@ export declare const DatabaseGeneratorSchemaFromUI: z.ZodDiscriminatedUnion<[z.Z
|
|
|
568
589
|
monitoringInterval: z.ZodOptional<z.ZodNumber>;
|
|
569
590
|
snapshotIdentifier: z.ZodOptional<z.ZodString>;
|
|
570
591
|
snapshotUsername: z.ZodOptional<z.ZodString>;
|
|
592
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
593
|
+
appName: z.ZodString;
|
|
594
|
+
nameProvidedByFlag: z.ZodOptional<z.ZodBoolean>;
|
|
595
|
+
databaseName: z.ZodString;
|
|
596
|
+
connectionConfig: z.ZodOptional<z.ZodObject<{
|
|
597
|
+
connectToCompute: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
598
|
+
connectToServices: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
599
|
+
}, z.core.$strict>>;
|
|
600
|
+
resourceName: z.ZodString;
|
|
601
|
+
databaseType: z.ZodLiteral<"ClickHouse">;
|
|
602
|
+
instanceType: z.ZodOptional<z.ZodString>;
|
|
603
|
+
coldTier: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
604
|
+
mode: z.ZodLiteral<"s3">;
|
|
605
|
+
}, z.core.$strict>, z.ZodLiteral<false>]>>;
|
|
606
|
+
optimiseSchedule: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
|
|
607
|
+
backupSchedule: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
|
|
608
|
+
backupRetentionDays: z.ZodOptional<z.ZodNumber>;
|
|
571
609
|
}, z.core.$strict>], "databaseType">;
|
|
572
610
|
/**
|
|
573
611
|
* Schema for adding RDS Proxy to an existing database.
|
|
@@ -630,6 +668,39 @@ export declare const DynamoDBResourcePlanSchema: z.ZodObject<{
|
|
|
630
668
|
sourceText: z.ZodString;
|
|
631
669
|
}, z.core.$strict>>>;
|
|
632
670
|
}, z.core.$strict>;
|
|
671
|
+
/**
|
|
672
|
+
* ClickHouse analytics database resource plan schema.
|
|
673
|
+
*
|
|
674
|
+
* Parallel to `DatabaseResourcePlanSchema` rather than extending it — RDS
|
|
675
|
+
* fields (multiAz, proxy, readReplica, readers, writer) do not apply to
|
|
676
|
+
* ClickHouse per the 2026-05-05 ClickHouse Database Factory promotion design
|
|
677
|
+
* (D24). The top-level `type` discriminator is `"ClickHouse"` per D2.
|
|
678
|
+
*
|
|
679
|
+
* The R2 cold tier from the original construct was dropped per D12; only the
|
|
680
|
+
* S3 cold tier (`{ mode: "s3" }`) is valid. Use `coldTier: false` to disable
|
|
681
|
+
* cold-tier storage entirely.
|
|
682
|
+
*
|
|
683
|
+
* Sidecar schedule props (`optimiseSchedule`, `backupSchedule`) are accepted
|
|
684
|
+
* as raw cron strings here and validated at the EventBridge `Schedule`
|
|
685
|
+
* boundary post-cutover per D19 + D20.
|
|
686
|
+
*/
|
|
687
|
+
export declare const ClickHouseResourcePlanSchema: z.ZodObject<{
|
|
688
|
+
name: z.ZodString;
|
|
689
|
+
type: z.ZodLiteral<"ClickHouse">;
|
|
690
|
+
databaseName: z.ZodString;
|
|
691
|
+
instanceType: z.ZodOptional<z.ZodString>;
|
|
692
|
+
coldTier: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
693
|
+
mode: z.ZodLiteral<"s3">;
|
|
694
|
+
}, z.core.$strict>, z.ZodLiteral<false>]>>;
|
|
695
|
+
optimiseSchedule: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
|
|
696
|
+
backupSchedule: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
|
|
697
|
+
backupRetentionDays: z.ZodOptional<z.ZodNumber>;
|
|
698
|
+
variableName: z.ZodOptional<z.ZodString>;
|
|
699
|
+
extraProperties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
700
|
+
key: z.ZodString;
|
|
701
|
+
sourceText: z.ZodString;
|
|
702
|
+
}, z.core.$strict>>>;
|
|
703
|
+
}, z.core.$strict>;
|
|
633
704
|
export type ProxyConfig = z.infer<typeof ProxyConfigSchema>;
|
|
634
705
|
export type ReadReplicaConfig = z.infer<typeof ReadReplicaConfigSchema>;
|
|
635
706
|
export type CredentialsConfig = z.infer<typeof CredentialsConfigSchema>;
|
|
@@ -639,5 +710,14 @@ export type AuroraWriterConfig = z.infer<typeof AuroraWriterConfigSchema>;
|
|
|
639
710
|
export type AuroraReadersConfig = z.infer<typeof AuroraReadersConfigSchema>;
|
|
640
711
|
export type DatabaseResourcePlan = z.infer<typeof DatabaseResourcePlanSchema>;
|
|
641
712
|
export type DynamoDBResourcePlan = z.infer<typeof DynamoDBResourcePlanSchema>;
|
|
713
|
+
export type ClickHouseResourcePlan = z.infer<typeof ClickHouseResourcePlanSchema>;
|
|
642
714
|
export type DatabaseGeneratorOptions = z.infer<typeof DatabaseGeneratorSchema>;
|
|
643
715
|
export type AddProxyGeneratorOptions = z.infer<typeof AddProxyGeneratorSchema>;
|
|
716
|
+
export type BackupRetention = z.infer<typeof BackupRetentionSchema>;
|
|
717
|
+
export type MonitoringInterval = z.infer<typeof MonitoringIntervalSchema>;
|
|
718
|
+
export type DatabasePort = z.infer<typeof DatabasePortSchema>;
|
|
719
|
+
export type SecretRotationConfig = z.infer<typeof SecretRotationConfigSchema>;
|
|
720
|
+
export type AuroraReaderConfig = z.infer<typeof AuroraReaderConfigSchema>;
|
|
721
|
+
export type AwsManagedKey = z.infer<typeof AwsManagedKeySchema>;
|
|
722
|
+
export type CustomerManagedKeyMarker = z.infer<typeof CustomerManagedKeyMarkerSchema>;
|
|
723
|
+
export type EncryptionKeySpec = z.infer<typeof EncryptionKeySpecSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as
|
|
1
|
+
import{z as e}from"zod";import{VALIDATION_PATTERNS as I,VALIDATION_MESSAGES as o}from"../validation/patterns.js";import{DATABASE_TYPES as A,VALID_MONITORING_INTERVALS as M,DATABASE_ENGINES as y,constIncludes as h}from"./constants.js";import{optionalOrDisabled as i,ResourceNameSchema as t,AppNameSchema as c,DatabaseNameSchema as f,ExtraPropertySchema as l}from"./baseSchemas.js";import{RdsAlarmConfigSchema as G}from"./alarmSchemas.js";const a=e.number().int(o.BACKUP_RETENTION.INTEGER).min(1,o.BACKUP_RETENTION.MIN).max(35,o.BACKUP_RETENTION.MAX),p=e.number().int(o.MONITORING_INTERVAL.INTEGER).refine(n=>h(M,n),{message:o.MONITORING_INTERVAL.VALUES}),b=e.number().int(o.DATABASE.PORT.INTEGER).min(1024,o.DATABASE.PORT.MIN).max(65535,o.DATABASE.PORT.MAX),F=e.enum(A).describe(`Database type must be one of: ${A.join(", ")}`),U=e.object({maxConnections:e.number().int(o.MAX_CONNECTIONS.INTEGER).min(1,o.MAX_CONNECTIONS.MIN).max(100,o.MAX_CONNECTIONS.MAX).optional(),maxIdleConnections:e.number().int(o.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.INTEGER).min(0,o.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.MIN).max(100,o.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.MAX).optional(),connectionBorrowTimeout:e.number().int(o.PROXY_CONFIG.BORROW_TIMEOUT.INTEGER).min(1,o.PROXY_CONFIG.BORROW_TIMEOUT.MIN).max(3600,o.PROXY_CONFIG.BORROW_TIMEOUT.MAX).optional(),requireTLS:e.boolean().optional()}).strict().describe("RDS Proxy configuration"),X=e.object({instanceType:e.string().optional(),availabilityZone:e.string().optional()}).strict().describe("Read replica configuration"),B=e.object({automaticallyAfterDays:e.number().int(o.ROTATION.INTEGER).min(1,o.ROTATION.MIN).max(365,o.ROTATION.MAX).optional()}).strict().describe("Secret rotation configuration"),T=e.object({username:e.string().min(1,o.REQUIRED.USERNAME).max(63,o.USERNAME.MAX_LENGTH).optional(),secretRotation:B.optional()}).strict().describe("Database credentials configuration"),R=i(U),d=i(X),P=e.object({scaleWithWriter:e.boolean().optional(),enableDatabaseInsights:e.boolean().optional(),identifierSuffix:e.string().min(1,o.IDENTIFIER_SUFFIX.REQUIRED).max(50,o.IDENTIFIER_SUFFIX.MAX_LENGTH).optional(),availabilityZone:e.string().optional()}).strict().describe("Configuration for a single Aurora reader instance"),m=e.object({enableDatabaseInsights:e.boolean().optional(),identifierSuffix:e.string().min(1,o.IDENTIFIER_SUFFIX.REQUIRED).max(50,o.IDENTIFIER_SUFFIX.MAX_LENGTH).optional(),availabilityZone:e.string().optional()}).strict().describe("Configuration for Aurora writer instance"),j=e.object({count:e.number().int(o.READER.COUNT.INTEGER).min(0,o.READER.COUNT.MIN).max(15,o.READER.COUNT.MAX).optional(),instances:e.array(P).max(15,o.READER_INSTANCES.MAX).optional(),defaultEnableDatabaseInsights:e.boolean().optional()}).strict().refine(n=>!(n.count!==void 0&&n.instances!==void 0),{message:o.READER_INSTANCES.COUNT_OR_INSTANCES,path:["count"]}).describe("Aurora readers configuration"),E=i(j),L=e.object({awsManaged:e.literal(!0)}).strict(),k=e.object({useCMK:e.literal(!0)}).strict(),S=e.union([L,k]),v=e.object({mode:e.enum(["standard","advanced"]).optional(),encryptionKey:S.optional()}).strict().describe("Database Insights configuration"),g=i(v),u=e.object({storageKey:S.optional()}).strict().describe("Encryption configuration (DESTRUCTIVE to change storageKey)"),ne=e.object({name:t,type:F,databaseName:e.string().min(1,o.REQUIRED.DATABASE_NAME),instanceType:e.string().optional(),allocatedStorage:e.number().optional(),multiAz:e.boolean().optional(),publiclyAccessible:e.boolean().optional(),databaseInsights:g.optional(),port:b.optional(),deletionProtection:e.boolean().optional(),proxy:R.optional(),credentials:T.optional(),readReplica:d.optional(),encryption:u.optional(),writer:m.optional(),readers:E.optional(),backupRetention:a.optional(),preferredMaintenanceWindow:e.string().optional(),monitoringInterval:p.optional(),primaryRegion:e.string().optional(),secondaryRegions:e.array(e.string()).optional(),globalClusterIdentifier:e.string().optional(),enableGlobalWriteForwarding:e.boolean().optional(),snapshotIdentifier:e.string().optional(),snapshotUsername:e.string().optional(),databaseEngine:e.enum(y).optional(),engineExpression:e.string().optional(),variableName:e.string().optional(),extraProperties:e.array(l).optional(),alarms:G.optional()}).strict(),r=e.object({appName:c,nameProvidedByFlag:e.boolean().optional(),databaseName:e.string().min(1,o.REQUIRED.DATABASE_NAME).max(63,o.MAX_LENGTH.DATABASE_NAME).regex(I.DATABASE_NAME,o.DATABASE_NAME),resourceName:t.optional(),connectionConfig:e.object({connectToCompute:e.array(e.string()).optional(),connectToServices:e.array(e.string()).optional()}).strict().optional(),databaseInsights:g.optional(),port:b.optional(),proxy:R.optional(),credentials:T.optional(),encryption:u.optional(),deletionProtection:e.boolean().optional()}).strict(),O={databaseType:e.literal("Instance"),instanceType:e.string().optional(),multiAz:e.boolean().optional(),readReplica:d.optional(),publiclyAccessible:e.boolean().optional(),backupRetention:a.optional(),allocatedStorage:e.number().optional(),snapshotIdentifier:e.string().optional(),snapshotUsername:e.string().optional()},C={databaseType:e.literal("Aurora"),writer:m.optional(),readers:E.optional(),backupRetention:a.optional(),preferredMaintenanceWindow:e.string().optional(),monitoringInterval:p.optional(),snapshotIdentifier:e.string().optional(),snapshotUsername:e.string().optional()},D={databaseType:e.literal("GlobalAurora"),primaryRegion:e.string().min(1,o.GLOBAL_AURORA.PRIMARY_REGION_REQUIRED),secondaryRegions:e.array(e.string()).optional(),globalClusterIdentifier:e.string().optional(),enableGlobalWriteForwarding:e.boolean().optional(),writer:m.optional(),readers:E.optional(),backupRetention:a.optional(),preferredMaintenanceWindow:e.string().optional(),monitoringInterval:p.optional(),snapshotIdentifier:e.string().optional(),snapshotUsername:e.string().optional()},_=e.object({appName:c,nameProvidedByFlag:e.boolean().optional(),databaseName:e.string().min(1,o.REQUIRED.DATABASE_NAME).max(63,o.MAX_LENGTH.DATABASE_NAME).regex(I.DATABASE_NAME,o.DATABASE_NAME),resourceName:t.optional(),connectionConfig:e.object({connectToCompute:e.array(e.string()).optional(),connectToServices:e.array(e.string()).optional()}).strict().optional()}).strict(),x={databaseType:e.literal("ClickHouse"),instanceType:e.string().optional(),coldTier:e.union([e.object({mode:e.literal("s3")}).strict(),e.literal(!1)]).optional(),optimiseSchedule:e.union([e.string(),e.literal(!1)]).optional(),backupSchedule:e.union([e.string(),e.literal(!1)]).optional(),backupRetentionDays:a.optional()},Y=r.extend(O).strict(),K=r.extend(C).strict(),W=r.extend(D).strict(),w=_.extend(x).strict(),ie=e.discriminatedUnion("databaseType",[Y,K,W,w]),N=r.extend({resourceName:t}).strict(),H=N.extend(O).strict(),Q=N.extend(C).strict(),V=N.extend(D).strict(),z=_.extend({resourceName:t}).strict(),Z=z.extend(x).strict(),re=e.discriminatedUnion("databaseType",[H,Q,V,Z]),se=e.object({appName:c,databaseName:e.string().min(1,o.REQUIRED.DATABASE_NAME),maxConnections:e.number().int(o.MAX_CONNECTIONS.INTEGER).min(1,o.MAX_CONNECTIONS.MIN).max(100,o.MAX_CONNECTIONS.MAX).optional(),maxIdleConnections:e.number().int(o.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.INTEGER).min(0,o.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.MIN).max(100,o.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.MAX).optional(),connectionBorrowTimeout:e.number().int(o.PROXY_CONFIG.BORROW_TIMEOUT.INTEGER).min(1,o.PROXY_CONFIG.BORROW_TIMEOUT.MIN).max(3600,o.PROXY_CONFIG.BORROW_TIMEOUT.MAX).optional(),requireTLS:e.boolean().optional(),nameProvidedByFlag:e.boolean().optional()}).strict(),q=["S","N","B"],s=e.object({name:e.string(),type:e.enum(q)}).strict(),ce=e.object({name:t,partitionKey:s,sortKey:s.optional(),globalSecondaryIndexes:e.array(e.object({indexName:e.string(),partitionKey:s,sortKey:s.optional()}).strict()).optional(),ttlAttribute:e.string().optional(),stream:e.boolean().optional(),variableName:e.string().optional(),extraProperties:e.array(l).optional()}).strict(),$=e.object({mode:e.literal("s3")}).strict(),le=e.object({name:t,type:e.literal("ClickHouse"),databaseName:f,instanceType:e.string().optional(),coldTier:e.union([$,e.literal(!1)]).optional(),optimiseSchedule:e.union([e.string(),e.literal(!1)]).optional(),backupSchedule:e.union([e.string(),e.literal(!1)]).optional(),backupRetentionDays:a.optional(),variableName:e.string().optional(),extraProperties:e.array(l).optional()}).strict();export{se as AddProxyGeneratorSchema,P as AuroraReaderConfigSchema,E as AuroraReadersConfigOrFalseSchema,j as AuroraReadersConfigSchema,m as AuroraWriterConfigSchema,L as AwsManagedKeySchema,a as BackupRetentionSchema,le as ClickHouseResourcePlanSchema,T as CredentialsConfigSchema,k as CustomerManagedKeyMarkerSchema,ie as DatabaseGeneratorSchema,re as DatabaseGeneratorSchemaFromUI,g as DatabaseInsightsConfigOrFalseSchema,v as DatabaseInsightsConfigSchema,b as DatabasePortSchema,ne as DatabaseResourcePlanSchema,F as DatabaseTypeSchema,ce as DynamoDBResourcePlanSchema,u as EncryptionConfigSchema,S as EncryptionKeySpecSchema,p as MonitoringIntervalSchema,R as ProxyConfigOrFalseSchema,U as ProxyConfigSchema,d as ReadReplicaConfigOrFalseSchema,X as ReadReplicaConfigSchema,B as SecretRotationConfigSchema};
|
|
@@ -7,8 +7,8 @@ export declare const NatConfigOrFalseSchema: z.ZodUnion<[z.ZodLiteral<false>, z.
|
|
|
7
7
|
}, z.core.$strict>]>;
|
|
8
8
|
export declare const FlowLogConfigSchema: z.ZodObject<{
|
|
9
9
|
destination: z.ZodOptional<z.ZodEnum<{
|
|
10
|
-
cloudwatch: "cloudwatch";
|
|
11
10
|
s3: "s3";
|
|
11
|
+
cloudwatch: "cloudwatch";
|
|
12
12
|
}>>;
|
|
13
13
|
retentionDays: z.ZodOptional<z.ZodNumber>;
|
|
14
14
|
trafficType: z.ZodOptional<z.ZodEnum<{
|
|
@@ -19,8 +19,8 @@ export declare const FlowLogConfigSchema: z.ZodObject<{
|
|
|
19
19
|
}, z.core.$strict>;
|
|
20
20
|
export declare const FlowLogConfigOrFalseSchema: z.ZodUnion<[z.ZodLiteral<false>, z.ZodObject<{
|
|
21
21
|
destination: z.ZodOptional<z.ZodEnum<{
|
|
22
|
-
cloudwatch: "cloudwatch";
|
|
23
22
|
s3: "s3";
|
|
23
|
+
cloudwatch: "cloudwatch";
|
|
24
24
|
}>>;
|
|
25
25
|
retentionDays: z.ZodOptional<z.ZodNumber>;
|
|
26
26
|
trafficType: z.ZodOptional<z.ZodEnum<{
|
|
@@ -88,8 +88,8 @@ export declare const NetworkResourcePlanSchema: z.ZodObject<{
|
|
|
88
88
|
}, z.core.$strict>]>>;
|
|
89
89
|
flowLogs: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodObject<{
|
|
90
90
|
destination: z.ZodOptional<z.ZodEnum<{
|
|
91
|
-
cloudwatch: "cloudwatch";
|
|
92
91
|
s3: "s3";
|
|
92
|
+
cloudwatch: "cloudwatch";
|
|
93
93
|
}>>;
|
|
94
94
|
retentionDays: z.ZodOptional<z.ZodNumber>;
|
|
95
95
|
trafficType: z.ZodOptional<z.ZodEnum<{
|
|
@@ -133,8 +133,8 @@ export declare const AdditionalNetworkResourcePlanSchema: z.ZodObject<{
|
|
|
133
133
|
}, z.core.$strict>]>>;
|
|
134
134
|
flowLogs: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodObject<{
|
|
135
135
|
destination: z.ZodOptional<z.ZodEnum<{
|
|
136
|
-
cloudwatch: "cloudwatch";
|
|
137
136
|
s3: "s3";
|
|
137
|
+
cloudwatch: "cloudwatch";
|
|
138
138
|
}>>;
|
|
139
139
|
retentionDays: z.ZodOptional<z.ZodNumber>;
|
|
140
140
|
trafficType: z.ZodOptional<z.ZodEnum<{
|
|
@@ -172,8 +172,8 @@ export declare const NetworkConfigSchema: z.ZodUnion<[z.ZodLiteral<false>, z.Zod
|
|
|
172
172
|
}, z.core.$strict>]>>;
|
|
173
173
|
flowLogs: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodObject<{
|
|
174
174
|
destination: z.ZodOptional<z.ZodEnum<{
|
|
175
|
-
cloudwatch: "cloudwatch";
|
|
176
175
|
s3: "s3";
|
|
176
|
+
cloudwatch: "cloudwatch";
|
|
177
177
|
}>>;
|
|
178
178
|
retentionDays: z.ZodOptional<z.ZodNumber>;
|
|
179
179
|
trafficType: z.ZodOptional<z.ZodEnum<{
|
|
@@ -214,8 +214,8 @@ export declare const NetworkGeneratorSchema: z.ZodObject<{
|
|
|
214
214
|
}, z.core.$strict>]>>;
|
|
215
215
|
flowLogs: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<false>, z.ZodObject<{
|
|
216
216
|
destination: z.ZodOptional<z.ZodEnum<{
|
|
217
|
-
cloudwatch: "cloudwatch";
|
|
218
217
|
s3: "s3";
|
|
218
|
+
cloudwatch: "cloudwatch";
|
|
219
219
|
}>>;
|
|
220
220
|
retentionDays: z.ZodOptional<z.ZodNumber>;
|
|
221
221
|
trafficType: z.ZodOptional<z.ZodEnum<{
|
|
@@ -350,6 +350,7 @@ export type GatewayEndpointsConfig = z.infer<typeof GatewayEndpointsConfigSchema
|
|
|
350
350
|
export type InterfaceEndpointsConfig = z.infer<typeof InterfaceEndpointsConfigSchema>;
|
|
351
351
|
export type VpcEndpointsConfig = z.infer<typeof VpcEndpointsConfigSchema>;
|
|
352
352
|
export type NetworkName = z.infer<typeof NetworkNameSchema>;
|
|
353
|
+
export type CidrString = z.infer<typeof CidrStringSchema>;
|
|
353
354
|
export type NetworkResourcePlan = z.infer<typeof NetworkResourcePlanSchema>;
|
|
354
355
|
export type AdditionalNetworkResourcePlan = z.infer<typeof AdditionalNetworkResourcePlanSchema>;
|
|
355
356
|
export type NetworkGeneratorOptions = z.infer<typeof NetworkGeneratorSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as o}from"zod";import{VALIDATION_PATTERNS as t,VALIDATION_MESSAGES as e}from"../validation/patterns.js";import{optionalOrDisabled as n,AppNameSchema as
|
|
1
|
+
import{z as o}from"zod";import{VALIDATION_PATTERNS as t,VALIDATION_MESSAGES as e}from"../validation/patterns.js";import{optionalOrDisabled as n,AppNameSchema as l,ResourceNameSchema as a,PortSchema as m}from"./baseSchemas.js";const R=o.object({count:o.number().int(e.NAT_GATEWAY.INTEGER).min(0,e.NAT_GATEWAY.MIN).max(3,e.NAT_GATEWAY.MAX).optional()}).strict().describe("NAT gateway configuration"),i=n(R),A=o.object({destination:o.enum(["cloudwatch","s3"]).optional(),retentionDays:o.number().int(e.RETENTION_DAYS.INTEGER).min(1,e.RETENTION_DAYS.MIN).max(365,e.RETENTION_DAYS.MAX).optional(),trafficType:o.enum(["ALL","ACCEPT","REJECT"]).optional()}).strict().describe("VPC flow log configuration"),c=n(A),N=o.object({s3:o.boolean().optional(),dynamodb:o.boolean().optional()}).strict().describe("Gateway VPC endpoints (FREE)"),S=n(N),C=o.object({ecr:o.boolean().optional(),secretsManager:o.boolean().optional(),kms:o.boolean().optional(),cloudwatchLogs:o.boolean().optional(),ssm:o.boolean().optional(),sts:o.boolean().optional()}).strict().describe("Interface VPC endpoints (cost per hour)"),_=n(C),I=o.object({gateway:S.optional(),interface:_.optional()}).strict().describe("VPC endpoints configuration"),s=n(I),p=o.object({maxAzs:o.number().int(e.MAX_AZS.INTEGER).min(1,e.MAX_AZS.MIN).max(3,e.MAX_AZS.MAX).optional(),natGateways:i.optional(),flowLogs:c.optional(),vpcEndpoints:s.optional(),cidrMask:o.number().int(e.CIDR_MASK.INTEGER).min(16,e.CIDR_MASK.MIN).max(28,e.CIDR_MASK.MAX).optional()}).strict(),E=o.string().min(1,e.REQUIRED.NETWORK_NAME).max(50,e.MAX_LENGTH.NETWORK_NAME).regex(t.RESOURCE_NAME,e.RESOURCE_NAME),D=p.extend({name:E}).strict(),h=n(p),O=o.object({appName:l,networkName:E.optional(),maxAzs:o.number().int(e.MAX_AZS.INTEGER).min(1,e.MAX_AZS.MIN).max(3,e.MAX_AZS.MAX).optional(),natGateways:i.optional(),flowLogs:c.optional(),vpcEndpoints:s.optional()}).strict(),d=t.CIDR,r=o.string().regex(d,e.CIDR),g=o.object({kind:o.literal("database"),resource:o.string().min(1,e.REQUIRED.RESOURCE_REFERENCE),name:a,allowedFromCidrs:o.array(r),access:o.enum(["read","write","readWrite"]).optional()}).strict(),x=o.object({kind:o.literal("ecsService"),resource:o.string().min(1,e.REQUIRED.RESOURCE_REFERENCE),serviceName:o.string().min(1,e.REQUIRED.SERVICE_NAME),name:a,allowedFromCidrs:o.array(r),port:m.optional()}).strict(),T=o.discriminatedUnion("kind",[g,x]),f=o.object({name:a,peerAppName:o.string().min(1,e.REQUIRED.APP_NAME),peerAccountId:o.string().regex(t.AWS_ACCOUNT_ID,e.AWS_ACCOUNT_ID),peerRegion:o.string().min(1,e.VPC_PEER.REGION_REQUIRED).optional(),peerVpcId:o.string().regex(t.VPC_ID,e.VPC_ID).optional(),peerVpcCidr:r.optional(),peerRoleArn:o.string().regex(t.ROLE_ARN,e.ROLE_ARN).optional(),peerRouteTableIds:o.array(o.string().min(1,e.VPC_PEER.ROUTE_TABLE_ID_REQUIRED)).optional(),localVpcName:o.string().min(1,e.REQUIRED.NETWORK_NAME).optional(),enableDnsResolution:o.boolean().optional()}).strict(),w=o.object({name:a,requesterAccountIds:o.array(o.string().regex(t.AWS_ACCOUNT_ID,e.AWS_ACCOUNT_ID)).min(1,e.VPC_PEER.MIN_REQUESTER_ACCOUNTS),localVpcName:o.string().min(1,e.REQUIRED.NETWORK_NAME).optional(),publishToSsm:o.boolean().optional(),exposedResources:o.array(T).optional()}).strict();export{D as AdditionalNetworkResourcePlanSchema,d as CIDR_REGEX,r as CidrStringSchema,g as DatabaseExposedResourceSchema,x as EcsServiceExposedResourceSchema,T as ExposedResourceSchema,c as FlowLogConfigOrFalseSchema,A as FlowLogConfigSchema,S as GatewayEndpointsConfigOrFalseSchema,N as GatewayEndpointsConfigSchema,_ as InterfaceEndpointsConfigOrFalseSchema,C as InterfaceEndpointsConfigSchema,i as NatConfigOrFalseSchema,R as NatConfigSchema,h as NetworkConfigSchema,O as NetworkGeneratorSchema,E as NetworkNameSchema,p as NetworkResourcePlanSchema,s as VpcEndpointsConfigOrFalseSchema,I as VpcEndpointsConfigSchema,w as VpcPeerAccepterResourcePlanSchema,f as VpcPeerResourcePlanSchema};
|