@prose-reader/archive-reader 1.358.0 → 1.360.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.
@@ -88,17 +88,45 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
88
88
  }, ...d],
89
89
  close: () => Promise.resolve()
90
90
  });
91
- }, x = (e) => !e.dir, S = (e) => e.dir, C = (e, t) => {
91
+ }, x = (e) => !e.dir, ee = (e) => e.dir, S = (e, t) => {
92
92
  let n = e.recordsByUri.get(t);
93
93
  return n && x(n) ? n : void 0;
94
- }, w = (e) => f(e.encodingFormat ?? "") || o(e.basename), T = (e) => x(e) && w(e)?.startsWith("image/") === !0, E = (e) => e.records.filter(x).filter(T), D = async (e) => new TextDecoder().decode(await e.arrayBuffer()), O = (e) => {
94
+ }, C = (e) => f(e.encodingFormat ?? "") || o(e.basename), w = (e) => x(e) && C(e)?.startsWith("image/") === !0, T = (e) => e.records.filter(x).filter(w), E = async (e) => new TextDecoder().decode(await e.arrayBuffer()), D = (e) => {
95
95
  let t = e.records.filter((e) => !e.dir).find((e) => e.uri.endsWith(".opf"));
96
96
  return {
97
97
  data: t,
98
98
  basePath: t?.uri.substring(0, t.uri.lastIndexOf("/")) || ""
99
99
  };
100
- }, k = (e) => e === void 0 || e.trim().length === 0 ? [] : e.trim().split(/\s+/).filter((e) => e.length > 0), A = (e) => {
101
- let t = k(e);
100
+ }, O = (e) => e === void 0 || e.trim().length === 0 ? [] : e.trim().split(/\s+/).filter((e) => e.length > 0), k = Object.freeze([
101
+ "opf:scheme",
102
+ "opf:Scheme",
103
+ "scheme"
104
+ ]), te = {
105
+ "02": "ISBN",
106
+ "03": "GTIN",
107
+ "04": "UPC",
108
+ "05": "ISMN",
109
+ "06": "DOI",
110
+ 13: "LCCN",
111
+ 14: "GTIN",
112
+ 15: "ISBN",
113
+ 22: "URN",
114
+ 23: "OCLC",
115
+ 24: "ISBN",
116
+ 25: "ISMN",
117
+ 26: "DOI",
118
+ 34: "GTIN",
119
+ 35: "ARK"
120
+ }, A = (e) => {
121
+ let t = e?.value?.trim();
122
+ if (!(t === void 0 || t.length === 0)) return e?.scheme?.trim().toLowerCase() === "onix:codelist5" ? te[t] ?? t : t;
123
+ }, ne = (e) => {
124
+ for (let t of k) {
125
+ let n = e[t];
126
+ if (n !== void 0) return n;
127
+ }
128
+ }, re = (e) => {
129
+ let t = O(e);
102
130
  if (t.length === 0) return {};
103
131
  let n;
104
132
  t.includes("rendition:layout-reflowable") && (n = "reflowable"), t.includes("rendition:layout-pre-paginated") && (n = "pre-paginated");
@@ -109,19 +137,19 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
109
137
  ...t.includes("page-spread-left") ? { pageSpreadLeft: !0 } : {},
110
138
  ...t.includes("page-spread-right") ? { pageSpreadRight: !0 } : {}
111
139
  };
112
- }, j = (e) => e.includes(":") ? e.slice(e.lastIndexOf(":") + 1) : e, M = (e, t) => j(e).toLowerCase() === t.toLowerCase(), ee = (e) => e.type === "element", N = (e, t) => {
113
- for (let n of e.children) if (ee(n) && M(n.name, t)) return n;
114
- }, P = (e, t) => {
140
+ }, j = (e) => e.includes(":") ? e.slice(e.lastIndexOf(":") + 1) : e, ie = (e, t) => j(e).toLowerCase() === t.toLowerCase(), ae = (e) => e.type === "element", M = (e, t) => {
141
+ for (let n of e.children) if (ae(n) && ie(n.name, t)) return n;
142
+ }, N = (e, t) => {
115
143
  let n = [];
116
- for (let r of e.children) ee(r) && M(r.name, t) && n.push(r);
144
+ for (let r of e.children) ae(r) && ie(r.name, t) && n.push(r);
117
145
  return n;
118
- }, te = (e, t) => {
146
+ }, oe = (e, t) => {
119
147
  let n = [];
120
148
  return e.eachChild((e) => {
121
149
  if (j(e.name).toLowerCase() !== "identifier") return;
122
150
  let r = e.val.trim();
123
151
  if (r.length === 0) return;
124
- let i = (e.attr["opf:scheme"] ?? e.attr["opf:Scheme"] ?? e.attr.scheme)?.trim(), a = e.attr.id?.trim(), o = a !== void 0 && a.length > 0 ? a : void 0;
152
+ let i = ne(e.attr)?.trim(), a = e.attr.id?.trim(), o = a !== void 0 && a.length > 0 ? a : void 0;
125
153
  n.push({
126
154
  value: r,
127
155
  ...i !== void 0 && i.length > 0 ? { scheme: i } : {},
@@ -129,7 +157,7 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
129
157
  ...o !== void 0 && o === t ? { unique: !0 } : {}
130
158
  });
131
159
  }), n;
132
- }, ne = (e) => {
160
+ }, se = (e) => {
133
161
  let t = [];
134
162
  return e.eachChild((e) => {
135
163
  if (j(e.name).toLowerCase() !== "title") return;
@@ -141,46 +169,46 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
141
169
  ...r !== void 0 && r.length > 0 ? { id: r } : {}
142
170
  });
143
171
  }), t;
