@fjall/generator 0.89.5 → 0.94.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/LICENSE +50 -21
  2. package/README.md +28 -0
  3. package/dist/.minified +1 -0
  4. package/dist/src/ast/astCdnParser.d.ts +5 -0
  5. package/dist/src/ast/astCdnParser.js +1 -114
  6. package/dist/src/ast/astCommonParser.d.ts +6 -17
  7. package/dist/src/ast/astCommonParser.js +1 -351
  8. package/dist/src/ast/astComputeConnectionParser.d.ts +18 -0
  9. package/dist/src/ast/astComputeConnectionParser.js +1 -0
  10. package/dist/src/ast/astComputeParser.d.ts +6 -0
  11. package/dist/src/ast/astComputeParser.js +1 -473
  12. package/dist/src/ast/astComputeParserHelpers.d.ts +21 -0
  13. package/dist/src/ast/astComputeParserHelpers.js +1 -0
  14. package/dist/src/ast/astDatabaseParser.d.ts +9 -24
  15. package/dist/src/ast/astDatabaseParser.js +1 -275
  16. package/dist/src/ast/astDomainParser.d.ts +139 -0
  17. package/dist/src/ast/astDomainParser.js +1 -0
  18. package/dist/src/ast/astDynamoDBParser.d.ts +35 -0
  19. package/dist/src/ast/astDynamoDBParser.js +1 -0
  20. package/dist/src/ast/astExpressionEvaluator.d.ts +23 -0
  21. package/dist/src/ast/astExpressionEvaluator.js +1 -0
  22. package/dist/src/ast/astInfrastructureParser.d.ts +12 -49
  23. package/dist/src/ast/astInfrastructureParser.js +1 -552
  24. package/dist/src/ast/astMessagingParser.d.ts +5 -0
  25. package/dist/src/ast/astMessagingParser.js +1 -78
  26. package/dist/src/ast/astNetworkParser.d.ts +6 -0
  27. package/dist/src/ast/astNetworkParser.js +1 -219
  28. package/dist/src/ast/astPatternParser.d.ts +6 -0
  29. package/dist/src/ast/astPatternParser.js +1 -155
  30. package/dist/src/ast/astPlanConverter.d.ts +11 -0
  31. package/dist/src/ast/astPlanConverter.js +2 -0
  32. package/dist/src/ast/astStatementClassifier.d.ts +24 -0
  33. package/dist/src/ast/astStatementClassifier.js +1 -0
  34. package/dist/src/ast/astStatementQueries.d.ts +21 -0
  35. package/dist/src/ast/astStatementQueries.js +3 -0
  36. package/dist/src/ast/astStorageParser.d.ts +5 -0
  37. package/dist/src/ast/astStorageParser.js +1 -164
  38. package/dist/src/ast/astSurgicalModification.js +19 -400
  39. package/dist/src/ast/astTestHelpers.d.ts +635 -0
  40. package/dist/src/ast/astTestHelpers.js +1 -0
  41. package/dist/src/ast/index.d.ts +1 -0
  42. package/dist/src/ast/index.js +1 -6
  43. package/dist/src/aws/regions.js +1 -254
  44. package/dist/src/codemod/_internal.d.ts +12 -0
  45. package/dist/src/codemod/_internal.js +1 -0
  46. package/dist/src/codemod/edits/addResource/bodyIndex.d.ts +34 -0
  47. package/dist/src/codemod/edits/addResource/bodyIndex.js +1 -0
  48. package/dist/src/codemod/edits/addResource/propertyBuilder.d.ts +7 -0
  49. package/dist/src/codemod/edits/addResource/propertyBuilder.js +1 -0
  50. package/dist/src/codemod/edits/addResource.d.ts +9 -0
  51. package/dist/src/codemod/edits/addResource.js +1 -0
  52. package/dist/src/codemod/edits/ensureImports.d.ts +26 -0
  53. package/dist/src/codemod/edits/ensureImports.js +1 -0
  54. package/dist/src/codemod/edits/findInsertionPosition.d.ts +39 -0
  55. package/dist/src/codemod/edits/findInsertionPosition.js +1 -0
  56. package/dist/src/codemod/edits/index.d.ts +5 -0
  57. package/dist/src/codemod/edits/index.js +1 -0
  58. package/dist/src/codemod/edits/modifyResource/literalConversion.d.ts +37 -0
  59. package/dist/src/codemod/edits/modifyResource/literalConversion.js +1 -0
  60. package/dist/src/codemod/edits/modifyResource.d.ts +9 -0
  61. package/dist/src/codemod/edits/modifyResource.js +1 -0
  62. package/dist/src/codemod/edits/removeResource/commentHeuristic.d.ts +31 -0
  63. package/dist/src/codemod/edits/removeResource/commentHeuristic.js +1 -0
  64. package/dist/src/codemod/edits/removeResource/importPruning.d.ts +8 -0
  65. package/dist/src/codemod/edits/removeResource/importPruning.js +1 -0
  66. package/dist/src/codemod/edits/removeResource.d.ts +10 -0
  67. package/dist/src/codemod/edits/removeResource.js +1 -0
  68. package/dist/src/codemod/fileRewriter/builders.d.ts +57 -0
  69. package/dist/src/codemod/fileRewriter/builders.js +1 -0
  70. package/dist/src/codemod/fileRewriter/index.d.ts +4 -0
  71. package/dist/src/codemod/fileRewriter/index.js +1 -0
  72. package/dist/src/codemod/fileRewriter/locateByRange.d.ts +65 -0
  73. package/dist/src/codemod/fileRewriter/locateByRange.js +1 -0
  74. package/dist/src/codemod/fileRewriter/parse.d.ts +18 -0
  75. package/dist/src/codemod/fileRewriter/parse.js +2 -0
  76. package/dist/src/codemod/fileRewriter/print.d.ts +46 -0
  77. package/dist/src/codemod/fileRewriter/print.js +4 -0
  78. package/dist/src/codemod/historyPaths.d.ts +2 -0
  79. package/dist/src/codemod/historyPaths.js +1 -0
  80. package/dist/src/codemod/index.d.ts +7 -0
  81. package/dist/src/codemod/index.js +1 -0
  82. package/dist/src/codemod/listResources.d.ts +4 -0
  83. package/dist/src/codemod/listResources.js +1 -0
  84. package/dist/src/codemod/registry.d.ts +42 -0
  85. package/dist/src/codemod/registry.js +1 -0
  86. package/dist/src/codemod/semanticIndex/findReferences.d.ts +15 -0
  87. package/dist/src/codemod/semanticIndex/findReferences.js +2 -0
  88. package/dist/src/codemod/semanticIndex/index.d.ts +4 -0
  89. package/dist/src/codemod/semanticIndex/index.js +1 -0
  90. package/dist/src/codemod/semanticIndex/listImports.d.ts +24 -0
  91. package/dist/src/codemod/semanticIndex/listImports.js +1 -0
  92. package/dist/src/codemod/semanticIndex/locateByShape.d.ts +28 -0
  93. package/dist/src/codemod/semanticIndex/locateByShape.js +1 -0
  94. package/dist/src/codemod/semanticIndex/projectCache.d.ts +14 -0
  95. package/dist/src/codemod/semanticIndex/projectCache.js +1 -0
  96. package/dist/src/codemod/types.d.ts +172 -0
  97. package/dist/src/codemod/types.js +1 -0
  98. package/dist/src/dns/bindParser.js +2 -224
  99. package/dist/src/dns/bindWriter.js +3 -52
  100. package/dist/src/dns/domainFileGenerator.d.ts +20 -0
  101. package/dist/src/dns/domainFileGenerator.js +207 -0
  102. package/dist/src/dns/domainRecords.d.ts +164 -0
  103. package/dist/src/dns/domainRecords.js +1 -0
  104. package/dist/src/dns/index.d.ts +2 -1
  105. package/dist/src/dns/index.js +1 -4
  106. package/dist/src/dns/types.js +1 -52
  107. package/dist/src/generation/common.js +6 -161
  108. package/dist/src/generation/compute.js +82 -590
  109. package/dist/src/generation/database.js +12 -198
  110. package/dist/src/generation/generatePatternCode.d.ts +58 -0
  111. package/dist/src/generation/generatePatternCode.js +33 -0
  112. package/dist/src/generation/index.js +1 -20
  113. package/dist/src/generation/infrastructure.d.ts +1 -5
  114. package/dist/src/generation/infrastructure.js +35 -377
  115. package/dist/src/generation/messagingConnections.js +1 -73
  116. package/dist/src/generation/storage.d.ts +0 -15
  117. package/dist/src/generation/storage.js +35 -168
  118. package/dist/src/generation/storageConnections.js +1 -75
  119. package/dist/src/planning/generateResourceChange.d.ts +21 -0
  120. package/dist/src/planning/generateResourceChange.js +1 -0
  121. package/dist/src/planning/index.d.ts +3 -0
  122. package/dist/src/planning/index.js +1 -1
  123. package/dist/src/planning/resourceAddition.d.ts +154 -0
  124. package/dist/src/planning/resourceAddition.js +1 -0
  125. package/dist/src/planning/resourceConnections.d.ts +19 -0
  126. package/dist/src/planning/resourceConnections.js +1 -0
  127. package/dist/src/planning/resourcePlanning.js +1 -214
  128. package/dist/src/presets/index.js +1 -3
  129. package/dist/src/presets/patternTierPresets.js +1 -131
  130. package/dist/src/presets/storagePresets.js +1 -36
  131. package/dist/src/presets/tierPresets.d.ts +5 -8
  132. package/dist/src/presets/tierPresets.js +1 -384
  133. package/dist/src/presets/tierTypes.d.ts +1 -1
  134. package/dist/src/presets/tierTypes.js +0 -7
  135. package/dist/src/schemas/alarmSchemas.d.ts +19 -0
  136. package/dist/src/schemas/alarmSchemas.js +1 -0
  137. package/dist/src/schemas/applicationSchemas.d.ts +22 -6
  138. package/dist/src/schemas/applicationSchemas.js +1 -80
  139. package/dist/src/schemas/baseSchemas.d.ts +8 -3
  140. package/dist/src/schemas/baseSchemas.js +2 -248
  141. package/dist/src/schemas/cdnSchemas.js +1 -62
  142. package/dist/src/schemas/computeSchemas.d.ts +25 -3
  143. package/dist/src/schemas/computeSchemas.js +1 -727
  144. package/dist/src/schemas/constants.d.ts +5 -7
  145. package/dist/src/schemas/constants.js +1 -218
  146. package/dist/src/schemas/databaseSchemas.d.ts +6 -1
  147. package/dist/src/schemas/databaseSchemas.js +1 -366
  148. package/dist/src/schemas/index.js +1 -3
  149. package/dist/src/schemas/instanceTypeArchitecture.js +1 -75
  150. package/dist/src/schemas/messagingSchemas.js +1 -29
  151. package/dist/src/schemas/networkSchemas.js +1 -125
  152. package/dist/src/schemas/patternSchemas.d.ts +1 -1
  153. package/dist/src/schemas/patternSchemas.js +1 -294
  154. package/dist/src/schemas/resourceSchemas.d.ts +1 -0
  155. package/dist/src/schemas/resourceSchemas.js +1 -28
  156. package/dist/src/schemas/sharedTypes.d.ts +18 -0
  157. package/dist/src/schemas/sharedTypes.js +1 -0
  158. package/dist/src/schemas/storageSchemas.d.ts +1 -0
  159. package/dist/src/schemas/storageSchemas.js +1 -119
  160. package/dist/src/types/Result.js +1 -31
  161. package/dist/src/util/errorUtils.js +1 -1
  162. package/dist/src/validation/patterns.d.ts +9 -0
  163. package/dist/src/validation/patterns.js +1 -369
  164. package/dist/src/version.d.ts +1 -1
  165. package/dist/src/version.js +1 -1
  166. package/package.json +29 -9
  167. package/dist/src/dns/infrastructureWriter.d.ts +0 -2
  168. package/dist/src/dns/infrastructureWriter.js +0 -58
