{"version":3,"sources":["jsdelivr-header.js","/npm/google-books-js@1.0.2/dist/src/api.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,kGCFA,MAAa,eACH,SAAW,8CAEZ,YAAM,CAAO,GAClB,MAAM,QAAiB,MACrB,GAAG,KAAK,cAAc,KAAK,iCACzB,EAAO,YAIX,aAAc,EAAS,MACzB,CAEQ,gCAAA,CACN,GAEA,MAAM,EAA0C,CAC9C,MAAO,UACP,OAAQ,WACR,UAAW,cACX,QAAS,UACT,KAAM,QAER,OAAO,OAAO,KAAK,GAChB,QAAQ,GAAU,EAAQ,KAC1B,KACE,GACC,GAAG,EAAa,MACd,EAAQ,OAGb,KAAK,IACV,CAEO,eAAM,CAAU,GACrB,MAAM,QAAiB,MAAM,GAAG,KAAK,YAAY,KAC3C,QAAc,EAAS,OAE7B,GAAK,EAAwB,MAC3B,MAAM,MAAM,oBAEd,OAAO,CACT,EA1CF,QAAA","file":"/npm/google-books-js@1.0.2/dist/api.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/google-books-js@1.0.2/dist/api.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { GetVolumeError } from \"./interfaces/errors\";\nimport { SearchParams, SearchResult } from \"./interfaces/search\";\nimport { Volume } from \"./types/volume\";\n\nexport class GoogleBooksAPI {\n  private BASE_URL = \"https://www.googleapis.com/books/v1/volumes\";\n\n  public async search(params: SearchParams): Promise<SearchResult> {\n    const response = await fetch(\n      `${this.BASE_URL}?q=${this.formatSearchFiltersToQueryString(\n        params.filters\n      )}`\n    );\n\n    return (await response.json()) as SearchResult;\n  }\n\n  private formatSearchFiltersToQueryString(\n    filters: SearchParams[\"filters\"]\n  ): string {\n    const mappedFields: { [key: string]: string } = {\n      title: \"intitle\",\n      author: \"inauthor\",\n      publisher: \"inpublisher\",\n      subject: \"subject\",\n      isbn: \"isbn\",\n    };\n    return Object.keys(filters)\n      .filter((param) => filters[param as keyof SearchParams[\"filters\"]])\n      .map(\n        (param) =>\n          `${mappedFields[param]}:${\n            filters[param as keyof SearchParams[\"filters\"]] as string\n          }`\n      )\n      .join(\"&\");\n  }\n\n  public async getVolume(volumeId: string): Promise<Volume> {\n    const response = await fetch(`${this.BASE_URL}/${volumeId}`);\n    const data = (await response.json()) as Volume | GetVolumeError;\n\n    if ((data as GetVolumeError).error) {\n      throw Error(\"Volume not found\");\n    }\n    return data as Volume;\n  }\n}\n"]}