@@ -15,7 +15,7 @@ import {
1515 clearProgressModuleSetting ,
1616 readContentTypeSchemas ,
1717 readGlobalFieldSchemas ,
18- generateUid
18+ generateUid ,
1919} from '@contentstack/cli-utilities' ;
2020import { createWriteStream , existsSync , mkdirSync , writeFileSync , rmSync } from 'fs' ;
2121import config from './config' ;
@@ -56,7 +56,9 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
5656 minWidth : 7 ,
5757 header : 'Fix Status' ,
5858 get : ( row : any ) => {
59- return row . fixStatus === 'Fixed' ? getChalk ( ) . greenBright ( row . fixStatus ) : getChalk ( ) . redBright ( row . fixStatus ) ;
59+ return row . fixStatus === 'Fixed'
60+ ? getChalk ( ) . greenBright ( row . fixStatus )
61+ : getChalk ( ) . redBright ( row . fixStatus ) ;
6062 } ,
6163 } ,
6264 } ;
@@ -104,6 +106,8 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
104106 missingFieldRules,
105107 missingMultipleFields,
106108 missingRefsInComposableStudio,
109+ missingScanStatusAssets,
110+ missingAssetRefsInEntries,
107111 } = await this . scanAndFix ( ) ;
108112
109113 if ( this . flags [ 'show-console-output' ] ) {
@@ -135,6 +139,12 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
135139 { module : 'Entries Changed Multiple Fields' , missingRefs : missingMultipleFields } ,
136140 ] ) ;
137141 this . showOutputOnScreenWorkflowsAndExtension ( [ { module : 'Studio' , missingRefs : missingRefsInComposableStudio } ] ) ;
142+ this . showOutputOnScreenWorkflowsAndExtension ( [
143+ { module : 'Assets Scan Status' , missingRefs : missingScanStatusAssets } ,
144+ ] ) ;
145+ this . showOutputOnScreenWorkflowsAndExtension ( [
146+ { module : 'Entries Asset Field' , missingRefs : missingAssetRefsInEntries } ,
147+ ] ) ;
138148 }
139149 this . showOutputOnScreenWorkflowsAndExtension ( [ { module : 'Summary' , missingRefs : this . summaryDataToPrint } ] ) ;
140150
@@ -151,7 +161,9 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
151161 ! isEmpty ( missingEnvLocalesInEntries ) ||
152162 ! isEmpty ( missingFieldRules ) ||
153163 ! isEmpty ( missingMultipleFields ) ||
154- ! isEmpty ( missingRefsInComposableStudio )
164+ ! isEmpty ( missingRefsInComposableStudio ) ||
165+ ! isEmpty ( missingScanStatusAssets ) ||
166+ ! isEmpty ( missingAssetRefsInEntries )
155167 ) {
156168 if ( this . currentCommand === 'cm:stacks:audit' ) {
157169 log . warn ( this . $t ( auditMsg . FINAL_REPORT_PATH , { path : this . sharedConfig . reportPath } ) , this . auditContext ) ;
@@ -192,7 +204,9 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
192204 ! isEmpty ( missingEnvLocalesInAssets ) ||
193205 ! isEmpty ( missingEnvLocalesInEntries ) ||
194206 ! isEmpty ( missingFieldRules ) ||
195- ! isEmpty ( missingRefsInComposableStudio )
207+ ! isEmpty ( missingRefsInComposableStudio ) ||
208+ ! isEmpty ( missingScanStatusAssets ) ||
209+ ! isEmpty ( missingAssetRefsInEntries )
196210 ) ;
197211 }
198212
@@ -223,6 +237,7 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
223237 missingTitleFields ?: Record < string , any > ;
224238 missingEnvLocale ?: Record < string , any > ;
225239 missingMultipleFields ?: Record < string , any > ;
240+ missingAssetRefs ?: Record < string , any > ;
226241 } = { } ,
227242 missingMandatoryFields ,
228243 missingTitleFields ,
@@ -231,6 +246,8 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
231246 missingEnvLocalesInEntries ,
232247 missingFieldRules ,
233248 missingMultipleFields ,
249+ missingAssetRefsInEntries ,
250+ missingScanStatusAssets ,
234251 missingRefsInComposableStudio ;
235252
236253 const constructorParam : ModuleConstructorParam & CtConstructorParam = {
@@ -270,17 +287,21 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
270287 constructorParam [ 'moduleName' ] = module ;
271288
272289 switch ( module ) {
273- case 'assets' :
290+ case 'assets' : {
274291 log . info ( 'Executing assets audit' , this . auditContext ) ;
275- const assetsTotalCount = dataModuleWise [ 'assets' ] ?. Total || 0 ;
276- missingEnvLocalesInAssets = await new Assets ( cloneDeep ( constructorParam ) ) . run ( false , assetsTotalCount ) ;
292+ const assetsModule = new Assets ( cloneDeep ( constructorParam ) ) ;
293+ missingEnvLocalesInAssets = await assetsModule . run ( ) ;
294+ missingScanStatusAssets = assetsModule . missingScanStatusAssets ?? { } ;
277295 await this . prepareReport ( module , missingEnvLocalesInAssets ) ;
296+ await this . prepareReport ( 'asset-scan-status' , missingScanStatusAssets ) ;
278297 this . getAffectedData ( 'assets' , dataModuleWise [ 'assets' ] , missingEnvLocalesInAssets ) ;
298+ this . getAffectedData ( 'asset-scan-status' , dataModuleWise [ 'assets' ] , missingScanStatusAssets ) ;
279299 log . success (
280- `Assets audit completed. Found ${ Object . keys ( missingEnvLocalesInAssets || { } ) . length } issues` ,
300+ `Assets audit completed. Found ${ Object . keys ( missingEnvLocalesInAssets || { } ) . length } issues, ${ Object . keys ( missingScanStatusAssets ) . length } non-clean scan status assets ` ,
281301 this . auditContext ,
282302 ) ;
283303 break ;
304+ }
284305 case 'content-types' :
285306 log . info ( 'Executing content-types audit' , this . auditContext ) ;
286307 const contentTypesTotalCount = dataModuleWise [ 'content-types' ] ?. Total || 0 ;
@@ -313,6 +334,7 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
313334 missingTitleFields = missingEntry . missingTitleFields ?? { } ;
314335 missingEnvLocalesInEntries = missingEntry . missingEnvLocale ?? { } ;
315336 missingMultipleFields = missingEntry . missingMultipleFields ?? { } ;
337+ missingAssetRefsInEntries = missingEntry . missingAssetRefs ?? { } ;
316338 await this . prepareReport ( module , missingEntryRefs ) ;
317339
318340 await this . prepareReport ( `Entries_Select_field` , missingSelectFeild ) ;
@@ -324,6 +346,8 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
324346 await this . prepareReport ( 'Entry_Missing_Locale_and_Env_in_Publish_Details' , missingEnvLocalesInEntries ) ;
325347
326348 await this . prepareReport ( 'Entry_Multiple_Fields' , missingMultipleFields ) ;
349+
350+ await this . prepareReport ( 'Entries_Asset_field' , missingAssetRefsInEntries ) ;
327351 this . getAffectedData ( 'entries' , dataModuleWise [ 'entries' ] , missingEntry ) ;
328352 log . success (
329353 `Entries audit completed. Found ${ Object . keys ( missingEntryRefs || { } ) . length } reference issues` ,
@@ -382,14 +406,14 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
382406 // schema from moduleName, so invoke it once per schema (overriding moduleName per
383407 // instance) and merge the results. Merged object is keyed by schema uid; a content type
384408 // and global field sharing a uid would collide, which is not expected in practice.
385- const ctFieldRules = await new FieldRule (
386- cloneDeep ( { ... constructorParam , moduleName : 'content-types' } ) ,
387- ) . run ( data . ctSchema ?. length || 0 ) ;
409+ const ctFieldRules = await new FieldRule ( cloneDeep ( { ... constructorParam , moduleName : 'content-types' } ) ) . run (
410+ data . ctSchema ?. length || 0 ,
411+ ) ;
388412 let gfFieldRules : Record < string , any > = { } ;
389413 if ( data . gfSchema ?. length ) {
390- gfFieldRules = await new FieldRule (
391- cloneDeep ( { ... constructorParam , moduleName : 'global-fields' } ) ,
392- ) . run ( data . gfSchema . length ) ;
414+ gfFieldRules = await new FieldRule ( cloneDeep ( { ... constructorParam , moduleName : 'global-fields' } ) ) . run (
415+ data . gfSchema . length ,
416+ ) ;
393417 }
394418 missingFieldRules = { ...ctFieldRules , ...gfFieldRules } ;
395419
@@ -455,6 +479,8 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
455479 missingFieldRules,
456480 missingMultipleFields,
457481 missingRefsInComposableStudio,
482+ missingScanStatusAssets,
483+ missingAssetRefsInEntries,
458484 } ;
459485 }
460486
@@ -638,7 +664,8 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
638664 | keyof typeof config . moduleConfig
639665 | keyof typeof config . ReportTitleForEntries
640666 | 'field-rules'
641- | 'Summary' ,
667+ | 'Summary'
668+ | 'asset-scan-status' ,
642669 listOfMissingRefs : Record < string , any > ,
643670 ) : Promise < void > {
644671 log . debug ( `Preparing report for module: ${ moduleName } ` , this . auditContext ) ;
@@ -682,7 +709,8 @@ export abstract class AuditBaseCommand extends BaseCommand<typeof AuditBaseComma
682709 | keyof typeof config . moduleConfig
683710 | keyof typeof config . ReportTitleForEntries
684711 | 'field-rules'
685- | 'Summary' ,
712+ | 'Summary'
713+ | 'asset-scan-status' ,
686714 listOfMissingRefs : Record < string , any > ,
687715 ) : Promise < void > {
688716 if ( Object . keys ( config . moduleConfig ) . includes ( moduleName ) || config . field_level_modules . includes ( moduleName ) ) {
0 commit comments