| 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 |
| }; |