MCPcopy
hub / github.com/webpack/webpack / buildChain

Function buildChain

test/NormalModule.unittest.js:490–533  ·  view source on GitHub ↗
(count)

Source from the content-addressed store, hash-verified

488 * @returns {{ modules: InstanceType<typeof NormalModule>[], moduleGraph: ModuleGraph }} chain
489 */
490 const buildChain = (count) => {
491 const modules = [];
492 for (let i = 0; i < count; i++) {
493 const mod = new NormalModule(
494 /** @type {import("../lib/NormalModule").NormalModuleCreateData} */ (
495 /** @type {unknown} */ ({
496 type: "javascript/auto",
497 request: `/m${i}`,
498 userRequest: `/m${i}`,
499 rawRequest: `m${i}`,
500 loaders: [],
501 resource: `/m${i}`,
502 parser: { parse() {} },
503 generator: null,
504 resolveOptions: {}
505 })
506 )
507 );
508 mod.buildMeta = { sideEffectFree: true };
509 modules.push(mod);
510 }
511 const depToModule = new Map();
512 for (let i = 0; i < count - 1; i++) {
513 const dep = new HarmonyImportSideEffectDependency(
514 `m${i + 1}`,
515 0,
516 /** @type {ImportPhaseType} */ (/** @type {unknown} */ ("evaluation"))
517 );
518 modules[i].dependencies = [dep];
519 depToModule.set(dep, modules[i + 1]);
520 }
521 modules[count - 1].dependencies = [];
522 const moduleGraph = /** @type {ModuleGraph} */ (
523 /** @type {unknown} */ ({
524 /**
525 * @param {import("../lib/Dependency")} dep dependency
526 * @returns {import("../lib/Module") | null} module
527 */
528 getModule: (dep) => depToModule.get(dep),
529 getOptimizationBailout: () => []
530 })
531 );
532 return { modules, moduleGraph };
533 };
534
535 it("handles deep linear chains without overflowing the stack", () => {
536 const { modules, moduleGraph } = buildChain(20000);

Callers 1

Calls 3

pushMethod · 0.45
setMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected