@@ -5,10 +5,10 @@ import {createFsFromVolume, Volume} from 'memfs';
5
5
import { notify } from 'node-notifier' ;
6
6
import { satisfies } from 'semver' ;
7
7
import fixtures from './fixtures' ;
8
- import WebpackNotifierPlugin from '../../' ;
8
+ import WebpackNotifierPlugin , { Options } from '../../' ;
9
9
10
- function getCompiler ( compilerOpts ) {
11
- const config = {
10
+ function getCompiler ( compilerOpts : webpack . Configuration ) : webpack . Compiler {
11
+ const config : webpack . Configuration = {
12
12
entry : '/entry.js' ,
13
13
output : {
14
14
path : '/' ,
@@ -22,20 +22,20 @@ function getCompiler(compilerOpts) {
22
22
23
23
return webpack ( config ) ;
24
24
}
25
- function patchCompiler ( compiler , fs ) {
25
+ function patchCompiler ( compiler : webpack . Compiler , fs : any ) {
26
26
compiler . inputFileSystem = fs ;
27
27
compiler . outputFileSystem = fs ;
28
28
// compiler.watchFileSystem = fs;
29
29
30
30
if ( satisfies ( webpackVersion , '<5' ) ) {
31
- compiler [ 'resolvers' ] . normal . fileSystem = fs ;
31
+ ( compiler as any ) [ 'resolvers' ] . normal . fileSystem = fs ;
32
32
// compiler['resolvers'].loader.fileSystem = fs;
33
33
// compiler['resolvers'].context.fileSystem = fs;
34
34
}
35
35
}
36
- async function compile ( compiler ) {
36
+ async function compile ( compiler : webpack . Compiler ) : Promise < webpack . Stats > {
37
37
return new Promise ( ( resolve , reject ) => {
38
- compiler . run ( ( err , res ) => {
38
+ compiler . run ( ( err ?: Error , res ?: webpack . Stats ) => {
39
39
if ( err ) {
40
40
return reject ( err ) ;
41
41
}
@@ -49,18 +49,18 @@ function prepareFs() {
49
49
const fs = createFsFromVolume ( vol ) ;
50
50
51
51
if ( satisfies ( webpackVersion , '<5' ) ) {
52
- fs [ 'join' ] = join ;
52
+ ( fs as any ) [ 'join' ] = join ;
53
53
}
54
54
55
55
return { fs, vol} ;
56
56
}
57
57
58
- function updateFs ( vol , json ) {
58
+ function updateFs ( vol : any , json : any ) {
59
59
vol . reset ( ) ;
60
60
vol . fromJSON ( json , '/' ) ;
61
61
}
62
62
63
- export const reduceArraySerializer = {
63
+ export const reduceArraySerializer : jest . SnapshotSerializerPlugin = {
64
64
test ( val ) {
65
65
return Array . isArray ( val ) &&
66
66
val . length === 1 &&
@@ -73,7 +73,7 @@ export const reduceArraySerializer = {
73
73
return printer ( val [ 0 ] [ 0 ] , config , indentation , depth , refs ) ;
74
74
} ,
75
75
} ;
76
- export const contentImageSerializer = {
76
+ export const contentImageSerializer : jest . SnapshotSerializerPlugin = {
77
77
test ( val ) {
78
78
return typeof val === 'object' &&
79
79
val . contentImage &&
@@ -90,7 +90,7 @@ export const contentImageSerializer = {
90
90
} ;
91
91
92
92
export type Sources = string [ ] ;
93
- export type PluginOptions = { } | undefined ;
93
+ export type PluginOptions = Options | undefined ;
94
94
export type CompilerOptions = { } ;
95
95
export type TestArguments = [ Sources , PluginOptions , CompilerOptions ?] ;
96
96
@@ -99,17 +99,17 @@ export function testChangesFlow(...args: TestArguments) {
99
99
return runTest ( ...args ) ;
100
100
} ;
101
101
102
- async function runTest ( sources , opts , compilerOpts = { } ) {
102
+ async function runTest ( sources : Sources , opts : PluginOptions , compilerOpts = { } ) {
103
103
const compiler = getCompiler ( compilerOpts ) ;
104
104
const { fs, vol} = prepareFs ( ) ;
105
105
const plugin = new WebpackNotifierPlugin ( opts ) ;
106
106
plugin . apply ( compiler ) ;
107
107
patchCompiler ( compiler , fs ) ;
108
108
109
109
for ( const name of sources ) {
110
- notify . mockClear ( ) ;
111
- updateFs ( vol , fixtures . simple [ name ] ) ;
110
+ ( notify as jest . Mock ) . mockClear ( ) ;
111
+ updateFs ( vol , ( fixtures . simple as any ) [ name ] ) ;
112
112
await compile ( compiler ) ;
113
- expect ( notify . mock . calls ) . toMatchSnapshot ( `after "${ name } " build` ) ;
113
+ expect ( ( notify as jest . Mock ) . mock . calls ) . toMatchSnapshot ( `after "${ name } " build` ) ;
114
114
}
115
115
}
0 commit comments