@prose-reader/archive-reader 1.337.0 → 1.339.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.
Files changed (65) hide show
  1. package/dist/apple/readArchiveApple.d.ts +2 -2
  2. package/dist/apple/resolve.d.ts +2 -2
  3. package/dist/archives/createArchive.d.ts +1 -1
  4. package/dist/archives/createArchiveFromArrayBufferList.d.ts +1 -1
  5. package/dist/archives/createArchiveFromEntries.d.ts +1 -1
  6. package/dist/archives/createArchiveFromJszip/index.cjs.map +1 -1
  7. package/dist/archives/createArchiveFromJszip/index.js +1 -1
  8. package/dist/archives/createArchiveFromJszip/index.js.map +1 -1
  9. package/dist/archives/createArchiveFromJszip.d.ts +1 -1
  10. package/dist/archives/createArchiveFromLibArchive/index.cjs.map +1 -1
  11. package/dist/archives/createArchiveFromLibArchive/index.js +1 -1
  12. package/dist/archives/createArchiveFromLibArchive/index.js.map +1 -1
  13. package/dist/archives/createArchiveFromLibArchive.d.ts +1 -1
  14. package/dist/archives/createArchiveFromNodeUnrarJs/index.cjs.map +1 -1
  15. package/dist/archives/createArchiveFromNodeUnrarJs/index.js +1 -1
  16. package/dist/archives/createArchiveFromNodeUnrarJs/index.js.map +1 -1
  17. package/dist/archives/createArchiveFromNodeUnrarJs.d.ts +1 -1
  18. package/dist/archives/createArchiveFromText.d.ts +1 -1
  19. package/dist/archives/createArchiveFromUnzipper/index.cjs.map +1 -1
  20. package/dist/archives/createArchiveFromUnzipper/index.js +1 -1
  21. package/dist/archives/createArchiveFromUnzipper/index.js.map +1 -1
  22. package/dist/archives/createArchiveFromUnzipper.d.ts +1 -1
  23. package/dist/archives/createArchiveFromUrls.d.ts +1 -1
  24. package/dist/archives/createArchiveFromZipJs/index.cjs.map +1 -1
  25. package/dist/archives/createArchiveFromZipJs/index.js +1 -1
  26. package/dist/archives/createArchiveFromZipJs/index.js.map +1 -1
  27. package/dist/archives/createArchiveFromZipJs.d.ts +1 -1
  28. package/dist/archives/fileAccessors.d.ts +1 -1
  29. package/dist/archives/images.d.ts +1 -1
  30. package/dist/archives/readRecordAsText.d.ts +1 -1
  31. package/dist/comicInfo/getArchiveHasComicInfo.d.ts +1 -1
  32. package/dist/comicInfo/parse.d.ts +1 -1
  33. package/dist/comicInfo/readArchiveComicInfo.d.ts +2 -2
  34. package/dist/comicInfo/resolve.d.ts +2 -2
  35. package/dist/cover/resolveArchiveCover.d.ts +4 -4
  36. package/dist/{createArchiveFromEntries-CFG3evXM.js → createArchiveFromEntries-BiBoi26P.js} +1 -3
  37. package/dist/createArchiveFromEntries-BiBoi26P.js.map +1 -0
  38. package/dist/createArchiveFromEntries-DcPCGgZW.cjs.map +1 -1
  39. package/dist/fileAccessors-DWVChFUB.cjs.map +1 -1
  40. package/dist/fileAccessors-etcCPnpQ.js.map +1 -1
  41. package/dist/index/index.cjs +1 -1
  42. package/dist/index/index.cjs.map +1 -1
  43. package/dist/index/index.js +252 -219
  44. package/dist/index/index.js.map +1 -1
  45. package/dist/index.d.ts +50 -50
  46. package/dist/kobo/readArchiveKobo.d.ts +2 -2
  47. package/dist/kobo/resolve.d.ts +2 -2
  48. package/dist/layout/scanReadingOrderDocumentsViewport.d.ts +2 -2
  49. package/dist/opf/getArchiveOpfInfo.d.ts +2 -2
  50. package/dist/opf/getSpineItemFilesFromArchive.d.ts +3 -3
  51. package/dist/opf/isArchiveEpub.d.ts +1 -1
  52. package/dist/opf/parse.d.ts +2 -0
  53. package/dist/opf/readArchiveOpf.d.ts +2 -2
  54. package/dist/opf/resolve.d.ts +2 -2
  55. package/dist/readingOrder/resolveArchiveReadingOrder.d.ts +2 -2
  56. package/dist/resolve.d.ts +5 -5
  57. package/dist/resolveArchive.d.ts +8 -8
  58. package/dist/resolveMetadata.d.ts +5 -5
  59. package/dist/toc/folders.d.ts +2 -2
  60. package/dist/toc/nav.d.ts +3 -3
  61. package/dist/toc/ncx.d.ts +3 -3
  62. package/dist/toc/resolveArchiveToc.d.ts +3 -3
  63. package/dist/types/resolvedMetadata.d.ts +1 -0
  64. package/package.json +10 -3
  65. package/dist/createArchiveFromEntries-CFG3evXM.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { n as e, r as t, t as n } from "../createArchiveFromEntries-CFG3evXM.js";
1
+ import { n as e, r as t, t as n } from "../createArchiveFromEntries-BiBoi26P.js";
2
2
  import { n as r, t as i } from "../fileAccessors-etcCPnpQ.js";
3
3
  import { XmlDocument as a, XmlElement as o, XmlTextNode as s } from "xmldoc";
4
4
  import { createXmlSafeIdFactory as c, detectMimeTypeFromName as l, escapeXmlAttributeValue as u, getUriBasePath as d, getUriBasename as f, isMediaContentMimeType as p, isXmlBasedMimeType as m, parseContentType as h, sortByTitleComparator as g, urlJoin as _ } from "@prose-reader/shared";
