@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 --skip-doctor)
288
- if (!options.skipDoctor) {
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
- console.log('\n⏭️ Skipping post-deployment health check (--skip-doctor)');
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
- // CRITICAL: Extract subnet ID from association physical ID by querying EC2
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.84409c6.0",
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.84409c6.0",
20
- "@friggframework/schemas": "2.0.0--canary.490.84409c6.0",
21
- "@friggframework/test": "2.0.0--canary.490.84409c6.0",
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.84409c6.0",
50
- "@friggframework/prettier-config": "2.0.0--canary.490.84409c6.0",
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": "84409c6304ea14a6b9789ed8fc9ca07fe2385b17"
82
+ "gitHead": "c46b04556cfd984038f38d98274100a0551bb470"
83
83
  }