@@ -0,0 +1,635 @@
1
+ import { parseInfrastructure } from "@fjall/generator";
2
+ export { parseInfrastructure };
3
+ export declare function parseAndConvert(code: string): {
4
+ appName: string;
5
+ type: "custom" | "tinkerer" | "lightweight" | "standard" | "resilient" | "enterprise";
6
+ database: {
7
+ name: string;
8
+ type: "Instance" | "Aurora" | "GlobalAurora";
9
+ databaseName: string;
10
+ instanceType?: string | undefined;
11
+ allocatedStorage?: number | undefined;
12
+ multiAz?: boolean | undefined;
13
+ publiclyAccessible?: boolean | undefined;
14
+ databaseInsights?: false | {
15
+ mode?: "standard" | "advanced" | undefined;
16
+ encryptionKey?: {
17
+ awsManaged: true;
18
+ } | {
19
+ useCMK: true;
20
+ } | undefined;
21
+ } | undefined;
22
+ port?: number | undefined;
23
+ deletionProtection?: boolean | undefined;
24
+ proxy?: false | {
25
+ maxConnections?: number | undefined;
26
+ maxIdleConnections?: number | undefined;
27
+ connectionBorrowTimeout?: number | undefined;
28
+ requireTLS?: boolean | undefined;
29
+ } | undefined;
30
+ credentials?: {
31
+ username?: string | undefined;
32
+ secretRotation?: {
33
+ automaticallyAfterDays?: number | undefined;
34
+ } | undefined;
35
+ } | undefined;
36
+ readReplica?: false | {
37
+ instanceType?: string | undefined;
38
+ availabilityZone?: string | undefined;
39
+ } | undefined;
40
+ encryption?: {
41
+ storageKey?: {
42
+ awsManaged: true;
43
+ } | {
44
+ useCMK: true;
45
+ } | undefined;
46
+ } | undefined;
47
+ writer?: {
48
+ enableDatabaseInsights?: boolean | undefined;
49
+ identifierSuffix?: string | undefined;
50
+ availabilityZone?: string | undefined;
51
+ } | undefined;
52
+ readers?: false | {
53
+ count?: number | undefined;
54
+ instances?: {
55
+ scaleWithWriter?: boolean | undefined;
56
+ enableDatabaseInsights?: boolean | undefined;
57
+ identifierSuffix?: string | undefined;
58
+ availabilityZone?: string | undefined;
59
+ }[] | undefined;
60
+ defaultEnableDatabaseInsights?: boolean | undefined;
61
+ } | undefined;
62
+ backupRetention?: number | undefined;
63
+ preferredMaintenanceWindow?: string | undefined;
64
+ monitoringInterval?: number | undefined;
65
+ primaryRegion?: string | undefined;
66
+ secondaryRegions?: string[] | undefined;
67
+ globalClusterIdentifier?: string | undefined;
68
+ enableGlobalWriteForwarding?: boolean | undefined;
69
+ snapshotIdentifier?: string | undefined;
70
+ snapshotUsername?: string | undefined;
71
+ databaseEngine?: "postgresql" | "mysql" | undefined;
72
+ engineExpression?: string | undefined;
73
+ variableName?: string | undefined;
74
+ extraProperties?: {
75
+ key: string;
76
+ sourceText: string;
77
+ }[] | undefined;
78
+ alarms?: false | {
79
+ cpuThreshold?: number | undefined;
80
+ freeStorageThresholdGiB?: number | undefined;
81
+ connectionsThreshold?: number | undefined;
82
+ } | undefined;
83
+ }[];
84
+ s3: {
85
+ name: string;
86
+ bucketName?: string | undefined;
87
+ publicReadAccess?: boolean | undefined;
88
+ websiteHosting?: {
89
+ indexDocument: string;
90
+ errorDocument?: string | undefined;
91
+ } | undefined;
92
+ backupVaultTier?: "standard" | "resilient" | "enterprise" | undefined;
93
+ versioned?: boolean | undefined;
94
+ encryption?: "KMS" | "AES256" | undefined;
95
+ kmsKeyArn?: string | undefined;
96
+ cors?: {
97
+ allowedOrigins: string[];
98
+ allowedMethods: string[];
99
+ allowedHeaders?: string[] | undefined;
100
+ exposedHeaders?: string[] | undefined;
101
+ maxAge?: number | undefined;
102
+ }[] | undefined;
103
+ deployment?: {
104
+ source: string;
105
+ prune?: boolean | undefined;
106
+ cacheControl?: {
107
+ maxAge?: number | undefined;
108
+ immutable?: boolean | undefined;
109
+ } | undefined;
110
+ } | undefined;
111
+ retain?: boolean | undefined;
112
+ stackPlacement?: "compute" | "storage" | "cdn" | undefined;
113
+ variableName?: string | undefined;
114
+ extraProperties?: {
115
+ key: string;
116
+ sourceText: string;
117
+ }[] | undefined;
118
+ }[];
119
+ compute: {
120
+ name: string;
121
+ type: "ecs" | "lambda" | "ec2";
122
+ needsConnection: boolean;
123
+ connectedDatabase?: string[] | undefined;
124
+ connectedStorage?: string[] | undefined;
125
+ connectedMessaging?: string[] | undefined;
126
+ cluster?: {
127
+ domain?: string | undefined;
128
+ loadBalancer?: false | "public" | "internal" | undefined;
129
+ directAccess?: boolean | undefined;
130
+ } | undefined;
131
+ services?: {
132
+ name: string;
133
+ capacityProvider: "FARGATE" | "FARGATE_SPOT" | "EC2";
134
+ dockerfilePath?: string | undefined;
135
+ dockerTarget?: string | undefined;
136
+ needsDatabaseConnection?: boolean | undefined;
137
+ needsStorageConnection?: boolean | undefined;
138
+ needsMessagingConnection?: boolean | undefined;
139
+ image?: string | undefined;
140
+ containers?: {
141
+ name?: string | undefined;
142
+ image?: string | undefined;
143
+ port?: number | undefined;
144
+ environment?: Record<string, string | number | boolean | {
145
+ __identifier: string;
146
+ } | {
147
+ __expression: string;
148
+ } | {
149
+ __call: string;
150
+ }> | undefined;
151
+ secretsImport?: Record<string, {
152
+ id: string;
153
+ name: string;
154
+ field?: string | undefined;
155
+ }> | undefined;
156
+ command?: string[] | undefined;
157
+ entryPoint?: string[] | undefined;
158
+ essential?: boolean | undefined;
159
+ healthCheck?: {
160
+ command: string[];
161
+ interval?: number | undefined;
162
+ timeout?: number | undefined;
163
+ retries?: number | undefined;
164
+ startPeriod?: number | undefined;
165
+ } | undefined;
166
+ ssmSecrets?: string[] | undefined;
167
+ extraProperties?: {
168
+ key: string;
169
+ sourceText: string;
170
+ }[] | undefined;
171
+ }[] | undefined;
172
+ routing?: {
173
+ path?: string | undefined;
174
+ host?: string | undefined;
175
+ priority?: number | undefined;
176
+ healthCheckPath?: string | undefined;
177
+ } | {
178
+ path?: string | undefined;
179
+ host?: string | undefined;
180
+ priority?: number | undefined;
181
+ healthCheckPath?: string | undefined;
182
+ }[] | undefined;
183
+ cpu?: number | undefined;
184
+ memoryLimitMiB?: number | undefined;
185
+ desiredCount?: number | undefined;
186
+ scaling?: false | {
187
+ desiredCount?: number | undefined;
188
+ minCapacity?: number | undefined;
189
+ maxCapacity?: number | undefined;
190
+ scalingType?: "CPU" | "MEMORY" | undefined;
191
+ } | undefined;
192
+ ec2Config?: {
193
+ instanceType?: string | undefined;
194
+ amiHardwareType?: "ARM" | "STANDARD" | undefined;
195
+ minCapacity?: number | undefined;
196
+ maxCapacity?: number | undefined;
197
+ memoryLimitMiB?: number | undefined;
198
+ warmPool?: {
199
+ minSize?: number | undefined;
200
+ reuseOnScaleIn?: boolean | undefined;
201
+ } | undefined;
202
+ } | undefined;
203
+ ssmSecretsPath?: string | undefined;
204
+ extraProperties?: {
205
+ key: string;
206
+ sourceText: string;
207
+ }[] | undefined;
208
+ alarms?: false | {
209
+ cpuThreshold?: number | undefined;
210
+ memoryThreshold?: number | undefined;
211
+ runningTasksMinimum?: number | undefined;
212
+ http5xxThreshold?: number | undefined;
213
+ } | undefined;
214
+ }[] | undefined;
215
+ dockerfilePath?: string | undefined;
216
+ deployment?: "container" | "code" | undefined;
217
+ codePath?: string | undefined;
218
+ timeout?: number | undefined;
219
+ memory?: number | undefined;
220
+ handler?: string | undefined;
221
+ runtime?: string | undefined;
222
+ environment?: Record<string, string | number | boolean | {
223
+ __identifier: string;
224
+ } | {
225
+ __expression: string;
226
+ } | {
227
+ __call: string;
228
+ }> | undefined;
229
+ secrets?: Record<string, string | number | boolean | {
230
+ __identifier: string;
231
+ } | {
232
+ __expression: string;
233
+ } | {
234
+ __call: string;
235
+ }> | undefined;
236
+ eventSources?: {
237
+ sourceType: "dynamodb" | "sqs" | "eventbridge";
238
+ sourceRef: string;
239
+ batchSize?: number | undefined;
240
+ startingPosition?: "TRIM_HORIZON" | "LATEST" | undefined;
241
+ maxBatchingWindow?: number | undefined;
242
+ reportBatchItemFailures?: boolean | undefined;
243
+ }[] | undefined;
244
+ functionUrl?: {
245
+ authType: "NONE" | "AWS_IAM";
246
+ } | undefined;
247
+ description?: string | undefined;
248
+ scheduleExpression?: string | undefined;
249
+ architecture?: "ARM_64" | "X86_64" | undefined;
250
+ ephemeralStorageSize?: number | undefined;
251
+ functionName?: string | undefined;
252
+ ssmSecrets?: string[] | undefined;
253
+ ssmSecretsPath?: string | undefined;
254
+ alarms?: false | {
255
+ errorRateThreshold?: number | undefined;
256
+ durationThresholdPercent?: number | undefined;
257
+ } | undefined;
258
+ instanceType?: "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" | undefined;
259
+ enableSSH?: boolean | undefined;
260
+ keyName?: string | undefined;
261
+ userData?: string | undefined;
262
+ securityGroups?: string[] | undefined;
263
+ variableName?: string | undefined;
264
+ extraProperties?: {
265
+ key: string;
266
+ sourceText: string;
267
+ }[] | undefined;
268
+ }[];
269
+ pattern?: "payload" | "nextjs" | undefined;
270
+ patternConfig?: {
271
+ type: "payload";
272
+ name: string;
273
+ domain?: string | undefined;
274
+ database?: {
275
+ type?: "Instance" | "Aurora" | undefined;
276
+ databaseName?: string | undefined;
277
+ databaseEngine?: "postgresql" | "mysql" | undefined;
278
+ deletionProtection?: boolean | undefined;
279
+ backupRetention?: number | undefined;
280
+ port?: number | undefined;
281
+ publiclyAccessible?: boolean | undefined;
282
+ allowedIpCidr?: string | undefined;
283
+ instanceType?: string | undefined;
284
+ allocatedStorage?: number | undefined;
285
+ multiAz?: boolean | undefined;
286
+ readReplica?: false | {
287
+ instanceType?: string | undefined;
288
+ availabilityZone?: string | undefined;
289
+ } | undefined;
290
+ writer?: {
291
+ enableDatabaseInsights?: boolean | undefined;
292
+ identifierSuffix?: string | undefined;
293
+ availabilityZone?: string | undefined;
294
+ } | undefined;
295
+ readers?: false | {
296
+ count?: number | undefined;
297
+ instances?: {
298
+ scaleWithWriter?: boolean | undefined;
299
+ enableDatabaseInsights?: boolean | undefined;
300
+ identifierSuffix?: string | undefined;
301
+ availabilityZone?: string | undefined;
302
+ }[] | undefined;
303
+ defaultEnableDatabaseInsights?: boolean | undefined;
304
+ } | undefined;
305
+ allowVpcAccess?: boolean | undefined;
306
+ monitoringInterval?: number | undefined;
307
+ preferredMaintenanceWindow?: string | undefined;
308
+ databaseInsights?: false | {
309
+ mode?: "standard" | "advanced" | undefined;
310
+ encryptionKey?: {
311
+ awsManaged: true;
312
+ } | {
313
+ useCMK: true;
314
+ } | undefined;
315
+ } | undefined;
316
+ proxy?: false | {
317
+ maxConnections?: number | undefined;
318
+ maxIdleConnections?: number | undefined;
319
+ connectionBorrowTimeout?: number | undefined;
320
+ requireTLS?: boolean | undefined;
321
+ } | undefined;
322
+ credentials?: {
323
+ username?: string | undefined;
324
+ secretRotation?: {
325
+ automaticallyAfterDays?: number | undefined;
326
+ } | undefined;
327
+ } | undefined;
328
+ encryption?: {
329
+ storageKey?: {
330
+ awsManaged: true;
331
+ } | {
332
+ useCMK: true;
333
+ } | undefined;
334
+ } | undefined;
335
+ snapshotIdentifier?: string | undefined;
336
+ snapshotUsername?: string | undefined;
337
+ } | undefined;
338
+ compute?: {
339
+ server?: {
340
+ memorySize?: number | undefined;
341
+ timeout?: number | undefined;
342
+ ephemeralStorageSize?: number | undefined;
343
+ } | undefined;
344
+ imageOptimisation?: {
345
+ memorySize?: number | undefined;
346
+ timeout?: number | undefined;
347
+ ephemeralStorageSize?: number | undefined;
348
+ } | undefined;
349
+ revalidation?: {
350
+ memorySize?: number | undefined;
351
+ timeout?: number | undefined;
352
+ ephemeralStorageSize?: number | undefined;
353
+ } | undefined;
354
+ } | undefined;
355
+ storage?: {
356
+ assets?: {
357
+ versioned?: boolean | undefined;
358
+ } | undefined;
359
+ cache?: {
360
+ versioned?: boolean | undefined;
361
+ } | undefined;
362
+ media?: {
363
+ versioned?: boolean | undefined;
364
+ } | undefined;
365
+ } | undefined;
366
+ messaging?: {
367
+ revalidationQueue?: {
368
+ visibilityTimeout?: number | undefined;
369
+ messageRetentionPeriod?: number | undefined;
370
+ maxMessageSize?: number | undefined;
371
+ deadLetterQueue?: false | {
372
+ enabled?: boolean | undefined;
373
+ maxReceiveCount?: number | undefined;
374
+ } | undefined;
375
+ } | undefined;
376
+ } | undefined;
377
+ cdn?: {
378
+ domainNames?: string[] | undefined;
379
+ certificateArn?: string | undefined;
380
+ } | undefined;
381
+ environment?: Record<string, string> | undefined;
382
+ } | {
383
+ type: "nextjs";
384
+ name: string;
385
+ domain?: string | undefined;
386
+ database?: {
387
+ type?: "Instance" | "Aurora" | undefined;
388
+ databaseName?: string | undefined;
389
+ databaseEngine?: "postgresql" | "mysql" | undefined;
390
+ deletionProtection?: boolean | undefined;
391
+ backupRetention?: number | undefined;
392
+ port?: number | undefined;
393
+ publiclyAccessible?: boolean | undefined;
394
+ allowedIpCidr?: string | undefined;
395
+ instanceType?: string | undefined;
396
+ allocatedStorage?: number | undefined;
397
+ multiAz?: boolean | undefined;
398
+ readReplica?: false | {
399
+ instanceType?: string | undefined;
400
+ availabilityZone?: string | undefined;
401
+ } | undefined;
402
+ writer?: {
403
+ enableDatabaseInsights?: boolean | undefined;
404
+ identifierSuffix?: string | undefined;
405
+ availabilityZone?: string | undefined;
406
+ } | undefined;
407
+ readers?: false | {
408
+ count?: number | undefined;
409
+ instances?: {
410
+ scaleWithWriter?: boolean | undefined;
411
+ enableDatabaseInsights?: boolean | undefined;
412
+ identifierSuffix?: string | undefined;
413
+ availabilityZone?: string | undefined;
414
+ }[] | undefined;
415
+ defaultEnableDatabaseInsights?: boolean | undefined;
416
+ } | undefined;
417
+ allowVpcAccess?: boolean | undefined;
418
+ monitoringInterval?: number | undefined;
419
+ preferredMaintenanceWindow?: string | undefined;
420
+ databaseInsights?: false | {
421
+ mode?: "standard" | "advanced" | undefined;
422
+ encryptionKey?: {
423
+ awsManaged: true;
424
+ } | {
425
+ useCMK: true;
426
+ } | undefined;
427
+ } | undefined;
428
+ proxy?: false | {
429
+ maxConnections?: number | undefined;
430
+ maxIdleConnections?: number | undefined;
431
+ connectionBorrowTimeout?: number | undefined;
432
+ requireTLS?: boolean | undefined;
433
+ } | undefined;
434
+ credentials?: {
435
+ username?: string | undefined;
436
+ secretRotation?: {
437
+ automaticallyAfterDays?: number | undefined;
438
+ } | undefined;
439
+ } | undefined;
440
+ encryption?: {
441
+ storageKey?: {
442
+ awsManaged: true;
443
+ } | {
444
+ useCMK: true;
445
+ } | undefined;
446
+ } | undefined;
447
+ snapshotIdentifier?: string | undefined;
448
+ snapshotUsername?: string | undefined;
449
+ } | undefined;
450
+ compute?: {
451
+ server?: {
452
+ memorySize?: number | undefined;
453
+ timeout?: number | undefined;
454
+ ephemeralStorageSize?: number | undefined;
455
+ } | undefined;
456
+ imageOptimisation?: {
457
+ memorySize?: number | undefined;
458
+ timeout?: number | undefined;
459
+ ephemeralStorageSize?: number | undefined;
460
+ } | undefined;
461
+ revalidation?: {
462
+ memorySize?: number | undefined;
463
+ timeout?: number | undefined;
464
+ ephemeralStorageSize?: number | undefined;
465
+ } | undefined;
466
+ } | undefined;
467
+ storage?: {
468
+ assets?: {
469
+ versioned?: boolean | undefined;
470
+ } | undefined;
471
+ cache?: {
472
+ versioned?: boolean | undefined;
473
+ } | undefined;
474
+ media?: {
475
+ versioned?: boolean | undefined;
476
+ } | undefined;
477
+ } | undefined;
478
+ messaging?: {
479
+ revalidationQueue?: {
480
+ visibilityTimeout?: number | undefined;
481
+ messageRetentionPeriod?: number | undefined;
482
+ maxMessageSize?: number | undefined;
483
+ deadLetterQueue?: false | {
484
+ enabled?: boolean | undefined;
485
+ maxReceiveCount?: number | undefined;
486
+ } | undefined;
487
+ } | undefined;
488
+ } | undefined;
489
+ cdn?: {
490
+ domainNames?: string[] | undefined;
491
+ certificateArn?: string | undefined;
492
+ } | undefined;
493
+ environment?: Record<string, string> | undefined;
494
+ } | undefined;
495
+ owner?: string | undefined;
496
+ tags?: Record<string, string> | undefined;
497
+ vpcId?: string | undefined;
498
+ network?: {
499
+ maxAzs?: number | undefined;
500
+ natGateways?: false | {
501
+ count?: number | undefined;
502
+ } | undefined;
503
+ flowLogs?: false | {
504
+ destination?: "cloudwatch" | "s3" | undefined;
505
+ retentionDays?: number | undefined;
506
+ trafficType?: "ALL" | "ACCEPT" | "REJECT" | undefined;
507
+ } | undefined;
508
+ vpcEndpoints?: false | {
509
+ gateway?: false | {
510
+ s3?: boolean | undefined;
511
+ dynamodb?: boolean | undefined;
512
+ } | undefined;
513
+ interface?: false | {
514
+ ecr?: boolean | undefined;
515
+ secretsManager?: boolean | undefined;
516
+ kms?: boolean | undefined;
517
+ cloudwatchLogs?: boolean | undefined;
518
+ ssm?: boolean | undefined;
519
+ sts?: boolean | undefined;
520
+ } | undefined;
521
+ } | undefined;
522
+ cidrMask?: number | undefined;
523
+ } | undefined;
524
+ backup?: false | {
525
+ tier: "standard" | "resilient" | "enterprise";
526
+ } | undefined;
527
+ tunnel?: false | {
528
+ instanceType?: string | undefined;
529
+ } | undefined;
530
+ additionalNetworks?: {
531
+ name: string;
532
+ maxAzs?: number | undefined;
533
+ natGateways?: false | {
534
+ count?: number | undefined;
535
+ } | undefined;
536
+ flowLogs?: false | {
537
+ destination?: "cloudwatch" | "s3" | undefined;
538
+ retentionDays?: number | undefined;
539
+ trafficType?: "ALL" | "ACCEPT" | "REJECT" | undefined;
540
+ } | undefined;
541
+ vpcEndpoints?: false | {
542
+ gateway?: false | {
543
+ s3?: boolean | undefined;
544
+ dynamodb?: boolean | undefined;
545
+ } | undefined;
546
+ interface?: false | {
547
+ ecr?: boolean | undefined;
548
+ secretsManager?: boolean | undefined;
549
+ kms?: boolean | undefined;
550
+ cloudwatchLogs?: boolean | undefined;
551
+ ssm?: boolean | undefined;
552
+ sts?: boolean | undefined;
553
+ } | undefined;
554
+ } | undefined;
555
+ cidrMask?: number | undefined;
556
+ }[] | undefined;
557
+ dynamodb?: {
558
+ name: string;
559
+ partitionKey: {
560
+ name: string;
561
+ type: "S" | "N" | "B";
562
+ };
563
+ sortKey?: {
564
+ name: string;
565
+ type: "S" | "N" | "B";
566
+ } | undefined;
567
+ globalSecondaryIndexes?: {
568
+ indexName: string;
569
+ partitionKey: {
570
+ name: string;
571
+ type: "S" | "N" | "B";
572
+ };
573
+ sortKey?: {
574
+ name: string;
575
+ type: "S" | "N" | "B";
576
+ } | undefined;
577
+ }[] | undefined;
578
+ ttlAttribute?: string | undefined;
579
+ stream?: boolean | undefined;
580
+ variableName?: string | undefined;
581
+ extraProperties?: {
582
+ key: string;
583
+ sourceText: string;
584
+ }[] | undefined;
585
+ }[] | undefined;
586
+ sqs?: {
587
+ name: string;
588
+ queueType: "standard" | "fifo";
589
+ visibilityTimeout?: number | undefined;
590
+ retentionPeriod?: number | undefined;
591
+ contentBasedDeduplication?: boolean | undefined;
592
+ variableName?: string | undefined;
593
+ extraProperties?: {
594
+ key: string;
595
+ sourceText: string;
596
+ }[] | undefined;
597
+ }[] | undefined;
598
+ cdn?: {
599
+ name: string;
600
+ defaultOriginRef: string;
601
+ behaviours?: {
602
+ pathPattern: string;
603
+ originRef: string;
604
+ cachePolicy?: "CACHING_OPTIMIZED" | "CACHING_DISABLED" | undefined;
605
+ }[] | undefined;
606
+ customDomain?: string | undefined;
607
+ certificateArn?: string | undefined;
608
+ accessGate?: false | {
609
+ type: "basic-auth";
610
+ username: string;
611
+ password: string;
612
+ } | undefined;
613
+ extraProperties?: {
614
+ key: string;
615
+ sourceText: string;
616
+ }[] | undefined;
617
+ } | undefined;
618
+ customCodeBlocks?: {
619
+ sourceText: string;
620
+ position: "before-imports" | "after-imports" | "after-app-init" | "after-tags" | "after-resource" | "end-of-file";
621
+ afterManagedResource?: {
622
+ type: "custom" | "pattern" | "database" | "compute" | "storage" | "messaging" | "cdn" | "tags" | "network" | "import" | "app-init";
623
+ name?: string | undefined;
624
+ } | undefined;
625
+ originalLine?: number | undefined;
626
+ leadingComments?: string[] | undefined;
627
+ orphaned?: boolean | undefined;
628
+ orphanedComment?: string | undefined;
629
+ }[] | undefined;
630
+ additionalManagedImports?: {
631
+ moduleSpecifier: string;
632
+ namedImports: string[];
633
+ defaultImport?: string | undefined;
634
+ }[] | undefined;
635
+ };
@@ -0,0 +1 @@
1
+ import{parseInfrastructure as e,convertToResourcePlan as o}from"@fjall/generator";function n(t){const r=e(t);return o(r,r.appName??"test-app")}export{n as parseAndConvert,e as parseInfrastructure};
@@ -1,3 +1,4 @@
1
1
  export { type IdentifierRef, type ExpressionRef, type CallRef, type ParsedValue, type ParsedObject, isPlainObject, isIdentifierRef, isExpressionRef, isCallRef, isParsedObject, asString, asNumber, asBoolean, asStringArray, asStringUnion, captureExtraProperties, } from "./astCommonParser.js";
