| import { lowercaseKeys } from "./util/lowercase-keys"; | |
| import { mergeDeep } from "./util/merge-deep"; | |
| import { removeUndefinedProperties } from "./util/remove-undefined-properties"; | |
| function merge(defaults, route, options) { | |
| if (typeof route === "string") { | |
| let [method, url] = route.split(" "); | |
| options = Object.assign(url ? { method, url } : { url: method }, options); | |
| } else { | |
| options = Object.assign({}, route); | |
| } | |
| options.headers = lowercaseKeys(options.headers); | |
| removeUndefinedProperties(options); | |
| removeUndefinedProperties(options.headers); | |
| const mergedOptions = mergeDeep(defaults || {}, options); | |
| if (options.url === "/graphql") { | |
| if (defaults && defaults.mediaType.previews?.length) { | |
| mergedOptions.mediaType.previews = defaults.mediaType.previews.filter( | |
| (preview) => !mergedOptions.mediaType.previews.includes(preview) | |
| ).concat(mergedOptions.mediaType.previews); | |
| } | |
| mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, "")); | |
| } | |
| return mergedOptions; | |
| } | |
| export { | |
| merge | |
| }; | |