@prose-reader/archive-reader 1.345.0 → 1.346.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.
@@ -129,6 +129,18 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
129
129
  ...o !== void 0 && o === t ? { unique: !0 } : {}
130
130
  });
131
131
  }), n;
132
+ }, re = (e) => {
133
+ let t = [];
134
+ return e.eachChild((e) => {
135
+ if (A(e.name).toLowerCase() !== "title") return;
136
+ let n = e.val.trim();
137
+ if (n.length === 0) return;
138
+ let r = e.attr.id?.trim();
139
+ t.push({
140
+ value: n,
141
+ ...r !== void 0 && r.length > 0 ? { id: r } : {}
142
+ });
143
+ }), t;
132
144
  }, P = (e, t) => {
133
145
  let n;
134
146
  return e.eachChild((e) => {
@@ -143,18 +155,18 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
143
155
  let r = e.val.trim();
144
156
  r.length > 0 && n.push(r);
145
157
  }), n;
146
- }, re = (e) => {
158
+ }, ie = (e) => {
147
159
  let t;
148
160
  return e.eachChild((e) => {
149
161
  if (t !== void 0 || A(e.name).toLowerCase() !== "meta" || e.attr.name?.toLowerCase() !== "cover") return;
150
162
  let n = e.attr.content?.trim();
151
163
  n !== void 0 && n.length > 0 && (t = n);
152
164
  }), t;
153
- }, ie = ({ manifestItems: e, metadataEl: t }) => {
165
+ }, ae = ({ manifestItems: e, metadataEl: t }) => {
154
166
  let n = (e) => e.mediaType?.toLowerCase().includes("image/") === !0, r = e.find((e) => n(e) ? k(e.properties).includes("cover-image") : !1);
155
167
  if (r !== void 0) return r.href;
156
168
  if (t !== void 0) {
157
- let r = re(t);
169
+ let r = ie(t);
158
170
  if (r !== void 0) {
159
171
  let t = e.find((e) => e.id === r && n(e));
160
172
  if (t !== void 0) return t.href;
@@ -164,7 +176,7 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
164
176
  }, I = (e, t) => {
165
177
  let n = e.attr[t]?.trim();
166
178
  return n !== void 0 && n.length > 0 ? n : void 0;
167
- }, ae = (e) => {
179
+ }, oe = (e) => {
168
180
  let t = [];
169
181
  return e.eachChild((e) => {
170
182
  if (A(e.name).toLowerCase() !== "meta") return;
@@ -179,14 +191,14 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
179
191
  };
180
192
  Object.keys(u).length !== 0 && t.push(u);
181
193
  }), t;
182
- }, oe = (e, t) => e.replace(/^#/, "") === t, se = (e, t) => {
194
+ }, se = (e, t) => e.replace(/^#/, "") === t, ce = (e, t) => {
183
195
  let n = [];
184
196
  return e.eachChild((e) => {
185
197
  let r = A(e.name).toLowerCase();
186
198
  if (r !== "creator" && r !== "contributor") return;
187
199
  let i = e.val.trim();
188
200
  if (i.length === 0) return;
189
- let a = I(e, "id"), o = (e) => a === void 0 ? [] : t.flatMap((t) => t.refines !== void 0 && oe(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];
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];
190
202
  n.push({
191
203
  name: i,
192
204
  source: r,
@@ -198,7 +210,7 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
198
210
  }, L = (e, t) => {
199
211
  let n = N(e, "meta").find((e) => e.attr.property === t)?.val;
200
212
  if (!(n === void 0 || n.trim().length === 0)) return n;
201
- }, ce = (e) => {
213
+ }, le = (e) => {
202
214
  let t = M(e, "guide");
203
215
  if (t === void 0) return [];
204
216
  let n = [];
@@ -211,7 +223,7 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
211
223
  });
212
224
  }
213
225
  return n;
214
- }, le = (e) => {
226
+ }, ue = (e) => {
215
227
  let t = e.attr.id, n = e.attr.href;
216
228
  if (t === void 0 || t.length === 0 || n === void 0 || n.length === 0) return;
217
229
  let r = e.attr["media-type"], i = e.attr.properties?.trim();
@@ -221,17 +233,17 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
221
233
  ...r !== void 0 && r.length > 0 ? { mediaType: r } : {},
222
234
  ...i !== void 0 && i.length > 0 ? { properties: i } : {}
223
235
  };
224
- }, ue = (e) => {
236
+ }, de = (e) => {
225
237
  let t = [], n = /* @__PURE__ */ new Map();
226
238
  for (let r of N(e, "item")) {
227
- let e = le(r);
239
+ let e = ue(r);
228
240
  e !== void 0 && (t.push(e), n.set(e.id, e));
229
241
  }
230
242
  return {
231
243
  items: t,
232
244
  byId: n
233
245
  };
234
- }, de = (e, t) => {
246
+ }, fe = (e, t) => {
235
247
  let n = [];
236
248
  for (let r of N(t, "itemref")) {
237
249
  let t = r.attr.idref;
@@ -252,25 +264,25 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
252
264
  });
253
265
  }
254
266
  return n;
