@prose-reader/archive-reader 1.333.0 → 1.334.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.
@@ -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" }, O = (e) => {
30
+ }, ee = { displayOptions: "apple.options" }, te = (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
- }, te = async (e, t = {}) => n(e, (e) => e.isDir ? {
42
+ }, ne = 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
- }), ne = async (t, { mimeType: n, direction: i } = { mimeType: "text/plain" }) => {
53
+ }), re = 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
- }, re = async (t, n) => {
89
+ }, ie = 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
- }, ie = (e) => h(e.encodingFormat ?? "") || l(e.basename), k = (e) => S(e) && ie(e)?.startsWith("image/") === !0, ae = (e) => e.records.filter(S).filter(k), A = "ComicInfo.xml", oe = /* @__PURE__ */ "AgeRating.AlternateCount.AlternateNumber.AlternateSeries.BlackAndWhite.Characters.Colorist.CommunityRating.Count.CoverArtist.Day.Editor.Format.Genre.GTIN.Imprint.Inker.LanguageISO.Letterer.Locations.MainCharacterOrTeam.Manga.Month.Notes.Number.PageCount.Penciller.Publisher.Review.ScanInformation.Series.SeriesGroup.StoryArc.StoryArcNumber.Summary.Tags.Teams.Title.Translator.Volume.Web.Writer.Year".split("."), se = /* @__PURE__ */ new Set(["Pages", "ComicInfo"]), ce = (e) => e.children.some((e) => e.type === "element"), le = (e) => {
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) => {
128
128
  let t = e.val.trim();
129
129
  return t.length > 0 ? t : void 0;
130
- }, j = (e) => {
130
+ }, de = (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(`${A} is malformed: ${t}`, { cause: e });
136
+ throw Error(`${k} is malformed: ${t}`, { cause: e });
137
137
  }
138
138
  let n = {};
