| 104 | const modules = new Map([[null, createParentModule()]]); |
| 105 | |
| 106 | function collect( |
| 107 | path = null, |
| 108 | serialized = {entryModules: [], modules: []}, |
| 109 | seen = new Set(), |
| 110 | ) { |
| 111 | const module = modules.get(path); |
| 112 | if (module == null || seen.has(path)) { |
| 113 | return serialized; |
| 114 | } |
| 115 | |
| 116 | const {dependencies} = module; |
| 117 | if (path === null) { |
| 118 | serialized.entryModules = |
| 119 | dependencies.map(dep => nullthrows(modules.get(dep.path))); |
| 120 | } else { |
| 121 | serialized.modules.push(module); |
| 122 | seen.add(path); |
| 123 | } |
| 124 | |
| 125 | for (const dependency of dependencies) { |
| 126 | collect(dependency.path, serialized, seen); |
| 127 | } |
| 128 | |
| 129 | return serialized; |
| 130 | } |
| 131 | |
| 132 | function loadModule(id, parent, parentDepIndex) { |
| 133 | loadQueue.push( |