2
2
  export { type ParsedInfrastructure, type ParsedDatabaseResource, type ParsedS3Resource, type ParsedComputeResource, type ParsedSQSResource, type ParsedCDNResource, type ParsedNetworkResource, type ParsedDynamoDBResource, type ParsedLambdaConfig, type ParsedPatternResource, type ImportInfo, type StatementType, type ClassifiedStatement, type CustomCodeBlock, parseInfrastructure, convertToResourcePlan, classifyStatements, extractCustomCodeBlocks, findManagedResourcePosition, getLastManagedStatementOfType, getManagedResourcesByType, } from "./astInfrastructureParser.js";
3
3
  export { type SurgicalModificationResult, type InsertionOptions, type UpdateOptions, type DeleteOptions, type FileValidationResult, addResourceSurgically, updateResourceSurgically, removeResourceSurgically, ensureImports, injectCustomCodeBlocks, validateModifiedFile, } from "./astSurgicalModification.js";
4
+ export { type DomainCallMatch, type ParsedFjallTarget, type ParsedDnsRecordFromAst, type ParsedCertificateFromAst, type ParsedDelegationFromAst, type ParsedDomainProps, type ParsedRoute53ApexDomainProps, type ParsedExternalDelegatedDomainProps, type ParsedExternalRecordsDomainProps, type ParseDomainError, findDomainConstructCall, parseDomainProps, parseDomainErrorMessage, splitTopLevelArgs, } from "./astDomainParser.js";
@@ -1,6 +1 @@
1
- // Common AST parsing utilities
2
- export { isPlainObject, isIdentifierRef, isExpressionRef, isCallRef, isParsedObject, asString, asNumber, asBoolean, asStringArray, asStringUnion, captureExtraProperties, } from "./astCommonParser.js";
3
- // Main orchestration and types
4
- export { parseInfrastructure, convertToResourcePlan, classifyStatements, extractCustomCodeBlocks, findManagedResourcePosition, getLastManagedStatementOfType, getManagedResourcesByType, } from "./astInfrastructureParser.js";
5
- // Surgical modification
6
- export { addResourceSurgically, updateResourceSurgically, removeResourceSurgically, ensureImports, injectCustomCodeBlocks, validateModifiedFile, } from "./astSurgicalModification.js";
1
+ import{isPlainObject as s,isIdentifierRef as a,isExpressionRef as o,isCallRef as t,isParsedObject as i,asString as n,asNumber as c,asBoolean as l,asStringArray as u,asStringUnion as p,captureExtraProperties as d}from"./astCommonParser.js";import{parseInfrastructure as m,convertToResourcePlan as g,classifyStatements as R,extractCustomCodeBlocks as y,findManagedResourcePosition as S,getLastManagedStatementOfType as x,getManagedResourcesByType as C}from"./astInfrastructureParser.js";import{addResourceSurgically as M,updateResourceSurgically as v,removeResourceSurgically as B,ensureImports as T,injectCustomCodeBlocks as b,validateModifiedFile as j}from"./astSurgicalModification.js";import{findDomainConstructCall as E,parseDomainProps as I,parseDomainErrorMessage as O,splitTopLevelArgs as k}from"./astDomainParser.js";export{M as addResourceSurgically,l as asBoolean,c as asNumber,n as asString,u as asStringArray,p as asStringUnion,d as captureExtraProperties,R as classifyStatements,g as convertToResourcePlan,T as ensureImports,y as extractCustomCodeBlocks,E as findDomainConstructCall,S as findManagedResourcePosition,x as getLastManagedStatementOfType,C as getManagedResourcesByType,b as injectCustomCodeBlocks,t as isCallRef,o as isExpressionRef,a as isIdentifierRef,i as isParsedObject,s as isPlainObject,O as parseDomainErrorMessage,I as parseDomainProps,m as parseInfrastructure,B as removeResourceSurgically,k as splitTopLevelArgs,v as updateResourceSurgically,j as validateModifiedFile};