@@ -21,6 +21,7 @@ import {
2121 FieldRule ,
2222 ModuleDataReader ,
2323 CustomRoles ,
24+ ComposableStudio ,
2425} from './modules' ;
2526
2627import {
@@ -50,19 +51,6 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
5051 } ;
5152 }
5253
53- /**
54- * Create audit context object similar to export command
55- */
56- private createAuditContext ( moduleName ?: string ) : AuditContext {
57- return {
58- command : this . context ?. info ?. command || 'cm:stacks:audit' ,
59- module : moduleName || 'audit' ,
60- email : configHandler . get ( 'email' ) || '' ,
61- sessionId : this . context ?. sessionId || '' ,
62- authenticationMethod : configHandler . get ( 'authenticationMethod' ) || '' ,
63- } ;
64- }
65-
6654 /**
6755 * The `start` function performs an audit on content types, global fields, entries, and workflows and displays
6856 * any missing references.
@@ -109,6 +97,7 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
10997 missingEnvLocalesInEntries,
11098 missingFieldRules,
11199 missingMultipleFields,
100+ missingRefsInComposableStudio,
112101 } = await this . scanAndFix ( ) ;
113102
114103 if ( this . flags [ 'show-console-output' ] ) {
@@ -139,6 +128,7 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
139128 this . showOutputOnScreenWorkflowsAndExtension ( [
140129 { module : 'Entries Changed Multiple Fields' , missingRefs : missingMultipleFields } ,
141130 ] ) ;
131+ this . showOutputOnScreenWorkflowsAndExtension ( [ { module : 'Studio' , missingRefs : missingRefsInComposableStudio } ] ) ;
142132 }
143133 this . showOutputOnScreenWorkflowsAndExtension ( [ { module : 'Summary' , missingRefs : this . summaryDataToPrint } ] ) ;
144134
@@ -154,12 +144,16 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
154144 ! isEmpty ( missingEnvLocalesInAssets ) ||
155145 ! isEmpty ( missingEnvLocalesInEntries ) ||
156146 ! isEmpty ( missingFieldRules ) ||
157- ! isEmpty ( missingMultipleFields )
147+ ! isEmpty ( missingMultipleFields ) ||
148+ ! isEmpty ( missingRefsInComposableStudio )
158149 ) {
159150 if ( this . currentCommand === 'cm:stacks:audit' ) {
160151 log . warn ( this . $t ( auditMsg . FINAL_REPORT_PATH , { path : this . sharedConfig . reportPath } ) , this . auditContext ) ;
161152 } else {
162- log . warn ( this . $t ( this . messages . FIXED_CONTENT_PATH_MAG , { path : this . sharedConfig . basePath } ) , this . auditContext ) ;
153+ log . warn (
154+ this . $t ( this . messages . FIXED_CONTENT_PATH_MAG , { path : this . sharedConfig . basePath } ) ,
155+ this . auditContext ,
156+ ) ;
163157 }
164158 } else {
165159 log . info ( this . messages . NO_MISSING_REF_FOUND , this . auditContext ) ;
@@ -191,7 +185,8 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
191185 ! isEmpty ( missingRefInCustomRoles ) ||
192186 ! isEmpty ( missingEnvLocalesInAssets ) ||
193187 ! isEmpty ( missingEnvLocalesInEntries ) ||
194- ! isEmpty ( missingFieldRules )
188+ ! isEmpty ( missingFieldRules ) ||
189+ ! isEmpty ( missingRefsInComposableStudio )
195190 ) ;
196191 }
197192
@@ -204,8 +199,11 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
204199 async scanAndFix ( ) {
205200 log . debug ( 'Starting scan and fix process' , this . auditContext ) ;
206201 let { ctSchema, gfSchema } = this . getCtAndGfSchema ( ) ;
207- log . info ( `Retrieved ${ ctSchema ?. length || 0 } content types and ${ gfSchema ?. length || 0 } global fields` , this . auditContext ) ;
208-
202+ log . info (
203+ `Retrieved ${ ctSchema ?. length || 0 } content types and ${ gfSchema ?. length || 0 } global fields` ,
204+ this . auditContext ,
205+ ) ;
206+
209207 let missingCtRefs ,
210208 missingGfRefs ,
211209 missingEntryRefs ,
@@ -226,7 +224,8 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
226224 missingEnvLocalesInAssets ,
227225 missingEnvLocalesInEntries ,
228226 missingFieldRules ,
229- missingMultipleFields ;
227+ missingMultipleFields ,
228+ missingRefsInComposableStudio ;
230229
231230 const constructorParam : ModuleConstructorParam & CtConstructorParam = {
232231 ctSchema,
@@ -247,7 +246,7 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
247246
248247 for ( const module of this . sharedConfig . flags . modules || this . sharedConfig . modules ) {
249248 // Update audit context with current module
250- this . auditContext = this . createAuditContext ( module ) ;
249+ this . auditContext = { module : module } ;
251250 log . debug ( `Starting audit for module: ${ module } ` , this . auditContext ) ;
252251 log . info ( `Starting audit for module: ${ module } ` , this . auditContext ) ;
253252
@@ -271,23 +270,32 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
271270 missingEnvLocalesInAssets = await new Assets ( cloneDeep ( constructorParam ) ) . run ( false , assetsTotalCount ) ;
272271 await this . prepareReport ( module , missingEnvLocalesInAssets ) ;
273272 this . getAffectedData ( 'assets' , dataModuleWise [ 'assets' ] , missingEnvLocalesInAssets ) ;
274- log . success ( `Assets audit completed. Found ${ Object . keys ( missingEnvLocalesInAssets || { } ) . length } issues` , this . auditContext ) ;
273+ log . success (
274+ `Assets audit completed. Found ${ Object . keys ( missingEnvLocalesInAssets || { } ) . length } issues` ,
275+ this . auditContext ,
276+ ) ;
275277 break ;
276278 case 'content-types' :
277279 log . info ( 'Executing content-types audit' , this . auditContext ) ;
278280 const contentTypesTotalCount = dataModuleWise [ 'content-types' ] ?. Total || 0 ;
279281 missingCtRefs = await new ContentType ( cloneDeep ( constructorParam ) ) . run ( false , contentTypesTotalCount ) ;
280282 await this . prepareReport ( module , missingCtRefs ) ;
281283 this . getAffectedData ( 'content-types' , dataModuleWise [ 'content-types' ] , missingCtRefs ) ;
282- log . success ( `Content-types audit completed. Found ${ Object . keys ( missingCtRefs || { } ) . length } issues` , this . auditContext ) ;
284+ log . success (
285+ `Content-types audit completed. Found ${ Object . keys ( missingCtRefs || { } ) . length } issues` ,
286+ this . auditContext ,
287+ ) ;
283288 break ;
284289 case 'global-fields' :
285290 log . info ( 'Executing global-fields audit' , this . auditContext ) ;
286291 const globalFieldsTotalCount = dataModuleWise [ 'global-fields' ] ?. Total || 0 ;
287292 missingGfRefs = await new GlobalField ( cloneDeep ( constructorParam ) ) . run ( false , globalFieldsTotalCount ) ;
288293 await this . prepareReport ( module , missingGfRefs ) ;
289294 this . getAffectedData ( 'global-fields' , dataModuleWise [ 'global-fields' ] , missingGfRefs ) ;
290- log . success ( `Global-fields audit completed. Found ${ Object . keys ( missingGfRefs || { } ) . length } issues` , this . auditContext ) ;
295+ log . success (
296+ `Global-fields audit completed. Found ${ Object . keys ( missingGfRefs || { } ) . length } issues` ,
297+ this . auditContext ,
298+ ) ;
291299 break ;
292300 case 'entries' :
293301 log . info ( 'Executing entries audit' , this . auditContext ) ;
@@ -311,7 +319,10 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
311319
312320 await this . prepareReport ( 'Entry_Multiple_Fields' , missingMultipleFields ) ;
313321 this . getAffectedData ( 'entries' , dataModuleWise [ 'entries' ] , missingEntry ) ;
314- log . success ( `Entries audit completed. Found ${ Object . keys ( missingEntryRefs || { } ) . length } reference issues` , this . auditContext ) ;
322+ log . success (
323+ `Entries audit completed. Found ${ Object . keys ( missingEntryRefs || { } ) . length } reference issues` ,
324+ this . auditContext ,
325+ ) ;
315326
316327 break ;
317328 case 'workflows' :
@@ -325,7 +336,10 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
325336 } ) . run ( workflowsTotalCount ) ;
326337 await this . prepareReport ( module , missingCtRefsInWorkflow ) ;
327338 this . getAffectedData ( 'workflows' , dataModuleWise [ 'workflows' ] , missingCtRefsInWorkflow ) ;
328- log . success ( `Workflows audit completed. Found ${ Object . keys ( missingCtRefsInWorkflow || { } ) . length } issues` , this . auditContext ) ;
339+ log . success (
340+ `Workflows audit completed. Found ${ Object . keys ( missingCtRefsInWorkflow || { } ) . length } issues` ,
341+ this . auditContext ,
342+ ) ;
329343
330344 break ;
331345 case 'extensions' :
@@ -334,28 +348,53 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
334348 missingCtRefsInExtensions = await new Extensions ( cloneDeep ( constructorParam ) ) . run ( extensionsTotalCount ) ;
335349 await this . prepareReport ( module , missingCtRefsInExtensions ) ;
336350 this . getAffectedData ( 'extensions' , dataModuleWise [ 'extensions' ] , missingCtRefsInExtensions ) ;
337- log . success ( `Extensions audit completed. Found ${ Object . keys ( missingCtRefsInExtensions || { } ) . length } issues` , this . auditContext ) ;
351+ log . success (
352+ `Extensions audit completed. Found ${ Object . keys ( missingCtRefsInExtensions || { } ) . length } issues` ,
353+ this . auditContext ,
354+ ) ;
338355 break ;
339356 case 'custom-roles' :
340357 log . info ( 'Executing custom-roles audit' , this . auditContext ) ;
341358 const customRolesTotalCount = dataModuleWise [ 'custom-roles' ] ?. Total || 0 ;
342359 missingRefInCustomRoles = await new CustomRoles ( cloneDeep ( constructorParam ) ) . run ( customRolesTotalCount ) ;
343360 await this . prepareReport ( module , missingRefInCustomRoles ) ;
344361 this . getAffectedData ( 'custom-roles' , dataModuleWise [ 'custom-roles' ] , missingRefInCustomRoles ) ;
345- log . success ( `Custom-roles audit completed. Found ${ Object . keys ( missingRefInCustomRoles || { } ) . length } issues` , this . auditContext ) ;
362+ log . success (
363+ `Custom-roles audit completed. Found ${ Object . keys ( missingRefInCustomRoles || { } ) . length } issues` ,
364+ this . auditContext ,
365+ ) ;
346366
347367 break ;
348368 case 'field-rules' :
349369 log . info ( 'Executing field-rules audit' , this . auditContext ) ;
350370 // NOTE: We are using the fixed content-type for validation of field rules
351- const data = this . getCtAndGfSchema ( ) ;
371+ const data = this . getCtAndGfSchema ( ) ;
352372 constructorParam . ctSchema = data . ctSchema ;
353373 constructorParam . gfSchema = data . gfSchema ;
354374 const fieldRulesTotalCount = dataModuleWise [ 'content-types' ] ?. Total || 0 ;
355375 missingFieldRules = await new FieldRule ( cloneDeep ( constructorParam ) ) . run ( fieldRulesTotalCount ) ;
356376 await this . prepareReport ( module , missingFieldRules ) ;
357377 this . getAffectedData ( 'field-rules' , dataModuleWise [ 'content-types' ] , missingFieldRules ) ;
358- log . success ( `Field-rules audit completed. Found ${ Object . keys ( missingFieldRules || { } ) . length } issues` , this . auditContext ) ;
378+ log . success (
379+ `Field-rules audit completed. Found ${ Object . keys ( missingFieldRules || { } ) . length } issues` ,
380+ this . auditContext ,
381+ ) ;
382+ break ;
383+ case 'composable-studio' :
384+ log . info ( 'Executing composable-studio audit' , this . auditContext ) ;
385+ missingRefsInComposableStudio = await new ComposableStudio ( cloneDeep ( constructorParam ) ) . run ( ) ;
386+ await this . prepareReport ( module , missingRefsInComposableStudio ) ;
387+ this . getAffectedData (
388+ 'composable-studio' ,
389+ dataModuleWise [ 'composable-studio' ] || { Total : Object . keys ( missingRefsInComposableStudio || { } ) . length } ,
390+ missingRefsInComposableStudio ,
391+ ) ;
392+ log . success (
393+ `Composable-studio audit completed. Found ${
394+ Object . keys ( missingRefsInComposableStudio || { } ) . length
395+ } issues`,
396+ this . auditContext ,
397+ ) ;
359398 break ;
360399 }
361400
@@ -393,6 +432,7 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
393432 missingEnvLocalesInEntries,
394433 missingFieldRules,
395434 missingMultipleFields,
435+ missingRefsInComposableStudio,
396436 } ;
397437 }
398438
@@ -536,7 +576,7 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
536576 }
537577
538578 print ( [ { bold : true , color : 'cyan' , message : ` ${ module } ` } ] ) ;
539-
579+
540580 const tableValues = Object . values ( missingRefs ) . flat ( ) ;
541581 missingRefs = Object . values ( missingRefs ) . flat ( ) ;
542582 const tableKeys = Object . keys ( missingRefs [ 0 ] ) ;
@@ -590,7 +630,7 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
590630 log . debug ( `Preparing report for module: ${ moduleName } ` , this . auditContext ) ;
591631 log . debug ( `Report path: ${ this . sharedConfig . reportPath } ` , this . auditContext ) ;
592632 log . info ( `Missing references count: ${ Object . keys ( listOfMissingRefs ) . length } ` , this . auditContext ) ;
593-
633+
594634 if ( isEmpty ( listOfMissingRefs ) ) {
595635 log . debug ( `No missing references found for ${ moduleName } , skipping report generation` , this . auditContext ) ;
596636 return Promise . resolve ( void 0 ) ;
0 commit comments