{"version":3,"sources":["../src/node/node.ts"],"names":[],"mappings":";;;;AAoBO,IAAM,YAAN,MAAgB;AAAA,EACZ,GAAA;AAAA,EACA,OAAkB,EAAC;AAAA,EAE5B,WAAA,CAAY,KAAa,OAA4B,EAAA;AACnD,IAAA,IAAA,CAAK,GAAM,GAAA,GAAA;AAEX,IAAA,IAAI,mCAAS,IAAM,EAAA;AACjB,MAAA,IAAA,CAAK,OAAO,OAAQ,CAAA,IAAA;AAAA;AACtB;AACF;AAAA;AAAA;AAAA,EAKA,OAAQ,CAAA,MAAA,EAAgB,KAAkB,GAAA,EAAgC,EAAA;AACxE,IAAM,MAAA,MAAA,GAAS,IAAI,eAAgB,EAAA;AAEnC,IAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,MAAO,MAAA,CAAA,MAAA,CAAO,SAAS,IAAI,CAAA;AAAA;AAG7B,IAAM,MAAA,GAAA,GACJ,IAAK,CAAA,GAAA,GAAM,GAAI,CAAA,MAAA,CAAO,SAAS,CAAY,SAAA,EAAA,MAAM,CAAM,CAAA,CAAA,GAAA,MAAA,CAAO,QAAS,EAAA;AAEzE,IAAO,OAAA,KAAA,CAAM,SAAS,GAAK,EAAA;AAAA,MACzB,MAAQ,EAAA,KAAA;AAAA,MACR,OAAS,EAAA,gBAAA,CAAiB,KAAM,CAAA,IAAA,CAAK,IAAI;AAAA,KAC1C,CAAA;AAAA;AACH;AAAA;AAAA;AAAA,EAKA,MAAM,GACJ,CAAA,IAAA,GAA4B,MACuB,EAAA;AACnD,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,GAAM,GAAA,GAAA,CAAI,OAAO,MAAS,GAAA,MAAA;AAE3C,IAAA,IAAI,SAAS,MAAQ,EAAA;AACnB,MAAO,OAAA,KAAA,CAAM,SAA+B,GAAK,EAAA;AAAA,QAC/C,MAAQ,EAAA,KAAA;AAAA,QACR,OAAS,EAAA;AAAA,UACP,GAAG,gBAAA,CAAiB,KAAM,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA,UACnC,cAAgB,EAAA;AAAA;AAClB,OACD,CAAA;AAAA;AAGH,IAAO,OAAA,KAAA,CAAM,SAAS,GAAK,EAAA;AAAA,MACzB,MAAQ,EAAA,KAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACP,GAAG,gBAAA,CAAiB,KAAM,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA,QACnC,cAAgB,EAAA;AAAA;AAClB,KACD,CAAA;AAAA;AACH;AAAA;AAAA;AAAA,EAKA,MAAA,CACE,OAA+B,MAC0B,EAAA;AACzD,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,GAAM,GAAA,GAAA,CAAI,OAAO,MAAS,GAAA,cAAA;AAE3C,IAAA,IAAI,SAAS,MAAQ,EAAA;AACnB,MAAO,OAAA,KAAA,CAAM,SAAkC,GAAK,EAAA;AAAA,QAClD,MAAQ,EAAA,KAAA;AAAA,QACR,OAAS,EAAA;AAAA,UACP,GAAG,gBAAA,CAAiB,KAAM,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA,UACnC,cAAgB,EAAA;AAAA;AAClB,OACD,CAAA;AAAA;AAGH,IAAO,OAAA,KAAA,CAAM,SAAS,GAAK,EAAA;AAAA,MACzB,MAAQ,EAAA,KAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACP,GAAG,gBAAA,CAAiB,KAAM,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA,QACnC,cAAgB,EAAA;AAAA;AAClB,KACD,CAAA;AAAA;AAEL","file":"chunk-HPUHQWSZ.mjs","sourcesContent":["import { Api } from \"../api/config\";\nimport {\n  Fetch,\n  FetchAuthBuilder,\n  type FetchAuth,\n} from \"../fetch-safe/fetch-safe\";\nimport type { SafeValue } from \"../values/values\";\nimport type {\n  CodexPeerId,\n  CodexPeerIdContentType,\n  CodexPeerIdJsonResponse,\n  CodexSpr,\n  CodexSprContentType,\n  CodexSprJsonResponse,\n} from \"./types\";\n\ntype CodexNodeOptions = {\n  auth?: FetchAuth;\n};\n\nexport class CodexNode {\n  readonly url: string;\n  readonly auth: FetchAuth = {};\n\n  constructor(url: string, options?: CodexNodeOptions) {\n    this.url = url;\n\n    if (options?.auth) {\n      this.auth = options.auth;\n    }\n  }\n\n  /**\n   * Connect to a peer\n   */\n  connect(peerId: string, addrs: string[] = []): Promise<SafeValue<string>> {\n    const params = new URLSearchParams();\n\n    for (const addr of addrs) {\n      params.append(\"addrs\", addr);\n    }\n\n    const url =\n      this.url + Api.config.prefix + `/connect/${peerId}?` + params.toString();\n\n    return Fetch.safeText(url, {\n      method: \"GET\",\n      headers: FetchAuthBuilder.build(this.auth),\n    });\n  }\n\n  /**\n   * Get Node's SPR\n   */\n  async spr(\n    type: CodexSprContentType = \"json\"\n  ): Promise<SafeValue<CodexSpr<CodexSprContentType>>> {\n    const url = this.url + Api.config.prefix + \"/spr\";\n\n    if (type === \"json\") {\n      return Fetch.safeJson<CodexSprJsonResponse>(url, {\n        method: \"GET\",\n        headers: {\n          ...FetchAuthBuilder.build(this.auth),\n          \"Content-Type\": \"application/json\",\n        },\n      });\n    }\n\n    return Fetch.safeText(url, {\n      method: \"GET\",\n      headers: {\n        ...FetchAuthBuilder.build(this.auth),\n        \"Content-Type\": \"text/plain\",\n      },\n    });\n  }\n\n  /**\n   * Get Node's PeerID\n   */\n  peerId(\n    type: CodexPeerIdContentType = \"json\"\n  ): Promise<SafeValue<CodexPeerId<CodexPeerIdContentType>>> {\n    const url = this.url + Api.config.prefix + \"/node/peerid\";\n\n    if (type === \"json\") {\n      return Fetch.safeJson<CodexPeerIdJsonResponse>(url, {\n        method: \"GET\",\n        headers: {\n          ...FetchAuthBuilder.build(this.auth),\n          \"Content-Type\": \"application/json\",\n        },\n      });\n    }\n\n    return Fetch.safeText(url, {\n      method: \"GET\",\n      headers: {\n        ...FetchAuthBuilder.build(this.auth),\n        \"Content-Type\": \"text/plain\",\n      },\n    });\n  }\n}\n"]}