255
- }, fe = (e) => {
267
+ }, pe = (e) => {
256
268
  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 = [];
257
269
  if (n !== void 0) {
258
- let { items: e, byId: t } = ue(n);
259
- s = e, r !== void 0 && (c = de(t, r));
270
+ let { items: e, byId: t } = de(n);
271
+ s = e, r !== void 0 && (c = fe(t, r));
260
272
  }
261
- 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 = [];
262
- i !== void 0 && (p = P(i, "title"), m = P(i, "publisher"), g = P(i, "description"), _ = P(i, "rights"), v = P(i, "date"), y = F(i, "creator"), x = F(i, "language"), S = F(i, "subject"), C = L(i, "rendition:layout"), w = L(i, "rendition:flow"), T = L(i, "rendition:spread"), E = ae(i), b = se(i, E), D.push(...ne(i, o)));
263
- let O = ie({
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 = re(i), m = P(i, "publisher"), g = P(i, "description"), _ = P(i, "rights"), v = P(i, "date"), y = F(i, "creator"), x = F(i, "language"), S = F(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(...ne(i, o)));
275
+ let O = ae({
264
276
  manifestItems: s,
265
277
  metadataEl: i
266
- }), k = ce(t);
278
+ }), k = le(t);
267
279
  return {
268
280
  kind: "opf",
269
281
  manifestItems: s,
270
282
  spineRows: c,
271
283
  spineTocIdref: f,
272
284
  identifiers: D,
273
- title: p,
285
+ titles: p,
274
286
  creators: y,
275
287
  contributors: b,
276
288
  publisher: m,
@@ -293,24 +305,24 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
293
305
  async function R(e) {
294
306
  let { data: t, basePath: n } = O(e) || {};
295
307
  if (!(!t || t.dir)) return {
296
- opf: fe(await D(t)),
308
+ opf: pe(await D(t)),
297
309
  basePath: n
298
310
  };
299
311
  }
300
312
  //#endregion
301
313
  //#region src/metadata/apple/parse.ts
302
- var z = "com.apple.ibooks.display-options.xml", pe = (e) => e.childrenNamed("option").map((e) => ({
314
+ var z = "com.apple.ibooks.display-options.xml", me = (e) => e.childrenNamed("option").map((e) => ({
303
315
  name: e.attr?.name,
304
316
  value: e.val
305
- })), me = (e) => {
317
+ })), B = (e) => {
306
318
  let t = new h(e);
307
319
  if (t.name?.toLowerCase() !== "display_options") return { kind: "apple" };
308
320
  let n = t.childNamed("platform");
309
321
  return {
310
322
  kind: "apple",
311
- displayOptions: { ...n === void 0 ? {} : { platform: { options: pe(n) } } }
323
+ displayOptions: { ...n === void 0 ? {} : { platform: { options: me(n) } } }
312
324
  };
313
- }, B = "ComicInfo.xml", he = /* @__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("."), ge = /* @__PURE__ */ new Set(["Pages", "ComicInfo"]), _e = (e) => e.children.some((e) => e.type === "element"), ve = (e) => {
325
+ }, V = "ComicInfo.xml", he = /* @__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("."), ge = /* @__PURE__ */ new Set(["Pages", "ComicInfo"]), _e = (e) => e.children.some((e) => e.type === "element"), ve = (e) => {
314
326
  let t = e.val.trim();
315
327
  return t.length > 0 ? t : void 0;
316
328
  }, ye = (e) => {
@@ -319,7 +331,7 @@ var z = "com.apple.ibooks.display-options.xml", pe = (e) => e.childrenNamed("opt
319
331
  t = new h(e);
320
332
  } catch (e) {
321
333
  let t = e instanceof Error ? e.message : String(e);
322
- throw Error(`${B} is malformed: ${t}`, { cause: e });
334
+ throw Error(`${V} is malformed: ${t}`, { cause: e });
323
335
  }
324
336
  let n = {};
325
337
  return t.eachChild((e) => {
@@ -330,21 +342,21 @@ var z = "com.apple.ibooks.display-options.xml", pe = (e) => e.childrenNamed("opt
330
342
  kind: "comicInfo",
331
343
  ...n
332
344
  };
333
- }, V = "com.kobobooks.display-options.xml", be = (e) => {
345
+ }, be = "com.kobobooks.display-options.xml", xe = (e) => {
334
346
  let t = e.childNamed("platform");
335
347
  if (!t) return {};
336
348
  for (let e of t.childrenNamed("option")) if (e.attr?.name === "fixed-layout") return e.val.trim().toLowerCase() === "true" ? { renditionLayout: "pre-paginated" } : {};
337
349
  return {};
338
- }, xe = (e) => {
350
+ }, Se = (e) => {
339
351
  let t = new h(e);
340
352
  return t.name?.toLowerCase() === "display_options" ? {
341
353
  kind: "kobo",
342
- ...be(t)
354
+ ...xe(t)
343
355
  } : { kind: "kobo" };
344
356
  }, H = (e) => {
345
357
  let t = Object.entries(e).filter(([, e]) => e !== void 0);
346
358
  return Object.fromEntries(t);
347
- }, Se = (e) => {
359
+ }, Ce = (e) => {
348
360
  let t = [];
349
361
  for (let n of e.split("/")) if (n !== ".") {
350
362
  if (n === "..") {
@@ -354,12 +366,12 @@ var z = "com.apple.ibooks.display-options.xml", pe = (e) => e.childrenNamed("opt
354
366
  t.push(n);
355
367
  }
356
368
  return t.join("/");
357
- }, Ce = (e, t) => /^https?:\/\//.test(e) ? e : Se(t ? `${t}/${e}` : e), we = (e) => {
369
+ }, we = (e, t) => /^https?:\/\//.test(e) ? e : Ce(t ? `${t}/${e}` : e), Te = (e) => {
358
370
  let t = e?.trim().toLowerCase();
359
371
  return t === "reflowable" || t === "pre-paginated" ? t : void 0;
360
- }, Te = (e, { opf: t, basePath: n }) => {
361
- let r = we(t.renditionLayoutMeta), i = t.spineRows.map((t) => {
362
- let r = Ce(t.href, n);
372
+ }, Ee = (e, { opf: t, basePath: n }) => {
373
+ let r = Te(t.renditionLayoutMeta), i = t.spineRows.map((t) => {
374
+ let r = we(t.href, n);
363
375
  return {
364
376
  row: t,
365
377
  uri: r,
@@ -377,11 +389,11 @@ var z = "com.apple.ibooks.display-options.xml", pe = (e) => e.childrenNamed("opt
377
389
  pageSpreadRight: e.pageSpreadRight,
378
390
  progressionWeight: a > 0 ? (i?.size ?? 0) / a : 1 / t.spineRows.length
379
391
  }));
380
- }, Ee = B.toLowerCase(), De = z.toLowerCase(), Oe = (e) => {
392
+ }, De = V.toLowerCase(), Oe = z.toLowerCase(), ke = (e) => {
381
393
  let t = e.basename.toLowerCase();
382
- return t === Ee || t === De || e.uri.endsWith("com.kobobooks.display-options.xml") || t.endsWith(".db");
383
- }, ke = (e) => {
384
- let t = e.records.filter(x).filter((e) => !Oe(e));
394
+ return t === De || t === Oe || e.uri.endsWith("com.kobobooks.display-options.xml") || t.endsWith(".db");
395
+ }, Ae = (e) => {
396
+ let t = e.records.filter(x).filter((e) => !ke(e));
385
397
  return t.map((e) => {
386
398
  let n = f(e.encodingFormat ?? "") || o(e.basename);
387
399
  return H({
@@ -394,17 +406,17 @@ var z = "com.apple.ibooks.display-options.xml", pe = (e) => e.childrenNamed("opt
394
406
  });
395
407
  }, U = async (e, { opf: t } = {}) => {
396
408
  let n = t ?? await R(e).catch(() => void 0);
397
- return n ? Te(e, n) : ke(e);
398
- }, Ae = (e, t) => {
409
+ return n ? Ee(e, n) : Ae(e);
410
+ }, je = (e, t) => {
399
411
  let n = C(e, t);
400
412
  if (n !== void 0) return f(n.encodingFormat ?? "") || o(n.basename);
401
- }, je = async (e, { opf: t, readingOrder: n } = {}) => {
413
+ }, Me = async (e, { opf: t, readingOrder: n } = {}) => {
402
414
  let r = t ?? await R(e).catch(() => void 0);
403
415
  if (r !== void 0 && r.opf.coverHref !== void 0) {
404
- let t = Ce(r.opf.coverHref, r.basePath);
416
+ let t = we(r.opf.coverHref, r.basePath);
405
417
  return H({
406
418
  uri: t,
407
- mediaType: Ae(e, t),
419
+ mediaType: je(e, t),
408
420
  confidence: "derived"
409
421
  });
410
422
  }
@@ -414,10 +426,10 @@ var z = "com.apple.ibooks.display-options.xml", pe = (e) => e.childrenNamed("opt
414
426
  mediaType: i.mediaType,
415
427
  confidence: "assumed"
416
428
  });
417
- }, Me = (e) => {
429
+ }, Ne = (e) => {
418
430
  let t = e.descendantWithPath("head")?.childrenNamed("meta").find((e) => e.attr.name === "viewport");
419
431
  return !!(t && t.attr.name === "viewport");
420
- }, W = async (e, n) => {
432
+ }, Pe = async (e, n) => {
421
433
  if (n.length === 0) return !1;
422
434
  for (let r of n) {
423
435
  if (!d({
@@ -427,20 +439,20 @@ var z = "com.apple.ibooks.display-options.xml", pe = (e) => e.childrenNamed("opt
427
439
  let n = C(e, r.uri);
428
440
  if (!n || !x(n)) return !1;
429
441
  try {
430
- if (!Me(new h(await D(n)))) return !1;
442
+ if (!Ne(new h(await D(n)))) return !1;
431
443
  } catch (e) {
432
444
  return t.error(`layout scan: unable to inspect ${r.uri}`, e), !1;
433
445
  }
434
446
  }
435
447
  return !0;
436
- }, Ne = z.toLowerCase();
437
- async function G(e) {
438
- let t = e.records.find((e) => x(e) && e.basename.toLowerCase() === Ne);
439
- if (t) return me(await D(t));
448
+ }, Fe = z.toLowerCase();
449
+ async function Ie(e) {
450
+ let t = e.records.find((e) => x(e) && e.basename.toLowerCase() === Fe);
451
+ if (t) return B(await D(t));
440
452
  }
441
453
  //#endregion
442
454
  //#region src/metadata/apple/resolve.ts
443
- var Pe = { displayOptions: "apple.options" }, K = (e) => {
455
+ var Le = { displayOptions: "apple.options" }, Re = (e) => {
444
456
  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 = H({
445
457
  fixedLayout: r,
446
458
  options: t !== void 0 && t.length > 0 ? t.map(({ name: e, value: t }) => H({
@@ -452,24 +464,24 @@ var Pe = { displayOptions: "apple.options" }, K = (e) => {
452
464
  renditionLayout: r === !0 ? "pre-paginated" : void 0,
453
465
  apple: Object.keys(i).length > 0 ? i : void 0
454
466
  });
455
- }, Fe = B.toLowerCase(), q = (e) => e.records.find((e) => x(e) && e.basename.toLowerCase() === Fe), Ie = [
467
+ }, ze = V.toLowerCase(), W = (e) => e.records.find((e) => x(e) && e.basename.toLowerCase() === ze), Be = [
456
468
  "Unknown",
457
469
  "No",
458
470
  "Yes",
459
471
  "YesAndRightToLeft"
460
- ], Le = (e) => {
461
- for (let t of Ie) if (t === e) return !0;
472
+ ], Ve = (e) => {
473
+ for (let t of Be) if (t === e) return !0;
462
474
  return !1;
463
475
  };
464
476
  //#endregion
465
477
  //#region src/metadata/comicInfo/readArchiveComicInfo.ts
466
- async function Re(e) {
467
- let t = q(e);
478
+ async function He(e) {
479
+ let t = W(e);
468
480
  if (t) return ye(await D(t));
469
481
  }
470
482
  //#endregion
471
483
  //#region src/metadata/comicInfo/resolve.ts
472
- var ze = {
484
+ var Ue = {
473
485
  AgeRating: "comic.ageRating",
474
486
  AlternateCount: "comic.alternateSeries",
475
487
  AlternateNumber: "comic.alternateSeries",
@@ -507,52 +519,52 @@ var ze = {
507
519
  Summary: "description",
508
520
  Tags: "subjects",
509
521
  Teams: "comic.teams",
510
- Title: "title",
522
+ Title: "titles",
511
523
  Translator: "contributors",
512
524
  Volume: "comic.volume",
513
525
  Web: "comic.web",
514
526
  Writer: "contributors",
515
527
  Year: "publication.edition.date"
516
- }, Be = (e) => {
528
+ }, We = (e) => {
517
529
  switch (e.Manga) {
518
530
  case "YesAndRightToLeft": return "rtl";
519
531
  case "Yes":
520
532
  case "No": return "ltr";
521
533
  default: return;
522
534
  }
523
- }, J = (e) => {
535
+ }, G = (e) => {
524
536
  if (e === void 0) return;
525
537
  let t = e.trim();
526
538
  return t.length > 0 ? t : void 0;
527
- }, Y = (e) => e === void 0 ? [] : e.split(",").map((e) => e.trim()).filter((e) => e.length > 0), X = (e) => {
528
- let t = J(e);
539
+ }, K = (e) => e === void 0 ? [] : e.split(",").map((e) => e.trim()).filter((e) => e.length > 0), q = (e) => {
540
+ let t = G(e);
529
541
  if (t === void 0 || !/^\d+$/.test(t)) return;
530
542
  let n = Number.parseInt(t, 10);
531
543
  return Number.isFinite(n) ? n : void 0;
532
- }, Z = (e) => {
533
- let t = J(e);
544
+ }, J = (e) => {
545
+ let t = G(e);
534
546
  if (t === void 0 || !/^\d+(\.\d+)?$/.test(t)) return;
535
547
  let n = Number.parseFloat(t);
536
548
  return Number.isFinite(n) ? n : void 0;
537
- }, Ve = (e) => {
538
- let t = J(e)?.toLowerCase();
549
+ }, Ge = (e) => {
550
+ let t = G(e)?.toLowerCase();
539
551
  if (t === "yes") return !0;
540
552
  if (t === "no") return !1;
541
- }, He = (e) => {
553
+ }, Ke = (e) => {
542
554
  switch (e.Manga) {
543
555
  case "Yes":
544
556
  case "YesAndRightToLeft": return !0;
545
557
  case "No": return !1;
546
558
  default: return;
547
559
  }
548
- }, Ue = (e) => {
549
- let t = X(e.Year), n = X(e.Month), r = X(e.Day);
560
+ }, qe = (e) => {
561
+ let t = q(e.Year), n = q(e.Month), r = q(e.Day);
550
562
  if (!(t === void 0 && n === void 0 && r === void 0)) return {
551
563
  ...t === void 0 ? {} : { year: t },
552
564
  ...n === void 0 ? {} : { month: n },
553
565
  ...r === void 0 ? {} : { day: r }
554
566
  };
555
- }, We = [
567
+ }, Je = [
556
568
  ["Writer", "author"],
557
569
  ["Penciller", "penciler"],
558
570
  ["Inker", "inker"],
@@ -561,9 +573,9 @@ var ze = {
561
573
  ["CoverArtist", "coverArtist"],
562
574
  ["Editor", "editor"],
563
575
  ["Translator", "translator"]
564
- ], Ge = (e) => {
576
+ ], Ye = (e) => {
565
577
  let t = /* @__PURE__ */ new Map();
566
- for (let [n, r] of We) for (let i of Y(e[n])) {
578
+ for (let [n, r] of Je) for (let i of K(e[n])) {
567
579
  let e = t.get(i);
568
580
  e ? e.roles.includes(r) || e.roles.push(r) : t.set(i, {
569
581
  name: i,
@@ -571,100 +583,100 @@ var ze = {
571
583
  });
572
584
  }
573
585
  return [...t.values()];
574
- }, Ke = (e) => {
575
- let t = J(e.Series);
576
- if (t !== void 0) return H({
577
- name: t,
578
- position: Z(e.Number),
579
- total: X(e.Count)
586
+ }, Xe = (e) => {
587
+ let t = H({
588
+ name: G(e.Series),
589
+ position: J(e.Number),
590
+ total: q(e.Count)
580
591
  });
581
- }, qe = (e) => {
582
- let t = J(e.AlternateSeries);
592
+ return Object.keys(t).length > 0 ? t : void 0;
593
+ }, Ze = (e) => {
594
+ let t = G(e.AlternateSeries);
583
595
  if (t !== void 0) return H({
584
596
  name: t,
585
- position: Z(e.AlternateNumber),
586
- total: X(e.AlternateCount)
597
+ position: J(e.AlternateNumber),
598
+ total: q(e.AlternateCount)
587
599
  });
588
- }, Je = (e) => {
589
- let t = Y(e.StoryArc);
600
+ }, Qe = (e) => {
601
+ let t = K(e.StoryArc);
590
602
  if (t.length === 0) return [];
591
- let n = Y(e.StoryArcNumber);
603
+ let n = K(e.StoryArcNumber);
592
604
  return t.map((e, t) => H({
593
605
  name: e,
594
- position: Z(n[t])
606
+ position: J(n[t])
595
607
  }));
596
- }, Q = (e) => e.length > 0 ? e : void 0, Ye = (e) => (e.Web ?? "").split(/\s+/).filter((e) => e.length > 0), Xe = (e) => {
608
+ }, Y = (e) => e.length > 0 ? e : void 0, $e = (e) => (e.Web ?? "").split(/\s+/).filter((e) => e.length > 0), et = (e) => {
597
609
  try {
598
610
  let t = new URL(e);
599
611
  return (t.protocol === "http:" || t.protocol === "https:") && t.hostname.length > 0;
600
612
  } catch {
601
613
  return !1;
602
614
  }
603
- }, Ze = (e) => e.filter((e, t, n) => Xe(e) && n.indexOf(e) === t).map((e) => ({
615
+ }, tt = (e) => e.filter((e, t, n) => et(e) && n.indexOf(e) === t).map((e) => ({
604
616
  value: e,
605
617
  scheme: "URL"
606
- })), Qe = (e, t) => {
618
+ })), nt = (e, t) => {
607
619
  let n = H({
608
- manga: He(e),
609
- blackAndWhite: Ve(e.BlackAndWhite),
610
- volume: X(e.Volume),
611
- format: J(e.Format),
612
- ageRating: J(e.AgeRating),
613
- communityRating: Z(e.CommunityRating),
614
- notes: J(e.Notes),
615
- review: J(e.Review),
616
- web: Q(t),
617
- scanInformation: J(e.ScanInformation),
618
- mainCharacterOrTeam: J(e.MainCharacterOrTeam),
619
- characters: Q(Y(e.Characters)),
620
- teams: Q(Y(e.Teams)),
621
- locations: Q(Y(e.Locations)),
622
- storyArcs: Q(Je(e)),
623
- alternateSeries: qe(e)
620
+ manga: Ke(e),
621
+ blackAndWhite: Ge(e.BlackAndWhite),
622
+ volume: q(e.Volume),
623
+ format: G(e.Format),
624
+ ageRating: G(e.AgeRating),
625
+ communityRating: J(e.CommunityRating),
626
+ notes: G(e.Notes),
627
+ review: G(e.Review),
628
+ web: Y(t),
629
+ scanInformation: G(e.ScanInformation),
630
+ mainCharacterOrTeam: G(e.MainCharacterOrTeam),
631
+ characters: Y(K(e.Characters)),
632
+ teams: Y(K(e.Teams)),
633
+ locations: Y(K(e.Locations)),
634
+ storyArcs: Y(Qe(e)),
635
+ alternateSeries: Ze(e)
624
636
  });
625
637
  return Object.keys(n).length > 0 ? n : void 0;
626
- }, $e = (e) => {
627
- let t = Ke(e), n = Q(Y(e.SeriesGroup).map((e) => ({ name: e })));
638
+ }, rt = (e) => {
639
+ let t = Xe(e), n = Y(K(e.SeriesGroup).map((e) => ({ name: e })));
628
640
  if (!(t === void 0 && n === void 0)) return H({
629
641
  series: t === void 0 ? void 0 : [t],
630
642
  collection: n
631
643
  });
632
- }, et = (e) => {
633
- let t = e.GTIN, n = J(t), r = Ye(e), i = [...n === void 0 ? [] : [{
644
+ }, it = (e) => {
645
+ let t = e.GTIN, n = G(t), r = $e(e), i = [...n === void 0 ? [] : [{
634
646
  value: n,
635
647
  scheme: "GTIN"
636
- }], ...Ze(r)], a = J(e.LanguageISO), o = [...Y(e.Genre), ...Y(e.Tags)], s = H({
637
- date: Ue(e),
638
- publisher: J(e.Publisher),
639
- imprint: J(e.Imprint)
640
- });
648
+ }], ...tt(r)], a = G(e.LanguageISO), o = [...K(e.Genre), ...K(e.Tags)], s = H({
649
+ date: qe(e),
650
+ publisher: G(e.Publisher),
651
+ imprint: G(e.Imprint)
652
+ }), c = G(e.Title);
641
653
  return H({
642
- title: J(e.Title),
643
- description: J(e.Summary),
654
+ titles: c === void 0 ? void 0 : [{ value: c }],
655
+ description: G(e.Summary),
644
656
  publication: s.date !== void 0 || s.publisher !== void 0 || s.imprint !== void 0 ? { edition: s } : void 0,
645
657
  languages: a === void 0 ? void 0 : [a],
646
- subjects: Q(o),
647
- contributors: Q(Ge(e)),
648
- readingDirection: Be(e),
649
- numberOfPages: X(e.PageCount),
650
- identifiers: Q(i),
651
- belongsTo: $e(e),
652
- comic: Qe(e, r)
658
+ subjects: Y(o),
659
+ contributors: Y(Ye(e)),
660
+ readingDirection: We(e),
661
+ numberOfPages: q(e.PageCount),
662
+ identifiers: Y(i),
663
+ belongsTo: rt(e),
664
+ comic: nt(e, r)
653
665
  });
654
666
  };
655
667
  //#endregion
656
668
  //#region src/metadata/kobo/readArchiveKobo.ts
657
- async function tt(e) {
669
+ async function at(e) {
658
670
  let n = e.records.filter((e) => x(e) && e.uri.endsWith("com.kobobooks.display-options.xml"));
659
671
  if (n.length === 0) return;
660
672
  let r;
661
673
  for (let e of n) {
662
674
  let n = await D(e);
663
675
  try {
664
- let { renditionLayout: e } = xe(n);
676
+ let { renditionLayout: e } = Se(n);
665
677
  e && (r = e);
666
678
  } catch (n) {
667
- t.error(`Unable to parse ${V} (${e.uri})`, n);
679
+ t.error(`Unable to parse ${be} (${e.uri})`, n);
668
680
  }
669
681
  }
670
682
  return {
@@ -674,29 +686,29 @@ async function tt(e) {
674
686
  }
675
687
  //#endregion
676
688
  //#region src/metadata/kobo/resolve.ts
677
- var nt = { renditionLayout: "renditionLayout" }, rt = (e) => H({
689
+ var ot = { renditionLayout: "renditionLayout" }, st = (e) => H({
678
690
  renditionLayout: e.renditionLayout,
679
691
  kobo: e.renditionLayout === void 0 ? void 0 : { fixedLayout: e.renditionLayout === "pre-paginated" }
680
- }), it = async ({ archive: e, archiveOpf: t }) => {
692
+ }), ct = async ({ archive: e, archiveOpf: t }) => {
681
693
  if (!t) return [];
682
694
  let { opf: n, basePath: r } = t, { spineRows: i } = n;
683
695
  return e.records.filter((e) => i.find((t) => r ? `${r}/${t.href}` === e.uri : `${t.href}` === e.uri));
684
- }, at = (e) => e.toLowerCase().endsWith(".opf"), ot = (e) => e.records.some((e) => !e.dir && (at(e.basename) || at(e.uri))), st = /* @__PURE__ */ new Set([
696
+ }, lt = (e) => e.toLowerCase().endsWith(".opf"), ut = (e) => e.records.some((e) => !e.dir && (lt(e.basename) || lt(e.uri))), dt = /* @__PURE__ */ new Set([
685
697
  8,
686
698
  12,
687
699
  13,
688
700
  14
689
- ]), ct = (e) => {
701
+ ]), ft = (e) => {
690
702
  if (e == null) return;
691
703
  let t = String(e).replace(/\D/g, "");
692
- if (!(t.length === 0 || !st.has(t.length))) return t;
693
- }, lt = /(?:97[89])?\d{9}[\dXx]/, ut = (e) => {
704
+ if (!(t.length === 0 || !dt.has(t.length))) return t;
705
+ }, pt = /(?:97[89])?\d{9}[\dXx]/, mt = (e) => {
694
706
  if (e == null) return;
695
707
  let t = String(e).trim().replace(/^urn:isbn:/i, "").replace(/^isbn[:\s-]*/i, ""), n = t.replace(/[^0-9Xx]/g, "");
696
708
  if (n.length === 10 || n.length === 13) return n.toUpperCase();
697
- let r = t.match(lt);
709
+ let r = t.match(pt);
698
710
  if (r) return r[0].toUpperCase();
699
- }, dt = (e) => {
711
+ }, ht = (e) => {
700
712
  if (e === void 0) return;
701
713
  let t = e.trim().match(/^(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?/);
702
714
  if (t === null) return;
@@ -706,12 +718,12 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => H({
706
718
  ...r === void 0 ? {} : { month: Number.parseInt(r, 10) },
707
719
  ...i === void 0 ? {} : { day: Number.parseInt(i, 10) }
708
720
  };
709
- }, ft = {
721
+ }, gt = {
710
722
  manifestItems: "readingOrder",
711
723
  spineRows: "readingOrder",
712
724
  spineTocIdref: "toc",
713
725
  identifiers: "identifiers",
714
- title: "title",
726
+ titles: "titles",
715
727
  creators: "contributors",
716
728
  contributors: "contributors",
717
729
  publisher: "publication.edition.publisher",
@@ -727,15 +739,15 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => H({
727
739
  pageProgressionDirection: "readingDirection",
728
740
  guide: "guide",
729
741
  metas: "properties"
730
- }, pt = (e) => {
742
+ }, _t = (e) => {
731
743
  let t = e.trim();
732
744
  if (/^https?:\/\//i.test(t)) try {
733
745
  let e = new URL(t);
734
746
  if ((e.protocol === "http:" || e.protocol === "https:") && e.hostname.length > 0) return "URL";
735
747
  } catch {}
736
- let n = ut(t);
737
- return n !== void 0 && (n.length === 10 || /^97[89]/.test(n)) ? "ISBN" : ct(t) === void 0 ? "Unknown" : "GTIN";
738
- }, mt = (e) => {
748
+ let n = mt(t);
749
+ return n !== void 0 && (n.length === 10 || /^97[89]/.test(n)) ? "ISBN" : ft(t) === void 0 ? "Unknown" : "GTIN";
750
+ }, vt = (e) => {
739
751
  switch (e.trim().toLowerCase()) {
740
752
  case "isbn": return "ISBN";
741
753
  case "gtin": return "GTIN";
@@ -747,7 +759,7 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => H({
747
759
  case "unknown": return "Unknown";
748
760
  default: return e.trim();
749
761
  }
750
- }, ht = {
762
+ }, yt = {
751
763
  art: "artist",
752
764
  aut: "author",
753
765
  clr: "colorist",
@@ -756,14 +768,14 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => H({
756
768
  ill: "illustrator",
757
769
  nrt: "narrator",
758
770
  trl: "translator"
759
- }, gt = (e) => e.contributors.map((e) => {
760
- let t = e.roles.map((e) => ht[e.trim().toLowerCase()] ?? e);
771
+ }, bt = (e) => e.contributors.map((e) => {
772
+ let t = e.roles.map((e) => yt[e.trim().toLowerCase()] ?? e);
761
773
  return H({
762
774
  name: e.name,
763
775
  roles: t.length > 0 ? t : [e.source === "creator" ? "author" : "contributor"],
764
776
  sortAs: e.fileAs
765
777
  });
766
- }), _t = (e, t) => e.refines !== void 0 && e.refines.replace(/^#/, "") === t, vt = {
778
+ }), X = (e, t) => e.refines !== void 0 && e.refines.replace(/^#/, "") === t, xt = {
767
779
  "02": "ISBN",
768
780
  "03": "GTIN",
769
781
  "04": "UPC",
@@ -779,24 +791,49 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => H({
779
791
  26: "DOI",
780
792
  34: "GTIN",
781
793
  35: "ARK"
782
- }, yt = (e) => {
794
+ }, St = (e) => {
783
795
  let t = e?.value?.trim();
784
- if (!(t === void 0 || t.length === 0)) return e?.scheme?.trim().toLowerCase() === "onix:codelist5" ? vt[t] ?? t : t;
785
- }, bt = (e, t) => {
796
+ if (!(t === void 0 || t.length === 0)) return e?.scheme?.trim().toLowerCase() === "onix:codelist5" ? xt[t] ?? t : t;
797
+ }, Ct = (e, t) => {
786
798
  let n = e.id;
787
- if (n !== void 0) return yt(t.find((e) => e.property === "identifier-type" && _t(e, n) && e.value !== void 0));
788
- }, xt = (e) => {
799
+ if (n !== void 0) return St(t.find((e) => e.property === "identifier-type" && X(e, n) && e.value !== void 0));
800
+ }, wt = (e) => {
789
801
  let t = e?.trim();
790
802
  if (t === void 0 || !/^\d+(\.\d+)?$/.test(t)) return;
791
803
  let n = Number.parseFloat(t);
792
804
  return Number.isFinite(n) ? n : void 0;
793
- }, St = (e) => {
805
+ }, Tt = (e) => {
806
+ let t = e?.trim();
807
+ if (t === void 0 || !/^\d+$/.test(t)) return;
808
+ let n = Number.parseInt(t, 10);
809
+ return Number.isFinite(n) ? n : void 0;
810
+ }, Z = (e) => {
811
+ let t = e?.trim();
812
+ return t !== void 0 && t.length > 0 ? t : void 0;
813
+ }, Q = (e, t, n) => t === void 0 ? void 0 : e.find((e) => X(e, t) && e.property === n && e.value !== void 0)?.value, Et = (e) => e.titles.map((t) => H({
814
+ value: t.value,
815
+ type: Z(Q(e.metas, t.id, "title-type"))?.toLowerCase(),
816
+ displaySeq: Tt(Q(e.metas, t.id, "display-seq")),
817
+ sortAs: Z(Q(e.metas, t.id, "file-as"))
818
+ })), Dt = (e, t) => {
819
+ if (t === void 0) return;
820
+ let n = e.flatMap((n) => {
821
+ if (!X(n, t) || n.property !== "dcterms:identifier") return [];
822
+ let r = Z(n.value);
823
+ return r === void 0 ? [] : [{
824
+ value: r,
825
+ scheme: vt(St(e.find((e) => n.id !== void 0 && X(e, n.id) && e.property === "identifier-type")) ?? _t(r))
826
+ }];
827
+ });
828
+ return n.length > 0 ? n : void 0;
829
+ }, Ot = (e) => {
794
830
  let t = [], n = [];
795
831
  for (let r of e) {
796
832
  if (r.property !== "belongs-to-collection" || r.value === void 0) continue;
797
- let i = r.id, a = (t) => i === void 0 ? void 0 : e.find((e) => _t(e, i) && e.property === t && e.value !== void 0)?.value, o = a("collection-type")?.trim().toLowerCase(), s = H({
833
+ let i = r.id, a = (t) => Q(e, i, t), o = a("collection-type")?.trim().toLowerCase(), s = H({
798
834
  name: r.value,
799
- position: xt(a("group-position"))
835
+ identifiers: Dt(e, i),
836
+ position: wt(a("group-position"))
800
837
  });
801
838
  o === "series" ? t.push(s) : n.push(s);
802
839
  }
@@ -804,55 +841,55 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => H({
804
841
  let n = e.find((e) => e.name?.toLowerCase() === "calibre:series" && e.content !== void 0)?.content;
805
842
  n !== void 0 && t.push(H({
806
843
  name: n,
807
- position: xt(e.find((e) => e.name?.toLowerCase() === "calibre:series_index")?.content)
844
+ position: wt(e.find((e) => e.name?.toLowerCase() === "calibre:series_index")?.content)
808
845
  }));
809
846
  }
810
847
  return {
811
848
  series: t,
812
849
  collection: n
813
850
  };
814
- }, Ct = (e) => {
851
+ }, kt = (e) => {
815
852
  let t = e?.trim();
816
853
  if (t === "scrolled-continuous" || t === "scrolled-doc" || t === "paginated" || t === "auto") return t;
817
- }, wt = (e) => {
854
+ }, At = (e) => {
818
855
  let t = e?.trim();
819
856
  if (t === "none" || t === "landscape" || t === "portrait" || t === "both" || t === "auto") return t;
820
- }, Tt = (e) => {
821
- let t = e.pageProgressionDirection?.trim().toLowerCase(), n = t === "ltr" || t === "rtl" ? t : void 0, r = e.renditionLayoutMeta?.trim().toLowerCase(), i = r === "reflowable" || r === "pre-paginated" ? r : void 0, a = gt(e), { series: o, collection: s } = St(e.metas), c = o.length > 0 || s.length > 0 ? H({
822
- series: o.length > 0 ? o : void 0,
823
- collection: s.length > 0 ? s : void 0
824
- }) : void 0, l = H({
825
- date: dt(e.date),
857
+ }, jt = (e) => {
858
+ let t = e.pageProgressionDirection?.trim().toLowerCase(), n = t === "ltr" || t === "rtl" ? t : void 0, r = e.renditionLayoutMeta?.trim().toLowerCase(), i = r === "reflowable" || r === "pre-paginated" ? r : void 0, a = bt(e), o = Et(e), { series: s, collection: c } = Ot(e.metas), l = s.length > 0 || c.length > 0 ? H({
859
+ series: s.length > 0 ? s : void 0,
860
+ collection: c.length > 0 ? c : void 0
861
+ }) : void 0, u = H({
862
+ date: ht(e.date),
826
863
  publisher: e.publisher
827
864
  });
828
865
  return H({
829
- title: e.title,
866
+ titles: o.length > 0 ? o : void 0,
830
867
  description: e.description,
831
- publication: l.date !== void 0 || l.publisher !== void 0 ? { edition: l } : void 0,
868
+ publication: u.date !== void 0 || u.publisher !== void 0 ? { edition: u } : void 0,
832
869
  rights: e.rights,
833
870
  languages: e.languages.length > 0 ? [...e.languages] : void 0,
834
871
  subjects: e.subjects.length > 0 ? [...e.subjects] : void 0,
835
872
  contributors: a.length > 0 ? a : void 0,
836
873
  readingDirection: n,
837
874
  renditionLayout: i,
838
- renditionFlow: Ct(e.renditionFlowMeta),
839
- renditionSpread: wt(e.renditionSpreadMeta),
875
+ renditionFlow: kt(e.renditionFlowMeta),
876
+ renditionSpread: At(e.renditionSpreadMeta),
840
877
  identifiers: e.identifiers.length > 0 ? e.identifiers.map((t) => H({
841
878
  value: t.value,
842
- scheme: mt(t.scheme ?? bt(t, e.metas) ?? pt(t.value)),
879
+ scheme: vt(t.scheme ?? Ct(t, e.metas) ?? _t(t.value)),
843
880
  unique: t.unique
844
881
  })) : void 0,
845
- belongsTo: c,
882
+ belongsTo: l,
846
883
  properties: e.metas.length > 0 ? [...e.metas] : void 0
847
884
  });
848
- }, Et = (e) => e.kind === "comicInfo" ? et(e) : e.kind === "kobo" ? rt(e) : e.kind === "apple" ? K(e) : Tt(e), Dt = (e) => {
849
- let t = e.opf === void 0 ? void 0 : Tt(e.opf), n = e.comicInfo === void 0 ? void 0 : et(e.comicInfo), r = e.apple === void 0 ? void 0 : K(e.apple), i = e.kobo === void 0 ? void 0 : rt(e.kobo), a = [...t?.identifiers ?? [], ...n?.identifiers ?? []], o = H({
885
+ }, Mt = (e) => e.kind === "comicInfo" ? it(e) : e.kind === "kobo" ? st(e) : e.kind === "apple" ? Re(e) : jt(e), Nt = (e) => {
886
+ let t = e.opf === void 0 ? void 0 : jt(e.opf), n = e.comicInfo === void 0 ? void 0 : it(e.comicInfo), r = e.apple === void 0 ? void 0 : Re(e.apple), i = e.kobo === void 0 ? void 0 : st(e.kobo), a = [...t?.identifiers ?? [], ...n?.identifiers ?? []], o = H({
850
887
  date: t?.publication?.edition?.date ?? n?.publication?.edition?.date,
851
888
  publisher: t?.publication?.edition?.publisher ?? n?.publication?.edition?.publisher,
852
889
  imprint: t?.publication?.edition?.imprint ?? n?.publication?.edition?.imprint
853
890
  });
854
891
  return H({
855
- title: t?.title ?? n?.title,
892
+ titles: t?.titles ?? n?.titles,
856
893
  description: t?.description ?? n?.description,
857
894
  publication: o.date !== void 0 || o.publisher !== void 0 || o.imprint !== void 0 ? { edition: o } : void 0,
858
895
  rights: t?.rights,
@@ -871,7 +908,7 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => H({
871
908
  apple: r?.apple,
872
909
  kobo: i?.kobo
873
910
  });
874
- }, Ot = (e) => {
911
+ }, Pt = (e) => {
875
912
  let t = [...e.records].sort((e, t) => p(e.uri, t.uri)), n = (e, t, r, i, a) => {
876
913
  let o = e.find((e) => e.title === t), [s, ...c] = r;
877
914
  return o ? s ? [...e.filter((e) => e !== o), {
@@ -900,71 +937,71 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => H({
900
937
  let a = encodeURI(t.uri).replace(/#/g, "%23").replace(/\?/g, "%3F").replace(/\/$/, ""), o = t.uri.replace(/\/$/, "");
901
938
  return n(e, r, i, a, o);
902
939
  }, []);
903
- }, kt = (e) => e ? e.children.map((e) => e instanceof _ ? e.text : e instanceof g ? kt(e) : "").join("").trim() : "", At = (e) => k(e.properties).includes("nav"), jt = (e, { basePath: t }) => {
940
+ }, Ft = (e) => e ? e.children.map((e) => e instanceof _ ? e.text : e instanceof g ? Ft(e) : "").join("").trim() : "", It = (e) => k(e.properties).includes("nav"), Lt = (e, { basePath: t }) => {
904
941
  let n = {
905
942
  contents: [],
906
943
  path: "",
907
944
  containerHref: "",
908
945
  title: ""
909
946
  }, r = e.childNamed("span") || e.childNamed("a");
910
- n.title = (r?.attr.title || r?.val.trim() || kt(r)) ?? "";
947
+ n.title = (r?.attr.title || r?.val.trim() || Ft(r)) ?? "";
911
948
  let i = r?.name;
912
949
  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);
913
950
  let a = e.childNamed("ol");
914
951
  if (a) {
915
952
  let e = a.childrenNamed("li");
916
- e && e.length > 0 && (n.contents = e.map((e) => jt(e, { basePath: t })));
953
+ e && e.length > 0 && (n.contents = e.map((e) => Lt(e, { basePath: t })));
917
954
  }
918
955
  return n;
919
- }, Mt = (e, { basePath: t }) => {
956
+ }, Rt = (e, { basePath: t }) => {
920
957
  let n = [], r;
921
958
  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) => {
922
- n.push(jt(e, { basePath: t }));
959
+ n.push(Lt(e, { basePath: t }));
923
960
  }), n;
924
- }, Nt = async (e, t) => {
925
- let n = e.manifestItems.find(At);
961
+ }, zt = async (e, t) => {
962
+ let n = e.manifestItems.find(It);
926
963
  if (n?.href) {
927
964
  let e = t.records.find((e) => e.uri.endsWith(n.href));
928
- if (e && !e.dir) return Mt(new h(await D(e)), { basePath: c(e.uri) });
965
+ if (e && !e.dir) return Rt(new h(await D(e)), { basePath: c(e.uri) });
929
966
  }
930
- }, Pt = (e, { basePath: t, prefix: n }) => {
967
+ }, Bt = (e, { basePath: t, prefix: n }) => {
931
968
  let r = m(t, e?.childNamed(`${n}content`)?.attr.src || ""), i = {
932
969
  title: e?.descendantWithPath(`${n}navLabel.${n}text`)?.val || "",
933
970
  path: r,
934
971
  containerHref: r,
935
972
  contents: []
936
973
  }, a = e.childrenNamed(`${n}navPoint`);
937
- return a && a.length > 0 && (i.contents = a.map((e) => Pt(e, {
974
+ return a && a.length > 0 && (i.contents = a.map((e) => Bt(e, {
938
975
  basePath: t,
939
976
  prefix: n
940
977
  }))), i;
941
- }, Ft = (e, { basePath: t }) => {
978
+ }, Vt = (e, { basePath: t }) => {
942
979
  let n = [], r = e.name, i = "";
943
980
  return r.indexOf(":") !== -1 && (i = `${r.split(":")[0]}:`), e.childNamed(`${i}navMap`)?.childrenNamed(`${i}navPoint`).forEach((e) => {
944
- n.push(Pt(e, {
981
+ n.push(Bt(e, {
945
982
  basePath: t,
946
983
  prefix: i
947
984
  }));
948
985
  }), n;
949
- }, It = async ({ opf: e, opfBasePath: t, archive: n }) => {
986
+ }, Ht = async ({ opf: e, opfBasePath: t, archive: n }) => {
950
987
  let r = e.spineTocIdref;
951
988
  if (r) {
952
989
  let i = e.manifestItems.find((e) => e.id === r);
953
990
  if (i) {
954
991
  let e = `${t}${t === "" ? "" : "/"}${i.href}`, r = n.records.find((t) => t.uri.endsWith(e));
955
- if (r && !r.dir) return Ft(new h(await D(r)), { basePath: c(r.uri) });
992
+ if (r && !r.dir) return Vt(new h(await D(r)), { basePath: c(r.uri) });
956
993
  }
957
994
  }
958
- }, Lt = async (e, { opf: t } = {}) => {
995
+ }, Ut = async (e, { opf: t } = {}) => {
959
996
  let n = t ?? await R(e);
960
- if (n) return await Nt(n.opf, e) || await It({
997
+ if (n) return await zt(n.opf, e) || await Ht({
961
998
  opf: n.opf,
962
999
  opfBasePath: n.basePath,
963
1000
  archive: e
964
1001
  }) || [];
965
- let r = Ot(e);
1002
+ let r = Pt(e);
966
1003
  return r.length === 0 ? void 0 : r;
967
- }, Rt = [
1004
+ }, Wt = [
968
1005
  "metadata",
969
1006
  "readingOrder",
970
1007
  "toc"
@@ -980,39 +1017,39 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => H({
980
1017
  failed: !0
981
1018
  };
982
1019
  }
983
- }, zt = (e) => {
1020
+ }, Gt = (e) => {
984
1021
  let t = (e) => e?.startsWith("audio/") === !0 || e?.startsWith("video/") === !0, n = e.filter((e) => e.renditionLayout === "pre-paginated" && !t(e.mediaType)).length;
985
1022
  return n > 0 ? n : void 0;
986
- }, Bt = ({ archive: e, opf: t, comicInfo: n, apple: r, kobo: i }) => {
1023
+ }, Kt = ({ archive: e, opf: t, comicInfo: n, apple: r, kobo: i }) => {
987
1024
  let a = [];
988
- return t !== void 0 && t.value === void 0 && (t.failed || ot(e)) && a.push("opf"), n?.failed && a.push("comicInfo"), r?.failed && a.push("apple"), i?.failed && a.push("kobo"), a;
989
- }, Vt = 3, Ht = async (e, t = {}) => {
990
- let n = new Set(t.include ?? Rt), 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 $(() => R(e), "opf") : void 0, l = c?.value, u = r || i || s, d = u ? await $(() => Re(e), "comicInfo") : void 0, f = d?.value, p = u ? await $(() => G(e), "apple") : void 0, m = p?.value, h = u ? await $(() => tt(e), "kobo") : void 0, g = h?.value, _ = r || s ? Dt({
1025
+ return t !== void 0 && t.value === void 0 && (t.failed || ut(e)) && a.push("opf"), n?.failed && a.push("comicInfo"), r?.failed && a.push("apple"), i?.failed && a.push("kobo"), a;
1026
+ }, qt = 3, Jt = async (e, t = {}) => {
1027
+ let n = new Set(t.include ?? Wt), 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 $(() => R(e), "opf") : void 0, l = c?.value, u = r || i || s, d = u ? await $(() => He(e), "comicInfo") : void 0, f = d?.value, p = u ? await $(() => Ie(e), "apple") : void 0, m = p?.value, h = u ? await $(() => at(e), "kobo") : void 0, g = h?.value, _ = r || s ? Nt({
991
1028
  opf: l?.opf,
992
1029
  comicInfo: f,
993
1030
  apple: m,
994
1031
  kobo: g
995
1032
  }) : void 0, v = a || s ? await U(e, { opf: l }) : void 0;
996
- if (s && _ !== void 0 && v !== void 0 && _.renditionLayout === "reflowable" && v.every((e) => e.renditionLayout === "reflowable") && await W(e, v) && (_ = {
1033
+ if (s && _ !== void 0 && v !== void 0 && _.renditionLayout === "reflowable" && v.every((e) => e.renditionLayout === "reflowable") && await Pe(e, v) && (_ = {
997
1034
  ..._,
998
1035
  renditionLayout: "pre-paginated"
999
1036
  }, v = v.map((e) => ({
1000
1037
  ...e,
1001
1038
  renditionLayout: "pre-paginated"
1002
1039
  }))), r && _ !== void 0) {
1003
- let t = v ?? await U(e, { opf: l }), n = await je(e, {
1040
+ let t = v ?? await U(e, { opf: l }), n = await Me(e, {
1004
1041
  opf: l,
1005
1042
  readingOrder: t
1006
- }), r = _.numberOfPages ?? zt(t);
1043
+ }), r = _.numberOfPages ?? Gt(t);
1007
1044
  _ = H({
1008
1045
  ..._,
1009
1046
  cover: n,
1010
1047
  numberOfPages: r
1011
1048
  });
1012
1049
  }
1013
- let y = o ? (await $(() => Lt(e, { opf: l }), "toc")).value : void 0, b = {
1014
- version: Vt,
1015
- unreadableSources: Bt({
1050
+ let y = o ? (await $(() => Ut(e, { opf: l }), "toc")).value : void 0, b = {
1051
+ version: qt,
1052
+ unreadableSources: Kt({
1016
1053
  archive: e,
1017
1054
  opf: c,
1018
1055
  comicInfo: d,
@@ -1026,8 +1063,8 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => H({
1026
1063
  apple: m,
1027
1064
  kobo: g
1028
1065
  })), b;
1029
- };
1066
+ }, Yt = (e) => e?.titles?.[0]?.value;
1030
1067
  //#endregion
1031
- export { z as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, B as COMIC_INFO_FILENAME, he as COMIC_INFO_KNOWN_FIELDS, Ie as COMIC_INFO_MANGA_VALUES, V as KOBO_DISPLAY_OPTIONS_FILENAME, Pe as appleMetadataHomes, i as arrayBufferFileAccessors, r as blobFileAccessors, ze as comicInfoMetadataHomes, e as createArchive, v as createArchiveFromArrayBufferList, n as createArchiveFromEntries, y as createArchiveFromText, b as createArchiveFromUrls, C as getArchiveFileRecordByUri, q as getArchiveHasComicInfo, E as getArchiveImageRecords, O as getArchiveOpfInfo, it as getSpineItemFilesFromArchive, ot as isArchiveEpub, Le as isComicInfoManga, S as isDirectoryRecord, x as isFileRecord, T as isImageRecord, nt as koboMetadataHomes, ct as normalizeGtin, ut as normalizeIsbn, ft as opfMetadataHomes, me as parseAppleDisplayOptionsXml, ye as parseComicInfo, xe as parseKoboXml, fe as parseOpf, dt as parseW3cDtfDate, G as readArchiveApple, Re as readArchiveComicInfo, tt as readArchiveKobo, R as readArchiveOpf, D as readRecordAsText, W as readingOrderDocumentsAllHaveViewport, Ht as resolveArchive, je as resolveArchiveCover, Et as resolveArchiveMetadata, U as resolveArchiveReadingOrder, Lt as resolveArchiveToc, Dt as resolveMetadata, k as tokenizeXmlSpaceSeparatedList };
1068
+ export { z as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, V as COMIC_INFO_FILENAME, he as COMIC_INFO_KNOWN_FIELDS, Be as COMIC_INFO_MANGA_VALUES, be as KOBO_DISPLAY_OPTIONS_FILENAME, Le as appleMetadataHomes, i as arrayBufferFileAccessors, r as blobFileAccessors, Ue as comicInfoMetadataHomes, e as createArchive, v as createArchiveFromArrayBufferList, n as createArchiveFromEntries, y as createArchiveFromText, b as createArchiveFromUrls, C as getArchiveFileRecordByUri, W as getArchiveHasComicInfo, E as getArchiveImageRecords, O as getArchiveOpfInfo, ct as getSpineItemFilesFromArchive, ut as isArchiveEpub, Ve as isComicInfoManga, S as isDirectoryRecord, x as isFileRecord, T as isImageRecord, ot as koboMetadataHomes, Yt as mainTitle, ft as normalizeGtin, mt as normalizeIsbn, gt as opfMetadataHomes, B as parseAppleDisplayOptionsXml, ye as parseComicInfo, Se as parseKoboXml, pe as parseOpf, ht as parseW3cDtfDate, Ie as readArchiveApple, He as readArchiveComicInfo, at as readArchiveKobo, R as readArchiveOpf, D as readRecordAsText, Pe as readingOrderDocumentsAllHaveViewport, Jt as resolveArchive, Me as resolveArchiveCover, Mt as resolveArchiveMetadata, U as resolveArchiveReadingOrder, Ut as resolveArchiveToc, Nt as resolveMetadata, k as tokenizeXmlSpaceSeparatedList };
1032
1069
 
1033
1070
  //# sourceMappingURL=index.js.map