@prose-reader/archive-reader 1.338.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.
@@ -144,39 +144,39 @@ var D = (e) => {
144
144
  kind: "comicInfo",
145
145
  ...n
146
146
  };
147
- }, ue = j.toLowerCase(), de = (e) => e.records.find((e) => S(e) && e.basename.toLowerCase() === ue), fe = [
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
- ], pe = (e) => {
153
- for (let t of fe) 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 M(e) {
159
- let t = de(e);
158
+ async function N(e) {
159
+ let t = M(e);
160
160
  if (t) return le(await x(t));
161
161
  }
162
162
  //#endregion
163
163
  //#region src/utils/normalizeGtin.ts
164
- var me = /* @__PURE__ */ new Set([
164
+ var pe = /* @__PURE__ */ new Set([
165
165
  8,
166
166
  12,
167
167
  13,
168
168
  14
169
- ]), N = (e) => {
169
+ ]), P = (e) => {
170
170
  if (e == null) return;
171
171
  let t = String(e).replace(/\D/g, "");
172
- if (!(t.length === 0 || !me.has(t.length))) return t;
173
- }, he = /(?:97[89])?\d{9}[\dXx]/, P = (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(he);
177
+ let r = t.match(me);
178
178
  if (r) return r[0].toUpperCase();
179
- }, ge = {
179
+ }, he = {
180
180
  AgeRating: "comic.ageRating",
181
181
  AlternateCount: "comic.alternateSeries",
182
182
  AlternateNumber: "comic.alternateSeries",
@@ -220,46 +220,46 @@ var me = /* @__PURE__ */ new Set([
220
220
  Web: "comic.web",
221
221
  Writer: "contributors",
222
222
  Year: "published"
223
- }, _e = (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
- }, F = (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
- }, I = (e) => e === void 0 ? [] : e.split(",").map((e) => e.trim()).filter((e) => e.length > 0), L = (e) => {
235
- let t = F(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
- }, R = (e) => {
240
- let t = F(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
- }, ve = (e) => {
245
- let t = F(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
- }, ye = (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
- }, be = (e) => {
256
- let t = L(e.Year), n = L(e.Month), r = L(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
- }, xe = [
262
+ }, be = [
263
263
  ["Writer", "author"],
264
264
  ["Penciller", "penciler"],
265
265
  ["Inker", "inker"],
@@ -268,9 +268,9 @@ var me = /* @__PURE__ */ new Set([
268
268
  ["CoverArtist", "coverArtist"],
269
269
  ["Editor", "editor"],
270
270
  ["Translator", "translator"]
271
- ], Se = (e) => {
271
+ ], xe = (e) => {
272
272
  let t = /* @__PURE__ */ new Map();
273
- for (let [n, r] of xe) for (let i of I(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 me = /* @__PURE__ */ new Set([
278
278
  });
279
279
  }
280
280
  return [...t.values()];
281
- }, Ce = (e) => {
282
- let t = F(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: R(e.Number),
286
- total: L(e.Count)
285
+ position: z(e.Number),
286
+ total: R(e.Count)
287
287
  });
288
- }, we = (e) => {
289
- let t = F(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: R(e.AlternateNumber),
293
- total: L(e.AlternateCount)
292
+ position: z(e.AlternateNumber),
293
+ total: R(e.AlternateCount)
294
294
  });
295
- }, Te = (e) => {
296
- let t = I(e.StoryArc);
295
+ }, we = (e) => {
296
+ let t = L(e.StoryArc);
297
297
  if (t.length === 0) return [];
298
- let n = I(e.StoryArcNumber);
298
+ let n = L(e.StoryArcNumber);
299
299
  return t.map((e, t) => D({
300
300
  name: e,
301
- position: R(n[t])
301
+ position: z(n[t])
302
302
  }));
303
- }, z = (e) => e.length > 0 ? e : void 0, Ee = (e) => {
304
- let t = z((e.Web ?? "").split(/\s+/).filter((e) => e.length > 0)), n = D({
305
- manga: ye(e),
306
- blackAndWhite: ve(e.BlackAndWhite),
307
- volume: L(e.Volume),
308
- format: F(e.Format),
309
- ageRating: F(e.AgeRating),
310
- communityRating: R(e.CommunityRating),
311
- notes: F(e.Notes),
312
- review: F(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: F(e.ScanInformation),
315
- mainCharacterOrTeam: F(e.MainCharacterOrTeam),
316
- characters: z(I(e.Characters)),
317
- teams: z(I(e.Teams)),
318
- locations: z(I(e.Locations)),
319
- storyArcs: z(Te(e)),
320
- alternateSeries: we(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
- }, De = (e) => {
324
- let t = Ce(e), n = z(I(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
- }, B = (e) => {
330
- let t = e.GTIN, n = F(t), r = F(e.LanguageISO), i = [...I(e.Genre), ...I(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: F(e.Title),
333
- description: F(e.Summary),
334
- publisher: F(e.Publisher),
335
- imprint: F(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: z(i),
338
- contributors: z(Se(e)),
339
- published: be(e),
340
- readingDirection: _e(e),
341
- numberOfPages: L(e.PageCount),
342
- gtin: N(t),
343
- isbn: P(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: De(e),
349
- comic: Ee(e)
348
+ belongsTo: Ee(e),
349
+ comic: Te(e)
350
350
  });
351
- }, V = (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
- }, H = (e) => e === void 0 || e.trim().length === 0 ? [] : e.trim().split(/\s+/).filter((e) => e.length > 0), Oe = (e) => {
358
- let t = H(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,16 +366,16 @@ var me = /* @__PURE__ */ new Set([
366
366
  ...t.includes("page-spread-left") ? { pageSpreadLeft: !0 } : {},
367
367
  ...t.includes("page-spread-right") ? { pageSpreadRight: !0 } : {}
368
368
  };
369
- }, U = (e) => e.includes(":") ? e.slice(e.lastIndexOf(":") + 1) : e, ke = (e, t) => U(e).toLowerCase() === t.toLowerCase(), Ae = (e) => e.type === "element", W = (e, t) => {
370
- for (let n of e.children) if (Ae(n) && ke(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) Ae(r) && ke(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, t) => {
375
+ }, Ae = (e, t) => {
376
376
  let n = [];
377
377
  return e.eachChild((e) => {
378
- if (U(e.name).toLowerCase() !== "identifier") return;
378
+ if (W(e.name).toLowerCase() !== "identifier") return;
379
379
  let r = e.val.trim();
380
380
  if (r.length === 0) return;
381
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;
@@ -386,46 +386,46 @@ var me = /* @__PURE__ */ new Set([
386
386
  ...o !== void 0 && o === t ? { unique: !0 } : {}
387
387
  });
388
388
  }), n;
389
- }, K = (e, t) => {
389
+ }, q = (e, t) => {
390
390
  let n;
391
391
  return e.eachChild((e) => {
392
- if (n !== void 0 || U(e.name).toLowerCase() !== t.toLowerCase()) return;
392
+ if (n !== void 0 || W(e.name).toLowerCase() !== t.toLowerCase()) return;
393
393
  let r = e.val.trim();
394
394
  r.length > 0 && (n = r);
395
395
  }), n;
396
- }, q = (e, t) => {
396
+ }, J = (e, t) => {
397
397
  let n = [];
398
398
  return e.eachChild((e) => {
399
- if (U(e.name).toLowerCase() !== t.toLowerCase()) return;
399
+ if (W(e.name).toLowerCase() !== t.toLowerCase()) return;
400
400
  let r = e.val.trim();
401
401
  r.length > 0 && n.push(r);
402
402
  }), n;
403
- }, Me = (e) => {
403
+ }, je = (e) => {
404
404
  let t;
405
405
  return e.eachChild((e) => {
406
- if (t !== void 0 || U(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;
407
407
  let n = e.attr.content?.trim();
408
408
  n !== void 0 && n.length > 0 && (t = n);
409
409
  }), t;
410
- }, Ne = ({ manifestItems: e, metadataEl: t }) => {
411
- let n = (e) => e.mediaType?.toLowerCase().includes("image/") === !0, r = e.find((e) => n(e) ? H(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);
412
412
  if (r !== void 0) return r.href;
413
413
  if (t !== void 0) {
414
- let r = Me(t);
414
+ let r = je(t);
415
415
  if (r !== void 0) {
416
416
  let t = e.find((e) => e.id === r && n(e));
417
417
  if (t !== void 0) return t.href;
418
418
  }
419
419
  }
420
420
  return e.find((e) => e.id.toLowerCase().includes("cover") && n(e))?.href;
421
- }, J = (e, t) => {
421
+ }, Y = (e, t) => {
422
422
  let n = e.attr[t]?.trim();
423
423
  return n !== void 0 && n.length > 0 ? n : void 0;
424
- }, Pe = (e) => {
424
+ }, Ne = (e) => {
425
425
  let t = [];
426
426
  return e.eachChild((e) => {
427
- if (U(e.name).toLowerCase() !== "meta") return;
428
- 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 = {
429
429
  ...n === void 0 ? {} : { property: n },
430
430
  ...r === void 0 ? {} : { refines: r },
431
431
  ...i === void 0 ? {} : { scheme: i },
@@ -436,14 +436,14 @@ var me = /* @__PURE__ */ new Set([
436
436
  };
437
437
  Object.keys(u).length !== 0 && t.push(u);
438
438
  }), t;
439
- }, Fe = (e, t) => e.replace(/^#/, "") === t, Ie = (e, t) => {
439
+ }, Pe = (e, t) => e.replace(/^#/, "") === t, Fe = (e, t) => {
440
440
  let n = [];
441
441
  return e.eachChild((e) => {
442
- let r = U(e.name).toLowerCase();
442
+ let r = W(e.name).toLowerCase();
443
443
  if (r !== "creator" && r !== "contributor") return;
444
444
  let i = e.val.trim();
445
445
  if (i.length === 0) return;
446
- 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];
447
447
  n.push({
448
448
  name: i,
449
449
  source: r,
@@ -452,14 +452,14 @@ var me = /* @__PURE__ */ new Set([
452
452
  ...l === void 0 ? {} : { fileAs: l }
453
453
  });
454
454
  }), n;
455
- }, Y = (e, t) => {
456
- 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;
457
457
  if (!(n === void 0 || n.trim().length === 0)) return n;
458
- }, Le = (e) => {
459
- let t = W(e, "guide");
458
+ }, Ie = (e) => {
459
+ let t = G(e, "guide");
460
460
  if (t === void 0) return [];
461
461
  let n = [];
462
- for (let e of G(t, "reference")) {
462
+ for (let e of K(t, "reference")) {
463
463
  let t = e.attr.href?.trim();
464
464
  t === void 0 || t.length === 0 || n.push({
465
465
  href: t,
@@ -468,7 +468,7 @@ var me = /* @__PURE__ */ new Set([
468
468
  });
469
469
  }
470
470
  return n;
471
- }, Re = (e) => {
471
+ }, Le = (e) => {
472
472
  let t = e.attr.id, n = e.attr.href;
473
473
  if (t === void 0 || t.length === 0 || n === void 0 || n.length === 0) return;
474
474
  let r = e.attr["media-type"], i = e.attr.properties?.trim();
@@ -478,24 +478,24 @@ var me = /* @__PURE__ */ new Set([
478
478
  ...r !== void 0 && r.length > 0 ? { mediaType: r } : {},
479
479
  ...i !== void 0 && i.length > 0 ? { properties: i } : {}
480
480
  };
481
- }, ze = (e) => {
481
+ }, Re = (e) => {
482
482
  let t = [], n = /* @__PURE__ */ new Map();
483
- for (let r of G(e, "item")) {
484
- let e = Re(r);
483
+ for (let r of K(e, "item")) {
484
+ let e = Le(r);
485
485
  e !== void 0 && (t.push(e), n.set(e.id, e));
486
486
  }
487
487
  return {
488
488
  items: t,
489
489
  byId: n
490
490
  };
491
- }, Be = (e, t) => {
491
+ }, ze = (e, t) => {
492
492
  let n = [];
493
- for (let r of G(t, "itemref")) {
493
+ for (let r of K(t, "itemref")) {
494
494
  let t = r.attr.idref;
495
495
  if (t === void 0 || t.trim().length === 0) continue;
496
496
  let i = e.get(t);
497
497
  if (i === void 0) continue;
498
- let a = Oe(r.attr.properties);
498
+ let a = De(r.attr.properties);
499
499
  n.push({
500
500
  idref: t,
501
501
  id: i.id,
@@ -509,18 +509,18 @@ var me = /* @__PURE__ */ new Set([
509
509
  });
510
510
  }
511
511
  return n;
512
- }, X = (e) => {
513
- let t = new a(e), n = W(t, "manifest"), r = W(t, "spine"), i = W(t, "metadata"), o = t.attr["unique-identifier"]?.trim(), s = o !== void 0 && o.length > 0 ? o : void 0, c = [], l = [];
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 = [];
514
514
  if (n !== void 0) {
515
- let { items: e, byId: t } = ze(n);
516
- c = e, r !== void 0 && (l = Be(t, r));
515
+ let { items: e, byId: t } = Re(n);
516
+ c = e, r !== void 0 && (l = ze(t, r));
517
517
  }
518
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 = K(i, "title"), h = K(i, "publisher"), g = K(i, "description"), _ = K(i, "rights"), v = K(i, "date"), y = q(i, "creator"), x = q(i, "language"), S = q(i, "subject"), C = Y(i, "rendition:layout"), w = Y(i, "rendition:flow"), T = Y(i, "rendition:spread"), E = Pe(i), b = Ie(i, E), D.push(...je(i, s)));
520
- let O = Ne({
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
521
  manifestItems: c,
522
522
  metadataEl: i
523
- }), k = Le(t);
523
+ }), k = Ie(t);
524
524
  return {
525
525
  kind: "opf",
526
526
  manifestItems: c,
@@ -548,9 +548,9 @@ var me = /* @__PURE__ */ new Set([
548
548
  //#endregion
549
549
  //#region src/opf/readArchiveOpf.ts
550
550
  async function Z(e) {
551
- let { data: t, basePath: n } = V(e) || {};
551
+ let { data: t, basePath: n } = H(e) || {};
552
552
  if (!(!t || t.dir)) return {
553
- opf: X(await x(t)),
553
+ opf: Be(await x(t)),
554
554
  basePath: n
555
555
  };
556
556
  }
@@ -718,9 +718,17 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
718
718
  guide: "guide",
719
719
  metas: "properties"
720
720
  }, ut = (e) => {
721
- for (let t of e) if (t.scheme !== void 0 && t.scheme.trim().toLowerCase() === "isbn" && P(t.value) !== void 0) return t.value;
722
- for (let t of e) if (P(t.value) !== void 0) return t.value;
723
- }, 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 = {
724
732
  art: "artist",
725
733
  aut: "author",
726
734
  clr: "colorist",
@@ -729,25 +737,47 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
729
737
  ill: "illustrator",
730
738
  nrt: "narrator",
731
739
  trl: "translator"
732
- }, ft = (e) => e.contributors.map((e) => {
733
- 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);
734
742
  return D({
735
743
  name: e.name,
736
744
  roles: t.length > 0 ? t : [e.source === "creator" ? "author" : "contributor"],
737
745
  sortAs: e.fileAs
738
746
  });
739
- }), 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) => {
740
770
  let t = e?.trim();
741
771
  if (t === void 0 || !/^\d+(\.\d+)?$/.test(t)) return;
742
772
  let n = Number.parseFloat(t);
743
773
  return Number.isFinite(n) ? n : void 0;
744
- }, ht = (e) => {
774
+ }, yt = (e) => {
745
775
  let t = [], n = [];
746
776
  for (let r of e) {
747
777
  if (r.property !== "belongs-to-collection" || r.value === void 0) continue;
748
- 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({
749
779
  name: r.value,
750
- position: mt(a("group-position"))
780
+ position: vt(a("group-position"))
751
781
  });
752
782
  o === "series" ? t.push(s) : n.push(s);
753
783
  }
@@ -755,21 +785,21 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
755
785
  let n = e.find((e) => e.name?.toLowerCase() === "calibre:series" && e.content !== void 0)?.content;
756
786
  n !== void 0 && t.push(D({
757
787
  name: n,
758
- 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)
759
789
  }));
760
790
  }
761
791
  return {
762
792
  series: t,
763
793
  collection: n
764
794
  };
765
- }, gt = (e) => {
795
+ }, bt = (e) => {
766
796
  let t = e?.trim();
767
797
  if (t === "scrolled-continuous" || t === "scrolled-doc" || t === "paginated" || t === "auto") return t;
768
- }, _t = (e) => {
798
+ }, xt = (e) => {
769
799
  let t = e?.trim();
770
800
  if (t === "none" || t === "landscape" || t === "portrait" || t === "both" || t === "auto") return t;
771
- }, vt = (e) => {
772
- 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({
773
803
  series: s.length > 0 ? s : void 0,
774
804
  collection: c.length > 0 ? c : void 0
775
805
  }) : void 0;
@@ -784,20 +814,20 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
784
814
  published: ct(e.date),
785
815
  readingDirection: n,
786
816
  renditionLayout: i,
787
- renditionFlow: gt(e.renditionFlowMeta),
788
- renditionSpread: _t(e.renditionSpreadMeta),
789
- gtin: N(a),
790
- isbn: P(a),
791
- identifiers: e.identifiers.length > 0 ? e.identifiers.map(({ value: e, scheme: t, unique: n }) => D({
792
- value: e,
793
- scheme: t,
794
- unique: n
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
795
825
  })) : void 0,
796
826
  belongsTo: l,
797
827
  properties: e.metas.length > 0 ? [...e.metas] : void 0
798
828
  });
799
- }, yt = (e) => e.kind === "comicInfo" ? B(e) : e.kind === "kobo" ? nt(e) : e.kind === "apple" ? k(e) : vt(e), bt = (e) => {
800
- let t = e.opf === void 0 ? void 0 : vt(e.opf), n = e.comicInfo === void 0 ? void 0 : B(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 ?? []];
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 ?? []];
801
831
  return D({
802
832
  title: t?.title ?? n?.title,
803
833
  description: t?.description ?? n?.description,
@@ -822,7 +852,7 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
822
852
  apple: r?.apple,
823
853
  kobo: i?.kobo
824
854
  });
825
- }, xt = (e) => {
855
+ }, Tt = (e) => {
826
856
  let t = [...e.records].sort((e, t) => g(e.uri, t.uri)), n = (e, t, r, i, a) => {
827
857
  let o = e.find((e) => e.title === t), [s, ...c] = r;
828
858
  return o ? s ? [...e.filter((e) => e !== o), {
@@ -851,71 +881,71 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
851
881
  let a = encodeURI(t.uri).replace(/#/g, "%23").replace(/\?/g, "%3F").replace(/\/$/, ""), o = t.uri.replace(/\/$/, "");
852
882
  return n(e, r, i, a, o);
853
883
  }, []);
854
- }, St = (e) => e ? e.children.map((e) => e instanceof s ? e.text : e instanceof o ? St(e) : "").join("").trim() : "", Ct = (e) => H(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 }) => {
855
885
  let n = {
856
886
  contents: [],
857
887
  path: "",
858
888
  containerHref: "",
859
889
  title: ""
860
890
  }, r = e.childNamed("span") || e.childNamed("a");
861
- n.title = (r?.attr.title || r?.val.trim() || St(r)) ?? "";
891
+ n.title = (r?.attr.title || r?.val.trim() || Et(r)) ?? "";
862
892
  let i = r?.name;
863
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);
864
894
  let a = e.childNamed("ol");
865
895
  if (a) {
866
896
  let e = a.childrenNamed("li");
867
- 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 })));
868
898
  }
869
899
  return n;
870
- }, Tt = (e, { basePath: t }) => {
900
+ }, kt = (e, { basePath: t }) => {
871
901
  let n = [], r;
872
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) => {
873
- n.push(wt(e, { basePath: t }));
903
+ n.push(Ot(e, { basePath: t }));
874
904
  }), n;
875
- }, Et = async (e, t) => {
876
- let n = e.manifestItems.find(Ct);
905
+ }, At = async (e, t) => {
906
+ let n = e.manifestItems.find(Dt);
877
907
  if (n?.href) {
878
908
  let e = t.records.find((e) => e.uri.endsWith(n.href));
879
- 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) });
880
910
  }
881
- }, Dt = (e, { basePath: t, prefix: n }) => {
911
+ }, jt = (e, { basePath: t, prefix: n }) => {
882
912
  let r = _(t, e?.childNamed(`${n}content`)?.attr.src || ""), i = {
883
913
  title: e?.descendantWithPath(`${n}navLabel.${n}text`)?.val || "",
884
914
  path: r,
885
915
  containerHref: r,
886
916
  contents: []
887
917
  }, a = e.childrenNamed(`${n}navPoint`);
888
- 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, {
889
919
  basePath: t,
890
920
  prefix: n
891
921
  }))), i;
892
- }, Ot = (e, { basePath: t }) => {
922
+ }, Mt = (e, { basePath: t }) => {
893
923
  let n = [], r = e.name, i = "";
894
924
  return r.indexOf(":") !== -1 && (i = `${r.split(":")[0]}:`), e.childNamed(`${i}navMap`)?.childrenNamed(`${i}navPoint`).forEach((e) => {
895
- n.push(Dt(e, {
925
+ n.push(jt(e, {
896
926
  basePath: t,
897
927
  prefix: i
898
928
  }));
899
929
  }), n;
900
- }, kt = async ({ opf: e, opfBasePath: t, archive: n }) => {
930
+ }, Nt = async ({ opf: e, opfBasePath: t, archive: n }) => {
901
931
  let r = e.spineTocIdref;
902
932
  if (r) {
903
933
  let i = e.manifestItems.find((e) => e.id === r);
904
934
  if (i) {
905
935
  let e = `${t}${t === "" ? "" : "/"}${i.href}`, r = n.records.find((t) => t.uri.endsWith(e));
906
- 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) });
907
937
  }
908
938
  }
909
- }, At = async (e, { opf: t } = {}) => {
939
+ }, Pt = async (e, { opf: t } = {}) => {
910
940
  let n = t ?? await Z(e);
911
- if (n) return await Et(n.opf, e) || await kt({
941
+ if (n) return await At(n.opf, e) || await Nt({
912
942
  opf: n.opf,
913
943
  opfBasePath: n.basePath,
914
944
  archive: e
915
945
  }) || [];
916
- let r = xt(e);
946
+ let r = Tt(e);
917
947
  return r.length === 0 ? void 0 : r;
918
- }, jt = [
948
+ }, Ft = [
919
949
  "metadata",
920
950
  "readingOrder",
921
951
  "toc"
@@ -931,14 +961,14 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
931
961
  failed: !0
932
962
  };
933
963
  }
934
- }, Mt = (e) => {
964
+ }, It = (e) => {
935
965
  let t = (e) => e?.startsWith("audio/") === !0 || e?.startsWith("video/") === !0, n = e.filter((e) => e.renditionLayout === "pre-paginated" && !t(e.mediaType)).length;
936
966
  return n > 0 ? n : void 0;
937
- }, Nt = ({ archive: e, opf: t, comicInfo: n, apple: r, kobo: i }) => {
967
+ }, Lt = ({ archive: e, opf: t, comicInfo: n, apple: r, kobo: i }) => {
938
968
  let a = [];
939
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;
940
- }, Pt = 1, Ft = async (e, t = {}) => {
941
- 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 = c?.value, u = r || i || s, d = u ? await $(() => M(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({
942
972
  opf: l?.opf,
943
973
  comicInfo: f,
944
974
  apple: m,
@@ -954,16 +984,16 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
954
984
  let t = v ?? await Q(e, { opf: l }), n = await $e(e, {
955
985
  opf: l,
956
986
  readingOrder: t
957
- }), r = _.numberOfPages ?? Mt(t);
987
+ }), r = _.numberOfPages ?? It(t);
958
988
  _ = D({
959
989
  ..._,
960
990
  cover: n,
961
991
  numberOfPages: r
962
992
  });
963
993
  }
964
- let y = o ? (await $(() => At(e, { opf: l }), "toc")).value : void 0, b = {
965
- version: Pt,
966
- unreadableSources: Nt({
994
+ let y = o ? (await $(() => Pt(e, { opf: l }), "toc")).value : void 0, b = {
995
+ version: Rt,
996
+ unreadableSources: Lt({
967
997
  archive: e,
968
998
  opf: c,
969
999
  comicInfo: d,
@@ -979,6 +1009,6 @@ var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
979
1009
  })), b;
980
1010
  };
981
1011
  //#endregion
982
- export { v as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, j as COMIC_INFO_FILENAME, ae as COMIC_INFO_KNOWN_FIELDS, fe as COMIC_INFO_MANGA_VALUES, Ve as KOBO_DISPLAY_OPTIONS_FILENAME, O as appleMetadataHomes, i as arrayBufferFileAccessors, r as blobFileAccessors, ge as comicInfoMetadataHomes, e as createArchive, ee as createArchiveFromArrayBufferList, n as createArchiveFromEntries, te as createArchiveFromText, ne as createArchiveFromUrls, w as getArchiveFileRecordByUri, de as getArchiveHasComicInfo, ie as getArchiveImageRecords, V as getArchiveOpfInfo, at as getSpineItemFilesFromArchive, st as isArchiveEpub, pe as isComicInfoManga, C as isDirectoryRecord, S as isFileRecord, A as isImageRecord, tt as koboMetadataHomes, N as normalizeGtin, P as normalizeIsbn, lt as opfMetadataHomes, b as parseAppleDisplayOptionsXml, le as parseComicInfo, Ue as parseKoboXml, X as parseOpf, ct as parseW3cDtfDate, E as readArchiveApple, M as readArchiveComicInfo, et as readArchiveKobo, Z 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, H 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 };
983
1013
 
984
1014
  //# sourceMappingURL=index.js.map