@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.
- package/dist/index/index.cjs +1 -1
- package/dist/index/index.cjs.map +1 -1
- package/dist/index/index.js +199 -169
- package/dist/index/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index/index.js
CHANGED
|
@@ -144,39 +144,39 @@ var D = (e) => {
|
|
|
144
144
|
kind: "comicInfo",
|
|
145
145
|
...n
|
|
146
146
|
};
|
|
147
|
-
}, ue = j.toLowerCase(),
|
|
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
|
-
],
|
|
153
|
-
for (let t of
|
|
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
|
|
159
|
-
let t =
|
|
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
|
|
164
|
+
var pe = /* @__PURE__ */ new Set([
|
|
165
165
|
8,
|
|
166
166
|
12,
|
|
167
167
|
13,
|
|
168
168
|
14
|
|
169
|
-
]),
|
|
169
|
+
]), P = (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 || !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(
|
|
177
|
+
let r = t.match(me);
|
|
178
178
|
if (r) return r[0].toUpperCase();
|
|
179
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
235
|
-
let t =
|
|
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
|
-
},
|
|
240
|
-
let t =
|
|
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
|
-
},
|
|
245
|
-
let t =
|
|
244
|
+
}, _e = (e) => {
|
|
245
|
+
let t = I(e)?.toLowerCase();
|
|
246
246
|
if (t === "yes") return !0;
|
|
247
247
|
if (t === "no") return !1;
|
|
248
|
-
},
|
|
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
|
-
},
|
|
256
|
-
let t =
|
|
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
|
-
},
|
|
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
|
-
],
|
|
271
|
+
], xe = (e) => {
|
|
272
272
|
let t = /* @__PURE__ */ new Map();
|
|
273
|
-
for (let [n, r] of
|
|
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
|
-
},
|
|
282
|
-
let t =
|
|
281
|
+
}, Se = (e) => {
|
|
282
|
+
let t = I(e.Series);
|
|
283
283
|
if (t !== void 0) return D({
|
|
284
284
|
name: t,
|
|
285
|
-
position:
|
|
286
|
-
total:
|
|
285
|
+
position: z(e.Number),
|
|
286
|
+
total: R(e.Count)
|
|
287
287
|
});
|
|
288
|
-
},
|
|
289
|
-
let t =
|
|
288
|
+
}, Ce = (e) => {
|
|
289
|
+
let t = I(e.AlternateSeries);
|
|
290
290
|
if (t !== void 0) return D({
|
|
291
291
|
name: t,
|
|
292
|
-
position:
|
|
293
|
-
total:
|
|
292
|
+
position: z(e.AlternateNumber),
|
|
293
|
+
total: R(e.AlternateCount)
|
|
294
294
|
});
|
|
295
|
-
},
|
|
296
|
-
let t =
|
|
295
|
+
}, we = (e) => {
|
|
296
|
+
let t = L(e.StoryArc);
|
|
297
297
|
if (t.length === 0) return [];
|
|
298
|
-
let n =
|
|
298
|
+
let n = L(e.StoryArcNumber);
|
|
299
299
|
return t.map((e, t) => D({
|
|
300
300
|
name: e,
|
|
301
|
-
position:
|
|
301
|
+
position: z(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
|
+
}, 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:
|
|
315
|
-
mainCharacterOrTeam:
|
|
316
|
-
characters:
|
|
317
|
-
teams:
|
|
318
|
-
locations:
|
|
319
|
-
storyArcs:
|
|
320
|
-
alternateSeries:
|
|
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
|
-
},
|
|
324
|
-
let t =
|
|
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
|
-
},
|
|
330
|
-
let t = e.GTIN, n =
|
|
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:
|
|
333
|
-
description:
|
|
334
|
-
publisher:
|
|
335
|
-
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:
|
|
338
|
-
contributors:
|
|
339
|
-
published:
|
|
340
|
-
readingDirection:
|
|
341
|
-
numberOfPages:
|
|
342
|
-
gtin:
|
|
343
|
-
isbn:
|
|
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:
|
|
349
|
-
comic:
|
|
348
|
+
belongsTo: Ee(e),
|
|
349
|
+
comic: Te(e)
|
|
350
350
|
});
|
|
351
|
-
},
|
|
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
|
-
},
|
|
358
|
-
let t =
|
|
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
|
-
},
|
|
370
|
-
for (let n of e.children) if (
|
|
371
|
-
},
|
|
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)
|
|
373
|
+
for (let r of e.children) ke(r) && Oe(r.name, t) && n.push(r);
|
|
374
374
|
return n;
|
|
375
|
-
},
|
|
375
|
+
}, Ae = (e, t) => {
|
|
376
376
|
let n = [];
|
|
377
377
|
return e.eachChild((e) => {
|
|
378
|
-
if (
|
|
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
|
-
},
|
|
389
|
+
}, q = (e, t) => {
|
|
390
390
|
let n;
|
|
391
391
|
return e.eachChild((e) => {
|
|
392
|
-
if (n !== void 0 ||
|
|
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
|
-
},
|
|
396
|
+
}, J = (e, t) => {
|
|
397
397
|
let n = [];
|
|
398
398
|
return e.eachChild((e) => {
|
|
399
|
-
if (
|
|
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
|
-
},
|
|
403
|
+
}, je = (e) => {
|
|
404
404
|
let t;
|
|
405
405
|
return e.eachChild((e) => {
|
|
406
|
-
if (t !== void 0 ||
|
|
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
|
-
},
|
|
411
|
-
let n = (e) => e.mediaType?.toLowerCase().includes("image/") === !0, r = e.find((e) => n(e) ?
|
|
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 =
|
|
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
|
-
},
|
|
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
|
-
},
|
|
424
|
+
}, Ne = (e) => {
|
|
425
425
|
let t = [];
|
|
426
426
|
return e.eachChild((e) => {
|
|
427
|
-
if (
|
|
428
|
-
let n =
|
|
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
|
-
},
|
|
439
|
+
}, Pe = (e, t) => e.replace(/^#/, "") === t, Fe = (e, t) => {
|
|
440
440
|
let n = [];
|
|
441
441
|
return e.eachChild((e) => {
|
|
442
|
-
let r =
|
|
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 =
|
|
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
|
-
},
|
|
456
|
-
let n =
|
|
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
|
-
},
|
|
459
|
-
let t =
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
481
|
+
}, Re = (e) => {
|
|
482
482
|
let t = [], n = /* @__PURE__ */ new Map();
|
|
483
|
-
for (let r of
|
|
484
|
-
let e =
|
|
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
|
-
},
|
|
491
|
+
}, ze = (e, t) => {
|
|
492
492
|
let n = [];
|
|
493
|
-
for (let r of
|
|
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 =
|
|
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
|
-
},
|
|
513
|
-
let t = new a(e), n =
|
|
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 } =
|
|
516
|
-
c = e, r !== void 0 && (l =
|
|
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 =
|
|
520
|
-
let O =
|
|
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 =
|
|
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 } =
|
|
551
|
+
let { data: t, basePath: n } = H(e) || {};
|
|
552
552
|
if (!(!t || t.dir)) return {
|
|
553
|
-
opf:
|
|
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" &&
|
|
722
|
-
for (let t of e) if (
|
|
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
|
-
},
|
|
733
|
-
let t = e.roles.map((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
|
-
}),
|
|
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
|
-
},
|
|
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) =>
|
|
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:
|
|
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:
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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 =
|
|
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:
|
|
788
|
-
renditionSpread:
|
|
789
|
-
gtin:
|
|
790
|
-
isbn:
|
|
791
|
-
identifiers: e.identifiers.length > 0 ? e.identifiers.map((
|
|
792
|
-
value:
|
|
793
|
-
scheme: t,
|
|
794
|
-
unique:
|
|
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
|
-
},
|
|
800
|
-
let t = e.opf === void 0 ? void 0 :
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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() ||
|
|
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) =>
|
|
897
|
+
e && e.length > 0 && (n.contents = e.map((e) => Ot(e, { basePath: t })));
|
|
868
898
|
}
|
|
869
899
|
return n;
|
|
870
|
-
},
|
|
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(
|
|
903
|
+
n.push(Ot(e, { basePath: t }));
|
|
874
904
|
}), n;
|
|
875
|
-
},
|
|
876
|
-
let n = e.manifestItems.find(
|
|
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
|
|
909
|
+
if (e && !e.dir) return kt(new a(await x(e)), { basePath: d(e.uri) });
|
|
880
910
|
}
|
|
881
|
-
},
|
|
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) =>
|
|
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
|
-
},
|
|
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(
|
|
925
|
+
n.push(jt(e, {
|
|
896
926
|
basePath: t,
|
|
897
927
|
prefix: i
|
|
898
928
|
}));
|
|
899
929
|
}), n;
|
|
900
|
-
},
|
|
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
|
|
936
|
+
if (r && !r.dir) return Mt(new a(await x(r)), { basePath: d(r.uri) });
|
|
907
937
|
}
|
|
908
938
|
}
|
|
909
|
-
},
|
|
939
|
+
}, Pt = async (e, { opf: t } = {}) => {
|
|
910
940
|
let n = t ?? await Z(e);
|
|
911
|
-
if (n) return await
|
|
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 =
|
|
946
|
+
let r = Tt(e);
|
|
917
947
|
return r.length === 0 ? void 0 : r;
|
|
918
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
941
|
-
let n = new Set(t.include ??
|
|
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 ??
|
|
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 $(() =>
|
|
965
|
-
version:
|
|
966
|
-
unreadableSources:
|
|
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,
|
|
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
|