@prose-reader/archive-reader 1.330.0 → 1.332.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/archives/images.d.ts +3 -0
- package/dist/archives/images.test.d.ts +1 -0
- 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 +186 -186
- package/dist/index/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/package.json +3 -3
package/dist/index/index.js
CHANGED
|
@@ -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" },
|
|
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
|
-
},
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
89
|
+
}, ie = async (t, n) => {
|
|
90
90
|
let i = c(), a = t.map((e) => ({
|
|
91
91
|
id: i(e),
|
|
92
92
|
url: e
|
|
@@ -124,10 +124,10 @@ var D = (e) => {
|
|
|
124
124
|
}, ...s],
|
|
125
125
|
close: () => Promise.resolve()
|
|
126
126
|
});
|
|
127
|
-
}, k = "ComicInfo.xml",
|
|
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
|
+
}, A = (e) => {
|
|
131
131
|
let t;
|
|
132
132
|
try {
|
|
133
133
|
t = new a(e);
|
|
@@ -137,46 +137,46 @@ var D = (e) => {
|
|
|
137
137
|
}
|
|
138
138
|
let n = {};
|
|
139
139
|
return t.eachChild((e) => {
|
|
140
|
-
if (e.type !== "element" ||
|
|
141
|
-
let t =
|
|
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
|
-
},
|
|
147
|
+
}, de = k.toLowerCase(), j = (e) => e.records.find((e) => S(e) && e.basename.toLowerCase() === de), M = [
|
|
148
148
|
"Unknown",
|
|
149
149
|
"No",
|
|
150
150
|
"Yes",
|
|
151
151
|
"YesAndRightToLeft"
|
|
152
|
-
],
|
|
153
|
-
for (let t of
|
|
152
|
+
], fe = (e) => {
|
|
153
|
+
for (let t of M) 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 pe(e) {
|
|
159
|
+
let t = j(e);
|
|
160
|
+
if (t) return A(await x(t));
|
|
161
161
|
}
|
|
162
162
|
//#endregion
|
|
163
163
|
//#region src/utils/normalizeGtin.ts
|
|
164
|
-
var
|
|
164
|
+
var me = /* @__PURE__ */ new Set([
|
|
165
165
|
8,
|
|
166
166
|
12,
|
|
167
167
|
13,
|
|
168
168
|
14
|
|
169
|
-
]),
|
|
169
|
+
]), N = (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 || !me.has(t.length))) return t;
|
|
173
|
+
}, he = /(?:97[89])?\d{9}[\dXx]/, P = (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(he);
|
|
178
178
|
if (r) return r[0].toUpperCase();
|
|
179
|
-
},
|
|
179
|
+
}, ge = {
|
|
180
180
|
AgeRating: "comic.ageRating",
|
|
181
181
|
AlternateCount: "comic.alternateSeries",
|
|
182
182
|
AlternateNumber: "comic.alternateSeries",
|
|
@@ -220,46 +220,46 @@ var fe = /* @__PURE__ */ new Set([
|
|
|
220
220
|
Web: "comic.web",
|
|
221
221
|
Writer: "contributors",
|
|
222
222
|
Year: "published"
|
|
223
|
-
},
|
|
223
|
+
}, _e = (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
|
+
}, F = (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
|
+
}, I = (e) => e === void 0 ? [] : e.split(",").map((e) => e.trim()).filter((e) => e.length > 0), L = (e) => {
|
|
235
|
+
let t = F(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
|
+
}, R = (e) => {
|
|
240
|
+
let t = F(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
|
+
}, ve = (e) => {
|
|
245
|
+
let t = F(e)?.toLowerCase();
|
|
246
246
|
if (t === "yes") return !0;
|
|
247
247
|
if (t === "no") return !1;
|
|
248
|
-
},
|
|
248
|
+
}, ye = (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
|
+
}, be = (e) => {
|
|
256
|
+
let t = L(e.Year), n = L(e.Month), r = L(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
|
+
}, xe = [
|
|
263
263
|
["Writer", "author"],
|
|
264
264
|
["Penciller", "penciler"],
|
|
265
265
|
["Inker", "inker"],
|
|
@@ -268,9 +268,9 @@ var fe = /* @__PURE__ */ new Set([
|
|
|
268
268
|
["CoverArtist", "coverArtist"],
|
|
269
269
|
["Editor", "editor"],
|
|
270
270
|
["Translator", "translator"]
|
|
271
|
-
],
|
|
271
|
+
], Se = (e) => {
|
|
272
272
|
let t = /* @__PURE__ */ new Map();
|
|
273
|
-
for (let [n, r] of
|
|
273
|
+
for (let [n, r] of xe) for (let i of I(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,83 +278,83 @@ var fe = /* @__PURE__ */ new Set([
|
|
|
278
278
|
});
|
|
279
279
|
}
|
|
280
280
|
return [...t.values()];
|
|
281
|
-
},
|
|
282
|
-
let t =
|
|
281
|
+
}, Ce = (e) => {
|
|
282
|
+
let t = F(e.Series);
|
|
283
283
|
if (t !== void 0) return D({
|
|
284
284
|
name: t,
|
|
285
|
-
position:
|
|
286
|
-
total:
|
|
285
|
+
position: R(e.Number),
|
|
286
|
+
total: L(e.Count)
|
|
287
287
|
});
|
|
288
|
-
},
|
|
289
|
-
let t =
|
|
288
|
+
}, we = (e) => {
|
|
289
|
+
let t = F(e.AlternateSeries);
|
|
290
290
|
if (t !== void 0) return D({
|
|
291
291
|
name: t,
|
|
292
|
-
position:
|
|
293
|
-
total:
|
|
292
|
+
position: R(e.AlternateNumber),
|
|
293
|
+
total: L(e.AlternateCount)
|
|
294
294
|
});
|
|
295
|
-
},
|
|
296
|
-
let t =
|
|
295
|
+
}, Te = (e) => {
|
|
296
|
+
let t = I(e.StoryArc);
|
|
297
297
|
if (t.length === 0) return [];
|
|
298
|
-
let n =
|
|
298
|
+
let n = I(e.StoryArcNumber);
|
|
299
299
|
return t.map((e, t) => D({
|
|
300
300
|
name: e,
|
|
301
|
-
position:
|
|
301
|
+
position: R(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
|
+
}, 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),
|
|
313
313
|
web: t,
|
|
314
|
-
scanInformation:
|
|
315
|
-
mainCharacterOrTeam:
|
|
316
|
-
characters:
|
|
317
|
-
teams:
|
|
318
|
-
locations:
|
|
319
|
-
storyArcs:
|
|
320
|
-
alternateSeries:
|
|
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)
|
|
321
321
|
});
|
|
322
322
|
return Object.keys(n).length > 0 ? n : void 0;
|
|
323
|
-
},
|
|
324
|
-
let t =
|
|
323
|
+
}, De = (e) => {
|
|
324
|
+
let t = Ce(e), n = z(I(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
|
+
}, Oe = (e) => {
|
|
330
|
+
let t = e.GTIN, n = F(t), r = F(e.LanguageISO), i = [...I(e.Genre), ...I(e.Tags)];
|
|
331
331
|
return D({
|
|
332
|
-
title:
|
|
333
|
-
description:
|
|
334
|
-
publisher:
|
|
335
|
-
imprint:
|
|
332
|
+
title: F(e.Title),
|
|
333
|
+
description: F(e.Summary),
|
|
334
|
+
publisher: F(e.Publisher),
|
|
335
|
+
imprint: F(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: 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),
|
|
344
344
|
identifiers: n === void 0 ? void 0 : [{
|
|
345
345
|
value: n,
|
|
346
346
|
scheme: "GTIN"
|
|
347
347
|
}],
|
|
348
|
-
belongsTo:
|
|
349
|
-
comic:
|
|
348
|
+
belongsTo: De(e),
|
|
349
|
+
comic: Ee(e)
|
|
350
350
|
});
|
|
351
|
-
},
|
|
351
|
+
}, ke = (e) => {
|
|
352
352
|
let t = e.records.filter((e) => !e.dir).find((e) => e.uri.endsWith(".opf"));
|
|
353
353
|
return {
|
|
354
354
|
data: t,
|
|
355
355
|
basePath: t?.uri.substring(0, t.uri.lastIndexOf("/")) || ""
|
|
356
356
|
};
|
|
357
|
-
}, B = (e) => e === void 0 || e.trim().length === 0 ? [] : e.trim().split(/\s+/).filter((e) => e.length > 0),
|
|
357
|
+
}, B = (e) => e === void 0 || e.trim().length === 0 ? [] : e.trim().split(/\s+/).filter((e) => e.length > 0), Ae = (e) => {
|
|
358
358
|
let t = B(e);
|
|
359
359
|
if (t.length === 0) return {};
|
|
360
360
|
let n;
|
|
@@ -372,7 +372,7 @@ var fe = /* @__PURE__ */ new Set([
|
|
|
372
372
|
let n = [];
|
|
373
373
|
for (let r of e.children) U(r) && H(r.name, t) && n.push(r);
|
|
374
374
|
return n;
|
|
375
|
-
},
|
|
375
|
+
}, je = (e) => {
|
|
376
376
|
let t = [];
|
|
377
377
|
return e.eachChild((e) => {
|
|
378
378
|
if (V(e.name).toLowerCase() !== "identifier") return;
|
|
@@ -398,18 +398,18 @@ var fe = /* @__PURE__ */ new Set([
|
|
|
398
398
|
let r = e.val.trim();
|
|
399
399
|
r.length > 0 && n.push(r);
|
|
400
400
|
}), n;
|
|
401
|
-
},
|
|
401
|
+
}, Me = (e) => {
|
|
402
402
|
let t;
|
|
403
403
|
return e.eachChild((e) => {
|
|
404
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
|
-
},
|
|
408
|
+
}, Ne = ({ manifestItems: e, metadataEl: t }) => {
|
|
409
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 =
|
|
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;
|
|
@@ -419,7 +419,7 @@ var fe = /* @__PURE__ */ new Set([
|
|
|
419
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
|
-
},
|
|
422
|
+
}, Pe = (e) => {
|
|
423
423
|
let t = [];
|
|
424
424
|
return e.eachChild((e) => {
|
|
425
425
|
if (V(e.name).toLowerCase() !== "meta") return;
|
|
@@ -434,14 +434,14 @@ var fe = /* @__PURE__ */ new Set([
|
|
|
434
434
|
};
|
|
435
435
|
Object.keys(u).length !== 0 && t.push(u);
|
|
436
436
|
}), t;
|
|
437
|
-
},
|
|
437
|
+
}, Fe = (e, t) => e.replace(/^#/, "") === t, Ie = (e, t) => {
|
|
438
438
|
let n = [];
|
|
439
439
|
return e.eachChild((e) => {
|
|
440
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 = J(e, "id"), o = (e) => a === void 0 ? [] : t.flatMap((t) => t.refines !== void 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,
|
|
@@ -453,7 +453,7 @@ var fe = /* @__PURE__ */ new Set([
|
|
|
453
453
|
}, Y = (e, t) => {
|
|
454
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
|
-
},
|
|
456
|
+
}, Le = (e) => {
|
|
457
457
|
let t = W(e, "guide");
|
|
458
458
|
if (t === void 0) return [];
|
|
459
459
|
let n = [];
|
|
@@ -466,7 +466,7 @@ var fe = /* @__PURE__ */ new Set([
|
|
|
466
466
|
});
|
|
467
467
|
}
|
|
468
468
|
return n;
|
|
469
|
-
},
|
|
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 fe = /* @__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
|
-
},
|
|
479
|
+
}, ze = (e) => {
|
|
480
480
|
let t = [], n = /* @__PURE__ */ new Map();
|
|
481
481
|
for (let r of G(e, "item")) {
|
|
482
|
-
let e =
|
|
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
|
-
},
|
|
489
|
+
}, Be = (e, t) => {
|
|
490
490
|
let n = [];
|
|
491
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 =
|
|
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 fe = /* @__PURE__ */ new Set([
|
|
|
507
507
|
});
|
|
508
508
|
}
|
|
509
509
|
return n;
|
|
510
|
-
},
|
|
510
|
+
}, Ve = (e) => {
|
|
511
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 } =
|
|
514
|
-
o = e, r !== void 0 && (s =
|
|
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 = 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 =
|
|
518
|
-
let E =
|
|
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 =
|
|
521
|
+
}), D = Le(t);
|
|
522
522
|
return {
|
|
523
523
|
kind: "opf",
|
|
524
524
|
manifestItems: o,
|
|
@@ -545,27 +545,27 @@ var fe = /* @__PURE__ */ new Set([
|
|
|
545
545
|
};
|
|
546
546
|
//#endregion
|
|
547
547
|
//#region src/opf/readArchiveOpf.ts
|
|
548
|
-
async function
|
|
549
|
-
let { data: t, basePath: n } =
|
|
548
|
+
async function X(e) {
|
|
549
|
+
let { data: t, basePath: n } = ke(e) || {};
|
|
550
550
|
if (!(!t || t.dir)) return {
|
|
551
|
-
opf:
|
|
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
|
|
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
|
-
},
|
|
562
|
+
}, We = (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
|
+
}, Ge = (e) => {
|
|
569
569
|
let t = [];
|
|
570
570
|
for (let n of e.split("/")) if (n !== ".") {
|
|
571
571
|
if (n === "..") {
|
|
@@ -575,12 +575,12 @@ var Re = "com.kobobooks.display-options.xml", ze = (e) => {
|
|
|
575
575
|
t.push(n);
|
|
576
576
|
}
|
|
577
577
|
return t.join("/");
|
|
578
|
-
},
|
|
578
|
+
}, Ke = (e, t) => /^https?:\/\//.test(e) ? e : Ge(t ? `${t}/${e}` : e), qe = (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
|
+
}, Je = (e, { opf: t, basePath: n }) => {
|
|
582
|
+
let r = qe(t.renditionLayoutMeta), i = t.spineRows.map((t) => {
|
|
583
|
+
let r = Ke(t.href, n);
|
|
584
584
|
return {
|
|
585
585
|
row: t,
|
|
586
586
|
uri: r,
|
|
@@ -598,11 +598,11 @@ var Re = "com.kobobooks.display-options.xml", ze = (e) => {
|
|
|
598
598
|
pageSpreadRight: e.pageSpreadRight,
|
|
599
599
|
progressionWeight: a > 0 ? (i?.size ?? 0) / a : 1 / t.spineRows.length
|
|
600
600
|
}));
|
|
601
|
-
},
|
|
601
|
+
}, Ye = k.toLowerCase(), Xe = v.toLowerCase(), Ze = (e) => {
|
|
602
602
|
let t = e.basename.toLowerCase();
|
|
603
|
-
return t ===
|
|
604
|
-
},
|
|
605
|
-
let t = e.records.filter(S).filter((e) => !
|
|
603
|
+
return t === Ye || t === Xe || e.uri.endsWith("com.kobobooks.display-options.xml") || t.endsWith(".db");
|
|
604
|
+
}, Qe = (e) => {
|
|
605
|
+
let t = e.records.filter(S).filter((e) => !Ze(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 Re = "com.kobobooks.display-options.xml", ze = (e) => {
|
|
|
613
613
|
progressionWeight: 1 / t.length
|
|
614
614
|
});
|
|
615
615
|
});
|
|
616
|
-
},
|
|
617
|
-
let n = t ?? await
|
|
618
|
-
return n ?
|
|
619
|
-
},
|
|
616
|
+
}, Z = async (e, { opf: t } = {}) => {
|
|
617
|
+
let n = t ?? await X(e).catch(() => void 0);
|
|
618
|
+
return n ? Je(e, n) : Qe(e);
|
|
619
|
+
}, $e = (e, t) => {
|
|
620
620
|
let n = w(e, t);
|
|
621
621
|
if (n !== void 0) return h(n.encodingFormat ?? "") || l(n.basename);
|
|
622
|
-
},
|
|
623
|
-
let r = t ?? await
|
|
622
|
+
}, et = async (e, { opf: t, readingOrder: n } = {}) => {
|
|
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 = Ke(r.opf.coverHref, r.basePath);
|
|
626
626
|
return D({
|
|
627
627
|
uri: t,
|
|
628
|
-
mediaType:
|
|
628
|
+
mediaType: $e(e, t),
|
|
629
629
|
confidence: "derived"
|
|
630
630
|
});
|
|
631
631
|
}
|
|
632
|
-
let i = (n ?? await
|
|
632
|
+
let i = (n ?? await Z(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,17 +638,17 @@ var Re = "com.kobobooks.display-options.xml", ze = (e) => {
|
|
|
638
638
|
};
|
|
639
639
|
//#endregion
|
|
640
640
|
//#region src/kobo/readArchiveKobo.ts
|
|
641
|
-
async function
|
|
641
|
+
async function tt(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 } = We(n);
|
|
649
649
|
e && (r = e);
|
|
650
650
|
} catch (n) {
|
|
651
|
-
t.error(`Unable to parse ${
|
|
651
|
+
t.error(`Unable to parse ${He} (${e.uri})`, n);
|
|
652
652
|
}
|
|
653
653
|
}
|
|
654
654
|
return {
|
|
@@ -658,13 +658,13 @@ async function Ze(e) {
|
|
|
658
658
|
}
|
|
659
659
|
//#endregion
|
|
660
660
|
//#region src/kobo/resolve.ts
|
|
661
|
-
var
|
|
661
|
+
var nt = { renditionLayout: "renditionLayout" }, rt = (e) => D({
|
|
662
662
|
renditionLayout: e.renditionLayout,
|
|
663
663
|
kobo: e.renditionLayout === void 0 ? void 0 : { fixedLayout: e.renditionLayout === "pre-paginated" }
|
|
664
|
-
}),
|
|
664
|
+
}), it = (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
|
+
}, at = 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 Qe = { renditionLayout: "renditionLayout" }, $e = (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 (!it(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
|
+
}, ot = 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
|
+
}, st = (e) => e.toLowerCase().endsWith(".opf"), ct = (e) => e.records.some((e) => !e.dir && (st(e.basename) || st(e.uri))), Q = (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;
|
|
@@ -694,7 +694,7 @@ var Qe = { renditionLayout: "renditionLayout" }, $e = (e) => D({
|
|
|
694
694
|
...r === void 0 ? {} : { month: Number.parseInt(r, 10) },
|
|
695
695
|
...i === void 0 ? {} : { day: Number.parseInt(i, 10) }
|
|
696
696
|
};
|
|
697
|
-
},
|
|
697
|
+
}, lt = {
|
|
698
698
|
manifestItems: "readingOrder",
|
|
699
699
|
spineRows: "readingOrder",
|
|
700
700
|
spineTocIdref: "toc",
|
|
@@ -715,10 +715,10 @@ var Qe = { renditionLayout: "renditionLayout" }, $e = (e) => D({
|
|
|
715
715
|
pageProgressionDirection: "readingDirection",
|
|
716
716
|
guide: "guide",
|
|
717
717
|
metas: "properties"
|
|
718
|
-
},
|
|
719
|
-
for (let t of e) if (t.scheme !== void 0 && t.scheme.trim().toLowerCase() === "isbn" &&
|
|
720
|
-
for (let t of e) if (
|
|
721
|
-
},
|
|
718
|
+
}, ut = (e) => {
|
|
719
|
+
for (let t of e) if (t.scheme !== void 0 && t.scheme.trim().toLowerCase() === "isbn" && P(t.value) !== void 0) return t.value;
|
|
720
|
+
for (let t of e) if (P(t.value) !== void 0) return t.value;
|
|
721
|
+
}, dt = {
|
|
722
722
|
art: "artist",
|
|
723
723
|
aut: "author",
|
|
724
724
|
clr: "colorist",
|
|
@@ -727,25 +727,25 @@ var Qe = { renditionLayout: "renditionLayout" }, $e = (e) => D({
|
|
|
727
727
|
ill: "illustrator",
|
|
728
728
|
nrt: "narrator",
|
|
729
729
|
trl: "translator"
|
|
730
|
-
},
|
|
731
|
-
let t = e.roles.map((e) =>
|
|
730
|
+
}, ft = (e) => e.contributors.map((e) => {
|
|
731
|
+
let t = e.roles.map((e) => dt[e.trim().toLowerCase()] ?? e);
|
|
732
732
|
return D({
|
|
733
733
|
name: e.name,
|
|
734
734
|
roles: t.length > 0 ? t : [e.source === "creator" ? "author" : "contributor"],
|
|
735
735
|
sortAs: e.fileAs
|
|
736
736
|
});
|
|
737
|
-
}),
|
|
737
|
+
}), pt = (e, t) => e.refines !== void 0 && e.refines.replace(/^#/, "") === t, mt = (e) => {
|
|
738
738
|
let t = e?.trim();
|
|
739
739
|
if (t === void 0 || !/^\d+(\.\d+)?$/.test(t)) return;
|
|
740
740
|
let n = Number.parseFloat(t);
|
|
741
741
|
return Number.isFinite(n) ? n : void 0;
|
|
742
|
-
},
|
|
742
|
+
}, ht = (e) => {
|
|
743
743
|
let t = [], n = [];
|
|
744
744
|
for (let r of e) {
|
|
745
745
|
if (r.property !== "belongs-to-collection" || r.value === void 0) continue;
|
|
746
|
-
let i = r.id, a = (t) => i === void 0 ? void 0 : e.find((e) =>
|
|
746
|
+
let i = r.id, a = (t) => i === void 0 ? void 0 : e.find((e) => pt(e, i) && e.property === t && e.value !== void 0)?.value, o = a("collection-type")?.trim().toLowerCase(), s = D({
|
|
747
747
|
name: r.value,
|
|
748
|
-
position:
|
|
748
|
+
position: mt(a("group-position"))
|
|
749
749
|
});
|
|
750
750
|
o === "series" ? t.push(s) : n.push(s);
|
|
751
751
|
}
|
|
@@ -753,21 +753,21 @@ var Qe = { renditionLayout: "renditionLayout" }, $e = (e) => D({
|
|
|
753
753
|
let n = e.find((e) => e.name?.toLowerCase() === "calibre:series" && e.content !== void 0)?.content;
|
|
754
754
|
n !== void 0 && t.push(D({
|
|
755
755
|
name: n,
|
|
756
|
-
position:
|
|
756
|
+
position: mt(e.find((e) => e.name?.toLowerCase() === "calibre:series_index")?.content)
|
|
757
757
|
}));
|
|
758
758
|
}
|
|
759
759
|
return {
|
|
760
760
|
series: t,
|
|
761
761
|
collection: n
|
|
762
762
|
};
|
|
763
|
-
},
|
|
763
|
+
}, gt = (e) => {
|
|
764
764
|
let t = e?.trim();
|
|
765
765
|
if (t === "scrolled-continuous" || t === "scrolled-doc" || t === "paginated" || t === "auto") return t;
|
|
766
|
-
},
|
|
766
|
+
}, _t = (e) => {
|
|
767
767
|
let t = e?.trim();
|
|
768
768
|
if (t === "none" || t === "landscape" || t === "portrait" || t === "both" || t === "auto") return t;
|
|
769
|
-
},
|
|
770
|
-
let t = e.pageProgressionDirection?.trim().toLowerCase(), n = t === "ltr" || t === "rtl" ? t : void 0, r = e.renditionLayoutMeta?.trim().toLowerCase(), i = r === "reflowable" || r === "pre-paginated" ? r : void 0, a =
|
|
769
|
+
}, vt = (e) => {
|
|
770
|
+
let t = e.pageProgressionDirection?.trim().toLowerCase(), n = t === "ltr" || t === "rtl" ? t : void 0, r = e.renditionLayoutMeta?.trim().toLowerCase(), i = r === "reflowable" || r === "pre-paginated" ? r : void 0, a = ut(e.identifiers), o = ft(e), { series: s, collection: c } = ht(e.metas), l = s.length > 0 || c.length > 0 ? D({
|
|
771
771
|
series: s.length > 0 ? s : void 0,
|
|
772
772
|
collection: c.length > 0 ? c : void 0
|
|
773
773
|
}) : void 0;
|
|
@@ -779,13 +779,13 @@ var Qe = { renditionLayout: "renditionLayout" }, $e = (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: Q(e.date),
|
|
783
783
|
readingDirection: n,
|
|
784
784
|
renditionLayout: i,
|
|
785
|
-
renditionFlow:
|
|
786
|
-
renditionSpread:
|
|
787
|
-
gtin:
|
|
788
|
-
isbn:
|
|
785
|
+
renditionFlow: gt(e.renditionFlowMeta),
|
|
786
|
+
renditionSpread: _t(e.renditionSpreadMeta),
|
|
787
|
+
gtin: N(a),
|
|
788
|
+
isbn: P(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 Qe = { renditionLayout: "renditionLayout" }, $e = (e) => D({
|
|
|
793
793
|
belongsTo: l,
|
|
794
794
|
properties: e.metas.length > 0 ? [...e.metas] : void 0
|
|
795
795
|
});
|
|
796
|
-
},
|
|
797
|
-
let t = e.opf === void 0 ? void 0 :
|
|
796
|
+
}, yt = (e) => e.kind === "comicInfo" ? Oe(e) : e.kind === "kobo" ? rt(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 : Oe(e.comicInfo), r = e.apple === void 0 ? void 0 : te(e.apple), i = e.kobo === void 0 ? void 0 : rt(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,
|
|
@@ -819,7 +819,7 @@ var Qe = { renditionLayout: "renditionLayout" }, $e = (e) => D({
|
|
|
819
819
|
apple: r?.apple,
|
|
820
820
|
kobo: i?.kobo
|
|
821
821
|
});
|
|
822
|
-
},
|
|
822
|
+
}, xt = (e) => {
|
|
823
823
|
let t = [...e.records].sort((e, t) => g(e.uri, t.uri)), n = (e, t, r, i, a) => {
|
|
824
824
|
let o = e.find((e) => e.title === t), [s, ...c] = r;
|
|
825
825
|
return o ? s ? [...e.filter((e) => e !== o), {
|
|
@@ -848,71 +848,71 @@ var Qe = { renditionLayout: "renditionLayout" }, $e = (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
|
-
},
|
|
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: "",
|
|
855
855
|
containerHref: "",
|
|
856
856
|
title: ""
|
|
857
857
|
}, r = e.childNamed("span") || e.childNamed("a");
|
|
858
|
-
n.title = (r?.attr.title || r?.val.trim() ||
|
|
858
|
+
n.title = (r?.attr.title || r?.val.trim() || St(r)) ?? "";
|
|
859
859
|
let i = r?.name;
|
|
860
860
|
i !== "a" && (r = e.descendantWithPath(`${i}.a`), r && (i = r.name.toLowerCase())), i === "a" && r?.attr.href && (n.path = _(t, r.attr.href), n.containerHref = n.path);
|
|
861
861
|
let a = e.childNamed("ol");
|
|
862
862
|
if (a) {
|
|
863
863
|
let e = a.childrenNamed("li");
|
|
864
|
-
e && e.length > 0 && (n.contents = e.map((e) =>
|
|
864
|
+
e && e.length > 0 && (n.contents = e.map((e) => wt(e, { basePath: t })));
|
|
865
865
|
}
|
|
866
866
|
return n;
|
|
867
|
-
},
|
|
867
|
+
}, Tt = (e, { basePath: t }) => {
|
|
868
868
|
let n = [], r;
|
|
869
869
|
return e.descendantWithPath("body.nav.ol") ? r = e.descendantWithPath("body.nav.ol")?.children : e.descendantWithPath("body.section.nav.ol") && (r = e.descendantWithPath("body.section.nav.ol")?.children), r && r.length > 0 && r.filter((e) => e instanceof o && e.name === "li").forEach((e) => {
|
|
870
|
-
n.push(
|
|
870
|
+
n.push(wt(e, { basePath: t }));
|
|
871
871
|
}), n;
|
|
872
|
-
},
|
|
873
|
-
let n = e.manifestItems.find(
|
|
872
|
+
}, Et = async (e, t) => {
|
|
873
|
+
let n = e.manifestItems.find(Ct);
|
|
874
874
|
if (n?.href) {
|
|
875
875
|
let e = t.records.find((e) => e.uri.endsWith(n.href));
|
|
876
|
-
if (e && !e.dir) return
|
|
876
|
+
if (e && !e.dir) return Tt(new a(await x(e)), { basePath: d(e.uri) });
|
|
877
877
|
}
|
|
878
|
-
},
|
|
878
|
+
}, Dt = (e, { opfBasePath: 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,
|
|
882
882
|
containerHref: r,
|
|
883
883
|
contents: []
|
|
884
884
|
}, a = e.childrenNamed(`${n}navPoint`);
|
|
885
|
-
return a && a.length > 0 && (i.contents = a.map((e) =>
|
|
885
|
+
return a && a.length > 0 && (i.contents = a.map((e) => Dt(e, {
|
|
886
886
|
opfBasePath: t,
|
|
887
887
|
prefix: n
|
|
888
888
|
}))), i;
|
|
889
|
-
},
|
|
889
|
+
}, Ot = (e, { opfBasePath: 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
|
-
n.push(
|
|
892
|
+
n.push(Dt(e, {
|
|
893
893
|
opfBasePath: t,
|
|
894
894
|
prefix: i
|
|
895
895
|
}));
|
|
896
896
|
}), n;
|
|
897
|
-
},
|
|
897
|
+
}, kt = async ({ opf: e, opfBasePath: t, archive: n }) => {
|
|
898
898
|
let r = e.spineTocIdref;
|
|
899
899
|
if (r) {
|
|
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
|
|
903
|
+
if (r && !r.dir) return Ot(new a(await x(r)), { opfBasePath: t });
|
|
904
904
|
}
|
|
905
905
|
}
|
|
906
|
-
},
|
|
907
|
-
let n = t ?? await
|
|
908
|
-
if (n) return await
|
|
906
|
+
}, At = async (e, { opf: t } = {}) => {
|
|
907
|
+
let n = t ?? await X(e);
|
|
908
|
+
if (n) return await Et(n.opf, e) || await kt({
|
|
909
909
|
opf: n.opf,
|
|
910
910
|
opfBasePath: n.basePath,
|
|
911
911
|
archive: e
|
|
912
912
|
}) || [];
|
|
913
|
-
let r =
|
|
913
|
+
let r = xt(e);
|
|
914
914
|
return r.length === 0 ? void 0 : r;
|
|
915
|
-
},
|
|
915
|
+
}, jt = [
|
|
916
916
|
"metadata",
|
|
917
917
|
"readingOrder",
|
|
918
918
|
"toc"
|
|
@@ -923,34 +923,34 @@ var Qe = { renditionLayout: "renditionLayout" }, $e = (e) => D({
|
|
|
923
923
|
t.error(`resolveArchive: unable to read ${n}`, e);
|
|
924
924
|
return;
|
|
925
925
|
}
|
|
926
|
-
},
|
|
926
|
+
}, Mt = (e) => {
|
|
927
927
|
let t = (e) => e?.startsWith("audio/") === !0 || e?.startsWith("video/") === !0, n = e.filter((e) => e.renditionLayout === "pre-paginated" && !t(e.mediaType)).length;
|
|
928
928
|
return n > 0 ? n : void 0;
|
|
929
|
-
},
|
|
930
|
-
let n = new Set(t.include ??
|
|
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 $(() => X(e), "opf") : void 0, l = r || i || s, u = l ? await $(() => pe(e), "comicInfo") : void 0, d = l ? await $(() => E(e), "apple") : void 0, f = l ? await $(() => tt(e), "kobo") : void 0, p = r || s ? bt({
|
|
931
931
|
opf: c?.opf,
|
|
932
932
|
comicInfo: u,
|
|
933
933
|
apple: d,
|
|
934
934
|
kobo: f
|
|
935
|
-
}) : void 0, m = a || s ? await
|
|
936
|
-
if (s && p !== void 0 && m !== void 0 && p.renditionLayout === "reflowable" && m.every((e) => e.renditionLayout === "reflowable") && await
|
|
935
|
+
}) : void 0, m = a || s ? await Z(e, { opf: c }) : void 0;
|
|
936
|
+
if (s && p !== void 0 && m !== void 0 && p.renditionLayout === "reflowable" && m.every((e) => e.renditionLayout === "reflowable") && await at(e, m) && (p = {
|
|
937
937
|
...p,
|
|
938
938
|
renditionLayout: "pre-paginated"
|
|
939
939
|
}, m = m.map((e) => ({
|
|
940
940
|
...e,
|
|
941
941
|
renditionLayout: "pre-paginated"
|
|
942
942
|
}))), r && p !== void 0) {
|
|
943
|
-
let t = m ?? await
|
|
943
|
+
let t = m ?? await Z(e, { opf: c }), n = await et(e, {
|
|
944
944
|
opf: c,
|
|
945
945
|
readingOrder: t
|
|
946
|
-
}), r = p.numberOfPages ??
|
|
946
|
+
}), r = p.numberOfPages ?? Mt(t);
|
|
947
947
|
p = D({
|
|
948
948
|
...p,
|
|
949
949
|
cover: n,
|
|
950
950
|
numberOfPages: r
|
|
951
951
|
});
|
|
952
952
|
}
|
|
953
|
-
let h = o ? await $(() =>
|
|
953
|
+
let h = o ? await $(() => At(e, { opf: c }), "toc") : void 0, g = { version: Nt };
|
|
954
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
955
|
opf: c,
|
|
956
956
|
comicInfo: u,
|
|
@@ -959,6 +959,6 @@ var Qe = { renditionLayout: "renditionLayout" }, $e = (e) => D({
|
|
|
959
959
|
})), g;
|
|
960
960
|
};
|
|
961
961
|
//#endregion
|
|
962
|
-
export { v as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, k as COMIC_INFO_FILENAME,
|
|
962
|
+
export { v as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, k as COMIC_INFO_FILENAME, se as COMIC_INFO_KNOWN_FIELDS, M as COMIC_INFO_MANGA_VALUES, He as KOBO_DISPLAY_OPTIONS_FILENAME, ee as appleMetadataHomes, i as arrayBufferFileAccessors, r as blobFileAccessors, ge as comicInfoMetadataHomes, e as createArchive, ne as createArchiveFromArrayBufferList, n as createArchiveFromEntries, re as createArchiveFromText, ie as createArchiveFromUrls, w as getArchiveFileRecordByUri, j as getArchiveHasComicInfo, oe as getArchiveImageRecords, ke as getArchiveOpfInfo, ot as getSpineItemFilesFromArchive, ct as isArchiveEpub, fe as isComicInfoManga, C as isDirectoryRecord, S as isFileRecord, O as isImageRecord, nt as koboMetadataHomes, N as normalizeGtin, P as normalizeIsbn, lt as opfMetadataHomes, b as parseAppleDisplayOptionsXml, A as parseComicInfo, We as parseKoboXml, Ve as parseOpf, Q as parseW3cDtfDate, E as readArchiveApple, pe as readArchiveComicInfo, tt as readArchiveKobo, X as readArchiveOpf, x as readRecordAsText, at as readingOrderDocumentsAllHaveViewport, Pt as resolveArchive, et as resolveArchiveCover, yt as resolveArchiveMetadata, Z as resolveArchiveReadingOrder, At as resolveArchiveToc, bt as resolveMetadata, B as tokenizeXmlSpaceSeparatedList };
|
|
963
963
|
|
|
964
964
|
//# sourceMappingURL=index.js.map
|