(resourceName, depth, msg)
| 109 | } |
| 110 | |
| 111 | function checkAndAddResource(resourceName, depth, msg) { |
| 112 | // console.log(" checking " + resourceName + " at depth " + depth); |
| 113 | let maybeAccepted = true; |
| 114 | let done; |
| 115 | |
| 116 | if ( !(resourceName in visitedResources) && (maybeAccepted = isAccepted(resourceName, depth > 0)) ) { |
| 117 | // console.log(" accepted: " + resourceName ); |
| 118 | if ( dependencyTracker != null ) { |
| 119 | dependencyTracker.visitDependency(resourceName); |
| 120 | } |
| 121 | |
| 122 | // remember that we have seen this module already |
| 123 | visitedResources[resourceName] = resourceName; |
| 124 | |
| 125 | done = pool.findResourceWithInfo(resourceName) |
| 126 | .catch( (err) => { |
| 127 | // if the caller provided an error message, log it |
| 128 | if ( msg && !ignoreMissingModules ) { |
| 129 | missingModules[resourceName] ??= []; |
| 130 | missingModules[resourceName].push(msg); |
| 131 | } |
| 132 | // return undefined |
| 133 | }) |
| 134 | .then( (resource) => checkForDecomposableBundle(resource) ) |
| 135 | .then( ({resource, isBundle, decomposable}) => { |
| 136 | const dependencyInfo = resource && resource.info; |
| 137 | let promises = []; |
| 138 | |
| 139 | // Skip ESM modules — they can't be bundled |
| 140 | if (resource?.info?.format === ModuleInfo.Format.ESM) { |
| 141 | log.error( |
| 142 | `Module ${resourceName} is an ECMAScript Module (ESM), ` + |
| 143 | `which is not supported for bundling. ` + |
| 144 | `The module will be skipped.` |
| 145 | ); |
| 146 | return; |
| 147 | } |
| 148 | |
| 149 | if ( isBundle && !decomposable ) { |
| 150 | resource.info.subModules.forEach( |
| 151 | (included) => { |
| 152 | includedModules.add(included); |
| 153 | } |
| 154 | ); |
| 155 | } |
| 156 | |
| 157 | if ( decomposable ) { |
| 158 | // bundles are not added, only their embedded modules |
| 159 | promises = dependencyInfo.subModules.map( (included) => { |
| 160 | return checkAndAddResource(included, depth + 1, |
| 161 | `**** error: missing submodule ${included}, included by ${resourceName}`); |
| 162 | }); |
| 163 | } else if ( resource != null ) { |
| 164 | // trace.trace(" checking dependencies of " + resource.name ); |
| 165 | selectedResources[resourceName] = resourceName; |
| 166 | selectedResourcesSequence.push(resourceName); |
| 167 | |
| 168 | // trace.info(" collecting %s", resource.name); |
nothing calls this directly
no test coverage detected