@@ -8,9 +8,10 @@ import { getSourceFragmentLength } from './clone';
88import { Detector } from './detector' ;
99import { END_EVENT , JscpdEventEmitter , MATCH_SOURCE_EVENT , SOURCE_SKIPPED_EVENT } from './events' ;
1010import { IClone } from './interfaces/clone.interface' ;
11- import { IHook } from './interfaces/hook.interface' ;
1211import { IListener } from './interfaces/listener.interface' ;
1312import { IOptions } from './interfaces/options.interface' ;
13+ import { IPostHook } from './interfaces/post-hook.interface' ;
14+ import { IPreHook } from './interfaces/pre-hook.interface' ;
1415import { IReporter } from './interfaces/reporter.interface' ;
1516import { ISourceOptions } from './interfaces/source-options.interface' ;
1617import { IStatistic } from './interfaces/statistic.interface' ;
@@ -72,8 +73,8 @@ export class JSCPD {
7273 private _options : IOptions ;
7374 private _files : EntryItem [ ] = [ ] ;
7475 private _clones : IClone [ ] = [ ] ;
75- private _preHooks : IHook [ ] = [ ] ;
76- private _postHooks : IHook [ ] = [ ] ;
76+ private _preHooks : IPreHook [ ] = [ ] ;
77+ private _postHooks : IPostHook [ ] = [ ] ;
7778
7879 constructor ( options : IOptions = { } as IOptions , eventEmitter ?: EventEmitter ) {
7980 this . eventEmitter = eventEmitter || new JscpdEventEmitter ( ) ;
@@ -84,16 +85,16 @@ export class JSCPD {
8485 StoresManager . initialize ( this . _options . storeOptions ) ;
8586 }
8687
87- public attachPreHook ( hook : IHook ) {
88+ public attachPreHook ( hook : IPreHook ) {
8889 this . _preHooks . push ( hook ) ;
8990 }
9091
91- public attachPostHook ( hook : IHook ) {
92+ public attachPostHook ( hook : IPostHook ) {
9293 this . _postHooks . push ( hook ) ;
9394 }
9495
9596 public async detect ( code : string , options : ISourceOptions ) : Promise < IClone [ ] > {
96- await Promise . all ( this . _preHooks . map ( ( hook : IHook ) => hook . use ( this ) ) ) ;
97+ await Promise . all ( this . _preHooks . map ( ( hook : IPreHook ) => hook . use ( this ) ) ) ;
9798 this . _clones = await this . _detect ( code , { ...options , source : code } ) ;
9899 await this . _detectionFinished ( this . _clones , true ) ;
99100 return this . _clones ;
@@ -138,7 +139,7 @@ export class JSCPD {
138139 console . log ( bold ( `Found ${ this . _files . length } files to detect.` ) ) ;
139140 }
140141
141- await Promise . all ( this . _preHooks . map ( ( hook : IHook ) => hook . use ( this ) ) ) ;
142+ await Promise . all ( this . _preHooks . map ( ( hook : IPreHook ) => hook . use ( this ) ) ) ;
142143
143144 const sources : Array < { source : string ; sourceOptions : ISourceOptions } > = this . _files
144145 . filter ( ( stats : any ) => {
@@ -239,7 +240,10 @@ export class JSCPD {
239240 }
240241
241242 private async _detectionFinished ( clones : IClone [ ] , pesists : boolean = false ) {
242- await Promise . all ( this . _postHooks . map ( ( hook : IHook ) => hook . use ( this ) ) ) ;
243+ await Promise . all ( this . _postHooks . map ( async ( hook : IPostHook ) => {
244+ clones = await hook . use ( clones ) ;
245+ return clones ;
246+ } ) ) ;
243247 await this . generateReports ( clones ) ;
244248 this . eventEmitter . emit ( END_EVENT , clones ) ;
245249 if ( ! pesists ) {
0 commit comments