@prose-reader/metadata-fetcher 1.349.0 → 1.350.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
@@ -86,7 +86,7 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
86
86
  c: 100,
87
87
  d: 500,
88
88
  m: 1e3
89
- }, ee = (e) => {
89
+ }, k = (e) => {
90
90
  if (!/^m{0,3}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$/i.test(e)) return;
91
91
  let t = 0, n = 0;
92
92
  for (let r of [...e.toLowerCase()].reverse()) {
@@ -95,49 +95,49 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
95
95
  e < n ? t -= e : (t += e, n = e);
96
96
  }
97
97
  return t > 0 ? t : void 0;
98
- }, te = (e) => /^\d+$/.test(e) ? Number.parseInt(e, 10) : D[e] ?? ee(e), ne = (e) => {
98
+ }, ee = (e) => /^\d+$/.test(e) ? Number.parseInt(e, 10) : D[e] ?? k(e), te = (e) => {
99
99
  if (e.startsWith("vol")) return "volume";
100
100
  if (e.startsWith("part")) return "part";
101
101
  if (e.startsWith("book")) return "book";
102
- }, k = (e) => {
102
+ }, A = (e) => {
103
103
  let t = /* @__PURE__ */ new Map();
104
104
  for (let n of y(e).matchAll(E)) {
105
- let e = n[1] === void 0 ? void 0 : ne(n[1]), r = n[2] === void 0 ? void 0 : te(n[2]);
105
+ let e = n[1] === void 0 ? void 0 : te(n[1]), r = n[2] === void 0 ? void 0 : ee(n[2]);
106
106
  if (e === void 0 || r === void 0) continue;
107
107
  let i = t.get(e) ?? /* @__PURE__ */ new Set();
108
108
  i.add(r), t.set(e, i);
109
109
  }
110
110
  return t;
111
- }, re = (e, t) => {
112
- let n = k(e), r = k(t);
111
+ }, ne = (e, t) => {
112
+ let n = A(e), r = A(t);
113
113
  for (let e of T) {
114
114
  let t = n.get(e), i = r.get(e);
115
115
  if (!(t === void 0 || i === void 0) && [...t].every((e) => !i.has(e))) return !0;
116
116
  }
117
117
  return !1;
118
- }, ie = (e) => {
118
+ }, re = (e) => {
119
119
  let t = /* @__PURE__ */ new Set();
120
- for (let n of k(e).values()) for (let e of n) t.add(e);
120
+ for (let n of A(e).values()) for (let e of n) t.add(e);
121
121
  return t;
122
- }, ae = (e, t) => {
123
- if (re(e, t)) return 0;
122
+ }, ie = (e, t) => {
123
+ if (ne(e, t)) return 0;
124
124
  let n = x(e, t), r = C(e), i = C(t);
125
125
  return r.hasSubtitle === i.hasSubtitle ? n : Math.max(n, x(r.main, i.main) * w);
126
- }, oe = (e, t) => {
126
+ }, ae = (e, t) => {
127
127
  let n;
128
128
  for (let r of t) {
129
- if (re(e, r)) return {
129
+ if (ne(e, r)) return {
130
130
  score: 0,
131
131
  candidate: r
132
132
  };
133
- let t = ae(e, r);
133
+ let t = ie(e, r);
134
134
  (n === void 0 || t > n.score) && (n = {
135
135
  score: t,
136
136
  candidate: r
137
137
  });
138
138
  }
139
139
  return n;
140
- }, se = (e) => y(e).split(" ").filter((e) => e.length > 0).sort().join(" "), ce = (e, t) => x(se(e), se(t)), le = {
140
+ }, oe = (e) => y(e).split(" ").filter((e) => e.length > 0).sort().join(" "), se = (e, t) => x(oe(e), oe(t)), ce = {
141
141
  isbn: 1,
142
142
  gtin: 1,
143
143
  identifiers: .6,
@@ -148,35 +148,35 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
148
148
  publisher: .15,
149
149
  languages: .15,
150
150
  numberOfPages: .15
151
- }, ue = /* @__PURE__ */ new Set(["isbn", "gtin"]), A = (e) => {
151
+ }, le = /* @__PURE__ */ new Set(["isbn", "gtin"]), j = (e) => {
152
152
  let t = e?.trim();
153
153
  return t !== void 0 && t.length > 0 ? t : void 0;
154
- }, de = (e, t) => {
155
- let n = A(e.value)?.toLowerCase();
156
- return n !== void 0 && n === A(t.value)?.toLowerCase();
157
- }, j = (e) => e.scheme.trim().toLowerCase() === "unknown" ? void 0 : A(e.scheme)?.toLowerCase(), fe = (e) => `${e.scheme}:${e.value}`, pe = (e) => {
154
+ }, ue = (e, t) => {
155
+ let n = j(e.value)?.toLowerCase();
156
+ return n !== void 0 && n === j(t.value)?.toLowerCase();
157
+ }, M = (e) => e.scheme.trim().toLowerCase() === "unknown" ? void 0 : j(e.scheme)?.toLowerCase(), de = (e) => `${e.scheme}:${e.value}`, fe = (e) => {
158
158
  let t = e.scheme.trim().toLowerCase();
159
159
  return t === "isbn" || t === "gtin";
160
- }, me = (e, t) => {
161
- if (!de(e, t)) return !1;
162
- let n = j(e), r = j(t);
160
+ }, pe = (e, t) => {
161
+ if (!ue(e, t)) return !1;
162
+ let n = M(e), r = M(t);
163
163
  return n === void 0 || r === void 0 || n === r;
164
- }, he = (e, t) => {
165
- if (!de(e, t)) return !1;
166
- let n = j(e), r = j(t);
164
+ }, me = (e, t) => {
165
+ if (!ue(e, t)) return !1;
166
+ let n = M(e), r = M(t);
167
167
  return n !== void 0 && n === r;
168
- }, ge = (e) => e.trim().toLowerCase().split("-")[0] ?? "", _e = (e, t) => {
168
+ }, he = (e) => e.trim().toLowerCase().split("-")[0] ?? "", ge = (e, t) => {
169
169
  let n = Math.abs(e - t);
170
170
  return n === 0 ? 1 : n === 1 ? .6 : n <= 3 ? .3 : 0;
171
- }, ve = (e, t) => {
171
+ }, _e = (e, t) => {
172
172
  let n = Math.max(e, t);
173
173
  return n <= 0 ? 0 : Math.max(0, 1 - Math.abs(e - t) / n * 2);
174
- }, ye = (e, t, n) => e.reduce((e, r) => t.reduce((e, t) => Math.max(e, n(r, t)), e), 0), be = (e, t, n = x) => {
175
- let r = A(e);
174
+ }, ve = (e, t, n) => e.reduce((e, r) => t.reduce((e, t) => Math.max(e, n(r, t)), e), 0), ye = (e, t, n = x) => {
175
+ let r = j(e);
176
176
  if (r === void 0) return;
177
177
  let i;
178
178
  for (let e of t) {
179
- let t = A(e);
179
+ let t = j(e);
180
180
  if (t === void 0) continue;
181
181
  let a = {
182
182
  score: n(r, t),
@@ -186,38 +186,38 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
186
186
  (i === void 0 || a.score > i.score) && (i = a);
187
187
  }
188
188
  return i;
189
- }, xe = (t) => {
189
+ }, be = (t) => {
190
190
  let n = e(t), r = t.titles?.find((e) => e.type === "subtitle")?.value;
191
191
  return n !== void 0 && r !== void 0 ? `${n}: ${r}` : void 0;
192
- }, Se = (e, t) => {
193
- let n = ie(e);
192
+ }, xe = (e, t) => {
193
+ let n = re(e);
194
194
  if (n.size === 0) return !1;
195
195
  let r = (t.belongsTo?.series ?? []).flatMap((e) => e.position === void 0 ? [] : [e.position]);
196
196
  return r.length > 0 && r.every((e) => !n.has(e));
197
- }, Ce = (e, t) => {
197
+ }, Se = (e, t) => {
198
198
  if (e === void 0) return;
199
199
  let n;
200
200
  for (let r of t) {
201
201
  if (r === void 0) continue;
202
202
  let t = {
203
- score: _e(e, r),
203
+ score: ge(e, r),
204
204
  query: String(e),
205
205
  candidate: String(r)
206
206
  };
207
207
  (n === void 0 || t.score > n.score) && (n = t);
208
208
  }
209
209
  return n;
210
- }, we = (t, n) => {
210
+ }, Ce = (t, n) => {
211
211
  let r = [], i = (e, t) => {
212
212
  t !== void 0 && r.push({
213
213
  field: e,
214
- weight: le[e],
214
+ weight: ce[e],
215
215
  score: Math.min(1, Math.max(0, t.score)),
216
216
  query: t.query,
217
217
  candidate: t.candidate
218
218
  });
219
219
  }, a = (e, t, n, r = x) => {
220
- let a = A(t), o = A(n);
220
+ let a = j(t), o = j(n);
221
221
  a === void 0 || o === void 0 || i(e, {
222
222
  score: r(a, o),
223
223
  query: a,
@@ -235,49 +235,49 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
235
235
  query: m,
236
236
  candidate: h
237
237
  });
238
- let _ = (t.identifiers ?? []).filter((e) => !pe(e)), v = (n.identifiers ?? []).filter((e) => !pe(e)), y = _.some((e) => v.some((t) => he(e, t)));
238
+ let _ = (t.identifiers ?? []).filter((e) => !fe(e)), v = (n.identifiers ?? []).filter((e) => !fe(e)), y = _.some((e) => v.some((t) => me(e, t)));
239
239
  _.length > 0 && v.length > 0 && i("identifiers", {
240
- score: +!!_.some((e) => v.some((t) => me(e, t))),
241
- query: _.map(fe).join(", "),
242
- candidate: v.map(fe).join(", ")
240
+ score: +!!_.some((e) => v.some((t) => pe(e, t))),
241
+ query: _.map(de).join(", "),
242
+ candidate: v.map(de).join(", ")
243
243
  });
244
- let b = A(t.title), S = [e(n), xe(n)].flatMap((e) => {
245
- let t = A(e);
244
+ let b = j(t.title), S = [e(n), be(n)].flatMap((e) => {
245
+ let t = j(e);
246
246
  return t === void 0 ? [] : [t];
247
247
  });
248
248
  if (b !== void 0 && S.length > 0) {
249
- let e = oe(b, S);
249
+ let e = ae(b, S);
250
250
  e !== void 0 && i("title", {
251
- score: Se(b, n) ? 0 : e.score,
251
+ score: xe(b, n) ? 0 : e.score,
252
252
  query: b,
253
253
  candidate: e.candidate
254
254
  });
255
255
  }
256
- i("publisher", be(t.publisher, [n.publication?.original?.publisher, n.publication?.edition?.publisher])), a("series", t.series, n.belongsTo?.series?.[0]?.name);
256
+ i("publisher", ye(t.publisher, [n.publication?.original?.publisher, n.publication?.edition?.publisher])), a("series", t.series, n.belongsTo?.series?.[0]?.name);
257
257
  let C = p(n), w = (t.authors ?? []).flatMap((e) => {
258
- let t = A(e);
258
+ let t = j(e);
259
259
  return t === void 0 ? [] : [t];
260
260
  });
261
261
  w.length > 0 && C.length > 0 && i("authors", {
262
- score: ye(w, C, ce),
262
+ score: ve(w, C, se),
263
263
  query: w.join(", "),
264
264
  candidate: C.join(", ")
265
- }), i("publishedYear", Ce(t.publishedYear, [n.publication?.original?.date?.year, n.publication?.edition?.date?.year]));
265
+ }), i("publishedYear", Se(t.publishedYear, [n.publication?.original?.date?.year, n.publication?.edition?.date?.year]));
266
266
  let T = t.languages ?? [], E = n.languages ?? [];
267
267
  if (T.length > 0 && E.length > 0) {
268
- let e = new Set(E.map(ge));
268
+ let e = new Set(E.map(he));
269
269
  i("languages", {
270
- score: +!!T.some((t) => e.has(ge(t))),
270
+ score: +!!T.some((t) => e.has(he(t))),
271
271
  query: T.join(", "),
272
272
  candidate: E.join(", ")
273
273
  });
274
274
  }
275
275
  t.numberOfPages !== void 0 && n.numberOfPages !== void 0 && i("numberOfPages", {
276
- score: ve(t.numberOfPages, n.numberOfPages),
276
+ score: _e(t.numberOfPages, n.numberOfPages),
277
277
  query: String(t.numberOfPages),
278
278
  candidate: String(n.numberOfPages)
279
279
  });
280
- let D = r.filter((e) => ue.has(e.field));
280
+ let D = r.filter((e) => le.has(e.field));
281
281
  if (D.some((e) => e.score === 0)) return {
282
282
  score: 0,
283
283
  signals: r
@@ -294,12 +294,12 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
294
294
  score: r.reduce((e, t) => e + t.score * t.weight, 0) / O,
295
295
  signals: r
296
296
  };
297
- }, M = class extends Error {
297
+ }, N = class extends Error {
298
298
  status;
299
299
  constructor(e, t) {
300
300
  super(t ?? `Provider responded with status ${e}`), this.name = "MetadataProviderResponseError", this.status = e;
301
301
  }
302
- }, N = (e) => {
302
+ }, we = (e) => {
303
303
  if (typeof e != "object" || !e || !("status" in e)) return;
304
304
  let { status: t } = e;
305
305
  if (!(typeof t != "number" || !Number.isInteger(t))) return t >= 100 && t <= 599 ? t : void 0;
@@ -333,7 +333,7 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
333
333
  candidates: void 0,
334
334
  failure: P({
335
335
  id: r.id,
336
- status: N(e)
336
+ status: we(e)
337
337
  })
338
338
  };
339
339
  }
@@ -341,7 +341,7 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
341
341
  for (let { provider: t, candidates: o } of a) {
342
342
  if (o === void 0) continue;
343
343
  let a = o.map((n) => {
344
- let { score: a, signals: o } = we(e, n.metadata);
344
+ let { score: a, signals: o } = Ce(e, n.metadata);
345
345
  return ke({
346
346
  candidate: n,
347
347
  providerId: t.id,
@@ -499,6 +499,8 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
499
499
  industryIdentifiers: He(t),
500
500
  pageCount: L(t, "pageCount"),
501
501
  categories: R(t, "categories"),
502
+ averageRating: L(t, "averageRating"),
503
+ ratingsCount: L(t, "ratingsCount"),
502
504
  language: I(t, "language"),
503
505
  imageLinks: Ue(t),
504
506
  infoLink: I(t, "infoLink"),
@@ -516,13 +518,20 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
516
518
  }, Ke = (e) => F(e) ? z(e, "items").flatMap((e) => {
517
519
  let t = U(e);
518
520
  return t === void 0 ? [] : [t];
519
- }) : [], qe = 25, W = (e) => e.length > 0 ? e : void 0, Je = (e) => e === "ISBN_10" || e === "ISBN_13" ? "ISBN" : e ?? "Unknown", Ye = (e) => W(e.filter((e, t, n) => n.findIndex((t) => t.value.trim().toLowerCase() === e.value.trim().toLowerCase() && t.scheme.trim().toLowerCase() === e.scheme.trim().toLowerCase()) === t)), Xe = (e) => e.map((e) => P({
521
+ }) : [], qe = 5, Je = (e, t) => {
522
+ if (e === void 0 || e < 0 || e > qe) return;
523
+ let n = t !== void 0 && Number.isInteger(t) && t >= 0 ? t : void 0;
524
+ if (n !== 0) return P({
525
+ value: e,
526
+ count: n
527
+ });
528
+ }, Ye = 25, W = (e) => e.length > 0 ? e : void 0, Xe = (e) => e === "ISBN_10" || e === "ISBN_13" ? "ISBN" : e ?? "Unknown", Ze = (e) => W(e.filter((e, t, n) => n.findIndex((t) => t.value.trim().toLowerCase() === e.value.trim().toLowerCase() && t.scheme.trim().toLowerCase() === e.scheme.trim().toLowerCase()) === t)), Qe = (e) => e.map((e) => P({
520
529
  value: e.identifier,
521
- scheme: Je(e.type)
522
- })), Ze = (e, t) => W([...e === void 0 ? [] : [{ value: e }], ...t === void 0 ? [] : [{
530
+ scheme: Xe(e.type)
531
+ })), $e = (e, t) => W([...e === void 0 ? [] : [{ value: e }], ...t === void 0 ? [] : [{
523
532
  value: t,
524
533
  type: "subtitle"
525
- }]]), Qe = (e) => W((e?.volumeSeries ?? []).flatMap((e) => {
534
+ }]]), et = (e) => W((e?.volumeSeries ?? []).flatMap((e) => {
526
535
  let t = P({
527
536
  identifiers: e.seriesId === void 0 ? void 0 : [{
528
537
  value: e.seriesId,
@@ -538,7 +547,7 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
538
547
  } catch {
539
548
  return;
540
549
  }
541
- }, $e = (e) => {
550
+ }, tt = (e) => {
542
551
  if (e === void 0) return;
543
552
  let t = [
544
553
  e.extraLarge,
@@ -552,11 +561,11 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
552
561
  let t = G(e);
553
562
  if (t !== void 0) return t;
554
563
  }
555
- }, et = (e) => W(e.map((e) => ({
564
+ }, nt = (e) => W(e.map((e) => ({
556
565
  name: e,
557
566
  roles: ["author"]
558
- }))), tt = (e, t = {}) => {
559
- let { id: n, volumeInfo: i, ...a } = e, { title: o, subtitle: s, authors: c, publisher: l, publishedDate: u, description: d, industryIdentifiers: f, pageCount: p, categories: m, language: h, imageLinks: g, seriesInfo: _, infoLink: v, canonicalVolumeLink: y, ...b } = i ?? {}, x = Xe(f ?? []), S = Ye([
567
+ }))), rt = (e, t = {}) => {
568
+ let { id: n, volumeInfo: i, ...a } = e, { title: o, subtitle: s, authors: c, publisher: l, publishedDate: u, description: d, industryIdentifiers: f, pageCount: p, categories: m, averageRating: h, ratingsCount: g, language: _, imageLinks: v, seriesInfo: y, infoLink: b, canonicalVolumeLink: x, ...S } = i ?? {}, C = Qe(f ?? []), w = Ze([
560
569
  ...t.matchedIdentifier === void 0 ? [] : [t.matchedIdentifier],
561
570
  ...t.matchedIsbn === void 0 ? [] : [{
562
571
  value: t.matchedIsbn,
@@ -566,32 +575,33 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
566
575
  value: n,
567
576
  scheme: B
568
577
  }],
569
- ...x
570
- ]), C = P({
578
+ ...C
579
+ ]), T = P({
571
580
  date: r(u),
572
581
  publisher: l
573
- }), w = $e(g), T = w === void 0 ? void 0 : {
574
- uri: w,
582
+ }), E = tt(v), D = E === void 0 ? void 0 : {
583
+ uri: E,
575
584
  confidence: "derived"
576
- }, E = [...new Set(m ?? [])].slice(0, 25), D = Qe(_);
585
+ }, O = [...new Set(m ?? [])].slice(0, 25), k = et(y);
577
586
  return P({
578
- titles: Ze(o, s),
587
+ titles: $e(o, s),
579
588
  description: d,
580
- belongsTo: D === void 0 ? void 0 : { series: D },
581
- publication: C.date !== void 0 || C.publisher !== void 0 ? { edition: C } : void 0,
582
- languages: h === void 0 ? void 0 : [h],
583
- subjects: W(E),
584
- contributors: et(c ?? []),
589
+ belongsTo: k === void 0 ? void 0 : { series: k },
590
+ publication: T.date !== void 0 || T.publisher !== void 0 ? { edition: T } : void 0,
591
+ languages: _ === void 0 ? void 0 : [_],
592
+ subjects: W(O),
593
+ contributors: nt(c ?? []),
585
594
  numberOfPages: p,
586
- identifiers: S,
587
- cover: T
595
+ aggregateRating: Je(h, g),
596
+ identifiers: w,
597
+ cover: D
588
598
  });
589
- }, nt = (e) => G(e.volumeInfo?.canonicalVolumeLink) ?? G(e.volumeInfo?.infoLink) ?? (e.id === void 0 ? void 0 : `https://books.google.com/books?id=${encodeURIComponent(e.id)}`), rt = 40, it = 3, at = 1e3, ot = 3e3, st = /* @__PURE__ */ new Set([
599
+ }, it = (e) => G(e.volumeInfo?.canonicalVolumeLink) ?? G(e.volumeInfo?.infoLink) ?? (e.id === void 0 ? void 0 : `https://books.google.com/books?id=${encodeURIComponent(e.id)}`), at = 40, ot = 3, st = 1e3, ct = 3e3, lt = /* @__PURE__ */ new Set([
590
600
  500,
591
601
  502,
592
602
  503,
593
603
  504
594
- ]), ct = (e) => `"${e.replace(/["\\]+/g, " ").replace(/\s+/g, " ").trim()}"`, lt = (e) => {
604
+ ]), ut = (e) => `"${e.replace(/["\\]+/g, " ").replace(/\s+/g, " ").trim()}"`, dt = (e) => {
595
605
  let t = e.title?.trim();
596
606
  if (t === void 0 || t.length === 0) return;
597
607
  let n = e.authors?.find((e) => e.trim().length > 0)?.trim();
@@ -599,51 +609,51 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
599
609
  title: t,
600
610
  ...n === void 0 ? {} : { author: n }
601
611
  };
602
- }, ut = (e) => {
612
+ }, ft = (e) => {
603
613
  let t = U(e);
604
614
  return t === void 0 ? void 0 : {
605
615
  volume: t,
606
616
  raw: e
607
617
  };
608
- }, dt = (e) => F(e) ? z(e, "items").flatMap((e) => {
609
- let t = ut(e);
618
+ }, pt = (e) => F(e) ? z(e, "items").flatMap((e) => {
619
+ let t = ft(e);
610
620
  return t === void 0 ? [] : [t];
611
621
  }) : [], K = (e, t = {}) => e.map(({ volume: e, raw: n }) => ({
612
- metadata: tt(e, t),
622
+ metadata: rt(e, t),
613
623
  id: e.id,
614
- url: nt(e),
624
+ url: it(e),
615
625
  raw: n
616
- })), ft = (e) => {
626
+ })), mt = (e) => {
617
627
  let t = `${e.baseUrl.replace(/\/+$/, "")}/volumes`, n = async (t, n, r = !1) => (t.searchParams.set("key", e.apiKey), Le(async () => {
618
628
  let i = await e.fetch(t.toString(), {
619
629
  signal: n.signal,
620
630
  headers: { Accept: "application/json" }
621
631
  });
622
632
  if (!(r && i.status === 404)) {
623
- if (!i.ok) throw new M(i.status, `Google Books lookup failed with status ${i.status}`);
633
+ if (!i.ok) throw new N(i.status, `Google Books lookup failed with status ${i.status}`);
624
634
  return i;
625
635
  }
626
636
  }, {
627
- attempts: it,
628
- initialDelayMs: at,
629
- maxDelayMs: ot,
637
+ attempts: ot,
638
+ initialDelayMs: st,
639
+ maxDelayMs: ct,
630
640
  signal: n.signal,
631
641
  shouldRetry: (e) => {
632
- let t = N(e);
633
- return t === void 0 || st.has(t);
642
+ let t = we(e);
643
+ return t === void 0 || lt.has(t);
634
644
  }
635
645
  })), r = async (e, r) => {
636
646
  let i = await n(new URL(`${t}/${encodeURIComponent(e)}`), r, !0);
637
647
  if (i === void 0) return;
638
- let a = ut(await i.json());
648
+ let a = ft(await i.json());
639
649
  if (a?.volume.id !== e) throw Error(`Google Books response did not contain the requested volume ${e}`);
640
650
  return a;
641
651
  }, i = async (e, r) => {
642
652
  if (r.limit <= 0) return [];
643
653
  let i = new URL(t);
644
- i.searchParams.set("q", e), i.searchParams.set("maxResults", String(Math.min(Math.ceil(r.limit), rt))), i.searchParams.set("orderBy", "relevance"), i.searchParams.set("printType", "books");
654
+ i.searchParams.set("q", e), i.searchParams.set("maxResults", String(Math.min(Math.ceil(r.limit), at))), i.searchParams.set("orderBy", "relevance"), i.searchParams.set("printType", "books");
645
655
  let a = await n(i, r);
646
- return a === void 0 ? [] : dt(await a.json());
656
+ return a === void 0 ? [] : pt(await a.json());
647
657
  };
648
658
  return async (e, t) => {
649
659
  let n = Ve(e);
@@ -656,47 +666,47 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
656
666
  let e = await i(`isbn:${a}`, t);
657
667
  if (e.length > 0) return K(e, { matchedIsbn: a });
658
668
  }
659
- let o = lt(e);
669
+ let o = dt(e);
660
670
  if (o === void 0) return [];
661
- let s = `intitle:${ct(o.title)}`, c = o.author === void 0 ? s : `${s} inauthor:${ct(o.author)}`, l = await i(c, t);
671
+ let s = `intitle:${ut(o.title)}`, c = o.author === void 0 ? s : `${s} inauthor:${ut(o.author)}`, l = await i(c, t);
662
672
  return l.length > 0 || o.author === void 0 ? K(l) : K(await i(s, t));
663
673
  };
664
- }, pt = "googleBooks", mt = "https://www.googleapis.com/books/v1", ht = (e) => {
674
+ }, ht = "googleBooks", gt = "https://www.googleapis.com/books/v1", _t = (e) => {
665
675
  let t = e.apiKey.trim();
666
676
  if (t.length === 0) throw Error("createGoogleBooksProvider requires a non-empty apiKey");
667
677
  return {
668
- id: pt,
678
+ id: ht,
669
679
  name: "Google Books",
670
- search: ft({
680
+ search: mt({
671
681
  apiKey: t,
672
- baseUrl: e.baseUrl ?? mt,
682
+ baseUrl: e.baseUrl ?? gt,
673
683
  fetch: e.fetch ?? globalThis.fetch
674
684
  })
675
685
  };
676
- }, gt = "ProjectGutenberg", _t = /* @__PURE__ */ new Set(["gutenberg.org", "www.gutenberg.org"]), vt = [
686
+ }, vt = "ProjectGutenberg", yt = /* @__PURE__ */ new Set(["gutenberg.org", "www.gutenberg.org"]), bt = [
677
687
  /^\/ebooks\/(\d+)(?:[./]|$)/i,
678
688
  /^\/files\/(\d+)(?:\/|$)/i,
679
689
  /^\/cache\/epub\/(\d+)(?:\/|$)/i,
680
690
  /^\/(\d+)(?:\/|$)/
681
- ], yt = (e) => {
691
+ ], xt = (e) => {
682
692
  let t = e.trim();
683
693
  if (!/^\d+$/.test(t)) return;
684
694
  let n = t.replace(/^0+(?=\d)/, "");
685
695
  return n === "0" ? void 0 : n;
686
- }, bt = (e) => {
696
+ }, St = (e) => {
687
697
  try {
688
698
  let t = new URL(e.trim());
689
- if (t.protocol !== "http:" && t.protocol !== "https:" || !_t.has(t.hostname.toLowerCase())) return;
690
- for (let e of vt) {
699
+ if (t.protocol !== "http:" && t.protocol !== "https:" || !yt.has(t.hostname.toLowerCase())) return;
700
+ for (let e of bt) {
691
701
  let n = e.exec(t.pathname)?.[1];
692
- if (n !== void 0) return yt(n);
702
+ if (n !== void 0) return xt(n);
693
703
  }
694
704
  } catch {
695
705
  return;
696
706
  }
697
707
  }, q = (e) => {
698
708
  for (let t of e.identifiers ?? []) {
699
- let e = t.scheme.trim().toLowerCase(), n = e === "projectgutenberg" ? yt(t.value) : e === "unknown" || e === "url" || e === "uri" ? bt(t.value) : void 0;
709
+ let e = t.scheme.trim().toLowerCase(), n = e === "projectgutenberg" ? xt(t.value) : e === "unknown" || e === "url" || e === "uri" ? St(t.value) : void 0;
700
710
  if (n !== void 0) return {
701
711
  id: n,
702
712
  identifier: {
@@ -705,7 +715,7 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
705
715
  }
706
716
  };
707
717
  }
708
- }, xt = (e) => ({
718
+ }, Ct = (e) => ({
709
719
  key: I(e, "key"),
710
720
  title: I(e, "title"),
711
721
  subtitle: I(e, "subtitle"),
@@ -714,9 +724,11 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
714
724
  language: R(e, "language"),
715
725
  subject: R(e, "subject"),
716
726
  number_of_pages_median: L(e, "number_of_pages_median"),
727
+ ratings_average: L(e, "ratings_average"),
728
+ ratings_count: L(e, "ratings_count"),
717
729
  cover_i: L(e, "cover_i"),
718
730
  id_project_gutenberg: R(e, "id_project_gutenberg")
719
- }), St = (e) => F(e) ? z(e, "docs").map(xt) : [], Ct = {
731
+ }), wt = (e) => F(e) ? z(e, "docs").map(Ct) : [], Tt = {
720
732
  afr: "af",
721
733
  alb: "sq",
722
734
  amh: "am",
@@ -821,51 +833,52 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
821
833
  wel: "cy",
822
834
  yid: "yi",
823
835
  zho: "zh"
824
- }, wt = /* @__PURE__ */ new Set([
836
+ }, Et = /* @__PURE__ */ new Set([
825
837
  "mul",
826
838
  "und",
827
839
  "zxx",
828
840
  "sgn"
829
- ]), Tt = (e) => {
841
+ ]), Dt = (e) => {
830
842
  let t = e.trim().toLowerCase();
831
- if (t.length !== 0 && !wt.has(t)) return Ct[t] ?? t;
832
- }, Et = 25, Dt = "OpenLibrary", Ot = "ProjectGutenberg", J = (e) => e.length > 0 ? e : void 0, kt = (e, t) => {
833
- let { title: n, subtitle: r, language: i, key: a, author_name: o, first_publish_year: s, subject: c, number_of_pages_median: l, cover_i: u, id_project_gutenberg: d, ...f } = e, p = J([...n === void 0 ? [] : [{ value: n }], ...r === void 0 ? [] : [{
843
+ if (t.length !== 0 && !Et.has(t)) return Tt[t] ?? t;
844
+ }, Ot = 25, kt = "OpenLibrary", At = "ProjectGutenberg", J = (e) => e.length > 0 ? e : void 0, jt = (e, t) => {
845
+ 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 = J([...n === void 0 ? [] : [{ value: n }], ...r === void 0 ? [] : [{
834
846
  value: r,
835
847
  type: "subtitle"
836
- }]]), m = J([...new Set((i ?? []).map(Tt).filter((e) => e !== void 0))]), h = [
848
+ }]]), g = J([...new Set((i ?? []).map(Dt).filter((e) => e !== void 0))]), _ = [
837
849
  ...t.isbn === void 0 ? [] : [{
838
850
  value: t.isbn,
839
851
  scheme: "ISBN"
840
852
  }],
841
853
  ...t.matchedProjectGutenbergIdentifier === void 0 ? [] : [t.matchedProjectGutenbergIdentifier],
842
- ...(d ?? []).map((e) => ({
854
+ ...(p ?? []).map((e) => ({
843
855
  value: e,
844
- scheme: Ot
856
+ scheme: At
845
857
  })),
846
858
  ...a === void 0 ? [] : [{
847
859
  value: a,
848
- scheme: Dt
860
+ scheme: kt
849
861
  }]
850
862
  ];
851
863
  return P({
852
- titles: p,
853
- cover: u === void 0 ? void 0 : {
854
- uri: `${t.coversBaseUrl}/b/id/${u}-L.jpg`,
864
+ titles: h,
865
+ cover: f === void 0 ? void 0 : {
866
+ uri: `${t.coversBaseUrl}/b/id/${f}-L.jpg`,
855
867
  mediaType: "image/jpeg",
856
868
  confidence: "derived"
857
869
  },
858
870
  publication: s === void 0 ? void 0 : { original: { date: { year: s } } },
859
- languages: m,
871
+ languages: g,
860
872
  subjects: J((c ?? []).slice(0, 25)),
861
873
  contributors: J((o ?? []).map((e) => ({
862
874
  name: e,
863
875
  roles: ["author"]
864
876
  }))),
865
877
  numberOfPages: l,
866
- identifiers: J(h)
878
+ aggregateRating: Je(u, d),
879
+ identifiers: J(_)
867
880
  });
868
- }, At = "openLibrary", jt = "https://openlibrary.org", Mt = "https://covers.openlibrary.org", Nt = [
881
+ }, Mt = "openLibrary", Nt = "https://openlibrary.org", Pt = "https://covers.openlibrary.org", Ft = [
869
882
  "key",
870
883
  "title",
871
884
  "subtitle",
@@ -874,9 +887,11 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
874
887
  "language",
875
888
  "subject",
876
889
  "number_of_pages_median",
890
+ "ratings_average",
891
+ "ratings_count",
877
892
  "cover_i",
878
893
  "id_project_gutenberg"
879
- ].join(","), Pt = (e) => {
894
+ ].join(","), It = (e) => {
880
895
  let t = e.title?.trim();
881
896
  if (t === void 0 || t.length === 0) return;
882
897
  let n = e.authors?.find((e) => e.trim().length > 0)?.trim();
@@ -884,11 +899,11 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
884
899
  title: t,
885
900
  ...n === void 0 ? {} : { author: n }
886
901
  };
887
- }, Ft = (e = {}) => {
888
- let t = e.baseUrl ?? jt, n = e.coversBaseUrl ?? Mt, r = async (n, r) => {
902
+ }, Lt = (e = {}) => {
903
+ let t = e.baseUrl ?? Nt, n = e.coversBaseUrl ?? Pt, r = async (n, r) => {
889
904
  let i = new URL("/search.json", t);
890
905
  for (let [e, t] of Object.entries(n)) i.searchParams.set(e, t);
891
- i.searchParams.set("fields", Nt), i.searchParams.set("limit", String(r.limit));
906
+ i.searchParams.set("fields", Ft), i.searchParams.set("limit", String(r.limit));
892
907
  let a = await (e.fetch ?? globalThis.fetch)(i.toString(), {
893
908
  signal: r.signal,
894
909
  headers: {
@@ -896,10 +911,10 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
896
911
  ...e.userAgent === void 0 ? {} : { "User-Agent": e.userAgent }
897
912
  }
898
913
  });
899
- if (!a.ok) throw new M(a.status, `Open Library search failed with status ${a.status}`);
900
- return St(await a.json());
914
+ if (!a.ok) throw new N(a.status, `Open Library search failed with status ${a.status}`);
915
+ return wt(await a.json());
901
916
  }, i = (e, r = {}) => e.map((e) => ({
902
- metadata: kt(e, {
917
+ metadata: jt(e, {
903
918
  coversBaseUrl: n,
904
919
  isbn: r.isbn,
905
920
  matchedProjectGutenbergIdentifier: r.confirmedProjectGutenberg?.identifier
@@ -909,7 +924,7 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
909
924
  raw: e
910
925
  }));
911
926
  return {
912
- id: At,
927
+ id: Mt,
913
928
  name: "Open Library",
914
929
  search: async (e, t) => {
915
930
  let n = d(e.identifiers), a = q(e);
@@ -921,7 +936,7 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
921
936
  let e = await r({ q: `id_project_gutenberg:${a.id}` }, t);
922
937
  if (e.length > 0) return i(e, { confirmedProjectGutenberg: a });
923
938
  }
924
- let o = Pt(e);
939
+ let o = It(e);
925
940
  if (o === void 0) return [];
926
941
  let s = await r(o, t);
927
942
  if (s.length > 0) return i(s);
@@ -929,27 +944,27 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
929
944
  return i(await r({ q: c }, t));
930
945
  }
931
946
  };
932
- }, Y = (e) => e.includes(":") ? e.slice(e.lastIndexOf(":") + 1) : e, It = (e) => e.type === "element", X = (e, t) => e.children.filter((e) => It(e) && Y(e.name).toLowerCase() === t.toLowerCase()), Z = (e, t) => X(e, t)[0], Q = (e) => {
947
+ }, Y = (e) => e.includes(":") ? e.slice(e.lastIndexOf(":") + 1) : e, Rt = (e) => e.type === "element", X = (e, t) => e.children.filter((e) => Rt(e) && Y(e.name).toLowerCase() === t.toLowerCase()), Z = (e, t) => X(e, t)[0], Q = (e) => {
933
948
  let t = e?.val.trim();
934
949
  return t !== void 0 && t.length > 0 ? t : void 0;
935
- }, Lt = (e, t) => {
950
+ }, zt = (e, t) => {
936
951
  for (let [n, r] of Object.entries(e.attr)) {
937
952
  if (Y(n).toLowerCase() !== t.toLowerCase()) continue;
938
953
  let e = r.trim();
939
954
  if (e.length > 0) return e;
940
955
  }
941
- }, Rt = (e, t) => X(e, t).flatMap((e) => {
956
+ }, Bt = (e, t) => X(e, t).flatMap((e) => {
942
957
  let t = Q(Z(Z(e, "Description") ?? e, "value"));
943
958
  return t === void 0 ? [] : [t];
944
- }), zt = (e) => {
945
- let t = Lt(e, "about"), n = t === void 0 ? void 0 : /(?:^|\/)ebooks\/(\d+)$/.exec(t)?.[1];
959
+ }), Vt = (e) => {
960
+ let t = zt(e, "about"), n = t === void 0 ? void 0 : /(?:^|\/)ebooks\/(\d+)$/.exec(t)?.[1];
946
961
  if (n === void 0) return;
947
962
  let r = n.replace(/^0+(?=\d)/, "");
948
963
  return r === "0" ? void 0 : r;
949
- }, Bt = (e) => {
964
+ }, Ht = (e) => {
950
965
  let t = [];
951
966
  for (let n of e.children) {
952
- if (!It(n)) continue;
967
+ if (!Rt(n)) continue;
953
968
  let e = n.name.toLowerCase() === "dcterms:creator", r = n.name.toLowerCase().startsWith("marcrel:");
954
969
  if (!e && !r) continue;
955
970
  let i = Q(Z(Z(n, "agent") ?? n, "name"));
@@ -959,21 +974,21 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
959
974
  });
960
975
  }
961
976
  return t;
962
- }, Vt = (e) => X(e, "subject").flatMap((e) => {
963
- let t = Z(e, "Description"), n = t === void 0 ? void 0 : Lt(Z(t, "memberOf") ?? t, "resource"), r = Q(t === void 0 ? void 0 : Z(t, "value"));
977
+ }, Ut = (e) => X(e, "subject").flatMap((e) => {
978
+ let t = Z(e, "Description"), n = t === void 0 ? void 0 : zt(Z(t, "memberOf") ?? t, "resource"), r = Q(t === void 0 ? void 0 : Z(t, "value"));
964
979
  return r !== void 0 && n?.endsWith("/LCSH") === !0 ? [r] : [];
965
- }), Ht = (e) => {
980
+ }), Wt = (e) => {
966
981
  let t = X(e, "hasFormat").flatMap((e) => {
967
982
  let t = Z(e, "file");
968
983
  if (t === void 0) return [];
969
- let n = Lt(t, "about"), r = X(t, "format").map((e) => Q(Z(Z(e, "Description") ?? e, "value"))).find((e) => e?.startsWith("image/") === !0);
984
+ let n = zt(t, "about"), r = X(t, "format").map((e) => Q(Z(Z(e, "Description") ?? e, "value"))).find((e) => e?.startsWith("image/") === !0);
970
985
  return n === void 0 || r === void 0 || !/\.cover\.(?:medium|small)\.[a-z0-9]+(?:$|[?#])/i.test(n) ? [] : [{
971
986
  uri: n,
972
987
  mediaType: r
973
988
  }];
974
989
  });
975
990
  return t.find((e) => /\.cover\.medium\./i.test(e.uri)) ?? t[0];
976
- }, $ = (e) => e.length > 0 ? e : void 0, Ut = (e) => {
991
+ }, $ = (e) => e.length > 0 ? e : void 0, Gt = (e) => {
977
992
  let t;
978
993
  try {
979
994
  t = new a(e);
@@ -984,9 +999,9 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
984
999
  if (Y(t.name).toLowerCase() !== "rdf") return;
985
1000
  let n = Z(t, "ebook");
986
1001
  if (n === void 0) return;
987
- let r = zt(n);
1002
+ let r = Vt(n);
988
1003
  if (r === void 0) return;
989
- let i = [...new Set(Rt(n, "language"))], o = [...new Set(Vt(n))], s = [...new Set(Rt(n, "bookshelf"))], c = Bt(n);
1004
+ let i = [...new Set(Bt(n, "language"))], o = [...new Set(Ut(n))], s = [...new Set(Bt(n, "bookshelf"))], c = Ht(n);
990
1005
  return {
991
1006
  id: r,
992
1007
  title: Q(Z(n, "title")),
@@ -1000,9 +1015,9 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
1000
1015
  subjects: $(o),
1001
1016
  bookshelves: $(s),
1002
1017
  contributors: $(c),
1003
- cover: Ht(n)
1018
+ cover: Wt(n)
1004
1019
  };
1005
- }, Wt = 25, Gt = {
1020
+ }, Kt = 25, qt = {
1006
1021
  art: "artist",
1007
1022
  aut: "author",
1008
1023
  clr: "colorist",
@@ -1011,17 +1026,17 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
1011
1026
  ill: "illustrator",
1012
1027
  nrt: "narrator",
1013
1028
  trl: "translator"
1014
- }, Kt = (e) => {
1029
+ }, Jt = (e) => {
1015
1030
  let t = /* @__PURE__ */ new Map();
1016
1031
  for (let n of e.contributors ?? []) {
1017
- let e = n.name.trim().toLowerCase(), r = Gt[n.role.trim().toLowerCase()] ?? n.role, i = t.get(e);
1032
+ let e = n.name.trim().toLowerCase(), r = qt[n.role.trim().toLowerCase()] ?? n.role, i = t.get(e);
1018
1033
  i === void 0 ? t.set(e, {
1019
1034
  name: n.name,
1020
1035
  roles: [r]
1021
1036
  }) : i.roles.includes(r) || i.roles.push(r);
1022
1037
  }
1023
1038
  return t.size > 0 ? [...t.values()] : void 0;
1024
- }, qt = (e) => {
1039
+ }, Yt = (e) => {
1025
1040
  if (e === void 0) return;
1026
1041
  let t = /^(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?$/.exec(e.trim());
1027
1042
  if (t === null) return;
@@ -1031,33 +1046,33 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
1031
1046
  ...r === void 0 ? {} : { month: r },
1032
1047
  ...i === void 0 ? {} : { day: i }
1033
1048
  };
1034
- }, Jt = (e, t) => e.split("$").slice(1).flatMap((e) => e[0]?.toLowerCase() === t.toLowerCase() ? [e.slice(1).trim()] : []).filter((e) => e.length > 0), Yt = (e) => {
1049
+ }, Xt = (e, t) => e.split("$").slice(1).flatMap((e) => e[0]?.toLowerCase() === t.toLowerCase() ? [e.slice(1).trim()] : []).filter((e) => e.length > 0), Zt = (e) => {
1035
1050
  if (e === void 0) return;
1036
- let t = Jt(e, "b"), n = (t.length === 1 ? t[0] : void 0)?.replace(/[\s,;:/]+$/u, "").trim(), r = Jt(e, "c"), i = [...new Set(r.flatMap((e) => [...e.matchAll(/\d{4}/g)].flatMap((e) => e[0] === void 0 ? [] : [Number(e[0])])))], a = P({
1051
+ let t = Xt(e, "b"), n = (t.length === 1 ? t[0] : void 0)?.replace(/[\s,;:/]+$/u, "").trim(), r = Xt(e, "c"), i = [...new Set(r.flatMap((e) => [...e.matchAll(/\d{4}/g)].flatMap((e) => e[0] === void 0 ? [] : [Number(e[0])])))], a = P({
1037
1052
  date: i.length === 1 ? { year: i[0] } : void 0,
1038
1053
  publisher: n !== void 0 && n.length > 0 && !/^\[?s\.n\.?\]?$/i.test(n) ? n : void 0
1039
1054
  });
1040
1055
  return a.date !== void 0 || a.publisher !== void 0 ? a : void 0;
1041
- }, Xt = (e, t) => {
1056
+ }, Qt = (e, t) => {
1042
1057
  try {
1043
1058
  let n = new URL(e, t);
1044
1059
  return n.protocol === "http:" || n.protocol === "https:" ? n.toString() : void 0;
1045
1060
  } catch {
1046
1061
  return;
1047
1062
  }
1048
- }, Zt = (e) => e.length > 0 ? e : void 0, Qt = (e, t) => {
1063
+ }, $t = (e) => e.length > 0 ? e : void 0, en = (e, t) => {
1049
1064
  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, {
1050
1065
  value: n,
1051
- scheme: gt
1052
- }].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 : Xt(m.uri, t.baseUrl), y = v === void 0 ? void 0 : {
1066
+ scheme: vt
1067
+ }].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 : Qt(m.uri, t.baseUrl), y = v === void 0 ? void 0 : {
1053
1068
  uri: v,
1054
1069
  mediaType: m?.mediaType,
1055
1070
  confidence: "derived"
1056
1071
  }, b = P({
1057
- date: qt(a),
1072
+ date: Yt(a),
1058
1073
  publisher: i
1059
1074
  }), x = P({
1060
- original: Yt(o),
1075
+ original: Zt(o),
1061
1076
  edition: b.date !== void 0 || b.publisher !== void 0 ? b : void 0
1062
1077
  });
1063
1078
  return P({
@@ -1065,16 +1080,16 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
1065
1080
  publication: x.original !== void 0 || x.edition !== void 0 ? x : void 0,
1066
1081
  description: l ?? c,
1067
1082
  rights: s,
1068
- languages: Zt([...new Set(u ?? [])]),
1069
- subjects: Zt(_),
1070
- contributors: Kt(e),
1083
+ languages: $t([...new Set(u ?? [])]),
1084
+ subjects: $t(_),
1085
+ contributors: Jt(e),
1071
1086
  identifiers: g,
1072
1087
  cover: y
1073
1088
  });
1074
- }, $t = "projectGutenberg", en = "https://www.gutenberg.org", tn = (e = {}) => {
1075
- let t = e.baseUrl ?? en;
1089
+ }, tn = "projectGutenberg", nn = "https://www.gutenberg.org", rn = (e = {}) => {
1090
+ let t = e.baseUrl ?? nn;
1076
1091
  return {
1077
- id: $t,
1092
+ id: tn,
1078
1093
  name: "Project Gutenberg",
1079
1094
  search: async (n, r) => {
1080
1095
  let i = q(n);
@@ -1087,23 +1102,23 @@ var o = (e, t) => t.has(e.scheme.trim().toLowerCase()), s = (e, t, n) => {
1087
1102
  }
1088
1103
  });
1089
1104
  if (o.status === 404) return [];
1090
- if (!o.ok) throw new M(o.status, `Project Gutenberg metadata lookup failed with status ${o.status}`);
1091
- let s = Ut(await o.text());
1105
+ if (!o.ok) throw new N(o.status, `Project Gutenberg metadata lookup failed with status ${o.status}`);
1106
+ let s = Gt(await o.text());
1092
1107
  if (s === void 0 || s.id !== i.id) throw Error(`Project Gutenberg RDF did not contain the requested eBook ${i.id}`);
1093
1108
  let c = new URL(`/ebooks/${i.id}`, t).toString();
1094
1109
  return [{
1095
1110
  id: s.id,
1096
1111
  url: c,
1097
1112
  raw: s,
1098
- metadata: Qt(s, {
1113
+ metadata: en(s, {
1099
1114
  baseUrl: t,
1100
1115
  matchedIdentifier: i.identifier
1101
1116
  })
1102
1117
  }];
1103
1118
  }
1104
1119
  };
1105
- }, nn = (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);
1120
+ }, an = (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);
1106
1121
  //#endregion
1107
- export { B as GOOGLE_BOOKS_IDENTIFIER_SCHEME, qe as GOOGLE_BOOKS_MAX_SUBJECTS, pt as GOOGLE_BOOKS_PROVIDER_ID, le as METADATA_MATCH_WEIGHTS, M as MetadataProviderResponseError, Dt as OPEN_LIBRARY_IDENTIFIER_SCHEME, Et as OPEN_LIBRARY_MAX_SUBJECTS, At as OPEN_LIBRARY_PROVIDER_ID, gt as PROJECT_GUTENBERG_IDENTIFIER_SCHEME, Wt as PROJECT_GUTENBERG_MAX_SUBJECTS, $t as PROJECT_GUTENBERG_PROVIDER_ID, ht as createGoogleBooksProvider, Ft as createOpenLibraryProvider, tn as createProjectGutenbergProvider, Ae as fetchMetadata, $e as googleBooksCoverUrl, Ve as googleBooksLookupFromInput, nt as googleBooksVolumeUrl, nn as hasSearchTerms, Tt as marcLanguageToBcp47, p as metadataAuthors, je as metadataInputFromResolvedArchive, y as normalizeForComparison, U as parseGoogleBooksVolume, Ke as parseGoogleBooksVolumesResponse, St as parseOpenLibrarySearchResponse, Ut as parseProjectGutenbergRdf, ce as personNameSimilarity, q as projectGutenbergLookupFromInput, tt as resolveGoogleBooksVolume, kt as resolveOpenLibraryDoc, Qt as resolveProjectGutenbergRecord, N as responseErrorStatus, Le as retryWithBackoff, we as scoreMetadataCandidate, x as textSimilarity, ae as titleSimilarity, g as toIsbn13 };
1122
+ export { B as GOOGLE_BOOKS_IDENTIFIER_SCHEME, Ye as GOOGLE_BOOKS_MAX_SUBJECTS, ht as GOOGLE_BOOKS_PROVIDER_ID, ce as METADATA_MATCH_WEIGHTS, N as MetadataProviderResponseError, kt as OPEN_LIBRARY_IDENTIFIER_SCHEME, Ot as OPEN_LIBRARY_MAX_SUBJECTS, Mt as OPEN_LIBRARY_PROVIDER_ID, vt as PROJECT_GUTENBERG_IDENTIFIER_SCHEME, Kt as PROJECT_GUTENBERG_MAX_SUBJECTS, tn as PROJECT_GUTENBERG_PROVIDER_ID, _t as createGoogleBooksProvider, Lt as createOpenLibraryProvider, rn as createProjectGutenbergProvider, Ae as fetchMetadata, tt as googleBooksCoverUrl, Ve as googleBooksLookupFromInput, it as googleBooksVolumeUrl, an as hasSearchTerms, Dt as marcLanguageToBcp47, p as metadataAuthors, je as metadataInputFromResolvedArchive, y as normalizeForComparison, U as parseGoogleBooksVolume, Ke as parseGoogleBooksVolumesResponse, wt as parseOpenLibrarySearchResponse, Gt as parseProjectGutenbergRdf, se as personNameSimilarity, q as projectGutenbergLookupFromInput, rt as resolveGoogleBooksVolume, jt as resolveOpenLibraryDoc, en as resolveProjectGutenbergRecord, we as responseErrorStatus, Le as retryWithBackoff, Ce as scoreMetadataCandidate, x as textSimilarity, ie as titleSimilarity, g as toIsbn13 };
1108
1123
 
1109
1124
  //# sourceMappingURL=index.js.map