Merges any options with duplicate keys in the availableOptions array. Used primarily by registerOptions. @method mergeDuplicateOption @param {String} key @return {Object}
(key)
| 347 | @return {Object} |
| 348 | */ |
| 349 | mergeDuplicateOption(key) { |
| 350 | let duplicateOptions, mergedOption, mergedAliases; |
| 351 | // get duplicates to merge |
| 352 | duplicateOptions = this.availableOptions.filter((option) => option.name === key); |
| 353 | |
| 354 | if (duplicateOptions.length > 1) { |
| 355 | // TODO: warn on duplicates and overwriting |
| 356 | mergedAliases = duplicateOptions.flatMap((option) => option.aliases); |
| 357 | |
| 358 | // merge duplicate options |
| 359 | mergedOption = Object.assign.apply(null, duplicateOptions); |
| 360 | |
| 361 | // replace aliases with unique aliases |
| 362 | mergedOption.aliases = uniqBy(mergedAliases, (alias) => { |
| 363 | if (typeof alias === 'object') { |
| 364 | return alias[Object.keys(alias)[0]]; |
| 365 | } |
| 366 | return alias; |
| 367 | }); |
| 368 | |
| 369 | // remove duplicates from options |
| 370 | this.availableOptions = reject(this.availableOptions, { name: key }); |
| 371 | this.availableOptions.push(mergedOption); |
| 372 | } |
| 373 | |
| 374 | return this.availableOptions; |
| 375 | }, |
| 376 | |
| 377 | /** |
| 378 | Normalizes option, filling in implicit values |
nothing calls this directly
no test coverage detected
searching dependent graphs…