jw-epub-parser
Advanced tools
Comparing version 3.12.0 to 3.12.1
@@ -1,2 +0,2 @@ | ||
import*as a from"path";import{readFile as r}from"fs/promises";import e from"jszip";import{parse as t}from"node-html-parser";function i(a,r,e,t){return new(e||(e=Promise))((function(i,o){function n(a){try{u(t.next(a))}catch(a){o(a)}}function s(a){try{u(t.throw(a))}catch(a){o(a)}}function u(a){var r;a.done?i(a.value):(r=a.value,r instanceof e?r:new e((function(a){a(r)}))).then(n,s)}u((t=t.apply(a,r||[])).next())}))}var o={januaryVariations:"January",februaryVariations:"February",marchVariations:"March",aprilVariations:"April",mayVariations:"May",juneVariations:"June",julyVariations:"July",augustVariations:"August",septemberVariations:"September",octoberVariations:"October",novemberVariations:"November",decemberVariations:"December",studyArticleDateVariations:"Study Article {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)"},n={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",studyArticleDateVariations:"Article d’étude no {{ number }} : {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min)"},s={januaryVariations:"Gennaio",februaryVariations:"Febbraio",marchVariations:"Marzo",aprilVariations:"Aprile",mayVariations:"Maggio",juneVariations:"Giugno",julyVariations:"Luglio",augustVariations:"Agosto",septemberVariations:"Settembre",octoberVariations:"Ottobre",novemberVariations:"Novembre",decemberVariations:"Dicembre",studyArticleDateVariations:"Articolo di studio {{ number }} ({{ date }})",partMinutesSeparatorVariations:"({{ duration }} min)"},u={januaryVariations:"1月",februaryVariations:"2月",marchVariations:"3月",aprilVariations:"4月",mayVariations:"5月",juneVariations:"6月",julyVariations:"7月",augustVariations:"8月",septemberVariations:"9月",octoberVariations:"10月",novemberVariations:"11月",decemberVariations:"12月",studyArticleDateVariations:"研究記事{{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }}分)"},c={januaryVariations:"Січень|січень|січня",februaryVariations:"Лютий|лютий|лютого",marchVariations:"Березень|березень|березня",aprilVariations:"Квітень|квітень|квітня",mayVariations:"Травень|травень|травня",juneVariations:"Червень|червень|червня",julyVariations:"Липень|липень|липня",augustVariations:"Серпень|серпень|серпня",septemberVariations:"Вересень|вересень|вересня",octoberVariations:"Жовтень|жовтень|жовтня",novemberVariations:"Листопад|листопад|листопада",decemberVariations:"Грудень|грудень|грудня",studyArticleDateVariations:"Стаття для вивчення {{ number }} ({{ date }})",partMinutesSeparatorVariations:"({{ duration }} хв)"},l={januaryVariations:"Ianuarie",februaryVariations:"Februarie",marchVariations:"Martie",aprilVariations:"Aprilie",mayVariations:"Mai",juneVariations:"Iunie",julyVariations:"Iulie",augustVariations:"August",septemberVariations:"Septembrie",octoberVariations:"Octombrie",novemberVariations:"Noiembrie",decemberVariations:"Decembrie",studyArticleDateVariations:"Articolul de studiu {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)"},m={januaryVariations:"Janoary",februaryVariations:"Febroary",marchVariations:"Martsa",aprilVariations:"Aprily",mayVariations:"Mey",juneVariations:"Jona",julyVariations:"Jolay",augustVariations:"Aogositra",septemberVariations:"Septambra",octoberVariations:"Oktobra",novemberVariations:"Novambra",decemberVariations:"Desambra",studyArticleDateVariations:"Lahatsoratra Fianarana {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)"},d={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",studyArticleDateVariations:"Artykuł do studium od {{ date }}|Artykuł do studium w tygodniu od {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min)|({{ duration }} min.)"},b={januaryVariations:"Enero",februaryVariations:"Febrero",marchVariations:"Marzo",aprilVariations:"Abril",mayVariations:"Mayo",juneVariations:"Junio",julyVariations:"Julio",augustVariations:"Agosto",septemberVariations:"Septiembre",octoberVariations:"Octubre",novemberVariations:"Noviembre",decemberVariations:"Diciembre",studyArticleDateVariations:"Artículo de estudio {{ number }} ({{ date }})",partMinutesSeparatorVariations:"({{ duration }} mins.)|({{ duration }} min.)"},V={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",studyArticleDateVariations:"Estudo para a semana de {{ date }}",partMinutesSeparatorVariations:"({{ duration }}min)|({{ duration }} min)|({{ duration }} min.)"},y={januaryVariations:"Enero",februaryVariations:"Pebrero",marchVariations:"Marso",aprilVariations:"Abril",mayVariations:"Mayo",juneVariations:"Hunyo",julyVariations:"Hulyo",augustVariations:"Agosto",septemberVariations:"Setyembre",octoberVariations:"Oktubre",novemberVariations:"Nobyembre",decemberVariations:"Disyembre",studyArticleDateVariations:"Araling artikulo {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)"},p={januaryVariations:"Ocak",februaryVariations:"Şubat",marchVariations:"Mart",aprilVariations:"Nisan|NİSAN",mayVariations:"MAYIS|Mayıs",juneVariations:"Haziran",julyVariations:"Temmuz",augustVariations:"Ağustos",septemberVariations:"Eylül",octoberVariations:"Ekim",novemberVariations:"Kasım",decemberVariations:"Aralık",studyArticleDateVariations:"{{ number }}. İnceleme Makalesi: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} dk.)|({{ duration }} dk)"},f={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",studyArticleDateVariations:"Lahatsoratse Fianaragne {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)|({{ duration }} min)|({{ duration }} min.)"},g={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",studyArticleDateVariations:"Lahatsoratra Fianaran̈a {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)|({{ duration }} min)({{ duration }} min.)|({{ duration }} min)|({{ duration }}min)|({{ duration }}min.)"},h={januaryVariations:"Janoary",februaryVariations:"Febroary",marchVariations:"Martsa",aprilVariations:"Aprily",mayVariations:"Mey",juneVariations:"Jona",julyVariations:"Jolay",augustVariations:"Aogositra",septemberVariations:"Septambra",octoberVariations:"Oktobra",novemberVariations:"Novambra",decemberVariations:"Desambra",studyArticleDateVariations:"Hianarana ny herinandron’ny {{ date }}|Hianarana mandritra ny herinandron’ny {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)"},w={januaryVariations:"January",februaryVariations:"February",marchVariations:"March",aprilVariations:"April",mayVariations:"May",juneVariations:"June",julyVariations:"July",augustVariations:"August",septemberVariations:"September",octoberVariations:"October",novemberVariations:"November",decemberVariations:"December",studyArticleDateVariations:"Yebesua no {{ date }}",partMinutesSeparatorVariations:"(Simma {{ duration }})"},_={januaryVariations:"Январь|января",februaryVariations:"Февраль|февраля",marchVariations:"Март|марта",aprilVariations:"Апрель|апреля",mayVariations:"Май|мая",juneVariations:"Июнь|июня",julyVariations:"Июль|июля",augustVariations:"Август|августа",septemberVariations:"Сентябрь|сентября",octoberVariations:"Октябрь|октября",novemberVariations:"Ноябрь|ноября",decemberVariations:"Декабрь|декабря",studyArticleDateVariations:"Статья для изучения {{ number }} ({{ date }})",partMinutesSeparatorVariations:"({{ duration }} мин.)"},v={januaryVariations:"Zanviè",februaryVariations:"Fevriè",marchVariations:"Marsa",aprilVariations:"Avrily",mayVariations:"Mey",juneVariations:"Ziein",julyVariations:"Ziè",augustVariations:"Oòh",septemberVariations:"Septambra",octoberVariations:"Oktobra",novemberVariations:"Novambra",decemberVariations:"Desambra",studyArticleDateVariations:"Lahatsoratsy Fianara {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)|({{ duration }} min)|({{ duration }}min.)"},S={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",studyArticleDateVariations:"{{ number }}. Studienartikel {{ date }}",partMinutesSeparatorVariations:"({{ duration }} Min)|({{ duration }} Min.)"};global.jw_epub_parser={languages:{E:o,F:n,I:s,J:u,K:c,M:l,MG:m,P:d,S:b,T:V,TG:y,TK:p,TND:f,TNK:g,TTM:h,TW:w,U:_,VZ:v,X:S},path:a,readFile:r};var j=[{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:"ro-RO",code:"M"},{locale:"mg-MG",code:"MG"},{locale:"pl-PL",code:"P"},{locale:"es-ES",code:"S"},{locale:"pt-BR",code:"T"},{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"}];class A extends Error{constructor(a,r){super(r),this.code=`jw-epub-parser/failed-${a}`}}const M=jw_epub_parser.languages,x=a=>[{index:0,name:M[a].januaryVariations},{index:1,name:M[a].februaryVariations},{index:2,name:M[a].marchVariations},{index:3,name:M[a].aprilVariations},{index:4,name:M[a].mayVariations},{index:5,name:M[a].juneVariations},{index:6,name:M[a].julyVariations},{index:7,name:M[a].augustVariations},{index:8,name:M[a].septemberVariations},{index:9,name:M[a].octoberVariations},{index:10,name:M[a].novemberVariations},{index:11,name:M[a].decemberVariations}],k=a=>{const r=a.match(/(\d+)/);return r&&r.length>0?+r[0]:a},D=(a,r)=>{const e=(a=>M[a].partMinutesSeparatorVariations)(r).split("|");let t;for(const r of e){let e=r.replace("{{ duration }}","\\d+");e=e.replace("(","\\("),e=e.replace(")","\\)"),e=e.replace(") ",") ?"),e=e.replace("??","?");const i=new RegExp(e.trim()),o=a.match(i);if(o){const r=a.split(i),e=+o[0].match(/\d+/)[0],n=/^[:.「]/,s=/[:」]$/,u=r[0].trim(),c=r[1].trim().replace(n,"").replace(s,"").trim(),l=/\d{1,2}[-.] /g,m=u.match(l),d=u.split(l);let b;b=m?d[1].trim():u,b=b.replace(n,"").replace(s,"").trim(),t={type:b,time:e,src:c}}}if(t)return t;throw new A("jw-epub-parser",`Parsing failed. The input was: ${a}`)},E=(a,r)=>{let e,t,i;const o=(a=>M[a].studyArticleDateVariations)(r).split("|");a=a.toLowerCase();a:for(const n of o){let o=n.toLowerCase().replace("{{ date }}","");o=o.replace("{{ number }}","\\d+");const s=new RegExp(o.trim()).exec(a);if(null!==s){const n=s[0].length;if(n>0){const s=a.substring(n);o=s.trim();const u=o.toLowerCase(),c=new RegExp(["bis","–","-","—","do"].join("|"),"gi"),l=u.split(c),m=x(r);for(const a of l)for(const n of m){let u=`(${n.name.toLowerCase()})`;"J"===r&&(u=`\\b${u}\\b`);const c=new RegExp(u).exec(a);if(Array.isArray(c)){const a=/\d+/g,u=o.match(a);"J"===r&&(e=+u[2]),"J"!==r&&(e=+u[0]),t=n.index;const c=/\b\d{4}\b/.exec(s);null!==c&&(i=+c[0]);break a}}}}}if("number"==typeof e&&"number"==typeof t&&"number"==typeof i)return{varDay:e,monthIndex:t,varYear:i};throw new A("wtstudy",`Parsing failed for Watchtower Study Date. The input was: ${a}`)},T=(a,r,e)=>{const{varDay:t,monthIndex:i}=((a,r)=>{let e,t;const i=a.toLowerCase(),o=new RegExp(["bis","–","-","—"].join("|"),"gi"),n=i.split(o),s=x(r);a:for(const a of n)for(const o of s){let n=`(${o.name.toLowerCase()})`;"J"===r&&(n=`\\b${n}\\b`);const s=new RegExp(n).exec(a);if(Array.isArray(s)){const a=/\d+/g,n=i.match(a);"J"===r&&(e=+n[1]),"J"!==r&&(e=+n[0]),t=o.index;break a}}if("number"==typeof e&&"number"==typeof t)return{varDay:e,monthIndex:t};throw new A("week-date",`Parsing failed when extracting the week date. The input was: ${a}`)})(a,e);return`${r}/${String(i+1).padStart(2,"0")}/${String(t).padStart(2,"0")}`},q=a=>{let r=!1;if(a.startsWith("OEBPS")&&a.endsWith(".xhtml")&&-1===a.indexOf("-extracted")){const e=a.split("/")[1].split(".")[0];isNaN(parseFloat(e))||(r=!0)}return r},J=(a,r)=>i(void 0,void 0,void 0,(function*(){return yield a.file(r).async("string")})),L=a=>{let r=!1,e=!1,t=!1,i=!1;return e=!!a.querySelector("[class*=treasures]"),e&&(t=!!a.querySelector("[class*=ministry]"),i=!!a.querySelector("[class*=christianLiving]")),e||(e=!!a.querySelector(".du-color--teal-700"),e&&(t=!!a.querySelector(".du-color--gold-700"),i=!!a.querySelector(".du-color--maroon-600"))),!0===e&&!0===t&&!0===i&&(r=!0),r},N=a=>t(a),C=a=>!!a.querySelector(".groupTOC"),O=(a,r)=>i(void 0,void 0,void 0,(function*(){let e;for(let[t]of Object.entries(a.files)){if(jw_epub_parser.path.basename(t)===r){const r=yield J(a,t);e=N(r);break}}return e})),P=a=>/^mwb_[A-Z][A-Z]?[A-Z]?_202\d(0[1-9]|1[0-2])\.epub$/i.test(a),F=a=>/^w_[A-Z][A-Z]?[A-Z]?_202\d(0[1-9]|1[0-2])\.epub$/i.test(a),z=a=>{let r;return r="object"==typeof a&&"url"in a?a.url:a instanceof Blob&&"name"in a?a.name:a,jw_epub_parser.path.basename(r)},$=a=>i(void 0,void 0,void 0,(function*(){let r={};const t=(a=>{const r=z(a),e=P(r),t=F(r);return e||t})(a);if(!t)throw new Error("The selected epub file has an incorrect naming.");const o=(a=>{let r=!0;const e=z(a),t=P(e),i=F(e),o=t?"mwb":i?"w":void 0,n=+e.split("_")[2].split(".epub")[0];return"mwb"===o&&n<202207&&(r=!1),"w"===o&&n<202304&&(r=!1),r})(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,i(void 0,void 0,void 0,(function*(){let a;if(s instanceof Blob&&(a=s),"object"==typeof s&&"url"in s){const r=yield fetch(s.url);if(200!==r.status)throw new Error("EPUB file could not be downloaded. Check the URL you provided.");const e=yield r.blob();a=yield e.arrayBuffer()}return"string"==typeof s&&(a=yield jw_epub_parser.readFile(s)),a})));var s;const u=yield(c=n,i(void 0,void 0,void 0,(function*(){let a=0,r=0,t="archive_tmp";const i={isBig:!1,isMore:!1,isSuspicious:!1},o=new e,n=yield o.loadAsync(c);for(let[e]of Object.entries(n.files))a++,a>300&&(i.isMore=!0),jw_epub_parser.path.join(t,e).startsWith(t)||(i.isSuspicious=!0),r+=(yield o.file(e).async("arraybuffer")).byteLength,r>2e7&&(i.isBig=!0);return a=0,r=0,i})));var c;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 l=z(a),m=P(l),d=F(l),b=yield(a=>i(void 0,void 0,void 0,(function*(){const r=new e;return yield r.loadAsync(a)})))(n),V=yield((a,r,e)=>i(void 0,void 0,void 0,(function*(){const t=[];for(let[i]of Object.entries(a.files))if(q(i)){const o=yield J(a,i),n=N(o);(r?L(n):e&&C(n))&&t.push(n)}return t})))(b,m,d);if(0===V.length)throw new Error(`The file you provided is not a valid ${m?"Meeting Workbook":"Watchtower Study"} EPUB file. Please make sure that the file is correct.`);if(d&&V.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 y=(a=>+z(a).split("_")[2].substring(0,4))(a),p=(a=>z(a).split("_")[1])(a);return m&&(r=yield I({htmlDocs:V,epubYear:y,epubLang:p})),d&&(r=yield U({htmlItem:V[0],epubLang:p,epubContents:b})),r})),B=(a,r,e)=>{const t=j.find((a=>a.code===e)),i={},o=(a=>a.querySelector("h1").textContent.replace(/\u00A0/g," "))(a);if(t){const a=T(o,r,e);i.mwb_week_date=a,i.mwb_week_date_locale=o}else i.mwb_week_date=o;i.mwb_weekly_bible_reading=(a=>a.querySelector("h2").textContent.replace(/\u00A0/g," "))(a);const n=(a=>{let r="";const e=a.querySelectorAll(".pGroup");for(const a of e){const e=a.querySelectorAll("li");for(const a of e)r+="@"+a.querySelector("p").textContent}if(0===r.length){const e=a.querySelectorAll("h3");for(const a of e){let e=a.classList.contains("dc-icon--music");e||(e=!!a.querySelector(".dc-icon--music"));let t="";t=a.textContent,e&&(t=t.replace("|","@")),r+="@"+t;const i=a.nextElementSibling;if(i){const a=i.querySelector(".du-color--textSubdued");a&&(r+=" "+a.querySelector("p").textContent)}}const t=r.split("@",5).join("@").length;r=r.substring(0,t)+"@junk@junk"+r.substring(t)}return r=r.replace(/\u00A0/g," "),r})(a);let s=n.split("@"),u="";i.mwb_song_first=k(s[1]),u=s[3].trim(),i.mwb_tgw_talk=t?D(u,e).type:u,u=s[7].trim(),i.mwb_tgw_bread=t?D(u,e).src:u;const c=(a=>{let r=1;const e=a.querySelector("#section3");return e&&(r=e.querySelectorAll("li").length),e||(r=a.querySelectorAll(".du-color--gold-700").length-1),r})(a);if(i.mwb_ayf_count=c,u=s[8].trim(),t){const a=D(u,e);i.mwb_ayf_part1=a.src,i.mwb_ayf_part1_time=a.time,i.mwb_ayf_part1_type=a.type}else i.mwb_ayf_part1=u;if(c>1)if(u=s[9].trim(),t){const a=D(u,e);i.mwb_ayf_part2=a.src,i.mwb_ayf_part2_time=a.time,i.mwb_ayf_part2_type=a.type}else i.mwb_ayf_part2=u;if(c>2)if(u=s[10].trim(),t){const a=D(u,e);i.mwb_ayf_part3=a.src,i.mwb_ayf_part3_time=a.time,i.mwb_ayf_part3_type=a.type}else i.mwb_ayf_part3=u;if(c>3)if(u=s[11].trim(),t){const a=D(u,e);i.mwb_ayf_part4=a.src,i.mwb_ayf_part4_time=a.time,i.mwb_ayf_part4_type=a.type}else i.mwb_ayf_part4=u;let l=c>3?12:c>2?11:c>1?10:9;i.mwb_song_middle=k(s[l]);const m=(a=>{let r=1;const e=a.querySelector("#section4");return e&&(r=e.querySelectorAll("li").length,r=6===r?2:1),null===e&&(r=a.querySelectorAll("h3.du-color--maroon-600").length-1),r})(a);if(i.mwb_lc_count=m,l++,u=s[l].trim(),t){const a=D(u,e);i.mwb_lc_part1=a.type,i.mwb_lc_part1_time=a.time,a.src&&""!==a.src&&(i.mwb_lc_part1_content=a.src)}else i.mwb_lc_part1=u;if(2===m)if(l++,u=s[l].trim(),t){const a=D(u,e);i.mwb_lc_part2=a.type,i.mwb_lc_part2_time=a.time,a.src&&""!==a.src&&(i.mwb_lc_part2_content=a.src)}else i.mwb_lc_part2=u;return l++,u=s[l].trim(),i.mwb_lc_cbs=t?D(u,e).src:u,l++,l++,u=s[l].trim(),i.mwb_song_conclude=k(u),i},Z=(a,r,e)=>{const t=j.find((a=>a.code===e)),i={},o=(a=>{let r;const e=a.querySelector(".desc");return null===e&&(r=a.textContent.replace(/\u00A0/g," ")),null!==e&&(r=e.textContent.replace(/\u00A0/g," ")),r})(a);if(o.length>0)if(t){const a=((a,r)=>{const{varDay:e,monthIndex:t,varYear:i}=E(a,r);return`${i}/${String(t+1).padStart(2,"0")}/${String(e).padStart(2,"0")}`})(o,e);i.w_study_date=a,i.w_study_date_locale=o}else i.w_study_date=o;const n=(a=>{let r;const e=a.querySelector("h2");null===e&&(r=a.nextElementSibling.querySelector("a").textContent.replace(/\u00A0/g," "));return null!==e&&(r=e.textContent.trim().replace(/\u00A0/g," ")),r})(a);i.w_study_title=n;const s=r.querySelectorAll(".pubRefs"),u=s.at(0);i.w_study_opening_song=k(u.textContent);let c=s.at(-1);if(2===s.length){c=r.querySelector(".blockTeach").nextElementSibling}return i.w_study_concluding_song=k(c.textContent),i},I=({htmlDocs:a,epubYear:r,epubLang:e})=>i(void 0,void 0,void 0,(function*(){const t=[];for(const i of a){const a=B(i,r,e);t.push(a)}return t})),U=({htmlItem:a,epubLang:r,epubContents:e})=>i(void 0,void 0,void 0,(function*(){const t=[],i=(a=>a.querySelectorAll("h3"))(a);for(const[a,o]of i.entries()){const a=o.nextElementSibling.querySelector("a").getAttribute("href"),i=yield O(e,a),n=Z(o,i,r);t.push(n)}return t})),W=a=>i(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 $(a)}catch(a){console.error(a)}})),R=(a,r,e)=>{try{const t=N(a).querySelector("article");return B(t,r,e)}catch(a){console.error(a)}},G=(a,r,e)=>{try{const t=N(a),i=N(r);return Z(t,i,e)}catch(a){console.error(a)}};export{W as loadEPUB,R as parseMWB,G as parseW}; | ||
import*as a from"path";import{readFile as r}from"fs/promises";import e from"jszip";import{parse as t}from"node-html-parser";function i(a,r,e,t){return new(e||(e=Promise))((function(i,o){function n(a){try{u(t.next(a))}catch(a){o(a)}}function s(a){try{u(t.throw(a))}catch(a){o(a)}}function u(a){var r;a.done?i(a.value):(r=a.value,r instanceof e?r:new e((function(a){a(r)}))).then(n,s)}u((t=t.apply(a,r||[])).next())}))}var o={januaryVariations:"January",februaryVariations:"February",marchVariations:"March",aprilVariations:"April",mayVariations:"May",juneVariations:"June",julyVariations:"July",augustVariations:"August",septemberVariations:"September",octoberVariations:"October",novemberVariations:"November",decemberVariations:"December",studyArticleDateVariations:"Study Article {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)"},n={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",studyArticleDateVariations:"Article d’étude no {{ number }} : {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min)"},s={januaryVariations:"Gennaio",februaryVariations:"Febbraio",marchVariations:"Marzo",aprilVariations:"Aprile",mayVariations:"Maggio",juneVariations:"Giugno",julyVariations:"Luglio",augustVariations:"Agosto",septemberVariations:"Settembre",octoberVariations:"Ottobre",novemberVariations:"Novembre",decemberVariations:"Dicembre",studyArticleDateVariations:"Articolo di studio {{ number }} ({{ date }})",partMinutesSeparatorVariations:"({{ duration }} min)"},u={januaryVariations:"1月",februaryVariations:"2月",marchVariations:"3月",aprilVariations:"4月",mayVariations:"5月",juneVariations:"6月",julyVariations:"7月",augustVariations:"8月",septemberVariations:"9月",octoberVariations:"10月",novemberVariations:"11月",decemberVariations:"12月",studyArticleDateVariations:"研究記事{{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }}分)"},c={januaryVariations:"Січень|січень|січня",februaryVariations:"Лютий|лютий|лютого",marchVariations:"Березень|березень|березня",aprilVariations:"Квітень|квітень|квітня",mayVariations:"Травень|травень|травня",juneVariations:"Червень|червень|червня",julyVariations:"Липень|липень|липня",augustVariations:"Серпень|серпень|серпня",septemberVariations:"Вересень|вересень|вересня",octoberVariations:"Жовтень|жовтень|жовтня",novemberVariations:"Листопад|листопад|листопада",decemberVariations:"Грудень|грудень|грудня",studyArticleDateVariations:"Стаття для вивчення {{ number }} ({{ date }})",partMinutesSeparatorVariations:"({{ duration }} хв)"},l={januaryVariations:"Ianuarie",februaryVariations:"Februarie",marchVariations:"Martie",aprilVariations:"Aprilie",mayVariations:"Mai",juneVariations:"Iunie",julyVariations:"Iulie",augustVariations:"August",septemberVariations:"Septembrie",octoberVariations:"Octombrie",novemberVariations:"Noiembrie",decemberVariations:"Decembrie",studyArticleDateVariations:"Articolul de studiu {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)"},m={januaryVariations:"Janoary",februaryVariations:"Febroary",marchVariations:"Martsa",aprilVariations:"Aprily",mayVariations:"Mey",juneVariations:"Jona",julyVariations:"Jolay",augustVariations:"Aogositra",septemberVariations:"Septambra",octoberVariations:"Oktobra",novemberVariations:"Novambra",decemberVariations:"Desambra",studyArticleDateVariations:"Lahatsoratra Fianarana {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)"},d={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",studyArticleDateVariations:"Artykuł do studium od {{ date }}|Artykuł do studium w tygodniu od {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min)|({{ duration }} min.)"},b={januaryVariations:"Enero",februaryVariations:"Febrero",marchVariations:"Marzo",aprilVariations:"Abril",mayVariations:"Mayo",juneVariations:"Junio",julyVariations:"Julio",augustVariations:"Agosto",septemberVariations:"Septiembre",octoberVariations:"Octubre",novemberVariations:"Noviembre",decemberVariations:"Diciembre",studyArticleDateVariations:"Artículo de estudio {{ number }} ({{ date }})",partMinutesSeparatorVariations:"({{ duration }} mins.)|({{ duration }} min.)"},V={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",studyArticleDateVariations:"Estudo para a semana de {{ date }}",partMinutesSeparatorVariations:"({{ duration }}min)|({{ duration }} min)|({{ duration }} min.)"},y={januaryVariations:"Enero",februaryVariations:"Pebrero",marchVariations:"Marso",aprilVariations:"Abril",mayVariations:"Mayo",juneVariations:"Hunyo",julyVariations:"Hulyo",augustVariations:"Agosto",septemberVariations:"Setyembre",octoberVariations:"Oktubre",novemberVariations:"Nobyembre",decemberVariations:"Disyembre",studyArticleDateVariations:"Araling artikulo {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)"},p={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",novemberVariations:"Kasım",decemberVariations:"Aralık",studyArticleDateVariations:"{{ number }}. İnceleme Makalesi: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} dk.)|({{ duration }} dk)"},f={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",studyArticleDateVariations:"Lahatsoratse Fianaragne {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)|({{ duration }} min)|({{ duration }} min.)"},g={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",studyArticleDateVariations:"Lahatsoratra Fianaran̈a {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)|({{ duration }} min)({{ duration }} min.)|({{ duration }} min)|({{ duration }}min)|({{ duration }}min.)"},h={januaryVariations:"Janoary",februaryVariations:"Febroary",marchVariations:"Martsa",aprilVariations:"Aprily",mayVariations:"Mey",juneVariations:"Jona",julyVariations:"Jolay",augustVariations:"Aogositra",septemberVariations:"Septambra",octoberVariations:"Oktobra",novemberVariations:"Novambra",decemberVariations:"Desambra",studyArticleDateVariations:"Hianarana ny herinandron’ny {{ date }}|Hianarana mandritra ny herinandron’ny {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)"},w={januaryVariations:"January",februaryVariations:"February",marchVariations:"March",aprilVariations:"April",mayVariations:"May",juneVariations:"June",julyVariations:"July",augustVariations:"August",septemberVariations:"September",octoberVariations:"October",novemberVariations:"November",decemberVariations:"December",studyArticleDateVariations:"Yebesua no {{ date }}",partMinutesSeparatorVariations:"(Simma {{ duration }})"},_={januaryVariations:"Январь|января",februaryVariations:"Февраль|февраля",marchVariations:"Март|марта",aprilVariations:"Апрель|апреля",mayVariations:"Май|мая",juneVariations:"Июнь|июня",julyVariations:"Июль|июля",augustVariations:"Август|августа",septemberVariations:"Сентябрь|сентября",octoberVariations:"Октябрь|октября",novemberVariations:"Ноябрь|ноября",decemberVariations:"Декабрь|декабря",studyArticleDateVariations:"Статья для изучения {{ number }} ({{ date }})",partMinutesSeparatorVariations:"({{ duration }} мин.)"},v={januaryVariations:"Zanviè",februaryVariations:"Fevriè",marchVariations:"Marsa",aprilVariations:"Avrily",mayVariations:"Mey",juneVariations:"Ziein",julyVariations:"Ziè",augustVariations:"Oòh",septemberVariations:"Septambra",octoberVariations:"Oktobra",novemberVariations:"Novambra",decemberVariations:"Desambra",studyArticleDateVariations:"Lahatsoratsy Fianara {{ number }}: {{ date }}",partMinutesSeparatorVariations:"({{ duration }} min.)|({{ duration }} min)|({{ duration }}min.)"},S={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",studyArticleDateVariations:"{{ number }}. Studienartikel {{ date }}",partMinutesSeparatorVariations:"({{ duration }} Min)|({{ duration }} Min.)"};global.jw_epub_parser={languages:{E:o,F:n,I:s,J:u,K:c,M:l,MG:m,P:d,S:b,T:V,TG:y,TK:p,TND:f,TNK:g,TTM:h,TW:w,U:_,VZ:v,X:S},path:a,readFile:r};var j=[{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:"ro-RO",code:"M"},{locale:"mg-MG",code:"MG"},{locale:"pl-PL",code:"P"},{locale:"es-ES",code:"S"},{locale:"pt-BR",code:"T"},{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"}];class A extends Error{constructor(a,r){super(r),this.code=`jw-epub-parser/failed-${a}`}}const M=jw_epub_parser.languages,x=a=>[{index:0,name:M[a].januaryVariations},{index:1,name:M[a].februaryVariations},{index:2,name:M[a].marchVariations},{index:3,name:M[a].aprilVariations},{index:4,name:M[a].mayVariations},{index:5,name:M[a].juneVariations},{index:6,name:M[a].julyVariations},{index:7,name:M[a].augustVariations},{index:8,name:M[a].septemberVariations},{index:9,name:M[a].octoberVariations},{index:10,name:M[a].novemberVariations},{index:11,name:M[a].decemberVariations}],k=a=>{const r=a.match(/(\d+)/);return r&&r.length>0?+r[0]:a},D=(a,r)=>{const e=(a=>M[a].partMinutesSeparatorVariations)(r).split("|");let t;for(const r of e){let e=r.replace("{{ duration }}","\\d+");e=e.replace("(","\\("),e=e.replace(")","\\)"),e=e.replace(") ",") ?"),e=e.replace("??","?");const i=new RegExp(e.trim()),o=a.match(i);if(o){const r=a.split(i),e=+o[0].match(/\d+/)[0],n=/^[:.「]/,s=/[:」]$/,u=r[0].trim(),c=r[1].trim().replace(n,"").replace(s,"").trim(),l=/\d{1,2}[-.] /g,m=u.match(l),d=u.split(l);let b;b=m?d[1].trim():u,b=b.replace(n,"").replace(s,"").trim(),t={type:b,time:e,src:c}}}if(t)return t;throw new A("jw-epub-parser",`Parsing failed. The input was: ${a}`)},E=(a,r)=>{let e,t,i;const o=(a=>M[a].studyArticleDateVariations)(r).split("|");a=a.toLowerCase();a:for(const n of o){let o=n.toLowerCase().replace("{{ date }}","");o=o.replace("{{ number }}","\\d+");const s=new RegExp(o.trim()).exec(a);if(null!==s){const n=s[0].length;if(n>0){const s=a.substring(n);o=s.trim();const u=o.toLowerCase(),c=new RegExp(["bis","–","-","—","do"].join("|"),"gi"),l=u.split(c),m=x(r);for(const a of l)for(const n of m){let u=`(${n.name.toLowerCase()})`;"J"===r&&(u=`\\b${u}\\b`);const c=new RegExp(u).exec(a);if(Array.isArray(c)){const a=/\d+/g,u=o.match(a);"J"===r&&(e=+u[2]),"J"!==r&&(e=+u[0]),t=n.index;const c=/\b\d{4}\b/.exec(s);null!==c&&(i=+c[0]);break a}}}}}if("number"==typeof e&&"number"==typeof t&&"number"==typeof i)return{varDay:e,monthIndex:t,varYear:i};throw new A("wtstudy",`Parsing failed for Watchtower Study Date. The input was: ${a}`)},T=(a,r,e)=>{const{varDay:t,monthIndex:i}=((a,r)=>{let e,t;const i=a.toLowerCase(),o=new RegExp(["bis","–","-","—"].join("|"),"gi"),n=i.split(o),s=x(r);a:for(const a of n)for(const o of s){let n=`(${o.name.toLowerCase()})`;"J"===r&&(n=`\\b${n}\\b`);const s=new RegExp(n).exec(a);if(Array.isArray(s)){const a=/\d+/g,n=i.match(a);"J"===r&&(e=+n[1]),"J"!==r&&(e=+n[0]),t=o.index;break a}}if("number"==typeof e&&"number"==typeof t)return{varDay:e,monthIndex:t};throw new A("week-date",`Parsing failed when extracting the week date. The input was: ${a}`)})(a,e);return`${r}/${String(i+1).padStart(2,"0")}/${String(t).padStart(2,"0")}`},q=a=>{let r=!1;if(a.startsWith("OEBPS")&&a.endsWith(".xhtml")&&-1===a.indexOf("-extracted")){const e=a.split("/")[1].split(".")[0];isNaN(parseFloat(e))||(r=!0)}return r},J=(a,r)=>i(void 0,void 0,void 0,(function*(){return yield a.file(r).async("string")})),N=a=>{let r=!1,e=!1,t=!1,i=!1;return e=!!a.querySelector("[class*=treasures]"),e&&(t=!!a.querySelector("[class*=ministry]"),i=!!a.querySelector("[class*=christianLiving]")),e||(e=!!a.querySelector(".du-color--teal-700"),e&&(t=!!a.querySelector(".du-color--gold-700"),i=!!a.querySelector(".du-color--maroon-600"))),!0===e&&!0===t&&!0===i&&(r=!0),r},L=a=>t(a),C=a=>!!a.querySelector(".groupTOC"),O=(a,r)=>i(void 0,void 0,void 0,(function*(){let e;for(let[t]of Object.entries(a.files)){if(jw_epub_parser.path.basename(t)===r){const r=yield J(a,t);e=L(r);break}}return e})),P=a=>/^mwb_[A-Z][A-Z]?[A-Z]?_202\d(0[1-9]|1[0-2])\.epub$/i.test(a),F=a=>/^w_[A-Z][A-Z]?[A-Z]?_202\d(0[1-9]|1[0-2])\.epub$/i.test(a),z=a=>{let r;return r="object"==typeof a&&"url"in a?a.url:a instanceof Blob&&"name"in a?a.name:a,jw_epub_parser.path.basename(r)},$=a=>i(void 0,void 0,void 0,(function*(){let r={};const t=(a=>{const r=z(a),e=P(r),t=F(r);return e||t})(a);if(!t)throw new Error("The selected epub file has an incorrect naming.");const o=(a=>{let r=!0;const e=z(a),t=P(e),i=F(e),o=t?"mwb":i?"w":void 0,n=+e.split("_")[2].split(".epub")[0];return"mwb"===o&&n<202207&&(r=!1),"w"===o&&n<202304&&(r=!1),r})(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,i(void 0,void 0,void 0,(function*(){let a;if(s instanceof Blob&&(a=s),"object"==typeof s&&"url"in s){const r=yield fetch(s.url);if(200!==r.status)throw new Error("EPUB file could not be downloaded. Check the URL you provided.");const e=yield r.blob();a=yield e.arrayBuffer()}return"string"==typeof s&&(a=yield jw_epub_parser.readFile(s)),a})));var s;const u=yield(c=n,i(void 0,void 0,void 0,(function*(){let a=0,r=0,t="archive_tmp";const i={isBig:!1,isMore:!1,isSuspicious:!1},o=new e,n=yield o.loadAsync(c);for(let[e]of Object.entries(n.files))a++,a>300&&(i.isMore=!0),jw_epub_parser.path.join(t,e).startsWith(t)||(i.isSuspicious=!0),r+=(yield o.file(e).async("arraybuffer")).byteLength,r>2e7&&(i.isBig=!0);return a=0,r=0,i})));var c;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 l=z(a),m=P(l),d=F(l),b=yield(a=>i(void 0,void 0,void 0,(function*(){const r=new e;return yield r.loadAsync(a)})))(n),V=yield((a,r,e)=>i(void 0,void 0,void 0,(function*(){const t=[];for(let[i]of Object.entries(a.files))if(q(i)){const o=yield J(a,i),n=L(o);(r?N(n):e&&C(n))&&t.push(n)}return t})))(b,m,d);if(0===V.length)throw new Error(`The file you provided is not a valid ${m?"Meeting Workbook":"Watchtower Study"} EPUB file. Please make sure that the file is correct.`);if(d&&V.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 y=(a=>+z(a).split("_")[2].substring(0,4))(a),p=(a=>z(a).split("_")[1])(a);return m&&(r=yield I({htmlDocs:V,epubYear:y,epubLang:p})),d&&(r=yield R({htmlItem:V[0],epubLang:p,epubContents:b})),r})),Z=(a,r,e)=>{const t=j.find((a=>a.code===e)),i={},o=(a=>a.querySelector("h1").textContent.replace(/\u00A0/g," "))(a);if(t){const a=T(o,r,e);i.mwb_week_date=a,i.mwb_week_date_locale=o}else i.mwb_week_date=o;i.mwb_weekly_bible_reading=(a=>a.querySelector("h2").textContent.replace(/\u00A0/g," "))(a);const n=(a=>{let r="";const e=a.querySelectorAll(".pGroup");for(const a of e){const e=a.querySelectorAll("li");for(const a of e)r+="@"+a.querySelector("p").textContent}if(0===r.length){const e=a.querySelectorAll("h3");for(const a of e){let e=a.classList.contains("dc-icon--music");e||(e=!!a.querySelector(".dc-icon--music"));let t="";t=a.textContent,e&&(t=t.replace("|","@")),r+="@"+t;const i=a.nextElementSibling;if(i){const a=i.querySelector(".du-color--textSubdued");a&&(r+=" "+a.querySelector("p").textContent)}}const t=r.split("@",5).join("@").length;r=r.substring(0,t)+"@junk@junk"+r.substring(t)}return r=r.replace(/\u00A0/g," "),r})(a);let s=n.split("@"),u="";i.mwb_song_first=k(s[1]),u=s[3].trim(),i.mwb_tgw_talk=t?D(u,e).type:u,u=s[7].trim(),i.mwb_tgw_bread=t?D(u,e).src:u;const c=(a=>{let r=1;const e=a.querySelector("#section3");return e&&(r=e.querySelectorAll("li").length),e||(r=a.querySelectorAll(".du-color--gold-700").length-1),r})(a);if(i.mwb_ayf_count=c,u=s[8].trim(),t){const a=D(u,e);i.mwb_ayf_part1=a.src,i.mwb_ayf_part1_time=a.time,i.mwb_ayf_part1_type=a.type}else i.mwb_ayf_part1=u;if(c>1)if(u=s[9].trim(),t){const a=D(u,e);i.mwb_ayf_part2=a.src,i.mwb_ayf_part2_time=a.time,i.mwb_ayf_part2_type=a.type}else i.mwb_ayf_part2=u;if(c>2)if(u=s[10].trim(),t){const a=D(u,e);i.mwb_ayf_part3=a.src,i.mwb_ayf_part3_time=a.time,i.mwb_ayf_part3_type=a.type}else i.mwb_ayf_part3=u;if(c>3)if(u=s[11].trim(),t){const a=D(u,e);i.mwb_ayf_part4=a.src,i.mwb_ayf_part4_time=a.time,i.mwb_ayf_part4_type=a.type}else i.mwb_ayf_part4=u;let l=c>3?12:c>2?11:c>1?10:9;i.mwb_song_middle=k(s[l]);const m=(a=>{let r=1;const e=a.querySelector("#section4");return e&&(r=e.querySelectorAll("li").length,r=6===r?2:1),null===e&&(r=a.querySelectorAll("h3.du-color--maroon-600").length-1),r})(a);if(i.mwb_lc_count=m,l++,u=s[l].trim(),t){const a=D(u,e);i.mwb_lc_part1=a.type,i.mwb_lc_part1_time=a.time,a.src&&""!==a.src&&(i.mwb_lc_part1_content=a.src)}else i.mwb_lc_part1=u;if(2===m)if(l++,u=s[l].trim(),t){const a=D(u,e);i.mwb_lc_part2=a.type,i.mwb_lc_part2_time=a.time,a.src&&""!==a.src&&(i.mwb_lc_part2_content=a.src)}else i.mwb_lc_part2=u;return l++,u=s[l].trim(),i.mwb_lc_cbs=t?D(u,e).src:u,l++,l++,u=s[l].trim(),i.mwb_song_conclude=k(u),i},B=(a,r,e)=>{const t=j.find((a=>a.code===e)),i={},o=(a=>{let r;const e=a.querySelector(".desc");return null===e&&(r=a.textContent.replace(/\u00A0/g," ")),null!==e&&(r=e.textContent.replace(/\u00A0/g," ")),r})(a);if(o.length>0)if(t){const a=((a,r)=>{const{varDay:e,monthIndex:t,varYear:i}=E(a,r);return`${i}/${String(t+1).padStart(2,"0")}/${String(e).padStart(2,"0")}`})(o,e);i.w_study_date=a,i.w_study_date_locale=o}else i.w_study_date=o;const n=(a=>{let r;const e=a.querySelector("h2");null===e&&(r=a.nextElementSibling.querySelector("a").textContent.replace(/\u00A0/g," "));return null!==e&&(r=e.textContent.trim().replace(/\u00A0/g," ")),r})(a);i.w_study_title=n;const s=r.querySelectorAll(".pubRefs"),u=s.at(0);i.w_study_opening_song=k(u.textContent);let c=s.at(-1);if(2===s.length){c=r.querySelector(".blockTeach").nextElementSibling}return i.w_study_concluding_song=k(c.textContent),i},I=({htmlDocs:a,epubYear:r,epubLang:e})=>i(void 0,void 0,void 0,(function*(){const t=[];for(const i of a){const a=Z(i,r,e);t.push(a)}return t})),R=({htmlItem:a,epubLang:r,epubContents:e})=>i(void 0,void 0,void 0,(function*(){const t=[],i=(a=>a.querySelectorAll("h3"))(a);for(const[a,o]of i.entries()){const a=o.nextElementSibling.querySelector("a").getAttribute("href"),i=yield O(e,a),n=B(o,i,r);t.push(n)}return t})),U=a=>i(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 $(a)}catch(a){console.error(a)}})),W=(a,r,e)=>{try{const t=L(a).querySelector("article");return Z(t,r,e)}catch(a){console.error(a)}},G=(a,r,e)=>{try{const t=L(a),i=L(r);return B(t,i,e)}catch(a){console.error(a)}};export{U as loadEPUB,W as parseMWB,G as parseW}; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "jw-epub-parser", | ||
"version": "3.12.0", | ||
"version": "3.12.1", | ||
"type": "module", | ||
@@ -5,0 +5,0 @@ "description": "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.", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
1102509