@prose-reader/archive-reader 1.359.0 → 1.360.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 +264 -255
- package/dist/index/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/metadata/opf/identifierScheme.d.ts +7 -0
- package/dist/metadata/opf/identifierScheme.test.d.ts +1 -0
- package/package.json +3 -3
package/dist/index/index.js
CHANGED
|
@@ -97,7 +97,35 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
|
|
|
97
97
|
data: t,
|
|
98
98
|
basePath: t?.uri.substring(0, t.uri.lastIndexOf("/")) || ""
|
|
99
99
|
};
|
|
100
|
-
}, O = (e) => e === void 0 || e.trim().length === 0 ? [] : e.trim().split(/\s+/).filter((e) => e.length > 0), k = (
|
|
100
|
+
}, O = (e) => e === void 0 || e.trim().length === 0 ? [] : e.trim().split(/\s+/).filter((e) => e.length > 0), k = Object.freeze([
|
|
101
|
+
"opf:scheme",
|
|
102
|
+
"opf:Scheme",
|
|
103
|
+
"scheme"
|
|
104
|
+
]), te = {
|
|
105
|
+
"02": "ISBN",
|
|
106
|
+
"03": "GTIN",
|
|
107
|
+
"04": "UPC",
|
|
108
|
+
"05": "ISMN",
|
|
109
|
+
"06": "DOI",
|
|
110
|
+
13: "LCCN",
|
|
111
|
+
14: "GTIN",
|
|
112
|
+
15: "ISBN",
|
|
113
|
+
22: "URN",
|
|
114
|
+
23: "OCLC",
|
|
115
|
+
24: "ISBN",
|
|
116
|
+
25: "ISMN",
|
|
117
|
+
26: "DOI",
|
|
118
|
+
34: "GTIN",
|
|
119
|
+
35: "ARK"
|
|
120
|
+
}, A = (e) => {
|
|
121
|
+
let t = e?.value?.trim();
|
|
122
|
+
if (!(t === void 0 || t.length === 0)) return e?.scheme?.trim().toLowerCase() === "onix:codelist5" ? te[t] ?? t : t;
|
|
123
|
+
}, ne = (e) => {
|
|
124
|
+
for (let t of k) {
|
|
125
|
+
let n = e[t];
|
|
126
|
+
if (n !== void 0) return n;
|
|
127
|
+
}
|
|
128
|
+
}, re = (e) => {
|
|
101
129
|
let t = O(e);
|
|
102
130
|
if (t.length === 0) return {};
|
|
103
131
|
let n;
|
|
@@ -109,19 +137,19 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
|
|
|
109
137
|
...t.includes("page-spread-left") ? { pageSpreadLeft: !0 } : {},
|
|
110
138
|
...t.includes("page-spread-right") ? { pageSpreadRight: !0 } : {}
|
|
111
139
|
};
|
|
112
|
-
},
|
|
113
|
-
for (let n of e.children) if (
|
|
140
|
+
}, j = (e) => e.includes(":") ? e.slice(e.lastIndexOf(":") + 1) : e, ie = (e, t) => j(e).toLowerCase() === t.toLowerCase(), ae = (e) => e.type === "element", M = (e, t) => {
|
|
141
|
+
for (let n of e.children) if (ae(n) && ie(n.name, t)) return n;
|
|
114
142
|
}, N = (e, t) => {
|
|
115
143
|
let n = [];
|
|
116
|
-
for (let r of e.children)
|
|
144
|
+
for (let r of e.children) ae(r) && ie(r.name, t) && n.push(r);
|
|
117
145
|
return n;
|
|
118
|
-
},
|
|
146
|
+
}, oe = (e, t) => {
|
|
119
147
|
let n = [];
|
|
120
148
|
return e.eachChild((e) => {
|
|
121
|
-
if (
|
|
149
|
+
if (j(e.name).toLowerCase() !== "identifier") return;
|
|
122
150
|
let r = e.val.trim();
|
|
123
151
|
if (r.length === 0) return;
|
|
124
|
-
let i = (e.attr
|
|
152
|
+
let i = ne(e.attr)?.trim(), a = e.attr.id?.trim(), o = a !== void 0 && a.length > 0 ? a : void 0;
|
|
125
153
|
n.push({
|
|
126
154
|
value: r,
|
|
127
155
|
...i !== void 0 && i.length > 0 ? { scheme: i } : {},
|
|
@@ -129,10 +157,10 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
|
|
|
129
157
|
...o !== void 0 && o === t ? { unique: !0 } : {}
|
|
130
158
|
});
|
|
131
159
|
}), n;
|
|
132
|
-
},
|
|
160
|
+
}, se = (e) => {
|
|
133
161
|
let t = [];
|
|
134
162
|
return e.eachChild((e) => {
|
|
135
|
-
if (
|
|
163
|
+
if (j(e.name).toLowerCase() !== "title") return;
|
|
136
164
|
let n = e.val.trim();
|
|
137
165
|
if (n.length === 0) return;
|
|
138
166
|
let r = e.attr.id?.trim();
|
|
@@ -144,29 +172,29 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
|
|
|
144
172
|
}, P = (e, t) => {
|
|
145
173
|
let n;
|
|
146
174
|
return e.eachChild((e) => {
|
|
147
|
-
if (n !== void 0 ||
|
|
175
|
+
if (n !== void 0 || j(e.name).toLowerCase() !== t.toLowerCase()) return;
|
|
148
176
|
let r = e.val.trim();
|
|
149
177
|
r.length > 0 && (n = r);
|
|
150
178
|
}), n;
|
|
151
|
-
},
|
|
179
|
+
}, ce = (e, t) => {
|
|
152
180
|
let n = [];
|
|
153
181
|
return e.eachChild((e) => {
|
|
154
|
-
if (
|
|
182
|
+
if (j(e.name).toLowerCase() !== t.toLowerCase()) return;
|
|
155
183
|
let r = e.val.trim();
|
|
156
184
|
r.length > 0 && n.push(r);
|
|
157
185
|
}), n;
|
|
158
|
-
},
|
|
186
|
+
}, le = (e) => {
|
|
159
187
|
let t;
|
|
160
188
|
return e.eachChild((e) => {
|
|
161
|
-
if (t !== void 0 ||
|
|
189
|
+
if (t !== void 0 || j(e.name).toLowerCase() !== "meta" || e.attr.name?.toLowerCase() !== "cover") return;
|
|
162
190
|
let n = e.attr.content?.trim();
|
|
163
191
|
n !== void 0 && n.length > 0 && (t = n);
|
|
164
192
|
}), t;
|
|
165
|
-
},
|
|
193
|
+
}, ue = ({ manifestItems: e, metadataEl: t }) => {
|
|
166
194
|
let n = (e) => e.mediaType?.toLowerCase().includes("image/") === !0, r = e.find((e) => n(e) ? O(e.properties).includes("cover-image") : !1);
|
|
167
195
|
if (r !== void 0) return r.href;
|
|
168
196
|
if (t !== void 0) {
|
|
169
|
-
let r =
|
|
197
|
+
let r = le(t);
|
|
170
198
|
if (r !== void 0) {
|
|
171
199
|
let t = e.find((e) => e.id === r && n(e));
|
|
172
200
|
if (t !== void 0) return t.href;
|
|
@@ -176,10 +204,10 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
|
|
|
176
204
|
}, F = (e, t) => {
|
|
177
205
|
let n = e.attr[t]?.trim();
|
|
178
206
|
return n !== void 0 && n.length > 0 ? n : void 0;
|
|
179
|
-
},
|
|
207
|
+
}, de = (e) => {
|
|
180
208
|
let t = [];
|
|
181
209
|
return e.eachChild((e) => {
|
|
182
|
-
if (
|
|
210
|
+
if (j(e.name).toLowerCase() !== "meta") return;
|
|
183
211
|
let n = F(e, "property"), r = F(e, "refines"), i = F(e, "scheme"), a = F(e, "id"), o = F(e, "name"), s = F(e, "content"), c = e.val.trim(), l = c.length > 0 ? c : void 0, u = {
|
|
184
212
|
...n === void 0 ? {} : { property: n },
|
|
185
213
|
...r === void 0 ? {} : { refines: r },
|
|
@@ -191,14 +219,14 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
|
|
|
191
219
|
};
|
|
192
220
|
Object.keys(u).length !== 0 && t.push(u);
|
|
193
221
|
}), t;
|
|
194
|
-
},
|
|
222
|
+
}, fe = (e, t) => e.replace(/^#/, "") === t, pe = (e, t) => {
|
|
195
223
|
let n = [];
|
|
196
224
|
return e.eachChild((e) => {
|
|
197
|
-
let r =
|
|
225
|
+
let r = j(e.name).toLowerCase();
|
|
198
226
|
if (r !== "creator" && r !== "contributor") return;
|
|
199
227
|
let i = e.val.trim();
|
|
200
228
|
if (i.length === 0) return;
|
|
201
|
-
let a = F(e, "id"), o = (e) => a === void 0 ? [] : t.flatMap((t) => t.refines !== void 0 &&
|
|
229
|
+
let a = F(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 = F(e, "opf:role") ?? F(e, "role"), c = [...s === void 0 ? [] : [s], ...o("role")], l = F(e, "opf:file-as") ?? F(e, "file-as") ?? o("file-as")[0];
|
|
202
230
|
n.push({
|
|
203
231
|
name: i,
|
|
204
232
|
source: r,
|
|
@@ -210,7 +238,7 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
|
|
|
210
238
|
}, I = (e, t) => {
|
|
211
239
|
let n = N(e, "meta").find((e) => e.attr.property === t)?.val;
|
|
212
240
|
if (!(n === void 0 || n.trim().length === 0)) return n;
|
|
213
|
-
},
|
|
241
|
+
}, me = (e) => {
|
|
214
242
|
let t = M(e, "guide");
|
|
215
243
|
if (t === void 0) return [];
|
|
216
244
|
let n = [];
|
|
@@ -223,7 +251,7 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
|
|
|
223
251
|
});
|
|
224
252
|
}
|
|
225
253
|
return n;
|
|
226
|
-
},
|
|
254
|
+
}, he = (e) => {
|
|
227
255
|
let t = e.attr.id, n = e.attr.href;
|
|
228
256
|
if (t === void 0 || t.length === 0 || n === void 0 || n.length === 0) return;
|
|
229
257
|
let r = e.attr["media-type"], i = e.attr.properties?.trim();
|
|
@@ -233,24 +261,24 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
|
|
|
233
261
|
...r !== void 0 && r.length > 0 ? { mediaType: r } : {},
|
|
234
262
|
...i !== void 0 && i.length > 0 ? { properties: i } : {}
|
|
235
263
|
};
|
|
236
|
-
},
|
|
264
|
+
}, ge = (e) => {
|
|
237
265
|
let t = [], n = /* @__PURE__ */ new Map();
|
|
238
266
|
for (let r of N(e, "item")) {
|
|
239
|
-
let e =
|
|
267
|
+
let e = he(r);
|
|
240
268
|
e !== void 0 && (t.push(e), n.set(e.id, e));
|
|
241
269
|
}
|
|
242
270
|
return {
|
|
243
271
|
items: t,
|
|
244
272
|
byId: n
|
|
245
273
|
};
|
|
246
|
-
},
|
|
274
|
+
}, _e = (e, t) => {
|
|
247
275
|
let n = [];
|
|
248
276
|
for (let r of N(t, "itemref")) {
|
|
249
277
|
let t = r.attr.idref;
|
|
250
278
|
if (t === void 0 || t.trim().length === 0) continue;
|
|
251
279
|
let i = e.get(t);
|
|
252
280
|
if (i === void 0) continue;
|
|
253
|
-
let a =
|
|
281
|
+
let a = re(r.attr.properties);
|
|
254
282
|
n.push({
|
|
255
283
|
idref: t,
|
|
256
284
|
id: i.id,
|
|
@@ -264,18 +292,18 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
|
|
|
264
292
|
});
|
|
265
293
|
}
|
|
266
294
|
return n;
|
|
267
|
-
},
|
|
295
|
+
}, ve = (e) => {
|
|
268
296
|
let t = new h(e), n = M(t, "manifest"), r = M(t, "spine"), i = M(t, "metadata"), a = t.attr["unique-identifier"]?.trim(), o = a !== void 0 && a.length > 0 ? a : void 0, s = [], c = [];
|
|
269
297
|
if (n !== void 0) {
|
|
270
|
-
let { items: e, byId: t } =
|
|
271
|
-
s = e, r !== void 0 && (c =
|
|
298
|
+
let { items: e, byId: t } = ge(n);
|
|
299
|
+
s = e, r !== void 0 && (c = _e(t, r));
|
|
272
300
|
}
|
|
273
301
|
let l = r?.attr["page-progression-direction"], u = l !== void 0 && l.trim().length > 0 ? l : void 0, d = r?.attr.toc, f = d !== void 0 && d.trim().length > 0 ? d.trim() : void 0, p = [], m, g, _, v, y = [], b = [], x = [], ee = [], S, C, w, T = [], E = [];
|
|
274
|
-
i !== void 0 && (p =
|
|
275
|
-
let D =
|
|
302
|
+
i !== void 0 && (p = se(i), m = P(i, "publisher"), g = P(i, "description"), _ = P(i, "rights"), v = P(i, "date"), y = ce(i, "creator"), x = ce(i, "language"), ee = ce(i, "subject"), S = I(i, "rendition:layout"), C = I(i, "rendition:flow"), w = I(i, "rendition:spread"), T = de(i), b = pe(i, T), E.push(...oe(i, o)));
|
|
303
|
+
let D = ue({
|
|
276
304
|
manifestItems: s,
|
|
277
305
|
metadataEl: i
|
|
278
|
-
}), O =
|
|
306
|
+
}), O = me(t);
|
|
279
307
|
return {
|
|
280
308
|
kind: "opf",
|
|
281
309
|
manifestItems: s,
|
|
@@ -305,27 +333,27 @@ var v = async (e, t = {}) => n(e, (e) => e.isDir ? {
|
|
|
305
333
|
async function L(e) {
|
|
306
334
|
let { data: t, basePath: n } = D(e) || {};
|
|
307
335
|
if (!(!t || t.dir)) return {
|
|
308
|
-
opf:
|
|
336
|
+
opf: ve(await E(t)),
|
|
309
337
|
basePath: n
|
|
310
338
|
};
|
|
311
339
|
}
|
|
312
340
|
//#endregion
|
|
313
341
|
//#region src/metadata/apple/parse.ts
|
|
314
|
-
var R = "com.apple.ibooks.display-options.xml",
|
|
342
|
+
var R = "com.apple.ibooks.display-options.xml", ye = (e) => e.childrenNamed("option").map((e) => ({
|
|
315
343
|
name: e.attr?.name,
|
|
316
344
|
value: e.val
|
|
317
|
-
})),
|
|
345
|
+
})), be = (e) => {
|
|
318
346
|
let t = new h(e);
|
|
319
347
|
if (t.name?.toLowerCase() !== "display_options") return { kind: "apple" };
|
|
320
348
|
let n = t.childNamed("platform");
|
|
321
349
|
return {
|
|
322
350
|
kind: "apple",
|
|
323
|
-
displayOptions: { ...n === void 0 ? {} : { platform: { options:
|
|
351
|
+
displayOptions: { ...n === void 0 ? {} : { platform: { options: ye(n) } } }
|
|
324
352
|
};
|
|
325
|
-
}, z = "ComicInfo.xml",
|
|
353
|
+
}, z = "ComicInfo.xml", xe = /* @__PURE__ */ "AgeRating.AlternateCount.AlternateNumber.AlternateSeries.BlackAndWhite.Characters.Colorist.CommunityRating.Count.CoverArtist.Day.Editor.Format.Genre.GTIN.Imprint.Inker.LanguageISO.Letterer.Locations.MainCharacterOrTeam.Manga.Month.Notes.Number.PageCount.Penciller.Publisher.Review.ScanInformation.Series.SeriesGroup.StoryArc.StoryArcNumber.Summary.Tags.Teams.Title.Translator.Volume.Web.Writer.Year".split("."), Se = /* @__PURE__ */ new Set(["Pages", "ComicInfo"]), Ce = (e) => e.children.some((e) => e.type === "element"), we = (e) => {
|
|
326
354
|
let t = e.val.trim();
|
|
327
355
|
return t.length > 0 ? t : void 0;
|
|
328
|
-
},
|
|
356
|
+
}, Te = (e) => {
|
|
329
357
|
let t;
|
|
330
358
|
try {
|
|
331
359
|
t = new h(e);
|
|
@@ -335,28 +363,28 @@ var R = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("opt
|
|
|
335
363
|
}
|
|
336
364
|
let n = {};
|
|
337
365
|
return t.eachChild((e) => {
|
|
338
|
-
if (e.type !== "element" ||
|
|
339
|
-
let t =
|
|
366
|
+
if (e.type !== "element" || Se.has(e.name) || Ce(e)) return;
|
|
367
|
+
let t = we(e);
|
|
340
368
|
t !== void 0 && n[e.name] === void 0 && (n[e.name] = t);
|
|
341
369
|
}), {
|
|
342
370
|
kind: "comicInfo",
|
|
343
371
|
...n
|
|
344
372
|
};
|
|
345
|
-
},
|
|
373
|
+
}, Ee = "com.kobobooks.display-options.xml", De = (e) => {
|
|
346
374
|
let t = e.childNamed("platform");
|
|
347
375
|
if (!t) return {};
|
|
348
376
|
for (let e of t.childrenNamed("option")) if (e.attr?.name === "fixed-layout") return e.val.trim().toLowerCase() === "true" ? { renditionLayout: "pre-paginated" } : {};
|
|
349
377
|
return {};
|
|
350
|
-
},
|
|
378
|
+
}, Oe = (e) => {
|
|
351
379
|
let t = new h(e);
|
|
352
380
|
return t.name?.toLowerCase() === "display_options" ? {
|
|
353
381
|
kind: "kobo",
|
|
354
|
-
...
|
|
382
|
+
...De(t)
|
|
355
383
|
} : { kind: "kobo" };
|
|
356
384
|
}, B = (e) => {
|
|
357
385
|
let t = Object.entries(e).filter(([, e]) => e !== void 0);
|
|
358
386
|
return Object.fromEntries(t);
|
|
359
|
-
},
|
|
387
|
+
}, ke = (e) => {
|
|
360
388
|
let t = [];
|
|
361
389
|
for (let n of e.split("/")) if (n !== ".") {
|
|
362
390
|
if (n === "..") {
|
|
@@ -366,12 +394,12 @@ var R = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("opt
|
|
|
366
394
|
t.push(n);
|
|
367
395
|
}
|
|
368
396
|
return t.join("/");
|
|
369
|
-
},
|
|
397
|
+
}, Ae = (e, t) => /^https?:\/\//.test(e) ? e : ke(t ? `${t}/${e}` : e), je = (e) => {
|
|
370
398
|
let t = e?.trim().toLowerCase();
|
|
371
399
|
return t === "reflowable" || t === "pre-paginated" ? t : void 0;
|
|
372
|
-
},
|
|
373
|
-
let r =
|
|
374
|
-
let r =
|
|
400
|
+
}, Me = (e, { opf: t, basePath: n }) => {
|
|
401
|
+
let r = je(t.renditionLayoutMeta), i = t.spineRows.map((t) => {
|
|
402
|
+
let r = Ae(t.href, n);
|
|
375
403
|
return {
|
|
376
404
|
row: t,
|
|
377
405
|
uri: r,
|
|
@@ -389,11 +417,11 @@ var R = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("opt
|
|
|
389
417
|
pageSpreadRight: e.pageSpreadRight,
|
|
390
418
|
progressionWeight: a > 0 ? (i?.size ?? 0) / a : 1 / t.spineRows.length
|
|
391
419
|
}));
|
|
392
|
-
},
|
|
420
|
+
}, Ne = z.toLowerCase(), Pe = R.toLowerCase(), Fe = (e) => {
|
|
393
421
|
let t = e.basename.toLowerCase();
|
|
394
|
-
return t ===
|
|
395
|
-
},
|
|
396
|
-
let t = e.records.filter(x).filter((e) => !
|
|
422
|
+
return t === Ne || t === Pe || e.uri.endsWith("com.kobobooks.display-options.xml") || t.endsWith(".db");
|
|
423
|
+
}, Ie = (e) => {
|
|
424
|
+
let t = e.records.filter(x).filter((e) => !Fe(e));
|
|
397
425
|
return t.map((e) => {
|
|
398
426
|
let n = f(e.encodingFormat ?? "") || o(e.basename);
|
|
399
427
|
return B({
|
|
@@ -406,17 +434,17 @@ var R = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("opt
|
|
|
406
434
|
});
|
|
407
435
|
}, V = async (e, { opf: t } = {}) => {
|
|
408
436
|
let n = t ?? await L(e).catch(() => void 0);
|
|
409
|
-
return n ?
|
|
410
|
-
},
|
|
437
|
+
return n ? Me(e, n) : Ie(e);
|
|
438
|
+
}, Le = (e, t) => {
|
|
411
439
|
let n = S(e, t);
|
|
412
440
|
if (n !== void 0) return f(n.encodingFormat ?? "") || o(n.basename);
|
|
413
|
-
},
|
|
441
|
+
}, Re = async (e, { opf: t, readingOrder: n } = {}) => {
|
|
414
442
|
let r = t ?? await L(e).catch(() => void 0);
|
|
415
443
|
if (r !== void 0 && r.opf.coverHref !== void 0) {
|
|
416
|
-
let t =
|
|
444
|
+
let t = Ae(r.opf.coverHref, r.basePath);
|
|
417
445
|
return B({
|
|
418
446
|
uri: t,
|
|
419
|
-
mediaType:
|
|
447
|
+
mediaType: Le(e, t),
|
|
420
448
|
confidence: "derived"
|
|
421
449
|
});
|
|
422
450
|
}
|
|
@@ -426,10 +454,10 @@ var R = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("opt
|
|
|
426
454
|
mediaType: i.mediaType,
|
|
427
455
|
confidence: "assumed"
|
|
428
456
|
});
|
|
429
|
-
},
|
|
457
|
+
}, ze = (e) => {
|
|
430
458
|
let t = e.descendantWithPath("head")?.childrenNamed("meta").find((e) => e.attr.name === "viewport");
|
|
431
459
|
return !!(t && t.attr.name === "viewport");
|
|
432
|
-
},
|
|
460
|
+
}, Be = async (e, n) => {
|
|
433
461
|
if (n.length === 0) return !1;
|
|
434
462
|
for (let r of n) {
|
|
435
463
|
if (!d({
|
|
@@ -439,47 +467,47 @@ var R = "com.apple.ibooks.display-options.xml", he = (e) => e.childrenNamed("opt
|
|
|
439
467
|
let n = S(e, r.uri);
|
|
440
468
|
if (!n || !x(n)) return !1;
|
|
441
469
|
try {
|
|
442
|
-
if (!
|
|
470
|
+
if (!ze(new h(await E(n)))) return !1;
|
|
443
471
|
} catch (e) {
|
|
444
472
|
return t.error(`layout scan: unable to inspect ${r.uri}`, e), !1;
|
|
445
473
|
}
|
|
446
474
|
}
|
|
447
475
|
return !0;
|
|
448
|
-
},
|
|
449
|
-
async function
|
|
450
|
-
let t = e.records.find((e) => x(e) && e.basename.toLowerCase() ===
|
|
451
|
-
if (t) return
|
|
476
|
+
}, Ve = R.toLowerCase();
|
|
477
|
+
async function He(e) {
|
|
478
|
+
let t = e.records.find((e) => x(e) && e.basename.toLowerCase() === Ve);
|
|
479
|
+
if (t) return be(await E(t));
|
|
452
480
|
}
|
|
453
481
|
//#endregion
|
|
454
482
|
//#region src/metadata/comicInfo/getArchiveHasComicInfo.ts
|
|
455
|
-
var
|
|
483
|
+
var Ue = z.toLowerCase(), We = (e) => e.records.find((e) => x(e) && e.basename.toLowerCase() === Ue), Ge = [
|
|
456
484
|
"Unknown",
|
|
457
485
|
"No",
|
|
458
486
|
"Yes",
|
|
459
487
|
"YesAndRightToLeft"
|
|
460
|
-
],
|
|
461
|
-
for (let t of
|
|
488
|
+
], Ke = (e) => {
|
|
489
|
+
for (let t of Ge) if (t === e) return !0;
|
|
462
490
|
return !1;
|
|
463
491
|
};
|
|
464
492
|
//#endregion
|
|
465
493
|
//#region src/metadata/comicInfo/readArchiveComicInfo.ts
|
|
466
|
-
async function
|
|
467
|
-
let t =
|
|
468
|
-
if (t) return
|
|
494
|
+
async function qe(e) {
|
|
495
|
+
let t = We(e);
|
|
496
|
+
if (t) return Te(await E(t));
|
|
469
497
|
}
|
|
470
498
|
//#endregion
|
|
471
499
|
//#region src/metadata/kobo/readArchiveKobo.ts
|
|
472
|
-
async function
|
|
500
|
+
async function Je(e) {
|
|
473
501
|
let n = e.records.filter((e) => x(e) && e.uri.endsWith("com.kobobooks.display-options.xml"));
|
|
474
502
|
if (n.length === 0) return;
|
|
475
503
|
let r;
|
|
476
504
|
for (let e of n) {
|
|
477
505
|
let n = await E(e);
|
|
478
506
|
try {
|
|
479
|
-
let { renditionLayout: e } =
|
|
507
|
+
let { renditionLayout: e } = Oe(n);
|
|
480
508
|
e && (r = e);
|
|
481
509
|
} catch (n) {
|
|
482
|
-
t.error(`Unable to parse ${
|
|
510
|
+
t.error(`Unable to parse ${Ee} (${e.uri})`, n);
|
|
483
511
|
}
|
|
484
512
|
}
|
|
485
513
|
return {
|
|
@@ -489,11 +517,11 @@ async function We(e) {
|
|
|
489
517
|
}
|
|
490
518
|
//#endregion
|
|
491
519
|
//#region src/metadata/opf/getSpineItemFilesFromArchive.ts
|
|
492
|
-
var
|
|
520
|
+
var Ye = async ({ archive: e, archiveOpf: t }) => {
|
|
493
521
|
if (!t) return [];
|
|
494
522
|
let { opf: n, basePath: r } = t, { spineRows: i } = n;
|
|
495
523
|
return e.records.filter((e) => i.find((t) => r ? `${r}/${t.href}` === e.uri : `${t.href}` === e.uri));
|
|
496
|
-
},
|
|
524
|
+
}, Xe = (e) => e.toLowerCase().endsWith(".opf"), Ze = (e) => e.records.some((e) => !e.dir && (Xe(e.basename) || Xe(e.uri))), Qe = (e) => {
|
|
497
525
|
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 = B({
|
|
498
526
|
fixedLayout: r,
|
|
499
527
|
options: t !== void 0 && t.length > 0 ? t.map(({ name: e, value: t }) => B({
|
|
@@ -505,7 +533,7 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
505
533
|
renditionLayout: r === !0 ? "pre-paginated" : void 0,
|
|
506
534
|
apple: Object.keys(i).length > 0 ? i : void 0
|
|
507
535
|
});
|
|
508
|
-
},
|
|
536
|
+
}, $e = (e) => {
|
|
509
537
|
switch (e.Manga) {
|
|
510
538
|
case "YesAndRightToLeft": return "rtl";
|
|
511
539
|
case "Yes":
|
|
@@ -526,25 +554,25 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
526
554
|
if (t === void 0 || !/^\d+(\.\d+)?$/.test(t)) return;
|
|
527
555
|
let n = Number.parseFloat(t);
|
|
528
556
|
return Number.isFinite(n) ? n : void 0;
|
|
529
|
-
},
|
|
557
|
+
}, et = (e) => {
|
|
530
558
|
let t = H(e)?.toLowerCase();
|
|
531
559
|
if (t === "yes") return !0;
|
|
532
560
|
if (t === "no") return !1;
|
|
533
|
-
},
|
|
561
|
+
}, tt = (e) => {
|
|
534
562
|
switch (e.Manga) {
|
|
535
563
|
case "Yes":
|
|
536
564
|
case "YesAndRightToLeft": return !0;
|
|
537
565
|
case "No": return !1;
|
|
538
566
|
default: return;
|
|
539
567
|
}
|
|
540
|
-
},
|
|
568
|
+
}, nt = (e) => {
|
|
541
569
|
let t = W(e.Year), n = W(e.Month), r = W(e.Day);
|
|
542
570
|
if (!(t === void 0 && n === void 0 && r === void 0)) return {
|
|
543
571
|
...t === void 0 ? {} : { year: t },
|
|
544
572
|
...n === void 0 ? {} : { month: n },
|
|
545
573
|
...r === void 0 ? {} : { day: r }
|
|
546
574
|
};
|
|
547
|
-
},
|
|
575
|
+
}, rt = [
|
|
548
576
|
["Writer", "author"],
|
|
549
577
|
["Penciller", "penciler"],
|
|
550
578
|
["Inker", "inker"],
|
|
@@ -553,9 +581,9 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
553
581
|
["CoverArtist", "coverArtist"],
|
|
554
582
|
["Editor", "editor"],
|
|
555
583
|
["Translator", "translator"]
|
|
556
|
-
],
|
|
584
|
+
], it = (e) => {
|
|
557
585
|
let t = /* @__PURE__ */ new Map();
|
|
558
|
-
for (let [n, r] of
|
|
586
|
+
for (let [n, r] of rt) for (let i of U(e[n])) {
|
|
559
587
|
let e = t.get(i);
|
|
560
588
|
e ? e.roles.includes(r) || e.roles.push(r) : t.set(i, {
|
|
561
589
|
name: i,
|
|
@@ -563,21 +591,21 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
563
591
|
});
|
|
564
592
|
}
|
|
565
593
|
return [...t.values()];
|
|
566
|
-
},
|
|
594
|
+
}, at = (e) => {
|
|
567
595
|
let t = B({
|
|
568
596
|
name: H(e.Series),
|
|
569
597
|
position: G(e.Number),
|
|
570
598
|
total: W(e.Count)
|
|
571
599
|
});
|
|
572
600
|
return Object.keys(t).length > 0 ? t : void 0;
|
|
573
|
-
},
|
|
601
|
+
}, ot = (e) => {
|
|
574
602
|
let t = H(e.AlternateSeries);
|
|
575
603
|
if (t !== void 0) return B({
|
|
576
604
|
name: t,
|
|
577
605
|
position: G(e.AlternateNumber),
|
|
578
606
|
total: W(e.AlternateCount)
|
|
579
607
|
});
|
|
580
|
-
},
|
|
608
|
+
}, st = (e) => {
|
|
581
609
|
let t = U(e.StoryArc);
|
|
582
610
|
if (t.length === 0) return [];
|
|
583
611
|
let n = U(e.StoryArcNumber);
|
|
@@ -585,20 +613,20 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
585
613
|
name: e,
|
|
586
614
|
position: G(n[t])
|
|
587
615
|
}));
|
|
588
|
-
}, K = (e) => e.length > 0 ? e : void 0,
|
|
616
|
+
}, K = (e) => e.length > 0 ? e : void 0, ct = (e) => (e.Web ?? "").split(/\s+/).filter((e) => e.length > 0), lt = (e) => {
|
|
589
617
|
try {
|
|
590
618
|
let t = new URL(e);
|
|
591
619
|
return (t.protocol === "http:" || t.protocol === "https:") && t.hostname.length > 0;
|
|
592
620
|
} catch {
|
|
593
621
|
return !1;
|
|
594
622
|
}
|
|
595
|
-
},
|
|
623
|
+
}, ut = (e) => e.filter((e, t, n) => lt(e) && n.indexOf(e) === t).map((e) => ({
|
|
596
624
|
value: e,
|
|
597
625
|
scheme: "URL"
|
|
598
|
-
})),
|
|
626
|
+
})), dt = (e, t) => {
|
|
599
627
|
let n = B({
|
|
600
|
-
manga:
|
|
601
|
-
blackAndWhite:
|
|
628
|
+
manga: tt(e),
|
|
629
|
+
blackAndWhite: et(e.BlackAndWhite),
|
|
602
630
|
volume: W(e.Volume),
|
|
603
631
|
format: H(e.Format),
|
|
604
632
|
ageRating: H(e.AgeRating),
|
|
@@ -610,25 +638,25 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
610
638
|
characters: K(U(e.Characters)),
|
|
611
639
|
teams: K(U(e.Teams)),
|
|
612
640
|
locations: K(U(e.Locations)),
|
|
613
|
-
storyArcs: K(
|
|
614
|
-
alternateSeries:
|
|
641
|
+
storyArcs: K(st(e)),
|
|
642
|
+
alternateSeries: ot(e)
|
|
615
643
|
});
|
|
616
644
|
return Object.keys(n).length > 0 ? n : void 0;
|
|
617
|
-
},
|
|
645
|
+
}, ft = (e) => {
|
|
618
646
|
let t = G(e.CommunityRating);
|
|
619
647
|
return t !== void 0 && t <= 5 ? { value: t } : void 0;
|
|
620
|
-
},
|
|
621
|
-
let t =
|
|
648
|
+
}, pt = (e) => {
|
|
649
|
+
let t = at(e), n = K(U(e.SeriesGroup).map((e) => ({ name: e })));
|
|
622
650
|
if (!(t === void 0 && n === void 0)) return B({
|
|
623
651
|
series: t === void 0 ? void 0 : [t],
|
|
624
652
|
collection: n
|
|
625
653
|
});
|
|
626
|
-
},
|
|
627
|
-
let t = e.GTIN, n = H(t), r =
|
|
654
|
+
}, mt = (e) => {
|
|
655
|
+
let t = e.GTIN, n = H(t), r = ct(e), i = [...n === void 0 ? [] : [{
|
|
628
656
|
value: n,
|
|
629
657
|
scheme: "GTIN"
|
|
630
|
-
}], ...
|
|
631
|
-
date:
|
|
658
|
+
}], ...ut(r)], a = H(e.LanguageISO), o = [...U(e.Genre), ...U(e.Tags)], s = B({
|
|
659
|
+
date: nt(e),
|
|
632
660
|
publisher: H(e.Publisher),
|
|
633
661
|
imprint: H(e.Imprint)
|
|
634
662
|
}), c = H(e.Title);
|
|
@@ -638,35 +666,35 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
638
666
|
publication: s.date !== void 0 || s.publisher !== void 0 || s.imprint !== void 0 ? { edition: s } : void 0,
|
|
639
667
|
languages: a === void 0 ? void 0 : [a],
|
|
640
668
|
subjects: K(o),
|
|
641
|
-
contributors: K(
|
|
642
|
-
readingDirection:
|
|
669
|
+
contributors: K(it(e)),
|
|
670
|
+
readingDirection: $e(e),
|
|
643
671
|
numberOfPages: W(e.PageCount),
|
|
644
|
-
aggregateRating:
|
|
672
|
+
aggregateRating: ft(e),
|
|
645
673
|
identifiers: K(i),
|
|
646
|
-
belongsTo:
|
|
647
|
-
comicInfo:
|
|
674
|
+
belongsTo: pt(e),
|
|
675
|
+
comicInfo: dt(e, r)
|
|
648
676
|
});
|
|
649
|
-
},
|
|
677
|
+
}, ht = (e) => B({
|
|
650
678
|
renditionLayout: e.renditionLayout,
|
|
651
679
|
kobo: e.renditionLayout === void 0 ? void 0 : { fixedLayout: e.renditionLayout === "pre-paginated" }
|
|
652
|
-
}),
|
|
680
|
+
}), gt = /[0-9Xx]+/g, _t = /^(?:97[89])?\d{9}[\dXx]$/, vt = (e) => {
|
|
653
681
|
if (e == null) return;
|
|
654
682
|
let t = String(e).trim().replace(/^urn:isbn:/i, "").replace(/^isbn[:\s-]*/i, ""), n = t.replace(/[^0-9Xx]/g, "");
|
|
655
683
|
if (n.length === 10 || n.length === 13) return n.toUpperCase();
|
|
656
|
-
for (let e of t.match(
|
|
657
|
-
},
|
|
658
|
-
let t =
|
|
684
|
+
for (let e of t.match(gt) ?? []) if (_t.test(e)) return e.toUpperCase();
|
|
685
|
+
}, yt = (e) => {
|
|
686
|
+
let t = vt(e);
|
|
659
687
|
if (t !== void 0) return t.length === 10 || /^97[89]/.test(t) ? t : void 0;
|
|
660
|
-
},
|
|
688
|
+
}, bt = /* @__PURE__ */ new Set([
|
|
661
689
|
8,
|
|
662
690
|
12,
|
|
663
691
|
13,
|
|
664
692
|
14
|
|
665
|
-
]),
|
|
693
|
+
]), xt = (e) => {
|
|
666
694
|
if (e == null) return;
|
|
667
695
|
let t = String(e).replace(/\D/g, "");
|
|
668
|
-
if (!(t.length === 0 || !
|
|
669
|
-
},
|
|
696
|
+
if (!(t.length === 0 || !bt.has(t.length))) return t;
|
|
697
|
+
}, St = new Map(Object.entries({
|
|
670
698
|
isbn: "ISBN",
|
|
671
699
|
gtin: "GTIN",
|
|
672
700
|
doi: "DOI",
|
|
@@ -677,8 +705,8 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
677
705
|
unknown: "Unknown"
|
|
678
706
|
})), q = (e) => {
|
|
679
707
|
let t = e.trim();
|
|
680
|
-
return
|
|
681
|
-
},
|
|
708
|
+
return St.get(t.toLowerCase()) ?? t;
|
|
709
|
+
}, Ct = (e) => {
|
|
682
710
|
if (e === void 0) return;
|
|
683
711
|
let t = e.trim().match(/^(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?/);
|
|
684
712
|
if (t === null) return;
|
|
@@ -688,14 +716,14 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
688
716
|
...r === void 0 ? {} : { month: Number.parseInt(r, 10) },
|
|
689
717
|
...i === void 0 ? {} : { day: Number.parseInt(i, 10) }
|
|
690
718
|
};
|
|
691
|
-
},
|
|
719
|
+
}, wt = (e) => {
|
|
692
720
|
let t = e.trim();
|
|
693
721
|
if (/^https?:\/\//i.test(t)) try {
|
|
694
722
|
let e = new URL(t);
|
|
695
723
|
if ((e.protocol === "http:" || e.protocol === "https:") && e.hostname.length > 0) return "URL";
|
|
696
724
|
} catch {}
|
|
697
|
-
return
|
|
698
|
-
},
|
|
725
|
+
return yt(t) === void 0 ? xt(t) === void 0 ? "Unknown" : "GTIN" : "ISBN";
|
|
726
|
+
}, Tt = {
|
|
699
727
|
art: "artist",
|
|
700
728
|
aut: "author",
|
|
701
729
|
clr: "colorist",
|
|
@@ -704,72 +732,53 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
704
732
|
ill: "illustrator",
|
|
705
733
|
nrt: "narrator",
|
|
706
734
|
trl: "translator"
|
|
707
|
-
},
|
|
708
|
-
let t = e.roles.map((e) =>
|
|
735
|
+
}, Et = (e) => e.map((e) => {
|
|
736
|
+
let t = e.roles.map((e) => Tt[e.trim().toLowerCase()] ?? e);
|
|
709
737
|
return B({
|
|
710
738
|
name: e.name,
|
|
711
739
|
roles: t.length > 0 ? t : [e.source === "creator" ? "author" : "contributor"],
|
|
712
740
|
sortAs: e.fileAs
|
|
713
741
|
});
|
|
714
|
-
}), J = (e, t) => e.refines !== void 0 && e.refines.replace(/^#/, "") === t,
|
|
715
|
-
"02": "ISBN",
|
|
716
|
-
"03": "GTIN",
|
|
717
|
-
"04": "UPC",
|
|
718
|
-
"05": "ISMN",
|
|
719
|
-
"06": "DOI",
|
|
720
|
-
13: "LCCN",
|
|
721
|
-
14: "GTIN",
|
|
722
|
-
15: "ISBN",
|
|
723
|
-
22: "URN",
|
|
724
|
-
23: "OCLC",
|
|
725
|
-
24: "ISBN",
|
|
726
|
-
25: "ISMN",
|
|
727
|
-
26: "DOI",
|
|
728
|
-
34: "GTIN",
|
|
729
|
-
35: "ARK"
|
|
730
|
-
}, wt = (e) => {
|
|
731
|
-
let t = e?.value?.trim();
|
|
732
|
-
if (!(t === void 0 || t.length === 0)) return e?.scheme?.trim().toLowerCase() === "onix:codelist5" ? Ct[t] ?? t : t;
|
|
733
|
-
}, Tt = (e, t) => {
|
|
742
|
+
}), J = (e, t) => e.refines !== void 0 && e.refines.replace(/^#/, "") === t, Dt = (e, t) => {
|
|
734
743
|
let n = e.id;
|
|
735
|
-
if (n !== void 0) return
|
|
736
|
-
},
|
|
744
|
+
if (n !== void 0) return A(t.find((e) => e.property === "identifier-type" && J(e, n) && e.value !== void 0));
|
|
745
|
+
}, Ot = (e) => {
|
|
737
746
|
let t = e?.trim();
|
|
738
747
|
if (t === void 0 || !/^\d+(\.\d+)?$/.test(t)) return;
|
|
739
748
|
let n = Number.parseFloat(t);
|
|
740
749
|
return Number.isFinite(n) ? n : void 0;
|
|
741
|
-
},
|
|
750
|
+
}, kt = (e) => {
|
|
742
751
|
let t = e?.trim();
|
|
743
752
|
if (t === void 0 || !/^\d+$/.test(t)) return;
|
|
744
753
|
let n = Number.parseInt(t, 10);
|
|
745
754
|
return Number.isFinite(n) ? n : void 0;
|
|
746
|
-
},
|
|
755
|
+
}, At = (e) => {
|
|
747
756
|
let t = e?.trim();
|
|
748
757
|
return t !== void 0 && t.length > 0 ? t : void 0;
|
|
749
|
-
}, Y = (e, t, n) => t === void 0 ? void 0 : e.find((e) => J(e, t) && e.property === n && e.value !== void 0)?.value,
|
|
758
|
+
}, Y = (e, t, n) => t === void 0 ? void 0 : e.find((e) => J(e, t) && e.property === n && e.value !== void 0)?.value, jt = (e, t) => e.map((e) => B({
|
|
750
759
|
value: e.value,
|
|
751
|
-
type:
|
|
752
|
-
displaySeq:
|
|
753
|
-
sortAs:
|
|
754
|
-
})),
|
|
760
|
+
type: At(Y(t, e.id, "title-type"))?.toLowerCase(),
|
|
761
|
+
displaySeq: kt(Y(t, e.id, "display-seq")),
|
|
762
|
+
sortAs: At(Y(t, e.id, "file-as"))
|
|
763
|
+
})), Mt = (e, t) => {
|
|
755
764
|
if (t === void 0) return;
|
|
756
765
|
let n = e.flatMap((n) => {
|
|
757
766
|
if (!J(n, t) || n.property !== "dcterms:identifier") return [];
|
|
758
|
-
let r =
|
|
767
|
+
let r = At(n.value);
|
|
759
768
|
return r === void 0 ? [] : [{
|
|
760
769
|
value: r,
|
|
761
|
-
scheme: q(
|
|
770
|
+
scheme: q(A(e.find((e) => n.id !== void 0 && J(e, n.id) && e.property === "identifier-type")) ?? wt(r))
|
|
762
771
|
}];
|
|
763
772
|
});
|
|
764
773
|
return n.length > 0 ? n : void 0;
|
|
765
|
-
},
|
|
774
|
+
}, Nt = (e) => {
|
|
766
775
|
let t = [], n = [];
|
|
767
776
|
for (let r of e) {
|
|
768
777
|
if (r.property !== "belongs-to-collection" || r.value === void 0) continue;
|
|
769
778
|
let i = r.id, a = (t) => Y(e, i, t), o = a("collection-type")?.trim().toLowerCase(), s = B({
|
|
770
779
|
name: r.value,
|
|
771
|
-
identifiers:
|
|
772
|
-
position:
|
|
780
|
+
identifiers: Mt(e, i),
|
|
781
|
+
position: Ot(a("group-position"))
|
|
773
782
|
});
|
|
774
783
|
o === "series" ? t.push(s) : n.push(s);
|
|
775
784
|
}
|
|
@@ -777,49 +786,49 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
777
786
|
let n = e.find((e) => e.name?.toLowerCase() === "calibre:series" && e.content !== void 0)?.content;
|
|
778
787
|
n !== void 0 && t.push(B({
|
|
779
788
|
name: n,
|
|
780
|
-
position:
|
|
789
|
+
position: Ot(e.find((e) => e.name?.toLowerCase() === "calibre:series_index")?.content)
|
|
781
790
|
}));
|
|
782
791
|
}
|
|
783
792
|
return {
|
|
784
793
|
series: t,
|
|
785
794
|
collection: n
|
|
786
795
|
};
|
|
787
|
-
},
|
|
796
|
+
}, Pt = (e) => {
|
|
788
797
|
let t = e?.trim();
|
|
789
798
|
if (t === "scrolled-continuous" || t === "scrolled-doc" || t === "paginated" || t === "auto") return t;
|
|
790
|
-
},
|
|
799
|
+
}, Ft = (e) => {
|
|
791
800
|
let t = e?.trim();
|
|
792
801
|
if (t === "none" || t === "landscape" || t === "portrait" || t === "both" || t === "auto") return t;
|
|
793
|
-
},
|
|
794
|
-
let { titles: t, contributors: n, publisher: r, description: i, rights: a, languages: o, subjects: s, date: c, renditionLayoutMeta: l, renditionFlowMeta: u, renditionSpreadMeta: d, pageProgressionDirection: f, identifiers: p, metas: m, kind: h, creators: g, manifestItems: _, spineRows: v, spineTocIdref: y, coverHref: b, guide: x, ...ee } = e, S = f?.trim().toLowerCase(), C = S === "ltr" || S === "rtl" ? S : void 0, w = l?.trim().toLowerCase(), T = w === "reflowable" || w === "pre-paginated" ? w : void 0, E =
|
|
802
|
+
}, It = (e) => {
|
|
803
|
+
let { titles: t, contributors: n, publisher: r, description: i, rights: a, languages: o, subjects: s, date: c, renditionLayoutMeta: l, renditionFlowMeta: u, renditionSpreadMeta: d, pageProgressionDirection: f, identifiers: p, metas: m, kind: h, creators: g, manifestItems: _, spineRows: v, spineTocIdref: y, coverHref: b, guide: x, ...ee } = e, S = f?.trim().toLowerCase(), C = S === "ltr" || S === "rtl" ? S : void 0, w = l?.trim().toLowerCase(), T = w === "reflowable" || w === "pre-paginated" ? w : void 0, E = Et(n), D = jt(t, m), { series: O, collection: k } = Nt(m), te = O.length > 0 || k.length > 0 ? B({
|
|
795
804
|
series: O.length > 0 ? O : void 0,
|
|
796
805
|
collection: k.length > 0 ? k : void 0
|
|
797
|
-
}) : void 0,
|
|
798
|
-
date:
|
|
806
|
+
}) : void 0, A = B({
|
|
807
|
+
date: Ct(c),
|
|
799
808
|
publisher: r
|
|
800
809
|
});
|
|
801
810
|
return B({
|
|
802
811
|
titles: D.length > 0 ? D : void 0,
|
|
803
812
|
description: i,
|
|
804
|
-
publication:
|
|
813
|
+
publication: A.date !== void 0 || A.publisher !== void 0 ? { edition: A } : void 0,
|
|
805
814
|
rights: a,
|
|
806
815
|
languages: o.length > 0 ? [...o] : void 0,
|
|
807
816
|
subjects: s.length > 0 ? [...s] : void 0,
|
|
808
817
|
contributors: E.length > 0 ? E : void 0,
|
|
809
818
|
readingDirection: C,
|
|
810
819
|
renditionLayout: T,
|
|
811
|
-
renditionFlow:
|
|
812
|
-
renditionSpread:
|
|
820
|
+
renditionFlow: Pt(u),
|
|
821
|
+
renditionSpread: Ft(d),
|
|
813
822
|
identifiers: p.length > 0 ? p.map((e) => B({
|
|
814
823
|
value: e.value,
|
|
815
|
-
scheme: q(e.scheme ??
|
|
824
|
+
scheme: q(e.scheme ?? Dt(e, m) ?? wt(e.value)),
|
|
816
825
|
unique: e.unique
|
|
817
826
|
})) : void 0,
|
|
818
|
-
belongsTo:
|
|
827
|
+
belongsTo: te,
|
|
819
828
|
properties: m.length > 0 ? [...m] : void 0
|
|
820
829
|
});
|
|
821
|
-
},
|
|
822
|
-
let t = e.opf === void 0 ? void 0 :
|
|
830
|
+
}, Lt = (e) => e.kind === "comicInfo" ? mt(e) : e.kind === "kobo" ? ht(e) : e.kind === "apple" ? Qe(e) : It(e), Rt = (e) => {
|
|
831
|
+
let t = e.opf === void 0 ? void 0 : It(e.opf), n = e.comicInfo === void 0 ? void 0 : mt(e.comicInfo), r = e.apple === void 0 ? void 0 : Qe(e.apple), i = e.kobo === void 0 ? void 0 : ht(e.kobo), a = [...t?.identifiers ?? [], ...n?.identifiers ?? []], o = B({
|
|
823
832
|
date: t?.publication?.edition?.date ?? n?.publication?.edition?.date,
|
|
824
833
|
publisher: t?.publication?.edition?.publisher ?? n?.publication?.edition?.publisher,
|
|
825
834
|
imprint: t?.publication?.edition?.imprint ?? n?.publication?.edition?.imprint
|
|
@@ -845,7 +854,7 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
845
854
|
apple: r?.apple,
|
|
846
855
|
kobo: i?.kobo
|
|
847
856
|
});
|
|
848
|
-
},
|
|
857
|
+
}, zt = (e) => {
|
|
849
858
|
let t = [...e.records].sort((e, t) => p(e.uri, t.uri)), n = (e, t, r, i, a) => {
|
|
850
859
|
let o = e.find((e) => e.title === t), [s, ...c] = r;
|
|
851
860
|
return o ? s ? [...e.filter((e) => e !== o), {
|
|
@@ -874,71 +883,71 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
874
883
|
let a = encodeURI(t.uri).replace(/#/g, "%23").replace(/\?/g, "%3F").replace(/\/$/, ""), o = t.uri.replace(/\/$/, "");
|
|
875
884
|
return n(e, r, i, a, o);
|
|
876
885
|
}, []);
|
|
877
|
-
},
|
|
886
|
+
}, Bt = (e) => e ? e.children.map((e) => e instanceof _ ? e.text : e instanceof g ? Bt(e) : "").join("").trim() : "", Vt = (e) => O(e.properties).includes("nav"), Ht = (e, { basePath: t }) => {
|
|
878
887
|
let n = {
|
|
879
888
|
contents: [],
|
|
880
889
|
path: "",
|
|
881
890
|
containerHref: "",
|
|
882
891
|
title: ""
|
|
883
892
|
}, r = e.childNamed("span") || e.childNamed("a");
|
|
884
|
-
n.title = (r?.attr.title || r?.val.trim() ||
|
|
893
|
+
n.title = (r?.attr.title || r?.val.trim() || Bt(r)) ?? "";
|
|
885
894
|
let i = r?.name;
|
|
886
895
|
i !== "a" && (r = e.descendantWithPath(`${i}.a`), r && (i = r.name.toLowerCase())), i === "a" && r?.attr.href && (n.path = m(t, r.attr.href), n.containerHref = n.path);
|
|
887
896
|
let a = e.childNamed("ol");
|
|
888
897
|
if (a) {
|
|
889
898
|
let e = a.childrenNamed("li");
|
|
890
|
-
e && e.length > 0 && (n.contents = e.map((e) =>
|
|
899
|
+
e && e.length > 0 && (n.contents = e.map((e) => Ht(e, { basePath: t })));
|
|
891
900
|
}
|
|
892
901
|
return n;
|
|
893
|
-
},
|
|
902
|
+
}, Ut = (e, { basePath: t }) => {
|
|
894
903
|
let n = [], r;
|
|
895
904
|
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 g && e.name === "li").forEach((e) => {
|
|
896
|
-
n.push(
|
|
905
|
+
n.push(Ht(e, { basePath: t }));
|
|
897
906
|
}), n;
|
|
898
|
-
},
|
|
899
|
-
let n = e.manifestItems.find(
|
|
907
|
+
}, Wt = async (e, t) => {
|
|
908
|
+
let n = e.manifestItems.find(Vt);
|
|
900
909
|
if (n?.href) {
|
|
901
910
|
let e = t.records.find((e) => e.uri.endsWith(n.href));
|
|
902
|
-
if (e && !e.dir) return
|
|
911
|
+
if (e && !e.dir) return Ut(new h(await E(e)), { basePath: c(e.uri) });
|
|
903
912
|
}
|
|
904
|
-
},
|
|
913
|
+
}, Gt = (e, { basePath: t, prefix: n }) => {
|
|
905
914
|
let r = m(t, e?.childNamed(`${n}content`)?.attr.src || ""), i = {
|
|
906
915
|
title: e?.descendantWithPath(`${n}navLabel.${n}text`)?.val || "",
|
|
907
916
|
path: r,
|
|
908
917
|
containerHref: r,
|
|
909
918
|
contents: []
|
|
910
919
|
}, a = e.childrenNamed(`${n}navPoint`);
|
|
911
|
-
return a && a.length > 0 && (i.contents = a.map((e) =>
|
|
920
|
+
return a && a.length > 0 && (i.contents = a.map((e) => Gt(e, {
|
|
912
921
|
basePath: t,
|
|
913
922
|
prefix: n
|
|
914
923
|
}))), i;
|
|
915
|
-
},
|
|
924
|
+
}, Kt = (e, { basePath: t }) => {
|
|
916
925
|
let n = [], r = e.name, i = "";
|
|
917
926
|
return r.indexOf(":") !== -1 && (i = `${r.split(":")[0]}:`), e.childNamed(`${i}navMap`)?.childrenNamed(`${i}navPoint`).forEach((e) => {
|
|
918
|
-
n.push(
|
|
927
|
+
n.push(Gt(e, {
|
|
919
928
|
basePath: t,
|
|
920
929
|
prefix: i
|
|
921
930
|
}));
|
|
922
931
|
}), n;
|
|
923
|
-
},
|
|
932
|
+
}, qt = async ({ opf: e, opfBasePath: t, archive: n }) => {
|
|
924
933
|
let r = e.spineTocIdref;
|
|
925
934
|
if (r) {
|
|
926
935
|
let i = e.manifestItems.find((e) => e.id === r);
|
|
927
936
|
if (i) {
|
|
928
937
|
let e = `${t}${t === "" ? "" : "/"}${i.href}`, r = n.records.find((t) => t.uri.endsWith(e));
|
|
929
|
-
if (r && !r.dir) return
|
|
938
|
+
if (r && !r.dir) return Kt(new h(await E(r)), { basePath: c(r.uri) });
|
|
930
939
|
}
|
|
931
940
|
}
|
|
932
|
-
},
|
|
941
|
+
}, Jt = async (e, { opf: t } = {}) => {
|
|
933
942
|
let n = t ?? await L(e);
|
|
934
|
-
if (n) return await
|
|
943
|
+
if (n) return await Wt(n.opf, e) || await qt({
|
|
935
944
|
opf: n.opf,
|
|
936
945
|
opfBasePath: n.basePath,
|
|
937
946
|
archive: e
|
|
938
947
|
}) || [];
|
|
939
|
-
let r =
|
|
948
|
+
let r = zt(e);
|
|
940
949
|
return r.length === 0 ? void 0 : r;
|
|
941
|
-
},
|
|
950
|
+
}, Yt = [
|
|
942
951
|
"metadata",
|
|
943
952
|
"readingOrder",
|
|
944
953
|
"toc"
|
|
@@ -954,39 +963,39 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
954
963
|
failed: !0
|
|
955
964
|
};
|
|
956
965
|
}
|
|
957
|
-
},
|
|
966
|
+
}, Xt = (e) => {
|
|
958
967
|
let t = (e) => e?.startsWith("audio/") === !0 || e?.startsWith("video/") === !0, n = e.filter((e) => e.renditionLayout === "pre-paginated" && !t(e.mediaType)).length;
|
|
959
968
|
return n > 0 ? n : void 0;
|
|
960
|
-
},
|
|
969
|
+
}, Zt = ({ archive: e, opf: t, comicInfo: n, apple: r, kobo: i }) => {
|
|
961
970
|
let a = [];
|
|
962
|
-
return t !== void 0 && t.value === void 0 && (t.failed ||
|
|
963
|
-
},
|
|
964
|
-
let n = new Set(t.include ??
|
|
971
|
+
return t !== void 0 && t.value === void 0 && (t.failed || Ze(e)) && a.push("opf"), n?.failed && a.push("comicInfo"), r?.failed && a.push("apple"), i?.failed && a.push("kobo"), a;
|
|
972
|
+
}, Qt = 3, $t = async (e, t = {}) => {
|
|
973
|
+
let n = new Set(t.include ?? Yt), 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(() => L(e), "opf") : void 0, l = c?.value, u = r || i || s, d = u ? await X(() => qe(e), "comicInfo") : void 0, f = d?.value, p = u ? await X(() => He(e), "apple") : void 0, m = p?.value, h = u ? await X(() => Je(e), "kobo") : void 0, g = h?.value, _ = r || s ? Rt({
|
|
965
974
|
opf: l?.opf,
|
|
966
975
|
comicInfo: f,
|
|
967
976
|
apple: m,
|
|
968
977
|
kobo: g
|
|
969
978
|
}) : void 0, v = a || s ? await V(e, { opf: l }) : void 0;
|
|
970
|
-
if (s && _ !== void 0 && v !== void 0 && _.renditionLayout === "reflowable" && v.every((e) => e.renditionLayout === "reflowable") && await
|
|
979
|
+
if (s && _ !== void 0 && v !== void 0 && _.renditionLayout === "reflowable" && v.every((e) => e.renditionLayout === "reflowable") && await Be(e, v) && (_ = {
|
|
971
980
|
..._,
|
|
972
981
|
renditionLayout: "pre-paginated"
|
|
973
982
|
}, v = v.map((e) => ({
|
|
974
983
|
...e,
|
|
975
984
|
renditionLayout: "pre-paginated"
|
|
976
985
|
}))), r && _ !== void 0) {
|
|
977
|
-
let t = v ?? await V(e, { opf: l }), n = await
|
|
986
|
+
let t = v ?? await V(e, { opf: l }), n = await Re(e, {
|
|
978
987
|
opf: l,
|
|
979
988
|
readingOrder: t
|
|
980
|
-
}), r = _.numberOfPages ??
|
|
989
|
+
}), r = _.numberOfPages ?? Xt(t);
|
|
981
990
|
_ = B({
|
|
982
991
|
..._,
|
|
983
992
|
cover: n,
|
|
984
993
|
numberOfPages: r
|
|
985
994
|
});
|
|
986
995
|
}
|
|
987
|
-
let y = o ? (await X(() =>
|
|
988
|
-
version:
|
|
989
|
-
unreadableSources:
|
|
996
|
+
let y = o ? (await X(() => Jt(e, { opf: l }), "toc")).value : void 0, b = {
|
|
997
|
+
version: Qt,
|
|
998
|
+
unreadableSources: Zt({
|
|
990
999
|
archive: e,
|
|
991
1000
|
opf: c,
|
|
992
1001
|
comicInfo: d,
|
|
@@ -1000,16 +1009,16 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
1000
1009
|
apple: m,
|
|
1001
1010
|
kobo: g
|
|
1002
1011
|
})), b;
|
|
1003
|
-
},
|
|
1012
|
+
}, en = (e) => {
|
|
1004
1013
|
let t = e.trim().toLowerCase();
|
|
1005
1014
|
return t === "url" || t === "uri" || t === "unknown";
|
|
1006
|
-
},
|
|
1015
|
+
}, tn = (e) => {
|
|
1007
1016
|
try {
|
|
1008
1017
|
return decodeURIComponent(e);
|
|
1009
1018
|
} catch {
|
|
1010
1019
|
return;
|
|
1011
1020
|
}
|
|
1012
|
-
},
|
|
1021
|
+
}, nn = (e) => {
|
|
1013
1022
|
try {
|
|
1014
1023
|
let t = new URL(e.trim());
|
|
1015
1024
|
return t.protocol === "http:" || t.protocol === "https:" ? t : void 0;
|
|
@@ -1017,91 +1026,91 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
1017
1026
|
return;
|
|
1018
1027
|
}
|
|
1019
1028
|
}, Z = (e, t) => {
|
|
1020
|
-
let n =
|
|
1029
|
+
let n = nn(e);
|
|
1021
1030
|
return n !== void 0 && t(n.hostname.toLowerCase()) ? n : void 0;
|
|
1022
|
-
},
|
|
1031
|
+
}, rn = /^books\.google\.(?:com|[a-z]{2}|com\.[a-z]{2}|co\.[a-z]{2})$/i, an = /* @__PURE__ */ new Set(["books.googleapis.com", "www.googleapis.com"]), on = /^\/books\/v1\/volumes\/([^/]+)\/?$/i, sn = (e) => {
|
|
1023
1032
|
let t = e.trim();
|
|
1024
1033
|
return /^[a-z0-9_-]+$/i.test(t) ? t : void 0;
|
|
1025
|
-
},
|
|
1026
|
-
let t = Z(e, (e) =>
|
|
1034
|
+
}, cn = (e) => {
|
|
1035
|
+
let t = Z(e, (e) => rn.test(e) || an.has(e));
|
|
1027
1036
|
if (t !== void 0) {
|
|
1028
|
-
if (
|
|
1029
|
-
let e =
|
|
1030
|
-
return n === void 0 ? void 0 :
|
|
1037
|
+
if (an.has(t.hostname.toLowerCase())) {
|
|
1038
|
+
let e = on.exec(t.pathname)?.[1], n = e === void 0 ? void 0 : tn(e);
|
|
1039
|
+
return n === void 0 ? void 0 : sn(n);
|
|
1031
1040
|
}
|
|
1032
|
-
return
|
|
1041
|
+
return sn(t.searchParams.get("id") ?? "");
|
|
1033
1042
|
}
|
|
1034
|
-
},
|
|
1043
|
+
}, ln = /* @__PURE__ */ new Set(["gutenberg.org", "www.gutenberg.org"]), un = [
|
|
1035
1044
|
/^\/ebooks\/(\d+)(?:[./]|$)/i,
|
|
1036
1045
|
/^\/files\/(\d+)(?:\/|$)/i,
|
|
1037
1046
|
/^\/cache\/epub\/(\d+)(?:\/|$)/i,
|
|
1038
1047
|
/^\/(\d+)(?:\/|$)/
|
|
1039
|
-
],
|
|
1048
|
+
], dn = (e) => {
|
|
1040
1049
|
let t = e.trim();
|
|
1041
1050
|
if (!/^\d+$/.test(t)) return;
|
|
1042
1051
|
let n = t.replace(/^0+(?=\d)/, "");
|
|
1043
1052
|
return n === "0" ? void 0 : n;
|
|
1044
|
-
},
|
|
1045
|
-
let t = Z(e, (e) =>
|
|
1046
|
-
if (t !== void 0) for (let e of
|
|
1053
|
+
}, fn = (e) => {
|
|
1054
|
+
let t = Z(e, (e) => ln.has(e));
|
|
1055
|
+
if (t !== void 0) for (let e of un) {
|
|
1047
1056
|
let n = e.exec(t.pathname)?.[1];
|
|
1048
|
-
if (n !== void 0) return
|
|
1057
|
+
if (n !== void 0) return dn(n);
|
|
1049
1058
|
}
|
|
1050
|
-
},
|
|
1059
|
+
}, pn = /* @__PURE__ */ new Set(["openlibrary.org", "www.openlibrary.org"]), mn = /^\/(works|books|authors)\/(OL\d+[A-Z])(?:\/|$)/i, hn = /^OL\d+([MWA])$/i, gn = {
|
|
1051
1060
|
M: "books",
|
|
1052
1061
|
W: "works",
|
|
1053
1062
|
A: "authors"
|
|
1054
|
-
},
|
|
1055
|
-
let t = e.trim(), n =
|
|
1063
|
+
}, _n = (e) => {
|
|
1064
|
+
let t = e.trim(), n = mn.exec(t);
|
|
1056
1065
|
if (n?.[1] !== void 0 && n[2] !== void 0) return `/${n[1].toLowerCase()}/${n[2].toUpperCase()}`;
|
|
1057
|
-
let r =
|
|
1066
|
+
let r = gn[hn.exec(t)?.[1]?.toUpperCase() ?? ""];
|
|
1058
1067
|
return r === void 0 ? void 0 : `/${r}/${t.toUpperCase()}`;
|
|
1059
|
-
},
|
|
1060
|
-
let t = Z(e, (e) =>
|
|
1061
|
-
return t === void 0 ? void 0 :
|
|
1062
|
-
},
|
|
1068
|
+
}, vn = (e) => {
|
|
1069
|
+
let t = Z(e, (e) => pn.has(e));
|
|
1070
|
+
return t === void 0 ? void 0 : _n(t.pathname);
|
|
1071
|
+
}, yn = /* @__PURE__ */ new Set([
|
|
1063
1072
|
"doi.org",
|
|
1064
1073
|
"dx.doi.org",
|
|
1065
1074
|
"www.doi.org"
|
|
1066
|
-
]),
|
|
1075
|
+
]), bn = /^10\.\d{4,9}\/\S+$/, xn = (e) => {
|
|
1067
1076
|
let t = e.trim().replace(/^doi:/i, "");
|
|
1068
|
-
return
|
|
1069
|
-
},
|
|
1077
|
+
return bn.test(t) ? t : void 0;
|
|
1078
|
+
}, Sn = (e) => e.split("/").map(encodeURIComponent).join("/"), Q = [
|
|
1070
1079
|
{
|
|
1071
1080
|
scheme: "GoogleBooks",
|
|
1072
|
-
normalizeValue:
|
|
1073
|
-
valueFromUrl:
|
|
1081
|
+
normalizeValue: sn,
|
|
1082
|
+
valueFromUrl: cn,
|
|
1074
1083
|
toUrl: (e) => `https://books.google.com/books?id=${encodeURIComponent(e)}`
|
|
1075
1084
|
},
|
|
1076
1085
|
{
|
|
1077
1086
|
scheme: "ProjectGutenberg",
|
|
1078
|
-
normalizeValue:
|
|
1079
|
-
valueFromUrl:
|
|
1087
|
+
normalizeValue: dn,
|
|
1088
|
+
valueFromUrl: fn,
|
|
1080
1089
|
toUrl: (e) => `https://www.gutenberg.org/ebooks/${e}`
|
|
1081
1090
|
},
|
|
1082
1091
|
{
|
|
1083
1092
|
scheme: "OpenLibrary",
|
|
1084
|
-
normalizeValue:
|
|
1085
|
-
valueFromUrl:
|
|
1093
|
+
normalizeValue: _n,
|
|
1094
|
+
valueFromUrl: vn,
|
|
1086
1095
|
toUrl: (e) => `https://openlibrary.org${e}`
|
|
1087
1096
|
},
|
|
1088
1097
|
{
|
|
1089
1098
|
scheme: "DOI",
|
|
1090
|
-
normalizeValue:
|
|
1099
|
+
normalizeValue: xn,
|
|
1091
1100
|
valueFromUrl: (e) => {
|
|
1092
|
-
let t = Z(e, (e) =>
|
|
1093
|
-
return n === void 0 ? void 0 :
|
|
1101
|
+
let t = Z(e, (e) => yn.has(e)), n = t === void 0 ? void 0 : tn(t.pathname.replace(/^\//, ""));
|
|
1102
|
+
return n === void 0 ? void 0 : xn(n);
|
|
1094
1103
|
},
|
|
1095
|
-
toUrl: (e) => `https://doi.org/${
|
|
1104
|
+
toUrl: (e) => `https://doi.org/${Sn(e)}`
|
|
1096
1105
|
}
|
|
1097
|
-
],
|
|
1106
|
+
], Cn = Q.map(function(e) {
|
|
1098
1107
|
return e.scheme;
|
|
1099
|
-
}),
|
|
1108
|
+
}), wn = (e) => {
|
|
1100
1109
|
let t = e.trim().toLowerCase();
|
|
1101
1110
|
return Q.find(function(e) {
|
|
1102
1111
|
return e.scheme.toLowerCase() === t;
|
|
1103
1112
|
});
|
|
1104
|
-
},
|
|
1113
|
+
}, Tn = (e) => wn(e) !== void 0, En = (e) => {
|
|
1105
1114
|
for (let t of Q) {
|
|
1106
1115
|
let n = t.valueFromUrl(e);
|
|
1107
1116
|
if (n !== void 0) return {
|
|
@@ -1109,47 +1118,47 @@ var Ge = async ({ archive: e, archiveOpf: t }) => {
|
|
|
1109
1118
|
scheme: t.scheme
|
|
1110
1119
|
};
|
|
1111
1120
|
}
|
|
1112
|
-
},
|
|
1113
|
-
let n =
|
|
1121
|
+
}, Dn = ({ scheme: e, value: t }) => {
|
|
1122
|
+
let n = wn(e), r = n?.normalizeValue(t);
|
|
1114
1123
|
if (n === void 0 || r === void 0) return;
|
|
1115
1124
|
let i = n.toUrl(r);
|
|
1116
1125
|
return n.valueFromUrl(i) === r ? i : void 0;
|
|
1117
|
-
},
|
|
1126
|
+
}, On = (e) => {
|
|
1118
1127
|
let t = Q.find(function(t) {
|
|
1119
1128
|
return t.scheme === e;
|
|
1120
1129
|
});
|
|
1121
1130
|
if (t === void 0) throw Error(`No catalog rule for scheme ${e}`);
|
|
1122
1131
|
return t;
|
|
1123
|
-
},
|
|
1132
|
+
}, kn = (e) => {
|
|
1124
1133
|
let t = q(e);
|
|
1125
1134
|
return t === "ISBN" || t === "GTIN";
|
|
1126
|
-
},
|
|
1127
|
-
carries:
|
|
1135
|
+
}, An = (e) => ({
|
|
1136
|
+
carries: kn,
|
|
1128
1137
|
normalizeValue: e
|
|
1129
1138
|
}), $ = (e) => ({
|
|
1130
1139
|
carries: (t) => q(t) === e,
|
|
1131
|
-
...
|
|
1132
|
-
}),
|
|
1133
|
-
ISBN:
|
|
1134
|
-
GTIN:
|
|
1140
|
+
...On(e)
|
|
1141
|
+
}), jn = {
|
|
1142
|
+
ISBN: An(yt),
|
|
1143
|
+
GTIN: An(xt),
|
|
1135
1144
|
GoogleBooks: $("GoogleBooks"),
|
|
1136
1145
|
OpenLibrary: $("OpenLibrary"),
|
|
1137
1146
|
ProjectGutenberg: $("ProjectGutenberg"),
|
|
1138
1147
|
DOI: $("DOI")
|
|
1139
|
-
},
|
|
1140
|
-
let n =
|
|
1148
|
+
}, Mn = (e, t) => {
|
|
1149
|
+
let n = jn[t];
|
|
1141
1150
|
for (let t of e ?? []) {
|
|
1142
1151
|
if (n.carries(t.scheme)) {
|
|
1143
1152
|
let e = n.normalizeValue(t.value) ?? n.valueFromUrl?.(t.value);
|
|
1144
1153
|
if (e !== void 0) return e;
|
|
1145
1154
|
continue;
|
|
1146
1155
|
}
|
|
1147
|
-
if (n.valueFromUrl === void 0 || !
|
|
1156
|
+
if (n.valueFromUrl === void 0 || !en(t.scheme)) continue;
|
|
1148
1157
|
let e = n.valueFromUrl(t.value);
|
|
1149
1158
|
if (e !== void 0) return e;
|
|
1150
1159
|
}
|
|
1151
|
-
},
|
|
1160
|
+
}, Nn = (e) => e?.titles?.[0]?.value;
|
|
1152
1161
|
//#endregion
|
|
1153
|
-
export { R as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, z as COMIC_INFO_FILENAME,
|
|
1162
|
+
export { R as APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME, z as COMIC_INFO_FILENAME, xe as COMIC_INFO_KNOWN_FIELDS, Ge as COMIC_INFO_MANGA_VALUES, Ee as KOBO_DISPLAY_OPTIONS_FILENAME, Cn as METADATA_CATALOG_SCHEMES, k as OPF_IDENTIFIER_SCHEME_ATTRIBUTES, i as arrayBufferFileAccessors, r as blobFileAccessors, En as catalogIdentifierFromUrl, Dn as catalogUrlFromIdentifier, e as createArchive, v as createArchiveFromArrayBufferList, n as createArchiveFromEntries, y as createArchiveFromText, b as createArchiveFromUrls, S as getArchiveFileRecordByUri, We as getArchiveHasComicInfo, T as getArchiveImageRecords, D as getArchiveOpfInfo, Ye as getSpineItemFilesFromArchive, Mn as identifierValue, Ze as isArchiveEpub, Ke as isComicInfoManga, ee as isDirectoryRecord, x as isFileRecord, w as isImageRecord, kn as isIsbnBearingScheme, Tn as isMetadataCatalogScheme, Nn as mainTitle, xt as normalizeGtin, q as normalizeIdentifierScheme, vt as normalizeIsbn, ne as opfIdentifierSchemeAttribute, A as opfIdentifierTypeScheme, be as parseAppleDisplayOptionsXml, Te as parseComicInfo, Oe as parseKoboXml, ve as parseOpf, Ct as parseW3cDtfDate, He as readArchiveApple, qe as readArchiveComicInfo, Je as readArchiveKobo, L as readArchiveOpf, E as readRecordAsText, Be as readingOrderDocumentsAllHaveViewport, $t as resolveArchive, Re as resolveArchiveCover, Lt as resolveArchiveMetadata, V as resolveArchiveReadingOrder, Jt as resolveArchiveToc, Rt as resolveMetadata, O as tokenizeXmlSpaceSeparatedList };
|
|
1154
1163
|
|
|
1155
1164
|
//# sourceMappingURL=index.js.map
|