@prose-reader/archive-reader 1.344.0 → 1.345.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/cover/resolveArchiveCover.d.ts +1 -1
- package/dist/index/index.cjs +4 -4
- package/dist/index/index.cjs.map +1 -1
- package/dist/index/index.js +497 -484
- package/dist/index/index.js.map +1 -1
- package/dist/index.d.ts +24 -24
- package/dist/{apple → metadata/apple}/readArchiveApple.d.ts +1 -1
- package/dist/{apple → metadata/apple}/resolve.d.ts +1 -1
- package/dist/{comicInfo → metadata/comicInfo}/getArchiveHasComicInfo.d.ts +1 -1
- package/dist/{comicInfo → metadata/comicInfo}/readArchiveComicInfo.d.ts +1 -1
- package/dist/{comicInfo → metadata/comicInfo}/resolve.d.ts +1 -1
- package/dist/{kobo → metadata/kobo}/readArchiveKobo.d.ts +1 -1
- package/dist/{kobo → metadata/kobo}/resolve.d.ts +1 -1
- package/dist/metadata/opf/getArchiveOpfInfo.d.ts +5 -0
- package/dist/{opf → metadata/opf}/getSpineItemFilesFromArchive.d.ts +2 -2
- package/dist/{opf → metadata/opf}/isArchiveEpub.d.ts +1 -1
- package/dist/{opf → metadata/opf}/readArchiveOpf.d.ts +1 -1
- package/dist/{opf → metadata/opf}/resolve.d.ts +1 -1
- package/dist/readingOrder/resolveArchiveReadingOrder.d.ts +1 -1
- package/dist/resolve.d.ts +4 -4
- package/dist/resolveArchive.d.ts +4 -4
- package/dist/resolveMetadata.d.ts +4 -4
- package/dist/toc/nav.d.ts +1 -1
- package/dist/toc/ncx.d.ts +1 -1
- package/dist/toc/resolveArchiveToc.d.ts +1 -1
- package/dist/types/resolvedMetadata.d.ts +10 -7
- package/package.json +3 -3
- package/dist/opf/getArchiveOpfInfo.d.ts +0 -5
- /package/dist/{apple → metadata/apple}/parse.d.ts +0 -0
- /package/dist/{apple → metadata/apple}/parse.test.d.ts +0 -0
- /package/dist/{apple → metadata/apple}/readArchiveApple.test.d.ts +0 -0
- /package/dist/{apple → metadata/apple}/resolve.test.d.ts +0 -0
- /package/dist/{comicInfo → metadata/comicInfo}/manga.d.ts +0 -0
- /package/dist/{comicInfo → metadata/comicInfo}/manga.test.d.ts +0 -0
- /package/dist/{comicInfo → metadata/comicInfo}/parse.d.ts +0 -0
- /package/dist/{comicInfo → metadata/comicInfo}/parse.test.d.ts +0 -0
- /package/dist/{comicInfo → metadata/comicInfo}/readArchiveComicInfo.test.d.ts +0 -0
- /package/dist/{comicInfo → metadata/comicInfo}/resolve.test.d.ts +0 -0
- /package/dist/{kobo → metadata/kobo}/parse.d.ts +0 -0
- /package/dist/{kobo → metadata/kobo}/parse.test.d.ts +0 -0
- /package/dist/{kobo → metadata/kobo}/readArchiveKobo.test.d.ts +0 -0
- /package/dist/{kobo → metadata/kobo}/resolve.test.d.ts +0 -0
- /package/dist/{opf → metadata/opf}/parse.d.ts +0 -0
- /package/dist/{opf → metadata/opf}/parse.test.d.ts +0 -0
- /package/dist/{opf → metadata/opf}/resolve.test.d.ts +0 -0
- /package/dist/{opf → metadata/opf}/spineItemrefProperties.d.ts +0 -0
- /package/dist/{opf → metadata/opf}/spineItemrefProperties.test.d.ts +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Archive } from '../archives/types.ts';
|
|
2
|
-
import { ArchiveOpfParsed } from '../opf/readArchiveOpf.ts';
|
|
2
|
+
import { ArchiveOpfParsed } from '../metadata/opf/readArchiveOpf.ts';
|
|
3
3
|
import { ArchiveReadingOrderItem } from '../readingOrder/resolveArchiveReadingOrder.ts';
|
|
4
4
|
import { ResolvedCover } from '../types/resolvedMetadata.ts';
|
|
5
5
|
export declare const resolveArchiveCover: (archive: Archive, { opf, readingOrder, }?: {
|
package/dist/index/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../createArchiveFromEntries-DcPCGgZW.cjs"),t=require("../fileAccessors-DWVChFUB.cjs");let n=require("
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../createArchiveFromEntries-DcPCGgZW.cjs"),t=require("../fileAccessors-DWVChFUB.cjs");let n=require("@prose-reader/shared"),r=require("xmldoc");var i=async(r,i={})=>e.t(r,e=>e.isDir?{dir:!0,uri:e.name}:{dir:!1,uri:e.name,size:e.size,...t.t(e.data,(0,n.detectMimeTypeFromName)(e.name)??``)},{...i,close:()=>Promise.resolve()}),a=async(r,{mimeType:i,direction:a}={mimeType:`text/plain`})=>{let o=`
|
|
2
2
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
3
3
|
<package xmlns="http://www.idpf.org/2007/opf" version="3.0" xml:lang="ja" prefix="rendition: http://www.idpf.org/vocab/rendition/#"
|
|
4
4
|
unique-identifier="ootuya-id">
|
|
@@ -13,14 +13,14 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
|
|
|
13
13
|
<itemref idref="p01" />
|
|
14
14
|
</spine>
|
|
15
15
|
</package>
|
|
16
|
-
`;return e.n({filename:`content.txt`,encodingFormat:i,records:[{dir:!1,basename:(0,
|
|
16
|
+
`;return e.n({filename:`content.txt`,encodingFormat:i,records:[{dir:!1,basename:(0,n.getUriBasename)(`generated.opf`),uri:`generated.opf`,size:0,...t.n(async()=>new Blob([o]))},{dir:!1,basename:(0,n.getUriBasename)(`p01.txt`),uri:`p01.txt`,size:typeof r==`string`?new Blob([r]).size:r.size,encodingFormat:i,...t.n(async()=>typeof r==`string`?new Blob([r]):r)}],close:()=>Promise.resolve()})},o=async(r,i)=>{let a=(0,n.createXmlSafeIdFactory)(),o=r.map(e=>({id:a(e),url:e})),s=`
|
|
17
17
|
<?xml version="1.0" encoding="UTF-8"?><package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="bookid">
|
|
18
18
|
<metadata>
|
|
19
19
|
<meta property="rendition:layout">${i?.useRenditionFlow?`reflowable`:`pre-paginated`}</meta>
|
|
20
20
|
${i?.useRenditionFlow?`<meta property="rendition:flow">scrolled-continuous</meta>`:``}
|
|
21
21
|
</metadata>
|
|
22
22
|
<manifest>
|
|
23
|
-
${o.map(({id:e,url:t})=>{let
|
|
23
|
+
${o.map(({id:e,url:t})=>{let r=(0,n.detectMimeTypeFromName)(t);return`<item id="${e}" href="${(0,n.escapeXmlAttributeValue)(t)}" media-type="${(0,n.escapeXmlAttributeValue)(r??``)}"/>`}).join(`
|
|
24
24
|
`)}
|
|
25
25
|
</manifest>
|
|
26
26
|
<spine>
|
|
@@ -28,5 +28,5 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
|
|
|
28
28
|
`)}
|
|
29
29
|
</spine>
|
|
30
30
|
</package>
|
|
31
|
-
`,c=n.map(e=>({dir:!1,basename:(0,r.getUriBasename)(e),encodingFormat:(0,r.detectMimeTypeFromName)(e),uri:e,size:0,...t.n(async()=>(await fetch(e)).blob())}));return e.n({records:[{dir:!1,basename:`content.opf`,uri:`content.opf`,size:0,...t.n(async()=>new Blob([s]))},...c],close:()=>Promise.resolve()})},y=e=>(0,r.parseContentType)(e.encodingFormat??``)||(0,r.detectMimeTypeFromName)(e.basename),b=e=>c(e)&&y(e)?.startsWith(`image/`)===!0,x=e=>e.records.filter(c).filter(b),S=`ComicInfo.xml`,C=`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(`.`),w=new Set([`Pages`,`ComicInfo`]),T=e=>e.children.some(e=>e.type===`element`),E=e=>{let t=e.val.trim();return t.length>0?t:void 0},D=e=>{let t;try{t=new n.XmlDocument(e)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`${S} is malformed: ${t}`,{cause:e})}let r={};return t.eachChild(e=>{if(e.type!==`element`||w.has(e.name)||T(e))return;let t=E(e);t!==void 0&&r[e.name]===void 0&&(r[e.name]=t)}),{kind:`comicInfo`,...r}},O=S.toLowerCase(),k=e=>e.records.find(e=>c(e)&&e.basename.toLowerCase()===O),ee=[`Unknown`,`No`,`Yes`,`YesAndRightToLeft`],te=e=>{for(let t of ee)if(t===e)return!0;return!1};async function A(e){let t=k(e);if(t)return D(await s(t))}var ne=new Set([8,12,13,14]),j=e=>{if(e==null)return;let t=String(e).replace(/\D/g,``);if(!(t.length===0||!ne.has(t.length)))return t},re=/(?:97[89])?\d{9}[\dXx]/,M=e=>{if(e==null)return;let t=String(e).trim().replace(/^urn:isbn:/i,``).replace(/^isbn[:\s-]*/i,``),n=t.replace(/[^0-9Xx]/g,``);if(n.length===10||n.length===13)return n.toUpperCase();let r=t.match(re);if(r)return r[0].toUpperCase()},ie={AgeRating:`comic.ageRating`,AlternateCount:`comic.alternateSeries`,AlternateNumber:`comic.alternateSeries`,AlternateSeries:`comic.alternateSeries`,BlackAndWhite:`comic.blackAndWhite`,Characters:`comic.characters`,Colorist:`contributors`,CommunityRating:`comic.communityRating`,Count:`belongsTo.series`,CoverArtist:`contributors`,Day:`publication.edition.date`,Editor:`contributors`,Format:`comic.format`,Genre:`subjects`,GTIN:`identifiers`,Imprint:`publication.edition.imprint`,Inker:`contributors`,LanguageISO:`languages`,Letterer:`contributors`,Locations:`comic.locations`,MainCharacterOrTeam:`comic.mainCharacterOrTeam`,Manga:`readingDirection`,Month:`publication.edition.date`,Notes:`comic.notes`,Number:`belongsTo.series`,PageCount:`numberOfPages`,Penciller:`contributors`,Publisher:`publication.edition.publisher`,Review:`comic.review`,ScanInformation:`comic.scanInformation`,Series:`belongsTo.series`,SeriesGroup:`belongsTo.collection`,StoryArc:`comic.storyArcs`,StoryArcNumber:`comic.storyArcs`,Summary:`description`,Tags:`subjects`,Teams:`comic.teams`,Title:`title`,Translator:`contributors`,Volume:`comic.volume`,Web:`comic.web`,Writer:`contributors`,Year:`publication.edition.date`},ae=e=>{switch(e.Manga){case`YesAndRightToLeft`:return`rtl`;case`Yes`:case`No`:return`ltr`;default:return}},N=e=>{if(e===void 0)return;let t=e.trim();return t.length>0?t:void 0},P=e=>e===void 0?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0),F=e=>{let t=N(e);if(t===void 0||!/^\d+$/.test(t))return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0},I=e=>{let t=N(e);if(t===void 0||!/^\d+(\.\d+)?$/.test(t))return;let n=Number.parseFloat(t);return Number.isFinite(n)?n:void 0},oe=e=>{let t=N(e)?.toLowerCase();if(t===`yes`)return!0;if(t===`no`)return!1},se=e=>{switch(e.Manga){case`Yes`:case`YesAndRightToLeft`:return!0;case`No`:return!1;default:return}},ce=e=>{let t=F(e.Year),n=F(e.Month),r=F(e.Day);if(!(t===void 0&&n===void 0&&r===void 0))return{...t===void 0?{}:{year:t},...n===void 0?{}:{month:n},...r===void 0?{}:{day:r}}},le=[[`Writer`,`author`],[`Penciller`,`penciler`],[`Inker`,`inker`],[`Colorist`,`colorist`],[`Letterer`,`letterer`],[`CoverArtist`,`coverArtist`],[`Editor`,`editor`],[`Translator`,`translator`]],ue=e=>{let t=new Map;for(let[n,r]of le)for(let i of P(e[n])){let e=t.get(i);e?e.roles.includes(r)||e.roles.push(r):t.set(i,{name:i,roles:[r]})}return[...t.values()]},de=e=>{let t=N(e.Series);if(t!==void 0)return p({name:t,position:I(e.Number),total:F(e.Count)})},fe=e=>{let t=N(e.AlternateSeries);if(t!==void 0)return p({name:t,position:I(e.AlternateNumber),total:F(e.AlternateCount)})},pe=e=>{let t=P(e.StoryArc);if(t.length===0)return[];let n=P(e.StoryArcNumber);return t.map((e,t)=>p({name:e,position:I(n[t])}))},L=e=>e.length>0?e:void 0,me=e=>{let t=L((e.Web??``).split(/\s+/).filter(e=>e.length>0)),n=p({manga:se(e),blackAndWhite:oe(e.BlackAndWhite),volume:F(e.Volume),format:N(e.Format),ageRating:N(e.AgeRating),communityRating:I(e.CommunityRating),notes:N(e.Notes),review:N(e.Review),web:t,scanInformation:N(e.ScanInformation),mainCharacterOrTeam:N(e.MainCharacterOrTeam),characters:L(P(e.Characters)),teams:L(P(e.Teams)),locations:L(P(e.Locations)),storyArcs:L(pe(e)),alternateSeries:fe(e)});return Object.keys(n).length>0?n:void 0},he=e=>{let t=de(e),n=L(P(e.SeriesGroup).map(e=>({name:e})));if(!(t===void 0&&n===void 0))return p({series:t===void 0?void 0:[t],collection:n})},R=e=>{let t=e.GTIN,n=N(t),r=N(e.LanguageISO),i=[...P(e.Genre),...P(e.Tags)],a=p({date:ce(e),publisher:N(e.Publisher),imprint:N(e.Imprint)});return p({title:N(e.Title),description:N(e.Summary),publication:a.date!==void 0||a.publisher!==void 0||a.imprint!==void 0?{edition:a}:void 0,languages:r===void 0?void 0:[r],subjects:L(i),contributors:L(ue(e)),readingDirection:ae(e),numberOfPages:F(e.PageCount),gtin:j(t),isbn:M(t),identifiers:n===void 0?void 0:[{value:n,scheme:`GTIN`}],belongsTo:he(e),comic:me(e)})},z=e=>{let t=e.records.filter(e=>!e.dir).find(e=>e.uri.endsWith(`.opf`));return{data:t,basePath:t?.uri.substring(0,t.uri.lastIndexOf(`/`))||``}},B=e=>e===void 0||e.trim().length===0?[]:e.trim().split(/\s+/).filter(e=>e.length>0),ge=e=>{let t=B(e);if(t.length===0)return{};let n;t.includes(`rendition:layout-reflowable`)&&(n=`reflowable`),t.includes(`rendition:layout-pre-paginated`)&&(n=`pre-paginated`);let r;return t.includes(`rendition:flow-auto`)&&(r=`auto`),t.includes(`rendition:flow-paginated`)&&(r=`paginated`),t.includes(`rendition:flow-scrolled-doc`)&&(r=`scrolled-doc`),t.includes(`rendition:flow-scrolled-continuous`)&&(r=`scrolled-continuous`),{...n===void 0?{}:{renditionLayout:n},...r===void 0?{}:{renditionFlow:r},...t.includes(`page-spread-left`)?{pageSpreadLeft:!0}:{},...t.includes(`page-spread-right`)?{pageSpreadRight:!0}:{}}},V=e=>e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e,H=(e,t)=>V(e).toLowerCase()===t.toLowerCase(),U=e=>e.type===`element`,W=(e,t)=>{for(let n of e.children)if(U(n)&&H(n.name,t))return n},G=(e,t)=>{let n=[];for(let r of e.children)U(r)&&H(r.name,t)&&n.push(r);return n},_e=(e,t)=>{let n=[];return e.eachChild(e=>{if(V(e.name).toLowerCase()!==`identifier`)return;let r=e.val.trim();if(r.length===0)return;let i=(e.attr[`opf:scheme`]??e.attr[`opf:Scheme`]??e.attr.scheme)?.trim(),a=e.attr.id?.trim(),o=a!==void 0&&a.length>0?a:void 0;n.push({value:r,...i!==void 0&&i.length>0?{scheme:i}:{},...o===void 0?{}:{id:o},...o!==void 0&&o===t?{unique:!0}:{}})}),n},K=(e,t)=>{let n;return e.eachChild(e=>{if(n!==void 0||V(e.name).toLowerCase()!==t.toLowerCase())return;let r=e.val.trim();r.length>0&&(n=r)}),n},q=(e,t)=>{let n=[];return e.eachChild(e=>{if(V(e.name).toLowerCase()!==t.toLowerCase())return;let r=e.val.trim();r.length>0&&n.push(r)}),n},ve=e=>{let t;return e.eachChild(e=>{if(t!==void 0||V(e.name).toLowerCase()!==`meta`||e.attr.name?.toLowerCase()!==`cover`)return;let n=e.attr.content?.trim();n!==void 0&&n.length>0&&(t=n)}),t},ye=({manifestItems:e,metadataEl:t})=>{let n=e=>e.mediaType?.toLowerCase().includes(`image/`)===!0,r=e.find(e=>n(e)?B(e.properties).includes(`cover-image`):!1);if(r!==void 0)return r.href;if(t!==void 0){let r=ve(t);if(r!==void 0){let t=e.find(e=>e.id===r&&n(e));if(t!==void 0)return t.href}}return e.find(e=>e.id.toLowerCase().includes(`cover`)&&n(e))?.href},J=(e,t)=>{let n=e.attr[t]?.trim();return n!==void 0&&n.length>0?n:void 0},be=e=>{let t=[];return e.eachChild(e=>{if(V(e.name).toLowerCase()!==`meta`)return;let n=J(e,`property`),r=J(e,`refines`),i=J(e,`scheme`),a=J(e,`id`),o=J(e,`name`),s=J(e,`content`),c=e.val.trim(),l=c.length>0?c:void 0,u={...n===void 0?{}:{property:n},...r===void 0?{}:{refines:r},...i===void 0?{}:{scheme:i},...a===void 0?{}:{id:a},...o===void 0?{}:{name:o},...s===void 0?{}:{content:s},...l===void 0?{}:{value:l}};Object.keys(u).length!==0&&t.push(u)}),t},xe=(e,t)=>e.replace(/^#/,``)===t,Se=(e,t)=>{let n=[];return e.eachChild(e=>{let r=V(e.name).toLowerCase();if(r!==`creator`&&r!==`contributor`)return;let i=e.val.trim();if(i.length===0)return;let a=J(e,`id`),o=e=>a===void 0?[]:t.flatMap(t=>t.refines!==void 0&&xe(t.refines,a)&&t.property===e&&t.value!==void 0?[t.value]:[]),s=J(e,`opf:role`)??J(e,`role`),c=[...s===void 0?[]:[s],...o(`role`)],l=J(e,`opf:file-as`)??J(e,`file-as`)??o(`file-as`)[0];n.push({name:i,source:r,...a===void 0?{}:{id:a},roles:c,...l===void 0?{}:{fileAs:l}})}),n},Y=(e,t)=>{let n=G(e,`meta`).find(e=>e.attr.property===t)?.val;if(!(n===void 0||n.trim().length===0))return n},Ce=e=>{let t=W(e,`guide`);if(t===void 0)return[];let n=[];for(let e of G(t,`reference`)){let t=e.attr.href?.trim();t===void 0||t.length===0||n.push({href:t,title:e.attr.title?.trim()??``,type:e.attr.type?.trim()??``})}return n},we=e=>{let t=e.attr.id,n=e.attr.href;if(t===void 0||t.length===0||n===void 0||n.length===0)return;let r=e.attr[`media-type`],i=e.attr.properties?.trim();return{id:t,href:n,...r!==void 0&&r.length>0?{mediaType:r}:{},...i!==void 0&&i.length>0?{properties:i}:{}}},Te=e=>{let t=[],n=new Map;for(let r of G(e,`item`)){let e=we(r);e!==void 0&&(t.push(e),n.set(e.id,e))}return{items:t,byId:n}},Ee=(e,t)=>{let n=[];for(let r of G(t,`itemref`)){let t=r.attr.idref;if(t===void 0||t.trim().length===0)continue;let i=e.get(t);if(i===void 0)continue;let a=ge(r.attr.properties);n.push({idref:t,id:i.id,href:i.href,...i.mediaType===void 0?{}:{mediaType:i.mediaType},...i.properties===void 0?{}:{properties:i.properties},...a.renditionLayout===void 0?{}:{renditionLayout:a.renditionLayout},...a.renditionFlow===void 0?{}:{renditionFlow:a.renditionFlow},...a.pageSpreadLeft===void 0?{}:{pageSpreadLeft:a.pageSpreadLeft},...a.pageSpreadRight===void 0?{}:{pageSpreadRight:a.pageSpreadRight}})}return n},X=e=>{let t=new n.XmlDocument(e),r=W(t,`manifest`),i=W(t,`spine`),a=W(t,`metadata`),o=t.attr[`unique-identifier`]?.trim(),s=o!==void 0&&o.length>0?o:void 0,c=[],l=[];if(r!==void 0){let{items:e,byId:t}=Te(r);c=e,i!==void 0&&(l=Ee(t,i))}let u=i?.attr[`page-progression-direction`],d=u!==void 0&&u.trim().length>0?u:void 0,f=i?.attr.toc,p=f!==void 0&&f.trim().length>0?f.trim():void 0,m,h,g,_,v,y=[],b=[],x=[],S=[],C,w,T,E=[],D=[];a!==void 0&&(m=K(a,`title`),h=K(a,`publisher`),g=K(a,`description`),_=K(a,`rights`),v=K(a,`date`),y=q(a,`creator`),x=q(a,`language`),S=q(a,`subject`),C=Y(a,`rendition:layout`),w=Y(a,`rendition:flow`),T=Y(a,`rendition:spread`),E=be(a),b=Se(a,E),D.push(..._e(a,s)));let O=ye({manifestItems:c,metadataEl:a}),k=Ce(t);return{kind:`opf`,manifestItems:c,spineRows:l,spineTocIdref:p,identifiers:D,title:m,creators:y,contributors:b,publisher:h,description:g,rights:_,languages:x,subjects:S,date:v,coverHref:O,renditionLayoutMeta:C,renditionFlowMeta:w,renditionSpreadMeta:T,pageProgressionDirection:d,guide:k,metas:E}};async function Z(e){let{data:t,basePath:n}=z(e)||{};if(!(!t||t.dir))return{opf:X(await s(t)),basePath:n}}var De=`com.kobobooks.display-options.xml`,Oe=e=>{let t=e.childNamed(`platform`);if(!t)return{};for(let e of t.childrenNamed(`option`))if(e.attr?.name===`fixed-layout`)return e.val.trim().toLowerCase()===`true`?{renditionLayout:`pre-paginated`}:{};return{}},ke=e=>{let t=new n.XmlDocument(e);return t.name?.toLowerCase()===`display_options`?{kind:`kobo`,...Oe(t)}:{kind:`kobo`}},Ae=e=>{let t=[];for(let n of e.split(`/`))if(n!==`.`){if(n===`..`){t.pop();continue}t.push(n)}return t.join(`/`)},je=(e,t)=>/^https?:\/\//.test(e)?e:Ae(t?`${t}/${e}`:e),Me=e=>{let t=e?.trim().toLowerCase();return t===`reflowable`||t===`pre-paginated`?t:void 0},Ne=(e,{opf:t,basePath:n})=>{let r=Me(t.renditionLayoutMeta),i=t.spineRows.map(t=>{let r=je(t.href,n);return{row:t,uri:r,record:u(e,r)}}),a=i.reduce((e,{record:t})=>e+(t?.size??0),0);return i.map(({row:e,uri:n,record:i})=>p({uri:n,id:e.id,mediaType:e.mediaType??i?.encodingFormat,size:i?.size,renditionLayout:e.renditionLayout??r,renditionFlow:e.renditionFlow,pageSpreadLeft:e.pageSpreadLeft,pageSpreadRight:e.pageSpreadRight,progressionWeight:a>0?(i?.size??0)/a:1/t.spineRows.length}))},Pe=S.toLowerCase(),Fe=i.toLowerCase(),Ie=e=>{let t=e.basename.toLowerCase();return t===Pe||t===Fe||e.uri.endsWith(`com.kobobooks.display-options.xml`)||t.endsWith(`.db`)},Le=e=>{let t=e.records.filter(c).filter(e=>!Ie(e));return t.map(e=>{let n=(0,r.parseContentType)(e.encodingFormat??``)||(0,r.detectMimeTypeFromName)(e.basename);return p({uri:e.uri,mediaType:n,size:e.size,renditionLayout:n!==void 0&&(0,r.isMediaContentMimeType)(n)?`pre-paginated`:void 0,progressionWeight:1/t.length})})},Q=async(e,{opf:t}={})=>{let n=t??await Z(e).catch(()=>void 0);return n?Ne(e,n):Le(e)},Re=(e,t)=>{let n=u(e,t);if(n!==void 0)return(0,r.parseContentType)(n.encodingFormat??``)||(0,r.detectMimeTypeFromName)(n.basename)},ze=async(e,{opf:t,readingOrder:n}={})=>{let r=t??await Z(e).catch(()=>void 0);if(r!==void 0&&r.opf.coverHref!==void 0){let t=je(r.opf.coverHref,r.basePath);return p({uri:t,mediaType:Re(e,t),confidence:`derived`})}let i=(n??await Q(e,{opf:r})).find(e=>e.mediaType?.startsWith(`image/`)===!0);if(i!==void 0)return p({uri:i.uri,mediaType:i.mediaType,confidence:`assumed`})};async function Be(t){let n=t.records.filter(e=>c(e)&&e.uri.endsWith(`com.kobobooks.display-options.xml`));if(n.length===0)return;let r;for(let t of n){let n=await s(t);try{let{renditionLayout:e}=ke(n);e&&(r=e)}catch(n){e.r.error(`Unable to parse ${De} (${t.uri})`,n)}}return{kind:`kobo`,...r===void 0?{}:{renditionLayout:r}}}var Ve={renditionLayout:`renditionLayout`},He=e=>p({renditionLayout:e.renditionLayout,kobo:e.renditionLayout===void 0?void 0:{fixedLayout:e.renditionLayout===`pre-paginated`}}),Ue=e=>{let t=e.descendantWithPath(`head`)?.childrenNamed(`meta`).find(e=>e.attr.name===`viewport`);return!!(t&&t.attr.name===`viewport`)},We=async(t,i)=>{if(i.length===0)return!1;for(let a of i){if(!(0,r.isXmlBasedMimeType)({mimeType:a.mediaType,uri:a.uri}))return!1;let i=u(t,a.uri);if(!i||!c(i))return!1;try{let e=await s(i);if(!Ue(new n.XmlDocument(e)))return!1}catch(t){return e.r.error(`layout scan: unable to inspect ${a.uri}`,t),!1}}return!0},Ge=async({archive:e,archiveOpf:t})=>{if(!t)return[];let{opf:n,basePath:r}=t,{spineRows:i}=n;return e.records.filter(e=>i.find(t=>r?`${r}/${t.href}`===e.uri:`${t.href}`===e.uri))},Ke=e=>e.toLowerCase().endsWith(`.opf`),qe=e=>e.records.some(e=>!e.dir&&(Ke(e.basename)||Ke(e.uri))),Je=e=>{if(e===void 0)return;let t=e.trim().match(/^(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?/);if(t===null)return;let[,n,r,i]=t;return{...n===void 0?{}:{year:Number.parseInt(n,10)},...r===void 0?{}:{month:Number.parseInt(r,10)},...i===void 0?{}:{day:Number.parseInt(i,10)}}},Ye={manifestItems:`readingOrder`,spineRows:`readingOrder`,spineTocIdref:`toc`,identifiers:`identifiers`,title:`title`,creators:`contributors`,contributors:`contributors`,publisher:`publication.edition.publisher`,description:`description`,rights:`rights`,languages:`languages`,subjects:`subjects`,date:`publication.edition.date`,coverHref:`cover`,renditionLayoutMeta:`renditionLayout`,renditionFlowMeta:`renditionFlow`,renditionSpreadMeta:`renditionSpread`,pageProgressionDirection:`readingDirection`,guide:`guide`,metas:`properties`},Xe=e=>{for(let t of e)if(t.scheme!==void 0&&t.scheme.trim().toLowerCase()===`isbn`&&M(t.value)!==void 0)return t.value;for(let t of e)if(M(t.value)!==void 0)return t.value},Ze=e=>{let t=e.trim();if(/^https?:\/\//i.test(t))try{let e=new URL(t);return(e.protocol===`http:`||e.protocol===`https:`)&&e.hostname.length>0?`URL`:void 0}catch{return}},Qe={art:`artist`,aut:`author`,clr:`colorist`,ctb:`contributor`,edt:`editor`,ill:`illustrator`,nrt:`narrator`,trl:`translator`},$e=e=>e.contributors.map(e=>{let t=e.roles.map(e=>Qe[e.trim().toLowerCase()]??e);return p({name:e.name,roles:t.length>0?t:[e.source===`creator`?`author`:`contributor`],sortAs:e.fileAs})}),et=(e,t)=>e.refines!==void 0&&e.refines.replace(/^#/,``)===t,tt={"02":`ISBN`,"03":`GTIN`,"04":`UPC`,"05":`ISMN`,"06":`DOI`,13:`LCCN`,14:`GTIN`,15:`ISBN`,22:`URN`,23:`OCLC`,24:`ISBN`,25:`ISMN`,26:`DOI`,34:`GTIN`,35:`ARK`},nt=e=>{let t=e?.value?.trim();if(!(t===void 0||t.length===0))return e?.scheme?.trim().toLowerCase()===`onix:codelist5`?tt[t]??t:t},rt=(e,t)=>{let n=e.id;if(n!==void 0)return nt(t.find(e=>e.property===`identifier-type`&&et(e,n)&&e.value!==void 0))},it=e=>{let t=e?.trim();if(t===void 0||!/^\d+(\.\d+)?$/.test(t))return;let n=Number.parseFloat(t);return Number.isFinite(n)?n:void 0},at=e=>{let t=[],n=[];for(let r of e){if(r.property!==`belongs-to-collection`||r.value===void 0)continue;let i=r.id,a=t=>i===void 0?void 0:e.find(e=>et(e,i)&&e.property===t&&e.value!==void 0)?.value,o=a(`collection-type`)?.trim().toLowerCase(),s=p({name:r.value,position:it(a(`group-position`))});o===`series`?t.push(s):n.push(s)}if(t.length===0){let n=e.find(e=>e.name?.toLowerCase()===`calibre:series`&&e.content!==void 0)?.content;n!==void 0&&t.push(p({name:n,position:it(e.find(e=>e.name?.toLowerCase()===`calibre:series_index`)?.content)}))}return{series:t,collection:n}},ot=e=>{let t=e?.trim();if(t===`scrolled-continuous`||t===`scrolled-doc`||t===`paginated`||t===`auto`)return t},st=e=>{let t=e?.trim();if(t===`none`||t===`landscape`||t===`portrait`||t===`both`||t===`auto`)return t},ct=e=>{let t=e.pageProgressionDirection?.trim().toLowerCase(),n=t===`ltr`||t===`rtl`?t:void 0,r=e.renditionLayoutMeta?.trim().toLowerCase(),i=r===`reflowable`||r===`pre-paginated`?r:void 0,a=Xe(e.identifiers),o=$e(e),{series:s,collection:c}=at(e.metas),l=s.length>0||c.length>0?p({series:s.length>0?s:void 0,collection:c.length>0?c:void 0}):void 0,u=p({date:Je(e.date),publisher:e.publisher});return p({title:e.title,description:e.description,publication:u.date!==void 0||u.publisher!==void 0?{edition:u}:void 0,rights:e.rights,languages:e.languages.length>0?[...e.languages]:void 0,subjects:e.subjects.length>0?[...e.subjects]:void 0,contributors:o.length>0?o:void 0,readingDirection:n,renditionLayout:i,renditionFlow:ot(e.renditionFlowMeta),renditionSpread:st(e.renditionSpreadMeta),gtin:j(a),isbn:M(a),identifiers:e.identifiers.length>0?e.identifiers.map(t=>p({value:t.value,scheme:t.scheme??rt(t,e.metas)??Ze(t.value),unique:t.unique})):void 0,belongsTo:l,properties:e.metas.length>0?[...e.metas]:void 0})},lt=e=>e.kind===`comicInfo`?R(e):e.kind===`kobo`?He(e):e.kind===`apple`?h(e):ct(e),ut=e=>{let t=e.opf===void 0?void 0:ct(e.opf),n=e.comicInfo===void 0?void 0:R(e.comicInfo),r=e.apple===void 0?void 0:h(e.apple),i=e.kobo===void 0?void 0:He(e.kobo),a=[...t?.identifiers??[],...n?.identifiers??[]],o=p({date:t?.publication?.edition?.date??n?.publication?.edition?.date,publisher:t?.publication?.edition?.publisher??n?.publication?.edition?.publisher,imprint:t?.publication?.edition?.imprint??n?.publication?.edition?.imprint});return p({title:t?.title??n?.title,description:t?.description??n?.description,publication:o.date!==void 0||o.publisher!==void 0||o.imprint!==void 0?{edition:o}:void 0,rights:t?.rights,languages:t?.languages??n?.languages,subjects:t?.subjects??n?.subjects,contributors:t?.contributors??n?.contributors,readingDirection:n?.readingDirection??t?.readingDirection,renditionLayout:t?.renditionLayout??r?.renditionLayout??i?.renditionLayout,renditionFlow:t?.renditionFlow,renditionSpread:t?.renditionSpread,numberOfPages:n?.numberOfPages,gtin:t?.gtin??n?.gtin,isbn:t?.isbn??n?.isbn,identifiers:a.length>0?a:void 0,belongsTo:t?.belongsTo??n?.belongsTo,properties:t?.properties,comic:n?.comic,apple:r?.apple,kobo:i?.kobo})},dt=e=>{let t=[...e.records].sort((e,t)=>(0,r.sortByTitleComparator)(e.uri,t.uri)),n=(e,t,r,i,a)=>{let o=e.find(e=>e.title===t),[s,...c]=r;return o?s?[...e.filter(e=>e!==o),{...o,contents:n(o.contents,s,c,i,a)}]:o.path.split(`/`).length>a.split(`/`).length?[...e.filter(e=>e!==o),{...o,path:a,containerHref:i}]:e:s?[...e,{contents:n([],s,c,i,a),containerHref:i,path:a,title:t}]:[...e,{contents:[],containerHref:i,path:a,title:t}]};return t.reduce((e,t)=>{if(t.dir)return e;let[r,...i]=t.uri.split(`/`).slice(0,-1);if(!r)return e;let a=encodeURI(t.uri).replace(/#/g,`%23`).replace(/\?/g,`%3F`).replace(/\/$/,``),o=t.uri.replace(/\/$/,``);return n(e,r,i,a,o)},[])},ft=e=>e?e.children.map(e=>e instanceof n.XmlTextNode?e.text:e instanceof n.XmlElement?ft(e):``).join(``).trim():``,pt=e=>B(e.properties).includes(`nav`),mt=(e,{basePath:t})=>{let n={contents:[],path:``,containerHref:``,title:``},i=e.childNamed(`span`)||e.childNamed(`a`);n.title=(i?.attr.title||i?.val.trim()||ft(i))??``;let a=i?.name;a!==`a`&&(i=e.descendantWithPath(`${a}.a`),i&&(a=i.name.toLowerCase())),a===`a`&&i?.attr.href&&(n.path=(0,r.urlJoin)(t,i.attr.href),n.containerHref=n.path);let o=e.childNamed(`ol`);if(o){let e=o.childrenNamed(`li`);e&&e.length>0&&(n.contents=e.map(e=>mt(e,{basePath:t})))}return n},ht=(e,{basePath:t})=>{let r=[],i;return e.descendantWithPath(`body.nav.ol`)?i=e.descendantWithPath(`body.nav.ol`)?.children:e.descendantWithPath(`body.section.nav.ol`)&&(i=e.descendantWithPath(`body.section.nav.ol`)?.children),i&&i.length>0&&i.filter(e=>e instanceof n.XmlElement&&e.name===`li`).forEach(e=>{r.push(mt(e,{basePath:t}))}),r},gt=async(e,t)=>{let i=e.manifestItems.find(pt);if(i?.href){let e=t.records.find(e=>e.uri.endsWith(i.href));if(e&&!e.dir)return ht(new n.XmlDocument(await s(e)),{basePath:(0,r.getUriBasePath)(e.uri)})}},_t=(e,{basePath:t,prefix:n})=>{let i=(0,r.urlJoin)(t,e?.childNamed(`${n}content`)?.attr.src||``),a={title:e?.descendantWithPath(`${n}navLabel.${n}text`)?.val||``,path:i,containerHref:i,contents:[]},o=e.childrenNamed(`${n}navPoint`);return o&&o.length>0&&(a.contents=o.map(e=>_t(e,{basePath:t,prefix:n}))),a},vt=(e,{basePath:t})=>{let n=[],r=e.name,i=``;return r.indexOf(`:`)!==-1&&(i=`${r.split(`:`)[0]}:`),e.childNamed(`${i}navMap`)?.childrenNamed(`${i}navPoint`).forEach(e=>{n.push(_t(e,{basePath:t,prefix:i}))}),n},yt=async({opf:e,opfBasePath:t,archive:i})=>{let a=e.spineTocIdref;if(a){let o=e.manifestItems.find(e=>e.id===a);if(o){let e=`${t}${t===``?``:`/`}${o.href}`,a=i.records.find(t=>t.uri.endsWith(e));if(a&&!a.dir)return vt(new n.XmlDocument(await s(a)),{basePath:(0,r.getUriBasePath)(a.uri)})}}},bt=async(e,{opf:t}={})=>{let n=t??await Z(e);if(n)return await gt(n.opf,e)||await yt({opf:n.opf,opfBasePath:n.basePath,archive:e})||[];let r=dt(e);return r.length===0?void 0:r},xt=[`metadata`,`readingOrder`,`toc`],$=async(t,n)=>{try{return{value:await t(),failed:!1}}catch(t){return e.r.error(`resolveArchive: unable to read ${n}`,t),{value:void 0,failed:!0}}},St=e=>{let t=e=>e?.startsWith(`audio/`)===!0||e?.startsWith(`video/`)===!0,n=e.filter(e=>e.renditionLayout===`pre-paginated`&&!t(e.mediaType)).length;return n>0?n:void 0},Ct=({archive:e,opf:t,comicInfo:n,apple:r,kobo:i})=>{let a=[];return t!==void 0&&t.value===void 0&&(t.failed||qe(e))&&a.push(`opf`),n?.failed&&a.push(`comicInfo`),r?.failed&&a.push(`apple`),i?.failed&&a.push(`kobo`),a},wt=2,Tt=async(e,t={})=>{let n=new Set(t.include??xt),r=n.has(`metadata`),i=n.has(`sources`),a=n.has(`readingOrder`),o=n.has(`toc`),s=t.layoutScan===!0&&(r||a),c=r||i||a||o?await $(()=>Z(e),`opf`):void 0,l=c?.value,u=r||i||s,d=u?await $(()=>A(e),`comicInfo`):void 0,m=d?.value,h=u?await $(()=>f(e),`apple`):void 0,g=h?.value,_=u?await $(()=>Be(e),`kobo`):void 0,v=_?.value,y=r||s?ut({opf:l?.opf,comicInfo:m,apple:g,kobo:v}):void 0,b=a||s?await Q(e,{opf:l}):void 0;if(s&&y!==void 0&&b!==void 0&&y.renditionLayout===`reflowable`&&b.every(e=>e.renditionLayout===`reflowable`)&&await We(e,b)&&(y={...y,renditionLayout:`pre-paginated`},b=b.map(e=>({...e,renditionLayout:`pre-paginated`}))),r&&y!==void 0){let t=b??await Q(e,{opf:l}),n=await ze(e,{opf:l,readingOrder:t}),r=y.numberOfPages??St(t);y=p({...y,cover:n,numberOfPages:r})}let x=o?(await $(()=>bt(e,{opf:l}),`toc`)).value:void 0,S={version:wt,unreadableSources:Ct({archive:e,opf:c,comicInfo:d,apple:h,kobo:_})};return r&&y!==void 0&&(S.metadata=y),a&&b!==void 0&&(S.readingOrder=b),o&&x!==void 0&&(S.toc=x),i&&(S.sources=p({opf:l,comicInfo:m,apple:g,kobo:v})),S};exports.APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME=i,exports.COMIC_INFO_FILENAME=S,exports.COMIC_INFO_KNOWN_FIELDS=C,exports.COMIC_INFO_MANGA_VALUES=ee,exports.KOBO_DISPLAY_OPTIONS_FILENAME=De,exports.appleMetadataHomes=m,exports.arrayBufferFileAccessors=t.t,exports.blobFileAccessors=t.n,exports.comicInfoMetadataHomes=ie,exports.createArchive=e.n,exports.createArchiveFromArrayBufferList=g,exports.createArchiveFromEntries=e.t,exports.createArchiveFromText=_,exports.createArchiveFromUrls=v,exports.getArchiveFileRecordByUri=u,exports.getArchiveHasComicInfo=k,exports.getArchiveImageRecords=x,exports.getArchiveOpfInfo=z,exports.getSpineItemFilesFromArchive=Ge,exports.isArchiveEpub=qe,exports.isComicInfoManga=te,exports.isDirectoryRecord=l,exports.isFileRecord=c,exports.isImageRecord=b,exports.koboMetadataHomes=Ve,exports.normalizeGtin=j,exports.normalizeIsbn=M,exports.opfMetadataHomes=Ye,exports.parseAppleDisplayOptionsXml=o,exports.parseComicInfo=D,exports.parseKoboXml=ke,exports.parseOpf=X,exports.parseW3cDtfDate=Je,exports.readArchiveApple=f,exports.readArchiveComicInfo=A,exports.readArchiveKobo=Be,exports.readArchiveOpf=Z,exports.readRecordAsText=s,exports.readingOrderDocumentsAllHaveViewport=We,exports.resolveArchive=Tt,exports.resolveArchiveCover=ze,exports.resolveArchiveMetadata=lt,exports.resolveArchiveReadingOrder=Q,exports.resolveArchiveToc=bt,exports.resolveMetadata=ut,exports.tokenizeXmlSpaceSeparatedList=B;
|
|
31
|
+
`,c=r.map(e=>({dir:!1,basename:(0,n.getUriBasename)(e),encodingFormat:(0,n.detectMimeTypeFromName)(e),uri:e,size:0,...t.n(async()=>(await fetch(e)).blob())}));return e.n({records:[{dir:!1,basename:`content.opf`,uri:`content.opf`,size:0,...t.n(async()=>new Blob([s]))},...c],close:()=>Promise.resolve()})},s=e=>!e.dir,c=e=>e.dir,l=(e,t)=>{let n=e.recordsByUri.get(t);return n&&s(n)?n:void 0},u=e=>(0,n.parseContentType)(e.encodingFormat??``)||(0,n.detectMimeTypeFromName)(e.basename),d=e=>s(e)&&u(e)?.startsWith(`image/`)===!0,f=e=>e.records.filter(s).filter(d),p=async e=>new TextDecoder().decode(await e.arrayBuffer()),m=e=>{let t=e.records.filter(e=>!e.dir).find(e=>e.uri.endsWith(`.opf`));return{data:t,basePath:t?.uri.substring(0,t.uri.lastIndexOf(`/`))||``}},h=e=>e===void 0||e.trim().length===0?[]:e.trim().split(/\s+/).filter(e=>e.length>0),g=e=>{let t=h(e);if(t.length===0)return{};let n;t.includes(`rendition:layout-reflowable`)&&(n=`reflowable`),t.includes(`rendition:layout-pre-paginated`)&&(n=`pre-paginated`);let r;return t.includes(`rendition:flow-auto`)&&(r=`auto`),t.includes(`rendition:flow-paginated`)&&(r=`paginated`),t.includes(`rendition:flow-scrolled-doc`)&&(r=`scrolled-doc`),t.includes(`rendition:flow-scrolled-continuous`)&&(r=`scrolled-continuous`),{...n===void 0?{}:{renditionLayout:n},...r===void 0?{}:{renditionFlow:r},...t.includes(`page-spread-left`)?{pageSpreadLeft:!0}:{},...t.includes(`page-spread-right`)?{pageSpreadRight:!0}:{}}},_=e=>e.includes(`:`)?e.slice(e.lastIndexOf(`:`)+1):e,v=(e,t)=>_(e).toLowerCase()===t.toLowerCase(),y=e=>e.type===`element`,b=(e,t)=>{for(let n of e.children)if(y(n)&&v(n.name,t))return n},x=(e,t)=>{let n=[];for(let r of e.children)y(r)&&v(r.name,t)&&n.push(r);return n},ee=(e,t)=>{let n=[];return e.eachChild(e=>{if(_(e.name).toLowerCase()!==`identifier`)return;let r=e.val.trim();if(r.length===0)return;let i=(e.attr[`opf:scheme`]??e.attr[`opf:Scheme`]??e.attr.scheme)?.trim(),a=e.attr.id?.trim(),o=a!==void 0&&a.length>0?a:void 0;n.push({value:r,...i!==void 0&&i.length>0?{scheme:i}:{},...o===void 0?{}:{id:o},...o!==void 0&&o===t?{unique:!0}:{}})}),n},S=(e,t)=>{let n;return e.eachChild(e=>{if(n!==void 0||_(e.name).toLowerCase()!==t.toLowerCase())return;let r=e.val.trim();r.length>0&&(n=r)}),n},C=(e,t)=>{let n=[];return e.eachChild(e=>{if(_(e.name).toLowerCase()!==t.toLowerCase())return;let r=e.val.trim();r.length>0&&n.push(r)}),n},w=e=>{let t;return e.eachChild(e=>{if(t!==void 0||_(e.name).toLowerCase()!==`meta`||e.attr.name?.toLowerCase()!==`cover`)return;let n=e.attr.content?.trim();n!==void 0&&n.length>0&&(t=n)}),t},te=({manifestItems:e,metadataEl:t})=>{let n=e=>e.mediaType?.toLowerCase().includes(`image/`)===!0,r=e.find(e=>n(e)?h(e.properties).includes(`cover-image`):!1);if(r!==void 0)return r.href;if(t!==void 0){let r=w(t);if(r!==void 0){let t=e.find(e=>e.id===r&&n(e));if(t!==void 0)return t.href}}return e.find(e=>e.id.toLowerCase().includes(`cover`)&&n(e))?.href},T=(e,t)=>{let n=e.attr[t]?.trim();return n!==void 0&&n.length>0?n:void 0},ne=e=>{let t=[];return e.eachChild(e=>{if(_(e.name).toLowerCase()!==`meta`)return;let n=T(e,`property`),r=T(e,`refines`),i=T(e,`scheme`),a=T(e,`id`),o=T(e,`name`),s=T(e,`content`),c=e.val.trim(),l=c.length>0?c:void 0,u={...n===void 0?{}:{property:n},...r===void 0?{}:{refines:r},...i===void 0?{}:{scheme:i},...a===void 0?{}:{id:a},...o===void 0?{}:{name:o},...s===void 0?{}:{content:s},...l===void 0?{}:{value:l}};Object.keys(u).length!==0&&t.push(u)}),t},E=(e,t)=>e.replace(/^#/,``)===t,re=(e,t)=>{let n=[];return e.eachChild(e=>{let r=_(e.name).toLowerCase();if(r!==`creator`&&r!==`contributor`)return;let i=e.val.trim();if(i.length===0)return;let a=T(e,`id`),o=e=>a===void 0?[]:t.flatMap(t=>t.refines!==void 0&&E(t.refines,a)&&t.property===e&&t.value!==void 0?[t.value]:[]),s=T(e,`opf:role`)??T(e,`role`),c=[...s===void 0?[]:[s],...o(`role`)],l=T(e,`opf:file-as`)??T(e,`file-as`)??o(`file-as`)[0];n.push({name:i,source:r,...a===void 0?{}:{id:a},roles:c,...l===void 0?{}:{fileAs:l}})}),n},D=(e,t)=>{let n=x(e,`meta`).find(e=>e.attr.property===t)?.val;if(!(n===void 0||n.trim().length===0))return n},ie=e=>{let t=b(e,`guide`);if(t===void 0)return[];let n=[];for(let e of x(t,`reference`)){let t=e.attr.href?.trim();t===void 0||t.length===0||n.push({href:t,title:e.attr.title?.trim()??``,type:e.attr.type?.trim()??``})}return n},O=e=>{let t=e.attr.id,n=e.attr.href;if(t===void 0||t.length===0||n===void 0||n.length===0)return;let r=e.attr[`media-type`],i=e.attr.properties?.trim();return{id:t,href:n,...r!==void 0&&r.length>0?{mediaType:r}:{},...i!==void 0&&i.length>0?{properties:i}:{}}},ae=e=>{let t=[],n=new Map;for(let r of x(e,`item`)){let e=O(r);e!==void 0&&(t.push(e),n.set(e.id,e))}return{items:t,byId:n}},oe=(e,t)=>{let n=[];for(let r of x(t,`itemref`)){let t=r.attr.idref;if(t===void 0||t.trim().length===0)continue;let i=e.get(t);if(i===void 0)continue;let a=g(r.attr.properties);n.push({idref:t,id:i.id,href:i.href,...i.mediaType===void 0?{}:{mediaType:i.mediaType},...i.properties===void 0?{}:{properties:i.properties},...a.renditionLayout===void 0?{}:{renditionLayout:a.renditionLayout},...a.renditionFlow===void 0?{}:{renditionFlow:a.renditionFlow},...a.pageSpreadLeft===void 0?{}:{pageSpreadLeft:a.pageSpreadLeft},...a.pageSpreadRight===void 0?{}:{pageSpreadRight:a.pageSpreadRight}})}return n},k=e=>{let t=new r.XmlDocument(e),n=b(t,`manifest`),i=b(t,`spine`),a=b(t,`metadata`),o=t.attr[`unique-identifier`]?.trim(),s=o!==void 0&&o.length>0?o:void 0,c=[],l=[];if(n!==void 0){let{items:e,byId:t}=ae(n);c=e,i!==void 0&&(l=oe(t,i))}let u=i?.attr[`page-progression-direction`],d=u!==void 0&&u.trim().length>0?u:void 0,f=i?.attr.toc,p=f!==void 0&&f.trim().length>0?f.trim():void 0,m,h,g,_,v,y=[],x=[],w=[],T=[],E,O,k,A=[],j=[];a!==void 0&&(m=S(a,`title`),h=S(a,`publisher`),g=S(a,`description`),_=S(a,`rights`),v=S(a,`date`),y=C(a,`creator`),w=C(a,`language`),T=C(a,`subject`),E=D(a,`rendition:layout`),O=D(a,`rendition:flow`),k=D(a,`rendition:spread`),A=ne(a),x=re(a,A),j.push(...ee(a,s)));let M=te({manifestItems:c,metadataEl:a}),N=ie(t);return{kind:`opf`,manifestItems:c,spineRows:l,spineTocIdref:p,identifiers:j,title:m,creators:y,contributors:x,publisher:h,description:g,rights:_,languages:w,subjects:T,date:v,coverHref:M,renditionLayoutMeta:E,renditionFlowMeta:O,renditionSpreadMeta:k,pageProgressionDirection:d,guide:N,metas:A}};async function A(e){let{data:t,basePath:n}=m(e)||{};if(!(!t||t.dir))return{opf:k(await p(t)),basePath:n}}var j=`com.apple.ibooks.display-options.xml`,M=e=>e.childrenNamed(`option`).map(e=>({name:e.attr?.name,value:e.val})),N=e=>{let t=new r.XmlDocument(e);if(t.name?.toLowerCase()!==`display_options`)return{kind:`apple`};let n=t.childNamed(`platform`);return{kind:`apple`,displayOptions:{...n===void 0?{}:{platform:{options:M(n)}}}}},P=`ComicInfo.xml`,se=`AgeRating.AlternateCount.AlternateNumber.AlternateSeries.BlackAndWhite.Characters.Colorist.CommunityRating.Count.CoverArtist.Day.Editor.Format.Genre.GTIN.Imprint.Inker.LanguageISO.Letterer.Locations.MainCharacterOrTeam.Manga.Month.Notes.Number.PageCount.Penciller.Publisher.Review.ScanInformation.Series.SeriesGroup.StoryArc.StoryArcNumber.Summary.Tags.Teams.Title.Translator.Volume.Web.Writer.Year`.split(`.`),ce=new Set([`Pages`,`ComicInfo`]),le=e=>e.children.some(e=>e.type===`element`),ue=e=>{let t=e.val.trim();return t.length>0?t:void 0},F=e=>{let t;try{t=new r.XmlDocument(e)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`${P} is malformed: ${t}`,{cause:e})}let n={};return t.eachChild(e=>{if(e.type!==`element`||ce.has(e.name)||le(e))return;let t=ue(e);t!==void 0&&n[e.name]===void 0&&(n[e.name]=t)}),{kind:`comicInfo`,...n}},de=`com.kobobooks.display-options.xml`,fe=e=>{let t=e.childNamed(`platform`);if(!t)return{};for(let e of t.childrenNamed(`option`))if(e.attr?.name===`fixed-layout`)return e.val.trim().toLowerCase()===`true`?{renditionLayout:`pre-paginated`}:{};return{}},pe=e=>{let t=new r.XmlDocument(e);return t.name?.toLowerCase()===`display_options`?{kind:`kobo`,...fe(t)}:{kind:`kobo`}},I=e=>{let t=Object.entries(e).filter(([,e])=>e!==void 0);return Object.fromEntries(t)},me=e=>{let t=[];for(let n of e.split(`/`))if(n!==`.`){if(n===`..`){t.pop();continue}t.push(n)}return t.join(`/`)},L=(e,t)=>/^https?:\/\//.test(e)?e:me(t?`${t}/${e}`:e),he=e=>{let t=e?.trim().toLowerCase();return t===`reflowable`||t===`pre-paginated`?t:void 0},ge=(e,{opf:t,basePath:n})=>{let r=he(t.renditionLayoutMeta),i=t.spineRows.map(t=>{let r=L(t.href,n);return{row:t,uri:r,record:l(e,r)}}),a=i.reduce((e,{record:t})=>e+(t?.size??0),0);return i.map(({row:e,uri:n,record:i})=>I({uri:n,id:e.id,mediaType:e.mediaType??i?.encodingFormat,size:i?.size,renditionLayout:e.renditionLayout??r,renditionFlow:e.renditionFlow,pageSpreadLeft:e.pageSpreadLeft,pageSpreadRight:e.pageSpreadRight,progressionWeight:a>0?(i?.size??0)/a:1/t.spineRows.length}))},_e=P.toLowerCase(),ve=j.toLowerCase(),ye=e=>{let t=e.basename.toLowerCase();return t===_e||t===ve||e.uri.endsWith(`com.kobobooks.display-options.xml`)||t.endsWith(`.db`)},be=e=>{let t=e.records.filter(s).filter(e=>!ye(e));return t.map(e=>{let r=(0,n.parseContentType)(e.encodingFormat??``)||(0,n.detectMimeTypeFromName)(e.basename);return I({uri:e.uri,mediaType:r,size:e.size,renditionLayout:r!==void 0&&(0,n.isMediaContentMimeType)(r)?`pre-paginated`:void 0,progressionWeight:1/t.length})})},R=async(e,{opf:t}={})=>{let n=t??await A(e).catch(()=>void 0);return n?ge(e,n):be(e)},xe=(e,t)=>{let r=l(e,t);if(r!==void 0)return(0,n.parseContentType)(r.encodingFormat??``)||(0,n.detectMimeTypeFromName)(r.basename)},z=async(e,{opf:t,readingOrder:n}={})=>{let r=t??await A(e).catch(()=>void 0);if(r!==void 0&&r.opf.coverHref!==void 0){let t=L(r.opf.coverHref,r.basePath);return I({uri:t,mediaType:xe(e,t),confidence:`derived`})}let i=(n??await R(e,{opf:r})).find(e=>e.mediaType?.startsWith(`image/`)===!0);if(i!==void 0)return I({uri:i.uri,mediaType:i.mediaType,confidence:`assumed`})},Se=e=>{let t=e.descendantWithPath(`head`)?.childrenNamed(`meta`).find(e=>e.attr.name===`viewport`);return!!(t&&t.attr.name===`viewport`)},B=async(t,i)=>{if(i.length===0)return!1;for(let a of i){if(!(0,n.isXmlBasedMimeType)({mimeType:a.mediaType,uri:a.uri}))return!1;let i=l(t,a.uri);if(!i||!s(i))return!1;try{let e=await p(i);if(!Se(new r.XmlDocument(e)))return!1}catch(t){return e.r.error(`layout scan: unable to inspect ${a.uri}`,t),!1}}return!0},Ce=j.toLowerCase();async function V(e){let t=e.records.find(e=>s(e)&&e.basename.toLowerCase()===Ce);if(t)return N(await p(t))}var we={displayOptions:`apple.options`},Te=e=>{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=I({fixedLayout:r,options:t!==void 0&&t.length>0?t.map(({name:e,value:t})=>I({name:e,value:t})):void 0});return I({renditionLayout:r===!0?`pre-paginated`:void 0,apple:Object.keys(i).length>0?i:void 0})},Ee=P.toLowerCase(),H=e=>e.records.find(e=>s(e)&&e.basename.toLowerCase()===Ee),U=[`Unknown`,`No`,`Yes`,`YesAndRightToLeft`],De=e=>{for(let t of U)if(t===e)return!0;return!1};async function W(e){let t=H(e);if(t)return F(await p(t))}var Oe={AgeRating:`comic.ageRating`,AlternateCount:`comic.alternateSeries`,AlternateNumber:`comic.alternateSeries`,AlternateSeries:`comic.alternateSeries`,BlackAndWhite:`comic.blackAndWhite`,Characters:`comic.characters`,Colorist:`contributors`,CommunityRating:`comic.communityRating`,Count:`belongsTo.series`,CoverArtist:`contributors`,Day:`publication.edition.date`,Editor:`contributors`,Format:`comic.format`,Genre:`subjects`,GTIN:`identifiers`,Imprint:`publication.edition.imprint`,Inker:`contributors`,LanguageISO:`languages`,Letterer:`contributors`,Locations:`comic.locations`,MainCharacterOrTeam:`comic.mainCharacterOrTeam`,Manga:`readingDirection`,Month:`publication.edition.date`,Notes:`comic.notes`,Number:`belongsTo.series`,PageCount:`numberOfPages`,Penciller:`contributors`,Publisher:`publication.edition.publisher`,Review:`comic.review`,ScanInformation:`comic.scanInformation`,Series:`belongsTo.series`,SeriesGroup:`belongsTo.collection`,StoryArc:`comic.storyArcs`,StoryArcNumber:`comic.storyArcs`,Summary:`description`,Tags:`subjects`,Teams:`comic.teams`,Title:`title`,Translator:`contributors`,Volume:`comic.volume`,Web:`comic.web`,Writer:`contributors`,Year:`publication.edition.date`},ke=e=>{switch(e.Manga){case`YesAndRightToLeft`:return`rtl`;case`Yes`:case`No`:return`ltr`;default:return}},G=e=>{if(e===void 0)return;let t=e.trim();return t.length>0?t:void 0},K=e=>e===void 0?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0),q=e=>{let t=G(e);if(t===void 0||!/^\d+$/.test(t))return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0},J=e=>{let t=G(e);if(t===void 0||!/^\d+(\.\d+)?$/.test(t))return;let n=Number.parseFloat(t);return Number.isFinite(n)?n:void 0},Ae=e=>{let t=G(e)?.toLowerCase();if(t===`yes`)return!0;if(t===`no`)return!1},je=e=>{switch(e.Manga){case`Yes`:case`YesAndRightToLeft`:return!0;case`No`:return!1;default:return}},Me=e=>{let t=q(e.Year),n=q(e.Month),r=q(e.Day);if(!(t===void 0&&n===void 0&&r===void 0))return{...t===void 0?{}:{year:t},...n===void 0?{}:{month:n},...r===void 0?{}:{day:r}}},Ne=[[`Writer`,`author`],[`Penciller`,`penciler`],[`Inker`,`inker`],[`Colorist`,`colorist`],[`Letterer`,`letterer`],[`CoverArtist`,`coverArtist`],[`Editor`,`editor`],[`Translator`,`translator`]],Pe=e=>{let t=new Map;for(let[n,r]of Ne)for(let i of K(e[n])){let e=t.get(i);e?e.roles.includes(r)||e.roles.push(r):t.set(i,{name:i,roles:[r]})}return[...t.values()]},Fe=e=>{let t=G(e.Series);if(t!==void 0)return I({name:t,position:J(e.Number),total:q(e.Count)})},Ie=e=>{let t=G(e.AlternateSeries);if(t!==void 0)return I({name:t,position:J(e.AlternateNumber),total:q(e.AlternateCount)})},Le=e=>{let t=K(e.StoryArc);if(t.length===0)return[];let n=K(e.StoryArcNumber);return t.map((e,t)=>I({name:e,position:J(n[t])}))},Y=e=>e.length>0?e:void 0,Re=e=>(e.Web??``).split(/\s+/).filter(e=>e.length>0),ze=e=>{try{let t=new URL(e);return(t.protocol===`http:`||t.protocol===`https:`)&&t.hostname.length>0}catch{return!1}},Be=e=>e.filter((e,t,n)=>ze(e)&&n.indexOf(e)===t).map(e=>({value:e,scheme:`URL`})),Ve=(e,t)=>{let n=I({manga:je(e),blackAndWhite:Ae(e.BlackAndWhite),volume:q(e.Volume),format:G(e.Format),ageRating:G(e.AgeRating),communityRating:J(e.CommunityRating),notes:G(e.Notes),review:G(e.Review),web:Y(t),scanInformation:G(e.ScanInformation),mainCharacterOrTeam:G(e.MainCharacterOrTeam),characters:Y(K(e.Characters)),teams:Y(K(e.Teams)),locations:Y(K(e.Locations)),storyArcs:Y(Le(e)),alternateSeries:Ie(e)});return Object.keys(n).length>0?n:void 0},He=e=>{let t=Fe(e),n=Y(K(e.SeriesGroup).map(e=>({name:e})));if(!(t===void 0&&n===void 0))return I({series:t===void 0?void 0:[t],collection:n})},X=e=>{let t=e.GTIN,n=G(t),r=Re(e),i=[...n===void 0?[]:[{value:n,scheme:`GTIN`}],...Be(r)],a=G(e.LanguageISO),o=[...K(e.Genre),...K(e.Tags)],s=I({date:Me(e),publisher:G(e.Publisher),imprint:G(e.Imprint)});return I({title:G(e.Title),description:G(e.Summary),publication:s.date!==void 0||s.publisher!==void 0||s.imprint!==void 0?{edition:s}:void 0,languages:a===void 0?void 0:[a],subjects:Y(o),contributors:Y(Pe(e)),readingDirection:ke(e),numberOfPages:q(e.PageCount),identifiers:Y(i),belongsTo:He(e),comic:Ve(e,r)})};async function Z(t){let n=t.records.filter(e=>s(e)&&e.uri.endsWith(`com.kobobooks.display-options.xml`));if(n.length===0)return;let r;for(let t of n){let n=await p(t);try{let{renditionLayout:e}=pe(n);e&&(r=e)}catch(n){e.r.error(`Unable to parse ${de} (${t.uri})`,n)}}return{kind:`kobo`,...r===void 0?{}:{renditionLayout:r}}}var Ue={renditionLayout:`renditionLayout`},We=e=>I({renditionLayout:e.renditionLayout,kobo:e.renditionLayout===void 0?void 0:{fixedLayout:e.renditionLayout===`pre-paginated`}}),Ge=async({archive:e,archiveOpf:t})=>{if(!t)return[];let{opf:n,basePath:r}=t,{spineRows:i}=n;return e.records.filter(e=>i.find(t=>r?`${r}/${t.href}`===e.uri:`${t.href}`===e.uri))},Ke=e=>e.toLowerCase().endsWith(`.opf`),qe=e=>e.records.some(e=>!e.dir&&(Ke(e.basename)||Ke(e.uri))),Je=new Set([8,12,13,14]),Ye=e=>{if(e==null)return;let t=String(e).replace(/\D/g,``);if(!(t.length===0||!Je.has(t.length)))return t},Xe=/(?:97[89])?\d{9}[\dXx]/,Ze=e=>{if(e==null)return;let t=String(e).trim().replace(/^urn:isbn:/i,``).replace(/^isbn[:\s-]*/i,``),n=t.replace(/[^0-9Xx]/g,``);if(n.length===10||n.length===13)return n.toUpperCase();let r=t.match(Xe);if(r)return r[0].toUpperCase()},Qe=e=>{if(e===void 0)return;let t=e.trim().match(/^(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?/);if(t===null)return;let[,n,r,i]=t;return{...n===void 0?{}:{year:Number.parseInt(n,10)},...r===void 0?{}:{month:Number.parseInt(r,10)},...i===void 0?{}:{day:Number.parseInt(i,10)}}},$e={manifestItems:`readingOrder`,spineRows:`readingOrder`,spineTocIdref:`toc`,identifiers:`identifiers`,title:`title`,creators:`contributors`,contributors:`contributors`,publisher:`publication.edition.publisher`,description:`description`,rights:`rights`,languages:`languages`,subjects:`subjects`,date:`publication.edition.date`,coverHref:`cover`,renditionLayoutMeta:`renditionLayout`,renditionFlowMeta:`renditionFlow`,renditionSpreadMeta:`renditionSpread`,pageProgressionDirection:`readingDirection`,guide:`guide`,metas:`properties`},et=e=>{let t=e.trim();if(/^https?:\/\//i.test(t))try{let e=new URL(t);if((e.protocol===`http:`||e.protocol===`https:`)&&e.hostname.length>0)return`URL`}catch{}let n=Ze(t);return n!==void 0&&(n.length===10||/^97[89]/.test(n))?`ISBN`:Ye(t)===void 0?`Unknown`:`GTIN`},tt=e=>{switch(e.trim().toLowerCase()){case`isbn`:return`ISBN`;case`gtin`:return`GTIN`;case`doi`:return`DOI`;case`googlebooks`:return`GoogleBooks`;case`openlibrary`:return`OpenLibrary`;case`projectgutenberg`:return`ProjectGutenberg`;case`url`:return`URL`;case`unknown`:return`Unknown`;default:return e.trim()}},nt={art:`artist`,aut:`author`,clr:`colorist`,ctb:`contributor`,edt:`editor`,ill:`illustrator`,nrt:`narrator`,trl:`translator`},rt=e=>e.contributors.map(e=>{let t=e.roles.map(e=>nt[e.trim().toLowerCase()]??e);return I({name:e.name,roles:t.length>0?t:[e.source===`creator`?`author`:`contributor`],sortAs:e.fileAs})}),it=(e,t)=>e.refines!==void 0&&e.refines.replace(/^#/,``)===t,at={"02":`ISBN`,"03":`GTIN`,"04":`UPC`,"05":`ISMN`,"06":`DOI`,13:`LCCN`,14:`GTIN`,15:`ISBN`,22:`URN`,23:`OCLC`,24:`ISBN`,25:`ISMN`,26:`DOI`,34:`GTIN`,35:`ARK`},ot=e=>{let t=e?.value?.trim();if(!(t===void 0||t.length===0))return e?.scheme?.trim().toLowerCase()===`onix:codelist5`?at[t]??t:t},st=(e,t)=>{let n=e.id;if(n!==void 0)return ot(t.find(e=>e.property===`identifier-type`&&it(e,n)&&e.value!==void 0))},ct=e=>{let t=e?.trim();if(t===void 0||!/^\d+(\.\d+)?$/.test(t))return;let n=Number.parseFloat(t);return Number.isFinite(n)?n:void 0},lt=e=>{let t=[],n=[];for(let r of e){if(r.property!==`belongs-to-collection`||r.value===void 0)continue;let i=r.id,a=t=>i===void 0?void 0:e.find(e=>it(e,i)&&e.property===t&&e.value!==void 0)?.value,o=a(`collection-type`)?.trim().toLowerCase(),s=I({name:r.value,position:ct(a(`group-position`))});o===`series`?t.push(s):n.push(s)}if(t.length===0){let n=e.find(e=>e.name?.toLowerCase()===`calibre:series`&&e.content!==void 0)?.content;n!==void 0&&t.push(I({name:n,position:ct(e.find(e=>e.name?.toLowerCase()===`calibre:series_index`)?.content)}))}return{series:t,collection:n}},ut=e=>{let t=e?.trim();if(t===`scrolled-continuous`||t===`scrolled-doc`||t===`paginated`||t===`auto`)return t},dt=e=>{let t=e?.trim();if(t===`none`||t===`landscape`||t===`portrait`||t===`both`||t===`auto`)return t},ft=e=>{let t=e.pageProgressionDirection?.trim().toLowerCase(),n=t===`ltr`||t===`rtl`?t:void 0,r=e.renditionLayoutMeta?.trim().toLowerCase(),i=r===`reflowable`||r===`pre-paginated`?r:void 0,a=rt(e),{series:o,collection:s}=lt(e.metas),c=o.length>0||s.length>0?I({series:o.length>0?o:void 0,collection:s.length>0?s:void 0}):void 0,l=I({date:Qe(e.date),publisher:e.publisher});return I({title:e.title,description:e.description,publication:l.date!==void 0||l.publisher!==void 0?{edition:l}:void 0,rights:e.rights,languages:e.languages.length>0?[...e.languages]:void 0,subjects:e.subjects.length>0?[...e.subjects]:void 0,contributors:a.length>0?a:void 0,readingDirection:n,renditionLayout:i,renditionFlow:ut(e.renditionFlowMeta),renditionSpread:dt(e.renditionSpreadMeta),identifiers:e.identifiers.length>0?e.identifiers.map(t=>I({value:t.value,scheme:tt(t.scheme??st(t,e.metas)??et(t.value)),unique:t.unique})):void 0,belongsTo:c,properties:e.metas.length>0?[...e.metas]:void 0})},pt=e=>e.kind===`comicInfo`?X(e):e.kind===`kobo`?We(e):e.kind===`apple`?Te(e):ft(e),mt=e=>{let t=e.opf===void 0?void 0:ft(e.opf),n=e.comicInfo===void 0?void 0:X(e.comicInfo),r=e.apple===void 0?void 0:Te(e.apple),i=e.kobo===void 0?void 0:We(e.kobo),a=[...t?.identifiers??[],...n?.identifiers??[]],o=I({date:t?.publication?.edition?.date??n?.publication?.edition?.date,publisher:t?.publication?.edition?.publisher??n?.publication?.edition?.publisher,imprint:t?.publication?.edition?.imprint??n?.publication?.edition?.imprint});return I({title:t?.title??n?.title,description:t?.description??n?.description,publication:o.date!==void 0||o.publisher!==void 0||o.imprint!==void 0?{edition:o}:void 0,rights:t?.rights,languages:t?.languages??n?.languages,subjects:t?.subjects??n?.subjects,contributors:t?.contributors??n?.contributors,readingDirection:n?.readingDirection??t?.readingDirection,renditionLayout:t?.renditionLayout??r?.renditionLayout??i?.renditionLayout,renditionFlow:t?.renditionFlow,renditionSpread:t?.renditionSpread,numberOfPages:n?.numberOfPages,identifiers:a.length>0?a:void 0,belongsTo:t?.belongsTo??n?.belongsTo,properties:t?.properties,comic:n?.comic,apple:r?.apple,kobo:i?.kobo})},ht=e=>{let t=[...e.records].sort((e,t)=>(0,n.sortByTitleComparator)(e.uri,t.uri)),r=(e,t,n,i,a)=>{let o=e.find(e=>e.title===t),[s,...c]=n;return o?s?[...e.filter(e=>e!==o),{...o,contents:r(o.contents,s,c,i,a)}]:o.path.split(`/`).length>a.split(`/`).length?[...e.filter(e=>e!==o),{...o,path:a,containerHref:i}]:e:s?[...e,{contents:r([],s,c,i,a),containerHref:i,path:a,title:t}]:[...e,{contents:[],containerHref:i,path:a,title:t}]};return t.reduce((e,t)=>{if(t.dir)return e;let[n,...i]=t.uri.split(`/`).slice(0,-1);if(!n)return e;let a=encodeURI(t.uri).replace(/#/g,`%23`).replace(/\?/g,`%3F`).replace(/\/$/,``),o=t.uri.replace(/\/$/,``);return r(e,n,i,a,o)},[])},gt=e=>e?e.children.map(e=>e instanceof r.XmlTextNode?e.text:e instanceof r.XmlElement?gt(e):``).join(``).trim():``,_t=e=>h(e.properties).includes(`nav`),Q=(e,{basePath:t})=>{let r={contents:[],path:``,containerHref:``,title:``},i=e.childNamed(`span`)||e.childNamed(`a`);r.title=(i?.attr.title||i?.val.trim()||gt(i))??``;let a=i?.name;a!==`a`&&(i=e.descendantWithPath(`${a}.a`),i&&(a=i.name.toLowerCase())),a===`a`&&i?.attr.href&&(r.path=(0,n.urlJoin)(t,i.attr.href),r.containerHref=r.path);let o=e.childNamed(`ol`);if(o){let e=o.childrenNamed(`li`);e&&e.length>0&&(r.contents=e.map(e=>Q(e,{basePath:t})))}return r},vt=(e,{basePath:t})=>{let n=[],i;return e.descendantWithPath(`body.nav.ol`)?i=e.descendantWithPath(`body.nav.ol`)?.children:e.descendantWithPath(`body.section.nav.ol`)&&(i=e.descendantWithPath(`body.section.nav.ol`)?.children),i&&i.length>0&&i.filter(e=>e instanceof r.XmlElement&&e.name===`li`).forEach(e=>{n.push(Q(e,{basePath:t}))}),n},yt=async(e,t)=>{let i=e.manifestItems.find(_t);if(i?.href){let e=t.records.find(e=>e.uri.endsWith(i.href));if(e&&!e.dir)return vt(new r.XmlDocument(await p(e)),{basePath:(0,n.getUriBasePath)(e.uri)})}},bt=(e,{basePath:t,prefix:r})=>{let i=(0,n.urlJoin)(t,e?.childNamed(`${r}content`)?.attr.src||``),a={title:e?.descendantWithPath(`${r}navLabel.${r}text`)?.val||``,path:i,containerHref:i,contents:[]},o=e.childrenNamed(`${r}navPoint`);return o&&o.length>0&&(a.contents=o.map(e=>bt(e,{basePath:t,prefix:r}))),a},xt=(e,{basePath:t})=>{let n=[],r=e.name,i=``;return r.indexOf(`:`)!==-1&&(i=`${r.split(`:`)[0]}:`),e.childNamed(`${i}navMap`)?.childrenNamed(`${i}navPoint`).forEach(e=>{n.push(bt(e,{basePath:t,prefix:i}))}),n},St=async({opf:e,opfBasePath:t,archive:i})=>{let a=e.spineTocIdref;if(a){let o=e.manifestItems.find(e=>e.id===a);if(o){let e=`${t}${t===``?``:`/`}${o.href}`,a=i.records.find(t=>t.uri.endsWith(e));if(a&&!a.dir)return xt(new r.XmlDocument(await p(a)),{basePath:(0,n.getUriBasePath)(a.uri)})}}},Ct=async(e,{opf:t}={})=>{let n=t??await A(e);if(n)return await yt(n.opf,e)||await St({opf:n.opf,opfBasePath:n.basePath,archive:e})||[];let r=ht(e);return r.length===0?void 0:r},wt=[`metadata`,`readingOrder`,`toc`],$=async(t,n)=>{try{return{value:await t(),failed:!1}}catch(t){return e.r.error(`resolveArchive: unable to read ${n}`,t),{value:void 0,failed:!0}}},Tt=e=>{let t=e=>e?.startsWith(`audio/`)===!0||e?.startsWith(`video/`)===!0,n=e.filter(e=>e.renditionLayout===`pre-paginated`&&!t(e.mediaType)).length;return n>0?n:void 0},Et=({archive:e,opf:t,comicInfo:n,apple:r,kobo:i})=>{let a=[];return t!==void 0&&t.value===void 0&&(t.failed||qe(e))&&a.push(`opf`),n?.failed&&a.push(`comicInfo`),r?.failed&&a.push(`apple`),i?.failed&&a.push(`kobo`),a},Dt=3,Ot=async(e,t={})=>{let n=new Set(t.include??wt),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 $(()=>A(e),`opf`):void 0,l=c?.value,u=r||i||s,d=u?await $(()=>W(e),`comicInfo`):void 0,f=d?.value,p=u?await $(()=>V(e),`apple`):void 0,m=p?.value,h=u?await $(()=>Z(e),`kobo`):void 0,g=h?.value,_=r||s?mt({opf:l?.opf,comicInfo:f,apple:m,kobo:g}):void 0,v=a||s?await R(e,{opf:l}):void 0;if(s&&_!==void 0&&v!==void 0&&_.renditionLayout===`reflowable`&&v.every(e=>e.renditionLayout===`reflowable`)&&await B(e,v)&&(_={..._,renditionLayout:`pre-paginated`},v=v.map(e=>({...e,renditionLayout:`pre-paginated`}))),r&&_!==void 0){let t=v??await R(e,{opf:l}),n=await z(e,{opf:l,readingOrder:t}),r=_.numberOfPages??Tt(t);_=I({..._,cover:n,numberOfPages:r})}let y=o?(await $(()=>Ct(e,{opf:l}),`toc`)).value:void 0,b={version:Dt,unreadableSources:Et({archive:e,opf:c,comicInfo:d,apple:p,kobo:h})};return r&&_!==void 0&&(b.metadata=_),a&&v!==void 0&&(b.readingOrder=v),o&&y!==void 0&&(b.toc=y),i&&(b.sources=I({opf:l,comicInfo:f,apple:m,kobo:g})),b};exports.APPLE_IBOOKS_DISPLAY_OPTIONS_FILENAME=j,exports.COMIC_INFO_FILENAME=P,exports.COMIC_INFO_KNOWN_FIELDS=se,exports.COMIC_INFO_MANGA_VALUES=U,exports.KOBO_DISPLAY_OPTIONS_FILENAME=de,exports.appleMetadataHomes=we,exports.arrayBufferFileAccessors=t.t,exports.blobFileAccessors=t.n,exports.comicInfoMetadataHomes=Oe,exports.createArchive=e.n,exports.createArchiveFromArrayBufferList=i,exports.createArchiveFromEntries=e.t,exports.createArchiveFromText=a,exports.createArchiveFromUrls=o,exports.getArchiveFileRecordByUri=l,exports.getArchiveHasComicInfo=H,exports.getArchiveImageRecords=f,exports.getArchiveOpfInfo=m,exports.getSpineItemFilesFromArchive=Ge,exports.isArchiveEpub=qe,exports.isComicInfoManga=De,exports.isDirectoryRecord=c,exports.isFileRecord=s,exports.isImageRecord=d,exports.koboMetadataHomes=Ue,exports.normalizeGtin=Ye,exports.normalizeIsbn=Ze,exports.opfMetadataHomes=$e,exports.parseAppleDisplayOptionsXml=N,exports.parseComicInfo=F,exports.parseKoboXml=pe,exports.parseOpf=k,exports.parseW3cDtfDate=Qe,exports.readArchiveApple=V,exports.readArchiveComicInfo=W,exports.readArchiveKobo=Z,exports.readArchiveOpf=A,exports.readRecordAsText=p,exports.readingOrderDocumentsAllHaveViewport=B,exports.resolveArchive=Ot,exports.resolveArchiveCover=z,exports.resolveArchiveMetadata=pt,exports.resolveArchiveReadingOrder=R,exports.resolveArchiveToc=Ct,exports.resolveMetadata=mt,exports.tokenizeXmlSpaceSeparatedList=h;
|
|
32
32
|
//# sourceMappingURL=index.cjs.map
|