@prose-reader/archive-reader 1.332.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.
- package/dist/createArchiveFromEntries-CFG3evXM.js.map +1 -1
- package/dist/createArchiveFromEntries-DcPCGgZW.cjs.map +1 -1
- package/dist/index/index.cjs +1 -1
- package/dist/index/index.cjs.map +1 -1
- package/dist/index/index.js +156 -139
- package/dist/index/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/resolveArchive.d.ts +3 -1
- package/package.json +5 -5
package/dist/index/index.js
CHANGED
|
@@ -127,7 +127,7 @@ var D = (e) => {
|
|
|
127
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
|
-
},
|
|
130
|
+
}, de = (e) => {
|
|
131
131
|
let t;
|
|
132
132
|
try {
|
|
133
133
|
t = new a(e);
|
|
@@ -144,39 +144,39 @@ var D = (e) => {
|
|
|
144
144
|
kind: "comicInfo",
|
|
145
145
|
...n
|
|
146
146
|
};
|
|
147
|
-
},
|
|
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
|
-
],
|
|
153
|
-
for (let t of
|
|
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
|
|
159
|
-
let t =
|
|
160
|
-
if (t) return
|
|
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
|
|
164
|
+
var ge = /* @__PURE__ */ new Set([
|
|
165
165
|
8,
|
|
166
166
|
12,
|
|
167
167
|
13,
|
|
168
168
|
14
|
|
169
|
-
]),
|
|
169
|
+
]), j = (e) => {
|
|
170
170
|
if (e == null) return;
|
|
171
171
|
let t = String(e).replace(/\D/g, "");
|
|
172
|
-
if (!(t.length === 0 || !
|
|
173
|
-
},
|
|
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(
|
|
177
|
+
let r = t.match(_e);
|
|
178
178
|
if (r) return r[0].toUpperCase();
|
|
179
|
-
},
|
|
179
|
+
}, ve = {
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
235
|
-
let t =
|
|
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
|
-
},
|
|
240
|
-
let t =
|
|
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
|
-
},
|
|
245
|
-
let t =
|
|
244
|
+
}, be = (e) => {
|
|
245
|
+
let t = N(e)?.toLowerCase();
|
|
246
246
|
if (t === "yes") return !0;
|
|
247
247
|
if (t === "no") return !1;
|
|
248
|
-
},
|
|
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
|
-
},
|
|
256
|
-
let t =
|
|
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
|
-
},
|
|
262
|
+
}, Ce = [
|
|
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
|
-
],
|
|
271
|
+
], we = (e) => {
|
|
272
272
|
let t = /* @__PURE__ */ new Map();
|
|
273
|
-
for (let [n, r] of
|
|
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,77 +278,77 @@ var me = /* @__PURE__ */ new Set([
|
|
|
278
278
|
});
|
|
279
279
|
}
|
|
280
280
|
return [...t.values()];
|
|
281
|
-
},
|
|
282
|
-
let t =
|
|
281
|
+
}, Te = (e) => {
|
|
282
|
+
let t = N(e.Series);
|
|
283
283
|
if (t !== void 0) return D({
|
|
284
284
|
name: t,
|
|
285
|
-
position:
|
|
286
|
-
total:
|
|
285
|
+
position: I(e.Number),
|
|
286
|
+
total: F(e.Count)
|
|
287
287
|
});
|
|
288
|
-
},
|
|
289
|
-
let t =
|
|
288
|
+
}, Ee = (e) => {
|
|
289
|
+
let t = N(e.AlternateSeries);
|
|
290
290
|
if (t !== void 0) return D({
|
|
291
291
|
name: t,
|
|
292
|
-
position:
|
|
293
|
-
total:
|
|
292
|
+
position: I(e.AlternateNumber),
|
|
293
|
+
total: F(e.AlternateCount)
|
|
294
294
|
});
|
|
295
|
-
},
|
|
296
|
-
let t =
|
|
295
|
+
}, De = (e) => {
|
|
296
|
+
let t = P(e.StoryArc);
|
|
297
297
|
if (t.length === 0) return [];
|
|
298
|
-
let n =
|
|
298
|
+
let n = P(e.StoryArcNumber);
|
|
299
299
|
return t.map((e, t) => D({
|
|
300
300
|
name: e,
|
|
301
|
-
position:
|
|
301
|
+
position: I(n[t])
|
|
302
302
|
}));
|
|
303
|
-
},
|
|
304
|
-
let t =
|
|
305
|
-
manga:
|
|
306
|
-
blackAndWhite:
|
|
307
|
-
volume:
|
|
308
|
-
format:
|
|
309
|
-
ageRating:
|
|
310
|
-
communityRating:
|
|
311
|
-
notes:
|
|
312
|
-
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:
|
|
315
|
-
mainCharacterOrTeam:
|
|
316
|
-
characters:
|
|
317
|
-
teams:
|
|
318
|
-
locations:
|
|
319
|
-
storyArcs:
|
|
320
|
-
alternateSeries:
|
|
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
|
-
},
|
|
324
|
-
let t =
|
|
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
|
-
},
|
|
330
|
-
let t = e.GTIN, n =
|
|
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:
|
|
333
|
-
description:
|
|
334
|
-
publisher:
|
|
335
|
-
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:
|
|
338
|
-
contributors:
|
|
339
|
-
published:
|
|
340
|
-
readingDirection:
|
|
341
|
-
numberOfPages:
|
|
342
|
-
gtin:
|
|
343
|
-
isbn:
|
|
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:
|
|
349
|
-
comic:
|
|
348
|
+
belongsTo: ke(e),
|
|
349
|
+
comic: Oe(e)
|
|
350
350
|
});
|
|
351
|
-
},
|
|
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,
|
|
@@ -546,7 +546,7 @@ var me = /* @__PURE__ */ new Set([
|
|
|
546
546
|
//#endregion
|
|
547
547
|
//#region src/opf/readArchiveOpf.ts
|
|
548
548
|
async function X(e) {
|
|
549
|
-
let { data: t, basePath: n } =
|
|
549
|
+
let { data: t, basePath: n } = z(e) || {};
|
|
550
550
|
if (!(!t || t.dir)) return {
|
|
551
551
|
opf: Ve(await x(t)),
|
|
552
552
|
basePath: n
|
|
@@ -559,13 +559,13 @@ var He = "com.kobobooks.display-options.xml", Ue = (e) => {
|
|
|
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
|
-
},
|
|
562
|
+
}, Z = (e) => {
|
|
563
563
|
let t = new a(e);
|
|
564
564
|
return t.name?.toLowerCase() === "display_options" ? {
|
|
565
565
|
kind: "kobo",
|
|
566
566
|
...Ue(t)
|
|
567
567
|
} : { kind: "kobo" };
|
|
568
|
-
},
|
|
568
|
+
}, We = (e) => {
|
|
569
569
|
let t = [];
|
|
570
570
|
for (let n of e.split("/")) if (n !== ".") {
|
|
571
571
|
if (n === "..") {
|
|
@@ -575,12 +575,12 @@ var He = "com.kobobooks.display-options.xml", Ue = (e) => {
|
|
|
575
575
|
t.push(n);
|
|
576
576
|
}
|
|
577
577
|
return t.join("/");
|
|
578
|
-
},
|
|
578
|
+
}, Ge = (e, t) => /^https?:\/\//.test(e) ? e : We(t ? `${t}/${e}` : e), Ke = (e) => {
|
|
579
579
|
let t = e?.trim().toLowerCase();
|
|
580
580
|
return t === "reflowable" || t === "pre-paginated" ? t : void 0;
|
|
581
|
-
},
|
|
582
|
-
let r =
|
|
583
|
-
let r =
|
|
581
|
+
}, qe = (e, { opf: t, basePath: n }) => {
|
|
582
|
+
let r = Ke(t.renditionLayoutMeta), i = t.spineRows.map((t) => {
|
|
583
|
+
let r = Ge(t.href, n);
|
|
584
584
|
return {
|
|
585
585
|
row: t,
|
|
586
586
|
uri: r,
|
|
@@ -598,11 +598,11 @@ var He = "com.kobobooks.display-options.xml", Ue = (e) => {
|
|
|
598
598
|
pageSpreadRight: e.pageSpreadRight,
|
|
599
599
|
progressionWeight: a > 0 ? (i?.size ?? 0) / a : 1 / t.spineRows.length
|
|
600
600
|
}));
|
|
601
|
-
},
|
|
601
|
+
}, Je = k.toLowerCase(), Ye = v.toLowerCase(), Xe = (e) => {
|
|
602
602
|
let t = e.basename.toLowerCase();
|
|
603
|
-
return t ===
|
|
604
|
-
},
|
|
605
|
-
let t = e.records.filter(S).filter((e) => !
|
|
603
|
+
return t === Je || t === Ye || e.uri.endsWith("com.kobobooks.display-options.xml") || t.endsWith(".db");
|
|
604
|
+
}, Ze = (e) => {
|
|
605
|
+
let t = e.records.filter(S).filter((e) => !Xe(e));
|
|
606
606
|
return t.map((e) => {
|
|
607
607
|
let n = h(e.encodingFormat ?? "") || l(e.basename);
|
|
608
608
|
return D({
|
|
@@ -613,23 +613,23 @@ var He = "com.kobobooks.display-options.xml", Ue = (e) => {
|
|
|
613
613
|
progressionWeight: 1 / t.length
|
|
614
614
|
});
|
|
615
615
|
});
|
|
616
|
-
},
|
|
616
|
+
}, Q = async (e, { opf: t } = {}) => {
|
|
617
617
|
let n = t ?? await X(e).catch(() => void 0);
|
|
618
|
-
return n ?
|
|
619
|
-
},
|
|
618
|
+
return n ? qe(e, n) : Ze(e);
|
|
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
623
|
let r = t ?? await X(e).catch(() => void 0);
|
|
624
624
|
if (r !== void 0 && r.opf.coverHref !== void 0) {
|
|
625
|
-
let t =
|
|
625
|
+
let t = Ge(r.opf.coverHref, r.basePath);
|
|
626
626
|
return D({
|
|
627
627
|
uri: t,
|
|
628
|
-
mediaType:
|
|
628
|
+
mediaType: Qe(e, t),
|
|
629
629
|
confidence: "derived"
|
|
630
630
|
});
|
|
631
631
|
}
|
|
632
|
-
let i = (n ?? await
|
|
632
|
+
let i = (n ?? await Q(e, { opf: r })).find((e) => e.mediaType?.startsWith("image/") === !0);
|
|
633
633
|
if (i !== void 0) return D({
|
|
634
634
|
uri: i.uri,
|
|
635
635
|
mediaType: i.mediaType,
|
|
@@ -638,14 +638,14 @@ var He = "com.kobobooks.display-options.xml", Ue = (e) => {
|
|
|
638
638
|
};
|
|
639
639
|
//#endregion
|
|
640
640
|
//#region src/kobo/readArchiveKobo.ts
|
|
641
|
-
async function
|
|
641
|
+
async function et(e) {
|
|
642
642
|
let n = e.records.filter((e) => S(e) && e.uri.endsWith("com.kobobooks.display-options.xml"));
|
|
643
643
|
if (n.length === 0) return;
|
|
644
644
|
let r;
|
|
645
645
|
for (let e of n) {
|
|
646
646
|
let n = await x(e);
|
|
647
647
|
try {
|
|
648
|
-
let { renditionLayout: e } =
|
|
648
|
+
let { renditionLayout: e } = Z(n);
|
|
649
649
|
e && (r = e);
|
|
650
650
|
} catch (n) {
|
|
651
651
|
t.error(`Unable to parse ${He} (${e.uri})`, n);
|
|
@@ -658,13 +658,13 @@ async function tt(e) {
|
|
|
658
658
|
}
|
|
659
659
|
//#endregion
|
|
660
660
|
//#region src/kobo/resolve.ts
|
|
661
|
-
var
|
|
661
|
+
var tt = { renditionLayout: "renditionLayout" }, nt = (e) => D({
|
|
662
662
|
renditionLayout: e.renditionLayout,
|
|
663
663
|
kobo: e.renditionLayout === void 0 ? void 0 : { fixedLayout: e.renditionLayout === "pre-paginated" }
|
|
664
|
-
}),
|
|
664
|
+
}), rt = (e) => {
|
|
665
665
|
let t = e.descendantWithPath("head")?.childrenNamed("meta").find((e) => e.attr.name === "viewport");
|
|
666
666
|
return !!(t && t.attr.name === "viewport");
|
|
667
|
-
},
|
|
667
|
+
}, it = async (e, n) => {
|
|
668
668
|
if (n.length === 0) return !1;
|
|
669
669
|
for (let r of n) {
|
|
670
670
|
if (!m({
|
|
@@ -674,17 +674,17 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => D({
|
|
|
674
674
|
let n = w(e, r.uri);
|
|
675
675
|
if (!n || !S(n)) return !1;
|
|
676
676
|
try {
|
|
677
|
-
if (!
|
|
677
|
+
if (!rt(new a(await x(n)))) return !1;
|
|
678
678
|
} catch (e) {
|
|
679
679
|
return t.error(`layout scan: unable to inspect ${r.uri}`, e), !1;
|
|
680
680
|
}
|
|
681
681
|
}
|
|
682
682
|
return !0;
|
|
683
|
-
},
|
|
683
|
+
}, at = async ({ archive: e, archiveOpf: t }) => {
|
|
684
684
|
if (!t) return [];
|
|
685
685
|
let { opf: n, basePath: r } = t, { spineRows: i } = n;
|
|
686
686
|
return e.records.filter((e) => i.find((t) => r ? `${r}/${t.href}` === e.uri : `${t.href}` === e.uri));
|
|
687
|
-
},
|
|
687
|
+
}, ot = (e) => e.toLowerCase().endsWith(".opf"), st = (e) => e.records.some((e) => !e.dir && (ot(e.basename) || ot(e.uri))), ct = (e) => {
|
|
688
688
|
if (e === void 0) return;
|
|
689
689
|
let t = e.trim().match(/^(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?/);
|
|
690
690
|
if (t === null) return;
|
|
@@ -716,8 +716,8 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (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" &&
|
|
720
|
-
for (let t of e) if (
|
|
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",
|
|
@@ -779,13 +779,13 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => D({
|
|
|
779
779
|
languages: e.languages.length > 0 ? [...e.languages] : void 0,
|
|
780
780
|
subjects: e.subjects.length > 0 ? [...e.subjects] : void 0,
|
|
781
781
|
contributors: o.length > 0 ? o : void 0,
|
|
782
|
-
published:
|
|
782
|
+
published: ct(e.date),
|
|
783
783
|
readingDirection: n,
|
|
784
784
|
renditionLayout: i,
|
|
785
785
|
renditionFlow: gt(e.renditionFlowMeta),
|
|
786
786
|
renditionSpread: _t(e.renditionSpreadMeta),
|
|
787
|
-
gtin:
|
|
788
|
-
isbn:
|
|
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 nt = { renditionLayout: "renditionLayout" }, rt = (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" ?
|
|
797
|
-
let t = e.opf === void 0 ? void 0 : vt(e.opf), n = e.comicInfo === void 0 ? void 0 :
|
|
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,
|
|
@@ -875,7 +875,7 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => D({
|
|
|
875
875
|
let e = t.records.find((e) => e.uri.endsWith(n.href));
|
|
876
876
|
if (e && !e.dir) return Tt(new a(await x(e)), { basePath: d(e.uri) });
|
|
877
877
|
}
|
|
878
|
-
}, Dt = (e, {
|
|
878
|
+
}, Dt = (e, { basePath: t, prefix: n }) => {
|
|
879
879
|
let r = _(t, e?.childNamed(`${n}content`)?.attr.src || ""), i = {
|
|
880
880
|
title: e?.descendantWithPath(`${n}navLabel.${n}text`)?.val || "",
|
|
881
881
|
path: r,
|
|
@@ -883,14 +883,14 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => D({
|
|
|
883
883
|
contents: []
|
|
884
884
|
}, a = e.childrenNamed(`${n}navPoint`);
|
|
885
885
|
return a && a.length > 0 && (i.contents = a.map((e) => Dt(e, {
|
|
886
|
-
|
|
886
|
+
basePath: t,
|
|
887
887
|
prefix: n
|
|
888
888
|
}))), i;
|
|
889
|
-
}, Ot = (e, {
|
|
889
|
+
}, Ot = (e, { basePath: t }) => {
|
|
890
890
|
let n = [], r = e.name, i = "";
|
|
891
891
|
return r.indexOf(":") !== -1 && (i = `${r.split(":")[0]}:`), e.childNamed(`${i}navMap`)?.childrenNamed(`${i}navPoint`).forEach((e) => {
|
|
892
892
|
n.push(Dt(e, {
|
|
893
|
-
|
|
893
|
+
basePath: t,
|
|
894
894
|
prefix: i
|
|
895
895
|
}));
|
|
896
896
|
}), n;
|
|
@@ -900,7 +900,7 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => D({
|
|
|
900
900
|
let i = e.manifestItems.find((e) => e.id === r);
|
|
901
901
|
if (i) {
|
|
902
902
|
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)), {
|
|
903
|
+
if (r && !r.dir) return Ot(new a(await x(r)), { basePath: d(r.uri) });
|
|
904
904
|
}
|
|
905
905
|
}
|
|
906
906
|
}, At = async (e, { opf: t } = {}) => {
|
|
@@ -918,47 +918,64 @@ var nt = { renditionLayout: "renditionLayout" }, rt = (e) => D({
|
|
|
918
918
|
"toc"
|
|
919
919
|
], $ = async (e, n) => {
|
|
920
920
|
try {
|
|
921
|
-
return
|
|
921
|
+
return {
|
|
922
|
+
value: await e(),
|
|
923
|
+
failed: !1
|
|
924
|
+
};
|
|
922
925
|
} catch (e) {
|
|
923
|
-
t.error(`resolveArchive: unable to read ${n}`, e)
|
|
924
|
-
|
|
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 =
|
|
930
|
-
let
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
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
|
-
},
|
|
947
|
+
}, v = v.map((e) => ({
|
|
940
948
|
...e,
|
|
941
949
|
renditionLayout: "pre-paginated"
|
|
942
|
-
}))), r &&
|
|
943
|
-
let t =
|
|
944
|
-
opf:
|
|
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 =
|
|
947
|
-
|
|
948
|
-
...
|
|
954
|
+
}), r = _.numberOfPages ?? Mt(t);
|
|
955
|
+
_ = D({
|
|
956
|
+
..._,
|
|
949
957
|
cover: n,
|
|
950
958
|
numberOfPages: r
|
|
951
959
|
});
|
|
952
960
|
}
|
|
953
|
-
let
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
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, k as COMIC_INFO_FILENAME, se as COMIC_INFO_KNOWN_FIELDS,
|
|
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
|