function processParameter()

in eng/tools/typespec-migration-validation/src/document.ts [138:177]


function processParameter(parameter: Refable<OpenAPI2Parameter>): Refable<OpenAPI2Parameter> {
  const newParameter: Refable<OpenAPI2Parameter> = deepCopy(parameter);
  if ((parameter as Ref<OpenAPI2Parameter>).$ref) {
    const refPath = (parameter as Ref<OpenAPI2Parameter>).$ref;
    if (refPath.startsWith("#/parameters/")) {
      const parameterName = refPath.substring("#/parameters/".length);
      const originalParameter = originalDocument?.parameters?.[parameterName];
      if (originalParameter) {
        return processParameter(originalParameter);
      }
    }
  }
  else {
    const inlineParameter = parameter as OpenAPI2Parameter;
    if ((parameter as any).enum && (newParameter as any)["x-ms-enum"]?.["values"]) {
      delete (newParameter as any)["x-ms-enum"]["values"];
    }
    if (configuration.enumNameToCamelCase && (newParameter as any)["x-ms-enum"]?.["name"]) {
      const enumName = (newParameter as any)["x-ms-enum"]["name"] as string;
      const camelCaseName = enumName.charAt(0).toUpperCase() + enumName.slice(1);
      (newParameter as any)["x-ms-enum"]["name"] = camelCaseName;
    }

    for (const key in parameter) {
      if (key === "x-ms-client-flatten") {
        delete (newParameter as any)[key];
      }
      if (key === "required" && inlineParameter[key] !== true) {
        delete (newParameter as any)[key];
      }
      if (key === "description") {
        delete (newParameter as any)[key];
      }
      if (key === "x-ms-parameter-location" && inlineParameter[key] === "method") {
        delete (newParameter as any)[key];
      }
    }
  }
  return newParameter;
}