@friggframework/devtools 2.0.0--canary.490.84409c6.0 → 2.0.0--canary.490.c46b045.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.
|
@@ -284,8 +284,13 @@ async function deployCommand(options) {
|
|
|
284
284
|
|
|
285
285
|
console.log('\n✓ Deployment completed successfully!');
|
|
286
286
|
|
|
287
|
-
// Run post-deployment health check (unless
|
|
288
|
-
|
|
287
|
+
// Run post-deployment health check (unless disabled)
|
|
288
|
+
// Can be disabled via:
|
|
289
|
+
// 1. CLI flag: --skip-doctor
|
|
290
|
+
// 2. AppDefinition: deployment.skipPostDeploymentHealthCheck: true
|
|
291
|
+
const skipHealthCheck = options.skipDoctor || appDefinition?.deployment?.skipPostDeploymentHealthCheck;
|
|
292
|
+
|
|
293
|
+
if (!skipHealthCheck) {
|
|
289
294
|
const stackName = getStackName(appDefinition, options);
|
|
290
295
|
|
|
291
296
|
if (stackName) {
|
|
@@ -295,7 +300,8 @@ async function deployCommand(options) {
|
|
|
295
300
|
console.log(' Run "frigg doctor <stack-name>" manually to check stack health');
|
|
296
301
|
}
|
|
297
302
|
} else {
|
|
298
|
-
|
|
303
|
+
const reason = options.skipDoctor ? '--skip-doctor flag' : 'deployment.skipPostDeploymentHealthCheck: true';
|
|
304
|
+
console.log(`\n⏭️ Skipping post-deployment health check (${reason})`);
|
|
299
305
|
}
|
|
300
306
|
}
|
|
301
307
|
|
|
@@ -1151,7 +1151,6 @@ class VpcBuilder extends InfrastructureBuilder {
|
|
|
1151
1151
|
// CRITICAL: Frontify production uses OLD naming (VPCEndpointS3, not FriggS3VPCEndpoint)
|
|
1152
1152
|
const existingLogicalIds = discoveredResources?.existingLogicalIds || [];
|
|
1153
1153
|
|
|
1154
|
-
console.log(` DEBUG: existingLogicalIds for VPC endpoints = ${JSON.stringify(existingLogicalIds.filter(id => id.includes('VPCEndpoint')))}`);
|
|
1155
1154
|
|
|
1156
1155
|
const logicalIdMap = {
|
|
1157
1156
|
s3: existingLogicalIds.includes('VPCEndpointS3') ? 'VPCEndpointS3' : 'FriggS3VPCEndpoint',
|
|
@@ -163,9 +163,6 @@ class CloudFormationDiscovery {
|
|
|
163
163
|
const associations = routeTable.Associations || [];
|
|
164
164
|
const subnetAssociations = associations.filter(a => a.SubnetId);
|
|
165
165
|
|
|
166
|
-
console.log(` DEBUG: Route table has ${associations.length} associations, ${subnetAssociations.length} with SubnetId`);
|
|
167
|
-
console.log(` DEBUG: Route table structure:`, JSON.stringify(routeTable, null, 2).substring(0, 500));
|
|
168
|
-
console.log(` DEBUG: discovered.privateSubnetId1 = ${discovered.privateSubnetId1}, discovered.privateSubnetId2 = ${discovered.privateSubnetId2}`);
|
|
169
166
|
|
|
170
167
|
if (subnetAssociations.length >= 1 && !discovered.privateSubnetId1) {
|
|
171
168
|
discovered.privateSubnetId1 = subnetAssociations[0].SubnetId;
|
|
@@ -213,7 +210,6 @@ class CloudFormationDiscovery {
|
|
|
213
210
|
* @param {Object} discovered - Object to populate with discovered resources
|
|
214
211
|
*/
|
|
215
212
|
async _extractFromResources(resources, discovered) {
|
|
216
|
-
console.log(` DEBUG: Processing ${resources.length} CloudFormation resources...`);
|
|
217
213
|
|
|
218
214
|
// Initialize existingLogicalIds array if not present
|
|
219
215
|
if (!discovered.existingLogicalIds) {
|
|
@@ -231,10 +227,6 @@ class CloudFormationDiscovery {
|
|
|
231
227
|
discovered.existingLogicalIds.push(LogicalResourceId);
|
|
232
228
|
}
|
|
233
229
|
|
|
234
|
-
// Debug Aurora detection
|
|
235
|
-
if (LogicalResourceId.includes('Aurora')) {
|
|
236
|
-
console.log(` DEBUG: Found Aurora resource: ${LogicalResourceId} (${ResourceType})`);
|
|
237
|
-
}
|
|
238
230
|
|
|
239
231
|
// Security Group - use to get VPC ID
|
|
240
232
|
if (LogicalResourceId === 'FriggLambdaSecurityGroup' && ResourceType === 'AWS::EC2::SecurityGroup') {
|
|
@@ -360,21 +352,14 @@ class CloudFormationDiscovery {
|
|
|
360
352
|
discovered.routeTableAssociations.push(PhysicalResourceId);
|
|
361
353
|
console.log(` ✓ Found route table association: ${LogicalResourceId}`);
|
|
362
354
|
|
|
363
|
-
//
|
|
364
|
-
// Physical ID is the association ID (rtbassoc-xxx), need to query to get subnet
|
|
365
|
-
console.log(` DEBUG: Checking if this is subnet 1 association: LogicalResourceId="${LogicalResourceId}", matches=${LogicalResourceId === 'FriggSubnet1RouteAssociation' || LogicalResourceId === 'FriggPrivateSubnet1RouteTableAssociation'}`);
|
|
366
|
-
console.log(` DEBUG: this.provider=${!!this.provider}, getEC2Client=${!!(this.provider && this.provider.getEC2Client)}`);
|
|
367
|
-
|
|
355
|
+
// Store association ID to query later for subnet extraction (after loop)
|
|
368
356
|
if (this.provider && this.provider.getEC2Client &&
|
|
369
357
|
(LogicalResourceId === 'FriggSubnet1RouteAssociation' || LogicalResourceId === 'FriggPrivateSubnet1RouteTableAssociation')) {
|
|
370
|
-
// Store association ID to query later (after loop)
|
|
371
358
|
discovered._subnet1AssociationId = PhysicalResourceId;
|
|
372
|
-
console.log(` DEBUG: Set _subnet1AssociationId = ${PhysicalResourceId}`);
|
|
373
359
|
}
|
|
374
360
|
if (this.provider && this.provider.getEC2Client &&
|
|
375
361
|
(LogicalResourceId === 'FriggSubnet2RouteAssociation' || LogicalResourceId === 'FriggPrivateSubnet2RouteTableAssociation')) {
|
|
376
362
|
discovered._subnet2AssociationId = PhysicalResourceId;
|
|
377
|
-
console.log(` DEBUG: Set _subnet2AssociationId = ${PhysicalResourceId}`);
|
|
378
363
|
}
|
|
379
364
|
}
|
|
380
365
|
|
|
@@ -460,9 +445,6 @@ class CloudFormationDiscovery {
|
|
|
460
445
|
discovered.s3VpcEndpointId = PhysicalResourceId;
|
|
461
446
|
discovered.vpcEndpoints.s3 = PhysicalResourceId;
|
|
462
447
|
console.log(` ✓ Found S3 VPC endpoint in stack: ${PhysicalResourceId}`);
|
|
463
|
-
console.log(` DEBUG: S3 VPC endpoint LogicalResourceId = "${LogicalResourceId}"`);
|
|
464
|
-
console.log(` DEBUG: Should have been added to existingLogicalIds at top of loop!`);
|
|
465
|
-
console.log(` DEBUG: existingLogicalIds.includes('VPCEndpointS3') = ${discovered.existingLogicalIds.includes('VPCEndpointS3')}`);
|
|
466
448
|
}
|
|
467
449
|
|
|
468
450
|
// DynamoDB Endpoint (both naming patterns)
|
|
@@ -607,9 +589,6 @@ class CloudFormationDiscovery {
|
|
|
607
589
|
}
|
|
608
590
|
|
|
609
591
|
// FALLBACK: Extract subnet IDs from route table associations (if VPC query didn't work)
|
|
610
|
-
// Query EC2 to describe the association and get the subnet ID
|
|
611
|
-
console.log(` DEBUG: Checking subnet association extraction - _subnet1AssociationId: ${discovered._subnet1AssociationId}, _subnet2AssociationId: ${discovered._subnet2AssociationId}`);
|
|
612
|
-
|
|
613
592
|
if (!discovered.privateSubnetId1 && discovered._subnet1AssociationId && this.provider && this.provider.getEC2Client) {
|
|
614
593
|
try {
|
|
615
594
|
console.log(` Querying EC2 for subnet from association ${discovered._subnet1AssociationId}...`);
|
|
@@ -623,21 +602,14 @@ class CloudFormationDiscovery {
|
|
|
623
602
|
]
|
|
624
603
|
}));
|
|
625
604
|
|
|
626
|
-
console.log(` DEBUG: Query returned ${rtResponse.RouteTables?.length || 0} route tables`);
|
|
627
605
|
if (rtResponse.RouteTables && rtResponse.RouteTables[0]) {
|
|
628
|
-
console.log(` DEBUG: First route table has ${rtResponse.RouteTables[0].Associations?.length || 0} associations`);
|
|
629
606
|
const assoc = rtResponse.RouteTables[0].Associations.find(a =>
|
|
630
607
|
a.RouteTableAssociationId === discovered._subnet1AssociationId
|
|
631
608
|
);
|
|
632
|
-
console.log(` DEBUG: Found matching association: ${!!assoc}, has SubnetId: ${!!assoc?.SubnetId}`);
|
|
633
609
|
if (assoc && assoc.SubnetId) {
|
|
634
610
|
discovered.privateSubnetId1 = assoc.SubnetId;
|
|
635
611
|
console.log(` ✓ Extracted private subnet 1 from association query: ${assoc.SubnetId}`);
|
|
636
|
-
} else {
|
|
637
|
-
console.warn(` ⚠️ Association found but no SubnetId in response`);
|
|
638
612
|
}
|
|
639
|
-
} else {
|
|
640
|
-
console.warn(` ⚠️ No route tables returned for association ${discovered._subnet1AssociationId}`);
|
|
641
613
|
}
|
|
642
614
|
} catch (error) {
|
|
643
615
|
console.warn(` ⚠️ Could not query subnet from association: ${error.message}`);
|
|
@@ -655,21 +627,14 @@ class CloudFormationDiscovery {
|
|
|
655
627
|
]
|
|
656
628
|
}));
|
|
657
629
|
|
|
658
|
-
console.log(` DEBUG: Query returned ${rtResponse.RouteTables?.length || 0} route tables for subnet 2`);
|
|
659
630
|
if (rtResponse.RouteTables && rtResponse.RouteTables[0]) {
|
|
660
|
-
console.log(` DEBUG: First route table has ${rtResponse.RouteTables[0].Associations?.length || 0} associations`);
|
|
661
631
|
const assoc = rtResponse.RouteTables[0].Associations.find(a =>
|
|
662
632
|
a.RouteTableAssociationId === discovered._subnet2AssociationId
|
|
663
633
|
);
|
|
664
|
-
console.log(` DEBUG: Found matching association for subnet 2: ${!!assoc}, has SubnetId: ${!!assoc?.SubnetId}`);
|
|
665
634
|
if (assoc && assoc.SubnetId) {
|
|
666
635
|
discovered.privateSubnetId2 = assoc.SubnetId;
|
|
667
636
|
console.log(` ✓ Extracted private subnet 2 from association query: ${assoc.SubnetId}`);
|
|
668
|
-
} else {
|
|
669
|
-
console.warn(` ⚠️ Association found but no SubnetId in response for subnet 2`);
|
|
670
637
|
}
|
|
671
|
-
} else {
|
|
672
|
-
console.warn(` ⚠️ No route tables returned for association ${discovered._subnet2AssociationId}`);
|
|
673
638
|
}
|
|
674
639
|
} catch (error) {
|
|
675
640
|
console.warn(` ⚠️ Could not query subnet from association: ${error.message}`);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@friggframework/devtools",
|
|
3
3
|
"prettier": "@friggframework/prettier-config",
|
|
4
|
-
"version": "2.0.0--canary.490.
|
|
4
|
+
"version": "2.0.0--canary.490.c46b045.0",
|
|
5
5
|
"bin": {
|
|
6
6
|
"frigg": "./frigg-cli/index.js"
|
|
7
7
|
},
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"@babel/eslint-parser": "^7.18.9",
|
|
17
17
|
"@babel/parser": "^7.25.3",
|
|
18
18
|
"@babel/traverse": "^7.25.3",
|
|
19
|
-
"@friggframework/core": "2.0.0--canary.490.
|
|
20
|
-
"@friggframework/schemas": "2.0.0--canary.490.
|
|
21
|
-
"@friggframework/test": "2.0.0--canary.490.
|
|
19
|
+
"@friggframework/core": "2.0.0--canary.490.c46b045.0",
|
|
20
|
+
"@friggframework/schemas": "2.0.0--canary.490.c46b045.0",
|
|
21
|
+
"@friggframework/test": "2.0.0--canary.490.c46b045.0",
|
|
22
22
|
"@hapi/boom": "^10.0.1",
|
|
23
23
|
"@inquirer/prompts": "^5.3.8",
|
|
24
24
|
"axios": "^1.7.2",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"validate-npm-package-name": "^5.0.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@friggframework/eslint-config": "2.0.0--canary.490.
|
|
50
|
-
"@friggframework/prettier-config": "2.0.0--canary.490.
|
|
49
|
+
"@friggframework/eslint-config": "2.0.0--canary.490.c46b045.0",
|
|
50
|
+
"@friggframework/prettier-config": "2.0.0--canary.490.c46b045.0",
|
|
51
51
|
"aws-sdk-client-mock": "^4.1.0",
|
|
52
52
|
"aws-sdk-client-mock-jest": "^4.1.0",
|
|
53
53
|
"jest": "^30.1.3",
|
|
@@ -79,5 +79,5 @@
|
|
|
79
79
|
"publishConfig": {
|
|
80
80
|
"access": "public"
|
|
81
81
|
},
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "c46b04556cfd984038f38d98274100a0551bb470"
|
|
83
83
|
}
|