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  }