139
139
  return t.eachChild((e) => {
140
- if (e.type !== "element" || se.has(e.name) || ce(e)) return;
141
- let t = le(e);
140
+ if (e.type !== "element" || ce.has(e.name) || le(e)) return;
141
+ let t = ue(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
- }, ue = A.toLowerCase(), M = (e) => e.records.find((e) => S(e) && e.basename.toLowerCase() === ue), de = [
147
+ }, fe = k.toLowerCase(), pe = (e) => e.records.find((e) => S(e) && e.basename.toLowerCase() === fe), A = [
148
148
  "Unknown",
149
149
  "No",
150
150
  "Yes",
151
151
  "YesAndRightToLeft"
152
- ], fe = (e) => {
153
- for (let t of de) if (t === e) return !0;
152
+ ], me = (e) => {
153
+ for (let t of A) if (t === e) return !0;
154
154
  return !1;
155
155
  };
156
156
  //#endregion
157
157
  //#region src/comicInfo/readArchiveComicInfo.ts
158
- async function N(e) {
159
- let t = M(e);
160
- if (t) return j(await x(t));
158
+ async function he(e) {
159
+ let t = pe(e);
160
+ if (t) return de(await x(t));
161
161
  }
162
162
  //#endregion
163
163
  //#region src/utils/normalizeGtin.ts
164
- var pe = /* @__PURE__ */ new Set([
164
+ var ge = /* @__PURE__ */ new Set([
165
165
  8,
166
166
  12,
167
167
  13,
168
168
  14
169
- ]), P = (e) => {
169
+ ]), j = (e) => {
170
170
  if (e == null) return;
171
171
  let t = String(e).replace(/\D/g, "");
172
- if (!(t.length === 0 || !pe.has(t.length))) return t;
173
- }, me = /(?:97[89])?\d{9}[\dXx]/, F = (e) => {
172
+ if (!(t.length === 0 || !ge.has(t.length))) return t;
173
+ }, _e = /(?:97[89])?\d{9}[\dXx]/, M = (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(me);
177
+ let r = t.match(_e);
178
178
  if (r) return r[0].toUpperCase();
179
- }, he = {
179
+ }, ve = {
180
180
  AgeRating: "comic.ageRating",
181
181
  AlternateCount: "comic.alternateSeries",
182
182
  AlternateNumber: "comic.alternateSeries",
@@ -220,46 +220,46 @@ var pe = /* @__PURE__ */ new Set([
220
220
  Web: "comic.web",
221
221
  Writer: "contributors",
222
222
  Year: "published"
223
- }, ge = (e) => {
223
+ }, ye = (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
- }, I = (e) => {
230
+ }, N = (e) => {
231
231
  if (e === void 0) return;
232
232
  let t = e.trim();
233
233
  return t.length > 0 ? t : void 0;
234
- }, L = (e) => e === void 0 ? [] : e.split(",").map((e) => e.trim()).filter((e) => e.length > 0), R = (e) => {
235
- let t = I(e);
234
+ }, P = (e) => e === void 0 ? [] : e.split(",").map((e) => e.trim()).filter((e) => e.length > 0), F = (e) => {
235
+ let t = N(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
- }, z = (e) => {
240
- let t = I(e);
239
+ }, I = (e) => {
240
+ let t = N(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
- }, _e = (e) => {
245
- let t = I(e)?.toLowerCase();
244
+ }, be = (e) => {
245
+ let t = N(e)?.toLowerCase();
246
246
  if (t === "yes") return !0;
247
247
  if (t === "no") return !1;
248
- }, ve = (e) => {
248
+ }, xe = (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
- }, ye = (e) => {
256
- let t = R(e.Year), n = R(e.Month), r = R(e.Day);
255
+ }, Se = (e) => {
256
+ let t = F(e.Year), n = F(e.Month), r = F(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
- }, be = [
262
+ }, Ce = [
263
263
  ["Writer", "author"],
264
264
  ["Penciller", "penciler"],
265
265
  ["Inker", "inker"],
@@ -268,9 +268,9 @@ var pe = /* @__PURE__ */ new Set([
268
268
  ["CoverArtist", "coverArtist"],
269
269
  ["Editor", "editor"],
270
270
  ["Translator", "translator"]
271
- ], xe = (e) => {
271
+ ], we = (e) => {
272
272
  let t = /* @__PURE__ */ new Map();
273
- for (let [n, r] of be) for (let i of L(e[n])) {
273
+ for (let [n, r] of Ce) for (let i of P(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 pe = /* @__PURE__ */ new Set([
278
278
  });
279
279
  }
280
280
  return [...t.values()];
281
- }, Se = (e) => {
282
- let t = I(e.Series);
281
+ }, Te = (e) => {
282
+ let t = N(e.Series);
283
283
  if (t !== void 0) return D({
284
284
  name: t,
285
- position: z(e.Number),
286
- total: R(e.Count)
285
+ position: I(e.Number),
286
+ total: F(e.Count)
287
287
  });
288
- }, Ce = (e) => {
289
- let t = I(e.AlternateSeries);
288
+ }, Ee = (e) => {
289
+ let t = N(e.AlternateSeries);
290
290
  if (t !== void 0) return D({
291
291
  name: t,
292
- position: z(e.AlternateNumber),
293
- total: R(e.AlternateCount)
292
+ position: I(e.AlternateNumber),
293
+ total: F(e.AlternateCount)
294
294
  });
295
- }, we = (e) => {
296
- let t = L(e.StoryArc);
295
+ }, De = (e) => {
296
+ let t = P(e.StoryArc);
297
297
  if (t.length === 0) return [];
298
- let n = L(e.StoryArcNumber);
298
+ let n = P(e.StoryArcNumber);
299
299
  return t.map((e, t) => D({
300
300
  name: e,
301
- position: z(n[t])
301
+ position: I(n[t])
302
302
  }));
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),
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),
313
313
  web: t,
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)
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)
321
321
  });
322
322
  return Object.keys(n).length > 0 ? n : void 0;
323
- }, Ee = (e) => {
324
- let t = Se(e), n = B(L(e.SeriesGroup).map((e) => ({ name: e })));
323
+ }, ke = (e) => {
324
+ let t = Te(e), n = L(P(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
- }, De = (e) => {
330
- let t = e.GTIN, n = I(t), r = I(e.LanguageISO), i = [...L(e.Genre), ...L(e.Tags)];
329
+ }, R = (e) => {
330
+ let t = e.GTIN, n = N(t), r = N(e.LanguageISO), i = [...P(e.Genre), ...P(e.Tags)];
331
331
  return D({
332
- title: I(e.Title),
333
- description: I(e.Summary),
334
- publisher: I(e.Publisher),
335
- imprint: I(e.Imprint),
332
+ title: N(e.Title),
333
+ description: N(e.Summary),
334
+ publisher: N(e.Publisher),
335
+ imprint: N(e.Imprint),
336
336
  languages: r === void 0 ? void 0 : [r],
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),
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),
344
344
  identifiers: n === void 0 ? void 0 : [{
345
345
  value: n,
346
346
  scheme: "GTIN"
347
347
  }],
348
- belongsTo: Ee(e),
349
- comic: Te(e)
348
+ belongsTo: ke(e),
349
+ comic: Oe(e)
350
350
  });
351
- }, Oe = (e) => {
351
+ }, z = (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
- }, V = (e) => e === void 0 || e.trim().length === 0 ? [] : e.trim().split(/\s+/).filter((e) => e.length > 0), ke = (e) => {
358
- let t = V(e);
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);
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,16 +366,16 @@ var pe = /* @__PURE__ */ new Set([
366
366
  ...t.includes("page-spread-left") ? { pageSpreadLeft: !0 } : {},
367
367
  ...t.includes("page-spread-right") ? { pageSpreadRight: !0 } : {}
368
368
  };
369
- }, H = (e) => e.includes(":") ? e.slice(e.lastIndexOf(":") + 1) : e, U = (e, t) => H(e).toLowerCase() === t.toLowerCase(), W = (e) => e.type === "element", G = (e, t) => {
370
- for (let n of e.children) if (W(n) && U(n.name, t)) return n;
371
- }, K = (e, t) => {
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) => {
372
372
  let n = [];
373
- for (let r of e.children) W(r) && U(r.name, t) && n.push(r);
373
+ for (let r of e.children) U(r) && H(r.name, t) && n.push(r);
374
374
  return n;
375
- }, Ae = (e) => {
375
+ }, je = (e) => {
376
376
  let t = [];
377
377
  return e.eachChild((e) => {
378
- if (H(e.name).toLowerCase() !== "identifier") return;
378
+ if (V(e.name).toLowerCase() !== "identifier") return;
379
379
  let n = e.val.trim();
380
380
  if (n.length === 0) return;
381
381
  let r = (e.attr["opf:scheme"] ?? e.attr["opf:Scheme"] ?? e.attr.scheme)?.trim();
@@ -384,46 +384,46 @@ var pe = /* @__PURE__ */ new Set([
384
384
  ...r !== void 0 && r.length > 0 ? { scheme: r } : {}
385
385
  });
386
386
  }), t;
387
- }, q = (e, t) => {
387
+ }, K = (e, t) => {
388
388
  let n;
389
389
  return e.eachChild((e) => {
390
- if (n !== void 0 || H(e.name).toLowerCase() !== t.toLowerCase()) return;
390
+ if (n !== void 0 || V(e.name).toLowerCase() !== t.toLowerCase()) return;
391
391
  let r = e.val.trim();
392
392
  r.length > 0 && (n = r);
393
393
  }), n;
394
- }, J = (e, t) => {
394
+ }, q = (e, t) => {
395
395
  let n = [];
396
396
  return e.eachChild((e) => {
397
- if (H(e.name).toLowerCase() !== t.toLowerCase()) return;
397
+ if (V(e.name).toLowerCase() !== t.toLowerCase()) return;
398
398
  let r = e.val.trim();
399
399
  r.length > 0 && n.push(r);
400
400
  }), n;
401
- }, je = (e) => {
401
+ }, Me = (e) => {
402
402
  let t;
403
403
  return e.eachChild((e) => {
404
- if (t !== void 0 || H(e.name).toLowerCase() !== "meta" || e.attr.name?.toLowerCase() !== "cover") return;
404
+ if (t !== void 0 || V(e.name).toLowerCase() !== "meta" || e.attr.name?.toLowerCase() !== "cover") return;
405
405
  let n = e.attr.content?.trim();
406
406
  n !== void 0 && n.length > 0 && (t = n);
407
407
  }), t;
408
- }, Me = ({ manifestItems: e, metadataEl: t }) => {
409
- let n = (e) => e.mediaType?.toLowerCase().includes("image/") === !0, r = e.find((e) => n(e) ? V(e.properties).includes("cover-image") : !1);
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
410
  if (r !== void 0) return r.href;
411
411
  if (t !== void 0) {
412
- let r = je(t);
412
+ let r = Me(t);
413
413
  if (r !== void 0) {
414
414
  let t = e.find((e) => e.id === r && n(e));
415
415
  if (t !== void 0) return t.href;
416
416
  }
417
417
  }
418
418
  return e.find((e) => e.id.toLowerCase().includes("cover") && n(e))?.href;
419
- }, Y = (e, t) => {
419
+ }, J = (e, t) => {
420
420
  let n = e.attr[t]?.trim();
421
421
  return n !== void 0 && n.length > 0 ? n : void 0;
422
- }, Ne = (e) => {
422
+ }, Pe = (e) => {
423
423
  let t = [];
424
424
  return e.eachChild((e) => {
425
- if (H(e.name).toLowerCase() !== "meta") return;
426
- 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 = {
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
427
  ...n === void 0 ? {} : { property: n },
428
428
  ...r === void 0 ? {} : { refines: r },
429
429
  ...i === void 0 ? {} : { scheme: i },
@@ -434,14 +434,14 @@ var pe = /* @__PURE__ */ new Set([
434
434
  };
435
435
  Object.keys(u).length !== 0 && t.push(u);
436
436
  }), t;
437
- }, Pe = (e, t) => e.replace(/^#/, "") === t, Fe = (e, t) => {
437
+ }, Fe = (e, t) => e.replace(/^#/, "") === t, Ie = (e, t) => {
438
438
  let n = [];
439
439
  return e.eachChild((e) => {
440
- let r = H(e.name).toLowerCase();
440
+ let r = V(e.name).toLowerCase();
441
441
  if (r !== "creator" && r !== "contributor") return;
442
442
  let i = e.val.trim();
443
443
  if (i.length === 0) return;
444
- 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];
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];
445
445
  n.push({
446
446
  name: i,
447
447
  source: r,
@@ -450,14 +450,14 @@ var pe = /* @__PURE__ */ new Set([
450
450
  ...l === void 0 ? {} : { fileAs: l }
451
451
  });
452
452
  }), n;
453
- }, X = (e, t) => {
454
- let n = K(e, "meta").find((e) => e.attr.property === t)?.val;
453
+ }, Y = (e, t) => {
454
+ let n = G(e, "meta").find((e) => e.attr.property === t)?.val;
455
455
  if (!(n === void 0 || n.trim().length === 0)) return n;
456
- }, Ie = (e) => {
457
- let t = G(e, "guide");
456
+ }, Le = (e) => {
457
+ let t = W(e, "guide");
458
458
  if (t === void 0) return [];
459
459
  let n = [];
460
- for (let e of K(t, "reference")) {
460
+ for (let e of G(t, "reference")) {
461
461
  let t = e.attr.href?.trim();
462
462
  t === void 0 || t.length === 0 || n.push({
463
463
  href: t,
@@ -466,7 +466,7 @@ var pe = /* @__PURE__ */ new Set([
466
466
  });
467
467
  }
468
468
  return n;
469
- }, Le = (e) => {
469
+ }, Re = (e) => {
470
470
  let t = e.attr.id, n = e.attr.href;
471
471
  if (t === void 0 || t.length === 0 || n === void 0 || n.length === 0) return;
472
472
  let r = e.attr["media-type"], i = e.attr.properties?.trim();
@@ -476,24 +476,24 @@ var pe = /* @__PURE__ */ new Set([
476
476
  ...r !== void 0 && r.length > 0 ? { mediaType: r } : {},
477
477
  ...i !== void 0 && i.length > 0 ? { properties: i } : {}
478
478
  };
479
- }, Re = (e) => {
479
+ }, ze = (e) => {
480
480
  let t = [], n = /* @__PURE__ */ new Map();
481
- for (let r of K(e, "item")) {
482
- let e = Le(r);
481
+ for (let r of G(e, "item")) {
482
+ let e = Re(r);
483
483
  e !== void 0 && (t.push(e), n.set(e.id, e));
484
484
  }
485
485
  return {
486
486
  items: t,
487
487
  byId: n
488
488
  };
489
- }, ze = (e, t) => {
489
+ }, Be = (e, t) => {
490
490
  let n = [];
491
- for (let r of K(t, "itemref")) {
491
+ for (let r of G(t, "itemref")) {
492
492
  let t = r.attr.idref;
493
493
  if (t === void 0 || t.trim().length === 0) continue;
494
494
  let i = e.get(t);
495
495
  if (i === void 0) continue;
496
- let a = ke(r.attr.properties);
496
+ let a = Ae(r.attr.properties);
497
497
  n.push({
498
498
  idref: t,
499
499
  id: i.id,
@@ -507,18 +507,18 @@ var pe = /* @__PURE__ */ new Set([
507
507
  });
508
508
  }
509
509
  return n;
510
- }, Be = (e) => {
511
- let t = new a(e), n = G(t, "manifest"), r = G(t, "spine"), i = G(t, "metadata"), o = [], s = [];
510
+ }, Ve = (e) => {
511
+ let t = new a(e), n = W(t, "manifest"), r = W(t, "spine"), i = W(t, "metadata"), o = [], s = [];
512
512
  if (n !== void 0) {
513
- let { items: e, byId: t } = Re(n);
514
- o = e, r !== void 0 && (s = ze(t, r));
513
+ let { items: e, byId: t } = ze(n);
514
+ o = e, r !== void 0 && (s = Be(t, r));
515
515
  }
516
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 = q(i, "title"), p = q(i, "publisher"), m = q(i, "description"), h = q(i, "rights"), g = q(i, "date"), _ = J(i, "creator"), y = J(i, "language"), b = J(i, "subject"), x = X(i, "rendition:layout"), S = X(i, "rendition:flow"), C = X(i, "rendition:spread"), w = Ne(i), v = Fe(i, w), T.push(...Ae(i)));
518
- let E = Me({
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
519
  manifestItems: o,
520
520
  metadataEl: i
521
- }), D = Ie(t);
521
+ }), D = Le(t);
522
522
  return {
523
523
  kind: "opf",
524
524
  manifestItems: o,
@@ -545,25 +545,25 @@ var pe = /* @__PURE__ */ new Set([
545
545
  };
546
546
  //#endregion
547
547
  //#region src/opf/readArchiveOpf.ts
548
- async function Z(e) {
549
- let { data: t, basePath: n } = Oe(e) || {};
548
+ async function X(e) {
549
+ let { data: t, basePath: n } = z(e) || {};
550
550
  if (!(!t || t.dir)) return {
551
- opf: Be(await x(t)),
551
+ opf: Ve(await x(t)),
552
552
  basePath: n
553
553
  };
554
554
  }
555
555
  //#endregion
556
556
  //#region src/kobo/parse.ts
557
- var Ve = "com.kobobooks.display-options.xml", He = (e) => {
557
+ var He = "com.kobobooks.display-options.xml", Ue = (e) => {
558
558
  let t = e.childNamed("platform");
559
559
  if (!t) return {};
560
560
  for (let e of t.childrenNamed("option")) if (e.attr?.name === "fixed-layout") return e.val.trim().toLowerCase() === "true" ? { renditionLayout: "pre-paginated" } : {};
561
561
  return {};
562
- }, Ue = (e) => {
562
+ }, Z = (e) => {
563
563
  let t = new a(e);
564
564
  return t.name?.toLowerCase() === "display_options" ? {
565
565
  kind: "kobo",
566
- ...He(t)
566
+ ...Ue(t)
567
567
  } : { kind: "kobo" };
568
568
  }, We = (e) => {
569
569
  let t = [];
@@ -598,7 +598,7 @@ var Ve = "com.kobobooks.display-options.xml", He = (e) => {
598
598
  pageSpreadRight: e.pageSpreadRight,
599
599
  progressionWeight: a > 0 ? (i?.size ?? 0) / a : 1 / t.spineRows.length
600
600
  }));
601
- }, Je = A.toLowerCase(), Ye = v.toLowerCase(), Xe = (e) => {
601
+ }, Je = k.toLowerCase(), Ye = v.toLowerCase(), Xe = (e) => {
602
602
  let t = e.basename.toLowerCase();
603
603
  return t === Je || t === Ye || e.uri.endsWith("com.kobobooks.display-options.xml") || t.endsWith(".db");
604
604
  }, Ze = (e) => {
@@ -614,13 +614,13 @@ var Ve = "com.kobobooks.display-options.xml", He = (e) => {
614
614
  });
615
615
  });
616
616
  }, Q = async (e, { opf: t } = {}) => {
617
- let n = t ?? await Z(e).catch(() => void 0);
617
+ let n = t ?? await X(e).catch(() => void 0);
618
618
  return n ? qe(e, n) : Ze(e);
619
619
  }, Qe = (e, t) => {
620
620
  let n = w(e, t);
621
621
  if (n !== void 0) return h(n.encodingFormat ?? "") || l(n.basename);
622
622
  }, $e = async (e, { opf: t, readingOrder: n } = {}) => {
623
- let r = t ?? await Z(e).catch(() => void 0);
623
+ let r = t ?? await X(e).catch(() => void 0);
624
624
  if (r !== void 0 && r.opf.coverHref !== void 0) {
625
625
  let t = Ge(r.opf.coverHref, r.basePath);
626
626
  return D({
@@ -645,10 +645,10 @@ async function et(e) {
645
645
  for (let e of n) {
646
646
  let n = await x(e);
647
647
  try {
648
- let { renditionLayout: e } = Ue(n);
648
+ let { renditionLayout: e } = Z(n);
649
649
  e && (r = e);
650
650
  } catch (n) {
651
- t.error(`Unable to parse ${Ve} (${e.uri})`, n);
651
+ t.error(`Unable to parse ${He} (${e.uri})`, n);
652
652
  }
653
653
  }
654
654
  return {
@@ -716,8 +716,8 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
716
716
  guide: "guide",
717
717
  metas: "properties"
718
718
  }, ut = (e) => {
719
- for (let t of e) if (t.scheme !== void 0 && t.scheme.trim().toLowerCase() === "isbn" && F(t.value) !== void 0) return t.value;
720
- for (let t of e) if (F(t.value) !== void 0) return t.value;
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
721
  }, dt = {
722
722
  art: "artist",
723
723
  aut: "author",
@@ -784,8 +784,8 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
784
784
  renditionLayout: i,
785
785
  renditionFlow: gt(e.renditionFlowMeta),
786
786
  renditionSpread: _t(e.renditionSpreadMeta),
787
- gtin: P(a),
788
- isbn: F(a),
787
+ gtin: j(a),
788
+ isbn: M(a),
789
789
  identifiers: e.identifiers.length > 0 ? e.identifiers.map(({ value: e, scheme: t }) => D({
790
790
  value: e,
791
791
  scheme: t
@@ -793,8 +793,8 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
793
793
  belongsTo: l,
794
794
  properties: e.metas.length > 0 ? [...e.metas] : void 0
795
795
  });
796
- }, yt = (e) => e.kind === "comicInfo" ? De(e) : e.kind === "kobo" ? nt(e) : e.kind === "apple" ? O(e) : vt(e), bt = (e) => {
797
- let t = e.opf === void 0 ? void 0 : vt(e.opf), n = e.comicInfo === void 0 ? void 0 : De(e.comicInfo), r = e.apple === void 0 ? void 0 : O(e.apple), i = e.kobo === void 0 ? void 0 : nt(e.kobo), a = [...t?.identifiers ?? [], ...n?.identifiers ?? []];
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 ?? []];
798
798
  return D({
799
799
  title: t?.title ?? n?.title,
800
800
  description: t?.description ?? n?.description,
@@ -848,7 +848,7 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
848
848
  let a = encodeURI(t.uri).replace(/#/g, "%23").replace(/\?/g, "%3F").replace(/\/$/, ""), o = t.uri.replace(/\/$/, "");
849
849
  return n(e, r, i, a, o);
850
850
  }, []);
851
- }, St = (e) => e ? e.children.map((e) => e instanceof s ? e.text : e instanceof o ? St(e) : "").join("").trim() : "", Ct = (e) => V(e.properties).includes("nav"), wt = (e, { basePath: t }) => {
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 }) => {
852
852
  let n = {
853
853
  contents: [],
854
854
  path: "",
@@ -904,7 +904,7 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
904
904
  }
905
905
  }
906
906
  }, At = async (e, { opf: t } = {}) => {
907
- let n = t ?? await Z(e);
907
+ let n = t ?? await X(e);
908
908
  if (n) return await Et(n.opf, e) || await kt({
909
909
  opf: n.opf,
910
910
  opfBasePath: n.basePath,
@@ -918,47 +918,64 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
918
918
  "toc"
919
919
  ], $ = async (e, n) => {
920
920
  try {
921
- return await e();
921
+ return {
922
+ value: await e(),
923
+ failed: !1
924
+ };
922
925
  } catch (e) {
923
- t.error(`resolveArchive: unable to read ${n}`, e);
924
- return;
926
+ return t.error(`resolveArchive: unable to read ${n}`, e), {
927
+ value: void 0,
928
+ failed: !0
929
+ };
925
930
  }
926
931
  }, Mt = (e) => {
927
932
  let t = (e) => e?.startsWith("audio/") === !0 || e?.startsWith("video/") === !0, n = e.filter((e) => e.renditionLayout === "pre-paginated" && !t(e.mediaType)).length;
928
933
  return n > 0 ? n : void 0;
929
- }, Nt = 1, Pt = async (e, t = {}) => {
930
- 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 $(() => Z(e), "opf") : void 0, l = r || i || s, u = l ? await $(() => N(e), "comicInfo") : void 0, d = l ? await $(() => E(e), "apple") : void 0, f = l ? await $(() => et(e), "kobo") : void 0, p = r || s ? bt({
931
- opf: c?.opf,
932
- comicInfo: u,
933
- apple: d,
934
- kobo: f
935
- }) : void 0, m = a || s ? await Q(e, { opf: c }) : void 0;
936
- if (s && p !== void 0 && m !== void 0 && p.renditionLayout === "reflowable" && m.every((e) => e.renditionLayout === "reflowable") && await it(e, m) && (p = {
937
- ...p,
934
+ }, Nt = ({ archive: e, opf: t, comicInfo: n, apple: r, kobo: i }) => {
935
+ let a = [];
936
+ 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({
939
+ opf: l?.opf,
940
+ comicInfo: f,
941
+ apple: m,
942
+ kobo: g
943
+ }) : void 0, v = a || s ? await Q(e, { opf: l }) : void 0;
944
+ if (s && _ !== void 0 && v !== void 0 && _.renditionLayout === "reflowable" && v.every((e) => e.renditionLayout === "reflowable") && await it(e, v) && (_ = {
945
+ ..._,
938
946
  renditionLayout: "pre-paginated"
939
- }, m = m.map((e) => ({
947
+ }, v = v.map((e) => ({
940
948
  ...e,
941
949
  renditionLayout: "pre-paginated"
942
- }))), r && p !== void 0) {
943
- let t = m ?? await Q(e, { opf: c }), n = await $e(e, {
944
- opf: c,
950
+ }))), r && _ !== void 0) {
951
+ let t = v ?? await Q(e, { opf: l }), n = await $e(e, {
952
+ opf: l,
945
953
  readingOrder: t
946
- }), r = p.numberOfPages ?? Mt(t);
947
- p = D({
948
- ...p,
954
+ }), r = _.numberOfPages ?? Mt(t);
955
+ _ = D({
956
+ ..._,
949
957
  cover: n,
950
958
  numberOfPages: r
951
959
  });
952
960
  }
953
- let h = o ? await $(() => At(e, { opf: c }), "toc") : void 0, g = { version: Nt };
954
- return r && p !== void 0 && (g.metadata = p), a && m !== void 0 && (g.readingOrder = m), o && h !== void 0 && (g.toc = h), i && (g.sources = D({
955
- opf: c,
956
- comicInfo: u,
957
- apple: d,
958
- kobo: f
959
- })), g;
961
+ let y = o ? (await $(() => At(e, { opf: l }), "toc")).value : void 0, b = {
962
+ version: Pt,
963
+ unreadableSources: Nt({
964
+ archive: e,
965
+ opf: c,
966
+ comicInfo: d,
967
+ apple: p,
968
+ kobo: h
969
+ })
970
+ };
971
+ return r && _ !== void 0 && (b.metadata = _), a && v !== void 0 && (b.readingOrder = v), o && y !== void 0 && (b.toc = y), i && (b.sources = D({
972
+ opf: l,
973
+ comicInfo: f,
974
+ apple: m,
975
+ kobo: g
976
+ })), b;
960
977
  };
961
978
  //#endregion
962
- export { v as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, A as COMIC_INFO_FILENAME, oe as COMIC_INFO_KNOWN_FIELDS, de as COMIC_INFO_MANGA_VALUES, Ve as KOBO_DISPLAY_OPTIONS_FILENAME, ee as appleMetadataHomes, i as arrayBufferFileAccessors, r as blobFileAccessors, he as comicInfoMetadataHomes, e as createArchive, te as createArchiveFromArrayBufferList, n as createArchiveFromEntries, ne as createArchiveFromText, re as createArchiveFromUrls, w as getArchiveFileRecordByUri, M as getArchiveHasComicInfo, ae as getArchiveImageRecords, Oe as getArchiveOpfInfo, at as getSpineItemFilesFromArchive, st as isArchiveEpub, fe as isComicInfoManga, C as isDirectoryRecord, S as isFileRecord, k as isImageRecord, tt as koboMetadataHomes, P as normalizeGtin, F as normalizeIsbn, lt as opfMetadataHomes, b as parseAppleDisplayOptionsXml, j 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, Pt as resolveArchive, $e as resolveArchiveCover, yt as resolveArchiveMetadata, Q as resolveArchiveReadingOrder, At as resolveArchiveToc, bt as resolveMetadata, V as tokenizeXmlSpaceSeparatedList };
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 };
963
980
 
964
981
  //# sourceMappingURL=index.js.map