shamela
Version:
Library to interact with the Maktabah Shamela v4 APIs
2 lines • 1.44 kB
JavaScript
import"./utils/constants.js";const e=(e,...t)=>Object.fromEntries(t.map(t=>[t,e[t]]).filter(([e,t])=>t)),t=e=>{let t={},n={},r={};return e.authors.forEach(e=>{t[e.id]=e}),e.books.forEach(e=>{n[e.id]=e}),e.categories.forEach(e=>{r[e.id]=e}),{idToAuthor:t,idToBook:n,idToCategory:r}},n=e=>({id:e.id,name:e.name,...e.biography&&{biography:e.biography},...e.death_text&&{death:Number(e.death_number)}}),r=e=>({id:e.id,name:e.name,order:Number(e.order)}),i=(t,r)=>({...t.coauthor&&{coauthor:t.coauthor.map(e=>n(r[e]))},date:t.date,...e(t,`group`,`hide_diacritic`,`min_ver`,`prefix`,`shorts`,`suffix`)}),a=t=>{let n=(t.files||[]).map(e=>{let[t,n]=e.split(`|`);return{...n&&{part:n},name:t}});return{...e(t,`alias`,`cover`,`cover_alias`,`size`,`root`,`folder`),...n.length&&{files:n},...t.cover&&{cover:t.cover},...t.folder&&{folder:t.folder},...t.size&&{size:t.size}}},o=e=>{let o=t(e);return e.books.map(e=>{let[t,...s]=e.author.split(/, ?/).map(e=>n(o.idToAuthor[e])),c=i(JSON.parse(e.metadata),o.idToAuthor);return s.length&&(c.coauthor=(c.coauthor||[]).concat(s)),{author:t,bibliography:e.bibliography,category:r(o.idToCategory[e.category]),...e.date!==`99999`&&{date:Number(e.date)},...e.hint&&{hint:e.hint},id:e.id,metadata:c,name:e.name,...e.pdf_links&&{pdf_links:a(JSON.parse(e.pdf_links))},printed:Number(e.printed),version:`${e.major_release}.${e.minor_release}`}})};export{o as denormalizeBooks};
//# sourceMappingURL=transform.js.map