* Creates an instance of NormalModuleFactory. * @param {object} param params * @param {string=} param.context context * @param {InputFileSystem} param.fs file system * @param {ResolverFactory} param.resolverFactory resolverFactory * @param {ModuleOptions} param.options options * @param {
({
context,
fs,
resolverFactory,
options,
associatedObjectForCache
})
| 389 | * @param {AssociatedObjectForCache} param.associatedObjectForCache an object to which the cache will be attached |
| 390 | */ |
| 391 | constructor({ |
| 392 | context, |
| 393 | fs, |
| 394 | resolverFactory, |
| 395 | options, |
| 396 | associatedObjectForCache |
| 397 | }) { |
| 398 | super(); |
| 399 | this.hooks = Object.freeze({ |
| 400 | /** @type {AsyncSeriesBailHook<[ResolveData], Module | false | void>} */ |
| 401 | resolve: new AsyncSeriesBailHook(["resolveData"]), |
| 402 | /** @type {HookMap<AsyncSeriesBailHook<[ResourceDataWithData, ResolveData], true | void>>} */ |
| 403 | resolveForScheme: new HookMap( |
| 404 | () => new AsyncSeriesBailHook(["resourceData", "resolveData"]) |
| 405 | ), |
| 406 | /** @type {HookMap<AsyncSeriesBailHook<[ResourceDataWithData, ResolveData], true | void>>} */ |
| 407 | resolveInScheme: new HookMap( |
| 408 | () => new AsyncSeriesBailHook(["resourceData", "resolveData"]) |
| 409 | ), |
| 410 | /** @type {AsyncSeriesBailHook<[ResolveData], Module | undefined>} */ |
| 411 | factorize: new AsyncSeriesBailHook(["resolveData"]), |
| 412 | /** @type {AsyncSeriesBailHook<[ResolveData], false | void>} */ |
| 413 | beforeResolve: new AsyncSeriesBailHook(["resolveData"]), |
| 414 | /** @type {AsyncSeriesBailHook<[ResolveData], false | void>} */ |
| 415 | afterResolve: new AsyncSeriesBailHook(["resolveData"]), |
| 416 | /** @type {AsyncSeriesBailHook<[CreateData, ResolveData], Module | void>} */ |
| 417 | createModule: new AsyncSeriesBailHook(["createData", "resolveData"]), |
| 418 | /** @type {SyncWaterfallHook<[Module, CreateData, ResolveData]>} */ |
| 419 | module: new SyncWaterfallHook(["module", "createData", "resolveData"]), |
| 420 | /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [2], 1>>} */ |
| 421 | createParser: new HookMap(() => new SyncBailHook(["parserOptions"])), |
| 422 | /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [1, 2]>>} */ |
| 423 | parser: new HookMap(() => new SyncHook(["parser", "parserOptions"])), |
| 424 | /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [4], 3>>} */ |
| 425 | createGenerator: new HookMap( |
| 426 | () => new SyncBailHook(["generatorOptions"]) |
| 427 | ), |
| 428 | /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [3, 4]>>} */ |
| 429 | generator: new HookMap( |
| 430 | () => new SyncHook(["generator", "generatorOptions"]) |
| 431 | ), |
| 432 | /** @type {HookMap<SyncBailHook<[CreateData, ResolveData], Module | void>>} */ |
| 433 | createModuleClass: new HookMap( |
| 434 | () => new SyncBailHook(["createData", "resolveData"]) |
| 435 | ) |
| 436 | }); |
| 437 | /** @type {ResolverFactory} */ |
| 438 | this.resolverFactory = resolverFactory; |
| 439 | /** @type {RuleSet} */ |
| 440 | this.ruleSet = ruleSetCompiler.compile([ |
| 441 | { |
| 442 | rules: /** @type {RuleSetRules} */ (options.defaultRules) |
| 443 | }, |
| 444 | { |
| 445 | rules: /** @type {RuleSetRules} */ (options.rules) |
| 446 | } |
| 447 | ]); |
| 448 | /** @type {string} */ |
nothing calls this directly
no test coverage detected