{"version":3,"sources":["../src/helpers/headers.ts","../src/helpers/reducer.ts","../src/helpers/code-builder.ts","../src/helpers/escape.ts","../src/targets/c/libcurl/client.ts","../src/targets/c/target.ts","../src/targets/clojure/clj_http/client.ts","../src/targets/clojure/target.ts","../src/targets/csharp/httpclient/client.ts","../src/targets/csharp/restsharp/client.ts","../src/targets/csharp/target.ts","../src/targets/go/native/client.ts","../src/targets/go/target.ts","../src/targets/http/http1.1/client.ts","../src/targets/http/target.ts","../src/targets/java/asynchttp/client.ts","../src/targets/java/nethttp/client.ts","../src/targets/java/okhttp/client.ts","../src/targets/java/unirest/client.ts","../src/targets/java/target.ts","../src/targets/javascript/axios/client.ts","../src/targets/javascript/fetch/client.ts","../src/targets/javascript/jquery/client.ts","../src/targets/javascript/xhr/client.ts","../src/targets/javascript/target.ts","../src/targets/json/native/client.ts","../src/targets/json/target.ts","../src/targets/kotlin/okhttp/client.ts","../src/targets/kotlin/target.ts","../src/targets/node/axios/client.ts","../src/targets/node/fetch/client.ts","../src/targets/node/native/client.ts","../src/targets/node/target.ts","../src/targets/objc/helpers.ts","../src/targets/objc/nsurlsession/client.ts","../src/targets/objc/target.ts","../src/targets/ocaml/cohttp/client.ts","../src/targets/ocaml/target.ts","../src/targets/php/helpers.ts","../src/targets/php/curl/client.ts","../src/targets/php/guzzle/client.ts","../src/targets/php/http1/client.ts","../src/targets/php/http2/client.ts","../src/targets/php/target.ts","../src/targets/powershell/common.ts","../src/targets/powershell/restmethod/client.ts","../src/targets/powershell/webrequest/client.ts","../src/targets/powershell/target.ts","../src/targets/python/helpers.ts","../src/targets/python/requests/client.ts","../src/targets/python/target.ts","../src/targets/r/httr/client.ts","../src/targets/r/target.ts","../src/targets/ruby/native/client.ts","../src/targets/ruby/target.ts","../src/helpers/shell.ts","../src/targets/shell/curl/client.ts","../src/targets/shell/httpie/client.ts","../src/targets/shell/wget/client.ts","../src/targets/shell/target.ts","../src/targets/swift/helpers.ts","../src/targets/swift/urlsession/client.ts","../src/targets/swift/target.ts","../src/targets/index.ts","../src/helpers/utils.ts","../src/index.ts"],"names":["c","params","supportedMethods","stringifyObject","native","okhttp","axios","fetch","escape","literalRepresentation","curl","queryStringify","urlParse","url","urlFormat"],"mappings":"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","file":"index.cjs","sourcesContent":["type Headers<T> = Record<string, T>;\n\n/**\n * Given a headers object retrieve a specific header out of it via a case-insensitive key.\n */\nexport const getHeaderName = <T>(headers: Headers<T>, name: string) =>\n  Object.keys(headers).find(header => header.toLowerCase() === name.toLowerCase());\n\n/**\n * Given a headers object retrieve the contents of a header out of it via a case-insensitive key.\n */\nexport const getHeader = <T>(headers: Headers<T>, name: string) => {\n  const headerName = getHeaderName(headers, name);\n  if (!headerName) {\n    return undefined;\n  }\n  return headers[headerName];\n};\n\n/**\n * Determine if a given case-insensitive header exists within a header object.\n */\nexport const hasHeader = <T>(headers: Headers<T>, name: string) => Boolean(getHeaderName(headers, name));\n\n/**\n * Determines if a given MIME type is JSON, or a variant of such.\n */\nexport const isMimeTypeJSON = (mimeType: string) =>\n  ['application/json', 'application/x-json', 'text/json', 'text/x-json', '+json'].some(\n    type => mimeType.indexOf(type) > -1,\n  );\n","export type ReducedHelperObject = Record<string, string[] | string>;\n\nexport const reducer = <T extends { name: string; value: string }>(accumulator: ReducedHelperObject, pair: T) => {\n  const currentValue = accumulator[pair.name];\n  if (currentValue === undefined) {\n    accumulator[pair.name] = pair.value;\n    return accumulator;\n  }\n\n  // If we already have it as array just push the value\n  if (Array.isArray(currentValue)) {\n    currentValue.push(pair.value);\n    return accumulator;\n  }\n\n  // convert to array since now we have more than one value for this key\n  accumulator[pair.name] = [currentValue, pair.value];\n  return accumulator;\n};\n","const DEFAULT_INDENTATION_CHARACTER = '';\nconst DEFAULT_LINE_JOIN = '\\n';\n\nexport type PostProcessor = (unreplacedCode: string) => string;\n\nexport interface CodeBuilderOptions {\n  /**\n   * Desired indentation character for aggregated lines of code\n   * @default ''\n   */\n  indent?: string;\n\n  /**\n   * Desired character to join each line of code\n   * @default \\n\n   */\n  join?: string;\n}\n\nexport class CodeBuilder {\n  postProcessors: PostProcessor[] = [];\n\n  code: string[] = [];\n\n  indentationCharacter: string = DEFAULT_INDENTATION_CHARACTER;\n\n  lineJoin = DEFAULT_LINE_JOIN;\n\n  /**\n   * Helper object to format and aggragate lines of code.\n   * Lines are aggregated in a `code` array, and need to be joined to obtain a proper code snippet.\n   */\n  constructor({ indent, join }: CodeBuilderOptions = {}) {\n    this.indentationCharacter = indent || DEFAULT_INDENTATION_CHARACTER;\n    this.lineJoin = join ?? DEFAULT_LINE_JOIN;\n  }\n\n  /**\n   * Add given indentation level to given line of code\n   */\n  indentLine = (line: string, indentationLevel = 0) => {\n    const indent = this.indentationCharacter.repeat(indentationLevel);\n    return `${indent}${line}`;\n  };\n\n  /**\n   * Add the line at the beginning of the current lines\n   */\n  unshift = (line: string, indentationLevel?: number) => {\n    const newLine = this.indentLine(line, indentationLevel);\n    this.code.unshift(newLine);\n  };\n\n  /**\n   * Add the line at the end of the current lines\n   */\n  push = (line: string, indentationLevel?: number) => {\n    const newLine = this.indentLine(line, indentationLevel);\n    this.code.push(newLine);\n  };\n\n  /**\n   * Add an empty line at the end of current lines\n   */\n  blank = () => {\n    this.code.push('');\n  };\n\n  /**\n   * Concatenate all current lines using the given lineJoin, then apply any replacers that may have been added\n   */\n  join = () => {\n    const unreplacedCode = this.code.join(this.lineJoin);\n    const replacedOutput = this.postProcessors.reduce((accumulator, replacer) => replacer(accumulator), unreplacedCode);\n    return replacedOutput;\n  };\n\n  /**\n   * Often when writing modules you may wish to add a literal tag or bit of metadata that you wish to transform after other processing as a final step.\n   * To do so, you can provide a PostProcessor function and it will be run automatically for you when you call `join()` later on.\n   */\n  addPostProcessor = (postProcessor: PostProcessor) => {\n    this.postProcessors = [...this.postProcessors, postProcessor];\n  };\n}\n","export interface EscapeOptions {\n  /**\n   * The delimiter that will be used to wrap the string (and so must be escaped\n   * when used within the string).\n   * Defaults to \"\n   */\n  delimiter?: string;\n\n  /**\n   * The char to use to escape the delimiter and other special characters.\n   * Defaults to \\\n   */\n  escapeChar?: string;\n\n  /**\n   * Whether newlines (\\n and \\r) should be escaped within the string.\n   * Defaults to true.\n   */\n  escapeNewlines?: boolean;\n}\n\n/**\n * Escape characters within a value to make it safe to insert directly into a\n * snippet. Takes options which define the escape requirements.\n *\n * This is closely based on the JSON-stringify string serialization algorithm,\n * but generalized for other string delimiters (e.g. \" or ') and different escape\n * characters (e.g. Powershell uses `)\n *\n * See https://tc39.es/ecma262/multipage/structured-data.html#sec-quotejsonstring\n * for the complete original algorithm.\n */\nexport function escapeString(rawValue: any, options: EscapeOptions = {}) {\n  const { delimiter = '\"', escapeChar = '\\\\', escapeNewlines = true } = options;\n\n  const stringValue = rawValue.toString();\n\n  return [...stringValue]\n    .map(c => {\n      if (c === '\\b') {\n        return `${escapeChar}b`;\n      } else if (c === '\\t') {\n        return `${escapeChar}t`;\n      } else if (c === '\\n') {\n        if (escapeNewlines) {\n          return `${escapeChar}n`;\n        }\n\n        return c; // Don't just continue, or this is caught by < \\u0020\n      } else if (c === '\\f') {\n        return `${escapeChar}f`;\n      } else if (c === '\\r') {\n        if (escapeNewlines) {\n          return `${escapeChar}r`;\n        }\n\n        return c; // Don't just continue, or this is caught by < \\u0020\n      } else if (c === escapeChar) {\n        return escapeChar + escapeChar;\n      } else if (c === delimiter) {\n        return escapeChar + delimiter;\n      } else if (c < '\\u0020' || c > '\\u007E') {\n        // Delegate the trickier non-ASCII cases to the normal algorithm. Some of these\n        // are escaped as \\uXXXX, whilst others are represented literally. Since we're\n        // using this primarily for header values that are generally (though not 100%\n        // strictly?) ASCII-only, this should almost never happen.\n        return JSON.stringify(c).slice(1, -1);\n      }\n\n      return c;\n    })\n    .join('');\n}\n\n/**\n * Make a string value safe to insert literally into a snippet within single quotes,\n * by escaping problematic characters, including single quotes inside the string,\n * backslashes, newlines, and other special characters.\n *\n * If value is not a string, it will be stringified with .toString() first.\n */\nexport const escapeForSingleQuotes = (value: any) => escapeString(value, { delimiter: \"'\" });\n\n/**\n * Make a string value safe to insert literally into a snippet within double quotes,\n * by escaping problematic characters, including double quotes inside the string,\n * backslashes, newlines, and other special characters.\n *\n * If value is not a string, it will be stringified with .toString() first.\n */\nexport const escapeForDoubleQuotes = (value: any) => escapeString(value, { delimiter: '\"' });\n","import type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\n\nexport const libcurl: Client = {\n  info: {\n    key: 'libcurl',\n    title: 'Libcurl',\n    link: 'http://curl.haxx.se/libcurl',\n    description: 'Simple REST and HTTP API Client for C',\n    extname: '.c',\n  },\n  convert: ({ method, fullUrl, headersObj, allHeaders, postData }) => {\n    const { push, blank, join } = new CodeBuilder();\n\n    push('CURL *hnd = curl_easy_init();');\n    blank();\n    push(`curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"${method.toUpperCase()}\");`);\n    push('curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);');\n    push(`curl_easy_setopt(hnd, CURLOPT_URL, \"${fullUrl}\");`);\n\n    // Add headers, including the cookies\n    const headers = Object.keys(headersObj);\n\n    // construct headers\n    if (headers.length) {\n      blank();\n      push('struct curl_slist *headers = NULL;');\n\n      headers.forEach(header => {\n        push(`headers = curl_slist_append(headers, \"${header}: ${escapeForDoubleQuotes(headersObj[header])}\");`);\n      });\n\n      push('curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);');\n    }\n\n    // construct cookies\n    if (allHeaders.cookie) {\n      blank();\n      push(`curl_easy_setopt(hnd, CURLOPT_COOKIE, \"${allHeaders.cookie}\");`);\n    }\n\n    if (postData.text) {\n      blank();\n      push(`curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, ${JSON.stringify(postData.text)});`);\n    }\n\n    blank();\n    push('CURLcode ret = curl_easy_perform(hnd);');\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { libcurl } from './libcurl/client.js';\n\nexport const c: Target = {\n  info: {\n    key: 'c',\n    title: 'C',\n    default: 'libcurl',\n    cli: 'c',\n  },\n  clientsById: {\n    libcurl,\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for Clojure using clj-http.\n *\n * @author\n * @tggreene\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { getHeader, getHeaderName } from '../../../helpers/headers.js';\n\nclass Keyword {\n  name = '';\n\n  constructor(name: string) {\n    this.name = name;\n  }\n\n  toString = () => `:${this.name}`;\n}\n\nclass File {\n  path = '';\n\n  constructor(path: string) {\n    this.path = path;\n  }\n\n  toString = () => `(clojure.java.io/file \"${this.path}\")`;\n}\n\nconst jsType = (input?: any) => {\n  if (input === undefined) {\n    return null;\n  }\n\n  if (input === null) {\n    return 'null';\n  }\n\n  return input.constructor.name.toLowerCase();\n};\n\nconst objEmpty = (input?: any) => {\n  if (input === undefined) {\n    return true;\n  } else if (jsType(input) === 'object') {\n    return Object.keys(input).length === 0;\n  }\n  return false;\n};\n\nconst filterEmpty = (input: Record<string, any>) => {\n  Object.keys(input)\n    .filter(x => objEmpty(input[x]))\n    .forEach(x => {\n      delete input[x];\n    });\n  return input;\n};\n\nconst padBlock = (padSize: number, input: string) => {\n  const padding = ' '.repeat(padSize);\n  return input.replace(/\\n/g, `\\n${padding}`);\n};\n\nconst jsToEdn = (js: any) => {\n  switch (jsType(js)) {\n    case 'string':\n      return `\"${js.replace(/\"/g, '\\\\\"')}\"`;\n\n    case 'file':\n      return js.toString();\n\n    case 'keyword':\n      return js.toString();\n\n    case 'null':\n      return 'nil';\n\n    case 'regexp':\n      return `#\"${js.source}\"`;\n\n    case 'object': {\n      // simple vertical format\n      const obj = Object.keys(js)\n        .reduce((accumulator, key) => {\n          const val = padBlock(key.length + 2, jsToEdn(js[key]));\n          return `${accumulator}:${key} ${val}\\n `;\n        }, '')\n        .trim();\n      return `{${padBlock(1, obj)}}`;\n    }\n\n    case 'array': {\n      // simple horizontal format\n      const arr = js.reduce((accumulator: string, value: string) => `${accumulator} ${jsToEdn(value)}`, '').trim();\n      return `[${padBlock(1, arr)}]`;\n    }\n\n    default: // 'number' 'boolean'\n      return js.toString();\n  }\n};\n\nexport const clj_http: Client = {\n  info: {\n    key: 'clj_http',\n    title: 'clj-http',\n    link: 'https://github.com/dakrone/clj-http',\n    description: 'An idiomatic clojure http client wrapping the apache client.',\n    extname: '.clj',\n  },\n  convert: ({ queryObj, method, postData, url, allHeaders }, options) => {\n    const { push, join } = new CodeBuilder({ indent: options?.indent });\n    const methods = ['get', 'post', 'put', 'delete', 'patch', 'head', 'options'];\n    method = method.toLowerCase();\n\n    if (!methods.includes(method)) {\n      push('Method not supported');\n      return join();\n    }\n\n    const params: Record<string, any> = {\n      headers: allHeaders,\n      'query-params': queryObj,\n    };\n\n    switch (postData.mimeType) {\n      case 'application/json':\n        {\n          params['content-type'] = new Keyword('json');\n          params['form-params'] = postData.jsonObj;\n          const header = getHeaderName(params.headers, 'content-type');\n          if (header) {\n            delete params.headers[header];\n          }\n        }\n        break;\n\n      case 'application/x-www-form-urlencoded':\n        {\n          params['form-params'] = postData.paramsObj;\n          const header = getHeaderName(params.headers, 'content-type');\n          if (header) {\n            delete params.headers[header];\n          }\n        }\n        break;\n\n      case 'text/plain':\n        {\n          params.body = postData.text;\n          const header = getHeaderName(params.headers, 'content-type');\n          if (header) {\n            delete params.headers[header];\n          }\n        }\n        break;\n\n      case 'multipart/form-data': {\n        if (postData.params) {\n          params.multipart = postData.params.map(param => {\n            if (param.fileName && !param.value) {\n              return {\n                name: param.name,\n                content: new File(param.fileName),\n              };\n            }\n            return {\n              name: param.name,\n              content: param.value,\n            };\n          });\n\n          const header = getHeaderName(params.headers, 'content-type');\n          if (header) {\n            delete params.headers[header];\n          }\n        }\n        break;\n      }\n    }\n\n    switch (getHeader(params.headers, 'accept')) {\n      case 'application/json':\n        {\n          params.accept = new Keyword('json');\n\n          const header = getHeaderName(params.headers, 'accept');\n          if (header) {\n            delete params.headers[header];\n          }\n        }\n        break;\n    }\n\n    push(\"(require '[clj-http.client :as client])\\n\");\n\n    if (objEmpty(filterEmpty(params))) {\n      push(`(client/${method} \"${url}\")`);\n    } else {\n      const padding = 11 + method.length + url.length;\n      const formattedParams = padBlock(padding, jsToEdn(filterEmpty(params)));\n      push(`(client/${method} \"${url}\" ${formattedParams})`);\n    }\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { clj_http } from './clj_http/client.js';\n\nexport const clojure: Target = {\n  info: {\n    key: 'clojure',\n    title: 'Clojure',\n    default: 'clj_http',\n  },\n  clientsById: {\n    clj_http,\n  },\n};\n","import type { Request } from '../../../index.js';\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\nimport { getHeader } from '../../../helpers/headers.js';\n\nconst getDecompressionMethods = (allHeaders: Request['allHeaders']) => {\n  let acceptEncodings = getHeader(allHeaders, 'accept-encoding');\n  if (!acceptEncodings) {\n    return []; // no decompression\n  }\n\n  const supportedMethods: Record<string, string> = {\n    gzip: 'DecompressionMethods.GZip',\n    deflate: 'DecompressionMethods.Deflate',\n  };\n\n  const methods: string[] = [];\n  if (typeof acceptEncodings === 'string') {\n    acceptEncodings = [acceptEncodings];\n  }\n  acceptEncodings.forEach(acceptEncoding => {\n    acceptEncoding.split(',').forEach(encoding => {\n      const match = /\\s*([^;\\s]+)/.exec(encoding);\n      if (match) {\n        const method = supportedMethods[match[1]];\n        if (method) {\n          methods.push(method);\n        }\n      }\n    });\n  });\n\n  return methods;\n};\n\nexport const httpclient: Client = {\n  info: {\n    key: 'httpclient',\n    title: 'HttpClient',\n    link: 'https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient',\n    description: '.NET Standard HTTP Client',\n    extname: '.cs',\n  },\n  convert: ({ allHeaders, postData, method, fullUrl }, options) => {\n    const opts = {\n      indent: '    ',\n      ...options,\n    };\n\n    const { push, join } = new CodeBuilder({ indent: opts.indent });\n\n    push('using System.Net.Http.Headers;');\n    let clienthandler = '';\n    const cookies = Boolean(allHeaders.cookie);\n    const decompressionMethods = getDecompressionMethods(allHeaders);\n    if (cookies || decompressionMethods.length) {\n      clienthandler = 'clientHandler';\n      push('var clientHandler = new HttpClientHandler');\n      push('{');\n      if (cookies) {\n        // enable setting the cookie header\n        push('UseCookies = false,', 1);\n      }\n      if (decompressionMethods.length) {\n        // enable decompression for supported methods\n        push(`AutomaticDecompression = ${decompressionMethods.join(' | ')},`, 1);\n      }\n      push('};');\n    }\n\n    push(`var client = new HttpClient(${clienthandler});`);\n\n    push('var request = new HttpRequestMessage');\n    push('{');\n\n    const methods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS', 'TRACE'];\n    method = method.toUpperCase();\n    if (method && methods.includes(method)) {\n      // buildin method\n      method = `HttpMethod.${method[0]}${method.substring(1).toLowerCase()}`;\n    } else {\n      // custom method\n      method = `new HttpMethod(\"${method}\")`;\n    }\n    push(`Method = ${method},`, 1);\n\n    push(`RequestUri = new Uri(\"${fullUrl}\"),`, 1);\n\n    const headers: (keyof typeof allHeaders)[] = Object.keys(allHeaders).filter(header => {\n      switch (header.toLowerCase()) {\n        case 'content-type':\n        case 'content-length':\n        case 'accept-encoding':\n          // skip these headers\n          return false;\n\n        default:\n          return true;\n      }\n    });\n\n    if (headers.length) {\n      push('Headers =', 1);\n      push('{', 1);\n      headers.forEach(key => {\n        push(`{ \"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\" },`, 2);\n      });\n      push('},', 1);\n    }\n\n    if (postData.text) {\n      const contentType = postData.mimeType;\n      switch (contentType) {\n        case 'application/x-www-form-urlencoded':\n          push('Content = new FormUrlEncodedContent(new Dictionary<string, string>', 1);\n          push('{', 1);\n          postData.params?.forEach(param => {\n            push(`{ \"${param.name}\", \"${param.value}\" },`, 2);\n          });\n          push('}),', 1);\n          break;\n\n        case 'multipart/form-data':\n          push('Content = new MultipartFormDataContent', 1);\n          push('{', 1);\n          postData.params?.forEach(param => {\n            push(`new StringContent(${JSON.stringify(param.value || '')})`, 2);\n            push('{', 2);\n            push('Headers =', 3);\n            push('{', 3);\n            if (param.contentType) {\n              push(`ContentType = new MediaTypeHeaderValue(\"${param.contentType}\"),`, 4);\n            }\n            push('ContentDisposition = new ContentDispositionHeaderValue(\"form-data\")', 4);\n            push('{', 4);\n            push(`Name = \"${param.name}\",`, 5);\n            if (param.fileName) {\n              push(`FileName = \"${param.fileName}\",`, 5);\n            }\n            push('}', 4);\n            push('}', 3);\n            push('},', 2);\n          });\n\n          push('},', 1);\n          break;\n\n        default:\n          push(`Content = new StringContent(${JSON.stringify(postData.text || '')})`, 1);\n          push('{', 1);\n          push('Headers =', 2);\n          push('{', 2);\n          push(`ContentType = new MediaTypeHeaderValue(\"${contentType}\")`, 3);\n          push('}', 2);\n          push('}', 1);\n          break;\n      }\n    }\n    push('};');\n\n    // send and read response\n    push('using (var response = await client.SendAsync(request))');\n    push('{');\n    push('response.EnsureSuccessStatusCode();', 1);\n    push('var body = await response.Content.ReadAsStringAsync();', 1);\n    push('Console.WriteLine(body);', 1);\n    push('}');\n\n    return join();\n  },\n};\n","import type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\n\nfunction title(s: string): string {\n  return s[0].toUpperCase() + s.slice(1).toLowerCase();\n}\n\nexport const restsharp: Client = {\n  info: {\n    key: 'restsharp',\n    title: 'RestSharp',\n    link: 'http://restsharp.org/',\n    description: 'Simple REST and HTTP API Client for .NET',\n    extname: '.cs',\n    installation: 'dotnet add package RestSharp',\n  },\n  convert: ({ method, fullUrl, headersObj, cookies, postData, uriObj }) => {\n    const { push, join } = new CodeBuilder();\n    const isSupportedMethod = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'].includes(\n      method.toUpperCase(),\n    );\n\n    if (!isSupportedMethod) {\n      return 'Method not supported';\n    }\n\n    push('using RestSharp;\\n\\n');\n    push(`var options = new RestClientOptions(\"${fullUrl}\");`);\n    push('var client = new RestClient(options);');\n\n    // The first argument is the sub-path to the base URL, given as the\n    // constructor to RestClient; for our purposes we're just giving the entire\n    // URL as the base path so it can be an empty string\n    push('var request = new RestRequest(\"\");');\n\n    // If we have multipart form data, set this value. Setting the content-type header manually and then trying to add a mutlipart file parameter\n    const isMultipart = postData.mimeType && postData.mimeType === 'multipart/form-data';\n    if (isMultipart) {\n      push('request.AlwaysMultipartFormData = true;');\n    }\n\n    // Add headers, including the cookies\n    Object.keys(headersObj).forEach(key => {\n      // if we have post data, restsharp really wants to set the contentType\n      // itself; do not add a content-type header or you end up with failures\n      // which manifest as unhandled exceptions.\n      //\n      // The only case where we _do_ want to add it is if there's no postData\n      // text, in which case there will be no `AddJsonBody` call, and restsharp\n      // won't know to set the content type\n      if (postData.mimeType && key.toLowerCase() === 'content-type' && postData.text) {\n        if (isMultipart && postData.boundary) {\n          push(`request.FormBoundary = \"${postData.boundary}\";`);\n        }\n        return;\n      }\n      push(`request.AddHeader(\"${key}\", \"${escapeForDoubleQuotes(headersObj[key])}\");`);\n    });\n\n    cookies.forEach(({ name, value }) => {\n      push(`request.AddCookie(\"${name}\", \"${escapeForDoubleQuotes(value)}\", \"${uriObj.pathname}\", \"${uriObj.host}\");`);\n    });\n\n    switch (postData.mimeType) {\n      case 'multipart/form-data':\n        if (!postData.params) break;\n        postData.params.forEach(param => {\n          if (param.fileName) {\n            push(`request.AddFile(\"${param.name}\", \"${param.fileName}\");`);\n          } else {\n            push(`request.AddParameter(\"${param.name}\", \"${param.value}\");`);\n          }\n        });\n        break;\n      case 'application/x-www-form-urlencoded':\n        if (!postData.params) break;\n        postData.params.forEach(param => {\n          push(`request.AddParameter(\"${param.name}\", \"${param.value}\");`);\n        });\n        break;\n      case 'application/json': {\n        if (!postData.text) break;\n        const text = JSON.stringify(postData.text);\n        push(`request.AddJsonBody(${text}, false);`);\n        break;\n      }\n      default:\n        if (!postData.text) break;\n        push(`request.AddStringBody(\"${postData.text}\", \"${postData.mimeType}\");`);\n    }\n\n    push(`var response = await client.${title(method)}Async(request);\\n`);\n\n    push('Console.WriteLine(\"{0}\", response.Content);\\n');\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { httpclient } from './httpclient/client.js';\nimport { restsharp } from './restsharp/client.js';\n\nexport const csharp: Target = {\n  info: {\n    key: 'csharp',\n    title: 'C#',\n    default: 'restsharp',\n    cli: 'dotnet',\n  },\n\n  clientsById: {\n    httpclient,\n    restsharp,\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for native Go.\n *\n * @author\n * @montanaflynn\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\n\nexport interface GoNativeOptions {\n  checkErrors?: boolean;\n  printBody?: boolean;\n  showBoilerplate?: boolean;\n  timeout?: number;\n}\n\nexport const native: Client<GoNativeOptions> = {\n  info: {\n    key: 'native',\n    title: 'NewRequest',\n    link: 'http://golang.org/pkg/net/http/#NewRequest',\n    description: 'Golang HTTP client request',\n    extname: '.go',\n  },\n  convert: ({ postData, method, allHeaders, fullUrl }, options = {}) => {\n    const { blank, push, join } = new CodeBuilder({ indent: '\\t' });\n\n    const { showBoilerplate = true, checkErrors = false, printBody = true, timeout = -1 } = options;\n\n    const errorPlaceholder = checkErrors ? 'err' : '_';\n\n    const indent = showBoilerplate ? 1 : 0;\n\n    const errorCheck = () => {\n      if (checkErrors) {\n        push('if err != nil {', indent);\n        push('panic(err)', indent + 1);\n        push('}', indent);\n      }\n    };\n\n    // Create boilerplate\n    if (showBoilerplate) {\n      push('package main');\n      blank();\n      push('import (');\n      push('\"fmt\"', indent);\n\n      if (timeout > 0) {\n        push('\"time\"', indent);\n      }\n\n      if (postData.text) {\n        push('\"strings\"', indent);\n      }\n\n      push('\"net/http\"', indent);\n\n      if (printBody) {\n        push('\"io\"', indent);\n      }\n\n      push(')');\n      blank();\n      push('func main() {');\n      blank();\n    }\n\n    // Create client\n    const hasTimeout = timeout > 0;\n    const hasClient = hasTimeout;\n    const client = hasClient ? 'client' : 'http.DefaultClient';\n\n    if (hasClient) {\n      push('client := http.Client{', indent);\n\n      if (hasTimeout) {\n        push(`Timeout: time.Duration(${timeout} * time.Second),`, indent + 1);\n      }\n\n      push('}', indent);\n      blank();\n    }\n\n    push(`url := \"${fullUrl}\"`, indent);\n    blank();\n\n    // If we have body content or not create the var and reader or nil\n    if (postData.text) {\n      push(`payload := strings.NewReader(${JSON.stringify(postData.text)})`, indent);\n      blank();\n      push(`req, ${errorPlaceholder} := http.NewRequest(\"${method}\", url, payload)`, indent);\n      blank();\n    } else {\n      push(`req, ${errorPlaceholder} := http.NewRequest(\"${method}\", url, nil)`, indent);\n      blank();\n    }\n\n    errorCheck();\n\n    // Add headers\n    if (Object.keys(allHeaders).length) {\n      Object.keys(allHeaders).forEach(key => {\n        push(`req.Header.Add(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, indent);\n      });\n\n      blank();\n    }\n\n    // Make request\n    push(`res, ${errorPlaceholder} := ${client}.Do(req)`, indent);\n    errorCheck();\n\n    // Get Body\n    if (printBody) {\n      blank();\n      push('defer res.Body.Close()', indent);\n      push(`body, ${errorPlaceholder} := io.ReadAll(res.Body)`, indent);\n      errorCheck();\n    }\n\n    // Print it\n    blank();\n\n    if (printBody) {\n      push('fmt.Println(string(body))', indent);\n    }\n\n    // End main block\n    if (showBoilerplate) {\n      blank();\n      push('}');\n    }\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { native } from './native/client.js';\n\nexport const go: Target = {\n  info: {\n    key: 'go',\n    title: 'Go',\n    default: 'native',\n    cli: 'go',\n  },\n  clientsById: {\n    native,\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator to generate raw HTTP/1.1 request strings,\n * in accordance to the RFC 7230 (and RFC 7231) specifications.\n *\n * @author\n * @irvinlim\n *\n * For any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\n\nconst CRLF = '\\r\\n';\n\ninterface Http11Options {\n  absoluteURI?: boolean;\n  autoContentLength?: boolean;\n  autoHost?: boolean;\n}\n\n/**\n * Request follows the request message format in accordance to RFC 7230, Section 3.\n * Each section is prepended with the RFC and section number.\n * See more at https://tools.ietf.org/html/rfc7230#section-3.\n */\nexport const http11: Client<Http11Options> = {\n  info: {\n    key: 'http1.1',\n    title: 'HTTP/1.1',\n    link: 'https://tools.ietf.org/html/rfc7230',\n    description: 'HTTP/1.1 request string in accordance with RFC 7230',\n    extname: null,\n  },\n  convert: ({ method, fullUrl, uriObj, httpVersion, allHeaders, postData }, options) => {\n    const opts = {\n      absoluteURI: false,\n      autoContentLength: true,\n      autoHost: true,\n      ...options,\n    };\n\n    // RFC 7230 Section 3. Message Format\n    // All lines have no indentation, and should be terminated with CRLF.\n    const { blank, push, join } = new CodeBuilder({ indent: '', join: CRLF });\n\n    // RFC 7230 Section 5.3. Request Target\n    // Determines if the Request-Line should use 'absolute-form' or 'origin-form'.\n    // Basically it means whether the \"http://domain.com\" will prepend the full url.\n    const requestUrl = opts.absoluteURI ? fullUrl : uriObj.path;\n\n    // RFC 7230 Section 3.1.1. Request-Line\n    push(`${method} ${requestUrl} ${httpVersion}`);\n\n    const headerKeys = Object.keys(allHeaders);\n    // RFC 7231 Section 5. Header Fields\n    headerKeys.forEach(key => {\n      // Capitalize header keys, even though it's not required by the spec.\n      const keyCapitalized = key.toLowerCase().replace(/(^|-)(\\w)/g, input => input.toUpperCase());\n      push(`${keyCapitalized}: ${allHeaders[key]}`);\n    });\n\n    // RFC 7230 Section 5.4. Host\n    // Automatically set Host header if option is on and on header already exists.\n    if (opts.autoHost && !headerKeys.includes('host')) {\n      push(`Host: ${uriObj.host}`);\n    }\n\n    // RFC 7230 Section 3.3.3. Message Body Length\n    // Automatically set Content-Length header if option is on, postData is present and no header already exists.\n    if (opts.autoContentLength && postData.text && !headerKeys.includes('content-length')) {\n      const length = Buffer.byteLength(postData.text, 'ascii').toString();\n      push(`Content-Length: ${length}`);\n    }\n\n    // Add extra line after header section.\n    blank();\n\n    // Separate header section and message body section.\n    const headerSection = join();\n\n    // RFC 7230 Section 3.3. Message Body\n    const messageBody = postData.text || '';\n\n    // RFC 7230 Section 3. Message Format\n    // Extra CRLF separating the headers from the body.\n    return `${headerSection}${CRLF}${messageBody}`;\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { http11 } from './http1.1/client.js';\n\nexport const http: Target = {\n  info: {\n    key: 'http',\n    title: 'HTTP',\n    default: 'http1.1',\n  },\n  clientsById: {\n    'http1.1': http11,\n  },\n};\n","/**\n * @description\n * Asynchronous Http and WebSocket Client library for Java\n *\n * @author\n * @windard\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\n\nexport const asynchttp: Client = {\n  info: {\n    key: 'asynchttp',\n    title: 'AsyncHttp',\n    link: 'https://github.com/AsyncHttpClient/async-http-client',\n    description: 'Asynchronous Http and WebSocket Client library for Java',\n    extname: '.java',\n  },\n  convert: ({ method, allHeaders, postData, fullUrl }, options) => {\n    const opts = {\n      indent: '  ',\n      ...options,\n    };\n    const { blank, push, join } = new CodeBuilder({ indent: opts.indent });\n\n    push('AsyncHttpClient client = new DefaultAsyncHttpClient();');\n\n    push(`client.prepare(\"${method.toUpperCase()}\", \"${fullUrl}\")`);\n\n    // Add headers, including the cookies\n    Object.keys(allHeaders).forEach(key => {\n      push(`.setHeader(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, 1);\n    });\n\n    if (postData.text) {\n      push(`.setBody(${JSON.stringify(postData.text)})`, 1);\n    }\n\n    push('.execute()', 1);\n    push('.toCompletableFuture()', 1);\n    push('.thenAccept(System.out::println)', 1);\n    push('.join();', 1);\n    blank();\n    push('client.close();');\n\n    return join();\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for Java using java.net.http.\n *\n * @author\n * @wtetsu\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\n\nexport interface NetHttpOptions {\n  indent?: string;\n}\n\nexport const nethttp: Client = {\n  info: {\n    key: 'nethttp',\n    title: 'java.net.http',\n    link: 'https://openjdk.java.net/groups/net/httpclient/intro.html',\n    description: 'Java Standardized HTTP Client API',\n    extname: '.java',\n  },\n  convert: ({ allHeaders, fullUrl, method, postData }, options) => {\n    const opts = {\n      indent: '  ',\n      ...options,\n    };\n\n    const { push, join } = new CodeBuilder({ indent: opts.indent });\n\n    push('HttpRequest request = HttpRequest.newBuilder()');\n    push(`.uri(URI.create(\"${fullUrl}\"))`, 2);\n\n    Object.keys(allHeaders).forEach(key => {\n      push(`.header(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, 2);\n    });\n\n    if (postData.text) {\n      push(\n        `.method(\"${method.toUpperCase()}\", HttpRequest.BodyPublishers.ofString(${JSON.stringify(postData.text)}))`,\n        2,\n      );\n    } else {\n      push(`.method(\"${method.toUpperCase()}\", HttpRequest.BodyPublishers.noBody())`, 2);\n    }\n\n    push('.build();', 2);\n\n    push(\n      'HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());',\n    );\n    push('System.out.println(response.body());');\n\n    return join();\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for Java using OkHttp.\n *\n * @author\n * @shashiranjan84\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\n\nexport const okhttp: Client = {\n  info: {\n    key: 'okhttp',\n    title: 'OkHttp',\n    link: 'http://square.github.io/okhttp/',\n    description: 'An HTTP Request Client Library',\n    extname: '.java',\n  },\n  convert: ({ postData, method, fullUrl, allHeaders }, options) => {\n    const opts = {\n      indent: '  ',\n      ...options,\n    };\n    const { push, blank, join } = new CodeBuilder({ indent: opts.indent });\n\n    const methods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD'];\n    const methodsWithBody = ['POST', 'PUT', 'DELETE', 'PATCH'];\n\n    push('OkHttpClient client = new OkHttpClient();');\n    blank();\n\n    if (postData.text) {\n      if (postData.boundary) {\n        push(`MediaType mediaType = MediaType.parse(\"${postData.mimeType}; boundary=${postData.boundary}\");`);\n      } else {\n        push(`MediaType mediaType = MediaType.parse(\"${postData.mimeType}\");`);\n      }\n      push(`RequestBody body = RequestBody.create(mediaType, ${JSON.stringify(postData.text)});`);\n    }\n\n    push('Request request = new Request.Builder()');\n    push(`.url(\"${fullUrl}\")`, 1);\n    if (!methods.includes(method.toUpperCase())) {\n      if (postData.text) {\n        push(`.method(\"${method.toUpperCase()}\", body)`, 1);\n      } else {\n        push(`.method(\"${method.toUpperCase()}\", null)`, 1);\n      }\n    } else if (methodsWithBody.includes(method.toUpperCase())) {\n      if (postData.text) {\n        push(`.${method.toLowerCase()}(body)`, 1);\n      } else {\n        push(`.${method.toLowerCase()}(null)`, 1);\n      }\n    } else {\n      push(`.${method.toLowerCase()}()`, 1);\n    }\n\n    // Add headers, including the cookies\n    Object.keys(allHeaders).forEach(key => {\n      push(`.addHeader(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, 1);\n    });\n\n    push('.build();', 1);\n    blank();\n    push('Response response = client.newCall(request).execute();');\n\n    return join();\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for Java using Unirest.\n *\n * @author\n * @shashiranjan84\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\n\nexport const unirest: Client = {\n  info: {\n    key: 'unirest',\n    title: 'Unirest',\n    link: 'http://unirest.io/java.html',\n    description: 'Lightweight HTTP Request Client Library',\n    extname: '.java',\n  },\n  convert: ({ method, allHeaders, postData, fullUrl }, options) => {\n    const opts = {\n      indent: '  ',\n      ...options,\n    };\n\n    const { join, push } = new CodeBuilder({ indent: opts.indent });\n\n    const methods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'];\n\n    if (!methods.includes(method.toUpperCase())) {\n      push(`HttpResponse<String> response = Unirest.customMethod(\"${method.toUpperCase()}\",\"${fullUrl}\")`);\n    } else {\n      push(`HttpResponse<String> response = Unirest.${method.toLowerCase()}(\"${fullUrl}\")`);\n    }\n\n    // Add headers, including the cookies\n    Object.keys(allHeaders).forEach(key => {\n      push(`.header(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, 1);\n    });\n\n    if (postData.text) {\n      push(`.body(${JSON.stringify(postData.text)})`, 1);\n    }\n\n    push('.asString();', 1);\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { asynchttp } from './asynchttp/client.js';\nimport { nethttp } from './nethttp/client.js';\nimport { okhttp } from './okhttp/client.js';\nimport { unirest } from './unirest/client.js';\n\nexport const java: Target = {\n  info: {\n    key: 'java',\n    title: 'Java',\n    default: 'unirest',\n  },\n\n  clientsById: {\n    asynchttp,\n    nethttp,\n    okhttp,\n    unirest,\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for Javascript & Node.js using Axios.\n *\n * @author\n * @rohit-gohri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport stringifyObject from 'stringify-object';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\n\nexport const axios: Client = {\n  info: {\n    key: 'axios',\n    title: 'Axios',\n    link: 'https://github.com/axios/axios',\n    description: 'Promise based HTTP client for the browser and node.js',\n    extname: '.js',\n    installation: 'npm install axios --save',\n  },\n  convert: ({ allHeaders, method, url, queryObj, postData }, options) => {\n    const opts = {\n      indent: '  ',\n      ...options,\n    };\n\n    const { blank, push, join, addPostProcessor } = new CodeBuilder({ indent: opts.indent });\n\n    push(\"import axios from 'axios';\");\n    blank();\n\n    const requestOptions: Record<string, any> = {\n      method,\n      url,\n    };\n\n    if (Object.keys(queryObj).length) {\n      requestOptions.params = queryObj;\n    }\n\n    if (Object.keys(allHeaders).length) {\n      requestOptions.headers = allHeaders;\n    }\n\n    switch (postData.mimeType) {\n      case 'application/x-www-form-urlencoded':\n        if (postData.params) {\n          push('const encodedParams = new URLSearchParams();');\n          postData.params.forEach(param => {\n            push(`encodedParams.set('${param.name}', '${param.value}');`);\n          });\n\n          blank();\n\n          requestOptions.data = 'encodedParams,';\n          addPostProcessor(code => code.replace(/'encodedParams,'/, 'encodedParams,'));\n        }\n\n        break;\n\n      case 'application/json':\n        if (postData.jsonObj) {\n          requestOptions.data = postData.jsonObj;\n        }\n        break;\n\n      case 'multipart/form-data':\n        if (!postData.params) {\n          break;\n        }\n\n        push('const form = new FormData();');\n\n        postData.params.forEach(param => {\n          push(`form.append('${param.name}', '${param.value || param.fileName || ''}');`);\n        });\n\n        blank();\n\n        requestOptions.data = '[form]';\n        break;\n\n      default:\n        if (postData.text) {\n          requestOptions.data = postData.text;\n        }\n    }\n\n    const optionString = stringifyObject(requestOptions, {\n      indent: '  ',\n      inlineCharacterLimit: 80,\n    }).replace('\"[form]\"', 'form');\n    push(`const options = ${optionString};`);\n    blank();\n\n    push('axios');\n    push('.request(options)', 1);\n    push('.then(res => console.log(res.data))', 1);\n    push('.catch(err => console.error(err));', 1);\n\n    return join();\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for fetch\n *\n * @author\n * @pmdroid\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport stringifyObject from 'stringify-object';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { getHeaderName } from '../../../helpers/headers.js';\n\ninterface FetchOptions {\n  credentials?: Record<string, string> | null;\n}\n\nexport const fetch: Client<FetchOptions> = {\n  info: {\n    key: 'fetch',\n    title: 'fetch',\n    link: 'https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch',\n    description: 'Perform asynchronous HTTP requests with the Fetch API',\n    extname: '.js',\n  },\n  convert: ({ method, allHeaders, postData, fullUrl }, inputOpts) => {\n    const opts = {\n      indent: '  ',\n      credentials: null,\n      ...inputOpts,\n    };\n\n    const { blank, join, push } = new CodeBuilder({ indent: opts.indent });\n\n    const options: Record<string, any> = {\n      method,\n    };\n\n    if (Object.keys(allHeaders).length) {\n      options.headers = allHeaders;\n    }\n\n    if (opts.credentials !== null) {\n      options.credentials = opts.credentials;\n    }\n\n    switch (postData.mimeType) {\n      case 'application/x-www-form-urlencoded':\n        options.body = postData.paramsObj ? postData.paramsObj : postData.text;\n        break;\n\n      case 'application/json':\n        if (postData.jsonObj) {\n          // Though `fetch` doesn't accept JSON objects in the `body` option we're going to\n          // stringify it when we add this into the snippet further down.\n          options.body = postData.jsonObj;\n        }\n        break;\n\n      case 'multipart/form-data':\n        if (!postData.params) {\n          break;\n        }\n\n        // The FormData API automatically adds a `Content-Type` header for `multipart/form-data` content and if we add our own here data won't be correctly transmitted.\n        // eslint-disable-next-line no-case-declarations -- We're only using `contentTypeHeader` within this block.\n        const contentTypeHeader = getHeaderName(allHeaders, 'content-type');\n        if (contentTypeHeader) {\n          delete allHeaders[contentTypeHeader];\n        }\n\n        push('const form = new FormData();');\n\n        postData.params.forEach(param => {\n          push(`form.append('${param.name}', '${param.value || param.fileName || ''}');`);\n        });\n\n        blank();\n        break;\n\n      default:\n        if (postData.text) {\n          options.body = postData.text;\n        }\n    }\n\n    // If we ultimately don't have any headers to send then we shouldn't add an empty object into the request options.\n    if (options.headers && !Object.keys(options.headers).length) {\n      delete options.headers;\n    }\n\n    push(\n      `const options = ${stringifyObject(options, {\n        indent: opts.indent,\n        inlineCharacterLimit: 80,\n\n        // The Fetch API body only accepts string parameters, but stringified JSON can be difficult\n        // to read, so we keep the object as a literal and use this transform function to wrap the\n        // literal in a `JSON.stringify` call.\n        transform: (object, property, originalResult) => {\n          if (property === 'body') {\n            if (postData.mimeType === 'application/x-www-form-urlencoded') {\n              return `new URLSearchParams(${originalResult})`;\n            } else if (postData.mimeType === 'application/json') {\n              return `JSON.stringify(${originalResult})`;\n            }\n          }\n\n          return originalResult;\n        },\n      })};`,\n    );\n    blank();\n\n    if (postData.params && postData.mimeType === 'multipart/form-data') {\n      push('options.body = form;');\n      blank();\n    }\n\n    push(`fetch('${fullUrl}', options)`);\n    push('.then(res => res.json())', 1);\n    push('.then(res => console.log(res))', 1);\n    push('.catch(err => console.error(err));', 1);\n\n    return join();\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for native XMLHttpRequest\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport stringifyObject from 'stringify-object';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { getHeader, getHeaderName, hasHeader } from '../../../helpers/headers.js';\n\nexport const jquery: Client = {\n  info: {\n    key: 'jquery',\n    title: 'jQuery',\n    link: 'http://api.jquery.com/jquery.ajax/',\n    description: 'Perform an asynchronous HTTP (Ajax) requests with jQuery',\n    extname: '.js',\n  },\n  convert: ({ fullUrl, method, allHeaders, postData }, options) => {\n    const opts = {\n      indent: '  ',\n      ...options,\n    };\n\n    const { blank, push, join } = new CodeBuilder({ indent: opts.indent });\n\n    const settings: Record<string, any> = {\n      async: true,\n      crossDomain: true,\n      url: fullUrl,\n      method,\n      headers: allHeaders,\n    };\n\n    switch (postData.mimeType) {\n      case 'application/x-www-form-urlencoded':\n        settings.data = postData.paramsObj ? postData.paramsObj : postData.text;\n        break;\n\n      case 'application/json':\n        settings.processData = false;\n        settings.data = postData.text;\n        break;\n\n      case 'multipart/form-data':\n        if (!postData.params) {\n          break;\n        }\n\n        push('const form = new FormData();');\n\n        postData.params.forEach(param => {\n          push(`form.append('${param.name}', '${param.value || param.fileName || ''}');`);\n        });\n\n        settings.processData = false;\n        settings.contentType = false;\n        settings.mimeType = 'multipart/form-data';\n        settings.data = '[form]';\n\n        // remove the contentType header\n        if (hasHeader(allHeaders, 'content-type')) {\n          if (getHeader(allHeaders, 'content-type')?.includes('boundary')) {\n            const headerName = getHeaderName(allHeaders, 'content-type');\n            if (headerName) {\n              delete settings.headers[headerName];\n            }\n          }\n        }\n\n        blank();\n        break;\n\n      default:\n        if (postData.text) {\n          settings.data = postData.text;\n        }\n    }\n\n    const stringifiedSettings = stringifyObject(settings, { indent: opts.indent }).replace(\"'[form]'\", 'form');\n\n    push(`const settings = ${stringifiedSettings};`);\n    blank();\n    push('$.ajax(settings).done(res => {');\n    push('console.log(res);', 1);\n    push('});');\n\n    return join();\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for native XMLHttpRequest\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport stringifyObject from 'stringify-object';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForSingleQuotes } from '../../../helpers/escape.js';\nimport { getHeader, getHeaderName, hasHeader } from '../../../helpers/headers.js';\n\nexport interface XhrOptions {\n  cors?: boolean;\n}\n\nexport const xhr: Client = {\n  info: {\n    key: 'xhr',\n    title: 'XMLHttpRequest',\n    link: 'https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest',\n    description: 'W3C Standard API that provides scripted client functionality',\n    extname: '.js',\n  },\n  convert: ({ postData, allHeaders, method, fullUrl }, options) => {\n    const opts = {\n      indent: '  ',\n      cors: true,\n      ...options,\n    };\n\n    const { blank, push, join } = new CodeBuilder({ indent: opts.indent });\n\n    switch (postData.mimeType) {\n      case 'application/json':\n        push(\n          `const data = JSON.stringify(${stringifyObject(postData.jsonObj, {\n            indent: opts.indent,\n          })});`,\n        );\n        blank();\n        break;\n\n      case 'multipart/form-data':\n        if (!postData.params) {\n          break;\n        }\n\n        push('const data = new FormData();');\n\n        postData.params.forEach(param => {\n          push(`data.append('${param.name}', '${param.value || param.fileName || ''}');`);\n        });\n\n        // remove the contentType header\n        if (hasHeader(allHeaders, 'content-type')) {\n          if (getHeader(allHeaders, 'content-type')?.includes('boundary')) {\n            const headerName = getHeaderName(allHeaders, 'content-type');\n            if (headerName) {\n              delete allHeaders[headerName];\n            }\n          }\n        }\n\n        blank();\n        break;\n\n      default:\n        push(`const data = ${postData.text ? `'${postData.text}'` : 'null'};`);\n        blank();\n    }\n\n    push('const xhr = new XMLHttpRequest();');\n\n    if (opts.cors) {\n      push('xhr.withCredentials = true;');\n    }\n\n    blank();\n    push(\"xhr.addEventListener('readystatechange', function () {\");\n    push('if (this.readyState === this.DONE) {', 1);\n    push('console.log(this.responseText);', 2);\n    push('}', 1);\n    push('});');\n    blank();\n    push(`xhr.open('${method}', '${fullUrl}');`);\n\n    Object.keys(allHeaders).forEach(key => {\n      push(`xhr.setRequestHeader('${key}', '${escapeForSingleQuotes(allHeaders[key])}');`);\n    });\n\n    blank();\n    push('xhr.send(data);');\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { axios } from './axios/client.js';\nimport { fetch } from './fetch/client.js';\nimport { jquery } from './jquery/client.js';\nimport { xhr } from './xhr/client.js';\n\nexport const javascript: Target = {\n  info: {\n    key: 'javascript',\n    title: 'JavaScript',\n    default: 'fetch',\n  },\n\n  clientsById: {\n    xhr,\n    axios,\n    fetch,\n    jquery,\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator to generate raw JSON payload objects.\n *\n * @author\n * @erunion\n *\n * For any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { ReducedHelperObject } from '../../../helpers/reducer.js';\nimport type { Client } from '../../index.js';\n\nexport const native: Client = {\n  info: {\n    key: 'native',\n    title: 'Native JSON',\n    link: 'https://www.json.org/json-en.html',\n    description: 'A JSON represetation of any HAR payload.',\n    extname: '.json',\n  },\n  convert: ({ postData }, inputOpts) => {\n    const opts = {\n      indent: '  ',\n      ...inputOpts,\n    };\n\n    let payload: ReducedHelperObject | string | undefined = '';\n\n    switch (postData.mimeType) {\n      case 'application/x-www-form-urlencoded':\n        payload = postData.paramsObj ? postData.paramsObj : postData.text;\n        break;\n\n      case 'application/json':\n        if (postData.jsonObj) {\n          payload = postData.jsonObj;\n        }\n        break;\n\n      case 'multipart/form-data':\n        if (!postData.params) {\n          break;\n        }\n\n        // eslint-disable-next-line no-case-declarations\n        const multipartPayload: Record<string, any> = {};\n        postData.params.forEach(param => {\n          multipartPayload[param.name] = param.value;\n        });\n\n        payload = multipartPayload;\n        break;\n\n      default:\n        if (postData.text) {\n          payload = postData.text;\n        }\n    }\n\n    if (typeof payload === 'undefined' || payload === '') {\n      return 'No JSON body';\n    }\n\n    return JSON.stringify(payload, null, opts.indent);\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { native } from './native/client.js';\n\nexport const json: Target = {\n  info: {\n    key: 'json',\n    title: 'JSON',\n    default: 'native',\n  },\n  clientsById: {\n    native,\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for Kotlin using OkHttp.\n *\n * @author\n * @seanghay\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\n\nexport const okhttp: Client = {\n  info: {\n    key: 'okhttp',\n    title: 'OkHttp',\n    link: 'http://square.github.io/okhttp/',\n    description: 'An HTTP Request Client Library',\n    extname: '.kt',\n  },\n  convert: ({ postData, fullUrl, method, allHeaders }, options) => {\n    const opts = {\n      indent: '  ',\n      ...options,\n    };\n    const { blank, join, push } = new CodeBuilder({ indent: opts.indent });\n\n    const methods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD'];\n\n    const methodsWithBody = ['POST', 'PUT', 'DELETE', 'PATCH'];\n\n    push('val client = OkHttpClient()');\n    blank();\n\n    if (postData.text) {\n      if (postData.boundary) {\n        push(`val mediaType = MediaType.parse(\"${postData.mimeType}; boundary=${postData.boundary}\")`);\n      } else {\n        push(`val mediaType = MediaType.parse(\"${postData.mimeType}\")`);\n      }\n      push(`val body = RequestBody.create(mediaType, ${JSON.stringify(postData.text)})`);\n    }\n\n    push('val request = Request.Builder()');\n    push(`.url(\"${fullUrl}\")`, 1);\n    if (!methods.includes(method.toUpperCase())) {\n      if (postData.text) {\n        push(`.method(\"${method.toUpperCase()}\", body)`, 1);\n      } else {\n        push(`.method(\"${method.toUpperCase()}\", null)`, 1);\n      }\n    } else if (methodsWithBody.includes(method.toUpperCase())) {\n      if (postData.text) {\n        push(`.${method.toLowerCase()}(body)`, 1);\n      } else {\n        push(`.${method.toLowerCase()}(null)`, 1);\n      }\n    } else {\n      push(`.${method.toLowerCase()}()`, 1);\n    }\n\n    // Add headers, including the cookies\n    Object.keys(allHeaders).forEach(key => {\n      push(`.addHeader(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, 1);\n    });\n\n    push('.build()', 1);\n    blank();\n    push('val response = client.newCall(request).execute()');\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { okhttp } from './okhttp/client.js';\n\nexport const kotlin: Target = {\n  info: {\n    key: 'kotlin',\n    title: 'Kotlin',\n    default: 'okhttp',\n  },\n  clientsById: {\n    okhttp,\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for Javascript & Node.js using Axios.\n *\n * @author\n * @rohit-gohri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport stringifyObject from 'stringify-object';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\n\nexport const axios: Client = {\n  info: {\n    key: 'axios',\n    title: 'Axios',\n    link: 'https://github.com/axios/axios',\n    description: 'Promise based HTTP client for the browser and node.js',\n    extname: '.js',\n    installation: 'npm install axios --save',\n  },\n  convert: ({ method, fullUrl, allHeaders, postData }, options) => {\n    const opts = {\n      indent: '  ',\n      ...options,\n    };\n    const { blank, join, push, addPostProcessor } = new CodeBuilder({ indent: opts.indent });\n\n    push(\"import axios from 'axios';\");\n    blank();\n\n    const reqOpts: Record<string, any> = {\n      method,\n      url: fullUrl,\n    };\n\n    if (Object.keys(allHeaders).length) {\n      reqOpts.headers = allHeaders;\n    }\n\n    switch (postData.mimeType) {\n      case 'application/x-www-form-urlencoded':\n        if (postData.params) {\n          push('const encodedParams = new URLSearchParams();');\n          postData.params.forEach(param => {\n            push(`encodedParams.set('${param.name}', '${param.value}');`);\n          });\n\n          blank();\n\n          reqOpts.data = 'encodedParams,';\n          addPostProcessor(code => code.replace(/'encodedParams,'/, 'encodedParams,'));\n        }\n\n        break;\n\n      case 'application/json':\n        if (postData.jsonObj) {\n          reqOpts.data = postData.jsonObj;\n        }\n        break;\n\n      default:\n        if (postData.text) {\n          reqOpts.data = postData.text;\n        }\n    }\n\n    const stringifiedOptions = stringifyObject(reqOpts, { indent: '  ', inlineCharacterLimit: 80 });\n    push(`const options = ${stringifiedOptions};`);\n    blank();\n\n    push('axios');\n    push('.request(options)', 1);\n    push('.then(res => console.log(res.data))', 1);\n    push('.catch(err => console.error(err));', 1);\n\n    return join();\n  },\n};\n","import type { Client } from '../../index.js';\n\nimport stringifyObject from 'stringify-object';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { getHeaderName } from '../../../helpers/headers.js';\n\nexport const fetch: Client = {\n  info: {\n    key: 'fetch',\n    title: 'fetch',\n    link: 'https://nodejs.org/docs/latest/api/globals.html#fetch',\n    description: 'Perform asynchronous HTTP requests with the Fetch API',\n    extname: '.js',\n  },\n  convert: ({ method, fullUrl, postData, headersObj, cookies }, options) => {\n    const opts = {\n      indent: '  ',\n      ...options,\n    };\n\n    let includeFS = false;\n    const { blank, push, join, unshift } = new CodeBuilder({ indent: opts.indent });\n\n    const url = fullUrl;\n    const reqOpts: Record<string, any> = {\n      method,\n    };\n\n    if (Object.keys(headersObj).length) {\n      reqOpts.headers = headersObj;\n    }\n\n    switch (postData.mimeType) {\n      case 'application/x-www-form-urlencoded':\n        push('const encodedParams = new URLSearchParams();');\n\n        postData.params?.forEach(param => {\n          push(`encodedParams.set('${param.name}', '${param.value}');`);\n        });\n\n        reqOpts.body = 'encodedParams';\n        blank();\n        break;\n\n      case 'application/json':\n        if (postData.jsonObj) {\n          // Though `fetch` doesn't accept JSON objects in the `body` option we're going to\n          // stringify it when we add this into the snippet further down.\n          reqOpts.body = postData.jsonObj;\n        }\n        break;\n\n      case 'multipart/form-data':\n        if (!postData.params) {\n          break;\n        }\n\n        // The FormData API automatically adds a `Content-Type` header for `multipart/form-data` content and if we add our own here data won't be correctly transmitted.\n        // eslint-disable-next-line no-case-declarations -- We're only using `contentTypeHeader` within this block.\n        const contentTypeHeader = getHeaderName(headersObj, 'content-type');\n        if (contentTypeHeader) {\n          delete headersObj[contentTypeHeader];\n        }\n\n        push('const formData = new FormData();');\n\n        postData.params.forEach(param => {\n          if (!param.fileName && !param.fileName && !param.contentType) {\n            push(`formData.append('${param.name}', '${param.value}');`);\n            return;\n          }\n\n          if (param.fileName) {\n            includeFS = true;\n\n            // Whenever we drop support for Node 18 we can change this blob work to use\n            // `fs.openAsBlob('filename')`.\n            push(\n              `formData.append('${param.name}', await new Response(fs.createReadStream('${param.fileName}')).blob());`,\n            );\n          }\n        });\n\n        reqOpts.body = 'formData';\n        blank();\n        break;\n\n      default:\n        if (postData.text) {\n          reqOpts.body = postData.text;\n        }\n    }\n\n    // construct cookies argument\n    if (cookies.length) {\n      const cookiesString = cookies\n        .map(({ name, value }) => `${encodeURIComponent(name)}=${encodeURIComponent(value)}`)\n        .join('; ');\n      if (reqOpts.headers) {\n        reqOpts.headers.cookie = cookiesString;\n      } else {\n        reqOpts.headers = {};\n        reqOpts.headers.cookie = cookiesString;\n      }\n    }\n\n    push(`const url = '${url}';`);\n\n    // If we ultimately don't have any headers to send then we shouldn't add an empty object into the request options.\n    if (reqOpts.headers && !Object.keys(reqOpts.headers).length) {\n      delete reqOpts.headers;\n    }\n\n    const stringifiedOptions = stringifyObject(reqOpts, {\n      indent: '  ',\n      inlineCharacterLimit: 80,\n\n      // The Fetch API body only accepts string parameters, but stringified JSON can be difficult to\n      // read, so we keep the object as a literal and use this transform function to wrap the literal\n      // in a `JSON.stringify` call.\n      transform: (object, property, originalResult) => {\n        if (property === 'body' && postData.mimeType === 'application/json') {\n          return `JSON.stringify(${originalResult})`;\n        }\n\n        return originalResult;\n      },\n    });\n    push(`const options = ${stringifiedOptions};`);\n    blank();\n\n    if (includeFS) {\n      unshift(\"import fs from 'fs';\\n\");\n    }\n\n    push('fetch(url, options)');\n    push('.then(res => res.json())', 1);\n    push('.then(json => console.log(json))', 1);\n    push('.catch(err => console.error(err));', 1);\n\n    return join()\n      .replace(/'encodedParams'/, 'encodedParams')\n      .replace(/'formData'/, 'formData');\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for native Node.js.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport stringifyObject from 'stringify-object';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\n\nexport const native: Client = {\n  info: {\n    key: 'native',\n    title: 'HTTP',\n    link: 'http://nodejs.org/api/http.html#http_http_request_options_callback',\n    description: 'Node.js native HTTP interface',\n    extname: '.cjs',\n  },\n  convert: ({ uriObj, method, allHeaders, postData }, options = {}) => {\n    const { indent = '  ' } = options;\n    const { blank, join, push, unshift } = new CodeBuilder({ indent });\n\n    const reqOpts = {\n      method,\n      hostname: uriObj.hostname,\n      port: uriObj.port,\n      path: uriObj.path,\n      headers: allHeaders,\n    };\n\n    push(`const http = require('${uriObj.protocol?.replace(':', '')}');`);\n\n    blank();\n    push(`const options = ${stringifyObject(reqOpts, { indent })};`);\n    blank();\n    push('const req = http.request(options, function (res) {');\n    push('const chunks = [];', 1);\n    blank();\n    push(\"res.on('data', function (chunk) {\", 1);\n    push('chunks.push(chunk);', 2);\n    push('});', 1);\n    blank();\n    push(\"res.on('end', function () {\", 1);\n    push('const body = Buffer.concat(chunks);', 2);\n    push('console.log(body.toString());', 2);\n    push('});', 1);\n    push('});');\n    blank();\n\n    switch (postData.mimeType) {\n      case 'application/x-www-form-urlencoded':\n        if (postData.paramsObj) {\n          unshift(\"const qs = require('querystring');\");\n          push(\n            `req.write(qs.stringify(${stringifyObject(postData.paramsObj, {\n              indent: '  ',\n              inlineCharacterLimit: 80,\n            })}));`,\n          );\n        }\n        break;\n\n      case 'application/json':\n        if (postData.jsonObj) {\n          push(\n            `req.write(JSON.stringify(${stringifyObject(postData.jsonObj, {\n              indent: '  ',\n              inlineCharacterLimit: 80,\n            })}));`,\n          );\n        }\n        break;\n\n      default:\n        if (postData.text) {\n          push(`req.write(${stringifyObject(postData.text, { indent })});`);\n        }\n    }\n\n    push('req.end();');\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { axios } from './axios/client.js';\nimport { fetch } from './fetch/client.js';\nimport { native } from './native/client.js';\n\nexport const node: Target = {\n  info: {\n    key: 'node',\n    title: 'Node.js',\n    default: 'fetch',\n    cli: 'node %s',\n  },\n  clientsById: {\n    native,\n    axios,\n    fetch,\n  },\n};\n","/**\n * Create a string corresponding to a valid declaration and initialization of an Objective-C object literal.\n *\n * @param nsClass Class of the litteral\n * @param name Desired name of the instance\n * @param parameters Key-value object of parameters to translate to an Objective-C object litearal\n * @param indent If true, will declare the litteral by indenting each new key/value pair.\n * @return A valid Objective-C declaration and initialization of an Objective-C object litteral.\n *\n * @example\n *   nsDeclaration('NSDictionary', 'params', {a: 'b', c: 'd'}, true)\n *   // returns:\n *   NSDictionary *params = @{ @\"a\": @\"b\",\n *                             @\"c\": @\"d\" };\n *\n *   nsDeclaration('NSDictionary', 'params', {a: 'b', c: 'd'})\n *   // returns:\n *   NSDictionary *params = @{ @\"a\": @\"b\", @\"c\": @\"d\" };\n */\nexport const nsDeclaration = (nsClass: string, name: string, parameters: Record<string, any>, indent?: boolean) => {\n  const opening = `${nsClass} *${name} = `;\n  const literal = literalRepresentation(parameters, indent ? opening.length : undefined);\n  return `${opening}${literal};`;\n};\n\n/**\n * Create a valid Objective-C string of a literal value according to its type.\n *\n * @param value Any JavaScript literal\n */\nexport const literalRepresentation = (value: any, indentation?: number): string => {\n  const join = indentation === undefined ? ', ' : `,\\n   ${' '.repeat(indentation)}`;\n\n  switch (Object.prototype.toString.call(value)) {\n    case '[object Number]':\n      return `@${value}`;\n\n    case '[object Array]': {\n      const valuesRepresentation = value.map((val: any) => literalRepresentation(val));\n      return `@[ ${valuesRepresentation.join(join)} ]`;\n    }\n\n    case '[object Object]': {\n      const keyValuePairs: string[] = [];\n      Object.keys(value).forEach(key => {\n        keyValuePairs.push(`@\"${key}\": ${literalRepresentation(value[key])}`);\n      });\n      return `@{ ${keyValuePairs.join(join)} }`;\n    }\n\n    case '[object Boolean]':\n      return value ? '@YES' : '@NO';\n\n    default:\n      if (value === null || value === undefined) {\n        return '';\n      }\n      return `@\"${value.toString().replace(/\"/g, '\\\\\"')}\"`;\n  }\n};\n","/**\n * @description\n * HTTP code snippet generator for Objective-C using NSURLSession.\n *\n * @author\n * @thibaultCha\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { nsDeclaration } from '../helpers.js';\n\nexport interface NsurlsessionOptions {\n  pretty?: boolean;\n  timeout?: number;\n}\n\nexport const nsurlsession: Client<NsurlsessionOptions> = {\n  info: {\n    key: 'nsurlsession',\n    title: 'NSURLSession',\n    link: 'https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSURLSession_class/index.html',\n    description: \"Foundation's NSURLSession request\",\n    extname: '.m',\n  },\n  convert: ({ allHeaders, postData, method, fullUrl }, options) => {\n    const opts = {\n      indent: '    ',\n      pretty: true,\n      timeout: 10,\n      ...options,\n    };\n\n    const { push, join, blank } = new CodeBuilder({ indent: opts.indent });\n    // Markers for headers to be created as literal objects and later be set on the NSURLRequest if exist\n    const req = {\n      hasHeaders: false,\n      hasBody: false,\n    };\n\n    // We just want to make sure people understand that is the only dependency\n    push('#import <Foundation/Foundation.h>');\n\n    if (Object.keys(allHeaders).length) {\n      req.hasHeaders = true;\n      blank();\n      push(nsDeclaration('NSDictionary', 'headers', allHeaders, opts.pretty));\n    }\n\n    if (postData.text || postData.jsonObj || postData.params) {\n      req.hasBody = true;\n\n      switch (postData.mimeType) {\n        case 'application/x-www-form-urlencoded':\n          if (postData.params?.length) {\n            // By appending parameters one by one in the resulting snippet,\n            // we make it easier for the user to edit it according to his or her needs after pasting.\n            // The user can just add/remove lines adding/removing body parameters.\n            blank();\n\n            const [head, ...tail] = postData.params;\n            push(\n              `NSMutableData *postData = [[NSMutableData alloc] initWithData:[@\"${head.name}=${head.value}\" dataUsingEncoding:NSUTF8StringEncoding]];`,\n            );\n\n            tail.forEach(({ name, value }) => {\n              push(`[postData appendData:[@\"&${name}=${value}\" dataUsingEncoding:NSUTF8StringEncoding]];`);\n            });\n          } else {\n            req.hasBody = false;\n          }\n          break;\n\n        case 'application/json':\n          if (postData.jsonObj) {\n            push(nsDeclaration('NSDictionary', 'parameters', postData.jsonObj, opts.pretty));\n            blank();\n            push('NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];');\n          }\n          break;\n\n        case 'multipart/form-data':\n          // By appending multipart parameters one by one in the resulting snippet,\n          // we make it easier for the user to edit it according to his or her needs after pasting.\n          // The user can just edit the parameters NSDictionary or put this part of a snippet in a multipart builder method.\n          push(nsDeclaration('NSArray', 'parameters', postData.params || [], opts.pretty));\n          push(`NSString *boundary = @\"${postData.boundary}\";`);\n          blank();\n          push('NSError *error;');\n          push('NSMutableString *body = [NSMutableString string];');\n          push('for (NSDictionary *param in parameters) {');\n          push('[body appendFormat:@\"--%@\\\\r\\\\n\", boundary];', 1);\n          push('if (param[@\"fileName\"]) {', 1);\n          push(\n            '[body appendFormat:@\"Content-Disposition:form-data; name=\\\\\"%@\\\\\"; filename=\\\\\"%@\\\\\"\\\\r\\\\n\", param[@\"name\"], param[@\"fileName\"]];',\n            2,\n          );\n          push('[body appendFormat:@\"Content-Type: %@\\\\r\\\\n\\\\r\\\\n\", param[@\"contentType\"]];', 2);\n          push(\n            '[body appendFormat:@\"%@\", [NSString stringWithContentsOfFile:param[@\"fileName\"] encoding:NSUTF8StringEncoding error:&error]];',\n            2,\n          );\n          push('if (error) {', 2);\n          push('NSLog(@\"%@\", error);', 3);\n          push('}', 2);\n          push('} else {', 1);\n          push('[body appendFormat:@\"Content-Disposition:form-data; name=\\\\\"%@\\\\\"\\\\r\\\\n\\\\r\\\\n\", param[@\"name\"]];', 2);\n          push('[body appendFormat:@\"%@\", param[@\"value\"]];', 2);\n          push('}', 1);\n          push('}');\n          push('[body appendFormat:@\"\\\\r\\\\n--%@--\\\\r\\\\n\", boundary];');\n          push('NSData *postData = [body dataUsingEncoding:NSUTF8StringEncoding];');\n          break;\n\n        default:\n          blank();\n          push(\n            `NSData *postData = [[NSData alloc] initWithData:[@\"${postData.text}\" dataUsingEncoding:NSUTF8StringEncoding]];`,\n          );\n      }\n    }\n\n    blank();\n    push(`NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@\"${fullUrl}\"]`);\n\n    // NSURLRequestUseProtocolCachePolicy is the default policy, let's just always set it to avoid confusion.\n    push('                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy');\n    push(`                                                   timeoutInterval:${opts.timeout.toFixed(1)}];`);\n    push(`[request setHTTPMethod:@\"${method}\"];`);\n\n    if (req.hasHeaders) {\n      push('[request setAllHTTPHeaderFields:headers];');\n    }\n\n    if (req.hasBody) {\n      push('[request setHTTPBody:postData];');\n    }\n\n    blank();\n\n    // Retrieving the shared session will be less verbose than creating a new one.\n    push('NSURLSession *session = [NSURLSession sharedSession];');\n    push('NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request');\n    push(\n      '                                            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {',\n    );\n    push('                                            if (error) {', 1);\n    push('                                            NSLog(@\"%@\", error);', 2);\n    push('                                            } else {', 1);\n\n    // Casting the NSURLResponse to NSHTTPURLResponse so the user can see the status     .\n    push(\n      '                                            NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;',\n      2,\n    );\n    push('                                            NSLog(@\"%@\", httpResponse);', 2);\n    push('                                            }', 1);\n    push('                                            }];');\n    push('[dataTask resume];');\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { nsurlsession } from './nsurlsession/client.js';\n\nexport const objc: Target = {\n  info: {\n    key: 'objc',\n    title: 'Objective-C',\n    default: 'nsurlsession',\n  },\n  clientsById: {\n    nsurlsession,\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for OCaml using CoHTTP.\n *\n * @author\n * @SGrondin\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\n\nexport const cohttp: Client = {\n  info: {\n    key: 'cohttp',\n    title: 'CoHTTP',\n    link: 'https://github.com/mirage/ocaml-cohttp',\n    description: 'Cohttp is a very lightweight HTTP server using Lwt or Async for OCaml',\n    extname: '.ml',\n    installation: 'opam install cohttp-lwt-unix cohttp-async',\n  },\n  convert: ({ fullUrl, allHeaders, postData, method }, options) => {\n    const opts = {\n      indent: '  ',\n      ...options,\n    };\n\n    const methods = ['get', 'post', 'head', 'delete', 'patch', 'put', 'options'];\n    const { push, blank, join } = new CodeBuilder({ indent: opts.indent });\n\n    push('open Cohttp_lwt_unix');\n    push('open Cohttp');\n    push('open Lwt');\n    blank();\n    push(`let uri = Uri.of_string \"${fullUrl}\" in`);\n\n    // Add headers, including the cookies\n    const headers = Object.keys(allHeaders);\n\n    if (headers.length === 1) {\n      push(\n        `let headers = Header.add (Header.init ()) \"${headers[0]}\" \"${escapeForDoubleQuotes(\n          allHeaders[headers[0]],\n        )}\" in`,\n      );\n    } else if (headers.length > 1) {\n      push('let headers = Header.add_list (Header.init ()) [');\n      headers.forEach(key => {\n        push(`(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\");`, 1);\n      });\n      push('] in');\n    }\n\n    // Add body\n    if (postData.text) {\n      // Just text\n      push(`let body = Cohttp_lwt_body.of_string ${JSON.stringify(postData.text)} in`);\n    }\n\n    // Do the request\n    blank();\n\n    const h = headers.length ? '~headers ' : '';\n    const b = postData.text ? '~body ' : '';\n    const m = methods.includes(method.toLowerCase())\n      ? `\\`${method.toUpperCase()}`\n      : `(Code.method_of_string \"${method}\")`;\n\n    push(`Client.call ${h}${b}${m} uri`);\n\n    // Catch result\n    push('>>= fun (res, body_stream) ->');\n    push('(* Do stuff with the result *)', 1);\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { cohttp } from './cohttp/client.js';\n\nexport const ocaml: Target = {\n  info: {\n    key: 'ocaml',\n    title: 'OCaml',\n    default: 'cohttp',\n  },\n  clientsById: {\n    cohttp,\n  },\n};\n","import { escapeString } from '../../helpers/escape.js';\n\nexport const convertType = (obj: any[] | any, indent?: string, lastIndent?: string) => {\n  lastIndent = lastIndent || '';\n  indent = indent || '';\n\n  switch (Object.prototype.toString.call(obj)) {\n    case '[object Boolean]':\n      return obj;\n\n    case '[object Null]':\n      return 'null';\n\n    case '[object Undefined]':\n      return 'null';\n\n    case '[object String]':\n      return `'${escapeString(obj, { delimiter: \"'\", escapeNewlines: false })}'`;\n\n    case '[object Number]':\n      return obj.toString();\n\n    case '[object Array]': {\n      const contents = obj.map((item: any) => convertType(item, `${indent}${indent}`, indent)).join(`,\\n${indent}`);\n      return `[\\n${indent}${contents}\\n${lastIndent}]`;\n    }\n\n    case '[object Object]': {\n      const result: string[] = [];\n      // eslint-disable-next-line no-restricted-syntax\n      for (const i in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, i)) {\n          result.push(`${convertType(i, indent)} => ${convertType(obj[i], `${indent}${indent}`, indent)}`);\n        }\n      }\n      return `[\\n${indent}${result.join(`,\\n${indent}`)}\\n${lastIndent}]`;\n    }\n\n    default:\n      return 'null';\n  }\n};\n\nexport const supportedMethods = [\n  'ACL',\n  'BASELINE_CONTROL',\n  'CHECKIN',\n  'CHECKOUT',\n  'CONNECT',\n  'COPY',\n  'DELETE',\n  'GET',\n  'HEAD',\n  'LABEL',\n  'LOCK',\n  'MERGE',\n  'MKACTIVITY',\n  'MKCOL',\n  'MKWORKSPACE',\n  'MOVE',\n  'OPTIONS',\n  'POST',\n  'PROPFIND',\n  'PROPPATCH',\n  'PUT',\n  'REPORT',\n  'TRACE',\n  'UNCHECKOUT',\n  'UNLOCK',\n  'UPDATE',\n  'VERSION_CONTROL',\n];\n","/**\n * @description\n * HTTP code snippet generator for PHP using curl-ext.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\nimport { convertType } from '../helpers.js';\n\nexport interface CurlOptions {\n  closingTag?: boolean;\n  maxRedirects?: number;\n  namedErrors?: boolean;\n  noTags?: boolean;\n  shortTags?: boolean;\n  timeout?: number;\n}\n\nexport const curl: Client<CurlOptions> = {\n  info: {\n    key: 'curl',\n    title: 'cURL',\n    link: 'http://php.net/manual/en/book.curl.php',\n    description: 'PHP with ext-curl',\n    extname: '.php',\n  },\n  convert: ({ uriObj, postData, fullUrl, method, httpVersion, cookies, headersObj }, options = {}) => {\n    const {\n      closingTag = false,\n      indent = '  ',\n      maxRedirects = 10,\n      namedErrors = false,\n      noTags = false,\n      shortTags = false,\n      timeout = 30,\n    } = options;\n\n    const { push, blank, join } = new CodeBuilder({ indent });\n\n    if (!noTags) {\n      push(shortTags ? '<?' : '<?php');\n      blank();\n    }\n\n    push('$curl = curl_init();');\n    blank();\n\n    const curlOptions = [\n      {\n        escape: true,\n        name: 'CURLOPT_PORT',\n        value: uriObj.port,\n      },\n      {\n        escape: true,\n        name: 'CURLOPT_URL',\n        value: fullUrl,\n      },\n      {\n        escape: false,\n        name: 'CURLOPT_RETURNTRANSFER',\n        value: 'true',\n      },\n      {\n        escape: true,\n        name: 'CURLOPT_ENCODING',\n        value: '',\n      },\n      {\n        escape: false,\n        name: 'CURLOPT_MAXREDIRS',\n        value: maxRedirects,\n      },\n      {\n        escape: false,\n        name: 'CURLOPT_TIMEOUT',\n        value: timeout,\n      },\n      {\n        escape: false,\n        name: 'CURLOPT_HTTP_VERSION',\n        value: httpVersion === 'HTTP/1.0' ? 'CURL_HTTP_VERSION_1_0' : 'CURL_HTTP_VERSION_1_1',\n      },\n      {\n        escape: true,\n        name: 'CURLOPT_CUSTOMREQUEST',\n        value: method,\n      },\n      {\n        escape: !postData.jsonObj,\n        name: 'CURLOPT_POSTFIELDS',\n        value: postData\n          ? postData.jsonObj\n            ? `json_encode(${convertType(postData.jsonObj, indent.repeat(2), indent)})`\n            : postData.text\n          : undefined,\n      },\n    ];\n\n    push('curl_setopt_array($curl, [');\n\n    const curlopts = new CodeBuilder({ indent, join: `\\n${indent}` });\n\n    curlOptions.forEach(({ value, name, escape }) => {\n      if (value !== null && value !== undefined) {\n        curlopts.push(`${name} => ${escape ? JSON.stringify(value) : value},`);\n      }\n    });\n\n    // construct cookies\n    const curlCookies = cookies.map(cookie => `${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`);\n    if (curlCookies.length) {\n      curlopts.push(`CURLOPT_COOKIE => \"${curlCookies.join('; ')}\",`);\n    }\n\n    // construct cookies\n    const headers = Object.keys(headersObj)\n      .sort()\n      .map(key => `\"${key}: ${escapeForDoubleQuotes(headersObj[key])}\"`);\n\n    if (headers.length) {\n      curlopts.push('CURLOPT_HTTPHEADER => [');\n      curlopts.push(headers.join(`,\\n${indent}${indent}`), 1);\n      curlopts.push('],');\n    }\n\n    push(curlopts.join(), 1);\n    push(']);');\n    blank();\n    push('$response = curl_exec($curl);');\n    push('$err = curl_error($curl);');\n    blank();\n    push('curl_close($curl);');\n    blank();\n    push('if ($err) {');\n\n    if (namedErrors) {\n      push('echo array_flip(get_defined_constants(true)[\"curl\"])[$err];', 1);\n    } else {\n      push('echo \"cURL Error #:\" . $err;', 1);\n    }\n\n    push('} else {');\n    push('echo $response;', 1);\n    push('}');\n\n    if (!noTags && closingTag) {\n      blank();\n      push('?>');\n    }\n\n    return join();\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for PHP using Guzzle.\n *\n * @author @RobertoArruda\n * @author @erunion\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForSingleQuotes } from '../../../helpers/escape.js';\nimport { getHeader, getHeaderName, hasHeader } from '../../../helpers/headers.js';\nimport { convertType } from '../helpers.js';\n\nexport interface GuzzleOptions {\n  closingTag?: boolean;\n  indent?: string;\n  noTags?: boolean;\n  shortTags?: boolean;\n}\n\nexport const guzzle: Client<GuzzleOptions> = {\n  info: {\n    key: 'guzzle',\n    title: 'Guzzle',\n    link: 'http://docs.guzzlephp.org/en/stable/',\n    description: 'PHP with Guzzle',\n    extname: '.php',\n    installation: 'composer require guzzlehttp/guzzle',\n  },\n  convert: ({ postData, fullUrl, method, cookies, headersObj }, options) => {\n    const opts = {\n      closingTag: false,\n      indent: '  ',\n      noTags: false,\n      shortTags: false,\n      ...options,\n    };\n\n    const { push, blank, join } = new CodeBuilder({ indent: opts.indent });\n    const { code: requestCode, push: requestPush, join: requestJoin } = new CodeBuilder({ indent: opts.indent });\n\n    if (!opts.noTags) {\n      push(opts.shortTags ? '<?' : '<?php');\n    }\n\n    push(\"require_once('vendor/autoload.php');\");\n    blank();\n\n    switch (postData.mimeType) {\n      case 'application/x-www-form-urlencoded':\n        requestPush(`'form_params' => ${convertType(postData.paramsObj, opts.indent + opts.indent, opts.indent)},`, 1);\n        break;\n\n      case 'multipart/form-data': {\n        interface MultipartField {\n          contents: string | undefined;\n          filename?: string;\n          headers?: Record<string, string>;\n          name: string;\n        }\n\n        const fields: MultipartField[] = [];\n\n        if (postData.params) {\n          postData.params.forEach(param => {\n            if (param.fileName) {\n              const field: MultipartField = {\n                name: param.name,\n                filename: param.fileName,\n                contents: param.value,\n              };\n\n              if (param.contentType) {\n                field.headers = { 'Content-Type': param.contentType };\n              }\n\n              fields.push(field);\n            } else if (param.value) {\n              fields.push({\n                name: param.name,\n                contents: param.value,\n              });\n            }\n          });\n        }\n\n        if (fields.length) {\n          requestPush(`'multipart' => ${convertType(fields, opts.indent + opts.indent, opts.indent)}`, 1);\n\n          // Guzzle adds its own boundary for multipart requests.\n          if (hasHeader(headersObj, 'content-type')) {\n            if (getHeader(headersObj, 'content-type')?.indexOf('boundary')) {\n              const headerName = getHeaderName(headersObj, 'content-type');\n              if (headerName) {\n                delete headersObj[headerName];\n              }\n            }\n          }\n        }\n        break;\n      }\n\n      default:\n        if (postData.text) {\n          requestPush(`'body' => ${convertType(postData.text)},`, 1);\n        }\n    }\n\n    // construct headers\n    const headers = Object.keys(headersObj)\n      .sort()\n      .map(function (key) {\n        return `${opts.indent}${opts.indent}'${key}' => '${escapeForSingleQuotes(headersObj[key])}',`;\n      });\n\n    // construct cookies\n    const cookieString = cookies\n      .map(cookie => `${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`)\n      .join('; ');\n    if (cookieString.length) {\n      headers.push(`${opts.indent}${opts.indent}'cookie' => '${escapeForSingleQuotes(cookieString)}',`);\n    }\n\n    if (headers.length) {\n      requestPush(\"'headers' => [\", 1);\n      requestPush(headers.join('\\n'));\n      requestPush('],', 1);\n    }\n\n    push('$client = new \\\\GuzzleHttp\\\\Client();');\n    blank();\n\n    if (requestCode.length) {\n      push(`$response = $client->request('${method}', '${fullUrl}', [`);\n      push(requestJoin());\n      push(']);');\n    } else {\n      push(`$response = $client->request('${method}', '${fullUrl}');`);\n    }\n\n    blank();\n    push('echo $response->getBody();');\n\n    if (!opts.noTags && opts.closingTag) {\n      blank();\n      push('?>');\n    }\n\n    return join();\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for PHP using curl-ext.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { convertType, supportedMethods } from '../helpers.js';\n\nexport interface Http1Options {\n  closingTag?: boolean;\n  noTags?: boolean;\n  shortTags?: boolean;\n}\n\nexport const http1: Client<Http1Options> = {\n  info: {\n    key: 'http1',\n    title: 'HTTP v1',\n    link: 'http://php.net/manual/en/book.http.php',\n    description: 'PHP with pecl/http v1',\n    extname: '.php',\n  },\n  convert: ({ method, url, postData, queryObj, headersObj, cookiesObj }, options = {}) => {\n    const { closingTag = false, indent = '  ', noTags = false, shortTags = false } = options;\n\n    const { push, blank, join } = new CodeBuilder({ indent });\n\n    if (!noTags) {\n      push(shortTags ? '<?' : '<?php');\n      blank();\n    }\n\n    if (!supportedMethods.includes(method.toUpperCase())) {\n      push(`HttpRequest::methodRegister('${method}');`);\n    }\n\n    push('$request = new HttpRequest();');\n    push(`$request->setUrl(${convertType(url)});`);\n\n    if (supportedMethods.includes(method.toUpperCase())) {\n      push(`$request->setMethod(HTTP_METH_${method.toUpperCase()});`);\n    } else {\n      push(`$request->setMethod(HttpRequest::HTTP_METH_${method.toUpperCase()});`);\n    }\n\n    blank();\n\n    if (Object.keys(queryObj).length) {\n      push(`$request->setQueryData(${convertType(queryObj, indent)});`);\n      blank();\n    }\n\n    if (Object.keys(headersObj).length) {\n      push(`$request->setHeaders(${convertType(headersObj, indent)});`);\n      blank();\n    }\n\n    if (Object.keys(cookiesObj).length) {\n      push(`$request->setCookies(${convertType(cookiesObj, indent)});`);\n      blank();\n    }\n\n    switch (postData.mimeType) {\n      case 'application/x-www-form-urlencoded':\n        push(`$request->setContentType(${convertType(postData.mimeType)});`);\n        push(`$request->setPostFields(${convertType(postData.paramsObj, indent)});`);\n        blank();\n        break;\n\n      case 'application/json':\n        push(`$request->setContentType(${convertType(postData.mimeType)});`);\n        push(`$request->setBody(json_encode(${convertType(postData.jsonObj, indent)}));`);\n        blank();\n        break;\n\n      default:\n        if (postData.text) {\n          push(`$request->setBody(${convertType(postData.text)});`);\n          blank();\n        }\n    }\n\n    push('try {');\n    push('$response = $request->send();', 1);\n    blank();\n    push('echo $response->getBody();', 1);\n    push('} catch (HttpException $ex) {');\n    push('echo $ex;', 1);\n    push('}');\n\n    if (!noTags && closingTag) {\n      blank();\n      push('?>');\n    }\n\n    return join();\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for PHP using curl-ext.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { getHeader, getHeaderName, hasHeader } from '../../../helpers/headers.js';\nimport { convertType } from '../helpers.js';\n\nexport interface Http2Options {\n  closingTag?: boolean;\n  noTags?: boolean;\n  shortTags?: boolean;\n}\n\nexport const http2: Client<Http2Options> = {\n  info: {\n    key: 'http2',\n    title: 'HTTP v2',\n    link: 'http://devel-m6w6.rhcloud.com/mdref/http',\n    description: 'PHP with pecl/http v2',\n    extname: '.php',\n  },\n  convert: ({ postData, headersObj, method, queryObj, cookiesObj, url }, options = {}) => {\n    const { closingTag = false, indent = '  ', noTags = false, shortTags = false } = options;\n\n    const { push, blank, join } = new CodeBuilder({ indent });\n    let hasBody = false;\n\n    if (!noTags) {\n      push(shortTags ? '<?' : '<?php');\n      blank();\n    }\n\n    push('$client = new http\\\\Client;');\n    push('$request = new http\\\\Client\\\\Request;');\n    blank();\n\n    switch (postData.mimeType) {\n      case 'application/x-www-form-urlencoded':\n        push('$body = new http\\\\Message\\\\Body;');\n        push(`$body->append(new http\\\\QueryString(${convertType(postData.paramsObj, indent)}));`);\n        blank();\n        hasBody = true;\n        break;\n\n      case 'multipart/form-data': {\n        if (!postData.params) {\n          break;\n        }\n\n        const files: {\n          [anything: string]: string | undefined;\n          data: string | undefined;\n          file: string;\n          name: string;\n          type: string | undefined;\n        }[] = [];\n        const fields: Record<string, any> = {};\n        postData.params.forEach(({ name, fileName, value, contentType }) => {\n          if (fileName) {\n            files.push({\n              name,\n              type: contentType,\n              file: fileName,\n              data: value,\n            });\n            return;\n          }\n          if (value) {\n            fields[name] = value;\n          }\n        });\n\n        const field = Object.keys(fields).length ? convertType(fields, indent) : 'null';\n        const formValue = files.length ? convertType(files, indent) : 'null';\n\n        push('$body = new http\\\\Message\\\\Body;');\n        push(`$body->addForm(${field}, ${formValue});`);\n\n        // remove the contentType header\n        if (hasHeader(headersObj, 'content-type')) {\n          if (getHeader(headersObj, 'content-type')?.indexOf('boundary')) {\n            const headerName = getHeaderName(headersObj, 'content-type');\n            if (headerName) {\n              delete headersObj[headerName];\n            }\n          }\n        }\n\n        blank();\n\n        hasBody = true;\n        break;\n      }\n\n      case 'application/json':\n        push('$body = new http\\\\Message\\\\Body;');\n        push(`$body->append(json_encode(${convertType(postData.jsonObj, indent)}));`);\n        hasBody = true;\n        break;\n\n      default:\n        if (postData.text) {\n          push('$body = new http\\\\Message\\\\Body;');\n          push(`$body->append(${convertType(postData.text)});`);\n          blank();\n          hasBody = true;\n        }\n    }\n\n    push(`$request->setRequestUrl(${convertType(url)});`);\n    push(`$request->setRequestMethod(${convertType(method)});`);\n\n    if (hasBody) {\n      push('$request->setBody($body);');\n      blank();\n    }\n\n    if (Object.keys(queryObj).length) {\n      push(`$request->setQuery(new http\\\\QueryString(${convertType(queryObj, indent)}));`);\n      blank();\n    }\n\n    if (Object.keys(headersObj).length) {\n      push(`$request->setHeaders(${convertType(headersObj, indent)});`);\n      blank();\n    }\n\n    if (Object.keys(cookiesObj).length) {\n      blank();\n      push(`$client->setCookies(${convertType(cookiesObj, indent)});`);\n      blank();\n    }\n\n    push('$client->enqueue($request)->send();');\n    push('$response = $client->getResponse();');\n    blank();\n    push('echo $response->getBody();');\n\n    if (!noTags && closingTag) {\n      blank();\n      push('?>');\n    }\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { curl } from './curl/client.js';\nimport { guzzle } from './guzzle/client.js';\nimport { http1 } from './http1/client.js';\nimport { http2 } from './http2/client.js';\n\nexport const php: Target = {\n  info: {\n    key: 'php',\n    title: 'PHP',\n    default: 'curl',\n    cli: 'php %s',\n  },\n  clientsById: {\n    curl,\n    guzzle,\n    http1,\n    http2,\n  },\n};\n","import type { Converter } from '../index.js';\n\nimport { CodeBuilder } from '../../helpers/code-builder.js';\nimport { escapeString } from '../../helpers/escape.js';\nimport { getHeader } from '../../helpers/headers.js';\n\nexport type PowershellCommand = 'Invoke-RestMethod' | 'Invoke-WebRequest';\n\nexport const generatePowershellConvert = (command: PowershellCommand) => {\n  const convert: Converter<any> = ({ method, headersObj, cookies, uriObj, fullUrl, postData, allHeaders }) => {\n    const { push, join } = new CodeBuilder();\n    const methods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'];\n\n    if (!methods.includes(method.toUpperCase())) {\n      return 'Method not supported';\n    }\n\n    const commandOptions = [];\n\n    // Add headers, including the cookies\n    const headers = Object.keys(headersObj);\n\n    // construct headers\n    if (headers.length) {\n      push('$headers=@{}');\n      headers.forEach(key => {\n        if (key !== 'connection') {\n          // Not allowed\n          push(`$headers.Add(\"${key}\", \"${escapeString(headersObj[key], { escapeChar: '`' })}\")`);\n        }\n      });\n      commandOptions.push('-Headers $headers');\n    }\n\n    // construct cookies\n    if (cookies.length) {\n      push('$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession');\n\n      cookies.forEach(cookie => {\n        push('$cookie = New-Object System.Net.Cookie');\n\n        push(`$cookie.Name = '${cookie.name}'`);\n        push(`$cookie.Value = '${cookie.value}'`);\n        push(`$cookie.Domain = '${uriObj.host}'`);\n\n        push('$session.Cookies.Add($cookie)');\n      });\n      commandOptions.push('-WebSession $session');\n    }\n\n    if (postData.text) {\n      commandOptions.push(\n        `-ContentType '${escapeString(getHeader(allHeaders, 'content-type'), { delimiter: \"'\", escapeChar: '`' })}'`,\n      );\n      commandOptions.push(`-Body '${postData.text}'`);\n    }\n\n    push(`$response = ${command} -Uri '${fullUrl}' -Method ${method} ${commandOptions.join(' ')}`.trim());\n    return join();\n  };\n  return convert;\n};\n","import type { Client } from '../../index.js';\n\nimport { generatePowershellConvert } from '../common.js';\n\nexport const restmethod: Client = {\n  info: {\n    key: 'restmethod',\n    title: 'Invoke-RestMethod',\n    link: 'https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Invoke-RestMethod',\n    description: 'Powershell Invoke-RestMethod client',\n    extname: '.ps1',\n  },\n  convert: generatePowershellConvert('Invoke-RestMethod'),\n};\n","import type { Client } from '../../index.js';\n\nimport { generatePowershellConvert } from '../common.js';\n\nexport const webrequest: Client = {\n  info: {\n    key: 'webrequest',\n    title: 'Invoke-WebRequest',\n    link: 'https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Invoke-WebRequest',\n    description: 'Powershell Invoke-WebRequest client',\n    extname: '.ps1',\n  },\n  convert: generatePowershellConvert('Invoke-WebRequest'),\n};\n","import type { Target } from '../index.js';\n\nimport { restmethod } from './restmethod/client.js';\nimport { webrequest } from './webrequest/client.js';\n\nexport const powershell: Target = {\n  info: {\n    key: 'powershell',\n    title: 'Powershell',\n    default: 'webrequest',\n  },\n  clientsById: {\n    webrequest,\n    restmethod,\n  },\n};\n","/**\n * Create a string corresponding to a Dictionary or Array literal representation with pretty option\n * and indentation.\n */\nfunction concatValues(\n  concatType: 'array' | 'object',\n  values: any,\n  pretty: boolean,\n  indentation: string,\n  indentLevel: number,\n) {\n  const currentIndent = indentation.repeat(indentLevel);\n  const closingBraceIndent = indentation.repeat(indentLevel - 1);\n  const join = pretty ? `,\\n${currentIndent}` : ', ';\n  const openingBrace = concatType === 'object' ? '{' : '[';\n  const closingBrace = concatType === 'object' ? '}' : ']';\n\n  if (pretty) {\n    return `${openingBrace}\\n${currentIndent}${values.join(join)}\\n${closingBraceIndent}${closingBrace}`;\n  }\n\n  if (concatType === 'object' && values.length > 0) {\n    return `${openingBrace} ${values.join(join)} ${closingBrace}`;\n  }\n\n  return `${openingBrace}${values.join(join)}${closingBrace}`;\n}\n\n/**\n * Create a valid Python string of a literal value according to its type.\n *\n * @param {*} value Any JavaScript literal\n * @param {Object} opts Target options\n * @return {string}\n */\nexport const literalRepresentation = (value: any, opts: Record<string, any>, indentLevel?: number): any => {\n  indentLevel = indentLevel === undefined ? 1 : indentLevel + 1;\n\n  switch (Object.prototype.toString.call(value)) {\n    case '[object Number]':\n      return value;\n\n    case '[object Array]': {\n      let pretty = false;\n      const valuesRepresentation: any = (value as any[]).map(v => {\n        // Switch to prettify if the value is a dictionary with multiple keys\n        if (Object.prototype.toString.call(v) === '[object Object]') {\n          pretty = Object.keys(v).length > 1;\n        }\n        return literalRepresentation(v, opts, indentLevel);\n      });\n      return concatValues('array', valuesRepresentation, pretty, opts.indent, indentLevel);\n    }\n\n    case '[object Object]': {\n      const keyValuePairs = [];\n      // eslint-disable-next-line guard-for-in, no-restricted-syntax\n      for (const key in value) {\n        keyValuePairs.push(`\"${key}\": ${literalRepresentation(value[key], opts, indentLevel)}`);\n      }\n\n      return concatValues('object', keyValuePairs, opts.pretty && keyValuePairs.length > 1, opts.indent, indentLevel);\n    }\n\n    case '[object Null]':\n      return 'None';\n\n    case '[object Boolean]':\n      return value ? 'True' : 'False';\n\n    default:\n      if (value === null || value === undefined) {\n        return '';\n      }\n      return `\"${value.toString().replace(/\"/g, '\\\\\"')}\"`;\n  }\n};\n","/**\n * @description\n * HTTP code snippet generator for Python using Requests\n *\n * @author\n * @montanaflynn\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes } from '../../../helpers/escape.js';\nimport { getHeaderName } from '../../../helpers/headers.js';\nimport { literalRepresentation } from '../helpers.js';\n\nconst builtInMethods = ['HEAD', 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'];\n\nexport interface RequestsOptions {\n  pretty?: true;\n}\n\nexport const requests: Client<RequestsOptions> = {\n  info: {\n    key: 'requests',\n    title: 'Requests',\n    link: 'http://docs.python-requests.org/en/latest/api/#requests.request',\n    description: 'Requests HTTP library',\n    extname: '.py',\n    installation: 'python -m pip install requests',\n  },\n  convert: ({ fullUrl, postData, allHeaders, method }, options) => {\n    const opts = {\n      indent: '    ',\n      pretty: true,\n      ...options,\n    };\n    // Start snippet\n    const { push, blank, join, addPostProcessor } = new CodeBuilder({ indent: opts.indent });\n\n    // Import requests\n    push('import requests');\n    blank();\n\n    // Set URL\n    push(`url = \"${fullUrl}\"`);\n    blank();\n\n    const headers = allHeaders;\n\n    // Construct payload\n    let payload: Record<string, any> = {};\n    const files: Record<string, string> = {};\n\n    let hasFiles = false;\n    let hasPayload = false;\n    let jsonPayload = false;\n    switch (postData.mimeType) {\n      case 'application/json':\n        if (postData.jsonObj) {\n          push(`payload = ${literalRepresentation(postData.jsonObj, opts)}`);\n          jsonPayload = true;\n          hasPayload = true;\n        }\n        break;\n\n      case 'multipart/form-data':\n        if (!postData.params) {\n          break;\n        }\n\n        payload = {};\n        postData.params.forEach(p => {\n          if (p.fileName) {\n            if (p.contentType) {\n              files[p.name] = `('${p.fileName}', open('${p.fileName}', 'rb'), '${p.contentType}')`;\n            } else {\n              files[p.name] = `('${p.fileName}', open('${p.fileName}', 'rb'))`;\n            }\n\n            hasFiles = true;\n          } else {\n            payload[p.name] = p.value;\n            hasPayload = true;\n          }\n        });\n\n        if (hasFiles) {\n          push(`files = ${literalRepresentation(files, opts)}`);\n\n          if (hasPayload) {\n            push(`payload = ${literalRepresentation(payload, opts)}`);\n          }\n\n          // The requests library will only automatically add a `multipart/form-data` header if there are files being sent. If we're **only** sending form data we still need to send the boundary ourselves.\n          const headerName = getHeaderName(headers, 'content-type');\n          if (headerName) {\n            delete headers[headerName];\n          }\n        } else {\n          const nonFilePayload = JSON.stringify(postData.text);\n          if (nonFilePayload) {\n            push(`payload = ${nonFilePayload}`);\n            hasPayload = true;\n          }\n        }\n\n        // The `open()` call must be a literal in the code snippet.\n        addPostProcessor(code =>\n          code\n            .replace(/\"\\('(.+)', open\\('(.+)', 'rb'\\)\\)\"/g, '(\"$1\", open(\"$2\", \"rb\"))')\n            .replace(/\"\\('(.+)', open\\('(.+)', 'rb'\\), '(.+)'\\)\"/g, '(\"$1\", open(\"$2\", \"rb\"), \"$3\")'),\n        );\n        break;\n\n      default: {\n        if (postData.mimeType === 'application/x-www-form-urlencoded' && postData.paramsObj) {\n          push(`payload = ${literalRepresentation(postData.paramsObj, opts)}`);\n          hasPayload = true;\n          break;\n        }\n\n        const stringPayload = JSON.stringify(postData.text);\n        if (stringPayload) {\n          push(`payload = ${stringPayload}`);\n          hasPayload = true;\n        }\n      }\n    }\n\n    // Construct headers\n    const headerCount = Object.keys(headers).length;\n\n    if (headerCount === 0 && (hasPayload || hasFiles)) {\n      // If we don't have any heads but we do have a payload we should put a blank line here between that payload consturction and our execution of the requests library.\n      blank();\n    } else if (headerCount === 1) {\n      Object.keys(headers).forEach(header => {\n        push(`headers = {\"${header}\": \"${escapeForDoubleQuotes(headers[header])}\"}`);\n        blank();\n      });\n    } else if (headerCount > 1) {\n      let count = 1;\n\n      push('headers = {');\n\n      Object.keys(headers).forEach(header => {\n        if (count !== headerCount) {\n          push(`\"${header}\": \"${escapeForDoubleQuotes(headers[header])}\",`, 1);\n        } else {\n          push(`\"${header}\": \"${escapeForDoubleQuotes(headers[header])}\"`, 1);\n        }\n        count += 1;\n      });\n\n      push('}');\n      blank();\n    }\n\n    // Construct request\n    let request = builtInMethods.includes(method)\n      ? `response = requests.${method.toLowerCase()}(url`\n      : `response = requests.request(\"${method}\", url`;\n\n    if (hasPayload) {\n      if (jsonPayload) {\n        request += ', json=payload';\n      } else {\n        request += ', data=payload';\n      }\n    }\n\n    if (hasFiles) {\n      request += ', files=files';\n    }\n\n    if (headerCount > 0) {\n      request += ', headers=headers';\n    }\n\n    request += ')';\n\n    push(request);\n    blank();\n\n    push('print(response.text)');\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { requests } from './requests/client.js';\n\nexport const python: Target = {\n  info: {\n    key: 'python',\n    title: 'Python',\n    default: 'requests',\n    cli: 'python3 %s',\n  },\n  clientsById: {\n    requests,\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for R using httr\n *\n * @author\n * @gabrielakoreeda\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForDoubleQuotes, escapeForSingleQuotes } from '../../../helpers/escape.js';\nimport { getHeader } from '../../../helpers/headers.js';\n\nexport const httr: Client = {\n  info: {\n    key: 'httr',\n    title: 'httr',\n    link: 'https://cran.r-project.org/web/packages/httr/vignettes/quickstart.html',\n    description: 'httr: Tools for Working with URLs and HTTP',\n    extname: '.r',\n  },\n  convert: ({ url, queryObj, queryString, postData, allHeaders, method }) => {\n    // Start snippet\n    const { push, blank, join } = new CodeBuilder();\n\n    // Import httr\n    push('library(httr)');\n    blank();\n\n    // Set URL\n    push(`url <- \"${url}\"`);\n    blank();\n\n    // Construct query string\n    const qs = queryObj;\n    delete queryObj.key;\n\n    const queryCount = Object.keys(qs).length;\n    if (queryString.length === 1) {\n      push(`queryString <- list(${Object.keys(qs)} = \"${Object.values(qs).toString()}\")`);\n      blank();\n    } else if (queryString.length > 1) {\n      push('queryString <- list(');\n\n      Object.keys(qs).forEach((query, i) => {\n        if (i !== queryCount - 1) {\n          push(`  ${query} = \"${qs[query].toString()}\",`);\n        } else {\n          push(`  ${query} = \"${qs[query].toString()}\"`);\n        }\n      });\n\n      push(')');\n      blank();\n    }\n\n    // Construct payload\n    const payload = JSON.stringify(postData.text);\n\n    if (payload) {\n      push(`payload <- ${payload}`);\n      blank();\n    }\n\n    // Define encode\n    if (postData.text || postData.jsonObj || postData.params) {\n      switch (postData.mimeType) {\n        case 'application/x-www-form-urlencoded':\n          push('encode <- \"form\"');\n          blank();\n          break;\n\n        case 'application/json':\n          push('encode <- \"json\"');\n          blank();\n          break;\n\n        case 'multipart/form-data':\n          push('encode <- \"multipart\"');\n          blank();\n          break;\n\n        default:\n          push('encode <- \"raw\"');\n          blank();\n          break;\n      }\n    }\n\n    // Construct headers\n    const cookieHeader = getHeader(allHeaders, 'cookie');\n    const acceptHeader = getHeader(allHeaders, 'accept');\n\n    const setCookies = cookieHeader\n      ? `set_cookies(\\`${String(cookieHeader).replace(/;/g, '\", `').replace(/` /g, '`').replace(/[=]/g, '` = \"')}\")`\n      : undefined;\n\n    const setAccept = acceptHeader ? `accept(\"${escapeForDoubleQuotes(acceptHeader)}\")` : undefined;\n\n    const setContentType = `content_type(\"${escapeForDoubleQuotes(postData.mimeType)}\")`;\n\n    const otherHeaders = Object.entries(allHeaders)\n      // These headers are all handled separately:\n      .filter(([key]) => !['cookie', 'accept', 'content-type'].includes(key.toLowerCase()))\n      .map(([key, value]) => `'${key}' = '${escapeForSingleQuotes(value)}'`)\n      .join(', ');\n\n    const setHeaders = otherHeaders ? `add_headers(${otherHeaders})` : undefined;\n\n    // Construct request\n    let request = `response <- VERB(\"${method}\", url`;\n\n    if (payload) {\n      request += ', body = payload';\n    }\n\n    if (queryString.length) {\n      request += ', query = queryString';\n    }\n\n    const headerAdditions = [setHeaders, setContentType, setAccept, setCookies].filter(x => !!x).join(', ');\n\n    if (headerAdditions) {\n      request += `, ${headerAdditions}`;\n    }\n\n    if (postData.text || postData.jsonObj || postData.params) {\n      request += ', encode = encode';\n    }\n\n    request += ')';\n\n    push(request);\n\n    blank();\n    // Print response\n    push('content(response, \"text\")');\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { httr } from './httr/client.js';\n\nexport const r: Target = {\n  info: {\n    key: 'r',\n    title: 'R',\n    default: 'httr',\n  },\n  clientsById: {\n    httr,\n  },\n};\n","import type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escapeForSingleQuotes } from '../../../helpers/escape.js';\n\nexport const native: Client = {\n  info: {\n    key: 'native',\n    title: 'net::http',\n    link: 'http://ruby-doc.org/stdlib-2.2.1/libdoc/net/http/rdoc/Net/HTTP.html',\n    description: 'Ruby HTTP client',\n    extname: '.rb',\n  },\n  convert: ({ uriObj, method: rawMethod, fullUrl, postData, allHeaders }) => {\n    const { push, blank, join } = new CodeBuilder();\n\n    push(\"require 'uri'\");\n    push(\"require 'net/http'\");\n    blank();\n\n    // To support custom methods we check for the supported methods\n    // and if doesn't exist then we build a custom class for it\n    const method = rawMethod.toUpperCase();\n    const methods = [\n      'GET',\n      'POST',\n      'HEAD',\n      'DELETE',\n      'PATCH',\n      'PUT',\n      'OPTIONS',\n      'COPY',\n      'LOCK',\n      'UNLOCK',\n      'MOVE',\n      'TRACE',\n    ];\n    const capMethod = method.charAt(0) + method.substring(1).toLowerCase();\n    if (!methods.includes(method)) {\n      push(`class Net::HTTP::${capMethod} < Net::HTTPRequest`);\n      push(`  METHOD = '${method.toUpperCase()}'`);\n      push(`  REQUEST_HAS_BODY = '${postData.text ? 'true' : 'false'}'`);\n      push('  RESPONSE_HAS_BODY = true');\n      push('end');\n      blank();\n    }\n\n    push(`url = URI(\"${fullUrl}\")`);\n    blank();\n    push('http = Net::HTTP.new(url.host, url.port)');\n\n    if (uriObj.protocol === 'https:') {\n      push('http.use_ssl = true');\n    }\n\n    blank();\n    push(`request = Net::HTTP::${capMethod}.new(url)`);\n\n    const headers = Object.keys(allHeaders);\n    if (headers.length) {\n      headers.forEach(key => {\n        push(`request[\"${key}\"] = '${escapeForSingleQuotes(allHeaders[key])}'`);\n      });\n    }\n\n    if (postData.text) {\n      push(`request.body = ${JSON.stringify(postData.text)}`);\n    }\n\n    blank();\n    push('response = http.request(request)');\n    push('puts response.read_body');\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { native } from './native/client.js';\n\nexport const ruby: Target = {\n  info: {\n    key: 'ruby',\n    title: 'Ruby',\n    default: 'native',\n  },\n  clientsById: {\n    native,\n  },\n};\n","/**\n * Use 'strong quoting' using single quotes so that we only need to deal with nested single quote characters.\n * see: http://wiki.bash-hackers.org/syntax/quoting#strong_quoting\n */\nexport const quote = (value = '') => {\n  const safe = /^[a-z0-9-_/.@%^=:]+$/i;\n\n  const isShellSafe = safe.test(value);\n\n  if (isShellSafe) {\n    return value;\n  }\n\n  // if the value is not shell safe, then quote it\n  return `'${value.replace(/'/g, \"'\\\\''\")}'`;\n};\n\nexport const escape = (value: string) => value.replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n');\n","/**\n * @description\n *\n * HTTP code snippet generator for the Shell using cURL.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { getHeader, getHeaderName, isMimeTypeJSON } from '../../../helpers/headers.js';\nimport { quote } from '../../../helpers/shell.js';\n\nexport interface CurlOptions {\n  binary?: boolean;\n  globOff?: boolean;\n  indent?: string | false;\n  prettifyJson?: boolean;\n  short?: boolean;\n}\n\n/**\n * This is a const record with keys that correspond to the long names and values that correspond to the short names for cURL arguments.\n */\nconst params = {\n  'http1.0': '0',\n  'url ': '',\n  cookie: 'b',\n  data: 'd',\n  form: 'F',\n  globoff: 'g',\n  header: 'H',\n  insecure: 'k',\n  request: 'X',\n} as const;\n\nconst getArg = (short: boolean) => (longName: keyof typeof params) => {\n  if (short) {\n    const shortName = params[longName];\n    if (!shortName) {\n      return '';\n    }\n    return `-${shortName}`;\n  }\n  return `--${longName}`;\n};\n\nexport const curl: Client<CurlOptions> = {\n  info: {\n    key: 'curl',\n    title: 'cURL',\n    link: 'http://curl.haxx.se/',\n    description: 'cURL is a command line tool and library for transferring data with URL syntax',\n    extname: '.sh',\n  },\n  convert: ({ fullUrl, method, httpVersion, headersObj, allHeaders, postData }, options = {}) => {\n    const { indent = '  ', short = false, binary = false, globOff = false } = options;\n\n    // In the interest of having nicer looking snippets JSON should be indented separately from the\n    // main command argument indentation.\n    const indentJSON = '  ';\n\n    const { push, join } = new CodeBuilder({\n      ...(typeof indent === 'string' ? { indent } : {}),\n      join: indent !== false ? ` \\\\\\n${indent}` : ' ',\n    });\n\n    const arg = getArg(short);\n\n    let formattedUrl = quote(fullUrl);\n\n    push(`curl ${arg('request')} ${method}`);\n    if (globOff) {\n      formattedUrl = unescape(formattedUrl);\n      push(arg('globoff'));\n    }\n    push(`${arg('url ')}${formattedUrl}`);\n\n    if (httpVersion === 'HTTP/1.0') {\n      push(arg('http1.0'));\n    }\n\n    if (getHeader(allHeaders, 'accept-encoding')) {\n      // note: there is no shorthand for this cURL option\n      push('--compressed');\n    }\n\n    // if multipart form data, we want to remove the boundary\n    if (postData.mimeType === 'multipart/form-data') {\n      const contentTypeHeaderName = getHeaderName(headersObj, 'content-type');\n      if (contentTypeHeaderName) {\n        const contentTypeHeader = headersObj[contentTypeHeaderName];\n        if (contentTypeHeaderName && contentTypeHeader) {\n          // remove the leading semi colon and boundary\n          // up to the next semi colon or the end of string\n          const noBoundary = String(contentTypeHeader).replace(/; boundary.+?(?=(;|$))/, '');\n\n          // replace the content-type header with no boundary in both headersObj and allHeaders\n          headersObj[contentTypeHeaderName] = noBoundary;\n          allHeaders[contentTypeHeaderName] = noBoundary;\n        }\n      }\n    }\n\n    // construct headers\n    Object.keys(headersObj)\n      .sort()\n      .forEach(key => {\n        const header = `${key}: ${headersObj[key]}`;\n        push(`${arg('header')} ${quote(header)}`);\n      });\n\n    if (allHeaders.cookie) {\n      push(`${arg('cookie')} ${quote(allHeaders.cookie as string)}`);\n    }\n\n    // construct post params\n    switch (postData.mimeType) {\n      case 'multipart/form-data':\n        postData.params?.forEach(param => {\n          let post = '';\n          // If the parameter is a filename, we want to put shell quotes around\n          // it rather than URL quoting it. Curl wants `file='@img copy.jpg'`\n          // not `file=@img%20copy.jpg`, which it will fail to find\n          if (param.fileName) {\n            post = `${param.name}='@${param.fileName}'`;\n          } else {\n            post = quote(`${param.name}=${param.value}`);\n          }\n\n          push(`${arg('form')} ${post}`);\n        });\n        break;\n\n      case 'application/x-www-form-urlencoded':\n        if (postData.params) {\n          postData.params.forEach(param => {\n            const unencoded = param.name;\n            const encoded = encodeURIComponent(param.name);\n            const needsEncoding = encoded !== unencoded;\n            const name = needsEncoding ? encoded : unencoded;\n            const flag = binary ? '--data-binary' : needsEncoding ? '--data-urlencode' : arg('data');\n            push(`${flag} ${quote(`${name}=${param.value}`)}`);\n          });\n        } else {\n          push(`${binary ? '--data-binary' : arg('data')} ${quote(postData.text)}`);\n        }\n        break;\n\n      default:\n        // raw request body\n        if (!postData.text) {\n          break;\n        }\n\n        // eslint-disable-next-line no-case-declarations -- builtPayload is only used here.\n        let builtPayload = false;\n\n        // If we're dealing with a JSON variant, and our payload is JSON let's make it look a little\n        // nicer.\n        if (isMimeTypeJSON(postData.mimeType)) {\n          // If our postData is less than 20 characters, let's keep it all on one line so as to not\n          // make the snippet overly lengthy\n          if (postData.text.length > 20) {\n            try {\n              const jsonPayload = JSON.parse(postData.text);\n\n              // If the JSON object has a single quote we should prepare it inside of a HEREDOC\n              // because the single quote in something like `string's` can't be escaped when used\n              // with `--data`.\n              //\n              // Basically this boils down to `--data @- <<EOF...EOF` vs `--data '...'`.\n              builtPayload = true;\n\n              if (postData.text.indexOf(\"'\") > 0) {\n                push(\n                  `${binary ? '--data-binary' : arg('data')} @- <<EOF\\n${JSON.stringify(\n                    jsonPayload,\n                    null,\n                    indentJSON,\n                  )}\\nEOF`,\n                );\n              } else {\n                push(\n                  `${binary ? '--data-binary' : arg('data')} '\\n${JSON.stringify(jsonPayload, null, indentJSON)}\\n'`,\n                );\n              }\n            } catch (err) {\n              // no-op\n            }\n          }\n        }\n\n        if (!builtPayload) {\n          push(`${binary ? '--data-binary' : arg('data')} ${quote(postData.text)}`);\n        }\n    }\n\n    return join();\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for the Shell using HTTPie.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { quote } from '../../../helpers/shell.js';\n\nexport interface HttpieOptions {\n  body?: boolean;\n  cert?: boolean;\n  headers?: boolean;\n  pretty?: boolean;\n  print?: boolean;\n  queryParams?: boolean;\n  short?: boolean;\n  style?: boolean;\n  timeout?: boolean;\n  verbose?: boolean;\n  verify?: boolean;\n}\n\nexport const httpie: Client<HttpieOptions> = {\n  info: {\n    key: 'httpie',\n    title: 'HTTPie',\n    link: 'http://httpie.org/',\n    description: 'a CLI, cURL-like tool for humans',\n    extname: '.sh',\n    installation: 'brew install httpie',\n  },\n  convert: ({ allHeaders, postData, queryObj, fullUrl, method, url }, options) => {\n    const opts = {\n      body: false,\n      cert: false,\n      headers: false,\n      indent: '  ',\n      pretty: false,\n      print: false,\n      queryParams: false,\n      short: false,\n      style: false,\n      timeout: false,\n      verbose: false,\n      verify: false,\n      ...options,\n    };\n\n    const { push, join, unshift } = new CodeBuilder({\n      indent: opts.indent,\n      // @ts-expect-error SEEMS LEGIT\n      join: opts.indent !== false ? ` \\\\\\n${opts.indent}` : ' ',\n    });\n\n    let raw = false;\n    const flags = [];\n\n    if (opts.headers) {\n      flags.push(opts.short ? '-h' : '--headers');\n    }\n\n    if (opts.body) {\n      flags.push(opts.short ? '-b' : '--body');\n    }\n\n    if (opts.verbose) {\n      flags.push(opts.short ? '-v' : '--verbose');\n    }\n\n    if (opts.print) {\n      flags.push(`${opts.short ? '-p' : '--print'}=${opts.print}`);\n    }\n\n    if (opts.verify) {\n      flags.push(`--verify=${opts.verify}`);\n    }\n\n    if (opts.cert) {\n      flags.push(`--cert=${opts.cert}`);\n    }\n\n    if (opts.pretty) {\n      flags.push(`--pretty=${opts.pretty}`);\n    }\n\n    if (opts.style) {\n      flags.push(`--style=${opts.style}`);\n    }\n\n    if (opts.timeout) {\n      flags.push(`--timeout=${opts.timeout}`);\n    }\n\n    // construct query params\n    if (opts.queryParams) {\n      Object.keys(queryObj).forEach(name => {\n        const value = queryObj[name];\n\n        if (Array.isArray(value)) {\n          value.forEach(val => {\n            push(`${name}==${quote(val)}`);\n          });\n        } else {\n          push(`${name}==${quote(value)}`);\n        }\n      });\n    }\n\n    // construct headers\n    Object.keys(allHeaders)\n      .sort()\n      .forEach(key => {\n        push(`${key}:${quote(allHeaders[key] as string)}`);\n      });\n\n    if (postData.mimeType === 'application/x-www-form-urlencoded') {\n      // construct post params\n      if (postData.params && postData.params.length) {\n        flags.push(opts.short ? '-f' : '--form');\n\n        postData.params.forEach(param => {\n          push(`${param.name}=${quote(param.value)}`);\n        });\n      }\n    } else {\n      raw = true;\n    }\n\n    const cliFlags = flags.length ? `${flags.join(' ')} ` : '';\n    url = quote(opts.queryParams ? url : fullUrl);\n    unshift(`http ${cliFlags}${method} ${url}`);\n\n    if (raw && postData.text) {\n      const postDataText = quote(postData.text);\n      unshift(`echo ${postDataText} | `);\n    }\n\n    return join();\n  },\n};\n","/**\n * @description\n * HTTP code snippet generator for the Shell using Wget.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { escape, quote } from '../../../helpers/shell.js';\n\nexport interface WgetOptions {\n  indent?: string | false;\n  short?: boolean;\n  verbose?: boolean;\n}\n\nexport const wget: Client<WgetOptions> = {\n  info: {\n    key: 'wget',\n    title: 'Wget',\n    link: 'https://www.gnu.org/software/wget/',\n    description: 'a free software package for retrieving files using HTTP, HTTPS',\n    extname: '.sh',\n  },\n  convert: ({ method, postData, allHeaders, fullUrl }, options) => {\n    const opts = {\n      indent: '  ',\n      short: false,\n      verbose: false,\n      ...options,\n    };\n\n    const { push, join } = new CodeBuilder({\n      ...(typeof opts.indent === 'string' ? { indent: opts.indent } : {}),\n      join: opts.indent !== false ? ` \\\\\\n${opts.indent}` : ' ',\n    });\n\n    if (opts.verbose) {\n      push(`wget ${opts.short ? '-v' : '--verbose'}`);\n    } else {\n      push(`wget ${opts.short ? '-q' : '--quiet'}`);\n    }\n\n    push(`--method ${quote(method)}`);\n\n    Object.keys(allHeaders).forEach(key => {\n      const header = `${key}: ${allHeaders[key]}`;\n      push(`--header ${quote(header)}`);\n    });\n\n    if (postData.text) {\n      push(`--body-data ${escape(quote(postData.text))}`);\n    }\n\n    push(opts.short ? '-O' : '--output-document');\n    push(`- ${quote(fullUrl)}`);\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { curl } from './curl/client.js';\nimport { httpie } from './httpie/client.js';\nimport { wget } from './wget/client.js';\n\nexport const shell: Target = {\n  info: {\n    key: 'shell',\n    title: 'Shell',\n    default: 'curl',\n    cli: '%s',\n  },\n  clientsById: {\n    curl,\n    httpie,\n    wget,\n  },\n};\n","/**\n * Create an string of given length filled with blank spaces\n *\n * @param length Length of the array to return\n * @param str String to pad out with\n */\nconst buildString = (length: number, str: string) => str.repeat(length);\n\n/**\n * Create a string corresponding to a Dictionary or Array literal representation with pretty option and indentation.\n */\nconst concatArray = <T>(arr: T[], pretty: boolean, indentation: string, indentLevel: number) => {\n  const currentIndent = buildString(indentLevel, indentation);\n  const closingBraceIndent = buildString(indentLevel - 1, indentation);\n  const join = pretty ? `,\\n${currentIndent}` : ', ';\n\n  if (pretty) {\n    return `[\\n${currentIndent}${arr.join(join)}\\n${closingBraceIndent}]`;\n  }\n  return `[${arr.join(join)}]`;\n};\n\n/**\n * Create a string corresponding to a valid declaration and initialization of a Swift array or dictionary literal\n *\n * @param name Desired name of the instance\n * @param parameters Key-value object of parameters to translate to a Swift object litearal\n * @param opts Target options\n * @return {string}\n */\nexport const literalDeclaration = <T, U>(name: string, parameters: T, opts: U) =>\n  `let ${name} = ${literalRepresentation(parameters, opts)}`;\n\n/**\n * Create a valid Swift string of a literal value according to its type.\n *\n * @param value Any JavaScript literal\n * @param opts Target options\n */\nexport const literalRepresentation = <T, U>(value: T, opts: U, indentLevel?: number): number | string => {\n  indentLevel = indentLevel === undefined ? 1 : indentLevel + 1;\n\n  switch (Object.prototype.toString.call(value)) {\n    case '[object Number]':\n      return value as unknown as number;\n\n    case '[object Array]': {\n      // Don't prettify arrays nto not take too much space\n      let pretty = false;\n      const valuesRepresentation = (value as unknown as any[]).map((v: any) => {\n        // Switch to prettify if the value is a dictionary with multiple keys\n        if (Object.prototype.toString.call(v) === '[object Object]') {\n          pretty = Object.keys(v).length > 1;\n        }\n        return literalRepresentation(v, opts, indentLevel);\n      });\n      // @ts-expect-error needs better types\n      return concatArray(valuesRepresentation, pretty, opts.indent, indentLevel);\n    }\n\n    case '[object Object]': {\n      const keyValuePairs = [];\n      // eslint-disable-next-line guard-for-in, no-restricted-syntax\n      for (const key in value) {\n        keyValuePairs.push(`\"${key}\": ${literalRepresentation(value[key], opts, indentLevel)}`);\n      }\n      return concatArray(\n        keyValuePairs,\n        // @ts-expect-error needs better types\n        opts.pretty && keyValuePairs.length > 1,\n        // @ts-expect-error needs better types\n        opts.indent,\n        indentLevel,\n      );\n    }\n\n    case '[object Boolean]':\n      return (value as unknown as boolean).toString();\n\n    default:\n      if (value === null || value === undefined) {\n        return 'nil';\n      }\n      return `\"${(value as any).toString().replace(/\"/g, '\\\\\"')}\"`;\n  }\n};\n","/**\n * @description\n * HTTP code snippet generator for Swift using URLSession.\n *\n * @author\n * @thibaultCha\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport type { Client } from '../../index.js';\n\nimport { CodeBuilder } from '../../../helpers/code-builder.js';\nimport { literalRepresentation, literalDeclaration } from '../helpers.js';\n\nexport interface UrlsessionOptions {\n  pretty?: boolean;\n  timeout?: number | string;\n}\n\nexport const urlsession: Client<UrlsessionOptions> = {\n  info: {\n    key: 'urlsession',\n    title: 'URLSession',\n    link: 'https://developer.apple.com/documentation/foundation/urlsession',\n    description: \"Foundation's URLSession request\",\n    extname: '.swift',\n  },\n  convert: ({ allHeaders, postData, uriObj, queryObj, method }, options) => {\n    const opts = {\n      indent: '  ',\n      pretty: true,\n      timeout: 10,\n      ...options,\n    };\n\n    const { push, blank, join } = new CodeBuilder({ indent: opts.indent });\n\n    push('import Foundation');\n    blank();\n\n    const hasBody = postData.text || postData.jsonObj || postData.params;\n    if (hasBody) {\n      switch (postData.mimeType) {\n        case 'application/x-www-form-urlencoded':\n          // By appending parameters one by one in the resulting snippet,\n          // we make it easier for the user to edit it according to his or her needs after pasting.\n          // The user can just add/remove lines adding/removing body parameters.\n          if (postData.params?.length) {\n            const parameters = postData.params.map(p => `\"${p.name}\": \"${p.value}\"`);\n            if (opts.pretty) {\n              push('let parameters = [');\n              parameters.forEach(param => push(`${param},`, 1));\n              push(']');\n            } else {\n              push(`let parameters = [${parameters.join(', ')}]`);\n            }\n\n            push('let joinedParameters = parameters.map { \"\\\\($0.key)=\\\\($0.value)\" }.joined(separator: \"&\")');\n            push('let postData = Data(joinedParameters.utf8)');\n            blank();\n          }\n          break;\n\n        case 'application/json':\n          if (postData.jsonObj) {\n            push(`${literalDeclaration('parameters', postData.jsonObj, opts)} as [String : Any?]`);\n            blank();\n            push('let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])');\n            blank();\n          }\n          break;\n\n        case 'multipart/form-data':\n          /**\n           * By appending multipart parameters one by one in the resulting snippet,\n           * we make it easier for the user to edit it according to his or her needs after pasting.\n           * The user can just edit the parameters Dictionary or put this part of a snippet in a multipart builder method.\n           */\n\n          push(literalDeclaration('parameters', postData.params, opts));\n          blank();\n          push(`let boundary = \"${postData.boundary}\"`);\n          blank();\n          push('var body = \"\"');\n          push('for param in parameters {');\n          push('let paramName = param[\"name\"]!', 1);\n          push('body += \"--\\\\(boundary)\\\\r\\\\n\"', 1);\n          push('body += \"Content-Disposition:form-data; name=\\\\\"\\\\(paramName)\\\\\"\"', 1);\n          push('if let filename = param[\"fileName\"] {', 1);\n          push('let contentType = param[\"contentType\"]!', 2);\n          push('let fileContent = try String(contentsOfFile: filename, encoding: .utf8)', 2);\n          push('body += \"; filename=\\\\\"\\\\(filename)\\\\\"\\\\r\\\\n\"', 2);\n          push('body += \"Content-Type: \\\\(contentType)\\\\r\\\\n\\\\r\\\\n\"', 2);\n          push('body += fileContent', 2);\n          push('} else if let paramValue = param[\"value\"] {', 1);\n          push('body += \"\\\\r\\\\n\\\\r\\\\n\\\\(paramValue)\"', 2);\n          push('}', 1);\n          push('}');\n          blank();\n          push('let postData = Data(body.utf8)');\n          blank();\n          break;\n\n        default:\n          push(`let postData = Data(\"${postData.text}\".utf8)`);\n          blank();\n      }\n    }\n\n    push(`let url = URL(string: \"${uriObj.href}\")!`);\n\n    const queries = queryObj ? Object.entries(queryObj) : [];\n    if (queries.length < 1) {\n      push('var request = URLRequest(url: url)');\n    } else {\n      push('var components = URLComponents(url: url, resolvingAgainstBaseURL: true)!');\n      push('let queryItems: [URLQueryItem] = [');\n\n      queries.forEach(query => {\n        const key = query[0];\n        const value = query[1];\n        switch (Object.prototype.toString.call(value)) {\n          case '[object String]':\n            push(`URLQueryItem(name: \"${key}\", value: \"${value}\"),`, 1);\n            break;\n          case '[object Array]':\n            (value as string[]).forEach((val: string) => {\n              push(`URLQueryItem(name: \"${key}\", value: \"${val}\"),`, 1);\n            });\n            break;\n        }\n      });\n      push(']');\n      push('components.queryItems = components.queryItems.map { $0 + queryItems } ?? queryItems');\n\n      blank();\n      push('var request = URLRequest(url: components.url!)');\n    }\n\n    push(`request.httpMethod = \"${method}\"`);\n    push(`request.timeoutInterval = ${opts.timeout}`);\n\n    if (Object.keys(allHeaders).length) {\n      push(`request.allHTTPHeaderFields = ${literalRepresentation(allHeaders, opts)}`);\n    }\n\n    if (hasBody) {\n      push('request.httpBody = postData');\n    }\n\n    blank();\n\n    push('let (data, _) = try await URLSession.shared.data(for: request)');\n    push('print(String(decoding: data, as: UTF8.self))');\n\n    return join();\n  },\n};\n","import type { Target } from '../index.js';\n\nimport { urlsession } from './urlsession/client.js';\n\nexport const swift: Target = {\n  info: {\n    key: 'swift',\n    title: 'Swift',\n    default: 'urlsession',\n  },\n  clientsById: {\n    urlsession,\n  },\n};\n","import type { CodeBuilderOptions } from '../helpers/code-builder.js';\nimport type { Request } from '../index.js';\nimport type { Merge } from 'type-fest';\n\nimport { c } from './c/target.js';\nimport { clojure } from './clojure/target.js';\nimport { csharp } from './csharp/target.js';\nimport { go } from './go/target.js';\nimport { http } from './http/target.js';\nimport { java } from './java/target.js';\nimport { javascript } from './javascript/target.js';\nimport { json } from './json/target.js';\nimport { kotlin } from './kotlin/target.js';\nimport { node } from './node/target.js';\nimport { objc } from './objc/target.js';\nimport { ocaml } from './ocaml/target.js';\nimport { php } from './php/target.js';\nimport { powershell } from './powershell/target.js';\nimport { python } from './python/target.js';\nimport { r } from './r/target.js';\nimport { ruby } from './ruby/target.js';\nimport { shell } from './shell/target.js';\nimport { swift } from './swift/target.js';\n\nexport type TargetId = keyof typeof targets;\n\nexport type ClientId = string;\n\nexport interface ClientInfo {\n  description: string;\n  extname: Extension;\n  installation?: string;\n  key: ClientId;\n  link: string;\n  title: string;\n}\n\nexport type Converter<T extends Record<string, any>> = (\n  request: Request,\n  options?: Merge<CodeBuilderOptions, T>,\n) => string;\n\nexport interface Client<T extends Record<string, any> = Record<string, any>> {\n  convert: Converter<T>;\n  info: ClientInfo;\n}\n\nexport interface ClientPlugin<T extends Record<string, any> = Record<string, any>> {\n  client: Client<T>;\n  target: TargetId;\n}\n\nexport type Extension = `.${string}` | null;\n\nexport interface TargetInfo {\n  cli?: string;\n  default: string;\n  key: TargetId;\n  title: string;\n}\n\nexport interface Target {\n  clientsById: Record<ClientId, Client>;\n  info: TargetInfo;\n}\n\nexport const targets = {\n  c,\n  clojure,\n  csharp,\n  go,\n  http,\n  java,\n  javascript,\n  json,\n  kotlin,\n  node,\n  objc,\n  ocaml,\n  php,\n  powershell,\n  python,\n  r,\n  ruby,\n  shell,\n  swift,\n};\n\nexport const isTarget = (target: Target): target is Target => {\n  if (typeof target !== 'object' || target === null || Array.isArray(target)) {\n    const got = target === null ? 'null' : Array.isArray(target) ? 'array' : typeof target;\n    throw new Error(`you tried to add a target which is not an object, got type: \"${got}\"`);\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(target, 'info')) {\n    throw new Error('targets must contain an `info` object');\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(target.info, 'key')) {\n    throw new Error('targets must have an `info` object with the property `key`');\n  }\n\n  if (!target.info.key) {\n    throw new Error('target key must be a unique string');\n  }\n\n  if (Object.prototype.hasOwnProperty.call(targets, target.info.key)) {\n    throw new Error(`a target already exists with this key, \\`${target.info.key}\\``);\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(target.info, 'title')) {\n    throw new Error('targets must have an `info` object with the property `title`');\n  }\n\n  if (!target.info.title) {\n    throw new Error('target title must be a non-zero-length string');\n  }\n\n  if (\n    !Object.prototype.hasOwnProperty.call(target, 'clientsById') ||\n    !target.clientsById ||\n    Object.keys(target.clientsById).length === 0\n  ) {\n    throw new Error(\n      `No clients provided in target ${target.info.key}.  You must provide the property \\`clientsById\\` containg your clients.`,\n    );\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(target.info, 'default')) {\n    throw new Error('targets must have an `info` object with the property `default`');\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(target.clientsById, target.info.default)) {\n    throw new Error(\n      `target ${target.info.key} is configured with a default client ${\n        target.info.default\n      }, but no such client was found in the property \\`clientsById\\` (found ${JSON.stringify(\n        Object.keys(target.clientsById),\n      )})`,\n    );\n  }\n\n  Object.values(target.clientsById).forEach(isClient);\n\n  return true;\n};\n\nexport const addTarget = (target: Target) => {\n  if (!isTarget(target)) {\n    return;\n  }\n  targets[target.info.key] = target;\n};\n\nexport const isClient = (client: Client): client is Client => {\n  if (!client) {\n    throw new Error('clients must be objects');\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(client, 'info')) {\n    throw new Error('targets client must contain an `info` object');\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(client.info, 'key')) {\n    throw new Error('targets client must have an `info` object with property `key`');\n  }\n\n  if (!client.info.key) {\n    throw new Error('client.info.key must contain an identifier unique to this target');\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(client.info, 'title')) {\n    throw new Error('targets client must have an `info` object with property `title`');\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(client.info, 'description')) {\n    throw new Error('targets client must have an `info` object with property `description`');\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(client.info, 'link')) {\n    throw new Error('targets client must have an `info` object with property `link`');\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(client.info, 'extname')) {\n    throw new Error('targets client must have an `info` object with the property `extname`');\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(client, 'convert') || typeof client.convert !== 'function') {\n    throw new Error('targets client must have a `convert` property containing a conversion function');\n  }\n\n  return true;\n};\n\nexport const addClientPlugin = (plugin: ClientPlugin) => {\n  addTargetClient(plugin.target, plugin.client);\n};\n\nexport const addTargetClient = (targetId: TargetId, client: Client) => {\n  if (!isClient(client)) {\n    return;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(targets, targetId)) {\n    throw new Error(`Sorry, but no ${targetId} target exists to add clients to`);\n  }\n\n  if (Object.prototype.hasOwnProperty.call(targets[targetId], client.info.key)) {\n    throw new Error(\n      `the target ${targetId} already has a client with the key ${client.info.key}, please use a different key`,\n    );\n  }\n\n  targets[targetId].clientsById[client.info.key] = client;\n};\n","import type { ClientId, ClientInfo, TargetId, TargetInfo } from '../targets/index.js';\n\nimport { targets } from '../targets/index.js';\n\nexport interface AvailableTarget extends TargetInfo {\n  clients: ClientInfo[];\n}\n\nexport const availableTargets = () =>\n  Object.keys(targets).map<AvailableTarget>(targetId => ({\n    ...targets[targetId as TargetId].info,\n    clients: Object.keys(targets[targetId as TargetId].clientsById).map(\n      clientId => targets[targetId as TargetId].clientsById[clientId].info,\n    ),\n  }));\n\nexport const extname = (targetId: TargetId, clientId: ClientId) => {\n  const target = targets[targetId];\n  if (!target) {\n    return '';\n  }\n\n  return target.clientsById[clientId]?.info.extname || '';\n};\n","import type { ReducedHelperObject } from './helpers/reducer.js';\nimport type { ClientId, TargetId } from './targets/index.js';\nimport type { Param, PostDataCommon, Request as NpmHarRequest } from 'har-format';\nimport type { UrlWithParsedQuery } from 'node:url';\n\nimport { format as urlFormat, parse as urlParse } from 'node:url';\n\nimport { stringify as queryStringify } from 'qs';\n\nimport { getHeaderName } from './helpers/headers.js';\nimport { reducer } from './helpers/reducer.js';\nimport { targets } from './targets/index.js';\n\nexport { availableTargets, extname } from './helpers/utils.js';\nexport { addTarget, addTargetClient, addClientPlugin } from './targets/index.js';\n\n/** is this wrong?  yes.  according to the spec (http://www.softwareishard.com/blog/har-12-spec/#postData) it's technically wrong since `params` and `text` are (by the spec) mutually exclusive.  However, in practice, this is not what is often the case.\n *\n * In general, this library takes a _descriptive_ rather than _perscriptive_ approach (see https://amyrey.web.unc.edu/classes/ling-101-online/tutorials/understanding-prescriptive-vs-descriptive-grammar/).\n *\n * Then, in addition to that, it really adds to complexity with TypeScript (TypeScript takes this constraint very very seriously) in a way that's not actually super useful.  So, we treat this object as though it could have both or either of `params` and/or `text`.\n */\ntype PostDataBase = PostDataCommon & {\n  params?: Param[];\n  text?: string;\n};\n\nexport type HarRequest = Omit<NpmHarRequest, 'postData'> & { postData: PostDataBase };\n\nexport interface RequestExtras {\n  allHeaders: ReducedHelperObject;\n  cookiesObj: ReducedHelperObject;\n  fullUrl: string;\n  headersObj: ReducedHelperObject;\n  postData: PostDataBase & {\n    boundary?: string;\n    jsonObj?: ReducedHelperObject;\n    paramsObj?: ReducedHelperObject;\n  };\n  queryObj: ReducedHelperObject;\n  uriObj: UrlWithParsedQuery;\n}\n\nexport type Request = HarRequest & RequestExtras;\n\ninterface Entry {\n  request: Partial<HarRequest>;\n}\n\ninterface HarEntry {\n  log: {\n    creator: {\n      name: string;\n      version: string;\n    };\n    entries: Entry[];\n    version: string;\n  };\n}\n\nexport interface HTTPSnippetOptions {\n  harIsAlreadyEncoded?: boolean;\n}\n\nconst isHarEntry = (value: any): value is HarEntry =>\n  typeof value === 'object' &&\n  'log' in value &&\n  typeof value.log === 'object' &&\n  'entries' in value.log &&\n  Array.isArray(value.log.entries);\n\nexport class HTTPSnippet {\n  initCalled = false;\n\n  entries: Entry[] = [];\n\n  requests: Request[] = [];\n\n  options: HTTPSnippetOptions = {};\n\n  constructor(input: HarEntry | HarRequest, opts: HTTPSnippetOptions = {}) {\n    this.options = {\n      harIsAlreadyEncoded: false,\n      ...opts,\n    };\n\n    // prep the main container\n    this.requests = [];\n\n    // is it har?\n    if (isHarEntry(input)) {\n      this.entries = input.log.entries;\n    } else {\n      this.entries = [\n        {\n          request: input,\n        },\n      ];\n    }\n  }\n\n  init() {\n    this.initCalled = true;\n\n    this.requests = this.entries.map(({ request }) => {\n      // add optional properties to make validation successful\n      const req = {\n        bodySize: 0,\n        headersSize: 0,\n        headers: [],\n        cookies: [],\n        httpVersion: 'HTTP/1.1',\n        queryString: [],\n        postData: {\n          mimeType: request.postData?.mimeType || 'application/octet-stream',\n        },\n        ...request,\n      };\n\n      // Per the HAR spec `mimeType` needs to always be present if we have a `postData` object.\n      if (req.postData && !req.postData.mimeType) {\n        req.postData.mimeType = 'application/octet-stream';\n      }\n\n      return this.prepare(req as HarRequest, this.options);\n    });\n\n    return this;\n  }\n\n  prepare(harRequest: HarRequest, options: HTTPSnippetOptions) {\n    const request: Request = {\n      ...harRequest,\n      fullUrl: '',\n      uriObj: {} as UrlWithParsedQuery,\n      queryObj: {},\n      headersObj: {},\n      cookiesObj: {},\n      allHeaders: {},\n    };\n\n    // construct query objects\n    if (request.queryString && request.queryString.length) {\n      request.queryObj = request.queryString.reduce(reducer, {});\n    }\n\n    // construct headers objects\n    if (request.headers && request.headers.length) {\n      const http2VersionRegex = /^HTTP\\/2/;\n      request.headersObj = request.headers.reduce((accumulator, { name, value }) => {\n        const headerName = http2VersionRegex.exec(request.httpVersion) ? name.toLocaleLowerCase() : name;\n        return {\n          ...accumulator,\n          [headerName]: value,\n        };\n      }, {});\n    }\n\n    // construct headers objects\n    if (request.cookies && request.cookies.length) {\n      request.cookiesObj = request.cookies.reduceRight(\n        (accumulator, { name, value }) => ({\n          ...accumulator,\n          [name]: value,\n        }),\n        {},\n      );\n    }\n\n    // construct Cookie header\n    const cookies = request.cookies?.map(({ name, value }) => {\n      if (options.harIsAlreadyEncoded) {\n        return `${name}=${value}`;\n      }\n\n      return `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;\n    });\n\n    if (cookies?.length) {\n      request.allHeaders.cookie = cookies.join('; ');\n    }\n\n    switch (request.postData.mimeType) {\n      case 'multipart/mixed':\n      case 'multipart/related':\n      case 'multipart/form-data':\n      case 'multipart/alternative':\n        // reset values\n        request.postData.text = '';\n        request.postData.mimeType = 'multipart/form-data';\n\n        if (request.postData?.params) {\n          const boundary = '---011000010111000001101001'; // this is binary for \"api\" (easter egg)\n          const carriage = `${boundary}--`;\n          const rn = '\\r\\n';\n\n          /*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n          const escape = (str: string) => str.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22');\n          const normalizeLinefeeds = (value: string) => value.replace(/\\r?\\n|\\r/g, '\\r\\n');\n\n          const payload = [`--${boundary}`];\n          request.postData?.params.forEach((param, i) => {\n            const name = param.name;\n            const value = param.value || '';\n            const filename = param.fileName || null;\n            const contentType = param.contentType || 'application/octet-stream';\n\n            if (filename) {\n              payload.push(\n                `Content-Disposition: form-data; name=\"${escape(normalizeLinefeeds(name))}\"; filename=\"${filename}\"`,\n              );\n              payload.push(`Content-Type: ${contentType}`);\n            } else {\n              payload.push(`Content-Disposition: form-data; name=\"${escape(normalizeLinefeeds(name))}\"`);\n            }\n\n            payload.push('');\n            payload.push(normalizeLinefeeds(value));\n\n            if (i !== (request.postData.params as Param[]).length - 1) {\n              payload.push(`--${boundary}`);\n            }\n          });\n\n          payload.push(`--${carriage}`);\n\n          request.postData.boundary = boundary;\n          request.postData.text = payload.join(rn);\n\n          // Since headers are case-sensitive we need to see if there's an existing `Content-Type` header that we can override.\n          const contentTypeHeader = getHeaderName(request.headersObj, 'content-type') || 'content-type';\n\n          request.headersObj[contentTypeHeader] = `multipart/form-data; boundary=${boundary}`;\n        }\n        break;\n\n      case 'application/x-www-form-urlencoded':\n        if (!request.postData.params) {\n          request.postData.text = '';\n        } else {\n          // @ts-expect-error the `har-format` types make this challenging\n          request.postData.paramsObj = request.postData.params.reduce(reducer, {});\n\n          // always overwrite\n          request.postData.text = queryStringify(request.postData.paramsObj);\n        }\n        break;\n\n      case 'text/json':\n      case 'text/x-json':\n      case 'application/json':\n      case 'application/x-json':\n        request.postData.mimeType = 'application/json';\n\n        if (request.postData.text) {\n          try {\n            request.postData.jsonObj = JSON.parse(request.postData.text);\n          } catch (e) {\n            // force back to `text/plain` if headers have proper content-type value, then this should also work\n            request.postData.mimeType = 'text/plain';\n          }\n        }\n        break;\n    }\n\n    // create allHeaders object\n    const allHeaders = {\n      ...request.allHeaders,\n      ...request.headersObj,\n    };\n\n    const urlWithParsedQuery = urlParse(request.url, true, true); //?\n\n    // query string key/value pairs in with literal querystrings containd within the url\n    request.queryObj = {\n      ...request.queryObj,\n      ...(urlWithParsedQuery.query as ReducedHelperObject),\n    }; //?\n\n    // reset uriObj values for a clean url\n    let search;\n    if (options.harIsAlreadyEncoded) {\n      search = queryStringify(request.queryObj, {\n        encode: false,\n        indices: false,\n      });\n    } else {\n      search = queryStringify(request.queryObj, {\n        indices: false,\n      });\n    }\n\n    const uriObj = {\n      ...urlWithParsedQuery,\n      query: request.queryObj,\n      search,\n      path: search ? `${urlWithParsedQuery.pathname}?${search}` : urlWithParsedQuery.pathname,\n    };\n\n    // keep the base url clean of queryString\n    const url = urlFormat({\n      ...urlWithParsedQuery,\n      query: null,\n      search: null,\n    }); //?\n\n    const fullUrl = urlFormat({\n      ...urlWithParsedQuery,\n      ...uriObj,\n    }); //?\n\n    return {\n      ...request,\n      allHeaders,\n      fullUrl,\n      url,\n      uriObj,\n    };\n  }\n\n  convert(targetId: TargetId, clientId?: ClientId, options?: any) {\n    if (!this.initCalled) {\n      this.init();\n    }\n\n    if (!options && clientId) {\n      options = clientId;\n    }\n\n    const target = targets[targetId];\n    if (!target) {\n      return false;\n    }\n\n    const { convert } = target.clientsById[clientId || target.info.default];\n    const results = this.requests.map(request => convert(request, options));\n    return results;\n  }\n}\n"]}