{
  "version": 3,
  "sources": ["../index.ts"],
  "sourcesContent": ["/* eslint-disable n/no-unsupported-features/node-builtins */\n/**\n * @module @xmcl/modrinth\n */\n\nimport { Category, Collection, GameVersion, License, Loader, Project, ProjectVersion, TeamMember, User } from './types'\n\nexport * from './types'\n\n/* eslint-disable camelcase */\nexport interface SearchResultHit {\n  /**\n   * The slug of project, e.g. \"my_project\"\n   */\n  slug: string\n  /**\n   * The id of the project; prefixed with local-\n   */\n  project_id: string\n  /**\n   * The project type of the project.\n   * @enum \"mod\" \"modpack\"\n   * */\n  project_type: string\n  /**\n   * The username of the author of the project\n   */\n  author: string\n  /**\n   * The name of the project.\n   */\n  title: string\n  /**\n   * A short description of the project\n   */\n  description: string\n  /**\n   * A list of the categories the project is in.\n   */\n  categories: Array<string>\n  /**\n     * A list of the minecraft versions supported by the project.\n     */\n  versions: Array<string>\n  /**\n     * The total number of downloads for the project\n     */\n  downloads: number\n\n  follows: number\n  /**\n     * A link to the project's main page; */\n  page_url: string\n  /**\n     * The url of the project's icon */\n  icon_url: string\n  /**\n     * The url of the project's author */\n  author_url: string\n  /**\n     * The date that the project was originally created\n     */\n  date_created: string\n  /**\n     * The date that the project was last modified\n     */\n  date_modified: string\n  /**\n     * The latest version of minecraft that this project supports */\n  latest_version: string\n  /**\n     * The id of the license this project follows */\n  license: string\n  /**\n     * The side type id that this project is on the client */\n  client_side: string\n  /**\n     * The side type id that this project is on the server */\n  server_side: string\n  /**\n     * The host that this project is from, always modrinth */\n  host: string\n\n  gallery: string[]\n\n  featured_gallery: string\n\n  monetization_status: string\n}\n\nexport interface SearchProjectOptions {\n  /**\n     * The query to search\n     */\n  query?: string\n  /**\n     * The recommended way of filtering search results. [Learn more about using facets](https://docs.modrinth.com/docs/tutorials/search).\n     *\n     * @enum \"categories\" \"versions\" \"license\" \"project_type\"\n     * @example [[\"categories:forge\"],[\"versions:1.17.1\"],[\"project_type:mod\"]]\n     */\n  facets?: string\n  /**\n     * A list of filters relating to the properties of a project. Use filters when there isn't an available facet for your needs. [More information](https://docs.meilisearch.com/reference/features/filtering.html)\n     *\n     * @example filter=categories=\"fabric\" AND (categories=\"technology\" OR categories=\"utility\")\n     */\n  filter?: string\n  /**\n     * What the results are sorted by\n     *\n     * @enum \"relevance\" \"downloads\" \"follows\" \"newest\" \"updated\"\n     * @example \"downloads\"\n     * @default relevance\n     */\n  index?: string\n  /**\n     * The offset into the search; skips this number of results\n     * @default 0\n     */\n  offset?: number\n  /**\n     * The number of mods returned by the search\n     * @default 10\n     */\n  limit?: number\n}\n\nexport interface SearchResult {\n  /**\n     * The list of results\n     */\n  hits: Array<SearchResultHit>\n  /**\n     * The number of results that were skipped by the query\n     */\n  offset: number\n  /**\n     * The number of mods returned by the query\n     */\n  limit: number\n  /**\n     * The total number of mods that the query found\n     */\n  total_hits: number\n}\n\nexport interface GetProjectVersionsOptions {\n  id: string\n  loaders?: Array<string>\n  /**\n     * Minecraft version filtering\n     */\n  game_versions?: Array<string>\n  featured?: boolean\n}\n\nexport class ModerinthApiError extends Error {\n  constructor(readonly url: string, readonly status: number, readonly body: string) {\n    super(`Fail to fetch modrinth api ${url}. Status=${status}. ${body}`)\n    this.name = 'ModerinthApiError'\n  }\n}\n\nexport interface ModrinthClientOptions {\n  baseUrl?: string\n  /**\n   * The extra headers\n   */\n  headers?: Record<string, string>\n  /**\n   * The fetch function to use\n   */\n  fetch?: typeof fetch\n}\n\n/**\n * @see https://docs.modrinth.com/api-spec\n */\nexport class ModrinthV2Client {\n  private baseUrl: string\n  private fetch: typeof fetch\n  headers: Record<string, string>\n\n  constructor(options?: ModrinthClientOptions) {\n    this.baseUrl = options?.baseUrl ?? 'https://api.modrinth.com'\n    this.headers = options?.headers || {}\n    this.fetch = options?.fetch || ((...args) => fetch(...args))\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/projects/operation/searchProjects\n   */\n  async searchProjects(options: SearchProjectOptions, signal?: AbortSignal): Promise<SearchResult> {\n    const url = new URL(this.baseUrl + '/v2/search')\n    url.searchParams.append('query', options.query || '')\n    url.searchParams.append('filter', options.filter || '')\n    url.searchParams.append('index', options.index || (options.query ? 'relevance' : 'downloads'))\n    url.searchParams.append('offset', options.offset?.toString() ?? '0')\n    url.searchParams.append('limit', options.limit?.toString() ?? '10')\n    if (options.facets) { url.searchParams.append('facets', options.facets) }\n    const response = await this.fetch(url, {\n      signal,\n      headers: this.headers,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as SearchResult\n    return result\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/projects/operation/getProject\n   */\n  async getProject(projectId: string, signal?: AbortSignal): Promise<Project> {\n    if (projectId.startsWith('local-')) { projectId = projectId.slice('local-'.length) }\n    const url = new URL(this.baseUrl + `/v2/project/${projectId}`)\n    const response = await this.fetch(url, {\n      signal,\n      headers: this.headers,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const project = await response.json() as Project\n    return project\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/projects/operation/getProject\n   */\n  async getProjects(projectIds: string[], signal?: AbortSignal): Promise<Project[]> {\n    const url = new URL(this.baseUrl + '/v2/projects')\n    url.searchParams.append('ids', JSON.stringify(projectIds))\n    const response = await this.fetch(url, {\n      signal,\n      headers: this.headers,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const project = await response.json() as Project[]\n    return project\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/versions/operation/getProjectVersions\n   */\n  async getProjectVersions(projectId: string, { loaders, gameVersions, featured }: { loaders?: string[]; gameVersions?: string[]; featured?: boolean } = {}, signal?: AbortSignal): Promise<ProjectVersion[]> {\n    const url = new URL(this.baseUrl + `/v2/project/${projectId}/version`)\n    if (loaders) { url.searchParams.append('loaders', JSON.stringify(loaders)) }\n    if (gameVersions) { url.searchParams.append('game_versions', JSON.stringify(gameVersions)) }\n    if (featured !== undefined) { url.searchParams.append('featured', featured ? 'true' : 'false') }\n    const response = await this.fetch(url, {\n      signal,\n      headers: this.headers,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const versions = await response.json() as ProjectVersion[]\n    return versions\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/versions/operation/getVersion\n   */\n  async getProjectVersion(versionId: string, signal?: AbortSignal): Promise<ProjectVersion> {\n    const url = new URL(this.baseUrl + `/v2/version/${versionId}`)\n    const response = await this.fetch(url, {\n      signal,\n      headers: this.headers,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const version = await response.json() as ProjectVersion\n    return version\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/versions/operation/getVersions\n   */\n  async getProjectVersionsById(ids: string[], signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + '/v2/versions')\n    url.searchParams.append('ids', JSON.stringify(ids))\n    const response = await this.fetch(url, {\n      signal,\n      headers: this.headers,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const versions = await response.json() as ProjectVersion[]\n    return versions\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/version-files/operation/versionsFromHashes\n   */\n  async getProjectVersionsByHash(hashes: string[], algorithm = 'sha1', signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + '/v2/version_files')\n    const response = await this.fetch(url, {\n      method: 'POST',\n      body: JSON.stringify({\n        hashes,\n        algorithm,\n      }),\n      headers: {\n        ...this.headers,\n        'content-type': 'application/json',\n      },\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const versions = await response.json() as Record<string, ProjectVersion>\n    return versions\n  }\n\n  /**\n   * @see https://docs.modrinth.com/api-spec#tag/version-files/operation/getLatestVersionsFromHashes\n   */\n  async getLatestVersionsFromHashes(hashes: string[], { algorithm, loaders = [], gameVersions = [] }: { algorithm?: string; loaders?: string[]; gameVersions?: string[] } = {}, signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + '/v2/version_files/update')\n    const response = await this.fetch(url, {\n      method: 'POST',\n      body: JSON.stringify({\n        hashes,\n        algorithm,\n        loaders,\n        game_versions: gameVersions,\n      }),\n      headers: { ...this.headers, 'content-type': 'application/json' },\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const versions = await response.json() as Record<string, ProjectVersion>\n    return versions\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/version-files/operation/getLatestVersionFromHash\n   */\n  async getLatestProjectVersion(sha1: string, { algorithm, loaders = [], gameVersions = [] }: { algorithm?: string; loaders?: string[]; gameVersions?: string[] } = {}, signal?: AbortSignal): Promise<ProjectVersion> {\n    const url = new URL(this.baseUrl + `/v2/version_file/${sha1}/update`)\n    url.searchParams.append('algorithm', algorithm ?? 'sha1')\n    const response = await this.fetch(url, {\n      method: 'POST',\n      body: JSON.stringify({\n        loaders,\n        game_versions: gameVersions,\n      }),\n      headers: { ...this.headers, 'content-type': 'application/json' },\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const version = await response.json() as ProjectVersion\n    return version\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/tags/operation/licenseList\n   */\n  async getLicenseTags(signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + '/v2/tag/license')\n    const response = await this.fetch(url, {\n      headers: this.headers,\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as License[]\n    return result\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/tags/operation/categoryList\n   */\n  async getCategoryTags(signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + '/v2/tag/category')\n    const response = await this.fetch(url, {\n      headers: this.headers,\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as Category[]\n    return result\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/tags/operation/versionList\n   */\n  async getGameVersionTags(signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + '/v2/tag/game_version')\n    const response = await this.fetch(url, {\n      headers: this.headers,\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as GameVersion[]\n    return result\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/tags/operation/loaderList\n   */\n  async getLoaderTags(signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + '/v2/tag/loader')\n    const response = await this.fetch(url, {\n      headers: this.headers,\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as Loader[]\n    return result\n  }\n\n  async getCollections(userId: string, signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + `/v3/user/${userId}/collections`)\n    const response = await this.fetch(url, {\n      headers: this.headers,\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as Collection[]\n    return result\n  }\n\n  async uppdateCollectionIcon(collectionId: string, iconData: ArrayBuffer, mimeType: string, signal?: AbortSignal) {\n    const ext = mimeType.split('/')[1]\n    const url = new URL(this.baseUrl + `/v3/collection/${collectionId}/icon?ext=${ext}`)\n    const response = await this.fetch(url, {\n      method: 'PATCH',\n      headers: {\n        ...this.headers,\n        'content-type': mimeType,\n      },\n      body: iconData,\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n  }\n\n  async createCollection(name: string, description: string, projectIds: string[], signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + '/v3/collection')\n    const body = JSON.stringify({\n      name,\n      description,\n      projects: projectIds,\n    }, (key, value) => !value ? undefined : value)\n    const response = await this.fetch(url, {\n      method: 'POST',\n      headers: {\n        ...this.headers,\n        'content-type': 'application/json',\n      },\n      body,\n      signal,\n    })\n    if (!response.ok) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as Collection\n    return result\n  }\n\n  async updateCollection(collectionId: string, projectIds: string[], signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + `/v3/collection/${collectionId}`)\n    const response = await this.fetch(url, {\n      method: 'PATCH',\n      headers: {\n        ...this.headers,\n        'content-type': 'application/json',\n      },\n      body: JSON.stringify({ new_projects: projectIds }),\n      signal,\n    })\n    if (!response.ok) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n  }\n\n  async getAuthenticatedUser(signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + '/v2/user')\n    const response = await this.fetch(url, {\n      headers: this.headers,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as User\n    return result\n  }\n\n  /**\n   * @see https://docs.modrinth.com/api/operations/followproject/#_top\n   */\n  async followProject(id: string, signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + `/v2/project/${id}/follow`)\n    const response = await this.fetch(url, {\n      method: 'POST',\n      headers: this.headers,\n      signal,\n    })\n    if (!response.ok) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n  }\n\n  /**\n   * @see https://docs.modrinth.com/api/operations/unfollowproject/\n   */\n  async unfollowProject(id: string, signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + `/v2/project/${id}/follow`)\n    const response = await this.fetch(url, {\n      method: 'DELETE',\n      headers: this.headers,\n      signal,\n    })\n    if (!response.ok) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n  }\n\n  /**\n   * @see https://docs.modrinth.com/api/operations/getfollowedprojects/#_top\n   */\n  async getUserFollowedProjects(userId: string, signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + `/v2/user/${userId}/follows`)\n    const response = await this.fetch(url, {\n      headers: this.headers,\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as Project[]\n    return result\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/teams/operation/getProjectTeamMembers\n   */\n  async getProjectTeamMembers(projectId: string, signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + `/v2/project/${projectId}/members`)\n    const response = await this.fetch(url, {\n      headers: this.headers,\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as TeamMember[]\n    return result\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/users/operation/getUser\n   */\n  async getUser(id: string, signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + `/v2/user/${id}`)\n    const response = await this.fetch(url, {\n      headers: this.headers,\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as User\n    return result\n  }\n\n  /**\n   * @see https://docs.modrinth.com/#tag/users/operation/getUserProjects\n   */\n  async getUserProjects(id: string, signal?: AbortSignal) {\n    const url = new URL(this.baseUrl + `/v2/user/${id}/projects`)\n    const response = await this.fetch(url, {\n      headers: this.headers,\n      signal,\n    })\n    if (response.status !== 200) {\n      throw new ModerinthApiError(url.toString(), response.status, await response.text())\n    }\n    const result = await response.json() as Project[]\n    return result\n  }\n}\n"],
  "mappings": "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",
  "names": []
}
