From d261c54ab9ff78681113dc7acc322920fd7a29d5 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Sun, 15 May 2022 20:58:14 -0500 Subject: [PATCH 01/27] Initial SwiftUI, tab bar with basic content --- TestApp/Sources/About/AboutTab.swift | 33 +++++++++++++++++ TestApp/Sources/Bookshelf/BookshelfTab.swift | 15 ++++++++ TestApp/Sources/Catalogs/CatalogsTab.swift | 20 ++++++++++ TestApp/Sources/ContentView.swift | 39 ++++++++++++++++++++ TestApp/Sources/TestApp.swift | 17 +++++++++ 5 files changed, 124 insertions(+) create mode 100644 TestApp/Sources/About/AboutTab.swift create mode 100644 TestApp/Sources/Bookshelf/BookshelfTab.swift create mode 100644 TestApp/Sources/Catalogs/CatalogsTab.swift create mode 100644 TestApp/Sources/ContentView.swift create mode 100644 TestApp/Sources/TestApp.swift diff --git a/TestApp/Sources/About/AboutTab.swift b/TestApp/Sources/About/AboutTab.swift new file mode 100644 index 000000000..94ac0c6a6 --- /dev/null +++ b/TestApp/Sources/About/AboutTab.swift @@ -0,0 +1,33 @@ +// +// AboutTab.swift +// TestApp +// +// Created by Steven Zeck on 5/15/22. +// + +import SwiftUI + +struct AboutTab: View { + var body: some View { + VStack { + HStack { + Text("Version") + Text("2.3.0") + } + HStack { + Text("Build") + Text("1") + } + Text("© 2022 European Digital Reading Lab") + Text("[BSD-3 License]") + Text("R2 Reader wouldn't have been developed without the financial help of the French State.") + Image("rf") + } + } +} + +struct AboutTab_Previews: PreviewProvider { + static var previews: some View { + AboutTab() + } +} diff --git a/TestApp/Sources/Bookshelf/BookshelfTab.swift b/TestApp/Sources/Bookshelf/BookshelfTab.swift new file mode 100644 index 000000000..5696b96e1 --- /dev/null +++ b/TestApp/Sources/Bookshelf/BookshelfTab.swift @@ -0,0 +1,15 @@ +// +// BookshelfTab.swift +// TestApp +// +// Created by Steven Zeck on 5/15/22. +// + +import SwiftUI + +struct BookshelfTab: View { + + var body: some View { + Text("Bookshelf Tab") + } +} diff --git a/TestApp/Sources/Catalogs/CatalogsTab.swift b/TestApp/Sources/Catalogs/CatalogsTab.swift new file mode 100644 index 000000000..a19e61075 --- /dev/null +++ b/TestApp/Sources/Catalogs/CatalogsTab.swift @@ -0,0 +1,20 @@ +// +// CatalogsTab.swift +// TestApp +// +// Created by Steven Zeck on 5/15/22. +// + +import SwiftUI + +struct CatalogsTab: View { + var body: some View { + Text("Catalogs Tab") + } +} + +struct CatalogsTab_Previews: PreviewProvider { + static var previews: some View { + CatalogsTab() + } +} diff --git a/TestApp/Sources/ContentView.swift b/TestApp/Sources/ContentView.swift new file mode 100644 index 000000000..ec66d23d1 --- /dev/null +++ b/TestApp/Sources/ContentView.swift @@ -0,0 +1,39 @@ +// +// ContentView.swift +// TestApp +// +// Created by Steven Zeck on 5/15/22. +// +// +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// + +import SwiftUI + +struct ContentView: View { + var body: some View { + TabView { + BookshelfTab() + .tabItem { + Label("Bookshelf", systemImage: "books.vertical.fill") + } + CatalogsTab() + .tabItem { + Label("Catalogs", systemImage: "magazine.fill") + } + AboutTab() + .tabItem { + Label("About", systemImage: "info.circle.fill") + } + } + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/TestApp/Sources/TestApp.swift b/TestApp/Sources/TestApp.swift new file mode 100644 index 000000000..4d6699ab8 --- /dev/null +++ b/TestApp/Sources/TestApp.swift @@ -0,0 +1,17 @@ +// +// TestApp.swift +// TestApp +// +// Created by Steven Zeck on 5/15/22. +// + +import SwiftUI + +//@main +struct testApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} From 05874e90fba6e42e7f0564517066c3cc07d26bc9 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Tue, 17 May 2022 00:02:34 -0500 Subject: [PATCH 02/27] Add license info to new files, clean up About tab contents --- TestApp/Sources/About/AboutTab.swift | 36 ++++++++++++++------ TestApp/Sources/Bookshelf/BookshelfTab.swift | 5 +++ TestApp/Sources/Catalogs/CatalogsTab.swift | 5 +++ TestApp/Sources/ContentView.swift | 1 - TestApp/Sources/TestApp.swift | 5 +++ 5 files changed, 40 insertions(+), 12 deletions(-) diff --git a/TestApp/Sources/About/AboutTab.swift b/TestApp/Sources/About/AboutTab.swift index 94ac0c6a6..41af74f93 100644 --- a/TestApp/Sources/About/AboutTab.swift +++ b/TestApp/Sources/About/AboutTab.swift @@ -4,24 +4,38 @@ // // Created by Steven Zeck on 5/15/22. // +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// import SwiftUI struct AboutTab: View { var body: some View { - VStack { - HStack { + NavigationView { + VStack(alignment: .leading, spacing: 20) { Text("Version") - Text("2.3.0") - } - HStack { - Text("Build") - Text("1") + .font(.title2) + HStack(spacing: 10) { + Text("Version").frame(width: 170.0, alignment: .leading) + Text("2.3.0") + } + HStack(spacing: 10) { + Text("Build").frame(width: 170.0, alignment: .leading) + Text("1") + } + Text("Copyright").font(.title2) + Link("© 2022 European Digital Reading Lab", + destination: URL(string: "https://www.edrlab.org/")!) + Link("[BSD-3 License]", + destination: URL(string: "https://opensource.org/licenses/BSD-3-Clause")!) + Text("Acknowledgements").font(.title2) + Text("R2 Reader wouldn't have been developed without the financial help of the French State.") + Image("rf") } - Text("© 2022 European Digital Reading Lab") - Text("[BSD-3 License]") - Text("R2 Reader wouldn't have been developed without the financial help of the French State.") - Image("rf") + .navigationTitle("About") } } } diff --git a/TestApp/Sources/Bookshelf/BookshelfTab.swift b/TestApp/Sources/Bookshelf/BookshelfTab.swift index 5696b96e1..d86c0145a 100644 --- a/TestApp/Sources/Bookshelf/BookshelfTab.swift +++ b/TestApp/Sources/Bookshelf/BookshelfTab.swift @@ -4,6 +4,11 @@ // // Created by Steven Zeck on 5/15/22. // +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// import SwiftUI diff --git a/TestApp/Sources/Catalogs/CatalogsTab.swift b/TestApp/Sources/Catalogs/CatalogsTab.swift index a19e61075..ffc68c2ea 100644 --- a/TestApp/Sources/Catalogs/CatalogsTab.swift +++ b/TestApp/Sources/Catalogs/CatalogsTab.swift @@ -4,6 +4,11 @@ // // Created by Steven Zeck on 5/15/22. // +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// import SwiftUI diff --git a/TestApp/Sources/ContentView.swift b/TestApp/Sources/ContentView.swift index ec66d23d1..41f91d88a 100644 --- a/TestApp/Sources/ContentView.swift +++ b/TestApp/Sources/ContentView.swift @@ -4,7 +4,6 @@ // // Created by Steven Zeck on 5/15/22. // -// // Copyright 2022 European Digital Reading Lab. All rights reserved. // Licensed to the Readium Foundation under one or more contributor license agreements. // Use of this source code is governed by a BSD-style license which is detailed in the diff --git a/TestApp/Sources/TestApp.swift b/TestApp/Sources/TestApp.swift index 4d6699ab8..1710c9d61 100644 --- a/TestApp/Sources/TestApp.swift +++ b/TestApp/Sources/TestApp.swift @@ -4,6 +4,11 @@ // // Created by Steven Zeck on 5/15/22. // +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// import SwiftUI From 7359773863c980aa33c8fbf41977e5a532fcfdd1 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Fri, 20 May 2022 00:40:20 -0500 Subject: [PATCH 03/27] Start book cover and bookshelf --- TestApp/Sources/Bookshelf/BookshelfTab.swift | 10 +++++- .../Resources/Assets.xcassets/Contents.json | 6 ++-- .../defaultCover.imageset/Contents.json | 21 ++++++++++++ .../defaultCover.imageset/cover.png | Bin 0 -> 8020 bytes TestApp/Sources/Views/BookCover.swift | 31 ++++++++++++++++++ 5 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/Contents.json create mode 100644 TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/cover.png create mode 100644 TestApp/Sources/Views/BookCover.swift diff --git a/TestApp/Sources/Bookshelf/BookshelfTab.swift b/TestApp/Sources/Bookshelf/BookshelfTab.swift index d86c0145a..9d42ad8f4 100644 --- a/TestApp/Sources/Bookshelf/BookshelfTab.swift +++ b/TestApp/Sources/Bookshelf/BookshelfTab.swift @@ -15,6 +15,14 @@ import SwiftUI struct BookshelfTab: View { var body: some View { - Text("Bookshelf Tab") + + var columns = [GridItem(.flexible()), GridItem(.flexible()), GridItem(.flexible())] + ScrollView { + LazyVGrid(columns: columns, spacing: 20) { + ForEach(books, id: \.self) { item in + BookCover(item) + } + } + } } } diff --git a/TestApp/Sources/Resources/Assets.xcassets/Contents.json b/TestApp/Sources/Resources/Assets.xcassets/Contents.json index da4a164c9..73c00596a 100644 --- a/TestApp/Sources/Resources/Assets.xcassets/Contents.json +++ b/TestApp/Sources/Resources/Assets.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/Contents.json b/TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/Contents.json new file mode 100644 index 000000000..ea0c69798 --- /dev/null +++ b/TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "cover.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/cover.png b/TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..c7f6957bda582ca73bcc5d02622cc2fe51341a11 GIT binary patch literal 8020 zcmY*;byOVBw)Nm15`w!03xhj@1r0I;x53>8XRrjfpuwHs1Q}d|OK=DhT!Xv2J%0Dz z?|$#~TGdr`YM;H&>HcH)S{?ogEQ^CliU|M!a6ZaOslLo+FC!ft_2r(xAe!&}u7vqLy@UHmBxg<6+~V6~&~crUp5iSqQ00 z$^0k%WhX*w|9*H7X;A76Y6U00ff5H{hQ?f z@kp7wm^xcKx>`FxssG_MHgRxs6``g5N9e!Tzw30hw)p=_P?!I-_0k~wKPT**Y#i+W z<$g&8{Sy^ZcD6QuQT~TtloRwX>MI3Kl3K~q#kKq@N3*wQ?f*^?VeMca#? zFUK0%AGcRlp4J_nFWo)wue%BkK4O4Oo6!{%x*o3DOS;e=pWK^#n6#*ljt8^juh#Bl zIkTL24`817`OhZ1s)#3EOU;m{S>!~-uCR%|zy_w2zM{l^EvOFua~!IL6d5e-7PfT; zTQ}ACctn^h2uYM&m#5p;S5QBn+w9^|M&>0^$_(7&Vzngt^8?44I;GHHN!{WTXZb7n zAMW&wjj2}D)XXSNu`&=z7d*)OSE}m5argb<+WA#|!DtHNKAEjHnXN18ZPj^;EAaa4 zPY()bCoQ(mvHgeH1^Q~gO$zI7;Q=1b&Fyc?lAy3%Agh_yXB^rn&nlh^^*>IwR!l9f zr$_2h-j4o<+Vc_b@rSaJ*fQq4v5|L_n0v^W)tI*Ls279E5;EII1<^%+rZt}|H5MXx znry4JXIpJPH|()d=XKv5cK3mm)wX4Gk}vyUF^`|4nZ41;qMvrjyN%G?J+npLC2>aA z9nYh+=x~*+T&#io&f`A1&T4&_J$c<4Psil83Xt>>$lk+CSL73h3Qebw2<`T=w-8yX0KZtA zhsG_LDPW(>g-n)RASHTr@I>RO@={B*?omRJ@r!O8aA`2N_o<8K{e54iTZ~+l?{5Q- z&lIqxo3{Oj0-j_KS)c%Ae+70{{RHBw3EG9YNlf~DBOTpYLD||^=R3tEzoqa}cWLkM zaHiQpFp;BBmWAmB80F742Cp*9=?blxG~MJ;MzB)q{)Jb(!y#_sj_Zt5ZDbPKNaBhL z2#tv21bVb<09oDaC}GnnS5R6CsqVzkTTFRap7Oc^k!M$}Rl9Ww$iWMxoI^Bmo0()H zub5>W;hQlMxIZdMZqo{^7W&8tKkR8!^3jUX9&&AhdKl;RZMF3Rh9-J1i%PP2bwPLA z+Y|@1{o?Bn$iJrFCAG8VwD3%F)w-9R6HM!rZAUn(HWu{5bBt$6#`@lkkR+$hhrcJM zwc9C17$-4uvUBepVSCd~#0PPjlzD_lM3%YRoi(KMLHUl^9O0%1jrJuOHTHrWlEg#R zNRDbB;5d5SrW<>E$?1qzT+2&3km3hLE{JsJ8;Cpi>rjvEkgQ=(mdO+(6?SmA&4ym) z{7^$l5mOaOqa+Qh@T{g1r8Ov^6w$>`QoOz#jH>#Yc15)+*+F5fv_VV&FdwHu@X5-c z)J%nWTS(NHV;0W{r=M46{-@cn4eq=5Wtoegs{Sxq<-Ff3y^WJd$cVHZm|_vlB$g3Y z7}vn%UR~Vb*i`WBpt)g*L9g}J=hxhsl;*E)?lG8*%luAan&ZT6*Rnc2YpDR?$M&K0 z-u(^YFI)X%>FmVGqyN{)sN)j48W`bSY8X+fvpkE_+eom}_W0XTiQ~)HHUDmJIrOKE zvD1zLgx&2S7wTtQ+j8%I%b!0qt`99@nxsC}woj3%OAKjhFKbV3&vO|XMz?kq`3PYmDGE;LCe)Iin2KUG^d@ne1GjiBH8rG z!foyIvV!lRztdf4NsK&v@zU446#LL@xtM!^p$tVZd%EnshoAE}z>zlr`111CjXRAg zJ^M5Hgo0aSu2jD?6Rf0_JNaNPnDu%h&nKr1Ay|e6_8mBx7~WV-hvqtFL~Lva#^WeD zKKqm=^g=S79vep!P3#T=!p9|r*B|TAtCOY#_-8A9<>O~bvbo;lfrwTPWliiUUfzim!_v1zYJA(M#KT!`8^^y_}5zo zyME%zqNT(ds*{Y5!<6x_B~ed1U+Tw-vRTwV>gCO+KL!Sg>Fp|pNta)X3BQAEnBB_~ z#Ld|H1`aMK?P<85)g(?jT0a9DJt}k@K*9*L6(BYK6J)esAM%zE^Y4BlYOaXUdkmAG zc6VYp42piebb=UjIttRt>W)r1eWsw+JmHkv4x|*^ z18IV*stLySYye+)ww=LW9#eE$oH4dlxI;H(AUB+b1CGI$l?{8>pZ@Hr=2+6v3YsaX z8cJ3iR};D%st(M|8dh`l_D;;-mm^C}%I=HUmZFTHdV6Bc1nkg7nt$bY@qACjt92E& zPxY0jLham73U?EVi_4RC$loh!IUCa&EDV9fQXYxbZFn1&BMnZ^%fIo(z3_I#7~^ni zB2%>tbMPeReM64sV9RZup-rf?B5V~JL%m9!67a1)?t{vYdX(Q9Y4fWh2}FMVLA&&Z zCI(Dxnne}^^q#yvxNyWgBn3Iu>iVF>$DGq-)D`is_~lXEt?~G;dRyKwa3js|tE&;U zk!cadzQIQNF^;(>6T4k}@=-+hbh~{%xFZoxX|?xRE19*h9H=$y_t$l=d{1hfd8=h9 z+v{56yB54=1Qi=KT^~t#-J^`&&B$^fs@u@fEj*Nz%f81P$tHFeAEY@Ks_>;#DP;yv z)dGF=EWXVyO>|>a1zK^{Oz3MrzxYjBf#h;CK9i&SmRa@89JyeINFadJZF8&(rLeW} zfSH&g6&T8V?2bj?*O3K;xi6L}dP@@>t< zZD09lYI`b^;WM&UNQJWquCbSnp0kiGb-2UNxPo{4qxk${YV{WP&RLq*s#dcpa(T15 zOD728gv>;&G;ztZ@^7=(Ve*of*pO<3LW)Lg-^V$cw^x z>hLEuZdvWQ{WtjJ-%OZAukx>WKygL%Ki#Jp_?XUY$7}fLyTzLy&J+k*P6>8}o#qw* zl!Be#vV%*nhSyDx*t7%je$SknF77vHO?sv6XCqZul_PkTBqo1)x|2lZ&m??Jd$PQ_y+=o7H7myM^{2)rF_s1+wT7w3B#rJkpmQCg^Do$v0^J$x${lDlXP#Az zs_i2u+xKR_y&po6xJY6o!hEo{4BCJqmJQiarPt@sS~uJ^`hb0LpT8SltDl2H_Pb@K zIx8%eD)DfyH!;dZ%qc~TqtFHRKiPn0i++t@qI z^(T^jsP1&)XoADwKYb*D|DC_7c9I=~E;vjOI8jKp4} zU8sSnv6Olh6n>Y+oYV{)rj=K+gkxRrxbL0nvcO4YZ;rGbat*$^kDbb&4)+U8OFHHs z7i&Eq^86`Xe0|3UiFU?|rF?iwgT*iRpv@^?Kx1|#_W}ji7fd%0vN-A#YAxXk(`<7D z4DDOeKHYvFdfc9x5HJ)9(4N1ZO>NZVVHPDN<}RJDdUC(R2O%Vvf*Vzx-jFn6D{vI? z7ZV1%^UT8YqL&XW)6)VElZW-{X3W5UtFVX>KaFu2Mtm*}8!r+<-+Je2VSE2)WEu%< zqoLjNj^b)(gcH&>lk_FQjw~5LUi<9$itW-IZONif6^&?9a#fClFwveT2srEPDPcFG zvlL+W?zmFTQ$YgGL_?~_w-*R>*)?vbB%B4*Ew`+YX52R=my3Rv{E~SvmIIN?FOOg5n_~~F+W=!{EWM(-wRd~bAy$#7o)$fyh$Pm~yfS(smK-IIk zEXk=*g%~%+eUPu*BT!n&=RfrO;NuNqEHaLM&Q(I!Mp88{$n7KyX$4;UX|8rEp*|@_;B8ILdbw5LUh`V*S1C)2iMY< zt^Z0Ap(T9Cpeqn-aGfU9PB?kw3+?YvtqxwO`kv-J=Tp#3=U4IAgFrO}!JD1e>d#kE z1j`vF@$ZO>-tAV$;$bHo{mDe_DqZEu)@4kC?ddg+vpd7;&nCik*`3E}uF*v?b_;Kc zYP*pnIbti3`o}v9zZ&aX$ds!Q2lNQkRWG529Pa4|4MNq{jWDG(sVX zF1yS-s$q1HDh6#Iv;_(1W~Wn9-}Kgz3#QEE9x^6$&DmH^_pFp~x!sXCq|@}{hKtap zuXmygQ=qpk64%mL>L22{<2+$BxVy9T>EtSzIX zMr%Ed9*QOAaC+NuCs}EQwio9m|B+Rfrv(VQb@tr4tU589?GuQa1uHhj?xqI(Xk zFevNBt^5~I9*EV1nE5623=lTk>U}`Y=dy7<$X3QdiMB1>Lt%Y>*o(MpC1UwogXGDu zAjj8)!UqMuKCC*OgfuSBzim%?)vw9lpG$|TJV-MuN-w8wQu=xUbwMr_R4`gg4MgRQ zOam~%Q+XZ_MCp50s5*F_7Bg`cb9|~sA}Z-AN{`6yCGxh|7ds5!|y}Ym|-}%I3J6z;1-psaPgax}X@E5%VtD7GD zPH_GE_qq+NoEcN_C3zIAH6fp=kj42Caw(EODI2TmMapK9(2<|3!%s{x?%o_SJddY& z74^%I^vuGfJSxvxm+9TKnT7u?*1%X-;>FRS691SCuNbaImoIX9cXG1mwn!^vl^HSCoRl+&Cwb4t`GHhCAkj2XLX=5{Yg*J zs}d^^yF;TZc5_%ne0Rr-Nds&qca!M8?bzk2h(74n3L*w7qs!dDqjQ3z7d|)Q$LiwB z2IanW;n0APesw{>Am7T%p2=0dc*-kL?Fq~JWk<%xjpXq`UL~t`#AL7OZoaI8Gxw4a zwwH1<*+|vFSS$dA#$4y6T10RwoveQElW7((G%G0 z@l}zs8d$4uSo%c?Vp@fYY^f*ykTHG3+V3G!fSwlLmEufStE4m^r_OAlZ-crDuj8{e zncLjeR5Q=}uo>4qjZ;j&Eq&5T3rDR*rI)(^7FA^}Fv1!&^_w?C4h2m-IUi8a43x7X$DzkP6iexX@^Y35rIZh_TZr##JXJFeVmeh<87 zCUf=fH+B-hS^vCQXT`@Gok{L)H|yD68`a`iHL@Vx+Q|jVqNO6H{2`xsN%xBHssxWy8Tag`U!@6C!!Dy#B4!s_so%2s*iGEo_}h%ZVIcPyN5V#wIm zh^LRc`SJ(X)JMr!JNFKP!%^OIinWWvHoopJEEu-;tVioYZy^rj7IGop>%5ji(G2KifQiN#0=D6vS+4?Ys0ep!z7N+N=d~fT!4&n>S{%|TI5-QD2QqSe9HhRc42a%H zbNoFKJVVpqtxE3L1e06Hb!#gq`s4ZS!K~=bBWDFTX0a8EF{PcQ@b%ZOV7&U6OLjW= zxH0V7!YIl6uR#7TZ{m27*;o=LaY{<$E{w2rk&!v`r2Q&O#+LnNWwd<)a0<7xaPWVA z^J&iwL2aP0AM#v8-~VN3E`~B z5l%r%64 zTIRcSijKN87_}WcTyKebGXup|rWAP#`RVVL^|%V^inHhsHbhnZ^4{0)8{iRrgJnLN?%wwiO zw(?)}2h7I>p0@rbewG*d>tjlmtPf@N5Dmow<*a#8UCDY=vwO+I&tJQU(mrU7%~?D% zA^2|=dec3i=Ai{Q6aRsE13S$wV1?2(5pn1nX2(osh~^l7g5EBD16D+7c90L8ue#|z zg5PjmtqoFvcMrgh=89G#xLQ{AI3O03o3My2=l~{D@Cp~vU_w>P$T&T!RQcL&!EudG znJs0kzLhtFMSM}eh8}T8A2ra0QQ__6km~pu$nmG6QVOD0_ChYLLg-tZ>8FiM=82jsoS^CssEf)8RR^EGsA5*{h6QMGPp%f ze-e$5!zpBMvWiD@L@$b^wcH%N`nAp9yE=4A=Dkz{twXu}fK6=$i!?{u;BxYu@$WJc z+l9+WtN{F59t+zN-}x;Nwc#|9>BGQ0`9ABzlznS`FMGChnBMuM$#-@{%SjE)Ip zZ_0~fnyiV#7cN!oh7`wVd!|vGl^Z(gqb)kZ_buX#nC06HAW}pMhoNk&)!=yT(*5{% zx}}-2xFTVvg^WlyAF)Q&>_(T0v4(q7<4z>1Q+%qKyhhGmGWcm|r*=fnzJu;8=^^NjgyGNHEmmq*w?X%3 zNIibj*1x$sg7 zlq%V07RC_i&pWxg*QlV3y+m1Wu!aT5X8bvpuA-%IEuS5qyF${Fcu{@js{i#8zTjYN z)y7##R@V5dz%4*@ZB?7i`X{4o$;q)%CgY9Rki09LSsM{P@*SWgeb%8X3*=6mz zwuj)itWKB>qS!3nR!cp-N&=$7PC3bMH*Iz}A=>BM{DRr>Am7b732j&DQr~gb)0EEv za^8yv-%^?iE+y;)G7>0Ik=&+Tg%17QNZ;ryr(7mr7nsy;`FH`sM@r;2JA&{Vt)3Af z&}awcfDHtU0B4v6Ll|w}0^>J55g04?#@S9)as0M(l3*1Gi}N5P6Y@+8F&5ffkc=~m zo&Qa~*F?8myZ!T)N&ee$>?_5}Bd+#{0c>H+HYDYZ>6WKUW{6Q_(L{cj4c|zc(PcFc zC!G*wq~uP1agq8_GIH-VX+# zp?z&oVa)(yghJ%$Y0OBT7=!s8C0*c;^)WUm;UN4M5bf97Sf4DA@ZR8B9D_G80ezadnA>Gmo`NAuLK z>0U<+_rmS7{FS+@=<2afipXs9f$uJ!ACDvRlC;MPVF&{Xn#3jto2Nu>dDgcj_A12Z zpVVE5AGj?ms)2-E;>JdXyA#?ojl-bHtxx$GGM~A8i@eLZn3nTQUrTtmN|?(o3(ZBe z2K+Kq9qg41{GlQ_YM6ZW7zpg&-_kxcI1E3r2)@dI!XBNLG4Vwy++fP*ODoHVW>p`T z>W(+e9FTEA?n3b?LW#LG8Qbk%t>HuXwcLnaUnuOd{D Date: Sat, 21 May 2022 01:12:22 -0500 Subject: [PATCH 04/27] Display books from db Note you need to add https://github.com/groue/GRDBQuery/ as a SPM dependency in the testapp until project.yml files are updated --- TestApp/Sources/Bookshelf/BookshelfTab.swift | 20 +++++++++++++------ TestApp/Sources/Catalogs/CatalogsTab.swift | 5 ++++- TestApp/Sources/Data/Book.swift | 13 +++++++++++- TestApp/Sources/TestApp.swift | 21 +++++++++++++++++++- TestApp/Sources/Views/BookCover.swift | 16 ++++++++++++--- 5 files changed, 63 insertions(+), 12 deletions(-) diff --git a/TestApp/Sources/Bookshelf/BookshelfTab.swift b/TestApp/Sources/Bookshelf/BookshelfTab.swift index 9d42ad8f4..5a8d07218 100644 --- a/TestApp/Sources/Bookshelf/BookshelfTab.swift +++ b/TestApp/Sources/Bookshelf/BookshelfTab.swift @@ -11,18 +11,26 @@ // import SwiftUI +import GRDBQuery struct BookshelfTab: View { + @Query(BookListRequest()) + var books: [Book] + var body: some View { - - var columns = [GridItem(.flexible()), GridItem(.flexible()), GridItem(.flexible())] - ScrollView { - LazyVGrid(columns: columns, spacing: 20) { - ForEach(books, id: \.self) { item in - BookCover(item) + NavigationView { + // TODO figure out what the best column layout is for phones and tablets + let columns: [GridItem] = Array(repeating: .init(.adaptive(minimum: 170)), count: 2) + let bookList = books + ScrollView { + LazyVGrid(columns: columns, spacing: 20) { + ForEach(bookList, id: \.self) { item in + BookCover(book: item) + } } } + .navigationTitle("Bookshelf") } } } diff --git a/TestApp/Sources/Catalogs/CatalogsTab.swift b/TestApp/Sources/Catalogs/CatalogsTab.swift index ffc68c2ea..69b2b3bb0 100644 --- a/TestApp/Sources/Catalogs/CatalogsTab.swift +++ b/TestApp/Sources/Catalogs/CatalogsTab.swift @@ -14,7 +14,10 @@ import SwiftUI struct CatalogsTab: View { var body: some View { - Text("Catalogs Tab") + NavigationView { + Text("Catalogs tab") + .navigationTitle("Catalogs") + } } } diff --git a/TestApp/Sources/Data/Book.swift b/TestApp/Sources/Data/Book.swift index 5007f41d2..930c7d277 100644 --- a/TestApp/Sources/Data/Book.swift +++ b/TestApp/Sources/Data/Book.swift @@ -7,9 +7,10 @@ import Combine import Foundation import GRDB +import GRDBQuery import R2Shared -struct Book: Codable { +struct Book: Codable, Hashable { struct Id: EntityId { let rawValue: Int64 } let id: Id? @@ -60,6 +61,16 @@ extension Book: TableRecord, FetchableRecord, PersistableRecord { } } +struct BookListRequest: Queryable { + static var defaultValue: [Book] { [] } + + func publisher(in dbQueue: DatabaseQueue) -> DatabasePublishers.Value<[Book]> { + ValueObservation + .tracking { db in try Book.order(Book.Columns.created).fetchAll(db) } + .publisher(in: dbQueue, scheduling: .immediate) + } +} + final class BookRepository { private let db: Database diff --git a/TestApp/Sources/TestApp.swift b/TestApp/Sources/TestApp.swift index 1710c9d61..f79d4b815 100644 --- a/TestApp/Sources/TestApp.swift +++ b/TestApp/Sources/TestApp.swift @@ -11,12 +11,31 @@ // import SwiftUI +import GRDB +import GRDBQuery //@main struct testApp: App { var body: some Scene { WindowGroup { - ContentView() + ContentView().environment(\.dbQueue, try! DatabaseQueue(path: Paths.library.appendingPathComponent("database.db").path)) } } } + +private struct DatabaseQueueKey: EnvironmentKey { + static var defaultValue: DatabaseQueue { DatabaseQueue() } +} + +extension EnvironmentValues { + var dbQueue: DatabaseQueue { + get { self[DatabaseQueueKey.self] } + set { self[DatabaseQueueKey.self] = newValue } + } +} + +extension Query where Request.DatabaseContext == DatabaseQueue { + init(_ request: Request) { + self.init(request, in: \.dbQueue) + } +} diff --git a/TestApp/Sources/Views/BookCover.swift b/TestApp/Sources/Views/BookCover.swift index 74d8d5518..2132921c5 100644 --- a/TestApp/Sources/Views/BookCover.swift +++ b/TestApp/Sources/Views/BookCover.swift @@ -15,11 +15,21 @@ import SwiftUI struct BookCover: View { var book: Book var body: some View { - VStack(alignment: .leading) { - Image(book.cover?.relativePath ?? "defaultCover") + VStack(alignment: .leading, spacing: 5) { + + if let coverURL = book.cover, + let data = try? Data(contentsOf: coverURL), + let image = UIImage(data: data) { + Image(uiImage: image) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 150, height: 220) + } else { + Image("defaultCover") + } Text(book.title) Text(book.authors ?? "") - }.frame(maxWidth: 150.0) + } } } From 6df9aa50b5cdc4d36013de1284fa49778b33cdf6 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Mon, 23 May 2022 23:28:49 -0500 Subject: [PATCH 05/27] Add add icon button to toolbars --- TestApp/Sources/Bookshelf/BookshelfTab.swift | 18 ++++++++++ TestApp/Sources/Catalogs/CatalogsTab.swift | 38 +++++++++++++++++++- TestApp/Sources/Toolbar/AddButton.swift | 28 +++++++++++++++ TestApp/Sources/Views/BookCover.swift | 24 +++++++------ 4 files changed, 96 insertions(+), 12 deletions(-) create mode 100644 TestApp/Sources/Toolbar/AddButton.swift diff --git a/TestApp/Sources/Bookshelf/BookshelfTab.swift b/TestApp/Sources/Bookshelf/BookshelfTab.swift index 5a8d07218..2156f1c0b 100644 --- a/TestApp/Sources/Bookshelf/BookshelfTab.swift +++ b/TestApp/Sources/Bookshelf/BookshelfTab.swift @@ -31,6 +31,24 @@ struct BookshelfTab: View { } } .navigationTitle("Bookshelf") + .toolbar(content: toolbarContent) } } } + +extension BookshelfTab { + @ToolbarContentBuilder + private func toolbarContent() -> some ToolbarContent { + ToolbarItem(placement: .navigationBarTrailing) { + AddButton { + + } + } + } +} + +struct BookshelfTab_Previews: PreviewProvider { + static var previews: some View { + BookshelfTab() + } +} diff --git a/TestApp/Sources/Catalogs/CatalogsTab.swift b/TestApp/Sources/Catalogs/CatalogsTab.swift index 69b2b3bb0..8a49fe8d2 100644 --- a/TestApp/Sources/Catalogs/CatalogsTab.swift +++ b/TestApp/Sources/Catalogs/CatalogsTab.swift @@ -16,11 +16,47 @@ struct CatalogsTab: View { var body: some View { NavigationView { Text("Catalogs tab") - .navigationTitle("Catalogs") + .navigationTitle("Catalogs") + .toolbar(content: toolbarContent) } } } +extension CatalogsTab { + @ToolbarContentBuilder + private func toolbarContent() -> some ToolbarContent { + ToolbarItem(placement: .navigationBarTrailing) { + AddButton { + + } + } + } +} + +extension CatalogsTab { + + func preloadTestFeeds() { + var catalogData: [[String: String]]? + let userDefaultsID = "opdsCatalogArray" + let version = 2 + let VERSION_KEY = "OPDS_CATALOG_VERSION" + let OPDS2Catalog = ["title": "OPDS 2.0 Test Catalog", "url": "https://test.opds.io/2.0/home.json"] + let OTBCatalog = ["title": "Open Textbooks Catalog", "url": "http://open.minitex.org/textbooks"] + let SEBCatalog = ["title": "Standard eBooks Catalog", "url": "https://standardebooks.org/opds/all"] + + catalogData = UserDefaults.standard.array(forKey: userDefaultsID) as? [[String: String]] + let oldversion = UserDefaults.standard.integer(forKey: VERSION_KEY) + if (catalogData == nil || oldversion < version) { + UserDefaults.standard.set(version, forKey: VERSION_KEY) + catalogData = [ + OPDS2Catalog, OTBCatalog, SEBCatalog + ] + UserDefaults.standard.set(catalogData, forKey: userDefaultsID) + } + + } +} + struct CatalogsTab_Previews: PreviewProvider { static var previews: some View { CatalogsTab() diff --git a/TestApp/Sources/Toolbar/AddButton.swift b/TestApp/Sources/Toolbar/AddButton.swift new file mode 100644 index 000000000..588f20c66 --- /dev/null +++ b/TestApp/Sources/Toolbar/AddButton.swift @@ -0,0 +1,28 @@ +// +// AddButton.swift +// TestApp +// +// Created by Steven Zeck on 5/23/22. +// +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// + +import SwiftUI + +struct AddButton: View { + var action: () -> Void = {} + var body: some View { + Button(action: action) { + Label("Add", systemImage: "plus") + } + } +} + +struct AddButton_Previews: PreviewProvider { + static var previews: some View { + AddButton() + } +} diff --git a/TestApp/Sources/Views/BookCover.swift b/TestApp/Sources/Views/BookCover.swift index 2132921c5..d4a28ea86 100644 --- a/TestApp/Sources/Views/BookCover.swift +++ b/TestApp/Sources/Views/BookCover.swift @@ -16,23 +16,25 @@ struct BookCover: View { var book: Book var body: some View { VStack(alignment: .leading, spacing: 5) { - - if let coverURL = book.cover, - let data = try? Data(contentsOf: coverURL), - let image = UIImage(data: data) { - Image(uiImage: image) - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 150, height: 220) - } else { - Image("defaultCover") - } + image Text(book.title) Text(book.authors ?? "") } } } +extension BookCover { + var image: Image { + if let coverURL = book.cover, + let data = try? Data(contentsOf: coverURL), + let image = UIImage(data: data) { + return Image(uiImage: image) + } else { + return Image("defaultCover") + } + } +} + struct BookCover_Previews: PreviewProvider { static var previews: some View { let book = Book(title: "Test Title", authors: "Test Author", type: "application/epub+zip", path: "/test/path/") From 77a749fe16d7fe86d5765047a04d405e2fa57e40 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Tue, 24 May 2022 23:51:59 -0500 Subject: [PATCH 06/27] Use db for OPDS feeds --- TestApp/Sources/Catalogs/CatalogsTab.swift | 64 -------------- TestApp/Sources/Data/Catalog.swift | 43 ++++++++++ TestApp/Sources/Data/Database.swift | 7 ++ TestApp/Sources/TestApp.swift | 6 +- TestApp/Sources/Views/BookCover.swift | 3 + .../{ => Views}/Bookshelf/BookshelfTab.swift | 0 .../Views/Catalogs/CatalogFeedRow.swift | 25 ++++++ .../Sources/Views/Catalogs/CatalogsTab.swift | 83 +++++++++++++++++++ TestApp/Sources/{ => Views}/ContentView.swift | 0 .../{ => Views}/Toolbar/AddButton.swift | 0 10 files changed, 166 insertions(+), 65 deletions(-) delete mode 100644 TestApp/Sources/Catalogs/CatalogsTab.swift create mode 100644 TestApp/Sources/Data/Catalog.swift rename TestApp/Sources/{ => Views}/Bookshelf/BookshelfTab.swift (100%) create mode 100644 TestApp/Sources/Views/Catalogs/CatalogFeedRow.swift create mode 100644 TestApp/Sources/Views/Catalogs/CatalogsTab.swift rename TestApp/Sources/{ => Views}/ContentView.swift (100%) rename TestApp/Sources/{ => Views}/Toolbar/AddButton.swift (100%) diff --git a/TestApp/Sources/Catalogs/CatalogsTab.swift b/TestApp/Sources/Catalogs/CatalogsTab.swift deleted file mode 100644 index 8a49fe8d2..000000000 --- a/TestApp/Sources/Catalogs/CatalogsTab.swift +++ /dev/null @@ -1,64 +0,0 @@ -// -// CatalogsTab.swift -// TestApp -// -// Created by Steven Zeck on 5/15/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. -// - -import SwiftUI - -struct CatalogsTab: View { - var body: some View { - NavigationView { - Text("Catalogs tab") - .navigationTitle("Catalogs") - .toolbar(content: toolbarContent) - } - } -} - -extension CatalogsTab { - @ToolbarContentBuilder - private func toolbarContent() -> some ToolbarContent { - ToolbarItem(placement: .navigationBarTrailing) { - AddButton { - - } - } - } -} - -extension CatalogsTab { - - func preloadTestFeeds() { - var catalogData: [[String: String]]? - let userDefaultsID = "opdsCatalogArray" - let version = 2 - let VERSION_KEY = "OPDS_CATALOG_VERSION" - let OPDS2Catalog = ["title": "OPDS 2.0 Test Catalog", "url": "https://test.opds.io/2.0/home.json"] - let OTBCatalog = ["title": "Open Textbooks Catalog", "url": "http://open.minitex.org/textbooks"] - let SEBCatalog = ["title": "Standard eBooks Catalog", "url": "https://standardebooks.org/opds/all"] - - catalogData = UserDefaults.standard.array(forKey: userDefaultsID) as? [[String: String]] - let oldversion = UserDefaults.standard.integer(forKey: VERSION_KEY) - if (catalogData == nil || oldversion < version) { - UserDefaults.standard.set(version, forKey: VERSION_KEY) - catalogData = [ - OPDS2Catalog, OTBCatalog, SEBCatalog - ] - UserDefaults.standard.set(catalogData, forKey: userDefaultsID) - } - - } -} - -struct CatalogsTab_Previews: PreviewProvider { - static var previews: some View { - CatalogsTab() - } -} diff --git a/TestApp/Sources/Data/Catalog.swift b/TestApp/Sources/Data/Catalog.swift new file mode 100644 index 000000000..3ad0b9651 --- /dev/null +++ b/TestApp/Sources/Data/Catalog.swift @@ -0,0 +1,43 @@ +// +// Catalog.swift +// TestApp +// +// Created by Steven Zeck on 5/24/22. +// + +import Combine +import Foundation +import GRDB +import GRDBQuery + +struct Catalog: Codable, Hashable { + struct Id: EntityId { let rawValue: Int64 } + + var id: Id? + var title: String + var url: String + var created: Date + + init(id: Id? = nil, title: String, url: String, created: Date = Date()) { + self.id = id + self.title = title + self.url = url + self.created = created + } +} + +extension Catalog: TableRecord, FetchableRecord, PersistableRecord { + enum Columns: String, ColumnExpression { + case id, title, url, created + } +} + +struct CatalogFeedListRequest: Queryable { + static var defaultValue: [Catalog] { [] } + + func publisher(in dbQueue: DatabaseQueue) -> DatabasePublishers.Value<[Catalog]> { + ValueObservation + .tracking { db in try Catalog.order(Catalog.Columns.created).fetchAll(db) } + .publisher(in: dbQueue, scheduling: .immediate) + } +} diff --git a/TestApp/Sources/Data/Database.swift b/TestApp/Sources/Data/Database.swift index 8cbfd44ee..b091a17c1 100644 --- a/TestApp/Sources/Data/Database.swift +++ b/TestApp/Sources/Data/Database.swift @@ -53,6 +53,13 @@ final class Database { // create an index to make sorting by progression faster try db.create(index: "index_highlight_progression", on: "highlight", columns: ["bookId", "progression"], ifNotExists: true) try db.create(index: "index_bookmark_progression", on: "bookmark", columns: ["bookId", "progression"], ifNotExists: true) + + try db.create(table: "catalog", ifNotExists: true) { t in + t.autoIncrementedPrimaryKey("id") + t.column("title", .text) + t.column("url", .text).notNull() + t.column("created", .datetime).notNull() + } } } diff --git a/TestApp/Sources/TestApp.swift b/TestApp/Sources/TestApp.swift index f79d4b815..70349ac22 100644 --- a/TestApp/Sources/TestApp.swift +++ b/TestApp/Sources/TestApp.swift @@ -24,7 +24,11 @@ struct testApp: App { } private struct DatabaseQueueKey: EnvironmentKey { - static var defaultValue: DatabaseQueue { DatabaseQueue() } + static var defaultValue: DatabaseQueue { + // FIXME this is bad + try! Database(file: Paths.library.appendingPathComponent("database.db")) + return DatabaseQueue() + } } extension EnvironmentValues { diff --git a/TestApp/Sources/Views/BookCover.swift b/TestApp/Sources/Views/BookCover.swift index d4a28ea86..e3f77f54b 100644 --- a/TestApp/Sources/Views/BookCover.swift +++ b/TestApp/Sources/Views/BookCover.swift @@ -17,6 +17,9 @@ struct BookCover: View { var body: some View { VStack(alignment: .leading, spacing: 5) { image + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 150, height: 220) Text(book.title) Text(book.authors ?? "") } diff --git a/TestApp/Sources/Bookshelf/BookshelfTab.swift b/TestApp/Sources/Views/Bookshelf/BookshelfTab.swift similarity index 100% rename from TestApp/Sources/Bookshelf/BookshelfTab.swift rename to TestApp/Sources/Views/Bookshelf/BookshelfTab.swift diff --git a/TestApp/Sources/Views/Catalogs/CatalogFeedRow.swift b/TestApp/Sources/Views/Catalogs/CatalogFeedRow.swift new file mode 100644 index 000000000..6e6c916c9 --- /dev/null +++ b/TestApp/Sources/Views/Catalogs/CatalogFeedRow.swift @@ -0,0 +1,25 @@ +// +// CatalogFeedRow.swift +// TestApp +// +// Created by Steven Zeck on 5/23/22. +// + +import SwiftUI + +struct CatalogFeedRow: View { + var action: () -> Void = {} + var title: String + + var body: some View { + Text(title) + .font(.title3) + .padding(.vertical, 8) + } +} + +struct CatalogFeedRow_Previews: PreviewProvider { + static var previews: some View { + CatalogFeedRow(title: "Test") + } +} diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab.swift b/TestApp/Sources/Views/Catalogs/CatalogsTab.swift new file mode 100644 index 000000000..014bd104a --- /dev/null +++ b/TestApp/Sources/Views/Catalogs/CatalogsTab.swift @@ -0,0 +1,83 @@ +// +// CatalogsTab.swift +// TestApp +// +// Created by Steven Zeck on 5/15/22. +// +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// + +import SwiftUI +import GRDB +import GRDBQuery + +struct CatalogsTab: View { + + @Environment(\.dbQueue) private var dbQueue + + @Query(CatalogFeedListRequest()) + var catalogs: [Catalog] + + var body: some View { + + NavigationView { + List() { + ForEach(catalogs, id: \.id) { catalog in + // NavigationLink(destination: CatalogDetail(catalog: catalog)) { + CatalogFeedRow(title: catalog.title) + // } + } + } + .listStyle(SidebarListStyle()) + .navigationTitle("Catalogs") + .toolbar(content: toolbarContent) + } + .onAppear { + preloadTestFeeds() + } + } +} + +extension CatalogsTab { + @ToolbarContentBuilder + private func toolbarContent() -> some ToolbarContent { + ToolbarItem(placement: .navigationBarTrailing) { + AddButton { + + } + } + } +} + +extension CatalogsTab { + func preloadTestFeeds() { + let version = 2 + let VERSION_KEY = "OPDS_CATALOG_VERSION" + let OPDS2Catalog = Catalog(id: 1, title: "OPDS 2.0 Test Catalog", url: "https://test.opds.io/2.0/home.json") + let OTBCatalog = Catalog(id: 2, title: "Open Textbooks Catalog", url: "http://open.minitex.org/textbooks") + let SEBCatalog = Catalog(id: 3, title: "Standard eBooks Catalog", url: "https://standardebooks.org/opds/all") + + let oldversion = UserDefaults.standard.integer(forKey: VERSION_KEY) + if (catalogs.isEmpty || oldversion < version) { + UserDefaults.standard.set(version, forKey: VERSION_KEY) + try! dbQueue.write { db in + _ = try OPDS2Catalog.inserted(db) + } + try! dbQueue.write { db in + _ = try OTBCatalog.inserted(db) + } + try! dbQueue.write { db in + _ = try SEBCatalog.inserted(db) + } + } + } +} + +struct CatalogsTab_Previews: PreviewProvider { + static var previews: some View { + CatalogsTab() + } +} diff --git a/TestApp/Sources/ContentView.swift b/TestApp/Sources/Views/ContentView.swift similarity index 100% rename from TestApp/Sources/ContentView.swift rename to TestApp/Sources/Views/ContentView.swift diff --git a/TestApp/Sources/Toolbar/AddButton.swift b/TestApp/Sources/Views/Toolbar/AddButton.swift similarity index 100% rename from TestApp/Sources/Toolbar/AddButton.swift rename to TestApp/Sources/Views/Toolbar/AddButton.swift From 571a2113e210b9ee8e3aa2b26dba6120f0c7e2c4 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Thu, 26 May 2022 00:02:39 -0500 Subject: [PATCH 07/27] Switch to using ViewModel --- TestApp/Sources/Data/Book.swift | 10 --- TestApp/Sources/Data/Catalog.swift | 11 --- TestApp/Sources/Data/Database.swift | 49 +++++++++++ TestApp/Sources/TestApp.swift | 20 ++--- .../Views/Bookshelf/BookshelfTab.swift | 27 +++--- .../Bookshelf/BookshelfTabViewModel.swift | 34 ++++++++ .../CatalogDetail/CatalogDetail.swift | 50 +++++++++++ .../CatalogDetailViewModel.swift | 37 +++++++++ .../Sources/Views/Catalogs/CatalogsTab.swift | 83 ------------------- .../{ => CatalogsTab}/CatalogFeedRow.swift | 5 ++ .../Catalogs/CatalogsTab/CatalogsTab.swift | 66 +++++++++++++++ .../CatalogsTab/CatalogsTabViewModel.swift | 51 ++++++++++++ 12 files changed, 317 insertions(+), 126 deletions(-) create mode 100644 TestApp/Sources/Views/Bookshelf/BookshelfTabViewModel.swift create mode 100644 TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift create mode 100644 TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift delete mode 100644 TestApp/Sources/Views/Catalogs/CatalogsTab.swift rename TestApp/Sources/Views/Catalogs/{ => CatalogsTab}/CatalogFeedRow.swift (56%) create mode 100644 TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift create mode 100644 TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTabViewModel.swift diff --git a/TestApp/Sources/Data/Book.swift b/TestApp/Sources/Data/Book.swift index 930c7d277..5f6644598 100644 --- a/TestApp/Sources/Data/Book.swift +++ b/TestApp/Sources/Data/Book.swift @@ -61,16 +61,6 @@ extension Book: TableRecord, FetchableRecord, PersistableRecord { } } -struct BookListRequest: Queryable { - static var defaultValue: [Book] { [] } - - func publisher(in dbQueue: DatabaseQueue) -> DatabasePublishers.Value<[Book]> { - ValueObservation - .tracking { db in try Book.order(Book.Columns.created).fetchAll(db) } - .publisher(in: dbQueue, scheduling: .immediate) - } -} - final class BookRepository { private let db: Database diff --git a/TestApp/Sources/Data/Catalog.swift b/TestApp/Sources/Data/Catalog.swift index 3ad0b9651..34f93b88d 100644 --- a/TestApp/Sources/Data/Catalog.swift +++ b/TestApp/Sources/Data/Catalog.swift @@ -8,7 +8,6 @@ import Combine import Foundation import GRDB -import GRDBQuery struct Catalog: Codable, Hashable { struct Id: EntityId { let rawValue: Int64 } @@ -31,13 +30,3 @@ extension Catalog: TableRecord, FetchableRecord, PersistableRecord { case id, title, url, created } } - -struct CatalogFeedListRequest: Queryable { - static var defaultValue: [Catalog] { [] } - - func publisher(in dbQueue: DatabaseQueue) -> DatabasePublishers.Value<[Catalog]> { - ValueObservation - .tracking { db in try Catalog.order(Catalog.Columns.created).fetchAll(db) } - .publisher(in: dbQueue, scheduling: .immediate) - } -} diff --git a/TestApp/Sources/Data/Database.swift b/TestApp/Sources/Data/Database.swift index b091a17c1..64c47641f 100644 --- a/TestApp/Sources/Data/Database.swift +++ b/TestApp/Sources/Data/Database.swift @@ -80,6 +80,55 @@ final class Database { } } +extension Database { + func insert(_ book: Book) throws { + try writer.write { db in + _ = try book.inserted(db) + } + } + + func update(_ book: Book) throws { + try writer.write { db in + try book.update(db) + } + } + + func delete(_ book: Book) throws { + try writer.write { db in + _ = try book.delete(db) + } + } + + func insert(_ catalog: Catalog) throws { + try writer.write { db in + _ = try catalog.inserted(db) + } + } + + func update(_ catalog: Catalog) throws { + try writer.write { db in + try catalog.update(db) + } + } + + func delete(_ catalog: Catalog) throws { + try writer.write { db in + _ = try catalog.delete(db) + } + } +} + +extension Database { + /// Provides a read-only access to the database + var databaseReader: DatabaseReader { + writer + } + + static func empty() -> Database { + try! Database() + } +} + /// Protocol for a database entity id. /// /// Using this instead of regular integers makes the code safer, because we can only give ids of the diff --git a/TestApp/Sources/TestApp.swift b/TestApp/Sources/TestApp.swift index 70349ac22..0c3e40856 100644 --- a/TestApp/Sources/TestApp.swift +++ b/TestApp/Sources/TestApp.swift @@ -18,28 +18,24 @@ import GRDBQuery struct testApp: App { var body: some Scene { WindowGroup { - ContentView().environment(\.dbQueue, try! DatabaseQueue(path: Paths.library.appendingPathComponent("database.db").path)) + ContentView().environment(\.db, try! Database(file: Paths.library.appendingPathComponent("database.db"))) } } } -private struct DatabaseQueueKey: EnvironmentKey { - static var defaultValue: DatabaseQueue { - // FIXME this is bad - try! Database(file: Paths.library.appendingPathComponent("database.db")) - return DatabaseQueue() - } +private struct DatabaseKey: EnvironmentKey { + static let defaultValue = Database.empty() } extension EnvironmentValues { - var dbQueue: DatabaseQueue { - get { self[DatabaseQueueKey.self] } - set { self[DatabaseQueueKey.self] = newValue } + var db: Database { + get { self[DatabaseKey.self] } + set { self[DatabaseKey.self] = newValue } } } -extension Query where Request.DatabaseContext == DatabaseQueue { +extension Query where Request.DatabaseContext == Database { init(_ request: Request) { - self.init(request, in: \.dbQueue) + self.init(request, in: \.db) } } diff --git a/TestApp/Sources/Views/Bookshelf/BookshelfTab.swift b/TestApp/Sources/Views/Bookshelf/BookshelfTab.swift index 2156f1c0b..bb5a67bc1 100644 --- a/TestApp/Sources/Views/Bookshelf/BookshelfTab.swift +++ b/TestApp/Sources/Views/Bookshelf/BookshelfTab.swift @@ -15,23 +15,30 @@ import GRDBQuery struct BookshelfTab: View { - @Query(BookListRequest()) - var books: [Book] + @EnvironmentStateObject private var viewModel: BookshelfTabViewModel + + init() { + _viewModel = EnvironmentStateObject { + BookshelfTabViewModel( + db: $0.db) + } + } var body: some View { NavigationView { // TODO figure out what the best column layout is for phones and tablets - let columns: [GridItem] = Array(repeating: .init(.adaptive(minimum: 170)), count: 2) - let bookList = books - ScrollView { - LazyVGrid(columns: columns, spacing: 20) { - ForEach(bookList, id: \.self) { item in - BookCover(book: item) + if let books = viewModel.books { + let columns: [GridItem] = Array(repeating: .init(.adaptive(minimum: 170)), count: 2) + ScrollView { + LazyVGrid(columns: columns, spacing: 20) { + ForEach(books, id: \.self) { item in + BookCover(book: item) + } } } + .navigationTitle("Bookshelf") + .toolbar(content: toolbarContent) } - .navigationTitle("Bookshelf") - .toolbar(content: toolbarContent) } } } diff --git a/TestApp/Sources/Views/Bookshelf/BookshelfTabViewModel.swift b/TestApp/Sources/Views/Bookshelf/BookshelfTabViewModel.swift new file mode 100644 index 000000000..326be8771 --- /dev/null +++ b/TestApp/Sources/Views/Bookshelf/BookshelfTabViewModel.swift @@ -0,0 +1,34 @@ +// +// BookshelfTabViewModel.swift +// TestApp +// +// Created by Steven Zeck on 5/25/22. +// +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// + +import GRDB +import Combine +import Foundation + +final class BookshelfTabViewModel: ObservableObject { + + @Published var books: [Book]? + private var cancellable: AnyCancellable? + private var db: Database + + init(db: Database) { + self.db = db + cancellable = ValueObservation + .tracking(Book.order(Book.Columns.created).fetchAll) + .publisher(in: db.databaseReader, scheduling: .immediate) + .sink( + receiveCompletion: { _ in }, + receiveValue: { [weak self] (books: [Book]) in + self?.books = books + }) + } +} diff --git a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift new file mode 100644 index 000000000..175826014 --- /dev/null +++ b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift @@ -0,0 +1,50 @@ +// +// CatalogDetail.swift +// TestApp +// +// Created by Steven Zeck on 5/25/22. +// +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// + +import GRDBQuery +import SwiftUI + +struct CatalogDetail: View { + + @EnvironmentStateObject private var viewModel: CatalogDetailViewModel + + init(catalog: Catalog) { + _viewModel = EnvironmentStateObject {_ in + CatalogDetailViewModel( + catalog: catalog) + } + } + + var body: some View { + NavigationView { + ScrollView { + if let parseData = viewModel.parseData { + + } + } + .navigationTitle(title) + } + } +} + +extension CatalogDetail { + var title: String { + return viewModel.catalog.title + } +} + +struct CatalogDetail_Previews: PreviewProvider { + static var previews: some View { + let catalog = Catalog(title: "Test", url: "https://www.test.com") + CatalogDetail(catalog: catalog) + } +} diff --git a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift new file mode 100644 index 000000000..64e059fce --- /dev/null +++ b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift @@ -0,0 +1,37 @@ +// +// CatalogDetailViewModel.swift +// TestApp +// +// Created by Steven Zeck on 5/25/22. +// +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// + +import Foundation +import ReadiumOPDS +import SwiftUI + +final class CatalogDetailViewModel : ObservableObject { + + @Published var catalog: Catalog + @ObservedObject var parseData: ParseData? + + init(catalog: Catalog) { + self.catalog = catalog + } + + func parseFeed() { + if let url = URL(string: catalog.url) { + OPDSParser.parseURL(url: url) { data, _ in + DispatchQueue.main.async { + if let data = data { + self.parseData = data + } + } + } + } + } +} diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab.swift b/TestApp/Sources/Views/Catalogs/CatalogsTab.swift deleted file mode 100644 index 014bd104a..000000000 --- a/TestApp/Sources/Views/Catalogs/CatalogsTab.swift +++ /dev/null @@ -1,83 +0,0 @@ -// -// CatalogsTab.swift -// TestApp -// -// Created by Steven Zeck on 5/15/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. -// - -import SwiftUI -import GRDB -import GRDBQuery - -struct CatalogsTab: View { - - @Environment(\.dbQueue) private var dbQueue - - @Query(CatalogFeedListRequest()) - var catalogs: [Catalog] - - var body: some View { - - NavigationView { - List() { - ForEach(catalogs, id: \.id) { catalog in - // NavigationLink(destination: CatalogDetail(catalog: catalog)) { - CatalogFeedRow(title: catalog.title) - // } - } - } - .listStyle(SidebarListStyle()) - .navigationTitle("Catalogs") - .toolbar(content: toolbarContent) - } - .onAppear { - preloadTestFeeds() - } - } -} - -extension CatalogsTab { - @ToolbarContentBuilder - private func toolbarContent() -> some ToolbarContent { - ToolbarItem(placement: .navigationBarTrailing) { - AddButton { - - } - } - } -} - -extension CatalogsTab { - func preloadTestFeeds() { - let version = 2 - let VERSION_KEY = "OPDS_CATALOG_VERSION" - let OPDS2Catalog = Catalog(id: 1, title: "OPDS 2.0 Test Catalog", url: "https://test.opds.io/2.0/home.json") - let OTBCatalog = Catalog(id: 2, title: "Open Textbooks Catalog", url: "http://open.minitex.org/textbooks") - let SEBCatalog = Catalog(id: 3, title: "Standard eBooks Catalog", url: "https://standardebooks.org/opds/all") - - let oldversion = UserDefaults.standard.integer(forKey: VERSION_KEY) - if (catalogs.isEmpty || oldversion < version) { - UserDefaults.standard.set(version, forKey: VERSION_KEY) - try! dbQueue.write { db in - _ = try OPDS2Catalog.inserted(db) - } - try! dbQueue.write { db in - _ = try OTBCatalog.inserted(db) - } - try! dbQueue.write { db in - _ = try SEBCatalog.inserted(db) - } - } - } -} - -struct CatalogsTab_Previews: PreviewProvider { - static var previews: some View { - CatalogsTab() - } -} diff --git a/TestApp/Sources/Views/Catalogs/CatalogFeedRow.swift b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogFeedRow.swift similarity index 56% rename from TestApp/Sources/Views/Catalogs/CatalogFeedRow.swift rename to TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogFeedRow.swift index 6e6c916c9..0b2360dbf 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogFeedRow.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogFeedRow.swift @@ -4,6 +4,11 @@ // // Created by Steven Zeck on 5/23/22. // +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// import SwiftUI diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift new file mode 100644 index 000000000..4107d8dae --- /dev/null +++ b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift @@ -0,0 +1,66 @@ +// +// CatalogsTab.swift +// TestApp +// +// Created by Steven Zeck on 5/15/22. +// +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// + +import GRDBQuery +import SwiftUI + +struct CatalogsTab: View { + + @EnvironmentStateObject private var viewModel: CatalogsTabViewModel + + init() { + _viewModel = EnvironmentStateObject { + CatalogsTabViewModel( + db: $0.db) + } + } + + var body: some View { + + NavigationView { + if let catalogs = viewModel.catalogs { + List() { + ForEach(catalogs, id: \.id) { catalog in + NavigationLink(destination: CatalogDetail(catalog: catalog)) { + CatalogFeedRow(title: catalog.title) + } + } + } + + .listStyle(SidebarListStyle()) + .navigationTitle(title) + .toolbar(content: toolbarContent) + } + } + } +} + +extension CatalogsTab { + @ToolbarContentBuilder + private func toolbarContent() -> some ToolbarContent { + ToolbarItem(placement: .navigationBarTrailing) { + AddButton { + + } + } + } + + var title: String { + return "Catalogs" + } +} + +struct CatalogsTab_Previews: PreviewProvider { + static var previews: some View { + CatalogsTab() + } +} diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTabViewModel.swift b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTabViewModel.swift new file mode 100644 index 000000000..3df822801 --- /dev/null +++ b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTabViewModel.swift @@ -0,0 +1,51 @@ +// +// CatalogsTabViewModel.swift +// TestApp +// +// Created by Steven Zeck on 5/25/22. +// +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// + +import GRDB +import Combine +import Foundation + +final class CatalogsTabViewModel: ObservableObject { + + @Published var catalogs: [Catalog]? + private var cancellable: AnyCancellable? + private var db: Database + + init(db: Database) { + self.db = db + cancellable = ValueObservation + .tracking(Catalog.order(Catalog.Columns.created).fetchAll) + .publisher(in: db.databaseReader, scheduling: .immediate) + .sink( + receiveCompletion: { _ in }, + receiveValue: { [weak self] (catalogs: [Catalog]) in + self?.catalogs = catalogs + }) + preloadTestFeeds() + } + + func preloadTestFeeds() { + let version = 2 + let VERSION_KEY = "OPDS_CATALOG_VERSION" + let OPDS2Catalog = Catalog(title: "OPDS 2.0 Test Catalog", url: "https://test.opds.io/2.0/home.json") + let OTBCatalog = Catalog(title: "Open Textbooks Catalog", url: "http://open.minitex.org/textbooks") + let SEBCatalog = Catalog(title: "Standard eBooks Catalog", url: "https://standardebooks.org/opds/all") + + let oldversion = UserDefaults.standard.integer(forKey: VERSION_KEY) + if (oldversion < version) { + UserDefaults.standard.set(version, forKey: VERSION_KEY) + try! db.insert(OPDS2Catalog) + try! db.insert(OTBCatalog) + try! db.insert(SEBCatalog) + } + } +} From 30de323ef5c6a82d73108a9135bc5135eb1abf4c Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Tue, 31 May 2022 20:34:27 -0500 Subject: [PATCH 08/27] Use async/await for database --- TestApp/Sources/Data/Book.swift | 2 +- TestApp/Sources/Data/Catalog.swift | 2 +- TestApp/Sources/Data/Database.swift | 37 +++++++------------ .../CatalogDetail/CatalogDetail.swift | 20 +++++++--- .../CatalogDetailViewModel.swift | 8 ++-- .../Catalogs/CatalogsTab/CatalogsTab.swift | 2 +- .../CatalogsTab/CatalogsTabViewModel.swift | 22 +++++++---- ...CatalogFeedRow.swift => ListRowItem.swift} | 4 +- 8 files changed, 50 insertions(+), 47 deletions(-) rename TestApp/Sources/Views/Catalogs/CatalogsTab/{CatalogFeedRow.swift => ListRowItem.swift} (91%) diff --git a/TestApp/Sources/Data/Book.swift b/TestApp/Sources/Data/Book.swift index 5f6644598..291f69f2a 100644 --- a/TestApp/Sources/Data/Book.swift +++ b/TestApp/Sources/Data/Book.swift @@ -10,7 +10,7 @@ import GRDB import GRDBQuery import R2Shared -struct Book: Codable, Hashable { +struct Book: Codable, Hashable, Identifiable { struct Id: EntityId { let rawValue: Int64 } let id: Id? diff --git a/TestApp/Sources/Data/Catalog.swift b/TestApp/Sources/Data/Catalog.swift index 34f93b88d..643550afc 100644 --- a/TestApp/Sources/Data/Catalog.swift +++ b/TestApp/Sources/Data/Catalog.swift @@ -9,7 +9,7 @@ import Combine import Foundation import GRDB -struct Catalog: Codable, Hashable { +struct Catalog: Codable, Hashable, Identifiable { struct Id: EntityId { let rawValue: Int64 } var id: Id? diff --git a/TestApp/Sources/Data/Database.swift b/TestApp/Sources/Data/Database.swift index 64c47641f..46ecd1e4e 100644 --- a/TestApp/Sources/Data/Database.swift +++ b/TestApp/Sources/Data/Database.swift @@ -7,6 +7,7 @@ import Combine import Foundation import GRDB +import SwiftUI final class Database { @@ -81,39 +82,27 @@ final class Database { } extension Database { - func insert(_ book: Book) throws { - try writer.write { db in - _ = try book.inserted(db) - } - } - - func update(_ book: Book) throws { - try writer.write { db in - try book.update(db) - } - } - - func delete(_ book: Book) throws { - try writer.write { db in - _ = try book.delete(db) + func saveBook(_ book: inout Book) async throws { + book = try await writer.write { [book] db in + try book.saved(db) } } - func insert(_ catalog: Catalog) throws { - try writer.write { db in - _ = try catalog.inserted(db) + func deleteBooks(ids: [Book.Id]) async throws { + try await writer.write { db in + _ = try Book.deleteAll(db, ids: ids) } } - func update(_ catalog: Catalog) throws { - try writer.write { db in - try catalog.update(db) + func saveCatalog(_ catalog: inout Catalog) async throws { + catalog = try await writer.write { [catalog] db in + try catalog.saved(db) } } - func delete(_ catalog: Catalog) throws { - try writer.write { db in - _ = try catalog.delete(db) + func deleteCatalogs(ids: [Catalog.Id]) async throws { + try await writer.write { db in + _ = try Catalog.deleteAll(db, ids: ids) } } } diff --git a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift index 175826014..6752aca3f 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift @@ -18,20 +18,30 @@ struct CatalogDetail: View { @EnvironmentStateObject private var viewModel: CatalogDetailViewModel init(catalog: Catalog) { - _viewModel = EnvironmentStateObject {_ in + _viewModel = EnvironmentStateObject {_ in CatalogDetailViewModel( catalog: catalog) } } var body: some View { + NavigationView { - ScrollView { +// VStack { if let parseData = viewModel.parseData { - + List(parseData.feed!.navigation, id: \.self) { link in +// NavigationLink(destination: CatalogDetail()) { + ListRowItem(title: link.title!) +// } + } + .listStyle(SidebarListStyle()) } - } - .navigationTitle(title) +// } + } + .navigationTitle(title) + .navigationBarTitleDisplayMode(.inline) + .onAppear { + viewModel.parseFeed() } } } diff --git a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift index 64e059fce..5aa00f74e 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift @@ -14,10 +14,10 @@ import Foundation import ReadiumOPDS import SwiftUI -final class CatalogDetailViewModel : ObservableObject { +@MainActor final class CatalogDetailViewModel : ObservableObject { @Published var catalog: Catalog - @ObservedObject var parseData: ParseData? + @Published var parseData: ParseData? init(catalog: Catalog) { self.catalog = catalog @@ -27,9 +27,7 @@ final class CatalogDetailViewModel : ObservableObject { if let url = URL(string: catalog.url) { OPDSParser.parseURL(url: url) { data, _ in DispatchQueue.main.async { - if let data = data { - self.parseData = data - } + self.parseData = data } } } diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift index 4107d8dae..3972a082b 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift @@ -31,7 +31,7 @@ struct CatalogsTab: View { List() { ForEach(catalogs, id: \.id) { catalog in NavigationLink(destination: CatalogDetail(catalog: catalog)) { - CatalogFeedRow(title: catalog.title) + ListRowItem(title: catalog.title) } } } diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTabViewModel.swift b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTabViewModel.swift index 3df822801..b8b4cbcb7 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTabViewModel.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTabViewModel.swift @@ -30,22 +30,28 @@ final class CatalogsTabViewModel: ObservableObject { receiveValue: { [weak self] (catalogs: [Catalog]) in self?.catalogs = catalogs }) - preloadTestFeeds() + Task { + await preloadTestFeeds() + } } - func preloadTestFeeds() { + func preloadTestFeeds() async { let version = 2 let VERSION_KEY = "OPDS_CATALOG_VERSION" - let OPDS2Catalog = Catalog(title: "OPDS 2.0 Test Catalog", url: "https://test.opds.io/2.0/home.json") - let OTBCatalog = Catalog(title: "Open Textbooks Catalog", url: "http://open.minitex.org/textbooks") - let SEBCatalog = Catalog(title: "Standard eBooks Catalog", url: "https://standardebooks.org/opds/all") + var OPDS2Catalog = Catalog(title: "OPDS 2.0 Test Catalog", url: "https://test.opds.io/2.0/home.json") + var OTBCatalog = Catalog(title: "Open Textbooks Catalog", url: "http://open.minitex.org/textbooks") + var SEBCatalog = Catalog(title: "Standard eBooks Catalog", url: "https://standardebooks.org/opds/all") let oldversion = UserDefaults.standard.integer(forKey: VERSION_KEY) if (oldversion < version) { UserDefaults.standard.set(version, forKey: VERSION_KEY) - try! db.insert(OPDS2Catalog) - try! db.insert(OTBCatalog) - try! db.insert(SEBCatalog) + do { + try await db.saveCatalog(&OPDS2Catalog) + try await db.saveCatalog(&OTBCatalog) + try await db.saveCatalog(&SEBCatalog) + } catch { + + } } } } diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogFeedRow.swift b/TestApp/Sources/Views/Catalogs/CatalogsTab/ListRowItem.swift similarity index 91% rename from TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogFeedRow.swift rename to TestApp/Sources/Views/Catalogs/CatalogsTab/ListRowItem.swift index 0b2360dbf..cda8068a4 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogFeedRow.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogsTab/ListRowItem.swift @@ -12,7 +12,7 @@ import SwiftUI -struct CatalogFeedRow: View { +struct ListRowItem: View { var action: () -> Void = {} var title: String @@ -25,6 +25,6 @@ struct CatalogFeedRow: View { struct CatalogFeedRow_Previews: PreviewProvider { static var previews: some View { - CatalogFeedRow(title: "Test") + ListRowItem(title: "Test") } } From c248ee9eb4e549a82ecbafd42610d9410fe1253a Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Wed, 1 Jun 2022 23:49:14 -0500 Subject: [PATCH 09/27] Add new function to parse OPDS URL async --- Sources/OPDS/OPDSParser.swift | 25 +++++++++++++++++++ .../CatalogDetail/CatalogDetail.swift | 20 +++++++-------- .../CatalogDetailViewModel.swift | 12 ++++++--- 3 files changed, 43 insertions(+), 14 deletions(-) diff --git a/Sources/OPDS/OPDSParser.swift b/Sources/OPDS/OPDSParser.swift index 0cecb7c11..fd66dd135 100644 --- a/Sources/OPDS/OPDSParser.swift +++ b/Sources/OPDS/OPDSParser.swift @@ -46,4 +46,29 @@ public class OPDSParser { }.resume() } + /// Asynchronously Parse an OPDS feed or publication. + /// Feed can be v1 (XML) or v2 (JSON). + /// - parameter url: The feed URL + @available(iOS 15.0.0, *) + public static func parseURL(url: URL) async throws -> ParseData { + feedURL = url + + let session = URLSession.shared + guard let (data, response) = try? await session.data(from: url), + let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 + else { + throw OPDSParserError.documentNotFound + } + // We try to parse as an OPDS v1 feed, + // then, if it fails, we try as an OPDS v2 feed. + if let parseData = try? OPDS1Parser.parse(xmlData: data, url: url, response: response) { + return parseData + } else if let parseData = try? OPDS2Parser.parse(jsonData: data, url: url, response: response) { + return parseData + } else { + throw OPDSParserError.documentNotValid + } + } + } diff --git a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift index 6752aca3f..1e3143d8c 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift @@ -27,21 +27,21 @@ struct CatalogDetail: View { var body: some View { NavigationView { -// VStack { - if let parseData = viewModel.parseData { - List(parseData.feed!.navigation, id: \.self) { link in -// NavigationLink(destination: CatalogDetail()) { - ListRowItem(title: link.title!) -// } - } - .listStyle(SidebarListStyle()) + if let parseData = viewModel.parseData { + List(parseData.feed!.navigation, id: \.self) { link in + // NavigationLink(destination: CatalogDetail()) { + ListRowItem(title: link.title!) + // } } -// } + .listStyle(SidebarListStyle()) + } } .navigationTitle(title) .navigationBarTitleDisplayMode(.inline) .onAppear { - viewModel.parseFeed() + Task { + await viewModel.parseFeed() + } } } } diff --git a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift index 5aa00f74e..06e01988b 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift @@ -23,11 +23,15 @@ import SwiftUI self.catalog = catalog } - func parseFeed() { + func parseFeed() async { if let url = URL(string: catalog.url) { - OPDSParser.parseURL(url: url) { data, _ in - DispatchQueue.main.async { - self.parseData = data + if #available(iOS 15.0.0, *) { + self.parseData = try? await OPDSParser.parseURL(url: url) + } else { + OPDSParser.parseURL(url: url) { data, _ in + DispatchQueue.main.async { + self.parseData = data + } } } } From 49f7581365187c94c2070b9055c30d0c3a56ad59 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Thu, 2 Jun 2022 21:39:49 -0500 Subject: [PATCH 10/27] Show sheet for adding a book --- .../Views/Bookshelf/AddBookSheet.swift | 41 +++++++++++++++++++ .../Views/Bookshelf/BookshelfTab.swift | 30 +++++++++----- 2 files changed, 60 insertions(+), 11 deletions(-) create mode 100644 TestApp/Sources/Views/Bookshelf/AddBookSheet.swift diff --git a/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift b/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift new file mode 100644 index 000000000..edc173e70 --- /dev/null +++ b/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift @@ -0,0 +1,41 @@ +// +// AddBookSheet.swift +// TestApp +// +// Created by Steven Zeck on 6/2/22. +// + +import SwiftUI + +struct AddBookSheet: View { + + // For iOS 15, we can use @Environment(\.dismiss) + @Binding var showingSheet: Bool + var action: (String) -> Void + + @State var url: String = "" + + var body: some View { + NavigationView { + Form { + TextField("URL", text: $url) + .keyboardType(.URL) + .autocapitalization(.none) + // FIXME better looking buttons here + Button("Add") { + action(url) + } + Button("Cancel") { + showingSheet = false + } + } + .navigationBarTitle("Add a Book") + } + } +} + +//struct AddBookSheet_Previews: PreviewProvider { +// static var previews: some View { +// AddBookSheet(showingSheet: true) +// } +//} diff --git a/TestApp/Sources/Views/Bookshelf/BookshelfTab.swift b/TestApp/Sources/Views/Bookshelf/BookshelfTab.swift index bb5a67bc1..6661de74e 100644 --- a/TestApp/Sources/Views/Bookshelf/BookshelfTab.swift +++ b/TestApp/Sources/Views/Bookshelf/BookshelfTab.swift @@ -16,6 +16,7 @@ import GRDBQuery struct BookshelfTab: View { @EnvironmentStateObject private var viewModel: BookshelfTabViewModel + @State private var showingSheet = false init() { _viewModel = EnvironmentStateObject { @@ -25,19 +26,26 @@ struct BookshelfTab: View { } var body: some View { - NavigationView { - // TODO figure out what the best column layout is for phones and tablets - if let books = viewModel.books { - let columns: [GridItem] = Array(repeating: .init(.adaptive(minimum: 170)), count: 2) - ScrollView { - LazyVGrid(columns: columns, spacing: 20) { - ForEach(books, id: \.self) { item in - BookCover(book: item) + VStack { + NavigationView { + // TODO figure out what the best column layout is for phones and tablets + if let books = viewModel.books { + let columns: [GridItem] = Array(repeating: .init(.adaptive(minimum: 170)), count: 2) + ScrollView { + LazyVGrid(columns: columns, spacing: 20) { + ForEach(books, id: \.self) { item in + BookCover(book: item) + } } } + .navigationTitle("Bookshelf") + .toolbar(content: toolbarContent) + } + } + .sheet(isPresented: $showingSheet) { + AddBookSheet(showingSheet: $showingSheet) { url in + // TODO validate the URL and import the book } - .navigationTitle("Bookshelf") - .toolbar(content: toolbarContent) } } } @@ -48,7 +56,7 @@ extension BookshelfTab { private func toolbarContent() -> some ToolbarContent { ToolbarItem(placement: .navigationBarTrailing) { AddButton { - + showingSheet = true } } } From 2ad223689afa0c016453395effa0731d58a3aa07 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Fri, 3 Jun 2022 00:04:10 -0500 Subject: [PATCH 11/27] Sheet for adding OPDS feed, file cleanup --- .../Sources/{ => Views}/About/AboutTab.swift | 0 .../Views/Bookshelf/AddBookSheet.swift | 7 ++- .../Catalogs/CatalogsTab/AddFeedSheet.swift | 48 +++++++++++++++++++ .../Catalogs/CatalogsTab/CatalogsTab.swift | 8 +++- .../CatalogsTab => }/ListRowItem.swift | 0 5 files changed, 61 insertions(+), 2 deletions(-) rename TestApp/Sources/{ => Views}/About/AboutTab.swift (100%) create mode 100644 TestApp/Sources/Views/Catalogs/CatalogsTab/AddFeedSheet.swift rename TestApp/Sources/Views/{Catalogs/CatalogsTab => }/ListRowItem.swift (100%) diff --git a/TestApp/Sources/About/AboutTab.swift b/TestApp/Sources/Views/About/AboutTab.swift similarity index 100% rename from TestApp/Sources/About/AboutTab.swift rename to TestApp/Sources/Views/About/AboutTab.swift diff --git a/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift b/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift index edc173e70..6285934ca 100644 --- a/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift +++ b/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift @@ -4,6 +4,11 @@ // // Created by Steven Zeck on 6/2/22. // +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// import SwiftUI @@ -21,7 +26,7 @@ struct AddBookSheet: View { TextField("URL", text: $url) .keyboardType(.URL) .autocapitalization(.none) - // FIXME better looking buttons here + // FIXME better looking buttons here, or move to toolbar within sheet Button("Add") { action(url) } diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab/AddFeedSheet.swift b/TestApp/Sources/Views/Catalogs/CatalogsTab/AddFeedSheet.swift new file mode 100644 index 000000000..acc254b45 --- /dev/null +++ b/TestApp/Sources/Views/Catalogs/CatalogsTab/AddFeedSheet.swift @@ -0,0 +1,48 @@ +// +// AddFeedSheet.swift +// TestApp +// +// Created by Steven Zeck on 6/2/22. +// +// Copyright 2022 European Digital Reading Lab. All rights reserved. +// Licensed to the Readium Foundation under one or more contributor license agreements. +// Use of this source code is governed by a BSD-style license which is detailed in the +// LICENSE file present in the project repository where this source code is maintained. +// + +import SwiftUI + +struct AddFeedSheet: View { + + // For iOS 15, we can use @Environment(\.dismiss) + @Binding var showingSheet: Bool + var action: (String, String) -> Void + + @State var title: String = "" + @State var url: String = "" + + var body: some View { + NavigationView { + Form { + TextField("Feed Title", text: $title) + TextField("URL", text: $url) + .keyboardType(.URL) + .autocapitalization(.none) + // FIXME better looking buttons here, or move to toolbar within sheet + Button("Add") { + action(title, url) + } + Button("Cancel") { + showingSheet = false + } + } + .navigationBarTitle("Add an OPDS Feed") + } + } +} + +//struct AddFeedSheet_Previews: PreviewProvider { +// static var previews: some View { +// AddFeedSheet() +// } +//} diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift index 3972a082b..a5090d2bd 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift @@ -16,6 +16,7 @@ import SwiftUI struct CatalogsTab: View { @EnvironmentStateObject private var viewModel: CatalogsTabViewModel + @State private var showingSheet = false init() { _viewModel = EnvironmentStateObject { @@ -41,6 +42,11 @@ struct CatalogsTab: View { .toolbar(content: toolbarContent) } } + .sheet(isPresented: $showingSheet) { + AddFeedSheet(showingSheet: $showingSheet) { title, url in + // TODO validate the URL and import the feed + } + } } } @@ -49,7 +55,7 @@ extension CatalogsTab { private func toolbarContent() -> some ToolbarContent { ToolbarItem(placement: .navigationBarTrailing) { AddButton { - + showingSheet = true } } } diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab/ListRowItem.swift b/TestApp/Sources/Views/ListRowItem.swift similarity index 100% rename from TestApp/Sources/Views/Catalogs/CatalogsTab/ListRowItem.swift rename to TestApp/Sources/Views/ListRowItem.swift From ee4622a93d647fcdf76db62d334d4ac603345bf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Menu?= Date: Fri, 3 Jun 2022 19:13:14 +0200 Subject: [PATCH 12/27] Refactor dependency management with `Container` --- Sources/OPDS/Deprecated.swift | 39 ----------------- Sources/OPDS/OPDSParser.swift | 35 +++++++-------- TestApp/Sources/AppDelegate.swift | 2 +- TestApp/Sources/Container.swift | 43 +++++++++++++++++++ TestApp/Sources/Data/Book.swift | 1 - TestApp/Sources/TestApp.swift | 39 ++++++++--------- .../About/{AboutTab.swift => About.swift} | 8 ++-- .../{BookshelfTab.swift => Bookshelf.swift} | 24 +++-------- ...ewModel.swift => BookshelfViewModel.swift} | 4 +- .../CatalogDetail/CatalogDetail.swift | 22 ++-------- .../CatalogDetailViewModel.swift | 14 ++---- .../AddFeedSheet.swift | 0 .../Catalogs.swift} | 37 ++++------------ .../CatalogsViewModel.swift} | 4 +- TestApp/Sources/Views/ContentView.swift | 38 ---------------- 15 files changed, 107 insertions(+), 203 deletions(-) delete mode 100644 Sources/OPDS/Deprecated.swift create mode 100644 TestApp/Sources/Container.swift rename TestApp/Sources/Views/About/{AboutTab.swift => About.swift} (93%) rename TestApp/Sources/Views/Bookshelf/{BookshelfTab.swift => Bookshelf.swift} (78%) rename TestApp/Sources/Views/Bookshelf/{BookshelfTabViewModel.swift => BookshelfViewModel.swift} (91%) rename TestApp/Sources/Views/Catalogs/{CatalogsTab => Catalogs}/AddFeedSheet.swift (100%) rename TestApp/Sources/Views/Catalogs/{CatalogsTab/CatalogsTab.swift => Catalogs/Catalogs.swift} (68%) rename TestApp/Sources/Views/Catalogs/{CatalogsTab/CatalogsTabViewModel.swift => Catalogs/CatalogsViewModel.swift} (95%) delete mode 100644 TestApp/Sources/Views/ContentView.swift diff --git a/Sources/OPDS/Deprecated.swift b/Sources/OPDS/Deprecated.swift deleted file mode 100644 index b30674230..000000000 --- a/Sources/OPDS/Deprecated.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// Deprecated.swift -// readium-opds -// -// Created by Mickaël Menu on 20.02.19. -// -// Copyright 2018 Readium Foundation. All rights reserved. -// Use of this source code is governed by a BSD-style license which is detailed -// in the LICENSE file present in the project repository where this source code is maintained. -// - -import Foundation -import R2Shared - -public typealias Promise = Void - -extension OPDSParser { - - @available(*, unavailable, message: "Use `parseURL(url:completion:)` instead") - public static func parseURL(url: URL) -> Promise {} - -} - -extension OPDS1Parser { - - @available(*, unavailable, message: "Use `parseURL(url:completion:)` instead") - public static func parseURL(url: URL) -> Promise {} - - @available(*, unavailable, message: "Use `fetchOpenSearchTemplate(feed:completion:)` instead") - public static func fetchOpenSearchTemplate(feed: Feed) -> Promise {} - -} - -extension OPDS2Parser { - - @available(*, unavailable, message: "Use `parseURL(url:completion:)` instead") - public static func parseURL(url: URL) -> Promise {} - -} diff --git a/Sources/OPDS/OPDSParser.swift b/Sources/OPDS/OPDSParser.swift index fd66dd135..d57832521 100644 --- a/Sources/OPDS/OPDSParser.swift +++ b/Sources/OPDS/OPDSParser.swift @@ -45,30 +45,27 @@ public class OPDSParser { } }.resume() } - + +#if compiler(>=5.5) && canImport(_Concurrency) + /// Asynchronously Parse an OPDS feed or publication. /// Feed can be v1 (XML) or v2 (JSON). /// - parameter url: The feed URL - @available(iOS 15.0.0, *) + @available(iOS 13.0, *) public static func parseURL(url: URL) async throws -> ParseData { - feedURL = url - - let session = URLSession.shared - guard let (data, response) = try? await session.data(from: url), - let httpResponse = response as? HTTPURLResponse, - httpResponse.statusCode == 200 - else { - throw OPDSParserError.documentNotFound + try await withCheckedThrowingContinuation { continuation in + parseURL(url: url) { data, error in + if let error = error { + continuation.resume(with: .failure(error)) + } else if let data = data { + continuation.resume(with: .success(data)) + } else { + continuation.resume(with: .failure(OPDSParserError.documentNotValid)) } - // We try to parse as an OPDS v1 feed, - // then, if it fails, we try as an OPDS v2 feed. - if let parseData = try? OPDS1Parser.parse(xmlData: data, url: url, response: response) { - return parseData - } else if let parseData = try? OPDS2Parser.parse(jsonData: data, url: url, response: response) { - return parseData - } else { - throw OPDSParserError.documentNotValid + } } } - + +#endif + } diff --git a/TestApp/Sources/AppDelegate.swift b/TestApp/Sources/AppDelegate.swift index cfe5d34a7..6a1a1e200 100644 --- a/TestApp/Sources/AppDelegate.swift +++ b/TestApp/Sources/AppDelegate.swift @@ -13,7 +13,7 @@ import Combine import UIKit -@UIApplicationMain +//@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? diff --git a/TestApp/Sources/Container.swift b/TestApp/Sources/Container.swift new file mode 100644 index 000000000..721b30098 --- /dev/null +++ b/TestApp/Sources/Container.swift @@ -0,0 +1,43 @@ +// +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. +// + +import Foundation + +class Container { + + private let db: Database + + init() throws { + self.db = try Database(file: Paths.library.appendingPathComponent("database.db")) + } + + // Bookshelf + + private lazy var books = BookRepository(db: db) + + func bookshelf() -> Bookshelf { + Bookshelf(viewModel: BookshelfViewModel(db: db)) + } + + // Catalogs + + func catalogs() -> Catalogs { + Catalogs( + viewModel: CatalogsViewModel(db: db), + catalogDetail: catalogDetail(with:) + ) + } + + func catalogDetail(with catalog: Catalog) -> CatalogDetail { + CatalogDetail(viewModel: CatalogDetailViewModel(catalog: catalog)) + } + + // About + + func about() -> About { + About() + } +} diff --git a/TestApp/Sources/Data/Book.swift b/TestApp/Sources/Data/Book.swift index 291f69f2a..52deb9879 100644 --- a/TestApp/Sources/Data/Book.swift +++ b/TestApp/Sources/Data/Book.swift @@ -7,7 +7,6 @@ import Combine import Foundation import GRDB -import GRDBQuery import R2Shared struct Book: Codable, Hashable, Identifiable { diff --git a/TestApp/Sources/TestApp.swift b/TestApp/Sources/TestApp.swift index 0c3e40856..0c8999bf0 100644 --- a/TestApp/Sources/TestApp.swift +++ b/TestApp/Sources/TestApp.swift @@ -12,30 +12,27 @@ import SwiftUI import GRDB -import GRDBQuery -//@main -struct testApp: App { +@main +struct TestApp: App { + let container = try! Container() + var body: some Scene { WindowGroup { - ContentView().environment(\.db, try! Database(file: Paths.library.appendingPathComponent("database.db"))) + TabView { + container.bookshelf() + .tabItem { + Label("Bookshelf", systemImage: "books.vertical.fill") + } + container.catalogs() + .tabItem { + Label("Catalogs", systemImage: "magazine.fill") + } + container.about() + .tabItem { + Label("About", systemImage: "info.circle.fill") + } + } } } } - -private struct DatabaseKey: EnvironmentKey { - static let defaultValue = Database.empty() -} - -extension EnvironmentValues { - var db: Database { - get { self[DatabaseKey.self] } - set { self[DatabaseKey.self] = newValue } - } -} - -extension Query where Request.DatabaseContext == Database { - init(_ request: Request) { - self.init(request, in: \.db) - } -} diff --git a/TestApp/Sources/Views/About/AboutTab.swift b/TestApp/Sources/Views/About/About.swift similarity index 93% rename from TestApp/Sources/Views/About/AboutTab.swift rename to TestApp/Sources/Views/About/About.swift index 41af74f93..68ddf08d0 100644 --- a/TestApp/Sources/Views/About/AboutTab.swift +++ b/TestApp/Sources/Views/About/About.swift @@ -1,5 +1,5 @@ // -// AboutTab.swift +// About.swift // TestApp // // Created by Steven Zeck on 5/15/22. @@ -12,7 +12,7 @@ import SwiftUI -struct AboutTab: View { +struct About: View { var body: some View { NavigationView { VStack(alignment: .leading, spacing: 20) { @@ -40,8 +40,8 @@ struct AboutTab: View { } } -struct AboutTab_Previews: PreviewProvider { +struct About_Previews: PreviewProvider { static var previews: some View { - AboutTab() + About() } } diff --git a/TestApp/Sources/Views/Bookshelf/BookshelfTab.swift b/TestApp/Sources/Views/Bookshelf/Bookshelf.swift similarity index 78% rename from TestApp/Sources/Views/Bookshelf/BookshelfTab.swift rename to TestApp/Sources/Views/Bookshelf/Bookshelf.swift index 6661de74e..ea7a8efee 100644 --- a/TestApp/Sources/Views/Bookshelf/BookshelfTab.swift +++ b/TestApp/Sources/Views/Bookshelf/Bookshelf.swift @@ -1,5 +1,5 @@ // -// BookshelfTab.swift +// Bookshelf.swift // TestApp // // Created by Steven Zeck on 5/15/22. @@ -11,22 +11,13 @@ // import SwiftUI -import GRDBQuery -struct BookshelfTab: View { +struct Bookshelf: View { - @EnvironmentStateObject private var viewModel: BookshelfTabViewModel + @ObservedObject var viewModel: BookshelfViewModel @State private var showingSheet = false - init() { - _viewModel = EnvironmentStateObject { - BookshelfTabViewModel( - db: $0.db) - } - } - var body: some View { - VStack { NavigationView { // TODO figure out what the best column layout is for phones and tablets if let books = viewModel.books { @@ -42,16 +33,16 @@ struct BookshelfTab: View { .toolbar(content: toolbarContent) } } + .navigationViewStyle(.stack) .sheet(isPresented: $showingSheet) { AddBookSheet(showingSheet: $showingSheet) { url in // TODO validate the URL and import the book } } - } } } -extension BookshelfTab { +extension Bookshelf { @ToolbarContentBuilder private func toolbarContent() -> some ToolbarContent { ToolbarItem(placement: .navigationBarTrailing) { @@ -62,8 +53,3 @@ extension BookshelfTab { } } -struct BookshelfTab_Previews: PreviewProvider { - static var previews: some View { - BookshelfTab() - } -} diff --git a/TestApp/Sources/Views/Bookshelf/BookshelfTabViewModel.swift b/TestApp/Sources/Views/Bookshelf/BookshelfViewModel.swift similarity index 91% rename from TestApp/Sources/Views/Bookshelf/BookshelfTabViewModel.swift rename to TestApp/Sources/Views/Bookshelf/BookshelfViewModel.swift index 326be8771..27ba44d8c 100644 --- a/TestApp/Sources/Views/Bookshelf/BookshelfTabViewModel.swift +++ b/TestApp/Sources/Views/Bookshelf/BookshelfViewModel.swift @@ -1,5 +1,5 @@ // -// BookshelfTabViewModel.swift +// BookshelfViewModel.swift // TestApp // // Created by Steven Zeck on 5/25/22. @@ -14,7 +14,7 @@ import GRDB import Combine import Foundation -final class BookshelfTabViewModel: ObservableObject { +final class BookshelfViewModel: ObservableObject { @Published var books: [Book]? private var cancellable: AnyCancellable? diff --git a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift index 1e3143d8c..71832ca80 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift @@ -10,23 +10,15 @@ // LICENSE file present in the project repository where this source code is maintained. // -import GRDBQuery import SwiftUI struct CatalogDetail: View { - @EnvironmentStateObject private var viewModel: CatalogDetailViewModel - - init(catalog: Catalog) { - _viewModel = EnvironmentStateObject {_ in - CatalogDetailViewModel( - catalog: catalog) - } - } + @ObservedObject var viewModel: CatalogDetailViewModel var body: some View { - NavigationView { + VStack { if let parseData = viewModel.parseData { List(parseData.feed!.navigation, id: \.self) { link in // NavigationLink(destination: CatalogDetail()) { @@ -36,7 +28,7 @@ struct CatalogDetail: View { .listStyle(SidebarListStyle()) } } - .navigationTitle(title) + .navigationTitle(viewModel.catalog.title) .navigationBarTitleDisplayMode(.inline) .onAppear { Task { @@ -46,15 +38,9 @@ struct CatalogDetail: View { } } -extension CatalogDetail { - var title: String { - return viewModel.catalog.title - } -} - struct CatalogDetail_Previews: PreviewProvider { static var previews: some View { let catalog = Catalog(title: "Test", url: "https://www.test.com") - CatalogDetail(catalog: catalog) + CatalogDetail(viewModel: CatalogDetailViewModel(catalog: catalog)) } } diff --git a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift index 06e01988b..bb7f06b7b 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift @@ -14,7 +14,7 @@ import Foundation import ReadiumOPDS import SwiftUI -@MainActor final class CatalogDetailViewModel : ObservableObject { +final class CatalogDetailViewModel : ObservableObject { @Published var catalog: Catalog @Published var parseData: ParseData? @@ -23,17 +23,9 @@ import SwiftUI self.catalog = catalog } - func parseFeed() async { + @MainActor func parseFeed() async { if let url = URL(string: catalog.url) { - if #available(iOS 15.0.0, *) { - self.parseData = try? await OPDSParser.parseURL(url: url) - } else { - OPDSParser.parseURL(url: url) { data, _ in - DispatchQueue.main.async { - self.parseData = data - } - } - } + self.parseData = try? await OPDSParser.parseURL(url: url) } } } diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab/AddFeedSheet.swift b/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift similarity index 100% rename from TestApp/Sources/Views/Catalogs/CatalogsTab/AddFeedSheet.swift rename to TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift b/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift similarity index 68% rename from TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift rename to TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift index a5090d2bd..97db6e9ca 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTab.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift @@ -1,5 +1,5 @@ // -// CatalogsTab.swift +// Catalogs.swift // TestApp // // Created by Steven Zeck on 5/15/22. @@ -10,47 +10,38 @@ // LICENSE file present in the project repository where this source code is maintained. // -import GRDBQuery import SwiftUI -struct CatalogsTab: View { +struct Catalogs: View { - @EnvironmentStateObject private var viewModel: CatalogsTabViewModel - @State private var showingSheet = false + @ObservedObject var viewModel: CatalogsViewModel + let catalogDetail: (Catalog) -> CatalogDetail - init() { - _viewModel = EnvironmentStateObject { - CatalogsTabViewModel( - db: $0.db) - } - } + @State private var showingSheet = false var body: some View { - NavigationView { if let catalogs = viewModel.catalogs { List() { ForEach(catalogs, id: \.id) { catalog in - NavigationLink(destination: CatalogDetail(catalog: catalog)) { + NavigationLink(destination: catalogDetail(catalog)) { ListRowItem(title: catalog.title) } } } - .listStyle(SidebarListStyle()) - .navigationTitle(title) + .navigationTitle("Catalogs") .toolbar(content: toolbarContent) } } + .navigationViewStyle(.stack) .sheet(isPresented: $showingSheet) { AddFeedSheet(showingSheet: $showingSheet) { title, url in // TODO validate the URL and import the feed } } } -} - -extension CatalogsTab { + @ToolbarContentBuilder private func toolbarContent() -> some ToolbarContent { ToolbarItem(placement: .navigationBarTrailing) { @@ -59,14 +50,4 @@ extension CatalogsTab { } } } - - var title: String { - return "Catalogs" - } -} - -struct CatalogsTab_Previews: PreviewProvider { - static var previews: some View { - CatalogsTab() - } } diff --git a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTabViewModel.swift b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift similarity index 95% rename from TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTabViewModel.swift rename to TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift index b8b4cbcb7..c56d1ec76 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogsTab/CatalogsTabViewModel.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift @@ -1,5 +1,5 @@ // -// CatalogsTabViewModel.swift +// CatalogsViewModel.swift // TestApp // // Created by Steven Zeck on 5/25/22. @@ -14,7 +14,7 @@ import GRDB import Combine import Foundation -final class CatalogsTabViewModel: ObservableObject { +final class CatalogsViewModel: ObservableObject { @Published var catalogs: [Catalog]? private var cancellable: AnyCancellable? diff --git a/TestApp/Sources/Views/ContentView.swift b/TestApp/Sources/Views/ContentView.swift deleted file mode 100644 index 41f91d88a..000000000 --- a/TestApp/Sources/Views/ContentView.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// ContentView.swift -// TestApp -// -// Created by Steven Zeck on 5/15/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. -// - -import SwiftUI - -struct ContentView: View { - var body: some View { - TabView { - BookshelfTab() - .tabItem { - Label("Bookshelf", systemImage: "books.vertical.fill") - } - CatalogsTab() - .tabItem { - Label("Catalogs", systemImage: "magazine.fill") - } - AboutTab() - .tabItem { - Label("About", systemImage: "info.circle.fill") - } - } - } -} - -struct ContentView_Previews: PreviewProvider { - static var previews: some View { - ContentView() - } -} From 6b184d3dc76e82367ef3cdc044c03644b00c0160 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Sun, 5 Jun 2022 12:31:40 -0500 Subject: [PATCH 13/27] Start making suggested changes --- TestApp/Sources/Container.swift | 8 +++-- TestApp/Sources/Data/Book.swift | 13 +++++++++ TestApp/Sources/Data/Catalog.swift | 20 +++++++++++++ TestApp/Sources/Data/Database.swift | 29 ++----------------- TestApp/Sources/Views/BookCover.swift | 2 +- .../Views/Bookshelf/BookshelfViewModel.swift | 21 ++++++-------- .../Catalogs/Catalogs/CatalogsViewModel.swift | 26 +++++++---------- 7 files changed, 61 insertions(+), 58 deletions(-) diff --git a/TestApp/Sources/Container.swift b/TestApp/Sources/Container.swift index 721b30098..ddd4ad5d4 100644 --- a/TestApp/Sources/Container.swift +++ b/TestApp/Sources/Container.swift @@ -16,17 +16,19 @@ class Container { // Bookshelf - private lazy var books = BookRepository(db: db) + private lazy var bookRepository = BookRepository(db: db) func bookshelf() -> Bookshelf { - Bookshelf(viewModel: BookshelfViewModel(db: db)) + Bookshelf(viewModel: BookshelfViewModel(bookRepository: bookRepository)) } // Catalogs + private lazy var catalogRepository = CatalogRepository(db: db) + func catalogs() -> Catalogs { Catalogs( - viewModel: CatalogsViewModel(db: db), + viewModel: CatalogsViewModel(catalogRepository: catalogRepository), catalogDetail: catalogDetail(with:) ) } diff --git a/TestApp/Sources/Data/Book.swift b/TestApp/Sources/Data/Book.swift index 52deb9879..0af5b1c02 100644 --- a/TestApp/Sources/Data/Book.swift +++ b/TestApp/Sources/Data/Book.swift @@ -67,6 +67,19 @@ final class BookRepository { self.db = db } + // TODO The idea is to use GRDB's async DatabaseWriter.write + func saveBook(_ book: inout Book) async throws { + book = try await db.writer.write { [book] db in + try book.saved(db) + } + } + + func deleteBooks(ids: [Book.Id]) async throws { + try await db.writer.write { db in + _ = try Book.deleteAll(db, ids: ids) + } + } + func all() -> AnyPublisher<[Book], Error> { db.observe { db in try Book.order(Book.Columns.created).fetchAll(db) diff --git a/TestApp/Sources/Data/Catalog.swift b/TestApp/Sources/Data/Catalog.swift index 643550afc..f07ba9069 100644 --- a/TestApp/Sources/Data/Catalog.swift +++ b/TestApp/Sources/Data/Catalog.swift @@ -30,3 +30,23 @@ extension Catalog: TableRecord, FetchableRecord, PersistableRecord { case id, title, url, created } } + +final class CatalogRepository { + private let db: Database + + init(db: Database) { + self.db = db + } + + func saveCatalog(_ catalog: inout Catalog) async throws { + catalog = try await db.writer.write { [catalog] db in + try catalog.saved(db) + } + } + + func deleteCatalogs(ids: [Catalog.Id]) async throws { + try await db.writer.write { db in + _ = try Catalog.deleteAll(db, ids: ids) + } + } +} diff --git a/TestApp/Sources/Data/Database.swift b/TestApp/Sources/Data/Database.swift index 46ecd1e4e..72e3bfa4c 100644 --- a/TestApp/Sources/Data/Database.swift +++ b/TestApp/Sources/Data/Database.swift @@ -15,7 +15,8 @@ final class Database { try self.init(writer: try DatabaseQueue(path: file.path)) } - private let writer: DatabaseWriter + // FIXME make this private again + let writer: DatabaseWriter private init(writer: DatabaseWriter = DatabaseQueue()) throws { self.writer = writer @@ -81,32 +82,6 @@ final class Database { } } -extension Database { - func saveBook(_ book: inout Book) async throws { - book = try await writer.write { [book] db in - try book.saved(db) - } - } - - func deleteBooks(ids: [Book.Id]) async throws { - try await writer.write { db in - _ = try Book.deleteAll(db, ids: ids) - } - } - - func saveCatalog(_ catalog: inout Catalog) async throws { - catalog = try await writer.write { [catalog] db in - try catalog.saved(db) - } - } - - func deleteCatalogs(ids: [Catalog.Id]) async throws { - try await writer.write { db in - _ = try Catalog.deleteAll(db, ids: ids) - } - } -} - extension Database { /// Provides a read-only access to the database var databaseReader: DatabaseReader { diff --git a/TestApp/Sources/Views/BookCover.swift b/TestApp/Sources/Views/BookCover.swift index e3f77f54b..96b9cea3e 100644 --- a/TestApp/Sources/Views/BookCover.swift +++ b/TestApp/Sources/Views/BookCover.swift @@ -33,7 +33,7 @@ extension BookCover { let image = UIImage(data: data) { return Image(uiImage: image) } else { - return Image("defaultCover") + return Image(systemName: "book.closed") } } } diff --git a/TestApp/Sources/Views/Bookshelf/BookshelfViewModel.swift b/TestApp/Sources/Views/Bookshelf/BookshelfViewModel.swift index 27ba44d8c..f0e316db4 100644 --- a/TestApp/Sources/Views/Bookshelf/BookshelfViewModel.swift +++ b/TestApp/Sources/Views/Bookshelf/BookshelfViewModel.swift @@ -17,18 +17,15 @@ import Foundation final class BookshelfViewModel: ObservableObject { @Published var books: [Book]? - private var cancellable: AnyCancellable? - private var db: Database + private var bookRepository: BookRepository - init(db: Database) { - self.db = db - cancellable = ValueObservation - .tracking(Book.order(Book.Columns.created).fetchAll) - .publisher(in: db.databaseReader, scheduling: .immediate) - .sink( - receiveCompletion: { _ in }, - receiveValue: { [weak self] (books: [Book]) in - self?.books = books - }) + init(bookRepository: BookRepository) { + self.bookRepository = bookRepository +// self.db = db +// ValueObservation +// .tracking(Book.order(Book.Columns.created).fetchAll) +// .publisher(in: db.databaseReader, scheduling: .immediate) +// .assertNoFailure() +// .assign(to: &$books) } } diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift index c56d1ec76..864244101 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift @@ -17,19 +17,15 @@ import Foundation final class CatalogsViewModel: ObservableObject { @Published var catalogs: [Catalog]? - private var cancellable: AnyCancellable? - private var db: Database + var catalogRepository: CatalogRepository - init(db: Database) { - self.db = db - cancellable = ValueObservation - .tracking(Catalog.order(Catalog.Columns.created).fetchAll) - .publisher(in: db.databaseReader, scheduling: .immediate) - .sink( - receiveCompletion: { _ in }, - receiveValue: { [weak self] (catalogs: [Catalog]) in - self?.catalogs = catalogs - }) + init(catalogRepository: CatalogRepository) { + self.catalogRepository = catalogRepository +// ValueObservation +// .tracking(Catalog.order(Catalog.Columns.created).fetchAll) +// .publisher(in: db.databaseReader, scheduling: .immediate) +// .assertNoFailure() +// .assign(to: &catalogs) Task { await preloadTestFeeds() } @@ -46,9 +42,9 @@ final class CatalogsViewModel: ObservableObject { if (oldversion < version) { UserDefaults.standard.set(version, forKey: VERSION_KEY) do { - try await db.saveCatalog(&OPDS2Catalog) - try await db.saveCatalog(&OTBCatalog) - try await db.saveCatalog(&SEBCatalog) + try await catalogRepository.saveCatalog(&OPDS2Catalog) + try await catalogRepository.saveCatalog(&OTBCatalog) + try await catalogRepository.saveCatalog(&SEBCatalog) } catch { } From f8750b0c1babad2088c0d2ed8289d7bdd70ee40d Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Sun, 5 Jun 2022 14:41:33 -0500 Subject: [PATCH 14/27] Make suggested changes Remove default book cover, Move OPDS feed insert block into Repository, Move all database calls into Repository --- TestApp/Sources/Data/Catalog.swift | 28 +++++++++++++++++ .../defaultCover.imageset/Contents.json | 21 ------------- .../defaultCover.imageset/cover.png | Bin 8020 -> 0 bytes TestApp/Sources/Views/BookCover.swift | 28 ++++++++--------- .../Sources/Views/Bookshelf/Bookshelf.swift | 18 ++++++----- .../Views/Bookshelf/BookshelfViewModel.swift | 6 ---- .../CatalogDetail/CatalogDetail.swift | 2 +- .../Views/Catalogs/Catalogs/Catalogs.swift | 18 ++++++----- .../Catalogs/Catalogs/CatalogsViewModel.swift | 29 ++---------------- 9 files changed, 64 insertions(+), 86 deletions(-) delete mode 100644 TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/Contents.json delete mode 100644 TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/cover.png diff --git a/TestApp/Sources/Data/Catalog.swift b/TestApp/Sources/Data/Catalog.swift index f07ba9069..70570dc45 100644 --- a/TestApp/Sources/Data/Catalog.swift +++ b/TestApp/Sources/Data/Catalog.swift @@ -38,6 +38,34 @@ final class CatalogRepository { self.db = db } + func preloadTestFeeds() async { + let version = 2 + let VERSION_KEY = "OPDS_CATALOG_VERSION" + var OPDS2Catalog = Catalog(title: "OPDS 2.0 Test Catalog", url: "https://test.opds.io/2.0/home.json") + var OTBCatalog = Catalog(title: "Open Textbooks Catalog", url: "http://open.minitex.org/textbooks") + var SEBCatalog = Catalog(title: "Standard eBooks Catalog", url: "https://standardebooks.org/opds/all") + + let oldversion = UserDefaults.standard.integer(forKey: VERSION_KEY) + if (oldversion < version) { + UserDefaults.standard.set(version, forKey: VERSION_KEY) + do { + try await saveCatalog(&OPDS2Catalog) + try await saveCatalog(&OTBCatalog) + try await saveCatalog(&SEBCatalog) + } catch { + + } + } + } + + func all() -> AnyPublisher<[Catalog]?, Never> { + ValueObservation + .tracking(Catalog.order(Catalog.Columns.title).fetchAll) + .publisher(in: db.databaseReader, scheduling: .immediate) + .assertNoFailure() + .eraseToAnyPublisher() + } + func saveCatalog(_ catalog: inout Catalog) async throws { catalog = try await db.writer.write { [catalog] db in try catalog.saved(db) diff --git a/TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/Contents.json b/TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/Contents.json deleted file mode 100644 index ea0c69798..000000000 --- a/TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "cover.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/cover.png b/TestApp/Sources/Resources/Assets.xcassets/defaultCover.imageset/cover.png deleted file mode 100644 index c7f6957bda582ca73bcc5d02622cc2fe51341a11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8020 zcmY*;byOVBw)Nm15`w!03xhj@1r0I;x53>8XRrjfpuwHs1Q}d|OK=DhT!Xv2J%0Dz z?|$#~TGdr`YM;H&>HcH)S{?ogEQ^CliU|M!a6ZaOslLo+FC!ft_2r(xAe!&}u7vqLy@UHmBxg<6+~V6~&~crUp5iSqQ00 z$^0k%WhX*w|9*H7X;A76Y6U00ff5H{hQ?f z@kp7wm^xcKx>`FxssG_MHgRxs6``g5N9e!Tzw30hw)p=_P?!I-_0k~wKPT**Y#i+W z<$g&8{Sy^ZcD6QuQT~TtloRwX>MI3Kl3K~q#kKq@N3*wQ?f*^?VeMca#? zFUK0%AGcRlp4J_nFWo)wue%BkK4O4Oo6!{%x*o3DOS;e=pWK^#n6#*ljt8^juh#Bl zIkTL24`817`OhZ1s)#3EOU;m{S>!~-uCR%|zy_w2zM{l^EvOFua~!IL6d5e-7PfT; zTQ}ACctn^h2uYM&m#5p;S5QBn+w9^|M&>0^$_(7&Vzngt^8?44I;GHHN!{WTXZb7n zAMW&wjj2}D)XXSNu`&=z7d*)OSE}m5argb<+WA#|!DtHNKAEjHnXN18ZPj^;EAaa4 zPY()bCoQ(mvHgeH1^Q~gO$zI7;Q=1b&Fyc?lAy3%Agh_yXB^rn&nlh^^*>IwR!l9f zr$_2h-j4o<+Vc_b@rSaJ*fQq4v5|L_n0v^W)tI*Ls279E5;EII1<^%+rZt}|H5MXx znry4JXIpJPH|()d=XKv5cK3mm)wX4Gk}vyUF^`|4nZ41;qMvrjyN%G?J+npLC2>aA z9nYh+=x~*+T&#io&f`A1&T4&_J$c<4Psil83Xt>>$lk+CSL73h3Qebw2<`T=w-8yX0KZtA zhsG_LDPW(>g-n)RASHTr@I>RO@={B*?omRJ@r!O8aA`2N_o<8K{e54iTZ~+l?{5Q- z&lIqxo3{Oj0-j_KS)c%Ae+70{{RHBw3EG9YNlf~DBOTpYLD||^=R3tEzoqa}cWLkM zaHiQpFp;BBmWAmB80F742Cp*9=?blxG~MJ;MzB)q{)Jb(!y#_sj_Zt5ZDbPKNaBhL z2#tv21bVb<09oDaC}GnnS5R6CsqVzkTTFRap7Oc^k!M$}Rl9Ww$iWMxoI^Bmo0()H zub5>W;hQlMxIZdMZqo{^7W&8tKkR8!^3jUX9&&AhdKl;RZMF3Rh9-J1i%PP2bwPLA z+Y|@1{o?Bn$iJrFCAG8VwD3%F)w-9R6HM!rZAUn(HWu{5bBt$6#`@lkkR+$hhrcJM zwc9C17$-4uvUBepVSCd~#0PPjlzD_lM3%YRoi(KMLHUl^9O0%1jrJuOHTHrWlEg#R zNRDbB;5d5SrW<>E$?1qzT+2&3km3hLE{JsJ8;Cpi>rjvEkgQ=(mdO+(6?SmA&4ym) z{7^$l5mOaOqa+Qh@T{g1r8Ov^6w$>`QoOz#jH>#Yc15)+*+F5fv_VV&FdwHu@X5-c z)J%nWTS(NHV;0W{r=M46{-@cn4eq=5Wtoegs{Sxq<-Ff3y^WJd$cVHZm|_vlB$g3Y z7}vn%UR~Vb*i`WBpt)g*L9g}J=hxhsl;*E)?lG8*%luAan&ZT6*Rnc2YpDR?$M&K0 z-u(^YFI)X%>FmVGqyN{)sN)j48W`bSY8X+fvpkE_+eom}_W0XTiQ~)HHUDmJIrOKE zvD1zLgx&2S7wTtQ+j8%I%b!0qt`99@nxsC}woj3%OAKjhFKbV3&vO|XMz?kq`3PYmDGE;LCe)Iin2KUG^d@ne1GjiBH8rG z!foyIvV!lRztdf4NsK&v@zU446#LL@xtM!^p$tVZd%EnshoAE}z>zlr`111CjXRAg zJ^M5Hgo0aSu2jD?6Rf0_JNaNPnDu%h&nKr1Ay|e6_8mBx7~WV-hvqtFL~Lva#^WeD zKKqm=^g=S79vep!P3#T=!p9|r*B|TAtCOY#_-8A9<>O~bvbo;lfrwTPWliiUUfzim!_v1zYJA(M#KT!`8^^y_}5zo zyME%zqNT(ds*{Y5!<6x_B~ed1U+Tw-vRTwV>gCO+KL!Sg>Fp|pNta)X3BQAEnBB_~ z#Ld|H1`aMK?P<85)g(?jT0a9DJt}k@K*9*L6(BYK6J)esAM%zE^Y4BlYOaXUdkmAG zc6VYp42piebb=UjIttRt>W)r1eWsw+JmHkv4x|*^ z18IV*stLySYye+)ww=LW9#eE$oH4dlxI;H(AUB+b1CGI$l?{8>pZ@Hr=2+6v3YsaX z8cJ3iR};D%st(M|8dh`l_D;;-mm^C}%I=HUmZFTHdV6Bc1nkg7nt$bY@qACjt92E& zPxY0jLham73U?EVi_4RC$loh!IUCa&EDV9fQXYxbZFn1&BMnZ^%fIo(z3_I#7~^ni zB2%>tbMPeReM64sV9RZup-rf?B5V~JL%m9!67a1)?t{vYdX(Q9Y4fWh2}FMVLA&&Z zCI(Dxnne}^^q#yvxNyWgBn3Iu>iVF>$DGq-)D`is_~lXEt?~G;dRyKwa3js|tE&;U zk!cadzQIQNF^;(>6T4k}@=-+hbh~{%xFZoxX|?xRE19*h9H=$y_t$l=d{1hfd8=h9 z+v{56yB54=1Qi=KT^~t#-J^`&&B$^fs@u@fEj*Nz%f81P$tHFeAEY@Ks_>;#DP;yv z)dGF=EWXVyO>|>a1zK^{Oz3MrzxYjBf#h;CK9i&SmRa@89JyeINFadJZF8&(rLeW} zfSH&g6&T8V?2bj?*O3K;xi6L}dP@@>t< zZD09lYI`b^;WM&UNQJWquCbSnp0kiGb-2UNxPo{4qxk${YV{WP&RLq*s#dcpa(T15 zOD728gv>;&G;ztZ@^7=(Ve*of*pO<3LW)Lg-^V$cw^x z>hLEuZdvWQ{WtjJ-%OZAukx>WKygL%Ki#Jp_?XUY$7}fLyTzLy&J+k*P6>8}o#qw* zl!Be#vV%*nhSyDx*t7%je$SknF77vHO?sv6XCqZul_PkTBqo1)x|2lZ&m??Jd$PQ_y+=o7H7myM^{2)rF_s1+wT7w3B#rJkpmQCg^Do$v0^J$x${lDlXP#Az zs_i2u+xKR_y&po6xJY6o!hEo{4BCJqmJQiarPt@sS~uJ^`hb0LpT8SltDl2H_Pb@K zIx8%eD)DfyH!;dZ%qc~TqtFHRKiPn0i++t@qI z^(T^jsP1&)XoADwKYb*D|DC_7c9I=~E;vjOI8jKp4} zU8sSnv6Olh6n>Y+oYV{)rj=K+gkxRrxbL0nvcO4YZ;rGbat*$^kDbb&4)+U8OFHHs z7i&Eq^86`Xe0|3UiFU?|rF?iwgT*iRpv@^?Kx1|#_W}ji7fd%0vN-A#YAxXk(`<7D z4DDOeKHYvFdfc9x5HJ)9(4N1ZO>NZVVHPDN<}RJDdUC(R2O%Vvf*Vzx-jFn6D{vI? z7ZV1%^UT8YqL&XW)6)VElZW-{X3W5UtFVX>KaFu2Mtm*}8!r+<-+Je2VSE2)WEu%< zqoLjNj^b)(gcH&>lk_FQjw~5LUi<9$itW-IZONif6^&?9a#fClFwveT2srEPDPcFG zvlL+W?zmFTQ$YgGL_?~_w-*R>*)?vbB%B4*Ew`+YX52R=my3Rv{E~SvmIIN?FOOg5n_~~F+W=!{EWM(-wRd~bAy$#7o)$fyh$Pm~yfS(smK-IIk zEXk=*g%~%+eUPu*BT!n&=RfrO;NuNqEHaLM&Q(I!Mp88{$n7KyX$4;UX|8rEp*|@_;B8ILdbw5LUh`V*S1C)2iMY< zt^Z0Ap(T9Cpeqn-aGfU9PB?kw3+?YvtqxwO`kv-J=Tp#3=U4IAgFrO}!JD1e>d#kE z1j`vF@$ZO>-tAV$;$bHo{mDe_DqZEu)@4kC?ddg+vpd7;&nCik*`3E}uF*v?b_;Kc zYP*pnIbti3`o}v9zZ&aX$ds!Q2lNQkRWG529Pa4|4MNq{jWDG(sVX zF1yS-s$q1HDh6#Iv;_(1W~Wn9-}Kgz3#QEE9x^6$&DmH^_pFp~x!sXCq|@}{hKtap zuXmygQ=qpk64%mL>L22{<2+$BxVy9T>EtSzIX zMr%Ed9*QOAaC+NuCs}EQwio9m|B+Rfrv(VQb@tr4tU589?GuQa1uHhj?xqI(Xk zFevNBt^5~I9*EV1nE5623=lTk>U}`Y=dy7<$X3QdiMB1>Lt%Y>*o(MpC1UwogXGDu zAjj8)!UqMuKCC*OgfuSBzim%?)vw9lpG$|TJV-MuN-w8wQu=xUbwMr_R4`gg4MgRQ zOam~%Q+XZ_MCp50s5*F_7Bg`cb9|~sA}Z-AN{`6yCGxh|7ds5!|y}Ym|-}%I3J6z;1-psaPgax}X@E5%VtD7GD zPH_GE_qq+NoEcN_C3zIAH6fp=kj42Caw(EODI2TmMapK9(2<|3!%s{x?%o_SJddY& z74^%I^vuGfJSxvxm+9TKnT7u?*1%X-;>FRS691SCuNbaImoIX9cXG1mwn!^vl^HSCoRl+&Cwb4t`GHhCAkj2XLX=5{Yg*J zs}d^^yF;TZc5_%ne0Rr-Nds&qca!M8?bzk2h(74n3L*w7qs!dDqjQ3z7d|)Q$LiwB z2IanW;n0APesw{>Am7T%p2=0dc*-kL?Fq~JWk<%xjpXq`UL~t`#AL7OZoaI8Gxw4a zwwH1<*+|vFSS$dA#$4y6T10RwoveQElW7((G%G0 z@l}zs8d$4uSo%c?Vp@fYY^f*ykTHG3+V3G!fSwlLmEufStE4m^r_OAlZ-crDuj8{e zncLjeR5Q=}uo>4qjZ;j&Eq&5T3rDR*rI)(^7FA^}Fv1!&^_w?C4h2m-IUi8a43x7X$DzkP6iexX@^Y35rIZh_TZr##JXJFeVmeh<87 zCUf=fH+B-hS^vCQXT`@Gok{L)H|yD68`a`iHL@Vx+Q|jVqNO6H{2`xsN%xBHssxWy8Tag`U!@6C!!Dy#B4!s_so%2s*iGEo_}h%ZVIcPyN5V#wIm zh^LRc`SJ(X)JMr!JNFKP!%^OIinWWvHoopJEEu-;tVioYZy^rj7IGop>%5ji(G2KifQiN#0=D6vS+4?Ys0ep!z7N+N=d~fT!4&n>S{%|TI5-QD2QqSe9HhRc42a%H zbNoFKJVVpqtxE3L1e06Hb!#gq`s4ZS!K~=bBWDFTX0a8EF{PcQ@b%ZOV7&U6OLjW= zxH0V7!YIl6uR#7TZ{m27*;o=LaY{<$E{w2rk&!v`r2Q&O#+LnNWwd<)a0<7xaPWVA z^J&iwL2aP0AM#v8-~VN3E`~B z5l%r%64 zTIRcSijKN87_}WcTyKebGXup|rWAP#`RVVL^|%V^inHhsHbhnZ^4{0)8{iRrgJnLN?%wwiO zw(?)}2h7I>p0@rbewG*d>tjlmtPf@N5Dmow<*a#8UCDY=vwO+I&tJQU(mrU7%~?D% zA^2|=dec3i=Ai{Q6aRsE13S$wV1?2(5pn1nX2(osh~^l7g5EBD16D+7c90L8ue#|z zg5PjmtqoFvcMrgh=89G#xLQ{AI3O03o3My2=l~{D@Cp~vU_w>P$T&T!RQcL&!EudG znJs0kzLhtFMSM}eh8}T8A2ra0QQ__6km~pu$nmG6QVOD0_ChYLLg-tZ>8FiM=82jsoS^CssEf)8RR^EGsA5*{h6QMGPp%f ze-e$5!zpBMvWiD@L@$b^wcH%N`nAp9yE=4A=Dkz{twXu}fK6=$i!?{u;BxYu@$WJc z+l9+WtN{F59t+zN-}x;Nwc#|9>BGQ0`9ABzlznS`FMGChnBMuM$#-@{%SjE)Ip zZ_0~fnyiV#7cN!oh7`wVd!|vGl^Z(gqb)kZ_buX#nC06HAW}pMhoNk&)!=yT(*5{% zx}}-2xFTVvg^WlyAF)Q&>_(T0v4(q7<4z>1Q+%qKyhhGmGWcm|r*=fnzJu;8=^^NjgyGNHEmmq*w?X%3 zNIibj*1x$sg7 zlq%V07RC_i&pWxg*QlV3y+m1Wu!aT5X8bvpuA-%IEuS5qyF${Fcu{@js{i#8zTjYN z)y7##R@V5dz%4*@ZB?7i`X{4o$;q)%CgY9Rki09LSsM{P@*SWgeb%8X3*=6mz zwuj)itWKB>qS!3nR!cp-N&=$7PC3bMH*Iz}A=>BM{DRr>Am7b732j&DQr~gb)0EEv za^8yv-%^?iE+y;)G7>0Ik=&+Tg%17QNZ;ryr(7mr7nsy;`FH`sM@r;2JA&{Vt)3Af z&}awcfDHtU0B4v6Ll|w}0^>J55g04?#@S9)as0M(l3*1Gi}N5P6Y@+8F&5ffkc=~m zo&Qa~*F?8myZ!T)N&ee$>?_5}Bd+#{0c>H+HYDYZ>6WKUW{6Q_(L{cj4c|zc(PcFc zC!G*wq~uP1agq8_GIH-VX+# zp?z&oVa)(yghJ%$Y0OBT7=!s8C0*c;^)WUm;UN4M5bf97Sf4DA@ZR8B9D_G80ezadnA>Gmo`NAuLK z>0U<+_rmS7{FS+@=<2afipXs9f$uJ!ACDvRlC;MPVF&{Xn#3jto2Nu>dDgcj_A12Z zpVVE5AGj?ms)2-E;>JdXyA#?ojl-bHtxx$GGM~A8i@eLZn3nTQUrTtmN|?(o3(ZBe z2K+Kq9qg41{GlQ_YM6ZW7zpg&-_kxcI1E3r2)@dI!XBNLG4Vwy++fP*ODoHVW>p`T z>W(+e9FTEA?n3b?LW#LG8Qbk%t>HuXwcLnaUnuOd{D Date: Mon, 6 Jun 2022 10:30:25 +0200 Subject: [PATCH 15/27] Add initial SQL database migration --- TestApp/Sources/App/AppModule.swift | 5 +- TestApp/Sources/Container.swift | 5 +- TestApp/Sources/Data/Catalog.swift | 20 ----- TestApp/Sources/Data/Database.swift | 73 +++++++------------ .../Sources/Data/Migrations/01 Initial.swift | 73 +++++++++++++++++++ .../OPDSCatalogSelectorViewController.swift | 21 ------ .../Catalogs/Catalogs/CatalogsViewModel.swift | 5 -- 7 files changed, 108 insertions(+), 94 deletions(-) create mode 100644 TestApp/Sources/Data/Migrations/01 Initial.swift diff --git a/TestApp/Sources/App/AppModule.swift b/TestApp/Sources/App/AppModule.swift index ce2342fba..dd5a891cc 100644 --- a/TestApp/Sources/App/AppModule.swift +++ b/TestApp/Sources/App/AppModule.swift @@ -42,7 +42,10 @@ final class AppModule { } let httpClient = DefaultHTTPClient() - let db = try Database(file: Paths.library.appendingPathComponent("database.db")) + let db = try Database( + file: Paths.library.appendingPathComponent("database.db"), + migrations: [InitialMigration()] + ) let books = BookRepository(db: db) let bookmarks = BookmarkRepository(db: db) let highlights = HighlightRepository(db: db) diff --git a/TestApp/Sources/Container.swift b/TestApp/Sources/Container.swift index ddd4ad5d4..1cc05b6a4 100644 --- a/TestApp/Sources/Container.swift +++ b/TestApp/Sources/Container.swift @@ -11,7 +11,10 @@ class Container { private let db: Database init() throws { - self.db = try Database(file: Paths.library.appendingPathComponent("database.db")) + self.db = try Database( + file: Paths.library.appendingPathComponent("database.db"), + migrations: [InitialMigration()] + ) } // Bookshelf diff --git a/TestApp/Sources/Data/Catalog.swift b/TestApp/Sources/Data/Catalog.swift index 70570dc45..bfe82cace 100644 --- a/TestApp/Sources/Data/Catalog.swift +++ b/TestApp/Sources/Data/Catalog.swift @@ -38,26 +38,6 @@ final class CatalogRepository { self.db = db } - func preloadTestFeeds() async { - let version = 2 - let VERSION_KEY = "OPDS_CATALOG_VERSION" - var OPDS2Catalog = Catalog(title: "OPDS 2.0 Test Catalog", url: "https://test.opds.io/2.0/home.json") - var OTBCatalog = Catalog(title: "Open Textbooks Catalog", url: "http://open.minitex.org/textbooks") - var SEBCatalog = Catalog(title: "Standard eBooks Catalog", url: "https://standardebooks.org/opds/all") - - let oldversion = UserDefaults.standard.integer(forKey: VERSION_KEY) - if (oldversion < version) { - UserDefaults.standard.set(version, forKey: VERSION_KEY) - do { - try await saveCatalog(&OPDS2Catalog) - try await saveCatalog(&OTBCatalog) - try await saveCatalog(&SEBCatalog) - } catch { - - } - } - } - func all() -> AnyPublisher<[Catalog]?, Never> { ValueObservation .tracking(Catalog.order(Catalog.Columns.title).fetchAll) diff --git a/TestApp/Sources/Data/Database.swift b/TestApp/Sources/Data/Database.swift index 72e3bfa4c..4927c65a3 100644 --- a/TestApp/Sources/Data/Database.swift +++ b/TestApp/Sources/Data/Database.swift @@ -9,62 +9,47 @@ import Foundation import GRDB import SwiftUI +/// Database migration to be performed when updating the app. +protocol DatabaseMigration { + /// Schema version for this migration. + var version: Int { get } + + /// Applies the migration. + func run(on db: GRDB.Database) throws +} + final class Database { - convenience init(file: URL) throws { - try self.init(writer: try DatabaseQueue(path: file.path)) + convenience init(file: URL, migrations: [DatabaseMigration]) throws { + try self.init(writer: try DatabaseQueue(path: file.path), migrations: migrations) } // FIXME make this private again let writer: DatabaseWriter - private init(writer: DatabaseWriter = DatabaseQueue()) throws { + private init(writer: DatabaseWriter = DatabaseQueue(), migrations: [DatabaseMigration]) throws { self.writer = writer + try run(migrations) + } + + /// Runs the database migrations on `Database` initialization. + private func run(_ migrations: [DatabaseMigration]) throws { try writer.write { db in - try db.create(table: "book", ifNotExists: true) { t in - t.autoIncrementedPrimaryKey("id") - t.column("identifier", .text) - t.column("title", .text).notNull() - t.column("authors", .text) - t.column("type", .text).notNull() - t.column("path", .text).notNull() - t.column("coverPath", .text) - t.column("locator", .text) - t.column("progression", .integer).notNull().defaults(to: 0) - t.column("created", .datetime).notNull() - } - - try db.create(table: "bookmark", ifNotExists: true) { t in - t.autoIncrementedPrimaryKey("id") - t.column("bookId", .integer).references("book", onDelete: .cascade).notNull() - t.column("locator", .text) - t.column("progression", .double).notNull() - t.column("created", .datetime).notNull() - } + let currentVersion = try Int64.fetchOne(db, sql: "PRAGMA user_version") ?? 0 - try db.create(table: "highlight", ifNotExists: true) { t in - t.column("id", .text).primaryKey() - t.column("bookId", .integer).references("book", onDelete: .cascade).notNull() - t.column("locator", .text) - t.column("progression", .double).notNull() - t.column("color", .integer).notNull() - t.column("created", .datetime).notNull() - } - - // create an index to make sorting by progression faster - try db.create(index: "index_highlight_progression", on: "highlight", columns: ["bookId", "progression"], ifNotExists: true) - try db.create(index: "index_bookmark_progression", on: "bookmark", columns: ["bookId", "progression"], ifNotExists: true) - - try db.create(table: "catalog", ifNotExists: true) { t in - t.autoIncrementedPrimaryKey("id") - t.column("title", .text) - t.column("url", .text).notNull() - t.column("created", .datetime).notNull() - } + try migrations + .filter { $0.version > currentVersion } + .sorted { $0.version < $1.version } + .forEach { try run($0, on: db) } } } + private func run(_ migration: DatabaseMigration, on db: GRDB.Database) throws { + try migration.run(on: db) + try db.execute(sql: "PRAGMA user_version = \(migration.version)") + } + func read(_ query: @escaping (GRDB.Database) throws -> T) -> AnyPublisher { writer.readPublisher(value: query) .eraseToAnyPublisher() @@ -87,10 +72,6 @@ extension Database { var databaseReader: DatabaseReader { writer } - - static func empty() -> Database { - try! Database() - } } /// Protocol for a database entity id. diff --git a/TestApp/Sources/Data/Migrations/01 Initial.swift b/TestApp/Sources/Data/Migrations/01 Initial.swift new file mode 100644 index 000000000..47455ee98 --- /dev/null +++ b/TestApp/Sources/Data/Migrations/01 Initial.swift @@ -0,0 +1,73 @@ +// +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. +// + +import Foundation +import GRDB + +/// This database migration will create the SQL schema and insert some initial data. +struct InitialMigration: DatabaseMigration { + let version = 1 + + func run(on db: GRDB.Database) throws { + try createSchema(on: db) + try bootstrapData(on: db) + } + + private func createSchema(on db: GRDB.Database) throws { + try db.create(table: "book", ifNotExists: true) { t in + t.autoIncrementedPrimaryKey("id") + t.column("identifier", .text) + t.column("title", .text).notNull() + t.column("authors", .text) + t.column("type", .text).notNull() + t.column("path", .text).notNull() + t.column("coverPath", .text) + t.column("locator", .text) + t.column("progression", .integer).notNull().defaults(to: 0) + t.column("created", .datetime).notNull() + } + + try db.create(table: "bookmark", ifNotExists: true) { t in + t.autoIncrementedPrimaryKey("id") + t.column("bookId", .integer).references("book", onDelete: .cascade).notNull() + t.column("locator", .text) + t.column("progression", .double).notNull() + t.column("created", .datetime).notNull() + } + + try db.create(table: "highlight", ifNotExists: true) { t in + t.column("id", .text).primaryKey() + t.column("bookId", .integer).references("book", onDelete: .cascade).notNull() + t.column("locator", .text) + t.column("progression", .double).notNull() + t.column("color", .integer).notNull() + t.column("created", .datetime).notNull() + } + + // create an index to make sorting by progression faster + try db.create(index: "index_highlight_progression", on: "highlight", columns: ["bookId", "progression"], ifNotExists: true) + try db.create(index: "index_bookmark_progression", on: "bookmark", columns: ["bookId", "progression"], ifNotExists: true) + + try db.create(table: "catalog", ifNotExists: true) { t in + t.autoIncrementedPrimaryKey("id") + t.column("title", .text) + t.column("url", .text).notNull() + t.column("created", .datetime).notNull() + } + } + + private func bootstrapData(on db: GRDB.Database) throws { + let catalogs = [ + Catalog(title: "OPDS 2.0 Test Catalog", url: "https://test.opds.io/2.0/home.json"), + Catalog(title: "Open Textbooks Catalog", url: "http://open.minitex.org/textbooks"), + Catalog(title: "Standard eBooks Catalog", url: "https://standardebooks.org/opds/all"), + ] + + for catalog in catalogs { + try catalog.save(db) + } + } +} diff --git a/TestApp/Sources/OPDS/OPDSCatalogSelectorViewController.swift b/TestApp/Sources/OPDS/OPDSCatalogSelectorViewController.swift index 6f991589a..92c5ebbc5 100644 --- a/TestApp/Sources/OPDS/OPDSCatalogSelectorViewController.swift +++ b/TestApp/Sources/OPDS/OPDSCatalogSelectorViewController.swift @@ -29,8 +29,6 @@ class OPDSCatalogSelectorViewController: UITableViewController { override func viewDidLoad() { - preloadTestFeeds() - self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) self.tableView.frame = UIScreen.main.bounds @@ -49,25 +47,6 @@ class OPDSCatalogSelectorViewController: UITableViewController { navigationController?.view.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1) } - func preloadTestFeeds() { - let version = 2 - let VERSION_KEY = "OPDS_CATALOG_VERSION" - let OPDS2Catalog = ["title": "OPDS 2.0 Test Catalog", "url": "https://test.opds.io/2.0/home.json"] - let OTBCatalog = ["title": "Open Textbooks Catalog", "url": "http://open.minitex.org/textbooks"] - let SEBCatalog = ["title": "Standard eBooks Catalog", "url": "https://standardebooks.org/opds/all"] - - catalogData = UserDefaults.standard.array(forKey: userDefaultsID) as? [[String: String]] - let oldversion = UserDefaults.standard.integer(forKey: VERSION_KEY) - if (catalogData == nil || oldversion < version) { - UserDefaults.standard.set(version, forKey: VERSION_KEY) - catalogData = [ - OPDS2Catalog, OTBCatalog, SEBCatalog - ] - UserDefaults.standard.set(catalogData, forKey: userDefaultsID) - } - - } - override func viewDidAppear(_ animated: Bool) { if let index = mustEditAtIndexPath?.row { showEditPopup(feedIndex: index) diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift index 1ceb096c1..2aa606da9 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift @@ -17,14 +17,9 @@ import Foundation final class CatalogsViewModel: ObservableObject { @Published var catalogs: [Catalog]? - var catalogRepository: CatalogRepository init(catalogRepository: CatalogRepository) { - self.catalogRepository = catalogRepository catalogRepository.all() .assign(to: &$catalogs) - Task { - await catalogRepository.preloadTestFeeds() - } } } From fdbb68f7700a9066e84f4182f036bb8595e23695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Menu?= Date: Mon, 6 Jun 2022 15:12:23 +0200 Subject: [PATCH 16/27] Fix file headers --- TestApp/Sources/Data/Catalog.swift | 7 +++---- TestApp/Sources/TestApp.swift | 12 +++--------- TestApp/Sources/Views/About/About.swift | 12 +++--------- TestApp/Sources/Views/BookCover.swift | 12 +++--------- TestApp/Sources/Views/Bookshelf/AddBookSheet.swift | 12 +++--------- TestApp/Sources/Views/Bookshelf/Bookshelf.swift | 12 +++--------- .../Sources/Views/Bookshelf/BookshelfViewModel.swift | 12 +++--------- .../Views/Catalogs/CatalogDetail/CatalogDetail.swift | 12 +++--------- .../CatalogDetail/CatalogDetailViewModel.swift | 12 +++--------- .../Views/Catalogs/Catalogs/AddFeedSheet.swift | 12 +++--------- .../Sources/Views/Catalogs/Catalogs/Catalogs.swift | 12 +++--------- .../Views/Catalogs/Catalogs/CatalogsViewModel.swift | 12 +++--------- TestApp/Sources/Views/ListRowItem.swift | 12 +++--------- TestApp/Sources/Views/Toolbar/AddButton.swift | 12 +++--------- 14 files changed, 42 insertions(+), 121 deletions(-) diff --git a/TestApp/Sources/Data/Catalog.swift b/TestApp/Sources/Data/Catalog.swift index bfe82cace..80065f84a 100644 --- a/TestApp/Sources/Data/Catalog.swift +++ b/TestApp/Sources/Data/Catalog.swift @@ -1,8 +1,7 @@ // -// Catalog.swift -// TestApp -// -// Created by Steven Zeck on 5/24/22. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import Combine diff --git a/TestApp/Sources/TestApp.swift b/TestApp/Sources/TestApp.swift index 0c8999bf0..e775d8a37 100644 --- a/TestApp/Sources/TestApp.swift +++ b/TestApp/Sources/TestApp.swift @@ -1,13 +1,7 @@ // -// TestApp.swift -// TestApp -// -// Created by Steven Zeck on 5/15/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import SwiftUI diff --git a/TestApp/Sources/Views/About/About.swift b/TestApp/Sources/Views/About/About.swift index 68ddf08d0..a33a073f5 100644 --- a/TestApp/Sources/Views/About/About.swift +++ b/TestApp/Sources/Views/About/About.swift @@ -1,13 +1,7 @@ // -// About.swift -// TestApp -// -// Created by Steven Zeck on 5/15/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import SwiftUI diff --git a/TestApp/Sources/Views/BookCover.swift b/TestApp/Sources/Views/BookCover.swift index fabeccc49..81511e1fd 100644 --- a/TestApp/Sources/Views/BookCover.swift +++ b/TestApp/Sources/Views/BookCover.swift @@ -1,13 +1,7 @@ // -// Book.swift -// TestApp -// -// Created by Steven Zeck on 5/19/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import SwiftUI diff --git a/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift b/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift index 6285934ca..830ddee56 100644 --- a/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift +++ b/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift @@ -1,13 +1,7 @@ // -// AddBookSheet.swift -// TestApp -// -// Created by Steven Zeck on 6/2/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import SwiftUI diff --git a/TestApp/Sources/Views/Bookshelf/Bookshelf.swift b/TestApp/Sources/Views/Bookshelf/Bookshelf.swift index 288ed7ec1..889f9918a 100644 --- a/TestApp/Sources/Views/Bookshelf/Bookshelf.swift +++ b/TestApp/Sources/Views/Bookshelf/Bookshelf.swift @@ -1,13 +1,7 @@ // -// Bookshelf.swift -// TestApp -// -// Created by Steven Zeck on 5/15/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import SwiftUI diff --git a/TestApp/Sources/Views/Bookshelf/BookshelfViewModel.swift b/TestApp/Sources/Views/Bookshelf/BookshelfViewModel.swift index 003369db9..e4a62b230 100644 --- a/TestApp/Sources/Views/Bookshelf/BookshelfViewModel.swift +++ b/TestApp/Sources/Views/Bookshelf/BookshelfViewModel.swift @@ -1,13 +1,7 @@ // -// BookshelfViewModel.swift -// TestApp -// -// Created by Steven Zeck on 5/25/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import GRDB diff --git a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift index a08ff5a7d..e5c45a606 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetail.swift @@ -1,13 +1,7 @@ // -// CatalogDetail.swift -// TestApp -// -// Created by Steven Zeck on 5/25/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import SwiftUI diff --git a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift index bb7f06b7b..d2199babe 100644 --- a/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift +++ b/TestApp/Sources/Views/Catalogs/CatalogDetail/CatalogDetailViewModel.swift @@ -1,13 +1,7 @@ // -// CatalogDetailViewModel.swift -// TestApp -// -// Created by Steven Zeck on 5/25/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import Foundation diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift b/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift index acc254b45..8c3c07586 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift @@ -1,13 +1,7 @@ // -// AddFeedSheet.swift -// TestApp -// -// Created by Steven Zeck on 6/2/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import SwiftUI diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift b/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift index 284a38041..99486fc46 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift @@ -1,13 +1,7 @@ // -// Catalogs.swift -// TestApp -// -// Created by Steven Zeck on 5/15/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import SwiftUI diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift index 2aa606da9..1995bbc05 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift @@ -1,13 +1,7 @@ // -// CatalogsViewModel.swift -// TestApp -// -// Created by Steven Zeck on 5/25/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import GRDB diff --git a/TestApp/Sources/Views/ListRowItem.swift b/TestApp/Sources/Views/ListRowItem.swift index cda8068a4..723442700 100644 --- a/TestApp/Sources/Views/ListRowItem.swift +++ b/TestApp/Sources/Views/ListRowItem.swift @@ -1,13 +1,7 @@ // -// CatalogFeedRow.swift -// TestApp -// -// Created by Steven Zeck on 5/23/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import SwiftUI diff --git a/TestApp/Sources/Views/Toolbar/AddButton.swift b/TestApp/Sources/Views/Toolbar/AddButton.swift index 588f20c66..1098344bb 100644 --- a/TestApp/Sources/Views/Toolbar/AddButton.swift +++ b/TestApp/Sources/Views/Toolbar/AddButton.swift @@ -1,13 +1,7 @@ // -// AddButton.swift -// TestApp -// -// Created by Steven Zeck on 5/23/22. -// -// Copyright 2022 European Digital Reading Lab. All rights reserved. -// Licensed to the Readium Foundation under one or more contributor license agreements. -// Use of this source code is governed by a BSD-style license which is detailed in the -// LICENSE file present in the project repository where this source code is maintained. +// Copyright 2022 Readium Foundation. All rights reserved. +// Use of this source code is governed by the BSD-style license +// available in the top-level LICENSE file of the project. // import SwiftUI From daedf2b33af73f40dfb73c4284b01c594c58e70c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Menu?= Date: Mon, 6 Jun 2022 15:13:54 +0200 Subject: [PATCH 17/27] Bump deployment targets --- TestApp/Integrations/CocoaPods/project+lcp.yml | 2 +- TestApp/Integrations/Local/project+lcp.yml | 2 +- TestApp/Integrations/SPM/project+lcp.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/TestApp/Integrations/CocoaPods/project+lcp.yml b/TestApp/Integrations/CocoaPods/project+lcp.yml index c24c922ca..95676ef85 100644 --- a/TestApp/Integrations/CocoaPods/project+lcp.yml +++ b/TestApp/Integrations/CocoaPods/project+lcp.yml @@ -5,7 +5,7 @@ targets: TestApp: type: application platform: iOS - deploymentTarget: "14.0" + deploymentTarget: "15.0" sources: - path: Sources settings: diff --git a/TestApp/Integrations/Local/project+lcp.yml b/TestApp/Integrations/Local/project+lcp.yml index d75f2ec20..261dc1aa6 100644 --- a/TestApp/Integrations/Local/project+lcp.yml +++ b/TestApp/Integrations/Local/project+lcp.yml @@ -22,7 +22,7 @@ targets: TestApp: type: application platform: iOS - deploymentTarget: "14.0" + deploymentTarget: "15.0" sources: - path: Sources dependencies: diff --git a/TestApp/Integrations/SPM/project+lcp.yml b/TestApp/Integrations/SPM/project+lcp.yml index 97857e1f5..832ee4af0 100644 --- a/TestApp/Integrations/SPM/project+lcp.yml +++ b/TestApp/Integrations/SPM/project+lcp.yml @@ -23,7 +23,7 @@ targets: TestApp: type: application platform: iOS - deploymentTarget: "14.0" + deploymentTarget: "15.0" sources: - path: Sources dependencies: From 72636b1c74429b42f7314d17c09ba518f43d957f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Menu?= Date: Mon, 6 Jun 2022 15:18:29 +0200 Subject: [PATCH 18/27] Update Carthage project --- Support/Carthage/.xcodegen | 3242 ++++++++++++++++- .../Readium.xcodeproj/project.pbxproj | 6 +- .../xcschemes/R2Navigator.xcscheme | 2 +- .../xcshareddata/xcschemes/R2Shared.xcscheme | 2 +- .../xcschemes/R2Streamer.xcscheme | 2 +- .../xcschemes/ReadiumLCP.xcscheme | 2 +- .../xcschemes/ReadiumOPDS.xcscheme | 2 +- 7 files changed, 3135 insertions(+), 123 deletions(-) diff --git a/Support/Carthage/.xcodegen b/Support/Carthage/.xcodegen index d3207b9b6..975235f44 100644 --- a/Support/Carthage/.xcodegen +++ b/Support/Carthage/.xcodegen @@ -1,5 +1,5 @@ # XCODEGEN VERSION -2.25.0 +2.29.0 # SPEC { @@ -354,8 +354,12 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/esvalidate ../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/import-local-fixture ../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/js-yaml +../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/jsesc +../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/json5 ../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/node-which +../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/parser ../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/prettier +../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/regjsparser ../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/rimraf ../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/semver ../../Sources/Navigator/EPUB/Scripts/node_modules/.bin/terser @@ -369,6 +373,309 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/code-frame/LICENSE ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/code-frame/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/code-frame/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/corejs2-built-ins.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/corejs3-shipped-proposals.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/data +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/data/corejs2-built-ins.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/data/native-modules.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/data/overlapping-plugins.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/data/plugin-bugfixes.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/data/plugins.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/native-modules.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/overlapping-plugins.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/plugin-bugfixes.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/compat-data/plugins.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/cache-contexts.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/caching.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/config-chain.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/config-descriptors.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/files +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/files/configuration.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/files/import.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/files/index-browser.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/files/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/files/module-types.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/files/package.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/files/plugins.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/files/types.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/files/utils.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/full.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/helpers +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/helpers/config-api.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/helpers/environment.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/item.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/partial.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/pattern-to-regex.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/plugin.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/printer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/resolve-targets-browser.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/resolve-targets.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/util.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/validation +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/validation/option-assertions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/validation/options.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/validation/plugins.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/config/validation/removed.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/gensync-utils +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/gensync-utils/async.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/gensync-utils/fs.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/parse.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/parser +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/parser/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/parser/util +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/tools +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/tools/build-external-helpers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transform-ast.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transform-file-browser.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transform-file.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transform.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/file +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/file/file.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/file/generate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/file/merge-map.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/normalize-file.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/normalize-opts.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/plugin-pass.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/util +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/lib/transformation/util/clone-deep.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/node_modules/.bin/json5 +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/node_modules/.bin/parser +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/node_modules/.bin/semver +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/config +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/config/files +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/config/files/index-browser.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/config/files/index.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/config/resolve-targets-browser.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/config/resolve-targets.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/transform-file-browser.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/transform-file.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/transformation +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/transformation/util +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/transformation/util/clone-deep-browser.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/core/src/transformation/util/clone-deep.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/buffer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/base.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/classes.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/expressions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/flow.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/jsx.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/methods.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/modules.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/statements.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/template-literals.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/types.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/generators/typescript.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/node +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/node/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/node/parentheses.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/node/whitespace.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/printer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/lib/source-map.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/node_modules/.bin/jsesc +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/generator/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-annotate-as-pure +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-annotate-as-pure/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-annotate-as-pure/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-annotate-as-pure/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-annotate-as-pure/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-annotate-as-pure/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-builder-binary-assignment-operator-visitor +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/lib/debug.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/lib/filter-items.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/lib/options.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/lib/pretty.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/lib/targets.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/lib/types.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/lib/utils.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/node_modules/.bin/browserslist +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-compilation-targets/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-class-features-plugin +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-class-features-plugin/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-class-features-plugin/lib/features.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-class-features-plugin/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-class-features-plugin/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-class-features-plugin/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-class-features-plugin/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-regexp-features-plugin +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-regexp-features-plugin/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-regexp-features-plugin/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-regexp-features-plugin/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-create-regexp-features-plugin/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/esm +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/esm/index.browser.mjs +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/esm/index.browser.mjs.map +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs.map +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/browser +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/browser/dependencies.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/debug-utils.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/define-provider.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/imports-cache.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/meta-resolver.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/node +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/node/dependencies.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/normalize-options.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/types.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/utils.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/visitors +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/entry.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/usage.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/semver +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/src +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/src/browser +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/src/browser/dependencies.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/src/node +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-define-polyfill-provider/src/node/dependencies.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-explode-assignable-expression +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-explode-assignable-expression/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-explode-assignable-expression/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-explode-assignable-expression/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-explode-assignable-expression/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-explode-assignable-expression/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-function-name +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-function-name/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-function-name/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-function-name/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-function-name/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-function-name/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-get-function-arity +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-get-function-arity/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-get-function-arity/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-get-function-arity/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-get-function-arity/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-get-function-arity/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-hoist-variables +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-hoist-variables/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-hoist-variables/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-hoist-variables/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-hoist-variables/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-hoist-variables/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-member-expression-to-functions +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-member-expression-to-functions/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-member-expression-to-functions/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-member-expression-to-functions/lib/index.js.map +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-member-expression-to-functions/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-member-expression-to-functions/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-member-expression-to-functions/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-imports +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-imports/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-imports/lib/import-builder.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-imports/lib/import-injector.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-imports/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-imports/lib/is-module.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-imports/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-imports/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-imports/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-transforms +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-transforms/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-transforms/lib/get-module-name.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-transforms/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-transforms/lib/rewrite-this.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-transforms/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-transforms/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-module-transforms/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-optimise-call-expression +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-optimise-call-expression/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-optimise-call-expression/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-optimise-call-expression/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-optimise-call-expression/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-optimise-call-expression/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-plugin-utils +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-plugin-utils/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-plugin-utils/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-plugin-utils/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-plugin-utils/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-plugin-utils/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-remap-async-to-generator +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-remap-async-to-generator/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-remap-async-to-generator/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-remap-async-to-generator/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-remap-async-to-generator/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-remap-async-to-generator/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-replace-supers +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-replace-supers/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-replace-supers/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-replace-supers/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-replace-supers/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-replace-supers/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-simple-access +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-simple-access/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-simple-access/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-simple-access/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-simple-access/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-simple-access/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-skip-transparent-expression-wrappers +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-skip-transparent-expression-wrappers/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-skip-transparent-expression-wrappers/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-skip-transparent-expression-wrappers/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-skip-transparent-expression-wrappers/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-skip-transparent-expression-wrappers/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-split-export-declaration +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-split-export-declaration/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-split-export-declaration/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-split-export-declaration/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-split-export-declaration/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-split-export-declaration/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-identifier ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-identifier/lib ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-identifier/lib/identifier.js @@ -379,59 +686,901 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-identifier/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-identifier/scripts ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-option +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-option/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-option/lib/find-suggestion.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-option/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-option/lib/validator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-option/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-option/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-validator-option/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-wrap-function +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-wrap-function/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-wrap-function/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-wrap-function/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-wrap-function/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helper-wrap-function/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/lib/helpers +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/lib/helpers-generated.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/lib/helpers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/lib/helpers/asyncIterator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/lib/helpers/jsx.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/lib/helpers/objectSpread2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/lib/helpers/typeof.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/lib/helpers/wrapRegExp.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/scripts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/scripts/generate-helpers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/helpers/scripts/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/lib ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/lib/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/LICENSE -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/ansi-styles -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/ansi-styles/index.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/ansi-styles/license -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/ansi-styles/package.json -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/chalk -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/chalk/index.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/chalk/index.js.flow -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/chalk/license -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/chalk/package.json -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/chalk/readme.md -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/chalk/templates.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/chalk/types -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/chalk/types/index.d.ts -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-convert -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-convert/CHANGELOG.md -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-convert/conversions.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-convert/index.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-convert/LICENSE -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-convert/package.json -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-convert/README.md -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-convert/route.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-name -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-name/.eslintrc.json -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-name/.npmignore -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-name/index.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-name/LICENSE -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-name/package.json -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-name/README.md -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/color-name/test.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/escape-string-regexp -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/escape-string-regexp/index.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/escape-string-regexp/license -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/escape-string-regexp/package.json -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/escape-string-regexp/readme.md -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/has-flag -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/has-flag/index.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/has-flag/license -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/has-flag/package.json -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/has-flag/readme.md -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/supports-color -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/supports-color/browser.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/supports-color/index.js -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/supports-color/license -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/supports-color/package.json -../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/node_modules/supports-color/readme.md ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/highlight/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser/bin +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser/bin/babel-parser.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser/lib/index.js.map +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser/typings +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/parser/typings/babel-parser.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/lib/index.js.map +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/lib/index.js.map +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-async-generator-functions +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-async-generator-functions/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-async-generator-functions/lib/for-await.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-async-generator-functions/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-async-generator-functions/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-async-generator-functions/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-async-generator-functions/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-properties +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-properties/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-properties/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-properties/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-properties/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-properties/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-static-block +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-static-block/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-static-block/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-static-block/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-static-block/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-class-static-block/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-dynamic-import +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-dynamic-import/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-dynamic-import/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-dynamic-import/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-dynamic-import/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-dynamic-import/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-export-namespace-from +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-export-namespace-from/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-export-namespace-from/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-export-namespace-from/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-export-namespace-from/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-export-namespace-from/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-json-strings +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-json-strings/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-json-strings/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-json-strings/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-json-strings/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-json-strings/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-logical-assignment-operators +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-logical-assignment-operators/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-logical-assignment-operators/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-logical-assignment-operators/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-logical-assignment-operators/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-logical-assignment-operators/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-nullish-coalescing-operator +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-nullish-coalescing-operator/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-nullish-coalescing-operator/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-nullish-coalescing-operator/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-nullish-coalescing-operator/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-nullish-coalescing-operator/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-numeric-separator +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-numeric-separator/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-numeric-separator/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-numeric-separator/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-numeric-separator/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-numeric-separator/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-object-rest-spread +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-object-rest-spread/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-object-rest-spread/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-object-rest-spread/lib/shouldStoreRHSInTemporaryVariable.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-object-rest-spread/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-object-rest-spread/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-object-rest-spread/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-catch-binding +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-catch-binding/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-catch-binding/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-catch-binding/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-catch-binding/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-catch-binding/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-chaining +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-chaining/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-chaining/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-chaining/lib/index.js.map +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-chaining/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-chaining/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-optional-chaining/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-methods +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-methods/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-methods/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-methods/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-methods/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-methods/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-property-in-object +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-property-in-object/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-property-in-object/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-property-in-object/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-property-in-object/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-private-property-in-object/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-unicode-property-regex +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-unicode-property-regex/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-unicode-property-regex/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-unicode-property-regex/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-unicode-property-regex/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-proposal-unicode-property-regex/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-async-generators +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-async-generators/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-async-generators/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-async-generators/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-async-generators/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-async-generators/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-properties +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-properties/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-properties/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-properties/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-properties/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-properties/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-static-block +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-static-block/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-static-block/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-static-block/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-static-block/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-class-static-block/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-dynamic-import +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-dynamic-import/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-dynamic-import/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-dynamic-import/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-dynamic-import/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-dynamic-import/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-export-namespace-from +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-export-namespace-from/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-export-namespace-from/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-export-namespace-from/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-export-namespace-from/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-export-namespace-from/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-json-strings +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-json-strings/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-json-strings/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-json-strings/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-json-strings/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-json-strings/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-logical-assignment-operators +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-logical-assignment-operators/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-logical-assignment-operators/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-logical-assignment-operators/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-logical-assignment-operators/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-logical-assignment-operators/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-nullish-coalescing-operator +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-nullish-coalescing-operator/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-numeric-separator +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-numeric-separator/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-numeric-separator/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-numeric-separator/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-numeric-separator/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-numeric-separator/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-object-rest-spread +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-object-rest-spread/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-object-rest-spread/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-object-rest-spread/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-object-rest-spread/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-object-rest-spread/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-catch-binding +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-catch-binding/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-catch-binding/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-catch-binding/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-catch-binding/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-catch-binding/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-chaining +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-chaining/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-chaining/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-chaining/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-chaining/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-optional-chaining/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-private-property-in-object +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-private-property-in-object/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-private-property-in-object/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-private-property-in-object/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-private-property-in-object/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-private-property-in-object/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-top-level-await +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-top-level-await/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-top-level-await/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-top-level-await/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-top-level-await/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-syntax-top-level-await/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-arrow-functions +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-arrow-functions/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-arrow-functions/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-arrow-functions/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-arrow-functions/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-arrow-functions/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-async-to-generator +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-async-to-generator/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-async-to-generator/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-async-to-generator/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-async-to-generator/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-async-to-generator/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoped-functions +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoped-functions/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoped-functions/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoped-functions/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoped-functions/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoped-functions/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoping +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoping/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoping/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoping/lib/tdz.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoping/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoping/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-block-scoping/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-classes +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-classes/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-classes/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-classes/lib/inline-createSuper-helpers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-classes/lib/transformClass.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-classes/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-classes/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-classes/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-computed-properties +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-computed-properties/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-computed-properties/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-computed-properties/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-computed-properties/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-computed-properties/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-destructuring +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-destructuring/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-destructuring/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-destructuring/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-destructuring/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-destructuring/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-dotall-regex +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-dotall-regex/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-dotall-regex/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-dotall-regex/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-dotall-regex/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-dotall-regex/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-duplicate-keys +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-duplicate-keys/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-duplicate-keys/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-duplicate-keys/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-duplicate-keys/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-duplicate-keys/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-exponentiation-operator +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-exponentiation-operator/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-exponentiation-operator/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-exponentiation-operator/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-exponentiation-operator/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-exponentiation-operator/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-for-of +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-for-of/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-for-of/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-for-of/lib/no-helper-implementation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-for-of/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-for-of/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-for-of/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-function-name +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-function-name/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-function-name/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-function-name/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-function-name/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-function-name/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-literals +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-literals/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-literals/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-literals/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-literals/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-literals/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-member-expression-literals +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-member-expression-literals/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-member-expression-literals/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-member-expression-literals/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-member-expression-literals/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-member-expression-literals/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-amd +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-amd/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-amd/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-amd/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-amd/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-amd/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-commonjs +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-commonjs/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-commonjs/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-commonjs/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-commonjs/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-commonjs/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-systemjs +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-systemjs/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-systemjs/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-systemjs/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-systemjs/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-systemjs/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-umd +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-umd/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-umd/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-umd/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-umd/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-modules-umd/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-named-capturing-groups-regex +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-named-capturing-groups-regex/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-named-capturing-groups-regex/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-named-capturing-groups-regex/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-named-capturing-groups-regex/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-named-capturing-groups-regex/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-new-target +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-new-target/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-new-target/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-new-target/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-new-target/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-new-target/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-object-super +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-object-super/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-object-super/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-object-super/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-object-super/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-object-super/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-parameters +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-parameters/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-parameters/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-parameters/lib/params.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-parameters/lib/rest.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-parameters/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-parameters/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-parameters/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-property-literals +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-property-literals/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-property-literals/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-property-literals/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-property-literals/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-property-literals/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-regenerator +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-regenerator/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-regenerator/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-regenerator/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-regenerator/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-regenerator/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-reserved-words +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-reserved-words/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-reserved-words/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-reserved-words/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-reserved-words/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-reserved-words/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-shorthand-properties +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-shorthand-properties/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-shorthand-properties/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-shorthand-properties/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-shorthand-properties/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-shorthand-properties/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-spread +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-spread/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-spread/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-spread/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-spread/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-spread/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-sticky-regex +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-sticky-regex/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-sticky-regex/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-sticky-regex/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-sticky-regex/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-sticky-regex/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-template-literals +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-template-literals/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-template-literals/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-template-literals/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-template-literals/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-template-literals/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-typeof-symbol +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-typeof-symbol/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-typeof-symbol/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-typeof-symbol/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-typeof-symbol/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-typeof-symbol/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-escapes +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-escapes/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-escapes/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-escapes/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-escapes/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-escapes/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-regex +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-regex/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-regex/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-regex/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-regex/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/plugin-transform-unicode-regex/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/data +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/data/built-in-modules.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/data/built-in-modules.json.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/data/built-ins.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/data/built-ins.json.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/data/corejs2-built-ins.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/data/corejs2-built-ins.json.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/data/plugins.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/data/plugins.json.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/data/shipped-proposals.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/data/unreleased-labels.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/available-plugins.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/debug.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/filter-items.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/get-option-specific-excludes.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/module-transformations.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/normalize-options.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/options.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/plugins-compat-data.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/polyfills +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/polyfills/babel-polyfill.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/polyfills/regenerator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/polyfills/utils.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/lib/targets-parser.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/node_modules/.bin/semver +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-env/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-async-arrows-in-class +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-async-arrows-in-class/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-edge-default-parameters +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-edge-default-parameters/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-edge-function-name +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-edge-function-name/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-jsx-spread +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-jsx-spread/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-safari-block-shadowing +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-safari-block-shadowing/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-safari-for-shadowing +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-safari-for-shadowing/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-tagged-template-caching +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/lib/plugins/transform-tagged-template-caching/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-async-arrows-in-class +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-async-arrows-in-class/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-edge-function-name +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-edge-function-name/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-jsx-spread +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-jsx-spread/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-safari-block-shadowing +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-safari-block-shadowing/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-safari-for-shadowing +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-safari-for-shadowing/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-tagged-template-caching +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/preset-modules/src/plugins/transform-tagged-template-caching/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/arrayWithHoles.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/assertThisInitialized.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/AsyncGenerator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/asyncIterator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/asyncToGenerator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/AwaitValue.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classCallCheck.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classNameTDZError.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/construct.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/createClass.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/createSuper.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/decorate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/defaults.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/defineProperty.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/asyncIterator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/AwaitValue.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classCallCheck.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/construct.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/createClass.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/createSuper.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/decorate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/defaults.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/defineProperty.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/extends.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/get.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/inherits.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/instanceof.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/iterableToArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/jsx.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/objectSpread.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/objectSpread2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/readOnlyError.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/set.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/slicedToArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/superPropBase.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/tdz.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/temporalRef.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/toArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/typeof.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/extends.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/get.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/getPrototypeOf.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/inherits.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/inheritsLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/initializerDefineProperty.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/initializerWarningHelper.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/instanceof.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/interopRequireDefault.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/interopRequireWildcard.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/isNativeFunction.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/iterableToArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/jsx.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/maybeArrayLike.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/newArrowCheck.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/nonIterableRest.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/nonIterableSpread.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/objectSpread.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/objectSpread2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/objectWithoutProperties.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/readOnlyError.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/set.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/setPrototypeOf.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/slicedToArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/superPropBase.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/tdz.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/temporalRef.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/temporalUndefined.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/toArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/toConsumableArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/toPrimitive.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/toPropertyKey.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/typeof.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/wrapNativeSuper.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/wrapRegExp.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/helpers/writeOnlyError.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/regenerator +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/runtime/regenerator/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/lib/builder.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/lib/formatters.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/lib/literal.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/lib/options.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/lib/parse.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/lib/populate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/lib/string.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/node_modules/.bin/parser +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/template/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/cache.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/context.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/hub.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/ancestry.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/comments.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/context.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/conversion.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/evaluation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/family.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/generated +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/generated/asserts.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/generated/validators.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/generated/virtual-types.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/inference +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/inference/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/inference/inferers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/introspection.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/lib/hoister.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/lib/virtual-types.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/modification.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/removal.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/path/replacement.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/scope +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/scope/binding.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/scope/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/scope/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/scope/lib/renamer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/types.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/lib/visitors.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/node_modules/.bin/parser +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/scripts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/scripts/generators +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/scripts/generators/asserts.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/scripts/generators/validators.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/scripts/generators/virtual-types.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/traverse/scripts/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/asserts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/asserts/assertNode.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/asserts/generated +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/asserts/generated/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/ast-types +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/ast-types/generated +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/ast-types/generated/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders/builder.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders/flow +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders/generated +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders/generated/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders/generated/uppercase.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders/react +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders/react/buildChildren.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders/typescript +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/clone +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/clone/clone.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/clone/cloneDeep.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/clone/cloneNode.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/comments +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/comments/addComment.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/comments/addComments.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/comments/inheritInnerComments.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/comments/inheritsComments.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/comments/removeComments.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/constants +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/constants/generated +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/constants/generated/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/constants/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/ensureBlock.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/Scope.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/toBlock.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/toComputedKey.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/toExpression.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/toIdentifier.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/toKeyAlias.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/toSequenceExpression.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/toStatement.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/converters/valueToNode.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/definitions +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/definitions/core.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/definitions/experimental.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/definitions/flow.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/definitions/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/definitions/jsx.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/definitions/misc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/definitions/placeholders.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/definitions/typescript.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/definitions/utils.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/index-legacy.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/index.js.flow +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/modifications +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/modifications/flow +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/modifications/inherits.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/modifications/removeProperties.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/modifications/typescript +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/retrievers +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/traverse +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/traverse/traverse.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/traverse/traverseFast.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/utils +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/utils/inherit.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/utils/react +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/utils/shallowEqual.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/generated +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/generated/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/is.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isBinding.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isBlockScoped.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isImmutable.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isLet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isNode.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isPlaceholderType.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isReferenced.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isScope.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isType.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isValidIdentifier.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/isVar.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/matchesPattern.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/react +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/react/isCompatTag.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/react/isReactComponent.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/lib/validators/validate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/generators +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/generators/asserts.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/generators/ast-types.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/generators/builders.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/generators/constants.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/generators/docs.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/generators/flow.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/generators/typescript-legacy.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/generators/validators.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/utils +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/utils/formatBuilderName.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/utils/lowerFirst.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/utils/stringifyValidator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@babel/types/scripts/utils/toFunctionName.js ../../Sources/Navigator/EPUB/Scripts/node_modules/@discoveryjs ../../Sources/Navigator/EPUB/Scripts/node_modules/@discoveryjs/json-ext ../../Sources/Navigator/EPUB/Scripts/node_modules/@discoveryjs/json-ext/CHANGELOG.md @@ -483,6 +1632,13 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/node_modules ../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/node_modules/.bin ../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/node_modules/.bin/js-yaml +../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/node_modules/globals +../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/node_modules/globals/globals.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/node_modules/globals/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/node_modules/globals/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/node_modules/globals/license +../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/node_modules/globals/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/node_modules/globals/readme.md ../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/@eslint/eslintrc/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/@humanwhocodes @@ -1141,6 +2297,98 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/astral-regex/license ../../Sources/Navigator/EPUB/Scripts/node_modules/astral-regex/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/astral-regex/readme.md +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/lib/cache.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/lib/Error.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/lib/injectCaller.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/lib/schema.json +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/lib/transform.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/.bin/webpack +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/declarations +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/declarations/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/declarations/keywords +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/declarations/keywords/absolutePath.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/declarations/util +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/declarations/util/hints.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/declarations/util/Range.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/declarations/validate.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/declarations/ValidationError.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/dist +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/dist/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/dist/keywords +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/dist/keywords/absolutePath.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/dist/util +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/dist/util/hints.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/dist/util/Range.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/dist/validate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/dist/ValidationError.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/node_modules/schema-utils/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-loader/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/.babelrc +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/.eslintignore +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/.eslintrc +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/.travis.yml +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/lib/utils.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-dynamic-import-node/utils.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2 +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/esm +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/esm/index.mjs +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/esm/index.mjs.map +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/lib/add-platform-specific-polyfills.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/lib/built-in-definitions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/lib/helpers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/node_modules/.bin/semver +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs2/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3 +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/core-js-compat +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/data.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/entries.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/get-modules-list-for-target-version.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/core-js-compat/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/esm +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/esm/index.mjs +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/esm/index.mjs.map +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/lib/built-in-definitions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/lib/shipped-proposals.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/lib/utils.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-corejs3/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-regenerator +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-regenerator/esm +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-regenerator/esm/index.mjs +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-regenerator/esm/index.mjs.map +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-regenerator/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-regenerator/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-regenerator/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-regenerator/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/babel-plugin-polyfill-regenerator/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/balanced-match ../../Sources/Navigator/EPUB/Scripts/node_modules/balanced-match/.github ../../Sources/Navigator/EPUB/Scripts/node_modules/balanced-match/.github/FUNDING.yml @@ -1148,6 +2396,14 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/balanced-match/LICENSE.md ../../Sources/Navigator/EPUB/Scripts/node_modules/balanced-match/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/balanced-match/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/big.js +../../Sources/Navigator/EPUB/Scripts/node_modules/big.js/big.js +../../Sources/Navigator/EPUB/Scripts/node_modules/big.js/big.min.js +../../Sources/Navigator/EPUB/Scripts/node_modules/big.js/big.mjs +../../Sources/Navigator/EPUB/Scripts/node_modules/big.js/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/big.js/LICENCE +../../Sources/Navigator/EPUB/Scripts/node_modules/big.js/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/big.js/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/brace-expansion ../../Sources/Navigator/EPUB/Scripts/node_modules/brace-expansion/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/brace-expansion/LICENSE @@ -1269,6 +2525,7 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-appearance.js ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-apply-rule.js ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-at-counter-style.js +../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-autofill.js ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-backdrop-filter.js ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-background-offsets.js ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js @@ -1319,6 +2576,7 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-initial-letter.js ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-initial-value.js +../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-lch-lab.js ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-letter-spacing.js ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-line-clamp.js ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/data/features/css-logical-props.js @@ -2004,14 +3262,36 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/caniuse-lite/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/chalk -../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/index.js.flow ../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/license +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/ansi-styles +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/ansi-styles/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/ansi-styles/license +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/ansi-styles/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/ansi-styles/readme.md +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-convert +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-convert/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-convert/conversions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-convert/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-convert/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-convert/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-convert/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-convert/route.js +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-name +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-name/.eslintrc.json +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-name/.npmignore +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-name/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-name/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-name/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-name/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/node_modules/color-name/test.js ../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/readme.md -../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/source -../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/source/index.js -../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/source/templates.js -../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/source/util.js +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/templates.js +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/types +../../Sources/Navigator/EPUB/Scripts/node_modules/chalk/types/index.d.ts ../../Sources/Navigator/EPUB/Scripts/node_modules/chrome-trace-event ../../Sources/Navigator/EPUB/Scripts/node_modules/chrome-trace-event/CHANGES.md ../../Sources/Navigator/EPUB/Scripts/node_modules/chrome-trace-event/dist @@ -2056,6 +3336,15 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/commander/Readme.md ../../Sources/Navigator/EPUB/Scripts/node_modules/commander/typings ../../Sources/Navigator/EPUB/Scripts/node_modules/commander/typings/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/commondir +../../Sources/Navigator/EPUB/Scripts/node_modules/commondir/example +../../Sources/Navigator/EPUB/Scripts/node_modules/commondir/example/dir.js +../../Sources/Navigator/EPUB/Scripts/node_modules/commondir/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/commondir/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/commondir/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/commondir/readme.markdown +../../Sources/Navigator/EPUB/Scripts/node_modules/commondir/test +../../Sources/Navigator/EPUB/Scripts/node_modules/commondir/test/dirs.js ../../Sources/Navigator/EPUB/Scripts/node_modules/concat-map ../../Sources/Navigator/EPUB/Scripts/node_modules/concat-map/.travis.yml ../../Sources/Navigator/EPUB/Scripts/node_modules/concat-map/example @@ -2066,6 +3355,83 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/concat-map/README.markdown ../../Sources/Navigator/EPUB/Scripts/node_modules/concat-map/test ../../Sources/Navigator/EPUB/Scripts/node_modules/concat-map/test/map.js +../../Sources/Navigator/EPUB/Scripts/node_modules/convert-source-map +../../Sources/Navigator/EPUB/Scripts/node_modules/convert-source-map/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/convert-source-map/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/convert-source-map/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/convert-source-map/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/compat.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/data.json +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/entries.json +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/external.json +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/get-modules-list-for-target-version.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/helpers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/modules-by-versions.json +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/modules.json +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/.bin/browserslist +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/.bin/semver +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/bin +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/bin/semver.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/classes +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/classes/comparator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/classes/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/classes/range.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/classes/semver.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/clean.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/cmp.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/coerce.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/compare-build.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/compare-loose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/compare.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/diff.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/eq.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/gt.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/gte.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/inc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/lt.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/lte.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/major.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/minor.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/neq.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/parse.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/patch.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/prerelease.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/rcompare.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/rsort.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/satisfies.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/sort.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/functions/valid.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/internal +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/internal/constants.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/internal/debug.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/internal/identifiers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/internal/re.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/range.bnf +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/ranges +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/ranges/gtr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/ranges/intersects.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/ranges/ltr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/ranges/max-satisfying.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/ranges/min-satisfying.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/ranges/min-version.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/ranges/outside.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/ranges/to-comparators.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/ranges/valid.js +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/node_modules/semver/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/core-js-compat/targets-parser.js ../../Sources/Navigator/EPUB/Scripts/node_modules/cross-spawn ../../Sources/Navigator/EPUB/Scripts/node_modules/cross-spawn/CHANGELOG.md ../../Sources/Navigator/EPUB/Scripts/node_modules/cross-spawn/index.js @@ -2146,6 +3512,12 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/emoji-regex/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/emoji-regex/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/emoji-regex/text.js +../../Sources/Navigator/EPUB/Scripts/node_modules/emojis-list +../../Sources/Navigator/EPUB/Scripts/node_modules/emojis-list/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/emojis-list/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/emojis-list/LICENSE.md +../../Sources/Navigator/EPUB/Scripts/node_modules/emojis-list/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/emojis-list/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/enhanced-resolve ../../Sources/Navigator/EPUB/Scripts/node_modules/enhanced-resolve/lib ../../Sources/Navigator/EPUB/Scripts/node_modules/enhanced-resolve/lib/AliasFieldPlugin.js @@ -3458,7 +4830,6 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/escalade/sync/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/escalade/sync/index.mjs ../../Sources/Navigator/EPUB/Scripts/node_modules/escape-string-regexp -../../Sources/Navigator/EPUB/Scripts/node_modules/escape-string-regexp/index.d.ts ../../Sources/Navigator/EPUB/Scripts/node_modules/escape-string-regexp/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/escape-string-regexp/license ../../Sources/Navigator/EPUB/Scripts/node_modules/escape-string-regexp/package.json @@ -3920,6 +5291,81 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/.bin ../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/.bin/js-yaml ../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/.bin/semver +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/code-frame +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/code-frame/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/code-frame/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/code-frame/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/code-frame/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/code-frame/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/license +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/index.js.flow +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/license +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/readme.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/templates.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/types +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/types/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/license +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/readme.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/license +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/readme.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/browser.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/license +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/readme.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/@babel/highlight/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/chalk +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/chalk/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/chalk/license +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/chalk/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/chalk/readme.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/chalk/source +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/chalk/source/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/chalk/source/templates.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/chalk/source/util.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-convert +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-convert/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-convert/conversions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-convert/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-convert/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-convert/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-convert/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-convert/route.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-name +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-name/.eslintrc.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-name/.npmignore +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-name/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-name/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-name/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-name/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/color-name/test.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/escape-string-regexp +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/escape-string-regexp/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/escape-string-regexp/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/escape-string-regexp/license +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/escape-string-regexp/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/escape-string-regexp/readme.md ../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/eslint-visitor-keys ../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/eslint-visitor-keys/CHANGELOG.md ../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/eslint-visitor-keys/lib @@ -3928,6 +5374,77 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/eslint-visitor-keys/LICENSE ../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/eslint-visitor-keys/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/eslint-visitor-keys/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/globals +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/globals/globals.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/globals/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/globals/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/globals/license +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/globals/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/globals/readme.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/bin +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/bin/semver.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/classes +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/classes/comparator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/classes/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/classes/range.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/classes/semver.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/clean.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/cmp.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/coerce.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/compare-build.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/compare-loose.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/compare.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/diff.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/eq.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/gt.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/gte.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/inc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/lt.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/lte.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/major.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/minor.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/neq.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/parse.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/patch.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/prerelease.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/rcompare.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/rsort.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/satisfies.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/sort.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/functions/valid.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/internal +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/internal/constants.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/internal/debug.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/internal/identifiers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/internal/parse-options.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/internal/re.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/preload.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/range.bnf +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges/gtr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges/intersects.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges/ltr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges/max-satisfying.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges/min-satisfying.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges/min-version.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges/outside.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges/simplify.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges/subset.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges/to-comparators.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/ranges/valid.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/semver/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/supports-color +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/supports-color/browser.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/supports-color/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/supports-color/license +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/supports-color/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/node_modules/supports-color/readme.md ../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/eslint/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/espree @@ -4098,6 +5615,11 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/file-entry-cache/LICENSE ../../Sources/Navigator/EPUB/Scripts/node_modules/file-entry-cache/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/file-entry-cache/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/find-cache-dir +../../Sources/Navigator/EPUB/Scripts/node_modules/find-cache-dir/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/find-cache-dir/license +../../Sources/Navigator/EPUB/Scripts/node_modules/find-cache-dir/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/find-cache-dir/readme.md ../../Sources/Navigator/EPUB/Scripts/node_modules/find-up ../../Sources/Navigator/EPUB/Scripts/node_modules/find-up/index.d.ts ../../Sources/Navigator/EPUB/Scripts/node_modules/find-up/index.js @@ -4165,6 +5687,15 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/functional-red-black-tree/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/functional-red-black-tree/test ../../Sources/Navigator/EPUB/Scripts/node_modules/functional-red-black-tree/test/test.js +../../Sources/Navigator/EPUB/Scripts/node_modules/gensync +../../Sources/Navigator/EPUB/Scripts/node_modules/gensync/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/gensync/index.js.flow +../../Sources/Navigator/EPUB/Scripts/node_modules/gensync/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/gensync/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/gensync/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/gensync/test +../../Sources/Navigator/EPUB/Scripts/node_modules/gensync/test/.babelrc +../../Sources/Navigator/EPUB/Scripts/node_modules/gensync/test/index.test.js ../../Sources/Navigator/EPUB/Scripts/node_modules/get-intrinsic ../../Sources/Navigator/EPUB/Scripts/node_modules/get-intrinsic/.eslintignore ../../Sources/Navigator/EPUB/Scripts/node_modules/get-intrinsic/.eslintrc @@ -4220,7 +5751,6 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/glob/sync.js ../../Sources/Navigator/EPUB/Scripts/node_modules/globals ../../Sources/Navigator/EPUB/Scripts/node_modules/globals/globals.json -../../Sources/Navigator/EPUB/Scripts/node_modules/globals/index.d.ts ../../Sources/Navigator/EPUB/Scripts/node_modules/globals/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/globals/license ../../Sources/Navigator/EPUB/Scripts/node_modules/globals/package.json @@ -4679,6 +6209,15 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/js-yaml/node_modules/.bin/esvalidate ../../Sources/Navigator/EPUB/Scripts/node_modules/js-yaml/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/js-yaml/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/jsesc +../../Sources/Navigator/EPUB/Scripts/node_modules/jsesc/bin +../../Sources/Navigator/EPUB/Scripts/node_modules/jsesc/bin/jsesc +../../Sources/Navigator/EPUB/Scripts/node_modules/jsesc/jsesc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/jsesc/LICENSE-MIT.txt +../../Sources/Navigator/EPUB/Scripts/node_modules/jsesc/man +../../Sources/Navigator/EPUB/Scripts/node_modules/jsesc/man/jsesc.1 +../../Sources/Navigator/EPUB/Scripts/node_modules/jsesc/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/jsesc/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/json-parse-better-errors ../../Sources/Navigator/EPUB/Scripts/node_modules/json-parse-better-errors/CHANGELOG.md ../../Sources/Navigator/EPUB/Scripts/node_modules/json-parse-better-errors/index.js @@ -4716,6 +6255,30 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/json-stable-stringify-without-jsonify/test/space.js ../../Sources/Navigator/EPUB/Scripts/node_modules/json-stable-stringify-without-jsonify/test/str.js ../../Sources/Navigator/EPUB/Scripts/node_modules/json-stable-stringify-without-jsonify/test/to-json.js +../../Sources/Navigator/EPUB/Scripts/node_modules/json5 +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/dist +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/dist/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/dist/index.min.js +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/dist/index.min.mjs +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/dist/index.mjs +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/cli.js +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/parse.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/parse.js +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/register.js +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/require.js +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/stringify.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/stringify.js +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/unicode.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/unicode.js +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/util.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/lib/util.js +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/LICENSE.md +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/json5/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/kind-of ../../Sources/Navigator/EPUB/Scripts/node_modules/kind-of/CHANGELOG.md ../../Sources/Navigator/EPUB/Scripts/node_modules/kind-of/index.js @@ -4738,6 +6301,42 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/loader-runner/LICENSE ../../Sources/Navigator/EPUB/Scripts/node_modules/loader-runner/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/loader-runner/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib/getCurrentRequest.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib/getHashDigest.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib/getOptions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib/getRemainingRequest.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib/interpolateName.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib/isUrlRequest.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib/parseQuery.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib/parseString.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib/stringifyRequest.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/lib/urlToRequest.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/.bin/json5 +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5 +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/dist +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/dist/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/lib/cli.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/lib/parse.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/lib/register.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/lib/require.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/lib/stringify.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/lib/unicode.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/lib/util.js +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/LICENSE.md +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/node_modules/json5/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/loader-utils/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/locate-path ../../Sources/Navigator/EPUB/Scripts/node_modules/locate-path/index.d.ts ../../Sources/Navigator/EPUB/Scripts/node_modules/locate-path/index.js @@ -4749,6 +6348,11 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/lodash.clonedeep/LICENSE ../../Sources/Navigator/EPUB/Scripts/node_modules/lodash.clonedeep/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/lodash.clonedeep/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/lodash.debounce +../../Sources/Navigator/EPUB/Scripts/node_modules/lodash.debounce/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/lodash.debounce/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/lodash.debounce/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/lodash.debounce/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/lodash.merge ../../Sources/Navigator/EPUB/Scripts/node_modules/lodash.merge/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/lodash.merge/LICENSE @@ -4764,6 +6368,15 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/lru-cache/LICENSE ../../Sources/Navigator/EPUB/Scripts/node_modules/lru-cache/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/lru-cache/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/make-dir +../../Sources/Navigator/EPUB/Scripts/node_modules/make-dir/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/make-dir/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/make-dir/license +../../Sources/Navigator/EPUB/Scripts/node_modules/make-dir/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/make-dir/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/make-dir/node_modules/.bin/semver +../../Sources/Navigator/EPUB/Scripts/node_modules/make-dir/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/make-dir/readme.md ../../Sources/Navigator/EPUB/Scripts/node_modules/merge-stream ../../Sources/Navigator/EPUB/Scripts/node_modules/merge-stream/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/merge-stream/LICENSE @@ -4793,6 +6406,30 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/minimatch/minimatch.js ../../Sources/Navigator/EPUB/Scripts/node_modules/minimatch/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/minimatch/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/.travis.yml +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/example +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/example/parse.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/readme.markdown +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/all_bool.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/bool.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/dash.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/default_bool.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/dotted.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/kv_short.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/long.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/num.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/parse_modified.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/parse.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/proto.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/short.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/stop_early.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/unknown.js +../../Sources/Navigator/EPUB/Scripts/node_modules/minimist/test/whitespace.js ../../Sources/Navigator/EPUB/Scripts/node_modules/ms ../../Sources/Navigator/EPUB/Scripts/node_modules/ms/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/ms/license.md @@ -4923,15 +6560,9 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/neo-async/whilst.js ../../Sources/Navigator/EPUB/Scripts/node_modules/neo-async/wrapSync.js ../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases -../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/.github -../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/.github/workflows -../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/.github/workflows/nightly-sync.yml ../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/data ../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/data/processed ../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/data/processed/envs.json -../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/data/raw -../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/data/raw/iojs.json -../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/data/raw/nodejs.json ../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/data/release-schedule ../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/data/release-schedule/release-schedule.json ../../Sources/Navigator/EPUB/Scripts/node_modules/node-releases/LICENSE @@ -5175,6 +6806,13 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/browser.js ../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/node_modules/safe-buffer +../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/node_modules/safe-buffer/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/node_modules/safe-buffer/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/node_modules/safe-buffer/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/node_modules/safe-buffer/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/node_modules/safe-buffer/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/randombytes/test.js @@ -5187,6 +6825,462 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/rechoir/LICENSE ../../Sources/Navigator/EPUB/Scripts/node_modules/rechoir/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/rechoir/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Alphabetic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Any.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/ASCII_Hex_Digit.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/ASCII.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Assigned.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Bidi_Control.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Bidi_Mirrored.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Case_Ignorable.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Cased.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Casefolded.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Casemapped.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Lowercased.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_NFKC_Casefolded.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Titlecased.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Uppercased.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Dash.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Default_Ignorable_Code_Point.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Deprecated.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Diacritic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Component.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Modifier_Base.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Modifier.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Presentation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Emoji.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Extended_Pictographic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Extender.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Grapheme_Base.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Grapheme_Extend.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Hex_Digit.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/ID_Continue.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/ID_Start.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Ideographic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/IDS_Binary_Operator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/IDS_Trinary_Operator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Join_Control.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Logical_Order_Exception.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Lowercase.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Math.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Noncharacter_Code_Point.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Pattern_Syntax.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Pattern_White_Space.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Quotation_Mark.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Radical.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Regional_Indicator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Sentence_Terminal.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Soft_Dotted.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Terminal_Punctuation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Unified_Ideograph.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Uppercase.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/Variation_Selector.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/White_Space.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/XID_Continue.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Binary_Property/XID_Start.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Cased_Letter.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Close_Punctuation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Connector_Punctuation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Control.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Currency_Symbol.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Dash_Punctuation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Decimal_Number.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Enclosing_Mark.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Final_Punctuation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Format.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Initial_Punctuation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Letter_Number.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Letter.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Line_Separator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Lowercase_Letter.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Mark.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Math_Symbol.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Modifier_Letter.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Modifier_Symbol.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Nonspacing_Mark.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Number.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Open_Punctuation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Other_Letter.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Other_Number.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Other_Punctuation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Other_Symbol.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Other.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Paragraph_Separator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Private_Use.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Punctuation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Separator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Space_Separator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Spacing_Mark.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Surrogate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Symbol.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Titlecase_Letter.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Unassigned.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/General_Category/Uppercase_Letter.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/LICENSE-MIT.txt +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Adlam.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Ahom.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Anatolian_Hieroglyphs.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Arabic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Armenian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Avestan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Balinese.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Bamum.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Bassa_Vah.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Batak.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Bengali.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Bhaiksuki.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Bopomofo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Brahmi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Braille.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Buginese.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Buhid.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Canadian_Aboriginal.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Carian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Caucasian_Albanian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Chakma.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Cham.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Cherokee.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Chorasmian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Common.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Coptic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Cuneiform.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Cypriot.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Cypro_Minoan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Cyrillic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Deseret.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Devanagari.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Dives_Akuru.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Dogra.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Duployan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Egyptian_Hieroglyphs.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Elbasan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Elymaic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Ethiopic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Georgian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Glagolitic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Gothic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Grantha.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Greek.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Gujarati.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Gunjala_Gondi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Gurmukhi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Han.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Hangul.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Hanifi_Rohingya.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Hanunoo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Hatran.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Hebrew.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Hiragana.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Imperial_Aramaic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Inherited.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Inscriptional_Pahlavi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Inscriptional_Parthian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Javanese.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Kaithi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Kannada.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Katakana.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Kayah_Li.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Kharoshthi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Khitan_Small_Script.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Khmer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Khojki.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Khudawadi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Lao.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Latin.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Lepcha.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Limbu.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Linear_A.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Linear_B.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Lisu.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Lycian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Lydian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Mahajani.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Makasar.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Malayalam.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Mandaic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Manichaean.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Marchen.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Masaram_Gondi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Medefaidrin.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Meetei_Mayek.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Mende_Kikakui.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Meroitic_Cursive.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Meroitic_Hieroglyphs.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Miao.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Modi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Mongolian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Mro.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Multani.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Myanmar.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Nabataean.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Nandinagari.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/New_Tai_Lue.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Newa.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Nko.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Nushu.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Nyiakeng_Puachue_Hmong.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Ogham.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Ol_Chiki.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Hungarian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Italic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Old_North_Arabian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Permic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Persian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Sogdian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Old_South_Arabian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Turkic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Uyghur.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Oriya.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Osage.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Osmanya.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Pahawh_Hmong.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Palmyrene.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Pau_Cin_Hau.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Phags_Pa.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Phoenician.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Psalter_Pahlavi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Rejang.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Runic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Samaritan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Saurashtra.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Sharada.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Shavian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Siddham.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/SignWriting.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Sinhala.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Sogdian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Sora_Sompeng.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Soyombo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Sundanese.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Syloti_Nagri.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Syriac.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Tagalog.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Tagbanwa.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Le.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Tham.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Viet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Takri.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Tamil.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Tangsa.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Tangut.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Telugu.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Thaana.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Thai.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Tibetan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Tifinagh.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Tirhuta.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Toto.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Ugaritic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Vai.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Vithkuqi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Wancho.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Warang_Citi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Yezidi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Yi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script_Extensions/Zanabazar_Square.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Adlam.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Ahom.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Anatolian_Hieroglyphs.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Arabic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Armenian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Avestan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Balinese.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Bamum.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Bassa_Vah.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Batak.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Bengali.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Bhaiksuki.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Bopomofo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Brahmi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Braille.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Buginese.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Buhid.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Canadian_Aboriginal.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Carian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Caucasian_Albanian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Chakma.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Cham.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Cherokee.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Chorasmian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Common.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Coptic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Cuneiform.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Cypriot.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Cypro_Minoan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Cyrillic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Deseret.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Devanagari.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Dives_Akuru.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Dogra.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Duployan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Egyptian_Hieroglyphs.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Elbasan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Elymaic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Ethiopic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Georgian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Glagolitic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Gothic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Grantha.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Greek.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Gujarati.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Gunjala_Gondi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Gurmukhi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Han.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Hangul.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Hanifi_Rohingya.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Hanunoo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Hatran.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Hebrew.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Hiragana.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Imperial_Aramaic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Inherited.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Inscriptional_Pahlavi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Inscriptional_Parthian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Javanese.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Kaithi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Kannada.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Katakana.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Kayah_Li.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Kharoshthi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Khitan_Small_Script.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Khmer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Khojki.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Khudawadi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Lao.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Latin.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Lepcha.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Limbu.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Linear_A.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Linear_B.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Lisu.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Lycian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Lydian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Mahajani.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Makasar.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Malayalam.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Mandaic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Manichaean.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Marchen.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Masaram_Gondi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Medefaidrin.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Meetei_Mayek.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Mende_Kikakui.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Meroitic_Cursive.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Meroitic_Hieroglyphs.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Miao.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Modi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Mongolian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Mro.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Multani.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Myanmar.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Nabataean.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Nandinagari.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/New_Tai_Lue.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Newa.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Nko.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Nushu.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Nyiakeng_Puachue_Hmong.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Ogham.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Ol_Chiki.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Old_Hungarian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Old_Italic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Old_North_Arabian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Old_Permic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Old_Persian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Old_Sogdian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Old_South_Arabian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Old_Turkic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Old_Uyghur.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Oriya.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Osage.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Osmanya.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Pahawh_Hmong.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Palmyrene.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Pau_Cin_Hau.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Phags_Pa.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Phoenician.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Psalter_Pahlavi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Rejang.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Runic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Samaritan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Saurashtra.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Sharada.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Shavian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Siddham.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/SignWriting.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Sinhala.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Sogdian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Sora_Sompeng.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Soyombo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Sundanese.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Syloti_Nagri.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Syriac.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Tagalog.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Tagbanwa.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Tai_Le.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Tai_Tham.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Tai_Viet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Takri.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Tamil.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Tangsa.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Tangut.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Telugu.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Thaana.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Thai.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Tibetan.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Tifinagh.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Tirhuta.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Toto.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Ugaritic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Vai.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Vithkuqi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Wancho.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Warang_Citi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Yezidi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Yi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/Script/Zanabazar_Square.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate-unicode-properties/unicode-version.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate/LICENSE-MIT.txt +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerate/regenerate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-runtime +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-runtime/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-runtime/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-runtime/path.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-runtime/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-runtime/runtime.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/lib/emit.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/lib/hoist.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/lib/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/lib/leap.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/lib/meta.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/lib/replaceShorthandObjectMethod.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/lib/util.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/lib/visit.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/src +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/src/emit.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/src/hoist.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/src/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/src/leap.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/src/meta.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/src/replaceShorthandObjectMethod.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/src/util.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regenerator-transform/src/visit.js ../../Sources/Navigator/EPUB/Scripts/node_modules/regexp.prototype.flags ../../Sources/Navigator/EPUB/Scripts/node_modules/regexp.prototype.flags/.editorconfig ../../Sources/Navigator/EPUB/Scripts/node_modules/regexp.prototype.flags/.eslintignore @@ -5215,6 +7309,41 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/regexpp/LICENSE ../../Sources/Navigator/EPUB/Scripts/node_modules/regexpp/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/regexpp/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/regexpu-core +../../Sources/Navigator/EPUB/Scripts/node_modules/regexpu-core/data +../../Sources/Navigator/EPUB/Scripts/node_modules/regexpu-core/data/character-class-escape-sets.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regexpu-core/data/iu-mappings.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regexpu-core/LICENSE-MIT.txt +../../Sources/Navigator/EPUB/Scripts/node_modules/regexpu-core/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/regexpu-core/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/regexpu-core/node_modules/.bin/regjsparser +../../Sources/Navigator/EPUB/Scripts/node_modules/regexpu-core/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/regexpu-core/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/regexpu-core/rewrite-pattern.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsgen +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsgen/LICENSE-MIT.txt +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsgen/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsgen/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsgen/regjsgen.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/bin +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/bin/parser +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/LICENSE.BSD +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules/.bin +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules/.bin/jsesc +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules/jsesc +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules/jsesc/bin +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules/jsesc/bin/jsesc +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules/jsesc/jsesc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules/jsesc/LICENSE-MIT.txt +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules/jsesc/man +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules/jsesc/man/jsesc.1 +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules/jsesc/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/node_modules/jsesc/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/parser.js +../../Sources/Navigator/EPUB/Scripts/node_modules/regjsparser/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/require-from-string ../../Sources/Navigator/EPUB/Scripts/node_modules/require-from-string/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/require-from-string/license @@ -5421,60 +7550,11 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/semver/bin ../../Sources/Navigator/EPUB/Scripts/node_modules/semver/bin/semver.js ../../Sources/Navigator/EPUB/Scripts/node_modules/semver/CHANGELOG.md -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/classes -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/classes/comparator.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/classes/index.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/classes/range.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/classes/semver.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/clean.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/cmp.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/coerce.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/compare-build.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/compare-loose.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/compare.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/diff.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/eq.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/gt.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/gte.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/inc.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/lt.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/lte.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/major.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/minor.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/neq.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/parse.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/patch.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/prerelease.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/rcompare.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/rsort.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/satisfies.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/sort.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/functions/valid.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/index.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/internal -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/internal/constants.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/internal/debug.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/internal/identifiers.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/internal/parse-options.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/internal/re.js ../../Sources/Navigator/EPUB/Scripts/node_modules/semver/LICENSE ../../Sources/Navigator/EPUB/Scripts/node_modules/semver/package.json -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/preload.js ../../Sources/Navigator/EPUB/Scripts/node_modules/semver/range.bnf -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges/gtr.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges/intersects.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges/ltr.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges/max-satisfying.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges/min-satisfying.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges/min-version.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges/outside.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges/simplify.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges/subset.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges/to-comparators.js -../../Sources/Navigator/EPUB/Scripts/node_modules/semver/ranges/valid.js ../../Sources/Navigator/EPUB/Scripts/node_modules/semver/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/semver/semver.js ../../Sources/Navigator/EPUB/Scripts/node_modules/serialize-javascript ../../Sources/Navigator/EPUB/Scripts/node_modules/serialize-javascript/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/serialize-javascript/LICENSE @@ -5524,6 +7604,30 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support ../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/browser-source-map-support.js ../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/LICENSE.md +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/dist +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/dist/source-map.debug.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/dist/source-map.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/dist/source-map.min.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/dist/source-map.min.js.map +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/lib/array-set.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/lib/base64-vlq.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/lib/base64.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/lib/binary-search.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/lib/mapping-list.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/lib/quick-sort.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/lib/source-map-consumer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/lib/source-map-generator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/lib/source-node.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/lib/util.js +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/source-map.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/node_modules/source-map/source-map.js ../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/source-map-support/register.js @@ -5548,7 +7652,6 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/source-map/LICENSE ../../Sources/Navigator/EPUB/Scripts/node_modules/source-map/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/source-map/README.md -../../Sources/Navigator/EPUB/Scripts/node_modules/source-map/source-map.d.ts ../../Sources/Navigator/EPUB/Scripts/node_modules/source-map/source-map.js ../../Sources/Navigator/EPUB/Scripts/node_modules/sprintf-js ../../Sources/Navigator/EPUB/Scripts/node_modules/sprintf-js/.npmignore @@ -5658,6 +7761,12 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/supports-color/browser.js ../../Sources/Navigator/EPUB/Scripts/node_modules/supports-color/index.js ../../Sources/Navigator/EPUB/Scripts/node_modules/supports-color/license +../../Sources/Navigator/EPUB/Scripts/node_modules/supports-color/node_modules +../../Sources/Navigator/EPUB/Scripts/node_modules/supports-color/node_modules/has-flag +../../Sources/Navigator/EPUB/Scripts/node_modules/supports-color/node_modules/has-flag/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/supports-color/node_modules/has-flag/license +../../Sources/Navigator/EPUB/Scripts/node_modules/supports-color/node_modules/has-flag/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/supports-color/node_modules/has-flag/readme.md ../../Sources/Navigator/EPUB/Scripts/node_modules/supports-color/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/supports-color/readme.md ../../Sources/Navigator/EPUB/Scripts/node_modules/table @@ -6283,6 +8392,29 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/.bin ../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/.bin/terser ../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/.bin/webpack +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/dist +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/dist/source-map.debug.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/dist/source-map.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/dist/source-map.min.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/dist/source-map.min.js.map +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/lib/array-set.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/lib/base64-vlq.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/lib/base64.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/lib/binary-search.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/lib/mapping-list.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/lib/quick-sort.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/lib/source-map-consumer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/lib/source-map-generator.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/lib/source-node.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/lib/util.js +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/source-map.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/node_modules/source-map/source-map.js ../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/terser-webpack-plugin/types @@ -6385,6 +8517,11 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/text-table/test/dotalign.js ../../Sources/Navigator/EPUB/Scripts/node_modules/text-table/test/doubledot.js ../../Sources/Navigator/EPUB/Scripts/node_modules/text-table/test/table.js +../../Sources/Navigator/EPUB/Scripts/node_modules/to-fast-properties +../../Sources/Navigator/EPUB/Scripts/node_modules/to-fast-properties/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/to-fast-properties/license +../../Sources/Navigator/EPUB/Scripts/node_modules/to-fast-properties/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/to-fast-properties/readme.md ../../Sources/Navigator/EPUB/Scripts/node_modules/type-check ../../Sources/Navigator/EPUB/Scripts/node_modules/type-check/lib ../../Sources/Navigator/EPUB/Scripts/node_modules/type-check/lib/check.js @@ -6452,6 +8589,28 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/unbox-primitive/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/unbox-primitive/test ../../Sources/Navigator/EPUB/Scripts/node_modules/unbox-primitive/test/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-canonical-property-names-ecmascript +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-canonical-property-names-ecmascript/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-canonical-property-names-ecmascript/LICENSE-MIT.txt +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-canonical-property-names-ecmascript/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-canonical-property-names-ecmascript/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-ecmascript +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-ecmascript/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-ecmascript/LICENSE-MIT.txt +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-ecmascript/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-ecmascript/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-value-ecmascript +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-value-ecmascript/data +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-value-ecmascript/data/mappings.js +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-value-ecmascript/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-value-ecmascript/LICENSE-MIT.txt +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-value-ecmascript/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-match-property-value-ecmascript/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-property-aliases-ecmascript +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-property-aliases-ecmascript/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-property-aliases-ecmascript/LICENSE-MIT.txt +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-property-aliases-ecmascript/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/unicode-property-aliases-ecmascript/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/uri-js ../../Sources/Navigator/EPUB/Scripts/node_modules/uri-js/dist ../../Sources/Navigator/EPUB/Scripts/node_modules/uri-js/dist/es5 @@ -7177,6 +9336,863 @@ ../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/acorn/LICENSE ../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/acorn/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/acorn/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist/browser.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist/cli.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist/error.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist/error.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist/index.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist/node.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/browserslist/update-db.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/agents.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/browsers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/browserVersions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/aac.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/abortcontroller.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/ac3-ec3.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/accelerometer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/addeventlistener.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/alternate-stylesheet.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/ambient-light.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/apng.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/array-find-index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/array-find.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/array-flat.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/array-includes.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/arrow-functions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/asmjs.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/async-clipboard.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/async-functions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/atob-btoa.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/audio-api.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/audio.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/audiotracks.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/autofocus.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/auxclick.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/av1.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/avif.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/background-attachment.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/background-clip-text.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/background-img-opts.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/background-position-x-y.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/background-repeat-round-space.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/background-sync.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/battery-status.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/beacon.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/beforeafterprint.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/bigint.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/blobbuilder.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/bloburls.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/border-image.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/border-radius.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/broadcastchannel.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/brotli.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/calc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/canvas-blending.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/canvas-text.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/canvas.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/ch-unit.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/chacha20-poly1305.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/channel-messaging.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/childnode-remove.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/classlist.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/clipboard.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/colr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/comparedocumentposition.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/console-basic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/console-time.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/const.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/constraint-validation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/contenteditable.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/cookie-store-api.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/cors.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/createimagebitmap.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/credential-management.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/cryptography.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-all.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-animation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-any-link.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-appearance.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-apply-rule.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-at-counter-style.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-backdrop-filter.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-background-offsets.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-boxshadow.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-canvas.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-caret-color.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-cascade-layers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-case-insensitive.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-clip-path.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-color-adjust.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-color-function.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-conic-gradients.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-container-queries.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-containment.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-content-visibility.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-counters.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-crisp-edges.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-cross-fade.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-default-pseudo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-deviceadaptation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-dir-pseudo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-display-contents.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-element-function.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-env-function.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-exclusions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-featurequeries.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-filter-function.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-filters.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-first-letter.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-first-line.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-fixed.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-focus-visible.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-focus-within.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-font-stretch.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-gencontent.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-gradients.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-grid.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-has.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-hyphenate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-hyphens.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-image-orientation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-image-set.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-in-out-of-range.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-initial-letter.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-initial-value.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-letter-spacing.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-line-clamp.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-logical-props.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-marker-pseudo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-masks.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-matches-pseudo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-math-functions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-media-interaction.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-media-resolution.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-media-scripting.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-mediaqueries.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-mixblendmode.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-motion-paths.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-namespaces.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-nesting.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-not-sel-list.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-nth-child-of.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-opacity.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-optional-pseudo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-overflow-anchor.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-overflow-overlay.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-overflow.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-page-break.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-paged-media.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-paint-api.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-placeholder-shown.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-placeholder.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-read-only-write.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-rebeccapurple.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-reflections.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-regions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-repeating-gradients.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-resize.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-revert-value.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-rrggbbaa.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-scroll-behavior.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-scroll-timeline.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-scrollbar.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-sel2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-sel3.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-selection.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-shapes.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-snappoints.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-sticky.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-subgrid.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-supports-api.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-table.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-text-align-last.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-text-indent.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-text-justify.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-text-orientation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-text-spacing.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-textshadow.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-touch-action-2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-touch-action.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-transitions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-unicode-bidi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-unset-value.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-variables.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-widows-orphans.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-writing-mode.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css-zoom.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css3-attr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css3-boxsizing.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css3-colors.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css3-cursors-grab.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css3-cursors-newer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css3-cursors.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/css3-tabsize.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/currentcolor.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/custom-elements.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/custom-elementsv1.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/customevent.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/datalist.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/dataset.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/datauri.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/decorators.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/details.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/deviceorientation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/devicepixelratio.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/dialog.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/dispatchevent.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/dnssec.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/do-not-track.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/document-currentscript.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/document-execcommand.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/document-policy.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/document-scrollingelement.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/documenthead.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/dom-manip-convenience.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/dom-range.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/domcontentloaded.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/dommatrix.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/download.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/dragndrop.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/element-closest.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/element-from-point.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/element-scroll-methods.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/eme.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/eot.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/es5.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/es6-class.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/es6-generators.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/es6-module.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/es6-number.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/es6-string-includes.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/es6.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/eventsource.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/extended-system-fonts.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/feature-policy.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/fetch.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/fieldset-disabled.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/fileapi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/filereader.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/filereadersync.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/filesystem.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/flac.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/flexbox-gap.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/flexbox.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/flow-root.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/focusin-focusout-events.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/font-family-system-ui.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/font-feature.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/font-kerning.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/font-loading.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/font-metrics-overrides.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/font-size-adjust.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/font-smooth.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/font-unicode-range.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/font-variant-alternates.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/font-variant-east-asian.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/font-variant-numeric.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/fontface.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/form-attribute.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/form-submit-attributes.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/form-validation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/forms.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/fullscreen.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/gamepad.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/geolocation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/getboundingclientrect.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/getcomputedstyle.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/getelementsbyclassname.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/getrandomvalues.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/gyroscope.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/hardwareconcurrency.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/hashchange.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/heif.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/hevc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/hidden.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/high-resolution-time.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/history.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/html-media-capture.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/html5semantic.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/http-live-streaming.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/http2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/http3.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/iframe-sandbox.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/iframe-seamless.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/iframe-srcdoc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/imagecapture.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/ime.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/import-maps.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/imports.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/indexeddb.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/indexeddb2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/inline-block.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/innertext.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-color.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-datetime.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-email-tel-url.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-event.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-file-accept.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-file-directory.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-file-multiple.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-inputmode.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-minlength.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-number.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-pattern.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-placeholder.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-range.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-search.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/input-selection.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/insert-adjacent.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/insertadjacenthtml.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/internationalization.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/intersectionobserver.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/intl-pluralrules.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/intrinsic-width.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/jpeg2000.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/jpegxl.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/jpegxr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/json.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/keyboardevent-code.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/keyboardevent-key.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/keyboardevent-location.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/keyboardevent-which.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/lazyload.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/let.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/link-icon-png.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/link-icon-svg.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/link-rel-preconnect.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/link-rel-prefetch.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/link-rel-preload.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/link-rel-prerender.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/loading-lazy-attr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/localecompare.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/magnetometer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/matchesselector.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/matchmedia.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/mathml.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/maxlength.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/media-attribute.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/media-fragments.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/media-session-api.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/mediarecorder.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/mediasource.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/menu.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/meta-theme-color.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/meter.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/midi.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/minmaxwh.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/mp3.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/mpeg-dash.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/mpeg4.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/multibackgrounds.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/multicolumn.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/mutation-events.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/mutationobserver.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/namevalue-storage.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/native-filesystem-api.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/nav-timing.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/navigator-language.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/netinfo.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/notifications.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/object-entries.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/object-fit.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/object-observe.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/object-values.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/objectrtc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/offline-apps.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/offscreencanvas.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/ogg-vorbis.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/ogv.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/ol-reversed.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/once-event-listener.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/online-status.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/opus.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/orientation-sensor.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/outline.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/pad-start-end.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/page-transition-events.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/pagevisibility.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/passive-event-listener.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/passwordrules.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/path2d.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/payment-request.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/pdf-viewer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/permissions-api.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/permissions-policy.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/picture-in-picture.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/picture.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/ping.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/png-alpha.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/pointer-events.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/pointer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/pointerlock.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/portals.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/prefers-color-scheme.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/private-class-fields.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/progress.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/promise-finally.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/promises.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/proximity.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/proxy.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/public-class-fields.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/publickeypinning.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/push-api.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/queryselector.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/readonly-attr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/referrer-policy.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/registerprotocolhandler.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/rel-noopener.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/rel-noreferrer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/rellist.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/rem.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/requestanimationframe.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/requestidlecallback.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/resizeobserver.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/resource-timing.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/rest-parameters.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/rtcpeerconnection.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/ruby.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/run-in.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/screen-orientation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/script-async.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/script-defer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/scrollintoview.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/sdch.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/selection-api.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/server-timing.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/serviceworkers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/setimmediate.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/sha-2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/shadowdom.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/shadowdomv1.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/sharedarraybuffer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/sharedworkers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/sni.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/spdy.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/speech-recognition.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/speech-synthesis.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/spellcheck-attribute.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/sql-storage.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/srcset.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/stream.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/streams.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/stricttransportsecurity.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/style-scoped.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/subresource-integrity.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/svg-css.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/svg-filters.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/svg-fonts.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/svg-fragment.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/svg-html.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/svg-html5.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/svg-img.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/svg-smil.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/svg.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/sxg.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/tabindex-attr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/template-literals.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/template.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/temporal.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/testfeat.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/text-decoration.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/text-emphasis.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/text-overflow.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/text-size-adjust.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/text-stroke.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/text-underline-offset.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/textcontent.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/textencoder.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/tls1-1.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/tls1-2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/tls1-3.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/token-binding.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/touch.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/transforms2d.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/transforms3d.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/trusted-types.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/ttf.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/typedarrays.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/u2f.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/unhandledrejection.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/url.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/urlsearchparams.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/use-strict.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/user-select-none.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/user-timing.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/variable-fonts.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/vector-effect.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/vibration.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/video.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/videotracks.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/viewport-unit-variants.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/viewport-units.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/wai-aria.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/wake-lock.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/wasm.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/wav.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/wbr-element.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/web-animation.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/web-app-manifest.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/web-bluetooth.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/web-serial.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/web-share.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webauthn.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webgl.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webgl2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webgpu.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webhid.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webkit-user-drag.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webm.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webnfc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webp.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/websockets.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webusb.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webvr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webvtt.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webworkers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/webxr.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/will-change.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/woff.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/woff2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/word-break.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/wordwrap.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/x-doc-messaging.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/x-frame-options.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/xhr2.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/xhtml.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/xhtmlsmil.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/features/xml-serializer.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AD.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AF.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AI.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AL.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/alt-af.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/alt-an.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/alt-as.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/alt-eu.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/alt-na.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/alt-oc.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/alt-sa.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/alt-ww.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AO.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AS.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AT.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AU.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AW.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AX.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/AZ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BB.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BD.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BF.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BH.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BI.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BJ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BN.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BO.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BS.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BT.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BW.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BY.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/BZ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CD.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CF.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CH.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CI.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CK.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CL.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CN.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CO.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CU.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CV.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CX.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CY.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/CZ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/DE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/DJ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/DK.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/DM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/DO.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/DZ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/EC.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/EE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/EG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/ER.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/ES.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/ET.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/FI.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/FJ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/FK.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/FM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/FO.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/FR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GB.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GD.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GF.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GH.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GI.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GL.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GN.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GP.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GQ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GT.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GU.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GW.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/GY.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/HK.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/HN.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/HR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/HT.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/HU.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/ID.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/IE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/IL.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/IM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/IN.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/IQ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/IR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/IS.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/IT.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/JE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/JM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/JO.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/JP.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/KE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/KG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/KH.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/KI.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/KM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/KN.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/KP.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/KR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/KW.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/KY.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/KZ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/LA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/LB.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/LC.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/LI.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/LK.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/LR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/LS.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/LT.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/LU.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/LV.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/LY.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MC.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MD.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/ME.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MH.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MK.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/ML.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MN.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MO.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MP.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MQ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MS.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MT.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MU.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MV.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MW.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MX.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MY.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/MZ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NC.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NF.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NI.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NL.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NO.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NP.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NU.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/NZ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/OM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PF.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PH.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PK.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PL.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PN.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PS.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PT.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PW.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/PY.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/QA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/RE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/RO.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/RS.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/RU.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/RW.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SB.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SC.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SD.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SH.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SI.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SK.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SL.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SN.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SO.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/ST.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SV.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SY.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/SZ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TC.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TD.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TH.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TJ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TK.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TL.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TN.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TO.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TR.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TT.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TV.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TW.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/TZ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/UA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/UG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/US.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/UY.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/UZ.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/VA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/VC.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/VE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/VG.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/VI.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/VN.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/VU.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/WF.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/WS.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/YE.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/YT.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/ZA.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/ZM.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/data/regions/ZW.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist/lib +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist/lib/statuses.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist/lib/supported.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist/unpacker +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist/unpacker/agents.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist/unpacker/browsers.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist/unpacker/browserVersions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist/unpacker/feature.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist/unpacker/features.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist/unpacker/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/dist/unpacker/region.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/caniuse-lite/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/electron-to-chromium +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/electron-to-chromium/CHANGELOG.md +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/electron-to-chromium/chromium-versions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/electron-to-chromium/full-chromium-versions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/electron-to-chromium/full-versions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/electron-to-chromium/index.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/electron-to-chromium/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/electron-to-chromium/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/electron-to-chromium/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/electron-to-chromium/versions.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/.github +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/.github/workflows +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/.github/workflows/nightly-sync.yml +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/data +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/data/processed +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/data/processed/envs.json +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/data/raw +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/data/raw/iojs.json +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/data/raw/nodejs.json +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/data/release-schedule +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/data/release-schedule/release-schedule.json +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/node-releases/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/picocolors +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/picocolors/LICENSE +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/picocolors/package.json +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/picocolors/picocolors.browser.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/picocolors/picocolors.d.ts +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/picocolors/picocolors.js +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/picocolors/README.md +../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/node_modules/picocolors/types.ts ../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/package.json ../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/README.md ../../Sources/Navigator/EPUB/Scripts/node_modules/webpack/schemas @@ -7409,7 +10425,6 @@ ../../Sources/Navigator/Toolkit/WebView.swift ../../Sources/Navigator/VisualNavigator.swift ../../Sources/OPDS -../../Sources/OPDS/Deprecated.swift ../../Sources/OPDS/OPDS1Parser.swift ../../Sources/OPDS/OPDS2Parser.swift ../../Sources/OPDS/OPDSParser.swift @@ -7504,6 +10519,7 @@ ../../Sources/Shared/Publication/Services/Locator/DefaultLocatorService.swift ../../Sources/Shared/Publication/Services/Locator/LocatorService.swift ../../Sources/Shared/Publication/Services/Positions +../../Sources/Shared/Publication/Services/Positions/InMemoryPositionsService.swift ../../Sources/Shared/Publication/Services/Positions/PerResourcePositionsService.swift ../../Sources/Shared/Publication/Services/Positions/PositionsService.swift ../../Sources/Shared/Publication/Services/PublicationService.swift diff --git a/Support/Carthage/Readium.xcodeproj/project.pbxproj b/Support/Carthage/Readium.xcodeproj/project.pbxproj index 8b2068588..6029ce4cf 100644 --- a/Support/Carthage/Readium.xcodeproj/project.pbxproj +++ b/Support/Carthage/Readium.xcodeproj/project.pbxproj @@ -115,7 +115,6 @@ 5A40B83CF103A9102DF233E2 /* LoggerStub.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72922E22040CEFB3B7BBCDAF /* LoggerStub.swift */; }; 5B166084DFB7FF0DFD1D111B /* OPDSPrice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C22408FE1FA81400DE8D5F7 /* OPDSPrice.swift */; }; 5B38F9D78BD04D7385E4B3E4 /* UserRights.swift in Sources */ = {isa = PBXBuildFile; fileRef = 567C115FF0939F69AD83AE82 /* UserRights.swift */; }; - 5BF07D73985075F71E70F5D3 /* Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1225F795A69CCB10692A56B5 /* Deprecated.swift */; }; 5C051B93B795D76666F4344B /* Metadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01B24895126F2A744A8E9E61 /* Metadata.swift */; }; 5C8ED4151A6C7EF6608A03F8 /* AudioSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ECD1D0BE2C4BB5B58E32BFD /* AudioSession.swift */; }; 5C9617AE1B5678A95ABFF1AA /* Link.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF92954C8C8C3EC50C835CBA /* Link.swift */; }; @@ -349,7 +348,6 @@ 10CFCE63856A801FB14A0633 /* Deferred.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Deferred.swift; sourceTree = ""; }; 10FB29EDCCE5910C869295F1 /* Either.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Either.swift; sourceTree = ""; }; 11252900E9B0827C0FD2FA4B /* Database.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Database.swift; sourceTree = ""; }; - 1225F795A69CCB10692A56B5 /* Deprecated.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Deprecated.swift; sourceTree = ""; }; 125BAF5FDFA097BA5CC63539 /* StringExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtension.swift; sourceTree = ""; }; 15980B67505AAF10642B56C8 /* LicenseContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LicenseContainer.swift; sourceTree = ""; }; 17D22986A3ADE9E883691EE2 /* Deferred.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Deferred.swift; sourceTree = ""; }; @@ -1041,7 +1039,6 @@ 6AC2BCCC17BAA1F2AD19B5FF /* OPDS */ = { isa = PBXGroup; children = ( - 1225F795A69CCB10692A56B5 /* Deprecated.swift */, 34B5C938E4973406F110F2E6 /* OPDS1Parser.swift */, 9935832F8ECA0AB7A7A486FC /* OPDS2Parser.swift */, 07B5469E40752E598C070E5B /* OPDSParser.swift */, @@ -1687,7 +1684,7 @@ }; }; buildConfigurationList = 5A872BCD95ECE5673BC89051 /* Build configuration list for PBXProject "Readium" */; - compatibilityVersion = "Xcode 10.0"; + compatibilityVersion = "Xcode 11.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -2030,7 +2027,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5BF07D73985075F71E70F5D3 /* Deprecated.swift in Sources */, 7AEDE3769227C2BDE4876333 /* OPDS1Parser.swift in Sources */, 238F9288A061E26BC1674C4F /* OPDS2Parser.swift in Sources */, 346C4DA09157847639648F56 /* OPDSParser.swift in Sources */, diff --git a/Support/Carthage/Readium.xcodeproj/xcshareddata/xcschemes/R2Navigator.xcscheme b/Support/Carthage/Readium.xcodeproj/xcshareddata/xcschemes/R2Navigator.xcscheme index 0d36feb0c..faba467b2 100644 --- a/Support/Carthage/Readium.xcodeproj/xcshareddata/xcschemes/R2Navigator.xcscheme +++ b/Support/Carthage/Readium.xcodeproj/xcshareddata/xcschemes/R2Navigator.xcscheme @@ -1,7 +1,7 @@ + version = "1.7"> + version = "1.7"> + version = "1.7"> + version = "1.7"> + version = "1.7"> Date: Mon, 6 Jun 2022 15:26:17 +0200 Subject: [PATCH 19/27] Fix deployment target --- TestApp/Integrations/Carthage/project+lcp.yml | 2 +- TestApp/Integrations/Carthage/project.yml | 2 +- TestApp/Integrations/CocoaPods/project.yml | 2 +- TestApp/Integrations/Local/project.yml | 2 +- TestApp/Integrations/SPM/project.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/TestApp/Integrations/Carthage/project+lcp.yml b/TestApp/Integrations/Carthage/project+lcp.yml index b97e6e0c9..bb2cf7ba9 100644 --- a/TestApp/Integrations/Carthage/project+lcp.yml +++ b/TestApp/Integrations/Carthage/project+lcp.yml @@ -15,7 +15,7 @@ targets: TestApp: type: application platform: iOS - deploymentTarget: "14.0" + deploymentTarget: "15.0" sources: - path: Sources dependencies: diff --git a/TestApp/Integrations/Carthage/project.yml b/TestApp/Integrations/Carthage/project.yml index ea1b7dc4d..3623be1d2 100644 --- a/TestApp/Integrations/Carthage/project.yml +++ b/TestApp/Integrations/Carthage/project.yml @@ -15,7 +15,7 @@ targets: TestApp: type: application platform: iOS - deploymentTarget: "14.0" + deploymentTarget: "15.0" sources: - path: Sources dependencies: diff --git a/TestApp/Integrations/CocoaPods/project.yml b/TestApp/Integrations/CocoaPods/project.yml index 405a83753..17f52a581 100644 --- a/TestApp/Integrations/CocoaPods/project.yml +++ b/TestApp/Integrations/CocoaPods/project.yml @@ -5,6 +5,6 @@ targets: TestApp: type: application platform: iOS - deploymentTarget: "14.0" + deploymentTarget: "15.0" sources: - path: Sources diff --git a/TestApp/Integrations/Local/project.yml b/TestApp/Integrations/Local/project.yml index 9c240d610..f6e241e32 100644 --- a/TestApp/Integrations/Local/project.yml +++ b/TestApp/Integrations/Local/project.yml @@ -20,7 +20,7 @@ targets: TestApp: type: application platform: iOS - deploymentTarget: "14.0" + deploymentTarget: "15.0" sources: - path: Sources dependencies: diff --git a/TestApp/Integrations/SPM/project.yml b/TestApp/Integrations/SPM/project.yml index 4813ead1d..2150535d5 100644 --- a/TestApp/Integrations/SPM/project.yml +++ b/TestApp/Integrations/SPM/project.yml @@ -21,7 +21,7 @@ targets: TestApp: type: application platform: iOS - deploymentTarget: "14.0" + deploymentTarget: "15.0" sources: - path: Sources dependencies: From 24caa2fd45f6ce5784823006b09f416ff94ad2bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Menu?= Date: Tue, 7 Jun 2022 09:34:03 +0200 Subject: [PATCH 20/27] Revert preloading catalogs with UIKit --- .../OPDSCatalogSelectorViewController.swift | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/TestApp/Sources/OPDS/OPDSCatalogSelectorViewController.swift b/TestApp/Sources/OPDS/OPDSCatalogSelectorViewController.swift index 92c5ebbc5..6f991589a 100644 --- a/TestApp/Sources/OPDS/OPDSCatalogSelectorViewController.swift +++ b/TestApp/Sources/OPDS/OPDSCatalogSelectorViewController.swift @@ -29,6 +29,8 @@ class OPDSCatalogSelectorViewController: UITableViewController { override func viewDidLoad() { + preloadTestFeeds() + self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) self.tableView.frame = UIScreen.main.bounds @@ -47,6 +49,25 @@ class OPDSCatalogSelectorViewController: UITableViewController { navigationController?.view.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1) } + func preloadTestFeeds() { + let version = 2 + let VERSION_KEY = "OPDS_CATALOG_VERSION" + let OPDS2Catalog = ["title": "OPDS 2.0 Test Catalog", "url": "https://test.opds.io/2.0/home.json"] + let OTBCatalog = ["title": "Open Textbooks Catalog", "url": "http://open.minitex.org/textbooks"] + let SEBCatalog = ["title": "Standard eBooks Catalog", "url": "https://standardebooks.org/opds/all"] + + catalogData = UserDefaults.standard.array(forKey: userDefaultsID) as? [[String: String]] + let oldversion = UserDefaults.standard.integer(forKey: VERSION_KEY) + if (catalogData == nil || oldversion < version) { + UserDefaults.standard.set(version, forKey: VERSION_KEY) + catalogData = [ + OPDS2Catalog, OTBCatalog, SEBCatalog + ] + UserDefaults.standard.set(catalogData, forKey: userDefaultsID) + } + + } + override func viewDidAppear(_ animated: Bool) { if let index = mustEditAtIndexPath?.row { showEditPopup(feedIndex: index) From d56bc89873044067b505b05f2c140536bfb85292 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Tue, 7 Jun 2022 22:59:30 -0500 Subject: [PATCH 21/27] Change buttons for sheet, add catalog from URL --- .../Catalogs/Catalogs/AddFeedSheet.swift | 32 +++++++++++++------ .../Views/Catalogs/Catalogs/Catalogs.swift | 16 +++++++++- .../Catalogs/Catalogs/CatalogsViewModel.swift | 7 ++++ .../Sources/Views/Toolbar/CancelButton.swift | 21 ++++++++++++ .../Sources/Views/Toolbar/SaveButton.swift | 21 ++++++++++++ 5 files changed, 86 insertions(+), 11 deletions(-) create mode 100644 TestApp/Sources/Views/Toolbar/CancelButton.swift create mode 100644 TestApp/Sources/Views/Toolbar/SaveButton.swift diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift b/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift index 8c3c07586..b63a36b5a 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift @@ -18,19 +18,31 @@ struct AddFeedSheet: View { var body: some View { NavigationView { Form { - TextField("Feed Title", text: $title) - TextField("URL", text: $url) - .keyboardType(.URL) - .autocapitalization(.none) - // FIXME better looking buttons here, or move to toolbar within sheet - Button("Add") { - action(title, url) - } - Button("Cancel") { - showingSheet = false + Section { + TextField("Feed Title", text: $title) + TextField("URL", text: $url) + .keyboardType(.URL) + .autocapitalization(.none) } } .navigationBarTitle("Add an OPDS Feed") + .toolbar(content: toolbarContent) + } + } + + @ToolbarContentBuilder + private func toolbarContent() -> some ToolbarContent { + ToolbarItem(placement: .navigationBarLeading) { + CancelButton { + showingSheet = false + } + } + ToolbarItem(placement: .navigationBarTrailing) { + SaveButton { + action(title, url) + showingSheet = false + } + .disabled(title.isEmpty || url.isEmpty) } } } diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift b/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift index 99486fc46..a46723a6c 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift @@ -5,6 +5,7 @@ // import SwiftUI +import ReadiumOPDS struct Catalogs: View { @@ -12,6 +13,7 @@ struct Catalogs: View { let catalogDetail: (Catalog) -> CatalogDetail @State private var showingSheet = false + @State private var showingAlert = false var body: some View { NavigationView { @@ -33,9 +35,21 @@ struct Catalogs: View { .navigationViewStyle(.stack) .sheet(isPresented: $showingSheet) { AddFeedSheet(showingSheet: $showingSheet) { title, url in - // TODO validate the URL and import the feed + Task { + do { + try await OPDSParser.parseURL(url: URL(string: url)!) + try await viewModel.addCatalog(catalog: Catalog(title: title, url: url)) + } catch { + showingAlert = true + } + } } } + .alert("Error", isPresented: $showingAlert, actions: { + Button("OK", role: .cancel, action: {}) + }, message: { + Text("Feed is not valid, please try again.") + }) } @ToolbarContentBuilder diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift index 1995bbc05..0ea659d99 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift @@ -11,9 +11,16 @@ import Foundation final class CatalogsViewModel: ObservableObject { @Published var catalogs: [Catalog]? + private var catalogRepository: CatalogRepository init(catalogRepository: CatalogRepository) { + self.catalogRepository = catalogRepository catalogRepository.all() .assign(to: &$catalogs) } + + func addCatalog(catalog: Catalog) async throws { + var savedCatalog = catalog + try? await catalogRepository.saveCatalog(&savedCatalog) + } } diff --git a/TestApp/Sources/Views/Toolbar/CancelButton.swift b/TestApp/Sources/Views/Toolbar/CancelButton.swift new file mode 100644 index 000000000..c59b52888 --- /dev/null +++ b/TestApp/Sources/Views/Toolbar/CancelButton.swift @@ -0,0 +1,21 @@ +// +// CancelButton.swift +// TestApp +// +// Created by Steven Zeck on 6/7/22. +// + +import SwiftUI + +struct CancelButton: View { + var action: () -> Void = {} + var body: some View { + Button("Cancel", action: action) + } +} + +struct CancelButton_Previews: PreviewProvider { + static var previews: some View { + CancelButton() + } +} diff --git a/TestApp/Sources/Views/Toolbar/SaveButton.swift b/TestApp/Sources/Views/Toolbar/SaveButton.swift new file mode 100644 index 000000000..2cb763324 --- /dev/null +++ b/TestApp/Sources/Views/Toolbar/SaveButton.swift @@ -0,0 +1,21 @@ +// +// SaveButton.swift +// TestApp +// +// Created by Steven Zeck on 6/7/22. +// + +import SwiftUI + +struct SaveButton: View { + var action: () -> Void = {} + var body: some View { + Button("Save", action: action) + } +} + +struct SaveButton_Previews: PreviewProvider { + static var previews: some View { + SaveButton() + } +} From 29fb01f86f758ca1048ad1b918dda3b167e5a829 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Wed, 8 Jun 2022 21:00:07 -0500 Subject: [PATCH 22/27] Change button placement on add book sheet --- .../Views/Bookshelf/AddBookSheet.swift | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift b/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift index 830ddee56..8c56c83ae 100644 --- a/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift +++ b/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift @@ -20,15 +20,25 @@ struct AddBookSheet: View { TextField("URL", text: $url) .keyboardType(.URL) .autocapitalization(.none) - // FIXME better looking buttons here, or move to toolbar within sheet - Button("Add") { - action(url) - } - Button("Cancel") { - showingSheet = false - } } .navigationBarTitle("Add a Book") + .toolbar(content: toolbarContent) + } + } + + @ToolbarContentBuilder + private func toolbarContent() -> some ToolbarContent { + ToolbarItem(placement: .navigationBarLeading) { + CancelButton { + showingSheet = false + } + } + ToolbarItem(placement: .navigationBarTrailing) { + SaveButton { + action(url) + showingSheet = false + } + .disabled(url.isEmpty) } } } From 6d4cd9ad39ef1e9014f645d69c045b27afee7e92 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Thu, 9 Jun 2022 21:36:47 -0500 Subject: [PATCH 23/27] Make suggested changes --- TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift | 6 ++++-- TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift b/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift index b63a36b5a..2a0556255 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift @@ -8,9 +8,11 @@ import SwiftUI struct AddFeedSheet: View { + typealias ActionCallback = ((title: String, url: String)) -> Void + // For iOS 15, we can use @Environment(\.dismiss) @Binding var showingSheet: Bool - var action: (String, String) -> Void + var action: ActionCallback @State var title: String = "" @State var url: String = "" @@ -39,7 +41,7 @@ struct AddFeedSheet: View { } ToolbarItem(placement: .navigationBarTrailing) { SaveButton { - action(title, url) + action((title: title, url: url)) showingSheet = false } .disabled(title.isEmpty || url.isEmpty) diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift b/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift index a46723a6c..d2600f4be 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift @@ -37,7 +37,7 @@ struct Catalogs: View { AddFeedSheet(showingSheet: $showingSheet) { title, url in Task { do { - try await OPDSParser.parseURL(url: URL(string: url)!) + _ = try await OPDSParser.parseURL(url: URL(string: url)!) try await viewModel.addCatalog(catalog: Catalog(title: title, url: url)) } catch { showingAlert = true From 7a5f2eed29953ef1605df7b2c5e9e782193cd86b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Menu?= Date: Sat, 11 Jun 2022 18:52:15 +0200 Subject: [PATCH 24/27] Refactor button creation --- .../Views/Bookshelf/AddBookSheet.swift | 4 ++-- .../Sources/Views/Bookshelf/Bookshelf.swift | 2 +- .../{Toolbar/AddButton.swift => Button.swift} | 23 +++++++++++-------- .../Catalogs/Catalogs/AddFeedSheet.swift | 4 ++-- .../Views/Catalogs/Catalogs/Catalogs.swift | 2 +- .../Sources/Views/Toolbar/CancelButton.swift | 21 ----------------- .../Sources/Views/Toolbar/SaveButton.swift | 21 ----------------- 7 files changed, 20 insertions(+), 57 deletions(-) rename TestApp/Sources/Views/{Toolbar/AddButton.swift => Button.swift} (50%) delete mode 100644 TestApp/Sources/Views/Toolbar/CancelButton.swift delete mode 100644 TestApp/Sources/Views/Toolbar/SaveButton.swift diff --git a/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift b/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift index 8c56c83ae..67fd78f5a 100644 --- a/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift +++ b/TestApp/Sources/Views/Bookshelf/AddBookSheet.swift @@ -29,12 +29,12 @@ struct AddBookSheet: View { @ToolbarContentBuilder private func toolbarContent() -> some ToolbarContent { ToolbarItem(placement: .navigationBarLeading) { - CancelButton { + Button(.cancel) { showingSheet = false } } ToolbarItem(placement: .navigationBarTrailing) { - SaveButton { + Button(.save) { action(url) showingSheet = false } diff --git a/TestApp/Sources/Views/Bookshelf/Bookshelf.swift b/TestApp/Sources/Views/Bookshelf/Bookshelf.swift index 889f9918a..5dbb981fc 100644 --- a/TestApp/Sources/Views/Bookshelf/Bookshelf.swift +++ b/TestApp/Sources/Views/Bookshelf/Bookshelf.swift @@ -42,7 +42,7 @@ extension Bookshelf { @ToolbarContentBuilder private func toolbarContent() -> some ToolbarContent { ToolbarItem(placement: .navigationBarTrailing) { - AddButton { + Button(.add) { showingSheet = true } } diff --git a/TestApp/Sources/Views/Toolbar/AddButton.swift b/TestApp/Sources/Views/Button.swift similarity index 50% rename from TestApp/Sources/Views/Toolbar/AddButton.swift rename to TestApp/Sources/Views/Button.swift index 1098344bb..5dbad84c8 100644 --- a/TestApp/Sources/Views/Toolbar/AddButton.swift +++ b/TestApp/Sources/Views/Button.swift @@ -6,17 +6,22 @@ import SwiftUI -struct AddButton: View { - var action: () -> Void = {} - var body: some View { +enum ButtonKind { + case add + case cancel + case save +} + +@ViewBuilder +func Button(_ kind: ButtonKind, action: @escaping () -> Void) -> some View { + switch kind { + case .add: Button(action: action) { Label("Add", systemImage: "plus") } - } -} - -struct AddButton_Previews: PreviewProvider { - static var previews: some View { - AddButton() + case .cancel: + Button("Cancel", action: action) + case .save: + Button("Save", action: action) } } diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift b/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift index 2a0556255..8ee0f8ee5 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/AddFeedSheet.swift @@ -35,12 +35,12 @@ struct AddFeedSheet: View { @ToolbarContentBuilder private func toolbarContent() -> some ToolbarContent { ToolbarItem(placement: .navigationBarLeading) { - CancelButton { + Button(.cancel) { showingSheet = false } } ToolbarItem(placement: .navigationBarTrailing) { - SaveButton { + Button(.save) { action((title: title, url: url)) showingSheet = false } diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift b/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift index d2600f4be..b65f0a48d 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/Catalogs.swift @@ -55,7 +55,7 @@ struct Catalogs: View { @ToolbarContentBuilder private func toolbarContent() -> some ToolbarContent { ToolbarItem(placement: .navigationBarTrailing) { - AddButton { + Button(.add) { showingSheet = true } } diff --git a/TestApp/Sources/Views/Toolbar/CancelButton.swift b/TestApp/Sources/Views/Toolbar/CancelButton.swift deleted file mode 100644 index c59b52888..000000000 --- a/TestApp/Sources/Views/Toolbar/CancelButton.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// CancelButton.swift -// TestApp -// -// Created by Steven Zeck on 6/7/22. -// - -import SwiftUI - -struct CancelButton: View { - var action: () -> Void = {} - var body: some View { - Button("Cancel", action: action) - } -} - -struct CancelButton_Previews: PreviewProvider { - static var previews: some View { - CancelButton() - } -} diff --git a/TestApp/Sources/Views/Toolbar/SaveButton.swift b/TestApp/Sources/Views/Toolbar/SaveButton.swift deleted file mode 100644 index 2cb763324..000000000 --- a/TestApp/Sources/Views/Toolbar/SaveButton.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// SaveButton.swift -// TestApp -// -// Created by Steven Zeck on 6/7/22. -// - -import SwiftUI - -struct SaveButton: View { - var action: () -> Void = {} - var body: some View { - Button("Save", action: action) - } -} - -struct SaveButton_Previews: PreviewProvider { - static var previews: some View { - SaveButton() - } -} From d7cc9f55bea6703172e5a475be0193c628cde48e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Menu?= Date: Sat, 11 Jun 2022 21:24:59 +0200 Subject: [PATCH 25/27] Fix database async accesses --- TestApp/Sources/Data/Book.swift | 11 ++++---- TestApp/Sources/Data/Bookmark.swift | 4 +-- TestApp/Sources/Data/Catalog.swift | 4 +-- TestApp/Sources/Data/Database.swift | 27 ++++++++++++++----- TestApp/Sources/Data/Highlight.swift | 6 ++--- .../Library/LibraryViewController.swift | 4 +-- 6 files changed, 34 insertions(+), 22 deletions(-) diff --git a/TestApp/Sources/Data/Book.swift b/TestApp/Sources/Data/Book.swift index 0af5b1c02..751fc2007 100644 --- a/TestApp/Sources/Data/Book.swift +++ b/TestApp/Sources/Data/Book.swift @@ -67,15 +67,14 @@ final class BookRepository { self.db = db } - // TODO The idea is to use GRDB's async DatabaseWriter.write func saveBook(_ book: inout Book) async throws { - book = try await db.writer.write { [book] db in + book = try await db.write { [book] db in try book.saved(db) } } func deleteBooks(ids: [Book.Id]) async throws { - try await db.writer.write { db in + try await db.write { db in _ = try Book.deleteAll(db, ids: ids) } } @@ -87,14 +86,14 @@ final class BookRepository { } func add(_ book: Book) -> AnyPublisher { - return db.write { db in + return db.writePublisher { db in try book.insert(db) return Book.Id(rawValue: db.lastInsertedRowID) }.eraseToAnyPublisher() } func remove(_ id: Book.Id) -> AnyPublisher { - db.write { db in try Book.deleteOne(db, key: id) } + db.writePublisher { db in try Book.deleteOne(db, key: id) } } func saveProgress(for id: Book.Id, locator: Locator) -> AnyPublisher { @@ -102,7 +101,7 @@ final class BookRepository { return .just(()) } - return db.write { db in + return db.writePublisher { db in try db.execute(literal: """ UPDATE book SET locator = \(json), progression = \(locator.locations.totalProgression ?? 0) diff --git a/TestApp/Sources/Data/Bookmark.swift b/TestApp/Sources/Data/Bookmark.swift index 88dec0323..b4f0d789f 100644 --- a/TestApp/Sources/Data/Bookmark.swift +++ b/TestApp/Sources/Data/Bookmark.swift @@ -54,14 +54,14 @@ final class BookmarkRepository { } func add(_ bookmark: Bookmark) -> AnyPublisher { - return db.write { db in + return db.writePublisher { db in try bookmark.insert(db) return Bookmark.Id(rawValue: db.lastInsertedRowID) }.eraseToAnyPublisher() } func remove(_ id: Bookmark.Id) -> AnyPublisher { - db.write { db in try Bookmark.deleteOne(db, key: id) } + db.writePublisher { db in try Bookmark.deleteOne(db, key: id) } } } diff --git a/TestApp/Sources/Data/Catalog.swift b/TestApp/Sources/Data/Catalog.swift index 80065f84a..62e71287b 100644 --- a/TestApp/Sources/Data/Catalog.swift +++ b/TestApp/Sources/Data/Catalog.swift @@ -46,13 +46,13 @@ final class CatalogRepository { } func saveCatalog(_ catalog: inout Catalog) async throws { - catalog = try await db.writer.write { [catalog] db in + catalog = try await db.write { [catalog] db in try catalog.saved(db) } } func deleteCatalogs(ids: [Catalog.Id]) async throws { - try await db.writer.write { db in + try await db.write { db in _ = try Catalog.deleteAll(db, ids: ids) } } diff --git a/TestApp/Sources/Data/Database.swift b/TestApp/Sources/Data/Database.swift index 4927c65a3..a304ff4fb 100644 --- a/TestApp/Sources/Data/Database.swift +++ b/TestApp/Sources/Data/Database.swift @@ -24,8 +24,7 @@ final class Database { try self.init(writer: try DatabaseQueue(path: file.path), migrations: migrations) } - // FIXME make this private again - let writer: DatabaseWriter + private let writer: DatabaseWriter private init(writer: DatabaseWriter = DatabaseQueue(), migrations: [DatabaseMigration]) throws { self.writer = writer @@ -50,12 +49,28 @@ final class Database { try db.execute(sql: "PRAGMA user_version = \(migration.version)") } - func read(_ query: @escaping (GRDB.Database) throws -> T) -> AnyPublisher { - writer.readPublisher(value: query) - .eraseToAnyPublisher() + func read(_ value: @escaping (GRDB.Database) throws -> T) async throws -> T { + try await withUnsafeThrowingContinuation { continuation in + writer.asyncRead { result in + do { + try continuation.resume(returning: value(result.get())) + } catch { + continuation.resume(throwing: error) + } + } + } + } + + @discardableResult + func write(_ updates: @escaping (GRDB.Database) throws -> T) async throws -> T { + try await withUnsafeThrowingContinuation { continuation in + writer.asyncWrite(updates) { _, result in + continuation.resume(with: result) + } + } } - func write(_ updates: @escaping (GRDB.Database) throws -> T) -> AnyPublisher { + func writePublisher(_ updates: @escaping (GRDB.Database) throws -> T) -> AnyPublisher { writer.writePublisher(updates: updates) .eraseToAnyPublisher() } diff --git a/TestApp/Sources/Data/Highlight.swift b/TestApp/Sources/Data/Highlight.swift index 1f75b5c82..bd49f32dd 100644 --- a/TestApp/Sources/Data/Highlight.swift +++ b/TestApp/Sources/Data/Highlight.swift @@ -92,14 +92,14 @@ final class HighlightRepository { } func add(_ highlight: Highlight) -> AnyPublisher { - return db.write { db in + return db.writePublisher { db in try highlight.insert(db) return highlight.id }.eraseToAnyPublisher() } func update(_ id: Highlight.Id, color: HighlightColor) -> AnyPublisher { - return db.write { db in + return db.writePublisher { db in let filtered = Highlight.filter(Highlight.Columns.id == id) let assignment = Highlight.Columns.color.set(to: color) try filtered.updateAll(db, onConflict: nil, assignment) @@ -107,7 +107,7 @@ final class HighlightRepository { } func remove(_ id: Highlight.Id) -> AnyPublisher { - db.write { db in try Highlight.deleteOne(db, key: id) } + db.writePublisher { db in try Highlight.deleteOne(db, key: id) } } } diff --git a/TestApp/Sources/Library/LibraryViewController.swift b/TestApp/Sources/Library/LibraryViewController.swift index 6c56bfa5b..2c417fefa 100644 --- a/TestApp/Sources/Library/LibraryViewController.swift +++ b/TestApp/Sources/Library/LibraryViewController.swift @@ -151,9 +151,7 @@ class LibraryViewController: UIViewController, Loggable { private func addBookFromDevice() { var types = DocumentTypes.main.supportedUTTypes - if let type = UTType(String(kUTTypeText)) { - types.append(type) - } + types.append(.text) let documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: types) documentPicker.delegate = self From 1f01c96ec624b45d332d660530077d55a718f818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Menu?= Date: Sat, 11 Jun 2022 21:33:56 +0200 Subject: [PATCH 26/27] Minor API renames --- TestApp/Sources/Data/Book.swift | 14 ++++---------- TestApp/Sources/Data/Catalog.swift | 9 ++------- .../Reader/Common/ReaderViewController.swift | 14 +++++++------- .../Catalogs/Catalogs/CatalogsViewModel.swift | 2 +- 4 files changed, 14 insertions(+), 25 deletions(-) diff --git a/TestApp/Sources/Data/Book.swift b/TestApp/Sources/Data/Book.swift index 751fc2007..94a2368c5 100644 --- a/TestApp/Sources/Data/Book.swift +++ b/TestApp/Sources/Data/Book.swift @@ -67,18 +67,12 @@ final class BookRepository { self.db = db } - func saveBook(_ book: inout Book) async throws { + func save(_ book: inout Book) async throws { book = try await db.write { [book] db in try book.saved(db) } } - func deleteBooks(ids: [Book.Id]) async throws { - try await db.write { db in - _ = try Book.deleteAll(db, ids: ids) - } - } - func all() -> AnyPublisher<[Book], Error> { db.observe { db in try Book.order(Book.Columns.created).fetchAll(db) @@ -96,12 +90,12 @@ final class BookRepository { db.writePublisher { db in try Book.deleteOne(db, key: id) } } - func saveProgress(for id: Book.Id, locator: Locator) -> AnyPublisher { + func saveProgress(for id: Book.Id, locator: Locator) async throws { guard let json = locator.jsonString else { - return .just(()) + return } - return db.writePublisher { db in + try await db.write { db in try db.execute(literal: """ UPDATE book SET locator = \(json), progression = \(locator.locations.totalProgression ?? 0) diff --git a/TestApp/Sources/Data/Catalog.swift b/TestApp/Sources/Data/Catalog.swift index 62e71287b..1d42d2ea2 100644 --- a/TestApp/Sources/Data/Catalog.swift +++ b/TestApp/Sources/Data/Catalog.swift @@ -8,6 +8,7 @@ import Combine import Foundation import GRDB +/// Represents an OPDS catalog. struct Catalog: Codable, Hashable, Identifiable { struct Id: EntityId { let rawValue: Int64 } @@ -45,15 +46,9 @@ final class CatalogRepository { .eraseToAnyPublisher() } - func saveCatalog(_ catalog: inout Catalog) async throws { + func save(_ catalog: inout Catalog) async throws { catalog = try await db.write { [catalog] db in try catalog.saved(db) } } - - func deleteCatalogs(ids: [Catalog.Id]) async throws { - try await db.write { db in - _ = try Catalog.deleteAll(db, ids: ids) - } - } } diff --git a/TestApp/Sources/Reader/Common/ReaderViewController.swift b/TestApp/Sources/Reader/Common/ReaderViewController.swift index ed18a0546..8b4387f8f 100644 --- a/TestApp/Sources/Reader/Common/ReaderViewController.swift +++ b/TestApp/Sources/Reader/Common/ReaderViewController.swift @@ -384,13 +384,13 @@ class ReaderViewController: UIViewController, Loggable { extension ReaderViewController: NavigatorDelegate { func navigator(_ navigator: Navigator, locationDidChange locator: Locator) { - books.saveProgress(for: bookId, locator: locator) - .sink { [weak self] completion in - if let self = self, case .failure(let error) = completion { - self.moduleDelegate?.presentError(error, from: self) - } - } receiveValue: { _ in } - .store(in: &subscriptions) + Task { + do { + try await books.saveProgress(for: bookId, locator: locator) + } catch { + moduleDelegate?.presentError(error, from: self) + } + } positionLabel.text = { if let position = locator.locations.position { diff --git a/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift index 0ea659d99..52cb86bdf 100644 --- a/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift +++ b/TestApp/Sources/Views/Catalogs/Catalogs/CatalogsViewModel.swift @@ -21,6 +21,6 @@ final class CatalogsViewModel: ObservableObject { func addCatalog(catalog: Catalog) async throws { var savedCatalog = catalog - try? await catalogRepository.saveCatalog(&savedCatalog) + try? await catalogRepository.save(&savedCatalog) } } From 45c3651b0dce2c6809fca16b18e1e77592eb29ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Menu?= Date: Sat, 11 Jun 2022 21:37:28 +0200 Subject: [PATCH 27/27] Refactor usage of `ValueObservation` --- TestApp/Sources/Data/Book.swift | 2 +- TestApp/Sources/Data/Bookmark.swift | 2 +- TestApp/Sources/Data/Catalog.swift | 8 +++----- TestApp/Sources/Data/Database.swift | 10 ++-------- TestApp/Sources/Data/Highlight.swift | 4 ++-- TestApp/Sources/Library/LibraryService.swift | 2 +- .../Reader/Common/Outline/OutlineViewModels.swift | 6 +++--- 7 files changed, 13 insertions(+), 21 deletions(-) diff --git a/TestApp/Sources/Data/Book.swift b/TestApp/Sources/Data/Book.swift index 94a2368c5..781c351bb 100644 --- a/TestApp/Sources/Data/Book.swift +++ b/TestApp/Sources/Data/Book.swift @@ -73,7 +73,7 @@ final class BookRepository { } } - func all() -> AnyPublisher<[Book], Error> { + func all() -> AnyPublisher<[Book], Never> { db.observe { db in try Book.order(Book.Columns.created).fetchAll(db) } diff --git a/TestApp/Sources/Data/Bookmark.swift b/TestApp/Sources/Data/Bookmark.swift index b4f0d789f..50bcfcdf2 100644 --- a/TestApp/Sources/Data/Bookmark.swift +++ b/TestApp/Sources/Data/Bookmark.swift @@ -44,7 +44,7 @@ final class BookmarkRepository { self.db = db } - func all(for bookId: Book.Id) -> AnyPublisher<[Bookmark], Error> { + func all(for bookId: Book.Id) -> AnyPublisher<[Bookmark], Never> { db.observe { db in try Bookmark .filter(Bookmark.Columns.bookId == bookId) diff --git a/TestApp/Sources/Data/Catalog.swift b/TestApp/Sources/Data/Catalog.swift index 1d42d2ea2..6bf6b2bf6 100644 --- a/TestApp/Sources/Data/Catalog.swift +++ b/TestApp/Sources/Data/Catalog.swift @@ -39,11 +39,9 @@ final class CatalogRepository { } func all() -> AnyPublisher<[Catalog]?, Never> { - ValueObservation - .tracking(Catalog.order(Catalog.Columns.title).fetchAll) - .publisher(in: db.databaseReader, scheduling: .immediate) - .assertNoFailure() - .eraseToAnyPublisher() + db.observe { + try Catalog.order(Catalog.Columns.title).fetchAll($0) + } } func save(_ catalog: inout Catalog) async throws { diff --git a/TestApp/Sources/Data/Database.swift b/TestApp/Sources/Data/Database.swift index a304ff4fb..999ca5dc5 100644 --- a/TestApp/Sources/Data/Database.swift +++ b/TestApp/Sources/Data/Database.swift @@ -75,20 +75,14 @@ final class Database { .eraseToAnyPublisher() } - func observe(_ query: @escaping (GRDB.Database) throws -> T) -> AnyPublisher { + func observe(_ query: @escaping (GRDB.Database) throws -> T) -> AnyPublisher { ValueObservation.tracking(query) .publisher(in: writer) + .assertNoFailure() .eraseToAnyPublisher() } } -extension Database { - /// Provides a read-only access to the database - var databaseReader: DatabaseReader { - writer - } -} - /// Protocol for a database entity id. /// /// Using this instead of regular integers makes the code safer, because we can only give ids of the diff --git a/TestApp/Sources/Data/Highlight.swift b/TestApp/Sources/Data/Highlight.swift index bd49f32dd..38da12670 100644 --- a/TestApp/Sources/Data/Highlight.swift +++ b/TestApp/Sources/Data/Highlight.swift @@ -73,7 +73,7 @@ final class HighlightRepository { self.db = db } - func all(for bookId: Book.Id) -> AnyPublisher<[Highlight], Error> { + func all(for bookId: Book.Id) -> AnyPublisher<[Highlight], Never> { db.observe { db in try Highlight .filter(Highlight.Columns.bookId == bookId) @@ -82,7 +82,7 @@ final class HighlightRepository { } } - func highlight(for highlightId: Highlight.Id) -> AnyPublisher { + func highlight(for highlightId: Highlight.Id) -> AnyPublisher { db.observe { db in try Highlight .filter(Highlight.Columns.id == highlightId) diff --git a/TestApp/Sources/Library/LibraryService.swift b/TestApp/Sources/Library/LibraryService.swift index d08b84fbb..fad75317d 100644 --- a/TestApp/Sources/Library/LibraryService.swift +++ b/TestApp/Sources/Library/LibraryService.swift @@ -50,7 +50,7 @@ final class LibraryService: Loggable { ) } - func allBooks() -> AnyPublisher<[Book], Error> { + func allBooks() -> AnyPublisher<[Book], Never> { books.all() } diff --git a/TestApp/Sources/Reader/Common/Outline/OutlineViewModels.swift b/TestApp/Sources/Reader/Common/Outline/OutlineViewModels.swift index 931a4ea9d..a96787e4f 100644 --- a/TestApp/Sources/Reader/Common/Outline/OutlineViewModels.swift +++ b/TestApp/Sources/Reader/Common/Outline/OutlineViewModels.swift @@ -36,7 +36,7 @@ final class HighlightsViewModel: ObservableObject, OutlineViewModelLoaderDelegat loader.loadIfNeeded() } - var dataTask: AnyPublisher<[Highlight], Error> { + var dataTask: AnyPublisher<[Highlight], Never> { self.repository.all(for: bookId) } @@ -71,7 +71,7 @@ final class BookmarksViewModel: ObservableObject, OutlineViewModelLoaderDelegate loader.loadIfNeeded() } - var dataTask: AnyPublisher<[Bookmark], Error> { + var dataTask: AnyPublisher<[Bookmark], Never> { self.repository.all(for: bookId) } @@ -85,7 +85,7 @@ final class BookmarksViewModel: ObservableObject, OutlineViewModelLoaderDelegate private protocol OutlineViewModelLoaderDelegate: AnyObject { associatedtype T - var dataTask: AnyPublisher<[T], Error> { get } + var dataTask: AnyPublisher<[T], Never> { get } func setLoadedValues(_ values: [T]) }