1- import { Module , Chunk } from '../types'
1+ import Chunk from 'webpack/lib/Chunk'
2+ import Module from 'webpack/lib/Module'
23
34type ModuleMap = {
45 [ key : string ] : Module
@@ -38,8 +39,8 @@ const affectedModules = (
3839 * [moduleId]: Module
3940 * }
4041 */
41- const buildModuleMap = ( modules : Array < Module > ) : ModuleMap => {
42- const moduleMap = modules . reduce (
42+ const buildModuleMap = ( modules : Set < Module > ) : ModuleMap => {
43+ const moduleMap = Array . from ( modules ) . reduce (
4344 ( memo , module : Module ) => ( { ...memo , [ module . id ] : module } ) ,
4445 { }
4546 )
@@ -55,12 +56,13 @@ const buildModuleMap = (modules: Array<Module>): ModuleMap => {
5556 * }
5657 * }
5758 *
58- * @param modules Array<number>
59+ * @param chunks Set<Chunk>
60+ * @param modules Set<Module>
5961 * @return ModuleUsageMap
6062 */
6163const buildModuleUsageMap = (
62- chunks : Array < Chunk > ,
63- modules : Array < Module >
64+ chunks : Set < Chunk > ,
65+ modules : Set < Module >
6466) : ModuleUsageMap => {
6567 // build a map of all modules with their parent
6668 // {
@@ -69,7 +71,7 @@ const buildModuleUsageMap = (
6971 // }
7072 // }
7173 //
72- const moduleUsageMap : ModuleUsageMap = modules . reduce (
74+ const moduleUsageMap : ModuleUsageMap = Array . from ( modules ) . reduce (
7375 ( memo , module : Module ) => {
7476 module . dependencies . forEach ( dependency => {
7577 const dependentModule = dependency . module
@@ -93,12 +95,12 @@ const buildModuleUsageMap = (
9395 // [moduleId]: Module
9496 // }
9597 // }
96- const chunkModuleMap : ModuleUsageMap = chunks . reduce ( ( memo , chunk : Chunk ) => {
98+ const chunkModuleMap : ModuleUsageMap = Array . from ( chunks ) . reduce ( ( memo , chunk : Chunk ) => {
9799 // build chunk map first to get also empty chunks (without modules)
98100 memo [ chunk . id ] = { } // eslint-disable-line no-param-reassign
99101 return memo
100102 } , { } )
101- modules . reduce ( ( memo , module : Module ) => {
103+ Array . from ( modules ) . reduce ( ( memo , module : Module ) => {
102104 module . getChunks ( ) . forEach ( ( chunk : Chunk ) => {
103105 memo [ chunk . id ] [ module . id ] = module // eslint-disable-line no-param-reassign
104106 } )
@@ -133,18 +135,18 @@ const buildModuleUsageMap = (
133135 * - affected directly by a file change
134136 * - affected indirectly by a change of it's dependencies and so on
135137 *
136- * @param chunks Array <Chunk>
137- * @param modules Array <Module>
138+ * @param chunks Set <Chunk>
139+ * @param modules Set <Module>
138140 * @return {Array.<number> }
139141 */
140142export default function getAffectedModuleIds (
141- chunks : Array < Chunk > ,
142- modules : Array < Module >
143+ chunks : Set < Chunk > ,
144+ modules : Set < Module >
143145) : Array < number | string > {
144146 const moduleMap : ModuleMap = buildModuleMap ( modules )
145147 const moduleUsageMap : ModuleUsageMap = buildModuleUsageMap ( chunks , modules )
146148
147- const builtModules = modules . filter ( isBuilt )
149+ const builtModules = Array . from ( modules ) . filter ( isBuilt )
148150 const affectedMap : ModuleMap = { }
149151 builtModules . forEach ( ( module : Module ) =>
150152 affectedModules ( moduleMap , moduleUsageMap , affectedMap , module . id )
0 commit comments