@@ -27,7 +27,7 @@ async function E(e) {
27
27
  var D = (e) => {
28
28
  let t = Object.entries(e).filter(([, e]) => e !== void 0);
29
29
  return Object.fromEntries(t);
30
- }, ee = { displayOptions: "apple.options" }, te = (e) => {
30
+ }, O = { displayOptions: "apple.options" }, k = (e) => {
31
31
  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 = D({
32
32
  fixedLayout: r,
33
33
  options: t !== void 0 && t.length > 0 ? t.map(({ name: e, value: t }) => D({
@@ -39,7 +39,7 @@ var D = (e) => {
39
39
  renditionLayout: r === !0 ? "pre-paginated" : void 0,
40
40
  apple: Object.keys(i).length > 0 ? i : void 0
41
41
  });
42
- }, ne = async (e, t = {}) => n(e, (e) => e.isDir ? {
42
+ }, ee = async (e, t = {}) => n(e, (e) => e.isDir ? {
43
43
  dir: !0,
44
44
  uri: e.name
45
45
  } : {
@@ -50,7 +50,7 @@ var D = (e) => {
50
50
  }, {
51
51
  ...t,
52
52
  close: () => Promise.resolve()
53
- }), re = async (t, { mimeType: n, direction: i } = { mimeType: "text/plain" }) => {
53
+ }), te = async (t, { mimeType: n, direction: i } = { mimeType: "text/plain" }) => {
54
54
  let a = `
55
55
  <?xml version="1.0" encoding="UTF-8"?>
56
56
  <package xmlns="http://www.idpf.org/2007/opf" version="3.0" xml:lang="ja" prefix="rendition: http://www.idpf.org/vocab/rendition/#"
@@ -86,7 +86,7 @@ var D = (e) => {
86
86
  }],
87
87
  close: () => Promise.resolve()
88
88
  });
89
- }, ie = async (t, n) => {
89
+ }, ne = async (t, n) => {
90
90
  let i = c(), a = t.map((e) => ({
91
91
  id: i(e),
92
92
  url: e
@@ -124,59 +124,59 @@ var D = (e) => {
124
124
  }, ...s],
125
125
  close: () => Promise.resolve()
126
126
  });
127
- }, ae = (e) => h(e.encodingFormat ?? "") || l(e.basename), O = (e) => S(e) && ae(e)?.startsWith("image/") === !0, oe = (e) => e.records.filter(S).filter(O), k = "ComicInfo.xml", se = /* @__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("."), ce = /* @__PURE__ */ new Set(["Pages", "ComicInfo"]), le = (e) => e.children.some((e) => e.type === "element"), ue = (e) => {
127
+ }, re = (e) => h(e.encodingFormat ?? "") || l(e.basename), A = (e) => S(e) && re(e)?.startsWith("image/") === !0, ie = (e) => e.records.filter(S).filter(A), j = "ComicInfo.xml", ae = /* @__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("."), oe = /* @__PURE__ */ new Set(["Pages", "ComicInfo"]), se = (e) => e.children.some((e) => e.type === "element"), ce = (e) => {
128
128
  let t = e.val.trim();
129
129
  return t.length > 0 ? t : void 0;
130
- }, de = (e) => {
130
+ }, le = (e) => {
131
131
  let t;
132
132
  try {
133
133
  t = new a(e);
134
134
  } catch (e) {
135
135
  let t = e instanceof Error ? e.message : String(e);
136
- throw Error(`${k} is malformed: ${t}`, { cause: e });
136
+ throw Error(`${j} is malformed: ${t}`, { cause: e });
137
137
  }
138
138
  let n = {};
139
139
  return t.eachChild((e) => {
140
- if (e.type !== "element" || ce.has(e.name) || le(e)) return;
141
- let t = ue(e);
140
+ if (e.type !== "element" || oe.has(e.name) || se(e)) return;
141
+ let t = ce(e);
142
142
  t !== void 0 && n[e.name] === void 0 && (n[e.name] = t);
143
143
  }), {
144
144
  kind: "comicInfo",
145
145
  ...n
146
146
  };
147
- }, fe = k.toLowerCase(), pe = (e) => e.records.find((e) => S(e) && e.basename.toLowerCase() === fe), A = [
147
+ }, ue = j.toLowerCase(), M = (e) => e.records.find((e) => S(e) && e.basename.toLowerCase() === ue), de = [
148
148
  "Unknown",
149
149
  "No",
150
150
  "Yes",
151
151
  "YesAndRightToLeft"
152
- ], me = (e) => {
153
- for (let t of A) if (t === e) return !0;
152
+ ], fe = (e) => {
153
+ for (let t of de) if (t === e) return !0;
154
154
  return !1;
155
155
  };
156
156
  //#endregion
157
157
  //#region src/comicInfo/readArchiveComicInfo.ts
158
- async function he(e) {
159
- let t = pe(e);
160
- if (t) return de(await x(t));
158
+ async function N(e) {
159
+ let t = M(e);
160
+ if (t) return le(await x(t));
161
161
  }
162
162
  //#endregion
163
163
  //#region src/utils/normalizeGtin.ts
164
- var ge = /* @__PURE__ */ new Set([
164
+ var pe = /* @__PURE__ */ new Set([
165
165
  8,
166
166
  12,
167
167
  13,
168
168
  14
169
- ]), j = (e) => {
169
+ ]), P = (e) => {
170
170
  if (e == null) return;
171
171
  let t = String(e).replace(/\D/g, "");
172
- if (!(t.length === 0 || !ge.has(t.length))) return t;
173
- }, _e = /(?:97[89])?\d{9}[\dXx]/, M = (e) => {
172
+ if (!(t.length === 0 || !pe.has(t.length))) return t;
173
+ }, me = /(?:97[89])?\d{9}[\dXx]/, F = (e) => {
174
174
  if (e == null) return;
175
175
  let t = String(e).trim().replace(/^urn:isbn:/i, "").replace(/^isbn[:\s-]*/i, ""), n = t.replace(/[^0-9Xx]/g, "");
176
176
  if (n.length === 10 || n.length === 13) return n.toUpperCase();
177
- let r = t.match(_e);
177
+ let r = t.match(me);
178
178
  if (r) return r[0].toUpperCase();
179
- }, ve = {
179
+ }, he = {
180
180
  AgeRating: "comic.ageRating",
181
181
  AlternateCount: "comic.alternateSeries",
182
182
  AlternateNumber: "comic.alternateSeries",
@@ -220,46 +220,46 @@ var ge = /* @__PURE__ */ new Set([
220
220
  Web: "comic.web",
221
221
  Writer: "contributors",
222
222
  Year: "published"
223
- }, ye = (e) => {
223
+ }, ge = (e) => {
224
224
  switch (e.Manga) {
225
225
  case "YesAndRightToLeft": return "rtl";
226
226
  case "Yes":
227
227
  case "No": return "ltr";
228
228
  default: return;
229
229
  }
230
- }, N = (e) => {
230
+ }, I = (e) => {
231
231
  if (e === void 0) return;
232
232
  let t = e.trim();
233
233
  return t.length > 0 ? t : void 0;
234
- }, P = (e) => e === void 0 ? [] : e.split(",").map((e) => e.trim()).filter((e) => e.length > 0), F = (e) => {
235
- let t = N(e);
234
+ }, L = (e) => e === void 0 ? [] : e.split(",").map((e) => e.trim()).filter((e) => e.length > 0), R = (e) => {
235
+ let t = I(e);
236
236
  if (t === void 0 || !/^\d+$/.test(t)) return;
237
237
  let n = Number.parseInt(t, 10);
238
238
  return Number.isFinite(n) ? n : void 0;
239
- }, I = (e) => {
240
- let t = N(e);
239
+ }, z = (e) => {
240
+ let t = I(e);
241
241
  if (t === void 0 || !/^\d+(\.\d+)?$/.test(t)) return;
242
242
  let n = Number.parseFloat(t);
243
243
  return Number.isFinite(n) ? n : void 0;
244
- }, be = (e) => {
245
- let t = N(e)?.toLowerCase();
244
+ }, _e = (e) => {
245
+ let t = I(e)?.toLowerCase();
246
246
  if (t === "yes") return !0;
247
247
  if (t === "no") return !1;
248
- }, xe = (e) => {
248
+ }, ve = (e) => {
249
249
  switch (e.Manga) {
250
250
  case "Yes":
251
251
  case "YesAndRightToLeft": return !0;
252
252
  case "No": return !1;
253
253
  default: return;
254
254
  }
255
- }, Se = (e) => {
256
- let t = F(e.Year), n = F(e.Month), r = F(e.Day);
255
+ }, ye = (e) => {
256
+ let t = R(e.Year), n = R(e.Month), r = R(e.Day);
257
257
  if (!(t === void 0 && n === void 0 && r === void 0)) return {
258
258
  ...t === void 0 ? {} : { year: t },
259
259
  ...n === void 0 ? {} : { month: n },
260
260
  ...r === void 0 ? {} : { day: r }
261
261
  };
262
- }, Ce = [
262
+ }, be = [
263
263
  ["Writer", "author"],
264
264
  ["Penciller", "penciler"],
265
265
  ["Inker", "inker"],
@@ -268,9 +268,9 @@ var ge = /* @__PURE__ */ new Set([
268
268
  ["CoverArtist", "coverArtist"],
269
269
  ["Editor", "editor"],
270
270
  ["Translator", "translator"]
271
- ], we = (e) => {
271
+ ], xe = (e) => {
272
272
  let t = /* @__PURE__ */ new Map();
273
- for (let [n, r] of Ce) for (let i of P(e[n])) {
273
+ for (let [n, r] of be) for (let i of L(e[n])) {
274
274
  let e = t.get(i);
275
275
  e ? e.roles.includes(r) || e.roles.push(r) : t.set(i, {
276
276
  name: i,
@@ -278,84 +278,84 @@ var ge = /* @__PURE__ */ new Set([
278
278
  });
279
279
  }
280
280
  return [...t.values()];
281
- }, Te = (e) => {
282
- let t = N(e.Series);
281
+ }, Se = (e) => {
282
+ let t = I(e.Series);
283
283
  if (t !== void 0) return D({
284
284
  name: t,
285
- position: I(e.Number),
286
- total: F(e.Count)
285
+ position: z(e.Number),
286
+ total: R(e.Count)
287
287
  });
288
- }, Ee = (e) => {
289
- let t = N(e.AlternateSeries);
288
+ }, Ce = (e) => {
289
+ let t = I(e.AlternateSeries);
290
290
  if (t !== void 0) return D({
291
291
  name: t,
292
- position: I(e.AlternateNumber),
293
- total: F(e.AlternateCount)
292
+ position: z(e.AlternateNumber),
293
+ total: R(e.AlternateCount)
294
294
  });
295
- }, De = (e) => {
296
- let t = P(e.StoryArc);
295
+ }, we = (e) => {
296
+ let t = L(e.StoryArc);
297
297
  if (t.length === 0) return [];
298
- let n = P(e.StoryArcNumber);
298
+ let n = L(e.StoryArcNumber);
299
299
  return t.map((e, t) => D({
300
300
  name: e,
301
- position: I(n[t])
301
+ position: z(n[t])
302
302
  }));
303
- }, L = (e) => e.length > 0 ? e : void 0, Oe = (e) => {
304
- let t = L((e.Web ?? "").split(/\s+/).filter((e) => e.length > 0)), n = D({
305
- manga: xe(e),
306
- blackAndWhite: be(e.BlackAndWhite),
307
- volume: F(e.Volume),
308
- format: N(e.Format),
309
- ageRating: N(e.AgeRating),
310
- communityRating: I(e.CommunityRating),
311
- notes: N(e.Notes),
312
- review: N(e.Review),
303
+ }, B = (e) => e.length > 0 ? e : void 0, Te = (e) => {
304
+ let t = B((e.Web ?? "").split(/\s+/).filter((e) => e.length > 0)), n = D({
305
+ manga: ve(e),
306
+ blackAndWhite: _e(e.BlackAndWhite),
307
+ volume: R(e.Volume),
308
+ format: I(e.Format),
309
+ ageRating: I(e.AgeRating),
310
+ communityRating: z(e.CommunityRating),
311
+ notes: I(e.Notes),
312
+ review: I(e.Review),
313
313
  web: t,
314
- scanInformation: N(e.ScanInformation),
315
- mainCharacterOrTeam: N(e.MainCharacterOrTeam),
316
- characters: L(P(e.Characters)),
317
- teams: L(P(e.Teams)),
318
- locations: L(P(e.Locations)),
319
- storyArcs: L(De(e)),
320
- alternateSeries: Ee(e)
314
+ scanInformation: I(e.ScanInformation),
315
+ mainCharacterOrTeam: I(e.MainCharacterOrTeam),
316
+ characters: B(L(e.Characters)),
317
+ teams: B(L(e.Teams)),
318
+ locations: B(L(e.Locations)),
319
+ storyArcs: B(we(e)),
320
+ alternateSeries: Ce(e)
321
321
  });
322
322
  return Object.keys(n).length > 0 ? n : void 0;
323
- }, ke = (e) => {
324
- let t = Te(e), n = L(P(e.SeriesGroup).map((e) => ({ name: e })));
323
+ }, Ee = (e) => {
324
+ let t = Se(e), n = B(L(e.SeriesGroup).map((e) => ({ name: e })));
325
325
  if (!(t === void 0 && n === void 0)) return D({
326
326
  series: t === void 0 ? void 0 : [t],
327
327
  collection: n
328
328
  });
329
- }, R = (e) => {
330
- let t = e.GTIN, n = N(t), r = N(e.LanguageISO), i = [...P(e.Genre), ...P(e.Tags)];
329
+ }, V = (e) => {
330
+ let t = e.GTIN, n = I(t), r = I(e.LanguageISO), i = [...L(e.Genre), ...L(e.Tags)];
331
331
  return D({
332
- title: N(e.Title),
333
- description: N(e.Summary),
334
- publisher: N(e.Publisher),
335
- imprint: N(e.Imprint),
332
+ title: I(e.Title),
333
+ description: I(e.Summary),
334
+ publisher: I(e.Publisher),
335
+ imprint: I(e.Imprint),
336
336
  languages: r === void 0 ? void 0 : [r],
337
- subjects: L(i),
338
- contributors: L(we(e)),
339
- published: Se(e),
340
- readingDirection: ye(e),
341
- numberOfPages: F(e.PageCount),
342
- gtin: j(t),
343
- isbn: M(t),
337
+ subjects: B(i),
338
+ contributors: B(xe(e)),
339
+ published: ye(e),
340
+ readingDirection: ge(e),
341
+ numberOfPages: R(e.PageCount),
342
+ gtin: P(t),
343
+ isbn: F(t),
344
344
  identifiers: n === void 0 ? void 0 : [{
345
345
  value: n,
346
346
  scheme: "GTIN"
347
347
  }],
348
- belongsTo: ke(e),
349
- comic: Oe(e)
348
+ belongsTo: Ee(e),
349
+ comic: Te(e)
350
350
  });
351
- }, z = (e) => {
351
+ }, H = (e) => {
352
352
  let t = e.records.filter((e) => !e.dir).find((e) => e.uri.endsWith(".opf"));
353
353
  return {
354
354
  data: t,
355
355
  basePath: t?.uri.substring(0, t.uri.lastIndexOf("/")) || ""
356
356
  };
357
- }, B = (e) => e === void 0 || e.trim().length === 0 ? [] : e.trim().split(/\s+/).filter((e) => e.length > 0), Ae = (e) => {
358
- let t = B(e);
357
+ }, U = (e) => e === void 0 || e.trim().length === 0 ? [] : e.trim().split(/\s+/).filter((e) => e.length > 0), De = (e) => {
358
+ let t = U(e);
359
359
  if (t.length === 0) return {};
360
360
  let n;
361
361
  t.includes("rendition:layout-reflowable") && (n = "reflowable"), t.includes("rendition:layout-pre-paginated") && (n = "pre-paginated");
@@ -366,64 +366,66 @@ var ge = /* @__PURE__ */ new Set([
366
366
  ...t.includes("page-spread-left") ? { pageSpreadLeft: !0 } : {},
367
367
  ...t.includes("page-spread-right") ? { pageSpreadRight: !0 } : {}
368
368
  };
369
- }, V = (e) => e.includes(":") ? e.slice(e.lastIndexOf(":") + 1) : e, H = (e, t) => V(e).toLowerCase() === t.toLowerCase(), U = (e) => e.type === "element", W = (e, t) => {
370
- for (let n of e.children) if (U(n) && H(n.name, t)) return n;
371
- }, G = (e, t) => {
369
+ }, W = (e) => e.includes(":") ? e.slice(e.lastIndexOf(":") + 1) : e, Oe = (e, t) => W(e).toLowerCase() === t.toLowerCase(), ke = (e) => e.type === "element", G = (e, t) => {
370
+ for (let n of e.children) if (ke(n) && Oe(n.name, t)) return n;
371
+ }, K = (e, t) => {
372
372
  let n = [];
373
- for (let r of e.children) U(r) && H(r.name, t) && n.push(r);
373
+ for (let r of e.children) ke(r) && Oe(r.name, t) && n.push(r);
374
374
  return n;
375
- }, je = (e) => {
376
- let t = [];
375
+ }, Ae = (e, t) => {
376
+ let n = [];
377
377
  return e.eachChild((e) => {
378
- if (V(e.name).toLowerCase() !== "identifier") return;
379
- let n = e.val.trim();
380
- if (n.length === 0) return;
381
- let r = (e.attr["opf:scheme"] ?? e.attr["opf:Scheme"] ?? e.attr.scheme)?.trim();
382
- t.push({
383
- value: n,
384
- ...r !== void 0 && r.length > 0 ? { scheme: r } : {}
378
+ if (W(e.name).toLowerCase() !== "identifier") return;
379
+ let r = e.val.trim();
380
+ if (r.length === 0) return;
381
+ 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;
382
+ n.push({
383
+ value: r,
384
+ ...i !== void 0 && i.length > 0 ? { scheme: i } : {},
385
+ ...o === void 0 ? {} : { id: o },
386
+ ...o !== void 0 && o === t ? { unique: !0 } : {}
385
387
  });
386
- }), t;
387
- }, K = (e, t) => {
388
+ }), n;
389
+ }, q = (e, t) => {
388
390
  let n;
389
391
  return e.eachChild((e) => {
390
- if (n !== void 0 || V(e.name).toLowerCase() !== t.toLowerCase()) return;
392
+ if (n !== void 0 || W(e.name).toLowerCase() !== t.toLowerCase()) return;
391
393
  let r = e.val.trim();
392
394
  r.length > 0 && (n = r);
393
395
  }), n;
394
- }, q = (e, t) => {
396
+ }, J = (e, t) => {
395
397
  let n = [];
396
398
  return e.eachChild((e) => {
397
- if (V(e.name).toLowerCase() !== t.toLowerCase()) return;
399
+ if (W(e.name).toLowerCase() !== t.toLowerCase()) return;
398
400
  let r = e.val.trim();
399
401
  r.length > 0 && n.push(r);
400
402
  }), n;
401
- }, Me = (e) => {
403
+ }, je = (e) => {
402
404
  let t;
403
405
  return e.eachChild((e) => {
404
- if (t !== void 0 || V(e.name).toLowerCase() !== "meta" || e.attr.name?.toLowerCase() !== "cover") return;
406
+ if (t !== void 0 || W(e.name).toLowerCase() !== "meta" || e.attr.name?.toLowerCase() !== "cover") return;
405
407
  let n = e.attr.content?.trim();
406
408
  n !== void 0 && n.length > 0 && (t = n);
407
409
  }), t;
408
- }, Ne = ({ manifestItems: e, metadataEl: t }) => {
409
- let n = (e) => e.mediaType?.toLowerCase().includes("image/") === !0, r = e.find((e) => n(e) ? B(e.properties).includes("cover-image") : !1);
410
+ }, Me = ({ manifestItems: e, metadataEl: t }) => {
411
+ let n = (e) => e.mediaType?.toLowerCase().includes("image/") === !0, r = e.find((e) => n(e) ? U(e.properties).includes("cover-image") : !1);
410
412
  if (r !== void 0) return r.href;
411
413
  if (t !== void 0) {
412
- let r = Me(t);
414
+ let r = je(t);
413
415
  if (r !== void 0) {
414
416
  let t = e.find((e) => e.id === r && n(e));
415
417
  if (t !== void 0) return t.href;
416
418
  }
417
419
  }
418
420
  return e.find((e) => e.id.toLowerCase().includes("cover") && n(e))?.href;
419
- }, J = (e, t) => {
421
+ }, Y = (e, t) => {
420
422
  let n = e.attr[t]?.trim();
421
423
  return n !== void 0 && n.length > 0 ? n : void 0;
422
- }, Pe = (e) => {
424
+ }, Ne = (e) => {
423
425
  let t = [];
424
426
  return e.eachChild((e) => {
425
- if (V(e.name).toLowerCase() !== "meta") return;
426
- let n = J(e, "property"), r = J(e, "refines"), i = J(e, "scheme"), a = J(e, "id"), o = J(e, "name"), s = J(e, "content"), c = e.val.trim(), l = c.length > 0 ? c : void 0, u = {
427
+ if (W(e.name).toLowerCase() !== "meta") return;
428
+ let n = Y(e, "property"), r = Y(e, "refines"), i = Y(e, "scheme"), a = Y(e, "id"), o = Y(e, "name"), s = Y(e, "content"), c = e.val.trim(), l = c.length > 0 ? c : void 0, u = {
427
429
  ...n === void 0 ? {} : { property: n },
428
430
  ...r === void 0 ? {} : { refines: r },
429
431
  ...i === void 0 ? {} : { scheme: i },
@@ -434,14 +436,14 @@ var ge = /* @__PURE__ */ new Set([
434
436
  };
435
437
  Object.keys(u).length !== 0 && t.push(u);
436
438
  }), t;
437
- }, Fe = (e, t) => e.replace(/^#/, "") === t, Ie = (e, t) => {
439
+ }, Pe = (e, t) => e.replace(/^#/, "") === t, Fe = (e, t) => {
438
440
  let n = [];
439
441
  return e.eachChild((e) => {
440
- let r = V(e.name).toLowerCase();
442
+ let r = W(e.name).toLowerCase();
441
443
  if (r !== "creator" && r !== "contributor") return;
442
444
  let i = e.val.trim();
443
445
  if (i.length === 0) return;
444
- let a = J(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 = J(e, "opf:role") ?? J(e, "role"), c = [...s === void 0 ? [] : [s], ...o("role")], l = J(e, "opf:file-as") ?? J(e, "file-as") ?? o("file-as")[0];
446
+ let a = Y(e, "id"), o = (e) => a === void 0 ? [] : t.flatMap((t) => t.refines !== void 0 && Pe(t.refines, a) && t.property === e && t.value !== void 0 ? [t.value] : []), s = Y(e, "opf:role") ?? Y(e, "role"), c = [...s === void 0 ? [] : [s], ...o("role")], l = Y(e, "opf:file-as") ?? Y(e, "file-as") ?? o("file-as")[0];
445
447
  n.push({
446
448
  name: i,
447
449
  source: r,
@@ -450,14 +452,14 @@ var ge = /* @__PURE__ */ new Set([
450
452
  ...l === void 0 ? {} : { fileAs: l }
451
453
  });
452
454
  }), n;
453
- }, Y = (e, t) => {
454
- let n = G(e, "meta").find((e) => e.attr.property === t)?.val;
455
+ }, X = (e, t) => {
456
+ let n = K(e, "meta").find((e) => e.attr.property === t)?.val;
455
457
  if (!(n === void 0 || n.trim().length === 0)) return n;
456
- }, Le = (e) => {
457
- let t = W(e, "guide");
458
+ }, Ie = (e) => {
459
+ let t = G(e, "guide");
458
460
  if (t === void 0) return [];
459
461
  let n = [];
460
- for (let e of G(t, "reference")) {
462
+ for (let e of K(t, "reference")) {
461
463
  let t = e.attr.href?.trim();
462
464
  t === void 0 || t.length === 0 || n.push({
463
465
  href: t,
@@ -466,7 +468,7 @@ var ge = /* @__PURE__ */ new Set([
466
468
  });
467
469
  }
468
470
  return n;
469
- }, Re = (e) => {
471
+ }, Le = (e) => {
470
472
  let t = e.attr.id, n = e.attr.href;
471
473
  if (t === void 0 || t.length === 0 || n === void 0 || n.length === 0) return;
472
474
  let r = e.attr["media-type"], i = e.attr.properties?.trim();
@@ -476,24 +478,24 @@ var ge = /* @__PURE__ */ new Set([
476
478
  ...r !== void 0 && r.length > 0 ? { mediaType: r } : {},
477
479
  ...i !== void 0 && i.length > 0 ? { properties: i } : {}
478
480
  };
479
- }, ze = (e) => {
481
+ }, Re = (e) => {
480
482
  let t = [], n = /* @__PURE__ */ new Map();
481
- for (let r of G(e, "item")) {
482
- let e = Re(r);
483
+ for (let r of K(e, "item")) {
484
+ let e = Le(r);
483
485
  e !== void 0 && (t.push(e), n.set(e.id, e));
484
486
  }
485
487
  return {
486
488
  items: t,
487
489
  byId: n
488
490
  };
489
- }, Be = (e, t) => {
491
+ }, ze = (e, t) => {
490
492
  let n = [];
491
- for (let r of G(t, "itemref")) {
493
+ for (let r of K(t, "itemref")) {
492
494
  let t = r.attr.idref;
493
495
  if (t === void 0 || t.trim().length === 0) continue;
494
496
  let i = e.get(t);
495
497
  if (i === void 0) continue;
496
- let a = Ae(r.attr.properties);
498
+ let a = De(r.attr.properties);
497
499
  n.push({
498
500
  idref: t,
499
501
  id: i.id,
@@ -507,63 +509,63 @@ var ge = /* @__PURE__ */ new Set([
507
509
  });
508
510
  }
509
511
  return n;
510
- }, Ve = (e) => {
511
- let t = new a(e), n = W(t, "manifest"), r = W(t, "spine"), i = W(t, "metadata"), o = [], s = [];
512
+ }, Be = (e) => {
513
+ let t = new a(e), n = G(t, "manifest"), r = G(t, "spine"), i = G(t, "metadata"), o = t.attr["unique-identifier"]?.trim(), s = o !== void 0 && o.length > 0 ? o : void 0, c = [], l = [];
512
514
  if (n !== void 0) {
513
- let { items: e, byId: t } = ze(n);
514
- o = e, r !== void 0 && (s = Be(t, r));
515
+ let { items: e, byId: t } = Re(n);
516
+ c = e, r !== void 0 && (l = ze(t, r));
515
517
  }
516
- let c = r?.attr["page-progression-direction"], l = c !== void 0 && c.trim().length > 0 ? c : void 0, u = r?.attr.toc, d = u !== void 0 && u.trim().length > 0 ? u.trim() : void 0, f, p, m, h, g, _ = [], v = [], y = [], b = [], x, S, C, w = [], T = [];
517
- i !== void 0 && (f = K(i, "title"), p = K(i, "publisher"), m = K(i, "description"), h = K(i, "rights"), g = K(i, "date"), _ = q(i, "creator"), y = q(i, "language"), b = q(i, "subject"), x = Y(i, "rendition:layout"), S = Y(i, "rendition:flow"), C = Y(i, "rendition:spread"), w = Pe(i), v = Ie(i, w), T.push(...je(i)));
518
- let E = Ne({
519
- manifestItems: o,
518
+ let u = r?.attr["page-progression-direction"], d = u !== void 0 && u.trim().length > 0 ? u : void 0, f = r?.attr.toc, p = f !== void 0 && f.trim().length > 0 ? f.trim() : void 0, m, h, g, _, v, y = [], b = [], x = [], S = [], C, w, T, E = [], D = [];
519
+ i !== void 0 && (m = q(i, "title"), h = q(i, "publisher"), g = q(i, "description"), _ = q(i, "rights"), v = q(i, "date"), y = J(i, "creator"), x = J(i, "language"), S = J(i, "subject"), C = X(i, "rendition:layout"), w = X(i, "rendition:flow"), T = X(i, "rendition:spread"), E = Ne(i), b = Fe(i, E), D.push(...Ae(i, s)));
520
+ let O = Me({
521
+ manifestItems: c,
520
522
  metadataEl: i
521
- }), D = Le(t);
523
+ }), k = Ie(t);
522
524
  return {
523
525
  kind: "opf",
524
- manifestItems: o,
525
- spineRows: s,
526
- spineTocIdref: d,
527
- identifiers: T,
528
- title: f,
529
- creators: _,
530
- contributors: v,
531
- publisher: p,
532
- description: m,
533
- rights: h,
534
- languages: y,
535
- subjects: b,
536
- date: g,
537
- coverHref: E,
538
- renditionLayoutMeta: x,
539
- renditionFlowMeta: S,
540
- renditionSpreadMeta: C,
541
- pageProgressionDirection: l,
542
- guide: D,
543
- metas: w
526
+ manifestItems: c,
527
+ spineRows: l,
528
+ spineTocIdref: p,
529
+ identifiers: D,
530
+ title: m,
531
+ creators: y,
532
+ contributors: b,
533
+ publisher: h,
534
+ description: g,
535
+ rights: _,
536
+ languages: x,
537
+ subjects: S,
538
+ date: v,
539
+ coverHref: O,
540
+ renditionLayoutMeta: C,
541
+ renditionFlowMeta: w,
542
+ renditionSpreadMeta: T,
543
+ pageProgressionDirection: d,
544
+ guide: k,
545
+ metas: E
544
546
  };
545
547
  };
546
548
  //#endregion
547
549
  //#region src/opf/readArchiveOpf.ts
548
- async function X(e) {
549
- let { data: t, basePath: n } = z(e) || {};
550
+ async function Z(e) {
551
+ let { data: t, basePath: n } = H(e) || {};
550
552
  if (!(!t || t.dir)) return {
551
- opf: Ve(await x(t)),
553
+ opf: Be(await x(t)),
552
554
  basePath: n
553
555
  };
554
556
  }
555
557
  //#endregion
556
558
  //#region src/kobo/parse.ts
557
- var He = "com.kobobooks.display-options.xml", Ue = (e) => {
559
+ var Ve = "com.kobobooks.display-options.xml", He = (e) => {
558
560
  let t = e.childNamed("platform");
559
561
  if (!t) return {};
560
562
  for (let e of t.childrenNamed("option")) if (e.attr?.name === "fixed-layout") return e.val.trim().toLowerCase() === "true" ? { renditionLayout: "pre-paginated" } : {};
561
563
  return {};
562
- }, Z = (e) => {
564
+ }, Ue = (e) => {
563
565
  let t = new a(e);
564
566
  return t.name?.toLowerCase() === "display_options" ? {
565
567
  kind: "kobo",
566
- ...Ue(t)
568
+ ...He(t)
567
569
  } : { kind: "kobo" };
568
570
  }, We = (e) => {
569
571
  let t = [];
@@ -598,7 +600,7 @@ var He = "com.kobobooks.display-options.xml", Ue = (e) => {
598
600
  pageSpreadRight: e.pageSpreadRight,
599
601
  progressionWeight: a > 0 ? (i?.size ?? 0) / a : 1 / t.spineRows.length
600
602
  }));
601
- }, Je = k.toLowerCase(), Ye = v.toLowerCase(), Xe = (e) => {
603
+ }, Je = j.toLowerCase(), Ye = v.toLowerCase(), Xe = (e) => {
602
604
  let t = e.basename.toLowerCase();
603
605
  return t === Je || t === Ye || e.uri.endsWith("com.kobobooks.display-options.xml") || t.endsWith(".db");
604
606
  }, Ze = (e) => {
@@ -614,13 +616,13 @@ var He = "com.kobobooks.display-options.xml", Ue = (e) => {
614
616
  });
615
617
  });
616
618
  }, Q = async (e, { opf: t } = {}) => {
617
- let n = t ?? await X(e).catch(() => void 0);
619
+ let n = t ?? await Z(e).catch(() => void 0);
618
620
  return n ? qe(e, n) : Ze(e);
619
621
  }, Qe = (e, t) => {
620
622
  let n = w(e, t);
621
623
  if (n !== void 0) return h(n.encodingFormat ?? "") || l(n.basename);
622
624
  }, $e = async (e, { opf: t, readingOrder: n } = {}) => {
623
- let r = t ?? await X(e).catch(() => void 0);
625
+ let r = t ?? await Z(e).catch(() => void 0);
624
626
  if (r !== void 0 && r.opf.coverHref !== void 0) {
625
627
  let t = Ge(r.opf.coverHref, r.basePath);
626
628
  return D({
@@ -645,10 +647,10 @@ async function et(e) {
645
647
  for (let e of n) {
646
648
  let n = await x(e);
647
649
  try {
648
- let { renditionLayout: e } = Z(n);
650
+ let { renditionLayout: e } = Ue(n);
649
651
  e && (r = e);
650
652
  } catch (n) {
651
- t.error(`Unable to parse ${He} (${e.uri})`, n);
653
+ t.error(`Unable to parse ${Ve} (${e.uri})`, n);
652
654
  }
653
655
  }
654
656
  return {
@@ -716,9 +718,17 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
716
718
  guide: "guide",
717
719
  metas: "properties"
718
720
  }, ut = (e) => {
719
- for (let t of e) if (t.scheme !== void 0 && t.scheme.trim().toLowerCase() === "isbn" && M(t.value) !== void 0) return t.value;
720
- for (let t of e) if (M(t.value) !== void 0) return t.value;
721
- }, dt = {
721
+ for (let t of e) if (t.scheme !== void 0 && t.scheme.trim().toLowerCase() === "isbn" && F(t.value) !== void 0) return t.value;
722
+ for (let t of e) if (F(t.value) !== void 0) return t.value;
723
+ }, dt = (e) => {
724
+ let t = e.trim();
725
+ if (/^https?:\/\//i.test(t)) try {
726
+ let e = new URL(t);
727
+ return (e.protocol === "http:" || e.protocol === "https:") && e.hostname.length > 0 ? "URL" : void 0;
728
+ } catch {
729
+ return;
730
+ }
731
+ }, ft = {
722
732
  art: "artist",
723
733
  aut: "author",
724
734
  clr: "colorist",
@@ -727,25 +737,47 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
727
737
  ill: "illustrator",
728
738
  nrt: "narrator",
729
739
  trl: "translator"
730
- }, ft = (e) => e.contributors.map((e) => {
731
- let t = e.roles.map((e) => dt[e.trim().toLowerCase()] ?? e);
740
+ }, pt = (e) => e.contributors.map((e) => {
741
+ let t = e.roles.map((e) => ft[e.trim().toLowerCase()] ?? e);
732
742
  return D({
733
743
  name: e.name,
734
744
  roles: t.length > 0 ? t : [e.source === "creator" ? "author" : "contributor"],
735
745
  sortAs: e.fileAs
736
746
  });
737
- }), pt = (e, t) => e.refines !== void 0 && e.refines.replace(/^#/, "") === t, mt = (e) => {
747
+ }), mt = (e, t) => e.refines !== void 0 && e.refines.replace(/^#/, "") === t, ht = {
748
+ "02": "ISBN",
749
+ "03": "GTIN",
750
+ "04": "UPC",
751
+ "05": "ISMN",
752
+ "06": "DOI",
753
+ 13: "LCCN",
754
+ 14: "GTIN",
755
+ 15: "ISBN",
756
+ 22: "URN",
757
+ 23: "OCLC",
758
+ 24: "ISBN",
759
+ 25: "ISMN",
760
+ 26: "DOI",
761
+ 34: "GTIN",
762
+ 35: "ARK"
763
+ }, gt = (e) => {
764
+ let t = e?.value?.trim();
765
+ if (!(t === void 0 || t.length === 0)) return e?.scheme?.trim().toLowerCase() === "onix:codelist5" ? ht[t] ?? t : t;
766
+ }, _t = (e, t) => {
767
+ let n = e.id;
768
+ if (n !== void 0) return gt(t.find((e) => e.property === "identifier-type" && mt(e, n) && e.value !== void 0));
769
+ }, vt = (e) => {
738
770
  let t = e?.trim();
739
771
  if (t === void 0 || !/^\d+(\.\d+)?$/.test(t)) return;
740
772
  let n = Number.parseFloat(t);
741
773
  return Number.isFinite(n) ? n : void 0;
742
- }, ht = (e) => {
774
+ }, yt = (e) => {
743
775
  let t = [], n = [];
744
776
  for (let r of e) {
745
777
  if (r.property !== "belongs-to-collection" || r.value === void 0) continue;
746
- let i = r.id, a = (t) => i === void 0 ? void 0 : e.find((e) => pt(e, i) && e.property === t && e.value !== void 0)?.value, o = a("collection-type")?.trim().toLowerCase(), s = D({
778
+ let i = r.id, a = (t) => i === void 0 ? void 0 : e.find((e) => mt(e, i) && e.property === t && e.value !== void 0)?.value, o = a("collection-type")?.trim().toLowerCase(), s = D({
747
779
  name: r.value,
748
- position: mt(a("group-position"))
780
+ position: vt(a("group-position"))
749
781
  });
750
782
  o === "series" ? t.push(s) : n.push(s);
751
783
  }
@@ -753,21 +785,21 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
753
785
  let n = e.find((e) => e.name?.toLowerCase() === "calibre:series" && e.content !== void 0)?.content;
754
786
  n !== void 0 && t.push(D({
755
787
  name: n,
756
- position: mt(e.find((e) => e.name?.toLowerCase() === "calibre:series_index")?.content)
788
+ position: vt(e.find((e) => e.name?.toLowerCase() === "calibre:series_index")?.content)
757
789
  }));
758
790
  }
759
791
  return {
760
792
  series: t,
761
793
  collection: n
762
794
  };
763
- }, gt = (e) => {
795
+ }, bt = (e) => {
764
796
  let t = e?.trim();
765
797
  if (t === "scrolled-continuous" || t === "scrolled-doc" || t === "paginated" || t === "auto") return t;
766
- }, _t = (e) => {
798
+ }, xt = (e) => {
767
799
  let t = e?.trim();
768
800
  if (t === "none" || t === "landscape" || t === "portrait" || t === "both" || t === "auto") return t;
769
- }, vt = (e) => {
770
- 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 = ut(e.identifiers), o = ft(e), { series: s, collection: c } = ht(e.metas), l = s.length > 0 || c.length > 0 ? D({
801
+ }, St = (e) => {
802
+ 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 = ut(e.identifiers), o = pt(e), { series: s, collection: c } = yt(e.metas), l = s.length > 0 || c.length > 0 ? D({
771
803
  series: s.length > 0 ? s : void 0,
772
804
  collection: c.length > 0 ? c : void 0
773
805
  }) : void 0;
@@ -782,19 +814,20 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
782
814
  published: ct(e.date),
783
815
  readingDirection: n,
784
816
  renditionLayout: i,
785
- renditionFlow: gt(e.renditionFlowMeta),
786
- renditionSpread: _t(e.renditionSpreadMeta),
787
- gtin: j(a),
788
- isbn: M(a),
789
- identifiers: e.identifiers.length > 0 ? e.identifiers.map(({ value: e, scheme: t }) => D({
790
- value: e,
791
- scheme: t
817
+ renditionFlow: bt(e.renditionFlowMeta),
818
+ renditionSpread: xt(e.renditionSpreadMeta),
819
+ gtin: P(a),
820
+ isbn: F(a),
821
+ identifiers: e.identifiers.length > 0 ? e.identifiers.map((t) => D({
822
+ value: t.value,
823
+ scheme: t.scheme ?? _t(t, e.metas) ?? dt(t.value),
824
+ unique: t.unique
792
825
  })) : void 0,
793
826
  belongsTo: l,
794
827
  properties: e.metas.length > 0 ? [...e.metas] : void 0
795
828
  });
796
- }, yt = (e) => e.kind === "comicInfo" ? R(e) : e.kind === "kobo" ? nt(e) : e.kind === "apple" ? te(e) : vt(e), bt = (e) => {
797
- let t = e.opf === void 0 ? void 0 : vt(e.opf), n = e.comicInfo === void 0 ? void 0 : R(e.comicInfo), r = e.apple === void 0 ? void 0 : te(e.apple), i = e.kobo === void 0 ? void 0 : nt(e.kobo), a = [...t?.identifiers ?? [], ...n?.identifiers ?? []];
829
+ }, Ct = (e) => e.kind === "comicInfo" ? V(e) : e.kind === "kobo" ? nt(e) : e.kind === "apple" ? k(e) : St(e), wt = (e) => {
830
+ let t = e.opf === void 0 ? void 0 : St(e.opf), n = e.comicInfo === void 0 ? void 0 : V(e.comicInfo), r = e.apple === void 0 ? void 0 : k(e.apple), i = e.kobo === void 0 ? void 0 : nt(e.kobo), a = [...t?.identifiers ?? [], ...n?.identifiers ?? []];
798
831
  return D({
799
832
  title: t?.title ?? n?.title,
800
833
  description: t?.description ?? n?.description,
@@ -819,7 +852,7 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
819
852
  apple: r?.apple,
820
853
  kobo: i?.kobo
821
854
  });
822
- }, xt = (e) => {
855
+ }, Tt = (e) => {
823
856
  let t = [...e.records].sort((e, t) => g(e.uri, t.uri)), n = (e, t, r, i, a) => {
824
857
  let o = e.find((e) => e.title === t), [s, ...c] = r;
825
858
  return o ? s ? [...e.filter((e) => e !== o), {
@@ -848,71 +881,71 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
848
881
  let a = encodeURI(t.uri).replace(/#/g, "%23").replace(/\?/g, "%3F").replace(/\/$/, ""), o = t.uri.replace(/\/$/, "");
849
882
  return n(e, r, i, a, o);
850
883
  }, []);
851
- }, St = (e) => e ? e.children.map((e) => e instanceof s ? e.text : e instanceof o ? St(e) : "").join("").trim() : "", Ct = (e) => B(e.properties).includes("nav"), wt = (e, { basePath: t }) => {
884
+ }, Et = (e) => e ? e.children.map((e) => e instanceof s ? e.text : e instanceof o ? Et(e) : "").join("").trim() : "", Dt = (e) => U(e.properties).includes("nav"), Ot = (e, { basePath: t }) => {
852
885
  let n = {
853
886
  contents: [],
854
887
  path: "",
855
888
  containerHref: "",
856
889
  title: ""
857
890
  }, r = e.childNamed("span") || e.childNamed("a");
858
- n.title = (r?.attr.title || r?.val.trim() || St(r)) ?? "";
891
+ n.title = (r?.attr.title || r?.val.trim() || Et(r)) ?? "";
859
892
  let i = r?.name;
860
893
  i !== "a" && (r = e.descendantWithPath(`${i}.a`), r && (i = r.name.toLowerCase())), i === "a" && r?.attr.href && (n.path = _(t, r.attr.href), n.containerHref = n.path);
861
894
  let a = e.childNamed("ol");
862
895
  if (a) {
863
896
  let e = a.childrenNamed("li");
864
- e && e.length > 0 && (n.contents = e.map((e) => wt(e, { basePath: t })));
897
+ e && e.length > 0 && (n.contents = e.map((e) => Ot(e, { basePath: t })));
865
898
  }
866
899
  return n;
867
- }, Tt = (e, { basePath: t }) => {
900
+ }, kt = (e, { basePath: t }) => {
868
901
  let n = [], r;
869
902
  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 o && e.name === "li").forEach((e) => {
870
- n.push(wt(e, { basePath: t }));
903
+ n.push(Ot(e, { basePath: t }));
871
904
  }), n;
872
- }, Et = async (e, t) => {
873
- let n = e.manifestItems.find(Ct);
905
+ }, At = async (e, t) => {
906
+ let n = e.manifestItems.find(Dt);
874
907
  if (n?.href) {
875
908
  let e = t.records.find((e) => e.uri.endsWith(n.href));
876
- if (e && !e.dir) return Tt(new a(await x(e)), { basePath: d(e.uri) });
909
+ if (e && !e.dir) return kt(new a(await x(e)), { basePath: d(e.uri) });
877
910
  }
878
- }, Dt = (e, { basePath: t, prefix: n }) => {
911
+ }, jt = (e, { basePath: t, prefix: n }) => {
879
912
  let r = _(t, e?.childNamed(`${n}content`)?.attr.src || ""), i = {
880
913
  title: e?.descendantWithPath(`${n}navLabel.${n}text`)?.val || "",
881
914
  path: r,
882
915
  containerHref: r,
883
916
  contents: []
884
917
  }, a = e.childrenNamed(`${n}navPoint`);
885
- return a && a.length > 0 && (i.contents = a.map((e) => Dt(e, {
918
+ return a && a.length > 0 && (i.contents = a.map((e) => jt(e, {
886
919
  basePath: t,
887
920
  prefix: n
888
921
  }))), i;
889
- }, Ot = (e, { basePath: t }) => {
922
+ }, Mt = (e, { basePath: t }) => {
890
923
  let n = [], r = e.name, i = "";
891
924
  return r.indexOf(":") !== -1 && (i = `${r.split(":")[0]}:`), e.childNamed(`${i}navMap`)?.childrenNamed(`${i}navPoint`).forEach((e) => {
892
- n.push(Dt(e, {
925
+ n.push(jt(e, {
893
926
  basePath: t,
894
927
  prefix: i
895
928
  }));
896
929
  }), n;
897
- }, kt = async ({ opf: e, opfBasePath: t, archive: n }) => {
930
+ }, Nt = async ({ opf: e, opfBasePath: t, archive: n }) => {
898
931
  let r = e.spineTocIdref;
899
932
  if (r) {
900
933
  let i = e.manifestItems.find((e) => e.id === r);
901
934
  if (i) {
902
935
  let e = `${t}${t === "" ? "" : "/"}${i.href}`, r = n.records.find((t) => t.uri.endsWith(e));
903
- if (r && !r.dir) return Ot(new a(await x(r)), { basePath: d(r.uri) });
936
+ if (r && !r.dir) return Mt(new a(await x(r)), { basePath: d(r.uri) });
904
937
  }
905
938
  }
906
- }, At = async (e, { opf: t } = {}) => {
907
- let n = t ?? await X(e);
908
- if (n) return await Et(n.opf, e) || await kt({
939
+ }, Pt = async (e, { opf: t } = {}) => {
940
+ let n = t ?? await Z(e);
941
+ if (n) return await At(n.opf, e) || await Nt({
909
942
  opf: n.opf,
910
943
  opfBasePath: n.basePath,
911
944
  archive: e
912
945
  }) || [];
913
- let r = xt(e);
946
+ let r = Tt(e);
914
947
  return r.length === 0 ? void 0 : r;
915
- }, jt = [
948
+ }, Ft = [
916
949
  "metadata",
917
950
  "readingOrder",
918
951
  "toc"
@@ -928,14 +961,14 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
928
961
  failed: !0
929
962
  };
930
963
  }
931
- }, Mt = (e) => {
964
+ }, It = (e) => {
932
965
  let t = (e) => e?.startsWith("audio/") === !0 || e?.startsWith("video/") === !0, n = e.filter((e) => e.renditionLayout === "pre-paginated" && !t(e.mediaType)).length;
933
966
  return n > 0 ? n : void 0;
934
- }, Nt = ({ archive: e, opf: t, comicInfo: n, apple: r, kobo: i }) => {
967
+ }, Lt = ({ archive: e, opf: t, comicInfo: n, apple: r, kobo: i }) => {
935
968
  let a = [];
936
969
  return t !== void 0 && t.value === void 0 && (t.failed || st(e)) && a.push("opf"), n?.failed && a.push("comicInfo"), r?.failed && a.push("apple"), i?.failed && a.push("kobo"), a;
937
- }, Pt = 1, Ft = async (e, t = {}) => {
938
- let n = new Set(t.include ?? jt), 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(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 $(() => E(e), "apple") : void 0, m = p?.value, h = u ? await $(() => et(e), "kobo") : void 0, g = h?.value, _ = r || s ? bt({
970
+ }, Rt = 1, zt = async (e, t = {}) => {
971
+ let n = new Set(t.include ?? Ft), 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 $(() => Z(e), "opf") : void 0, l = c?.value, u = r || i || s, d = u ? await $(() => N(e), "comicInfo") : void 0, f = d?.value, p = u ? await $(() => E(e), "apple") : void 0, m = p?.value, h = u ? await $(() => et(e), "kobo") : void 0, g = h?.value, _ = r || s ? wt({
939
972
  opf: l?.opf,
940
973
  comicInfo: f,
941
974
  apple: m,
@@ -951,16 +984,16 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
951
984
  let t = v ?? await Q(e, { opf: l }), n = await $e(e, {
952
985
  opf: l,
953
986
  readingOrder: t
954
- }), r = _.numberOfPages ?? Mt(t);
987
+ }), r = _.numberOfPages ?? It(t);
955
988
  _ = D({
956
989
  ..._,
957
990
  cover: n,
958
991
  numberOfPages: r
959
992
  });
960
993
  }
961
- let y = o ? (await $(() => At(e, { opf: l }), "toc")).value : void 0, b = {
962
- version: Pt,
963
- unreadableSources: Nt({
994
+ let y = o ? (await $(() => Pt(e, { opf: l }), "toc")).value : void 0, b = {
995
+ version: Rt,
996
+ unreadableSources: Lt({
964
997
  archive: e,
965
998
  opf: c,
966
999
  comicInfo: d,
@@ -976,6 +1009,6 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
976
1009
  })), b;
977
1010
  };
978
1011
  //#endregion
979
- export { v as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, k as COMIC_INFO_FILENAME, se as COMIC_INFO_KNOWN_FIELDS, A as COMIC_INFO_MANGA_VALUES, He as KOBO_DISPLAY_OPTIONS_FILENAME, ee as appleMetadataHomes, i as arrayBufferFileAccessors, r as blobFileAccessors, ve as comicInfoMetadataHomes, e as createArchive, ne as createArchiveFromArrayBufferList, n as createArchiveFromEntries, re as createArchiveFromText, ie as createArchiveFromUrls, w as getArchiveFileRecordByUri, pe as getArchiveHasComicInfo, oe as getArchiveImageRecords, z as getArchiveOpfInfo, at as getSpineItemFilesFromArchive, st as isArchiveEpub, me as isComicInfoManga, C as isDirectoryRecord, S as isFileRecord, O as isImageRecord, tt as koboMetadataHomes, j as normalizeGtin, M as normalizeIsbn, lt as opfMetadataHomes, b as parseAppleDisplayOptionsXml, de as parseComicInfo, Z as parseKoboXml, Ve as parseOpf, ct as parseW3cDtfDate, E as readArchiveApple, he as readArchiveComicInfo, et as readArchiveKobo, X as readArchiveOpf, x as readRecordAsText, it as readingOrderDocumentsAllHaveViewport, Ft as resolveArchive, $e as resolveArchiveCover, yt as resolveArchiveMetadata, Q as resolveArchiveReadingOrder, At as resolveArchiveToc, bt as resolveMetadata, B as tokenizeXmlSpaceSeparatedList };
1012
+ export { v as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, j as COMIC_INFO_FILENAME, ae as COMIC_INFO_KNOWN_FIELDS, de as COMIC_INFO_MANGA_VALUES, Ve as KOBO_DISPLAY_OPTIONS_FILENAME, O as appleMetadataHomes, i as arrayBufferFileAccessors, r as blobFileAccessors, he as comicInfoMetadataHomes, e as createArchive, ee as createArchiveFromArrayBufferList, n as createArchiveFromEntries, te as createArchiveFromText, ne as createArchiveFromUrls, w as getArchiveFileRecordByUri, M as getArchiveHasComicInfo, ie as getArchiveImageRecords, H as getArchiveOpfInfo, at as getSpineItemFilesFromArchive, st as isArchiveEpub, fe as isComicInfoManga, C as isDirectoryRecord, S as isFileRecord, A as isImageRecord, tt as koboMetadataHomes, P as normalizeGtin, F as normalizeIsbn, lt as opfMetadataHomes, b as parseAppleDisplayOptionsXml, le as parseComicInfo, Ue as parseKoboXml, Be as parseOpf, ct as parseW3cDtfDate, E as readArchiveApple, N as readArchiveComicInfo, et as readArchiveKobo, Z as readArchiveOpf, x as readRecordAsText, it as readingOrderDocumentsAllHaveViewport, zt as resolveArchive, $e as resolveArchiveCover, Ct as resolveArchiveMetadata, Q as resolveArchiveReadingOrder, Pt as resolveArchiveToc, wt as resolveMetadata, U as tokenizeXmlSpaceSeparatedList };
980
1013
 
981
1014
  //# sourceMappingURL=index.js.map