MCPcopy
hub / github.com/rollup/rollup / ModuleLoader

Class ModuleLoader

src/ModuleLoader.ts:86–809  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

84const RESOLVE_DEPENDENCIES: PreloadType = 'resolveDependencies';
85
86export class ModuleLoader {
87 private readonly hasModuleSideEffects: HasModuleSideEffects;
88 private readonly implicitEntryModules = new Set<Module>();
89 private readonly sortedEntryModules: Module[] = [];
90 private readonly entryModules = new Set<Module>();
91 private latestLoadModulesPromise: Promise<unknown> = Promise.resolve();
92 private readonly moduleLoadPromises = new Map<Module, LoadModulePromise>();
93 private readonly modulesWithLoadedDependencies = new Set<Module>();
94
95 constructor(
96 private readonly graph: Graph,
97 private readonly modulesById: Map<string, Module | ExternalModule>,
98 private readonly options: NormalizedInputOptions,
99 private readonly pluginDriver: PluginDriver
100 ) {
101 this.hasModuleSideEffects = options.treeshake
102 ? options.treeshake.moduleSideEffects
103 : () => true;
104 }
105
106 async addAdditionalModules(
107 unresolvedModules: readonly string[],
108 isAddForManualChunks: boolean
109 ): Promise<Module[]> {
110 const result = this.extendLoadModulesPromise(
111 Promise.all(
112 unresolvedModules.map(id =>
113 this.loadEntryModule(id, false, undefined, null, isAddForManualChunks, undefined)
114 )
115 )
116 );
117 await this.awaitLoadModulesPromise();
118 return result;
119 }
120
121 async addEntryModules(
122 unresolvedEntryModules: readonly UnresolvedModule[],
123 isUserDefined: boolean
124 ): Promise<{
125 entryModules: Module[];
126 implicitEntryModules: Module[];
127 newEntryModules: Module[];
128 }> {
129 const newEntryModules = await this.extendLoadModulesPromise(
130 Promise.all(
131 unresolvedEntryModules.map(({ id, importer }) =>
132 this.loadEntryModule(id, true, importer, null, undefined, undefined)
133 )
134 ).then(entryModules => {
135 let shouldReorder = false;
136 for (const [index, entryModule] of entryModules.entries()) {
137 entryModule.isUserDefinedEntryPoint =
138 entryModule.isUserDefinedEntryPoint || isUserDefined;
139 addChunkNamesToModule(entryModule, unresolvedEntryModules[index], isUserDefined);
140 if (!this.entryModules.has(entryModule)) {
141 this.sortedEntryModules.push(entryModule);
142 this.entryModules.add(entryModule);
143 shouldReorder = true;

Callers

nothing calls this directly

Calls 3

resolveIdFunction · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…