@prose-reader/metadata-fetcher 1.354.0 → 1.356.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -584,34 +584,34 @@ var c = (e) => {
584
584
  identifiers: w,
585
585
  cover: D
586
586
  });
587
- }, Qe = (e) => G(e.volumeInfo?.canonicalVolumeLink) ?? G(e.volumeInfo?.infoLink) ?? (e.id === void 0 ? void 0 : `https://books.google.com/books?id=${encodeURIComponent(e.id)}`), $e = 40, et = 3, tt = 1e3, nt = 3e3, rt = /* @__PURE__ */ new Set([
587
+ }, Qe = (e) => G(e.volumeInfo?.canonicalVolumeLink) ?? G(e.volumeInfo?.infoLink) ?? (e.id === void 0 ? void 0 : `https://books.google.com/books?id=${encodeURIComponent(e.id)}`), $e = 40, et = 1, tt = 4, nt = 3, rt = 1e3, it = 3e3, at = /* @__PURE__ */ new Set([
588
588
  500,
589
589
  502,
590
590
  503,
591
591
  504
592
- ]), it = (e) => `"${e.replace(/["\\]+/g, " ").replace(/\s+/g, " ").trim()}"`, at = (e) => {
593
- let t = e.title?.trim();
594
- if (t === void 0 || t.length === 0) return;
595
- let n = e.authors?.find((e) => e.trim().length > 0)?.trim();
592
+ ]), ot = /["\\]+/g, st = /:/g, ct = /(^|\s)-+/g, lt = /\s+/g, ut = (e) => e.replace(ot, " ").replace(st, " ").replace(ct, " ").replace(lt, " ").trim(), dt = (e) => e.length > 0, ft = (e) => {
593
+ let t = ut(e.title ?? "");
594
+ if (t.length === 0) return;
595
+ let n = e.authors?.map(ut).find(dt);
596
596
  return {
597
597
  title: t,
598
598
  ...n === void 0 ? {} : { author: n }
599
599
  };
600
- }, ot = (e) => {
600
+ }, pt = (e) => {
601
601
  let t = U(e);
602
602
  return t === void 0 ? void 0 : {
603
603
  volume: t,
604
604
  raw: e
605
605
  };
606
- }, st = (e) => F(e) ? z(e, "items").flatMap((e) => {
607
- let t = ot(e);
606
+ }, mt = (e) => F(e) ? z(e, "items").flatMap((e) => {
607
+ let t = pt(e);
608
608
  return t === void 0 ? [] : [t];
609
609
  }) : [], K = (e, t = {}) => e.map(({ volume: e, raw: n }) => ({
610
610
  metadata: Ze(e, t),
611
611
  id: e.id,
612
612
  url: Qe(e),
613
613
  raw: n
614
- })), ct = (e) => {
614
+ })), ht = (e) => {
615
615
  let t = `${e.baseUrl.replace(/\/+$/, "")}/volumes`, r = async (t, n, r = !1) => (t.searchParams.set("key", e.apiKey), je(async () => {
616
616
  let i = await e.fetch(t.toString(), {
617
617
  signal: n.signal,
@@ -622,26 +622,27 @@ var c = (e) => {
622
622
  return i;
623
623
  }
624
624
  }, {
625
- attempts: et,
626
- initialDelayMs: tt,
627
- maxDelayMs: nt,
625
+ attempts: nt,
626
+ initialDelayMs: rt,
627
+ maxDelayMs: it,
628
628
  signal: n.signal,
629
629
  shouldRetry: (e) => {
630
630
  let t = N(e);
631
- return t === void 0 || rt.has(t);
631
+ return t === void 0 || at.has(t);
632
632
  }
633
633
  })), i = async (e, n) => {
634
634
  let i = await r(new URL(`${t}/${encodeURIComponent(e)}`), n, !0);
635
635
  if (i === void 0) return;
636
- let a = ot(await i.json());
636
+ let a = pt(await i.json());
637
637
  if (a?.volume.id !== e) throw Error(`Google Books response did not contain the requested volume ${e}`);
638
638
  return a;
639
- }, a = async (e, n) => {
640
- if (n.limit <= 0) return [];
641
- let i = new URL(t);
642
- i.searchParams.set("q", e), i.searchParams.set("maxResults", String(Math.min(Math.ceil(n.limit), $e))), i.searchParams.set("orderBy", "relevance"), i.searchParams.set("printType", "books");
643
- let a = await r(i, n);
644
- return a === void 0 ? [] : st(await a.json());
639
+ }, a = async (e, n, i) => {
640
+ let a = Math.min(Math.ceil(n.limit * i), $e);
641
+ if (a <= 0) return [];
642
+ let o = new URL(t);
643
+ o.searchParams.set("q", e), o.searchParams.set("maxResults", String(a)), o.searchParams.set("orderBy", "relevance"), o.searchParams.set("printType", "books");
644
+ let s = await r(o, n);
645
+ return s === void 0 ? [] : mt(await s.json());
645
646
  };
646
647
  return async (e, t) => {
647
648
  let r = Fe(e);
@@ -651,50 +652,50 @@ var c = (e) => {
651
652
  }
652
653
  let o = n(e.identifiers);
653
654
  if (o !== void 0) {
654
- let e = await a(`isbn:${o}`, t);
655
+ let e = await a(`isbn:${o}`, t, et);
655
656
  if (e.length > 0) return K(e, { matchedIsbn: o });
656
657
  }
657
- let s = at(e);
658
+ let s = ft(e);
658
659
  if (s === void 0) return [];
659
- let c = `intitle:${it(s.title)}`, l = s.author === void 0 ? c : `${c} inauthor:${it(s.author)}`, u = await a(l, t);
660
- return u.length > 0 || s.author === void 0 ? K(u) : K(await a(c, t));
660
+ let c = `intitle:${s.title}`, l = s.author === void 0 ? c : `${c} inauthor:${s.author}`, u = await a(l, t, tt);
661
+ return u.length > 0 || s.author === void 0 ? K(u) : K(await a(c, t, tt));
661
662
  };
662
- }, lt = "googleBooks", ut = "https://www.googleapis.com/books/v1", dt = (e) => {
663
+ }, gt = "googleBooks", _t = "https://www.googleapis.com/books/v1", vt = (e) => {
663
664
  let t = e.apiKey.trim();
664
665
  if (t.length === 0) throw Error("createGoogleBooksProvider requires a non-empty apiKey");
665
666
  return {
666
- id: lt,
667
+ id: gt,
667
668
  name: "Google Books",
668
- search: ct({
669
+ search: ht({
669
670
  apiKey: t,
670
- baseUrl: e.baseUrl ?? ut,
671
+ baseUrl: e.baseUrl ?? _t,
671
672
  fetch: e.fetch ?? globalThis.fetch
672
673
  })
673
674
  };
674
- }, ft = "ProjectGutenberg", pt = /* @__PURE__ */ new Set(["gutenberg.org", "www.gutenberg.org"]), mt = [
675
+ }, yt = "ProjectGutenberg", bt = /* @__PURE__ */ new Set(["gutenberg.org", "www.gutenberg.org"]), xt = [
675
676
  /^\/ebooks\/(\d+)(?:[./]|$)/i,
676
677
  /^\/files\/(\d+)(?:\/|$)/i,
677
678
  /^\/cache\/epub\/(\d+)(?:\/|$)/i,
678
679
  /^\/(\d+)(?:\/|$)/
679
- ], ht = (e) => {
680
+ ], St = (e) => {
680
681
  let t = e.trim();
681
682
  if (!/^\d+$/.test(t)) return;
682
683
  let n = t.replace(/^0+(?=\d)/, "");
683
684
  return n === "0" ? void 0 : n;
684
- }, gt = (e) => {
685
+ }, Ct = (e) => {
685
686
  try {
686
687
  let t = new URL(e.trim());
687
- if (t.protocol !== "http:" && t.protocol !== "https:" || !pt.has(t.hostname.toLowerCase())) return;
688
- for (let e of mt) {
688
+ if (t.protocol !== "http:" && t.protocol !== "https:" || !bt.has(t.hostname.toLowerCase())) return;
689
+ for (let e of xt) {
689
690
  let n = e.exec(t.pathname)?.[1];
690
- if (n !== void 0) return ht(n);
691
+ if (n !== void 0) return St(n);
691
692
  }
692
693
  } catch {
693
694
  return;
694
695
  }
695
- }, _t = (e) => {
696
+ }, wt = (e) => {
696
697
  for (let t of e.identifiers ?? []) {
697
- let e = t.scheme.trim().toLowerCase(), n = e === "projectgutenberg" ? ht(t.value) : e === "unknown" || e === "url" || e === "uri" ? gt(t.value) : void 0;
698
+ let e = t.scheme.trim().toLowerCase(), n = e === "projectgutenberg" ? St(t.value) : e === "unknown" || e === "url" || e === "uri" ? Ct(t.value) : void 0;
698
699
  if (n !== void 0) return {
699
700
  id: n,
700
701
  identifier: {
@@ -703,7 +704,7 @@ var c = (e) => {
703
704
  }
704
705
  };
705
706
  }
706
- }, vt = (e) => ({
707
+ }, Tt = (e) => ({
707
708
  key: I(e, "key"),
708
709
  title: I(e, "title"),
709
710
  subtitle: I(e, "subtitle"),
@@ -716,7 +717,7 @@ var c = (e) => {
716
717
  ratings_count: L(e, "ratings_count"),
717
718
  cover_i: L(e, "cover_i"),
718
719
  id_project_gutenberg: R(e, "id_project_gutenberg")
719
- }), yt = (e) => F(e) ? z(e, "docs").map(vt) : [], bt = {
720
+ }), Et = (e) => F(e) ? z(e, "docs").map(Tt) : [], Dt = {
720
721
  afr: "af",
721
722
  alb: "sq",
722
723
  amh: "am",
@@ -821,19 +822,19 @@ var c = (e) => {
821
822
  wel: "cy",
822
823
  yid: "yi",
823
824
  zho: "zh"
824
- }, xt = /* @__PURE__ */ new Set([
825
+ }, Ot = /* @__PURE__ */ new Set([
825
826
  "mul",
826
827
  "und",
827
828
  "zxx",
828
829
  "sgn"
829
- ]), St = (e) => {
830
+ ]), kt = (e) => {
830
831
  let t = e.trim().toLowerCase();
831
- if (t.length !== 0 && !xt.has(t)) return bt[t] ?? t;
832
- }, Ct = 25, wt = "OpenLibrary", Tt = "ProjectGutenberg", q = (e) => e.length > 0 ? e : void 0, Et = (e, t) => {
832
+ if (t.length !== 0 && !Ot.has(t)) return Dt[t] ?? t;
833
+ }, At = 25, jt = "OpenLibrary", Mt = "ProjectGutenberg", q = (e) => e.length > 0 ? e : void 0, Nt = (e, t) => {
833
834
  let { title: n, subtitle: r, language: i, key: a, author_name: o, first_publish_year: s, subject: c, number_of_pages_median: l, ratings_average: u, ratings_count: d, cover_i: f, id_project_gutenberg: p, ...m } = e, h = q([...n === void 0 ? [] : [{ value: n }], ...r === void 0 ? [] : [{
834
835
  value: r,
835
836
  type: "subtitle"
836
- }]]), g = q([...new Set((i ?? []).map(St).filter((e) => e !== void 0))]), _ = [
837
+ }]]), g = q([...new Set((i ?? []).map(kt).filter((e) => e !== void 0))]), _ = [
837
838
  ...t.isbn === void 0 ? [] : [{
838
839
  value: t.isbn,
839
840
  scheme: "ISBN"
@@ -841,11 +842,11 @@ var c = (e) => {
841
842
  ...t.matchedProjectGutenbergIdentifier === void 0 ? [] : [t.matchedProjectGutenbergIdentifier],
842
843
  ...(p ?? []).map((e) => ({
843
844
  value: e,
844
- scheme: Tt
845
+ scheme: Mt
845
846
  })),
846
847
  ...a === void 0 ? [] : [{
847
848
  value: a,
848
- scheme: wt
849
+ scheme: jt
849
850
  }]
850
851
  ];
851
852
  return P({
@@ -866,7 +867,7 @@ var c = (e) => {
866
867
  aggregateRating: He(u, d),
867
868
  identifiers: q(_)
868
869
  });
869
- }, Dt = "openLibrary", Ot = "https://openlibrary.org", kt = "https://covers.openlibrary.org", At = [
870
+ }, Pt = "openLibrary", Ft = "https://openlibrary.org", It = "https://covers.openlibrary.org", Lt = [
870
871
  "key",
871
872
  "title",
872
873
  "subtitle",
@@ -879,7 +880,7 @@ var c = (e) => {
879
880
  "ratings_count",
880
881
  "cover_i",
881
882
  "id_project_gutenberg"
882
- ].join(","), jt = (e) => {
883
+ ].join(","), Rt = (e) => {
883
884
  let t = e.title?.trim();
884
885
  if (t === void 0 || t.length === 0) return;
885
886
  let n = e.authors?.find((e) => e.trim().length > 0)?.trim();
@@ -887,11 +888,11 @@ var c = (e) => {
887
888
  title: t,
888
889
  ...n === void 0 ? {} : { author: n }
889
890
  };
890
- }, Mt = (e = {}) => {
891
- let t = e.baseUrl ?? Ot, r = e.coversBaseUrl ?? kt, i = async (n, r) => {
891
+ }, zt = (e = {}) => {
892
+ let t = e.baseUrl ?? Ft, r = e.coversBaseUrl ?? It, i = async (n, r) => {
892
893
  let i = new URL("/search.json", t);
893
894
  for (let [e, t] of Object.entries(n)) i.searchParams.set(e, t);
894
- i.searchParams.set("fields", At), i.searchParams.set("limit", String(r.limit));
895
+ i.searchParams.set("fields", Lt), i.searchParams.set("limit", String(r.limit));
895
896
  let a = await (e.fetch ?? globalThis.fetch)(i.toString(), {
896
897
  signal: r.signal,
897
898
  headers: {
@@ -900,9 +901,9 @@ var c = (e) => {
900
901
  }
901
902
  });
902
903
  if (!a.ok) throw new M(a.status, `Open Library search failed with status ${a.status}`);
903
- return yt(await a.json());
904
+ return Et(await a.json());
904
905
  }, a = (e, n = {}) => e.map((e) => ({
905
- metadata: Et(e, {
906
+ metadata: Nt(e, {
906
907
  coversBaseUrl: r,
907
908
  isbn: n.isbn,
908
909
  matchedProjectGutenbergIdentifier: n.confirmedProjectGutenberg?.identifier
@@ -912,10 +913,10 @@ var c = (e) => {
912
913
  raw: e
913
914
  }));
914
915
  return {
915
- id: Dt,
916
+ id: Pt,
916
917
  name: "Open Library",
917
918
  search: async (e, t) => {
918
- let r = n(e.identifiers), o = _t(e);
919
+ let r = n(e.identifiers), o = wt(e);
919
920
  if (r !== void 0) {
920
921
  let e = await i({ isbn: r }, t);
921
922
  if (e.length > 0) return a(e, { isbn: r });
@@ -924,7 +925,7 @@ var c = (e) => {
924
925
  let e = await i({ q: `id_project_gutenberg:${o.id}` }, t);
925
926
  if (e.length > 0) return a(e, { confirmedProjectGutenberg: o });
926
927
  }
927
- let s = jt(e);
928
+ let s = Rt(e);
928
929
  if (s === void 0) return [];
929
930
  let c = await i(s, t);
930
931
  if (c.length > 0) return a(c);
@@ -932,7 +933,7 @@ var c = (e) => {
932
933
  return a(await i({ q: l }, t));
933
934
  }
934
935
  };
935
- }, J = (e) => e.includes(":") ? e.slice(e.lastIndexOf(":") + 1) : e, Nt = (e) => e.type === "element", Y = (e, t) => e.children.filter((e) => Nt(e) && J(e.name).toLowerCase() === t.toLowerCase()), X = (e, t) => Y(e, t)[0], Z = (e) => {
936
+ }, J = (e) => e.includes(":") ? e.slice(e.lastIndexOf(":") + 1) : e, Bt = (e) => e.type === "element", Y = (e, t) => e.children.filter((e) => Bt(e) && J(e.name).toLowerCase() === t.toLowerCase()), X = (e, t) => Y(e, t)[0], Z = (e) => {
936
937
  let t = e?.val.trim();
937
938
  return t !== void 0 && t.length > 0 ? t : void 0;
938
939
  }, Q = (e, t) => {
@@ -941,18 +942,18 @@ var c = (e) => {
941
942
  let e = r.trim();
942
943
  if (e.length > 0) return e;
943
944
  }
944
- }, Pt = (e, t) => Y(e, t).flatMap((e) => {
945
+ }, Vt = (e, t) => Y(e, t).flatMap((e) => {
945
946
  let t = Z(X(X(e, "Description") ?? e, "value"));
946
947
  return t === void 0 ? [] : [t];
947
- }), Ft = (e) => {
948
+ }), Ht = (e) => {
948
949
  let t = Q(e, "about"), n = t === void 0 ? void 0 : /(?:^|\/)ebooks\/(\d+)$/.exec(t)?.[1];
949
950
  if (n === void 0) return;
950
951
  let r = n.replace(/^0+(?=\d)/, "");
951
952
  return r === "0" ? void 0 : r;
952
- }, It = (e) => {
953
+ }, Ut = (e) => {
953
954
  let t = [];
954
955
  for (let n of e.children) {
955
- if (!Nt(n)) continue;
956
+ if (!Bt(n)) continue;
956
957
  let e = n.name.toLowerCase() === "dcterms:creator", r = n.name.toLowerCase().startsWith("marcrel:");
957
958
  if (!e && !r) continue;
958
959
  let i = Z(X(X(n, "agent") ?? n, "name"));
@@ -962,10 +963,10 @@ var c = (e) => {
962
963
  });
963
964
  }
964
965
  return t;
965
- }, Lt = (e) => Y(e, "subject").flatMap((e) => {
966
+ }, Wt = (e) => Y(e, "subject").flatMap((e) => {
966
967
  let t = X(e, "Description"), n = t === void 0 ? void 0 : Q(X(t, "memberOf") ?? t, "resource"), r = Z(t === void 0 ? void 0 : X(t, "value"));
967
968
  return r !== void 0 && n?.endsWith("/LCSH") === !0 ? [r] : [];
968
- }), Rt = (e) => {
969
+ }), Gt = (e) => {
969
970
  let t = Y(e, "hasFormat").flatMap((e) => {
970
971
  let t = X(e, "file");
971
972
  if (t === void 0) return [];
@@ -976,7 +977,7 @@ var c = (e) => {
976
977
  }];
977
978
  });
978
979
  return t.find((e) => /\.cover\.medium\./i.test(e.uri)) ?? t[0];
979
- }, $ = (e) => e.length > 0 ? e : void 0, zt = (e) => {
980
+ }, $ = (e) => e.length > 0 ? e : void 0, Kt = (e) => {
980
981
  let t;
981
982
  try {
982
983
  t = new s(e);
@@ -987,9 +988,9 @@ var c = (e) => {
987
988
  if (J(t.name).toLowerCase() !== "rdf") return;
988
989
  let n = X(t, "ebook");
989
990
  if (n === void 0) return;
990
- let r = Ft(n);
991
+ let r = Ht(n);
991
992
  if (r === void 0) return;
992
- let i = [...new Set(Pt(n, "language"))], a = [...new Set(Lt(n))], o = [...new Set(Pt(n, "bookshelf"))], c = It(n);
993
+ let i = [...new Set(Vt(n, "language"))], a = [...new Set(Wt(n))], o = [...new Set(Vt(n, "bookshelf"))], c = Ut(n);
993
994
  return {
994
995
  id: r,
995
996
  title: Z(X(n, "title")),
@@ -1003,9 +1004,9 @@ var c = (e) => {
1003
1004
  subjects: $(a),
1004
1005
  bookshelves: $(o),
1005
1006
  contributors: $(c),
1006
- cover: Rt(n)
1007
+ cover: Gt(n)
1007
1008
  };
1008
- }, Bt = 25, Vt = {
1009
+ }, qt = 25, Jt = {
1009
1010
  art: "artist",
1010
1011
  aut: "author",
1011
1012
  clr: "colorist",
@@ -1014,17 +1015,17 @@ var c = (e) => {
1014
1015
  ill: "illustrator",
1015
1016
  nrt: "narrator",
1016
1017
  trl: "translator"
1017
- }, Ht = (e) => {
1018
+ }, Yt = (e) => {
1018
1019
  let t = /* @__PURE__ */ new Map();
1019
1020
  for (let n of e.contributors ?? []) {
1020
- let e = n.name.trim().toLowerCase(), r = Vt[n.role.trim().toLowerCase()] ?? n.role, i = t.get(e);
1021
+ let e = n.name.trim().toLowerCase(), r = Jt[n.role.trim().toLowerCase()] ?? n.role, i = t.get(e);
1021
1022
  i === void 0 ? t.set(e, {
1022
1023
  name: n.name,
1023
1024
  roles: [r]
1024
1025
  }) : i.roles.includes(r) || i.roles.push(r);
1025
1026
  }
1026
1027
  return t.size > 0 ? [...t.values()] : void 0;
1027
- }, Ut = (e) => {
1028
+ }, Xt = (e) => {
1028
1029
  if (e === void 0) return;
1029
1030
  let t = /^(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?$/.exec(e.trim());
1030
1031
  if (t === null) return;
@@ -1034,33 +1035,33 @@ var c = (e) => {
1034
1035
  ...r === void 0 ? {} : { month: r },
1035
1036
  ...i === void 0 ? {} : { day: i }
1036
1037
  };
1037
- }, Wt = (e, t) => e.split("$").slice(1).flatMap((e) => e[0]?.toLowerCase() === t.toLowerCase() ? [e.slice(1).trim()] : []).filter((e) => e.length > 0), Gt = (e) => {
1038
+ }, Zt = (e, t) => e.split("$").slice(1).flatMap((e) => e[0]?.toLowerCase() === t.toLowerCase() ? [e.slice(1).trim()] : []).filter((e) => e.length > 0), Qt = (e) => {
1038
1039
  if (e === void 0) return;
1039
- let t = Wt(e, "b"), n = (t.length === 1 ? t[0] : void 0)?.replace(/[\s,;:/]+$/u, "").trim(), r = Wt(e, "c"), i = [...new Set(r.flatMap((e) => [...e.matchAll(/\d{4}/g)].flatMap((e) => e[0] === void 0 ? [] : [Number(e[0])])))], a = P({
1040
+ let t = Zt(e, "b"), n = (t.length === 1 ? t[0] : void 0)?.replace(/[\s,;:/]+$/u, "").trim(), r = Zt(e, "c"), i = [...new Set(r.flatMap((e) => [...e.matchAll(/\d{4}/g)].flatMap((e) => e[0] === void 0 ? [] : [Number(e[0])])))], a = P({
1040
1041
  date: i.length === 1 ? { year: i[0] } : void 0,
1041
1042
  publisher: n !== void 0 && n.length > 0 && !/^\[?s\.n\.?\]?$/i.test(n) ? n : void 0
1042
1043
  });
1043
1044
  return a.date !== void 0 || a.publisher !== void 0 ? a : void 0;
1044
- }, Kt = (e, t) => {
1045
+ }, $t = (e, t) => {
1045
1046
  try {
1046
1047
  let n = new URL(e, t);
1047
1048
  return n.protocol === "http:" || n.protocol === "https:" ? n.toString() : void 0;
1048
1049
  } catch {
1049
1050
  return;
1050
1051
  }
1051
- }, qt = (e) => e.length > 0 ? e : void 0, Jt = (e, t) => {
1052
+ }, en = (e) => e.length > 0 ? e : void 0, tn = (e, t) => {
1052
1053
  let { id: n, title: r, publisher: i, issued: a, originalPublication: o, rights: s, description: c, summary: l, languages: u, subjects: d, bookshelves: f, contributors: p, cover: m, ...h } = e, g = [t.matchedIdentifier, {
1053
1054
  value: n,
1054
- scheme: ft
1055
- }].filter((e, t, n) => n.findIndex((t) => t.value.trim().toLowerCase() === e.value.trim().toLowerCase() && t.scheme.trim().toLowerCase() === e.scheme.trim().toLowerCase()) === t), _ = [.../* @__PURE__ */ new Set([...d ?? [], ...f ?? []])].slice(0, 25), v = m === void 0 ? void 0 : Kt(m.uri, t.baseUrl), y = v === void 0 ? void 0 : {
1055
+ scheme: yt
1056
+ }].filter((e, t, n) => n.findIndex((t) => t.value.trim().toLowerCase() === e.value.trim().toLowerCase() && t.scheme.trim().toLowerCase() === e.scheme.trim().toLowerCase()) === t), _ = [.../* @__PURE__ */ new Set([...d ?? [], ...f ?? []])].slice(0, 25), v = m === void 0 ? void 0 : $t(m.uri, t.baseUrl), y = v === void 0 ? void 0 : {
1056
1057
  uri: v,
1057
1058
  mediaType: m?.mediaType,
1058
1059
  confidence: "derived"
1059
1060
  }, b = P({
1060
- date: Ut(a),
1061
+ date: Xt(a),
1061
1062
  publisher: i
1062
1063
  }), x = P({
1063
- original: Gt(o),
1064
+ original: Qt(o),
1064
1065
  edition: b.date !== void 0 || b.publisher !== void 0 ? b : void 0
1065
1066
  });
1066
1067
  return P({
@@ -1068,19 +1069,19 @@ var c = (e) => {
1068
1069
  publication: x.original !== void 0 || x.edition !== void 0 ? x : void 0,
1069
1070
  description: l ?? c,
1070
1071
  rights: s,
1071
- languages: qt([...new Set(u ?? [])]),
1072
- subjects: qt(_),
1073
- contributors: Ht(e),
1072
+ languages: en([...new Set(u ?? [])]),
1073
+ subjects: en(_),
1074
+ contributors: Yt(e),
1074
1075
  identifiers: g,
1075
1076
  cover: y
1076
1077
  });
1077
- }, Yt = "projectGutenberg", Xt = "https://www.gutenberg.org", Zt = (e = {}) => {
1078
- let t = e.baseUrl ?? Xt;
1078
+ }, nn = "projectGutenberg", rn = "https://www.gutenberg.org", an = (e = {}) => {
1079
+ let t = e.baseUrl ?? rn;
1079
1080
  return {
1080
- id: Yt,
1081
+ id: nn,
1081
1082
  name: "Project Gutenberg",
1082
1083
  search: async (n, r) => {
1083
- let i = _t(n);
1084
+ let i = wt(n);
1084
1085
  if (i === void 0) return [];
1085
1086
  let a = new URL(`/cache/epub/${i.id}/pg${i.id}.rdf`, t), o = await (e.fetch ?? globalThis.fetch)(a.toString(), {
1086
1087
  signal: r.signal,
@@ -1091,22 +1092,22 @@ var c = (e) => {
1091
1092
  });
1092
1093
  if (o.status === 404) return [];
1093
1094
  if (!o.ok) throw new M(o.status, `Project Gutenberg metadata lookup failed with status ${o.status}`);
1094
- let s = zt(await o.text());
1095
+ let s = Kt(await o.text());
1095
1096
  if (s === void 0 || s.id !== i.id) throw Error(`Project Gutenberg RDF did not contain the requested eBook ${i.id}`);
1096
1097
  let c = new URL(`/ebooks/${i.id}`, t).toString();
1097
1098
  return [{
1098
1099
  id: s.id,
1099
1100
  url: c,
1100
1101
  raw: s,
1101
- metadata: Jt(s, {
1102
+ metadata: tn(s, {
1102
1103
  baseUrl: t,
1103
1104
  matchedIdentifier: i.identifier
1104
1105
  })
1105
1106
  }];
1106
1107
  }
1107
1108
  };
1108
- }, Qt = (e) => [e.title, e.series].some((e) => e !== void 0 && e.trim().length > 0) || (e.identifiers ?? []).some((e) => e.value.trim().length > 0) || (e.authors ?? []).some((e) => e.trim().length > 0);
1109
+ }, on = (e) => [e.title, e.series].some((e) => e !== void 0 && e.trim().length > 0) || (e.identifiers ?? []).some((e) => e.value.trim().length > 0) || (e.authors ?? []).some((e) => e.trim().length > 0);
1109
1110
  //#endregion
1110
- export { B as GOOGLE_BOOKS_IDENTIFIER_SCHEME, Ue as GOOGLE_BOOKS_MAX_SUBJECTS, lt as GOOGLE_BOOKS_PROVIDER_ID, ie as METADATA_MATCH_WEIGHTS, M as MetadataProviderResponseError, wt as OPEN_LIBRARY_IDENTIFIER_SCHEME, Ct as OPEN_LIBRARY_MAX_SUBJECTS, Dt as OPEN_LIBRARY_PROVIDER_ID, ft as PROJECT_GUTENBERG_IDENTIFIER_SCHEME, Bt as PROJECT_GUTENBERG_MAX_SUBJECTS, Yt as PROJECT_GUTENBERG_PROVIDER_ID, dt as createGoogleBooksProvider, Mt as createOpenLibraryProvider, Zt as createProjectGutenbergProvider, we as fetchMetadata, Ye as googleBooksCoverUrl, Fe as googleBooksLookupFromInput, Qe as googleBooksVolumeUrl, Qt as hasSearchTerms, St as marcLanguageToBcp47, c as metadataAuthors, Te as metadataInputFromResolvedArchive, m as normalizeForComparison, U as parseGoogleBooksVolume, Be as parseGoogleBooksVolumesResponse, yt as parseOpenLibrarySearchResponse, zt as parseProjectGutenbergRdf, re as personNameSimilarity, _t as projectGutenbergLookupFromInput, Ze as resolveGoogleBooksVolume, Et as resolveOpenLibraryDoc, Jt as resolveProjectGutenbergRecord, N as responseErrorStatus, je as retryWithBackoff, ve as scoreMetadataCandidate, g as textSimilarity, ee as titleSimilarity, d as toIsbn13 };
1111
+ export { B as GOOGLE_BOOKS_IDENTIFIER_SCHEME, Ue as GOOGLE_BOOKS_MAX_SUBJECTS, gt as GOOGLE_BOOKS_PROVIDER_ID, ie as METADATA_MATCH_WEIGHTS, M as MetadataProviderResponseError, jt as OPEN_LIBRARY_IDENTIFIER_SCHEME, At as OPEN_LIBRARY_MAX_SUBJECTS, Pt as OPEN_LIBRARY_PROVIDER_ID, yt as PROJECT_GUTENBERG_IDENTIFIER_SCHEME, qt as PROJECT_GUTENBERG_MAX_SUBJECTS, nn as PROJECT_GUTENBERG_PROVIDER_ID, vt as createGoogleBooksProvider, zt as createOpenLibraryProvider, an as createProjectGutenbergProvider, we as fetchMetadata, Ye as googleBooksCoverUrl, Fe as googleBooksLookupFromInput, Qe as googleBooksVolumeUrl, on as hasSearchTerms, kt as marcLanguageToBcp47, c as metadataAuthors, Te as metadataInputFromResolvedArchive, m as normalizeForComparison, U as parseGoogleBooksVolume, Be as parseGoogleBooksVolumesResponse, Et as parseOpenLibrarySearchResponse, Kt as parseProjectGutenbergRdf, re as personNameSimilarity, wt as projectGutenbergLookupFromInput, Ze as resolveGoogleBooksVolume, Nt as resolveOpenLibraryDoc, tn as resolveProjectGutenbergRecord, N as responseErrorStatus, je as retryWithBackoff, ve as scoreMetadataCandidate, g as textSimilarity, ee as titleSimilarity, d as toIsbn13 };
1111
1112
 
1112
1113
  //# sourceMappingURL=index.js.map