{"version":3,"sources":["../../src/client/post.ts"],"sourcesContent":["// Copyright © Endless\n// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { EndlessConfig } from \"../api/endlessConfig\";\nimport { endlessRequest } from \"./core\";\nimport { EndlessResponse } from \"./types\";\nimport { AnyNumber, ClientConfig, MimeType } from \"../types\";\nimport { EndlessApiType } from \"../utils/const\";\n\nexport type PostRequestOptions = {\n  /**\n   * The config for the API client\n   */\n  endlessConfig: EndlessConfig;\n  /**\n   * The type of API endpoint to call e.g. fullnode, indexer, etc\n   */\n  type: EndlessApiType;\n  /**\n   * The name of the API method\n   */\n  originMethod: string;\n  /**\n   * The URL path to the API method\n   */\n  path: string;\n  /**\n   * The content type of the request body\n   */\n  contentType?: MimeType;\n  /**\n   * The accepted content type of the response of the API\n   */\n  acceptType?: MimeType;\n  /**\n   * The query parameters for the request\n   */\n  params?: Record<string, string | AnyNumber | boolean | undefined>;\n  /**\n   * The body of the request, should match the content type of the request\n   */\n  body?: any;\n  /**\n   * Specific client overrides for this request to override endlessConfig\n   */\n  overrides?: ClientConfig;\n};\n\nexport type PostEndlessRequestOptions = Omit<PostRequestOptions, \"type\">;\n\n/**\n * Main function to do a Post request\n *\n * @param options PostRequestOptions\n * @returns\n */\nexport async function post<Req extends {}, Res extends {}>(\n  options: PostRequestOptions,\n): Promise<EndlessResponse<Req, Res>> {\n  const { type, originMethod, path, body, acceptType, contentType, params, endlessConfig, overrides } = options;\n  const url = endlessConfig.getRequestUrl(type);\n\n  return endlessRequest<Req, Res>(\n    {\n      url,\n      method: \"POST\",\n      originMethod,\n      path,\n      body,\n      contentType,\n      acceptType,\n      params,\n      overrides,\n    },\n    endlessConfig,\n    options.type,\n  );\n}\n\nexport async function postEndlessFullNode<Req extends {}, Res extends {}>(\n  options: PostEndlessRequestOptions,\n): Promise<EndlessResponse<Req, Res>> {\n  const { endlessConfig } = options;\n\n  return post<Req, Res>({\n    ...options,\n    type: EndlessApiType.FULLNODE,\n    overrides: {\n      ...endlessConfig.clientConfig,\n      ...endlessConfig.fullnodeConfig,\n      ...options.overrides,\n      HEADERS: { ...endlessConfig.clientConfig?.HEADERS, ...endlessConfig.fullnodeConfig?.HEADERS },\n    },\n  });\n}\n\nexport async function postEndlessIndexer<Req extends {}, Res extends {}>(\n  options: PostEndlessRequestOptions,\n): Promise<EndlessResponse<Req, Res>> {\n  const { endlessConfig } = options;\n\n  return post<Req, Res>({\n    ...options,\n    type: EndlessApiType.INDEXER,\n    overrides: {\n      ...endlessConfig.clientConfig,\n      ...endlessConfig.indexerConfig,\n      ...options.overrides,\n      HEADERS: { ...endlessConfig.clientConfig?.HEADERS, ...endlessConfig.indexerConfig?.HEADERS },\n    },\n  });\n}\n\nexport async function postEndlessFaucet<Req extends {}, Res extends {}>(\n  options: PostEndlessRequestOptions,\n): Promise<EndlessResponse<Req, Res>> {\n  const { endlessConfig } = options;\n  // Faucet does not support API_KEY\n  // Create a new object with the desired modification\n  const modifiedEndlessConfig = {\n    ...endlessConfig,\n    clientConfig: { ...endlessConfig.clientConfig },\n  };\n  // Delete API_KEY config\n  delete modifiedEndlessConfig?.clientConfig?.API_KEY;\n\n  return post<Req, Res>({\n    ...options,\n    type: EndlessApiType.FAUCET,\n    overrides: {\n      ...modifiedEndlessConfig.clientConfig,\n      ...options.overrides,\n      HEADERS: { ...modifiedEndlessConfig.clientConfig?.HEADERS },\n    },\n  });\n}\n\n/**\n * Makes a post request to the pepper service\n *\n * @param options GetEndlessRequestOptions\n * @returns EndlessResponse\n */\nexport async function postEndlessPepperService<Req extends {}, Res extends {}>(\n  options: PostEndlessRequestOptions,\n): Promise<EndlessResponse<Req, Res>> {\n  return post<Req, Res>({ ...options, type: EndlessApiType.PEPPER });\n}\n\nexport async function postEndlessProvingService<Req extends {}, Res extends {}>(\n  options: PostEndlessRequestOptions,\n): Promise<EndlessResponse<Req, Res>> {\n  return post<Req, Res>({ ...options, type: EndlessApiType.PROVER });\n}\n"],"mappings":"yCAyDA,eAAsBA,EACpBC,EACoC,CACpC,GAAM,CAAE,KAAAC,EAAM,aAAAC,EAAc,KAAAC,EAAM,KAAAC,EAAM,WAAAC,EAAY,YAAAC,EAAa,OAAAC,EAAQ,cAAAC,EAAe,UAAAC,CAAU,EAAIT,EAChGU,EAAMF,EAAc,cAAcP,CAAI,EAE5C,OAAOU,EACL,CACE,IAAAD,EACA,OAAQ,OACR,aAAAR,EACA,KAAAC,EACA,KAAAC,EACA,YAAAE,EACA,WAAAD,EACA,OAAAE,EACA,UAAAE,CACF,EACAD,EACAR,EAAQ,IACV,CACF,CAEA,eAAsBY,EACpBZ,EACoC,CACpC,GAAM,CAAE,cAAAQ,CAAc,EAAIR,EAE1B,OAAOD,EAAe,CACpB,GAAGC,EACH,gBACA,UAAW,CACT,GAAGQ,EAAc,aACjB,GAAGA,EAAc,eACjB,GAAGR,EAAQ,UACX,QAAS,CAAE,GAAGQ,EAAc,cAAc,QAAS,GAAGA,EAAc,gBAAgB,OAAQ,CAC9F,CACF,CAAC,CACH,CAEA,eAAsBK,EACpBb,EACoC,CACpC,GAAM,CAAE,cAAAQ,CAAc,EAAIR,EAE1B,OAAOD,EAAe,CACpB,GAAGC,EACH,eACA,UAAW,CACT,GAAGQ,EAAc,aACjB,GAAGA,EAAc,cACjB,GAAGR,EAAQ,UACX,QAAS,CAAE,GAAGQ,EAAc,cAAc,QAAS,GAAGA,EAAc,eAAe,OAAQ,CAC7F,CACF,CAAC,CACH,CAEA,eAAsBM,EACpBd,EACoC,CACpC,GAAM,CAAE,cAAAQ,CAAc,EAAIR,EAGpBe,EAAwB,CAC5B,GAAGP,EACH,aAAc,CAAE,GAAGA,EAAc,YAAa,CAChD,EAEA,cAAOO,GAAuB,cAAc,QAErChB,EAAe,CACpB,GAAGC,EACH,cACA,UAAW,CACT,GAAGe,EAAsB,aACzB,GAAGf,EAAQ,UACX,QAAS,CAAE,GAAGe,EAAsB,cAAc,OAAQ,CAC5D,CACF,CAAC,CACH,CAQA,eAAsBC,EACpBhB,EACoC,CACpC,OAAOD,EAAe,CAAE,GAAGC,EAAS,aAA4B,CAAC,CACnE,CAEA,eAAsBiB,EACpBjB,EACoC,CACpC,OAAOD,EAAe,CAAE,GAAGC,EAAS,aAA4B,CAAC,CACnE","names":["post","options","type","originMethod","path","body","acceptType","contentType","params","endlessConfig","overrides","url","endlessRequest","postEndlessFullNode","postEndlessIndexer","postEndlessFaucet","modifiedEndlessConfig","postEndlessPepperService","postEndlessProvingService"]}