mirror of
https://github.com/CharaChorder/DeviceManager.git
synced 2026-01-17 15:32:50 +00:00
26 lines
1.0 KiB
JavaScript
26 lines
1.0 KiB
JavaScript
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 (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
|
|
};
|