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