144
- }, F = (e, t) => {
172
+ }, P = (e, t) => {
145
173
  let n;
146
174
  return e.eachChild((e) => {
147
175
  if (n !== void 0 || j(e.name).toLowerCase() !== t.toLowerCase()) return;
148
176
  let r = e.val.trim();
149
177
  r.length > 0 && (n = r);
150
178
  }), n;
151
- }, re = (e, t) => {
179
+ }, ce = (e, t) => {
152
180
  let n = [];
153
181
  return e.eachChild((e) => {
154
182
  if (j(e.name).toLowerCase() !== t.toLowerCase()) return;
155
183
  let r = e.val.trim();
156
184
  r.length > 0 && n.push(r);
157
185
  }), n;
158
- }, ie = (e) => {
186
+ }, le = (e) => {
159
187
  let t;
160
188
  return e.eachChild((e) => {
161
189
  if (t !== void 0 || j(e.name).toLowerCase() !== "meta" || e.attr.name?.toLowerCase() !== "cover") return;
162
190
  let n = e.attr.content?.trim();
163
191
  n !== void 0 && n.length > 0 && (t = n);
164
192
  }), t;
165
- }, ae = ({ manifestItems: e, metadataEl: t }) => {
166
- let n = (e) => e.mediaType?.toLowerCase().includes("image/") === !0, r = e.find((e) => n(e) ? k(e.properties).includes("cover-image") : !1);
193
+ }, ue = ({ manifestItems: e, metadataEl: t }) => {
194
+ let n = (e) => e.mediaType?.toLowerCase().includes("image/") === !0, r = e.find((e) => n(e) ? O(e.properties).includes("cover-image") : !1);
167
195
  if (r !== void 0) return r.href;
168
196
  if (t !== void 0) {
169
- let r = ie(t);
197
+ let r = le(t);
170
198
  if (r !== void 0) {
171
199
  let t = e.find((e) => e.id === r && n(e));
172
200
  if (t !== void 0) return t.href;
173
201
  }
174
202
  }
175
203
  return e.find((e) => e.id.toLowerCase().includes("cover") && n(e))?.href;
176
- }, I = (e, t) => {
204
+ }, F = (e, t) => {
177
205
  let n = e.attr[t]?.trim();
178
206
  return n !== void 0 && n.length > 0 ? n : void 0;
179
- }, oe = (e) => {
207
+ }, de = (e) => {
180
208
  let t = [];
181
209
  return e.eachChild((e) => {
182
210
  if (j(e.name).toLowerCase() !== "meta") return;
183
- let n = I(e, "property"), r = I(e, "refines"), i = I(e, "scheme"), a = I(e, "id"), o = I(e, "name"), s = I(e, "content"), c = e.val.trim(), l = c.length > 0 ? c : void 0, u = {
211
+ let n = F(e, "property"), r = F(e, "refines"), i = F(e, "scheme"), a = F(e, "id"), o = F(e, "name"), s = F(e, "content"), c = e.val.trim(), l = c.length > 0 ? c : void 0, u = {
184
212
  ...n === void 0 ? {} : { property: n },
185
213
  ...r === void 0 ? {} : { refines: r },
186
214
  ...i === void 0 ? {} : { scheme: i },
@@ -191,14 +219,14 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
191
219
  };
192
220
  Object.keys(u).length !== 0 && t.push(u);
193
221
  }), t;
194
- }, se = (e, t) => e.replace(/^#/, "") === t, ce = (e, t) => {
222
+ }, fe = (e, t) => e.replace(/^#/, "") === t, pe = (e, t) => {
195
223
  let n = [];
196
224
  return e.eachChild((e) => {
197
225
  let r = j(e.name).toLowerCase();
198
226
  if (r !== "creator" && r !== "contributor") return;
199
227
  let i = e.val.trim();
200
228
  if (i.length === 0) return;
201
- let a = I(e, "id"), o = (e) => a === void 0 ? [] : t.flatMap((t) => t.refines !== void 0 && se(t.refines, a) && t.property === e && t.value !== void 0 ? [t.value] : []), s = I(e, "opf:role") ?? I(e, "role"), c = [...s === void 0 ? [] : [s], ...o("role")], l = I(e, "opf:file-as") ?? I(e, "file-as") ?? o("file-as")[0];
229
+ let a = F(e, "id"), o = (e) => a === void 0 ? [] : t.flatMap((t) => t.refines !== void 0 && fe(t.refines, a) && t.property === e && t.value !== void 0 ? [t.value] : []), s = F(e, "opf:role") ?? F(e, "role"), c = [...s === void 0 ? [] : [s], ...o("role")], l = F(e, "opf:file-as") ?? F(e, "file-as") ?? o("file-as")[0];
202
230
  n.push({
203
231
  name: i,
204
232
  source: r,
@@ -207,14 +235,14 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
207
235
  ...l === void 0 ? {} : { fileAs: l }
208
236
  });
209
237
  }), n;
210
- }, L = (e, t) => {
211
- let n = P(e, "meta").find((e) => e.attr.property === t)?.val;
238
+ }, I = (e, t) => {
239
+ let n = N(e, "meta").find((e) => e.attr.property === t)?.val;
212
240
  if (!(n === void 0 || n.trim().length === 0)) return n;
213
- }, le = (e) => {
214
- let t = N(e, "guide");
241
+ }, me = (e) => {
242
+ let t = M(e, "guide");
215
243
  if (t === void 0) return [];
216
244
  let n = [];
217
- for (let e of P(t, "reference")) {
245
+ for (let e of N(t, "reference")) {
218
246
  let t = e.attr.href?.trim();
219
247
  t === void 0 || t.length === 0 || n.push({
220
248
  href: t,
@@ -223,7 +251,7 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
223
251
  });
224
252
  }
225
253
  return n;
226
- }, ue = (e) => {
254
+ }, he = (e) => {
227
255
  let t = e.attr.id, n = e.attr.href;
228
256
  if (t === void 0 || t.length === 0 || n === void 0 || n.length === 0) return;
229
257
  let r = e.attr["media-type"], i = e.attr.properties?.trim();
@@ -233,24 +261,24 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
233
261
  ...r !== void 0 && r.length > 0 ? { mediaType: r } : {},
234
262
  ...i !== void 0 && i.length > 0 ? { properties: i } : {}
235
263
  };
236
- }, de = (e) => {
264
+ }, ge = (e) => {
237
265
  let t = [], n = /* @__PURE__ */ new Map();
238
- for (let r of P(e, "item")) {
239
- let e = ue(r);
266
+ for (let r of N(e, "item")) {
267
+ let e = he(r);
240
268
  e !== void 0 && (t.push(e), n.set(e.id, e));
241
269
  }
242
270
  return {
243
271
  items: t,
244
272
  byId: n
245
273
  };
246
- }, fe = (e, t) => {
274
+ }, _e = (e, t) => {
247
275
  let n = [];
248
- for (let r of P(t, "itemref")) {
276
+ for (let r of N(t, "itemref")) {
249
277
  let t = r.attr.idref;
250
278
  if (t === void 0 || t.trim().length === 0) continue;
251
279
  let i = e.get(t);
252
280
  if (i === void 0) continue;
253
- let a = A(r.attr.properties);
281
+ let a = re(r.attr.properties);
254
282
  n.push({
255
283
  idref: t,
256
284
  id: i.id,
@@ -264,24 +292,24 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
264
292
  });
265
293
  }
266
294
  return n;
267
- }, pe = (e) => {
268
- let t = new h(e), n = N(t, "manifest"), r = N(t, "spine"), i = N(t, "metadata"), a = t.attr["unique-identifier"]?.trim(), o = a !== void 0 && a.length > 0 ? a : void 0, s = [], c = [];
295
+ }, ve = (e) => {
296
+ let t = new h(e), n = M(t, "manifest"), r = M(t, "spine"), i = M(t, "metadata"), a = t.attr["unique-identifier"]?.trim(), o = a !== void 0 && a.length > 0 ? a : void 0, s = [], c = [];
269
297
  if (n !== void 0) {
270
- let { items: e, byId: t } = de(n);
271
- s = e, r !== void 0 && (c = fe(t, r));
298
+ let { items: e, byId: t } = ge(n);
299
+ s = e, r !== void 0 && (c = _e(t, r));
272
300
  }
273
- let l = r?.attr["page-progression-direction"], u = l !== void 0 && l.trim().length > 0 ? l : void 0, d = r?.attr.toc, f = d !== void 0 && d.trim().length > 0 ? d.trim() : void 0, p = [], m, g, _, v, y = [], b = [], x = [], S = [], C, w, T, E = [], D = [];
274
- i !== void 0 && (p = ne(i), m = F(i, "publisher"), g = F(i, "description"), _ = F(i, "rights"), v = F(i, "date"), y = re(i, "creator"), x = re(i, "language"), S = re(i, "subject"), C = L(i, "rendition:layout"), w = L(i, "rendition:flow"), T = L(i, "rendition:spread"), E = oe(i), b = ce(i, E), D.push(...te(i, o)));
275
- let O = ae({
301
+ let l = r?.attr["page-progression-direction"], u = l !== void 0 && l.trim().length > 0 ? l : void 0, d = r?.attr.toc, f = d !== void 0 && d.trim().length > 0 ? d.trim() : void 0, p = [], m, g, _, v, y = [], b = [], x = [], ee = [], S, C, w, T = [], E = [];
302
+ i !== void 0 && (p = se(i), m = P(i, "publisher"), g = P(i, "description"), _ = P(i, "rights"), v = P(i, "date"), y = ce(i, "creator"), x = ce(i, "language"), ee = ce(i, "subject"), S = I(i, "rendition:layout"), C = I(i, "rendition:flow"), w = I(i, "rendition:spread"), T = de(i), b = pe(i, T), E.push(...oe(i, o)));
303
+ let D = ue({
276
304
  manifestItems: s,
277
305
  metadataEl: i
278
- }), k = le(t);
306
+ }), O = me(t);
279
307
  return {
280
308
  kind: "opf",
281
309
  manifestItems: s,
282
310
  spineRows: c,
283
311
  spineTocIdref: f,
284
- identifiers: D,
312
+ identifiers: E,
285
313
  titles: p,
286
314
  creators: y,
287
315
  contributors: b,
@@ -289,43 +317,43 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
289
317
  description: g,
290
318
  rights: _,
291
319
  languages: x,
292
- subjects: S,
320
+ subjects: ee,
293
321
  date: v,
294
- coverHref: O,
295
- renditionLayoutMeta: C,
296
- renditionFlowMeta: w,
297
- renditionSpreadMeta: T,
322
+ coverHref: D,
323
+ renditionLayoutMeta: S,
324
+ renditionFlowMeta: C,
325
+ renditionSpreadMeta: w,
298
326
  pageProgressionDirection: u,
299
- guide: k,
300
- metas: E
327
+ guide: O,
328
+ metas: T
301
329
  };
302
330
  };
303
331
  //#endregion
304
332
  //#region src/metadata/opf/readArchiveOpf.ts
305
- async function R(e) {
306
- let { data: t, basePath: n } = O(e) || {};
333
+ async function L(e) {
334
+ let { data: t, basePath: n } = D(e) || {};
307
335
  if (!(!t || t.dir)) return {
308
- opf: pe(await D(t)),
336
+ opf: ve(await E(t)),
309
337
  basePath: n
310
338
  };
311
339
  }
312
340
  //#endregion
313
341
  //#region src/metadata/apple/parse.ts
314
- var me = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("option").map((e) => ({
342
+ var R = "com.apple.ibooks.display-options.xml", ye = (e) => e.childrenNamed("option").map((e) => ({
315
343
  name: e.attr?.name,
316
344
  value: e.val
317
- })), ge = (e) => {
345
+ })), be = (e) => {
318
346
  let t = new h(e);
319
347
  if (t.name?.toLowerCase() !== "display_options") return { kind: "apple" };
320
348
  let n = t.childNamed("platform");
321
349
  return {
322
350
  kind: "apple",
323
- displayOptions: { ...n === void 0 ? {} : { platform: { options: he(n) } } }
351
+ displayOptions: { ...n === void 0 ? {} : { platform: { options: ye(n) } } }
324
352
  };
325
- }, z = "ComicInfo.xml", _e = /* @__PURE__ */ "AgeRating.AlternateCount.AlternateNumber.AlternateSeries.BlackAndWhite.Characters.Colorist.CommunityRating.Count.CoverArtist.Day.Editor.Format.Genre.GTIN.Imprint.Inker.LanguageISO.Letterer.Locations.MainCharacterOrTeam.Manga.Month.Notes.Number.PageCount.Penciller.Publisher.Review.ScanInformation.Series.SeriesGroup.StoryArc.StoryArcNumber.Summary.Tags.Teams.Title.Translator.Volume.Web.Writer.Year".split("."), ve = /* @__PURE__ */ new Set(["Pages", "ComicInfo"]), ye = (e) => e.children.some((e) => e.type === "element"), be = (e) => {
353
+ }, z = "ComicInfo.xml", xe = /* @__PURE__ */ "AgeRating.AlternateCount.AlternateNumber.AlternateSeries.BlackAndWhite.Characters.Colorist.CommunityRating.Count.CoverArtist.Day.Editor.Format.Genre.GTIN.Imprint.Inker.LanguageISO.Letterer.Locations.MainCharacterOrTeam.Manga.Month.Notes.Number.PageCount.Penciller.Publisher.Review.ScanInformation.Series.SeriesGroup.StoryArc.StoryArcNumber.Summary.Tags.Teams.Title.Translator.Volume.Web.Writer.Year".split("."), Se = /* @__PURE__ */ new Set(["Pages", "ComicInfo"]), Ce = (e) => e.children.some((e) => e.type === "element"), we = (e) => {
326
354
  let t = e.val.trim();
327
355
  return t.length > 0 ? t : void 0;
328
- }, xe = (e) => {
356
+ }, Te = (e) => {
329
357
  let t;
330
358
  try {
331
359
  t = new h(e);
@@ -335,28 +363,28 @@ var me = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("op
335
363
  }
336
364
  let n = {};
337
365
  return t.eachChild((e) => {
338
- if (e.type !== "element" || ve.has(e.name) || ye(e)) return;
339
- let t = be(e);
366
+ if (e.type !== "element" || Se.has(e.name) || Ce(e)) return;
367
+ let t = we(e);
340
368
  t !== void 0 && n[e.name] === void 0 && (n[e.name] = t);
341
369
  }), {
342
370
  kind: "comicInfo",
343
371
  ...n
344
372
  };
345
- }, Se = "com.kobobooks.display-options.xml", Ce = (e) => {
373
+ }, Ee = "com.kobobooks.display-options.xml", De = (e) => {
346
374
  let t = e.childNamed("platform");
347
375
  if (!t) return {};
348
376
  for (let e of t.childrenNamed("option")) if (e.attr?.name === "fixed-layout") return e.val.trim().toLowerCase() === "true" ? { renditionLayout: "pre-paginated" } : {};
349
377
  return {};
350
- }, we = (e) => {
378
+ }, Oe = (e) => {
351
379
  let t = new h(e);
352
380
  return t.name?.toLowerCase() === "display_options" ? {
353
381
  kind: "kobo",
354
- ...Ce(t)
382
+ ...De(t)
355
383
  } : { kind: "kobo" };
356
384
  }, B = (e) => {
357
385
  let t = Object.entries(e).filter(([, e]) => e !== void 0);
358
386
  return Object.fromEntries(t);
359
- }, Te = (e) => {
387
+ }, ke = (e) => {
360
388
  let t = [];
361
389
  for (let n of e.split("/")) if (n !== ".") {
362
390
  if (n === "..") {
@@ -366,16 +394,16 @@ var me = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("op
366
394
  t.push(n);
367
395
  }
368
396
  return t.join("/");
369
- }, Ee = (e, t) => /^https?:\/\//.test(e) ? e : Te(t ? `${t}/${e}` : e), De = (e) => {
397
+ }, Ae = (e, t) => /^https?:\/\//.test(e) ? e : ke(t ? `${t}/${e}` : e), je = (e) => {
370
398
  let t = e?.trim().toLowerCase();
371
399
  return t === "reflowable" || t === "pre-paginated" ? t : void 0;
372
- }, Oe = (e, { opf: t, basePath: n }) => {
373
- let r = De(t.renditionLayoutMeta), i = t.spineRows.map((t) => {
374
- let r = Ee(t.href, n);
400
+ }, Me = (e, { opf: t, basePath: n }) => {
401
+ let r = je(t.renditionLayoutMeta), i = t.spineRows.map((t) => {
402
+ let r = Ae(t.href, n);
375
403
  return {
376
404
  row: t,
377
405
  uri: r,
378
- record: C(e, r)
406
+ record: S(e, r)
379
407
  };
380
408
  }), a = i.reduce((e, { record: t }) => e + (t?.size ?? 0), 0);
381
409
  return i.map(({ row: e, uri: n, record: i }) => B({
@@ -389,11 +417,11 @@ var me = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("op
389
417
  pageSpreadRight: e.pageSpreadRight,
390
418
  progressionWeight: a > 0 ? (i?.size ?? 0) / a : 1 / t.spineRows.length
391
419
  }));
392
- }, ke = z.toLowerCase(), Ae = me.toLowerCase(), je = (e) => {
420
+ }, Ne = z.toLowerCase(), Pe = R.toLowerCase(), Fe = (e) => {
393
421
  let t = e.basename.toLowerCase();
394
- return t === ke || t === Ae || e.uri.endsWith("com.kobobooks.display-options.xml") || t.endsWith(".db");
395
- }, Me = (e) => {
396
- let t = e.records.filter(x).filter((e) => !je(e));
422
+ return t === Ne || t === Pe || e.uri.endsWith("com.kobobooks.display-options.xml") || t.endsWith(".db");
423
+ }, Ie = (e) => {
424
+ let t = e.records.filter(x).filter((e) => !Fe(e));
397
425
  return t.map((e) => {
398
426
  let n = f(e.encodingFormat ?? "") || o(e.basename);
399
427
  return B({
@@ -405,18 +433,18 @@ var me = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("op
405
433
  });
406
434
  });
407
435
  }, V = async (e, { opf: t } = {}) => {
408
- let n = t ?? await R(e).catch(() => void 0);
409
- return n ? Oe(e, n) : Me(e);
410
- }, Ne = (e, t) => {
411
- let n = C(e, t);
436
+ let n = t ?? await L(e).catch(() => void 0);
437
+ return n ? Me(e, n) : Ie(e);
438
+ }, Le = (e, t) => {
439
+ let n = S(e, t);
412
440
  if (n !== void 0) return f(n.encodingFormat ?? "") || o(n.basename);
413
- }, Pe = async (e, { opf: t, readingOrder: n } = {}) => {
414
- let r = t ?? await R(e).catch(() => void 0);
441
+ }, Re = async (e, { opf: t, readingOrder: n } = {}) => {
442
+ let r = t ?? await L(e).catch(() => void 0);
415
443
  if (r !== void 0 && r.opf.coverHref !== void 0) {
416
- let t = Ee(r.opf.coverHref, r.basePath);
444
+ let t = Ae(r.opf.coverHref, r.basePath);
417
445
  return B({
418
446
  uri: t,
419
- mediaType: Ne(e, t),
447
+ mediaType: Le(e, t),
420
448
  confidence: "derived"
421
449
  });
422
450
  }
@@ -426,60 +454,60 @@ var me = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("op
426
454
  mediaType: i.mediaType,
427
455
  confidence: "assumed"
428
456
  });
429
- }, Fe = (e) => {
457
+ }, ze = (e) => {
430
458
  let t = e.descendantWithPath("head")?.childrenNamed("meta").find((e) => e.attr.name === "viewport");
431
459
  return !!(t && t.attr.name === "viewport");
432
- }, Ie = async (e, n) => {
460
+ }, Be = async (e, n) => {
433
461
  if (n.length === 0) return !1;
434
462
  for (let r of n) {
435
463
  if (!d({
436
464
  mimeType: r.mediaType,
437
465
  uri: r.uri
438
466
  })) return !1;
439
- let n = C(e, r.uri);
467
+ let n = S(e, r.uri);
440
468
  if (!n || !x(n)) return !1;
441
469
  try {
442
- if (!Fe(new h(await D(n)))) return !1;
470
+ if (!ze(new h(await E(n)))) return !1;
443
471
  } catch (e) {
444
472
  return t.error(`layout scan: unable to inspect ${r.uri}`, e), !1;
445
473
  }
446
474
  }
447
475
  return !0;
448
- }, Le = me.toLowerCase();
449
- async function Re(e) {
450
- let t = e.records.find((e) => x(e) && e.basename.toLowerCase() === Le);
451
- if (t) return ge(await D(t));
476
+ }, Ve = R.toLowerCase();
477
+ async function He(e) {
478
+ let t = e.records.find((e) => x(e) && e.basename.toLowerCase() === Ve);
479
+ if (t) return be(await E(t));
452
480
  }
453
481
  //#endregion
454
482
  //#region src/metadata/comicInfo/getArchiveHasComicInfo.ts
455
- var ze = z.toLowerCase(), Be = (e) => e.records.find((e) => x(e) && e.basename.toLowerCase() === ze), Ve = [
483
+ var Ue = z.toLowerCase(), We = (e) => e.records.find((e) => x(e) && e.basename.toLowerCase() === Ue), Ge = [
456
484
  "Unknown",
457
485
  "No",
458
486
  "Yes",
459
487
  "YesAndRightToLeft"
460
- ], He = (e) => {
461
- for (let t of Ve) if (t === e) return !0;
488
+ ], Ke = (e) => {
489
+ for (let t of Ge) if (t === e) return !0;
462
490
  return !1;
463
491
  };
464
492
  //#endregion
465
493
  //#region src/metadata/comicInfo/readArchiveComicInfo.ts
466
- async function Ue(e) {
467
- let t = Be(e);
468
- if (t) return xe(await D(t));
494
+ async function qe(e) {
495
+ let t = We(e);
496
+ if (t) return Te(await E(t));
469
497
  }
470
498
  //#endregion
471
499
  //#region src/metadata/kobo/readArchiveKobo.ts
472
- async function We(e) {
500
+ async function Je(e) {
473
501
  let n = e.records.filter((e) => x(e) && e.uri.endsWith("com.kobobooks.display-options.xml"));
474
502
  if (n.length === 0) return;
475
503
  let r;
476
504
  for (let e of n) {
477
- let n = await D(e);
505
+ let n = await E(e);
478
506
  try {
479
- let { renditionLayout: e } = we(n);
507
+ let { renditionLayout: e } = Oe(n);
480
508
  e && (r = e);
481
509
  } catch (n) {
482
- t.error(`Unable to parse ${Se} (${e.uri})`, n);
510
+ t.error(`Unable to parse ${Ee} (${e.uri})`, n);
483
511
  }
484
512
  }
485
513
  return {
@@ -489,11 +517,11 @@ async function We(e) {
489
517
  }
490
518
  //#endregion
491
519
  //#region src/metadata/opf/getSpineItemFilesFromArchive.ts
492
- var Ge = async ({ archive: e, archiveOpf: t }) => {
520
+ var Ye = async ({ archive: e, archiveOpf: t }) => {
493
521
  if (!t) return [];
494
522
  let { opf: n, basePath: r } = t, { spineRows: i } = n;
495
523
  return e.records.filter((e) => i.find((t) => r ? `${r}/${t.href}` === e.uri : `${t.href}` === e.uri));
496
- }, Ke = (e) => e.toLowerCase().endsWith(".opf"), qe = (e) => e.records.some((e) => !e.dir && (Ke(e.basename) || Ke(e.uri))), Je = (e) => {
524
+ }, Xe = (e) => e.toLowerCase().endsWith(".opf"), Ze = (e) => e.records.some((e) => !e.dir && (Xe(e.basename) || Xe(e.uri))), Qe = (e) => {
497
525
  let t = e.displayOptions?.platform?.options, n = t?.find((e) => e.name === "fixed-layout")?.value.trim().toLowerCase(), r = n === "true" || n !== "false" && void 0, i = B({
498
526
  fixedLayout: r,
499
527
  options: t !== void 0 && t.length > 0 ? t.map(({ name: e, value: t }) => B({
@@ -505,7 +533,7 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
505
533
  renditionLayout: r === !0 ? "pre-paginated" : void 0,
506
534
  apple: Object.keys(i).length > 0 ? i : void 0
507
535
  });
508
- }, Ye = (e) => {
536
+ }, $e = (e) => {
509
537
  switch (e.Manga) {
510
538
  case "YesAndRightToLeft": return "rtl";
511
539
  case "Yes":
@@ -526,25 +554,25 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
526
554
  if (t === void 0 || !/^\d+(\.\d+)?$/.test(t)) return;
527
555
  let n = Number.parseFloat(t);
528
556
  return Number.isFinite(n) ? n : void 0;
529
- }, Xe = (e) => {
557
+ }, et = (e) => {
530
558
  let t = H(e)?.toLowerCase();
531
559
  if (t === "yes") return !0;
532
560
  if (t === "no") return !1;
533
- }, Ze = (e) => {
561
+ }, tt = (e) => {
534
562
  switch (e.Manga) {
535
563
  case "Yes":
536
564
  case "YesAndRightToLeft": return !0;
537
565
  case "No": return !1;
538
566
  default: return;
539
567
  }
540
- }, Qe = (e) => {
568
+ }, nt = (e) => {
541
569
  let t = W(e.Year), n = W(e.Month), r = W(e.Day);
542
570
  if (!(t === void 0 && n === void 0 && r === void 0)) return {
543
571
  ...t === void 0 ? {} : { year: t },
544
572
  ...n === void 0 ? {} : { month: n },
545
573
  ...r === void 0 ? {} : { day: r }
546
574
  };
547
- }, $e = [
575
+ }, rt = [
548
576
  ["Writer", "author"],
549
577
  ["Penciller", "penciler"],
550
578
  ["Inker", "inker"],
@@ -553,9 +581,9 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
553
581
  ["CoverArtist", "coverArtist"],
554
582
  ["Editor", "editor"],
555
583
  ["Translator", "translator"]
556
- ], et = (e) => {
584
+ ], it = (e) => {
557
585
  let t = /* @__PURE__ */ new Map();
558
- for (let [n, r] of $e) for (let i of U(e[n])) {
586
+ for (let [n, r] of rt) for (let i of U(e[n])) {
559
587
  let e = t.get(i);
560
588
  e ? e.roles.includes(r) || e.roles.push(r) : t.set(i, {
561
589
  name: i,
@@ -563,21 +591,21 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
563
591
  });
564
592
  }
565
593
  return [...t.values()];
566
- }, tt = (e) => {
594
+ }, at = (e) => {
567
595
  let t = B({
568
596
  name: H(e.Series),
569
597
  position: G(e.Number),
570
598
  total: W(e.Count)
571
599
  });
572
600
  return Object.keys(t).length > 0 ? t : void 0;
573
- }, nt = (e) => {
601
+ }, ot = (e) => {
574
602
  let t = H(e.AlternateSeries);
575
603
  if (t !== void 0) return B({
576
604
  name: t,
577
605
  position: G(e.AlternateNumber),
578
606
  total: W(e.AlternateCount)
579
607
  });
580
- }, rt = (e) => {
608
+ }, st = (e) => {
581
609
  let t = U(e.StoryArc);
582
610
  if (t.length === 0) return [];
583
611
  let n = U(e.StoryArcNumber);
@@ -585,20 +613,20 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
585
613
  name: e,
586
614
  position: G(n[t])
587
615
  }));
588
- }, K = (e) => e.length > 0 ? e : void 0, it = (e) => (e.Web ?? "").split(/\s+/).filter((e) => e.length > 0), at = (e) => {
616
+ }, K = (e) => e.length > 0 ? e : void 0, ct = (e) => (e.Web ?? "").split(/\s+/).filter((e) => e.length > 0), lt = (e) => {
589
617
  try {
590
618
  let t = new URL(e);
591
619
  return (t.protocol === "http:" || t.protocol === "https:") && t.hostname.length > 0;
592
620
  } catch {
593
621
  return !1;
594
622
  }
595
- }, ot = (e) => e.filter((e, t, n) => at(e) && n.indexOf(e) === t).map((e) => ({
623
+ }, ut = (e) => e.filter((e, t, n) => lt(e) && n.indexOf(e) === t).map((e) => ({
596
624
  value: e,
597
625
  scheme: "URL"
598
- })), st = (e, t) => {
626
+ })), dt = (e, t) => {
599
627
  let n = B({
600
- manga: Ze(e),
601
- blackAndWhite: Xe(e.BlackAndWhite),
628
+ manga: tt(e),
629
+ blackAndWhite: et(e.BlackAndWhite),
602
630
  volume: W(e.Volume),
603
631
  format: H(e.Format),
604
632
  ageRating: H(e.AgeRating),
@@ -610,25 +638,25 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
610
638
  characters: K(U(e.Characters)),
611
639
  teams: K(U(e.Teams)),
612
640
  locations: K(U(e.Locations)),
613
- storyArcs: K(rt(e)),
614
- alternateSeries: nt(e)
641
+ storyArcs: K(st(e)),
642
+ alternateSeries: ot(e)
615
643
  });
616
644
  return Object.keys(n).length > 0 ? n : void 0;
617
- }, ct = (e) => {
645
+ }, ft = (e) => {
618
646
  let t = G(e.CommunityRating);
619
647
  return t !== void 0 && t <= 5 ? { value: t } : void 0;
620
- }, lt = (e) => {
621
- let t = tt(e), n = K(U(e.SeriesGroup).map((e) => ({ name: e })));
648
+ }, pt = (e) => {
649
+ let t = at(e), n = K(U(e.SeriesGroup).map((e) => ({ name: e })));
622
650
  if (!(t === void 0 && n === void 0)) return B({
623
651
  series: t === void 0 ? void 0 : [t],
624
652
  collection: n
625
653
  });
626
- }, ut = (e) => {
627
- let t = e.GTIN, n = H(t), r = it(e), i = [...n === void 0 ? [] : [{
654
+ }, mt = (e) => {
655
+ let t = e.GTIN, n = H(t), r = ct(e), i = [...n === void 0 ? [] : [{
628
656
  value: n,
629
657
  scheme: "GTIN"
630
- }], ...ot(r)], a = H(e.LanguageISO), o = [...U(e.Genre), ...U(e.Tags)], s = B({
631
- date: Qe(e),
658
+ }], ...ut(r)], a = H(e.LanguageISO), o = [...U(e.Genre), ...U(e.Tags)], s = B({
659
+ date: nt(e),
632
660
  publisher: H(e.Publisher),
633
661
  imprint: H(e.Imprint)
634
662
  }), c = H(e.Title);
@@ -638,35 +666,47 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
638
666
  publication: s.date !== void 0 || s.publisher !== void 0 || s.imprint !== void 0 ? { edition: s } : void 0,
639
667
  languages: a === void 0 ? void 0 : [a],
640
668
  subjects: K(o),
641
- contributors: K(et(e)),
642
- readingDirection: Ye(e),
669
+ contributors: K(it(e)),
670
+ readingDirection: $e(e),
643
671
  numberOfPages: W(e.PageCount),
644
- aggregateRating: ct(e),
672
+ aggregateRating: ft(e),
645
673
  identifiers: K(i),
646
- belongsTo: lt(e),
647
- comicInfo: st(e, r)
674
+ belongsTo: pt(e),
675
+ comicInfo: dt(e, r)
648
676
  });
649
- }, dt = (e) => B({
677
+ }, ht = (e) => B({
650
678
  renditionLayout: e.renditionLayout,
651
679
  kobo: e.renditionLayout === void 0 ? void 0 : { fixedLayout: e.renditionLayout === "pre-paginated" }
652
- }), ft = /[0-9Xx]+/g, pt = /^(?:97[89])?\d{9}[\dXx]$/, mt = (e) => {
680
+ }), gt = /[0-9Xx]+/g, _t = /^(?:97[89])?\d{9}[\dXx]$/, vt = (e) => {
653
681
  if (e == null) return;
654
682
  let t = String(e).trim().replace(/^urn:isbn:/i, "").replace(/^isbn[:\s-]*/i, ""), n = t.replace(/[^0-9Xx]/g, "");
655
683
  if (n.length === 10 || n.length === 13) return n.toUpperCase();
656
- for (let e of t.match(ft) ?? []) if (pt.test(e)) return e.toUpperCase();
657
- }, ht = (e) => {
658
- let t = mt(e);
684
+ for (let e of t.match(gt) ?? []) if (_t.test(e)) return e.toUpperCase();
685
+ }, yt = (e) => {
686
+ let t = vt(e);
659
687
  if (t !== void 0) return t.length === 10 || /^97[89]/.test(t) ? t : void 0;
660
- }, gt = /* @__PURE__ */ new Set([
688
+ }, bt = /* @__PURE__ */ new Set([
661
689
  8,
662
690
  12,
663
691
  13,
664
692
  14
665
- ]), _t = (e) => {
693
+ ]), xt = (e) => {
666
694
  if (e == null) return;
667
695
  let t = String(e).replace(/\D/g, "");
668
- if (!(t.length === 0 || !gt.has(t.length))) return t;
669
- }, vt = (e) => {
696
+ if (!(t.length === 0 || !bt.has(t.length))) return t;
697
+ }, St = new Map(Object.entries({
698
+ isbn: "ISBN",
699
+ gtin: "GTIN",
700
+ doi: "DOI",
701
+ googlebooks: "GoogleBooks",
702
+ openlibrary: "OpenLibrary",
703
+ projectgutenberg: "ProjectGutenberg",
704
+ url: "URL",
705
+ unknown: "Unknown"
706
+ })), q = (e) => {
707
+ let t = e.trim();
708
+ return St.get(t.toLowerCase()) ?? t;
709
+ }, Ct = (e) => {
670
710
  if (e === void 0) return;
671
711
  let t = e.trim().match(/^(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?/);
672
712
  if (t === null) return;
@@ -676,26 +716,14 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
676
716
  ...r === void 0 ? {} : { month: Number.parseInt(r, 10) },
677
717
  ...i === void 0 ? {} : { day: Number.parseInt(i, 10) }
678
718
  };
679
- }, yt = (e) => {
719
+ }, wt = (e) => {
680
720
  let t = e.trim();
681
721
  if (/^https?:\/\//i.test(t)) try {
682
722
  let e = new URL(t);
683
723
  if ((e.protocol === "http:" || e.protocol === "https:") && e.hostname.length > 0) return "URL";
684
724
  } catch {}
685
- return ht(t) === void 0 ? _t(t) === void 0 ? "Unknown" : "GTIN" : "ISBN";
686
- }, bt = (e) => {
687
- switch (e.trim().toLowerCase()) {
688
- case "isbn": return "ISBN";
689
- case "gtin": return "GTIN";
690
- case "doi": return "DOI";
691
- case "googlebooks": return "GoogleBooks";
692
- case "openlibrary": return "OpenLibrary";
693
- case "projectgutenberg": return "ProjectGutenberg";
694
- case "url": return "URL";
695
- case "unknown": return "Unknown";
696
- default: return e.trim();
697
- }
698
- }, xt = {
725
+ return yt(t) === void 0 ? xt(t) === void 0 ? "Unknown" : "GTIN" : "ISBN";
726
+ }, Tt = {
699
727
  art: "artist",
700
728
  aut: "author",
701
729
  clr: "colorist",
@@ -704,72 +732,53 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
704
732
  ill: "illustrator",
705
733
  nrt: "narrator",
706
734
  trl: "translator"
707
- }, St = (e) => e.map((e) => {
708
- let t = e.roles.map((e) => xt[e.trim().toLowerCase()] ?? e);
735
+ }, Et = (e) => e.map((e) => {
736
+ let t = e.roles.map((e) => Tt[e.trim().toLowerCase()] ?? e);
709
737
  return B({
710
738
  name: e.name,
711
739
  roles: t.length > 0 ? t : [e.source === "creator" ? "author" : "contributor"],
712
740
  sortAs: e.fileAs
713
741
  });
714
- }), q = (e, t) => e.refines !== void 0 && e.refines.replace(/^#/, "") === t, Ct = {
715
- "02": "ISBN",
716
- "03": "GTIN",
717
- "04": "UPC",
718
- "05": "ISMN",
719
- "06": "DOI",
720
- 13: "LCCN",
721
- 14: "GTIN",
722
- 15: "ISBN",
723
- 22: "URN",
724
- 23: "OCLC",
725
- 24: "ISBN",
726
- 25: "ISMN",
727
- 26: "DOI",
728
- 34: "GTIN",
729
- 35: "ARK"
730
- }, wt = (e) => {
731
- let t = e?.value?.trim();
732
- if (!(t === void 0 || t.length === 0)) return e?.scheme?.trim().toLowerCase() === "onix:codelist5" ? Ct[t] ?? t : t;
733
- }, Tt = (e, t) => {
742
+ }), J = (e, t) => e.refines !== void 0 && e.refines.replace(/^#/, "") === t, Dt = (e, t) => {
734
743
  let n = e.id;
735
- if (n !== void 0) return wt(t.find((e) => e.property === "identifier-type" && q(e, n) && e.value !== void 0));
736
- }, Et = (e) => {
744
+ if (n !== void 0) return A(t.find((e) => e.property === "identifier-type" && J(e, n) && e.value !== void 0));
745
+ }, Ot = (e) => {
737
746
  let t = e?.trim();
738
747
  if (t === void 0 || !/^\d+(\.\d+)?$/.test(t)) return;
739
748
  let n = Number.parseFloat(t);
740
749
  return Number.isFinite(n) ? n : void 0;
741
- }, Dt = (e) => {
750
+ }, kt = (e) => {
742
751
  let t = e?.trim();
743
752
  if (t === void 0 || !/^\d+$/.test(t)) return;
744
753
  let n = Number.parseInt(t, 10);
745
754
  return Number.isFinite(n) ? n : void 0;
746
- }, Ot = (e) => {
755
+ }, At = (e) => {
747
756
  let t = e?.trim();
748
757
  return t !== void 0 && t.length > 0 ? t : void 0;
749
- }, J = (e, t, n) => t === void 0 ? void 0 : e.find((e) => q(e, t) && e.property === n && e.value !== void 0)?.value, kt = (e, t) => e.map((e) => B({
758
+ }, Y = (e, t, n) => t === void 0 ? void 0 : e.find((e) => J(e, t) && e.property === n && e.value !== void 0)?.value, jt = (e, t) => e.map((e) => B({
750
759
  value: e.value,
751
- type: Ot(J(t, e.id, "title-type"))?.toLowerCase(),
752
- displaySeq: Dt(J(t, e.id, "display-seq")),
753
- sortAs: Ot(J(t, e.id, "file-as"))
754
- })), At = (e, t) => {
760
+ type: At(Y(t, e.id, "title-type"))?.toLowerCase(),
761
+ displaySeq: kt(Y(t, e.id, "display-seq")),
762
+ sortAs: At(Y(t, e.id, "file-as"))
763
+ })), Mt = (e, t) => {
755
764
  if (t === void 0) return;
756
765
  let n = e.flatMap((n) => {
757
- if (!q(n, t) || n.property !== "dcterms:identifier") return [];
758
- let r = Ot(n.value);
766
+ if (!J(n, t) || n.property !== "dcterms:identifier") return [];
767
+ let r = At(n.value);
759
768
  return r === void 0 ? [] : [{
760
769
  value: r,
761
- scheme: bt(wt(e.find((e) => n.id !== void 0 && q(e, n.id) && e.property === "identifier-type")) ?? yt(r))
770
+ scheme: q(A(e.find((e) => n.id !== void 0 && J(e, n.id) && e.property === "identifier-type")) ?? wt(r))
762
771
  }];
763
772
  });
764
773
  return n.length > 0 ? n : void 0;
765
- }, jt = (e) => {
774
+ }, Nt = (e) => {
766
775
  let t = [], n = [];
767
776
  for (let r of e) {
768
777
  if (r.property !== "belongs-to-collection" || r.value === void 0) continue;
769
- let i = r.id, a = (t) => J(e, i, t), o = a("collection-type")?.trim().toLowerCase(), s = B({
778
+ let i = r.id, a = (t) => Y(e, i, t), o = a("collection-type")?.trim().toLowerCase(), s = B({
770
779
  name: r.value,
771
- identifiers: At(e, i),
772
- position: Et(a("group-position"))
780
+ identifiers: Mt(e, i),
781
+ position: Ot(a("group-position"))
773
782
  });
774
783
  o === "series" ? t.push(s) : n.push(s);
775
784
  }
@@ -777,49 +786,49 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
777
786
  let n = e.find((e) => e.name?.toLowerCase() === "calibre:series" && e.content !== void 0)?.content;
778
787
  n !== void 0 && t.push(B({
779
788
  name: n,
780
- position: Et(e.find((e) => e.name?.toLowerCase() === "calibre:series_index")?.content)
789
+ position: Ot(e.find((e) => e.name?.toLowerCase() === "calibre:series_index")?.content)
781
790
  }));
782
791
  }
783
792
  return {
784
793
  series: t,
785
794
  collection: n
786
795
  };
787
- }, Mt = (e) => {
796
+ }, Pt = (e) => {
788
797
  let t = e?.trim();
789
798
  if (t === "scrolled-continuous" || t === "scrolled-doc" || t === "paginated" || t === "auto") return t;
790
- }, Nt = (e) => {
799
+ }, Ft = (e) => {
791
800
  let t = e?.trim();
792
801
  if (t === "none" || t === "landscape" || t === "portrait" || t === "both" || t === "auto") return t;
793
- }, Pt = (e) => {
794
- let { titles: t, contributors: n, publisher: r, description: i, rights: a, languages: o, subjects: s, date: c, renditionLayoutMeta: l, renditionFlowMeta: u, renditionSpreadMeta: d, pageProgressionDirection: f, identifiers: p, metas: m, kind: h, creators: g, manifestItems: _, spineRows: v, spineTocIdref: y, coverHref: b, guide: x, ...S } = e, C = f?.trim().toLowerCase(), w = C === "ltr" || C === "rtl" ? C : void 0, T = l?.trim().toLowerCase(), E = T === "reflowable" || T === "pre-paginated" ? T : void 0, D = St(n), O = kt(t, m), { series: k, collection: A } = jt(m), j = k.length > 0 || A.length > 0 ? B({
795
- series: k.length > 0 ? k : void 0,
796
- collection: A.length > 0 ? A : void 0
797
- }) : void 0, M = B({
798
- date: vt(c),
802
+ }, It = (e) => {
803
+ let { titles: t, contributors: n, publisher: r, description: i, rights: a, languages: o, subjects: s, date: c, renditionLayoutMeta: l, renditionFlowMeta: u, renditionSpreadMeta: d, pageProgressionDirection: f, identifiers: p, metas: m, kind: h, creators: g, manifestItems: _, spineRows: v, spineTocIdref: y, coverHref: b, guide: x, ...ee } = e, S = f?.trim().toLowerCase(), C = S === "ltr" || S === "rtl" ? S : void 0, w = l?.trim().toLowerCase(), T = w === "reflowable" || w === "pre-paginated" ? w : void 0, E = Et(n), D = jt(t, m), { series: O, collection: k } = Nt(m), te = O.length > 0 || k.length > 0 ? B({
804
+ series: O.length > 0 ? O : void 0,
805
+ collection: k.length > 0 ? k : void 0
806
+ }) : void 0, A = B({
807
+ date: Ct(c),
799
808
  publisher: r
800
809
  });
801
810
  return B({
802
- titles: O.length > 0 ? O : void 0,
811
+ titles: D.length > 0 ? D : void 0,
803
812
  description: i,
804
- publication: M.date !== void 0 || M.publisher !== void 0 ? { edition: M } : void 0,
813
+ publication: A.date !== void 0 || A.publisher !== void 0 ? { edition: A } : void 0,
805
814
  rights: a,
806
815
  languages: o.length > 0 ? [...o] : void 0,
807
816
  subjects: s.length > 0 ? [...s] : void 0,
808
- contributors: D.length > 0 ? D : void 0,
809
- readingDirection: w,
810
- renditionLayout: E,
811
- renditionFlow: Mt(u),
812
- renditionSpread: Nt(d),
817
+ contributors: E.length > 0 ? E : void 0,
818
+ readingDirection: C,
819
+ renditionLayout: T,
820
+ renditionFlow: Pt(u),
821
+ renditionSpread: Ft(d),
813
822
  identifiers: p.length > 0 ? p.map((e) => B({
814
823
  value: e.value,
815
- scheme: bt(e.scheme ?? Tt(e, m) ?? yt(e.value)),
824
+ scheme: q(e.scheme ?? Dt(e, m) ?? wt(e.value)),
816
825
  unique: e.unique
817
826
  })) : void 0,
818
- belongsTo: j,
827
+ belongsTo: te,
819
828
  properties: m.length > 0 ? [...m] : void 0
820
829
  });
821
- }, Ft = (e) => e.kind === "comicInfo" ? ut(e) : e.kind === "kobo" ? dt(e) : e.kind === "apple" ? Je(e) : Pt(e), It = (e) => {
822
- let t = e.opf === void 0 ? void 0 : Pt(e.opf), n = e.comicInfo === void 0 ? void 0 : ut(e.comicInfo), r = e.apple === void 0 ? void 0 : Je(e.apple), i = e.kobo === void 0 ? void 0 : dt(e.kobo), a = [...t?.identifiers ?? [], ...n?.identifiers ?? []], o = B({
830
+ }, Lt = (e) => e.kind === "comicInfo" ? mt(e) : e.kind === "kobo" ? ht(e) : e.kind === "apple" ? Qe(e) : It(e), Rt = (e) => {
831
+ let t = e.opf === void 0 ? void 0 : It(e.opf), n = e.comicInfo === void 0 ? void 0 : mt(e.comicInfo), r = e.apple === void 0 ? void 0 : Qe(e.apple), i = e.kobo === void 0 ? void 0 : ht(e.kobo), a = [...t?.identifiers ?? [], ...n?.identifiers ?? []], o = B({
823
832
  date: t?.publication?.edition?.date ?? n?.publication?.edition?.date,
824
833
  publisher: t?.publication?.edition?.publisher ?? n?.publication?.edition?.publisher,
825
834
  imprint: t?.publication?.edition?.imprint ?? n?.publication?.edition?.imprint
@@ -845,7 +854,7 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
845
854
  apple: r?.apple,
846
855
  kobo: i?.kobo
847
856
  });
848
- }, Lt = (e) => {
857
+ }, zt = (e) => {
849
858
  let t = [...e.records].sort((e, t) => p(e.uri, t.uri)), n = (e, t, r, i, a) => {
850
859
  let o = e.find((e) => e.title === t), [s, ...c] = r;
851
860
  return o ? s ? [...e.filter((e) => e !== o), {
@@ -874,75 +883,75 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
874
883
  let a = encodeURI(t.uri).replace(/#/g, "%23").replace(/\?/g, "%3F").replace(/\/$/, ""), o = t.uri.replace(/\/$/, "");
875
884
  return n(e, r, i, a, o);
876
885
  }, []);
877
- }, Rt = (e) => e ? e.children.map((e) => e instanceof _ ? e.text : e instanceof g ? Rt(e) : "").join("").trim() : "", zt = (e) => k(e.properties).includes("nav"), Bt = (e, { basePath: t }) => {
886
+ }, Bt = (e) => e ? e.children.map((e) => e instanceof _ ? e.text : e instanceof g ? Bt(e) : "").join("").trim() : "", Vt = (e) => O(e.properties).includes("nav"), Ht = (e, { basePath: t }) => {
878
887
  let n = {
879
888
  contents: [],
880
889
  path: "",
881
890
  containerHref: "",
882
891
  title: ""
883
892
  }, r = e.childNamed("span") || e.childNamed("a");
884
- n.title = (r?.attr.title || r?.val.trim() || Rt(r)) ?? "";
893
+ n.title = (r?.attr.title || r?.val.trim() || Bt(r)) ?? "";
885
894
  let i = r?.name;
886
895
  i !== "a" && (r = e.descendantWithPath(`${i}.a`), r && (i = r.name.toLowerCase())), i === "a" && r?.attr.href && (n.path = m(t, r.attr.href), n.containerHref = n.path);
887
896
  let a = e.childNamed("ol");
888
897
  if (a) {
889
898
  let e = a.childrenNamed("li");
890
- e && e.length > 0 && (n.contents = e.map((e) => Bt(e, { basePath: t })));
899
+ e && e.length > 0 && (n.contents = e.map((e) => Ht(e, { basePath: t })));
891
900
  }
892
901
  return n;
893
- }, Vt = (e, { basePath: t }) => {
902
+ }, Ut = (e, { basePath: t }) => {
894
903
  let n = [], r;
895
904
  return e.descendantWithPath("body.nav.ol") ? r = e.descendantWithPath("body.nav.ol")?.children : e.descendantWithPath("body.section.nav.ol") && (r = e.descendantWithPath("body.section.nav.ol")?.children), r && r.length > 0 && r.filter((e) => e instanceof g && e.name === "li").forEach((e) => {
896
- n.push(Bt(e, { basePath: t }));
905
+ n.push(Ht(e, { basePath: t }));
897
906
  }), n;
898
- }, Ht = async (e, t) => {
899
- let n = e.manifestItems.find(zt);
907
+ }, Wt = async (e, t) => {
908
+ let n = e.manifestItems.find(Vt);
900
909
  if (n?.href) {
901
910
  let e = t.records.find((e) => e.uri.endsWith(n.href));
902
- if (e && !e.dir) return Vt(new h(await D(e)), { basePath: c(e.uri) });
911
+ if (e && !e.dir) return Ut(new h(await E(e)), { basePath: c(e.uri) });
903
912
  }
904
- }, Ut = (e, { basePath: t, prefix: n }) => {
913
+ }, Gt = (e, { basePath: t, prefix: n }) => {
905
914
  let r = m(t, e?.childNamed(`${n}content`)?.attr.src || ""), i = {
906
915
  title: e?.descendantWithPath(`${n}navLabel.${n}text`)?.val || "",
907
916
  path: r,
908
917
  containerHref: r,
909
918
  contents: []
910
919
  }, a = e.childrenNamed(`${n}navPoint`);
911
- return a && a.length > 0 && (i.contents = a.map((e) => Ut(e, {
920
+ return a && a.length > 0 && (i.contents = a.map((e) => Gt(e, {
912
921
  basePath: t,
913
922
  prefix: n
914
923
  }))), i;
915
- }, Wt = (e, { basePath: t }) => {
924
+ }, Kt = (e, { basePath: t }) => {
916
925
  let n = [], r = e.name, i = "";
917
926
  return r.indexOf(":") !== -1 && (i = `${r.split(":")[0]}:`), e.childNamed(`${i}navMap`)?.childrenNamed(`${i}navPoint`).forEach((e) => {
918
- n.push(Ut(e, {
927
+ n.push(Gt(e, {
919
928
  basePath: t,
920
929
  prefix: i
921
930
  }));
922
931
  }), n;
923
- }, Gt = async ({ opf: e, opfBasePath: t, archive: n }) => {
932
+ }, qt = async ({ opf: e, opfBasePath: t, archive: n }) => {
924
933
  let r = e.spineTocIdref;
925
934
  if (r) {
926
935
  let i = e.manifestItems.find((e) => e.id === r);
927
936
  if (i) {
928
937
  let e = `${t}${t === "" ? "" : "/"}${i.href}`, r = n.records.find((t) => t.uri.endsWith(e));
929
- if (r && !r.dir) return Wt(new h(await D(r)), { basePath: c(r.uri) });
938
+ if (r && !r.dir) return Kt(new h(await E(r)), { basePath: c(r.uri) });
930
939
  }
931
940
  }
932
- }, Kt = async (e, { opf: t } = {}) => {
933
- let n = t ?? await R(e);
934
- if (n) return await Ht(n.opf, e) || await Gt({
941
+ }, Jt = async (e, { opf: t } = {}) => {
942
+ let n = t ?? await L(e);
943
+ if (n) return await Wt(n.opf, e) || await qt({
935
944
  opf: n.opf,
936
945
  opfBasePath: n.basePath,
937
946
  archive: e
938
947
  }) || [];
939
- let r = Lt(e);
948
+ let r = zt(e);
940
949
  return r.length === 0 ? void 0 : r;
941
- }, qt = [
950
+ }, Yt = [
942
951
  "metadata",
943
952
  "readingOrder",
944
953
  "toc"
945
- ], Y = async (e, n) => {
954
+ ], X = async (e, n) => {
946
955
  try {
947
956
  return {
948
957
  value: await e(),
@@ -954,39 +963,39 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
954
963
  failed: !0
955
964
  };
956
965
  }
957
- }, Jt = (e) => {
966
+ }, Xt = (e) => {
958
967
  let t = (e) => e?.startsWith("audio/") === !0 || e?.startsWith("video/") === !0, n = e.filter((e) => e.renditionLayout === "pre-paginated" && !t(e.mediaType)).length;
959
968
  return n > 0 ? n : void 0;
960
- }, Yt = ({ archive: e, opf: t, comicInfo: n, apple: r, kobo: i }) => {
969
+ }, Zt = ({ archive: e, opf: t, comicInfo: n, apple: r, kobo: i }) => {
961
970
  let a = [];
962
- return t !== void 0 && t.value === void 0 && (t.failed || qe(e)) && a.push("opf"), n?.failed && a.push("comicInfo"), r?.failed && a.push("apple"), i?.failed && a.push("kobo"), a;
963
- }, Xt = 3, Zt = async (e, t = {}) => {
964
- let n = new Set(t.include ?? qt), r = n.has("metadata"), i = n.has("sources"), a = n.has("readingOrder"), o = n.has("toc"), s = t.layoutScan === !0 && (r || a), c = r || i || a || o ? await Y(() => R(e), "opf") : void 0, l = c?.value, u = r || i || s, d = u ? await Y(() => Ue(e), "comicInfo") : void 0, f = d?.value, p = u ? await Y(() => Re(e), "apple") : void 0, m = p?.value, h = u ? await Y(() => We(e), "kobo") : void 0, g = h?.value, _ = r || s ? It({
971
+ return t !== void 0 && t.value === void 0 && (t.failed || Ze(e)) && a.push("opf"), n?.failed && a.push("comicInfo"), r?.failed && a.push("apple"), i?.failed && a.push("kobo"), a;
972
+ }, Qt = 3, $t = async (e, t = {}) => {
973
+ let n = new Set(t.include ?? Yt), r = n.has("metadata"), i = n.has("sources"), a = n.has("readingOrder"), o = n.has("toc"), s = t.layoutScan === !0 && (r || a), c = r || i || a || o ? await X(() => L(e), "opf") : void 0, l = c?.value, u = r || i || s, d = u ? await X(() => qe(e), "comicInfo") : void 0, f = d?.value, p = u ? await X(() => He(e), "apple") : void 0, m = p?.value, h = u ? await X(() => Je(e), "kobo") : void 0, g = h?.value, _ = r || s ? Rt({
965
974
  opf: l?.opf,
966
975
  comicInfo: f,
967
976
  apple: m,
968
977
  kobo: g
969
978
  }) : void 0, v = a || s ? await V(e, { opf: l }) : void 0;
970
- if (s && _ !== void 0 && v !== void 0 && _.renditionLayout === "reflowable" && v.every((e) => e.renditionLayout === "reflowable") && await Ie(e, v) && (_ = {
979
+ if (s && _ !== void 0 && v !== void 0 && _.renditionLayout === "reflowable" && v.every((e) => e.renditionLayout === "reflowable") && await Be(e, v) && (_ = {
971
980
  ..._,
972
981
  renditionLayout: "pre-paginated"
973
982
  }, v = v.map((e) => ({
974
983
  ...e,
975
984
  renditionLayout: "pre-paginated"
976
985
  }))), r && _ !== void 0) {
977
- let t = v ?? await V(e, { opf: l }), n = await Pe(e, {
986
+ let t = v ?? await V(e, { opf: l }), n = await Re(e, {
978
987
  opf: l,
979
988
  readingOrder: t
980
- }), r = _.numberOfPages ?? Jt(t);
989
+ }), r = _.numberOfPages ?? Xt(t);
981
990
  _ = B({
982
991
  ..._,
983
992
  cover: n,
984
993
  numberOfPages: r
985
994
  });
986
995
  }
987
- let y = o ? (await Y(() => Kt(e, { opf: l }), "toc")).value : void 0, b = {
988
- version: Xt,
989
- unreadableSources: Yt({
996
+ let y = o ? (await X(() => Jt(e, { opf: l }), "toc")).value : void 0, b = {
997
+ version: Qt,
998
+ unreadableSources: Zt({
990
999
  archive: e,
991
1000
  opf: c,
992
1001
  comicInfo: d,
@@ -1000,108 +1009,108 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
1000
1009
  apple: m,
1001
1010
  kobo: g
1002
1011
  })), b;
1003
- }, Qt = (e) => {
1012
+ }, en = (e) => {
1004
1013
  let t = e.trim().toLowerCase();
1005
1014
  return t === "url" || t === "uri" || t === "unknown";
1006
- }, $t = (e) => {
1015
+ }, tn = (e) => {
1007
1016
  try {
1008
1017
  return decodeURIComponent(e);
1009
1018
  } catch {
1010
1019
  return;
1011
1020
  }
1012
- }, en = (e) => {
1021
+ }, nn = (e) => {
1013
1022
  try {
1014
1023
  let t = new URL(e.trim());
1015
1024
  return t.protocol === "http:" || t.protocol === "https:" ? t : void 0;
1016
1025
  } catch {
1017
1026
  return;
1018
1027
  }
1019
- }, X = (e, t) => {
1020
- let n = en(e);
1028
+ }, Z = (e, t) => {
1029
+ let n = nn(e);
1021
1030
  return n !== void 0 && t(n.hostname.toLowerCase()) ? n : void 0;
1022
- }, tn = /^books\.google\.(?:com|[a-z]{2}|com\.[a-z]{2}|co\.[a-z]{2})$/i, nn = /* @__PURE__ */ new Set(["books.googleapis.com", "www.googleapis.com"]), rn = /^\/books\/v1\/volumes\/([^/]+)\/?$/i, Z = (e) => {
1031
+ }, rn = /^books\.google\.(?:com|[a-z]{2}|com\.[a-z]{2}|co\.[a-z]{2})$/i, an = /* @__PURE__ */ new Set(["books.googleapis.com", "www.googleapis.com"]), on = /^\/books\/v1\/volumes\/([^/]+)\/?$/i, sn = (e) => {
1023
1032
  let t = e.trim();
1024
1033
  return /^[a-z0-9_-]+$/i.test(t) ? t : void 0;
1025
- }, an = (e) => {
1026
- let t = X(e, (e) => tn.test(e) || nn.has(e));
1034
+ }, cn = (e) => {
1035
+ let t = Z(e, (e) => rn.test(e) || an.has(e));
1027
1036
  if (t !== void 0) {
1028
- if (nn.has(t.hostname.toLowerCase())) {
1029
- let e = rn.exec(t.pathname)?.[1], n = e === void 0 ? void 0 : $t(e);
1030
- return n === void 0 ? void 0 : Z(n);
1037
+ if (an.has(t.hostname.toLowerCase())) {
1038
+ let e = on.exec(t.pathname)?.[1], n = e === void 0 ? void 0 : tn(e);
1039
+ return n === void 0 ? void 0 : sn(n);
1031
1040
  }
1032
- return Z(t.searchParams.get("id") ?? "");
1041
+ return sn(t.searchParams.get("id") ?? "");
1033
1042
  }
1034
- }, on = /* @__PURE__ */ new Set(["gutenberg.org", "www.gutenberg.org"]), sn = [
1043
+ }, ln = /* @__PURE__ */ new Set(["gutenberg.org", "www.gutenberg.org"]), un = [
1035
1044
  /^\/ebooks\/(\d+)(?:[./]|$)/i,
1036
1045
  /^\/files\/(\d+)(?:\/|$)/i,
1037
1046
  /^\/cache\/epub\/(\d+)(?:\/|$)/i,
1038
1047
  /^\/(\d+)(?:\/|$)/
1039
- ], cn = (e) => {
1048
+ ], dn = (e) => {
1040
1049
  let t = e.trim();
1041
1050
  if (!/^\d+$/.test(t)) return;
1042
1051
  let n = t.replace(/^0+(?=\d)/, "");
1043
1052
  return n === "0" ? void 0 : n;
1044
- }, ln = (e) => {
1045
- let t = X(e, (e) => on.has(e));
1046
- if (t !== void 0) for (let e of sn) {
1053
+ }, fn = (e) => {
1054
+ let t = Z(e, (e) => ln.has(e));
1055
+ if (t !== void 0) for (let e of un) {
1047
1056
  let n = e.exec(t.pathname)?.[1];
1048
- if (n !== void 0) return cn(n);
1057
+ if (n !== void 0) return dn(n);
1049
1058
  }
1050
- }, un = /* @__PURE__ */ new Set(["openlibrary.org", "www.openlibrary.org"]), dn = /^\/(works|books|authors)\/(OL\d+[A-Z])(?:\/|$)/i, fn = /^OL\d+([MWA])$/i, pn = {
1059
+ }, pn = /* @__PURE__ */ new Set(["openlibrary.org", "www.openlibrary.org"]), mn = /^\/(works|books|authors)\/(OL\d+[A-Z])(?:\/|$)/i, hn = /^OL\d+([MWA])$/i, gn = {
1051
1060
  M: "books",
1052
1061
  W: "works",
1053
1062
  A: "authors"
1054
- }, mn = (e) => {
1055
- let t = e.trim(), n = dn.exec(t);
1063
+ }, _n = (e) => {
1064
+ let t = e.trim(), n = mn.exec(t);
1056
1065
  if (n?.[1] !== void 0 && n[2] !== void 0) return `/${n[1].toLowerCase()}/${n[2].toUpperCase()}`;
1057
- let r = pn[fn.exec(t)?.[1]?.toUpperCase() ?? ""];
1066
+ let r = gn[hn.exec(t)?.[1]?.toUpperCase() ?? ""];
1058
1067
  return r === void 0 ? void 0 : `/${r}/${t.toUpperCase()}`;
1059
- }, hn = (e) => {
1060
- let t = X(e, (e) => un.has(e));
1061
- return t === void 0 ? void 0 : mn(t.pathname);
1062
- }, gn = /* @__PURE__ */ new Set([
1068
+ }, vn = (e) => {
1069
+ let t = Z(e, (e) => pn.has(e));
1070
+ return t === void 0 ? void 0 : _n(t.pathname);
1071
+ }, yn = /* @__PURE__ */ new Set([
1063
1072
  "doi.org",
1064
1073
  "dx.doi.org",
1065
1074
  "www.doi.org"
1066
- ]), _n = /^10\.\d{4,9}\/\S+$/, vn = (e) => {
1075
+ ]), bn = /^10\.\d{4,9}\/\S+$/, xn = (e) => {
1067
1076
  let t = e.trim().replace(/^doi:/i, "");
1068
- return _n.test(t) ? t : void 0;
1069
- }, yn = (e) => e.split("/").map(encodeURIComponent).join("/"), Q = [
1077
+ return bn.test(t) ? t : void 0;
1078
+ }, Sn = (e) => e.split("/").map(encodeURIComponent).join("/"), Q = [
1070
1079
  {
1071
1080
  scheme: "GoogleBooks",
1072
- normalizeValue: Z,
1073
- valueFromUrl: an,
1081
+ normalizeValue: sn,
1082
+ valueFromUrl: cn,
1074
1083
  toUrl: (e) => `https://books.google.com/books?id=${encodeURIComponent(e)}`
1075
1084
  },
1076
1085
  {
1077
1086
  scheme: "ProjectGutenberg",
1078
- normalizeValue: cn,
1079
- valueFromUrl: ln,
1087
+ normalizeValue: dn,
1088
+ valueFromUrl: fn,
1080
1089
  toUrl: (e) => `https://www.gutenberg.org/ebooks/${e}`
1081
1090
  },
1082
1091
  {
1083
1092
  scheme: "OpenLibrary",
1084
- normalizeValue: mn,
1085
- valueFromUrl: hn,
1093
+ normalizeValue: _n,
1094
+ valueFromUrl: vn,
1086
1095
  toUrl: (e) => `https://openlibrary.org${e}`
1087
1096
  },
1088
1097
  {
1089
1098
  scheme: "DOI",
1090
- normalizeValue: vn,
1099
+ normalizeValue: xn,
1091
1100
  valueFromUrl: (e) => {
1092
- let t = X(e, (e) => gn.has(e)), n = t === void 0 ? void 0 : $t(t.pathname.replace(/^\//, ""));
1093
- return n === void 0 ? void 0 : vn(n);
1101
+ let t = Z(e, (e) => yn.has(e)), n = t === void 0 ? void 0 : tn(t.pathname.replace(/^\//, ""));
1102
+ return n === void 0 ? void 0 : xn(n);
1094
1103
  },
1095
- toUrl: (e) => `https://doi.org/${yn(e)}`
1104
+ toUrl: (e) => `https://doi.org/${Sn(e)}`
1096
1105
  }
1097
- ], bn = Q.map(function(e) {
1106
+ ], Cn = Q.map(function(e) {
1098
1107
  return e.scheme;
1099
- }), xn = (e) => {
1108
+ }), wn = (e) => {
1100
1109
  let t = e.trim().toLowerCase();
1101
1110
  return Q.find(function(e) {
1102
1111
  return e.scheme.toLowerCase() === t;
1103
1112
  });
1104
- }, Sn = (e) => xn(e) !== void 0, Cn = (e) => {
1113
+ }, Tn = (e) => wn(e) !== void 0, En = (e) => {
1105
1114
  for (let t of Q) {
1106
1115
  let n = t.valueFromUrl(e);
1107
1116
  if (n !== void 0) return {
@@ -1109,44 +1118,47 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
1109
1118
  scheme: t.scheme
1110
1119
  };
1111
1120
  }
1112
- }, wn = ({ scheme: e, value: t }) => {
1113
- let n = xn(e), r = n?.normalizeValue(t);
1121
+ }, Dn = ({ scheme: e, value: t }) => {
1122
+ let n = wn(e), r = n?.normalizeValue(t);
1114
1123
  if (n === void 0 || r === void 0) return;
1115
1124
  let i = n.toUrl(r);
1116
1125
  return n.valueFromUrl(i) === r ? i : void 0;
1117
- }, Tn = (e) => {
1126
+ }, On = (e) => {
1118
1127
  let t = Q.find(function(t) {
1119
1128
  return t.scheme === e;
1120
1129
  });
1121
1130
  if (t === void 0) throw Error(`No catalog rule for scheme ${e}`);
1122
1131
  return t;
1123
- }, En = (e) => e === "ISBN" || e === "GTIN", Dn = (e) => ({
1124
- carries: En,
1132
+ }, kn = (e) => {
1133
+ let t = q(e);
1134
+ return t === "ISBN" || t === "GTIN";
1135
+ }, An = (e) => ({
1136
+ carries: kn,
1125
1137
  normalizeValue: e
1126
1138
  }), $ = (e) => ({
1127
- carries: (t) => t.trim().toLowerCase() === e.toLowerCase(),
1128
- ...Tn(e)
1129
- }), On = {
1130
- ISBN: Dn(ht),
1131
- GTIN: Dn(_t),
1139
+ carries: (t) => q(t) === e,
1140
+ ...On(e)
1141
+ }), jn = {
1142
+ ISBN: An(yt),
1143
+ GTIN: An(xt),
1132
1144
  GoogleBooks: $("GoogleBooks"),
1133
1145
  OpenLibrary: $("OpenLibrary"),
1134
1146
  ProjectGutenberg: $("ProjectGutenberg"),
1135
1147
  DOI: $("DOI")
1136
- }, kn = (e, t) => {
1137
- let n = On[t];
1148
+ }, Mn = (e, t) => {
1149
+ let n = jn[t];
1138
1150
  for (let t of e ?? []) {
1139
1151
  if (n.carries(t.scheme)) {
1140
1152
  let e = n.normalizeValue(t.value) ?? n.valueFromUrl?.(t.value);
1141
1153
  if (e !== void 0) return e;
1142
1154
  continue;
1143
1155
  }
1144
- if (n.valueFromUrl === void 0 || !Qt(t.scheme)) continue;
1156
+ if (n.valueFromUrl === void 0 || !en(t.scheme)) continue;
1145
1157
  let e = n.valueFromUrl(t.value);
1146
1158
  if (e !== void 0) return e;
1147
1159
  }
1148
- }, An = (e) => e?.titles?.[0]?.value;
1160
+ }, Nn = (e) => e?.titles?.[0]?.value;
1149
1161
  //#endregion
1150
- export { me as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, z as COMIC_INFO_FILENAME, _e as COMIC_INFO_KNOWN_FIELDS, Ve as COMIC_INFO_MANGA_VALUES, Se as KOBO_DISPLAY_OPTIONS_FILENAME, bn as METADATA_CATALOG_SCHEMES, i as arrayBufferFileAccessors, r as blobFileAccessors, Cn as catalogIdentifierFromUrl, wn as catalogUrlFromIdentifier, e as createArchive, v as createArchiveFromArrayBufferList, n as createArchiveFromEntries, y as createArchiveFromText, b as createArchiveFromUrls, C as getArchiveFileRecordByUri, Be as getArchiveHasComicInfo, E as getArchiveImageRecords, O as getArchiveOpfInfo, Ge as getSpineItemFilesFromArchive, kn as identifierValue, qe as isArchiveEpub, He as isComicInfoManga, S as isDirectoryRecord, x as isFileRecord, T as isImageRecord, En as isIsbnBearingScheme, Sn as isMetadataCatalogScheme, An as mainTitle, _t as normalizeGtin, mt as normalizeIsbn, ge as parseAppleDisplayOptionsXml, xe as parseComicInfo, we as parseKoboXml, pe as parseOpf, vt as parseW3cDtfDate, Re as readArchiveApple, Ue as readArchiveComicInfo, We as readArchiveKobo, R as readArchiveOpf, D as readRecordAsText, Ie as readingOrderDocumentsAllHaveViewport, Zt as resolveArchive, Pe as resolveArchiveCover, Ft as resolveArchiveMetadata, V as resolveArchiveReadingOrder, Kt as resolveArchiveToc, It as resolveMetadata, k as tokenizeXmlSpaceSeparatedList };
1162
+ export { R as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, z as COMIC_INFO_FILENAME, xe as COMIC_INFO_KNOWN_FIELDS, Ge as COMIC_INFO_MANGA_VALUES, Ee as KOBO_DISPLAY_OPTIONS_FILENAME, Cn as METADATA_CATALOG_SCHEMES, k as OPF_IDENTIFIER_SCHEME_ATTRIBUTES, i as arrayBufferFileAccessors, r as blobFileAccessors, En as catalogIdentifierFromUrl, Dn as catalogUrlFromIdentifier, e as createArchive, v as createArchiveFromArrayBufferList, n as createArchiveFromEntries, y as createArchiveFromText, b as createArchiveFromUrls, S as getArchiveFileRecordByUri, We as getArchiveHasComicInfo, T as getArchiveImageRecords, D as getArchiveOpfInfo, Ye as getSpineItemFilesFromArchive, Mn as identifierValue, Ze as isArchiveEpub, Ke as isComicInfoManga, ee as isDirectoryRecord, x as isFileRecord, w as isImageRecord, kn as isIsbnBearingScheme, Tn as isMetadataCatalogScheme, Nn as mainTitle, xt as normalizeGtin, q as normalizeIdentifierScheme, vt as normalizeIsbn, ne as opfIdentifierSchemeAttribute, A as opfIdentifierTypeScheme, be as parseAppleDisplayOptionsXml, Te as parseComicInfo, Oe as parseKoboXml, ve as parseOpf, Ct as parseW3cDtfDate, He as readArchiveApple, qe as readArchiveComicInfo, Je as readArchiveKobo, L as readArchiveOpf, E as readRecordAsText, Be as readingOrderDocumentsAllHaveViewport, $t as resolveArchive, Re as resolveArchiveCover, Lt as resolveArchiveMetadata, V as resolveArchiveReadingOrder, Jt as resolveArchiveToc, Rt as resolveMetadata, O as tokenizeXmlSpaceSeparatedList };
1151
1163
 
1152
1164
  //# sourceMappingURL=index.js.map