jw-epub-parser
Version:
This tool will help you to parse and extract the needed source materials from Meeting Workbook EPUB file. Support for parsing Watchtower Study will be added in future release.
3 lines (2 loc) • 33.2 kB
JavaScript
import*as a from"path";import{readFile as i}from"fs/promises";import e from"jszip";import{parse as r}from"node-html-parser";function t(a,i,e,r){return new(e||(e=Promise))((function(t,o){function n(a){try{u(r.next(a))}catch(a){o(a)}}function s(a){try{u(r.throw(a))}catch(a){o(a)}}function u(a){var i;a.done?t(a.value):(i=a.value,i instanceof e?i:new e((function(a){a(i)}))).then(n,s)}u((r=r.apply(a,i||[])).next())}))}var o={januaryVariations:"1月",februaryVariations:"2月",marchVariations:"3月",aprilVariations:"4 月",mayVariations:"5 月",juneVariations:"6 月",julyVariations:"7 月",augustVariations:"8 月",septemberVariations:"9 月",octoberVariations:"10 月",novemberVariations:"11 月",decemberVariations:"12 月",partMinutesSeparatorVariations:"分鐘"},n={januaryVariations:"一月",februaryVariations:"二月",marchVariations:"三月",aprilVariations:"四月",mayVariations:"五月",juneVariations:"六月",julyVariations:"七月",augustVariations:"八月",septemberVariations:"九月",octoberVariations:"十月",novemberVariations:"十一月",decemberVariations:"十二月",partMinutesSeparatorVariations:"分钟"},s={januaryVariations:"Janvye",februaryVariations:"Fevriye",marchVariations:"Mas",aprilVariations:"Avril",mayVariations:"Me",juneVariations:"Jen",julyVariations:"Jiyè",augustVariations:"Out",septemberVariations:"Septanm",octoberVariations:"Oktòb",novemberVariations:"Novanm",decemberVariations:"Desanm",partMinutesSeparatorVariations:"min."},u={januaryVariations:"January",februaryVariations:"February",marchVariations:"March",aprilVariations:"April",mayVariations:"May",juneVariations:"June",julyVariations:"July",augustVariations:"August",septemberVariations:"September",octoberVariations:"October",novemberVariations:"November",decemberVariations:"December",partMinutesSeparatorVariations:"min."},l={januaryVariations:"January",februaryVariations:"February",marchVariations:"March",aprilVariations:"April",mayVariations:"May",juneVariations:"June",julyVariations:"July",augustVariations:"August",septemberVariations:"September",octoberVariations:"October",novemberVariations:"November",decemberVariations:"December",partMinutesSeparatorVariations:"min."},m={januaryVariations:"janvier",februaryVariations:"février",marchVariations:"mars",aprilVariations:"avril",mayVariations:"mai",juneVariations:"juin",julyVariations:"juillet",augustVariations:"août",septemberVariations:"septembre",octoberVariations:"octobre",novemberVariations:"novembre",decemberVariations:"décembre",partMinutesSeparatorVariations:"min"},c={januaryVariations:"tammikuuta",februaryVariations:"helmikuuta",marchVariations:"maaliskuuta",aprilVariations:"huhtikuuta",mayVariations:"toukokuuta",juneVariations:"kesäkuuta",julyVariations:"heinäkuuta",augustVariations:"elokuuta",septemberVariations:"syyskuuta",octoberVariations:"lokakuuta",novemberVariations:"marraskuuta",decemberVariations:"joulukuuta",partMinutesSeparatorVariations:"min"},V={januaryVariations:"Gennaio",februaryVariations:"Febbraio",marchVariations:"Marzo",aprilVariations:"Aprile",mayVariations:"Maggio",juneVariations:"Giugno",julyVariations:"Luglio",augustVariations:"Agosto",septemberVariations:"Settembre",octoberVariations:"Ottobre",novemberVariations:"Novembre",decemberVariations:"Dicembre",partMinutesSeparatorVariations:"min"},d={januaryVariations:"Enero",februaryVariations:"Pebrero",marchVariations:"Marso",aprilVariations:"Abril",mayVariations:"Mayo",juneVariations:"Hunio",julyVariations:"Hulio",augustVariations:"Agosto",septemberVariations:"Septiembre",octoberVariations:"Oktubre",novemberVariations:"Nobyembre|Nobiembre",decemberVariations:"Disiembre",partMinutesSeparatorVariations:"min."},b={januaryVariations:"1月",februaryVariations:"2月",marchVariations:"3月",aprilVariations:"4月",mayVariations:"5月",juneVariations:"6月",julyVariations:"7月",augustVariations:"8月",septemberVariations:"9月",octoberVariations:"10月",novemberVariations:"11月",decemberVariations:"12月",partMinutesSeparatorVariations:"分"},p={januaryVariations:"Січень|січень|січня",februaryVariations:"Лютий|лютий|лютого",marchVariations:"Березень|березень|березня",aprilVariations:"Квітень|квітень|квітня",mayVariations:"Травень|травень|травня",juneVariations:"Червень|червень|червня",julyVariations:"Липень|липень|липня",augustVariations:"Серпень|серпень|серпня",septemberVariations:"Вересень|вересень|вересня",octoberVariations:"Жовтень|жовтень|жовтня",novemberVariations:"Листопад|листопад|листопада",decemberVariations:"Грудень|грудень|грудня",partMinutesSeparatorVariations:"хв"},y={januaryVariations:"January",februaryVariations:"February",marchVariations:"March",aprilVariations:"April",mayVariations:"May",juneVariations:"June",julyVariations:"July",augustVariations:"August",septemberVariations:"September",octoberVariations:"October",novemberVariations:"November",decemberVariations:"December",partMinutesSeparatorVariations:"분"},g={januaryVariations:"Ianuarie",februaryVariations:"Februarie",marchVariations:"Martie",aprilVariations:"Aprilie",mayVariations:"Mai",juneVariations:"Iunie",julyVariations:"Iulie",augustVariations:"August",septemberVariations:"Septembrie",octoberVariations:"Octombrie",novemberVariations:"Noiembrie",decemberVariations:"Decembrie",partMinutesSeparatorVariations:"min."},f={januaryVariations:"Janoary",februaryVariations:"Febroary",marchVariations:"Martsa",aprilVariations:"Aprily",mayVariations:"Mey",juneVariations:"Jona",julyVariations:"Jolay",augustVariations:"Aogositra",septemberVariations:"Septambra",octoberVariations:"Oktobra",novemberVariations:"Novambra",decemberVariations:"Desambra",partMinutesSeparatorVariations:"min."},w={januaryVariations:"Januari",februaryVariations:"Februari",marchVariations:"Mac",aprilVariations:"April",mayVariations:"Mei",juneVariations:"Jun",julyVariations:"Julai",augustVariations:"Ogos",septemberVariations:"September",octoberVariations:"Oktober",novemberVariations:"November",decemberVariations:"Disember",partMinutesSeparatorVariations:"min."},j={januaryVariations:"januari",februaryVariations:"februari",marchVariations:"maart",aprilVariations:"april",mayVariations:"mei",juneVariations:"juni",julyVariations:"juli",augustVariations:"augustus",septemberVariations:"september",octoberVariations:"oktober",novemberVariations:"november",decemberVariations:"december",partMinutesSeparatorVariations:"min."},_={januaryVariations:"Styczeń|stycznia",februaryVariations:"Luty|lutego",marchVariations:"Marzec|marca",aprilVariations:"Kwiecień|kwietnia",mayVariations:"maja|Maj",juneVariations:"Czerwiec|czerwca",julyVariations:"Lipiec|lipca",augustVariations:"Sierpień|sierpnia",septemberVariations:"Wrzesień|września",octoberVariations:"października|Październik",novemberVariations:"listopada|Listopad",decemberVariations:"Grudzień|grudnia",partMinutesSeparatorVariations:"min|min."},h={januaryVariations:"January",februaryVariations:"February",marchVariations:"March",aprilVariations:"April",mayVariations:"May",juneVariations:"June",julyVariations:"July",augustVariations:"August",septemberVariations:"September",octoberVariations:"October",novemberVariations:"November",decemberVariations:"December",partMinutesSeparatorVariations:"min."},S={januaryVariations:"Enero",februaryVariations:"Febrero",marchVariations:"Marzo",aprilVariations:"Abril",mayVariations:"Mayo",juneVariations:"Junio",julyVariations:"Julio",augustVariations:"Agosto",septemberVariations:"Septiembre",octoberVariations:"Octubre",novemberVariations:"Noviembre",decemberVariations:"Diciembre",partMinutesSeparatorVariations:"mins.|min."},$={januaryVariations:"Jaanuar|jaanuarini|jaanuarist",februaryVariations:"Veebruar|veebruarini|veebruarist",marchVariations:"Märts|märtsini|märtsist",aprilVariations:"Aprill|aprillini|aprillist",mayVariations:"Mai|maini|maist",juneVariations:"Juuni|juunini",julyVariations:"Juuli|juulini|juulist",augustVariations:"August|augustini|augustist",septemberVariations:"September|septembrini|septembrist",octoberVariations:"Oktoober|oktoobrini|oktoobrist",novemberVariations:"November|novembrini|novembrist",decemberVariations:"Detsember|detsembrini|detsembrist",partMinutesSeparatorVariations:"min"},v={januaryVariations:"januar|januarja",februaryVariations:"februar|februarja",marchVariations:"marec|marca",aprilVariations:"april|aprila",mayVariations:"maj|maja",juneVariations:"junij|junija",julyVariations:"julij|julija",augustVariations:"avgust|avgusta",septemberVariations:"september|septembra",octoberVariations:"oktober|oktobra",novemberVariations:"november|novembra",decemberVariations:"december|decembra",partMinutesSeparatorVariations:"min."},M={januaryVariations:"Januari",februaryVariations:"Februari",marchVariations:"Machi",aprilVariations:"Aprili",mayVariations:"Mei",juneVariations:"Juni",julyVariations:"Julai",augustVariations:"Agosti",septemberVariations:"Septemba",octoberVariations:"Oktoba",novemberVariations:"Novemba",decemberVariations:"Desemba",partMinutesSeparatorVariations:"Dak."},E={januaryVariations:"de janeiro|janeiro",februaryVariations:"de fevereiro|fevereiro",marchVariations:"de março|março",aprilVariations:"de abril|abril",mayVariations:"de maio|maio",juneVariations:"de junho|junho",julyVariations:"de julho|julho",augustVariations:"de agosto|agosto",septemberVariations:"de setembro|setembro",octoberVariations:"de outubro|outubro",novemberVariations:"de novembro|novembro",decemberVariations:"de dezembro|dezembro",partMinutesSeparatorVariations:"min|min."},x={januaryVariations:"Enero",februaryVariations:"Pebrero",marchVariations:"Marso",aprilVariations:"Abril",mayVariations:"Mayo",juneVariations:"Hunyo",julyVariations:"Hulyo",augustVariations:"Agosto",septemberVariations:"Setyembre",octoberVariations:"Oktubre",novemberVariations:"Nobyembre",decemberVariations:"Disyembre",partMinutesSeparatorVariations:"min."},k={januaryVariations:"Ocak",februaryVariations:"Şubat",marchVariations:"Mart",aprilVariations:"Nisan|NİSAN",mayVariations:"MAYIS|Mayıs",juneVariations:"HAZİRAN|Haziran",julyVariations:"Temmuz",augustVariations:"Ağustos",septemberVariations:"Eylül",octoberVariations:"Ekim|EKİM",novemberVariations:"Kasım|KASIM",decemberVariations:"Aralık|ARALIK",partMinutesSeparatorVariations:"dk.|dk"},A={januaryVariations:"Janvie",februaryVariations:"Fevrie",marchVariations:"Marsa",aprilVariations:"Avrily",mayVariations:"Mey",juneVariations:"Jona",julyVariations:"Jolay",augustVariations:"Aogositra",septemberVariations:"Septambra",octoberVariations:"Oktobra|Okotobra",novemberVariations:"Novambra",decemberVariations:"Desambra",partMinutesSeparatorVariations:"min.|min"},T={januaryVariations:"Zanvie",februaryVariations:"Fevrie",marchVariations:"Marsy",aprilVariations:"Avrily",mayVariations:"May",juneVariations:"Ziain",julyVariations:"Zie|ZIE",augustVariations:"Aoty",septemberVariations:"Septambra",octoberVariations:"Oktobra",novemberVariations:"Novambra",decemberVariations:"Desambra",partMinutesSeparatorVariations:"min.|min"},R={januaryVariations:"de janeiro|janeiro",februaryVariations:"de fevereiro|fevereiro",marchVariations:"de março|março",aprilVariations:"de abril|abril",mayVariations:"de maio|maio",juneVariations:"de junho|junho",julyVariations:"de julho|julho",augustVariations:"de agosto|agosto",septemberVariations:"de setembro|setembro",octoberVariations:"de outubro|outubro",novemberVariations:"de novembro|novembro",decemberVariations:"de dezembro|dezembro",partMinutesSeparatorVariations:"min."},N={januaryVariations:"Janoary",februaryVariations:"Febroary",marchVariations:"Martsa",aprilVariations:"Aprily",mayVariations:"Mey",juneVariations:"Jona",julyVariations:"Jolay",augustVariations:"Aogositra",septemberVariations:"Septambra",octoberVariations:"Oktobra",novemberVariations:"Novambra",decemberVariations:"Desambra",partMinutesSeparatorVariations:"min."},J={januaryVariations:"January",februaryVariations:"February",marchVariations:"March",aprilVariations:"April",mayVariations:"May",juneVariations:"June",julyVariations:"July",augustVariations:"August",septemberVariations:"September",octoberVariations:"October",novemberVariations:"November",decemberVariations:"December",partMinutesSeparatorVariations:"Simma"},O={januaryVariations:"Январь|января",februaryVariations:"Февраль|февраля",marchVariations:"Март|марта",aprilVariations:"Апрель|апреля",mayVariations:"Май|мая",juneVariations:"Июнь|июня",julyVariations:"Июль|июля",augustVariations:"Август|августа",septemberVariations:"Сентябрь|сентября",octoberVariations:"Октябрь|октября",novemberVariations:"Ноябрь|ноября",decemberVariations:"Декабрь|декабря",partMinutesSeparatorVariations:"мин."},L={januaryVariations:"tháng 1",februaryVariations:"tháng 2",marchVariations:"tháng 3",aprilVariations:"tháng 4",mayVariations:"tháng 5",juneVariations:"tháng 6",julyVariations:"tháng 7",augustVariations:"tháng 8",septemberVariations:"tháng 9",octoberVariations:"tháng 10",novemberVariations:"tháng 11",decemberVariations:"tháng 12",partMinutesSeparatorVariations:"phút"},W={januaryVariations:"Zanviè",februaryVariations:"Fevriè|Feviè",marchVariations:"Marsa",aprilVariations:"Avrily",mayVariations:"Mey",juneVariations:"Ziein",julyVariations:"Ziè",augustVariations:"Oòh",septemberVariations:"Septambra",octoberVariations:"Oktobra",novemberVariations:"Novambra",decemberVariations:"Desambra",partMinutesSeparatorVariations:"min.|min"},I={januaryVariations:"Januar",februaryVariations:"Februar",marchVariations:"März",aprilVariations:"April",mayVariations:"Mai",juneVariations:"Juni",julyVariations:"Juli",augustVariations:"August",septemberVariations:"September",octoberVariations:"Oktober",novemberVariations:"November",decemberVariations:"Dezember",partMinutesSeparatorVariations:"Min|Min."},P={januaryVariations:"Mutarama",februaryVariations:"Gashyantare",marchVariations:"Werurwe",aprilVariations:"Mata",mayVariations:"Gicurasi",juneVariations:"Kamena",julyVariations:"Nyakanga",augustVariations:"Kanama",septemberVariations:"Nzeri",octoberVariations:"Ukwakira",novemberVariations:"Ugushyingo",decemberVariations:"Ukuboza",partMinutesSeparatorVariations:"Imin.|Umun."},C={januaryVariations:"januari",februaryVariations:"februari",marchVariations:"mars",aprilVariations:"april",mayVariations:"maj",juneVariations:"juni",julyVariations:"juli",augustVariations:"augusti",septemberVariations:"september",octoberVariations:"oktober",novemberVariations:"november",decemberVariations:"december",partMinutesSeparatorVariations:"min."};global.jw_epub_parser={languages:{CH:o,CHS:n,CR:s,E:u,ELI:l,F:m,FI:c,I:V,IL:d,J:b,K:p,KO:y,M:g,MG:f,ML:w,O:j,P:_,PGW:h,S:S,ST:$,SV:v,SW:M,T:E,TG:x,TK:k,TND:A,TNK:T,TPO:R,TTM:N,TW:J,U:O,VT:L,VZ:W,X:I,YW:P,Z:C},path:a,readFile:i};var F=[{locale:"en",code:"E"},{locale:"fr-FR",code:"F"},{locale:"it-IT",code:"I"},{locale:"ja-JP",code:"J"},{locale:"uk-UA",code:"K"},{locale:"ko-KR",code:"KO"},{locale:"ro-RO",code:"M"},{locale:"mg-MG",code:"MG"},{locale:"pl-PL",code:"P"},{locale:"es-ES",code:"S"},{locale:"pt-POR",code:"T"},{locale:"pt-TPO",code:"TPO"},{locale:"tl-PH",code:"TG"},{locale:"tr-TR",code:"TK"},{locale:"mg-TND",code:"TND"},{locale:"mg-TNK",code:"TNK"},{locale:"mg-TTM",code:"TTM"},{locale:"tw-TW",code:"TW"},{locale:"uk-UA",code:"U"},{locale:"mg-VZ",code:"VZ"},{locale:"de-DE",code:"X"},{locale:"cmn-Hant",code:"CH"},{locale:"ch-CHS",code:"CHS"},{locale:"fi-FI",code:"FI"},{locale:"sv-SE",code:"Z"},{locale:"nl-NL",code:"O"},{locale:"wes-PGW",code:"PGW"},{locale:"sl-SI",code:"SV"},{locale:"sw-KE",code:"SW"},{locale:"et-EE",code:"ST"},{locale:"ht-HT",code:"CR"},{locale:"ilo-PH",code:"IL"},{locale:"en-LR",code:"ELI"},{locale:"rw-RW",code:"YW"},{locale:"vi-VN",code:"VT"},{locale:"ms-MY",code:"ML"}];const D=a=>{let i=!1;if(a.startsWith("OEBPS")&&a.endsWith(".xhtml")&&-1===a.indexOf("-extracted")){const e=a.split("/")[1].split(".")[0];isNaN(parseFloat(e))||(i=!0)}return i},z=(a,i)=>t(void 0,void 0,void 0,(function*(){return yield a.file(i).async("string")})),q=a=>{let i=!1,e=!1,r=!1,t=!1;return e=!!a.querySelector("[class*=treasures]"),e&&(r=!!a.querySelector("[class*=ministry]"),t=!!a.querySelector("[class*=christianLiving]")),e||(e=!!a.querySelector(".du-color--teal-700"),e&&(r=!!a.querySelector(".du-color--gold-700"),t=!!a.querySelector(".du-color--maroon-600"))),!0===e&&!0===r&&!0===t&&(i=!0),i},U=a=>r(a),G=a=>!!a.querySelector(".groupTOC"),K=(a,i)=>t(void 0,void 0,void 0,(function*(){let e;for(let[r]of Object.entries(a.files)){if(jw_epub_parser.path.basename(r)===i){const i=yield z(a,r);e=U(i);break}}return e})),Z=a=>/^mwb_[A-Z][A-Z]?[A-Z]?_202\d(0[1-9]|1[0-2])\.epub$/i.test(a),H=a=>/^w_[A-Z][A-Z]?[A-Z]?_202\d(0[1-9]|1[0-2])\.epub$/i.test(a),B=a=>{let i;return i="object"==typeof a&&"url"in a?a.url:a instanceof Blob&&"name"in a?a.name:a,jw_epub_parser.path.basename(i)};class Y extends Error{constructor(a,i){super(i),this.code=`jw-epub-parser/failed-${a}`}}const X=jw_epub_parser.languages,Q=a=>[{index:0,name:X[a].januaryVariations},{index:1,name:X[a].februaryVariations},{index:2,name:X[a].marchVariations},{index:3,name:X[a].aprilVariations},{index:4,name:X[a].mayVariations},{index:5,name:X[a].juneVariations},{index:6,name:X[a].julyVariations},{index:7,name:X[a].augustVariations},{index:8,name:X[a].septemberVariations},{index:9,name:X[a].octoberVariations},{index:10,name:X[a].novemberVariations},{index:11,name:X[a].decemberVariations}],aa={ELI:{"Study Article 23: July 31–August 6 20":"Study Article 23: July 31, 2023–August 6, 2023"},PGW:{"Fine-Fine Things Wey You See for Bible":"Fine-Fine Things Wey You See for Bible: (10 min.)"},ST:{"Seda artiklit uuritakse vahemikus 28. oktoobrist 3.novembrini 2024.":"Seda artiklit uuritakse vahemikus 28. oktoobrist 3. novembrini 2024."},SW:{"7. Video ya Machi ya Mambo Yaliyotimizwa na Tengenezo (10 min.) Onyesha VIDEO.":"7. Video ya Machi ya Mambo Yaliyotimizwa na Tengenezo (Dak. 10) Onyesha VIDEO."},YW:{"4. Gutangiza ikiganiro (Umun. 1) KUBWIRIZA KU NZU N’INZU. Umubwiriza asange umuntu avuga urundi rurimi. (lmd isomo rya 2 ingingo ya 5)":"4. Gutangiza ikiganiro (Imin. 1) KUBWIRIZA KU NZU N’INZU. Umubwiriza asange umuntu avuga urundi rurimi. (lmd isomo rya 2 ingingo ya 5)"}},ia=a=>{const i=a.match(/(\d+)/);if(i&&i.length>0){const a=+i[0];if(a<=161)return a}return a},ea=(a,i)=>{var e;const r=(a=>X[a].partMinutesSeparatorVariations)(i);let t=a;const o=aa[i];if(o){const i=o[a];i&&(t=i)}const n=new RegExp(`(.+?)(?:: )?[((](\\d+)(?: | | )?(?:${r})[))](?: : | |. )?(.+?)?$`,"giu"),s=new RegExp(`(.+?)(?:: )?[((](\\d+)(?: | )?(?:${r})[))]?(?: : | |. )?(.+?)?$`,"giu"),u=new RegExp(`(.+?)(?: )?\\((?:${r})(?: | )?(\\d+).?\\)(?: |.)?(.+?)?$`,"giu"),l={common:n,PGW:s,SW:u,TW:u,YW:u},m=l[i]||l.common;if(!t.match(m))throw new Y("jw-epub-parser",`Parsing failed. The input was: ${t}`);const c=Array.from(m.exec(t)),V=c.at(1).trim(),d=+c.at(2).trim(),b=null===(e=c.at(3))||void 0===e?void 0:e.trim(),p=/^(:?\d+)(?:.|.\s)(.+?)$/giu,y=V.match(p);let g=V;if(y){g=Array.from(p.exec(V)).at(2).trim()}return{type:g,src:b,time:d,fulltitle:V}},ra="\\s? bis |[-–—]| do | — | – \\s?",ta="\\p{L}+\\p{M}*";let oa,na,sa;oa=`(\\d{1,2})(?:er|º)?(?:${ra})(?:\\d{1,2}) (${ta})`,na=`(\\d{1,2})(?:er|º)? (${ta})(?:${ra})(?:\\d{1,2})(?:er|º)?(?: )?(?:${ta})`,sa=`(\\d{1,2}) (${ta}) (\\d{4})`;const ua=`${oa}|${na}|${sa}`;oa=`(${ta}) (\\d{1,2})[-–](?:\\d{1,2})`,na=`(${ta}) (\\d{1,2})[-–](?:${ta}) (?:\\d{1,2})`,sa=`(${ta}) (\\d{1,2}), (\\d{4})`;const la=`${oa}|${na}|${sa}`;oa="(\\d{1,2})月(\\d{1,2})[-–](?:\\d{1,2})日",na="(\\d{1,2})月(\\d{1,2})日",sa="(?:\\d{4})年(\\d{1,2})月(\\d{1,2})日";const ma=`${oa}|${na}|${sa}`;oa="(\\d{1,2})월 (\\d{1,2})[-–](?:\\d{1,2})일",na="(\\d{1,2})월 (\\d{1,2})일",sa="(?:\\d{4})년 (\\d{1,2})월 (\\d{1,2})일";const ca=`${oa}|${na}|${sa}`;oa=`(\\d{1,2})[-–](?:\\d{1,2}) (${ta})`,na=`(\\d{1,2}) (${ta}) do (?:\\d{1,2}) (?:${ta})`,sa=`(\\d{1,2}) (${ta}) (\\d{4})`;const Va=`${oa}|${na}|${sa}`;oa=`(\\d{1,2})[-–](?:\\d{1,2}) de (${ta})`,na=`(\\d{1,2}) de (${ta}) a (?:\\d{1,2}) de (?:${ta})`,sa=`(\\d{1,2}) de (${ta}) de (\\d{4})`;const da=`${oa}|${na}|${sa}`;oa=`(\\d{1,2})[-–](?:\\d{1,2}) de (${ta})`,na=`(\\d{1,2}) de (${ta})[-–](?:\\d{1,2})(?:.º)? de (?:${ta})`,sa=`(\\d{1,2}) de (${ta}) de (\\d{4})`;const ba=`${oa}|${na}|${sa}`;oa=`(\\d{1,2}) a (?:\\d{1,2}) de (${ta})`,na=`(\\d{1,2}) de (${ta}) a (?:\\d{1,2}) de (?:${ta})`,sa=`(\\d{1,2}) de (${ta}) de (\\d{4})`;const pa=`${oa}|${na}|${sa}`;oa="(\\d{1,2})[-](?:\\d{1,2}) (\\p{L}+\\p{M}*\\s\\d{1,2})",na="(\\d{1,2}) (\\p{L}+\\p{M}*\\s\\d{1,2})[–]NGÀY (?:\\d{1,2}) (?:\\p{L}+\\p{M}*\\s\\d{1,2})",sa="(\\d{1,2}) (\\p{L}+\\p{M}*\\s\\d{1,2}) năm (\\d{4})";const ya=`${oa}|${na}|${sa}`;oa=`(\\d{1,2}).[-–](?:\\d{1,2}). (${ta})`,na=`(\\d{1,2}). (${ta}) ?[-–] ?(?:\\d{1,2}). (?:${ta})`,sa=`(\\d{1,2}). (${ta}) (\\d{4})`;const ga=`${oa}|${na}|${sa}`,fa={common:new RegExp(ua,"giu"),CH:new RegExp(ma,"giu"),CHS:new RegExp(ma,"giu"),E:new RegExp(la,"giu"),ELI:new RegExp(la,"giu"),FI:new RegExp(ga,"giu"),IL:new RegExp(la,"giu"),J:new RegExp(ma,"giu"),KO:new RegExp(ca,"giu"),P:new RegExp(Va,"giu"),PGW:new RegExp(la,"giu"),S:new RegExp(da,"giu"),ST:new RegExp(ga,"giu"),SV:new RegExp(ga,"giu"),SW:new RegExp(la,"giu"),T:new RegExp(ba,"giu"),TG:new RegExp(la,"giu"),TPO:new RegExp(pa,"giu"),TW:new RegExp(la,"giu"),VT:new RegExp(ya,"giu"),X:new RegExp(ga,"giu")},wa=a=>{let i,e;return a[1]?(e=a[1],i=a[2]):a[3]?(e=a[3],i=a[4]):(e=a[5],i=a[6]),[e,i]},ja={common:a=>{let i,e;return a[1]?(i=a[1],e=a[2]):a[3]?(i=a[3],e=a[4]):(i=a[5],e=a[6]),[e,i]},CH:wa,CHS:wa,E:wa,ELI:wa,IL:wa,J:wa,KO:wa,PGW:wa,SW:wa,TG:wa,TW:wa};oa=`(\\d{1,2})(?:${ra})(?:\\d{1,2})? (${ta})(?:,)? (\\d{4})`,na=`(\\d{1,2}) (${ta})(?:${ra})(?:\\d{1,2}) (?:${ta}) (\\d{4})`,sa=`(\\d{1,2}) (${ta})(?:,)? (\\d{4})`;const _a=`${oa}|${na}|${sa}`;oa=`(${ta}) (\\d{1,2})[-–](?:\\d{1,2})?, (\\d{4})`,na=`(${ta}) (\\d{1,2})[-–](?:${ta}) (?:\\d{1,2}), (\\d{4})`,sa=`(${ta}) (\\d{1,2}), (\\d{4})`;const ha=`${oa}|${na}|${sa}`;oa="(\\d{4})年(?:nián)?(\\d{1,2})月(?:yuè)?(\\d{1,2})[-–~](\\d{1,2})日",na="(\\d{4})年(?:nián)?(\\d{1,2})月(?:yuè)?(\\d{1,2})日";const Sa=`${oa}|${na}`;oa="(\\d{4})년 (\\d{1,2})월 (\\d{1,2})[-–](\\d{1,2})일",na="(\\d{4})년 (\\d{1,2})월 (\\d{1,2})일";const $a=`${oa}|${na}`;oa=`(\\d{1,2}) do (?:\\d{1,2})? (${ta}) (\\d{4})`,na=`(\\d{1,2}) (${ta}) do (?:\\d{1,2}) (?:${ta}) (\\d{4})`,sa=`(\\d{1,2}) (${ta}) (\\d{4})`;const va=`${oa}|${na}|${sa}`;oa=`(\\d{1,2}) al (?:\\d{1,2})? de (${ta}) de (\\d{4})`,na=`(\\d{1,2}) de (${ta}) de (\\d{4})`;const Ma=`${oa}|${na}`;oa=`(\\d{1,2})[-](?:\\d{1,2})? de (${ta}) de (\\d{4})`,na=`(\\d{1,2}) de (${ta})[-](?:\\d{1,2})?(?:.º)? de (?:${ta}) de (\\d{4})`,sa=`(\\d{1,2}) de (${ta}) de (\\d{4})`;const Ea=`${oa}|${na}|${sa}`;oa=`(\\d{1,2}) a (?:\\d{1,2})? de (${ta}) de (\\d{4})`,na=`(\\d{1,2}) de (${ta}) de (\\d{4})`;const xa=`${oa}|${na}`;oa=`(\\d{1,2}) ka hatramin’ny (?:\\d{1,2})? (${ta}) (\\d{4})`,na=`(\\d{1,2}) (${ta}) ka hatramin’ny (?:\\d{1,2}) (?:${ta}) (\\d{4})`,sa=`(\\d{1,2}) (${ta}) (\\d{4})`;const ka=`${oa}|${na}|${sa}`;oa=`(${ta}) (\\d{1,2})[-–](?:\\d{1,2})?, (\\d{4})`,na=`(${ta}) (\\d{1,2})[-–](?:${ta}) (?:\\d{1,2}), (\\d{4})`,sa=`(${ta}) (\\d{1,2}), (\\d{4})`;const Aa=`${oa}|${na}|${sa}`;oa="(\\d{1,2})[-](?:\\d{1,2})? (\\p{L}+\\p{M}*\\s\\d{1,2}) năm (\\d{4})",na="(\\d{1,2}) (\\p{L}+\\p{M}*\\s\\d{1,2}) năm (\\d{4})";const Ta=`${oa}|${na}`;oa=`(\\d{1,2}).(?:${ra})(?:\\d{1,2}).? (${ta}) (\\d{4})`,na=`(\\d{1,2}). (${ta})(?:${ra})(?:\\d{1,2}).? (?:${ta}) (\\d{4})`,sa=`(\\d{1,2}). (${ta}) (\\d{4})`;const Ra=`${oa}|${na}|${sa}`;oa="(\\d{1,2}).[–](?:\\d{1,2}).(\\d{1,2}).(\\d{4})",na="(\\d{1,2}).(\\d{1,2}).[–](?:\\d{1,2}).(?:\\d{1,2}).(\\d{4})",sa="(\\d{1,2}).(\\d{1,2}).(\\d{4})";const Na=`${oa}|${na}|${sa}`,Ja={common:new RegExp(_a,"giu"),CH:new RegExp(Sa,"giu"),CHS:new RegExp(Sa,"giu"),E:new RegExp(ha,"giu"),ELI:new RegExp(ha,"giu"),FI:new RegExp(Na,"giu"),IL:new RegExp(ha,"giu"),J:new RegExp(Sa,"giu"),KO:new RegExp($a,"giu"),P:new RegExp(va,"giu"),PGW:new RegExp(ha,"giu"),S:new RegExp(Ma,"giu"),ST:new RegExp(Ra,"giu"),SV:new RegExp(Ra,"giu"),SW:new RegExp(ha,"giu"),T:new RegExp(Ea,"giu"),TPO:new RegExp(xa,"giu"),TG:new RegExp(ha,"giu"),TTM:new RegExp(ka,"giu"),TW:new RegExp(Aa,"giu"),VT:new RegExp(Ta,"giu"),X:new RegExp(Ra,"giu")},Oa=a=>{let i,e,r;return a[1]?(e=a[1],i=a[2],r=a[3]):a[4]?(e=a[4],i=a[5],r=a[6]):(e=a[7],i=a[8],r=a[9]),[r,e,i]},La=a=>{let i,e,r;return a[1]?(r=a[1],e=a[2],i=a[3]):(r=a[5],e=a[6],i=a[7]),[r,e,i]},Wa={common:a=>{let i,e,r;return a[1]?(i=a[1],e=a[2],r=a[3]):a[4]?(i=a[4],e=a[5],r=a[6]):(i=a[7],e=a[8],r=a[9]),[r,e,i]},CH:La,CHS:La,E:Oa,ELI:Oa,IL:Oa,J:La,KO:La,PGW:Oa,SW:Oa,TG:Oa,TW:Oa},Ia=a=>t(void 0,void 0,void 0,(function*(){let i={};const r=(a=>{const i=B(a),e=Z(i),r=H(i);return e||r})(a);if(!r)throw new Error("The selected epub file has an incorrect naming.");const o=(a=>{let i=!0;const e=B(a),r=Z(e),t=H(e),o=r?"mwb":t?"w":void 0,n=+e.split("_")[2].split(".epub")[0];return"mwb"===o&&n<202207&&(i=!1),"w"===o&&n<202304&&(i=!1),i})(a);if(!o)throw new Error("EPUB import is only supported for Meeting Workbook starting on July 2022, and for Watchtower Study starting on April 2023.");const n=yield(s=a,t(void 0,void 0,void 0,(function*(){let a;if(s instanceof Blob&&(a=s),"object"==typeof s&&"url"in s){const i=yield fetch(s.url);if(200!==i.status)throw new Error("EPUB file could not be downloaded. Check the URL you provided.");const e=yield i.blob();a=yield e.arrayBuffer()}return"string"==typeof s&&(a=yield jw_epub_parser.readFile(s)),a})));var s;const u=yield(l=n,t(void 0,void 0,void 0,(function*(){let a=0,i=0,r="archive_tmp";const t={isBig:!1,isMore:!1,isSuspicious:!1},o=new e,n=yield o.loadAsync(l);for(let[e]of Object.entries(n.files))a++,a>300&&(t.isMore=!0),jw_epub_parser.path.join(r,e).startsWith(r)||(t.isSuspicious=!0),i+=(yield o.file(e).async("arraybuffer")).byteLength,i>2e7&&(t.isBig=!0);return a=0,i=0,t})));var l;if(u.isBig)throw new Error("EPUB file seems to be large. Extract aborted.");if(u.isMore)throw new Error("EPUB file seems to contain more files than expected. Extract aborted.");if(u.isSuspicious)throw new Error("EPUB file seems to be suspicious. Extract aborted.");const m=B(a),c=Z(m),V=H(m),d=yield(a=>t(void 0,void 0,void 0,(function*(){const i=new e;return yield i.loadAsync(a)})))(n),b=yield((a,i,e)=>t(void 0,void 0,void 0,(function*(){const r=[];for(let[t]of Object.entries(a.files))if(D(t)){const o=yield z(a,t),n=U(o);(i?q(n):e&&G(n))&&r.push(n)}return r})))(d,c,V);if(0===b.length)throw new Error(`The file you provided is not a valid ${c?"Meeting Workbook":"Watchtower Study"} EPUB file. Please make sure that the file is correct.`);if(V&&b.length>1)throw new Error("The file you provided is not a valid Watchtower Study EPUB file. Please make sure that the file is correct.");const p=(a=>+B(a).split("_")[2].substring(0,4))(a),y=(a=>B(a).split("_")[1])(a);return c&&(i=yield Fa({htmlDocs:b,epubYear:p,epubLang:y})),V&&(i=yield Da({htmlItem:b[0],epubLang:y,epubContents:d})),i})),Pa=(a,i,e)=>{const r=F.find((a=>a.code===e)),t={},o=(a=>a.querySelector("h1").textContent.replace(/\u00A0/g," "))(a);if(r){const a=((a,i,e)=>{const r=a.trim().replace(" "," ").replace("","").replace("","").replace(/\u200F/g,""),t=fa[e]||fa.common;if(!r.match(t))throw new Y("mwb",`Parsing failed for Meeting Workbook Date. The input was: ${a}`);const o=Array.from(t.exec(r)),n=ja[e]||ja.common;let[s,u]=n(o);if(isNaN(+s)){const a=Q(e).find((a=>a.name.toLocaleLowerCase().includes(s.toLowerCase()))).index;s=String(a+1)}return`${i}/${String(s).padStart(2,"0")}/${String(u).padStart(2,"0")}`})(o,i,e);t.mwb_week_date=a,t.mwb_week_date_locale=o}else t.mwb_week_date=o;t.mwb_weekly_bible_reading=(a=>a.querySelector("h2").textContent.replace(/\u00A0/g," "))(a);const n=(a=>{var i;let e="";const r=a.querySelectorAll(".pGroup");for(const a of r){const i=a.querySelectorAll("li");for(const a of i)e+="@"+a.querySelector("p").textContent}if(0===e.length){const r=a.querySelectorAll("h3");for(const a of r){let r=a.classList.contains("dc-icon--music");const t=!1===a.parentNode.classList.contains("boxContent");if(r||(r=!!a.querySelector(".dc-icon--music")),r||t){let t="";t=a.textContent,r&&(t=t.replace("|","@")),e+="@"+t;const o=null===(i=a.nextElementSibling)||void 0===i?void 0:i.querySelector("p");o&&(e+=" "+o.textContent)}}const t=e.split("@",5).join("@").length;e=e.substring(0,t)+"@junk@junk"+e.substring(t)}return e=e.replace(/\u00A0/g," "),e})(a);let s=n.split("@"),u="";if(t.mwb_song_first=ia(s[1]),u=s[3].trim(),r){const a=ea(u,e);t.mwb_tgw_talk=a.type,t.mwb_tgw_talk_title=a.fulltitle}else t.mwb_tgw_talk=u;if(u=s[4].trim(),r){const a=ea(u,e);t.mwb_tgw_gems_title=a.fulltitle}else t.mwb_tgw_gems_title=u;if(u=s[7].trim(),r){const a=ea(u,e);t.mwb_tgw_bread=a.src,t.mwb_tgw_bread_title=a.fulltitle}else t.mwb_tgw_bread=u;const l=(a=>{let i=1;const e=a.querySelector("#section3");return e&&(i=e.querySelectorAll("li").length),e||(i=a.querySelectorAll(".du-color--gold-700").length-1),i})(a);if(t.mwb_ayf_count=l,u=s[8].trim(),r){const a=ea(u,e);t.mwb_ayf_part1=a.src,t.mwb_ayf_part1_time=a.time,t.mwb_ayf_part1_type=a.type,t.mwb_ayf_part1_title=a.fulltitle}else t.mwb_ayf_part1=u;if(l>1)if(u=s[9].trim(),r){const a=ea(u,e);t.mwb_ayf_part2=a.src,t.mwb_ayf_part2_time=a.time,t.mwb_ayf_part2_type=a.type,t.mwb_ayf_part2_title=a.fulltitle}else t.mwb_ayf_part2=u;if(l>2)if(u=s[10].trim(),r){const a=ea(u,e);t.mwb_ayf_part3=a.src,t.mwb_ayf_part3_time=a.time,t.mwb_ayf_part3_type=a.type,t.mwb_ayf_part3_title=a.fulltitle}else t.mwb_ayf_part3=u;if(l>3)if(u=s[11].trim(),r){const a=ea(u,e);t.mwb_ayf_part4=a.src,t.mwb_ayf_part4_time=a.time,t.mwb_ayf_part4_type=a.type,t.mwb_ayf_part4_title=a.fulltitle}else t.mwb_ayf_part4=u;let m=l>3?12:l>2?11:l>1?10:9;t.mwb_song_middle=ia(s[m]);const c=(a=>{let i=1;const e=a.querySelector("#section4");if(e&&(i=e.querySelectorAll("li").length,i=6===i?2:1),null===e){let e=a.querySelector("h2.du-color--maroon-600").parentNode.nextElementSibling;for(;e;){const a="H3"===e.tagName?e:e.querySelector("h3");a&&!1===a.parentNode.classList.contains("boxContent")&&i++,e=e.nextElementSibling}i-=4}return i})(a);if(t.mwb_lc_count=c,m++,u=s[m].trim(),r){const a=ea(u,e);t.mwb_lc_part1=a.type,t.mwb_lc_part1_time=a.time,t.mwb_lc_part1_title=a.fulltitle,a.src&&""!==a.src&&(t.mwb_lc_part1_content=a.src)}else t.mwb_lc_part1=u;if(2===c)if(m++,u=s[m].trim(),r){const a=ea(u,e);t.mwb_lc_part2=a.type,t.mwb_lc_part2_time=a.time,t.mwb_lc_part2_title=a.fulltitle,a.src&&""!==a.src&&(t.mwb_lc_part2_content=a.src)}else t.mwb_lc_part2=u;if(m++,u=s[m].trim(),r){const a=ea(u,e);t.mwb_lc_cbs=a.src,t.mwb_lc_cbs_title=a.fulltitle}else t.mwb_lc_cbs=u;return m++,m++,u=s[m].trim(),t.mwb_song_conclude=ia(u),t},Ca=(a,i,e)=>{const r=F.find((a=>a.code===e)),t={},o=(a=>{let i;const e=a.querySelector(".desc");return null===e&&(i=a.textContent.replace(/\u00A0/g," ")),null!==e&&(i=e.textContent.replace(/\u00A0/g," ")),i})(a);if(o.length>0)if(r){const a=((a,i)=>{let e=a=a.trim().replace(" "," ").replace("","").replace("","").replace(/\u200F/g,"");const r=aa[i];if(r){const i=r[a];i&&(e=i)}const t=Ja[i]||Ja.common;if(!e.match(t))throw new Y("wtstudy",`Parsing failed for Watchtower Study Date. The input was: ${e}`);const o=Array.from(t.exec(e)),n=Wa[i]||Wa.common;let[s,u,l]=n(o);if(isNaN(+u)){const a=Q(i).find((a=>a.name.toLocaleLowerCase().includes(u.toLowerCase()))).index;u=String(a+1)}return`${s}/${String(u).padStart(2,"0")}/${String(l).padStart(2,"0")}`})(o,e);t.w_study_date=a,t.w_study_date_locale=o}else t.w_study_date=o;const n=(a=>{let i;const e=a.querySelector("h2");null===e&&(i=a.nextElementSibling.querySelector("a").textContent.replace(/\u00A0/g," "));return null!==e&&(i=e.textContent.trim().replace(/\u00A0/g," ")),i})(a);t.w_study_title=n;const s=(a=>{const i=a.querySelectorAll(".pubRefs"),e=i.at(0),r=ia(e.textContent);let t=i.at(-1);2===i.length&&(t=a.querySelector(".blockTeach").nextElementSibling);return{w_study_opening_song:r,w_study_concluding_song:ia(t.textContent)}})(i);return t.w_study_opening_song=s.w_study_opening_song,t.w_study_concluding_song=s.w_study_concluding_song,t},Fa=a=>t(void 0,[a],void 0,(function*({htmlDocs:a,epubYear:i,epubLang:e}){const r=[];for(const t of a){const a=Pa(t,i,e);r.push(a)}return r})),Da=a=>t(void 0,[a],void 0,(function*({htmlItem:a,epubLang:i,epubContents:e}){const r=[],t=(a=>a.querySelectorAll("h3"))(a);for(const[a,o]of t.entries()){const a=o.nextElementSibling.querySelector("a").getAttribute("href"),t=yield K(e,a),n=Ca(o,t,i);r.push(n)}return r})),za=a=>t(void 0,void 0,void 0,(function*(){try{(a=>{if(!a)throw new Error("You did not pass anything to the loadEPUB function.")})(a);return yield Ia(a)}catch(a){throw console.error(a),new Error(null==a?void 0:a.message)}}));export{za as loadEPUB};
//# sourceMappingURL=index.js.map