github.com/jfrog/frogbot@v1.1.1-0.20231221090046-821a26f50338/action/node_modules/@octokit/endpoint/dist-src/merge.js (about) 1 import { lowercaseKeys } from "./util/lowercase-keys"; 2 import { mergeDeep } from "./util/merge-deep"; 3 import { removeUndefinedProperties } from "./util/remove-undefined-properties"; 4 export function merge(defaults, route, options) { 5 if (typeof route === "string") { 6 let [method, url] = route.split(" "); 7 options = Object.assign(url ? { method, url } : { url: method }, options); 8 } 9 else { 10 options = Object.assign({}, route); 11 } 12 // lowercase header names before merging with defaults to avoid duplicates 13 options.headers = lowercaseKeys(options.headers); 14 // remove properties with undefined values before merging 15 removeUndefinedProperties(options); 16 removeUndefinedProperties(options.headers); 17 const mergedOptions = mergeDeep(defaults || {}, options); 18 // mediaType.previews arrays are merged, instead of overwritten 19 if (defaults && defaults.mediaType.previews.length) { 20 mergedOptions.mediaType.previews = defaults.mediaType.previews 21 .filter((preview) => !mergedOptions.mediaType.previews.includes(preview)) 22 .concat(mergedOptions.mediaType.previews); 23 } 24 mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, "")); 25 return mergedOptions; 26 }