* Generate index files like * dependenciesAny.generated.js * dependenciesNumber.generated.js * And the individual files for every dependencies collection.
({ suffix, factories, entryFolder })
| 190 | * And the individual files for every dependencies collection. |
| 191 | */ |
| 192 | function generateDependenciesFiles ({ suffix, factories, entryFolder }) { |
| 193 | const braceOpen = '{' // a hack to be able to create a single brace open character in handlebars |
| 194 | |
| 195 | // a map containing: |
| 196 | // { |
| 197 | // 'sqrt': true, |
| 198 | // 'subset': true, |
| 199 | // ... |
| 200 | // } |
| 201 | const exists = {} |
| 202 | Object.keys(factories).forEach(factoryName => { |
| 203 | const factory = factories[factoryName] |
| 204 | exists[factory.fn] = true |
| 205 | }) |
| 206 | |
| 207 | mkdirSyncIfNotExists(path.join(entryFolder, 'dependencies' + suffix)) |
| 208 | |
| 209 | const data = { |
| 210 | suffix, |
| 211 | factories: Object.keys(factories).map((factoryName) => { |
| 212 | const factory = factories[factoryName] |
| 213 | |
| 214 | return { |
| 215 | suffix, |
| 216 | factoryName, |
| 217 | braceOpen, |
| 218 | name: getDependenciesName(factoryName, factories), // FIXME: rename name with dependenciesName, and functionName with name |
| 219 | fileName: './dependencies' + suffix + '/' + getDependenciesFileName(factoryName) + '.generated', |
| 220 | eslintComment: factoryName === 'createSQRT1_2' |
| 221 | ? ' // eslint-disable-line camelcase' |
| 222 | : undefined, |
| 223 | |
| 224 | dependencies: factory.dependencies |
| 225 | .map(stripOptionalNotation) |
| 226 | .filter(dependency => !IGNORED_DEPENDENCIES[dependency]) |
| 227 | .filter(dependency => { |
| 228 | if (!exists[dependency]) { |
| 229 | if (factory.dependencies.includes(dependency)) { |
| 230 | throw new Error(`Required dependency "${dependency}" missing for factory "${factory.fn}" (suffix: ${suffix})`) |
| 231 | } |
| 232 | |
| 233 | return false |
| 234 | } |
| 235 | |
| 236 | return true |
| 237 | }) |
| 238 | .map(dependency => { |
| 239 | const factoryName = findFactoryName(factories, dependency) |
| 240 | const name = getDependenciesName(factoryName, factories) |
| 241 | const fileName = './' + getDependenciesFileName(factoryName) + '.generated' |
| 242 | |
| 243 | return { |
| 244 | suffix, |
| 245 | name, |
| 246 | fileName |
| 247 | } |
| 248 | }) |
| 249 | } |
no test coverage detected
searching dependent graphs…